-
Notifications
You must be signed in to change notification settings - Fork 2
Open
Description
Проблема
На странице /chats есть несколько UX-проблем, выявленных при дизайн-ревью:
1. Пейджинация в сайдбаре — антипаттерн для мессенджеров
Текущая реализация (app/views/tenants/chats/_layout.html.slim:18-21):
- if @chats.respond_to?(:total_pages) && @chats.total_pages > 1
.p-2.border-t.border-gray-200.bg-gray-50
= paginate @chatsПроблемы:
- Мессенджеры (Telegram, WhatsApp, Slack) никогда не используют пейджинацию — только бесконечный скролл
- Ширина сайдбара 320px (
w-80) слишком мала для стандартной пагинации Kaminari (« 1 2 3 ... 10 ») - При переходе на page=2 пользователь теряет контекст открытого чата справа
- Нарушается ментальная модель пользователя — ожидание непрерывного списка
2. Избыточные отступы между навигацией и контентом
Текущая структура:
[Навигация w-64] [padding 32px] [Список чатов w-80] [Сообщения]
main.lg:ml-64.p-8 создаёт 32px padding, что для интерфейса чатов избыточно и создаёт ощущение «пустоты».
Предлагаемые решения
Пейджинация (по приоритету):
| Вариант | Сложность | Описание |
|---|---|---|
| Load more кнопка | 🟢 Лёгкая | Кнопка «Показать ещё» внизу списка + Turbo Frame |
| Infinite scroll | 🟡 Средняя | IntersectionObserver + Turbo Streams |
| Убрать пейджинацию | 🟢 Минимальная | Показывать последние 50-100 чатов |
Отступы:
- Убрать/уменьшить padding для страницы чатов (edge-to-edge layout)
- Возможно через условный класс в layout или отдельный layout для чатов
Acceptance Criteria
- Пейджинация заменена на infinite scroll или "Load more"
- Отступы на странице чатов оптимизированы
- При загрузке новых чатов не теряется выбранный чат
- Работает на мобильных устройствах
Референсы
- Telegram Web: бесконечный скролл, компактный список
- Slack: виртуальный скролл для больших списков
- WhatsApp Web: простой скролл без пагинации
🤖 Generated with Claude Code
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels