import { useState, useEffect, useCallback } from 'react'; import { ReplayMap } from './components/iran/ReplayMap'; import type { FlyToTarget } from './components/iran/ReplayMap'; import { GlobeMap } from './components/iran/GlobeMap'; import { SatelliteMap } from './components/iran/SatelliteMap'; import { KoreaMap } from './components/korea/KoreaMap'; import { TimelineSlider } from './components/common/TimelineSlider'; import { ReplayControls } from './components/common/ReplayControls'; import { LiveControls } from './components/common/LiveControls'; import { SensorChart } from './components/common/SensorChart'; import { EventLog } from './components/common/EventLog'; import { LayerPanel } from './components/common/LayerPanel'; import { useReplay } from './hooks/useReplay'; import { useMonitor } from './hooks/useMonitor'; import { useIranData } from './hooks/useIranData'; import { useKoreaData } from './hooks/useKoreaData'; import { useKoreaFilters } from './hooks/useKoreaFilters'; import { useVesselAnalysis } from './hooks/useVesselAnalysis'; import type { GeoEvent, LayerVisibility, AppMode } from './types'; import { useTheme } from './hooks/useTheme'; import { useAuth } from './hooks/useAuth'; import { useTranslation } from 'react-i18next'; import LoginPage from './components/auth/LoginPage'; import CollectorMonitor from './components/common/CollectorMonitor'; import './App.css'; function App() { const { user, isLoading: authLoading, isAuthenticated, login, devLogin, logout } = useAuth(); if (authLoading) { return (