diff --git a/index.html b/index.html
index ac1a9f6..8441828 100644
--- a/index.html
+++ b/index.html
@@ -3,10 +3,10 @@
-
-
-
-
+
+
+
+
AURA
diff --git a/package-lock.json b/package-lock.json
index 63ba1a4..c8afa9c 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -9,27 +9,26 @@
"version": "0.0.0",
"dependencies": {
"@reduxjs/toolkit": "^1.9.5",
- "i18next": "^22.4.15",
+ "i18next": "^22.5.0",
"react": "^18.2.0",
"react-circular-progressbar": "^2.1.0",
"react-dom": "^18.2.0",
- "react-i18next": "^12.2.2",
+ "react-i18next": "^12.3.1",
"react-redux": "^8.0.5",
- "react-router-dom": "^6.11.0"
+ "react-router-dom": "^6.11.2"
},
"devDependencies": {
- "@types/react": "^18.0.28",
- "@types/react-dom": "^18.0.11",
+ "@types/react": "^18.2.6",
+ "@types/react-dom": "^18.2.4",
"@types/react-router-dom": "^5.3.3",
- "@typescript-eslint/eslint-plugin": "^5.57.1",
- "@typescript-eslint/parser": "^5.57.1",
+ "@typescript-eslint/eslint-plugin": "^5.59.6",
+ "@typescript-eslint/parser": "^5.59.6",
"@vitejs/plugin-react": "^4.0.0",
- "eslint": "^8.38.0",
+ "eslint": "^8.41.0",
"eslint-plugin-react-hooks": "^4.6.0",
- "eslint-plugin-react-refresh": "^0.3.4",
- "typescript": "^5.0.2",
- "vite": "^4.3.2",
- "vite-plugin-copy": "^0.1.6"
+ "eslint-plugin-react-refresh": "^0.4.1",
+ "typescript": "^5.0.4",
+ "vite": "^4.3.8"
}
},
"node_modules/@ampproject/remapping": {
@@ -780,14 +779,14 @@
}
},
"node_modules/@eslint/eslintrc": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.2.tgz",
- "integrity": "sha512-3W4f5tDUra+pA+FzgugqL2pRimUTDJWKr7BINqOpkZrC0uYI0NIc0/JFgBROCU07HR6GieA5m3/rsPIhDmCXTQ==",
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.3.tgz",
+ "integrity": "sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ==",
"dev": true,
"dependencies": {
"ajv": "^6.12.4",
"debug": "^4.3.2",
- "espree": "^9.5.1",
+ "espree": "^9.5.2",
"globals": "^13.19.0",
"ignore": "^5.2.0",
"import-fresh": "^3.2.1",
@@ -818,9 +817,9 @@
}
},
"node_modules/@eslint/js": {
- "version": "8.39.0",
- "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.39.0.tgz",
- "integrity": "sha512-kf9RB0Fg7NZfap83B3QOqOGg9QmD9yBudqQXzzOtn3i4y7ZUXe5ONeW34Gwi+TxhH4mvj72R1Zc300KUMa9Bng==",
+ "version": "8.41.0",
+ "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.41.0.tgz",
+ "integrity": "sha512-LxcyMGxwmTh2lY9FwHPGWOHmYFCZvbrFCBZL4FzSSsxsRPuhrYUg/49/0KDfW8tnIEaEHtfmn6+NPN+1DqaNmA==",
"dev": true,
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
@@ -972,9 +971,9 @@
}
},
"node_modules/@remix-run/router": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.6.0.tgz",
- "integrity": "sha512-N13NRw3T2+6Xi9J//3CGLsK2OqC8NMme3d/YX+nh05K9YHWGcv8DycHJrqGScSP4T75o8IN6nqIMhVFU8ohg8w==",
+ "version": "1.6.2",
+ "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.6.2.tgz",
+ "integrity": "sha512-LzqpSrMK/3JBAVBI9u3NWtOhWNw5AMQfrUFYB0+bDHTSw17z++WJLsPsxAuK+oSddsxk4d7F/JcdDPM1M5YAhA==",
"engines": {
"node": ">=14"
}
@@ -1006,9 +1005,9 @@
"integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w=="
},
"node_modules/@types/react": {
- "version": "18.2.0",
- "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.0.tgz",
- "integrity": "sha512-0FLj93y5USLHdnhIhABk83rm8XEGA7kH3cr+YUlvxoUGp1xNt/DINUMvqPxLyOQMzLmZe8i4RTHbvb8MC7NmrA==",
+ "version": "18.2.6",
+ "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.6.tgz",
+ "integrity": "sha512-wRZClXn//zxCFW+ye/D2qY65UsYP1Fpex2YXorHc8awoNamkMZSvBxwxdYVInsHOZZd2Ppq8isnSzJL5Mpf8OA==",
"dependencies": {
"@types/prop-types": "*",
"@types/scheduler": "*",
@@ -1016,9 +1015,9 @@
}
},
"node_modules/@types/react-dom": {
- "version": "18.2.1",
- "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.1.tgz",
- "integrity": "sha512-8QZEV9+Kwy7tXFmjJrp3XUKQSs9LTnE0KnoUb0YCguWBiNW0Yfb2iBMYZ08WPg35IR6P3Z0s00B15SwZnO26+w==",
+ "version": "18.2.4",
+ "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.4.tgz",
+ "integrity": "sha512-G2mHoTMTL4yoydITgOGwWdWMVd8sNgyEP85xVmMKAPUBwQWm9wBPQUmvbeF4V3WBY1P7mmL4BkjQ0SqUpf1snw==",
"devOptional": true,
"dependencies": {
"@types/react": "*"
@@ -1051,9 +1050,9 @@
"integrity": "sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ=="
},
"node_modules/@types/semver": {
- "version": "7.3.13",
- "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz",
- "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==",
+ "version": "7.5.0",
+ "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.0.tgz",
+ "integrity": "sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==",
"dev": true
},
"node_modules/@types/use-sync-external-store": {
@@ -1062,15 +1061,15 @@
"integrity": "sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA=="
},
"node_modules/@typescript-eslint/eslint-plugin": {
- "version": "5.59.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.1.tgz",
- "integrity": "sha512-AVi0uazY5quFB9hlp2Xv+ogpfpk77xzsgsIEWyVS7uK/c7MZ5tw7ZPbapa0SbfkqE0fsAMkz5UwtgMLVk2BQAg==",
+ "version": "5.59.6",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.6.tgz",
+ "integrity": "sha512-sXtOgJNEuRU5RLwPUb1jxtToZbgvq3M6FPpY4QENxoOggK+UpTxUBpj6tD8+Qh2g46Pi9We87E+eHnUw8YcGsw==",
"dev": true,
"dependencies": {
"@eslint-community/regexpp": "^4.4.0",
- "@typescript-eslint/scope-manager": "5.59.1",
- "@typescript-eslint/type-utils": "5.59.1",
- "@typescript-eslint/utils": "5.59.1",
+ "@typescript-eslint/scope-manager": "5.59.6",
+ "@typescript-eslint/type-utils": "5.59.6",
+ "@typescript-eslint/utils": "5.59.6",
"debug": "^4.3.4",
"grapheme-splitter": "^1.0.4",
"ignore": "^5.2.0",
@@ -1096,14 +1095,14 @@
}
},
"node_modules/@typescript-eslint/parser": {
- "version": "5.59.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.59.1.tgz",
- "integrity": "sha512-nzjFAN8WEu6yPRDizIFyzAfgK7nybPodMNFGNH0M9tei2gYnYszRDqVA0xlnRjkl7Hkx2vYrEdb6fP2a21cG1g==",
+ "version": "5.59.6",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.59.6.tgz",
+ "integrity": "sha512-7pCa6al03Pv1yf/dUg/s1pXz/yGMUBAw5EeWqNTFiSueKvRNonze3hma3lhdsOrQcaOXhbk5gKu2Fludiho9VA==",
"dev": true,
"dependencies": {
- "@typescript-eslint/scope-manager": "5.59.1",
- "@typescript-eslint/types": "5.59.1",
- "@typescript-eslint/typescript-estree": "5.59.1",
+ "@typescript-eslint/scope-manager": "5.59.6",
+ "@typescript-eslint/types": "5.59.6",
+ "@typescript-eslint/typescript-estree": "5.59.6",
"debug": "^4.3.4"
},
"engines": {
@@ -1123,13 +1122,13 @@
}
},
"node_modules/@typescript-eslint/scope-manager": {
- "version": "5.59.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.1.tgz",
- "integrity": "sha512-mau0waO5frJctPuAzcxiNWqJR5Z8V0190FTSqRw1Q4Euop6+zTwHAf8YIXNwDOT29tyUDrQ65jSg9aTU/H0omA==",
+ "version": "5.59.6",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.6.tgz",
+ "integrity": "sha512-gLbY3Le9Dxcb8KdpF0+SJr6EQ+hFGYFl6tVY8VxLPFDfUZC7BHFw+Vq7bM5lE9DwWPfx4vMWWTLGXgpc0mAYyQ==",
"dev": true,
"dependencies": {
- "@typescript-eslint/types": "5.59.1",
- "@typescript-eslint/visitor-keys": "5.59.1"
+ "@typescript-eslint/types": "5.59.6",
+ "@typescript-eslint/visitor-keys": "5.59.6"
},
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
@@ -1140,13 +1139,13 @@
}
},
"node_modules/@typescript-eslint/type-utils": {
- "version": "5.59.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.59.1.tgz",
- "integrity": "sha512-ZMWQ+Oh82jWqWzvM3xU+9y5U7MEMVv6GLioM3R5NJk6uvP47kZ7YvlgSHJ7ERD6bOY7Q4uxWm25c76HKEwIjZw==",
+ "version": "5.59.6",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.59.6.tgz",
+ "integrity": "sha512-A4tms2Mp5yNvLDlySF+kAThV9VTBPCvGf0Rp8nl/eoDX9Okun8byTKoj3fJ52IJitjWOk0fKPNQhXEB++eNozQ==",
"dev": true,
"dependencies": {
- "@typescript-eslint/typescript-estree": "5.59.1",
- "@typescript-eslint/utils": "5.59.1",
+ "@typescript-eslint/typescript-estree": "5.59.6",
+ "@typescript-eslint/utils": "5.59.6",
"debug": "^4.3.4",
"tsutils": "^3.21.0"
},
@@ -1167,9 +1166,9 @@
}
},
"node_modules/@typescript-eslint/types": {
- "version": "5.59.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.1.tgz",
- "integrity": "sha512-dg0ICB+RZwHlysIy/Dh1SP+gnXNzwd/KS0JprD3Lmgmdq+dJAJnUPe1gNG34p0U19HvRlGX733d/KqscrGC1Pg==",
+ "version": "5.59.6",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.6.tgz",
+ "integrity": "sha512-tH5lBXZI7T2MOUgOWFdVNUILsI02shyQvfzG9EJkoONWugCG77NDDa1EeDGw7oJ5IvsTAAGVV8I3Tk2PNu9QfA==",
"dev": true,
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
@@ -1180,13 +1179,13 @@
}
},
"node_modules/@typescript-eslint/typescript-estree": {
- "version": "5.59.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.1.tgz",
- "integrity": "sha512-lYLBBOCsFltFy7XVqzX0Ju+Lh3WPIAWxYpmH/Q7ZoqzbscLiCW00LeYCdsUnnfnj29/s1WovXKh2gwCoinHNGA==",
+ "version": "5.59.6",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.6.tgz",
+ "integrity": "sha512-vW6JP3lMAs/Tq4KjdI/RiHaaJSO7IUsbkz17it/Rl9Q+WkQ77EOuOnlbaU8kKfVIOJxMhnRiBG+olE7f3M16DA==",
"dev": true,
"dependencies": {
- "@typescript-eslint/types": "5.59.1",
- "@typescript-eslint/visitor-keys": "5.59.1",
+ "@typescript-eslint/types": "5.59.6",
+ "@typescript-eslint/visitor-keys": "5.59.6",
"debug": "^4.3.4",
"globby": "^11.1.0",
"is-glob": "^4.0.3",
@@ -1207,17 +1206,17 @@
}
},
"node_modules/@typescript-eslint/utils": {
- "version": "5.59.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.59.1.tgz",
- "integrity": "sha512-MkTe7FE+K1/GxZkP5gRj3rCztg45bEhsd8HYjczBuYm+qFHP5vtZmjx3B0yUCDotceQ4sHgTyz60Ycl225njmA==",
+ "version": "5.59.6",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.59.6.tgz",
+ "integrity": "sha512-vzaaD6EXbTS29cVH0JjXBdzMt6VBlv+hE31XktDRMX1j3462wZCJa7VzO2AxXEXcIl8GQqZPcOPuW/Z1tZVogg==",
"dev": true,
"dependencies": {
"@eslint-community/eslint-utils": "^4.2.0",
"@types/json-schema": "^7.0.9",
"@types/semver": "^7.3.12",
- "@typescript-eslint/scope-manager": "5.59.1",
- "@typescript-eslint/types": "5.59.1",
- "@typescript-eslint/typescript-estree": "5.59.1",
+ "@typescript-eslint/scope-manager": "5.59.6",
+ "@typescript-eslint/types": "5.59.6",
+ "@typescript-eslint/typescript-estree": "5.59.6",
"eslint-scope": "^5.1.1",
"semver": "^7.3.7"
},
@@ -1233,12 +1232,12 @@
}
},
"node_modules/@typescript-eslint/visitor-keys": {
- "version": "5.59.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.1.tgz",
- "integrity": "sha512-6waEYwBTCWryx0VJmP7JaM4FpipLsFl9CvYf2foAE8Qh/Y0s+bxWysciwOs0LTBED4JCaNxTZ5rGadB14M6dwA==",
+ "version": "5.59.6",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.6.tgz",
+ "integrity": "sha512-zEfbFLzB9ETcEJ4HZEEsCR9HHeNku5/Qw1jSS5McYJv5BR+ftYXwFFAH5Al+xkGaZEqowMwl7uoJjQb1YSPF8Q==",
"dev": true,
"dependencies": {
- "@typescript-eslint/types": "5.59.1",
+ "@typescript-eslint/types": "5.59.6",
"eslint-visitor-keys": "^3.3.0"
},
"engines": {
@@ -1594,15 +1593,15 @@
}
},
"node_modules/eslint": {
- "version": "8.39.0",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.39.0.tgz",
- "integrity": "sha512-mwiok6cy7KTW7rBpo05k6+p4YVZByLNjAZ/ACB9DRCu4YDRwjXI01tWHp6KAUWelsBetTxKK/2sHB0vdS8Z2Og==",
+ "version": "8.41.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.41.0.tgz",
+ "integrity": "sha512-WQDQpzGBOP5IrXPo4Hc0814r4/v2rrIsB0rhT7jtunIalgg6gYXWhRMOejVO8yH21T/FGaxjmFjBMNqcIlmH1Q==",
"dev": true,
"dependencies": {
"@eslint-community/eslint-utils": "^4.2.0",
"@eslint-community/regexpp": "^4.4.0",
- "@eslint/eslintrc": "^2.0.2",
- "@eslint/js": "8.39.0",
+ "@eslint/eslintrc": "^2.0.3",
+ "@eslint/js": "8.41.0",
"@humanwhocodes/config-array": "^0.11.8",
"@humanwhocodes/module-importer": "^1.0.1",
"@nodelib/fs.walk": "^1.2.8",
@@ -1613,8 +1612,8 @@
"doctrine": "^3.0.0",
"escape-string-regexp": "^4.0.0",
"eslint-scope": "^7.2.0",
- "eslint-visitor-keys": "^3.4.0",
- "espree": "^9.5.1",
+ "eslint-visitor-keys": "^3.4.1",
+ "espree": "^9.5.2",
"esquery": "^1.4.2",
"esutils": "^2.0.2",
"fast-deep-equal": "^3.1.3",
@@ -1622,13 +1621,12 @@
"find-up": "^5.0.0",
"glob-parent": "^6.0.2",
"globals": "^13.19.0",
- "grapheme-splitter": "^1.0.4",
+ "graphemer": "^1.4.0",
"ignore": "^5.2.0",
"import-fresh": "^3.0.0",
"imurmurhash": "^0.1.4",
"is-glob": "^4.0.0",
"is-path-inside": "^3.0.3",
- "js-sdsl": "^4.1.4",
"js-yaml": "^4.1.0",
"json-stable-stringify-without-jsonify": "^1.0.1",
"levn": "^0.4.1",
@@ -1663,9 +1661,9 @@
}
},
"node_modules/eslint-plugin-react-refresh": {
- "version": "0.3.5",
- "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.3.5.tgz",
- "integrity": "sha512-61qNIsc7fo9Pp/mju0J83kzvLm0Bsayu7OQSLEoJxLDCBjIIyb87bkzufoOvdDxLkSlMfkF7UxomC4+eztUBSA==",
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.1.tgz",
+ "integrity": "sha512-QgrvtRJkmV+m4w953LS146+6RwEe5waouubFVNLBfOjXJf6MLczjymO8fOcKj9jMS8aKkTCMJqiPu2WEeFI99A==",
"dev": true,
"peerDependencies": {
"eslint": ">=7"
@@ -1685,9 +1683,9 @@
}
},
"node_modules/eslint-visitor-keys": {
- "version": "3.4.0",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.0.tgz",
- "integrity": "sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ==",
+ "version": "3.4.1",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz",
+ "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==",
"dev": true,
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
@@ -1819,14 +1817,14 @@
}
},
"node_modules/espree": {
- "version": "9.5.1",
- "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.1.tgz",
- "integrity": "sha512-5yxtHSZXRSW5pvv3hAlXM5+/Oswi1AUFqBmbibKb5s6bp3rGIDkyXU6xCoyuuLhijr4SFwPrXRoZjz0AZDN9tg==",
+ "version": "9.5.2",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.2.tgz",
+ "integrity": "sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==",
"dev": true,
"dependencies": {
"acorn": "^8.8.0",
"acorn-jsx": "^5.3.2",
- "eslint-visitor-keys": "^3.4.0"
+ "eslint-visitor-keys": "^3.4.1"
},
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
@@ -2105,6 +2103,12 @@
"integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==",
"dev": true
},
+ "node_modules/graphemer": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz",
+ "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==",
+ "dev": true
+ },
"node_modules/has-flag": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
@@ -2136,9 +2140,9 @@
}
},
"node_modules/i18next": {
- "version": "22.4.15",
- "resolved": "https://registry.npmjs.org/i18next/-/i18next-22.4.15.tgz",
- "integrity": "sha512-yYudtbFrrmWKLEhl6jvKUYyYunj4bTBCe2qIUYAxbXoPusY7YmdwPvOE6fx6UIfWvmlbCWDItr7wIs8KEBZ5Zg==",
+ "version": "22.5.0",
+ "resolved": "https://registry.npmjs.org/i18next/-/i18next-22.5.0.tgz",
+ "integrity": "sha512-sqWuJFj+wJAKQP2qBQ+b7STzxZNUmnSxrehBCCj9vDOW9RDYPfqCaK1Hbh2frNYQuPziz6O2CGoJPwtzY3vAYA==",
"funding": [
{
"type": "individual",
@@ -2261,16 +2265,6 @@
"integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
"dev": true
},
- "node_modules/js-sdsl": {
- "version": "4.4.0",
- "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.4.0.tgz",
- "integrity": "sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg==",
- "dev": true,
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/js-sdsl"
- }
- },
"node_modules/js-tokens": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
@@ -2674,9 +2668,9 @@
}
},
"node_modules/react-i18next": {
- "version": "12.2.2",
- "resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-12.2.2.tgz",
- "integrity": "sha512-KBB6buBmVKXUWNxXHdnthp+38gPyBT46hJCAIQ8rX19NFL/m2ahte2KARfIDf2tMnSAL7wwck6eDOd/9zn6aFg==",
+ "version": "12.3.1",
+ "resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-12.3.1.tgz",
+ "integrity": "sha512-5v8E2XjZDFzK7K87eSwC7AJcAkcLt5xYZ4+yTPDAW1i7C93oOY1dnr4BaQM7un4Hm+GmghuiPvevWwlca5PwDA==",
"dependencies": {
"@babel/runtime": "^7.20.6",
"html-parse-stringify": "^3.0.1"
@@ -2747,11 +2741,11 @@
}
},
"node_modules/react-router": {
- "version": "6.11.0",
- "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.11.0.tgz",
- "integrity": "sha512-hTm6KKNpj9SDG4syIWRjCU219O0RZY8RUPobCFt9p+PlF7nnkRgMoh2DieTKvw3F3Mw6zg565HGnSv8BuoY5oQ==",
+ "version": "6.11.2",
+ "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.11.2.tgz",
+ "integrity": "sha512-74z9xUSaSX07t3LM+pS6Un0T55ibUE/79CzfZpy5wsPDZaea1F8QkrsiyRnA2YQ7LwE/umaydzXZV80iDCPkMg==",
"dependencies": {
- "@remix-run/router": "1.6.0"
+ "@remix-run/router": "1.6.2"
},
"engines": {
"node": ">=14"
@@ -2761,12 +2755,12 @@
}
},
"node_modules/react-router-dom": {
- "version": "6.11.0",
- "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.11.0.tgz",
- "integrity": "sha512-Q3mK1c/CYoF++J6ZINz7EZzwlgSOZK/kc7lxIA7PhtWhKju4KfF1WHqlx0kVCIFJAWztuYVpXZeljEbds8z4Og==",
+ "version": "6.11.2",
+ "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.11.2.tgz",
+ "integrity": "sha512-JNbKtAeh1VSJQnH6RvBDNhxNwemRj7KxCzc5jb7zvDSKRnPWIFj9pO+eXqjM69gQJ0r46hSz1x4l9y0651DKWw==",
"dependencies": {
- "@remix-run/router": "1.6.0",
- "react-router": "6.11.0"
+ "@remix-run/router": "1.6.2",
+ "react-router": "6.11.2"
},
"engines": {
"node": ">=14"
@@ -3124,9 +3118,9 @@
}
},
"node_modules/vite": {
- "version": "4.3.3",
- "resolved": "https://registry.npmjs.org/vite/-/vite-4.3.3.tgz",
- "integrity": "sha512-MwFlLBO4udZXd+VBcezo3u8mC77YQk+ik+fbc0GZWGgzfbPP+8Kf0fldhARqvSYmtIWoAJ5BXPClUbMTlqFxrA==",
+ "version": "4.3.8",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-4.3.8.tgz",
+ "integrity": "sha512-uYB8PwN7hbMrf4j1xzGDk/lqjsZvCDbt/JC5dyfxc19Pg8kRm14LinK/uq+HSLNswZEoKmweGdtpbnxRtrAXiQ==",
"dev": true,
"dependencies": {
"esbuild": "^0.17.5",
@@ -3171,18 +3165,6 @@
}
}
},
- "node_modules/vite-plugin-copy": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/vite-plugin-copy/-/vite-plugin-copy-0.1.6.tgz",
- "integrity": "sha512-bqIaefZOE2Jx8P5wJuHKL5GzCERa/pcwdUQWaocyTNXgalN2xkxXH7LmqRJ34V2OlKF2F9E/zj0zITS7U6PpUg==",
- "dev": true,
- "dependencies": {
- "fast-glob": "^3.2.7"
- },
- "engines": {
- "node": ">=14.8.0"
- }
- },
"node_modules/void-elements": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz",
@@ -3686,14 +3668,14 @@
"dev": true
},
"@eslint/eslintrc": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.2.tgz",
- "integrity": "sha512-3W4f5tDUra+pA+FzgugqL2pRimUTDJWKr7BINqOpkZrC0uYI0NIc0/JFgBROCU07HR6GieA5m3/rsPIhDmCXTQ==",
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.3.tgz",
+ "integrity": "sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ==",
"dev": true,
"requires": {
"ajv": "^6.12.4",
"debug": "^4.3.2",
- "espree": "^9.5.1",
+ "espree": "^9.5.2",
"globals": "^13.19.0",
"ignore": "^5.2.0",
"import-fresh": "^3.2.1",
@@ -3714,9 +3696,9 @@
}
},
"@eslint/js": {
- "version": "8.39.0",
- "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.39.0.tgz",
- "integrity": "sha512-kf9RB0Fg7NZfap83B3QOqOGg9QmD9yBudqQXzzOtn3i4y7ZUXe5ONeW34Gwi+TxhH4mvj72R1Zc300KUMa9Bng==",
+ "version": "8.41.0",
+ "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.41.0.tgz",
+ "integrity": "sha512-LxcyMGxwmTh2lY9FwHPGWOHmYFCZvbrFCBZL4FzSSsxsRPuhrYUg/49/0KDfW8tnIEaEHtfmn6+NPN+1DqaNmA==",
"dev": true
},
"@humanwhocodes/config-array": {
@@ -3827,9 +3809,9 @@
}
},
"@remix-run/router": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.6.0.tgz",
- "integrity": "sha512-N13NRw3T2+6Xi9J//3CGLsK2OqC8NMme3d/YX+nh05K9YHWGcv8DycHJrqGScSP4T75o8IN6nqIMhVFU8ohg8w=="
+ "version": "1.6.2",
+ "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.6.2.tgz",
+ "integrity": "sha512-LzqpSrMK/3JBAVBI9u3NWtOhWNw5AMQfrUFYB0+bDHTSw17z++WJLsPsxAuK+oSddsxk4d7F/JcdDPM1M5YAhA=="
},
"@types/history": {
"version": "4.7.11",
@@ -3858,9 +3840,9 @@
"integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w=="
},
"@types/react": {
- "version": "18.2.0",
- "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.0.tgz",
- "integrity": "sha512-0FLj93y5USLHdnhIhABk83rm8XEGA7kH3cr+YUlvxoUGp1xNt/DINUMvqPxLyOQMzLmZe8i4RTHbvb8MC7NmrA==",
+ "version": "18.2.6",
+ "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.6.tgz",
+ "integrity": "sha512-wRZClXn//zxCFW+ye/D2qY65UsYP1Fpex2YXorHc8awoNamkMZSvBxwxdYVInsHOZZd2Ppq8isnSzJL5Mpf8OA==",
"requires": {
"@types/prop-types": "*",
"@types/scheduler": "*",
@@ -3868,9 +3850,9 @@
}
},
"@types/react-dom": {
- "version": "18.2.1",
- "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.1.tgz",
- "integrity": "sha512-8QZEV9+Kwy7tXFmjJrp3XUKQSs9LTnE0KnoUb0YCguWBiNW0Yfb2iBMYZ08WPg35IR6P3Z0s00B15SwZnO26+w==",
+ "version": "18.2.4",
+ "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.4.tgz",
+ "integrity": "sha512-G2mHoTMTL4yoydITgOGwWdWMVd8sNgyEP85xVmMKAPUBwQWm9wBPQUmvbeF4V3WBY1P7mmL4BkjQ0SqUpf1snw==",
"devOptional": true,
"requires": {
"@types/react": "*"
@@ -3903,9 +3885,9 @@
"integrity": "sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ=="
},
"@types/semver": {
- "version": "7.3.13",
- "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz",
- "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==",
+ "version": "7.5.0",
+ "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.0.tgz",
+ "integrity": "sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==",
"dev": true
},
"@types/use-sync-external-store": {
@@ -3914,15 +3896,15 @@
"integrity": "sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA=="
},
"@typescript-eslint/eslint-plugin": {
- "version": "5.59.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.1.tgz",
- "integrity": "sha512-AVi0uazY5quFB9hlp2Xv+ogpfpk77xzsgsIEWyVS7uK/c7MZ5tw7ZPbapa0SbfkqE0fsAMkz5UwtgMLVk2BQAg==",
+ "version": "5.59.6",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.6.tgz",
+ "integrity": "sha512-sXtOgJNEuRU5RLwPUb1jxtToZbgvq3M6FPpY4QENxoOggK+UpTxUBpj6tD8+Qh2g46Pi9We87E+eHnUw8YcGsw==",
"dev": true,
"requires": {
"@eslint-community/regexpp": "^4.4.0",
- "@typescript-eslint/scope-manager": "5.59.1",
- "@typescript-eslint/type-utils": "5.59.1",
- "@typescript-eslint/utils": "5.59.1",
+ "@typescript-eslint/scope-manager": "5.59.6",
+ "@typescript-eslint/type-utils": "5.59.6",
+ "@typescript-eslint/utils": "5.59.6",
"debug": "^4.3.4",
"grapheme-splitter": "^1.0.4",
"ignore": "^5.2.0",
@@ -3932,53 +3914,53 @@
}
},
"@typescript-eslint/parser": {
- "version": "5.59.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.59.1.tgz",
- "integrity": "sha512-nzjFAN8WEu6yPRDizIFyzAfgK7nybPodMNFGNH0M9tei2gYnYszRDqVA0xlnRjkl7Hkx2vYrEdb6fP2a21cG1g==",
+ "version": "5.59.6",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.59.6.tgz",
+ "integrity": "sha512-7pCa6al03Pv1yf/dUg/s1pXz/yGMUBAw5EeWqNTFiSueKvRNonze3hma3lhdsOrQcaOXhbk5gKu2Fludiho9VA==",
"dev": true,
"requires": {
- "@typescript-eslint/scope-manager": "5.59.1",
- "@typescript-eslint/types": "5.59.1",
- "@typescript-eslint/typescript-estree": "5.59.1",
+ "@typescript-eslint/scope-manager": "5.59.6",
+ "@typescript-eslint/types": "5.59.6",
+ "@typescript-eslint/typescript-estree": "5.59.6",
"debug": "^4.3.4"
}
},
"@typescript-eslint/scope-manager": {
- "version": "5.59.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.1.tgz",
- "integrity": "sha512-mau0waO5frJctPuAzcxiNWqJR5Z8V0190FTSqRw1Q4Euop6+zTwHAf8YIXNwDOT29tyUDrQ65jSg9aTU/H0omA==",
+ "version": "5.59.6",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.6.tgz",
+ "integrity": "sha512-gLbY3Le9Dxcb8KdpF0+SJr6EQ+hFGYFl6tVY8VxLPFDfUZC7BHFw+Vq7bM5lE9DwWPfx4vMWWTLGXgpc0mAYyQ==",
"dev": true,
"requires": {
- "@typescript-eslint/types": "5.59.1",
- "@typescript-eslint/visitor-keys": "5.59.1"
+ "@typescript-eslint/types": "5.59.6",
+ "@typescript-eslint/visitor-keys": "5.59.6"
}
},
"@typescript-eslint/type-utils": {
- "version": "5.59.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.59.1.tgz",
- "integrity": "sha512-ZMWQ+Oh82jWqWzvM3xU+9y5U7MEMVv6GLioM3R5NJk6uvP47kZ7YvlgSHJ7ERD6bOY7Q4uxWm25c76HKEwIjZw==",
+ "version": "5.59.6",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.59.6.tgz",
+ "integrity": "sha512-A4tms2Mp5yNvLDlySF+kAThV9VTBPCvGf0Rp8nl/eoDX9Okun8byTKoj3fJ52IJitjWOk0fKPNQhXEB++eNozQ==",
"dev": true,
"requires": {
- "@typescript-eslint/typescript-estree": "5.59.1",
- "@typescript-eslint/utils": "5.59.1",
+ "@typescript-eslint/typescript-estree": "5.59.6",
+ "@typescript-eslint/utils": "5.59.6",
"debug": "^4.3.4",
"tsutils": "^3.21.0"
}
},
"@typescript-eslint/types": {
- "version": "5.59.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.1.tgz",
- "integrity": "sha512-dg0ICB+RZwHlysIy/Dh1SP+gnXNzwd/KS0JprD3Lmgmdq+dJAJnUPe1gNG34p0U19HvRlGX733d/KqscrGC1Pg==",
+ "version": "5.59.6",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.6.tgz",
+ "integrity": "sha512-tH5lBXZI7T2MOUgOWFdVNUILsI02shyQvfzG9EJkoONWugCG77NDDa1EeDGw7oJ5IvsTAAGVV8I3Tk2PNu9QfA==",
"dev": true
},
"@typescript-eslint/typescript-estree": {
- "version": "5.59.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.1.tgz",
- "integrity": "sha512-lYLBBOCsFltFy7XVqzX0Ju+Lh3WPIAWxYpmH/Q7ZoqzbscLiCW00LeYCdsUnnfnj29/s1WovXKh2gwCoinHNGA==",
+ "version": "5.59.6",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.6.tgz",
+ "integrity": "sha512-vW6JP3lMAs/Tq4KjdI/RiHaaJSO7IUsbkz17it/Rl9Q+WkQ77EOuOnlbaU8kKfVIOJxMhnRiBG+olE7f3M16DA==",
"dev": true,
"requires": {
- "@typescript-eslint/types": "5.59.1",
- "@typescript-eslint/visitor-keys": "5.59.1",
+ "@typescript-eslint/types": "5.59.6",
+ "@typescript-eslint/visitor-keys": "5.59.6",
"debug": "^4.3.4",
"globby": "^11.1.0",
"is-glob": "^4.0.3",
@@ -3987,28 +3969,28 @@
}
},
"@typescript-eslint/utils": {
- "version": "5.59.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.59.1.tgz",
- "integrity": "sha512-MkTe7FE+K1/GxZkP5gRj3rCztg45bEhsd8HYjczBuYm+qFHP5vtZmjx3B0yUCDotceQ4sHgTyz60Ycl225njmA==",
+ "version": "5.59.6",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.59.6.tgz",
+ "integrity": "sha512-vzaaD6EXbTS29cVH0JjXBdzMt6VBlv+hE31XktDRMX1j3462wZCJa7VzO2AxXEXcIl8GQqZPcOPuW/Z1tZVogg==",
"dev": true,
"requires": {
"@eslint-community/eslint-utils": "^4.2.0",
"@types/json-schema": "^7.0.9",
"@types/semver": "^7.3.12",
- "@typescript-eslint/scope-manager": "5.59.1",
- "@typescript-eslint/types": "5.59.1",
- "@typescript-eslint/typescript-estree": "5.59.1",
+ "@typescript-eslint/scope-manager": "5.59.6",
+ "@typescript-eslint/types": "5.59.6",
+ "@typescript-eslint/typescript-estree": "5.59.6",
"eslint-scope": "^5.1.1",
"semver": "^7.3.7"
}
},
"@typescript-eslint/visitor-keys": {
- "version": "5.59.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.1.tgz",
- "integrity": "sha512-6waEYwBTCWryx0VJmP7JaM4FpipLsFl9CvYf2foAE8Qh/Y0s+bxWysciwOs0LTBED4JCaNxTZ5rGadB14M6dwA==",
+ "version": "5.59.6",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.6.tgz",
+ "integrity": "sha512-zEfbFLzB9ETcEJ4HZEEsCR9HHeNku5/Qw1jSS5McYJv5BR+ftYXwFFAH5Al+xkGaZEqowMwl7uoJjQb1YSPF8Q==",
"dev": true,
"requires": {
- "@typescript-eslint/types": "5.59.1",
+ "@typescript-eslint/types": "5.59.6",
"eslint-visitor-keys": "^3.3.0"
}
},
@@ -4261,15 +4243,15 @@
"dev": true
},
"eslint": {
- "version": "8.39.0",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.39.0.tgz",
- "integrity": "sha512-mwiok6cy7KTW7rBpo05k6+p4YVZByLNjAZ/ACB9DRCu4YDRwjXI01tWHp6KAUWelsBetTxKK/2sHB0vdS8Z2Og==",
+ "version": "8.41.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.41.0.tgz",
+ "integrity": "sha512-WQDQpzGBOP5IrXPo4Hc0814r4/v2rrIsB0rhT7jtunIalgg6gYXWhRMOejVO8yH21T/FGaxjmFjBMNqcIlmH1Q==",
"dev": true,
"requires": {
"@eslint-community/eslint-utils": "^4.2.0",
"@eslint-community/regexpp": "^4.4.0",
- "@eslint/eslintrc": "^2.0.2",
- "@eslint/js": "8.39.0",
+ "@eslint/eslintrc": "^2.0.3",
+ "@eslint/js": "8.41.0",
"@humanwhocodes/config-array": "^0.11.8",
"@humanwhocodes/module-importer": "^1.0.1",
"@nodelib/fs.walk": "^1.2.8",
@@ -4280,8 +4262,8 @@
"doctrine": "^3.0.0",
"escape-string-regexp": "^4.0.0",
"eslint-scope": "^7.2.0",
- "eslint-visitor-keys": "^3.4.0",
- "espree": "^9.5.1",
+ "eslint-visitor-keys": "^3.4.1",
+ "espree": "^9.5.2",
"esquery": "^1.4.2",
"esutils": "^2.0.2",
"fast-deep-equal": "^3.1.3",
@@ -4289,13 +4271,12 @@
"find-up": "^5.0.0",
"glob-parent": "^6.0.2",
"globals": "^13.19.0",
- "grapheme-splitter": "^1.0.4",
+ "graphemer": "^1.4.0",
"ignore": "^5.2.0",
"import-fresh": "^3.0.0",
"imurmurhash": "^0.1.4",
"is-glob": "^4.0.0",
"is-path-inside": "^3.0.3",
- "js-sdsl": "^4.1.4",
"js-yaml": "^4.1.0",
"json-stable-stringify-without-jsonify": "^1.0.1",
"levn": "^0.4.1",
@@ -4398,9 +4379,9 @@
"requires": {}
},
"eslint-plugin-react-refresh": {
- "version": "0.3.5",
- "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.3.5.tgz",
- "integrity": "sha512-61qNIsc7fo9Pp/mju0J83kzvLm0Bsayu7OQSLEoJxLDCBjIIyb87bkzufoOvdDxLkSlMfkF7UxomC4+eztUBSA==",
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.1.tgz",
+ "integrity": "sha512-QgrvtRJkmV+m4w953LS146+6RwEe5waouubFVNLBfOjXJf6MLczjymO8fOcKj9jMS8aKkTCMJqiPu2WEeFI99A==",
"dev": true,
"requires": {}
},
@@ -4415,20 +4396,20 @@
}
},
"eslint-visitor-keys": {
- "version": "3.4.0",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.0.tgz",
- "integrity": "sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ==",
+ "version": "3.4.1",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz",
+ "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==",
"dev": true
},
"espree": {
- "version": "9.5.1",
- "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.1.tgz",
- "integrity": "sha512-5yxtHSZXRSW5pvv3hAlXM5+/Oswi1AUFqBmbibKb5s6bp3rGIDkyXU6xCoyuuLhijr4SFwPrXRoZjz0AZDN9tg==",
+ "version": "9.5.2",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.2.tgz",
+ "integrity": "sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==",
"dev": true,
"requires": {
"acorn": "^8.8.0",
"acorn-jsx": "^5.3.2",
- "eslint-visitor-keys": "^3.4.0"
+ "eslint-visitor-keys": "^3.4.1"
}
},
"esquery": {
@@ -4640,6 +4621,12 @@
"integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==",
"dev": true
},
+ "graphemer": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz",
+ "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==",
+ "dev": true
+ },
"has-flag": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
@@ -4670,9 +4657,9 @@
}
},
"i18next": {
- "version": "22.4.15",
- "resolved": "https://registry.npmjs.org/i18next/-/i18next-22.4.15.tgz",
- "integrity": "sha512-yYudtbFrrmWKLEhl6jvKUYyYunj4bTBCe2qIUYAxbXoPusY7YmdwPvOE6fx6UIfWvmlbCWDItr7wIs8KEBZ5Zg==",
+ "version": "22.5.0",
+ "resolved": "https://registry.npmjs.org/i18next/-/i18next-22.5.0.tgz",
+ "integrity": "sha512-sqWuJFj+wJAKQP2qBQ+b7STzxZNUmnSxrehBCCj9vDOW9RDYPfqCaK1Hbh2frNYQuPziz6O2CGoJPwtzY3vAYA==",
"requires": {
"@babel/runtime": "^7.20.6"
}
@@ -4753,12 +4740,6 @@
"integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
"dev": true
},
- "js-sdsl": {
- "version": "4.4.0",
- "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.4.0.tgz",
- "integrity": "sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg==",
- "dev": true
- },
"js-tokens": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
@@ -5033,9 +5014,9 @@
}
},
"react-i18next": {
- "version": "12.2.2",
- "resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-12.2.2.tgz",
- "integrity": "sha512-KBB6buBmVKXUWNxXHdnthp+38gPyBT46hJCAIQ8rX19NFL/m2ahte2KARfIDf2tMnSAL7wwck6eDOd/9zn6aFg==",
+ "version": "12.3.1",
+ "resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-12.3.1.tgz",
+ "integrity": "sha512-5v8E2XjZDFzK7K87eSwC7AJcAkcLt5xYZ4+yTPDAW1i7C93oOY1dnr4BaQM7un4Hm+GmghuiPvevWwlca5PwDA==",
"requires": {
"@babel/runtime": "^7.20.6",
"html-parse-stringify": "^3.0.1"
@@ -5066,20 +5047,20 @@
"dev": true
},
"react-router": {
- "version": "6.11.0",
- "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.11.0.tgz",
- "integrity": "sha512-hTm6KKNpj9SDG4syIWRjCU219O0RZY8RUPobCFt9p+PlF7nnkRgMoh2DieTKvw3F3Mw6zg565HGnSv8BuoY5oQ==",
+ "version": "6.11.2",
+ "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.11.2.tgz",
+ "integrity": "sha512-74z9xUSaSX07t3LM+pS6Un0T55ibUE/79CzfZpy5wsPDZaea1F8QkrsiyRnA2YQ7LwE/umaydzXZV80iDCPkMg==",
"requires": {
- "@remix-run/router": "1.6.0"
+ "@remix-run/router": "1.6.2"
}
},
"react-router-dom": {
- "version": "6.11.0",
- "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.11.0.tgz",
- "integrity": "sha512-Q3mK1c/CYoF++J6ZINz7EZzwlgSOZK/kc7lxIA7PhtWhKju4KfF1WHqlx0kVCIFJAWztuYVpXZeljEbds8z4Og==",
+ "version": "6.11.2",
+ "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.11.2.tgz",
+ "integrity": "sha512-JNbKtAeh1VSJQnH6RvBDNhxNwemRj7KxCzc5jb7zvDSKRnPWIFj9pO+eXqjM69gQJ0r46hSz1x4l9y0651DKWw==",
"requires": {
- "@remix-run/router": "1.6.0",
- "react-router": "6.11.0"
+ "@remix-run/router": "1.6.2",
+ "react-router": "6.11.2"
}
},
"redux": {
@@ -5313,9 +5294,9 @@
"requires": {}
},
"vite": {
- "version": "4.3.3",
- "resolved": "https://registry.npmjs.org/vite/-/vite-4.3.3.tgz",
- "integrity": "sha512-MwFlLBO4udZXd+VBcezo3u8mC77YQk+ik+fbc0GZWGgzfbPP+8Kf0fldhARqvSYmtIWoAJ5BXPClUbMTlqFxrA==",
+ "version": "4.3.8",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-4.3.8.tgz",
+ "integrity": "sha512-uYB8PwN7hbMrf4j1xzGDk/lqjsZvCDbt/JC5dyfxc19Pg8kRm14LinK/uq+HSLNswZEoKmweGdtpbnxRtrAXiQ==",
"dev": true,
"requires": {
"esbuild": "^0.17.5",
@@ -5324,15 +5305,6 @@
"rollup": "^3.21.0"
}
},
- "vite-plugin-copy": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/vite-plugin-copy/-/vite-plugin-copy-0.1.6.tgz",
- "integrity": "sha512-bqIaefZOE2Jx8P5wJuHKL5GzCERa/pcwdUQWaocyTNXgalN2xkxXH7LmqRJ34V2OlKF2F9E/zj0zITS7U6PpUg==",
- "dev": true,
- "requires": {
- "fast-glob": "^3.2.7"
- }
- },
"void-elements": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz",
diff --git a/package.json b/package.json
index ce4b445..90ff736 100644
--- a/package.json
+++ b/package.json
@@ -11,26 +11,25 @@
},
"dependencies": {
"@reduxjs/toolkit": "^1.9.5",
- "i18next": "^22.4.15",
+ "i18next": "^22.5.0",
"react": "^18.2.0",
"react-circular-progressbar": "^2.1.0",
"react-dom": "^18.2.0",
- "react-i18next": "^12.2.2",
+ "react-i18next": "^12.3.1",
"react-redux": "^8.0.5",
- "react-router-dom": "^6.11.0"
+ "react-router-dom": "^6.11.2"
},
"devDependencies": {
- "@types/react": "^18.0.28",
- "@types/react-dom": "^18.0.11",
+ "@types/react": "^18.2.6",
+ "@types/react-dom": "^18.2.4",
"@types/react-router-dom": "^5.3.3",
- "@typescript-eslint/eslint-plugin": "^5.57.1",
- "@typescript-eslint/parser": "^5.57.1",
+ "@typescript-eslint/eslint-plugin": "^5.59.6",
+ "@typescript-eslint/parser": "^5.59.6",
"@vitejs/plugin-react": "^4.0.0",
- "eslint": "^8.38.0",
+ "eslint": "^8.41.0",
"eslint-plugin-react-hooks": "^4.6.0",
- "eslint-plugin-react-refresh": "^0.3.4",
- "typescript": "^5.0.2",
- "vite": "^4.3.2",
- "vite-plugin-copy": "^0.1.6"
+ "eslint-plugin-react-refresh": "^0.4.1",
+ "typescript": "^5.0.4",
+ "vite": "^4.3.8"
}
}
diff --git a/src/assets/android-chrome-192x192.png b/public/android-chrome-192x192.png
similarity index 100%
rename from src/assets/android-chrome-192x192.png
rename to public/android-chrome-192x192.png
diff --git a/src/assets/android-chrome-512x512.png b/public/android-chrome-512x512.png
similarity index 100%
rename from src/assets/android-chrome-512x512.png
rename to public/android-chrome-512x512.png
diff --git a/src/assets/apple-touch-icon.png b/public/apple-touch-icon.png
similarity index 100%
rename from src/assets/apple-touch-icon.png
rename to public/apple-touch-icon.png
diff --git a/src/assets/browserconfig.xml b/public/browserconfig.xml
similarity index 100%
rename from src/assets/browserconfig.xml
rename to public/browserconfig.xml
diff --git a/src/assets/favicon-16x16.png b/public/favicon-16x16.png
similarity index 100%
rename from src/assets/favicon-16x16.png
rename to public/favicon-16x16.png
diff --git a/src/assets/favicon-32x32.png b/public/favicon-32x32.png
similarity index 100%
rename from src/assets/favicon-32x32.png
rename to public/favicon-32x32.png
diff --git a/src/assets/favicon.ico b/public/favicon.ico
similarity index 100%
rename from src/assets/favicon.ico
rename to public/favicon.ico
diff --git a/src/assets/mstile-150x150.png b/public/mstile-150x150.png
similarity index 100%
rename from src/assets/mstile-150x150.png
rename to public/mstile-150x150.png
diff --git a/src/assets/site.webmanifest b/public/site.webmanifest
similarity index 72%
rename from src/assets/site.webmanifest
rename to public/site.webmanifest
index df879ab..b20abb7 100644
--- a/src/assets/site.webmanifest
+++ b/public/site.webmanifest
@@ -3,12 +3,12 @@
"short_name": "",
"icons": [
{
- "src": "/src/assets/android-chrome-192x192.png",
+ "src": "/android-chrome-192x192.png",
"sizes": "192x192",
"type": "image/png"
},
{
- "src": "/src/assets/android-chrome-512x512.png",
+ "src": "/android-chrome-512x512.png",
"sizes": "512x512",
"type": "image/png"
}
diff --git a/public/vite.svg b/public/vite.svg
deleted file mode 100644
index e7b8dfb..0000000
--- a/public/vite.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/api/ApiContext.ts b/src/api/ApiContext.ts
index 6761fbb..cdbce30 100644
--- a/src/api/ApiContext.ts
+++ b/src/api/ApiContext.ts
@@ -3,6 +3,7 @@ import { createMethod } from './utils'
import {
User,
Auras,
+ Element,
Elements,
AuthTokens,
Assets,
@@ -14,6 +15,7 @@ import {
export interface ApiContextValue {
auth: ReturnType>
+ getElement: ReturnType>
getElements: ReturnType>
getUser: ReturnType>
updateUser: ReturnType>
diff --git a/src/api/api.ts b/src/api/api.ts
index 0567009..8060bfa 100644
--- a/src/api/api.ts
+++ b/src/api/api.ts
@@ -3,6 +3,7 @@ import { createMethod } from './utils'
import {
User,
Auras,
+ Element,
Elements,
AuthTokens,
Assets,
@@ -14,6 +15,7 @@ import {
const api = {
auth: createMethod(AuthTokens.createRequest),
+ getElement: createMethod(Element.createRequest),
getElements: createMethod(Elements.createRequest),
getUser: createMethod(User.createGetRequest),
updateUser: createMethod(User.createPatchRequest),
diff --git a/src/api/resources/Element.ts b/src/api/resources/Element.ts
new file mode 100644
index 0000000..ad58ce2
--- /dev/null
+++ b/src/api/resources/Element.ts
@@ -0,0 +1,31 @@
+import routes from '../../routes'
+import { getBaseHeaders } from '../utils'
+
+export interface Payload {
+ locale: string
+ type: string
+}
+
+export interface Response {
+ data: {
+ variant: string
+ element: Element
+ }
+}
+
+export interface Element {
+ type: string
+ href: string
+ title: string
+ url_slug: string
+ body: string
+}
+
+export const createRequest = ({ locale, type }: Payload): Request => {
+ const url = new URL(routes.server.element(type))
+ const query = new URLSearchParams({ locale })
+
+ url.search = query.toString()
+
+ return new Request(url, { method: 'GET', headers: getBaseHeaders() })
+}
diff --git a/src/api/resources/index.ts b/src/api/resources/index.ts
index e1b77d6..9842901 100644
--- a/src/api/resources/index.ts
+++ b/src/api/resources/index.ts
@@ -3,6 +3,7 @@ export * as AssetCategories from './AssetCategories'
export * as User from './User'
export * as DailyForecasts from './UserDailyForecasts'
export * as Auras from './Auras'
+export * as Element from './Element'
export * as Elements from './Elements'
export * as AuthTokens from './AuthTokens'
export * as SubscriptionItems from './UserSubscriptionItemPrices'
diff --git a/src/components/App/index.tsx b/src/components/App/index.tsx
index 01e63ac..0979ffb 100644
--- a/src/components/App/index.tsx
+++ b/src/components/App/index.tsx
@@ -8,6 +8,7 @@ import EmailEnterPage from '../EmailEnterPage'
import SubscriptionPage from '../SubscriptionPage'
import PaymentPage from '../PaymentPage'
import WallpaperPage from '../WallpaperPage'
+import StaticPage from '../StaticPage'
import NotFoundPage from '../NotFoundPage'
import Header from '../Header'
import Navbar from '../Navbar'
@@ -26,6 +27,7 @@ function App(): JSX.Element {
} />
} />
} />
+ } />
}>
} />
} />
diff --git a/src/components/Navbar/index.tsx b/src/components/Navbar/index.tsx
index 12152cf..cb7209b 100644
--- a/src/components/Navbar/index.tsx
+++ b/src/components/Navbar/index.tsx
@@ -1,4 +1,7 @@
+import { Link } from 'react-router-dom'
import { useAuth } from '../../auth'
+import { useLegal } from '../../legal'
+import routes from '../../routes'
import './styles.css'
type NavbarProps = {
@@ -6,8 +9,11 @@ type NavbarProps = {
closeMenu: () => void
}
+const capitalize = (str: string) => str.charAt(0).toUpperCase() + str.slice(1)
+
function Navbar({ isOpen, closeMenu }: NavbarProps): JSX.Element {
const { logout } = useAuth()
+ const legal = useLegal()
const combinedClassNames = ['navbar', isOpen && 'navbar--open'].filter(Boolean).join(' ')
return (
diff --git a/src/components/StaticPage/index.tsx b/src/components/StaticPage/index.tsx
new file mode 100644
index 0000000..1d7b1f3
--- /dev/null
+++ b/src/components/StaticPage/index.tsx
@@ -0,0 +1,29 @@
+import { useParams } from 'react-router'
+import { useTranslation } from 'react-i18next'
+import { useApi, useApiCall, Element } from '../../api'
+import { useCallback } from 'react'
+import Loader from '../Loader'
+import NotFoundPage from '../NotFoundPage'
+import './styles.css'
+
+function StaticPage(): JSX.Element {
+ const { i18n } = useTranslation()
+ const { typeId } = useParams()
+ const api = useApi()
+ const locale = i18n.language
+ const loadData = useCallback(() => {
+ const type = typeId || ''
+ return api.getElement({ type, locale })
+ .then((resp: Element.Response) => resp.data.element)
+ }, [api, typeId, locale])
+ const { data, isPending, error } = useApiCall(loadData)
+
+ return (
+
+ {isPending ? : }
+ {error && }
+
+ )
+}
+
+export default StaticPage
diff --git a/src/components/StaticPage/styles.css b/src/components/StaticPage/styles.css
new file mode 100644
index 0000000..b701199
--- /dev/null
+++ b/src/components/StaticPage/styles.css
@@ -0,0 +1,14 @@
+.page-static {
+ line-height: 1.3;
+}
+
+.page-static p {
+ margin-bottom: 5px;
+}
+
+.page-static h1,
+.page-static h2,
+.page-static h3 {
+ margin-top: 10px;
+ margin-bottom: 10px;
+}
diff --git a/src/init.tsx b/src/init.tsx
index fd86e0e..94830e4 100644
--- a/src/init.tsx
+++ b/src/init.tsx
@@ -6,13 +6,16 @@ import { Provider } from 'react-redux'
import { store } from './store'
import { AuthProvider } from './auth'
import { ApiContext, createApi } from './api'
+import { LegalContext, buildLegal } from './legal'
import { getClientLocale, buildResources, fallbackLng } from './locales'
import App from './components/App'
const init = async () => {
const api = createApi()
const lng = getClientLocale()
- const resources = await api.getElements({ locale: lng }).then(buildResources)
+ const response = await api.getElements({ locale: lng })
+ const resources = buildResources(response)
+ const legal = buildLegal(response)
const i18nextInstance = i18next.createInstance()
const options = { lng, resources, fallbackLng }
await i18nextInstance.use(initReactI18next).init(options)
@@ -23,7 +26,9 @@ const init = async () => {
-
+
+
+
diff --git a/src/legal/LegalContext.ts b/src/legal/LegalContext.ts
new file mode 100644
index 0000000..140c42b
--- /dev/null
+++ b/src/legal/LegalContext.ts
@@ -0,0 +1,6 @@
+import { Elements } from '../api'
+import { createContext } from 'react'
+
+export type LegalContextValue = Elements.ElementGroupItem
+
+export const LegalContext = createContext([])
diff --git a/src/legal/index.ts b/src/legal/index.ts
new file mode 100644
index 0000000..b261636
--- /dev/null
+++ b/src/legal/index.ts
@@ -0,0 +1,3 @@
+export * from './LegalContext'
+export * from './useLegal'
+export * from './utils'
diff --git a/src/legal/useLegal.ts b/src/legal/useLegal.ts
new file mode 100644
index 0000000..6201e49
--- /dev/null
+++ b/src/legal/useLegal.ts
@@ -0,0 +1,4 @@
+import { useContext } from 'react'
+import { LegalContext } from './LegalContext'
+
+export const useLegal = () => useContext(LegalContext)
diff --git a/src/legal/utils.ts b/src/legal/utils.ts
new file mode 100644
index 0000000..8e663d3
--- /dev/null
+++ b/src/legal/utils.ts
@@ -0,0 +1,7 @@
+import { Elements } from '../api'
+
+const isMain = (element: Elements.ElementGroup) => element.name === 'main'
+export const buildLegal = (resp: Elements.Response): Elements.ElementGroupItem[] => {
+ const element = resp.data.groups.find(isMain)
+ return element?.items || []
+}
diff --git a/src/routes.ts b/src/routes.ts
index f8c7b47..904f702 100644
--- a/src/routes.ts
+++ b/src/routes.ts
@@ -12,11 +12,14 @@ const routes = {
createProfile: () => [host, 'profile', 'create'].join('/'),
paymentMethod: () => [host, 'payment', 'method'].join('/'),
wallpaper: () => [host, 'wallpaper'].join('/'),
+ static: () => [host, 'static', ':typeId'].join('/'),
+ legal: (type: string) => [host, 'static', type].join('/'),
},
server: {
- elements: () => [apiHost, prefix, 'elements.json'].join('/'),
user: () => [apiHost, prefix, 'user.json'].join('/'),
token: () => [apiHost, prefix, 'auth', 'token.json'].join('/'),
+ elements: () => [apiHost, prefix, 'elements.json'].join('/'),
+ element: (type: string) => [apiHost, prefix, 'elements', `${type}.json`].join('/'),
assets: (category: string) => [apiHost, prefix, 'assets', 'categories', `${category}.json`].join('/'),
assetCategories: () => [apiHost, prefix, 'assets', 'categories.json'].join('/'),
dailyForecasts: () => [apiHost, prefix, 'user', 'daily_forecast.json'].join('/'),
diff --git a/vite.config.ts b/vite.config.ts
index 20b8e9f..5a33944 100644
--- a/vite.config.ts
+++ b/vite.config.ts
@@ -1,21 +1,7 @@
import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'
-import { copy } from 'vite-plugin-copy'
// https://vitejs.dev/config/
export default defineConfig({
- build: {
- manifest: false,
- },
- plugins: [
- react(),
- copy([
- { src: 'src/assets/favicon.ico', dest: 'dist' },
- { src: 'src/assets/browserconfig.xml', dest: 'dist' },
- { src: 'src/assets/mstile-150x150.png', dest: 'dist' },
- { src: 'src/assets/android-chrome-192x192.png', dest: 'dist/assets' },
- { src: 'src/assets/android-chrome-512x512.png', dest: 'dist/assets' },
- { src: 'src/assets/android-chrome-512x512.png', dest: 'dist/assets' },
- ], { hook: 'writeBundle' }),
- ],
+ plugins: [react()],
})