import Box from "@mui/material/Box"; import Stack from "@mui/material/Stack"; import Typography from "@mui/material/Typography"; import { useTheme } from "@mui/material/styles"; import { useTranslation } from "react-i18next"; import { WifiOff } from "lucide-react"; import { useState, useEffect } from "react"; interface OfflineBannerProps { visible: boolean; } export const OfflineBanner = ({ visible }: OfflineBannerProps) => { const theme = useTheme(); const { t } = useTranslation(); const [shouldRender, setShouldRender] = useState(visible); const [isAnimating, setIsAnimating] = useState(false); useEffect(() => { if (visible) { setShouldRender(true); requestAnimationFrame(() => setIsAnimating(true)); } else { setIsAnimating(false); const timer = setTimeout(() => setShouldRender(false), 1000); return () => clearTimeout(timer); } }, [visible]); if (!shouldRender) return null; return ( {t("components.offlineBanner.serverUnreachable")} ); };