Компоненты навигации являются центральным элементом любой веб-приложения, обеспечивая пользователю удобный доступ к различным разделам и функциям интерфейса. В экосистеме SvelteKit использование UI библиотек позволяет создавать такие компоненты с минимальными усилиями, сохраняя реактивность и оптимизированную работу на клиенте и сервере.
Navbar — горизонтальная панель, обычно располагающаяся в верхней части страницы. В SvelteKit UI библиотеках она реализуется как компонент с набором стандартных пропсов:
items — массив объектов, описывающих пункты меню:
{ label: string, href: string, icon?: Component }.active — идентификатор текущего активного пункта.orientation — может принимать значения
"horizontal" или "vertical".theme — настройки внешнего вида, например
"light" или "dark".Пример использования:
<script>
import { Navbar, NavItem } from 'sveltekit-ui';
const menu = [
{ label: 'Главная', href: '/' },
{ label: 'Блог', href: '/blog' },
{ label: 'Контакты', href: '/contact' }
];
</script>
<Navbar {menu} active="/blog" theme="light" />
Особенности реализации:
$page.url.pathname).NavItem.children.<slot name="item">) для добавления иконок или
дополнительных элементов.Боковые панели используются для вертикальной навигации и часто применяются в административных интерфейсах и дашбордах.
Основные пропсы компонентов Sidebar:
collapsed — логическое значение, указывающее свернута
ли панель.items — структура меню с поддержкой вложенных
пунктов.position — "left" или
"right", определяет расположение панели.width — настраиваемая ширина панели в пикселях или
процентах.Пример:
<script>
import { Sidebar, SidebarItem } from 'sveltekit-ui';
const sidebarItems = [
{ label: 'Панель управления', href: '/dashboard' },
{ label: 'Отчёты', href: '/reports', children: [
{ label: 'Ежедневные', href: '/reports/daily' },
{ label: 'Месячные', href: '/reports/monthly' }
]}
];
</script>
<Sidebar items={sidebarItems} collapsed={false} position="left" />
Ключевые моменты:
Breadcrumbs отображают путь пользователя в приложении и помогают быстро перемещаться между уровнями структуры.
Основные свойства:
items — массив объектов
{ label, href }.separator — строка или компонент, используемый между
элементами ('/', '>', или иконка).Пример:
<script>
import { Breadcrumbs, BreadcrumbItem } from 'sveltekit-ui';
const crumbs = [
{ label: 'Главная', href: '/' },
{ label: 'Каталог', href: '/catalog' },
{ label: 'Электроника', href: '/catalog/electronics' }
];
</script>
<Breadcrumbs items={crumbs} separator=">" />
Особенности:
Tabs позволяют организовать контент в несколько разделов с переключением без перезагрузки страницы.
Пропсы:
tabs — массив объектов
{ label, component }.active — индекс или идентификатор активной
вкладки.lazy — загрузка контента вкладки только при
активации.Пример:
<script>
import { Tabs, Tab } from 'sveltekit-ui';
import HomeContent from './HomeContent.svelte';
import ProfileContent from './ProfileContent.svelte';
const tabList = [
{ label: 'Главная', component: HomeContent },
{ label: 'Профиль', component: ProfileContent }
];
</script>
<Tabs {tabList} active={0} lazy={true} />
Особенности реализации:
Компоненты Dropdown облегчают создание контекстных меню и вложенных навигационных элементов.
Основные параметры:
items — массив объектов меню, поддерживающий
вложенность.trigger — элемент или событие, которое открывает
меню.placement — позиция меню относительно триггера
("bottom-start", "top-end" и др.).Пример:
<script>
import { Dropdown, DropdownItem } from 'sveltekit-ui';
const dropdownItems = [
{ label: 'Редактировать', action: () => console.log('Edit') },
{ label: 'Удалить', action: () => console.log('Delete') }
];
</script>
<Dropdown items={dropdownItems}>
<button>Действия</button>
</Dropdown>
Важные моменты:
open
свойство.Все навигационные компоненты в SvelteKit UI библиотеке спроектированы с учётом:
$page.url
позволяет автоматически подсвечивать активные элементы.Комбинация этих возможностей позволяет строить интерфейсы с богатой навигацией, минимизируя необходимость ручного управления состояниями и стилями.