Hlavní změny po komplexním review Mantine v9 migrace:
**Design system / tokeny**
- Aktivovat dosud nepoužívaný theme/tokens (rename z .css.ts na .ts kvůli ambient *.css declaration)
- Rozšířit vars o radius, focusRing, text.heading, bg.muted, border.subtle/strong, borderShort
- Codemod: nahradit ~60 duplicitních light-dark(#hex,…) literálů za vars tokeny napříč 18 *.css.ts soubory
**A11y**
- Login: name, autoComplete, aria-label na TextInputech (browser autocomplete + screen readers)
- EditButton, Bank refresh: aria-label pro icon-only buttony (Tooltip ho nepřidává automaticky)
- Loading: role=status, aria-live=polite, aria-busy
- SubmitButton: nahradit FontAwesome spinner Mantine Button loading propem + aria-busy
- nav: aria-label "Hlavní navigace"
- Table.Th: scope=col jako theme default
**Color scheme manager**
- Explicitní localStorageColorSchemeManager s key "mantine-color-scheme"
(Mantine v9 default je jiný klíč, takže persistence po reload nefungovala)
**Inline styly (z 66 na 4 legitimní dynamic colors)**
- Nový global/utility.css.ts s reusable utility classes (nowrap, bold, mb0, dimmedText, iconAfterText, …)
- Refactor: Main, Login, Bank, DashboardDay, Heading, ClientAnalysis, Statistics,
Diary, Card, Settings, Applications, Clients, Groups, ErrorBoundary, queryClient,
GroupName, ClientPhone, ClientsList, AppDate, Notification, CourseCircle,
SelectCourse, ColorPicker
**Cleanup**
- Smazat mantine-spotlight.css workaround (webpack sideEffects:true je přímý fix)
- Odstranit Tooltip.postfix prop (8 callsites, propu komponenta ignorovala)
- Odstranit nepoužívaný getDisplayName + zbytečný React import
- CustomButton: vyhodit noop default (Mantine Button funguje s undefined onClick)
- Stale komentář "Bootstrap" ve webpack.config.js
- Opravit rozbité odsazení v package.json (řádky @FortAwesome a chroma-js)
**ESLint**
- Doplnit explicit project + node resolver pro import-resolver-typescript
(webpack ESLint plugin context jinak neumí najít theme/tokens)
Co je zbylé pro samostatný PR (vyšší riziko refactoru):
- Vystěhovat globalStyle(".mantine-…") overrides v FormBase.css.ts a index.css.ts
do theme.components.X.styles
- Sjednotit 8 různých radius hodnot na var(--mantine-radius-{sm,md,lg})
Verifikováno: tsc, ESLint+Prettier, vitest 32/32, runtime na localhost:8000.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
No description provided.