{{--
Базовый макет публичной части (ТЗ §10, §17, §18.1).
Серверный рендеринг без обязательного JavaScript: контент страницы уже в
HTML, скрипты только дополняют поведение.
--}}
@yield('title', config('app.name'))
@hasSection('description')
@endif
@isset($canonical)
@endisset
@stack('meta')
@vite(['resources/css/app.css', 'resources/js/app.js'])
@livewireStyles
{{--
Колонка на всю высоту экрана: на короткой странице (пустой кабинет, одна
бронь, 404) подвал иначе оказывается посреди пустого белого поля.
Растягивается содержимое, а не подвал — см. flex-1 у .
--}}
Перейти к содержимому
@include('partials.header')
@yield('content')
@include('partials.footer')
@include('partials.bottom-nav')
{{-- Окна шапки: разметка внизу страницы, открытие — через сторы Alpine. --}}
@include('partials.city-modal')
@include('partials.auth-modal')
{{--
Alpine поставляется вместе с Livewire. Директива подключается явно:
автовставка срабатывает только на страницах с Livewire-компонентами, а
карта и выбор города нужны и на обычных Blade-страницах.
--}}
@livewireScripts