UI v4: новый стиль по макету V3/V4 и доводка экранов

Палитра «Сияние» по умолчанию, новые роли цветов. Лента канала: плоские записи, ряд действий
с равным шагом иконок, дата у записи. Обсуждение со строкой ввода, личный чат, шторки.
Вход и регистрация: стартовый экран (надпись «СИЯНИЕ», сияние мандалы), настройки входа
со статусами серверов, статус логина в одну строку, вход с другого устройства (код, таймер, шаги),
сохранение ключей с переключателями. Корневые разделы – заголовок по центру; фильтр чатов –
переключатель; уведомления – список как в чатах; фото – просмотр на весь экран.
Общее: один зазор под шапкой (--page-top-gap), переключатели высотой с поле ввода,
второстепенные кнопки по одной роли (в том числе на экранах устройств и серверов),
иконки только из ui-icon.js, полоса прокрутки скрыта, среднее тире в текстах интерфейса.

Что нужно от сервера и разработчика – docs/UI-Design/UI-v4-for-dev.md.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
q
2026-09-29 01:36:52 +03:00
co-authored by Claude Opus 5.5
parent 13693a0a53
commit 2e62616b46
84 changed files with 2507 additions and 1583 deletions
+30 -22
View File
@@ -42,7 +42,8 @@
.deleted-message-pill { min-height: 44px; text-align: left; color: var(--text-secondary); padding: 8px 0; }
.channel-header-title, .channel-header-owner { display: block; max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.channel-header-owner { color: var(--text-secondary); font-size: .75rem; line-height: 1rem; font-weight: 400; }
.channel-composer { display: flex; gap: 8px; padding: 8px 0; background: var(--background); }
/* Нижняя панель экранов канала: поверхность с линией сверху, как шапка */
.channel-composer { display: flex; gap: 8px; margin: 0 -12px; padding: 9px 12px calc(11px + env(safe-area-inset-bottom)); background: var(--surface); border-top: 1px solid var(--border-subtle); }
.channel-compose-bar {
width: 100%;
min-height: 44px;
@@ -77,29 +78,36 @@
.thread-reply-context { color: var(--text-secondary); font-size: .75rem; line-height: 1.125rem; border-left: 2px solid var(--border-control); padding-left: 10px; overflow-wrap: anywhere; }
@media (prefers-reduced-motion: reduce) { .channels-screen *, .channel-composer * { animation: none; scroll-behavior: auto; transition: none; } }
.channels-screen .channel-message-card.channel-message-card--owner {
gap: 6px;
margin: 0 0 8px;
padding: 10px 12px 2px 14px;
border: 1px solid var(--border-subtle);
border-radius: 16px;
background: var(--surface);
justify-self: start;
width: fit-content;
min-width: min(100%, 17rem);
max-width: 100%;
}
.channels-screen .channel-message-card--owner:has(.message-attachment-carousel) { width: 100%; }
/* Запись автора в его канале (макет V4): плоская, на всю ширину, между записями — линия с отступами */
.channels-screen .channel-message-card.channel-message-card--owner { gap: 0; margin: 0; padding: 20px 0 8px; border: 0; position: relative; }
.channels-screen .channel-message-card--owner + .channel-message-card--owner::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 1px; background: var(--border-subtle); }
.channels-screen .channel-message-card--owner .channel-message-body { font-size: 1rem; line-height: 1.52; }
.channel-message-card--owner .channel-message-head-row[hidden] { display: none; }
.channel-message-card--owner .channel-message-body { line-height: 1.375rem; }
.channel-message-card--owner .channel-message-actions { gap: 0; margin-left: -8px; flex-wrap: nowrap; }
.channel-message-card--owner .channel-action-item { min-width: 40px; min-height: 40px; padding: 6px 8px; gap: 4px; }
.channel-message-card--owner .channel-action-icon svg { width: 20px; height: 20px; }
.channel-message-meta { display: flex; align-items: center; gap: 0; margin-left: auto; min-width: 0; }
.channel-message-card--owner .message-attachment-carousel { width: calc(100% + 2 * var(--page-gutter)); max-width: none; margin: 0 calc(-1 * var(--page-gutter)) 14px; }
.channel-message-card--owner .message-attachment-carousel-viewport { border: 0; border-radius: 0; }
.topbar-identity .avatar.channel-profile-avatar { --channel-avatar-size: 40px; width: 40px; height: 40px; min-width: 40px; min-height: 40px; font-size: 22px; border-radius: 11px; }
.channel-message-card--owner .channel-message-actions { gap: 0; margin: 6px -8px 0; min-height: 50px; flex-wrap: nowrap; }
/* Равный шаг иконок: каждое действие – ячейка 56 px, иконка у левого края, счётчик внутри ячейки (влезает и «999»). */
.channel-message-card--owner .channel-action-item { width: 56px; min-width: 56px; min-height: 44px; padding: 0 0 0 8px; gap: 5px; justify-content: flex-start; border-radius: 10px; font-variant-numeric: tabular-nums; }
.channel-message-card--owner .channel-action-discussion { width: auto; padding-right: 8px; }
.channel-message-card--owner .channel-action-icon svg { width: 23px; height: 23px; }
.channel-message-card--owner .channel-action-share .channel-action-icon svg { width: 25px; height: 25px; }
.channel-action-item.is-liked svg { fill: currentColor; }
.channel-action-faces { display: inline-flex; align-items: center; margin-left: 2px; padding-right: 3px; }
.channel-action-faces .avatar.channel-action-face { width: 22px; height: 22px; min-width: 22px; min-height: 22px; font-size: 10px; border: 2px solid var(--background); }
.channel-action-faces .channel-action-face + .channel-action-face { margin-left: -6px; }
.channel-message-meta { display: flex; align-items: center; gap: var(--space-1); margin-left: auto; min-width: 0; padding-left: 4px; }
.channel-message-meta .channel-message-time { white-space: nowrap; }
.channel-message-meta .channel-message-time::before { content: none; }
.channel-message-meta .channel-message-more { width: 40px; height: 40px; min-height: 40px; margin: 0 -4px 0 0; padding: 0; font-size: 20px; }
.channel-message-card--owner .attachment-carousel,
.channel-message-card--owner [class*='attachment'] { border-radius: 12px; }
.channel-message-meta .channel-message-more { display: inline-grid; place-items: center; width: 36px; height: 44px; min-height: 44px; margin: 0 -4px 0 0; padding: 0; }
.channel-message-more svg { display: block; width: 20px; height: 20px; }
@media (max-width: 360px) { .channel-message-card--owner .channel-action-item { width: 50px; min-width: 50px; } .channel-message-meta .channel-message-time { font-size: .6875rem; } }
/* Нижняя панель ленты: «Новая запись» у владельца, «Подписаться» у читателя */
.channel-new-post { width: 100%; min-height: 44px; display: inline-flex; align-items: center; justify-content: center; gap: 8px; border: 0; border-radius: 12px; background: var(--surface-selected); color: var(--action); font: inherit; font-weight: 600; cursor: pointer; }
.channel-new-post svg { width: 21px; height: 21px; }
.channel-new-post:hover { background: color-mix(in srgb, var(--surface-selected) 85%, var(--text-primary)); }
.channel-new-post:focus-visible { outline: 2px solid var(--focus-ring); outline-offset: 2px; }
.channels-screen--channel, .channels-screen--thread { padding-bottom: 8px; }
.channel-message-card--owner .message-attachment-media { height: auto; max-height: 70vh; object-fit: cover; }