feat: add pages and routing
This commit is contained in:
parent
b55b4e761e
commit
8db726a505
@ -1,6 +1,6 @@
|
|||||||
# Money Controll Frontend SPA
|
# Money Controll Frontend SPA
|
||||||
***
|
***
|
||||||
### Application to control your income and outcome money, planning your personal budget
|
### Application path control your income and outcome money, planning your personal budget
|
||||||
|
|
||||||
### Scripts
|
### Scripts
|
||||||
- `start:dev` - start local application on [`https://localhost:3000`](https://localhost:3000)
|
- `start:dev` - start local application on [`https://localhost:3000`](https://localhost:3000)
|
||||||
|
|||||||
BIN
offline_node_modules/@babel-helper-module-imports-npm-7.24.6-be1121ea22-e0db3fbfcd.zip
generated
Normal file
BIN
offline_node_modules/@babel-helper-module-imports-npm-7.24.6-be1121ea22-e0db3fbfcd.zip
generated
Normal file
Binary file not shown.
BIN
offline_node_modules/@babel-helper-string-parser-npm-7.24.6-ab02401caf-95115bf676.zip
generated
Normal file
BIN
offline_node_modules/@babel-helper-string-parser-npm-7.24.6-ab02401caf-95115bf676.zip
generated
Normal file
Binary file not shown.
BIN
offline_node_modules/@babel-helper-validator-identifier-npm-7.24.6-cf629561b7-d29d2e3fca.zip
generated
Normal file
BIN
offline_node_modules/@babel-helper-validator-identifier-npm-7.24.6-cf629561b7-d29d2e3fca.zip
generated
Normal file
Binary file not shown.
BIN
offline_node_modules/@babel-runtime-npm-7.24.6-3acd4a9fd9-224ad205de.zip
generated
Normal file
BIN
offline_node_modules/@babel-runtime-npm-7.24.6-3acd4a9fd9-224ad205de.zip
generated
Normal file
Binary file not shown.
BIN
offline_node_modules/@babel-types-npm-7.24.6-5a7d5202c4-1d94d92d97.zip
generated
Normal file
BIN
offline_node_modules/@babel-types-npm-7.24.6-5a7d5202c4-1d94d92d97.zip
generated
Normal file
Binary file not shown.
BIN
offline_node_modules/@emotion-babel-plugin-npm-11.11.0-c1dcc4c884-89cbb6ec0e.zip
generated
Normal file
BIN
offline_node_modules/@emotion-babel-plugin-npm-11.11.0-c1dcc4c884-89cbb6ec0e.zip
generated
Normal file
Binary file not shown.
BIN
offline_node_modules/@emotion-cache-npm-11.11.0-3e6e449071-a23ab5ab2f.zip
generated
Normal file
BIN
offline_node_modules/@emotion-cache-npm-11.11.0-3e6e449071-a23ab5ab2f.zip
generated
Normal file
Binary file not shown.
BIN
offline_node_modules/@emotion-hash-npm-0.9.1-650576c2b1-cdafe5da63.zip
generated
Normal file
BIN
offline_node_modules/@emotion-hash-npm-0.9.1-650576c2b1-cdafe5da63.zip
generated
Normal file
Binary file not shown.
BIN
offline_node_modules/@emotion-is-prop-valid-npm-1.2.2-53f93f2b2d-bb1530dcb4.zip
generated
Normal file
BIN
offline_node_modules/@emotion-is-prop-valid-npm-1.2.2-53f93f2b2d-bb1530dcb4.zip
generated
Normal file
Binary file not shown.
BIN
offline_node_modules/@emotion-memoize-npm-0.8.1-9b1e35ff15-dffed372fc.zip
generated
Normal file
BIN
offline_node_modules/@emotion-memoize-npm-0.8.1-9b1e35ff15-dffed372fc.zip
generated
Normal file
Binary file not shown.
BIN
offline_node_modules/@emotion-react-npm-11.11.4-52eda8b8fe-6df892fd9e.zip
generated
Normal file
BIN
offline_node_modules/@emotion-react-npm-11.11.4-52eda8b8fe-6df892fd9e.zip
generated
Normal file
Binary file not shown.
BIN
offline_node_modules/@emotion-serialize-npm-1.1.4-5b0b39d76a-164d936f72.zip
generated
Normal file
BIN
offline_node_modules/@emotion-serialize-npm-1.1.4-5b0b39d76a-164d936f72.zip
generated
Normal file
Binary file not shown.
BIN
offline_node_modules/@emotion-sheet-npm-1.2.2-a918ac483c-69827a1bfa.zip
generated
Normal file
BIN
offline_node_modules/@emotion-sheet-npm-1.2.2-a918ac483c-69827a1bfa.zip
generated
Normal file
Binary file not shown.
BIN
offline_node_modules/@emotion-styled-npm-11.11.5-f6c8a45c9e-27da6ad7f5.zip
generated
Normal file
BIN
offline_node_modules/@emotion-styled-npm-11.11.5-f6c8a45c9e-27da6ad7f5.zip
generated
Normal file
Binary file not shown.
BIN
offline_node_modules/@emotion-unitless-npm-0.8.1-bcf0a8f565-a1ed508628.zip
generated
Normal file
BIN
offline_node_modules/@emotion-unitless-npm-0.8.1-bcf0a8f565-a1ed508628.zip
generated
Normal file
Binary file not shown.
BIN
offline_node_modules/@emotion-use-insertion-effect-with-fallbacks-npm-1.0.1-730758c66c-a15b216794.zip
generated
Normal file
BIN
offline_node_modules/@emotion-use-insertion-effect-with-fallbacks-npm-1.0.1-730758c66c-a15b216794.zip
generated
Normal file
Binary file not shown.
BIN
offline_node_modules/@emotion-utils-npm-1.2.1-3d04f99348-db43ca8033.zip
generated
Normal file
BIN
offline_node_modules/@emotion-utils-npm-1.2.1-3d04f99348-db43ca8033.zip
generated
Normal file
Binary file not shown.
BIN
offline_node_modules/@emotion-weak-memoize-npm-0.3.1-bfc18213af-ed514b3cb9.zip
generated
Normal file
BIN
offline_node_modules/@emotion-weak-memoize-npm-0.3.1-bfc18213af-ed514b3cb9.zip
generated
Normal file
Binary file not shown.
BIN
offline_node_modules/@floating-ui-core-npm-1.6.2-83764613ea-db2621dc68.zip
generated
Normal file
BIN
offline_node_modules/@floating-ui-core-npm-1.6.2-83764613ea-db2621dc68.zip
generated
Normal file
Binary file not shown.
BIN
offline_node_modules/@floating-ui-dom-npm-1.6.5-42fe2aed4f-ebdc14806f.zip
generated
Normal file
BIN
offline_node_modules/@floating-ui-dom-npm-1.6.5-42fe2aed4f-ebdc14806f.zip
generated
Normal file
Binary file not shown.
BIN
offline_node_modules/@floating-ui-react-dom-npm-2.1.0-6bd6adf553-9ee44dfeb2.zip
generated
Normal file
BIN
offline_node_modules/@floating-ui-react-dom-npm-2.1.0-6bd6adf553-9ee44dfeb2.zip
generated
Normal file
Binary file not shown.
BIN
offline_node_modules/@floating-ui-utils-npm-0.2.2-86598cb25a-b2becdcafd.zip
generated
Normal file
BIN
offline_node_modules/@floating-ui-utils-npm-0.2.2-86598cb25a-b2becdcafd.zip
generated
Normal file
Binary file not shown.
BIN
offline_node_modules/@mui-base-npm-5.0.0-beta.40-248417914d-631b4ee389.zip
generated
Normal file
BIN
offline_node_modules/@mui-base-npm-5.0.0-beta.40-248417914d-631b4ee389.zip
generated
Normal file
Binary file not shown.
BIN
offline_node_modules/@mui-core-downloads-tracker-npm-5.15.19-9ed77064af-90cd3eb953.zip
generated
Normal file
BIN
offline_node_modules/@mui-core-downloads-tracker-npm-5.15.19-9ed77064af-90cd3eb953.zip
generated
Normal file
Binary file not shown.
BIN
offline_node_modules/@mui-icons-material-npm-5.15.19-15b122e6ba-f2a4381b6a.zip
generated
Normal file
BIN
offline_node_modules/@mui-icons-material-npm-5.15.19-15b122e6ba-f2a4381b6a.zip
generated
Normal file
Binary file not shown.
BIN
offline_node_modules/@mui-material-npm-5.15.19-5d6fd3466f-388eb14bed.zip
generated
Normal file
BIN
offline_node_modules/@mui-material-npm-5.15.19-5d6fd3466f-388eb14bed.zip
generated
Normal file
Binary file not shown.
BIN
offline_node_modules/@mui-private-theming-npm-5.15.14-da7d55aa3f-2888950587.zip
generated
Normal file
BIN
offline_node_modules/@mui-private-theming-npm-5.15.14-da7d55aa3f-2888950587.zip
generated
Normal file
Binary file not shown.
BIN
offline_node_modules/@mui-styled-engine-npm-5.15.14-f2c4d6b014-0d262ea0b3.zip
generated
Normal file
BIN
offline_node_modules/@mui-styled-engine-npm-5.15.14-f2c4d6b014-0d262ea0b3.zip
generated
Normal file
Binary file not shown.
BIN
offline_node_modules/@mui-system-npm-5.15.15-c000fc1ae9-80724377ee.zip
generated
Normal file
BIN
offline_node_modules/@mui-system-npm-5.15.15-c000fc1ae9-80724377ee.zip
generated
Normal file
Binary file not shown.
BIN
offline_node_modules/@mui-types-npm-7.2.14-c3027ebada-d4e0a9fce4.zip
generated
Normal file
BIN
offline_node_modules/@mui-types-npm-7.2.14-c3027ebada-d4e0a9fce4.zip
generated
Normal file
Binary file not shown.
BIN
offline_node_modules/@mui-utils-npm-5.15.14-0912681c9c-3626598847.zip
generated
Normal file
BIN
offline_node_modules/@mui-utils-npm-5.15.14-0912681c9c-3626598847.zip
generated
Normal file
Binary file not shown.
BIN
offline_node_modules/@popperjs-core-npm-2.11.8-f1692e11a0-4681e682ab.zip
generated
Normal file
BIN
offline_node_modules/@popperjs-core-npm-2.11.8-f1692e11a0-4681e682ab.zip
generated
Normal file
Binary file not shown.
BIN
offline_node_modules/@types-parse-json-npm-4.0.2-f87f65692e-b1b863ac34.zip
generated
Normal file
BIN
offline_node_modules/@types-parse-json-npm-4.0.2-f87f65692e-b1b863ac34.zip
generated
Normal file
Binary file not shown.
BIN
offline_node_modules/@types-react-transition-group-npm-4.4.10-5e11bed850-3eb9bca143.zip
generated
Normal file
BIN
offline_node_modules/@types-react-transition-group-npm-4.4.10-5e11bed850-3eb9bca143.zip
generated
Normal file
Binary file not shown.
BIN
offline_node_modules/babel-plugin-macros-npm-3.1.0-320e781f4e-c6dfb15de9.zip
generated
Normal file
BIN
offline_node_modules/babel-plugin-macros-npm-3.1.0-320e781f4e-c6dfb15de9.zip
generated
Normal file
Binary file not shown.
BIN
offline_node_modules/clsx-npm-2.1.1-96125b98be-c4c8eb865f.zip
generated
Normal file
BIN
offline_node_modules/clsx-npm-2.1.1-96125b98be-c4c8eb865f.zip
generated
Normal file
Binary file not shown.
BIN
offline_node_modules/convert-source-map-npm-1.9.0-e294555f4b-281da55454.zip
generated
Normal file
BIN
offline_node_modules/convert-source-map-npm-1.9.0-e294555f4b-281da55454.zip
generated
Normal file
Binary file not shown.
BIN
offline_node_modules/cosmiconfig-npm-7.1.0-13a5090bcd-b923ff6af5.zip
generated
Normal file
BIN
offline_node_modules/cosmiconfig-npm-7.1.0-13a5090bcd-b923ff6af5.zip
generated
Normal file
Binary file not shown.
BIN
offline_node_modules/dom-helpers-npm-5.2.1-b38bb4470b-f735074d66.zip
generated
Normal file
BIN
offline_node_modules/dom-helpers-npm-5.2.1-b38bb4470b-f735074d66.zip
generated
Normal file
Binary file not shown.
Binary file not shown.
BIN
offline_node_modules/react-is-npm-18.3.1-370a81e1e9-f2f1e60010.zip
generated
Normal file
BIN
offline_node_modules/react-is-npm-18.3.1-370a81e1e9-f2f1e60010.zip
generated
Normal file
Binary file not shown.
BIN
offline_node_modules/react-transition-group-npm-4.4.5-98ea4ef96e-2ba754ba74.zip
generated
Normal file
BIN
offline_node_modules/react-transition-group-npm-4.4.5-98ea4ef96e-2ba754ba74.zip
generated
Normal file
Binary file not shown.
BIN
offline_node_modules/source-map-npm-0.5.7-7c3f035429-904e767bb9.zip
generated
Normal file
BIN
offline_node_modules/source-map-npm-0.5.7-7c3f035429-904e767bb9.zip
generated
Normal file
Binary file not shown.
BIN
offline_node_modules/stylis-npm-4.2.0-6b07f11c99-a7128ad5a8.zip
generated
Normal file
BIN
offline_node_modules/stylis-npm-4.2.0-6b07f11c99-a7128ad5a8.zip
generated
Normal file
Binary file not shown.
BIN
offline_node_modules/yaml-npm-1.10.2-0e780aebdf-5c28b9eb7a.zip
generated
Normal file
BIN
offline_node_modules/yaml-npm-1.10.2-0e780aebdf-5c28b9eb7a.zip
generated
Normal file
Binary file not shown.
@ -31,8 +31,11 @@
|
|||||||
},
|
},
|
||||||
"homepage": "https://gitlab.com/money-control2/web/frontend#readme",
|
"homepage": "https://gitlab.com/money-control2/web/frontend#readme",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"@emotion/react": "11.11.4",
|
||||||
|
"@emotion/styled": "11.11.5",
|
||||||
|
"@mui/icons-material": "^5.15.19",
|
||||||
|
"@mui/material": "5.15.19",
|
||||||
"classnames": "2.5.1",
|
"classnames": "2.5.1",
|
||||||
"normalize.css": "8.0.1",
|
|
||||||
"prop-types": "15.8.1",
|
"prop-types": "15.8.1",
|
||||||
"react": "18.3.1",
|
"react": "18.3.1",
|
||||||
"react-dnd": "16.0.1",
|
"react-dnd": "16.0.1",
|
||||||
@ -59,6 +62,5 @@
|
|||||||
"standard-version": "9.5.0",
|
"standard-version": "9.5.0",
|
||||||
"ts-jest": "29.1.4",
|
"ts-jest": "29.1.4",
|
||||||
"typescript": "5.4.5"
|
"typescript": "5.4.5"
|
||||||
},
|
}
|
||||||
"packageManager": "yarn@4.1.1"
|
|
||||||
}
|
}
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
public/assets/fonts/Comfortaa/comfortaa-latin-300-normal.woff2
Normal file
BIN
public/assets/fonts/Comfortaa/comfortaa-latin-300-normal.woff2
Normal file
Binary file not shown.
BIN
public/assets/fonts/Comfortaa/comfortaa-latin-400-normal.woff2
Normal file
BIN
public/assets/fonts/Comfortaa/comfortaa-latin-400-normal.woff2
Normal file
Binary file not shown.
BIN
public/assets/fonts/Comfortaa/comfortaa-latin-500-normal.woff2
Normal file
BIN
public/assets/fonts/Comfortaa/comfortaa-latin-500-normal.woff2
Normal file
Binary file not shown.
BIN
public/assets/fonts/Comfortaa/comfortaa-latin-600-normal.woff2
Normal file
BIN
public/assets/fonts/Comfortaa/comfortaa-latin-600-normal.woff2
Normal file
Binary file not shown.
BIN
public/assets/fonts/Comfortaa/comfortaa-latin-700-normal.woff2
Normal file
BIN
public/assets/fonts/Comfortaa/comfortaa-latin-700-normal.woff2
Normal file
Binary file not shown.
BIN
public/assets/fonts/Roboto/roboto-cyrillic-100-italic.woff2
Normal file
BIN
public/assets/fonts/Roboto/roboto-cyrillic-100-italic.woff2
Normal file
Binary file not shown.
BIN
public/assets/fonts/Roboto/roboto-cyrillic-100-normal.woff2
Normal file
BIN
public/assets/fonts/Roboto/roboto-cyrillic-100-normal.woff2
Normal file
Binary file not shown.
BIN
public/assets/fonts/Roboto/roboto-cyrillic-300-italic.woff2
Normal file
BIN
public/assets/fonts/Roboto/roboto-cyrillic-300-italic.woff2
Normal file
Binary file not shown.
BIN
public/assets/fonts/Roboto/roboto-cyrillic-300-normal.woff2
Normal file
BIN
public/assets/fonts/Roboto/roboto-cyrillic-300-normal.woff2
Normal file
Binary file not shown.
BIN
public/assets/fonts/Roboto/roboto-cyrillic-400-italic.woff2
Normal file
BIN
public/assets/fonts/Roboto/roboto-cyrillic-400-italic.woff2
Normal file
Binary file not shown.
BIN
public/assets/fonts/Roboto/roboto-cyrillic-400-normal.woff2
Normal file
BIN
public/assets/fonts/Roboto/roboto-cyrillic-400-normal.woff2
Normal file
Binary file not shown.
BIN
public/assets/fonts/Roboto/roboto-cyrillic-500-italic.woff2
Normal file
BIN
public/assets/fonts/Roboto/roboto-cyrillic-500-italic.woff2
Normal file
Binary file not shown.
BIN
public/assets/fonts/Roboto/roboto-cyrillic-500-normal.woff2
Normal file
BIN
public/assets/fonts/Roboto/roboto-cyrillic-500-normal.woff2
Normal file
Binary file not shown.
BIN
public/assets/fonts/Roboto/roboto-cyrillic-700-italic.woff2
Normal file
BIN
public/assets/fonts/Roboto/roboto-cyrillic-700-italic.woff2
Normal file
Binary file not shown.
BIN
public/assets/fonts/Roboto/roboto-cyrillic-700-normal.woff2
Normal file
BIN
public/assets/fonts/Roboto/roboto-cyrillic-700-normal.woff2
Normal file
Binary file not shown.
BIN
public/assets/fonts/Roboto/roboto-cyrillic-900-italic.woff2
Normal file
BIN
public/assets/fonts/Roboto/roboto-cyrillic-900-italic.woff2
Normal file
Binary file not shown.
BIN
public/assets/fonts/Roboto/roboto-cyrillic-900-normal.woff2
Normal file
BIN
public/assets/fonts/Roboto/roboto-cyrillic-900-normal.woff2
Normal file
Binary file not shown.
BIN
public/assets/fonts/Roboto/roboto-latin-100-italic.woff2
Normal file
BIN
public/assets/fonts/Roboto/roboto-latin-100-italic.woff2
Normal file
Binary file not shown.
BIN
public/assets/fonts/Roboto/roboto-latin-100-normal.woff2
Normal file
BIN
public/assets/fonts/Roboto/roboto-latin-100-normal.woff2
Normal file
Binary file not shown.
BIN
public/assets/fonts/Roboto/roboto-latin-300-italic.woff2
Normal file
BIN
public/assets/fonts/Roboto/roboto-latin-300-italic.woff2
Normal file
Binary file not shown.
BIN
public/assets/fonts/Roboto/roboto-latin-300-normal.woff2
Normal file
BIN
public/assets/fonts/Roboto/roboto-latin-300-normal.woff2
Normal file
Binary file not shown.
BIN
public/assets/fonts/Roboto/roboto-latin-400-italic.woff2
Normal file
BIN
public/assets/fonts/Roboto/roboto-latin-400-italic.woff2
Normal file
Binary file not shown.
BIN
public/assets/fonts/Roboto/roboto-latin-400-normal.woff2
Normal file
BIN
public/assets/fonts/Roboto/roboto-latin-400-normal.woff2
Normal file
Binary file not shown.
BIN
public/assets/fonts/Roboto/roboto-latin-500-italic.woff2
Normal file
BIN
public/assets/fonts/Roboto/roboto-latin-500-italic.woff2
Normal file
Binary file not shown.
BIN
public/assets/fonts/Roboto/roboto-latin-500-normal.woff2
Normal file
BIN
public/assets/fonts/Roboto/roboto-latin-500-normal.woff2
Normal file
Binary file not shown.
BIN
public/assets/fonts/Roboto/roboto-latin-700-italic.woff2
Normal file
BIN
public/assets/fonts/Roboto/roboto-latin-700-italic.woff2
Normal file
Binary file not shown.
BIN
public/assets/fonts/Roboto/roboto-latin-700-normal.woff2
Normal file
BIN
public/assets/fonts/Roboto/roboto-latin-700-normal.woff2
Normal file
Binary file not shown.
BIN
public/assets/fonts/Roboto/roboto-latin-900-italic.woff2
Normal file
BIN
public/assets/fonts/Roboto/roboto-latin-900-italic.woff2
Normal file
Binary file not shown.
BIN
public/assets/fonts/Roboto/roboto-latin-900-normal.woff2
Normal file
BIN
public/assets/fonts/Roboto/roboto-latin-900-normal.woff2
Normal file
Binary file not shown.
BIN
public/assets/images/404.png
Normal file
BIN
public/assets/images/404.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 203 KiB |
BIN
public/assets/images/oops.png
Normal file
BIN
public/assets/images/oops.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 16 KiB |
@ -1,11 +1,79 @@
|
|||||||
import { createBrowserRouter, RouterProvider as RRDRouterProvider } from 'react-router-dom';
|
import CalendarMonthIcon from '@mui/icons-material/CalendarMonth';
|
||||||
|
import FormatListBulletedIcon from '@mui/icons-material/FormatListBulleted';
|
||||||
|
import PieChartIcon from '@mui/icons-material/PieChart';
|
||||||
|
import { createBrowserRouter, Navigate, RouterProvider as RRDRouterProvider } from 'react-router-dom';
|
||||||
|
|
||||||
import { CalendarPage } from 'pages/CalendarPage';
|
// todo lazy & access
|
||||||
|
import { AnalyzePage, AnalyzePageToolbar } from 'pages/AnalyzePage';
|
||||||
|
import { ErrorPage, ErrorPageToolbar } from 'pages/ErrorPage';
|
||||||
|
import { PaymentsPage, PaymentsPageToolbar } from 'pages/PaymentsPage';
|
||||||
|
import { SchedulePage, SchedulePageToolbar } from 'pages/SchedulePage';
|
||||||
|
|
||||||
|
import { AsideMenuLayout } from 'widgets/AsideMenuLayout';
|
||||||
|
|
||||||
|
import type { ReactNode } from 'react';
|
||||||
|
|
||||||
|
type PageListItem = {
|
||||||
|
icon: ReactNode;
|
||||||
|
path: `/${string}`;
|
||||||
|
title: string;
|
||||||
|
Content: ReactNode;
|
||||||
|
Toolbar?: ReactNode;
|
||||||
|
};
|
||||||
|
|
||||||
|
const pages: PageListItem[] = [
|
||||||
|
{
|
||||||
|
icon: <PieChartIcon />,
|
||||||
|
title: 'Аналитика',
|
||||||
|
path: '/analyze',
|
||||||
|
Content: <AnalyzePage />,
|
||||||
|
Toolbar: <AnalyzePageToolbar />,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
icon: <CalendarMonthIcon />,
|
||||||
|
title: 'График платежей',
|
||||||
|
path: '/schedule',
|
||||||
|
Content: <SchedulePage />,
|
||||||
|
Toolbar: <SchedulePageToolbar />,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
icon: <FormatListBulletedIcon />,
|
||||||
|
title: 'Список платежей',
|
||||||
|
path: '/payments',
|
||||||
|
Content: <PaymentsPage />,
|
||||||
|
Toolbar: <PaymentsPageToolbar />,
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
const routes = pages.map((page) => ({
|
||||||
|
path: page.path,
|
||||||
|
element: (
|
||||||
|
<AsideMenuLayout
|
||||||
|
Content={page.Content}
|
||||||
|
pages={pages}
|
||||||
|
Toolbar={page.Toolbar}
|
||||||
|
/>
|
||||||
|
),
|
||||||
|
errorElement: (
|
||||||
|
<AsideMenuLayout
|
||||||
|
Content={<ErrorPage />}
|
||||||
|
pages={pages}
|
||||||
|
Toolbar={<ErrorPageToolbar />}
|
||||||
|
/>
|
||||||
|
),
|
||||||
|
}));
|
||||||
const router = createBrowserRouter([
|
const router = createBrowserRouter([
|
||||||
|
...routes,
|
||||||
{
|
{
|
||||||
path: '/',
|
path: '/',
|
||||||
element: <CalendarPage />,
|
element: <Navigate replace to="/analyze" />,
|
||||||
|
errorElement: (
|
||||||
|
<AsideMenuLayout
|
||||||
|
Content={<ErrorPage type="404" />}
|
||||||
|
pages={pages}
|
||||||
|
Toolbar={<ErrorPageToolbar type="404" />}
|
||||||
|
/>
|
||||||
|
),
|
||||||
},
|
},
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
|||||||
@ -1,7 +1,11 @@
|
|||||||
|
import CssBaseline from '@mui/material/CssBaseline';
|
||||||
|
|
||||||
import RouterProvider from '../model/providers/RouterProvider';
|
import RouterProvider from '../model/providers/RouterProvider';
|
||||||
|
|
||||||
const MoneyControllApp = () => (
|
const MoneyControllApp = () => (
|
||||||
<div data-testid="money-contoll-app">
|
<div data-testid="money-contoll-app">
|
||||||
|
<CssBaseline />
|
||||||
|
|
||||||
<RouterProvider />
|
<RouterProvider />
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
import 'normalize.css';
|
import 'shared/styles/fonts/fonts.css';
|
||||||
import { createRoot } from 'react-dom/client';
|
import { createRoot } from 'react-dom/client';
|
||||||
|
|
||||||
import { MoneyControllApp } from 'apps/MoneyControllApp';
|
import { MoneyControllApp } from 'apps/MoneyControllApp';
|
||||||
|
|||||||
2
src/pages/AnalyzePage/index.ts
Normal file
2
src/pages/AnalyzePage/index.ts
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
export { default as AnalyzePage } from './ui/AnalyzePage.ui';
|
||||||
|
export { default as AnalyzePageToolbar } from './ui/AnalyzePageToolbar.ui';
|
||||||
9
src/pages/AnalyzePage/ui/AnalyzePage.ui.tsx
Normal file
9
src/pages/AnalyzePage/ui/AnalyzePage.ui.tsx
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
import type { FC } from 'react';
|
||||||
|
|
||||||
|
const AnalyzePage: FC = () => (
|
||||||
|
<div>
|
||||||
|
Analyze page
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
|
||||||
|
export default AnalyzePage;
|
||||||
11
src/pages/AnalyzePage/ui/AnalyzePageToolbar.ui.tsx
Normal file
11
src/pages/AnalyzePage/ui/AnalyzePageToolbar.ui.tsx
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
import Toolbar from '@mui/material/Toolbar';
|
||||||
|
import Typography from '@mui/material/Typography';
|
||||||
|
|
||||||
|
const AnalyzePageToolbar = () => (
|
||||||
|
<Toolbar>
|
||||||
|
<Typography noWrap component="div" variant="h6">
|
||||||
|
Analyze Page Toolbar
|
||||||
|
</Typography>
|
||||||
|
</Toolbar>
|
||||||
|
);
|
||||||
|
export default AnalyzePageToolbar;
|
||||||
2
src/pages/ErrorPage/index.ts
Normal file
2
src/pages/ErrorPage/index.ts
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
export { default as ErrorPage } from './ui/ErrorPage.ui';
|
||||||
|
export { default as ErrorPageToolbar } from './ui/ErrorPageToolbar.ui';
|
||||||
48
src/pages/ErrorPage/ui/ErrorPage.ui.tsx
Normal file
48
src/pages/ErrorPage/ui/ErrorPage.ui.tsx
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
import { Grid } from '@mui/material';
|
||||||
|
import Typography from '@mui/material/Typography';
|
||||||
|
|
||||||
|
import _404Image from 'public/assets/images/404.png';
|
||||||
|
import OopsImage from 'public/assets/images/oops.png';
|
||||||
|
|
||||||
|
import type { FC } from 'react';
|
||||||
|
|
||||||
|
type ErrorPageProps = {
|
||||||
|
type?: '404' | 'ErrorBoundary';
|
||||||
|
};
|
||||||
|
const ErrorPage: FC<ErrorPageProps> = (props) => {
|
||||||
|
const {
|
||||||
|
type = 'ErrorBoundary',
|
||||||
|
} = props;
|
||||||
|
|
||||||
|
if (type === 'ErrorBoundary') {
|
||||||
|
return (
|
||||||
|
<Grid
|
||||||
|
container
|
||||||
|
alignItems="center"
|
||||||
|
direction="column"
|
||||||
|
justifyContent="center"
|
||||||
|
rowGap={5}
|
||||||
|
>
|
||||||
|
<Grid item>
|
||||||
|
<Typography variant="h5">
|
||||||
|
Что-то пошло не так
|
||||||
|
</Typography>
|
||||||
|
</Grid>
|
||||||
|
|
||||||
|
<Grid item>
|
||||||
|
<img alt="asd" height={400} src={OopsImage} />
|
||||||
|
</Grid>
|
||||||
|
</Grid>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Grid container justifyContent="center">
|
||||||
|
<Grid item>
|
||||||
|
<img alt="asd" src={_404Image} />
|
||||||
|
</Grid>
|
||||||
|
</Grid>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default ErrorPage;
|
||||||
29
src/pages/ErrorPage/ui/ErrorPageToolbar.ui.tsx
Normal file
29
src/pages/ErrorPage/ui/ErrorPageToolbar.ui.tsx
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
import Toolbar from '@mui/material/Toolbar';
|
||||||
|
import Typography from '@mui/material/Typography';
|
||||||
|
|
||||||
|
import type { FC } from 'react';
|
||||||
|
|
||||||
|
type ErrorPageToolbarProps = {
|
||||||
|
type?: '404' | 'ErrorBoundary';
|
||||||
|
};
|
||||||
|
|
||||||
|
const TITLE: Record<NonNullable<ErrorPageToolbarProps['type']>, string> = {
|
||||||
|
404: 'Страницы не существует',
|
||||||
|
ErrorBoundary: 'Непредвиденная ошибка',
|
||||||
|
};
|
||||||
|
|
||||||
|
const ErrorPageToolbar: FC<ErrorPageToolbarProps> = (props) => {
|
||||||
|
const {
|
||||||
|
type = 'ErrorBoundary',
|
||||||
|
} = props;
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Toolbar>
|
||||||
|
<Typography noWrap component="div" variant="h6">
|
||||||
|
{TITLE[type]}
|
||||||
|
</Typography>
|
||||||
|
</Toolbar>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default ErrorPageToolbar;
|
||||||
2
src/pages/PaymentsPage/index.ts
Normal file
2
src/pages/PaymentsPage/index.ts
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
export { default as PaymentsPage } from './ui/PaymentsPage.ui';
|
||||||
|
export { default as PaymentsPageToolbar } from './ui/PaymentsPageToolbar.ui';
|
||||||
9
src/pages/PaymentsPage/ui/PaymentsPage.ui.tsx
Normal file
9
src/pages/PaymentsPage/ui/PaymentsPage.ui.tsx
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
import type { FC } from 'react';
|
||||||
|
|
||||||
|
const PaymentsPage: FC = () => (
|
||||||
|
<div>
|
||||||
|
Payments Page
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
|
||||||
|
export default PaymentsPage;
|
||||||
14
src/pages/PaymentsPage/ui/PaymentsPageToolbar.ui.tsx
Normal file
14
src/pages/PaymentsPage/ui/PaymentsPageToolbar.ui.tsx
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
import Toolbar from '@mui/material/Toolbar';
|
||||||
|
import Typography from '@mui/material/Typography';
|
||||||
|
|
||||||
|
import type { FC } from 'react';
|
||||||
|
|
||||||
|
const PaymentsPageToolbar: FC = () => (
|
||||||
|
<Toolbar>
|
||||||
|
<Typography noWrap component="div" variant="h6">
|
||||||
|
Payments Page Toolbar
|
||||||
|
</Typography>
|
||||||
|
</Toolbar>
|
||||||
|
);
|
||||||
|
|
||||||
|
export default PaymentsPageToolbar;
|
||||||
2
src/pages/SchedulePage/index.ts
Normal file
2
src/pages/SchedulePage/index.ts
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
export { default as SchedulePage } from './ui/SchedulePage.ui';
|
||||||
|
export { default as SchedulePageToolbar } from './ui/SchedulePageToolbar.ui';
|
||||||
9
src/pages/SchedulePage/ui/SchedulePage.ui.tsx
Normal file
9
src/pages/SchedulePage/ui/SchedulePage.ui.tsx
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
import type { FC } from 'react';
|
||||||
|
|
||||||
|
const SchedulePage: FC = () => (
|
||||||
|
<div>
|
||||||
|
Schedule Page
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
|
||||||
|
export default SchedulePage;
|
||||||
14
src/pages/SchedulePage/ui/SchedulePageToolbar.ui.tsx
Normal file
14
src/pages/SchedulePage/ui/SchedulePageToolbar.ui.tsx
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
import Toolbar from '@mui/material/Toolbar';
|
||||||
|
import Typography from '@mui/material/Typography';
|
||||||
|
|
||||||
|
import type { FC } from 'react';
|
||||||
|
|
||||||
|
const SchedulePageToolbar: FC = () => (
|
||||||
|
<Toolbar>
|
||||||
|
<Typography noWrap component="div" variant="h6">
|
||||||
|
Schedule Page Toolbar
|
||||||
|
</Typography>
|
||||||
|
</Toolbar>
|
||||||
|
);
|
||||||
|
|
||||||
|
export default SchedulePageToolbar;
|
||||||
78
src/shared/styles/fonts/Comforta.css
Normal file
78
src/shared/styles/fonts/Comforta.css
Normal file
@ -0,0 +1,78 @@
|
|||||||
|
/* Comfortaa 300 Latin and Cyrillic, Normal */
|
||||||
|
@font-face {
|
||||||
|
font-family: "Comfortaa";
|
||||||
|
font-weight: 300;
|
||||||
|
font-style: normal;
|
||||||
|
src: url("public/assets/fonts/Comfortaa/comfortaa-latin-300-normal.woff2") format("woff2")
|
||||||
|
}
|
||||||
|
@font-face {
|
||||||
|
font-family: "Comfortaa";
|
||||||
|
font-weight: 300;
|
||||||
|
font-style: normal;
|
||||||
|
unicode-range: U+0410-044F;
|
||||||
|
src: url("public/assets/fonts/Comfortaa/comfortaa-cyrillic-300-normal.woff2") format("woff2")
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Comfortaa 400 Latin and Cyrillic, Normal */
|
||||||
|
@font-face {
|
||||||
|
font-family: "Comfortaa";
|
||||||
|
font-weight: 400;
|
||||||
|
font-style: normal;
|
||||||
|
src: url("public/assets/fonts/Comfortaa/comfortaa-latin-400-normal.woff2") format("woff2")
|
||||||
|
}
|
||||||
|
@font-face {
|
||||||
|
font-family: "Comfortaa";
|
||||||
|
font-weight: 400;
|
||||||
|
font-style: normal;
|
||||||
|
unicode-range: U+0410-044F;
|
||||||
|
src: url("public/assets/fonts/Comfortaa/comfortaa-cyrillic-400-normal.woff2") format("woff2")
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Comfortaa 500 Latin and Cyrillic, Normal */
|
||||||
|
@font-face {
|
||||||
|
font-family: "Comfortaa";
|
||||||
|
font-weight: 500;
|
||||||
|
font-style: normal;
|
||||||
|
src: url("public/assets/fonts/Comfortaa/comfortaa-latin-500-normal.woff2") format("woff2")
|
||||||
|
}
|
||||||
|
@font-face {
|
||||||
|
font-family: "Comfortaa";
|
||||||
|
font-weight: 500;
|
||||||
|
font-style: normal;
|
||||||
|
unicode-range: U+0410-044F;
|
||||||
|
src: url("public/assets/fonts/Comfortaa/comfortaa-cyrillic-500-normal.woff2") format("woff2")
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Comfortaa 600 Latin and Cyrillic, Normal */
|
||||||
|
@font-face {
|
||||||
|
font-family: "Comfortaa";
|
||||||
|
font-weight: 600;
|
||||||
|
font-style: normal;
|
||||||
|
src: url("public/assets/fonts/Comfortaa/comfortaa-latin-600-normal.woff2") format("woff2")
|
||||||
|
}
|
||||||
|
@font-face {
|
||||||
|
font-family: "Comfortaa";
|
||||||
|
font-weight: 600;
|
||||||
|
font-style: normal;
|
||||||
|
unicode-range: U+0410-044F;
|
||||||
|
src: url("public/assets/fonts/Comfortaa/comfortaa-cyrillic-600-normal.woff2") format("woff2")
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Comfortaa 700 Latin and Cyrillic, Normal */
|
||||||
|
@font-face {
|
||||||
|
font-family: "Comfortaa";
|
||||||
|
font-weight: 700;
|
||||||
|
font-style: normal;
|
||||||
|
src: url("public/assets/fonts/Comfortaa/comfortaa-latin-700-normal.woff2") format("woff2")
|
||||||
|
}
|
||||||
|
@font-face {
|
||||||
|
font-family: "Comfortaa";
|
||||||
|
font-weight: 700;
|
||||||
|
font-style: normal;
|
||||||
|
unicode-range: U+0410-044F;
|
||||||
|
src: url("public/assets/fonts/Comfortaa/comfortaa-cyrillic-700-normal.woff2") format("woff2")
|
||||||
|
}
|
||||||
173
src/shared/styles/fonts/Roboto.css
Normal file
173
src/shared/styles/fonts/Roboto.css
Normal file
@ -0,0 +1,173 @@
|
|||||||
|
/* Roboto 100 Latin and Cyrillic, Normal & Italic styles */
|
||||||
|
@font-face {
|
||||||
|
font-family: "Roboto";
|
||||||
|
font-weight: 100;
|
||||||
|
font-style: normal;
|
||||||
|
src: url("public/assets/fonts/Roboto/roboto-latin-100-normal.woff2") format("woff2")
|
||||||
|
}
|
||||||
|
@font-face {
|
||||||
|
font-family: "Roboto";
|
||||||
|
font-weight: 100;
|
||||||
|
font-style: italic;
|
||||||
|
src: url("public/assets/fonts/Roboto/roboto-latin-100-italic.woff2") format("woff2");
|
||||||
|
}
|
||||||
|
@font-face {
|
||||||
|
font-family: "Roboto";
|
||||||
|
font-weight: 100;
|
||||||
|
font-style: normal;
|
||||||
|
unicode-range: U+0410-044F;
|
||||||
|
src: url("public/assets/fonts/Roboto/roboto-cyrillic-100-normal.woff2") format("woff2")
|
||||||
|
}
|
||||||
|
@font-face {
|
||||||
|
font-family: "Roboto";
|
||||||
|
font-weight: 100;
|
||||||
|
font-style: italic;
|
||||||
|
unicode-range: U+0410-044F;
|
||||||
|
src: url("public/assets/fonts/Roboto/roboto-cyrillic-100-italic.woff2") format("woff2")
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Roboto 300 Latin and Cyrillic, Normal & Italic styles */
|
||||||
|
@font-face {
|
||||||
|
font-family: "Roboto";
|
||||||
|
font-weight: 300;
|
||||||
|
font-style: normal;
|
||||||
|
src: url("public/assets/fonts/Roboto/roboto-latin-300-normal.woff2") format("woff2")
|
||||||
|
}
|
||||||
|
@font-face {
|
||||||
|
font-family: "Roboto";
|
||||||
|
font-weight: 300;
|
||||||
|
font-style: italic;
|
||||||
|
src: url("public/assets/fonts/Roboto/roboto-latin-300-italic.woff2") format("woff2");
|
||||||
|
}
|
||||||
|
@font-face {
|
||||||
|
font-family: "Roboto";
|
||||||
|
font-weight: 300;
|
||||||
|
font-style: normal;
|
||||||
|
unicode-range: U+0410-044F;
|
||||||
|
src: url("public/assets/fonts/Roboto/roboto-cyrillic-300-normal.woff2") format("woff2")
|
||||||
|
}
|
||||||
|
@font-face {
|
||||||
|
font-family: "Roboto";
|
||||||
|
font-weight: 300;
|
||||||
|
font-style: italic;
|
||||||
|
unicode-range: U+0410-044F;
|
||||||
|
src: url("public/assets/fonts/Roboto/roboto-cyrillic-300-italic.woff2") format("woff2")
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Roboto 400 Latin and Cyrillic, Normal & Italic styles */
|
||||||
|
@font-face {
|
||||||
|
font-family: "Roboto";
|
||||||
|
font-weight: 400;
|
||||||
|
font-style: normal;
|
||||||
|
src: url("public/assets/fonts/Roboto/roboto-latin-400-normal.woff2") format("woff2")
|
||||||
|
}
|
||||||
|
@font-face {
|
||||||
|
font-family: "Roboto";
|
||||||
|
font-weight: 400;
|
||||||
|
font-style: italic;
|
||||||
|
src: url("public/assets/fonts/Roboto/roboto-latin-400-italic.woff2") format("woff2");
|
||||||
|
}
|
||||||
|
@font-face {
|
||||||
|
font-family: "Roboto";
|
||||||
|
font-weight: 400;
|
||||||
|
font-style: normal;
|
||||||
|
unicode-range: U+0410-044F;
|
||||||
|
src: url("public/assets/fonts/Roboto/roboto-cyrillic-400-normal.woff2") format("woff2")
|
||||||
|
}
|
||||||
|
@font-face {
|
||||||
|
font-family: "Roboto";
|
||||||
|
font-weight: 400;
|
||||||
|
font-style: italic;
|
||||||
|
unicode-range: U+0410-044F;
|
||||||
|
src: url("public/assets/fonts/Roboto/roboto-cyrillic-400-italic.woff2") format("woff2")
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Roboto 500 Latin and Cyrillic, Normal & Italic styles */
|
||||||
|
@font-face {
|
||||||
|
font-family: "Roboto";
|
||||||
|
font-weight: 500;
|
||||||
|
font-style: normal;
|
||||||
|
src: url("public/assets/fonts/Roboto/roboto-latin-500-normal.woff2") format("woff2")
|
||||||
|
}
|
||||||
|
@font-face {
|
||||||
|
font-family: "Roboto";
|
||||||
|
font-weight: 500;
|
||||||
|
font-style: italic;
|
||||||
|
src: url("public/assets/fonts/Roboto/roboto-latin-500-italic.woff2") format("woff2");
|
||||||
|
}
|
||||||
|
@font-face {
|
||||||
|
font-family: "Roboto";
|
||||||
|
font-weight: 500;
|
||||||
|
font-style: normal;
|
||||||
|
unicode-range: U+0410-044F;
|
||||||
|
src: url("public/assets/fonts/Roboto/roboto-cyrillic-500-normal.woff2") format("woff2")
|
||||||
|
}
|
||||||
|
@font-face {
|
||||||
|
font-family: "Roboto";
|
||||||
|
font-weight: 500;
|
||||||
|
font-style: italic;
|
||||||
|
unicode-range: U+0410-044F;
|
||||||
|
src: url("public/assets/fonts/Roboto/roboto-cyrillic-500-italic.woff2") format("woff2")
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Roboto 700 Latin and Cyrillic, Normal & Italic styles */
|
||||||
|
@font-face {
|
||||||
|
font-family: "Roboto";
|
||||||
|
font-weight: 700;
|
||||||
|
font-style: normal;
|
||||||
|
src: url("public/assets/fonts/Roboto/roboto-latin-700-normal.woff2") format("woff2")
|
||||||
|
}
|
||||||
|
@font-face {
|
||||||
|
font-family: "Roboto";
|
||||||
|
font-weight: 700;
|
||||||
|
font-style: italic;
|
||||||
|
src: url("public/assets/fonts/Roboto/roboto-latin-700-italic.woff2") format("woff2");
|
||||||
|
}
|
||||||
|
@font-face {
|
||||||
|
font-family: "Roboto";
|
||||||
|
font-weight: 700;
|
||||||
|
font-style: normal;
|
||||||
|
unicode-range: U+0410-044F;
|
||||||
|
src: url("public/assets/fonts/Roboto/roboto-cyrillic-700-normal.woff2") format("woff2")
|
||||||
|
}
|
||||||
|
@font-face {
|
||||||
|
font-family: "Roboto";
|
||||||
|
font-weight: 700;
|
||||||
|
font-style: italic;
|
||||||
|
unicode-range: U+0410-044F;
|
||||||
|
src: url("public/assets/fonts/Roboto/roboto-cyrillic-700-italic.woff2") format("woff2")
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Roboto 900 Latin and Cyrillic, Normal & Italic styles */
|
||||||
|
@font-face {
|
||||||
|
font-family: "Roboto";
|
||||||
|
font-weight: 900;
|
||||||
|
font-style: normal;
|
||||||
|
src: url("public/assets/fonts/Roboto/roboto-latin-900-normal.woff2") format("woff2")
|
||||||
|
}
|
||||||
|
@font-face {
|
||||||
|
font-family: "Roboto";
|
||||||
|
font-weight: 900;
|
||||||
|
font-style: italic;
|
||||||
|
src: url("public/assets/fonts/Roboto/roboto-latin-900-italic.woff2") format("woff2");
|
||||||
|
}
|
||||||
|
@font-face {
|
||||||
|
font-family: "Roboto";
|
||||||
|
font-weight: 900;
|
||||||
|
font-style: normal;
|
||||||
|
unicode-range: U+0410-044F;
|
||||||
|
src: url("public/assets/fonts/Roboto/roboto-cyrillic-900-normal.woff2") format("woff2")
|
||||||
|
}
|
||||||
|
@font-face {
|
||||||
|
font-family: "Roboto";
|
||||||
|
font-weight: 900;
|
||||||
|
font-style: italic;
|
||||||
|
unicode-range: U+0410-044F;
|
||||||
|
src: url("public/assets/fonts/Roboto/roboto-cyrillic-900-italic.woff2") format("woff2")
|
||||||
|
}
|
||||||
|
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user