feat(app): новый визуальный язык, верхняя навигация, портфели, создание счетов и ручные события
Тема и общие виджеты (AssetIcon, ServiceMark, HelpTip, глоссарий), верхняя панель TopNav и вкладки Аналитики вместо NavSidebar, иконки PWA. Экраны: портфели, создание брокерского счёта, ручное событие, правка инструмента, Обзор карточками по скоупам и таблица активов, пересчёт метрик с опросом /metrics/status. design-system.md обновлён.
This commit is contained in:
+22
-7
@@ -17,6 +17,7 @@ import 'features/login/login_page.dart';
|
||||
import 'features/pending/pending_page.dart';
|
||||
import 'features/portfolio/instrument_page.dart';
|
||||
import 'features/portfolio/portfolio_page.dart';
|
||||
import 'features/portfolios/portfolios_page.dart';
|
||||
import 'features/rebalance/rebalance_page.dart';
|
||||
import 'features/rules/rules_page.dart';
|
||||
import 'features/settings/settings_page.dart';
|
||||
@@ -53,14 +54,22 @@ final routerProvider = Provider<GoRouter>((ref) {
|
||||
GoRoute(path: '/portfolio', builder: (_, _) => const PortfolioPage()),
|
||||
GoRoute(
|
||||
path: '/portfolio/instrument/:id',
|
||||
builder: (_, state) =>
|
||||
InstrumentPage(instrumentId: int.parse(state.pathParameters['id']!)),
|
||||
builder: (_, state) => InstrumentPage(
|
||||
instrumentId: int.parse(state.pathParameters['id']!),
|
||||
),
|
||||
),
|
||||
// Аналитика: one navigation destination, four contract routes. The hub is what
|
||||
// the shell points at; each screen below keeps its own top-level path and stays
|
||||
// deep-linkable (see `alsoMatches` in `app_shell.dart`).
|
||||
GoRoute(path: '/analytics', builder: (_, _) => const AnalyticsHubPage()),
|
||||
GoRoute(
|
||||
path: '/analytics',
|
||||
builder: (_, _) => const AnalyticsHubPage(),
|
||||
),
|
||||
GoRoute(path: '/income', builder: (_, _) => const IncomePage()),
|
||||
GoRoute(
|
||||
path: '/portfolios',
|
||||
builder: (_, _) => const PortfoliosPage(),
|
||||
),
|
||||
GoRoute(path: '/rebalance', builder: (_, _) => const RebalancePage()),
|
||||
GoRoute(path: '/goals', builder: (_, _) => const GoalsPage()),
|
||||
GoRoute(path: '/tax', builder: (_, _) => const TaxPage()),
|
||||
@@ -68,8 +77,9 @@ final routerProvider = Provider<GoRouter>((ref) {
|
||||
GoRoute(path: '/imports', builder: (_, _) => const ImportsPage()),
|
||||
GoRoute(
|
||||
path: '/imports/:id',
|
||||
builder: (_, state) =>
|
||||
ImportPreviewPage(importId: int.parse(state.pathParameters['id']!)),
|
||||
builder: (_, state) => ImportPreviewPage(
|
||||
importId: int.parse(state.pathParameters['id']!),
|
||||
),
|
||||
),
|
||||
GoRoute(
|
||||
path: '/instruments/pending',
|
||||
@@ -78,9 +88,14 @@ final routerProvider = Provider<GoRouter>((ref) {
|
||||
GoRoute(path: '/cashflow', builder: (_, _) => const CashflowPage()),
|
||||
GoRoute(
|
||||
path: '/categories',
|
||||
builder: (_, state) => CategoriesPage(initialMonth: state.uri.queryParameters['month']),
|
||||
builder: (_, state) => CategoriesPage(
|
||||
initialMonth: state.uri.queryParameters['month'],
|
||||
),
|
||||
),
|
||||
GoRoute(
|
||||
path: '/transactions',
|
||||
builder: (_, _) => const TransactionsPage(),
|
||||
),
|
||||
GoRoute(path: '/transactions', builder: (_, _) => const TransactionsPage()),
|
||||
GoRoute(path: '/rules', builder: (_, _) => const RulesPage()),
|
||||
GoRoute(
|
||||
path: '/health',
|
||||
|
||||
Reference in New Issue
Block a user