Skip to content

[Enhancement] Добавить верхнюю панель быстрых действий в SidebarLayout #58

@kapitulin24

Description

@kapitulin24

Контекст

В текущей ветке реализовано расширение основного лэйаута: в шапку SidebarLayout добавлены пользовательские действия для ускорения повседневных сценариев — быстрое создание сущностей, просмотр уведомлений и доступ к профилю/выходу.
Цель — сократить количество переходов по интерфейсу, повысить доступность ключевых действий и унифицировать точку входа в user-centric функции приложения.


Технические требования

  • Локация логики: src/app/layouts/SidebarLayout.tsx, src/widgets/quick-create/*, src/widgets/notifications/*, src/widgets/nav-user/*, src/shared/ui/Item.tsx
  • Инструменты: Next.js, React, @tanstack/react-query, next/dynamic, shadcn/ui-компоненты, lucide-react
  • Логика работы:
    1. Обновить SidebarLayout: добавить sticky-header с правым блоком действий (QuickCreate, Notifications, NavUser) и сохранить совместимость с SidebarProvider.
    2. Реализовать QuickCreate с DropdownMenu и запуском CreateTeamDialog/CreateProjectDialog; открытие диалогов через локальный state и onSelect c preventDefault.
    3. Реализовать Notifications с ленивой загрузкой через next/dynamic, fallback-скелетоном и запросом данных по queryKey только при open === true.
    4. Реализовать NavUser с ленивой загрузкой контента, отображением UserAvatar, переходом в профиль и действием SignOut.
    5. Добавить публичные re-export точки (index.ts) для новых виджетов и синхронизировать стили ItemDescription под компактный режим в dropdown.

Цель и критерии приемки (Definition of Done)

  • База: Созданы и подключены модули quick-create, notifications, nav-user с корректными публичными экспортами.
  • Функционал: В SidebarLayout отображаются 3 action-кнопки; все dropdown открываются/закрываются корректно; диалоги создания сущностей вызываются из QuickCreate; профиль и выход работают из NavUser.
  • Лимиты/SLA: Открытие header-dropdown выполняется без заметных лагов (<100ms на локальном профиле); сетевой запрос уведомлений стартует только по событию открытия меню; отсутствие деградации рендера при первом paint.
  • Интеграция: Пройдены проверки pnpm lint и pnpm typecheck; изменения включены в текущий CI pipeline без дополнительных переменных окружения.

Важные указания

  • Производительность: Использовать dynamic import + fallback для снижения initial bundle; исключить лишние запросы (enabled: open для уведомлений).
  • Ошибки: Для UI-запросов обрабатывать состояния loading/empty/error; не допускать runtime-падений при отсутствии пользовательских данных (null-safe доступ к profile/avatar).
  • Безопасность: Действие выхода доступно только авторизованному пользователю; переходы и команды в меню должны проходить через валидные route-константы (routes.*) без хардкода URL.

Metadata

Metadata

Assignees

Labels

enhancementNew feature or requestfeaturesUser scenarios and sliced featuresfrontend
No fields configured for Feature.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions