diff --git a/apps/frontend/src/pages/home/ui/HomePage.tsx b/apps/frontend/src/pages/home/ui/HomePage.tsx
index a0f2c52..1977544 100644
--- a/apps/frontend/src/pages/home/ui/HomePage.tsx
+++ b/apps/frontend/src/pages/home/ui/HomePage.tsx
@@ -1,14 +1,15 @@
+import Box from '@mui/material/Box';
+import { Heading, Text } from '@moex-vibe/design-system';
+
export function HomePage() {
return (
-
-
MoexVibe
-
- Анализ акций и облигаций Московской биржи
-
-
Введите название или тикер в строку поиска выше
-
- Данные задерживаются на 15 минут · Бесплатный API MOEX ISS
-
-
+
+
+ MoexVibe
+
+ Анализ акций и облигаций Московской биржи
+ Введите название или тикер в строку поиска выше
+ Данные задерживаются на 15 минут · Бесплатный API MOEX ISS
+
);
}
diff --git a/apps/frontend/src/widgets/search-bar/ui/SearchBar.tsx b/apps/frontend/src/widgets/search-bar/ui/SearchBar.tsx
index 240f04b..f41d370 100644
--- a/apps/frontend/src/widgets/search-bar/ui/SearchBar.tsx
+++ b/apps/frontend/src/widgets/search-bar/ui/SearchBar.tsx
@@ -1,5 +1,7 @@
import { useState, useRef, useEffect } from 'react';
import { useNavigate } from 'react-router-dom';
+import Box from '@mui/material/Box';
+import { Chip, Surface, Text, TextField } from '@moex-vibe/design-system';
import { useSearch } from '@/entities/search';
export function SearchBar() {
@@ -32,82 +34,81 @@ export function SearchBar() {
const showResults = open && debounced.length >= 2;
return (
-
+
);
}
diff --git a/docs/features/pilot-migration/plan.md b/docs/features/pilot-migration/plan.md
new file mode 100644
index 0000000..f53557e
--- /dev/null
+++ b/docs/features/pilot-migration/plan.md
@@ -0,0 +1,60 @@
+# 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` — сборка проходит
diff --git a/docs/features/pilot-migration/spec.md b/docs/features/pilot-migration/spec.md
new file mode 100644
index 0000000..050b42c
--- /dev/null
+++ b/docs/features/pilot-migration/spec.md
@@ -0,0 +1,31 @@
+# Pilot Migration — Design System Adoption
+
+## Status
+
+Approved — утверждена пользователем 2026-06-21.
+
+## Goal
+
+Пилотная миграция существующих страниц на компоненты `@moex-vibe/design-system`. Подтвердить, что API дизайн-системы покрывает реальные сценарии, и зафиксировать gaps для следующей итерации.
+
+## Scope
+
+- `apps/frontend/src/pages/home/ui/HomePage.tsx` — миграция на ``, ``, ``
+- `apps/frontend/src/widgets/search-bar/ui/SearchBar.tsx` — миграция на ``, ``, ``, ``, ``
+
+## Out of scope
+
+- Рефакторинг логики SearchBar (debounce, click outside, keyboard nav, navigate)
+- Миграция других страниц/виджетов
+- Добавление новых компонентов в DS
+- Удаление всего `styles.css` (только orphaned CSS variables после миграции)
+- Изменение поведения компонентов (все acceptance criteria остаются теми же)
+
+## Acceptance Criteria
+
+- [ ] HomePage не содержит inline-стилей; все стили — через DS-компоненты и MUI layout utilities
+- [ ] SearchBar не содержит hardcoded hex-цветов; палитра — через DS tokens
+- [ ] SearchBar states (loading, empty, results) используют соответствующие DS-компоненты
+- [ ] Логика SearchBar не изменена — все тесты проходят
+- [ ] ESLint `no-restricted-imports` не нарушен (только `Box` из MUI напрямую)
+- [ ] `npm run test:frontend && npm run lint -w apps/frontend && npm run build:frontend` проходят
diff --git a/docs/features/pilot-migration/tasks.md b/docs/features/pilot-migration/tasks.md
new file mode 100644
index 0000000..1d40751
--- /dev/null
+++ b/docs/features/pilot-migration/tasks.md
@@ -0,0 +1,27 @@
+# Pilot Migration — Tasks
+
+## 1. HomePage
+
+- [x] Заменить h1 на ``
+- [x] Заменить p с text-secondary на ``
+- [x] Заменить p с #888/#aaa на ``
+- [x] Заменить div-wrapper на ``
+- [x] Удалить все inline-стили
+
+## 2. SearchBar
+
+- [x] Заменить `` на ``
+- [x] Заменить `
` на `` с positioning styles
+- [x] Заменить loading text на ``
+- [x] Заменить empty text на ``
+- [x] Заменить `
` results на `` с flex layout
+- [x] Заменить hardcoded hex на theme tokens
+- [x] Заменить JS hover handlers на MUI `sx={{ '&:hover': { bgcolor: 'action.hover' } }}`
+- [x] Заменить тип "Акция"/"Облигация" на ``
+
+## 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)