feat(web): оформление сервера в настройках, рейке и приглашении

Фаза 4 (AGENT.md 7.4): интерфейс для иконки, баннера, splash и акцентного цвета.

- секция «Оформление» в настройках сервера: загрузка и удаление иконки,
  баннера и splash с превью, проверка типа и размера на клиенте, пресеты
  акцентного цвета;
- иконка сервера показывается в рейке (заглушка-буквы остаётся, если файла
  нет), акцентный цвет переопределяет `--color-accent` внутри приложения и
  снимается при значении 0;
- предпросмотр приглашения показывает splash фоном и иконку сервера;
- ответ сервера обновляет карточку и список серверов — оформление видно без
  перезагрузки;
- тесты: превью всех трёх видов, multipart-загрузка, удаление, применение и
  снятие акцента, отказ для не-изображения, скрытие секции без MANAGE_GUILD.
This commit is contained in:
2026-09-20 23:34:05 +03:00
parent 02a5b99418
commit 6882516340
11 changed files with 663 additions and 4 deletions
+8 -1
View File
@@ -106,8 +106,15 @@ export function InviteJoin({ className = '' }: InviteJoinProps) {
{preview.data === undefined ? null : (
<div
className="mt-3 flex items-center gap-3 rounded-[var(--radius-md)] border border-border/60 bg-surface-2 px-3 py-2"
className="mt-3 flex items-center gap-3 rounded-[var(--radius-md)] border border-border/60 bg-surface-2 bg-cover bg-center px-3 py-2"
data-testid="invite-preview"
style={
preview.data.guild.splash_file_id === undefined
? undefined
: {
backgroundImage: `url(/files/${encodeURIComponent(preview.data.guild.splash_file_id)})`,
}
}
>
<Avatar
name={preview.data.guild.name}