{{-- Закреплённая нижняя навигация мобильной версии (ТЗ §10.1). Всегда на экране, учитывает safe area iPhone, не перекрывает содержимое — отступ снизу задаёт утилита pb-bottom-nav на . Иконки — из общего линейного набора и одного цвета с подписью: эмодзи были разноцветными и в каждой системе выглядели по-своему. --}} @php $catalogUrl = $currentCity ? route('catalog.city', $currentCity->slug) : route('cities.index'); $mapUrl = $currentCity ? route('catalog.city', [$currentCity->slug, 'view' => 'map']) : route('cities.index'); // Гостю без входа обе вкладки ведут на вход: пустой раздел «Избранное» // без объяснения выглядит поломкой (ТЗ §12.2). $isAuthenticated = ($currentGuest ?? null) !== null; $items = [ ['label' => 'Главная', 'icon' => 'home', 'url' => route('home'), 'active' => request()->routeIs('home')], ['label' => 'Поиск', 'icon' => 'search', 'url' => $catalogUrl, 'active' => request()->routeIs('catalog.*') && request()->query('view') !== 'map'], ['label' => 'Карта', 'icon' => 'map', 'url' => $mapUrl, 'active' => request()->query('view') === 'map'], [ 'label' => 'Избранное', 'icon' => 'heart', 'url' => $isAuthenticated ? route('cabinet.favorites') : route('auth.login'), 'active' => request()->routeIs('cabinet.favorites'), // Без входа обе вкладки открывают то же окно, что и «Войти» в шапке. 'modal' => ($showAuthModal ?? false) ? 'authModal' : null, ], [ 'label' => 'Профиль', 'icon' => 'user', 'url' => $isAuthenticated ? route('cabinet.profile') : route('auth.login'), 'active' => request()->routeIs('cabinet.profile', 'cabinet.bookings', 'auth.login'), 'modal' => ($showAuthModal ?? false) ? 'authModal' : null, ], ]; @endphp