@vite(['resources/js/blade.js']) @stack('styles') @php $user = auth()->user(); $org = $user?->organization; $tenant = tenant(); $isOwner = $user?->hasRole('owner'); @endphp
{{-- Sidebar overlay (mobile) --}}
{{-- ── Sidebar ─────────────────────────────────────────── --}} {{-- The closed (translated-off-screen) state is a static class, not an Alpine :class binding, so the sidebar renders correctly on first paint — before Alpine has hydrated — instead of sitting fixed and fully visible on top of the content on every page load / navigation. --}} {{-- ── Main area ───────────────────────────────────────── --}}
{{-- Top bar --}}
{{-- Mobile hamburger --}} {{-- Page title / breadcrumb --}}
{{ $heading ?? '' }}
{{-- Page actions --}} {{ $actions ?? '' }} {{-- Notifications bell --}}

Notifications

{{-- Dark mode toggle --}} {{-- Profile link --}} {{ strtoupper(substr($user?->name ?? 'U', 0, 1)) }}
{{-- Flash messages --}} @if(session('success') || session('error'))
@if(session('success'))
{{ session('success') }}
@endif @if(session('error'))
{{ session('error') }}
@endif
@endif {{-- Page content --}}
{{ $slot }}
@stack('scripts')