import { useState, useEffect } from 'react' import { useTranslation } from 'react-i18next' import VesselForm from './VesselForm.tsx' import CrewForm from './CrewForm.tsx' import LogEntriesList from './LogEntriesList.tsx' import { Ship, Users, FileText, Lock, Globe, ChevronLeft, UserPlus } from 'lucide-react' import { buildPublicDemoFixture, type PublicDemoFixture } from '../services/demoLogbookData.js' import { useAppTour, type AppTab } from '../context/AppTourContext.tsx' import { PlausibleEvents, trackPlausibleEvent } from '../services/analytics.js' interface DemoViewerProps { onExit: () => void } export default function DemoViewer({ onExit }: DemoViewerProps) { const { t, i18n } = useTranslation() const { registerNavigation, registerDemoTourContext, startTour } = useAppTour() const [activeTab, setActiveTab] = useState('logs') const [tourSelectedEntryId, setTourSelectedEntryId] = useState(null) const [fixture, setFixture] = useState(() => buildPublicDemoFixture()) useEffect(() => { trackPlausibleEvent(PlausibleEvents.DEMO_OPENED) }, []) useEffect(() => { setFixture(buildPublicDemoFixture()) }, [i18n.language]) useEffect(() => { registerNavigation({ setActiveTab, setSelectedEntryId: setTourSelectedEntryId }) registerDemoTourContext({ firstEntryId: fixture.firstEntryId }) const timer = window.setTimeout(() => { startTour({ force: true, demoMode: true }) }, 400) return () => { window.clearTimeout(timer) registerDemoTourContext(null) } }, [registerNavigation, registerDemoTourContext, startTour, fixture.firstEntryId]) const toggleLanguage = () => { const nextLang = i18n.language.startsWith('de') ? 'en' : 'de' i18n.changeLanguage(nextLang) } const { title, yacht, crews, entries, gpsTracks, photos, firstEntryId } = fixture return (

{title}

{t('demo.badge')}

{t('demo.public_banner')}

{activeTab === 'logs' && ( )} {activeTab === 'vessel' && ( )} {activeTab === 'crew' && ( )}
) }