Skip to content

UX: Улучшить пейджинацию и отступы в сайдбаре чатов #172

@dapi

Description

@dapi

Проблема

На странице /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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions