- HomePage: replace inline styles with <Heading>, <Text>, <Box> - SearchBar: replace <input> with <TextField>, <ul> with <Surface>, <li> with <Box>+<Text>+<Chip>, hardcoded hex with theme tokens - ESLint no-restricted-imports respected via @mui/material/Box deep import - Logic unchanged, all 111 tests pass
28 lines
1.3 KiB
Markdown
28 lines
1.3 KiB
Markdown
# Pilot Migration — Tasks
|
||
|
||
## 1. HomePage
|
||
|
||
- [x] Заменить h1 на `<Heading level={1} size="display">`
|
||
- [x] Заменить p с text-secondary на `<Text tone="secondary">`
|
||
- [x] Заменить p с #888/#aaa на `<Text tone="muted">`
|
||
- [x] Заменить div-wrapper на `<Box textAlign="center" pt={30}>`
|
||
- [x] Удалить все inline-стили
|
||
|
||
## 2. SearchBar
|
||
|
||
- [x] Заменить `<input>` на `<TextField label="Поиск" hiddenLabel>`
|
||
- [x] Заменить `<ul>` на `<Surface elevation="sm">` с positioning styles
|
||
- [x] Заменить loading text на `<Text tone="muted">`
|
||
- [x] Заменить empty text на `<Text tone="muted">`
|
||
- [x] Заменить `<li>` results на `<Box>` с flex layout
|
||
- [x] Заменить hardcoded hex на theme tokens
|
||
- [x] Заменить JS hover handlers на MUI `sx={{ '&:hover': { bgcolor: 'action.hover' } }}`
|
||
- [x] Заменить тип "Акция"/"Облигация" на `<Chip>`
|
||
|
||
## 3. Verification
|
||
|
||
- [x] `npm run test:frontend` — 23 suites, 111 passed
|
||
- [x] `npm run lint -w apps/frontend` — чист, 0 warnings
|
||
- [x] `npm run build:frontend` — проходит
|
||
- [x] ESLint `no-restricted-imports` не нарушен (использован `@mui/material/Box` deep import)
|