Files
EvoBGP/web/src/lib/ui/app/layout/app-mobile-nav.svelte
T

46 lines
1.4 KiB
Svelte

<script lang="ts">
import { resolve } from '$app/paths';
import {
Sheet,
SheetContent,
SheetHeader,
SheetTitle,
SheetTrigger
} from '$lib/ui/core/sheet/index.js';
import { Button } from '$lib/ui/core/button/index.js';
import type { ThemePreference } from '$lib/theme.js';
import Menu from '@lucide/svelte/icons/menu';
import AppNavLinks from './app-nav-links.svelte';
import ThemeMenu from './theme-menu.svelte';
let {
open = $bindable(false),
theme = $bindable<ThemePreference>('system')
}: {
open?: boolean;
theme?: ThemePreference;
} = $props();
</script>
<Sheet bind:open>
<SheetTrigger>
<Button variant="ghost" size="icon-sm" class="md:hidden" aria-label="Открыть меню">
<Menu class="size-5" />
</Button>
</SheetTrigger>
<SheetContent side="left" class="bg-sidebar text-sidebar-foreground flex w-72 flex-col gap-0 p-0">
<SheetHeader class="border-border border-b p-4 text-left">
<SheetTitle>
<a href={resolve('/')} class="font-semibold tracking-tight no-underline">EvoBGP</a>
</SheetTitle>
<p class="text-sidebar-foreground/50 text-xs font-normal">Панель управления</p>
</SheetHeader>
<div class="flex items-center gap-2 px-4 py-2">
<ThemeMenu bind:theme />
</div>
<div class="flex min-h-0 flex-1 flex-col overflow-hidden">
<AppNavLinks onNavigate={() => (open = false)} />
</div>
</SheetContent>
</Sheet>