Files
specs/openspec/changes/archive/2026-08-27-consume-mantine-components/proposal.md
T

29 lines
3.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
## 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` не изменяются. Пользовательское поведение идентично текущему.