/* ============================================================
BAN YARO — Willkommensseite
============================================================ */
window.Page_welcome = (() => {
let _container = null;
let _appState = null;
let _showInstall = false;
let _heroInterval = null;
// ----------------------------------------------------------
// HERO-SLIDES — rotieren alle 4 Sekunden
// ----------------------------------------------------------
const HERO_SLIDES = [
{ headline: 'Jeder Moment zählt.', sub: 'Fotos, Notizen, Stimmungen — das Tagebuch deines Hundes.' },
{ headline: 'Deine Gegend. Sein Revier.', sub: 'Hundeparks, Gassi-Spots und mehr — alles auf der Karte.' },
{ headline: 'Kein Termin verpasst.', sub: 'Impfungen, Gewicht, Tierarzt — mit KI, individuell auf deinen Hund angepasst.' },
{ headline: 'Wir achten auf deinen Hund.', sub: 'Gefahren in deiner Nähe — damit ihr gezielt aus dem Weg gehen könnt.' },
{ headline: 'Wie eine App. Nur ohne App Store.', sub: 'Einmal auf „Zum Homescreen" — fertig. Kein Store, keine Updates, kein Stress.' },
{ headline: 'Lieblingsrouten für immer.', sub: 'Speichere eure besten Strecken — und entdecke neue in der Nähe.' },
{ headline: 'Gassi ist kein Solosport.', sub: 'Triff andere Hundebesitzer — spontan, in deiner Umgebung.' },
{ headline: '100+ Übungen. Ein Trainer, der deinen Hund kennt.', sub: 'Schritt für Schritt — mit KI, die sich an euch anpasst.' },
{ headline: 'Frag nach. Du bist nicht allein.', sub: 'Erfahrungen, Tipps, Hilfe — von Hundebesitzern für Hundebesitzer.' },
];
async function init(container, appState, params = {}) {
_container = container;
_appState = appState;
_showInstall = !!params.install;
_render();
if (_showInstall) {
setTimeout(() => {
_container.querySelector('.wc-install-card')?.scrollIntoView({ behavior: 'smooth', block: 'start' });
}, 100);
}
}
function refresh() { _render(); }
function onDogChange() {}
// ----------------------------------------------------------
// FEATURES — Icon, Titel, Beschreibung, Zielseite
// ----------------------------------------------------------
const FEATURES = [
{ icon: 'book-open', label: 'Tagebuch', page: 'diary' },
{ icon: 'first-aid', label: 'Gesundheit', page: 'health' },
{ icon: 'map-trifold', label: 'Karte', page: 'map' },
{ icon: 'path', label: 'Routen', page: 'routes' },
{ icon: 'target', label: 'Training', page: 'uebungen' },
{ icon: 'warning-octagon', label: 'Giftköder', page: 'poison' },
{ icon: 'users', label: 'Freunde', page: 'friends' },
{ icon: 'chat-circle-dots', label: 'Nachrichten', page: 'chat' },
{ icon: 'paw-print', label: 'Gassi-Treffen', page: 'walks' },
{ icon: 'house-line', label: 'Sitting', page: 'sitting' },
{ icon: 'push-pin', label: 'Forum', page: 'forum' },
{ icon: 'books', label: 'Rassen-Wiki', page: 'wiki' },
{ icon: 'calendar-dots', label: 'Events', page: 'events' },
{ icon: 'bell', label: 'Neuigkeiten', page: 'notifications' },
{ icon: 'handshake', label: 'Knigge', page: 'knigge' },
{ icon: 'magnifying-glass', label: 'Vermisste', page: 'lost' },
];
// ----------------------------------------------------------
// RENDER
// ----------------------------------------------------------
function _render() {
if (_heroInterval) { clearInterval(_heroInterval); _heroInterval = null; }
const isInstalled = window.matchMedia('(display-mode: standalone)').matches
|| window.navigator.standalone === true;
const user = _appState?.user;
_injectStyles();
if (user) {
_renderLoggedIn(isInstalled);
} else {
_renderLanding(isInstalled);
}
_bindEvents();
_pulseMenuBtn();
}
// ----------------------------------------------------------
// LANDING PAGE — nicht eingeloggte Besucher
// ----------------------------------------------------------
function _renderLanding(isInstalled) {
const hasPrompt = !!App.getInstallPrompt();
_container.innerHTML = `
${HERO_SLIDES[0].headline}
${HERO_SLIDES[0].sub}
${HERO_SLIDES.map((_, i) => ``).join('')}
${hasPrompt ? `
` : `
`}
Kostenlos
Kein App Store
Daten in Deutschland
Tagebuch & Erinnerungen
Halte jeden gemeinsamen Moment fest — Fotos, Einträge, Stimmungen. Nur für dich, privat und sicher.
Gesundheit im Blick
Impfungen, Gewicht, Tierarzttermine — alles an einem Ort. Du siehst immer, wann was ansteht.
Community vor Ort
Giftköder-Warnungen, Gassi-Treffen, Events — was in deiner Gegend gerade passiert.
Training & KI-Trainer
Über 100 Übungen mit Schritt-für-Schritt-Anleitungen. Mit KI-Unterstützung, die deinen Hund kennt.
Deine Daten gehören dir.
Kein Facebook. Kein Google. Keine Werbung.
Ban Yaro läuft auf einem eigenen Server in Deutschland —
dein Tagebuch, deine Routen, deine Gesundheitsdaten
bleiben privat.
${FEATURES.map(f => `
${f.label}
`).join('')}
${hasPrompt ? `
` : `
`}
Kein App Store · Direkt auf den Home-Bildschirm
${!isInstalled ? `
` : ''}
${_showInstall ? `
App installieren
${_installHTML()}
` : ''}
Ban Yaro · Deine Daten auf eigenem Server in Deutschland
Kein App Store nötig — direkt auf den Home-Bildschirm.
`;
}
if (isIOS && isSafari) {
return `
So kommt Ban Yaro auf deinen Home-Bildschirm:
${_steps([
['share', 'Tippe unten in Safari auf das Teilen-Symbol '],
['rows-plus-top', 'Wähle „Zum Home-Bildschirm" aus der Liste'],
['check', 'Tippe oben rechts auf „Hinzufügen"'],
])}
Funktioniert nur in Safari — nicht in Chrome oder Firefox auf iOS.
`;
}
if (isIOS && !isSafari) {
return `
Auf dem iPhone geht die Installation nur über Safari.
${_steps([
['safari-logo', 'Öffne Safari auf deinem iPhone'],
['arrow-square-in','Gib banyaro.app in die Adressleiste ein'],
['share', 'Tippe auf das Teilen-Symbol und wähle „Zum Home-Bildschirm"'],
])}
`;
}
if (isAndroid) {
return `
Am einfachsten geht es mit Chrome:
${_steps([
['arrow-square-in', 'Öffne banyaro.app in Chrome'],
['dots-three-circle','Tippe auf das Menü ⋮ oben rechts'],
['download-simple', 'Wähle „App installieren" oder „Zum Startbildschirm hinzufügen"'],
])}
`;
}
return `
${_steps([
['arrow-square-in', 'Öffne banyaro.app in Chrome oder Edge'],
['monitor', 'Klicke auf das Installations-Symbol in der Adressleiste'],
['check', 'Bestätigen — fertig!'],
])}
${_steps([
['arrow-square-in', 'Öffne banyaro.app in Safari auf dem iPhone'],
['share', 'Tippe auf das Teilen-Symbol '],
['rows-plus-top', 'Wähle „Zum Home-Bildschirm" → „Hinzufügen"'],
])}