feat(web): профиль с аватаром, панель в углу, настройки сервера, скрытые ID
Правки пользователя: - в «Профиль → Основной» сверху квадратный аватар слева, справа от него настройки имени, «О себе», состояния и эмодзи во всю высоту; смена аватара — клик по нему, форматы (JPEG, PNG, WebP, GIF до 8 МБ) — в подсказке; - убраны дубли: часовой пояс только в «Язык и регион», статус — только в мини-профиле панели; - панель пользователя переехала в нижний левый угол под сайдбар, подсказка о выходе из сервера — на её прежнее место; панель ужата под 240 px; - шестерёнка сервера открывает новый пункт настроек «Сервер» (список серверов, общее, участники, роли, опасная зона), а «Профиль → Сервер» оставлен только для ника и «Применить ко всем серверам»; - окно настроек получило статический размер 70% рабочей области со скроллом; - ID пользователей скрыты везде, кроме раздела «Инстанс» у администратора; - список друзей свёрнут под кнопкой «Друзья (N)» и раскрывается снизу вверх; - 249 тестов Vitest (было 239), check/lint/test/build зелёные.
This commit is contained in:
@@ -322,6 +322,54 @@ body {
|
||||
animation: gl-shimmer 1.4s linear infinite;
|
||||
}
|
||||
|
||||
/*
|
||||
* Список друзей раскрывается снизу вверх: высота контейнера растёт от нуля
|
||||
* (grid 0fr → 1fr), а содержимое въезжает снизу. Свёрнутый список не занимает
|
||||
* места и не доступен скринридеру (`aria-hidden` ставит компонент).
|
||||
*/
|
||||
@keyframes gl-reveal-up {
|
||||
from {
|
||||
opacity: 0;
|
||||
transform: translateY(8px);
|
||||
}
|
||||
to {
|
||||
opacity: 1;
|
||||
transform: none;
|
||||
}
|
||||
}
|
||||
|
||||
.gl-reveal-up {
|
||||
display: grid;
|
||||
grid-template-rows: 0fr;
|
||||
transition: grid-template-rows var(--duration-base) var(--ease-out);
|
||||
}
|
||||
|
||||
.gl-reveal-up > * {
|
||||
min-height: 0;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.gl-reveal-up[data-state='open'] {
|
||||
grid-template-rows: 1fr;
|
||||
}
|
||||
|
||||
.gl-reveal-up[data-state='open'] > * {
|
||||
animation: gl-reveal-up var(--duration-base) var(--ease-out) backwards;
|
||||
}
|
||||
|
||||
/* Стрелка-раскрывашка: развёрнутое состояние поворачивает её вниз. */
|
||||
.gl-caret {
|
||||
display: inline-block;
|
||||
transform: rotate(-90deg);
|
||||
transition: transform var(--duration-fast) var(--ease-out);
|
||||
}
|
||||
|
||||
.gl-caret-open {
|
||||
display: inline-block;
|
||||
transform: rotate(0deg);
|
||||
transition: transform var(--duration-fast) var(--ease-out);
|
||||
}
|
||||
|
||||
/*
|
||||
* Доступность: при `prefers-reduced-motion: reduce` анимации становятся
|
||||
* мгновенными. Задержки каскада тоже обнуляем — иначе элементы списка
|
||||
|
||||
Reference in New Issue
Block a user