import { useEffect, useState } from 'react' import { createRootRoute, Link, Outlet, useRouterState } from '@tanstack/react-router' import { useTranslation } from 'react-i18next' import { Menu, Radio, X } from 'lucide-react' import { useAuthStore } from '@/features/auth/store' import { bootstrapSession, logout, clearSession } from '@/features/auth/api' import { useTheme } from '@/theme/ThemeProvider' import { setLanguage } from '@/shared/lib/i18n' import { cn } from '@/shared/lib/cn' import { UploadSnackbar } from '@/features/admin/media/UploadSnackbar' export const Route = createRootRoute({ component: RootLayout }) function RootLayout() { const { t, i18n } = useTranslation() const { user } = useAuthStore() const { theme, setTheme } = useTheme() const [menuOpen, setMenuOpen] = useState(false) // Админка — с таблицами; ей даём больше ширины, публичные страницы оставляем компактными. const pathname = useRouterState({ select: (s) => s.location.pathname }) const containerMax = pathname.startsWith('/admin') ? 'max-w-screen-2xl' : 'max-w-5xl' useEffect(() => { void bootstrapSession() }, []) const handleLogout = async () => { try { await logout() } finally { clearSession() } } return (
{t('appName')}
{user ? ( ) : ( {t('nav.login')} )}
{menuOpen && ( )}
) }