From b987fd8e780963dfe1dde0c714232697a52e0475 Mon Sep 17 00:00:00 2001 From: Sergey Krylov Date: Wed, 23 Sep 2026 08:34:58 +0300 Subject: [PATCH] refactor: colocate frontend component files --- .ai/architecture.md | 4 +-- .ai/conventions/storybook.md | 2 +- .ai/conventions/testing.md | 2 +- .ai/conventions/ui.md | 35 +++++++++++++++---- .storybook/dependency-cruiser.cjs | 2 +- .../src/{ => EntryCard}/EntryCard.module.css | 0 .../src/{ => EntryCard}/EntryCard.stories.tsx | 0 .../ui/src/{ => EntryCard}/EntryCard.test.tsx | 0 packages/ui/src/{ => EntryCard}/EntryCard.tsx | 0 .../LoadingSkeleton.stories.tsx | 0 .../{ => LoadingSkeleton}/LoadingSkeleton.tsx | 0 .../src/{ => StateView}/StateView.stories.tsx | 0 .../ui/src/{ => StateView}/StateView.test.tsx | 2 +- packages/ui/src/{ => StateView}/StateView.tsx | 0 packages/ui/src/index.ts | 6 ++-- .../{ => AppRoutes}/AllAccounts.test.tsx | 0 .../routes/{ => AppRoutes}/AppRoutes.test.tsx | 0 src/app/routes/{ => AppRoutes}/AppRoutes.tsx | 6 ++-- .../DocumentTitle.test.tsx | 0 .../{ => DocumentTitle}/DocumentTitle.tsx | 0 src/app/routes/ProtectedLayout.tsx | 2 +- .../RouteErrorBoundary.test.tsx | 0 .../RouteErrorBoundary.tsx | 0 src/app/routes/index.ts | 4 +-- .../AccountBreadcrumbs.tsx | 0 .../AccountScopeSwitch.tsx | 0 .../AppBreadcrumbs.module.css | 0 .../AppBreadcrumbs.test.tsx | 0 .../{ => AppBreadcrumbs}/AppBreadcrumbs.tsx | 0 .../{ => AppBreadcrumbs}/BondBreadcrumbs.tsx | 0 .../{ => AppBreadcrumbs}/BreadcrumbTrail.tsx | 0 .../{ => AppBreadcrumbs}/CardBreadcrumbs.tsx | 0 .../{ => AppBreadcrumbs}/StockBreadcrumbs.tsx | 0 src/app/ui/{ => AppShell}/AppShell.module.css | 0 src/app/ui/{ => AppShell}/AppShell.tsx | 0 src/app/ui/index.ts | 4 +-- src/entities/bank-card/index.ts | 10 +++--- .../BankCardFace.module.css | 0 .../BankCardFace.stories.tsx | 0 .../ui/{ => BankCardFace}/BankCardFace.tsx | 2 +- .../BankCardForm.stories.tsx | 2 +- .../{ => BankCardForm}/BankCardForm.test.tsx | 2 +- .../ui/{ => BankCardForm}/BankCardForm.tsx | 12 +++---- .../{ => BankCardForm}/BankCardForm.view.tsx | 2 +- .../BankOperationIcon.module.css | 0 .../BankOperationIcon.stories.tsx | 0 .../BankOperationIcon.test.tsx | 0 .../BankOperationIcon.tsx | 4 +-- .../{ => BankSummary}/BankSummary.module.css | 0 .../{ => BankSummary}/BankSummary.stories.tsx | 0 .../ui/{ => BankSummary}/BankSummary.view.tsx | 4 +-- .../CategoryManager.test.tsx | 0 .../{ => CategoryManager}/CategoryManager.tsx | 12 +++---- src/entities/brokerage-account/index.ts | 2 +- .../BrokerageAccountList.module.css | 0 .../BrokerageAccountList.stories.tsx | 4 +-- .../BrokerageAccountList.test.tsx | 2 +- .../BrokerageAccountList.tsx | 4 +-- src/entities/brokerage-event/index.ts | 2 +- .../BrokerageEventsPreview.stories.tsx | 2 +- .../BrokerageEventsPreview.tsx | 4 +-- src/features/auth/index.ts | 2 +- .../ui/{ => AuthForm}/AuthForm.module.css | 0 .../auth/ui/{ => AuthForm}/AuthForm.test.tsx | 0 .../auth/ui/{ => AuthForm}/AuthForm.tsx | 2 +- .../AuthPageLayout.module.css | 0 .../{ => AuthPageLayout}/AuthPageLayout.tsx | 0 src/features/auth/ui/LoginForm.tsx | 2 +- src/features/auth/ui/RegisterForm.tsx | 2 +- src/features/tbank-connection/index.ts | 2 +- .../TbankConnectionSection.test.tsx | 0 .../TbankConnectionSection.tsx | 0 .../TbankConnectionSection.view.test.tsx | 0 .../TbankConnectionSection.view.tsx | 0 .../TbankConnectionSection.vm.ts | 2 +- .../TbankConnectionSectionLoaded.tsx | 2 +- src/pages/account-events/index.ts | 2 +- .../AccountEventsPage.filters.test.tsx | 0 .../AccountEventsPage.test.tsx | 0 .../AccountEventsPage.tsx | 0 .../AccountEventsPage.vm.ts | 0 .../AccountEventsPageEmpty.view.tsx | 0 .../AccountEventsPageError.view.tsx | 0 .../AccountEventsPageLoaded.view.tsx | 0 .../AccountEventsPageLoading.view.tsx | 0 src/pages/account-income/index.ts | 2 +- .../AccountIncomePage.module.css | 0 .../AccountIncomePage.test.tsx | 2 +- .../AccountIncomePage.tsx | 0 .../AccountIncomePage.vm.ts | 2 +- .../AccountIncomePageError.view.tsx | 0 .../AccountIncomePageLoaded.view.tsx | 2 +- .../AccountIncomePageLoading.view.tsx | 0 .../components/IncomeComparisons.view.tsx | 0 .../components/IncomePayments.view.tsx | 0 .../IncomePeriodForm.stories.tsx | 2 +- .../IncomePeriodForm.view.tsx | 4 +-- .../components/IncomeSummary.view.tsx | 0 src/pages/account-operations/index.ts | 2 +- .../AccountOperationsPage.test.tsx | 0 .../AccountOperationsPage.tsx | 0 .../AccountOperationsPage.vm.ts | 0 .../AccountOperationsPageError.view.tsx | 0 .../AccountOperationsPageLoaded.view.tsx | 0 .../AccountOperationsPageLoading.view.tsx | 0 src/pages/account/index.ts | 2 +- .../{ => AccountPage}/AccountPage.module.css | 0 .../ui/{ => AccountPage}/AccountPage.test.tsx | 2 +- .../ui/{ => AccountPage}/AccountPage.tsx | 2 +- .../{ => AccountPage}/AccountPage.vm.test.tsx | 0 .../ui/{ => AccountPage}/AccountPage.vm.ts | 0 .../components/AccountHeading.view.tsx | 0 .../components/AccountPageEmpty.view.tsx | 4 +-- .../components/AccountPageError.view.tsx | 0 .../components/AccountPageLoaded.view.tsx | 6 ++-- .../AccountPageLoading.stories.tsx | 0 .../AccountPageLoading.view.tsx | 2 +- .../CurrencyCards}/CurrencyCards.test.tsx | 0 .../CurrencyCards}/CurrencyCards.view.tsx | 2 +- .../components/IncomeSummary.view.tsx | 0 .../PortfolioRefreshState.stories.tsx | 2 +- .../PortfolioRefreshState.view.tsx | 0 .../PortfolioStructure.module.css | 0 .../PortfolioStructure.stories.tsx | 0 .../PortfolioStructure.test.tsx | 0 .../PortfolioStructure.tsx | 0 .../PortfolioStructure.view.tsx | 0 .../PositionCard}/PositionCard.stories.tsx | 2 +- .../PositionCard}/PositionCard.view.tsx | 6 ++-- .../components/PositionGroupCard.view.tsx | 0 .../components/PositionLogo.view.tsx | 0 .../components/PositionSection.view.tsx | 2 +- .../components/RecentOperations.view.tsx | 0 .../position-groups.test.tsx | 0 src/pages/accounts/index.ts | 2 +- .../{ => AccountsPage}/AccountsPage.test.tsx | 0 .../ui/{ => AccountsPage}/AccountsPage.tsx | 0 .../ui/{ => AccountsPage}/AccountsPage.vm.ts | 0 .../components/AccountsPageEmpty.view.tsx | 0 .../components/AccountsPageError.view.tsx | 0 .../components/AccountsPageLoaded.view.tsx | 0 .../components/AccountsPageLoading.view.tsx | 0 .../components/AccountsRefreshState.view.tsx | 0 src/pages/bond/index.ts | 2 +- .../ui/{ => BondPage}/BondPage.module.css | 0 .../bond/ui/{ => BondPage}/BondPage.test.tsx | 0 src/pages/bond/ui/{ => BondPage}/BondPage.tsx | 0 .../bond/ui/{ => BondPage}/BondPage.view.tsx | 0 .../bond/ui/{ => BondPage}/BondPage.vm.ts | 0 src/pages/bonds/index.ts | 2 +- .../ui/{ => BondsPage}/BondsPage.module.css | 0 .../ui/{ => BondsPage}/BondsPage.test.tsx | 0 .../bonds/ui/{ => BondsPage}/BondsPage.tsx | 0 .../ui/{ => BondsPage}/BondsPage.view.tsx | 0 .../bonds/ui/{ => BondsPage}/BondsPage.vm.ts | 0 src/pages/card/index.ts | 2 +- .../ui/{ => CardPage}/CardPage.module.css | 0 .../card/ui/{ => CardPage}/CardPage.test.tsx | 0 src/pages/card/ui/{ => CardPage}/CardPage.tsx | 4 +-- .../card/ui/{ => CardPage}/CardPage.view.tsx | 0 .../card/ui/{ => CardPage}/CardPage.vm.ts | 0 .../DeleteOperation.test.tsx | 0 .../{ => DeleteOperation}/DeleteOperation.tsx | 0 .../OperationForm.module.css | 0 .../OperationForm.stories.tsx | 0 .../OperationForm.test.tsx | 0 .../ui/{ => OperationForm}/OperationForm.tsx | 0 .../OperationForm.types.ts | 0 .../OperationForm.view.tsx | 0 .../{ => OperationForm}/OperationForm.vm.ts | 0 src/pages/cards/index.ts | 2 +- .../ui/{ => CardsPage}/CardsPage.module.css | 0 .../ui/{ => CardsPage}/CardsPage.test.tsx | 0 .../cards/ui/{ => CardsPage}/CardsPage.tsx | 0 .../ui/{ => CardsPage}/CardsPage.view.tsx | 0 .../cards/ui/{ => CardsPage}/CardsPage.vm.ts | 0 src/pages/stock/index.ts | 2 +- .../ui/{ => StockPage}/StockPage.module.css | 0 .../ui/{ => StockPage}/StockPage.test.tsx | 0 .../stock/ui/{ => StockPage}/StockPage.tsx | 0 .../ui/{ => StockPage}/StockPage.view.tsx | 0 .../stock/ui/{ => StockPage}/StockPage.vm.ts | 0 .../components/StockEvents.view.tsx | 0 src/pages/stocks/index.ts | 2 +- .../ui/{ => StocksPage}/StocksPage.module.css | 0 .../ui/{ => StocksPage}/StocksPage.test.tsx | 0 .../stocks/ui/{ => StocksPage}/StocksPage.tsx | 0 .../ui/{ => StocksPage}/StocksPage.view.tsx | 0 .../ui/{ => StocksPage}/StocksPage.vm.ts | 0 src/test/storybook.test.tsx | 18 +++++----- 190 files changed, 131 insertions(+), 108 deletions(-) rename packages/ui/src/{ => EntryCard}/EntryCard.module.css (100%) rename packages/ui/src/{ => EntryCard}/EntryCard.stories.tsx (100%) rename packages/ui/src/{ => EntryCard}/EntryCard.test.tsx (100%) rename packages/ui/src/{ => EntryCard}/EntryCard.tsx (100%) rename packages/ui/src/{ => LoadingSkeleton}/LoadingSkeleton.stories.tsx (100%) rename packages/ui/src/{ => LoadingSkeleton}/LoadingSkeleton.tsx (100%) rename packages/ui/src/{ => StateView}/StateView.stories.tsx (100%) rename packages/ui/src/{ => StateView}/StateView.test.tsx (93%) rename packages/ui/src/{ => StateView}/StateView.tsx (100%) rename src/app/routes/{ => AppRoutes}/AllAccounts.test.tsx (100%) rename src/app/routes/{ => AppRoutes}/AppRoutes.test.tsx (100%) rename src/app/routes/{ => AppRoutes}/AppRoutes.tsx (97%) rename src/app/routes/{ => DocumentTitle}/DocumentTitle.test.tsx (100%) rename src/app/routes/{ => DocumentTitle}/DocumentTitle.tsx (100%) rename src/app/routes/{ => RouteErrorBoundary}/RouteErrorBoundary.test.tsx (100%) rename src/app/routes/{ => RouteErrorBoundary}/RouteErrorBoundary.tsx (100%) rename src/app/ui/{ => AppBreadcrumbs}/AccountBreadcrumbs.tsx (100%) rename src/app/ui/{ => AppBreadcrumbs}/AccountScopeSwitch.tsx (100%) rename src/app/ui/{ => AppBreadcrumbs}/AppBreadcrumbs.module.css (100%) rename src/app/ui/{ => AppBreadcrumbs}/AppBreadcrumbs.test.tsx (100%) rename src/app/ui/{ => AppBreadcrumbs}/AppBreadcrumbs.tsx (100%) rename src/app/ui/{ => AppBreadcrumbs}/BondBreadcrumbs.tsx (100%) rename src/app/ui/{ => AppBreadcrumbs}/BreadcrumbTrail.tsx (100%) rename src/app/ui/{ => AppBreadcrumbs}/CardBreadcrumbs.tsx (100%) rename src/app/ui/{ => AppBreadcrumbs}/StockBreadcrumbs.tsx (100%) rename src/app/ui/{ => AppShell}/AppShell.module.css (100%) rename src/app/ui/{ => AppShell}/AppShell.tsx (100%) rename src/entities/bank-card/ui/{ => BankCardFace}/BankCardFace.module.css (100%) rename src/entities/bank-card/ui/{ => BankCardFace}/BankCardFace.stories.tsx (100%) rename src/entities/bank-card/ui/{ => BankCardFace}/BankCardFace.tsx (97%) rename src/entities/bank-card/ui/{ => BankCardForm}/BankCardForm.stories.tsx (95%) rename src/entities/bank-card/ui/{ => BankCardForm}/BankCardForm.test.tsx (99%) rename src/entities/bank-card/ui/{ => BankCardForm}/BankCardForm.tsx (93%) rename src/entities/bank-card/ui/{ => BankCardForm}/BankCardForm.view.tsx (98%) rename src/entities/bank-card/ui/{ => BankOperationIcon}/BankOperationIcon.module.css (100%) rename src/entities/bank-card/ui/{ => BankOperationIcon}/BankOperationIcon.stories.tsx (100%) rename src/entities/bank-card/ui/{ => BankOperationIcon}/BankOperationIcon.test.tsx (100%) rename src/entities/bank-card/ui/{ => BankOperationIcon}/BankOperationIcon.tsx (87%) rename src/entities/bank-card/ui/{ => BankSummary}/BankSummary.module.css (100%) rename src/entities/bank-card/ui/{ => BankSummary}/BankSummary.stories.tsx (100%) rename src/entities/bank-card/ui/{ => BankSummary}/BankSummary.view.tsx (94%) rename src/entities/bank-card/ui/{ => CategoryManager}/CategoryManager.test.tsx (100%) rename src/entities/bank-card/ui/{ => CategoryManager}/CategoryManager.tsx (94%) rename src/entities/brokerage-account/ui/{ => BrokerageAccountList}/BrokerageAccountList.module.css (100%) rename src/entities/brokerage-account/ui/{ => BrokerageAccountList}/BrokerageAccountList.stories.tsx (97%) rename src/entities/brokerage-account/ui/{ => BrokerageAccountList}/BrokerageAccountList.test.tsx (97%) rename src/entities/brokerage-account/ui/{ => BrokerageAccountList}/BrokerageAccountList.tsx (96%) rename src/entities/brokerage-event/ui/{ => BrokerageEventsPreview}/BrokerageEventsPreview.stories.tsx (98%) rename src/entities/brokerage-event/ui/{ => BrokerageEventsPreview}/BrokerageEventsPreview.tsx (92%) rename src/features/auth/ui/{ => AuthForm}/AuthForm.module.css (100%) rename src/features/auth/ui/{ => AuthForm}/AuthForm.test.tsx (100%) rename src/features/auth/ui/{ => AuthForm}/AuthForm.tsx (98%) rename src/features/auth/ui/{ => AuthPageLayout}/AuthPageLayout.module.css (100%) rename src/features/auth/ui/{ => AuthPageLayout}/AuthPageLayout.tsx (100%) rename src/features/tbank-connection/ui/{ => TbankConnectionSection}/TbankConnectionSection.test.tsx (100%) rename src/features/tbank-connection/ui/{ => TbankConnectionSection}/TbankConnectionSection.tsx (100%) rename src/features/tbank-connection/ui/{ => TbankConnectionSection}/TbankConnectionSection.view.test.tsx (100%) rename src/features/tbank-connection/ui/{ => TbankConnectionSection}/TbankConnectionSection.view.tsx (100%) rename src/features/tbank-connection/ui/{ => TbankConnectionSection}/TbankConnectionSection.vm.ts (84%) rename src/features/tbank-connection/ui/{ => TbankConnectionSection}/TbankConnectionSectionLoaded.tsx (98%) rename src/pages/account-events/ui/{ => AccountEventsPage}/AccountEventsPage.filters.test.tsx (100%) rename src/pages/account-events/ui/{ => AccountEventsPage}/AccountEventsPage.test.tsx (100%) rename src/pages/account-events/ui/{ => AccountEventsPage}/AccountEventsPage.tsx (100%) rename src/pages/account-events/ui/{ => AccountEventsPage}/AccountEventsPage.vm.ts (100%) rename src/pages/account-events/ui/{ => AccountEventsPage}/components/AccountEventsPageEmpty.view.tsx (100%) rename src/pages/account-events/ui/{ => AccountEventsPage}/components/AccountEventsPageError.view.tsx (100%) rename src/pages/account-events/ui/{ => AccountEventsPage}/components/AccountEventsPageLoaded.view.tsx (100%) rename src/pages/account-events/ui/{ => AccountEventsPage}/components/AccountEventsPageLoading.view.tsx (100%) rename src/pages/account-income/ui/{ => AccountIncomePage}/AccountIncomePage.module.css (100%) rename src/pages/account-income/ui/{ => AccountIncomePage}/AccountIncomePage.test.tsx (99%) rename src/pages/account-income/ui/{ => AccountIncomePage}/AccountIncomePage.tsx (100%) rename src/pages/account-income/ui/{ => AccountIncomePage}/AccountIncomePage.vm.ts (99%) rename src/pages/account-income/ui/{ => AccountIncomePage}/components/AccountIncomePageError.view.tsx (100%) rename src/pages/account-income/ui/{ => AccountIncomePage}/components/AccountIncomePageLoaded.view.tsx (96%) rename src/pages/account-income/ui/{ => AccountIncomePage}/components/AccountIncomePageLoading.view.tsx (100%) rename src/pages/account-income/ui/{ => AccountIncomePage}/components/IncomeComparisons.view.tsx (100%) rename src/pages/account-income/ui/{ => AccountIncomePage}/components/IncomePayments.view.tsx (100%) rename src/pages/account-income/ui/{components => AccountIncomePage/components/IncomePeriodForm}/IncomePeriodForm.stories.tsx (96%) rename src/pages/account-income/ui/{components => AccountIncomePage/components/IncomePeriodForm}/IncomePeriodForm.view.tsx (96%) rename src/pages/account-income/ui/{ => AccountIncomePage}/components/IncomeSummary.view.tsx (100%) rename src/pages/account-operations/ui/{ => AccountOperationsPage}/AccountOperationsPage.test.tsx (100%) rename src/pages/account-operations/ui/{ => AccountOperationsPage}/AccountOperationsPage.tsx (100%) rename src/pages/account-operations/ui/{ => AccountOperationsPage}/AccountOperationsPage.vm.ts (100%) rename src/pages/account-operations/ui/{ => AccountOperationsPage}/components/AccountOperationsPageError.view.tsx (100%) rename src/pages/account-operations/ui/{ => AccountOperationsPage}/components/AccountOperationsPageLoaded.view.tsx (100%) rename src/pages/account-operations/ui/{ => AccountOperationsPage}/components/AccountOperationsPageLoading.view.tsx (100%) rename src/pages/account/ui/{ => AccountPage}/AccountPage.module.css (100%) rename src/pages/account/ui/{ => AccountPage}/AccountPage.test.tsx (99%) rename src/pages/account/ui/{ => AccountPage}/AccountPage.tsx (98%) rename src/pages/account/ui/{ => AccountPage}/AccountPage.vm.test.tsx (100%) rename src/pages/account/ui/{ => AccountPage}/AccountPage.vm.ts (100%) rename src/pages/account/ui/{ => AccountPage}/components/AccountHeading.view.tsx (100%) rename src/pages/account/ui/{ => AccountPage}/components/AccountPageEmpty.view.tsx (91%) rename src/pages/account/ui/{ => AccountPage}/components/AccountPageError.view.tsx (100%) rename src/pages/account/ui/{ => AccountPage}/components/AccountPageLoaded.view.tsx (94%) rename src/pages/account/ui/{components => AccountPage/components/AccountPageLoading}/AccountPageLoading.stories.tsx (100%) rename src/pages/account/ui/{components => AccountPage/components/AccountPageLoading}/AccountPageLoading.view.tsx (94%) rename src/pages/account/ui/{components => AccountPage/components/CurrencyCards}/CurrencyCards.test.tsx (100%) rename src/pages/account/ui/{components => AccountPage/components/CurrencyCards}/CurrencyCards.view.tsx (97%) rename src/pages/account/ui/{ => AccountPage}/components/IncomeSummary.view.tsx (100%) rename src/pages/account/ui/{components => AccountPage/components/PortfolioRefreshState}/PortfolioRefreshState.stories.tsx (96%) rename src/pages/account/ui/{components => AccountPage/components/PortfolioRefreshState}/PortfolioRefreshState.view.tsx (100%) rename src/pages/account/ui/{components => AccountPage/components/PortfolioStructure}/PortfolioStructure.module.css (100%) rename src/pages/account/ui/{components => AccountPage/components/PortfolioStructure}/PortfolioStructure.stories.tsx (100%) rename src/pages/account/ui/{components => AccountPage/components/PortfolioStructure}/PortfolioStructure.test.tsx (100%) rename src/pages/account/ui/{components => AccountPage/components/PortfolioStructure}/PortfolioStructure.tsx (100%) rename src/pages/account/ui/{components => AccountPage/components/PortfolioStructure}/PortfolioStructure.view.tsx (100%) rename src/pages/account/ui/{components => AccountPage/components/PositionCard}/PositionCard.stories.tsx (98%) rename src/pages/account/ui/{components => AccountPage/components/PositionCard}/PositionCard.view.tsx (96%) rename src/pages/account/ui/{ => AccountPage}/components/PositionGroupCard.view.tsx (100%) rename src/pages/account/ui/{ => AccountPage}/components/PositionLogo.view.tsx (100%) rename src/pages/account/ui/{ => AccountPage}/components/PositionSection.view.tsx (92%) rename src/pages/account/ui/{ => AccountPage}/components/RecentOperations.view.tsx (100%) rename src/pages/account/ui/{ => AccountPage}/position-groups.test.tsx (100%) rename src/pages/accounts/ui/{ => AccountsPage}/AccountsPage.test.tsx (100%) rename src/pages/accounts/ui/{ => AccountsPage}/AccountsPage.tsx (100%) rename src/pages/accounts/ui/{ => AccountsPage}/AccountsPage.vm.ts (100%) rename src/pages/accounts/ui/{ => AccountsPage}/components/AccountsPageEmpty.view.tsx (100%) rename src/pages/accounts/ui/{ => AccountsPage}/components/AccountsPageError.view.tsx (100%) rename src/pages/accounts/ui/{ => AccountsPage}/components/AccountsPageLoaded.view.tsx (100%) rename src/pages/accounts/ui/{ => AccountsPage}/components/AccountsPageLoading.view.tsx (100%) rename src/pages/accounts/ui/{ => AccountsPage}/components/AccountsRefreshState.view.tsx (100%) rename src/pages/bond/ui/{ => BondPage}/BondPage.module.css (100%) rename src/pages/bond/ui/{ => BondPage}/BondPage.test.tsx (100%) rename src/pages/bond/ui/{ => BondPage}/BondPage.tsx (100%) rename src/pages/bond/ui/{ => BondPage}/BondPage.view.tsx (100%) rename src/pages/bond/ui/{ => BondPage}/BondPage.vm.ts (100%) rename src/pages/bonds/ui/{ => BondsPage}/BondsPage.module.css (100%) rename src/pages/bonds/ui/{ => BondsPage}/BondsPage.test.tsx (100%) rename src/pages/bonds/ui/{ => BondsPage}/BondsPage.tsx (100%) rename src/pages/bonds/ui/{ => BondsPage}/BondsPage.view.tsx (100%) rename src/pages/bonds/ui/{ => BondsPage}/BondsPage.vm.ts (100%) rename src/pages/card/ui/{ => CardPage}/CardPage.module.css (100%) rename src/pages/card/ui/{ => CardPage}/CardPage.test.tsx (100%) rename src/pages/card/ui/{ => CardPage}/CardPage.tsx (86%) rename src/pages/card/ui/{ => CardPage}/CardPage.view.tsx (100%) rename src/pages/card/ui/{ => CardPage}/CardPage.vm.ts (100%) rename src/pages/card/ui/{ => DeleteOperation}/DeleteOperation.test.tsx (100%) rename src/pages/card/ui/{ => DeleteOperation}/DeleteOperation.tsx (100%) rename src/pages/card/ui/{ => OperationForm}/OperationForm.module.css (100%) rename src/pages/card/ui/{ => OperationForm}/OperationForm.stories.tsx (100%) rename src/pages/card/ui/{ => OperationForm}/OperationForm.test.tsx (100%) rename src/pages/card/ui/{ => OperationForm}/OperationForm.tsx (100%) rename src/pages/card/ui/{ => OperationForm}/OperationForm.types.ts (100%) rename src/pages/card/ui/{ => OperationForm}/OperationForm.view.tsx (100%) rename src/pages/card/ui/{ => OperationForm}/OperationForm.vm.ts (100%) rename src/pages/cards/ui/{ => CardsPage}/CardsPage.module.css (100%) rename src/pages/cards/ui/{ => CardsPage}/CardsPage.test.tsx (100%) rename src/pages/cards/ui/{ => CardsPage}/CardsPage.tsx (100%) rename src/pages/cards/ui/{ => CardsPage}/CardsPage.view.tsx (100%) rename src/pages/cards/ui/{ => CardsPage}/CardsPage.vm.ts (100%) rename src/pages/stock/ui/{ => StockPage}/StockPage.module.css (100%) rename src/pages/stock/ui/{ => StockPage}/StockPage.test.tsx (100%) rename src/pages/stock/ui/{ => StockPage}/StockPage.tsx (100%) rename src/pages/stock/ui/{ => StockPage}/StockPage.view.tsx (100%) rename src/pages/stock/ui/{ => StockPage}/StockPage.vm.ts (100%) rename src/pages/stock/ui/{ => StockPage}/components/StockEvents.view.tsx (100%) rename src/pages/stocks/ui/{ => StocksPage}/StocksPage.module.css (100%) rename src/pages/stocks/ui/{ => StocksPage}/StocksPage.test.tsx (100%) rename src/pages/stocks/ui/{ => StocksPage}/StocksPage.tsx (100%) rename src/pages/stocks/ui/{ => StocksPage}/StocksPage.view.tsx (100%) rename src/pages/stocks/ui/{ => StocksPage}/StocksPage.vm.ts (100%) diff --git a/.ai/architecture.md b/.ai/architecture.md index be5a6cd..592142c 100644 --- a/.ai/architecture.md +++ b/.ai/architecture.md @@ -76,8 +76,8 @@ Add/Edit/Delete; restore/category SVG остаются локальными. ## Примеры -- Общая busy-область: существующий [LoadingSkeleton](../packages/ui/src/LoadingSkeleton.tsx), а не domain widget в shared. -- Account-income state views: [страница](../src/pages/account-income/ui/AccountIncomePage.tsx) и её flat `components/*.view.tsx`; новый page-local filter остаётся здесь. +- Общая busy-область: существующий [LoadingSkeleton](../packages/ui/src/LoadingSkeleton/LoadingSkeleton.tsx), а не domain widget в shared. +- Account-income state views: [страница](../src/pages/account-income/ui/AccountIncomePage/AccountIncomePage.tsx) и её `components/`; новый page-local filter остаётся здесь. Комплекты файлов группируются по [UI convention](conventions/ui.md#размещение-файлов-компонента). - Portfolio query: [entity public API](../src/entities/portfolio/index.ts); новая UI-сводка с бизнес-смыслом не становится shared только из-за нескольких экранов. ## Проверка diff --git a/.ai/conventions/storybook.md b/.ai/conventions/storybook.md index 1871394..519437f 100644 --- a/.ai/conventions/storybook.md +++ b/.ai/conventions/storybook.md @@ -26,7 +26,7 @@ Stories не достигают application API, auth, VM и query providers д контракт: keyboard activation, доступность действия, local callback. Не повторяй RTL suite и не тестируй внутренности Mantine. Существующий [Button](../../src/shared/ui/Button.stories.tsx) показывает themed control -без production wrapper; [LoadingSkeleton](../../packages/ui/src/LoadingSkeleton.stories.tsx) +без production wrapper; [LoadingSkeleton](../../packages/ui/src/LoadingSkeleton/LoadingSkeleton.stories.tsx) — значимые busy states. `npm run typecheck`, `npm run deps:storybook`, `npm run build:catalog` проверяют diff --git a/.ai/conventions/testing.md b/.ai/conventions/testing.md index 740656a..ab0b1af 100644 --- a/.ai/conventions/testing.md +++ b/.ai/conventions/testing.md @@ -45,7 +45,7 @@ Finance: loading/error/empty/loaded, cached snapshot при refetch failure, ret отсутствие старых данных после session/connection switch. ErrorBoundary: test-only throwing route, безопасная ссылка и reset после navigation. -Примеры: [AuthForm test](../../src/features/auth/ui/AuthForm.test.tsx), +Примеры: [AuthForm test](../../src/features/auth/ui/AuthForm/AuthForm.test.tsx), [client test](../../src/shared/api/client.test.ts), [usePortfolio test](../../src/entities/portfolio/api/usePortfolio.test.tsx). Не копируй fixtures/сценарии целиком, если задача затрагивает один исход. diff --git a/.ai/conventions/ui.md b/.ai/conventions/ui.md index a741cce..c1ead96 100644 --- a/.ai/conventions/ui.md +++ b/.ai/conventions/ui.md @@ -12,7 +12,7 @@ Mantine component и общую тему. Для выпадающего выбо Семантический HTML для структуры страницы остаётся уместным. Icons ищи у существующего owner (например, -[BankOperationIcon](../../src/entities/bank-card/ui/BankOperationIcon.tsx)); +[BankOperationIcon](../../src/entities/bank-card/ui/BankOperationIcon/BankOperationIcon.tsx)); статичные Add/Edit/Delete доступны в `@wealthledger/icons`. Их SVG декоративны по умолчанию; имя action принадлежит кнопке. Standalone meaningful icon получает `aria-hidden={false}`, `role="img"` и доступное имя. Category/kind mappings @@ -56,11 +56,34 @@ retry callbacks, domain grouping и derived presentation data. View получа image fallback) и formatter одного переданного значения. Группировка/доли коллекции готовятся в VM. Перенос fetch во view ради меньшего container нарушает границу. -Отдельный state/section с самостоятельной responsibility выноси в flat -`components/*.view.tsx`. Небольшой tightly-coupled renderer оставляй рядом. -Не создавай folder/barrel/test/CSS для каждого view и не дроби по line count. -Пример: [AccountIncomePage](../../src/pages/account-income/ui/AccountIncomePage.tsx) -и [его VM](../../src/pages/account-income/ui/AccountIncomePage.vm.ts). +Отдельный state/section с самостоятельной responsibility выноси в +`components/` своего component. Небольшой tightly-coupled renderer оставляй +рядом; размер файла сам по себе не требует разделения. +Пример: [AccountIncomePage](../../src/pages/account-income/ui/AccountIncomePage/AccountIncomePage.tsx) +и [его VM](../../src/pages/account-income/ui/AccountIncomePage/AccountIncomePage.vm.ts). + +## Размещение файлов компонента + +Правило действует в `src` и `packages`: компонент с сопутствующими файлами +(view, VM, types, CSS, tests, stories) размещай в папке `Component/`. +Сохраняй полные имена файлов: `Component.tsx`, `Component.view.tsx`, +`Component.test.tsx`. Создавай только нужные файлы; одиночный компонент +оставляй непосредственно в `ui`, `components` или source-каталоге пакета. + +Внутренние части принадлежат папке родителя; для набора state/section views +используй её `components/`. Внутри него действует то же правило: отдельная +папка объединяет комплект файлов, одиночный view остаётся файлом. +Стили и хуки нескольких соседних компонентов остаются у ближайшего общего +владельца; не копируй их и не прячь внутрь одного потребителя. + +Папка компонента не создаёт новую FSD-границу. Публичные exports остаются в +существующем `index.ts` slice/segment или entry пакета; внутри используй +прямые относительные imports без дополнительных barrels на каждый компонент. +При переносе обновляй imports, ссылки документации и проверки, зависящие от пути. + +Пример: [BankCardForm](../../src/entities/bank-card/ui/BankCardForm/BankCardForm.tsx) +лежит рядом со своим view, тестом и story; общий `BankForms.module.css` +остаётся в `bank-card/ui`. ## Формы diff --git a/.storybook/dependency-cruiser.cjs b/.storybook/dependency-cruiser.cjs index 4e93d62..a10e1d6 100644 --- a/.storybook/dependency-cruiser.cjs +++ b/.storybook/dependency-cruiser.cjs @@ -9,7 +9,7 @@ module.exports = { severity: "error", from: { path: "\\.stories\\.tsx$|^\\.storybook/preview\\.tsx$" }, to: { - path: "^src/(shared/api|features/auth|app/routes|app/ui)/|^src/(entities|features)/[^/]+/api/|\\.vm\\.ts$|^src/pages/[^/]+/ui/[^/]+Page\\.tsx$|node_modules/(@tanstack/react-query|openapi-fetch|openapi-react-query)/", + path: "^src/(shared/api|features/auth|app/routes|app/ui)/|^src/(entities|features)/[^/]+/api/|\\.vm\\.ts$|^src/pages/[^/]+/ui/.*Page\\.tsx$|node_modules/(@tanstack/react-query|openapi-fetch|openapi-react-query)/", reachable: true, }, }, diff --git a/packages/ui/src/EntryCard.module.css b/packages/ui/src/EntryCard/EntryCard.module.css similarity index 100% rename from packages/ui/src/EntryCard.module.css rename to packages/ui/src/EntryCard/EntryCard.module.css diff --git a/packages/ui/src/EntryCard.stories.tsx b/packages/ui/src/EntryCard/EntryCard.stories.tsx similarity index 100% rename from packages/ui/src/EntryCard.stories.tsx rename to packages/ui/src/EntryCard/EntryCard.stories.tsx diff --git a/packages/ui/src/EntryCard.test.tsx b/packages/ui/src/EntryCard/EntryCard.test.tsx similarity index 100% rename from packages/ui/src/EntryCard.test.tsx rename to packages/ui/src/EntryCard/EntryCard.test.tsx diff --git a/packages/ui/src/EntryCard.tsx b/packages/ui/src/EntryCard/EntryCard.tsx similarity index 100% rename from packages/ui/src/EntryCard.tsx rename to packages/ui/src/EntryCard/EntryCard.tsx diff --git a/packages/ui/src/LoadingSkeleton.stories.tsx b/packages/ui/src/LoadingSkeleton/LoadingSkeleton.stories.tsx similarity index 100% rename from packages/ui/src/LoadingSkeleton.stories.tsx rename to packages/ui/src/LoadingSkeleton/LoadingSkeleton.stories.tsx diff --git a/packages/ui/src/LoadingSkeleton.tsx b/packages/ui/src/LoadingSkeleton/LoadingSkeleton.tsx similarity index 100% rename from packages/ui/src/LoadingSkeleton.tsx rename to packages/ui/src/LoadingSkeleton/LoadingSkeleton.tsx diff --git a/packages/ui/src/StateView.stories.tsx b/packages/ui/src/StateView/StateView.stories.tsx similarity index 100% rename from packages/ui/src/StateView.stories.tsx rename to packages/ui/src/StateView/StateView.stories.tsx diff --git a/packages/ui/src/StateView.test.tsx b/packages/ui/src/StateView/StateView.test.tsx similarity index 93% rename from packages/ui/src/StateView.test.tsx rename to packages/ui/src/StateView/StateView.test.tsx index 37f34a0..352e5c0 100644 --- a/packages/ui/src/StateView.test.tsx +++ b/packages/ui/src/StateView/StateView.test.tsx @@ -1,7 +1,7 @@ import { MantineProvider } from "@mantine/core"; import { render, screen } from "@testing-library/react"; import { describe, expect, it } from "vitest"; -import { LoadingSkeleton } from "./LoadingSkeleton"; +import { LoadingSkeleton } from "../LoadingSkeleton/LoadingSkeleton"; import { StateView } from "./StateView"; describe("StateView", () => { diff --git a/packages/ui/src/StateView.tsx b/packages/ui/src/StateView/StateView.tsx similarity index 100% rename from packages/ui/src/StateView.tsx rename to packages/ui/src/StateView/StateView.tsx diff --git a/packages/ui/src/index.ts b/packages/ui/src/index.ts index cb0030f..6d6e67d 100644 --- a/packages/ui/src/index.ts +++ b/packages/ui/src/index.ts @@ -1,3 +1,3 @@ -export { EntryCard } from "./EntryCard"; -export { LoadingSkeleton } from "./LoadingSkeleton"; -export { StateView } from "./StateView"; +export { EntryCard } from "./EntryCard/EntryCard"; +export { LoadingSkeleton } from "./LoadingSkeleton/LoadingSkeleton"; +export { StateView } from "./StateView/StateView"; diff --git a/src/app/routes/AllAccounts.test.tsx b/src/app/routes/AppRoutes/AllAccounts.test.tsx similarity index 100% rename from src/app/routes/AllAccounts.test.tsx rename to src/app/routes/AppRoutes/AllAccounts.test.tsx diff --git a/src/app/routes/AppRoutes.test.tsx b/src/app/routes/AppRoutes/AppRoutes.test.tsx similarity index 100% rename from src/app/routes/AppRoutes.test.tsx rename to src/app/routes/AppRoutes/AppRoutes.test.tsx diff --git a/src/app/routes/AppRoutes.tsx b/src/app/routes/AppRoutes/AppRoutes.tsx similarity index 97% rename from src/app/routes/AppRoutes.tsx rename to src/app/routes/AppRoutes/AppRoutes.tsx index a6c5bc9..2ebd2be 100644 --- a/src/app/routes/AppRoutes.tsx +++ b/src/app/routes/AppRoutes/AppRoutes.tsx @@ -1,8 +1,8 @@ import type { FC } from "react"; import { lazy } from "react"; import { Navigate, Route, Routes } from "react-router"; -import { LazyPage } from "./RouteFallback"; -import { Protected, Public } from "./RouteGuards"; +import { LazyPage } from "../RouteFallback"; +import { Protected, Public } from "../RouteGuards"; const CardPage = lazy(async () => { const { CardPage } = await import("@/pages/card"); @@ -65,7 +65,7 @@ const SettingsPage = lazy(async () => { return { default: SettingsPage }; }); const ProtectedLayout = lazy(async () => { - const { ProtectedLayout } = await import("./ProtectedLayout"); + const { ProtectedLayout } = await import("../ProtectedLayout"); return { default: ProtectedLayout }; }); diff --git a/src/app/routes/DocumentTitle.test.tsx b/src/app/routes/DocumentTitle/DocumentTitle.test.tsx similarity index 100% rename from src/app/routes/DocumentTitle.test.tsx rename to src/app/routes/DocumentTitle/DocumentTitle.test.tsx diff --git a/src/app/routes/DocumentTitle.tsx b/src/app/routes/DocumentTitle/DocumentTitle.tsx similarity index 100% rename from src/app/routes/DocumentTitle.tsx rename to src/app/routes/DocumentTitle/DocumentTitle.tsx diff --git a/src/app/routes/ProtectedLayout.tsx b/src/app/routes/ProtectedLayout.tsx index 1aa9176..f0b9e12 100644 --- a/src/app/routes/ProtectedLayout.tsx +++ b/src/app/routes/ProtectedLayout.tsx @@ -1,6 +1,6 @@ import type { FC } from "react"; import { AppBreadcrumbs, AppShell } from "@/app/ui"; -import { ProtectedDocumentTitle } from "./DocumentTitle"; +import { ProtectedDocumentTitle } from "./DocumentTitle/DocumentTitle"; const ProtectedLayout: FC = () => { return ( diff --git a/src/app/routes/RouteErrorBoundary.test.tsx b/src/app/routes/RouteErrorBoundary/RouteErrorBoundary.test.tsx similarity index 100% rename from src/app/routes/RouteErrorBoundary.test.tsx rename to src/app/routes/RouteErrorBoundary/RouteErrorBoundary.test.tsx diff --git a/src/app/routes/RouteErrorBoundary.tsx b/src/app/routes/RouteErrorBoundary/RouteErrorBoundary.tsx similarity index 100% rename from src/app/routes/RouteErrorBoundary.tsx rename to src/app/routes/RouteErrorBoundary/RouteErrorBoundary.tsx diff --git a/src/app/routes/index.ts b/src/app/routes/index.ts index 504c1bd..e3bd736 100644 --- a/src/app/routes/index.ts +++ b/src/app/routes/index.ts @@ -1,2 +1,2 @@ -export { AppRoutes } from "./AppRoutes"; -export { RouteErrorBoundary } from "./RouteErrorBoundary"; +export { AppRoutes } from "./AppRoutes/AppRoutes"; +export { RouteErrorBoundary } from "./RouteErrorBoundary/RouteErrorBoundary"; diff --git a/src/app/ui/AccountBreadcrumbs.tsx b/src/app/ui/AppBreadcrumbs/AccountBreadcrumbs.tsx similarity index 100% rename from src/app/ui/AccountBreadcrumbs.tsx rename to src/app/ui/AppBreadcrumbs/AccountBreadcrumbs.tsx diff --git a/src/app/ui/AccountScopeSwitch.tsx b/src/app/ui/AppBreadcrumbs/AccountScopeSwitch.tsx similarity index 100% rename from src/app/ui/AccountScopeSwitch.tsx rename to src/app/ui/AppBreadcrumbs/AccountScopeSwitch.tsx diff --git a/src/app/ui/AppBreadcrumbs.module.css b/src/app/ui/AppBreadcrumbs/AppBreadcrumbs.module.css similarity index 100% rename from src/app/ui/AppBreadcrumbs.module.css rename to src/app/ui/AppBreadcrumbs/AppBreadcrumbs.module.css diff --git a/src/app/ui/AppBreadcrumbs.test.tsx b/src/app/ui/AppBreadcrumbs/AppBreadcrumbs.test.tsx similarity index 100% rename from src/app/ui/AppBreadcrumbs.test.tsx rename to src/app/ui/AppBreadcrumbs/AppBreadcrumbs.test.tsx diff --git a/src/app/ui/AppBreadcrumbs.tsx b/src/app/ui/AppBreadcrumbs/AppBreadcrumbs.tsx similarity index 100% rename from src/app/ui/AppBreadcrumbs.tsx rename to src/app/ui/AppBreadcrumbs/AppBreadcrumbs.tsx diff --git a/src/app/ui/BondBreadcrumbs.tsx b/src/app/ui/AppBreadcrumbs/BondBreadcrumbs.tsx similarity index 100% rename from src/app/ui/BondBreadcrumbs.tsx rename to src/app/ui/AppBreadcrumbs/BondBreadcrumbs.tsx diff --git a/src/app/ui/BreadcrumbTrail.tsx b/src/app/ui/AppBreadcrumbs/BreadcrumbTrail.tsx similarity index 100% rename from src/app/ui/BreadcrumbTrail.tsx rename to src/app/ui/AppBreadcrumbs/BreadcrumbTrail.tsx diff --git a/src/app/ui/CardBreadcrumbs.tsx b/src/app/ui/AppBreadcrumbs/CardBreadcrumbs.tsx similarity index 100% rename from src/app/ui/CardBreadcrumbs.tsx rename to src/app/ui/AppBreadcrumbs/CardBreadcrumbs.tsx diff --git a/src/app/ui/StockBreadcrumbs.tsx b/src/app/ui/AppBreadcrumbs/StockBreadcrumbs.tsx similarity index 100% rename from src/app/ui/StockBreadcrumbs.tsx rename to src/app/ui/AppBreadcrumbs/StockBreadcrumbs.tsx diff --git a/src/app/ui/AppShell.module.css b/src/app/ui/AppShell/AppShell.module.css similarity index 100% rename from src/app/ui/AppShell.module.css rename to src/app/ui/AppShell/AppShell.module.css diff --git a/src/app/ui/AppShell.tsx b/src/app/ui/AppShell/AppShell.tsx similarity index 100% rename from src/app/ui/AppShell.tsx rename to src/app/ui/AppShell/AppShell.tsx diff --git a/src/app/ui/index.ts b/src/app/ui/index.ts index 256c689..309ceed 100644 --- a/src/app/ui/index.ts +++ b/src/app/ui/index.ts @@ -1,2 +1,2 @@ -export { AppBreadcrumbs } from "./AppBreadcrumbs"; -export { AppShell } from "./AppShell"; +export { AppBreadcrumbs } from "./AppBreadcrumbs/AppBreadcrumbs"; +export { AppShell } from "./AppShell/AppShell"; diff --git a/src/entities/bank-card/index.ts b/src/entities/bank-card/index.ts index d186bd9..a2c908a 100644 --- a/src/entities/bank-card/index.ts +++ b/src/entities/bank-card/index.ts @@ -20,11 +20,11 @@ export { } from "./model/form-validation"; export { bankOperationKinds } from "./model/operation-kinds"; export { bankPeriod } from "./model/period"; -export { BankCardFace } from "./ui/BankCardFace"; -export { BankCardForm } from "./ui/BankCardForm"; +export { BankCardFace } from "./ui/BankCardFace/BankCardFace"; +export { BankCardForm } from "./ui/BankCardForm/BankCardForm"; export { BankFeedback } from "./ui/BankFeedback"; -export { BankOperationIcon } from "./ui/BankOperationIcon"; +export { BankOperationIcon } from "./ui/BankOperationIcon/BankOperationIcon"; export { BankPeriodPicker } from "./ui/BankPeriodPicker"; -export { BankSummaryView } from "./ui/BankSummary.view"; -export { CategoryManager } from "./ui/CategoryManager"; +export { BankSummaryView } from "./ui/BankSummary/BankSummary.view"; +export { CategoryManager } from "./ui/CategoryManager/CategoryManager"; export { useBankFormFocus } from "./ui/useBankFormFocus"; diff --git a/src/entities/bank-card/ui/BankCardFace.module.css b/src/entities/bank-card/ui/BankCardFace/BankCardFace.module.css similarity index 100% rename from src/entities/bank-card/ui/BankCardFace.module.css rename to src/entities/bank-card/ui/BankCardFace/BankCardFace.module.css diff --git a/src/entities/bank-card/ui/BankCardFace.stories.tsx b/src/entities/bank-card/ui/BankCardFace/BankCardFace.stories.tsx similarity index 100% rename from src/entities/bank-card/ui/BankCardFace.stories.tsx rename to src/entities/bank-card/ui/BankCardFace/BankCardFace.stories.tsx diff --git a/src/entities/bank-card/ui/BankCardFace.tsx b/src/entities/bank-card/ui/BankCardFace/BankCardFace.tsx similarity index 97% rename from src/entities/bank-card/ui/BankCardFace.tsx rename to src/entities/bank-card/ui/BankCardFace/BankCardFace.tsx index 4ff80a1..48a0861 100644 --- a/src/entities/bank-card/ui/BankCardFace.tsx +++ b/src/entities/bank-card/ui/BankCardFace/BankCardFace.tsx @@ -1,7 +1,7 @@ import type { FC } from "react"; import { useTranslation } from "react-i18next"; import { formatMoney } from "@/shared/lib"; -import type { BankCard } from "../api/queries"; +import type { BankCard } from "../../api/queries"; import classes from "./BankCardFace.module.css"; type BankCardFaceProps = { card: BankCard }; diff --git a/src/entities/bank-card/ui/BankCardForm.stories.tsx b/src/entities/bank-card/ui/BankCardForm/BankCardForm.stories.tsx similarity index 95% rename from src/entities/bank-card/ui/BankCardForm.stories.tsx rename to src/entities/bank-card/ui/BankCardForm/BankCardForm.stories.tsx index a5580c7..513a89c 100644 --- a/src/entities/bank-card/ui/BankCardForm.stories.tsx +++ b/src/entities/bank-card/ui/BankCardForm/BankCardForm.stories.tsx @@ -1,6 +1,6 @@ import type { Meta, StoryObj } from "@storybook/react-vite"; import { FormProvider, useForm } from "react-hook-form"; -import type { BankCardValues } from "../model/form-validation"; +import type { BankCardValues } from "../../model/form-validation"; import { BankCardFields } from "./BankCardForm.view"; const meta = { diff --git a/src/entities/bank-card/ui/BankCardForm.test.tsx b/src/entities/bank-card/ui/BankCardForm/BankCardForm.test.tsx similarity index 99% rename from src/entities/bank-card/ui/BankCardForm.test.tsx rename to src/entities/bank-card/ui/BankCardForm/BankCardForm.test.tsx index d26ac14..9bec502 100644 --- a/src/entities/bank-card/ui/BankCardForm.test.tsx +++ b/src/entities/bank-card/ui/BankCardForm/BankCardForm.test.tsx @@ -6,7 +6,7 @@ import { describe, expect, it, vi } from "vitest"; import { configureAuthClient } from "@/shared/api"; import { createTestQueryClient } from "@/test/query"; import { server } from "@/test/server"; -import type { BankCard } from "../api/queries"; +import type { BankCard } from "../../api/queries"; import { BankCardForm } from "./BankCardForm"; const card: BankCard = { diff --git a/src/entities/bank-card/ui/BankCardForm.tsx b/src/entities/bank-card/ui/BankCardForm/BankCardForm.tsx similarity index 93% rename from src/entities/bank-card/ui/BankCardForm.tsx rename to src/entities/bank-card/ui/BankCardForm/BankCardForm.tsx index c0c11d4..00ff33d 100644 --- a/src/entities/bank-card/ui/BankCardForm.tsx +++ b/src/entities/bank-card/ui/BankCardForm/BankCardForm.tsx @@ -4,18 +4,18 @@ import { type FC, useState } from "react"; import { FormProvider, useForm } from "react-hook-form"; import { useTranslation } from "react-i18next"; import { formatDate } from "@/shared/lib"; -import { useBankMutations } from "../api/mutations"; -import { type BankCard, useBankCard } from "../api/queries"; +import { useBankMutations } from "../../api/mutations"; +import { type BankCard, useBankCard } from "../../api/queries"; import { type BankCardValues, bankCardSchema, bankMoneyValue, bankToday, -} from "../model/form-validation"; +} from "../../model/form-validation"; +import { BankFeedback } from "../BankFeedback"; +import classes from "../BankForms.module.css"; +import { useBankFormFocus } from "../useBankFormFocus"; import { BankCardFields } from "./BankCardForm.view"; -import { BankFeedback } from "./BankFeedback"; -import classes from "./BankForms.module.css"; -import { useBankFormFocus } from "./useBankFormFocus"; type BankCardFormProps = { card?: BankCard; onClose: () => void }; const BankCardForm: FC = (props) => { diff --git a/src/entities/bank-card/ui/BankCardForm.view.tsx b/src/entities/bank-card/ui/BankCardForm/BankCardForm.view.tsx similarity index 98% rename from src/entities/bank-card/ui/BankCardForm.view.tsx rename to src/entities/bank-card/ui/BankCardForm/BankCardForm.view.tsx index 1a616d8..396880a 100644 --- a/src/entities/bank-card/ui/BankCardForm.view.tsx +++ b/src/entities/bank-card/ui/BankCardForm/BankCardForm.view.tsx @@ -8,7 +8,7 @@ import { bankDateInputValue, bankDateSchema, bankToday, -} from "../model/form-validation"; +} from "../../model/form-validation"; type BankCardFieldsProps = { archived: boolean }; const BankCardFields: FC = (props) => { diff --git a/src/entities/bank-card/ui/BankOperationIcon.module.css b/src/entities/bank-card/ui/BankOperationIcon/BankOperationIcon.module.css similarity index 100% rename from src/entities/bank-card/ui/BankOperationIcon.module.css rename to src/entities/bank-card/ui/BankOperationIcon/BankOperationIcon.module.css diff --git a/src/entities/bank-card/ui/BankOperationIcon.stories.tsx b/src/entities/bank-card/ui/BankOperationIcon/BankOperationIcon.stories.tsx similarity index 100% rename from src/entities/bank-card/ui/BankOperationIcon.stories.tsx rename to src/entities/bank-card/ui/BankOperationIcon/BankOperationIcon.stories.tsx diff --git a/src/entities/bank-card/ui/BankOperationIcon.test.tsx b/src/entities/bank-card/ui/BankOperationIcon/BankOperationIcon.test.tsx similarity index 100% rename from src/entities/bank-card/ui/BankOperationIcon.test.tsx rename to src/entities/bank-card/ui/BankOperationIcon/BankOperationIcon.test.tsx diff --git a/src/entities/bank-card/ui/BankOperationIcon.tsx b/src/entities/bank-card/ui/BankOperationIcon/BankOperationIcon.tsx similarity index 87% rename from src/entities/bank-card/ui/BankOperationIcon.tsx rename to src/entities/bank-card/ui/BankOperationIcon/BankOperationIcon.tsx index e7ad5bc..ef02c96 100644 --- a/src/entities/bank-card/ui/BankOperationIcon.tsx +++ b/src/entities/bank-card/ui/BankOperationIcon/BankOperationIcon.tsx @@ -1,8 +1,8 @@ import type { FC } from "react"; import { bindIconAnimation } from "@/shared/lib"; -import type { BankOperation } from "../api/queries"; +import type { BankOperation } from "../../api/queries"; -import { bankOperationAppearance } from "../model/operation-appearance"; +import { bankOperationAppearance } from "../../model/operation-appearance"; import classes from "./BankOperationIcon.module.css"; type BankOperationIconProps = { diff --git a/src/entities/bank-card/ui/BankSummary.module.css b/src/entities/bank-card/ui/BankSummary/BankSummary.module.css similarity index 100% rename from src/entities/bank-card/ui/BankSummary.module.css rename to src/entities/bank-card/ui/BankSummary/BankSummary.module.css diff --git a/src/entities/bank-card/ui/BankSummary.stories.tsx b/src/entities/bank-card/ui/BankSummary/BankSummary.stories.tsx similarity index 100% rename from src/entities/bank-card/ui/BankSummary.stories.tsx rename to src/entities/bank-card/ui/BankSummary/BankSummary.stories.tsx diff --git a/src/entities/bank-card/ui/BankSummary.view.tsx b/src/entities/bank-card/ui/BankSummary/BankSummary.view.tsx similarity index 94% rename from src/entities/bank-card/ui/BankSummary.view.tsx rename to src/entities/bank-card/ui/BankSummary/BankSummary.view.tsx index bd4ac37..6208490 100644 --- a/src/entities/bank-card/ui/BankSummary.view.tsx +++ b/src/entities/bank-card/ui/BankSummary/BankSummary.view.tsx @@ -3,8 +3,8 @@ import { LoadingSkeleton } from "@wealthledger/ui"; import type { CSSProperties, FC } from "react"; import { useTranslation } from "react-i18next"; import { formatMoney } from "@/shared/lib"; -import type { BankSummary } from "../api/queries"; -import { BankOperationIcon } from "./BankOperationIcon"; +import type { BankSummary } from "../../api/queries"; +import { BankOperationIcon } from "../BankOperationIcon/BankOperationIcon"; import classes from "./BankSummary.module.css"; type BankSummaryViewProps = { diff --git a/src/entities/bank-card/ui/CategoryManager.test.tsx b/src/entities/bank-card/ui/CategoryManager/CategoryManager.test.tsx similarity index 100% rename from src/entities/bank-card/ui/CategoryManager.test.tsx rename to src/entities/bank-card/ui/CategoryManager/CategoryManager.test.tsx diff --git a/src/entities/bank-card/ui/CategoryManager.tsx b/src/entities/bank-card/ui/CategoryManager/CategoryManager.tsx similarity index 94% rename from src/entities/bank-card/ui/CategoryManager.tsx rename to src/entities/bank-card/ui/CategoryManager/CategoryManager.tsx index ecb0677..fcd3f9b 100644 --- a/src/entities/bank-card/ui/CategoryManager.tsx +++ b/src/entities/bank-card/ui/CategoryManager/CategoryManager.tsx @@ -18,12 +18,12 @@ import { import { useTranslation } from "react-i18next"; import { z } from "zod"; import { validationMessage } from "@/shared/i18n"; -import { useBankMutations } from "../api/mutations"; -import { type ExpenseCategory, useBankCategories } from "../api/queries"; -import { BankFeedback } from "./BankFeedback"; -import classes from "./BankForms.module.css"; -import { BankOperationIcon } from "./BankOperationIcon"; -import { useBankFormFocus } from "./useBankFormFocus"; +import { useBankMutations } from "../../api/mutations"; +import { type ExpenseCategory, useBankCategories } from "../../api/queries"; +import { BankFeedback } from "../BankFeedback"; +import classes from "../BankForms.module.css"; +import { BankOperationIcon } from "../BankOperationIcon/BankOperationIcon"; +import { useBankFormFocus } from "../useBankFormFocus"; const MAX_CATEGORY_NAME_LENGTH = 80; diff --git a/src/entities/brokerage-account/index.ts b/src/entities/brokerage-account/index.ts index a6bf808..e2d251c 100644 --- a/src/entities/brokerage-account/index.ts +++ b/src/entities/brokerage-account/index.ts @@ -8,4 +8,4 @@ export { type BrokerageAccountCard, brokerageAccountCards, } from "./model/display"; -export { BrokerageAccountList } from "./ui/BrokerageAccountList"; +export { BrokerageAccountList } from "./ui/BrokerageAccountList/BrokerageAccountList"; diff --git a/src/entities/brokerage-account/ui/BrokerageAccountList.module.css b/src/entities/brokerage-account/ui/BrokerageAccountList/BrokerageAccountList.module.css similarity index 100% rename from src/entities/brokerage-account/ui/BrokerageAccountList.module.css rename to src/entities/brokerage-account/ui/BrokerageAccountList/BrokerageAccountList.module.css diff --git a/src/entities/brokerage-account/ui/BrokerageAccountList.stories.tsx b/src/entities/brokerage-account/ui/BrokerageAccountList/BrokerageAccountList.stories.tsx similarity index 97% rename from src/entities/brokerage-account/ui/BrokerageAccountList.stories.tsx rename to src/entities/brokerage-account/ui/BrokerageAccountList/BrokerageAccountList.stories.tsx index 0a34306..3d20caa 100644 --- a/src/entities/brokerage-account/ui/BrokerageAccountList.stories.tsx +++ b/src/entities/brokerage-account/ui/BrokerageAccountList/BrokerageAccountList.stories.tsx @@ -1,7 +1,7 @@ import type { Meta, StoryObj } from "@storybook/react-vite"; import { MemoryRouter } from "react-router"; -import type { BrokerageAccount } from "../api/useBrokerageAccounts"; -import { brokerageAccountCards } from "../model/display"; +import type { BrokerageAccount } from "../../api/useBrokerageAccounts"; +import { brokerageAccountCards } from "../../model/display"; import { BrokerageAccountList } from "./BrokerageAccountList"; const syntheticAccount = { diff --git a/src/entities/brokerage-account/ui/BrokerageAccountList.test.tsx b/src/entities/brokerage-account/ui/BrokerageAccountList/BrokerageAccountList.test.tsx similarity index 97% rename from src/entities/brokerage-account/ui/BrokerageAccountList.test.tsx rename to src/entities/brokerage-account/ui/BrokerageAccountList/BrokerageAccountList.test.tsx index 326c9b6..b4f6828 100644 --- a/src/entities/brokerage-account/ui/BrokerageAccountList.test.tsx +++ b/src/entities/brokerage-account/ui/BrokerageAccountList/BrokerageAccountList.test.tsx @@ -2,7 +2,7 @@ import { MantineProvider } from "@mantine/core"; import { render, screen, within } from "@testing-library/react"; import { MemoryRouter } from "react-router"; import { describe, expect, it } from "vitest"; -import { brokerageAccountCards } from "../model/display"; +import { brokerageAccountCards } from "../../model/display"; import { BrokerageAccountList } from "./BrokerageAccountList"; describe("BrokerageAccountList", () => { diff --git a/src/entities/brokerage-account/ui/BrokerageAccountList.tsx b/src/entities/brokerage-account/ui/BrokerageAccountList/BrokerageAccountList.tsx similarity index 96% rename from src/entities/brokerage-account/ui/BrokerageAccountList.tsx rename to src/entities/brokerage-account/ui/BrokerageAccountList/BrokerageAccountList.tsx index c19b615..ccc9b9b 100644 --- a/src/entities/brokerage-account/ui/BrokerageAccountList.tsx +++ b/src/entities/brokerage-account/ui/BrokerageAccountList/BrokerageAccountList.tsx @@ -3,8 +3,8 @@ import type { FC } from "react"; import { useTranslation } from "react-i18next"; import { Link } from "react-router"; import { formatDate, formatMoney } from "@/shared/lib"; -import type { BrokerageAccountCard } from "../model/display"; -import { accountTypeKey } from "../model/display"; +import type { BrokerageAccountCard } from "../../model/display"; +import { accountTypeKey } from "../../model/display"; import classes from "./BrokerageAccountList.module.css"; type BrokerageAccountListProps = { accounts: BrokerageAccountCard[] }; diff --git a/src/entities/brokerage-event/index.ts b/src/entities/brokerage-event/index.ts index af8c9e0..f3b2e91 100644 --- a/src/entities/brokerage-event/index.ts +++ b/src/entities/brokerage-event/index.ts @@ -6,4 +6,4 @@ export { BrokerageEventCard } from "./ui/BrokerageEventCard"; export { BrokerageEventsPreview, type BrokerageEventsPreviewState, -} from "./ui/BrokerageEventsPreview"; +} from "./ui/BrokerageEventsPreview/BrokerageEventsPreview"; diff --git a/src/entities/brokerage-event/ui/BrokerageEventsPreview.stories.tsx b/src/entities/brokerage-event/ui/BrokerageEventsPreview/BrokerageEventsPreview.stories.tsx similarity index 98% rename from src/entities/brokerage-event/ui/BrokerageEventsPreview.stories.tsx rename to src/entities/brokerage-event/ui/BrokerageEventsPreview/BrokerageEventsPreview.stories.tsx index 16a55dc..0f8f4dc 100644 --- a/src/entities/brokerage-event/ui/BrokerageEventsPreview.stories.tsx +++ b/src/entities/brokerage-event/ui/BrokerageEventsPreview/BrokerageEventsPreview.stories.tsx @@ -1,6 +1,6 @@ import type { Meta, StoryObj } from "@storybook/react-vite"; import { MemoryRouter } from "react-router"; -import type { BrokerageEvent } from "../api/useBrokerageEvents"; +import type { BrokerageEvent } from "../../api/useBrokerageEvents"; import { BrokerageEventsPreview } from "./BrokerageEventsPreview"; const syntheticEvent = { diff --git a/src/entities/brokerage-event/ui/BrokerageEventsPreview.tsx b/src/entities/brokerage-event/ui/BrokerageEventsPreview/BrokerageEventsPreview.tsx similarity index 92% rename from src/entities/brokerage-event/ui/BrokerageEventsPreview.tsx rename to src/entities/brokerage-event/ui/BrokerageEventsPreview/BrokerageEventsPreview.tsx index a365439..e3b2ffa 100644 --- a/src/entities/brokerage-event/ui/BrokerageEventsPreview.tsx +++ b/src/entities/brokerage-event/ui/BrokerageEventsPreview/BrokerageEventsPreview.tsx @@ -3,8 +3,8 @@ import { LoadingSkeleton } from "@wealthledger/ui"; import type { FC } from "react"; import { useTranslation } from "react-i18next"; import { Link } from "react-router"; -import type { BrokerageEvent } from "../api/useBrokerageEvents"; -import { BrokerageEventCard } from "./BrokerageEventCard"; +import type { BrokerageEvent } from "../../api/useBrokerageEvents"; +import { BrokerageEventCard } from "../BrokerageEventCard"; type BrokerageEventsPreviewProps = { events: BrokerageEventsPreviewState; diff --git a/src/features/auth/index.ts b/src/features/auth/index.ts index 0c25e28..9322901 100644 --- a/src/features/auth/index.ts +++ b/src/features/auth/index.ts @@ -1,4 +1,4 @@ export { AuthProvider, useAuth } from "./model/auth"; -export { AuthPageLayout } from "./ui/AuthPageLayout"; +export { AuthPageLayout } from "./ui/AuthPageLayout/AuthPageLayout"; export { LoginForm } from "./ui/LoginForm"; export { RegisterForm } from "./ui/RegisterForm"; diff --git a/src/features/auth/ui/AuthForm.module.css b/src/features/auth/ui/AuthForm/AuthForm.module.css similarity index 100% rename from src/features/auth/ui/AuthForm.module.css rename to src/features/auth/ui/AuthForm/AuthForm.module.css diff --git a/src/features/auth/ui/AuthForm.test.tsx b/src/features/auth/ui/AuthForm/AuthForm.test.tsx similarity index 100% rename from src/features/auth/ui/AuthForm.test.tsx rename to src/features/auth/ui/AuthForm/AuthForm.test.tsx diff --git a/src/features/auth/ui/AuthForm.tsx b/src/features/auth/ui/AuthForm/AuthForm.tsx similarity index 98% rename from src/features/auth/ui/AuthForm.tsx rename to src/features/auth/ui/AuthForm/AuthForm.tsx index 43f1ad2..aee8192 100644 --- a/src/features/auth/ui/AuthForm.tsx +++ b/src/features/auth/ui/AuthForm/AuthForm.tsx @@ -9,7 +9,7 @@ import { type AuthFormValues, loginSchema, registerSchema, -} from "../model/validation"; +} from "../../model/validation"; import classes from "./AuthForm.module.css"; type AuthFormProps = { diff --git a/src/features/auth/ui/AuthPageLayout.module.css b/src/features/auth/ui/AuthPageLayout/AuthPageLayout.module.css similarity index 100% rename from src/features/auth/ui/AuthPageLayout.module.css rename to src/features/auth/ui/AuthPageLayout/AuthPageLayout.module.css diff --git a/src/features/auth/ui/AuthPageLayout.tsx b/src/features/auth/ui/AuthPageLayout/AuthPageLayout.tsx similarity index 100% rename from src/features/auth/ui/AuthPageLayout.tsx rename to src/features/auth/ui/AuthPageLayout/AuthPageLayout.tsx diff --git a/src/features/auth/ui/LoginForm.tsx b/src/features/auth/ui/LoginForm.tsx index 47c08c5..84813d8 100644 --- a/src/features/auth/ui/LoginForm.tsx +++ b/src/features/auth/ui/LoginForm.tsx @@ -1,7 +1,7 @@ import type { FC } from "react"; import { useLocation, useNavigate } from "react-router"; import { useAuth } from "../model/auth"; -import { AuthForm } from "./AuthForm"; +import { AuthForm } from "./AuthForm/AuthForm"; const LoginForm: FC = () => { const { login } = useAuth(); diff --git a/src/features/auth/ui/RegisterForm.tsx b/src/features/auth/ui/RegisterForm.tsx index 913d9c9..f666da9 100644 --- a/src/features/auth/ui/RegisterForm.tsx +++ b/src/features/auth/ui/RegisterForm.tsx @@ -1,7 +1,7 @@ import type { FC } from "react"; import { useLocation, useNavigate } from "react-router"; import { useAuth } from "../model/auth"; -import { AuthForm } from "./AuthForm"; +import { AuthForm } from "./AuthForm/AuthForm"; const RegisterForm: FC = () => { const { register } = useAuth(); diff --git a/src/features/tbank-connection/index.ts b/src/features/tbank-connection/index.ts index c128eb1..ed97bf1 100644 --- a/src/features/tbank-connection/index.ts +++ b/src/features/tbank-connection/index.ts @@ -1 +1 @@ -export { TbankConnectionSection } from "./ui/TbankConnectionSection"; +export { TbankConnectionSection } from "./ui/TbankConnectionSection/TbankConnectionSection"; diff --git a/src/features/tbank-connection/ui/TbankConnectionSection.test.tsx b/src/features/tbank-connection/ui/TbankConnectionSection/TbankConnectionSection.test.tsx similarity index 100% rename from src/features/tbank-connection/ui/TbankConnectionSection.test.tsx rename to src/features/tbank-connection/ui/TbankConnectionSection/TbankConnectionSection.test.tsx diff --git a/src/features/tbank-connection/ui/TbankConnectionSection.tsx b/src/features/tbank-connection/ui/TbankConnectionSection/TbankConnectionSection.tsx similarity index 100% rename from src/features/tbank-connection/ui/TbankConnectionSection.tsx rename to src/features/tbank-connection/ui/TbankConnectionSection/TbankConnectionSection.tsx diff --git a/src/features/tbank-connection/ui/TbankConnectionSection.view.test.tsx b/src/features/tbank-connection/ui/TbankConnectionSection/TbankConnectionSection.view.test.tsx similarity index 100% rename from src/features/tbank-connection/ui/TbankConnectionSection.view.test.tsx rename to src/features/tbank-connection/ui/TbankConnectionSection/TbankConnectionSection.view.test.tsx diff --git a/src/features/tbank-connection/ui/TbankConnectionSection.view.tsx b/src/features/tbank-connection/ui/TbankConnectionSection/TbankConnectionSection.view.tsx similarity index 100% rename from src/features/tbank-connection/ui/TbankConnectionSection.view.tsx rename to src/features/tbank-connection/ui/TbankConnectionSection/TbankConnectionSection.view.tsx diff --git a/src/features/tbank-connection/ui/TbankConnectionSection.vm.ts b/src/features/tbank-connection/ui/TbankConnectionSection/TbankConnectionSection.vm.ts similarity index 84% rename from src/features/tbank-connection/ui/TbankConnectionSection.vm.ts rename to src/features/tbank-connection/ui/TbankConnectionSection/TbankConnectionSection.vm.ts index 9855647..105bf73 100644 --- a/src/features/tbank-connection/ui/TbankConnectionSection.vm.ts +++ b/src/features/tbank-connection/ui/TbankConnectionSection/TbankConnectionSection.vm.ts @@ -1,5 +1,5 @@ import { useAuthenticatedQuery } from "@/shared/api"; -import { tbankConnectionQueryOptions } from "../model/connection-boundary"; +import { tbankConnectionQueryOptions } from "../../model/connection-boundary"; function useTbankConnectionViewModel() { const status = useAuthenticatedQuery({ diff --git a/src/features/tbank-connection/ui/TbankConnectionSectionLoaded.tsx b/src/features/tbank-connection/ui/TbankConnectionSection/TbankConnectionSectionLoaded.tsx similarity index 98% rename from src/features/tbank-connection/ui/TbankConnectionSectionLoaded.tsx rename to src/features/tbank-connection/ui/TbankConnectionSection/TbankConnectionSectionLoaded.tsx index 13e0b41..a796492 100644 --- a/src/features/tbank-connection/ui/TbankConnectionSectionLoaded.tsx +++ b/src/features/tbank-connection/ui/TbankConnectionSection/TbankConnectionSectionLoaded.tsx @@ -15,7 +15,7 @@ import { apiErrorCode, apiQueryClient } from "@/shared/api"; import { commitTbankConnectionBoundary, type TbankConnectionStatus, -} from "../model/connection-boundary"; +} from "../../model/connection-boundary"; type TbankConnectionSectionLoadedProps = { status: TbankConnectionStatus; diff --git a/src/pages/account-events/index.ts b/src/pages/account-events/index.ts index 73763c3..99b2be1 100644 --- a/src/pages/account-events/index.ts +++ b/src/pages/account-events/index.ts @@ -1 +1 @@ -export { AccountEventsPage } from "./ui/AccountEventsPage"; +export { AccountEventsPage } from "./ui/AccountEventsPage/AccountEventsPage"; diff --git a/src/pages/account-events/ui/AccountEventsPage.filters.test.tsx b/src/pages/account-events/ui/AccountEventsPage/AccountEventsPage.filters.test.tsx similarity index 100% rename from src/pages/account-events/ui/AccountEventsPage.filters.test.tsx rename to src/pages/account-events/ui/AccountEventsPage/AccountEventsPage.filters.test.tsx diff --git a/src/pages/account-events/ui/AccountEventsPage.test.tsx b/src/pages/account-events/ui/AccountEventsPage/AccountEventsPage.test.tsx similarity index 100% rename from src/pages/account-events/ui/AccountEventsPage.test.tsx rename to src/pages/account-events/ui/AccountEventsPage/AccountEventsPage.test.tsx diff --git a/src/pages/account-events/ui/AccountEventsPage.tsx b/src/pages/account-events/ui/AccountEventsPage/AccountEventsPage.tsx similarity index 100% rename from src/pages/account-events/ui/AccountEventsPage.tsx rename to src/pages/account-events/ui/AccountEventsPage/AccountEventsPage.tsx diff --git a/src/pages/account-events/ui/AccountEventsPage.vm.ts b/src/pages/account-events/ui/AccountEventsPage/AccountEventsPage.vm.ts similarity index 100% rename from src/pages/account-events/ui/AccountEventsPage.vm.ts rename to src/pages/account-events/ui/AccountEventsPage/AccountEventsPage.vm.ts diff --git a/src/pages/account-events/ui/components/AccountEventsPageEmpty.view.tsx b/src/pages/account-events/ui/AccountEventsPage/components/AccountEventsPageEmpty.view.tsx similarity index 100% rename from src/pages/account-events/ui/components/AccountEventsPageEmpty.view.tsx rename to src/pages/account-events/ui/AccountEventsPage/components/AccountEventsPageEmpty.view.tsx diff --git a/src/pages/account-events/ui/components/AccountEventsPageError.view.tsx b/src/pages/account-events/ui/AccountEventsPage/components/AccountEventsPageError.view.tsx similarity index 100% rename from src/pages/account-events/ui/components/AccountEventsPageError.view.tsx rename to src/pages/account-events/ui/AccountEventsPage/components/AccountEventsPageError.view.tsx diff --git a/src/pages/account-events/ui/components/AccountEventsPageLoaded.view.tsx b/src/pages/account-events/ui/AccountEventsPage/components/AccountEventsPageLoaded.view.tsx similarity index 100% rename from src/pages/account-events/ui/components/AccountEventsPageLoaded.view.tsx rename to src/pages/account-events/ui/AccountEventsPage/components/AccountEventsPageLoaded.view.tsx diff --git a/src/pages/account-events/ui/components/AccountEventsPageLoading.view.tsx b/src/pages/account-events/ui/AccountEventsPage/components/AccountEventsPageLoading.view.tsx similarity index 100% rename from src/pages/account-events/ui/components/AccountEventsPageLoading.view.tsx rename to src/pages/account-events/ui/AccountEventsPage/components/AccountEventsPageLoading.view.tsx diff --git a/src/pages/account-income/index.ts b/src/pages/account-income/index.ts index e93bb37..05a690e 100644 --- a/src/pages/account-income/index.ts +++ b/src/pages/account-income/index.ts @@ -1 +1 @@ -export { AccountIncomePage } from "./ui/AccountIncomePage"; +export { AccountIncomePage } from "./ui/AccountIncomePage/AccountIncomePage"; diff --git a/src/pages/account-income/ui/AccountIncomePage.module.css b/src/pages/account-income/ui/AccountIncomePage/AccountIncomePage.module.css similarity index 100% rename from src/pages/account-income/ui/AccountIncomePage.module.css rename to src/pages/account-income/ui/AccountIncomePage/AccountIncomePage.module.css diff --git a/src/pages/account-income/ui/AccountIncomePage.test.tsx b/src/pages/account-income/ui/AccountIncomePage/AccountIncomePage.test.tsx similarity index 99% rename from src/pages/account-income/ui/AccountIncomePage.test.tsx rename to src/pages/account-income/ui/AccountIncomePage/AccountIncomePage.test.tsx index 2416043..9f4465c 100644 --- a/src/pages/account-income/ui/AccountIncomePage.test.tsx +++ b/src/pages/account-income/ui/AccountIncomePage/AccountIncomePage.test.tsx @@ -23,7 +23,7 @@ import type { IncomeAnalytics } from "@/entities/income"; import { configureAuthClient } from "@/shared/api"; import { createQueryWrapper } from "@/test/query"; import { server } from "@/test/server"; -import { isDate } from "../model/period"; +import { isDate } from "../../model/period"; import { AccountIncomePage } from "./AccountIncomePage"; import { toIncomeDisplayModel } from "./AccountIncomePage.vm"; import { IncomePayments } from "./components/IncomePayments.view"; diff --git a/src/pages/account-income/ui/AccountIncomePage.tsx b/src/pages/account-income/ui/AccountIncomePage/AccountIncomePage.tsx similarity index 100% rename from src/pages/account-income/ui/AccountIncomePage.tsx rename to src/pages/account-income/ui/AccountIncomePage/AccountIncomePage.tsx diff --git a/src/pages/account-income/ui/AccountIncomePage.vm.ts b/src/pages/account-income/ui/AccountIncomePage/AccountIncomePage.vm.ts similarity index 99% rename from src/pages/account-income/ui/AccountIncomePage.vm.ts rename to src/pages/account-income/ui/AccountIncomePage/AccountIncomePage.vm.ts index f3eaf64..48533af 100644 --- a/src/pages/account-income/ui/AccountIncomePage.vm.ts +++ b/src/pages/account-income/ui/AccountIncomePage/AccountIncomePage.vm.ts @@ -13,7 +13,7 @@ import { isDate, moscowDate, parseDraftDate, -} from "../model/period"; +} from "../../model/period"; const ISO_MONTH_LENGTH = 7; diff --git a/src/pages/account-income/ui/components/AccountIncomePageError.view.tsx b/src/pages/account-income/ui/AccountIncomePage/components/AccountIncomePageError.view.tsx similarity index 100% rename from src/pages/account-income/ui/components/AccountIncomePageError.view.tsx rename to src/pages/account-income/ui/AccountIncomePage/components/AccountIncomePageError.view.tsx diff --git a/src/pages/account-income/ui/components/AccountIncomePageLoaded.view.tsx b/src/pages/account-income/ui/AccountIncomePage/components/AccountIncomePageLoaded.view.tsx similarity index 96% rename from src/pages/account-income/ui/components/AccountIncomePageLoaded.view.tsx rename to src/pages/account-income/ui/AccountIncomePage/components/AccountIncomePageLoaded.view.tsx index 87f003e..c3b1121 100644 --- a/src/pages/account-income/ui/components/AccountIncomePageLoaded.view.tsx +++ b/src/pages/account-income/ui/AccountIncomePage/components/AccountIncomePageLoaded.view.tsx @@ -15,7 +15,7 @@ import classes from "../AccountIncomePage.module.css"; import type { AccountIncomePageViewModel } from "../AccountIncomePage.vm"; import { IncomeComparisons } from "./IncomeComparisons.view"; import { IncomePayments } from "./IncomePayments.view"; -import { IncomePeriodForm } from "./IncomePeriodForm.view"; +import { IncomePeriodForm } from "./IncomePeriodForm/IncomePeriodForm.view"; import { IncomeSummary } from "./IncomeSummary.view"; type LoadedProps = Extract; diff --git a/src/pages/account-income/ui/components/AccountIncomePageLoading.view.tsx b/src/pages/account-income/ui/AccountIncomePage/components/AccountIncomePageLoading.view.tsx similarity index 100% rename from src/pages/account-income/ui/components/AccountIncomePageLoading.view.tsx rename to src/pages/account-income/ui/AccountIncomePage/components/AccountIncomePageLoading.view.tsx diff --git a/src/pages/account-income/ui/components/IncomeComparisons.view.tsx b/src/pages/account-income/ui/AccountIncomePage/components/IncomeComparisons.view.tsx similarity index 100% rename from src/pages/account-income/ui/components/IncomeComparisons.view.tsx rename to src/pages/account-income/ui/AccountIncomePage/components/IncomeComparisons.view.tsx diff --git a/src/pages/account-income/ui/components/IncomePayments.view.tsx b/src/pages/account-income/ui/AccountIncomePage/components/IncomePayments.view.tsx similarity index 100% rename from src/pages/account-income/ui/components/IncomePayments.view.tsx rename to src/pages/account-income/ui/AccountIncomePage/components/IncomePayments.view.tsx diff --git a/src/pages/account-income/ui/components/IncomePeriodForm.stories.tsx b/src/pages/account-income/ui/AccountIncomePage/components/IncomePeriodForm/IncomePeriodForm.stories.tsx similarity index 96% rename from src/pages/account-income/ui/components/IncomePeriodForm.stories.tsx rename to src/pages/account-income/ui/AccountIncomePage/components/IncomePeriodForm/IncomePeriodForm.stories.tsx index 29f735c..9d246ca 100644 --- a/src/pages/account-income/ui/components/IncomePeriodForm.stories.tsx +++ b/src/pages/account-income/ui/AccountIncomePage/components/IncomePeriodForm/IncomePeriodForm.stories.tsx @@ -1,7 +1,7 @@ import type { Meta, StoryObj } from "@storybook/react-vite"; import type { FC } from "react"; import { FormProvider, useForm, useFormState } from "react-hook-form"; -import type { IncomeForm } from "../../model/period"; +import type { IncomeForm } from "../../../../model/period"; import { IncomePeriodForm } from "./IncomePeriodForm.view"; const period = { from: "01.08.2026", to: "27.08.2026" }; diff --git a/src/pages/account-income/ui/components/IncomePeriodForm.view.tsx b/src/pages/account-income/ui/AccountIncomePage/components/IncomePeriodForm/IncomePeriodForm.view.tsx similarity index 96% rename from src/pages/account-income/ui/components/IncomePeriodForm.view.tsx rename to src/pages/account-income/ui/AccountIncomePage/components/IncomePeriodForm/IncomePeriodForm.view.tsx index 7b1be80..c527fef 100644 --- a/src/pages/account-income/ui/components/IncomePeriodForm.view.tsx +++ b/src/pages/account-income/ui/AccountIncomePage/components/IncomePeriodForm/IncomePeriodForm.view.tsx @@ -8,8 +8,8 @@ import { type IncomeForm, moscowDate, parseDraftDate, -} from "../../model/period"; -import classes from "../AccountIncomePage.module.css"; +} from "../../../../model/period"; +import classes from "../../AccountIncomePage.module.css"; type IncomePeriodFormProps = { onSubmit: FormEventHandler; diff --git a/src/pages/account-income/ui/components/IncomeSummary.view.tsx b/src/pages/account-income/ui/AccountIncomePage/components/IncomeSummary.view.tsx similarity index 100% rename from src/pages/account-income/ui/components/IncomeSummary.view.tsx rename to src/pages/account-income/ui/AccountIncomePage/components/IncomeSummary.view.tsx diff --git a/src/pages/account-operations/index.ts b/src/pages/account-operations/index.ts index 148dd00..d888f2d 100644 --- a/src/pages/account-operations/index.ts +++ b/src/pages/account-operations/index.ts @@ -1 +1 @@ -export { AccountOperationsPage } from "./ui/AccountOperationsPage"; +export { AccountOperationsPage } from "./ui/AccountOperationsPage/AccountOperationsPage"; diff --git a/src/pages/account-operations/ui/AccountOperationsPage.test.tsx b/src/pages/account-operations/ui/AccountOperationsPage/AccountOperationsPage.test.tsx similarity index 100% rename from src/pages/account-operations/ui/AccountOperationsPage.test.tsx rename to src/pages/account-operations/ui/AccountOperationsPage/AccountOperationsPage.test.tsx diff --git a/src/pages/account-operations/ui/AccountOperationsPage.tsx b/src/pages/account-operations/ui/AccountOperationsPage/AccountOperationsPage.tsx similarity index 100% rename from src/pages/account-operations/ui/AccountOperationsPage.tsx rename to src/pages/account-operations/ui/AccountOperationsPage/AccountOperationsPage.tsx diff --git a/src/pages/account-operations/ui/AccountOperationsPage.vm.ts b/src/pages/account-operations/ui/AccountOperationsPage/AccountOperationsPage.vm.ts similarity index 100% rename from src/pages/account-operations/ui/AccountOperationsPage.vm.ts rename to src/pages/account-operations/ui/AccountOperationsPage/AccountOperationsPage.vm.ts diff --git a/src/pages/account-operations/ui/components/AccountOperationsPageError.view.tsx b/src/pages/account-operations/ui/AccountOperationsPage/components/AccountOperationsPageError.view.tsx similarity index 100% rename from src/pages/account-operations/ui/components/AccountOperationsPageError.view.tsx rename to src/pages/account-operations/ui/AccountOperationsPage/components/AccountOperationsPageError.view.tsx diff --git a/src/pages/account-operations/ui/components/AccountOperationsPageLoaded.view.tsx b/src/pages/account-operations/ui/AccountOperationsPage/components/AccountOperationsPageLoaded.view.tsx similarity index 100% rename from src/pages/account-operations/ui/components/AccountOperationsPageLoaded.view.tsx rename to src/pages/account-operations/ui/AccountOperationsPage/components/AccountOperationsPageLoaded.view.tsx diff --git a/src/pages/account-operations/ui/components/AccountOperationsPageLoading.view.tsx b/src/pages/account-operations/ui/AccountOperationsPage/components/AccountOperationsPageLoading.view.tsx similarity index 100% rename from src/pages/account-operations/ui/components/AccountOperationsPageLoading.view.tsx rename to src/pages/account-operations/ui/AccountOperationsPage/components/AccountOperationsPageLoading.view.tsx diff --git a/src/pages/account/index.ts b/src/pages/account/index.ts index e30edc3..fdc88c4 100644 --- a/src/pages/account/index.ts +++ b/src/pages/account/index.ts @@ -1 +1 @@ -export { AccountPage } from "./ui/AccountPage"; +export { AccountPage } from "./ui/AccountPage/AccountPage"; diff --git a/src/pages/account/ui/AccountPage.module.css b/src/pages/account/ui/AccountPage/AccountPage.module.css similarity index 100% rename from src/pages/account/ui/AccountPage.module.css rename to src/pages/account/ui/AccountPage/AccountPage.module.css diff --git a/src/pages/account/ui/AccountPage.test.tsx b/src/pages/account/ui/AccountPage/AccountPage.test.tsx similarity index 99% rename from src/pages/account/ui/AccountPage.test.tsx rename to src/pages/account/ui/AccountPage/AccountPage.test.tsx index 72c9c77..90efae0 100644 --- a/src/pages/account/ui/AccountPage.test.tsx +++ b/src/pages/account/ui/AccountPage/AccountPage.test.tsx @@ -24,7 +24,7 @@ import { toAccountPagePositionSections } from "./AccountPage.vm"; import { AccountPageEmpty } from "./components/AccountPageEmpty.view"; import { AccountPageError } from "./components/AccountPageError.view"; import { AccountPageLoaded } from "./components/AccountPageLoaded.view"; -import { AccountPageLoading } from "./components/AccountPageLoading.view"; +import { AccountPageLoading } from "./components/AccountPageLoading/AccountPageLoading.view"; function renderPage(ui: React.ReactNode) { const queryClient = createTestQueryClient(); diff --git a/src/pages/account/ui/AccountPage.tsx b/src/pages/account/ui/AccountPage/AccountPage.tsx similarity index 98% rename from src/pages/account/ui/AccountPage.tsx rename to src/pages/account/ui/AccountPage/AccountPage.tsx index 5e7023f..b0b73df 100644 --- a/src/pages/account/ui/AccountPage.tsx +++ b/src/pages/account/ui/AccountPage/AccountPage.tsx @@ -3,7 +3,7 @@ import { useAccountPageViewModel } from "./AccountPage.vm"; import { AccountPageEmpty } from "./components/AccountPageEmpty.view"; import { AccountPageError } from "./components/AccountPageError.view"; import { AccountPageLoaded } from "./components/AccountPageLoaded.view"; -import { AccountPageLoading } from "./components/AccountPageLoading.view"; +import { AccountPageLoading } from "./components/AccountPageLoading/AccountPageLoading.view"; type AccountPageProps = { accountId?: string }; diff --git a/src/pages/account/ui/AccountPage.vm.test.tsx b/src/pages/account/ui/AccountPage/AccountPage.vm.test.tsx similarity index 100% rename from src/pages/account/ui/AccountPage.vm.test.tsx rename to src/pages/account/ui/AccountPage/AccountPage.vm.test.tsx diff --git a/src/pages/account/ui/AccountPage.vm.ts b/src/pages/account/ui/AccountPage/AccountPage.vm.ts similarity index 100% rename from src/pages/account/ui/AccountPage.vm.ts rename to src/pages/account/ui/AccountPage/AccountPage.vm.ts diff --git a/src/pages/account/ui/components/AccountHeading.view.tsx b/src/pages/account/ui/AccountPage/components/AccountHeading.view.tsx similarity index 100% rename from src/pages/account/ui/components/AccountHeading.view.tsx rename to src/pages/account/ui/AccountPage/components/AccountHeading.view.tsx diff --git a/src/pages/account/ui/components/AccountPageEmpty.view.tsx b/src/pages/account/ui/AccountPage/components/AccountPageEmpty.view.tsx similarity index 91% rename from src/pages/account/ui/components/AccountPageEmpty.view.tsx rename to src/pages/account/ui/AccountPage/components/AccountPageEmpty.view.tsx index 0292eb7..59ef9ca 100644 --- a/src/pages/account/ui/components/AccountPageEmpty.view.tsx +++ b/src/pages/account/ui/AccountPage/components/AccountPageEmpty.view.tsx @@ -11,8 +11,8 @@ import type { } from "../AccountPage.vm"; import { AccountHeading } from "./AccountHeading.view"; import { IncomeSummary } from "./IncomeSummary.view"; -import { PortfolioRefreshState } from "./PortfolioRefreshState.view"; -import { PortfolioStructure } from "./PortfolioStructure"; +import { PortfolioRefreshState } from "./PortfolioRefreshState/PortfolioRefreshState.view"; +import { PortfolioStructure } from "./PortfolioStructure/PortfolioStructure"; import { RecentOperations } from "./RecentOperations.view"; type AccountPageEmptyProps = { diff --git a/src/pages/account/ui/components/AccountPageError.view.tsx b/src/pages/account/ui/AccountPage/components/AccountPageError.view.tsx similarity index 100% rename from src/pages/account/ui/components/AccountPageError.view.tsx rename to src/pages/account/ui/AccountPage/components/AccountPageError.view.tsx diff --git a/src/pages/account/ui/components/AccountPageLoaded.view.tsx b/src/pages/account/ui/AccountPage/components/AccountPageLoaded.view.tsx similarity index 94% rename from src/pages/account/ui/components/AccountPageLoaded.view.tsx rename to src/pages/account/ui/AccountPage/components/AccountPageLoaded.view.tsx index 5c0a6c6..c2db531 100644 --- a/src/pages/account/ui/components/AccountPageLoaded.view.tsx +++ b/src/pages/account/ui/AccountPage/components/AccountPageLoaded.view.tsx @@ -13,10 +13,10 @@ import type { AccountPageRecentOperations, } from "../AccountPage.vm"; import { AccountHeading } from "./AccountHeading.view"; -import { CurrencyCards } from "./CurrencyCards.view"; +import { CurrencyCards } from "./CurrencyCards/CurrencyCards.view"; import { IncomeSummary } from "./IncomeSummary.view"; -import { PortfolioRefreshState } from "./PortfolioRefreshState.view"; -import { PortfolioStructure } from "./PortfolioStructure"; +import { PortfolioRefreshState } from "./PortfolioRefreshState/PortfolioRefreshState.view"; +import { PortfolioStructure } from "./PortfolioStructure/PortfolioStructure"; import { PositionSection } from "./PositionSection.view"; import { RecentOperations } from "./RecentOperations.view"; diff --git a/src/pages/account/ui/components/AccountPageLoading.stories.tsx b/src/pages/account/ui/AccountPage/components/AccountPageLoading/AccountPageLoading.stories.tsx similarity index 100% rename from src/pages/account/ui/components/AccountPageLoading.stories.tsx rename to src/pages/account/ui/AccountPage/components/AccountPageLoading/AccountPageLoading.stories.tsx diff --git a/src/pages/account/ui/components/AccountPageLoading.view.tsx b/src/pages/account/ui/AccountPage/components/AccountPageLoading/AccountPageLoading.view.tsx similarity index 94% rename from src/pages/account/ui/components/AccountPageLoading.view.tsx rename to src/pages/account/ui/AccountPage/components/AccountPageLoading/AccountPageLoading.view.tsx index 47a6a97..c5e6553 100644 --- a/src/pages/account/ui/components/AccountPageLoading.view.tsx +++ b/src/pages/account/ui/AccountPage/components/AccountPageLoading/AccountPageLoading.view.tsx @@ -2,7 +2,7 @@ import { Paper, SimpleGrid, Skeleton } from "@mantine/core"; import { LoadingSkeleton } from "@wealthledger/ui"; import type { FC } from "react"; import { useTranslation } from "react-i18next"; -import classes from "../AccountPage.module.css"; +import classes from "../../AccountPage.module.css"; const AccountPageLoading: FC = () => { const { t } = useTranslation(); diff --git a/src/pages/account/ui/components/CurrencyCards.test.tsx b/src/pages/account/ui/AccountPage/components/CurrencyCards/CurrencyCards.test.tsx similarity index 100% rename from src/pages/account/ui/components/CurrencyCards.test.tsx rename to src/pages/account/ui/AccountPage/components/CurrencyCards/CurrencyCards.test.tsx diff --git a/src/pages/account/ui/components/CurrencyCards.view.tsx b/src/pages/account/ui/AccountPage/components/CurrencyCards/CurrencyCards.view.tsx similarity index 97% rename from src/pages/account/ui/components/CurrencyCards.view.tsx rename to src/pages/account/ui/AccountPage/components/CurrencyCards/CurrencyCards.view.tsx index 9c3c2b8..63f2395 100644 --- a/src/pages/account/ui/components/CurrencyCards.view.tsx +++ b/src/pages/account/ui/AccountPage/components/CurrencyCards/CurrencyCards.view.tsx @@ -3,7 +3,7 @@ import type { FC } from "react"; import { useTranslation } from "react-i18next"; import type { Portfolio } from "@/entities/portfolio"; import { formatDecimal } from "@/shared/lib"; -import classes from "../AccountPage.module.css"; +import classes from "../../AccountPage.module.css"; type CurrencyCardsProps = { amounts: Portfolio["totalsByCurrency"]; diff --git a/src/pages/account/ui/components/IncomeSummary.view.tsx b/src/pages/account/ui/AccountPage/components/IncomeSummary.view.tsx similarity index 100% rename from src/pages/account/ui/components/IncomeSummary.view.tsx rename to src/pages/account/ui/AccountPage/components/IncomeSummary.view.tsx diff --git a/src/pages/account/ui/components/PortfolioRefreshState.stories.tsx b/src/pages/account/ui/AccountPage/components/PortfolioRefreshState/PortfolioRefreshState.stories.tsx similarity index 96% rename from src/pages/account/ui/components/PortfolioRefreshState.stories.tsx rename to src/pages/account/ui/AccountPage/components/PortfolioRefreshState/PortfolioRefreshState.stories.tsx index 5c7358b..6335618 100644 --- a/src/pages/account/ui/components/PortfolioRefreshState.stories.tsx +++ b/src/pages/account/ui/AccountPage/components/PortfolioRefreshState/PortfolioRefreshState.stories.tsx @@ -1,7 +1,7 @@ import { Stack } from "@mantine/core"; import type { Meta, StoryObj } from "@storybook/react-vite"; import { fn } from "storybook/test"; -import { CurrencyCards } from "./CurrencyCards.view"; +import { CurrencyCards } from "../CurrencyCards/CurrencyCards.view"; import { PortfolioRefreshState } from "./PortfolioRefreshState.view"; const meta = { diff --git a/src/pages/account/ui/components/PortfolioRefreshState.view.tsx b/src/pages/account/ui/AccountPage/components/PortfolioRefreshState/PortfolioRefreshState.view.tsx similarity index 100% rename from src/pages/account/ui/components/PortfolioRefreshState.view.tsx rename to src/pages/account/ui/AccountPage/components/PortfolioRefreshState/PortfolioRefreshState.view.tsx diff --git a/src/pages/account/ui/components/PortfolioStructure.module.css b/src/pages/account/ui/AccountPage/components/PortfolioStructure/PortfolioStructure.module.css similarity index 100% rename from src/pages/account/ui/components/PortfolioStructure.module.css rename to src/pages/account/ui/AccountPage/components/PortfolioStructure/PortfolioStructure.module.css diff --git a/src/pages/account/ui/components/PortfolioStructure.stories.tsx b/src/pages/account/ui/AccountPage/components/PortfolioStructure/PortfolioStructure.stories.tsx similarity index 100% rename from src/pages/account/ui/components/PortfolioStructure.stories.tsx rename to src/pages/account/ui/AccountPage/components/PortfolioStructure/PortfolioStructure.stories.tsx diff --git a/src/pages/account/ui/components/PortfolioStructure.test.tsx b/src/pages/account/ui/AccountPage/components/PortfolioStructure/PortfolioStructure.test.tsx similarity index 100% rename from src/pages/account/ui/components/PortfolioStructure.test.tsx rename to src/pages/account/ui/AccountPage/components/PortfolioStructure/PortfolioStructure.test.tsx diff --git a/src/pages/account/ui/components/PortfolioStructure.tsx b/src/pages/account/ui/AccountPage/components/PortfolioStructure/PortfolioStructure.tsx similarity index 100% rename from src/pages/account/ui/components/PortfolioStructure.tsx rename to src/pages/account/ui/AccountPage/components/PortfolioStructure/PortfolioStructure.tsx diff --git a/src/pages/account/ui/components/PortfolioStructure.view.tsx b/src/pages/account/ui/AccountPage/components/PortfolioStructure/PortfolioStructure.view.tsx similarity index 100% rename from src/pages/account/ui/components/PortfolioStructure.view.tsx rename to src/pages/account/ui/AccountPage/components/PortfolioStructure/PortfolioStructure.view.tsx diff --git a/src/pages/account/ui/components/PositionCard.stories.tsx b/src/pages/account/ui/AccountPage/components/PositionCard/PositionCard.stories.tsx similarity index 98% rename from src/pages/account/ui/components/PositionCard.stories.tsx rename to src/pages/account/ui/AccountPage/components/PositionCard/PositionCard.stories.tsx index a00c986..c241eae 100644 --- a/src/pages/account/ui/components/PositionCard.stories.tsx +++ b/src/pages/account/ui/AccountPage/components/PositionCard/PositionCard.stories.tsx @@ -1,5 +1,5 @@ import type { Meta, StoryObj } from "@storybook/react-vite"; -import type { AccountPagePosition } from "../AccountPage.vm"; +import type { AccountPagePosition } from "../../AccountPage.vm"; import { PositionCard } from "./PositionCard.view"; const syntheticPosition = { diff --git a/src/pages/account/ui/components/PositionCard.view.tsx b/src/pages/account/ui/AccountPage/components/PositionCard/PositionCard.view.tsx similarity index 96% rename from src/pages/account/ui/components/PositionCard.view.tsx rename to src/pages/account/ui/AccountPage/components/PositionCard/PositionCard.view.tsx index 7505478..5984ce6 100644 --- a/src/pages/account/ui/components/PositionCard.view.tsx +++ b/src/pages/account/ui/AccountPage/components/PositionCard/PositionCard.view.tsx @@ -3,12 +3,12 @@ import type { FC } from "react"; import { useTranslation } from "react-i18next"; import { Link } from "react-router"; import { formatMoney } from "@/shared/lib"; -import classes from "../AccountPage.module.css"; +import classes from "../../AccountPage.module.css"; import type { AccountPagePosition, AccountPagePositionSection, -} from "../AccountPage.vm"; -import { PositionLogo } from "./PositionLogo.view"; +} from "../../AccountPage.vm"; +import { PositionLogo } from "../PositionLogo.view"; type PositionCardProps = { kind: AccountPagePositionSection["kind"]; diff --git a/src/pages/account/ui/components/PositionGroupCard.view.tsx b/src/pages/account/ui/AccountPage/components/PositionGroupCard.view.tsx similarity index 100% rename from src/pages/account/ui/components/PositionGroupCard.view.tsx rename to src/pages/account/ui/AccountPage/components/PositionGroupCard.view.tsx diff --git a/src/pages/account/ui/components/PositionLogo.view.tsx b/src/pages/account/ui/AccountPage/components/PositionLogo.view.tsx similarity index 100% rename from src/pages/account/ui/components/PositionLogo.view.tsx rename to src/pages/account/ui/AccountPage/components/PositionLogo.view.tsx diff --git a/src/pages/account/ui/components/PositionSection.view.tsx b/src/pages/account/ui/AccountPage/components/PositionSection.view.tsx similarity index 92% rename from src/pages/account/ui/components/PositionSection.view.tsx rename to src/pages/account/ui/AccountPage/components/PositionSection.view.tsx index 6e2667b..2639826 100644 --- a/src/pages/account/ui/components/PositionSection.view.tsx +++ b/src/pages/account/ui/AccountPage/components/PositionSection.view.tsx @@ -1,7 +1,7 @@ import { SimpleGrid } from "@mantine/core"; import type { FC } from "react"; import type { AccountPagePositionSection } from "../AccountPage.vm"; -import { PositionCard } from "./PositionCard.view"; +import { PositionCard } from "./PositionCard/PositionCard.view"; import { PositionGroupCard } from "./PositionGroupCard.view"; type PositionSectionProps = { diff --git a/src/pages/account/ui/components/RecentOperations.view.tsx b/src/pages/account/ui/AccountPage/components/RecentOperations.view.tsx similarity index 100% rename from src/pages/account/ui/components/RecentOperations.view.tsx rename to src/pages/account/ui/AccountPage/components/RecentOperations.view.tsx diff --git a/src/pages/account/ui/position-groups.test.tsx b/src/pages/account/ui/AccountPage/position-groups.test.tsx similarity index 100% rename from src/pages/account/ui/position-groups.test.tsx rename to src/pages/account/ui/AccountPage/position-groups.test.tsx diff --git a/src/pages/accounts/index.ts b/src/pages/accounts/index.ts index 2bb8099..b8e2d6a 100644 --- a/src/pages/accounts/index.ts +++ b/src/pages/accounts/index.ts @@ -1 +1 @@ -export { AccountsPage } from "./ui/AccountsPage"; +export { AccountsPage } from "./ui/AccountsPage/AccountsPage"; diff --git a/src/pages/accounts/ui/AccountsPage.test.tsx b/src/pages/accounts/ui/AccountsPage/AccountsPage.test.tsx similarity index 100% rename from src/pages/accounts/ui/AccountsPage.test.tsx rename to src/pages/accounts/ui/AccountsPage/AccountsPage.test.tsx diff --git a/src/pages/accounts/ui/AccountsPage.tsx b/src/pages/accounts/ui/AccountsPage/AccountsPage.tsx similarity index 100% rename from src/pages/accounts/ui/AccountsPage.tsx rename to src/pages/accounts/ui/AccountsPage/AccountsPage.tsx diff --git a/src/pages/accounts/ui/AccountsPage.vm.ts b/src/pages/accounts/ui/AccountsPage/AccountsPage.vm.ts similarity index 100% rename from src/pages/accounts/ui/AccountsPage.vm.ts rename to src/pages/accounts/ui/AccountsPage/AccountsPage.vm.ts diff --git a/src/pages/accounts/ui/components/AccountsPageEmpty.view.tsx b/src/pages/accounts/ui/AccountsPage/components/AccountsPageEmpty.view.tsx similarity index 100% rename from src/pages/accounts/ui/components/AccountsPageEmpty.view.tsx rename to src/pages/accounts/ui/AccountsPage/components/AccountsPageEmpty.view.tsx diff --git a/src/pages/accounts/ui/components/AccountsPageError.view.tsx b/src/pages/accounts/ui/AccountsPage/components/AccountsPageError.view.tsx similarity index 100% rename from src/pages/accounts/ui/components/AccountsPageError.view.tsx rename to src/pages/accounts/ui/AccountsPage/components/AccountsPageError.view.tsx diff --git a/src/pages/accounts/ui/components/AccountsPageLoaded.view.tsx b/src/pages/accounts/ui/AccountsPage/components/AccountsPageLoaded.view.tsx similarity index 100% rename from src/pages/accounts/ui/components/AccountsPageLoaded.view.tsx rename to src/pages/accounts/ui/AccountsPage/components/AccountsPageLoaded.view.tsx diff --git a/src/pages/accounts/ui/components/AccountsPageLoading.view.tsx b/src/pages/accounts/ui/AccountsPage/components/AccountsPageLoading.view.tsx similarity index 100% rename from src/pages/accounts/ui/components/AccountsPageLoading.view.tsx rename to src/pages/accounts/ui/AccountsPage/components/AccountsPageLoading.view.tsx diff --git a/src/pages/accounts/ui/components/AccountsRefreshState.view.tsx b/src/pages/accounts/ui/AccountsPage/components/AccountsRefreshState.view.tsx similarity index 100% rename from src/pages/accounts/ui/components/AccountsRefreshState.view.tsx rename to src/pages/accounts/ui/AccountsPage/components/AccountsRefreshState.view.tsx diff --git a/src/pages/bond/index.ts b/src/pages/bond/index.ts index 5b92960..3b67849 100644 --- a/src/pages/bond/index.ts +++ b/src/pages/bond/index.ts @@ -1 +1 @@ -export { BondPage } from "./ui/BondPage"; +export { BondPage } from "./ui/BondPage/BondPage"; diff --git a/src/pages/bond/ui/BondPage.module.css b/src/pages/bond/ui/BondPage/BondPage.module.css similarity index 100% rename from src/pages/bond/ui/BondPage.module.css rename to src/pages/bond/ui/BondPage/BondPage.module.css diff --git a/src/pages/bond/ui/BondPage.test.tsx b/src/pages/bond/ui/BondPage/BondPage.test.tsx similarity index 100% rename from src/pages/bond/ui/BondPage.test.tsx rename to src/pages/bond/ui/BondPage/BondPage.test.tsx diff --git a/src/pages/bond/ui/BondPage.tsx b/src/pages/bond/ui/BondPage/BondPage.tsx similarity index 100% rename from src/pages/bond/ui/BondPage.tsx rename to src/pages/bond/ui/BondPage/BondPage.tsx diff --git a/src/pages/bond/ui/BondPage.view.tsx b/src/pages/bond/ui/BondPage/BondPage.view.tsx similarity index 100% rename from src/pages/bond/ui/BondPage.view.tsx rename to src/pages/bond/ui/BondPage/BondPage.view.tsx diff --git a/src/pages/bond/ui/BondPage.vm.ts b/src/pages/bond/ui/BondPage/BondPage.vm.ts similarity index 100% rename from src/pages/bond/ui/BondPage.vm.ts rename to src/pages/bond/ui/BondPage/BondPage.vm.ts diff --git a/src/pages/bonds/index.ts b/src/pages/bonds/index.ts index 4328b67..3322d68 100644 --- a/src/pages/bonds/index.ts +++ b/src/pages/bonds/index.ts @@ -1 +1 @@ -export { BondsPage } from "./ui/BondsPage"; +export { BondsPage } from "./ui/BondsPage/BondsPage"; diff --git a/src/pages/bonds/ui/BondsPage.module.css b/src/pages/bonds/ui/BondsPage/BondsPage.module.css similarity index 100% rename from src/pages/bonds/ui/BondsPage.module.css rename to src/pages/bonds/ui/BondsPage/BondsPage.module.css diff --git a/src/pages/bonds/ui/BondsPage.test.tsx b/src/pages/bonds/ui/BondsPage/BondsPage.test.tsx similarity index 100% rename from src/pages/bonds/ui/BondsPage.test.tsx rename to src/pages/bonds/ui/BondsPage/BondsPage.test.tsx diff --git a/src/pages/bonds/ui/BondsPage.tsx b/src/pages/bonds/ui/BondsPage/BondsPage.tsx similarity index 100% rename from src/pages/bonds/ui/BondsPage.tsx rename to src/pages/bonds/ui/BondsPage/BondsPage.tsx diff --git a/src/pages/bonds/ui/BondsPage.view.tsx b/src/pages/bonds/ui/BondsPage/BondsPage.view.tsx similarity index 100% rename from src/pages/bonds/ui/BondsPage.view.tsx rename to src/pages/bonds/ui/BondsPage/BondsPage.view.tsx diff --git a/src/pages/bonds/ui/BondsPage.vm.ts b/src/pages/bonds/ui/BondsPage/BondsPage.vm.ts similarity index 100% rename from src/pages/bonds/ui/BondsPage.vm.ts rename to src/pages/bonds/ui/BondsPage/BondsPage.vm.ts diff --git a/src/pages/card/index.ts b/src/pages/card/index.ts index 7d3a361..db78910 100644 --- a/src/pages/card/index.ts +++ b/src/pages/card/index.ts @@ -1 +1 @@ -export { CardPage } from "./ui/CardPage"; +export { CardPage } from "./ui/CardPage/CardPage"; diff --git a/src/pages/card/ui/CardPage.module.css b/src/pages/card/ui/CardPage/CardPage.module.css similarity index 100% rename from src/pages/card/ui/CardPage.module.css rename to src/pages/card/ui/CardPage/CardPage.module.css diff --git a/src/pages/card/ui/CardPage.test.tsx b/src/pages/card/ui/CardPage/CardPage.test.tsx similarity index 100% rename from src/pages/card/ui/CardPage.test.tsx rename to src/pages/card/ui/CardPage/CardPage.test.tsx diff --git a/src/pages/card/ui/CardPage.tsx b/src/pages/card/ui/CardPage/CardPage.tsx similarity index 86% rename from src/pages/card/ui/CardPage.tsx rename to src/pages/card/ui/CardPage/CardPage.tsx index 64d95b2..4ffac98 100644 --- a/src/pages/card/ui/CardPage.tsx +++ b/src/pages/card/ui/CardPage/CardPage.tsx @@ -1,9 +1,9 @@ import type { FC } from "react"; import { BankCardForm } from "@/entities/bank-card"; +import { DeleteOperation } from "../DeleteOperation/DeleteOperation"; +import { OperationForm } from "../OperationForm/OperationForm"; import { CardPageView } from "./CardPage.view"; import { useCardPageVm } from "./CardPage.vm"; -import { DeleteOperation } from "./DeleteOperation"; -import { OperationForm } from "./OperationForm"; const CardPage: FC = () => { const vm = useCardPageVm(); diff --git a/src/pages/card/ui/CardPage.view.tsx b/src/pages/card/ui/CardPage/CardPage.view.tsx similarity index 100% rename from src/pages/card/ui/CardPage.view.tsx rename to src/pages/card/ui/CardPage/CardPage.view.tsx diff --git a/src/pages/card/ui/CardPage.vm.ts b/src/pages/card/ui/CardPage/CardPage.vm.ts similarity index 100% rename from src/pages/card/ui/CardPage.vm.ts rename to src/pages/card/ui/CardPage/CardPage.vm.ts diff --git a/src/pages/card/ui/DeleteOperation.test.tsx b/src/pages/card/ui/DeleteOperation/DeleteOperation.test.tsx similarity index 100% rename from src/pages/card/ui/DeleteOperation.test.tsx rename to src/pages/card/ui/DeleteOperation/DeleteOperation.test.tsx diff --git a/src/pages/card/ui/DeleteOperation.tsx b/src/pages/card/ui/DeleteOperation/DeleteOperation.tsx similarity index 100% rename from src/pages/card/ui/DeleteOperation.tsx rename to src/pages/card/ui/DeleteOperation/DeleteOperation.tsx diff --git a/src/pages/card/ui/OperationForm.module.css b/src/pages/card/ui/OperationForm/OperationForm.module.css similarity index 100% rename from src/pages/card/ui/OperationForm.module.css rename to src/pages/card/ui/OperationForm/OperationForm.module.css diff --git a/src/pages/card/ui/OperationForm.stories.tsx b/src/pages/card/ui/OperationForm/OperationForm.stories.tsx similarity index 100% rename from src/pages/card/ui/OperationForm.stories.tsx rename to src/pages/card/ui/OperationForm/OperationForm.stories.tsx diff --git a/src/pages/card/ui/OperationForm.test.tsx b/src/pages/card/ui/OperationForm/OperationForm.test.tsx similarity index 100% rename from src/pages/card/ui/OperationForm.test.tsx rename to src/pages/card/ui/OperationForm/OperationForm.test.tsx diff --git a/src/pages/card/ui/OperationForm.tsx b/src/pages/card/ui/OperationForm/OperationForm.tsx similarity index 100% rename from src/pages/card/ui/OperationForm.tsx rename to src/pages/card/ui/OperationForm/OperationForm.tsx diff --git a/src/pages/card/ui/OperationForm.types.ts b/src/pages/card/ui/OperationForm/OperationForm.types.ts similarity index 100% rename from src/pages/card/ui/OperationForm.types.ts rename to src/pages/card/ui/OperationForm/OperationForm.types.ts diff --git a/src/pages/card/ui/OperationForm.view.tsx b/src/pages/card/ui/OperationForm/OperationForm.view.tsx similarity index 100% rename from src/pages/card/ui/OperationForm.view.tsx rename to src/pages/card/ui/OperationForm/OperationForm.view.tsx diff --git a/src/pages/card/ui/OperationForm.vm.ts b/src/pages/card/ui/OperationForm/OperationForm.vm.ts similarity index 100% rename from src/pages/card/ui/OperationForm.vm.ts rename to src/pages/card/ui/OperationForm/OperationForm.vm.ts diff --git a/src/pages/cards/index.ts b/src/pages/cards/index.ts index 4092743..444a7d7 100644 --- a/src/pages/cards/index.ts +++ b/src/pages/cards/index.ts @@ -1 +1 @@ -export { CardsPage } from "./ui/CardsPage"; +export { CardsPage } from "./ui/CardsPage/CardsPage"; diff --git a/src/pages/cards/ui/CardsPage.module.css b/src/pages/cards/ui/CardsPage/CardsPage.module.css similarity index 100% rename from src/pages/cards/ui/CardsPage.module.css rename to src/pages/cards/ui/CardsPage/CardsPage.module.css diff --git a/src/pages/cards/ui/CardsPage.test.tsx b/src/pages/cards/ui/CardsPage/CardsPage.test.tsx similarity index 100% rename from src/pages/cards/ui/CardsPage.test.tsx rename to src/pages/cards/ui/CardsPage/CardsPage.test.tsx diff --git a/src/pages/cards/ui/CardsPage.tsx b/src/pages/cards/ui/CardsPage/CardsPage.tsx similarity index 100% rename from src/pages/cards/ui/CardsPage.tsx rename to src/pages/cards/ui/CardsPage/CardsPage.tsx diff --git a/src/pages/cards/ui/CardsPage.view.tsx b/src/pages/cards/ui/CardsPage/CardsPage.view.tsx similarity index 100% rename from src/pages/cards/ui/CardsPage.view.tsx rename to src/pages/cards/ui/CardsPage/CardsPage.view.tsx diff --git a/src/pages/cards/ui/CardsPage.vm.ts b/src/pages/cards/ui/CardsPage/CardsPage.vm.ts similarity index 100% rename from src/pages/cards/ui/CardsPage.vm.ts rename to src/pages/cards/ui/CardsPage/CardsPage.vm.ts diff --git a/src/pages/stock/index.ts b/src/pages/stock/index.ts index 03ed1dd..d959b4b 100644 --- a/src/pages/stock/index.ts +++ b/src/pages/stock/index.ts @@ -1 +1 @@ -export { StockPage } from "./ui/StockPage"; +export { StockPage } from "./ui/StockPage/StockPage"; diff --git a/src/pages/stock/ui/StockPage.module.css b/src/pages/stock/ui/StockPage/StockPage.module.css similarity index 100% rename from src/pages/stock/ui/StockPage.module.css rename to src/pages/stock/ui/StockPage/StockPage.module.css diff --git a/src/pages/stock/ui/StockPage.test.tsx b/src/pages/stock/ui/StockPage/StockPage.test.tsx similarity index 100% rename from src/pages/stock/ui/StockPage.test.tsx rename to src/pages/stock/ui/StockPage/StockPage.test.tsx diff --git a/src/pages/stock/ui/StockPage.tsx b/src/pages/stock/ui/StockPage/StockPage.tsx similarity index 100% rename from src/pages/stock/ui/StockPage.tsx rename to src/pages/stock/ui/StockPage/StockPage.tsx diff --git a/src/pages/stock/ui/StockPage.view.tsx b/src/pages/stock/ui/StockPage/StockPage.view.tsx similarity index 100% rename from src/pages/stock/ui/StockPage.view.tsx rename to src/pages/stock/ui/StockPage/StockPage.view.tsx diff --git a/src/pages/stock/ui/StockPage.vm.ts b/src/pages/stock/ui/StockPage/StockPage.vm.ts similarity index 100% rename from src/pages/stock/ui/StockPage.vm.ts rename to src/pages/stock/ui/StockPage/StockPage.vm.ts diff --git a/src/pages/stock/ui/components/StockEvents.view.tsx b/src/pages/stock/ui/StockPage/components/StockEvents.view.tsx similarity index 100% rename from src/pages/stock/ui/components/StockEvents.view.tsx rename to src/pages/stock/ui/StockPage/components/StockEvents.view.tsx diff --git a/src/pages/stocks/index.ts b/src/pages/stocks/index.ts index 1cbf53c..d536fa8 100644 --- a/src/pages/stocks/index.ts +++ b/src/pages/stocks/index.ts @@ -1 +1 @@ -export { StocksPage } from "./ui/StocksPage"; +export { StocksPage } from "./ui/StocksPage/StocksPage"; diff --git a/src/pages/stocks/ui/StocksPage.module.css b/src/pages/stocks/ui/StocksPage/StocksPage.module.css similarity index 100% rename from src/pages/stocks/ui/StocksPage.module.css rename to src/pages/stocks/ui/StocksPage/StocksPage.module.css diff --git a/src/pages/stocks/ui/StocksPage.test.tsx b/src/pages/stocks/ui/StocksPage/StocksPage.test.tsx similarity index 100% rename from src/pages/stocks/ui/StocksPage.test.tsx rename to src/pages/stocks/ui/StocksPage/StocksPage.test.tsx diff --git a/src/pages/stocks/ui/StocksPage.tsx b/src/pages/stocks/ui/StocksPage/StocksPage.tsx similarity index 100% rename from src/pages/stocks/ui/StocksPage.tsx rename to src/pages/stocks/ui/StocksPage/StocksPage.tsx diff --git a/src/pages/stocks/ui/StocksPage.view.tsx b/src/pages/stocks/ui/StocksPage/StocksPage.view.tsx similarity index 100% rename from src/pages/stocks/ui/StocksPage.view.tsx rename to src/pages/stocks/ui/StocksPage/StocksPage.view.tsx diff --git a/src/pages/stocks/ui/StocksPage.vm.ts b/src/pages/stocks/ui/StocksPage/StocksPage.vm.ts similarity index 100% rename from src/pages/stocks/ui/StocksPage.vm.ts rename to src/pages/stocks/ui/StocksPage/StocksPage.vm.ts diff --git a/src/test/storybook.test.tsx b/src/test/storybook.test.tsx index 53e895a..457eb1b 100644 --- a/src/test/storybook.test.tsx +++ b/src/test/storybook.test.tsx @@ -3,16 +3,16 @@ import { cleanup, fireEvent, render, screen } from "@testing-library/react"; import { fn } from "storybook/test"; import { afterEach, describe, expect, it, vi } from "vitest"; import preview from "../../.storybook/preview"; -import * as UiLoadingStories from "../../packages/ui/src/LoadingSkeleton.stories"; -import * as StateStories from "../../packages/ui/src/StateView.stories"; -import * as AccountStories from "../entities/brokerage-account/ui/BrokerageAccountList.stories"; -import * as EventStories from "../entities/brokerage-event/ui/BrokerageEventsPreview.stories"; -import * as LoadingStories from "../pages/account/ui/components/AccountPageLoading.stories"; -import * as RefreshStories from "../pages/account/ui/components/PortfolioRefreshState.stories"; -import * as PositionStories from "../pages/account/ui/components/PositionCard.stories"; -import * as IncomePeriodStories from "../pages/account-income/ui/components/IncomePeriodForm.stories"; +import * as UiLoadingStories from "../../packages/ui/src/LoadingSkeleton/LoadingSkeleton.stories"; +import * as StateStories from "../../packages/ui/src/StateView/StateView.stories"; +import * as AccountStories from "../entities/brokerage-account/ui/BrokerageAccountList/BrokerageAccountList.stories"; +import * as EventStories from "../entities/brokerage-event/ui/BrokerageEventsPreview/BrokerageEventsPreview.stories"; +import * as LoadingStories from "../pages/account/ui/AccountPage/components/AccountPageLoading/AccountPageLoading.stories"; +import * as RefreshStories from "../pages/account/ui/AccountPage/components/PortfolioRefreshState/PortfolioRefreshState.stories"; +import * as PositionStories from "../pages/account/ui/AccountPage/components/PositionCard/PositionCard.stories"; +import * as IncomePeriodStories from "../pages/account-income/ui/AccountIncomePage/components/IncomePeriodForm/IncomePeriodForm.stories"; -import * as OperationStories from "../pages/card/ui/OperationForm.stories"; +import * as OperationStories from "../pages/card/ui/OperationForm/OperationForm.stories"; afterEach(() => vi.restoreAllMocks());