diff --git a/README.md b/README.md index de10730..c500089 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # 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 - `start:dev` - start local application on [`https://localhost:3000`](https://localhost:3000) diff --git a/offline_node_modules/@babel-helper-module-imports-npm-7.24.6-be1121ea22-e0db3fbfcd.zip b/offline_node_modules/@babel-helper-module-imports-npm-7.24.6-be1121ea22-e0db3fbfcd.zip new file mode 100644 index 0000000..8745186 Binary files /dev/null and b/offline_node_modules/@babel-helper-module-imports-npm-7.24.6-be1121ea22-e0db3fbfcd.zip differ diff --git a/offline_node_modules/@babel-helper-string-parser-npm-7.24.6-ab02401caf-95115bf676.zip b/offline_node_modules/@babel-helper-string-parser-npm-7.24.6-ab02401caf-95115bf676.zip new file mode 100644 index 0000000..295472e Binary files /dev/null and b/offline_node_modules/@babel-helper-string-parser-npm-7.24.6-ab02401caf-95115bf676.zip differ diff --git a/offline_node_modules/@babel-helper-validator-identifier-npm-7.24.6-cf629561b7-d29d2e3fca.zip b/offline_node_modules/@babel-helper-validator-identifier-npm-7.24.6-cf629561b7-d29d2e3fca.zip new file mode 100644 index 0000000..362f7c8 Binary files /dev/null and b/offline_node_modules/@babel-helper-validator-identifier-npm-7.24.6-cf629561b7-d29d2e3fca.zip differ diff --git a/offline_node_modules/@babel-runtime-npm-7.24.6-3acd4a9fd9-224ad205de.zip b/offline_node_modules/@babel-runtime-npm-7.24.6-3acd4a9fd9-224ad205de.zip new file mode 100644 index 0000000..ee53d2f Binary files /dev/null and b/offline_node_modules/@babel-runtime-npm-7.24.6-3acd4a9fd9-224ad205de.zip differ diff --git a/offline_node_modules/@babel-types-npm-7.24.6-5a7d5202c4-1d94d92d97.zip b/offline_node_modules/@babel-types-npm-7.24.6-5a7d5202c4-1d94d92d97.zip new file mode 100644 index 0000000..18bff25 Binary files /dev/null and b/offline_node_modules/@babel-types-npm-7.24.6-5a7d5202c4-1d94d92d97.zip differ diff --git a/offline_node_modules/@emotion-babel-plugin-npm-11.11.0-c1dcc4c884-89cbb6ec0e.zip b/offline_node_modules/@emotion-babel-plugin-npm-11.11.0-c1dcc4c884-89cbb6ec0e.zip new file mode 100644 index 0000000..004b256 Binary files /dev/null and b/offline_node_modules/@emotion-babel-plugin-npm-11.11.0-c1dcc4c884-89cbb6ec0e.zip differ diff --git a/offline_node_modules/@emotion-cache-npm-11.11.0-3e6e449071-a23ab5ab2f.zip b/offline_node_modules/@emotion-cache-npm-11.11.0-3e6e449071-a23ab5ab2f.zip new file mode 100644 index 0000000..46e3081 Binary files /dev/null and b/offline_node_modules/@emotion-cache-npm-11.11.0-3e6e449071-a23ab5ab2f.zip differ diff --git a/offline_node_modules/@emotion-hash-npm-0.9.1-650576c2b1-cdafe5da63.zip b/offline_node_modules/@emotion-hash-npm-0.9.1-650576c2b1-cdafe5da63.zip new file mode 100644 index 0000000..1d6ac5c Binary files /dev/null and b/offline_node_modules/@emotion-hash-npm-0.9.1-650576c2b1-cdafe5da63.zip differ diff --git a/offline_node_modules/@emotion-is-prop-valid-npm-1.2.2-53f93f2b2d-bb1530dcb4.zip b/offline_node_modules/@emotion-is-prop-valid-npm-1.2.2-53f93f2b2d-bb1530dcb4.zip new file mode 100644 index 0000000..d9ebde6 Binary files /dev/null and b/offline_node_modules/@emotion-is-prop-valid-npm-1.2.2-53f93f2b2d-bb1530dcb4.zip differ diff --git a/offline_node_modules/@emotion-memoize-npm-0.8.1-9b1e35ff15-dffed372fc.zip b/offline_node_modules/@emotion-memoize-npm-0.8.1-9b1e35ff15-dffed372fc.zip new file mode 100644 index 0000000..320c9e5 Binary files /dev/null and b/offline_node_modules/@emotion-memoize-npm-0.8.1-9b1e35ff15-dffed372fc.zip differ diff --git a/offline_node_modules/@emotion-react-npm-11.11.4-52eda8b8fe-6df892fd9e.zip b/offline_node_modules/@emotion-react-npm-11.11.4-52eda8b8fe-6df892fd9e.zip new file mode 100644 index 0000000..2a9625a Binary files /dev/null and b/offline_node_modules/@emotion-react-npm-11.11.4-52eda8b8fe-6df892fd9e.zip differ diff --git a/offline_node_modules/@emotion-serialize-npm-1.1.4-5b0b39d76a-164d936f72.zip b/offline_node_modules/@emotion-serialize-npm-1.1.4-5b0b39d76a-164d936f72.zip new file mode 100644 index 0000000..374ac7f Binary files /dev/null and b/offline_node_modules/@emotion-serialize-npm-1.1.4-5b0b39d76a-164d936f72.zip differ diff --git a/offline_node_modules/@emotion-sheet-npm-1.2.2-a918ac483c-69827a1bfa.zip b/offline_node_modules/@emotion-sheet-npm-1.2.2-a918ac483c-69827a1bfa.zip new file mode 100644 index 0000000..8874796 Binary files /dev/null and b/offline_node_modules/@emotion-sheet-npm-1.2.2-a918ac483c-69827a1bfa.zip differ diff --git a/offline_node_modules/@emotion-styled-npm-11.11.5-f6c8a45c9e-27da6ad7f5.zip b/offline_node_modules/@emotion-styled-npm-11.11.5-f6c8a45c9e-27da6ad7f5.zip new file mode 100644 index 0000000..f2f6edb Binary files /dev/null and b/offline_node_modules/@emotion-styled-npm-11.11.5-f6c8a45c9e-27da6ad7f5.zip differ diff --git a/offline_node_modules/@emotion-unitless-npm-0.8.1-bcf0a8f565-a1ed508628.zip b/offline_node_modules/@emotion-unitless-npm-0.8.1-bcf0a8f565-a1ed508628.zip new file mode 100644 index 0000000..901cf6f Binary files /dev/null and b/offline_node_modules/@emotion-unitless-npm-0.8.1-bcf0a8f565-a1ed508628.zip differ diff --git a/offline_node_modules/@emotion-use-insertion-effect-with-fallbacks-npm-1.0.1-730758c66c-a15b216794.zip b/offline_node_modules/@emotion-use-insertion-effect-with-fallbacks-npm-1.0.1-730758c66c-a15b216794.zip new file mode 100644 index 0000000..9620474 Binary files /dev/null and b/offline_node_modules/@emotion-use-insertion-effect-with-fallbacks-npm-1.0.1-730758c66c-a15b216794.zip differ diff --git a/offline_node_modules/@emotion-utils-npm-1.2.1-3d04f99348-db43ca8033.zip b/offline_node_modules/@emotion-utils-npm-1.2.1-3d04f99348-db43ca8033.zip new file mode 100644 index 0000000..f0569e8 Binary files /dev/null and b/offline_node_modules/@emotion-utils-npm-1.2.1-3d04f99348-db43ca8033.zip differ diff --git a/offline_node_modules/@emotion-weak-memoize-npm-0.3.1-bfc18213af-ed514b3cb9.zip b/offline_node_modules/@emotion-weak-memoize-npm-0.3.1-bfc18213af-ed514b3cb9.zip new file mode 100644 index 0000000..68a7fa3 Binary files /dev/null and b/offline_node_modules/@emotion-weak-memoize-npm-0.3.1-bfc18213af-ed514b3cb9.zip differ diff --git a/offline_node_modules/@floating-ui-core-npm-1.6.2-83764613ea-db2621dc68.zip b/offline_node_modules/@floating-ui-core-npm-1.6.2-83764613ea-db2621dc68.zip new file mode 100644 index 0000000..21bb2bf Binary files /dev/null and b/offline_node_modules/@floating-ui-core-npm-1.6.2-83764613ea-db2621dc68.zip differ diff --git a/offline_node_modules/@floating-ui-dom-npm-1.6.5-42fe2aed4f-ebdc14806f.zip b/offline_node_modules/@floating-ui-dom-npm-1.6.5-42fe2aed4f-ebdc14806f.zip new file mode 100644 index 0000000..7c0e668 Binary files /dev/null and b/offline_node_modules/@floating-ui-dom-npm-1.6.5-42fe2aed4f-ebdc14806f.zip differ diff --git a/offline_node_modules/@floating-ui-react-dom-npm-2.1.0-6bd6adf553-9ee44dfeb2.zip b/offline_node_modules/@floating-ui-react-dom-npm-2.1.0-6bd6adf553-9ee44dfeb2.zip new file mode 100644 index 0000000..811b3f4 Binary files /dev/null and b/offline_node_modules/@floating-ui-react-dom-npm-2.1.0-6bd6adf553-9ee44dfeb2.zip differ diff --git a/offline_node_modules/@floating-ui-utils-npm-0.2.2-86598cb25a-b2becdcafd.zip b/offline_node_modules/@floating-ui-utils-npm-0.2.2-86598cb25a-b2becdcafd.zip new file mode 100644 index 0000000..00bbb4a Binary files /dev/null and b/offline_node_modules/@floating-ui-utils-npm-0.2.2-86598cb25a-b2becdcafd.zip differ diff --git a/offline_node_modules/@mui-base-npm-5.0.0-beta.40-248417914d-631b4ee389.zip b/offline_node_modules/@mui-base-npm-5.0.0-beta.40-248417914d-631b4ee389.zip new file mode 100644 index 0000000..16dc1bd Binary files /dev/null and b/offline_node_modules/@mui-base-npm-5.0.0-beta.40-248417914d-631b4ee389.zip differ diff --git a/offline_node_modules/@mui-core-downloads-tracker-npm-5.15.19-9ed77064af-90cd3eb953.zip b/offline_node_modules/@mui-core-downloads-tracker-npm-5.15.19-9ed77064af-90cd3eb953.zip new file mode 100644 index 0000000..f1f83f7 Binary files /dev/null and b/offline_node_modules/@mui-core-downloads-tracker-npm-5.15.19-9ed77064af-90cd3eb953.zip differ diff --git a/offline_node_modules/@mui-icons-material-npm-5.15.19-15b122e6ba-f2a4381b6a.zip b/offline_node_modules/@mui-icons-material-npm-5.15.19-15b122e6ba-f2a4381b6a.zip new file mode 100644 index 0000000..d8db646 Binary files /dev/null and b/offline_node_modules/@mui-icons-material-npm-5.15.19-15b122e6ba-f2a4381b6a.zip differ diff --git a/offline_node_modules/@mui-material-npm-5.15.19-5d6fd3466f-388eb14bed.zip b/offline_node_modules/@mui-material-npm-5.15.19-5d6fd3466f-388eb14bed.zip new file mode 100644 index 0000000..a199789 Binary files /dev/null and b/offline_node_modules/@mui-material-npm-5.15.19-5d6fd3466f-388eb14bed.zip differ diff --git a/offline_node_modules/@mui-private-theming-npm-5.15.14-da7d55aa3f-2888950587.zip b/offline_node_modules/@mui-private-theming-npm-5.15.14-da7d55aa3f-2888950587.zip new file mode 100644 index 0000000..85eb474 Binary files /dev/null and b/offline_node_modules/@mui-private-theming-npm-5.15.14-da7d55aa3f-2888950587.zip differ diff --git a/offline_node_modules/@mui-styled-engine-npm-5.15.14-f2c4d6b014-0d262ea0b3.zip b/offline_node_modules/@mui-styled-engine-npm-5.15.14-f2c4d6b014-0d262ea0b3.zip new file mode 100644 index 0000000..0961006 Binary files /dev/null and b/offline_node_modules/@mui-styled-engine-npm-5.15.14-f2c4d6b014-0d262ea0b3.zip differ diff --git a/offline_node_modules/@mui-system-npm-5.15.15-c000fc1ae9-80724377ee.zip b/offline_node_modules/@mui-system-npm-5.15.15-c000fc1ae9-80724377ee.zip new file mode 100644 index 0000000..448b4ac Binary files /dev/null and b/offline_node_modules/@mui-system-npm-5.15.15-c000fc1ae9-80724377ee.zip differ diff --git a/offline_node_modules/@mui-types-npm-7.2.14-c3027ebada-d4e0a9fce4.zip b/offline_node_modules/@mui-types-npm-7.2.14-c3027ebada-d4e0a9fce4.zip new file mode 100644 index 0000000..10ab908 Binary files /dev/null and b/offline_node_modules/@mui-types-npm-7.2.14-c3027ebada-d4e0a9fce4.zip differ diff --git a/offline_node_modules/@mui-utils-npm-5.15.14-0912681c9c-3626598847.zip b/offline_node_modules/@mui-utils-npm-5.15.14-0912681c9c-3626598847.zip new file mode 100644 index 0000000..21a967d Binary files /dev/null and b/offline_node_modules/@mui-utils-npm-5.15.14-0912681c9c-3626598847.zip differ diff --git a/offline_node_modules/@popperjs-core-npm-2.11.8-f1692e11a0-4681e682ab.zip b/offline_node_modules/@popperjs-core-npm-2.11.8-f1692e11a0-4681e682ab.zip new file mode 100644 index 0000000..c1f1984 Binary files /dev/null and b/offline_node_modules/@popperjs-core-npm-2.11.8-f1692e11a0-4681e682ab.zip differ diff --git a/offline_node_modules/@types-parse-json-npm-4.0.2-f87f65692e-b1b863ac34.zip b/offline_node_modules/@types-parse-json-npm-4.0.2-f87f65692e-b1b863ac34.zip new file mode 100644 index 0000000..e253df9 Binary files /dev/null and b/offline_node_modules/@types-parse-json-npm-4.0.2-f87f65692e-b1b863ac34.zip differ diff --git a/offline_node_modules/@types-react-transition-group-npm-4.4.10-5e11bed850-3eb9bca143.zip b/offline_node_modules/@types-react-transition-group-npm-4.4.10-5e11bed850-3eb9bca143.zip new file mode 100644 index 0000000..cfa4d40 Binary files /dev/null and b/offline_node_modules/@types-react-transition-group-npm-4.4.10-5e11bed850-3eb9bca143.zip differ diff --git a/offline_node_modules/babel-plugin-macros-npm-3.1.0-320e781f4e-c6dfb15de9.zip b/offline_node_modules/babel-plugin-macros-npm-3.1.0-320e781f4e-c6dfb15de9.zip new file mode 100644 index 0000000..33d9d61 Binary files /dev/null and b/offline_node_modules/babel-plugin-macros-npm-3.1.0-320e781f4e-c6dfb15de9.zip differ diff --git a/offline_node_modules/clsx-npm-2.1.1-96125b98be-c4c8eb865f.zip b/offline_node_modules/clsx-npm-2.1.1-96125b98be-c4c8eb865f.zip new file mode 100644 index 0000000..abdbd53 Binary files /dev/null and b/offline_node_modules/clsx-npm-2.1.1-96125b98be-c4c8eb865f.zip differ diff --git a/offline_node_modules/convert-source-map-npm-1.9.0-e294555f4b-281da55454.zip b/offline_node_modules/convert-source-map-npm-1.9.0-e294555f4b-281da55454.zip new file mode 100644 index 0000000..74fd0cd Binary files /dev/null and b/offline_node_modules/convert-source-map-npm-1.9.0-e294555f4b-281da55454.zip differ diff --git a/offline_node_modules/cosmiconfig-npm-7.1.0-13a5090bcd-b923ff6af5.zip b/offline_node_modules/cosmiconfig-npm-7.1.0-13a5090bcd-b923ff6af5.zip new file mode 100644 index 0000000..9880df8 Binary files /dev/null and b/offline_node_modules/cosmiconfig-npm-7.1.0-13a5090bcd-b923ff6af5.zip differ diff --git a/offline_node_modules/dom-helpers-npm-5.2.1-b38bb4470b-f735074d66.zip b/offline_node_modules/dom-helpers-npm-5.2.1-b38bb4470b-f735074d66.zip new file mode 100644 index 0000000..36972d0 Binary files /dev/null and b/offline_node_modules/dom-helpers-npm-5.2.1-b38bb4470b-f735074d66.zip differ diff --git a/offline_node_modules/normalize.css-npm-8.0.1-6124fb39b6-4ddf56d1af.zip b/offline_node_modules/normalize.css-npm-8.0.1-6124fb39b6-4ddf56d1af.zip deleted file mode 100644 index a1cdce1..0000000 Binary files a/offline_node_modules/normalize.css-npm-8.0.1-6124fb39b6-4ddf56d1af.zip and /dev/null differ diff --git a/offline_node_modules/react-is-npm-18.3.1-370a81e1e9-f2f1e60010.zip b/offline_node_modules/react-is-npm-18.3.1-370a81e1e9-f2f1e60010.zip new file mode 100644 index 0000000..c79d786 Binary files /dev/null and b/offline_node_modules/react-is-npm-18.3.1-370a81e1e9-f2f1e60010.zip differ diff --git a/offline_node_modules/react-transition-group-npm-4.4.5-98ea4ef96e-2ba754ba74.zip b/offline_node_modules/react-transition-group-npm-4.4.5-98ea4ef96e-2ba754ba74.zip new file mode 100644 index 0000000..815053a Binary files /dev/null and b/offline_node_modules/react-transition-group-npm-4.4.5-98ea4ef96e-2ba754ba74.zip differ diff --git a/offline_node_modules/source-map-npm-0.5.7-7c3f035429-904e767bb9.zip b/offline_node_modules/source-map-npm-0.5.7-7c3f035429-904e767bb9.zip new file mode 100644 index 0000000..10ebd60 Binary files /dev/null and b/offline_node_modules/source-map-npm-0.5.7-7c3f035429-904e767bb9.zip differ diff --git a/offline_node_modules/stylis-npm-4.2.0-6b07f11c99-a7128ad5a8.zip b/offline_node_modules/stylis-npm-4.2.0-6b07f11c99-a7128ad5a8.zip new file mode 100644 index 0000000..7e48d6e Binary files /dev/null and b/offline_node_modules/stylis-npm-4.2.0-6b07f11c99-a7128ad5a8.zip differ diff --git a/offline_node_modules/yaml-npm-1.10.2-0e780aebdf-5c28b9eb7a.zip b/offline_node_modules/yaml-npm-1.10.2-0e780aebdf-5c28b9eb7a.zip new file mode 100644 index 0000000..b7ec99f Binary files /dev/null and b/offline_node_modules/yaml-npm-1.10.2-0e780aebdf-5c28b9eb7a.zip differ diff --git a/package.json b/package.json index 7bdac98..adaced8 100644 --- a/package.json +++ b/package.json @@ -31,8 +31,11 @@ }, "homepage": "https://gitlab.com/money-control2/web/frontend#readme", "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", - "normalize.css": "8.0.1", "prop-types": "15.8.1", "react": "18.3.1", "react-dnd": "16.0.1", @@ -59,6 +62,5 @@ "standard-version": "9.5.0", "ts-jest": "29.1.4", "typescript": "5.4.5" - }, - "packageManager": "yarn@4.1.1" + } } diff --git a/public/assets/fonts/Comfortaa/comfortaa-cyrillic-300-normal.woff2 b/public/assets/fonts/Comfortaa/comfortaa-cyrillic-300-normal.woff2 new file mode 100644 index 0000000..1a7fcbc Binary files /dev/null and b/public/assets/fonts/Comfortaa/comfortaa-cyrillic-300-normal.woff2 differ diff --git a/public/assets/fonts/Comfortaa/comfortaa-cyrillic-400-normal.woff2 b/public/assets/fonts/Comfortaa/comfortaa-cyrillic-400-normal.woff2 new file mode 100644 index 0000000..bea01fe Binary files /dev/null and b/public/assets/fonts/Comfortaa/comfortaa-cyrillic-400-normal.woff2 differ diff --git a/public/assets/fonts/Comfortaa/comfortaa-cyrillic-500-normal.woff2 b/public/assets/fonts/Comfortaa/comfortaa-cyrillic-500-normal.woff2 new file mode 100644 index 0000000..c120a82 Binary files /dev/null and b/public/assets/fonts/Comfortaa/comfortaa-cyrillic-500-normal.woff2 differ diff --git a/public/assets/fonts/Comfortaa/comfortaa-cyrillic-600-normal.woff2 b/public/assets/fonts/Comfortaa/comfortaa-cyrillic-600-normal.woff2 new file mode 100644 index 0000000..c3902ea Binary files /dev/null and b/public/assets/fonts/Comfortaa/comfortaa-cyrillic-600-normal.woff2 differ diff --git a/public/assets/fonts/Comfortaa/comfortaa-cyrillic-700-normal.woff2 b/public/assets/fonts/Comfortaa/comfortaa-cyrillic-700-normal.woff2 new file mode 100644 index 0000000..41d58aa Binary files /dev/null and b/public/assets/fonts/Comfortaa/comfortaa-cyrillic-700-normal.woff2 differ diff --git a/public/assets/fonts/Comfortaa/comfortaa-latin-300-normal.woff2 b/public/assets/fonts/Comfortaa/comfortaa-latin-300-normal.woff2 new file mode 100644 index 0000000..7fb6941 Binary files /dev/null and b/public/assets/fonts/Comfortaa/comfortaa-latin-300-normal.woff2 differ diff --git a/public/assets/fonts/Comfortaa/comfortaa-latin-400-normal.woff2 b/public/assets/fonts/Comfortaa/comfortaa-latin-400-normal.woff2 new file mode 100644 index 0000000..7740306 Binary files /dev/null and b/public/assets/fonts/Comfortaa/comfortaa-latin-400-normal.woff2 differ diff --git a/public/assets/fonts/Comfortaa/comfortaa-latin-500-normal.woff2 b/public/assets/fonts/Comfortaa/comfortaa-latin-500-normal.woff2 new file mode 100644 index 0000000..ed2adf8 Binary files /dev/null and b/public/assets/fonts/Comfortaa/comfortaa-latin-500-normal.woff2 differ diff --git a/public/assets/fonts/Comfortaa/comfortaa-latin-600-normal.woff2 b/public/assets/fonts/Comfortaa/comfortaa-latin-600-normal.woff2 new file mode 100644 index 0000000..25c1d63 Binary files /dev/null and b/public/assets/fonts/Comfortaa/comfortaa-latin-600-normal.woff2 differ diff --git a/public/assets/fonts/Comfortaa/comfortaa-latin-700-normal.woff2 b/public/assets/fonts/Comfortaa/comfortaa-latin-700-normal.woff2 new file mode 100644 index 0000000..8cb8b14 Binary files /dev/null and b/public/assets/fonts/Comfortaa/comfortaa-latin-700-normal.woff2 differ diff --git a/public/assets/fonts/Roboto/roboto-cyrillic-100-italic.woff2 b/public/assets/fonts/Roboto/roboto-cyrillic-100-italic.woff2 new file mode 100644 index 0000000..18c3f12 Binary files /dev/null and b/public/assets/fonts/Roboto/roboto-cyrillic-100-italic.woff2 differ diff --git a/public/assets/fonts/Roboto/roboto-cyrillic-100-normal.woff2 b/public/assets/fonts/Roboto/roboto-cyrillic-100-normal.woff2 new file mode 100644 index 0000000..122ac2c Binary files /dev/null and b/public/assets/fonts/Roboto/roboto-cyrillic-100-normal.woff2 differ diff --git a/public/assets/fonts/Roboto/roboto-cyrillic-300-italic.woff2 b/public/assets/fonts/Roboto/roboto-cyrillic-300-italic.woff2 new file mode 100644 index 0000000..943c5a0 Binary files /dev/null and b/public/assets/fonts/Roboto/roboto-cyrillic-300-italic.woff2 differ diff --git a/public/assets/fonts/Roboto/roboto-cyrillic-300-normal.woff2 b/public/assets/fonts/Roboto/roboto-cyrillic-300-normal.woff2 new file mode 100644 index 0000000..9d7fb7f Binary files /dev/null and b/public/assets/fonts/Roboto/roboto-cyrillic-300-normal.woff2 differ diff --git a/public/assets/fonts/Roboto/roboto-cyrillic-400-italic.woff2 b/public/assets/fonts/Roboto/roboto-cyrillic-400-italic.woff2 new file mode 100644 index 0000000..dd587a2 Binary files /dev/null and b/public/assets/fonts/Roboto/roboto-cyrillic-400-italic.woff2 differ diff --git a/public/assets/fonts/Roboto/roboto-cyrillic-400-normal.woff2 b/public/assets/fonts/Roboto/roboto-cyrillic-400-normal.woff2 new file mode 100644 index 0000000..47da362 Binary files /dev/null and b/public/assets/fonts/Roboto/roboto-cyrillic-400-normal.woff2 differ diff --git a/public/assets/fonts/Roboto/roboto-cyrillic-500-italic.woff2 b/public/assets/fonts/Roboto/roboto-cyrillic-500-italic.woff2 new file mode 100644 index 0000000..cbe564b Binary files /dev/null and b/public/assets/fonts/Roboto/roboto-cyrillic-500-italic.woff2 differ diff --git a/public/assets/fonts/Roboto/roboto-cyrillic-500-normal.woff2 b/public/assets/fonts/Roboto/roboto-cyrillic-500-normal.woff2 new file mode 100644 index 0000000..cb5834f Binary files /dev/null and b/public/assets/fonts/Roboto/roboto-cyrillic-500-normal.woff2 differ diff --git a/public/assets/fonts/Roboto/roboto-cyrillic-700-italic.woff2 b/public/assets/fonts/Roboto/roboto-cyrillic-700-italic.woff2 new file mode 100644 index 0000000..d2f30b5 Binary files /dev/null and b/public/assets/fonts/Roboto/roboto-cyrillic-700-italic.woff2 differ diff --git a/public/assets/fonts/Roboto/roboto-cyrillic-700-normal.woff2 b/public/assets/fonts/Roboto/roboto-cyrillic-700-normal.woff2 new file mode 100644 index 0000000..1bb7737 Binary files /dev/null and b/public/assets/fonts/Roboto/roboto-cyrillic-700-normal.woff2 differ diff --git a/public/assets/fonts/Roboto/roboto-cyrillic-900-italic.woff2 b/public/assets/fonts/Roboto/roboto-cyrillic-900-italic.woff2 new file mode 100644 index 0000000..fe8fcec Binary files /dev/null and b/public/assets/fonts/Roboto/roboto-cyrillic-900-italic.woff2 differ diff --git a/public/assets/fonts/Roboto/roboto-cyrillic-900-normal.woff2 b/public/assets/fonts/Roboto/roboto-cyrillic-900-normal.woff2 new file mode 100644 index 0000000..1d173f2 Binary files /dev/null and b/public/assets/fonts/Roboto/roboto-cyrillic-900-normal.woff2 differ diff --git a/public/assets/fonts/Roboto/roboto-latin-100-italic.woff2 b/public/assets/fonts/Roboto/roboto-latin-100-italic.woff2 new file mode 100644 index 0000000..4ccadd1 Binary files /dev/null and b/public/assets/fonts/Roboto/roboto-latin-100-italic.woff2 differ diff --git a/public/assets/fonts/Roboto/roboto-latin-100-normal.woff2 b/public/assets/fonts/Roboto/roboto-latin-100-normal.woff2 new file mode 100644 index 0000000..71c9bb7 Binary files /dev/null and b/public/assets/fonts/Roboto/roboto-latin-100-normal.woff2 differ diff --git a/public/assets/fonts/Roboto/roboto-latin-300-italic.woff2 b/public/assets/fonts/Roboto/roboto-latin-300-italic.woff2 new file mode 100644 index 0000000..22c57b0 Binary files /dev/null and b/public/assets/fonts/Roboto/roboto-latin-300-italic.woff2 differ diff --git a/public/assets/fonts/Roboto/roboto-latin-300-normal.woff2 b/public/assets/fonts/Roboto/roboto-latin-300-normal.woff2 new file mode 100644 index 0000000..6068138 Binary files /dev/null and b/public/assets/fonts/Roboto/roboto-latin-300-normal.woff2 differ diff --git a/public/assets/fonts/Roboto/roboto-latin-400-italic.woff2 b/public/assets/fonts/Roboto/roboto-latin-400-italic.woff2 new file mode 100644 index 0000000..e1b7a79 Binary files /dev/null and b/public/assets/fonts/Roboto/roboto-latin-400-italic.woff2 differ diff --git a/public/assets/fonts/Roboto/roboto-latin-400-normal.woff2 b/public/assets/fonts/Roboto/roboto-latin-400-normal.woff2 new file mode 100644 index 0000000..020729e Binary files /dev/null and b/public/assets/fonts/Roboto/roboto-latin-400-normal.woff2 differ diff --git a/public/assets/fonts/Roboto/roboto-latin-500-italic.woff2 b/public/assets/fonts/Roboto/roboto-latin-500-italic.woff2 new file mode 100644 index 0000000..ae1933f Binary files /dev/null and b/public/assets/fonts/Roboto/roboto-latin-500-italic.woff2 differ diff --git a/public/assets/fonts/Roboto/roboto-latin-500-normal.woff2 b/public/assets/fonts/Roboto/roboto-latin-500-normal.woff2 new file mode 100644 index 0000000..29342a8 Binary files /dev/null and b/public/assets/fonts/Roboto/roboto-latin-500-normal.woff2 differ diff --git a/public/assets/fonts/Roboto/roboto-latin-700-italic.woff2 b/public/assets/fonts/Roboto/roboto-latin-700-italic.woff2 new file mode 100644 index 0000000..a56a6ed Binary files /dev/null and b/public/assets/fonts/Roboto/roboto-latin-700-italic.woff2 differ diff --git a/public/assets/fonts/Roboto/roboto-latin-700-normal.woff2 b/public/assets/fonts/Roboto/roboto-latin-700-normal.woff2 new file mode 100644 index 0000000..771fbec Binary files /dev/null and b/public/assets/fonts/Roboto/roboto-latin-700-normal.woff2 differ diff --git a/public/assets/fonts/Roboto/roboto-latin-900-italic.woff2 b/public/assets/fonts/Roboto/roboto-latin-900-italic.woff2 new file mode 100644 index 0000000..59cab0f Binary files /dev/null and b/public/assets/fonts/Roboto/roboto-latin-900-italic.woff2 differ diff --git a/public/assets/fonts/Roboto/roboto-latin-900-normal.woff2 b/public/assets/fonts/Roboto/roboto-latin-900-normal.woff2 new file mode 100644 index 0000000..067cb32 Binary files /dev/null and b/public/assets/fonts/Roboto/roboto-latin-900-normal.woff2 differ diff --git a/public/assets/images/404.png b/public/assets/images/404.png new file mode 100644 index 0000000..4d16e94 Binary files /dev/null and b/public/assets/images/404.png differ diff --git a/public/assets/images/oops.png b/public/assets/images/oops.png new file mode 100644 index 0000000..4661646 Binary files /dev/null and b/public/assets/images/oops.png differ diff --git a/src/apps/MoneyControllApp/model/providers/RouterProvider/index.tsx b/src/apps/MoneyControllApp/model/providers/RouterProvider/index.tsx index 1084733..0f4d86a 100644 --- a/src/apps/MoneyControllApp/model/providers/RouterProvider/index.tsx +++ b/src/apps/MoneyControllApp/model/providers/RouterProvider/index.tsx @@ -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: , + title: 'Аналитика', + path: '/analyze', + Content: , + Toolbar: , + }, + { + icon: , + title: 'График платежей', + path: '/schedule', + Content: , + Toolbar: , + }, + { + icon: , + title: 'Список платежей', + path: '/payments', + Content: , + Toolbar: , + }, +]; + +const routes = pages.map((page) => ({ + path: page.path, + element: ( + + ), + errorElement: ( + } + pages={pages} + Toolbar={} + /> + ), +})); const router = createBrowserRouter([ + ...routes, { path: '/', - element: , + element: , + errorElement: ( + } + pages={pages} + Toolbar={} + /> + ), }, ]); diff --git a/src/apps/MoneyControllApp/ui/MoneyControllApp.ui.tsx b/src/apps/MoneyControllApp/ui/MoneyControllApp.ui.tsx index 0dd508a..b5e3608 100644 --- a/src/apps/MoneyControllApp/ui/MoneyControllApp.ui.tsx +++ b/src/apps/MoneyControllApp/ui/MoneyControllApp.ui.tsx @@ -1,7 +1,11 @@ +import CssBaseline from '@mui/material/CssBaseline'; + import RouterProvider from '../model/providers/RouterProvider'; const MoneyControllApp = () => (
+ +
); diff --git a/src/index.tsx b/src/index.tsx index 5ba8418..47186b2 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -1,4 +1,4 @@ -import 'normalize.css'; +import 'shared/styles/fonts/fonts.css'; import { createRoot } from 'react-dom/client'; import { MoneyControllApp } from 'apps/MoneyControllApp'; diff --git a/src/pages/AnalyzePage/index.ts b/src/pages/AnalyzePage/index.ts new file mode 100644 index 0000000..ad8be7d --- /dev/null +++ b/src/pages/AnalyzePage/index.ts @@ -0,0 +1,2 @@ +export { default as AnalyzePage } from './ui/AnalyzePage.ui'; +export { default as AnalyzePageToolbar } from './ui/AnalyzePageToolbar.ui'; diff --git a/src/pages/AnalyzePage/ui/AnalyzePage.ui.tsx b/src/pages/AnalyzePage/ui/AnalyzePage.ui.tsx new file mode 100644 index 0000000..9bb9675 --- /dev/null +++ b/src/pages/AnalyzePage/ui/AnalyzePage.ui.tsx @@ -0,0 +1,9 @@ +import type { FC } from 'react'; + +const AnalyzePage: FC = () => ( +
+ Analyze page +
+); + +export default AnalyzePage; diff --git a/src/pages/AnalyzePage/ui/AnalyzePageToolbar.ui.tsx b/src/pages/AnalyzePage/ui/AnalyzePageToolbar.ui.tsx new file mode 100644 index 0000000..252b4e6 --- /dev/null +++ b/src/pages/AnalyzePage/ui/AnalyzePageToolbar.ui.tsx @@ -0,0 +1,11 @@ +import Toolbar from '@mui/material/Toolbar'; +import Typography from '@mui/material/Typography'; + +const AnalyzePageToolbar = () => ( + + + Analyze Page Toolbar + + +); +export default AnalyzePageToolbar; diff --git a/src/pages/ErrorPage/index.ts b/src/pages/ErrorPage/index.ts new file mode 100644 index 0000000..6d8bf24 --- /dev/null +++ b/src/pages/ErrorPage/index.ts @@ -0,0 +1,2 @@ +export { default as ErrorPage } from './ui/ErrorPage.ui'; +export { default as ErrorPageToolbar } from './ui/ErrorPageToolbar.ui'; diff --git a/src/pages/ErrorPage/ui/ErrorPage.ui.tsx b/src/pages/ErrorPage/ui/ErrorPage.ui.tsx new file mode 100644 index 0000000..62eabd2 --- /dev/null +++ b/src/pages/ErrorPage/ui/ErrorPage.ui.tsx @@ -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 = (props) => { + const { + type = 'ErrorBoundary', + } = props; + + if (type === 'ErrorBoundary') { + return ( + + + + Что-то пошло не так + + + + + asd + + + ); + } + + return ( + + + asd + + + ); +}; + +export default ErrorPage; diff --git a/src/pages/ErrorPage/ui/ErrorPageToolbar.ui.tsx b/src/pages/ErrorPage/ui/ErrorPageToolbar.ui.tsx new file mode 100644 index 0000000..f8eef69 --- /dev/null +++ b/src/pages/ErrorPage/ui/ErrorPageToolbar.ui.tsx @@ -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, string> = { + 404: 'Страницы не существует', + ErrorBoundary: 'Непредвиденная ошибка', +}; + +const ErrorPageToolbar: FC = (props) => { + const { + type = 'ErrorBoundary', + } = props; + + return ( + + + {TITLE[type]} + + + ); +}; + +export default ErrorPageToolbar; diff --git a/src/pages/PaymentsPage/index.ts b/src/pages/PaymentsPage/index.ts new file mode 100644 index 0000000..df8f217 --- /dev/null +++ b/src/pages/PaymentsPage/index.ts @@ -0,0 +1,2 @@ +export { default as PaymentsPage } from './ui/PaymentsPage.ui'; +export { default as PaymentsPageToolbar } from './ui/PaymentsPageToolbar.ui'; diff --git a/src/pages/PaymentsPage/ui/PaymentsPage.ui.tsx b/src/pages/PaymentsPage/ui/PaymentsPage.ui.tsx new file mode 100644 index 0000000..31e5afb --- /dev/null +++ b/src/pages/PaymentsPage/ui/PaymentsPage.ui.tsx @@ -0,0 +1,9 @@ +import type { FC } from 'react'; + +const PaymentsPage: FC = () => ( +
+ Payments Page +
+); + +export default PaymentsPage; diff --git a/src/pages/PaymentsPage/ui/PaymentsPageToolbar.ui.tsx b/src/pages/PaymentsPage/ui/PaymentsPageToolbar.ui.tsx new file mode 100644 index 0000000..0a844ca --- /dev/null +++ b/src/pages/PaymentsPage/ui/PaymentsPageToolbar.ui.tsx @@ -0,0 +1,14 @@ +import Toolbar from '@mui/material/Toolbar'; +import Typography from '@mui/material/Typography'; + +import type { FC } from 'react'; + +const PaymentsPageToolbar: FC = () => ( + + + Payments Page Toolbar + + +); + +export default PaymentsPageToolbar; diff --git a/src/pages/SchedulePage/index.ts b/src/pages/SchedulePage/index.ts new file mode 100644 index 0000000..3e6515a --- /dev/null +++ b/src/pages/SchedulePage/index.ts @@ -0,0 +1,2 @@ +export { default as SchedulePage } from './ui/SchedulePage.ui'; +export { default as SchedulePageToolbar } from './ui/SchedulePageToolbar.ui'; diff --git a/src/pages/SchedulePage/ui/SchedulePage.ui.tsx b/src/pages/SchedulePage/ui/SchedulePage.ui.tsx new file mode 100644 index 0000000..4a6c82a --- /dev/null +++ b/src/pages/SchedulePage/ui/SchedulePage.ui.tsx @@ -0,0 +1,9 @@ +import type { FC } from 'react'; + +const SchedulePage: FC = () => ( +
+ Schedule Page +
+); + +export default SchedulePage; diff --git a/src/pages/SchedulePage/ui/SchedulePageToolbar.ui.tsx b/src/pages/SchedulePage/ui/SchedulePageToolbar.ui.tsx new file mode 100644 index 0000000..6144077 --- /dev/null +++ b/src/pages/SchedulePage/ui/SchedulePageToolbar.ui.tsx @@ -0,0 +1,14 @@ +import Toolbar from '@mui/material/Toolbar'; +import Typography from '@mui/material/Typography'; + +import type { FC } from 'react'; + +const SchedulePageToolbar: FC = () => ( + + + Schedule Page Toolbar + + +); + +export default SchedulePageToolbar; diff --git a/src/shared/styles/fonts/Comforta.css b/src/shared/styles/fonts/Comforta.css new file mode 100644 index 0000000..ab66e71 --- /dev/null +++ b/src/shared/styles/fonts/Comforta.css @@ -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") +} diff --git a/src/shared/styles/fonts/Roboto.css b/src/shared/styles/fonts/Roboto.css new file mode 100644 index 0000000..ecdf9c9 --- /dev/null +++ b/src/shared/styles/fonts/Roboto.css @@ -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") +} + diff --git a/src/shared/styles/fonts/fonts.css b/src/shared/styles/fonts/fonts.css new file mode 100644 index 0000000..c510c2d --- /dev/null +++ b/src/shared/styles/fonts/fonts.css @@ -0,0 +1,2 @@ +@import "./Roboto.css"; +@import "./Comforta.css"; diff --git a/src/widgets/AsideMenuLayout/index.ts b/src/widgets/AsideMenuLayout/index.ts new file mode 100644 index 0000000..7ca3bc4 --- /dev/null +++ b/src/widgets/AsideMenuLayout/index.ts @@ -0,0 +1 @@ +export { default as AsideMenuLayout } from './ui/AsideMenuLayout.ui'; diff --git a/src/widgets/AsideMenuLayout/ui/AsideMenuLayout.ui.tsx b/src/widgets/AsideMenuLayout/ui/AsideMenuLayout.ui.tsx new file mode 100644 index 0000000..51f9a01 --- /dev/null +++ b/src/widgets/AsideMenuLayout/ui/AsideMenuLayout.ui.tsx @@ -0,0 +1,94 @@ +import ChevronLeftIcon from '@mui/icons-material/ChevronLeft'; +import MenuIcon from '@mui/icons-material/Menu'; +import Box from '@mui/material/Box'; +import CssBaseline from '@mui/material/CssBaseline'; +import Divider from '@mui/material/Divider'; +import List from '@mui/material/List'; +import { useState } from 'react'; + +import AppBar from './components/AppBar'; +import Drawer from './components/Drawer'; +import DrawerHeader from './components/DrawerMenu'; +import DrawerSwitcher from './components/DrawerSwitcher'; +import MenuItem from './components/MenuItem'; + +import type { MenuItemProps } from './components/MenuItem'; +import type { FC, ReactNode } from 'react'; + +const drawerWidth = 250; + +type AsideMenuLayoutProps = { + pages: MenuItemProps['page'][]; + Content: ReactNode; + Toolbar?: ReactNode; +}; +const AsideMenuLayout: FC = (props) => { + const { + pages, + Content, + Toolbar, + } = props; + + const [isOpen, setIsOpen] = useState(true); + + const handleDrawerOpen = () => { + setIsOpen(true); + }; + const handleDrawerClose = () => { + setIsOpen(false); + }; + + return ( + + + + + + + { isOpen ? : } + + + + + + + {pages.map((page) => ( + + ))} + + + + + { + // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions + Toolbar + ? ( + <> + + {Toolbar} + + + + + ) + : null + } + + {Content} + + + ); +}; + +export default AsideMenuLayout; diff --git a/src/widgets/AsideMenuLayout/ui/components/AppBar/index.tsx b/src/widgets/AsideMenuLayout/ui/components/AppBar/index.tsx new file mode 100644 index 0000000..98e9d21 --- /dev/null +++ b/src/widgets/AsideMenuLayout/ui/components/AppBar/index.tsx @@ -0,0 +1,30 @@ +import MuiAppBar from '@mui/material/AppBar'; +import { styled } from '@mui/material/styles'; + +import type { AppBarProps as MuiAppBarProps } from '@mui/material/AppBar/AppBar'; + +type AppBarProps = MuiAppBarProps & { + open?: boolean; + drawerWidth: number; +}; + +const AppBar = styled(MuiAppBar, { shouldForwardProp: (prop) => prop !== 'open' })( + ({ theme, open, drawerWidth }) => ({ + transition: theme.transitions.create(['width', 'margin'], { + easing: theme.transitions.easing.sharp, + duration: theme.transitions.duration.leavingScreen, + }), + marginLeft: `calc(${theme.spacing(7)} + 1px)`, + width: `calc(100% - calc(${theme.spacing(7)} + 1px))`, + ...Boolean(open) && { + marginLeft: drawerWidth, + width: `calc(100% - ${drawerWidth}px)`, + transition: theme.transitions.create(['width', 'margin'], { + easing: theme.transitions.easing.sharp, + duration: theme.transitions.duration.enteringScreen, + }), + }, + }), +); + +export default AppBar; diff --git a/src/widgets/AsideMenuLayout/ui/components/Drawer/index.tsx b/src/widgets/AsideMenuLayout/ui/components/Drawer/index.tsx new file mode 100644 index 0000000..29e654d --- /dev/null +++ b/src/widgets/AsideMenuLayout/ui/components/Drawer/index.tsx @@ -0,0 +1,44 @@ +import MuiDrawer from '@mui/material/Drawer'; +import { type CSSObject, styled, type Theme } from '@mui/material/styles'; + +type DrawerProps = { + open: boolean; + drawerWidth: number; +}; + +const openedMixin = (theme: Theme, { drawerWidth }: Pick): CSSObject => ({ + width: drawerWidth, + transition: theme.transitions.create('width', { + easing: theme.transitions.easing.sharp, + duration: theme.transitions.duration.enteringScreen, + }), + overflowX: 'hidden', +}); + +const closedMixin = (theme: Theme): CSSObject => ({ + transition: theme.transitions.create('width', { + easing: theme.transitions.easing.sharp, + duration: theme.transitions.duration.leavingScreen, + }), + overflowX: 'hidden', + width: `calc(${theme.spacing(8)} + 1px)`, +}); + +const Drawer = styled(MuiDrawer, { shouldForwardProp: (prop) => prop !== 'open' })( + ({ theme, open, drawerWidth }) => ({ + width: drawerWidth, + flexShrink: 0, + whiteSpace: 'nowrap', + boxSizing: 'border-box', + ...open && { + ...openedMixin(theme, { drawerWidth }), + '& .MuiDrawer-paper': openedMixin(theme, { drawerWidth }), + }, + ...!open && { + ...closedMixin(theme), + '& .MuiDrawer-paper': closedMixin(theme), + }, + }), +); + +export default Drawer; diff --git a/src/widgets/AsideMenuLayout/ui/components/DrawerMenu/index.tsx b/src/widgets/AsideMenuLayout/ui/components/DrawerMenu/index.tsx new file mode 100644 index 0000000..fd57536 --- /dev/null +++ b/src/widgets/AsideMenuLayout/ui/components/DrawerMenu/index.tsx @@ -0,0 +1,10 @@ +import { styled } from '@mui/material/styles'; + +const DrawerHeader = styled('div')(({ theme }) => ({ + display: 'flex', + alignItems: 'center', + justifyContent: 'flex-end', + ...theme.mixins.toolbar, +})); + +export default DrawerHeader; diff --git a/src/widgets/AsideMenuLayout/ui/components/DrawerSwitcher/index.tsx b/src/widgets/AsideMenuLayout/ui/components/DrawerSwitcher/index.tsx new file mode 100644 index 0000000..8188f5a --- /dev/null +++ b/src/widgets/AsideMenuLayout/ui/components/DrawerSwitcher/index.tsx @@ -0,0 +1,20 @@ +import { styled } from '@mui/material/styles'; + +type DrawerSwitcherProps = { + open: boolean; +}; +const DrawerSwitcher = styled('div')(({ open }) => ({ + width: '100%', + height: '100%', + cursor: 'pointer', + display: 'flex', + justifyContent: open ? 'flex-end' : 'center', + alignItems: 'center', + padding: '0 20px', + transition: '200ms', + '&:hover': { + background: 'rgba(0, 0, 0, 0.1)', + }, +})); + +export default DrawerSwitcher; diff --git a/src/widgets/AsideMenuLayout/ui/components/MenuItem/index.tsx b/src/widgets/AsideMenuLayout/ui/components/MenuItem/index.tsx new file mode 100644 index 0000000..58fe27d --- /dev/null +++ b/src/widgets/AsideMenuLayout/ui/components/MenuItem/index.tsx @@ -0,0 +1,72 @@ +import ListItem from '@mui/material/ListItem'; +import ListItemButton from '@mui/material/ListItemButton'; +import ListItemIcon from '@mui/material/ListItemIcon'; +import ListItemText from '@mui/material/ListItemText'; +import { styled, useTheme } from '@mui/material/styles'; +import Typography from '@mui/material/Typography'; +import { NavLink as RRDNavLink } from 'react-router-dom'; + +import type { FC, ReactNode } from 'react'; + +const NavLink = styled(RRDNavLink)(({ theme }) => ({ + textDecoration: 'none', + color: theme.palette.grey['600'], + width: '100%', +})); + +export type MenuItemProps = { + page: { + icon: ReactNode; + title: string; + path: string; + }; + isOpen: boolean; +}; + +const MenuItem: FC = (props) => { + const { + page, + isOpen, + } = props; + const theme = useTheme(); + + return ( + + + {({ isActive }) => ( + + + {page.icon} + + + + + {page.title} + + + + )} + + + ); +}; + +export default MenuItem; diff --git a/tsconfig.json b/tsconfig.json index 166c178..b3c1d07 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -33,6 +33,7 @@ "moduleResolution": "Node", "paths": { "__spec__/*": ["./__spec__/*"], + "public*": ["./public/*"], "*": ["./src/*"] }, diff --git a/yarn.lock b/yarn.lock index 46ede99..43ebb81 100644 --- a/yarn.lock +++ b/yarn.lock @@ -232,6 +232,15 @@ __metadata: languageName: node linkType: hard +"@babel/helper-module-imports@npm:^7.16.7": + version: 7.24.6 + resolution: "@babel/helper-module-imports@npm:7.24.6" + dependencies: + "@babel/types": "npm:^7.24.6" + checksum: 10c0/e0db3fbfcd963d138f0792ff626f940a576fcf212d02b8fe6478dccf3421bd1c2a76f8e69c7450c049985e7b63b30be309a24eeeb6ad7c2137a31b676a095a84 + languageName: node + linkType: hard + "@babel/helper-module-imports@npm:^7.22.15, @babel/helper-module-imports@npm:^7.24.1": version: 7.24.3 resolution: "@babel/helper-module-imports@npm:7.24.3" @@ -332,6 +341,13 @@ __metadata: languageName: node linkType: hard +"@babel/helper-string-parser@npm:^7.24.6": + version: 7.24.6 + resolution: "@babel/helper-string-parser@npm:7.24.6" + checksum: 10c0/95115bf676e92c4e99166395649108d97447e6cabef1fabaec8cdbc53a43f27b5df2268ff6534439d405bc1bd06685b163eb3b470455bd49f69159dada414145 + languageName: node + linkType: hard + "@babel/helper-validator-identifier@npm:^7.22.20": version: 7.22.20 resolution: "@babel/helper-validator-identifier@npm:7.22.20" @@ -339,6 +355,13 @@ __metadata: languageName: node linkType: hard +"@babel/helper-validator-identifier@npm:^7.24.6": + version: 7.24.6 + resolution: "@babel/helper-validator-identifier@npm:7.24.6" + checksum: 10c0/d29d2e3fca66c31867a009014169b93f7bc21c8fc1dd7d0b9d85d7a4000670526ff2222d966febb75a6e12f9859a31d1e75b558984e28ecb69651314dd0a6fd1 + languageName: node + linkType: hard + "@babel/helper-validator-option@npm:^7.22.15, @babel/helper-validator-option@npm:^7.23.5": version: 7.23.5 resolution: "@babel/helper-validator-option@npm:7.23.5" @@ -1590,6 +1613,15 @@ __metadata: languageName: node linkType: hard +"@babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.23.9, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.8.7": + version: 7.24.6 + resolution: "@babel/runtime@npm:7.24.6" + dependencies: + regenerator-runtime: "npm:^0.14.0" + checksum: 10c0/224ad205de33ea28979baaec89eea4c4d4e9482000dd87d15b97859365511cdd4d06517712504024f5d33a5fb9412f9b91c96f1d923974adf9359e1575cde049 + languageName: node + linkType: hard + "@babel/template@npm:^7.22.15, @babel/template@npm:^7.24.0, @babel/template@npm:^7.3.3": version: 7.24.0 resolution: "@babel/template@npm:7.24.0" @@ -1630,6 +1662,17 @@ __metadata: languageName: node linkType: hard +"@babel/types@npm:^7.24.6": + version: 7.24.6 + resolution: "@babel/types@npm:7.24.6" + dependencies: + "@babel/helper-string-parser": "npm:^7.24.6" + "@babel/helper-validator-identifier": "npm:^7.24.6" + to-fast-properties: "npm:^2.0.0" + checksum: 10c0/1d94d92d97ef49030ad7f9e14cfccfeb70b1706dabcaa69037e659ec9d2c3178fb005d2088cce40d88dfc1306153d9157fe038a79ea2be92e5e6b99a59ef80cc + languageName: node + linkType: hard + "@bcoe/v8-coverage@npm:^0.2.3": version: 0.2.3 resolution: "@bcoe/v8-coverage@npm:0.2.3" @@ -2281,6 +2324,152 @@ __metadata: languageName: node linkType: hard +"@emotion/babel-plugin@npm:^11.11.0": + version: 11.11.0 + resolution: "@emotion/babel-plugin@npm:11.11.0" + dependencies: + "@babel/helper-module-imports": "npm:^7.16.7" + "@babel/runtime": "npm:^7.18.3" + "@emotion/hash": "npm:^0.9.1" + "@emotion/memoize": "npm:^0.8.1" + "@emotion/serialize": "npm:^1.1.2" + babel-plugin-macros: "npm:^3.1.0" + convert-source-map: "npm:^1.5.0" + escape-string-regexp: "npm:^4.0.0" + find-root: "npm:^1.1.0" + source-map: "npm:^0.5.7" + stylis: "npm:4.2.0" + checksum: 10c0/89cbb6ec0e52c8ee9c2a4b9889ccd4fc3a75d28091d835bfac6d7c4565d3338621e23af0a85f3bcd133e1cae795c692e1dadada015784d4b0554aa5bb111df43 + languageName: node + linkType: hard + +"@emotion/cache@npm:^11.11.0": + version: 11.11.0 + resolution: "@emotion/cache@npm:11.11.0" + dependencies: + "@emotion/memoize": "npm:^0.8.1" + "@emotion/sheet": "npm:^1.2.2" + "@emotion/utils": "npm:^1.2.1" + "@emotion/weak-memoize": "npm:^0.3.1" + stylis: "npm:4.2.0" + checksum: 10c0/a23ab5ab2fd08e904698106d58ad3536fed51cc1aa0ef228e95bb640eaf11f560dbd91a395477b0d84e1e3c20150263764b4558517cf6576a89d2d6cc5253688 + languageName: node + linkType: hard + +"@emotion/hash@npm:^0.9.1": + version: 0.9.1 + resolution: "@emotion/hash@npm:0.9.1" + checksum: 10c0/cdafe5da63fc1137f3db6e232fdcde9188b2b47ee66c56c29137199642a4086f42382d866911cfb4833cae2cc00271ab45cad3946b024f67b527bb7fac7f4c9d + languageName: node + linkType: hard + +"@emotion/is-prop-valid@npm:^1.2.2": + version: 1.2.2 + resolution: "@emotion/is-prop-valid@npm:1.2.2" + dependencies: + "@emotion/memoize": "npm:^0.8.1" + checksum: 10c0/bb1530dcb4e0e5a4fabb219279f2d0bc35796baf66f6241f98b0d03db1985c890a8cafbea268e0edefd5eeda143dbd5c09a54b5fba74cee8c69b98b13194af50 + languageName: node + linkType: hard + +"@emotion/memoize@npm:^0.8.1": + version: 0.8.1 + resolution: "@emotion/memoize@npm:0.8.1" + checksum: 10c0/dffed372fc3b9fa2ba411e76af22b6bb686fb0cb07694fdfaa6dd2baeb0d5e4968c1a7caa472bfcf06a5997d5e7c7d16b90e993f9a6ffae79a2c3dbdc76dfe78 + languageName: node + linkType: hard + +"@emotion/react@npm:11.11.4": + version: 11.11.4 + resolution: "@emotion/react@npm:11.11.4" + dependencies: + "@babel/runtime": "npm:^7.18.3" + "@emotion/babel-plugin": "npm:^11.11.0" + "@emotion/cache": "npm:^11.11.0" + "@emotion/serialize": "npm:^1.1.3" + "@emotion/use-insertion-effect-with-fallbacks": "npm:^1.0.1" + "@emotion/utils": "npm:^1.2.1" + "@emotion/weak-memoize": "npm:^0.3.1" + hoist-non-react-statics: "npm:^3.3.1" + peerDependencies: + react: ">=16.8.0" + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 10c0/6df892fd9e04b5c8c37aacfd7f461631e04e00e845edc3c5b2955ab8ad681abf5cd49584101f579427e08b82f2f88369c78d37ae2fe9360a8f68fd4e51b8e448 + languageName: node + linkType: hard + +"@emotion/serialize@npm:^1.1.2, @emotion/serialize@npm:^1.1.3, @emotion/serialize@npm:^1.1.4": + version: 1.1.4 + resolution: "@emotion/serialize@npm:1.1.4" + dependencies: + "@emotion/hash": "npm:^0.9.1" + "@emotion/memoize": "npm:^0.8.1" + "@emotion/unitless": "npm:^0.8.1" + "@emotion/utils": "npm:^1.2.1" + csstype: "npm:^3.0.2" + checksum: 10c0/164d936f72382594c47b9c24e67a51c7fc16b83d9a36b84eec5e4cb9bf7be029218a490ef4b44233a1b53423bdb3905d65b597cde3ebba759d40dab7a4c99121 + languageName: node + linkType: hard + +"@emotion/sheet@npm:^1.2.2": + version: 1.2.2 + resolution: "@emotion/sheet@npm:1.2.2" + checksum: 10c0/69827a1bfa43d7b188f1d8cea42163143a36312543fdade5257c459a2b3efd7ce386aac84ba152bc2517a4f7e54384c04800b26adb382bb284ac7e4ad40e584b + languageName: node + linkType: hard + +"@emotion/styled@npm:11.11.5": + version: 11.11.5 + resolution: "@emotion/styled@npm:11.11.5" + dependencies: + "@babel/runtime": "npm:^7.18.3" + "@emotion/babel-plugin": "npm:^11.11.0" + "@emotion/is-prop-valid": "npm:^1.2.2" + "@emotion/serialize": "npm:^1.1.4" + "@emotion/use-insertion-effect-with-fallbacks": "npm:^1.0.1" + "@emotion/utils": "npm:^1.2.1" + peerDependencies: + "@emotion/react": ^11.0.0-rc.0 + react: ">=16.8.0" + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 10c0/27da6ad7f5b374d61cfe6647cc2f93ee3ceb1139a51907050576ee30da0a50a27b0bbed45f76889d560d2a8ccf8bc4a4f7126cad3f00127e107c11093dc0a801 + languageName: node + linkType: hard + +"@emotion/unitless@npm:^0.8.1": + version: 0.8.1 + resolution: "@emotion/unitless@npm:0.8.1" + checksum: 10c0/a1ed508628288f40bfe6dd17d431ed899c067a899fa293a13afe3aed1d70fac0412b8a215fafab0b42829360db687fecd763e5f01a64ddc4a4b58ec3112ff548 + languageName: node + linkType: hard + +"@emotion/use-insertion-effect-with-fallbacks@npm:^1.0.1": + version: 1.0.1 + resolution: "@emotion/use-insertion-effect-with-fallbacks@npm:1.0.1" + peerDependencies: + react: ">=16.8.0" + checksum: 10c0/a15b2167940e3a908160687b73fc4fcd81e59ab45136b6967f02c7c419d9a149acd22a416b325c389642d4f1c3d33cf4196cad6b618128b55b7c74f6807a240b + languageName: node + linkType: hard + +"@emotion/utils@npm:^1.2.1": + version: 1.2.1 + resolution: "@emotion/utils@npm:1.2.1" + checksum: 10c0/db43ca803361740c14dfb1cca1464d10d27f4c8b40d3e8864e6932ccf375d1450778ff4e4eadee03fb97f2aeb18de9fae98294905596a12ff7d4cd1910414d8d + languageName: node + linkType: hard + +"@emotion/weak-memoize@npm:^0.3.1": + version: 0.3.1 + resolution: "@emotion/weak-memoize@npm:0.3.1" + checksum: 10c0/ed514b3cb94bbacece4ac2450d98898066c0a0698bdeda256e312405ca53634cb83c75889b25cd8bbbe185c80f4c05a1f0a0091e1875460ba6be61d0334f0b8a + languageName: node + linkType: hard + "@esbuild/aix-ppc64@npm:0.19.12": version: 0.19.12 resolution: "@esbuild/aix-ppc64@npm:0.19.12" @@ -2484,6 +2673,44 @@ __metadata: languageName: node linkType: hard +"@floating-ui/core@npm:^1.0.0": + version: 1.6.2 + resolution: "@floating-ui/core@npm:1.6.2" + dependencies: + "@floating-ui/utils": "npm:^0.2.0" + checksum: 10c0/db2621dc682e7f043d6f118d087ae6a6bfdacf40b26ede561760dd53548c16e2e7c59031e013e37283801fa307b55e6de65bf3b316b96a054e4a6a7cb937c59e + languageName: node + linkType: hard + +"@floating-ui/dom@npm:^1.0.0": + version: 1.6.5 + resolution: "@floating-ui/dom@npm:1.6.5" + dependencies: + "@floating-ui/core": "npm:^1.0.0" + "@floating-ui/utils": "npm:^0.2.0" + checksum: 10c0/ebdc14806f786e60df8e7cc2c30bf9cd4d75fe734f06d755588bbdef2f60d0a0f21dffb14abdc58dea96e5577e2e366feca6d66ba962018efd1bc91a3ece4526 + languageName: node + linkType: hard + +"@floating-ui/react-dom@npm:^2.0.8": + version: 2.1.0 + resolution: "@floating-ui/react-dom@npm:2.1.0" + dependencies: + "@floating-ui/dom": "npm:^1.0.0" + peerDependencies: + react: ">=16.8.0" + react-dom: ">=16.8.0" + checksum: 10c0/9ee44dfeb27f585fb1e0114cbe37c72ff5d34149900f4f3013f6b0abf8c3365eab13286c360f97fbe0c44bb91a745e7a4c18b82d111990b45a7a7796dc55e461 + languageName: node + linkType: hard + +"@floating-ui/utils@npm:^0.2.0": + version: 0.2.2 + resolution: "@floating-ui/utils@npm:0.2.2" + checksum: 10c0/b2becdcafdf395af1641348da0031ff1eaad2bc60c22e14bd3abad4acfe2c8401e03097173d89a2f646a99b75819a78ef21ebb2572cab0042a56dd654b0065cd + languageName: node + linkType: hard + "@humanwhocodes/config-array@npm:^0.11.14": version: 0.11.14 resolution: "@humanwhocodes/config-array@npm:0.11.14" @@ -2849,6 +3076,180 @@ __metadata: languageName: node linkType: hard +"@mui/base@npm:5.0.0-beta.40": + version: 5.0.0-beta.40 + resolution: "@mui/base@npm:5.0.0-beta.40" + dependencies: + "@babel/runtime": "npm:^7.23.9" + "@floating-ui/react-dom": "npm:^2.0.8" + "@mui/types": "npm:^7.2.14" + "@mui/utils": "npm:^5.15.14" + "@popperjs/core": "npm:^2.11.8" + clsx: "npm:^2.1.0" + prop-types: "npm:^15.8.1" + peerDependencies: + "@types/react": ^17.0.0 || ^18.0.0 + react: ^17.0.0 || ^18.0.0 + react-dom: ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 10c0/631b4ee389e23d82c16c5845c2849af43000f52f1def639b9bb5bf39fd09f4eab93787d32950b715a7de7b689faab53bb7c9a78f6fd12b663876cf8128d45de1 + languageName: node + linkType: hard + +"@mui/core-downloads-tracker@npm:^5.15.19": + version: 5.15.19 + resolution: "@mui/core-downloads-tracker@npm:5.15.19" + checksum: 10c0/90cd3eb95399326f60140618b43c91de133a7192fd122c379278e30e09b921a6109786189b1a78e45b3b6ef6104d0f0e2f29209e48f64c978ec28ef91c5bce2b + languageName: node + linkType: hard + +"@mui/icons-material@npm:^5.15.19": + version: 5.15.19 + resolution: "@mui/icons-material@npm:5.15.19" + dependencies: + "@babel/runtime": "npm:^7.23.9" + peerDependencies: + "@mui/material": ^5.0.0 + "@types/react": ^17.0.0 || ^18.0.0 + react: ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 10c0/f2a4381b6a0f955d74aa5ac88bb8d38fee384fdff9a8e82c7fb9e596fbc61ccff97883a6c1a3cfbab3253f4d53c3fef21a3b438dfe45de365e842577bc892c08 + languageName: node + linkType: hard + +"@mui/material@npm:5.15.19": + version: 5.15.19 + resolution: "@mui/material@npm:5.15.19" + dependencies: + "@babel/runtime": "npm:^7.23.9" + "@mui/base": "npm:5.0.0-beta.40" + "@mui/core-downloads-tracker": "npm:^5.15.19" + "@mui/system": "npm:^5.15.15" + "@mui/types": "npm:^7.2.14" + "@mui/utils": "npm:^5.15.14" + "@types/react-transition-group": "npm:^4.4.10" + clsx: "npm:^2.1.0" + csstype: "npm:^3.1.3" + prop-types: "npm:^15.8.1" + react-is: "npm:^18.2.0" + react-transition-group: "npm:^4.4.5" + peerDependencies: + "@emotion/react": ^11.5.0 + "@emotion/styled": ^11.3.0 + "@types/react": ^17.0.0 || ^18.0.0 + react: ^17.0.0 || ^18.0.0 + react-dom: ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + "@emotion/react": + optional: true + "@emotion/styled": + optional: true + "@types/react": + optional: true + checksum: 10c0/388eb14bedea7453dde7e5cbdcf9e51bec20567978d9405aa4affb9df69d25c9696427820ebff927215a8e8cd79a873ce9ac4207989a1c6b859d26394031382e + languageName: node + linkType: hard + +"@mui/private-theming@npm:^5.15.14": + version: 5.15.14 + resolution: "@mui/private-theming@npm:5.15.14" + dependencies: + "@babel/runtime": "npm:^7.23.9" + "@mui/utils": "npm:^5.15.14" + prop-types: "npm:^15.8.1" + peerDependencies: + "@types/react": ^17.0.0 || ^18.0.0 + react: ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 10c0/28889505874f03e2aeeb147bc5eefcc537825a91ab9c771a5e60ea0df1eab760e900a3a50fec55b25bc9087e9030be37adbe1acdd81a3e2fcca5a1e0cf5979ec + languageName: node + linkType: hard + +"@mui/styled-engine@npm:^5.15.14": + version: 5.15.14 + resolution: "@mui/styled-engine@npm:5.15.14" + dependencies: + "@babel/runtime": "npm:^7.23.9" + "@emotion/cache": "npm:^11.11.0" + csstype: "npm:^3.1.3" + prop-types: "npm:^15.8.1" + peerDependencies: + "@emotion/react": ^11.4.1 + "@emotion/styled": ^11.3.0 + react: ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + "@emotion/react": + optional: true + "@emotion/styled": + optional: true + checksum: 10c0/0d262ea0b3c117f865af1cd52b992592c24432e491b35e712159bb49adfd776ee9a532abbc4ab08889f308e75d30082a0fee809119d5d61a82b3277212655319 + languageName: node + linkType: hard + +"@mui/system@npm:^5.15.15": + version: 5.15.15 + resolution: "@mui/system@npm:5.15.15" + dependencies: + "@babel/runtime": "npm:^7.23.9" + "@mui/private-theming": "npm:^5.15.14" + "@mui/styled-engine": "npm:^5.15.14" + "@mui/types": "npm:^7.2.14" + "@mui/utils": "npm:^5.15.14" + clsx: "npm:^2.1.0" + csstype: "npm:^3.1.3" + prop-types: "npm:^15.8.1" + peerDependencies: + "@emotion/react": ^11.5.0 + "@emotion/styled": ^11.3.0 + "@types/react": ^17.0.0 || ^18.0.0 + react: ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + "@emotion/react": + optional: true + "@emotion/styled": + optional: true + "@types/react": + optional: true + checksum: 10c0/80724377ee9c0e1604373371bb9b7d566c899009264caf6f638eed224600b91b739f32bef03c6a479dc9348dfc01d7c28cc8d1252454d7dd4a23f59033a8653e + languageName: node + linkType: hard + +"@mui/types@npm:^7.2.14": + version: 7.2.14 + resolution: "@mui/types@npm:7.2.14" + peerDependencies: + "@types/react": ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 10c0/d4e0a9fce4bddfb5e0b7b6be1b15b591df33bb90ef0087e4bd5fe85f00f62776c7ed0e4698e7fb43213e1f04064aac1695b53ca52aaeaee7dbba248a792bdd1e + languageName: node + linkType: hard + +"@mui/utils@npm:^5.15.14": + version: 5.15.14 + resolution: "@mui/utils@npm:5.15.14" + dependencies: + "@babel/runtime": "npm:^7.23.9" + "@types/prop-types": "npm:^15.7.11" + prop-types: "npm:^15.8.1" + react-is: "npm:^18.2.0" + peerDependencies: + "@types/react": ^17.0.0 || ^18.0.0 + react: ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 10c0/36265988477637a011361456b40929de928e215466b72e6c48673a2088610d83e09960a3e0608100448910683079fc80a5e11dbf49b9ce7109dd8e49403ae3b3 + languageName: node + linkType: hard + "@nodelib/fs.scandir@npm:2.1.5": version: 2.1.5 resolution: "@nodelib/fs.scandir@npm:2.1.5" @@ -2951,6 +3352,13 @@ __metadata: languageName: node linkType: hard +"@popperjs/core@npm:^2.11.8": + version: 2.11.8 + resolution: "@popperjs/core@npm:2.11.8" + checksum: 10c0/4681e682abc006d25eb380d0cf3efc7557043f53b6aea7a5057d0d1e7df849a00e281cd8ea79c902a35a414d7919621fc2ba293ecec05f413598e0b23d5a1e63 + languageName: node + linkType: hard + "@react-dnd/asap@npm:^5.0.1": version: 5.0.2 resolution: "@react-dnd/asap@npm:5.0.2" @@ -3775,7 +4183,14 @@ __metadata: languageName: node linkType: hard -"@types/prop-types@npm:*": +"@types/parse-json@npm:^4.0.0": + version: 4.0.2 + resolution: "@types/parse-json@npm:4.0.2" + checksum: 10c0/b1b863ac34a2c2172fbe0807a1ec4d5cb684e48d422d15ec95980b81475fac4fdb3768a8b13eef39130203a7c04340fc167bae057c7ebcafd7dec9fe6c36aeb1 + languageName: node + linkType: hard + +"@types/prop-types@npm:*, @types/prop-types@npm:^15.7.11": version: 15.7.12 resolution: "@types/prop-types@npm:15.7.12" checksum: 10c0/1babcc7db6a1177779f8fde0ccc78d64d459906e6ef69a4ed4dd6339c920c2e05b074ee5a92120fe4e9d9f1a01c952f843ebd550bee2332fc2ef81d1706878f8 @@ -3805,6 +4220,15 @@ __metadata: languageName: node linkType: hard +"@types/react-transition-group@npm:^4.4.10": + version: 4.4.10 + resolution: "@types/react-transition-group@npm:4.4.10" + dependencies: + "@types/react": "npm:*" + checksum: 10c0/3eb9bca143abc21eb781aa5cb1bded0c9335689d515bf0513fb8e63217b7a8122c6a323ecd5644a06938727e1f467ee061d8df1c93b68825a80ff1b47ab777a2 + languageName: node + linkType: hard + "@types/react@npm:*": version: 18.2.69 resolution: "@types/react@npm:18.2.69" @@ -4908,6 +5332,17 @@ __metadata: languageName: node linkType: hard +"babel-plugin-macros@npm:^3.1.0": + version: 3.1.0 + resolution: "babel-plugin-macros@npm:3.1.0" + dependencies: + "@babel/runtime": "npm:^7.12.5" + cosmiconfig: "npm:^7.0.0" + resolve: "npm:^1.19.0" + checksum: 10c0/c6dfb15de96f67871d95bd2e8c58b0c81edc08b9b087dc16755e7157f357dc1090a8dc60ebab955e92587a9101f02eba07e730adc253a1e4cf593ca3ebd3839c + languageName: node + linkType: hard + "babel-plugin-polyfill-corejs2@npm:^0.4.10, babel-plugin-polyfill-corejs2@npm:^0.4.8": version: 0.4.10 resolution: "babel-plugin-polyfill-corejs2@npm:0.4.10" @@ -5417,6 +5852,13 @@ __metadata: languageName: node linkType: hard +"clsx@npm:^2.1.0": + version: 2.1.1 + resolution: "clsx@npm:2.1.1" + checksum: 10c0/c4c8eb865f8c82baab07e71bfa8897c73454881c4f99d6bc81585aecd7c441746c1399d08363dc096c550cceaf97bd4ce1e8854e1771e9998d9f94c4fe075839 + languageName: node + linkType: hard + "co@npm:^4.6.0": version: 4.6.0 resolution: "co@npm:4.6.0" @@ -5846,6 +6288,13 @@ __metadata: languageName: node linkType: hard +"convert-source-map@npm:^1.5.0": + version: 1.9.0 + resolution: "convert-source-map@npm:1.9.0" + checksum: 10c0/281da55454bf8126cbc6625385928c43479f2060984180c42f3a86c8b8c12720a24eac260624a7d1e090004028d2dee78602330578ceec1a08e27cb8bb0a8a5b + languageName: node + linkType: hard + "convert-source-map@npm:^2.0.0": version: 2.0.0 resolution: "convert-source-map@npm:2.0.0" @@ -5919,6 +6368,19 @@ __metadata: languageName: node linkType: hard +"cosmiconfig@npm:^7.0.0": + version: 7.1.0 + resolution: "cosmiconfig@npm:7.1.0" + dependencies: + "@types/parse-json": "npm:^4.0.0" + import-fresh: "npm:^3.2.1" + parse-json: "npm:^5.0.0" + path-type: "npm:^4.0.0" + yaml: "npm:^1.10.0" + checksum: 10c0/b923ff6af581638128e5f074a5450ba12c0300b71302398ea38dbeabd33bbcaa0245ca9adbedfcf284a07da50f99ede5658c80bb3e39e2ce770a99d28a21ef03 + languageName: node + linkType: hard + "cosmiconfig@npm:^8.1.3, cosmiconfig@npm:^8.2.0": version: 8.3.6 resolution: "cosmiconfig@npm:8.3.6" @@ -6252,7 +6714,7 @@ __metadata: languageName: node linkType: hard -"csstype@npm:^3.0.2": +"csstype@npm:^3.0.2, csstype@npm:^3.1.3": version: 3.1.3 resolution: "csstype@npm:3.1.3" checksum: 10c0/80c089d6f7e0c5b2bd83cf0539ab41474198579584fa10d86d0cafe0642202343cbc119e076a0b1aece191989477081415d66c9fefbf3c957fc2fc4b7009f248 @@ -6639,6 +7101,16 @@ __metadata: languageName: node linkType: hard +"dom-helpers@npm:^5.0.1": + version: 5.2.1 + resolution: "dom-helpers@npm:5.2.1" + dependencies: + "@babel/runtime": "npm:^7.8.7" + csstype: "npm:^3.0.2" + checksum: 10c0/f735074d66dd759b36b158fa26e9d00c9388ee0e8c9b16af941c38f014a37fc80782de83afefd621681b19ac0501034b4f1c4a3bff5caa1b8667f0212b5e124c + languageName: node + linkType: hard + "dom-serializer@npm:^1.0.1": version: 1.4.1 resolution: "dom-serializer@npm:1.4.1" @@ -8536,7 +9008,7 @@ __metadata: languageName: node linkType: hard -"hoist-non-react-statics@npm:^3.3.2": +"hoist-non-react-statics@npm:^3.3.1, hoist-non-react-statics@npm:^3.3.2": version: 3.3.2 resolution: "hoist-non-react-statics@npm:3.3.2" dependencies: @@ -10950,6 +11422,10 @@ __metadata: dependencies: "@commitlint/cli": "npm:19.2.1" "@commitlint/config-conventional": "npm:19.1.0" + "@emotion/react": "npm:11.11.4" + "@emotion/styled": "npm:11.11.5" + "@mui/icons-material": "npm:^5.15.19" + "@mui/material": "npm:5.15.19" "@testing-library/jest-dom": "npm:6.4.2" "@testing-library/react": "npm:14.3.1" "@testing-library/user-event": "npm:^14.5.2" @@ -10964,7 +11440,6 @@ __metadata: jest-environment-jsdom: "npm:29.7.0" ksv741-react-scripts: "npm:0.3.1" lint-staged: "npm:15.2.2" - normalize.css: "npm:8.0.1" prop-types: "npm:15.8.1" react: "npm:18.3.1" react-dnd: "npm:16.0.1" @@ -11161,13 +11636,6 @@ __metadata: languageName: node linkType: hard -"normalize.css@npm:8.0.1": - version: 8.0.1 - resolution: "normalize.css@npm:8.0.1" - checksum: 10c0/4ddf56d1af5ca755fa5e692e718316d8758ecb792aa96e1ad206824b5810a043763d681d6f7697d46573515f5e9690038b4c91a95c1997567128815545fb8cd7 - languageName: node - linkType: hard - "npm-run-path@npm:^4.0.1": version: 4.0.1 resolution: "npm-run-path@npm:4.0.1" @@ -12592,7 +13060,7 @@ __metadata: languageName: node linkType: hard -"prop-types@npm:15.8.1, prop-types@npm:^15.8.1": +"prop-types@npm:15.8.1, prop-types@npm:^15.6.2, prop-types@npm:^15.8.1": version: 15.8.1 resolution: "prop-types@npm:15.8.1" dependencies: @@ -12773,6 +13241,13 @@ __metadata: languageName: node linkType: hard +"react-is@npm:^18.2.0": + version: 18.3.1 + resolution: "react-is@npm:18.3.1" + checksum: 10c0/f2f1e60010c683479e74c63f96b09fb41603527cd131a9959e2aee1e5a8b0caf270b365e5ca77d4a6b18aae659b60a86150bb3979073528877029b35aecd2072 + languageName: node + linkType: hard + "react-refresh@npm:0.14.0": version: 0.14.0 resolution: "react-refresh@npm:0.14.0" @@ -12804,6 +13279,21 @@ __metadata: languageName: node linkType: hard +"react-transition-group@npm:^4.4.5": + version: 4.4.5 + resolution: "react-transition-group@npm:4.4.5" + dependencies: + "@babel/runtime": "npm:^7.5.5" + dom-helpers: "npm:^5.0.1" + loose-envify: "npm:^1.4.0" + prop-types: "npm:^15.6.2" + peerDependencies: + react: ">=16.6.0" + react-dom: ">=16.6.0" + checksum: 10c0/2ba754ba748faefa15f87c96dfa700d5525054a0141de8c75763aae6734af0740e77e11261a1e8f4ffc08fd9ab78510122e05c21c2d79066c38bb6861a886c82 + languageName: node + linkType: hard + "react@npm:18.3.1": version: 18.3.1 resolution: "react@npm:18.3.1" @@ -13089,7 +13579,7 @@ __metadata: languageName: node linkType: hard -"resolve@npm:^1.10.0, resolve@npm:^1.14.2, resolve@npm:^1.20.0, resolve@npm:^1.22.4": +"resolve@npm:^1.10.0, resolve@npm:^1.14.2, resolve@npm:^1.19.0, resolve@npm:^1.20.0, resolve@npm:^1.22.4": version: 1.22.8 resolution: "resolve@npm:1.22.8" dependencies: @@ -13115,7 +13605,7 @@ __metadata: languageName: node linkType: hard -"resolve@patch:resolve@npm%3A^1.10.0#optional!builtin, resolve@patch:resolve@npm%3A^1.14.2#optional!builtin, resolve@patch:resolve@npm%3A^1.20.0#optional!builtin, resolve@patch:resolve@npm%3A^1.22.4#optional!builtin": +"resolve@patch:resolve@npm%3A^1.10.0#optional!builtin, resolve@patch:resolve@npm%3A^1.14.2#optional!builtin, resolve@patch:resolve@npm%3A^1.19.0#optional!builtin, resolve@patch:resolve@npm%3A^1.20.0#optional!builtin, resolve@patch:resolve@npm%3A^1.22.4#optional!builtin": version: 1.22.8 resolution: "resolve@patch:resolve@npm%3A1.22.8#optional!builtin::version=1.22.8&hash=c3c19d" dependencies: @@ -13677,6 +14167,13 @@ __metadata: languageName: node linkType: hard +"source-map@npm:^0.5.7": + version: 0.5.7 + resolution: "source-map@npm:0.5.7" + checksum: 10c0/904e767bb9c494929be013017380cbba013637da1b28e5943b566031e29df04fba57edf3f093e0914be094648b577372bd8ad247fa98cfba9c600794cd16b599 + languageName: node + linkType: hard + "source-map@npm:^0.6.0, source-map@npm:^0.6.1, source-map@npm:~0.6.0, source-map@npm:~0.6.1": version: 0.6.1 resolution: "source-map@npm:0.6.1" @@ -14075,6 +14572,13 @@ __metadata: languageName: node linkType: hard +"stylis@npm:4.2.0": + version: 4.2.0 + resolution: "stylis@npm:4.2.0" + checksum: 10c0/a7128ad5a8ed72652c6eba46bed4f416521bc9745a460ef5741edc725252cebf36ee45e33a8615a7057403c93df0866ab9ee955960792db210bb80abd5ac6543 + languageName: node + linkType: hard + "supports-color@npm:^5.3.0": version: 5.5.0 resolution: "supports-color@npm:5.5.0" @@ -15360,6 +15864,13 @@ __metadata: languageName: node linkType: hard +"yaml@npm:^1.10.0": + version: 1.10.2 + resolution: "yaml@npm:1.10.2" + checksum: 10c0/5c28b9eb7adc46544f28d9a8d20c5b3cb1215a886609a2fd41f51628d8aaa5878ccd628b755dbcd29f6bb4921bd04ffbc6dcc370689bb96e594e2f9813d2605f + languageName: node + linkType: hard + "yargs-parser@npm:^20.2.2, yargs-parser@npm:^20.2.3": version: 20.2.9 resolution: "yargs-parser@npm:20.2.9"