<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 { AppSidebar } from '$widgets/AppSidebar';

/** 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>
        <AppSidebar />
        <main>
            <Sidebar.Trigger />
            {@render children?.()}
        </main>
    </Sidebar.Provider>

    <footer></footer>
</div>

<style>
#app-root {
    width: 100%;
    height: 100vh;
}
</style>
