72 lines
2.9 KiB
PHP
72 lines
2.9 KiB
PHP
<!DOCTYPE html>
|
|
<html lang="{{ app()->getLocale() }}" data-theme="{{ auth()->user()?->theme ?? 'dark' }}">
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
<meta name="csrf-token" content="{{ csrf_token() }}">
|
|
<title>{{ ($title ?? '') ? $title . ' — Nimuli' : 'Nimuli' }}</title>
|
|
|
|
<!-- Prevent FOUC: inline critical theme vars -->
|
|
<style>
|
|
html { background: #0a0a0f; color: #f0f0f5; }
|
|
[data-theme="light"] { background: #ffffff; color: #111827; }
|
|
</style>
|
|
|
|
<!-- Fonts -->
|
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet">
|
|
|
|
<!-- Favicon -->
|
|
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
|
|
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
|
|
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
|
|
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
|
|
<link rel="manifest" href="/site.webmanifest">
|
|
<meta name="theme-color" content="#0a0a0f" media="(prefers-color-scheme: dark)">
|
|
<meta name="theme-color" content="#ffffff" media="(prefers-color-scheme: light)">
|
|
|
|
@vite(['resources/js/app.js'])
|
|
@livewireStyles
|
|
</head>
|
|
<body class="bg-bg text-t1 font-sans antialiased" x-data>
|
|
<div class="flex h-screen overflow-hidden">
|
|
<!-- Mobile Sidebar Overlay -->
|
|
<div
|
|
class="fixed inset-0 z-20 bg-black/60 md:hidden"
|
|
x-show="$store.sidebar?.open"
|
|
x-transition:enter="transition ease-out duration-200"
|
|
x-transition:enter-start="opacity-0"
|
|
x-transition:enter-end="opacity-100"
|
|
x-transition:leave="transition ease-in duration-150"
|
|
x-transition:leave-start="opacity-100"
|
|
x-transition:leave-end="opacity-0"
|
|
@click="$store.sidebar.open = false"
|
|
aria-hidden="true"
|
|
></div>
|
|
|
|
<!-- Sidebar: persisted across wire:navigate to prevent re-render -->
|
|
@persist('sidebar')
|
|
<div
|
|
class="fixed inset-y-0 left-0 z-30 md:relative md:z-auto md:flex md:flex-shrink-0 transition-transform duration-200 ease-in-out"
|
|
:class="$store.sidebar?.open ? 'translate-x-0' : '-translate-x-full md:translate-x-0'"
|
|
>
|
|
<x-sidebar />
|
|
</div>
|
|
@endpersist
|
|
|
|
<!-- Main Area -->
|
|
<div class="flex-1 flex flex-col overflow-hidden min-w-0">
|
|
<x-topbar :title="$title ?? ''" />
|
|
|
|
<main class="flex-1 overflow-y-auto p-6">
|
|
{{ $slot }}
|
|
</main>
|
|
</div>
|
|
</div>
|
|
|
|
<x-modal-container />
|
|
@livewireScripts
|
|
</body>
|
|
</html>
|