102 lines
5.4 KiB
Markdown
102 lines
5.4 KiB
Markdown
# Дизайн-системный рефакторинг брокерских страниц — Tasks
|
||
|
||
Дата: 2026-06-21
|
||
Связанные документы:
|
||
|
||
- [Spec](spec.md)
|
||
- [Plan](plan.md)
|
||
|
||
## Task 1: BrokerAccountLayout
|
||
|
||
- [x] Заменить `div.broker-account` на `<Box component="div">`
|
||
- [x] Перевести `header` + `h1` на `<Box>` + `<Heading level={1}>`
|
||
- [x] Перевести `nav` на `<Box component="nav">` + `<NavLink>` (Box component={NavLink} с `aria-current="page"`)
|
||
- [x] Перевести `div.broker-account__workspace` на grid `<Box>`
|
||
- [x] Перевести `div.broker-account__content` на `<Box>`
|
||
- [x] Удалить соответствующие CSS-selectors из `styles.css`
|
||
|
||
## Task 2: BrokerAccountOverviewPage + BrokerSummary + BrokerAssetCards
|
||
|
||
- [x] Перевести `BrokerSummary` на `<Box>` + `<Text>`
|
||
- [x] Перевести eyebrow/label на `<Text variant="label" tone="secondary">`
|
||
- [x] Перевести `<strong>` значений на `<Box component="span" sx={{ fontWeight: 700 }}>`
|
||
- [x] Перевести `<ul>` cash на `<Box component="ul">`
|
||
- [x] Перевести `BrokerAssetCards` на `<Box>` + `<Link>` + `<Text>`
|
||
- [x] Перевести `BrokerAccountOverviewPage` container на `<Box component="div">`
|
||
- [x] Перевести `<p role="alert">` на `<Text component="p" tone="negative">`
|
||
- [x] Оставить hero-gradient без изменений (Out of scope)
|
||
|
||
## Task 3: BrokerOverviewSkeleton
|
||
|
||
- [x] Заменить импорт `SkeletonBlock` на DS `<Skeleton>`
|
||
- [x] Перевести контейнеры на `<Box>`
|
||
- [x] Сделать circular skeleton для портфельной карточки
|
||
- [x] Сделать text skeleton для текстовых placeholder'ей
|
||
|
||
## Task 4: BrokerAllocationChart (wrap only)
|
||
|
||
- [x] Перевести `<figure>` на `<Box component="figure">`
|
||
- [x] Перевести `<figcaption>` на `<Box component="figcaption">`
|
||
- [x] Перевести `<p>` пустого состояния на `<Text tone="muted">`
|
||
- [x] Перевести `<ul>` / `<li>` легенды на `<Box component="ul">` + `<Box component="li">`
|
||
- [x] Перевести swatch на `<Box>` с inline-цветом в `sx`
|
||
- [x] Перевести тексты легенды на `<Box component="span">`
|
||
- [x] Перевести negative-список на `<Box component="ul">`
|
||
- [x] Удалить CSS для `.broker-allocation*` в `styles.css`
|
||
|
||
## Task 5: BrokerPositionTable + PositionTicker
|
||
|
||
- [x] Перевести вспомогательные стили на `<Box sx={{...}}>`
|
||
- [x] Перевести `<h2>` на `<Heading level={2}>`
|
||
- [x] Перевести alert-тексты на `<Text tone="negative">`
|
||
- [x] Перевести пагинационные `<button>` на `<Button variant="secondary">`
|
||
- [x] Перевести `loading-overlay` на `<Box>`
|
||
- [x] Перевести `PositionTicker` ссылки на `<Box component="span" sx={{ fontWeight: 700 }}>`
|
||
- [x] Сохранить `loading-spinner` (глобальный класс, пока без замены)
|
||
|
||
## Task 6: TableSkeleton (DS Skeleton)
|
||
|
||
- [x] Убрать импорт `SkeletonBlock`
|
||
- [x] Заменить на `<Skeleton height={12} width={col.width} shape="text" />`
|
||
|
||
## Task 7: BrokerOperationsTable
|
||
|
||
- [x] Перевести вспомогательные стили на `<Box sx={{...}}>`
|
||
- [x] Перевести `<h2>` на `<Heading level={2}>`
|
||
- [x] Перевести `headerAction` container на `<Box>`
|
||
- [x] Перевести пагинационные `<button>` на `<Button variant="secondary">`
|
||
- [x] Перевести alert-тексты на `<Text tone="negative">`
|
||
- [x] Перевести empty-тексты на `<Text tone="muted">`
|
||
- [x] Перевести `<label>` + `<select>` на `<Box component="label">` + `<select>`
|
||
- [x] Оставить `loading-spinner` для overlay (глобальный класс)
|
||
|
||
## Task 8: BrokerPositionsPage + BrokerOperationsPage
|
||
|
||
- [x] Перевести `BrokerPositionsPage` на `<Box component="section">` + `<Heading>` + `<Text>`
|
||
- [x] Перевести `BrokerOperationsPage` на `<Box>` + `<Heading>` + `<Box component="label">` + `<select>`
|
||
- [x] Убедиться, что `role="alert"` сохраняется через `<Text tone="negative">`
|
||
|
||
## Task 9: SkeletonBlock удаление
|
||
|
||
- [x] Удалить `apps/frontend/src/shared/ui/SkeletonBlock.tsx`
|
||
- [x] Удалить экспорт из `apps/frontend/src/shared/ui/index.ts`
|
||
- [x] Проверить grep по `SkeletonBlock` — 0 совпадений
|
||
|
||
## Task 10: Очистка `styles.css`
|
||
|
||
- [x] Удалить блоки `.broker-account__*`
|
||
- [x] Удалить блоки `.broker-overview__*`
|
||
- [x] Удалить блоки `.broker-allocation__*`
|
||
- [x] Удалить блоки `.broker-operations__toolbar*`
|
||
- [x] Удалить CSS-переменные `--broker-overview-*`
|
||
- [x] Оставить `.loading-spinner`, `.skeleton`, `:root` общие переменные
|
||
|
||
## Task 11: Финальная проверка
|
||
|
||
- [x] `npm run test:frontend` — 111 tests PASS
|
||
- [x] `npm run lint -w apps/frontend` — без ошибок
|
||
- [x] `npm run build:frontend` — без TypeScript/Vite ошибок
|
||
- [x] grep по `broker-(account|overview|allocation)` в TSX — 0 совпадений
|
||
- [x] grep по `SkeletonBlock` в TSX — 0 совпадений
|
||
- [x] CSS: 274 → 99 строк
|