# 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).