Компоненты
AppShell
Оболочка приложения с адаптивным сайдбаром.
Оболочка приложения: на широком экране статичный сайдбар, на узком — выезжающий drawer с шапкой и гамбургером.
Пример
import { AppShell } from "@toimetdev/pathlogs-core";
export default function AppLayout({ children }) {
return (
<AppShell
brand={
<span className="flex items-center gap-2">
<Logo />
<span className="text-sm font-bold">PathLogs</span>
</span>
}
menuLabel="Открыть меню"
sidebar={<Navigation />}
>
{children}
</AppShell>
);
}Содержимое сайдбара приходит пропом целиком — оболочка не диктует, как выглядит навигация.
Адаптивность
Точка перелома — 1024 px. Ниже неё появляются шапка и гамбургер.
Ещё две мелочи, которые обычно забывают:
- клик по любой ссылке внутри сайдбара закрывает drawer — переход на мобильном всегда означает, что меню больше не нужно;
- пока drawer открыт, прокрутка страницы под ним заблокирована.
Пропсы
| Проп | Тип | По умолчанию | Описание |
|---|---|---|---|
sidebar* | ReactNode | — | Содержимое бокового меню. |
children* | ReactNode | — | Содержимое страницы. |
brand | ReactNode | — | Что показать в мобильной шапке рядом с гамбургером: логотип, название. |
menuLabel | string | "Open menu" | Доступное имя кнопки-гамбургера. |
sidebar*ReactNodeСодержимое бокового меню.
children*ReactNodeСодержимое страницы.
brandReactNodeЧто показать в мобильной шапке рядом с гамбургером: логотип, название.
menuLabelstringпо умолчанию: "Open menu"
Доступное имя кнопки-гамбургера.
Ширина сайдбара — 15 rem. Если нужна другая, переопределите .pl-shell__sidebar и отступ у .pl-shell__main: оба значения лежат рядом в components.css.