From 46f9721650df11680f0b1d745b1a9562404b80cc Mon Sep 17 00:00:00 2001 From: Wissarut Kanasub Date: Mon, 6 Nov 2023 18:54:45 +0700 Subject: [PATCH 1/8] Start Eisenhower matrix --- .../the_eisenhower_matrix/Eisenhower.jsx | 50 +++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 frontend/src/components/the_eisenhower_matrix/Eisenhower.jsx diff --git a/frontend/src/components/the_eisenhower_matrix/Eisenhower.jsx b/frontend/src/components/the_eisenhower_matrix/Eisenhower.jsx new file mode 100644 index 0000000..890aae0 --- /dev/null +++ b/frontend/src/components/the_eisenhower_matrix/Eisenhower.jsx @@ -0,0 +1,50 @@ +import React from 'react'; + +// Styles for row headers +const rowHeaderStyle = "bg-pink-300 text-pink-700 p-4 rounded-lg font-semibold text-lg shadow-md"; + +// Styles for column headers +const columnHeaderStyle = "bg-blue-300 text-blue-700 p-4 rounded-lg font-semibold text-lg shadow-md"; + +// Styles for content cells in green +const greenContextStyle = "bg-green-300 text-green-700 p-4 rounded-lg text-lg shadow-md"; + +// Styles for content cells in yellow +const yellowContextStyle = "bg-yellow-300 text-yellow-700 p-4 rounded-lg text-lg shadow-md"; + +function Eisenhower() { + return ( +
+
+ Eisenhower Matrix +
+ {/* Row Headers */} +
Important
+
Not Important
+ + {/* Column Headers */} +
Urgent
+ + {/* Content Cells */} +
+ Urgent & Important +
+
+ Urgent & Not Important +
+ + {/* Column Headers */} +
Not Urgent
+ + {/* Content Cells */} +
+ Not Urgent & Important +
+
+ Not Urgent & Not Important +
+
+ ); +} + +export default Eisenhower; From 8dd7a5231d035540efbe69aa193a19e977fef594 Mon Sep 17 00:00:00 2001 From: Wissarut Kanasub Date: Sat, 11 Nov 2023 13:10:35 +0700 Subject: [PATCH 2/8] Redo eisenhower matrix for better look --- .../the_eisenhower_matrix/Eisenhower.jsx | 58 ++++++------------- 1 file changed, 19 insertions(+), 39 deletions(-) diff --git a/frontend/src/components/the_eisenhower_matrix/Eisenhower.jsx b/frontend/src/components/the_eisenhower_matrix/Eisenhower.jsx index 890aae0..ba1a1e3 100644 --- a/frontend/src/components/the_eisenhower_matrix/Eisenhower.jsx +++ b/frontend/src/components/the_eisenhower_matrix/Eisenhower.jsx @@ -1,47 +1,27 @@ import React from 'react'; -// Styles for row headers -const rowHeaderStyle = "bg-pink-300 text-pink-700 p-4 rounded-lg font-semibold text-lg shadow-md"; - -// Styles for column headers -const columnHeaderStyle = "bg-blue-300 text-blue-700 p-4 rounded-lg font-semibold text-lg shadow-md"; - -// Styles for content cells in green -const greenContextStyle = "bg-green-300 text-green-700 p-4 rounded-lg text-lg shadow-md"; - -// Styles for content cells in yellow -const yellowContextStyle = "bg-yellow-300 text-yellow-700 p-4 rounded-lg text-lg shadow-md"; +function EachBlog({ name, colorCode }) { + return ( +
+
+ {name} +
+
+ content +
+
+ ); +} function Eisenhower() { return ( -
-
- Eisenhower Matrix -
- {/* Row Headers */} -
Important
-
Not Important
- - {/* Column Headers */} -
Urgent
- - {/* Content Cells */} -
- Urgent & Important -
-
- Urgent & Not Important -
- - {/* Column Headers */} -
Not Urgent
- - {/* Content Cells */} -
- Not Urgent & Important -
-
- Not Urgent & Not Important +
+

The Eisenhower Matrix

+
+ + + +
); From 844d7afa29613588327039d08bf91e008c48c347 Mon Sep 17 00:00:00 2001 From: Wissarut Kanasub Date: Sat, 11 Nov 2023 13:29:19 +0700 Subject: [PATCH 3/8] Improve size --- .../the_eisenhower_matrix/Eisenhower.jsx | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/frontend/src/components/the_eisenhower_matrix/Eisenhower.jsx b/frontend/src/components/the_eisenhower_matrix/Eisenhower.jsx index ba1a1e3..7800fa9 100644 --- a/frontend/src/components/the_eisenhower_matrix/Eisenhower.jsx +++ b/frontend/src/components/the_eisenhower_matrix/Eisenhower.jsx @@ -2,12 +2,12 @@ import React from 'react'; function EachBlog({ name, colorCode }) { return ( -
-
+
+
{name}
-
- content +
+ Content goes here
); @@ -15,9 +15,9 @@ function EachBlog({ name, colorCode }) { function Eisenhower() { return ( -
-

The Eisenhower Matrix

-
+
+

The Eisenhower Matrix

+
From 056e08e0120bc1029ee0b3af6678154835790a33 Mon Sep 17 00:00:00 2001 From: sosokker Date: Sat, 11 Nov 2023 22:03:48 +0700 Subject: [PATCH 4/8] Add Route for EisenhowerMatrix/priority --- frontend/src/App.jsx | 4 +++- .../Eisenhower.jsx | 0 frontend/src/components/IconSideNav.jsx | 4 ++-- 3 files changed, 5 insertions(+), 3 deletions(-) rename frontend/src/components/{the_eisenhower_matrix => EisenhowerMatrix}/Eisenhower.jsx (100%) diff --git a/frontend/src/App.jsx b/frontend/src/App.jsx index e3b7829..071fced 100644 --- a/frontend/src/App.jsx +++ b/frontend/src/App.jsx @@ -9,7 +9,8 @@ import Home from './components/Home'; import ProfileUpdate from './components/ProfileUpdatePage'; import Calendar from './components/calendar/calendar'; import KanbanBoard from './components/kanbanBoard/kanbanBoard'; -import IconSideNav from './components/IconSideNav'; // Import IconSideNav +import IconSideNav from './components/IconSideNav'; +import Eisenhower from './components/EisenhowerMatrix/Eisenhower'; const App = () => { return ( @@ -27,6 +28,7 @@ const App = () => { } /> } /> } /> + } />
diff --git a/frontend/src/components/the_eisenhower_matrix/Eisenhower.jsx b/frontend/src/components/EisenhowerMatrix/Eisenhower.jsx similarity index 100% rename from frontend/src/components/the_eisenhower_matrix/Eisenhower.jsx rename to frontend/src/components/EisenhowerMatrix/Eisenhower.jsx diff --git a/frontend/src/components/IconSideNav.jsx b/frontend/src/components/IconSideNav.jsx index c87219c..f9a5eb5 100644 --- a/frontend/src/components/IconSideNav.jsx +++ b/frontend/src/components/IconSideNav.jsx @@ -11,8 +11,8 @@ const menuItems = [ { id: 0, path: "/", icon: , logo: homeLogo }, { id: 1, path: "/tasks", icon: , logo: planLogo }, { id: 2, path: "/calendar", icon: , logo: calendarLogo }, - { id: 3, path: "/pie", icon: , logo: pieLogo }, - { id: 4, path: "/plus", icon: , logo: plusLogo }, + { id: 3, path: "/analytic", icon: , logo: pieLogo }, + { id: 4, path: "/priority", icon: , logo: plusLogo }, ]; const IconSideNav = () => { From ff84f020e39b20002a3be23981eb5cd1e240ce83 Mon Sep 17 00:00:00 2001 From: sosokker Date: Sat, 11 Nov 2023 22:59:07 +0700 Subject: [PATCH 5/8] Extract Axios Config --- frontend/src/api/AuthenticationApi.jsx | 42 +----------------------- frontend/src/api/TaskApi.jsx | 12 +------ frontend/src/api/configs/AxiosConfig.jsx | 42 ++++++++++++++++++++++++ 3 files changed, 44 insertions(+), 52 deletions(-) create mode 100644 frontend/src/api/configs/AxiosConfig.jsx diff --git a/frontend/src/api/AuthenticationApi.jsx b/frontend/src/api/AuthenticationApi.jsx index 313d6f1..dc2de0c 100644 --- a/frontend/src/api/AuthenticationApi.jsx +++ b/frontend/src/api/AuthenticationApi.jsx @@ -1,45 +1,5 @@ import axios from 'axios'; - -// Create an Axios instance with common configurations -const axiosInstance = axios.create({ - baseURL: 'http://127.0.0.1:8000/api/', - timeout: 5000, - headers: { - 'Authorization': "Bearer " + localStorage.getItem('access_token'), - 'Content-Type': 'application/json', - 'accept': 'application/json', - } -}); - -// Add a response interceptor to handle token refresh on 401 Unauthorized errors -axiosInstance.interceptors.response.use( - response => response, - error => { - const originalRequest = error.config; - const refresh_token = localStorage.getItem('refresh_token'); - - // Check if the error is due to Unauthorized (401) and a refresh token is available - if (error.response.status === 401 && error.response.statusText === "Unauthorized" && refresh_token !== "undefined") { - return axiosInstance - .post('/token/refresh/', { refresh: refresh_token }) - .then((response) => { - // Update access and refresh tokens - localStorage.setItem('access_token', response.data.access); - localStorage.setItem('refresh_token', response.data.refresh); - - // Update the authorization header with the new access token - axiosInstance.defaults.headers['Authorization'] = "Bearer " + response.data.access; - originalRequest.headers['Authorization'] = "Bearer " + response.data.access; - - return axiosInstance(originalRequest); // Retry the original request - }) - .catch(err => { - console.log('Interceptors error: ', err); - }); - } - return Promise.reject(error); - } -); +import axiosInstance from './configs/AxiosConfig'; // Function for user login const apiUserLogin = (data) => { diff --git a/frontend/src/api/TaskApi.jsx b/frontend/src/api/TaskApi.jsx index e56662b..f4c3ef2 100644 --- a/frontend/src/api/TaskApi.jsx +++ b/frontend/src/api/TaskApi.jsx @@ -1,15 +1,5 @@ import axios from 'axios'; - -// Create an Axios instance with common configurations -const axiosInstance = axios.create({ - baseURL: 'http://127.0.0.1:8000/api/', - timeout: 5000, - headers: { - 'Authorization': "Bearer " + localStorage.getItem('access_token'), - 'Content-Type': 'application/json', - 'accept': 'application/json', - } -}); +import axiosInstance from './configs/AxiosConfig'; export const fetchTodoTasks = () => { return axiosInstance diff --git a/frontend/src/api/configs/AxiosConfig.jsx b/frontend/src/api/configs/AxiosConfig.jsx new file mode 100644 index 0000000..80015ac --- /dev/null +++ b/frontend/src/api/configs/AxiosConfig.jsx @@ -0,0 +1,42 @@ +import axios from 'axios'; + +const axiosInstance = axios.create({ + baseURL: 'http://127.0.0.1:8000/api/', + timeout: 5000, + headers: { + 'Authorization': "Bearer " + localStorage.getItem('access_token'), + 'Content-Type': 'application/json', + 'accept': 'application/json', + }, +}); + +// handling token refresh on 401 Unauthorized errors +axiosInstance.interceptors.response.use( + response => response, + error => { + const originalRequest = error.config; + const refresh_token = localStorage.getItem('refresh_token'); + + // Check if the error is due to 401 and a refresh token is available + if (error.response.status === 401 && error.response.statusText === "Unauthorized" && refresh_token !== "undefined") { + return axiosInstance + .post('/token/refresh/', { refresh: refresh_token }) + .then((response) => { + + localStorage.setItem('access_token', response.data.access); + + axiosInstance.defaults.headers['Authorization'] = "Bearer " + response.data.access; + originalRequest.headers['Authorization'] = "Bearer " + response.data.access; + + return axiosInstance(originalRequest); + }) + .catch(err => { + console.log('Interceptors error: ', err); + }); + } + return Promise.reject(error); + } +); + + +export default axiosInstance; From dbb70d8af6659cae464df8b26492ed3948422083 Mon Sep 17 00:00:00 2001 From: sosokker Date: Sat, 11 Nov 2023 22:59:27 +0700 Subject: [PATCH 6/8] Separate Login and Signup --- frontend/src/App.jsx | 75 +++++++++++++++++++++++--------------------- 1 file changed, 40 insertions(+), 35 deletions(-) diff --git a/frontend/src/App.jsx b/frontend/src/App.jsx index 071fced..cbd3257 100644 --- a/frontend/src/App.jsx +++ b/frontend/src/App.jsx @@ -1,40 +1,45 @@ -import './App.css'; -import { BrowserRouter, Route, Routes } from 'react-router-dom'; +import "./App.css"; +import { BrowserRouter, Route, Routes } from "react-router-dom"; -import TestAuth from './components/testAuth'; -import LoginPage from './components/authentication/LoginPage'; -import SignUpPage from './components/authentication/SignUpPage'; -import NavBar from './components/nav/Navbar'; -import Home from './components/Home'; -import ProfileUpdate from './components/ProfileUpdatePage'; -import Calendar from './components/calendar/calendar'; -import KanbanBoard from './components/kanbanBoard/kanbanBoard'; -import IconSideNav from './components/IconSideNav'; -import Eisenhower from './components/EisenhowerMatrix/Eisenhower'; +import TestAuth from "./components/testAuth"; +import LoginPage from "./components/authentication/LoginPage"; +import SignUpPage from "./components/authentication/SignUpPage"; +import NavBar from "./components/nav/Navbar"; +import Home from "./components/Home"; +import ProfileUpdate from "./components/ProfileUpdatePage"; +import Calendar from "./components/calendar/calendar"; +import KanbanBoard from "./components/kanbanBoard/kanbanBoard"; +import IconSideNav from "./components/IconSideNav"; +import Eisenhower from "./components/eisenhowerMatrix/Eisenhower"; const App = () => { - return ( - -
- -
- -
- - } /> - } /> - } /> - } /> - } /> - } /> - } /> - } /> - -
-
-
-
- ); -} + const currentPath = window.location.pathname; + const prevention = ["/login", "/signup"]; + + return ( + +
+ {!prevention.some(_ => currentPath.includes(_)) && } +
+ +
+ + } /> + } /> + } /> + } /> + } /> + } /> + +
+
+
+ + } /> + } /> + +
+ ); +}; export default App; From 45dcfba95b1bead49c4b9089f6699785c8119739 Mon Sep 17 00:00:00 2001 From: sosokker Date: Sat, 11 Nov 2023 23:18:20 +0700 Subject: [PATCH 7/8] Add funtion fetch tasks by ID and all tags --- frontend/src/api/AuthenticationApi.jsx | 92 ++++++++++++-------------- frontend/src/api/TagApi.jsx | 12 ++++ frontend/src/api/TaskApi.jsx | 32 ++++++--- 3 files changed, 77 insertions(+), 59 deletions(-) create mode 100644 frontend/src/api/TagApi.jsx diff --git a/frontend/src/api/AuthenticationApi.jsx b/frontend/src/api/AuthenticationApi.jsx index dc2de0c..d4b6486 100644 --- a/frontend/src/api/AuthenticationApi.jsx +++ b/frontend/src/api/AuthenticationApi.jsx @@ -1,61 +1,59 @@ -import axios from 'axios'; -import axiosInstance from './configs/AxiosConfig'; +import axios from "axios"; +import axiosInstance from "./configs/AxiosConfig"; // Function for user login -const apiUserLogin = (data) => { - return axiosInstance - .post('token/obtain/', data) - .then((response) => { - console.log(response.statusText); - return response; - }).catch(error => { - console.log('apiUserLogin error: ', error); - return error; - }); +const apiUserLogin = data => { + return axiosInstance + .post("token/obtain/", data) + .then(response => { + console.log(response.statusText); + return response; + }) + .catch(error => { + console.log("apiUserLogin error: ", error); + return error; + }); }; // Function for user logout const apiUserLogout = () => { - axiosInstance.defaults.headers['Authorization'] = ""; // Clear authorization header - localStorage.removeItem('access_token'); // Remove access token - localStorage.removeItem('refresh_token'); // Remove refresh token -} - -// Function for Google login -const googleLogin = async (token) => { - axios.defaults.withCredentials = true - let res = await axios.post( - "http://localhost:8000/api/auth/google/", - { - code: token, - } - ); - // console.log('service google login res: ', res); - return await res; + axiosInstance.defaults.headers["Authorization"] = ""; // Clear authorization header + localStorage.removeItem("access_token"); // Remove access token + localStorage.removeItem("refresh_token"); // Remove refresh token }; +// Function for Google login +const googleLogin = async token => { + axios.defaults.withCredentials = true; + let res = await axios.post("http://localhost:8000/api/auth/google/", { + code: token, + }); + // console.log('service google login res: ', res); + return await res; +}; // Function to get 'hello' data const getGreeting = () => { - return axiosInstance - .get('hello') - .then((response) => { - return response; - }).catch(error => { - return error; - }); -} + return axiosInstance + .get("hello") + .then(response => { + return response; + }) + .catch(error => { + return error; + }); +}; const config = { - headers: { - "Content-Type": "application/json" - } + headers: { + "Content-Type": "application/json", + }, }; // Function to register -const createUser = async (formData) => { +const createUser = async formData => { try { - axios.defaults.withCredentials = true + axios.defaults.withCredentials = true; const resposne = axios.post("http://localhost:8000/api/user/create/", formData); // const response = await axiosInstance.post('/user/create/', formData); return response.data; @@ -64,13 +62,11 @@ const createUser = async (formData) => { } }; - // Export the functions and Axios instance export default { - axiosInstance, - apiUserLogin, - apiUserLogout, - getGreeting: getGreeting, - googleLogin, - createUser + apiUserLogin, + apiUserLogout, + getGreeting: getGreeting, + googleLogin, + createUser, }; diff --git a/frontend/src/api/TagApi.jsx b/frontend/src/api/TagApi.jsx new file mode 100644 index 0000000..deea971 --- /dev/null +++ b/frontend/src/api/TagApi.jsx @@ -0,0 +1,12 @@ +import axiosInstance from "./configs/AxiosConfig"; + +export const fetchTags = () => { + return axiosInstance + .get("tags/") + .then(response => { + return response.data; + }) + .catch(error => { + throw error; + }); +}; diff --git a/frontend/src/api/TaskApi.jsx b/frontend/src/api/TaskApi.jsx index f4c3ef2..96f24f6 100644 --- a/frontend/src/api/TaskApi.jsx +++ b/frontend/src/api/TaskApi.jsx @@ -1,13 +1,23 @@ -import axios from 'axios'; -import axiosInstance from './configs/AxiosConfig'; +import axiosInstance from "./configs/AxiosConfig"; export const fetchTodoTasks = () => { - return axiosInstance - .get('todo/') - .then((response) => { - return response.data; - }) - .catch(error => { - throw error; - }); -}; \ No newline at end of file + return axiosInstance + .get("todo/") + .then(response => { + return response.data; + }) + .catch(error => { + throw error; + }); +}; + +export const fetchTodoTasksID = id => { + return axiosInstance + .get(`todo/${id}/`) + .then(response => { + return response.data; + }) + .catch(error => { + throw error; + }); +}; From 6da24a6a7e9d269a7d9b9b47ad48b524f1eb1247 Mon Sep 17 00:00:00 2001 From: sosokker Date: Sat, 11 Nov 2023 23:26:44 +0700 Subject: [PATCH 8/8] Upgrade dependencies --- frontend/package.json | 24 +-- frontend/pnpm-lock.yaml | 380 ++++++++++++++++++++++++++++------------ 2 files changed, 279 insertions(+), 125 deletions(-) diff --git a/frontend/package.json b/frontend/package.json index ab93583..e03bc04 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -21,13 +21,13 @@ "@fullcalendar/interaction": "^6.1.9", "@fullcalendar/react": "^6.1.9", "@fullcalendar/timegrid": "^6.1.9", - "@mui/icons-material": "^5.14.15", - "@mui/material": "^5.14.15", - "@mui/system": "^5.14.15", + "@mui/icons-material": "^5.14.16", + "@mui/material": "^5.14.17", + "@mui/system": "^5.14.17", "@react-oauth/google": "^0.11.1", "@syncfusion/ej2-base": "^23.1.41", "@syncfusion/ej2-kanban": "^23.1.36", - "axios": "^1.5.1", + "axios": "^1.6.1", "bootstrap": "^5.3.2", "dotenv": "^16.3.1", "framer-motion": "^10.16.4", @@ -38,21 +38,21 @@ "react-bootstrap": "^2.9.1", "react-dom": "^18.2.0", "react-icons": "^4.11.0", - "react-router-dom": "^6.17.0" + "react-router-dom": "^6.18.0" }, "devDependencies": { "@tailwindcss/typography": "^0.5.10", - "@types/react": "^18.2.15", - "@types/react-dom": "^18.2.7", - "@vitejs/plugin-react": "^4.0.3", + "@types/react": "^18.2.37", + "@types/react-dom": "^18.2.15", + "@vitejs/plugin-react": "^4.1.1", "autoprefixer": "^10.4.16", "daisyui": "^3.9.4", - "eslint": "^8.45.0", - "eslint-plugin-react": "^7.32.2", + "eslint": "^8.53.0", + "eslint-plugin-react": "^7.33.2", "eslint-plugin-react-hooks": "^4.6.0", - "eslint-plugin-react-refresh": "^0.4.3", + "eslint-plugin-react-refresh": "^0.4.4", "postcss": "^8.4.31", "tailwindcss": "^3.3.5", - "vite": "^4.4.5" + "vite": "^4.5.0" } } \ No newline at end of file diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml index 18dfd97..acf0447 100644 --- a/frontend/pnpm-lock.yaml +++ b/frontend/pnpm-lock.yaml @@ -1,5 +1,9 @@ lockfileVersion: '6.0' +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + dependencies: '@asseinfo/react-kanban': specifier: ^2.2.0 @@ -15,10 +19,10 @@ dependencies: version: 3.2.2(react@18.2.0) '@emotion/react': specifier: ^11.11.1 - version: 11.11.1(@types/react@18.2.15)(react@18.2.0) + version: 11.11.1(@types/react@18.2.37)(react@18.2.0) '@emotion/styled': specifier: ^11.11.0 - version: 11.11.0(@emotion/react@11.11.1)(@types/react@18.2.15)(react@18.2.0) + version: 11.11.0(@emotion/react@11.11.1)(@types/react@18.2.37)(react@18.2.0) '@fullcalendar/core': specifier: ^6.1.9 version: 6.1.9 @@ -35,14 +39,14 @@ dependencies: specifier: ^6.1.9 version: 6.1.9(@fullcalendar/core@6.1.9) '@mui/icons-material': - specifier: ^5.14.15 - version: 5.14.15(@mui/material@5.14.15)(@types/react@18.2.15)(react@18.2.0) + specifier: ^5.14.16 + version: 5.14.16(@mui/material@5.14.17)(@types/react@18.2.37)(react@18.2.0) '@mui/material': - specifier: ^5.14.15 - version: 5.14.15(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@types/react@18.2.15)(react-dom@18.2.0)(react@18.2.0) + specifier: ^5.14.17 + version: 5.14.17(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@types/react@18.2.37)(react-dom@18.2.0)(react@18.2.0) '@mui/system': - specifier: ^5.14.15 - version: 5.14.15(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@types/react@18.2.15)(react@18.2.0) + specifier: ^5.14.17 + version: 5.14.17(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@types/react@18.2.37)(react@18.2.0) '@react-oauth/google': specifier: ^0.11.1 version: 0.11.1(react-dom@18.2.0)(react@18.2.0) @@ -53,8 +57,8 @@ dependencies: specifier: ^23.1.36 version: 23.1.36 axios: - specifier: ^1.5.1 - version: 1.5.1 + specifier: ^1.6.1 + version: 1.6.1 bootstrap: specifier: ^5.3.2 version: 5.3.2(@popperjs/core@2.11.8) @@ -78,7 +82,7 @@ dependencies: version: 13.1.1(react-dom@18.2.0)(react@18.2.0) react-bootstrap: specifier: ^2.9.1 - version: 2.9.1(@types/react@18.2.15)(react-dom@18.2.0)(react@18.2.0) + version: 2.9.1(@types/react@18.2.37)(react-dom@18.2.0)(react@18.2.0) react-dom: specifier: ^18.2.0 version: 18.2.0(react@18.2.0) @@ -86,22 +90,22 @@ dependencies: specifier: ^4.11.0 version: 4.11.0(react@18.2.0) react-router-dom: - specifier: ^6.17.0 - version: 6.17.0(react-dom@18.2.0)(react@18.2.0) + specifier: ^6.18.0 + version: 6.18.0(react-dom@18.2.0)(react@18.2.0) devDependencies: '@tailwindcss/typography': specifier: ^0.5.10 version: 0.5.10(tailwindcss@3.3.5) '@types/react': + specifier: ^18.2.37 + version: 18.2.37 + '@types/react-dom': specifier: ^18.2.15 version: 18.2.15 - '@types/react-dom': - specifier: ^18.2.7 - version: 18.2.7 '@vitejs/plugin-react': - specifier: ^4.0.3 - version: 4.0.3(vite@4.4.5) + specifier: ^4.1.1 + version: 4.1.1(vite@4.5.0) autoprefixer: specifier: ^10.4.16 version: 10.4.16(postcss@8.4.31) @@ -109,17 +113,17 @@ devDependencies: specifier: ^3.9.4 version: 3.9.4 eslint: - specifier: ^8.45.0 - version: 8.45.0 + specifier: ^8.53.0 + version: 8.53.0 eslint-plugin-react: - specifier: ^7.32.2 - version: 7.32.2(eslint@8.45.0) + specifier: ^7.33.2 + version: 7.33.2(eslint@8.53.0) eslint-plugin-react-hooks: specifier: ^4.6.0 - version: 4.6.0(eslint@8.45.0) + version: 4.6.0(eslint@8.53.0) eslint-plugin-react-refresh: - specifier: ^0.4.3 - version: 0.4.3(eslint@8.45.0) + specifier: ^0.4.4 + version: 0.4.4(eslint@8.53.0) postcss: specifier: ^8.4.31 version: 8.4.31 @@ -127,8 +131,8 @@ devDependencies: specifier: ^3.3.5 version: 3.3.5 vite: - specifier: ^4.4.5 - version: 4.4.5 + specifier: ^4.5.0 + version: 4.5.0 packages: @@ -469,6 +473,7 @@ packages: /@emotion/memoize@0.7.4: resolution: {integrity: sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==} + requiresBuild: true dev: false optional: true @@ -476,7 +481,7 @@ packages: resolution: {integrity: sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==} dev: false - /@emotion/react@11.11.1(@types/react@18.2.15)(react@18.2.0): + /@emotion/react@11.11.1(@types/react@18.2.37)(react@18.2.0): resolution: {integrity: sha512-5mlW1DquU5HaxjLkfkGN1GA/fvVGdyHURRiX/0FHl2cfIfRxSOfmxEH5YS43edp0OldZrZ+dkBKbngxcNCdZvA==} peerDependencies: '@types/react': '*' @@ -492,7 +497,7 @@ packages: '@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@18.2.0) '@emotion/utils': 1.2.1 '@emotion/weak-memoize': 0.3.1 - '@types/react': 18.2.15 + '@types/react': 18.2.37 hoist-non-react-statics: 3.3.2 react: 18.2.0 dev: false @@ -511,7 +516,7 @@ packages: resolution: {integrity: sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA==} dev: false - /@emotion/styled@11.11.0(@emotion/react@11.11.1)(@types/react@18.2.15)(react@18.2.0): + /@emotion/styled@11.11.0(@emotion/react@11.11.1)(@types/react@18.2.37)(react@18.2.0): resolution: {integrity: sha512-hM5Nnvu9P3midq5aaXj4I+lnSfNi7Pmd4EWk1fOZ3pxookaQTNew6bp4JaCBYM4HVFZF9g7UjJmsUmC2JlxOng==} peerDependencies: '@emotion/react': ^11.0.0-rc.0 @@ -524,11 +529,11 @@ packages: '@babel/runtime': 7.23.2 '@emotion/babel-plugin': 11.11.0 '@emotion/is-prop-valid': 1.2.1 - '@emotion/react': 11.11.1(@types/react@18.2.15)(react@18.2.0) + '@emotion/react': 11.11.1(@types/react@18.2.37)(react@18.2.0) '@emotion/serialize': 1.1.2 '@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@18.2.0) '@emotion/utils': 1.2.1 - '@types/react': 18.2.15 + '@types/react': 18.2.37 react: 18.2.0 dev: false @@ -750,13 +755,13 @@ packages: dev: true optional: true - /@eslint-community/eslint-utils@4.4.0(eslint@8.45.0): + /@eslint-community/eslint-utils@4.4.0(eslint@8.53.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: - eslint: 8.45.0 + eslint: 8.53.0 eslint-visitor-keys: 3.4.3 dev: true @@ -782,8 +787,8 @@ packages: - supports-color dev: true - /@eslint/js@8.44.0: - resolution: {integrity: sha512-Ag+9YM4ocKQx9AarydN0KY2j0ErMHNIocPDrVo8zAE44xLTjEtz81OdR68/cydGtk6m6jDb5Za3r2useMzYmSw==} + /@eslint/js@8.53.0: + resolution: {integrity: sha512-Kn7K8dx/5U6+cT1yEhpX1w4PCSg0M+XyRILPgvwcEBjerFWCwQj5sbr3/VmxqV0JGHCBCzyd6LxypEuehypY1w==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true @@ -908,8 +913,8 @@ packages: '@jridgewell/sourcemap-codec': 1.4.15 dev: true - /@mui/base@5.0.0-beta.21(@types/react@18.2.15)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-eTKWx3WV/nwmRUK4z4K1MzlMyWCsi3WJ3RtV4DiXZeRh4qd4JCyp1Zzzi8Wv9xM4dEBmqQntFoei716PzwmFfA==} + /@mui/base@5.0.0-beta.23(@types/react@18.2.37)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-9L8SQUGAWtd/Qi7Qem26+oSSgpY7f2iQTuvcz/rsGpyZjSomMMO6lwYeQSA0CpWM7+aN7eGoSY/WV6wxJiIxXw==} engines: {node: '>=12.0.0'} peerDependencies: '@types/react': ^17.0.0 || ^18.0.0 @@ -921,10 +926,10 @@ packages: dependencies: '@babel/runtime': 7.23.2 '@floating-ui/react-dom': 2.0.4(react-dom@18.2.0)(react@18.2.0) - '@mui/types': 7.2.8(@types/react@18.2.15) - '@mui/utils': 5.14.17(@types/react@18.2.15)(react@18.2.0) + '@mui/types': 7.2.8(@types/react@18.2.37) + '@mui/utils': 5.14.17(@types/react@18.2.37)(react@18.2.0) '@popperjs/core': 2.11.8 - '@types/react': 18.2.15 + '@types/react': 18.2.37 clsx: 2.0.0 prop-types: 15.8.1 react: 18.2.0 @@ -935,8 +940,8 @@ packages: resolution: {integrity: sha512-eE0uxrpJAEL2ZXkeGLKg8HQDafsiXY+6eNpP4lcv3yIjFfGbU6Hj9/P7Adt8jpU+6JIhmxvILGj2r27pX+zdrQ==} dev: false - /@mui/icons-material@5.14.15(@mui/material@5.14.15)(@types/react@18.2.15)(react@18.2.0): - resolution: {integrity: sha512-Dqu21vN/mVNzebJ+ofnKG+CeJYIhHuDs5+0fMEpdpzRt6UojelzdrEkNv+XkO0e1JMclzeXIRx404FirK/CFRw==} + /@mui/icons-material@5.14.16(@mui/material@5.14.17)(@types/react@18.2.37)(react@18.2.0): + resolution: {integrity: sha512-wmOgslMEGvbHZjFLru8uH5E+pif/ciXAvKNw16q6joK6EWVWU5rDYWFknDaZhCvz8ZE/K8ZnJQ+lMG6GgHzXbg==} engines: {node: '>=12.0.0'} peerDependencies: '@mui/material': ^5.0.0 @@ -947,13 +952,13 @@ packages: optional: true dependencies: '@babel/runtime': 7.23.2 - '@mui/material': 5.14.15(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@types/react@18.2.15)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.2.15 + '@mui/material': 5.14.17(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@types/react@18.2.37)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.2.37 react: 18.2.0 dev: false - /@mui/material@5.14.15(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@types/react@18.2.15)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-Gq65rHjvLzkxmhG8bvag851Oqsmru7qkUb/cCI2xu7dQzmY345f9xJRJi72sRGjhaqHXWeRKw/yIwp/7oQoeXg==} + /@mui/material@5.14.17(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@types/react@18.2.37)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-+y0VeOLWfEA4Z98We/UH6KCo8+f2HLZDK45FY+sJf8kSojLy3VntadKtC/u0itqnXXb1Pr4wKB2tSIBW02zY4Q==} engines: {node: '>=12.0.0'} peerDependencies: '@emotion/react': ^11.5.0 @@ -970,14 +975,14 @@ packages: optional: true dependencies: '@babel/runtime': 7.23.2 - '@emotion/react': 11.11.1(@types/react@18.2.15)(react@18.2.0) - '@emotion/styled': 11.11.0(@emotion/react@11.11.1)(@types/react@18.2.15)(react@18.2.0) - '@mui/base': 5.0.0-beta.21(@types/react@18.2.15)(react-dom@18.2.0)(react@18.2.0) + '@emotion/react': 11.11.1(@types/react@18.2.37)(react@18.2.0) + '@emotion/styled': 11.11.0(@emotion/react@11.11.1)(@types/react@18.2.37)(react@18.2.0) + '@mui/base': 5.0.0-beta.23(@types/react@18.2.37)(react-dom@18.2.0)(react@18.2.0) '@mui/core-downloads-tracker': 5.14.17 - '@mui/system': 5.14.15(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@types/react@18.2.15)(react@18.2.0) - '@mui/types': 7.2.8(@types/react@18.2.15) - '@mui/utils': 5.14.17(@types/react@18.2.15)(react@18.2.0) - '@types/react': 18.2.15 + '@mui/system': 5.14.17(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@types/react@18.2.37)(react@18.2.0) + '@mui/types': 7.2.8(@types/react@18.2.37) + '@mui/utils': 5.14.17(@types/react@18.2.37)(react@18.2.0) + '@types/react': 18.2.37 '@types/react-transition-group': 4.4.9 clsx: 2.0.0 csstype: 3.1.2 @@ -988,7 +993,7 @@ packages: react-transition-group: 4.4.5(react-dom@18.2.0)(react@18.2.0) dev: false - /@mui/private-theming@5.14.17(@types/react@18.2.15)(react@18.2.0): + /@mui/private-theming@5.14.17(@types/react@18.2.37)(react@18.2.0): resolution: {integrity: sha512-u4zxsCm9xmQrlhVPug+Ccrtsjv7o2+rehvrgHoh0siSguvVgVQq5O3Hh10+tp/KWQo2JR4/nCEwquSXgITS1+g==} engines: {node: '>=12.0.0'} peerDependencies: @@ -999,8 +1004,8 @@ packages: optional: true dependencies: '@babel/runtime': 7.23.2 - '@mui/utils': 5.14.17(@types/react@18.2.15)(react@18.2.0) - '@types/react': 18.2.15 + '@mui/utils': 5.14.17(@types/react@18.2.37)(react@18.2.0) + '@types/react': 18.2.37 prop-types: 15.8.1 react: 18.2.0 dev: false @@ -1020,15 +1025,15 @@ packages: dependencies: '@babel/runtime': 7.23.2 '@emotion/cache': 11.11.0 - '@emotion/react': 11.11.1(@types/react@18.2.15)(react@18.2.0) - '@emotion/styled': 11.11.0(@emotion/react@11.11.1)(@types/react@18.2.15)(react@18.2.0) + '@emotion/react': 11.11.1(@types/react@18.2.37)(react@18.2.0) + '@emotion/styled': 11.11.0(@emotion/react@11.11.1)(@types/react@18.2.37)(react@18.2.0) csstype: 3.1.2 prop-types: 15.8.1 react: 18.2.0 dev: false - /@mui/system@5.14.15(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@types/react@18.2.15)(react@18.2.0): - resolution: {integrity: sha512-zr0Gdk1RgKiEk+tCMB900LaOpEC8NaGvxtkmMdL/CXgkqQZSVZOt2PQsxJWaw7kE4YVkIe4VukFVc43qcq9u3w==} + /@mui/system@5.14.17(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@types/react@18.2.37)(react@18.2.0): + resolution: {integrity: sha512-Ccz3XlbCqka6DnbHfpL3o3TfOeWQPR+ewvNAgm8gnS9M0yVMmzzmY6z0w/C1eebb+7ZP7IoLUj9vojg/GBaTPg==} engines: {node: '>=12.0.0'} peerDependencies: '@emotion/react': ^11.5.0 @@ -1044,20 +1049,20 @@ packages: optional: true dependencies: '@babel/runtime': 7.23.2 - '@emotion/react': 11.11.1(@types/react@18.2.15)(react@18.2.0) - '@emotion/styled': 11.11.0(@emotion/react@11.11.1)(@types/react@18.2.15)(react@18.2.0) - '@mui/private-theming': 5.14.17(@types/react@18.2.15)(react@18.2.0) + '@emotion/react': 11.11.1(@types/react@18.2.37)(react@18.2.0) + '@emotion/styled': 11.11.0(@emotion/react@11.11.1)(@types/react@18.2.37)(react@18.2.0) + '@mui/private-theming': 5.14.17(@types/react@18.2.37)(react@18.2.0) '@mui/styled-engine': 5.14.17(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) - '@mui/types': 7.2.8(@types/react@18.2.15) - '@mui/utils': 5.14.17(@types/react@18.2.15)(react@18.2.0) - '@types/react': 18.2.15 + '@mui/types': 7.2.8(@types/react@18.2.37) + '@mui/utils': 5.14.17(@types/react@18.2.37)(react@18.2.0) + '@types/react': 18.2.37 clsx: 2.0.0 csstype: 3.1.2 prop-types: 15.8.1 react: 18.2.0 dev: false - /@mui/types@7.2.8(@types/react@18.2.15): + /@mui/types@7.2.8(@types/react@18.2.37): resolution: {integrity: sha512-9u0ji+xspl96WPqvrYJF/iO+1tQ1L5GTaDOeG3vCR893yy7VcWwRNiVMmPdPNpMDqx0WV1wtEW9OMwK9acWJzQ==} peerDependencies: '@types/react': ^17.0.0 || ^18.0.0 @@ -1065,10 +1070,10 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.2.15 + '@types/react': 18.2.37 dev: false - /@mui/utils@5.14.17(@types/react@18.2.15)(react@18.2.0): + /@mui/utils@5.14.17(@types/react@18.2.37)(react@18.2.0): resolution: {integrity: sha512-yxnWgSS4J6DMFPw2Dof85yBkG02VTbEiqsikymMsnZnXDurtVGTIhlNuV24GTmFTuJMzEyTTU9UF+O7zaL8LEQ==} engines: {node: '>=12.0.0'} peerDependencies: @@ -1080,7 +1085,7 @@ packages: dependencies: '@babel/runtime': 7.23.2 '@types/prop-types': 15.7.10 - '@types/react': 18.2.15 + '@types/react': 18.2.37 prop-types: 15.8.1 react: 18.2.0 react-is: 18.2.0 @@ -1131,8 +1136,8 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: false - /@remix-run/router@1.10.0: - resolution: {integrity: sha512-Lm+fYpMfZoEucJ7cMxgt4dYt8jLfbpwRCzAjm9UgSLOkmlqo9gupxt6YX3DY0Fk155NT9l17d/ydi+964uS9Lw==} + /@remix-run/router@1.11.0: + resolution: {integrity: sha512-BHdhcWgeiudl91HvVa2wxqZjSHbheSgIiDvxrF1VjFzBzpTtuDPkOdOi3Iqvc08kXtFkLjhbS+ML9aM8mJS+wQ==} engines: {node: '>=14.0.0'} dev: false @@ -1287,10 +1292,39 @@ packages: tailwindcss: 3.3.5 dev: true + /@types/babel__core@7.20.4: + resolution: {integrity: sha512-mLnSC22IC4vcWiuObSRjrLd9XcBTGf59vUSoq2jkQDJ/QQ8PMI9rSuzE+aEV8karUMbskw07bKYoUJCKTUaygg==} + dependencies: + '@babel/parser': 7.23.3 + '@babel/types': 7.23.3 + '@types/babel__generator': 7.6.7 + '@types/babel__template': 7.4.4 + '@types/babel__traverse': 7.20.4 + dev: true + + /@types/babel__generator@7.6.7: + resolution: {integrity: sha512-6Sfsq+EaaLrw4RmdFWE9Onp63TOUue71AWb4Gpa6JxzgTYtimbM086WnYTy2U67AofR++QKCo08ZP6pwx8YFHQ==} + dependencies: + '@babel/types': 7.23.3 + dev: true + + /@types/babel__template@7.4.4: + resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} + dependencies: + '@babel/parser': 7.23.3 + '@babel/types': 7.23.3 + dev: true + + /@types/babel__traverse@7.20.4: + resolution: {integrity: sha512-mSM/iKUk5fDDrEV/e83qY+Cr3I1+Q3qqTuEn++HAWYjEa1+NxZr6CNrcJGf2ZTnq4HoFGC3zaTPZTobCzCFukA==} + dependencies: + '@babel/types': 7.23.3 + dev: true + /@types/hoist-non-react-statics@3.3.5: resolution: {integrity: sha512-SbcrWzkKBw2cdwRTwQAswfpB9g9LJWfjtUeW/jvNwbhC8cpmmNYVePa+ncbUe0rGTQ7G3Ff6mYUN2VMfLVr+Sg==} dependencies: - '@types/react': 18.2.15 + '@types/react': 18.2.37 hoist-non-react-statics: 3.3.2 dev: false @@ -1301,17 +1335,17 @@ packages: /@types/prop-types@15.7.10: resolution: {integrity: sha512-mxSnDQxPqsZxmeShFH+uwQ4kO4gcJcGahjjMFeLbKE95IAZiiZyiEepGZjtXJ7hN/yfu0bu9xN2ajcU0JcxX6A==} - /@types/react-dom@18.2.7: - resolution: {integrity: sha512-GRaAEriuT4zp9N4p1i8BDBYmEyfo+xQ3yHjJU4eiK5NDa1RmUZG+unZABUTK4/Ox/M+GaHwb6Ow8rUITrtjszA==} + /@types/react-dom@18.2.15: + resolution: {integrity: sha512-HWMdW+7r7MR5+PZqJF6YFNSCtjz1T0dsvo/f1BV6HkV+6erD/nA7wd9NM00KVG83zf2nJ7uATPO9ttdIPvi3gg==} dependencies: - '@types/react': 18.2.15 + '@types/react': 18.2.37 dev: true /@types/react-redux@7.1.30: resolution: {integrity: sha512-i2kqM6YaUwFKduamV6QM/uHbb0eCP8f8ZQ/0yWf+BsAVVsZPRYJ9eeGWZ3uxLfWwwA0SrPRMTPTqsPFkY3HZdA==} dependencies: '@types/hoist-non-react-statics': 3.3.5 - '@types/react': 18.2.15 + '@types/react': 18.2.37 hoist-non-react-statics: 3.3.2 redux: 4.2.1 dev: false @@ -1319,11 +1353,11 @@ packages: /@types/react-transition-group@4.4.9: resolution: {integrity: sha512-ZVNmWumUIh5NhH8aMD9CR2hdW0fNuYInlocZHaZ+dgk/1K49j1w/HoAuK1ki+pgscQrOFRTlXeoURtuzEkV3dg==} dependencies: - '@types/react': 18.2.15 + '@types/react': 18.2.37 dev: false - /@types/react@18.2.15: - resolution: {integrity: sha512-oEjE7TQt1fFTFSbf8kkNuc798ahTUzn3Le67/PWjE8MAfYAD/qB7O8hSTcromLFqHCt9bcdOg5GXMokzTjJ5SA==} + /@types/react@18.2.37: + resolution: {integrity: sha512-RGAYMi2bhRgEXT3f4B92WTohopH6bIXw05FuGlmJEnv/omEn190+QYEIYxIAuIBdKgboYYdVved2p1AxZVQnaw==} dependencies: '@types/prop-types': 15.7.10 '@types/scheduler': 0.16.6 @@ -1336,8 +1370,12 @@ packages: resolution: {integrity: sha512-D1XC7WK8K+zZEveUPY+cf4+kgauk8N4eHr/XIHXGlGYkHLud6hK9lYfZk1ry1TNh798cZUCgb6MqGEG8DkJt6Q==} dev: false - /@vitejs/plugin-react@4.0.3(vite@4.4.5): - resolution: {integrity: sha512-pwXDog5nwwvSIzwrvYYmA2Ljcd/ZNlcsSG2Q9CNDBwnsd55UGAyr2doXtB5j+2uymRCnCfExlznzzSFbBRcoCg==} + /@ungap/structured-clone@1.2.0: + resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} + dev: true + + /@vitejs/plugin-react@4.1.1(vite@4.5.0): + resolution: {integrity: sha512-Jie2HERK+uh27e+ORXXwEP5h0Y2lS9T2PRGbfebiHGlwzDO0dEnd2aNtOR/qjBlPb1YgxwAONeblL1xqLikLag==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: vite: ^4.2.0 @@ -1345,8 +1383,9 @@ packages: '@babel/core': 7.23.3 '@babel/plugin-transform-react-jsx-self': 7.23.3(@babel/core@7.23.3) '@babel/plugin-transform-react-jsx-source': 7.23.3(@babel/core@7.23.3) + '@types/babel__core': 7.20.4 react-refresh: 0.14.0 - vite: 4.4.5 + vite: 4.5.0 transitivePeerDependencies: - supports-color dev: true @@ -1473,6 +1512,12 @@ packages: is-shared-array-buffer: 1.0.2 dev: true + /asynciterator.prototype@1.0.0: + resolution: {integrity: sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==} + dependencies: + has-symbols: 1.0.3 + dev: true + /asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} dev: false @@ -1498,8 +1543,8 @@ packages: engines: {node: '>= 0.4'} dev: true - /axios@1.5.1: - resolution: {integrity: sha512-Q28iYCWzNHjAm+yEAot5QaAMxhMghWLFVf7rRdwhUI+c2jix2DUXjAHXVi+s1ibs3mjPO/cCgbA++3BjD0vP/A==} + /axios@1.6.1: + resolution: {integrity: sha512-vfBmhDpKafglh0EldBEbVuoe7DyAavGSLWhuSm5ZSEKQnHhBf0xAAwybbNH1IkrJNGnS/VG4I5yxig1pCEXE4g==} dependencies: follow-redirects: 1.15.3 form-data: 4.0.0 @@ -1554,7 +1599,7 @@ packages: hasBin: true dependencies: caniuse-lite: 1.0.30001561 - electron-to-chromium: 1.4.580 + electron-to-chromium: 1.4.581 node-releases: 2.0.13 update-browserslist-db: 1.0.13(browserslist@4.22.1) dev: true @@ -1800,8 +1845,8 @@ packages: engines: {node: '>=12'} dev: false - /electron-to-chromium@1.4.580: - resolution: {integrity: sha512-T5q3pjQon853xxxHUq3ZP68ZpvJHuSMY2+BZaW3QzjS4HvNuvsMmZ/+lU+nCrftre1jFZ+OSlExynXWBihnXzw==} + /electron-to-chromium@1.4.581: + resolution: {integrity: sha512-6uhqWBIapTJUxgPTCHH9sqdbxIMPt7oXl0VcAL1kOtlU6aECdcMncCrX5Z7sHQ/invtrC9jUQUef7+HhO8vVFw==} dev: true /error-ex@1.3.2: @@ -1855,6 +1900,25 @@ packages: which-typed-array: 1.1.13 dev: true + /es-iterator-helpers@1.0.15: + resolution: {integrity: sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==} + dependencies: + asynciterator.prototype: 1.0.0 + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + es-set-tostringtag: 2.0.2 + function-bind: 1.1.2 + get-intrinsic: 1.2.2 + globalthis: 1.0.3 + has-property-descriptors: 1.0.1 + has-proto: 1.0.1 + has-symbols: 1.0.3 + internal-slot: 1.0.6 + iterator.prototype: 1.1.2 + safe-array-concat: 1.0.1 + dev: true + /es-set-tostringtag@2.0.2: resolution: {integrity: sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==} engines: {node: '>= 0.4'} @@ -1922,25 +1986,25 @@ packages: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} - /eslint-plugin-react-hooks@4.6.0(eslint@8.45.0): + /eslint-plugin-react-hooks@4.6.0(eslint@8.53.0): resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} engines: {node: '>=10'} peerDependencies: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 dependencies: - eslint: 8.45.0 + eslint: 8.53.0 dev: true - /eslint-plugin-react-refresh@0.4.3(eslint@8.45.0): - resolution: {integrity: sha512-Hh0wv8bUNY877+sI0BlCUlsS0TYYQqvzEwJsJJPM2WF4RnTStSnSR3zdJYa2nPOJgg3UghXi54lVyMSmpCalzA==} + /eslint-plugin-react-refresh@0.4.4(eslint@8.53.0): + resolution: {integrity: sha512-eD83+65e8YPVg6603Om2iCIwcQJf/y7++MWm4tACtEswFLYMwxwVWAfwN+e19f5Ad/FOyyNg9Dfi5lXhH3Y3rA==} peerDependencies: eslint: '>=7' dependencies: - eslint: 8.45.0 + eslint: 8.53.0 dev: true - /eslint-plugin-react@7.32.2(eslint@8.45.0): - resolution: {integrity: sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==} + /eslint-plugin-react@7.33.2(eslint@8.53.0): + resolution: {integrity: sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==} engines: {node: '>=4'} peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 @@ -1949,7 +2013,8 @@ packages: array.prototype.flatmap: 1.3.2 array.prototype.tosorted: 1.1.2 doctrine: 2.1.0 - eslint: 8.45.0 + es-iterator-helpers: 1.0.15 + eslint: 8.53.0 estraverse: 5.3.0 jsx-ast-utils: 3.3.5 minimatch: 3.1.2 @@ -1976,18 +2041,19 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /eslint@8.45.0: - resolution: {integrity: sha512-pd8KSxiQpdYRfYa9Wufvdoct3ZPQQuVuU5O6scNgMuOMYuxvH0IGaYK0wUFjo4UYYQQCUndlXiMbnxopwvvTiw==} + /eslint@8.53.0: + resolution: {integrity: sha512-N4VuiPjXDUa4xVeV/GC/RV3hQW9Nw+Y463lkWaKKXKYMvmRiRDAtfpuPFLN+E1/6ZhyR8J2ig+eVREnYgUsiag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.45.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.53.0) '@eslint-community/regexpp': 4.10.0 '@eslint/eslintrc': 2.1.3 - '@eslint/js': 8.44.0 + '@eslint/js': 8.53.0 '@humanwhocodes/config-array': 0.11.13 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 + '@ungap/structured-clone': 1.2.0 ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 @@ -2397,6 +2463,13 @@ packages: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} dev: false + /is-async-function@2.0.0: + resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: true + /is-bigint@1.0.4: resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} dependencies: @@ -2440,6 +2513,19 @@ packages: engines: {node: '>=0.10.0'} dev: true + /is-finalizationregistry@1.0.2: + resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==} + dependencies: + call-bind: 1.0.5 + dev: true + + /is-generator-function@1.0.10: + resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: true + /is-glob@4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} @@ -2447,6 +2533,10 @@ packages: is-extglob: 2.1.1 dev: true + /is-map@2.0.2: + resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} + dev: true + /is-negative-zero@2.0.2: resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} engines: {node: '>= 0.4'} @@ -2477,6 +2567,10 @@ packages: has-tostringtag: 1.0.0 dev: true + /is-set@2.0.2: + resolution: {integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==} + dev: true + /is-shared-array-buffer@1.0.2: resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} dependencies: @@ -2504,12 +2598,23 @@ packages: which-typed-array: 1.1.13 dev: true + /is-weakmap@2.0.1: + resolution: {integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==} + dev: true + /is-weakref@1.0.2: resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} dependencies: call-bind: 1.0.5 dev: true + /is-weakset@2.0.2: + resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==} + dependencies: + call-bind: 1.0.5 + get-intrinsic: 1.2.2 + dev: true + /isarray@2.0.5: resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} dev: true @@ -2518,6 +2623,16 @@ packages: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} dev: true + /iterator.prototype@1.1.2: + resolution: {integrity: sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==} + dependencies: + define-properties: 1.2.1 + get-intrinsic: 1.2.2 + has-symbols: 1.0.3 + reflect.getprototypeof: 1.0.4 + set-function-name: 2.0.1 + dev: true + /jiti@1.21.0: resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==} hasBin: true @@ -2992,7 +3107,7 @@ packages: - react-native dev: false - /react-bootstrap@2.9.1(@types/react@18.2.15)(react-dom@18.2.0)(react@18.2.0): + /react-bootstrap@2.9.1(@types/react@18.2.37)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-ezgmh/ARCYp18LbZEqPp0ppvy+ytCmycDORqc8vXSKYV3cer4VH7OReV8uMOoKXmYzivJTxgzGHalGrHamryHA==} peerDependencies: '@types/react': '>=16.14.8' @@ -3005,7 +3120,7 @@ packages: '@babel/runtime': 7.23.2 '@restart/hooks': 0.4.11(react@18.2.0) '@restart/ui': 1.6.6(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.2.15 + '@types/react': 18.2.37 '@types/react-transition-group': 4.4.9 classnames: 2.3.2 dom-helpers: 5.2.1 @@ -3079,26 +3194,26 @@ packages: engines: {node: '>=0.10.0'} dev: true - /react-router-dom@6.17.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-qWHkkbXQX+6li0COUUPKAUkxjNNqPJuiBd27dVwQGDNsuFBdMbrS6UZ0CLYc4CsbdLYTckn4oB4tGDuPZpPhaQ==} + /react-router-dom@6.18.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-Ubrue4+Ercc/BoDkFQfc6og5zRQ4A8YxSO3Knsne+eRbZ+IepAsK249XBH/XaFuOYOYr3L3r13CXTLvYt5JDjw==} engines: {node: '>=14.0.0'} peerDependencies: react: '>=16.8' react-dom: '>=16.8' dependencies: - '@remix-run/router': 1.10.0 + '@remix-run/router': 1.11.0 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - react-router: 6.17.0(react@18.2.0) + react-router: 6.18.0(react@18.2.0) dev: false - /react-router@6.17.0(react@18.2.0): - resolution: {integrity: sha512-YJR3OTJzi3zhqeJYADHANCGPUu9J+6fT5GLv82UWRGSxu6oJYCKVmxUcaBQuGm9udpWmPsvpme/CdHumqgsoaA==} + /react-router@6.18.0(react@18.2.0): + resolution: {integrity: sha512-vk2y7Dsy8wI02eRRaRmOs9g2o+aE72YCx5q9VasT1N9v+lrdB79tIqrjMfByHiY5+6aYkH2rUa5X839nwWGPDg==} engines: {node: '>=14.0.0'} peerDependencies: react: '>=16.8' dependencies: - '@remix-run/router': 1.10.0 + '@remix-run/router': 1.11.0 react: 18.2.0 dev: false @@ -3142,6 +3257,18 @@ packages: '@babel/runtime': 7.23.2 dev: false + /reflect.getprototypeof@1.0.4: + resolution: {integrity: sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + get-intrinsic: 1.2.2 + globalthis: 1.0.3 + which-builtin-type: 1.1.3 + dev: true + /regenerator-runtime@0.14.0: resolution: {integrity: sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==} dev: false @@ -3502,7 +3629,7 @@ packages: react: '>=15.0.0' dependencies: '@babel/runtime': 7.23.2 - '@types/react': 18.2.15 + '@types/react': 18.2.37 invariant: 2.2.4 react: 18.2.0 react-lifecycles-compat: 3.0.4 @@ -3545,8 +3672,8 @@ packages: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} dev: true - /vite@4.4.5: - resolution: {integrity: sha512-4m5kEtAWHYr0O1Fu7rZp64CfO1PsRGZlD3TAB32UmQlpd7qg15VF7ROqGN5CyqN7HFuwr7ICNM2+fDWRqFEKaA==} + /vite@4.5.0: + resolution: {integrity: sha512-ulr8rNLA6rkyFAlVWw2q5YJ91v098AFQ2R0PRFwPzREXOUJQPtFUG0t+/ZikhaOCDqFoDhN6/v8Sq0o4araFAw==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true peerDependencies: @@ -3596,6 +3723,33 @@ packages: is-symbol: 1.0.4 dev: true + /which-builtin-type@1.1.3: + resolution: {integrity: sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==} + engines: {node: '>= 0.4'} + dependencies: + function.prototype.name: 1.1.6 + has-tostringtag: 1.0.0 + is-async-function: 2.0.0 + is-date-object: 1.0.5 + is-finalizationregistry: 1.0.2 + is-generator-function: 1.0.10 + is-regex: 1.1.4 + is-weakref: 1.0.2 + isarray: 2.0.5 + which-boxed-primitive: 1.0.2 + which-collection: 1.0.1 + which-typed-array: 1.1.13 + dev: true + + /which-collection@1.0.1: + resolution: {integrity: sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==} + dependencies: + is-map: 2.0.2 + is-set: 2.0.2 + is-weakmap: 2.0.1 + is-weakset: 2.0.2 + dev: true + /which-typed-array@1.1.13: resolution: {integrity: sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==} engines: {node: '>= 0.4'}