Files
SHiNE-server/shine-UI/styles/components/emoji-picker.css
T
qandClaude Opus 5.5 f8900e531a UI: новый общий стиль, тёмная/светлая тема, настраиваемая палитра
- styles/main.css: роли цветов (по умолчанию «Индиго»), шкала отступов/скруглений/шрифтов,
  цвета отношений для обеих тем; жёсткие цвета в стилях заменены на роли.
- Палитра: пресеты и личные правки, «Оформление» Авто/День/Ночь, долгое нажатие —
  редактор цветов с экспортом/импортом.
- Каналы: пузыри постов автора, плашки дней, строка «Написать в канал…», «О канале»,
  создание канала с адресом из названия; лента открывается на свежих постах.
- Чаты: плоский список, чипы-фильтры, пузыри, плашки дней; нижняя панель скрыта в переписке.
- Корневые разделы — единая шапка; профиль и чужой профиль — общая карточка;
  настройки, кошелёк, сеансы — меню-списки.
- Нижняя панель: иконки без подписей, бейджи на иконках.
- confirmDialog вместо window.confirm/alert; на телефоне диалоги — шторки снизу.
- docs/UI-Design/ISSUES-for-dev.md — найденные ошибки сервера/UI.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-26 10:05:26 +03:00

179 lines
2.9 KiB
CSS

/* Emoji picker and Twemoji UI styles. */
.emoji-picker-slot {
grid-column: 1 / -1;
}
.emoji-picker-slot[hidden] {
display: none;
}
.emoji-picker {
display: grid;
gap: 8px;
max-height: min(40vh, 292px);
overflow-y: auto;
scrollbar-width: none;
-ms-overflow-style: none;
padding: 10px;
border-radius: 14px;
background: var(--surface);
box-shadow: 0 -10px 24px rgba(0, 0, 0, 0.2);
}
.emoji-picker::-webkit-scrollbar,
.emoji-picker-tabs::-webkit-scrollbar {
width: 0;
height: 0;
display: none;
}
.emoji-picker-section {
display: grid;
gap: 6px;
}
.emoji-picker-section-title {
color: var(--text-primary);
font-size: 12px;
font-weight: 600;
}
.emoji-picker-tabs {
display: flex;
gap: 4px;
overflow-x: auto;
padding-bottom: 2px;
scrollbar-width: none;
-ms-overflow-style: none;
}
.emoji-picker-tab {
flex: 0 0 38px;
width: 38px;
}
.emoji-picker-tab,
.emoji-picker-item {
border: 0;
background: transparent;
background-image: none;
box-shadow: none;
color: var(--text-primary);
text-shadow: none;
backdrop-filter: none;
-webkit-backdrop-filter: none;
cursor: pointer;
appearance: none;
-webkit-appearance: none;
-webkit-tap-highlight-color: transparent;
transition:
transform 90ms ease,
box-shadow 90ms ease,
background-color 90ms ease,
filter 120ms ease;
}
.emoji-picker-tab {
min-height: 34px;
border-radius: 8px;
font-size: 19px;
}
.emoji-picker-grid {
display: grid;
grid-template-columns: repeat(7, minmax(0, 1fr));
gap: 3px;
}
.emoji-picker-item {
min-height: 38px;
border-radius: 8px;
font-size: 24px;
line-height: 1;
}
.emoji-picker-tab:hover,
.emoji-picker-item:hover {
color: var(--text-primary);
background: transparent;
border: 0;
box-shadow: none;
filter: brightness(1.12);
}
.emoji-picker-tab:focus,
.emoji-picker-item:focus {
outline: none;
box-shadow: none;
}
.emoji-picker-tab:active,
.emoji-picker-item:active {
color: var(--text-primary);
background: color-mix(in srgb, var(--surface) 12%, transparent);
border: 0;
box-shadow:
inset 0 3px 8px rgba(0, 0, 0, 0.58),
inset 0 -1px 2px color-mix(in srgb, var(--text-primary) 8%, transparent);
transform: translateY(1px) scale(0.97);
filter: brightness(0.9);
}
.emoji-picker-tab:focus-visible,
.emoji-picker-item:focus-visible {
outline: 2px solid var(--border-control);
outline-offset: 2px;
}
.emoji-picker-tab::before,
.emoji-picker-tab::after,
.emoji-picker-item::before,
.emoji-picker-item::after {
background: transparent;
background-image: none;
border-color: transparent;
box-shadow: none;
}
.twemoji,
.emoji-picker-preview {
display: inline-grid;
place-items: center;
width: 1em;
height: 1em;
vertical-align: -0.12em;
}
.twemoji-image {
display: block;
width: 100%;
height: 100%;
object-fit: contain;
pointer-events: none;
}
.twemoji.is-error .twemoji-image,
.emoji-picker-preview.is-error .twemoji-image {
visibility: hidden;
}