diff --git a/package-lock.json b/package-lock.json index 8a4725f1..baea129d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16,6 +16,7 @@ "@react-three/drei": "^8.20.2", "@react-three/fiber": "^7.0.26", "@reduxjs/toolkit": "^1.7.1", + "@svgr/webpack": "^6.2.1", "@testing-library/jest-dom": "^5.16.1", "@testing-library/react": "^12.1.2", "@testing-library/user-event": "^13.5.0", @@ -49,6 +50,7 @@ "devDependencies": { "@types/deep-equal": "^1.0.1", "@types/three": "^0.139.0", + "file-loader": "^6.2.0", "sass": "^1.51.0" } }, @@ -3747,114 +3749,138 @@ } }, "node_modules/@svgr/babel-plugin-add-jsx-attribute": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-5.4.0.tgz", - "integrity": "sha512-ZFf2gs/8/6B8PnSofI0inYXr2SDNTDScPXhN7k5EqD4aZ3gi6u+rbmZHVB8IM3wDyx8ntKACZbtXSm7oZGRqVg==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-6.0.0.tgz", + "integrity": "sha512-MdPdhdWLtQsjd29Wa4pABdhWbaRMACdM1h31BY+c6FghTZqNGT7pEYdBoaGeKtdTOBC/XNFQaKVj+r/Ei2ryWA==", "engines": { "node": ">=10" }, "funding": { "type": "github", "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@svgr/babel-plugin-remove-jsx-attribute": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-5.4.0.tgz", - "integrity": "sha512-yaS4o2PgUtwLFGTKbsiAy6D0o3ugcUhWK0Z45umJ66EPWunAz9fuFw2gJuje6wqQvQWOTJvIahUwndOXb7QCPg==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-6.0.0.tgz", + "integrity": "sha512-aVdtfx9jlaaxc3unA6l+M9YRnKIZjOhQPthLKqmTXC8UVkBLDRGwPKo+r8n3VZN8B34+yVajzPTZ+ptTSuZZCw==", "engines": { "node": ">=10" }, "funding": { "type": "github", "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@svgr/babel-plugin-remove-jsx-empty-expression": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-5.0.1.tgz", - "integrity": "sha512-LA72+88A11ND/yFIMzyuLRSMJ+tRKeYKeQ+mR3DcAZ5I4h5CPWN9AHyUzJbWSYp/u2u0xhmgOe0+E41+GjEueA==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-6.0.0.tgz", + "integrity": "sha512-Ccj42ApsePD451AZJJf1QzTD1B/BOU392URJTeXFxSK709i0KUsGtbwyiqsKu7vsYxpTM0IA5clAKDyf9RCZyA==", "engines": { "node": ">=10" }, "funding": { "type": "github", "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@svgr/babel-plugin-replace-jsx-attribute-value": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-5.0.1.tgz", - "integrity": "sha512-PoiE6ZD2Eiy5mK+fjHqwGOS+IXX0wq/YDtNyIgOrc6ejFnxN4b13pRpiIPbtPwHEc+NT2KCjteAcq33/F1Y9KQ==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-6.0.0.tgz", + "integrity": "sha512-88V26WGyt1Sfd1emBYmBJRWMmgarrExpKNVmI9vVozha4kqs6FzQJ/Kp5+EYli1apgX44518/0+t9+NU36lThQ==", "engines": { "node": ">=10" }, "funding": { "type": "github", "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@svgr/babel-plugin-svg-dynamic-title": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-5.4.0.tgz", - "integrity": "sha512-zSOZH8PdZOpuG1ZVx/cLVePB2ibo3WPpqo7gFIjLV9a0QsuQAzJiwwqmuEdTaW2pegyBE17Uu15mOgOcgabQZg==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-6.0.0.tgz", + "integrity": "sha512-F7YXNLfGze+xv0KMQxrl2vkNbI9kzT9oDK55/kUuymh1ACyXkMV+VZWX1zEhSTfEKh7VkHVZGmVtHg8eTZ6PRg==", "engines": { "node": ">=10" }, "funding": { "type": "github", "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@svgr/babel-plugin-svg-em-dimensions": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-5.4.0.tgz", - "integrity": "sha512-cPzDbDA5oT/sPXDCUYoVXEmm3VIoAWAPT6mSPTJNbQaBNUuEKVKyGH93oDY4e42PYHRW67N5alJx/eEol20abw==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-6.0.0.tgz", + "integrity": "sha512-+rghFXxdIqJNLQK08kwPBD3Z22/0b2tEZ9lKiL/yTfuyj1wW8HUXu4bo/XkogATIYuXSghVQOOCwURXzHGKyZA==", "engines": { "node": ">=10" }, "funding": { "type": "github", "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@svgr/babel-plugin-transform-react-native-svg": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-5.4.0.tgz", - "integrity": "sha512-3eYP/SaopZ41GHwXma7Rmxcv9uRslRDTY1estspeB1w1ueZWd/tPlMfEOoccYpEMZU3jD4OU7YitnXcF5hLW2Q==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-6.0.0.tgz", + "integrity": "sha512-VaphyHZ+xIKv5v0K0HCzyfAaLhPGJXSk2HkpYfXIOKb7DjLBv0soHDxNv6X0vr2titsxE7klb++u7iOf7TSrFQ==", "engines": { "node": ">=10" }, "funding": { "type": "github", "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@svgr/babel-plugin-transform-svg-component": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-5.5.0.tgz", - "integrity": "sha512-q4jSH1UUvbrsOtlo/tKcgSeiCHRSBdXoIoqX1pgcKK/aU3JD27wmMKwGtpB8qRYUYoyXvfGxUVKchLuR5pB3rQ==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-6.2.0.tgz", + "integrity": "sha512-bhYIpsORb++wpsp91fymbFkf09Z/YEKR0DnFjxvN+8JHeCUD2unnh18jIMKnDJTWtvpTaGYPXELVe4OOzFI0xg==", "engines": { - "node": ">=10" + "node": ">=12" }, "funding": { "type": "github", "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@svgr/babel-preset": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-5.5.0.tgz", - "integrity": "sha512-4FiXBjvQ+z2j7yASeGPEi8VD/5rrGQk4Xrq3EdJmoZgz/tpqChpo5hgXDvmEauwtvOc52q8ghhZK4Oy7qph4ig==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-6.2.0.tgz", + "integrity": "sha512-4WQNY0J71JIaL03DRn0vLiz87JXx0b9dYm2aA8XHlQJQoixMl4r/soYHm8dsaJZ3jWtkCiOYy48dp9izvXhDkQ==", "dependencies": { - "@svgr/babel-plugin-add-jsx-attribute": "^5.4.0", - "@svgr/babel-plugin-remove-jsx-attribute": "^5.4.0", - "@svgr/babel-plugin-remove-jsx-empty-expression": "^5.0.1", - "@svgr/babel-plugin-replace-jsx-attribute-value": "^5.0.1", - "@svgr/babel-plugin-svg-dynamic-title": "^5.4.0", - "@svgr/babel-plugin-svg-em-dimensions": "^5.4.0", - "@svgr/babel-plugin-transform-react-native-svg": "^5.4.0", - "@svgr/babel-plugin-transform-svg-component": "^5.5.0" + "@svgr/babel-plugin-add-jsx-attribute": "^6.0.0", + "@svgr/babel-plugin-remove-jsx-attribute": "^6.0.0", + "@svgr/babel-plugin-remove-jsx-empty-expression": "^6.0.0", + "@svgr/babel-plugin-replace-jsx-attribute-value": "^6.0.0", + "@svgr/babel-plugin-svg-dynamic-title": "^6.0.0", + "@svgr/babel-plugin-svg-em-dimensions": "^6.0.0", + "@svgr/babel-plugin-transform-react-native-svg": "^6.0.0", + "@svgr/babel-plugin-transform-svg-component": "^6.2.0" }, "engines": { "node": ">=10" @@ -3862,16 +3888,19 @@ "funding": { "type": "github", "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@svgr/core": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/core/-/core-5.5.0.tgz", - "integrity": "sha512-q52VOcsJPvV3jO1wkPtzTuKlvX7Y3xIcWRpCMtBF3MrteZJtBfQw/+u0B1BHy5ColpQc1/YVTrPEtSYIMNZlrQ==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/@svgr/core/-/core-6.2.1.tgz", + "integrity": "sha512-NWufjGI2WUyrg46mKuySfviEJ6IxHUOm/8a3Ph38VCWSp+83HBraCQrpEM3F3dB6LBs5x8OElS8h3C0oOJaJAA==", "dependencies": { - "@svgr/plugin-jsx": "^5.5.0", + "@svgr/plugin-jsx": "^6.2.1", "camelcase": "^6.2.0", - "cosmiconfig": "^7.0.0" + "cosmiconfig": "^7.0.1" }, "engines": { "node": ">=10" @@ -3882,11 +3911,12 @@ } }, "node_modules/@svgr/hast-util-to-babel-ast": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-5.5.0.tgz", - "integrity": "sha512-cAaR/CAiZRB8GP32N+1jocovUtvlj0+e65TB50/6Lcime+EA49m/8l+P2ko+XPJ4dw3xaPS3jOL4F2X4KWxoeQ==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-6.2.1.tgz", + "integrity": "sha512-pt7MMkQFDlWJVy9ULJ1h+hZBDGFfSCwlBNW1HkLnVi7jUhyEXUaGYWi1x6bM2IXuAR9l265khBT4Av4lPmaNLQ==", "dependencies": { - "@babel/types": "^7.12.6" + "@babel/types": "^7.15.6", + "entities": "^3.0.1" }, "engines": { "node": ">=10" @@ -3896,14 +3926,25 @@ "url": "https://github.com/sponsors/gregberge" } }, + "node_modules/@svgr/hast-util-to-babel-ast/node_modules/entities": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz", + "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, "node_modules/@svgr/plugin-jsx": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-5.5.0.tgz", - "integrity": "sha512-V/wVh33j12hGh05IDg8GpIUXbjAPnTdPTKuP4VNLggnwaHMPNQNae2pRnyTAILWCQdz5GyMqtO488g7CKM8CBA==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-6.2.1.tgz", + "integrity": "sha512-u+MpjTsLaKo6r3pHeeSVsh9hmGRag2L7VzApWIaS8imNguqoUwDq/u6U/NDmYs/KAsrmtBjOEaAAPbwNGXXp1g==", "dependencies": { - "@babel/core": "^7.12.3", - "@svgr/babel-preset": "^5.5.0", - "@svgr/hast-util-to-babel-ast": "^5.5.0", + "@babel/core": "^7.15.5", + "@svgr/babel-preset": "^6.2.0", + "@svgr/hast-util-to-babel-ast": "^6.2.1", "svg-parser": "^2.0.2" }, "engines": { @@ -3912,16 +3953,19 @@ "funding": { "type": "github", "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@svgr/core": "^6.0.0" } }, "node_modules/@svgr/plugin-svgo": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-5.5.0.tgz", - "integrity": "sha512-r5swKk46GuQl4RrVejVwpeeJaydoxkdwkM1mBKOgJLBUJPGaLci6ylg/IjhrRsREKDkr4kbMWdgOtbXEh0fyLQ==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-6.2.0.tgz", + "integrity": "sha512-oDdMQONKOJEbuKwuy4Np6VdV6qoaLLvoY86hjvQEgU82Vx1MSWRyYms6Sl0f+NtqxLI/rDVufATbP/ev996k3Q==", "dependencies": { - "cosmiconfig": "^7.0.0", + "cosmiconfig": "^7.0.1", "deepmerge": "^4.2.2", - "svgo": "^1.2.2" + "svgo": "^2.5.0" }, "engines": { "node": ">=10" @@ -3929,21 +3973,24 @@ "funding": { "type": "github", "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@svgr/core": "^6.0.0" } }, "node_modules/@svgr/webpack": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/webpack/-/webpack-5.5.0.tgz", - "integrity": "sha512-DOBOK255wfQxguUta2INKkzPj6AIS6iafZYiYmHn6W3pHlycSRRlvWKCfLDG10fXfLWqE3DJHgRUOyJYmARa7g==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/@svgr/webpack/-/webpack-6.2.1.tgz", + "integrity": "sha512-h09ngMNd13hnePwgXa+Y5CgOjzlCvfWLHg+MBnydEedAnuLRzUHUJmGS3o2OsrhxTOOqEsPOFt5v/f6C5Qulcw==", "dependencies": { - "@babel/core": "^7.12.3", - "@babel/plugin-transform-react-constant-elements": "^7.12.1", - "@babel/preset-env": "^7.12.1", - "@babel/preset-react": "^7.12.5", - "@svgr/core": "^5.5.0", - "@svgr/plugin-jsx": "^5.5.0", - "@svgr/plugin-svgo": "^5.5.0", - "loader-utils": "^2.0.0" + "@babel/core": "^7.15.5", + "@babel/plugin-transform-react-constant-elements": "^7.14.5", + "@babel/preset-env": "^7.15.6", + "@babel/preset-react": "^7.14.5", + "@babel/preset-typescript": "^7.15.0", + "@svgr/core": "^6.2.1", + "@svgr/plugin-jsx": "^6.2.1", + "@svgr/plugin-svgo": "^6.2.0" }, "engines": { "node": ">=10" @@ -8644,11 +8691,11 @@ } }, "node_modules/css-tree": { - "version": "1.0.0-alpha.37", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", - "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", "dependencies": { - "mdn-data": "2.0.4", + "mdn-data": "2.0.14", "source-map": "^0.6.1" }, "engines": { @@ -8787,31 +8834,6 @@ "node": ">=8.0.0" } }, - "node_modules/csso/node_modules/css-tree": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", - "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", - "dependencies": { - "mdn-data": "2.0.14", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/csso/node_modules/mdn-data": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", - "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==" - }, - "node_modules/csso/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/cssom": { "version": "0.4.4", "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", @@ -14694,9 +14716,9 @@ } }, "node_modules/mdn-data": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", - "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==" + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==" }, "node_modules/media-typer": { "version": "0.3.0", @@ -17294,59 +17316,6 @@ "postcss": "^8.2.15" } }, - "node_modules/postcss-svgo/node_modules/commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "engines": { - "node": ">= 10" - } - }, - "node_modules/postcss-svgo/node_modules/css-tree": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", - "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", - "dependencies": { - "mdn-data": "2.0.14", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/postcss-svgo/node_modules/mdn-data": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", - "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==" - }, - "node_modules/postcss-svgo/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-svgo/node_modules/svgo": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", - "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", - "dependencies": { - "@trysound/sax": "0.2.0", - "commander": "^7.2.0", - "css-select": "^4.1.3", - "css-tree": "^1.1.3", - "csso": "^4.2.0", - "picocolors": "^1.0.0", - "stable": "^0.1.8" - }, - "bin": { - "svgo": "bin/svgo" - }, - "engines": { - "node": ">=10.13.0" - } - }, "node_modules/postcss-unique-selectors": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.0.3.tgz", @@ -18075,6 +18044,318 @@ } } }, + "node_modules/react-scripts/node_modules/@svgr/babel-plugin-add-jsx-attribute": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-5.4.0.tgz", + "integrity": "sha512-ZFf2gs/8/6B8PnSofI0inYXr2SDNTDScPXhN7k5EqD4aZ3gi6u+rbmZHVB8IM3wDyx8ntKACZbtXSm7oZGRqVg==", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/react-scripts/node_modules/@svgr/babel-plugin-remove-jsx-attribute": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-5.4.0.tgz", + "integrity": "sha512-yaS4o2PgUtwLFGTKbsiAy6D0o3ugcUhWK0Z45umJ66EPWunAz9fuFw2gJuje6wqQvQWOTJvIahUwndOXb7QCPg==", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/react-scripts/node_modules/@svgr/babel-plugin-remove-jsx-empty-expression": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-5.0.1.tgz", + "integrity": "sha512-LA72+88A11ND/yFIMzyuLRSMJ+tRKeYKeQ+mR3DcAZ5I4h5CPWN9AHyUzJbWSYp/u2u0xhmgOe0+E41+GjEueA==", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/react-scripts/node_modules/@svgr/babel-plugin-replace-jsx-attribute-value": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-5.0.1.tgz", + "integrity": "sha512-PoiE6ZD2Eiy5mK+fjHqwGOS+IXX0wq/YDtNyIgOrc6ejFnxN4b13pRpiIPbtPwHEc+NT2KCjteAcq33/F1Y9KQ==", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/react-scripts/node_modules/@svgr/babel-plugin-svg-dynamic-title": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-5.4.0.tgz", + "integrity": "sha512-zSOZH8PdZOpuG1ZVx/cLVePB2ibo3WPpqo7gFIjLV9a0QsuQAzJiwwqmuEdTaW2pegyBE17Uu15mOgOcgabQZg==", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/react-scripts/node_modules/@svgr/babel-plugin-svg-em-dimensions": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-5.4.0.tgz", + "integrity": "sha512-cPzDbDA5oT/sPXDCUYoVXEmm3VIoAWAPT6mSPTJNbQaBNUuEKVKyGH93oDY4e42PYHRW67N5alJx/eEol20abw==", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/react-scripts/node_modules/@svgr/babel-plugin-transform-react-native-svg": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-5.4.0.tgz", + "integrity": "sha512-3eYP/SaopZ41GHwXma7Rmxcv9uRslRDTY1estspeB1w1ueZWd/tPlMfEOoccYpEMZU3jD4OU7YitnXcF5hLW2Q==", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/react-scripts/node_modules/@svgr/babel-plugin-transform-svg-component": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-5.5.0.tgz", + "integrity": "sha512-q4jSH1UUvbrsOtlo/tKcgSeiCHRSBdXoIoqX1pgcKK/aU3JD27wmMKwGtpB8qRYUYoyXvfGxUVKchLuR5pB3rQ==", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/react-scripts/node_modules/@svgr/babel-preset": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-5.5.0.tgz", + "integrity": "sha512-4FiXBjvQ+z2j7yASeGPEi8VD/5rrGQk4Xrq3EdJmoZgz/tpqChpo5hgXDvmEauwtvOc52q8ghhZK4Oy7qph4ig==", + "dependencies": { + "@svgr/babel-plugin-add-jsx-attribute": "^5.4.0", + "@svgr/babel-plugin-remove-jsx-attribute": "^5.4.0", + "@svgr/babel-plugin-remove-jsx-empty-expression": "^5.0.1", + "@svgr/babel-plugin-replace-jsx-attribute-value": "^5.0.1", + "@svgr/babel-plugin-svg-dynamic-title": "^5.4.0", + "@svgr/babel-plugin-svg-em-dimensions": "^5.4.0", + "@svgr/babel-plugin-transform-react-native-svg": "^5.4.0", + "@svgr/babel-plugin-transform-svg-component": "^5.5.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/react-scripts/node_modules/@svgr/core": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/core/-/core-5.5.0.tgz", + "integrity": "sha512-q52VOcsJPvV3jO1wkPtzTuKlvX7Y3xIcWRpCMtBF3MrteZJtBfQw/+u0B1BHy5ColpQc1/YVTrPEtSYIMNZlrQ==", + "dependencies": { + "@svgr/plugin-jsx": "^5.5.0", + "camelcase": "^6.2.0", + "cosmiconfig": "^7.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/react-scripts/node_modules/@svgr/hast-util-to-babel-ast": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-5.5.0.tgz", + "integrity": "sha512-cAaR/CAiZRB8GP32N+1jocovUtvlj0+e65TB50/6Lcime+EA49m/8l+P2ko+XPJ4dw3xaPS3jOL4F2X4KWxoeQ==", + "dependencies": { + "@babel/types": "^7.12.6" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/react-scripts/node_modules/@svgr/plugin-jsx": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-5.5.0.tgz", + "integrity": "sha512-V/wVh33j12hGh05IDg8GpIUXbjAPnTdPTKuP4VNLggnwaHMPNQNae2pRnyTAILWCQdz5GyMqtO488g7CKM8CBA==", + "dependencies": { + "@babel/core": "^7.12.3", + "@svgr/babel-preset": "^5.5.0", + "@svgr/hast-util-to-babel-ast": "^5.5.0", + "svg-parser": "^2.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/react-scripts/node_modules/@svgr/plugin-svgo": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-5.5.0.tgz", + "integrity": "sha512-r5swKk46GuQl4RrVejVwpeeJaydoxkdwkM1mBKOgJLBUJPGaLci6ylg/IjhrRsREKDkr4kbMWdgOtbXEh0fyLQ==", + "dependencies": { + "cosmiconfig": "^7.0.0", + "deepmerge": "^4.2.2", + "svgo": "^1.2.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/react-scripts/node_modules/@svgr/webpack": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/webpack/-/webpack-5.5.0.tgz", + "integrity": "sha512-DOBOK255wfQxguUta2INKkzPj6AIS6iafZYiYmHn6W3pHlycSRRlvWKCfLDG10fXfLWqE3DJHgRUOyJYmARa7g==", + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/plugin-transform-react-constant-elements": "^7.12.1", + "@babel/preset-env": "^7.12.1", + "@babel/preset-react": "^7.12.5", + "@svgr/core": "^5.5.0", + "@svgr/plugin-jsx": "^5.5.0", + "@svgr/plugin-svgo": "^5.5.0", + "loader-utils": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/react-scripts/node_modules/css-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", + "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^3.2.1", + "domutils": "^1.7.0", + "nth-check": "^1.0.2" + } + }, + "node_modules/react-scripts/node_modules/css-tree": { + "version": "1.0.0-alpha.37", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", + "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", + "dependencies": { + "mdn-data": "2.0.4", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/react-scripts/node_modules/css-what": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", + "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/react-scripts/node_modules/dom-serializer": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "dependencies": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + } + }, + "node_modules/react-scripts/node_modules/domutils": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "dependencies": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "node_modules/react-scripts/node_modules/domutils/node_modules/domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" + }, + "node_modules/react-scripts/node_modules/mdn-data": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", + "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==" + }, + "node_modules/react-scripts/node_modules/nth-check": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", + "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "dependencies": { + "boolbase": "~1.0.0" + } + }, + "node_modules/react-scripts/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-scripts/node_modules/svgo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", + "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", + "deprecated": "This SVGO version is no longer supported. Upgrade to v2.x.x.", + "dependencies": { + "chalk": "^2.4.1", + "coa": "^2.0.2", + "css-select": "^2.0.0", + "css-select-base-adapter": "^0.1.1", + "css-tree": "1.0.0-alpha.37", + "csso": "^4.0.2", + "js-yaml": "^3.13.1", + "mkdirp": "~0.5.1", + "object.values": "^1.1.0", + "sax": "~1.2.4", + "stable": "^0.1.8", + "unquote": "~1.1.1", + "util.promisify": "~1.0.0" + }, + "bin": { + "svgo": "bin/svgo" + }, + "engines": { + "node": ">=4.0.0" + } + }, "node_modules/react-selecto": { "version": "1.13.2", "resolved": "https://registry.npmjs.org/react-selecto/-/react-selecto-1.13.2.tgz", @@ -20042,83 +20323,31 @@ "integrity": "sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==" }, "node_modules/svgo": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", - "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", - "deprecated": "This SVGO version is no longer supported. Upgrade to v2.x.x.", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", + "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", "dependencies": { - "chalk": "^2.4.1", - "coa": "^2.0.2", - "css-select": "^2.0.0", - "css-select-base-adapter": "^0.1.1", - "css-tree": "1.0.0-alpha.37", - "csso": "^4.0.2", - "js-yaml": "^3.13.1", - "mkdirp": "~0.5.1", - "object.values": "^1.1.0", - "sax": "~1.2.4", - "stable": "^0.1.8", - "unquote": "~1.1.1", - "util.promisify": "~1.0.0" + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^4.1.3", + "css-tree": "^1.1.3", + "csso": "^4.2.0", + "picocolors": "^1.0.0", + "stable": "^0.1.8" }, "bin": { "svgo": "bin/svgo" }, "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/svgo/node_modules/css-select": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", - "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", - "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^3.2.1", - "domutils": "^1.7.0", - "nth-check": "^1.0.2" + "node": ">=10.13.0" } }, - "node_modules/svgo/node_modules/css-what": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", - "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==", + "node_modules/svgo/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", "engines": { - "node": ">= 6" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/svgo/node_modules/dom-serializer": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", - "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", - "dependencies": { - "domelementtype": "^2.0.1", - "entities": "^2.0.0" - } - }, - "node_modules/svgo/node_modules/domutils": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", - "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", - "dependencies": { - "dom-serializer": "0", - "domelementtype": "1" - } - }, - "node_modules/svgo/node_modules/domutils/node_modules/domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" - }, - "node_modules/svgo/node_modules/nth-check": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", - "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", - "dependencies": { - "boolbase": "~1.0.0" + "node": ">= 10" } }, "node_modules/symbol-tree": { @@ -24555,112 +24784,128 @@ } }, "@svgr/babel-plugin-add-jsx-attribute": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-5.4.0.tgz", - "integrity": "sha512-ZFf2gs/8/6B8PnSofI0inYXr2SDNTDScPXhN7k5EqD4aZ3gi6u+rbmZHVB8IM3wDyx8ntKACZbtXSm7oZGRqVg==" + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-6.0.0.tgz", + "integrity": "sha512-MdPdhdWLtQsjd29Wa4pABdhWbaRMACdM1h31BY+c6FghTZqNGT7pEYdBoaGeKtdTOBC/XNFQaKVj+r/Ei2ryWA==", + "requires": {} }, "@svgr/babel-plugin-remove-jsx-attribute": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-5.4.0.tgz", - "integrity": "sha512-yaS4o2PgUtwLFGTKbsiAy6D0o3ugcUhWK0Z45umJ66EPWunAz9fuFw2gJuje6wqQvQWOTJvIahUwndOXb7QCPg==" + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-6.0.0.tgz", + "integrity": "sha512-aVdtfx9jlaaxc3unA6l+M9YRnKIZjOhQPthLKqmTXC8UVkBLDRGwPKo+r8n3VZN8B34+yVajzPTZ+ptTSuZZCw==", + "requires": {} }, "@svgr/babel-plugin-remove-jsx-empty-expression": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-5.0.1.tgz", - "integrity": "sha512-LA72+88A11ND/yFIMzyuLRSMJ+tRKeYKeQ+mR3DcAZ5I4h5CPWN9AHyUzJbWSYp/u2u0xhmgOe0+E41+GjEueA==" + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-6.0.0.tgz", + "integrity": "sha512-Ccj42ApsePD451AZJJf1QzTD1B/BOU392URJTeXFxSK709i0KUsGtbwyiqsKu7vsYxpTM0IA5clAKDyf9RCZyA==", + "requires": {} }, "@svgr/babel-plugin-replace-jsx-attribute-value": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-5.0.1.tgz", - "integrity": "sha512-PoiE6ZD2Eiy5mK+fjHqwGOS+IXX0wq/YDtNyIgOrc6ejFnxN4b13pRpiIPbtPwHEc+NT2KCjteAcq33/F1Y9KQ==" + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-6.0.0.tgz", + "integrity": "sha512-88V26WGyt1Sfd1emBYmBJRWMmgarrExpKNVmI9vVozha4kqs6FzQJ/Kp5+EYli1apgX44518/0+t9+NU36lThQ==", + "requires": {} }, "@svgr/babel-plugin-svg-dynamic-title": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-5.4.0.tgz", - "integrity": "sha512-zSOZH8PdZOpuG1ZVx/cLVePB2ibo3WPpqo7gFIjLV9a0QsuQAzJiwwqmuEdTaW2pegyBE17Uu15mOgOcgabQZg==" + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-6.0.0.tgz", + "integrity": "sha512-F7YXNLfGze+xv0KMQxrl2vkNbI9kzT9oDK55/kUuymh1ACyXkMV+VZWX1zEhSTfEKh7VkHVZGmVtHg8eTZ6PRg==", + "requires": {} }, "@svgr/babel-plugin-svg-em-dimensions": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-5.4.0.tgz", - "integrity": "sha512-cPzDbDA5oT/sPXDCUYoVXEmm3VIoAWAPT6mSPTJNbQaBNUuEKVKyGH93oDY4e42PYHRW67N5alJx/eEol20abw==" + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-6.0.0.tgz", + "integrity": "sha512-+rghFXxdIqJNLQK08kwPBD3Z22/0b2tEZ9lKiL/yTfuyj1wW8HUXu4bo/XkogATIYuXSghVQOOCwURXzHGKyZA==", + "requires": {} }, "@svgr/babel-plugin-transform-react-native-svg": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-5.4.0.tgz", - "integrity": "sha512-3eYP/SaopZ41GHwXma7Rmxcv9uRslRDTY1estspeB1w1ueZWd/tPlMfEOoccYpEMZU3jD4OU7YitnXcF5hLW2Q==" + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-6.0.0.tgz", + "integrity": "sha512-VaphyHZ+xIKv5v0K0HCzyfAaLhPGJXSk2HkpYfXIOKb7DjLBv0soHDxNv6X0vr2titsxE7klb++u7iOf7TSrFQ==", + "requires": {} }, "@svgr/babel-plugin-transform-svg-component": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-5.5.0.tgz", - "integrity": "sha512-q4jSH1UUvbrsOtlo/tKcgSeiCHRSBdXoIoqX1pgcKK/aU3JD27wmMKwGtpB8qRYUYoyXvfGxUVKchLuR5pB3rQ==" + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-6.2.0.tgz", + "integrity": "sha512-bhYIpsORb++wpsp91fymbFkf09Z/YEKR0DnFjxvN+8JHeCUD2unnh18jIMKnDJTWtvpTaGYPXELVe4OOzFI0xg==", + "requires": {} }, "@svgr/babel-preset": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-5.5.0.tgz", - "integrity": "sha512-4FiXBjvQ+z2j7yASeGPEi8VD/5rrGQk4Xrq3EdJmoZgz/tpqChpo5hgXDvmEauwtvOc52q8ghhZK4Oy7qph4ig==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-6.2.0.tgz", + "integrity": "sha512-4WQNY0J71JIaL03DRn0vLiz87JXx0b9dYm2aA8XHlQJQoixMl4r/soYHm8dsaJZ3jWtkCiOYy48dp9izvXhDkQ==", "requires": { - "@svgr/babel-plugin-add-jsx-attribute": "^5.4.0", - "@svgr/babel-plugin-remove-jsx-attribute": "^5.4.0", - "@svgr/babel-plugin-remove-jsx-empty-expression": "^5.0.1", - "@svgr/babel-plugin-replace-jsx-attribute-value": "^5.0.1", - "@svgr/babel-plugin-svg-dynamic-title": "^5.4.0", - "@svgr/babel-plugin-svg-em-dimensions": "^5.4.0", - "@svgr/babel-plugin-transform-react-native-svg": "^5.4.0", - "@svgr/babel-plugin-transform-svg-component": "^5.5.0" + "@svgr/babel-plugin-add-jsx-attribute": "^6.0.0", + "@svgr/babel-plugin-remove-jsx-attribute": "^6.0.0", + "@svgr/babel-plugin-remove-jsx-empty-expression": "^6.0.0", + "@svgr/babel-plugin-replace-jsx-attribute-value": "^6.0.0", + "@svgr/babel-plugin-svg-dynamic-title": "^6.0.0", + "@svgr/babel-plugin-svg-em-dimensions": "^6.0.0", + "@svgr/babel-plugin-transform-react-native-svg": "^6.0.0", + "@svgr/babel-plugin-transform-svg-component": "^6.2.0" } }, "@svgr/core": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/core/-/core-5.5.0.tgz", - "integrity": "sha512-q52VOcsJPvV3jO1wkPtzTuKlvX7Y3xIcWRpCMtBF3MrteZJtBfQw/+u0B1BHy5ColpQc1/YVTrPEtSYIMNZlrQ==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/@svgr/core/-/core-6.2.1.tgz", + "integrity": "sha512-NWufjGI2WUyrg46mKuySfviEJ6IxHUOm/8a3Ph38VCWSp+83HBraCQrpEM3F3dB6LBs5x8OElS8h3C0oOJaJAA==", "requires": { - "@svgr/plugin-jsx": "^5.5.0", + "@svgr/plugin-jsx": "^6.2.1", "camelcase": "^6.2.0", - "cosmiconfig": "^7.0.0" + "cosmiconfig": "^7.0.1" } }, "@svgr/hast-util-to-babel-ast": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-5.5.0.tgz", - "integrity": "sha512-cAaR/CAiZRB8GP32N+1jocovUtvlj0+e65TB50/6Lcime+EA49m/8l+P2ko+XPJ4dw3xaPS3jOL4F2X4KWxoeQ==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-6.2.1.tgz", + "integrity": "sha512-pt7MMkQFDlWJVy9ULJ1h+hZBDGFfSCwlBNW1HkLnVi7jUhyEXUaGYWi1x6bM2IXuAR9l265khBT4Av4lPmaNLQ==", "requires": { - "@babel/types": "^7.12.6" + "@babel/types": "^7.15.6", + "entities": "^3.0.1" + }, + "dependencies": { + "entities": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz", + "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==" + } } }, "@svgr/plugin-jsx": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-5.5.0.tgz", - "integrity": "sha512-V/wVh33j12hGh05IDg8GpIUXbjAPnTdPTKuP4VNLggnwaHMPNQNae2pRnyTAILWCQdz5GyMqtO488g7CKM8CBA==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-6.2.1.tgz", + "integrity": "sha512-u+MpjTsLaKo6r3pHeeSVsh9hmGRag2L7VzApWIaS8imNguqoUwDq/u6U/NDmYs/KAsrmtBjOEaAAPbwNGXXp1g==", "requires": { - "@babel/core": "^7.12.3", - "@svgr/babel-preset": "^5.5.0", - "@svgr/hast-util-to-babel-ast": "^5.5.0", + "@babel/core": "^7.15.5", + "@svgr/babel-preset": "^6.2.0", + "@svgr/hast-util-to-babel-ast": "^6.2.1", "svg-parser": "^2.0.2" } }, "@svgr/plugin-svgo": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-5.5.0.tgz", - "integrity": "sha512-r5swKk46GuQl4RrVejVwpeeJaydoxkdwkM1mBKOgJLBUJPGaLci6ylg/IjhrRsREKDkr4kbMWdgOtbXEh0fyLQ==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-6.2.0.tgz", + "integrity": "sha512-oDdMQONKOJEbuKwuy4Np6VdV6qoaLLvoY86hjvQEgU82Vx1MSWRyYms6Sl0f+NtqxLI/rDVufATbP/ev996k3Q==", "requires": { - "cosmiconfig": "^7.0.0", + "cosmiconfig": "^7.0.1", "deepmerge": "^4.2.2", - "svgo": "^1.2.2" + "svgo": "^2.5.0" } }, "@svgr/webpack": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/webpack/-/webpack-5.5.0.tgz", - "integrity": "sha512-DOBOK255wfQxguUta2INKkzPj6AIS6iafZYiYmHn6W3pHlycSRRlvWKCfLDG10fXfLWqE3DJHgRUOyJYmARa7g==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/@svgr/webpack/-/webpack-6.2.1.tgz", + "integrity": "sha512-h09ngMNd13hnePwgXa+Y5CgOjzlCvfWLHg+MBnydEedAnuLRzUHUJmGS3o2OsrhxTOOqEsPOFt5v/f6C5Qulcw==", "requires": { - "@babel/core": "^7.12.3", - "@babel/plugin-transform-react-constant-elements": "^7.12.1", - "@babel/preset-env": "^7.12.1", - "@babel/preset-react": "^7.12.5", - "@svgr/core": "^5.5.0", - "@svgr/plugin-jsx": "^5.5.0", - "@svgr/plugin-svgo": "^5.5.0", - "loader-utils": "^2.0.0" + "@babel/core": "^7.15.5", + "@babel/plugin-transform-react-constant-elements": "^7.14.5", + "@babel/preset-env": "^7.15.6", + "@babel/preset-react": "^7.14.5", + "@babel/preset-typescript": "^7.15.0", + "@svgr/core": "^6.2.1", + "@svgr/plugin-jsx": "^6.2.1", + "@svgr/plugin-svgo": "^6.2.0" } }, "@testing-library/dom": { @@ -28334,11 +28579,11 @@ } }, "css-tree": { - "version": "1.0.0-alpha.37", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", - "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", "requires": { - "mdn-data": "2.0.4", + "mdn-data": "2.0.14", "source-map": "^0.6.1" }, "dependencies": { @@ -28427,27 +28672,6 @@ "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", "requires": { "css-tree": "^1.1.2" - }, - "dependencies": { - "css-tree": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", - "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", - "requires": { - "mdn-data": "2.0.14", - "source-map": "^0.6.1" - } - }, - "mdn-data": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", - "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==" - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - } } }, "cssom": { @@ -32840,9 +33064,9 @@ } }, "mdn-data": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", - "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==" + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==" }, "media-typer": { "version": "0.3.0", @@ -34658,46 +34882,6 @@ "requires": { "postcss-value-parser": "^4.1.0", "svgo": "^2.7.0" - }, - "dependencies": { - "commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==" - }, - "css-tree": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", - "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", - "requires": { - "mdn-data": "2.0.14", - "source-map": "^0.6.1" - } - }, - "mdn-data": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", - "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==" - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - }, - "svgo": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", - "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", - "requires": { - "@trysound/sax": "0.2.0", - "commander": "^7.2.0", - "css-select": "^4.1.3", - "css-tree": "^1.1.3", - "csso": "^4.2.0", - "picocolors": "^1.0.0", - "stable": "^0.1.8" - } - } } }, "postcss-unique-selectors": { @@ -35222,6 +35406,205 @@ "webpack-dev-server": "^4.6.0", "webpack-manifest-plugin": "^4.0.2", "workbox-webpack-plugin": "^6.4.1" + }, + "dependencies": { + "@svgr/babel-plugin-add-jsx-attribute": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-5.4.0.tgz", + "integrity": "sha512-ZFf2gs/8/6B8PnSofI0inYXr2SDNTDScPXhN7k5EqD4aZ3gi6u+rbmZHVB8IM3wDyx8ntKACZbtXSm7oZGRqVg==" + }, + "@svgr/babel-plugin-remove-jsx-attribute": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-5.4.0.tgz", + "integrity": "sha512-yaS4o2PgUtwLFGTKbsiAy6D0o3ugcUhWK0Z45umJ66EPWunAz9fuFw2gJuje6wqQvQWOTJvIahUwndOXb7QCPg==" + }, + "@svgr/babel-plugin-remove-jsx-empty-expression": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-5.0.1.tgz", + "integrity": "sha512-LA72+88A11ND/yFIMzyuLRSMJ+tRKeYKeQ+mR3DcAZ5I4h5CPWN9AHyUzJbWSYp/u2u0xhmgOe0+E41+GjEueA==" + }, + "@svgr/babel-plugin-replace-jsx-attribute-value": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-5.0.1.tgz", + "integrity": "sha512-PoiE6ZD2Eiy5mK+fjHqwGOS+IXX0wq/YDtNyIgOrc6ejFnxN4b13pRpiIPbtPwHEc+NT2KCjteAcq33/F1Y9KQ==" + }, + "@svgr/babel-plugin-svg-dynamic-title": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-5.4.0.tgz", + "integrity": "sha512-zSOZH8PdZOpuG1ZVx/cLVePB2ibo3WPpqo7gFIjLV9a0QsuQAzJiwwqmuEdTaW2pegyBE17Uu15mOgOcgabQZg==" + }, + "@svgr/babel-plugin-svg-em-dimensions": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-5.4.0.tgz", + "integrity": "sha512-cPzDbDA5oT/sPXDCUYoVXEmm3VIoAWAPT6mSPTJNbQaBNUuEKVKyGH93oDY4e42PYHRW67N5alJx/eEol20abw==" + }, + "@svgr/babel-plugin-transform-react-native-svg": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-5.4.0.tgz", + "integrity": "sha512-3eYP/SaopZ41GHwXma7Rmxcv9uRslRDTY1estspeB1w1ueZWd/tPlMfEOoccYpEMZU3jD4OU7YitnXcF5hLW2Q==" + }, + "@svgr/babel-plugin-transform-svg-component": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-5.5.0.tgz", + "integrity": "sha512-q4jSH1UUvbrsOtlo/tKcgSeiCHRSBdXoIoqX1pgcKK/aU3JD27wmMKwGtpB8qRYUYoyXvfGxUVKchLuR5pB3rQ==" + }, + "@svgr/babel-preset": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-5.5.0.tgz", + "integrity": "sha512-4FiXBjvQ+z2j7yASeGPEi8VD/5rrGQk4Xrq3EdJmoZgz/tpqChpo5hgXDvmEauwtvOc52q8ghhZK4Oy7qph4ig==", + "requires": { + "@svgr/babel-plugin-add-jsx-attribute": "^5.4.0", + "@svgr/babel-plugin-remove-jsx-attribute": "^5.4.0", + "@svgr/babel-plugin-remove-jsx-empty-expression": "^5.0.1", + "@svgr/babel-plugin-replace-jsx-attribute-value": "^5.0.1", + "@svgr/babel-plugin-svg-dynamic-title": "^5.4.0", + "@svgr/babel-plugin-svg-em-dimensions": "^5.4.0", + "@svgr/babel-plugin-transform-react-native-svg": "^5.4.0", + "@svgr/babel-plugin-transform-svg-component": "^5.5.0" + } + }, + "@svgr/core": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/core/-/core-5.5.0.tgz", + "integrity": "sha512-q52VOcsJPvV3jO1wkPtzTuKlvX7Y3xIcWRpCMtBF3MrteZJtBfQw/+u0B1BHy5ColpQc1/YVTrPEtSYIMNZlrQ==", + "requires": { + "@svgr/plugin-jsx": "^5.5.0", + "camelcase": "^6.2.0", + "cosmiconfig": "^7.0.0" + } + }, + "@svgr/hast-util-to-babel-ast": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-5.5.0.tgz", + "integrity": "sha512-cAaR/CAiZRB8GP32N+1jocovUtvlj0+e65TB50/6Lcime+EA49m/8l+P2ko+XPJ4dw3xaPS3jOL4F2X4KWxoeQ==", + "requires": { + "@babel/types": "^7.12.6" + } + }, + "@svgr/plugin-jsx": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-5.5.0.tgz", + "integrity": "sha512-V/wVh33j12hGh05IDg8GpIUXbjAPnTdPTKuP4VNLggnwaHMPNQNae2pRnyTAILWCQdz5GyMqtO488g7CKM8CBA==", + "requires": { + "@babel/core": "^7.12.3", + "@svgr/babel-preset": "^5.5.0", + "@svgr/hast-util-to-babel-ast": "^5.5.0", + "svg-parser": "^2.0.2" + } + }, + "@svgr/plugin-svgo": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-5.5.0.tgz", + "integrity": "sha512-r5swKk46GuQl4RrVejVwpeeJaydoxkdwkM1mBKOgJLBUJPGaLci6ylg/IjhrRsREKDkr4kbMWdgOtbXEh0fyLQ==", + "requires": { + "cosmiconfig": "^7.0.0", + "deepmerge": "^4.2.2", + "svgo": "^1.2.2" + } + }, + "@svgr/webpack": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/webpack/-/webpack-5.5.0.tgz", + "integrity": "sha512-DOBOK255wfQxguUta2INKkzPj6AIS6iafZYiYmHn6W3pHlycSRRlvWKCfLDG10fXfLWqE3DJHgRUOyJYmARa7g==", + "requires": { + "@babel/core": "^7.12.3", + "@babel/plugin-transform-react-constant-elements": "^7.12.1", + "@babel/preset-env": "^7.12.1", + "@babel/preset-react": "^7.12.5", + "@svgr/core": "^5.5.0", + "@svgr/plugin-jsx": "^5.5.0", + "@svgr/plugin-svgo": "^5.5.0", + "loader-utils": "^2.0.0" + } + }, + "css-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", + "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", + "requires": { + "boolbase": "^1.0.0", + "css-what": "^3.2.1", + "domutils": "^1.7.0", + "nth-check": "^1.0.2" + } + }, + "css-tree": { + "version": "1.0.0-alpha.37", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", + "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", + "requires": { + "mdn-data": "2.0.4", + "source-map": "^0.6.1" + } + }, + "css-what": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", + "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==" + }, + "dom-serializer": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "requires": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + } + }, + "domutils": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + }, + "dependencies": { + "domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" + } + } + }, + "mdn-data": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", + "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==" + }, + "nth-check": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", + "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "requires": { + "boolbase": "~1.0.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "svgo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", + "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", + "requires": { + "chalk": "^2.4.1", + "coa": "^2.0.2", + "css-select": "^2.0.0", + "css-select-base-adapter": "^0.1.1", + "css-tree": "1.0.0-alpha.37", + "csso": "^4.0.2", + "js-yaml": "^3.13.1", + "mkdirp": "~0.5.1", + "object.values": "^1.1.0", + "sax": "~1.2.4", + "stable": "^0.1.8", + "unquote": "~1.1.1", + "util.promisify": "~1.0.0" + } + } } }, "react-selecto": { @@ -36763,73 +37146,23 @@ "integrity": "sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==" }, "svgo": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", - "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", + "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", "requires": { - "chalk": "^2.4.1", - "coa": "^2.0.2", - "css-select": "^2.0.0", - "css-select-base-adapter": "^0.1.1", - "css-tree": "1.0.0-alpha.37", - "csso": "^4.0.2", - "js-yaml": "^3.13.1", - "mkdirp": "~0.5.1", - "object.values": "^1.1.0", - "sax": "~1.2.4", - "stable": "^0.1.8", - "unquote": "~1.1.1", - "util.promisify": "~1.0.0" + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^4.1.3", + "css-tree": "^1.1.3", + "csso": "^4.2.0", + "picocolors": "^1.0.0", + "stable": "^0.1.8" }, "dependencies": { - "css-select": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", - "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", - "requires": { - "boolbase": "^1.0.0", - "css-what": "^3.2.1", - "domutils": "^1.7.0", - "nth-check": "^1.0.2" - } - }, - "css-what": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", - "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==" - }, - "dom-serializer": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", - "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", - "requires": { - "domelementtype": "^2.0.1", - "entities": "^2.0.0" - } - }, - "domutils": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", - "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", - "requires": { - "dom-serializer": "0", - "domelementtype": "1" - }, - "dependencies": { - "domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" - } - } - }, - "nth-check": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", - "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", - "requires": { - "boolbase": "~1.0.0" - } + "commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==" } } }, diff --git a/package.json b/package.json index fba896b0..12541947 100644 --- a/package.json +++ b/package.json @@ -11,6 +11,7 @@ "@react-three/drei": "^8.20.2", "@react-three/fiber": "^7.0.26", "@reduxjs/toolkit": "^1.7.1", + "@svgr/webpack": "^6.2.1", "@testing-library/jest-dom": "^5.16.1", "@testing-library/react": "^12.1.2", "@testing-library/user-event": "^13.5.0", @@ -68,6 +69,7 @@ "devDependencies": { "@types/deep-equal": "^1.0.1", "@types/three": "^0.139.0", + "file-loader": "^6.2.0", "sass": "^1.51.0" } } diff --git a/src/components/App/App.tsx b/src/components/App/App.tsx index 99aa4396..349a0353 100644 --- a/src/components/App/App.tsx +++ b/src/components/App/App.tsx @@ -1,10 +1,10 @@ import React from 'react'; import styles from './App.module.scss'; import { Route, Routes } from 'react-router-dom'; -import Layout from '../Layout/Layout'; -import { MainPage, DIRPage, PCAPage, NotFoundPage } from '../../pages'; -import { ThemeProvider, createTheme } from '@mui/material/styles'; import { useAppSelector } from '../../services/store/hooks'; +import { ThemeProvider, createTheme } from '@mui/material/styles'; +import { MainPageLayout, AppLayout } from '../Layouts'; +import { MainPage, DIRPage, PCAPage, NotFoundPage } from '../../pages'; function App() { @@ -19,12 +19,14 @@ function App() { return ( - }> + }> }/> + + }> }/> }/> - }/> + }/> ); diff --git a/src/components/Graph/FoldTestGraph/AxesAndData.tsx b/src/components/AppGraphs/FoldTestGraph/AxesAndData.tsx similarity index 100% rename from src/components/Graph/FoldTestGraph/AxesAndData.tsx rename to src/components/AppGraphs/FoldTestGraph/AxesAndData.tsx diff --git a/src/components/Graph/FoldTestGraph/FoldTestConstants.ts b/src/components/AppGraphs/FoldTestGraph/FoldTestConstants.ts similarity index 100% rename from src/components/Graph/FoldTestGraph/FoldTestConstants.ts rename to src/components/AppGraphs/FoldTestGraph/FoldTestConstants.ts diff --git a/src/components/Graph/FoldTestGraph/FoldTestGraph.module.scss b/src/components/AppGraphs/FoldTestGraph/FoldTestGraph.module.scss similarity index 100% rename from src/components/Graph/FoldTestGraph/FoldTestGraph.module.scss rename to src/components/AppGraphs/FoldTestGraph/FoldTestGraph.module.scss diff --git a/src/components/Graph/FoldTestGraph/FoldTestGraph.tsx b/src/components/AppGraphs/FoldTestGraph/FoldTestGraph.tsx similarity index 100% rename from src/components/Graph/FoldTestGraph/FoldTestGraph.tsx rename to src/components/AppGraphs/FoldTestGraph/FoldTestGraph.tsx diff --git a/src/components/Graph/MagGraph/AxesAndData.tsx b/src/components/AppGraphs/MagGraph/AxesAndData.tsx similarity index 100% rename from src/components/Graph/MagGraph/AxesAndData.tsx rename to src/components/AppGraphs/MagGraph/AxesAndData.tsx diff --git a/src/components/Graph/MagGraph/MagConstants.ts b/src/components/AppGraphs/MagGraph/MagConstants.ts similarity index 100% rename from src/components/Graph/MagGraph/MagConstants.ts rename to src/components/AppGraphs/MagGraph/MagConstants.ts diff --git a/src/components/Graph/MagGraph/MagGraph.module.scss b/src/components/AppGraphs/MagGraph/MagGraph.module.scss similarity index 100% rename from src/components/Graph/MagGraph/MagGraph.module.scss rename to src/components/AppGraphs/MagGraph/MagGraph.module.scss diff --git a/src/components/Graph/MagGraph/MagGraph.tsx b/src/components/AppGraphs/MagGraph/MagGraph.tsx similarity index 100% rename from src/components/Graph/MagGraph/MagGraph.tsx rename to src/components/AppGraphs/MagGraph/MagGraph.tsx diff --git a/src/components/Graph/StereoGraph/AxesAndData.tsx b/src/components/AppGraphs/StereoGraph/AxesAndData.tsx similarity index 100% rename from src/components/Graph/StereoGraph/AxesAndData.tsx rename to src/components/AppGraphs/StereoGraph/AxesAndData.tsx diff --git a/src/components/Graph/StereoGraph/StereoConstants.ts b/src/components/AppGraphs/StereoGraph/StereoConstants.ts similarity index 100% rename from src/components/Graph/StereoGraph/StereoConstants.ts rename to src/components/AppGraphs/StereoGraph/StereoConstants.ts diff --git a/src/components/Graph/StereoGraph/StereoGraph.module.scss b/src/components/AppGraphs/StereoGraph/StereoGraph.module.scss similarity index 100% rename from src/components/Graph/StereoGraph/StereoGraph.module.scss rename to src/components/AppGraphs/StereoGraph/StereoGraph.module.scss diff --git a/src/components/Graph/StereoGraph/StereoGraph.tsx b/src/components/AppGraphs/StereoGraph/StereoGraph.tsx similarity index 100% rename from src/components/Graph/StereoGraph/StereoGraph.tsx rename to src/components/AppGraphs/StereoGraph/StereoGraph.tsx diff --git a/src/components/Graph/StereoGraphDIR/AxesAndData.tsx b/src/components/AppGraphs/StereoGraphDIR/AxesAndData.tsx similarity index 100% rename from src/components/Graph/StereoGraphDIR/AxesAndData.tsx rename to src/components/AppGraphs/StereoGraphDIR/AxesAndData.tsx diff --git a/src/components/Graph/StereoGraphDIR/StereoConstants.ts b/src/components/AppGraphs/StereoGraphDIR/StereoConstants.ts similarity index 100% rename from src/components/Graph/StereoGraphDIR/StereoConstants.ts rename to src/components/AppGraphs/StereoGraphDIR/StereoConstants.ts diff --git a/src/components/Graph/StereoGraphDIR/StereoGraph.module.scss b/src/components/AppGraphs/StereoGraphDIR/StereoGraph.module.scss similarity index 100% rename from src/components/Graph/StereoGraphDIR/StereoGraph.module.scss rename to src/components/AppGraphs/StereoGraphDIR/StereoGraph.module.scss diff --git a/src/components/Graph/StereoGraphDIR/StereoGraphDIR.tsx b/src/components/AppGraphs/StereoGraphDIR/StereoGraphDIR.tsx similarity index 95% rename from src/components/Graph/StereoGraphDIR/StereoGraphDIR.tsx rename to src/components/AppGraphs/StereoGraphDIR/StereoGraphDIR.tsx index 6106200f..8b65c43c 100644 --- a/src/components/Graph/StereoGraphDIR/StereoGraphDIR.tsx +++ b/src/components/AppGraphs/StereoGraphDIR/StereoGraphDIR.tsx @@ -10,11 +10,11 @@ import getInterpretationIDs from "../../../utils/graphs/formatters/getInterpreta import CoordinateSystem from "../../Sub/Graphs/CoordinateSystem/CoordinateSystem"; import dataToStereoDIR from "../../../utils/graphs/formatters/stereo/dataToStereoDIR"; -export interface IStereoGraph extends IGraph { +export interface IStereoGraphDIR extends IGraph { data: IDirData; }; -const StereoGraphDIR: FC = ({ graphId, width, height, data }) => { +const StereoGraphDIR: FC = ({ graphId, width, height, data }) => { // ToDo: // 1. менять viewBox в зависимости от размера группы data (horizontal-data + vertical-data) || STOPPED diff --git a/src/components/Graph/StereoGraphDIR/StereoGraphVGP.tsx b/src/components/AppGraphs/StereoGraphDIR/StereoGraphVGP.tsx similarity index 95% rename from src/components/Graph/StereoGraphDIR/StereoGraphVGP.tsx rename to src/components/AppGraphs/StereoGraphDIR/StereoGraphVGP.tsx index 69211368..6ebd242d 100644 --- a/src/components/Graph/StereoGraphDIR/StereoGraphVGP.tsx +++ b/src/components/AppGraphs/StereoGraphDIR/StereoGraphVGP.tsx @@ -11,11 +11,11 @@ import CoordinateSystem from "../../Sub/Graphs/CoordinateSystem/CoordinateSystem import dataToStereoDIR from "../../../utils/graphs/formatters/stereo/dataToStereoDIR"; import dataToStereoVGP from "../../../utils/graphs/formatters/stereo/dataToStereoVGP"; -export interface IStereoGraph extends IGraph { +export interface IStereoGraphVGP extends IGraph { data: VGPData; }; -const StereoGraphVGP: FC = ({ graphId, width, height, data }) => { +const StereoGraphVGP: FC = ({ graphId, width, height, data }) => { // ToDo: // 1. менять viewBox в зависимости от размера группы data (horizontal-data + vertical-data) || STOPPED diff --git a/src/components/Graph/ZijdGraph/AxesAndData.tsx b/src/components/AppGraphs/ZijdGraph/AxesAndData.tsx similarity index 100% rename from src/components/Graph/ZijdGraph/AxesAndData.tsx rename to src/components/AppGraphs/ZijdGraph/AxesAndData.tsx diff --git a/src/components/Graph/ZijdGraph/ZijdConstants.ts b/src/components/AppGraphs/ZijdGraph/ZijdConstants.ts similarity index 100% rename from src/components/Graph/ZijdGraph/ZijdConstants.ts rename to src/components/AppGraphs/ZijdGraph/ZijdConstants.ts diff --git a/src/components/Graph/ZijdGraph/ZijdGraph.module.scss b/src/components/AppGraphs/ZijdGraph/ZijdGraph.module.scss similarity index 100% rename from src/components/Graph/ZijdGraph/ZijdGraph.module.scss rename to src/components/AppGraphs/ZijdGraph/ZijdGraph.module.scss diff --git a/src/components/Graph/ZijdGraph/ZijdGraph.tsx b/src/components/AppGraphs/ZijdGraph/ZijdGraph.tsx similarity index 100% rename from src/components/Graph/ZijdGraph/ZijdGraph.tsx rename to src/components/AppGraphs/ZijdGraph/ZijdGraph.tsx diff --git a/src/components/AppGraphs/index.ts b/src/components/AppGraphs/index.ts new file mode 100644 index 00000000..d9a461c4 --- /dev/null +++ b/src/components/AppGraphs/index.ts @@ -0,0 +1,19 @@ +import MagGraph from "./MagGraph/MagGraph"; +import StereoGraph from "./StereoGraph/StereoGraph"; +import ZijdGraph from "./ZijdGraph/ZijdGraph"; +import StereoGraphDIR from "./StereoGraphDIR/StereoGraphDIR"; +import StereoGraphVGP from "./StereoGraphDIR/StereoGraphVGP"; + +import { IZijdGraph } from "./ZijdGraph/ZijdGraph"; +import { IStereoGraph } from "./StereoGraph/StereoGraph"; +import { IMagGraph } from "./MagGraph/MagGraph"; + +export { + MagGraph, + StereoGraph, + ZijdGraph, + StereoGraphDIR, + StereoGraphVGP, +}; + +export type { IZijdGraph, IStereoGraph, IMagGraph }; \ No newline at end of file diff --git a/src/components/Main/AppNavigation/AppNavigation.module.scss b/src/components/AppLogic/AppNavigation/AppNavigation.module.scss similarity index 100% rename from src/components/Main/AppNavigation/AppNavigation.module.scss rename to src/components/AppLogic/AppNavigation/AppNavigation.module.scss diff --git a/src/components/Main/AppNavigation/AppNavigation.tsx b/src/components/AppLogic/AppNavigation/AppNavigation.tsx similarity index 97% rename from src/components/Main/AppNavigation/AppNavigation.tsx rename to src/components/AppLogic/AppNavigation/AppNavigation.tsx index cbed7643..4a979bdc 100644 --- a/src/components/Main/AppNavigation/AppNavigation.tsx +++ b/src/components/AppLogic/AppNavigation/AppNavigation.tsx @@ -33,11 +33,11 @@ const AppNavigation: FC = ({}) => {
= () => { +const AppLayout: FC = () => { const dispatch = useAppDispatch(); const location = useLocation(); const theme = useTheme(); - const currentPage = location.pathname.slice(1, location.pathname.length); + const currentPage = location.pathname.split('/').pop() || location.pathname; const handleFileUpload = (event: any, files?: Array) => {; const acceptedFiles = files ? files : Array.from(event.currentTarget.files); if (currentPage === 'pca') dispatch(addTreatmentFiles(acceptedFiles)); if (currentPage === 'dir') dispatch(addDirStatFiles(acceptedFiles)); - // dispatch(addInputFiles(acceptedFiles)); }; const onDrop = useCallback(acceptedFiles => { @@ -98,4 +97,4 @@ const Layout: FC = () => { ); }; -export default Layout; +export default AppLayout; diff --git a/src/components/Layouts/MainPageLayout/MainPageLayout.module.scss b/src/components/Layouts/MainPageLayout/MainPageLayout.module.scss new file mode 100644 index 00000000..6bc49aab --- /dev/null +++ b/src/components/Layouts/MainPageLayout/MainPageLayout.module.scss @@ -0,0 +1,16 @@ +.container { + position: relative; + + width: 100%; + height: 100%; + + display: flex; + flex-direction: column; + + overflow-y: auto !important; +} + +::-webkit-scrollbar { + width: 8px; + height: 8px; +} \ No newline at end of file diff --git a/src/components/Layouts/MainPageLayout/MainPageLayout.tsx b/src/components/Layouts/MainPageLayout/MainPageLayout.tsx new file mode 100644 index 00000000..d7b66051 --- /dev/null +++ b/src/components/Layouts/MainPageLayout/MainPageLayout.tsx @@ -0,0 +1,28 @@ +import React, { FC } from "react"; +import styles from "./MainPageLayout.module.scss"; +import { Outlet, RouteProps } from "react-router-dom"; +import { useTheme } from '@mui/material/styles'; +import { + bgColorMain, + bgColorBlocks, + boxShadowStyle, + textColor +} from '../../../utils/ThemeConstants'; + +const MainPageLayout: FC = () => { + + const theme = useTheme(); + + return ( +
+ +
+ ); +}; + +export default MainPageLayout; diff --git a/src/components/Layouts/index.ts b/src/components/Layouts/index.ts new file mode 100644 index 00000000..a03812a2 --- /dev/null +++ b/src/components/Layouts/index.ts @@ -0,0 +1,7 @@ +import MainPageLayout from "./MainPageLayout/MainPageLayout"; +import AppLayout from "./AppLayout/AppLayout"; + +export { + MainPageLayout, + AppLayout, +}; diff --git a/src/components/MainPage/About/About.module.scss b/src/components/MainPage/About/About.module.scss new file mode 100644 index 00000000..97753b31 --- /dev/null +++ b/src/components/MainPage/About/About.module.scss @@ -0,0 +1,9 @@ +.container { + padding: 0 24px; + margin-bottom: 24px; + + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; +} \ No newline at end of file diff --git a/src/components/MainPage/About/About.tsx b/src/components/MainPage/About/About.tsx new file mode 100644 index 00000000..ef9af196 --- /dev/null +++ b/src/components/MainPage/About/About.tsx @@ -0,0 +1,45 @@ + +import React from 'react'; +import styles from './About.module.scss'; +import { Typography, Button } from '@mui/material'; +import { useTheme } from '@mui/material/styles'; +import { textColor } from '../../../utils/ThemeConstants'; +import { NavLink } from 'react-router-dom'; + +const About = () => { + + const theme = useTheme(); + + return ( +
+ + Работайте с результатами палеомагнитных исследований. + + + В любое время, в любом месте, с любого устройства. + + + И не беспокойтесь о защите данных. + + + + + +
+ ); +}; + +export default About; diff --git a/src/components/MainPage/Description/Description.module.scss b/src/components/MainPage/Description/Description.module.scss new file mode 100644 index 00000000..a861e898 --- /dev/null +++ b/src/components/MainPage/Description/Description.module.scss @@ -0,0 +1,71 @@ +.container { + position: relative; + padding: 72px 240px 52px 240px; + margin: 48px 0; + + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; +} + +.tabs { + position: relative; + display: flex; + flex-direction: column; + justify-content: center; + + width: 100%; + min-height: 120px; +} + +.icon { + position: absolute; + top: -60px; + left: calc(50% - 36px); + + width: 72px; + height: 72px; + + display: flex; + justify-content: center; + align-items: center; + + border-radius: 12px; + + background-color: #fff; +} + +.indicator { + position: absolute; + width: 100%; + height: 10px; + + display: flex; + flex-direction: row; + justify-content: space-between; + align-items: center; + + padding: 0 168px; + bottom: -32px; + box-sizing: border-box; + + &:hover { + & .indicatorItem { + height: 9px; + } + } + + & .indicatorItem { + height: 7px; + border-radius: 4px; + + &:hover { + cursor: pointer; + } + } + + & .active { + box-shadow: 0px 0px 5px 1px #119dff; + } +} \ No newline at end of file diff --git a/src/components/MainPage/Description/Description.tsx b/src/components/MainPage/Description/Description.tsx new file mode 100644 index 00000000..3cd6a802 --- /dev/null +++ b/src/components/MainPage/Description/Description.tsx @@ -0,0 +1,101 @@ + +import React, { useEffect, useState } from 'react'; +import styles from './Description.module.scss'; +import { Typography, Button } from '@mui/material'; +import { useTheme } from '@mui/material/styles'; +import { textColor, bgColorBlocks } from '../../../utils/ThemeConstants'; +import tools from './assets/tools.png'; +import privacy from './assets/privacy.png'; +import modules from './assets/modules.png'; +import table from './assets/table.png'; +import graph from './assets/graph.png'; + +type Content = Array<{ + text: string, + icon: string, +}>; + +const PrettyTabs = ({content}: {content: Content}) => { + + const theme = useTheme(); + + const [tabIndex, setTabIndex] = useState(0); + + useEffect(() => { + const interval = setInterval(() => { + setTabIndex((prevIndex) => { + if (prevIndex >= content.length - 1) { + return 0; + } + return prevIndex + 1; + }); + }, 6000); + return () => clearInterval(interval); + }, [tabIndex]); + + return ( +
+
+ icon +
+ + { content[tabIndex].text } + +
+ { + content.map((tabContent, index) => ( +
setTabIndex(index)} + style={{ + width: `calc(72% / ${content.length})`, + backgroundColor: theme.palette.mode === 'dark' ? '#fff' : '#474c50', + }} + /> + )) + } +
+
+ ); +}; + +const Description = () => { + + const theme = useTheme(); + + const content: Content = [ + { + text: 'PMTools — веб-приложение, включающее в себя множество инструментов для статистической обработки данных, полученных в ходе палеомагнитных исследований.', + icon: tools, + }, + { + text: 'PMTools имеет открытый исходный код и не имеет связи ни с какими другими приложениями и серверами. Все данные хранятся и обрабатываются только на стороне пользователя.', + icon: privacy, + }, + { + text: 'В PMTools имеются все необходимые инструменты для компонентного анализа (модуль PCA) и статистики векторов на сфере (модуль DIR).', + icon: modules, + }, + { + text: 'PMTools поддерживает импорт таких форматов данных, как PMD, DIR, PMM. В этих же форматах может быть произведён экспорт любых табличных данных в PMTools. Более того, возможен экспорт данных в форматах XLSX и CSV.', + icon: table, + }, + { + text: 'Все графики и диаграммы, генерируемые в ходе обработки данных в PMTools, могут быть экспортированы в векторном формате и имеют идеально подготовленную для редактирования внутреннюю структуру.', + icon: graph, + } + ]; + + return ( +
+ +
+ ); +}; + +export default Description; diff --git a/src/components/MainPage/Description/assets/graph.png b/src/components/MainPage/Description/assets/graph.png new file mode 100644 index 00000000..92a5341d Binary files /dev/null and b/src/components/MainPage/Description/assets/graph.png differ diff --git a/src/components/MainPage/Description/assets/modules.png b/src/components/MainPage/Description/assets/modules.png new file mode 100644 index 00000000..d2b7cf15 Binary files /dev/null and b/src/components/MainPage/Description/assets/modules.png differ diff --git a/src/components/MainPage/Description/assets/privacy.png b/src/components/MainPage/Description/assets/privacy.png new file mode 100644 index 00000000..15d14d59 Binary files /dev/null and b/src/components/MainPage/Description/assets/privacy.png differ diff --git a/src/components/MainPage/Description/assets/table.png b/src/components/MainPage/Description/assets/table.png new file mode 100644 index 00000000..577442f6 Binary files /dev/null and b/src/components/MainPage/Description/assets/table.png differ diff --git a/src/components/MainPage/Description/assets/tools.png b/src/components/MainPage/Description/assets/tools.png new file mode 100644 index 00000000..5eefd09c Binary files /dev/null and b/src/components/MainPage/Description/assets/tools.png differ diff --git a/src/components/Main/DynamicLogo/Coordinates.tsx b/src/components/MainPage/DynamicLogo/Coordinates.tsx similarity index 100% rename from src/components/Main/DynamicLogo/Coordinates.tsx rename to src/components/MainPage/DynamicLogo/Coordinates.tsx diff --git a/src/components/Main/DynamicLogo/DynamicLogo.module.scss b/src/components/MainPage/DynamicLogo/DynamicLogo.module.scss similarity index 100% rename from src/components/Main/DynamicLogo/DynamicLogo.module.scss rename to src/components/MainPage/DynamicLogo/DynamicLogo.module.scss diff --git a/src/components/Main/DynamicLogo/DynamicLogo.tsx b/src/components/MainPage/DynamicLogo/DynamicLogo.tsx similarity index 95% rename from src/components/Main/DynamicLogo/DynamicLogo.tsx rename to src/components/MainPage/DynamicLogo/DynamicLogo.tsx index 8fb8b422..e853d2f0 100644 --- a/src/components/Main/DynamicLogo/DynamicLogo.tsx +++ b/src/components/MainPage/DynamicLogo/DynamicLogo.tsx @@ -62,18 +62,20 @@ const Sphere = (props: JSX.IntrinsicElements['mesh'] & {themeMode: 'dark' | 'lig hover(true)} // onPointerOut={(event) => hover(false)} > - + ); diff --git a/src/components/Main/DynamicLogo/SetArc3D.tsx b/src/components/MainPage/DynamicLogo/SetArc3D.tsx similarity index 100% rename from src/components/Main/DynamicLogo/SetArc3D.tsx rename to src/components/MainPage/DynamicLogo/SetArc3D.tsx diff --git a/src/components/Main/DynamicLogo/SpherePath.tsx b/src/components/MainPage/DynamicLogo/SpherePath.tsx similarity index 100% rename from src/components/Main/DynamicLogo/SpherePath.tsx rename to src/components/MainPage/DynamicLogo/SpherePath.tsx diff --git a/src/components/Main/DynamicLogo/SphericalPoints.tsx b/src/components/MainPage/DynamicLogo/SphericalPoints.tsx similarity index 100% rename from src/components/Main/DynamicLogo/SphericalPoints.tsx rename to src/components/MainPage/DynamicLogo/SphericalPoints.tsx diff --git a/src/components/Main/DynamicLogo/Word.tsx b/src/components/MainPage/DynamicLogo/Word.tsx similarity index 100% rename from src/components/Main/DynamicLogo/Word.tsx rename to src/components/MainPage/DynamicLogo/Word.tsx diff --git a/src/components/MainPage/FeaturesCards/FeatureCard.tsx b/src/components/MainPage/FeaturesCards/FeatureCard.tsx new file mode 100644 index 00000000..535f1fb3 --- /dev/null +++ b/src/components/MainPage/FeaturesCards/FeatureCard.tsx @@ -0,0 +1,51 @@ +import React, { useEffect, useState } from 'react'; +import styles from './FeaturesCards.module.scss'; +import { Typography, Button } from '@mui/material'; +import { useTheme } from '@mui/material/styles'; +import { textColor, bgColorBlocks } from '../../../utils/ThemeConstants'; + +export type Content = { + text: {title: string, description: string}; + image: string, + align: 'left' | 'right', +}; + +const FeatureCard = ({ text, image, align }: Content) => { + + const theme = useTheme(); + + return ( +
+
+ + {text.title} + + + {text.description} + +
+
+ {text.title} +
+
+ ); +}; + +export default FeatureCard; + diff --git a/src/components/MainPage/FeaturesCards/FeaturesCards.module.scss b/src/components/MainPage/FeaturesCards/FeaturesCards.module.scss new file mode 100644 index 00000000..d34e413d --- /dev/null +++ b/src/components/MainPage/FeaturesCards/FeaturesCards.module.scss @@ -0,0 +1,32 @@ +.container { + position: relative; + padding: 72px 120px 52px 120px; + margin: 48px 0; + + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; +} + +.card { + width: 100%; + height: 100%; + + display: flex; + flex-direction: row; + justify-content: center; + align-items: center; + + padding: 32px 96px; + + .cardText { + width: 80%; + height: 100%; + } + + .cardImage { + width: 100%; + height: 100%; + } +} \ No newline at end of file diff --git a/src/components/MainPage/FeaturesCards/FeaturesCards.tsx b/src/components/MainPage/FeaturesCards/FeaturesCards.tsx new file mode 100644 index 00000000..b2f1b4d0 --- /dev/null +++ b/src/components/MainPage/FeaturesCards/FeaturesCards.tsx @@ -0,0 +1,110 @@ + +import React, { useEffect, useState } from 'react'; +import styles from './FeaturesCards.module.scss'; +import { Typography, Button } from '@mui/material'; +import { useTheme } from '@mui/material/styles'; +import { textColor, bgColorBlocks } from '../../../utils/ThemeConstants'; +import FeatureCard, { Content } from './FeatureCard'; +import { + pca, + pcaDark, + dir, + dirDark, + vgp, + vgpDark, + selection, + selectionDark, + exportData, + exportDataDark, + exportGraphs, + exportGraphsDark, + darkTheme, + darkThemeDark, +} from './assets'; + + +const Description = () => { + + const theme = useTheme(); + + const content: Array = [ + { + text: { + title: 'Проводите компонентный анализ', + description: 'Страница магнитных чисток (PCA) предоставляет классические инструменты для выделения компонент намагниченности. Работайте напрямую с коллекцией образцов и экспортируйте выделенные направления в любом удобном формате.' + }, + image: theme.palette.mode === 'light' ? pca : pcaDark, + align: 'left' + }, + { + text: { + title: 'Изучайте распределения направлений', + description: 'Страница статистики направлений (DIR) даёт возможность найти средние направления различными методами. И на этой же странице вы можете провести палеомагнитные статистические тесты для проверки своих гипотез.' + }, + image: theme.palette.mode === 'light' ? dir : dirDark, + align: 'right' + }, + { + text: { + title: 'Находите виртуальные геомагнитные полюса', + description: 'Для расчёта полюсов достаточно на странице DIR открыть соответствующий модуль и просто ввести или импортировать координаты точек отбора образцов (можно даже из XLSX файла). И полученные VGP можно тут же экспортировать в формате, подходящем для программы GPLates', + }, + image: theme.palette.mode === 'light' ? vgp : vgpDark, + align: 'left' + }, + { + text: { + title: 'Взаимодействие с данными ещё не было столь простым', + description: 'Все данные в PMTools представлены в виде таблиц и графиков, которые напрямую связаны между собой — вы можете выбирать нужные вам направления (точки) прямиком из таблиц, обводя их на графиках, или даже вводя их через в специальное поле.' + }, + image: theme.palette.mode === 'light' ? selection : selectionDark, + align: 'right' + }, + { + text: { + title: 'Работайте с данными в любом формате', + description: 'Встроенный в PMTools конвертер форматов хранения палеомагнитных данных позволяет вам импортировать классические форматы данных и экспортировать их в любой удобный формат, в том числе в Excel.' + }, + image: theme.palette.mode === 'light' ? exportData : exportDataDark, + align: 'left' + }, + { + text: { + title: 'Забудьте о трудностях при работе с графикой', + description: 'Все графики и диаграммы в PMTools написаны с нуля специально для отображения палеомагнитных данных — все они заранее подготовлены для использования в публикациях и презентациях, а при их экспорте вы получите SVG файл с понятной и легко редактируемой структурой.' + }, + image: theme.palette.mode === 'light' ? exportGraphs : exportGraphsDark, + align: 'right' + }, + { + text: { + title: 'Комфортная работа в любое время суток', + description: 'В PMTools вы можете переключиться на тёмную тему и комфортно работать в полной темноте.' + }, + image: theme.palette.mode === 'light' ? darkTheme : darkThemeDark, + align: 'left' + }, + ]; + + return ( +
+ { + content.map((card, index) => ( + + )) + } +
+ ); +}; + +export default Description; diff --git a/src/components/MainPage/FeaturesCards/assets/darkTheme.png b/src/components/MainPage/FeaturesCards/assets/darkTheme.png new file mode 100644 index 00000000..70056e98 Binary files /dev/null and b/src/components/MainPage/FeaturesCards/assets/darkTheme.png differ diff --git a/src/components/MainPage/FeaturesCards/assets/darkThemeDark.png b/src/components/MainPage/FeaturesCards/assets/darkThemeDark.png new file mode 100644 index 00000000..4eb48038 Binary files /dev/null and b/src/components/MainPage/FeaturesCards/assets/darkThemeDark.png differ diff --git a/src/components/MainPage/FeaturesCards/assets/dir.png b/src/components/MainPage/FeaturesCards/assets/dir.png new file mode 100644 index 00000000..e3646efe Binary files /dev/null and b/src/components/MainPage/FeaturesCards/assets/dir.png differ diff --git a/src/components/MainPage/FeaturesCards/assets/dirDark.png b/src/components/MainPage/FeaturesCards/assets/dirDark.png new file mode 100644 index 00000000..e79e3265 Binary files /dev/null and b/src/components/MainPage/FeaturesCards/assets/dirDark.png differ diff --git a/src/components/MainPage/FeaturesCards/assets/exportData.png b/src/components/MainPage/FeaturesCards/assets/exportData.png new file mode 100644 index 00000000..e1e043a2 Binary files /dev/null and b/src/components/MainPage/FeaturesCards/assets/exportData.png differ diff --git a/src/components/MainPage/FeaturesCards/assets/exportDataDark.png b/src/components/MainPage/FeaturesCards/assets/exportDataDark.png new file mode 100644 index 00000000..d8f2f1df Binary files /dev/null and b/src/components/MainPage/FeaturesCards/assets/exportDataDark.png differ diff --git a/src/components/MainPage/FeaturesCards/assets/exportGraphs.png b/src/components/MainPage/FeaturesCards/assets/exportGraphs.png new file mode 100644 index 00000000..2c5cb053 Binary files /dev/null and b/src/components/MainPage/FeaturesCards/assets/exportGraphs.png differ diff --git a/src/components/MainPage/FeaturesCards/assets/exportGraphsDark.png b/src/components/MainPage/FeaturesCards/assets/exportGraphsDark.png new file mode 100644 index 00000000..f81ed032 Binary files /dev/null and b/src/components/MainPage/FeaturesCards/assets/exportGraphsDark.png differ diff --git a/src/components/MainPage/FeaturesCards/assets/index.ts b/src/components/MainPage/FeaturesCards/assets/index.ts new file mode 100644 index 00000000..039d86f9 --- /dev/null +++ b/src/components/MainPage/FeaturesCards/assets/index.ts @@ -0,0 +1,31 @@ +import pca from './pca.png'; +import pcaDark from './pcaDark.png'; +import dir from './dir.png'; +import dirDark from './dirDark.png'; +import vgp from './vgp.png'; +import vgpDark from './vgpDark.png'; +import selection from './selection.png'; +import selectionDark from './selectionDark.png'; +import exportData from './exportData.png'; +import exportDataDark from './exportDataDark.png'; +import exportGraphs from './exportGraphs.png'; +import exportGraphsDark from './exportGraphsDark.png'; +import darkTheme from './darkTheme.png'; +import darkThemeDark from './darkThemeDark.png'; + +export { + pca, + pcaDark, + dir, + dirDark, + vgp, + vgpDark, + selection, + selectionDark, + exportData, + exportDataDark, + exportGraphs, + exportGraphsDark, + darkTheme, + darkThemeDark, +}; diff --git a/src/components/MainPage/FeaturesCards/assets/pca.png b/src/components/MainPage/FeaturesCards/assets/pca.png new file mode 100644 index 00000000..7ed5bc18 Binary files /dev/null and b/src/components/MainPage/FeaturesCards/assets/pca.png differ diff --git a/src/components/MainPage/FeaturesCards/assets/pcaDark.png b/src/components/MainPage/FeaturesCards/assets/pcaDark.png new file mode 100644 index 00000000..45b8e808 Binary files /dev/null and b/src/components/MainPage/FeaturesCards/assets/pcaDark.png differ diff --git a/src/components/MainPage/FeaturesCards/assets/selection.png b/src/components/MainPage/FeaturesCards/assets/selection.png new file mode 100644 index 00000000..fab639c0 Binary files /dev/null and b/src/components/MainPage/FeaturesCards/assets/selection.png differ diff --git a/src/components/MainPage/FeaturesCards/assets/selectionDark.png b/src/components/MainPage/FeaturesCards/assets/selectionDark.png new file mode 100644 index 00000000..a1460aa4 Binary files /dev/null and b/src/components/MainPage/FeaturesCards/assets/selectionDark.png differ diff --git a/src/components/MainPage/FeaturesCards/assets/vgp.png b/src/components/MainPage/FeaturesCards/assets/vgp.png new file mode 100644 index 00000000..b7e15d71 Binary files /dev/null and b/src/components/MainPage/FeaturesCards/assets/vgp.png differ diff --git a/src/components/MainPage/FeaturesCards/assets/vgpDark.png b/src/components/MainPage/FeaturesCards/assets/vgpDark.png new file mode 100644 index 00000000..5b422270 Binary files /dev/null and b/src/components/MainPage/FeaturesCards/assets/vgpDark.png differ diff --git a/src/components/MainPage/Footer/Footer.module.scss b/src/components/MainPage/Footer/Footer.module.scss new file mode 100644 index 00000000..a7bacf60 --- /dev/null +++ b/src/components/MainPage/Footer/Footer.module.scss @@ -0,0 +1,21 @@ +.container { + width: 100%; + height: 100%; + + display: flex; + flex-direction: row; + align-items: center; + justify-content: space-between; + + padding: 72px 240px 52px 240px; + margin: 48px 0 0 0; + + box-sizing: border-box; +} + +.rightBlock { + display: flex; + flex-direction: row; + justify-content: space-between; + align-items: center; +} \ No newline at end of file diff --git a/src/components/MainPage/Footer/Footer.tsx b/src/components/MainPage/Footer/Footer.tsx new file mode 100644 index 00000000..ca4bd0e6 --- /dev/null +++ b/src/components/MainPage/Footer/Footer.tsx @@ -0,0 +1,32 @@ + +import React, { useEffect, useState } from 'react'; +import styles from './Footer.module.scss'; +import { Divider, Typography } from '@mui/material'; +import { useTheme } from '@mui/material/styles'; +import { textColor, bgColorBlocks } from '../../../utils/ThemeConstants'; + +const Footer = () => { + + const theme = useTheme(); + + return ( +
+ {/* */} + + © 2022 PMTools 2.0. Все права защищены. + +
+ + Проект поставляется под лицензией MIT. + +
+
+ ); +}; + +export default Footer; diff --git a/src/components/MainPage/NavPanel/NavButton.tsx b/src/components/MainPage/NavPanel/NavButton.tsx new file mode 100644 index 00000000..345fab99 --- /dev/null +++ b/src/components/MainPage/NavPanel/NavButton.tsx @@ -0,0 +1,62 @@ +import React, { FC } from "react"; +import styles from './AppNavigation.module.scss'; +import { Button } from '@mui/material'; +import { NavLink } from 'react-router-dom'; + +interface INavButton { + label: string; + to: string; + external?: boolean; +} + +const NavButton: FC = ({ label, to, external }) => { + + const onClickExternal = () => { + window.location.href = to; + }; + + if (external) { + return ( + + ) + }; + + return ( + + { + ({ isActive }) => { + return ( + + ); + } + } + + ) +} + +export default NavButton; diff --git a/src/components/MainPage/NavPanel/NavPanel.module.scss b/src/components/MainPage/NavPanel/NavPanel.module.scss new file mode 100644 index 00000000..f1dbedbc --- /dev/null +++ b/src/components/MainPage/NavPanel/NavPanel.module.scss @@ -0,0 +1,22 @@ +.container { + position: relative; + display: flex; + flex-direction: row; + justify-content: center; + align-items: center; + + padding: 8px 0px; + + & .settings { + position: absolute; + top: calc(50% - 20px); + right: 28px; + + width: 80px; + height: 40px; + + display: flex; + flex-direction: row; + // align-items: flex-end; + } +} \ No newline at end of file diff --git a/src/components/MainPage/NavPanel/NavPanel.tsx b/src/components/MainPage/NavPanel/NavPanel.tsx new file mode 100644 index 00000000..f524e624 --- /dev/null +++ b/src/components/MainPage/NavPanel/NavPanel.tsx @@ -0,0 +1,76 @@ +import React, { FC, useEffect } from "react"; +import styles from './NavPanel.module.scss'; +import { useMediaQuery } from "react-responsive"; +import NavButton from "./NavButton"; +import pmtoolsLogo from './pmtools_logo.png'; +// import { default as pmtoolsLogo } from './PMTools_logo.svg'; +import { NavLink } from "react-router-dom"; +import { IconButton } from "@mui/material"; +import { useTheme } from '@mui/material/styles'; +import { useSystemTheme } from "../../../utils/GlobalHooks"; +import Brightness4Icon from '@mui/icons-material/Brightness4'; +import Brightness7Icon from '@mui/icons-material/Brightness7'; +import LanguageIcon from '@mui/icons-material/Language'; +import { useAppDispatch, useAppSelector } from "../../../services/store/hooks"; +import { setColorMode } from "../../../services/reducers/appSettings"; + +const NavPanel = () => { + + const dispatch = useAppDispatch(); + + const isSmallScreen = useMediaQuery({ query: '(max-width: 1464px)' }); + const { colorMode } = useAppSelector(state => state.appSettingsReducer); + const systemTheme = useSystemTheme(); + const theme = useTheme(); + + const onColorModeClick = () => { + dispatch(setColorMode(colorMode === 'dark' ? 'light' : 'dark')); + }; + + const onLanguageClick = () => { + console.log('language click'); + }; + + useEffect(() => { + dispatch(setColorMode(systemTheme)); + }, [systemTheme]); + + return ( +
+ + pmtools logo + + + + + + +
+ + {theme.palette.mode === 'dark' ? : } + + + + +
+
+ ); +} + +export default NavPanel; diff --git a/src/components/MainPage/NavPanel/PMTools_logo.svg b/src/components/MainPage/NavPanel/PMTools_logo.svg new file mode 100644 index 00000000..9e801f9d Binary files /dev/null and b/src/components/MainPage/NavPanel/PMTools_logo.svg differ diff --git a/src/components/MainPage/NavPanel/pmtools_logo.png b/src/components/MainPage/NavPanel/pmtools_logo.png new file mode 100644 index 00000000..5323077f Binary files /dev/null and b/src/components/MainPage/NavPanel/pmtools_logo.png differ diff --git a/src/components/MainPage/index.ts b/src/components/MainPage/index.ts new file mode 100644 index 00000000..fa306405 --- /dev/null +++ b/src/components/MainPage/index.ts @@ -0,0 +1,15 @@ +import NavPanel from './NavPanel/NavPanel'; +import DynamicLogo from './DynamicLogo/DynamicLogo'; +import About from './About/About'; +import Description from './Description/Description'; +import FeatureCards from './FeaturesCards/FeaturesCards'; +import Footer from './Footer/Footer'; + +export { + NavPanel, + DynamicLogo, + About, + Description, + FeatureCards, + Footer, +}; diff --git a/src/components/Sub/Modal/SettingsModal/Sections/HotkeysSection/HotkeysSection.tsx b/src/components/Sub/Modal/SettingsModal/Sections/HotkeysSection/HotkeysSection.tsx index 896b1df0..b868065b 100644 --- a/src/components/Sub/Modal/SettingsModal/Sections/HotkeysSection/HotkeysSection.tsx +++ b/src/components/Sub/Modal/SettingsModal/Sections/HotkeysSection/HotkeysSection.tsx @@ -7,7 +7,7 @@ import { textColor, bgColorBlocks } from "../../../../../../utils/ThemeConstants import { useForm } from "react-hook-form"; import { HotkeysType } from "../../../../../../utils/GlobalTypes"; -import { defaultHotkeys } from "../../../../../Main/AppSettings/hotkeys"; +import { defaultHotkeys } from "../../../../../AppLogic/AppSettings/hotkeys"; import { useAppDispatch, useAppSelector } from "../../../../../../services/store/hooks"; import { setHotkeys } from "../../../../../../services/reducers/appSettings"; diff --git a/src/index.scss b/src/index.scss index ea03904e..a175d5fe 100644 --- a/src/index.scss +++ b/src/index.scss @@ -5,6 +5,7 @@ body { sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; + overflow: overlay; } code { @@ -15,7 +16,6 @@ code { ::-webkit-scrollbar { width: 4px; height: 4px; - background-color: transparent; } *:hover::-webkit-scrollbar { @@ -24,6 +24,11 @@ code { } ::-webkit-scrollbar-thumb { - background-color: #9facb3; + background-color: #474c50; border-radius: 6px; } + +::-webkit-scrollbar-track { + // background: #202020; + background: transparent; +} diff --git a/src/pages/DIRPage/DIRPage.tsx b/src/pages/DIRPage/DIRPage.tsx index d411e5f8..fb241a44 100644 --- a/src/pages/DIRPage/DIRPage.tsx +++ b/src/pages/DIRPage/DIRPage.tsx @@ -1,19 +1,23 @@ import React, { FC, useEffect, useState } from 'react'; import styles from './DIRPage.module.scss'; -import { useTheme } from '@mui/material/styles'; -import ToolsDIR from '../../components/Main/ToolsDIR/ToolsDIR'; -import { filesToData } from '../../services/axios/filesAndData'; -import { addInterpretation, setStatisticsMode, showSelectionInput, updateCurrentInterpretation } from '../../services/reducers/dirPage'; import { useAppDispatch, useAppSelector } from '../../services/store/hooks'; +import { + addInterpretation, + setStatisticsMode, + showSelectionInput, + updateCurrentInterpretation +} from '../../services/reducers/dirPage'; +import { filesToData } from '../../services/axios/filesAndData'; import { IDirData } from '../../utils/GlobalTypes'; -import { bgColorMain } from '../../utils/ThemeConstants'; +import calculateStatisticsDIR from '../../utils/statistics/calculateStatisticsDIR'; import Tables from './Tables'; import Graphs from './Graphs'; -import calculateStatisticsDIR from '../../utils/statistics/calculateStatisticsDIR'; +import { ToolsDIR } from '../../components/AppLogic'; +import { useTheme } from '@mui/material/styles'; +import { bgColorMain } from '../../utils/ThemeConstants'; import ModalWrapper from '../../components/Sub/Modal/ModalWrapper'; import UploadModal from '../../components/Sub/Modal/UploadModal/UploadModal'; - const DIRPage: FC = ({}) => { const dispatch = useAppDispatch(); diff --git a/src/pages/DIRPage/Graphs.tsx b/src/pages/DIRPage/Graphs.tsx index 29929075..18f3bcf1 100644 --- a/src/pages/DIRPage/Graphs.tsx +++ b/src/pages/DIRPage/Graphs.tsx @@ -3,7 +3,7 @@ import styles from './DIRPage.module.scss'; import { useWindowSize } from '../../utils/GlobalHooks'; import { IDirData } from '../../utils/GlobalTypes'; import GraphsSkeleton from './GraphsSkeleton'; -import StereoGraphDIR from '../../components/Graph/StereoGraphDIR/StereoGraphDIR'; +import { StereoGraphDIR }from '../../components/AppGraphs'; interface IGraphs { dataToShow: IDirData | null; diff --git a/src/pages/DIRPage/Tables.tsx b/src/pages/DIRPage/Tables.tsx index f2d9b07f..326483d8 100644 --- a/src/pages/DIRPage/Tables.tsx +++ b/src/pages/DIRPage/Tables.tsx @@ -1,16 +1,16 @@ import React, { FC, useEffect, useState } from 'react'; import styles from './DIRPage.module.scss'; -import { useAppDispatch, useAppSelector } from '../../services/store/hooks'; +import { useAppSelector } from '../../services/store/hooks'; +import { IDirData, StatisitcsInterpretation } from "../../utils/GlobalTypes"; +import { DataTableDIR, StatisticsDataTableDIR } from '../../components/AppLogic'; import { useTheme } from '@mui/material/styles'; -import { DataTableDIR, StatisticsDataTableDIR } from '../../components/Main'; -import { IDirData, IPmdData, StatisitcsInterpretation } from "../../utils/GlobalTypes"; import { bgColorMain, } from '../../utils/ThemeConstants'; interface ITables { dataToShow: IDirData | null; -} +}; const Tables: FC = ({ dataToShow }) => { diff --git a/src/pages/MainPage/MainPage.module.scss b/src/pages/MainPage/MainPage.module.scss index fa50063f..8a72fc8d 100644 --- a/src/pages/MainPage/MainPage.module.scss +++ b/src/pages/MainPage/MainPage.module.scss @@ -1,8 +1,9 @@ -.mainPage { +.logo { + width: 100%; + height: 520px; + display: flex; - flex-direction: row; + flex-direction: column; justify-content: center; align-items: center; - - color: white; } \ No newline at end of file diff --git a/src/pages/MainPage/MainPage.tsx b/src/pages/MainPage/MainPage.tsx index 4c03c077..882c1601 100644 --- a/src/pages/MainPage/MainPage.tsx +++ b/src/pages/MainPage/MainPage.tsx @@ -2,25 +2,25 @@ import React, { FC } from 'react'; import styles from './MainPage.module.scss'; import { useTheme } from '@mui/material/styles'; import { - bgColorMain, + textColor, } from '../../utils/ThemeConstants'; -import { DynamicLogo } from '../../components/Main'; +import { DynamicLogo, NavPanel, About, Description, FeatureCards, Footer } from '../../components/MainPage'; +import { Typography } from '@mui/material'; const MainPage: FC = ({}) => { const theme = useTheme(); - - console.log(theme.palette.mode); return ( <> - + +
+ +
+ + + +