# Каталог болезней: группы, карточки, фильтр

Статус: принята · 13.10.2026 · issue #316
Источник: ежедневный дизайн-аудит 13.10.2026. Никита разрешил выбирать вариант на развилках самостоятельно; выбран вариант ниже.

## Проблема

`/<locale>/disease/` — маркированный список из 71 ссылки с абзацем описания под каждой: около 9 000 px на десктопе и 15 000 px на телефоне. Описания почти одинаково начинаются («Что такое …, почему возникает …»), групп нет, сузить список нельзя. Страница выпадает из стиля «Пульс» (карточки, токены).

## Решение

1. **Группы.** Карта `slug → группа` в `apps/web/src/lib/disease-groups.ts`, порядок групп задан там же. Статья, которой нет в карте, попадает в группу «Другое»; страница не ломается. Будущие статьи из планов потоков статей вписаны в карту заранее, чтобы потокам реже приходилось трогать общий файл. Unit-тест требует, чтобы каждая опубликованная болезнь стояла в именованной группе: новая статья вне плана добавляет одну строку в карту (см. docs/adding-an-article.md → Shared files).
   Группы: ритм и проводимость; коронарные артерии; давление и холестерин; сердечная недостаточность и кардиомиопатии; клапаны; воспаление, перикард и опухоли; врождённые пороки; аорта и артерии; вены и тромбозы; лёгочное кровообращение.
2. **Карточки.** Сетка карточек в токенах сайта: название (шрифт Manrope), описание обрезано до трёх строк (`line-clamp`, полный текст остаётся в DOM для поиска и скринридеров). Внутри группы сортировка по названию в языке страницы.
3. **Навигация по группам.** Строка ссылок-«пилюль» на группы с числом статей.
4. **Фильтр.** Поле «Найти болезнь» над списком фильтрует карточки по названию и описанию без перезагрузки; пустые группы скрываются, при нуле совпадений показывается сообщение со ссылкой на полный поиск. Без JavaScript поле не показывается, список виден целиком.
5. Другие разделы (`/diagnostic/` и т. п.) получают те же карточки без групп и без фильтра: статей там мало.

## Что не входит

- Значки «есть 3D / ЭКГ / квиз» на карточках: нужны данные из нескольких коллекций, отдельный PR при необходимости.
- Изменения текстов статей и их front matter.

## Проверки

- Unit: в карте нет повторов, у каждой группы есть строка (паритет ключей проверяет i18n:check), каждая опубликованная болезнь стоит в именованной группе.
- e2e: на странице болезней есть группы, фильтр сужает список и показывает «ничего не найдено»; страница без горизонтальной прокрутки на 320 px и без нарушений axe (общие проверки сайта).
