Игорь Надеин 85ce134bac feat(chat): рефакторинг мобильной навигации и шапки чата
- Реализован современный нижний navbar для мобильных (5 кнопок)
- Скрытие нижнего navbar на странице чата
- Новая шапка чата с аватарами и бейджами типа чата
- Переработана HTML структура чата (убраны лишние Bootstrap контейнеры)
- Добавлены стили для аватаров и бейджей типов чатов
- Условное отображение: аватар OR иконка категории
2026-01-12 10:14:16 +03:00

214 lines
6.3 KiB
CSS
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* navbar.css
* Стили навбара: меню-тогглер, поиск, уведомления
*/
/* Navbar overflow visible для dropdown */
.app-navbar {
overflow: visible !important;
}
.app-navbar .container-fluid {
overflow: visible !important;
}
/* ─────────────────────────────────────────────────────────────
MOBILE NAVBAR HEIGHT
────────────────────────────────────────────────────────────── */
/* Увеличенная высота navbar для мобильных устройств */
@media (max-width: 767.98px) {
.app-navbar {
min-height: 90px;
}
.app-navbar .container-fluid {
min-height: 64px;
padding-top: 0.75rem;
padding-bottom: 0.75rem;
}
}
/* ─────────────────────────────────────────────────────────────
MENU TOGGLE (гамбургер)
────────────────────────────────────────────────────────────── */
/* Кнопка «гамбургера» — без круга/рамки */
.menu-toggle {
padding: 0;
border: 0;
background: transparent;
line-height: 1;
color: #fff;
}
.menu-toggle:focus {
outline: none;
box-shadow: none;
}
/* ─────────────────────────────────────────────────────────────
DROPDOWN AVATAR
────────────────────────────────────────────────────────────── */
/* Спрятать стрелочку у dropdown-аватара */
.dropdown-toggle.no-caret::after {
display: none !important;
}
/* ─────────────────────────────────────────────────────────────
MOBILE SEARCH OVERLAY
────────────────────────────────────────────────────────────── */
.mobile-search-overlay {
position: fixed;
top: var(--navbar-h);
left: 0;
right: 0;
bottom: 0;
background-color: rgba(0, 0, 0, 0.5);
z-index: 1030;
opacity: 0;
pointer-events: none;
transition: opacity 0.3s ease;
}
.mobile-search-overlay.active {
opacity: 1;
pointer-events: auto;
}
/* Светлая тема - забеливание */
[data-bs-theme="light"] .mobile-search-overlay {
background-color: rgba(255, 255, 255, 0.85);
}
/* Темная тема - затемнение */
[data-bs-theme="dark"] .mobile-search-overlay {
background-color: rgba(0, 0, 0, 0.7);
}
/* ─────────────────────────────────────────────────────────────
BOTTOM NAVBAR (только для мобильных)
────────────────────────────────────────────────────────────── */
.bottom-navbar {
position: fixed;
bottom: 0;
left: 0;
right: 0;
background-color: var(--bs-primary);
border-top: 0.5px solid var(--bs-border-color);
z-index: 1040;
padding: 0;
box-shadow: 0 -1px 10px rgba(0, 0, 0, 0.08);
backdrop-filter: blur(10px);
-webkit-backdrop-filter: blur(10px);
}
/* Темная тема */
[data-bs-theme="dark"] .bottom-navbar {
background-color: var(--bs-tertiary-bg);
border-top-color: var(--bs-border-color);
box-shadow: 0 -1px 10px rgba(0, 0, 0, 0.3);
}
.bottom-navbar-container {
display: flex;
justify-content: space-around;
align-items: center;
height: 60px;
padding: 0 8px;
max-width: 100%;
}
.bottom-nav-item {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
flex: 1;
height: 100%;
color: rgba(255, 255, 255, 0.7);
text-decoration: none;
border: none;
background: transparent;
padding: 4px 8px;
transition: all 0.2s ease;
position: relative;
cursor: pointer;
}
/* Темная тема - другой цвет кнопок */
[data-bs-theme="dark"] .bottom-nav-item {
color: var(--bs-secondary-color);
}
.bottom-nav-item:hover,
.bottom-nav-item:focus,
.bottom-nav-item:active {
color: #fff;
background: rgba(255, 255, 255, 0.1);
outline: none;
}
[data-bs-theme="dark"] .bottom-nav-item:hover,
[data-bs-theme="dark"] .bottom-nav-item:focus,
[data-bs-theme="dark"] .bottom-nav-item:active {
color: var(--bs-emphasis-color);
background: var(--bs-secondary-bg);
}
.bottom-nav-item i {
font-size: 1.4rem;
margin-bottom: 2px;
line-height: 1;
}
.bottom-nav-label {
font-size: 0.65rem;
font-weight: 500;
text-align: center;
line-height: 1;
margin-top: 2px;
}
/* Иконка с бейджем для уведомлений */
.bottom-nav-icon-wrapper {
position: relative;
display: inline-block;
}
.bottom-nav-badge {
position: absolute;
top: -4px;
right: -8px;
background: var(--bs-danger);
color: white;
border-radius: var(--badge-radius);
padding: 2px 5px;
font-size: 0.65rem;
font-weight: 600;
min-width: 18px;
text-align: center;
line-height: 1;
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);
}
/* Padding для body, чтобы контент не перекрывался нижней панелью */
@media (max-width: 767.98px) {
body {
padding-bottom: 60px;
}
/* Скрыть bottom navbar на странице чата - композер заменяет навигацию */
.chat-container ~ .bottom-navbar,
.chat-page ~ .bottom-navbar,
body:has(.chat-container) .bottom-navbar,
body:has(.chat-page) .bottom-navbar {
display: none;
}
/* Убрать padding, когда navbar скрыт */
body:has(.chat-container),
body:has(.chat-page) {
padding-bottom: 0;
}
}