25 lines
2.0 KiB
Markdown
25 lines
2.0 KiB
Markdown
# Structure
|
|
|
|
Проект использует FSD-направление импортов: `app -> pages -> features -> entities -> shared`.
|
|
|
|
- `app` - providers и routes; общий визуальный фундамент принадлежит shared/theme.
|
|
- `pages` - страницы маршрутов.
|
|
- `features` - пользовательские сценарии, включая authentication.
|
|
- `entities` - доменные модели и их UI/API.
|
|
- `shared` - переиспользуемый код без доменной логики: API, i18n и UI.
|
|
|
|
Каждый слайс предоставляет наружу только public API через `index.ts`; внутренние файлы соседний слой не импортирует напрямую.
|
|
|
|
Для cross-slice imports используйте alias `@/` и public API, например `@/entities/portfolio`. Vite и TypeScript используют одинаковый alias.
|
|
|
|
`shared/theme/tokens.json` владеет опубликованными токенами и описаниями ролей
|
|
в переносимом формате WealthLedger v1. `theme.ts` напрямую адаптирует доверенный
|
|
локальный JSON в Mantine без runtime-схемы. `shared/theme/index.ts` экспортирует theme,
|
|
designTokens, семантические color roles и CSSVariablesResolver и подключает
|
|
базовые styles. App и Storybook подключают свои MantineProvider к этому public API.
|
|
Внешние системы читают raw JSON напрямую, без frontend barrel и его runtime.
|
|
Неопубликованные defaults остаются у Mantine, локальные domain styles — у владельцев.
|
|
`shared/ui` предоставляет
|
|
StateView и LoadingSkeleton; их каталог не включает route-aware AppShell.
|
|
Подробнее: [дизайн-система](../../docs/development/design-system.md).
|