/
som_cooper
/
book-lib
Обзор
Документация
Войти
/
som_cooper
/
book-lib
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
main
admin/src/components/layout/AdminShell.jsx
48 строк
2 KB
imdbcooper
feat(admin): redesign UI with shadcn/ui, unified search, compact density
23 май 2026, 19:58
23 май 2026, 19:58
afbd27f
Код
Авторство
О чём код?
import { useEffect, useState } from 'react' import { Outlet, useLocation } from 'react-router-dom' import { Sheet, SheetContent, SheetTitle } from '../ui/sheet.jsx' import Sidebar from './Sidebar.jsx' import Topbar from './Topbar.jsx' export default function AdminShell() { const [mobileOpen, setMobileOpen] = useState(false) const location = useLocation() // Закрываем мобильный sidebar при смене роута useEffect(() => { setMobileOpen(false) }, [location.pathname]) return ( <div className="min-h-screen bg-background text-foreground"> <div className="grid min-h-screen grid-cols-1 md:grid-cols-[auto_1fr]"> {/* Desktop sidebar */} <div className="sticky top-0 hidden h-screen md:block"> <Sidebar /> </div> {/* Mobile sidebar */} <Sheet open={mobileOpen} onOpenChange={setMobileOpen}> <SheetContent side="left" className="w-56 border-r border-border/60 bg-sidebar p-0 text-sidebar-foreground sm:max-w-[224px]" > <SheetTitle className="sr-only">Navigation</SheetTitle> <Sidebar className="w-full border-r-0" onNavigate={() => setMobileOpen(false)} /> </SheetContent> </Sheet> {/* Main area */} <div className="flex min-w-0 flex-col"> <Topbar onOpenSidebar={() => setMobileOpen(true)} /> <main className="flex-1 px-4 py-4 md:px-6 md:py-5"> <Outlet /> </main> </div> </div> </div> ) }