"use client"; import Link from "next/link"; import { usePathname } from "next/navigation"; import { useEffect, useState } from "react"; import { CloudSun, Droplets, Settings, TriangleAlert, WifiOff } from "lucide-react"; import type { LucideIcon } from "lucide-react"; import { isAppNavItemVisible } from "@/lib/app-sections"; import { NAV_ITEMS } from "@/lib/constants"; import { cn } from "@/lib/utils"; import { InstallPWAButton } from "@/components/ui/install-pwa-button"; import { useI18n } from "@/lib/i18n"; import { useWeatherStore } from "@/lib/store"; const iconsByHref: Record = { "/": CloudSun, "/warnings": TriangleAlert, "/hydro": Droplets, "/settings": Settings, }; export function AppShell({ children }: { children: React.ReactNode }) { const pathname = usePathname(); const { t } = useI18n(); const appSections = useWeatherStore((state) => state.appSections); const visibleNavItems = NAV_ITEMS.filter((item) => isAppNavItemVisible(item.href, appSections)); const [isOffline, setIsOffline] = useState(false); useEffect(() => { const updateConnectionStatus = () => setIsOffline(!navigator.onLine); updateConnectionStatus(); window.addEventListener("online", updateConnectionStatus); window.addEventListener("offline", updateConnectionStatus); return () => { window.removeEventListener("online", updateConnectionStatus); window.removeEventListener("offline", updateConnectionStatus); }; }, []); return (
wtr.
{isOffline && (
)}
{children}
); }