46 lines
1.4 KiB
Svelte
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>
|