@inject('deployment', 'App\Services\DeploymentService') @php // Reverb (Echo) endpoint derived at RUNTIME from the effective domain, so changing // the panel domain from the dashboard needs no JS rebuild. Read by resources/js/app.js. $reverb = $deployment->reverbClient(); @endphp {{ $title ?? 'Clusev' }} @include('partials.head-icons') @vite(['resources/css/app.css', 'resources/js/app.js']) @livewireStyles
{{-- mobile/tablet backdrop --}}
{{-- Default-password warning: shown while the seeded password is still in use (rotation is recommended but not forced). Disappears once the password is actually changed. --}} @if (auth()->user()?->must_change_password)

{{ __('auth.default_pw_warning') }}

{{ __('auth.default_pw_change') }}
@endif {{ $slot }}
@include('partials.toaster') {{-- First-run onboarding tour (dimmed spotlight overlay; auto-opens once, relaunchable from Settings). @persist so it does NOT re-mount on wire:navigate — otherwise mount() would re-read the flag and could re-open the tour in the window before markSeen() persists. --}} @persist('onboarding-tour') @endpersist {{-- Command palette + keyboard shortcuts (persistent; one global keydown listener) --}} {{-- Persist the modal manager across wire:navigate: otherwise body.replaceWith + Alpine.destroyTree tear down its window-level `openModal` listener on every SPA navigation, leaving a post-landing window where a click finds no live component (dead trigger / "Could not find Livewire component in DOM tree"). @persist keeps ONE stable manager + listener for the whole session. --}} @persist('modal') @endpersist @livewireScripts