29 lines
3.3 KiB
Markdown
29 lines
3.3 KiB
Markdown
## Why
|
||
|
||
Почти весь UI frontend уже построен на `@mantine/core`. Два места по-прежнему используют собственную ручную реализацию: `AppBreadcrumbs` (собственный `BreadcrumbTrail` с ручными `<nav>`/`span`/сепаратором и классами `breadcrumbs-*` + CSS в `styles.css`) и мобильный `bottom-nav` в `AppShell` (собственный `<nav class="bottom-nav">` + CSS). Это технический долг: кастомный код и стили дублируют возможности поддерживаемых компонентов Mantine. Цель — заменить собственные реализации штатными компонентами Mantine там, где готовый аналог существует, без изменения пользовательского поведения.
|
||
|
||
## What Changes
|
||
|
||
Заменить собственную UI-реализацию хлебных крошек (`AppBreadcrumbs`) на штатный компонент `Mantine Breadcrumbs`. Внешнее поведение не меняется: те же цепочки крошек на тех же защищённых маршрутах, ссылками остаются только предшествующие крошки, текущая страница — текст, сохраняется `aria-label`, адаптивное скрытие промежуточных крошек на узком экране и `data-depth`. Адаптивное скрытие по глубине остаётся на кастомном CSS, так как Mantine `Breadcrumbs` не прячет промежуточные крошки по глубине автоматически.
|
||
|
||
Scope утверждён Change Owner: заменяем только `AppBreadcrumbs`. Мобильная навигация `AppShell` (`bottom-nav`) выходит из scope и остаётся кастомной (wont-fix): готового штатного fixed bottom-nav в Mantine нет, миграция на мобильную навигацию Mantine AppShell не входит в этот change.
|
||
|
||
Non-goals:
|
||
- Не менять маршруты, иерархию крошек, тексты, поведение навигации и API.
|
||
- Не трогать остальной код, уже стоящий на Mantine.
|
||
- Не трогать мобильную навигацию `AppShell` (`bottom-nav`).
|
||
|
||
## Capabilities
|
||
|
||
### New Capabilities
|
||
|
||
_Нет._
|
||
|
||
### Modified Capabilities
|
||
|
||
_Нет._ Заменяемая реализация не меняет внешнее (spec-level) поведение: требование `app-breadcrumb-navigation` уже описывает цепочки, ссылки, текущую крошку-текст и адаптивность. Чистый рефакторинг → `skip_specs: true`.
|
||
|
||
## Impact
|
||
|
||
Затрагивает только `frontend`: `app/ui/AppBreadcrumbs` (+ его тест) и кастомные стили `app/styles.css` для хлебных крошек. Backend API, данные, зависимости и мобильная навигация `AppShell` не изменяются. Пользовательское поведение идентично текущему.
|