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

3.3 KiB
Raw Blame History

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 не изменяются. Пользовательское поведение идентично текущему.