refactor(account-operations): split page state views into components
Extract loading/error/loaded state views from the single AccountOperationsPage.view.tsx into dedicated files under components/. Document the "one state per view file" rule as a mandatory review convention in CONVENTIONS.md and UI-PATTERN.md. Co-Authored-By: opencode <opencode@anthropic.com>
This commit is contained in:
+10
-3
@@ -9,6 +9,8 @@
|
||||
- Публичный импорт слайса идёт через его `index.ts`.
|
||||
- Тесты лежат рядом с исходником как `*.test.tsx`.
|
||||
- Зависимости используют exact versions; не добавлять semver ranges.
|
||||
- Главный `*.view.tsx` страницы не содержит несколько state-компонентов:
|
||||
каждый state/section — отдельный `*.view.tsx` в `components/` (см. File roles).
|
||||
- Полный локальный gate: `npm run verify`. Pre-commit запускает staged formatting, OpenAPI check и FSD dependency checks; commit message должен следовать Conventional Commits.
|
||||
|
||||
## React component style
|
||||
@@ -37,6 +39,11 @@ Mandatory review conventions:
|
||||
- `Component.types.ts` - props и локальные типы.
|
||||
- `Component.module.css` - локальные стили.
|
||||
|
||||
Большие view files дробить по ответственности. Если section/state можно
|
||||
самостоятельно назвать, вынести его в соседний presentation component вместо
|
||||
накопления смысловой нагрузки в одном файле.
|
||||
State-компоненты страницы не колоцируются в одном `*.view.tsx`. Каждый
|
||||
top-level state (loading, error, empty, loaded) и каждый именуемый section
|
||||
выносится в отдельный `*.view.tsx` в подпапку `components/`. Имя файла
|
||||
отражает state/section: `AccountOperationsPageLoaded.view.tsx`,
|
||||
`AccountOperationsPageLoading.view.tsx`, `AccountOperationsPageError.view.tsx`.
|
||||
Контейнер (`AccountOperationsPage.tsx`) импортирует их из `./components` и
|
||||
выбирает нужный по `viewModel.state`. Нельзя держать несколько state components
|
||||
внутри одного файла view — это mandatory review convention.
|
||||
|
||||
Reference in New Issue
Block a user