47 lines
1.1 KiB
Svelte
47 lines
1.1 KiB
Svelte
<script lang="ts">
|
|
/**
|
|
* Layout Component
|
|
*
|
|
* Root layout wrapper that provides the application shell structure. Handles favicon,
|
|
* sidebar provider initialization, and renders child routes with consistent structure.
|
|
*
|
|
* Layout structure:
|
|
* - Header area (currently empty, reserved for future use)
|
|
* - Collapsible sidebar with main content area
|
|
* - Footer area (currently empty, reserved for future use)
|
|
*
|
|
* Uses Sidebar.Provider to enable mobile-responsive collapsible sidebar behavior
|
|
* throughout the application.
|
|
*/
|
|
import favicon from '$shared/assets/favicon.svg';
|
|
import * as Sidebar from '$shared/shadcn/ui/sidebar/index';
|
|
import { FiltersSidebar } from '$widgets/FiltersSidebar';
|
|
|
|
/** Slot content for route pages to render */
|
|
let { children } = $props();
|
|
</script>
|
|
|
|
<svelte:head>
|
|
<link rel="icon" href={favicon} />
|
|
</svelte:head>
|
|
|
|
<div class="app">
|
|
<header></header>
|
|
|
|
<Sidebar.Provider>
|
|
<FiltersSidebar />
|
|
<main>
|
|
<Sidebar.Trigger />
|
|
{@render children?.()}
|
|
</main>
|
|
</Sidebar.Provider>
|
|
<footer></footer>
|
|
</div>
|
|
|
|
<style>
|
|
#app-root {
|
|
width: 100%;
|
|
height: 100vh;
|
|
}
|
|
</style>
|