# Pilot Migration — Implementation Plan
## Architecture
Миграция слоя представления без изменения логики. HomePage меняет JSX на DS-компоненты. SearchBar заменяет inline-стили на DS-компоненты + MUI `Box` (разрешён layout utility).
## Files
### Modify
- `apps/frontend/src/pages/home/ui/HomePage.tsx` — замена JSX
- `apps/frontend/src/widgets/search-bar/ui/SearchBar.tsx` — замена JSX
### No changes
- `apps/frontend/src/widgets/search-bar/ui/SearchBar.test.tsx` — тесты не меняются (те же тексты)
- `apps/frontend/src/styles.css` — CSS-переменные всё ещё используются broker-страницами
## Step-by-step
### Step 1: Migrate HomePage
```tsx
// До
MoexVibe
Анализ акций и облигаций Московской биржи
Введите название или тикер в строку поиска выше
Данные задерживаются на 15 минут · Бесплатный API MOEX ISS
// После
import { Box } from '@mui/material';
import { Heading, Text } from '@moex-vibe/design-system';
MoexVibeАнализ акций и облигаций Московской биржиВведите название или тикер в строку поиска вышеДанные задерживаются на 15 минут · Бесплатный API MOEX ISS
```
### Step 2: Migrate SearchBar
- `` → ``
- `
` dropdown wrapper → `` (с inline-стилями для absolute positioning)
- `
` loading → `Загрузка...`
- `
` empty → `Ничего не найдено`
- `
` result item → `` + `` + ``
- Hover effect (`onMouseEnter/onMouseLeave`) → MUI `sx={{ '&:hover': { bgcolor: 'action.hover' } }}`
- Hardcoded hex colors → MUI theme tokens (`text.disabled`, `divider`, etc.)
### Step 3: Verify
- `npm run test:frontend` — все тесты проходят
- `npm run lint -w apps/frontend` — lint чист, нет неразрешённых MUI-импортов
- `npm run build:frontend` — сборка проходит