import React, { useState, useEffect } from 'react' import { Info, Github, Shield, Key, Users, Database, Upload, Clock, Puzzle, CalendarDays, Globe, ArrowRightLeft, Map, Briefcase, ListChecks, Wallet, FileText, Plane } from 'lucide-react' import { useTranslation } from '../../i18n' const texts = { de: { titleBefore: 'Willkommen bei ', titleAfter: '', title: 'Willkommen zur NOMAD Demo', description: 'Du kannst Reisen ansehen, bearbeiten und eigene erstellen. Alle Aenderungen werden jede Stunde automatisch zurueckgesetzt.', resetIn: 'Naechster Reset in', minutes: 'Minuten', uploadNote: 'Datei-Uploads (Fotos, Dokumente, Cover) sind in der Demo deaktiviert.', fullVersionTitle: 'In der Vollversion zusaetzlich:', features: [ 'Datei-Uploads (Fotos, Dokumente, Cover)', 'API-Schluessel (Google Maps, Wetter)', 'Benutzer- & Rechteverwaltung', 'Automatische Backups', 'Addon-Verwaltung (aktivieren/deaktivieren)', 'OIDC / SSO Single Sign-On', ], addonsTitle: 'Modulare Addons (in der Vollversion deaktivierbar)', addons: [ ['Vacay', 'Urlaubsplaner mit Kalender, Feiertagen & Fusion'], ['Atlas', 'Weltkarte mit besuchten Laendern & Reisestatistiken'], ['Packliste', 'Checklisten pro Reise'], ['Budget', 'Kostenplanung mit Splitting'], ['Dokumente', 'Dateien an Reisen anhaengen'], ['Widgets', 'Waehrungsrechner & Zeitzonen'], ], whatIs: 'Was ist NOMAD?', whatIsDesc: 'Ein selbst-gehosteter Reiseplaner mit Echtzeit-Kollaboration, interaktiver Karte, OIDC Login und Dark Mode.', selfHost: 'Open Source — ', selfHostLink: 'selbst hosten', close: 'Verstanden', }, en: { titleBefore: 'Welcome to ', titleAfter: '', title: 'Welcome to the NOMAD Demo', description: 'You can view, edit and create trips. All changes are automatically reset every hour.', resetIn: 'Next reset in', minutes: 'minutes', uploadNote: 'File uploads (photos, documents, covers) are disabled in demo mode.', fullVersionTitle: 'Additionally in the full version:', features: [ 'File uploads (photos, documents, covers)', 'API key management (Google Maps, Weather)', 'User & permission management', 'Automatic backups', 'Addon management (enable/disable)', 'OIDC / SSO single sign-on', ], addonsTitle: 'Modular Addons (can be deactivated in full version)', addons: [ ['Vacay', 'Vacation planner with calendar, holidays & user fusion'], ['Atlas', 'World map with visited countries & travel stats'], ['Packing', 'Checklists per trip'], ['Budget', 'Expense tracking with splitting'], ['Documents', 'Attach files to trips'], ['Widgets', 'Currency converter & timezones'], ], whatIs: 'What is NOMAD?', whatIsDesc: 'A self-hosted travel planner with real-time collaboration, interactive maps, OIDC login and dark mode.', selfHost: 'Open source — ', selfHostLink: 'self-host it', close: 'Got it', }, } const featureIcons = [Upload, Key, Users, Database, Puzzle, Shield] const addonIcons = [CalendarDays, Globe, ListChecks, Wallet, FileText, ArrowRightLeft] export default function DemoBanner() { const [dismissed, setDismissed] = useState(false) const [minutesLeft, setMinutesLeft] = useState(59 - new Date().getMinutes()) const { language } = useTranslation() const t = texts[language] || texts.en useEffect(() => { const interval = setInterval(() => setMinutesLeft(59 - new Date().getMinutes()), 10000) return () => clearInterval(interval) }, []) if (dismissed) return null return (
setDismissed(true)}>
e.stopPropagation()}> {/* Header */}

{t.titleBefore}NOMAD{t.titleAfter}

{t.description}

{/* Timer + Upload note */}
{t.resetIn} {minutesLeft} {t.minutes}
{t.uploadNote}
{/* What is NOMAD */}
{language === 'de' ? 'Was ist ' : 'What is '}NOMAD?

{t.whatIsDesc}

{/* Addons */}

{t.addonsTitle}

{t.addons.map(([name, desc], i) => { const Icon = addonIcons[i] return (
{name}

{desc}

) })}
{/* Full version features */}

{t.fullVersionTitle}

{t.features.map((text, i) => { const Icon = featureIcons[i] return (
{text}
) })}
{/* Footer */}
{t.selfHost} {t.selfHostLink}
) }