import { Button } from "@mui/material"; import { useNavigate, useNavigationType } from "react-router"; import { MediaViewer } from "@widgets"; import { useMapData } from "./MapDataContext"; import { observer } from "mobx-react-lite"; import { useEffect, useState } from "react"; import { authInstance, isMediaIdEmpty } from "@shared"; import ArrowBackIcon from "@mui/icons-material/ArrowBack"; import LanguageSelector from "./web-gl/LanguageSelector"; type LeftSidebarProps = { open: boolean; onToggle: () => void; }; export const LeftSidebar = observer(({ open, onToggle }: LeftSidebarProps) => { const navigate = useNavigate(); const navigationType = useNavigationType(); const { routeData } = useMapData(); const [carrierLogo, setCarrierLogo] = useState(null); const [carrierSlogan, setCarrierSlogan] = useState(null); const [carrierShortName, setCarrierShortName] = useState(null); useEffect(() => { async function fetchCarrierData() { if (routeData?.carrier_id) { const carrier = ( await authInstance.get(`/carrier/${routeData.carrier_id}`) ).data; setCarrierLogo(carrier.logo); setCarrierSlogan(carrier.slogan ?? null); setCarrierShortName(carrier.short_name ?? null); } } fetchCarrierData(); }, [routeData?.carrier_id]); const handleBack = () => { if (navigationType === "PUSH") { navigate(-1); } else { navigate("/route"); } }; return (
{/* Кнопка назад — вне основного меню */}
{/* Основное меню — повторяет .side-menu */}
{/* Герб — .side-menu-crest */}
Герб
{/* Слоган — .side-menu-label */} {carrierSlogan && (
{carrierSlogan}
)} {/* Кнопки — .side-menu-buttons */}
Достопримечательности
Остановки
{/* Нижняя секция — .side-menu-bottom-section */}
{/* .side-menu-carrier-block */}
{carrierLogo && !isMediaIdEmpty(carrierLogo) && (
)} {carrierShortName && (
{carrierShortName}
)}
{/* .side-menu-bottom-photo */}
); });