diff --git a/.github/workflows/preview.yml b/.github/workflows/preview.yml
index 476711da..1145fdcc 100644
--- a/.github/workflows/preview.yml
+++ b/.github/workflows/preview.yml
@@ -27,9 +27,9 @@ jobs:
npm ci
PR_NUMBER=$(echo $GITHUB_REF | awk 'BEGIN { FS = "/" } ; { print $3 }')
REPO_NAME=camp-js-2024-ekaterina-tebyakina
- npm run angular:build -- --baseHref=/$REPO_NAME/pr-preview/pr-$PR_NUMBER/
+ npm run react:build -- --base=/$REPO_NAME/pr-preview/pr-$PR_NUMBER/
- name: Deploy preview
uses: rossjrw/pr-preview-action@v1
with:
- source-dir: dist/apps/angular
+ source-dir: dist/apps/react
diff --git a/apps/react/index.html b/apps/react/index.html
index 1f4b2e25..292cd6bd 100644
--- a/apps/react/index.html
+++ b/apps/react/index.html
@@ -7,7 +7,7 @@
-
React App
+ Anime App
diff --git a/apps/react/src/App.tsx b/apps/react/src/App.tsx
index a3a6dcc4..6f4bb000 100644
--- a/apps/react/src/App.tsx
+++ b/apps/react/src/App.tsx
@@ -2,20 +2,25 @@
import { FC, Suspense } from 'react';
import { Provider } from 'react-redux';
import { BrowserRouter } from 'react-router-dom';
+import { StyledEngineProvider } from '@mui/material';
import { RootRouter } from './routes/RootRouter';
-import { store } from './store';
+import { Header } from './components/header/Header';
+import { store } from './store/store';
+import './theme/styles.css';
-/**
- * App component.
- */
+/** App component. */
export const App: FC = () => (
- Brrr... here should be your loader component
}>
-
-
+
+ Brrr... here should be your loader component}>
+
+
+
+
+
diff --git a/apps/react/src/api/index.ts b/apps/react/src/api/index.ts
index e087cc6d..0d117be4 100644
--- a/apps/react/src/api/index.ts
+++ b/apps/react/src/api/index.ts
@@ -3,7 +3,7 @@ import axios from 'axios';
import { CONFIG } from './config';
/**
- * Http const with baseUrl.
+ * Http const with base url.
*/
export const http = axios.create({
baseURL: CONFIG.apiUrl,
diff --git a/apps/react/src/components/header/Header.module.css b/apps/react/src/components/header/Header.module.css
new file mode 100644
index 00000000..2ea5c71c
--- /dev/null
+++ b/apps/react/src/components/header/Header.module.css
@@ -0,0 +1,22 @@
+.header {
+ width: 100%;
+ height: var(--header-height);
+ padding: 0 var(--space-m);
+ background-color: var(--primary-background-color);
+ color: var(--primary-font-color);
+ display: flex;
+ flex-direction: row;
+ justify-content: space-between;
+ align-items: center;
+}
+
+.title {
+ font-size: var(--font-size-xl);
+ font-weight: var(--font-weight-semibold);
+}
+
+.nav {
+ display: flex;
+ flex-direction: row;
+ gap: var(--space-m);
+}
diff --git a/apps/react/src/components/header/Header.tsx b/apps/react/src/components/header/Header.tsx
new file mode 100644
index 00000000..e8422953
--- /dev/null
+++ b/apps/react/src/components/header/Header.tsx
@@ -0,0 +1,56 @@
+import { FC, memo } from 'react';
+import { Link, useLocation } from 'react-router-dom';
+import AppBar from '@mui/material/AppBar';
+import Chip from '@mui/material/Chip';
+import Stack from '@mui/material/Stack';
+import { ANIME_PATH } from '@js-camp/react/features/anime/routes';
+import { GENRES_PATH } from '@js-camp/react/features/genres/routes';
+import { STUDIOS_PATH } from '@js-camp/react/features/studios/routes';
+
+import styles from './Header.module.css';
+
+/** Header component. */
+const HeaderComponent: FC = () => {
+
+ const location = useLocation();
+
+ const isCurrentPath = (path: string) => location.pathname.startsWith(path);
+
+ return (
+
+
+ Authorization menu
+
+ );
+};
+
+/** Memoized header. */
+export const Header = memo(HeaderComponent);
diff --git a/apps/react/src/features/anime/pages/AnimePage.tsx b/apps/react/src/features/anime/pages/AnimePage.tsx
new file mode 100644
index 00000000..8f8b7d8c
--- /dev/null
+++ b/apps/react/src/features/anime/pages/AnimePage.tsx
@@ -0,0 +1,11 @@
+import { memo, FC } from 'react';
+
+/** Anime page component. */
+const AnimePageComponent: FC = () => (
+ <>
+ Anime
+ >
+);
+
+/** Memoized anime page component. */
+export const AnimePage = memo(AnimePageComponent);
diff --git a/apps/react/src/features/anime/routes.tsx b/apps/react/src/features/anime/routes.tsx
new file mode 100644
index 00000000..1bc94868
--- /dev/null
+++ b/apps/react/src/features/anime/routes.tsx
@@ -0,0 +1,15 @@
+import { lazy } from 'react';
+import { RouteObject } from 'react-router-dom';
+
+const AnimePage = lazy(() => import('./pages/AnimePage').then(module => ({ default: module.AnimePage })));
+
+/** Path to anime for url. */
+export const ANIME_PATH = 'anime';
+
+/** Route object for anime page. */
+export const animeRoutes: readonly RouteObject[] = [
+ {
+ path: ANIME_PATH,
+ element: ,
+ },
+];
diff --git a/apps/react/src/features/genres/components/GenreCard/GenreCard.module.css b/apps/react/src/features/genres/components/GenreCard/GenreCard.module.css
index ba920896..13e1ed5b 100644
--- a/apps/react/src/features/genres/components/GenreCard/GenreCard.module.css
+++ b/apps/react/src/features/genres/components/GenreCard/GenreCard.module.css
@@ -1,3 +1,14 @@
.card {
- background-color: aliceblue;
+ padding: var(--space-m);
+ height: 100%;
+}
+
+.title {
+ font-size: var(--font-size-lg);
+ font-weight: var(--font-weight-semibold);
+ padding: var(--space-s) 0;
+}
+
+.information {
+ padding: var(--space-s) 0;
}
diff --git a/apps/react/src/features/genres/components/GenreCard/GenreCard.tsx b/apps/react/src/features/genres/components/GenreCard/GenreCard.tsx
index 93dc63ee..92d79eb3 100644
--- a/apps/react/src/features/genres/components/GenreCard/GenreCard.tsx
+++ b/apps/react/src/features/genres/components/GenreCard/GenreCard.tsx
@@ -1,23 +1,42 @@
import { memo, FC } from 'react';
-import { Genre } from '@js-camp/core/models/genre';
+import { useParams, Link } from 'react-router-dom';
+import { Button, Paper, Typography } from '@mui/material';
+
+import { EDIT_GENRE_PATH, GENRES_PATH } from '../../routes';
import styles from './GenreCard.module.css';
-type Props = {
+/** Card with genre data. */
+const GenreCardComponent: FC = () => {
+
+ const { id } = useParams<{ id: string; }>();
+
+ const linkToEdit = `/${GENRES_PATH}/${id}/${EDIT_GENRE_PATH}`;
+
+ return (
+
+
+ Item Name
+
+
+
+ Information about item with id = {id}
+
+
+
+
+ );
- /** Genre. */
- readonly genre: Genre;
};
-/** Card with genre data. */
-const GenreCardComponent: FC = ({ genre }: Props) => (
-
-
{genre.name}
- Id - {genre.id}
-
-);
-
-/**
- * Memorized genre card.
- */
+/** Memoized genre card. */
export const GenreCard = memo(GenreCardComponent);
diff --git a/apps/react/src/features/genres/components/GenreCard/index.ts b/apps/react/src/features/genres/components/GenreCard/index.ts
deleted file mode 100644
index ce3e0885..00000000
--- a/apps/react/src/features/genres/components/GenreCard/index.ts
+++ /dev/null
@@ -1 +0,0 @@
-export { GenreCard } from './GenreCard';
diff --git a/apps/react/src/features/genres/components/GenreEditForm/GenreEditForm.tsx b/apps/react/src/features/genres/components/GenreEditForm/GenreEditForm.tsx
new file mode 100644
index 00000000..6adb6a96
--- /dev/null
+++ b/apps/react/src/features/genres/components/GenreEditForm/GenreEditForm.tsx
@@ -0,0 +1,11 @@
+import { FC, memo } from 'react';
+
+/** Genre edit form. */
+const GenreEditFormComponent: FC = () => (
+
+);
+
+/** Memoized genre edit form. */
+export const GenreEditForm = memo(GenreEditFormComponent);
diff --git a/apps/react/src/features/genres/components/GenresFilterForm/GenresFilterForm.module.css b/apps/react/src/features/genres/components/GenresFilterForm/GenresFilterForm.module.css
new file mode 100644
index 00000000..f063c260
--- /dev/null
+++ b/apps/react/src/features/genres/components/GenresFilterForm/GenresFilterForm.module.css
@@ -0,0 +1,12 @@
+.form {
+ display: flex;
+ flex-direction: row;
+ align-items: center;
+ gap: var(--space-xs);
+ padding: var(--space-s);
+}
+
+.field {
+ height: var(--form-field-height);
+ flex-grow: 1;
+}
diff --git a/apps/react/src/features/genres/components/GenresFilterForm/GenresFilterForm.tsx b/apps/react/src/features/genres/components/GenresFilterForm/GenresFilterForm.tsx
new file mode 100644
index 00000000..bf40581a
--- /dev/null
+++ b/apps/react/src/features/genres/components/GenresFilterForm/GenresFilterForm.tsx
@@ -0,0 +1,18 @@
+import { memo, FC } from 'react';
+import { TextField } from '@mui/material';
+
+import styles from './GenresFilterForm.module.css';
+
+/** Genres filter form. */
+const GenresFilterFormComponent: FC = () => (
+
+);
+
+/** Memoized filter form. */
+export const GenresFilterForm = memo(GenresFilterFormComponent);
diff --git a/apps/react/src/features/genres/components/GenresList/GenresList.module.css b/apps/react/src/features/genres/components/GenresList/GenresList.module.css
new file mode 100644
index 00000000..df4bb7f2
--- /dev/null
+++ b/apps/react/src/features/genres/components/GenresList/GenresList.module.css
@@ -0,0 +1,18 @@
+.list {
+ width: 100%;
+ overflow-y: auto;
+ border: 1px var(--border-color) solid;
+ height: calc(100% - var(--form-field-height) - (2 * var(--space-s)));
+ padding-top: 0;
+}
+
+.item {
+ border: 1px var(--border-color) solid;
+ color: var(--primary-font-color);
+ cursor: pointer;
+}
+
+.item:hover,
+.item:focus {
+ background-color: var(--hover-color);
+}
diff --git a/apps/react/src/features/genres/components/GenresList/GenresList.tsx b/apps/react/src/features/genres/components/GenresList/GenresList.tsx
new file mode 100644
index 00000000..70967c0f
--- /dev/null
+++ b/apps/react/src/features/genres/components/GenresList/GenresList.tsx
@@ -0,0 +1,38 @@
+import { memo, FC } from 'react';
+import { Link } from 'react-router-dom';
+import { Genre } from '@js-camp/core/models/genre';
+import { List, ListItem, IconButton, ListItemText } from '@mui/material';
+import DeleteIcon from '@mui/icons-material/Delete';
+
+import { GENRES_PATH } from '../../routes';
+
+import styles from './GenresList.module.css';
+
+type Props = {
+
+ /** Genres. */
+ readonly genres: readonly Genre[];
+};
+
+/** Genres list. */
+const GenresListComponent: FC = ({ genres }: Props) => (
+
+ { genres.map(genre =>
+
+
+
+ }
+ component={Link}
+ to={`/${GENRES_PATH}/${genre.id}`}
+ >
+
+ ) }
+
+);
+
+/** Memoized genres list. */
+export const GenresList = memo(GenresListComponent);
diff --git a/apps/react/src/features/genres/pages/GenresPage/GenresPage.module.css b/apps/react/src/features/genres/pages/GenresPage/GenresPage.module.css
new file mode 100644
index 00000000..9ed8f7e3
--- /dev/null
+++ b/apps/react/src/features/genres/pages/GenresPage/GenresPage.module.css
@@ -0,0 +1,17 @@
+.main {
+ display: flex;
+ flex-direction: row;
+ width: 100%;
+ height: calc(100vh - var(--header-height));
+}
+
+.section {
+ min-width: 320px;
+ border: 1px var(--border-color) solid;
+ flex-grow: 1;
+}
+
+.details {
+ width: 100%;
+ padding: var(--space-m);
+}
diff --git a/apps/react/src/features/genres/pages/GenresPage/GenresPage.tsx b/apps/react/src/features/genres/pages/GenresPage/GenresPage.tsx
index 7cf2747c..5d42ddb8 100644
--- a/apps/react/src/features/genres/pages/GenresPage/GenresPage.tsx
+++ b/apps/react/src/features/genres/pages/GenresPage/GenresPage.tsx
@@ -1,9 +1,13 @@
import { memo, useEffect, FC } from 'react';
import { fetchGenres } from '@js-camp/react/store/genre/dispatchers';
import { selectGenres, selectAreGenresLoading } from '@js-camp/react/store/genre/selectors';
-import { useAppDispatch, useAppSelector } from '@js-camp/react/store';
+import { useAppDispatch, useAppSelector } from '@js-camp/react/store/store';
+import { Outlet } from 'react-router-dom';
-import { GenreCard } from '../../components/GenreCard';
+import { GenresFilterForm } from '../../components/GenresFilterForm/GenresFilterForm';
+import { GenresList } from '../../components/GenresList/GenresList';
+
+import styles from './GenresPage.module.css';
/** Genres page component. */
const GenresPageComponent: FC = () => {
@@ -20,14 +24,17 @@ const GenresPageComponent: FC = () => {
}
return (
- <>
- Genres
- {genres.map(genre => )}
- >
+
+
+
+
+
+
+
+
+
);
};
-/**
- * Memorized GenresPageComponent.
- */
+/** Memoized genres page component. */
export const GenresPage = memo(GenresPageComponent);
diff --git a/apps/react/src/features/genres/pages/GenresPage/index.ts b/apps/react/src/features/genres/pages/GenresPage/index.ts
deleted file mode 100644
index 69257cd6..00000000
--- a/apps/react/src/features/genres/pages/GenresPage/index.ts
+++ /dev/null
@@ -1 +0,0 @@
-export { GenresPage } from './GenresPage';
diff --git a/apps/react/src/features/genres/routes.tsx b/apps/react/src/features/genres/routes.tsx
index 92312015..db80fd44 100644
--- a/apps/react/src/features/genres/routes.tsx
+++ b/apps/react/src/features/genres/routes.tsx
@@ -1,18 +1,34 @@
import { lazy } from 'react';
-import { Navigate, RouteObject } from 'react-router-dom';
+import { RouteObject } from 'react-router-dom';
-const GenresPage = lazy(() => import('./pages/GenresPage').then(module => ({ default: module.GenresPage })));
+import { GenreCard } from './components/GenreCard/GenreCard';
+import { GenreEditForm } from './components/GenreEditForm/GenreEditForm';
-/**
- * Route object for GenresPage.
- */
-export const genresRoutes: RouteObject[] = [
+const GenresPage = lazy(() => import('./pages/GenresPage/GenresPage').then(module => ({ default: module.GenresPage })));
+
+/** Path to genres for url. */
+export const GENRES_PATH = 'genres';
+
+/** Path to a genre for url. */
+export const GENRE_PATH = ':id';
+
+/** Path to a genre editing for url. */
+export const EDIT_GENRE_PATH = 'edit';
+
+/** Route object for GenresPage. */
+export const genresRoutes: readonly RouteObject[] = [
{
- path: 'genres',
+ path: GENRES_PATH,
element: ,
- },
- {
- path: '*',
- element: ,
+ children: [
+ {
+ path: GENRE_PATH,
+ element: ,
+ },
+ {
+ path: `${GENRE_PATH}/${EDIT_GENRE_PATH}`,
+ element: ,
+ },
+ ],
},
];
diff --git a/apps/react/src/features/studios/pages/StudiosPage.tsx b/apps/react/src/features/studios/pages/StudiosPage.tsx
new file mode 100644
index 00000000..9a45bad8
--- /dev/null
+++ b/apps/react/src/features/studios/pages/StudiosPage.tsx
@@ -0,0 +1,11 @@
+import { memo, FC } from 'react';
+
+/** Studios page component. */
+const StudiosPageComponent: FC = () => (
+ <>
+ Studios
+ >
+);
+
+/** Memoized studios page component. */
+export const StudiosPage = memo(StudiosPageComponent);
diff --git a/apps/react/src/features/studios/routes.tsx b/apps/react/src/features/studios/routes.tsx
new file mode 100644
index 00000000..b623b731
--- /dev/null
+++ b/apps/react/src/features/studios/routes.tsx
@@ -0,0 +1,15 @@
+import { lazy } from 'react';
+import { RouteObject } from 'react-router-dom';
+
+const StudiosPage = lazy(() => import('./pages/StudiosPage').then(module => ({ default: module.StudiosPage })));
+
+/** Path to studios for url. */
+export const STUDIOS_PATH = 'studios';
+
+/** Route object for studios page. */
+export const studiosRoutes: readonly RouteObject[] = [
+ {
+ path: STUDIOS_PATH,
+ element: ,
+ },
+];
diff --git a/apps/react/src/routes/RootRouter.tsx b/apps/react/src/routes/RootRouter.tsx
index 1eb8e72a..ffd78d45 100644
--- a/apps/react/src/routes/RootRouter.tsx
+++ b/apps/react/src/routes/RootRouter.tsx
@@ -2,13 +2,17 @@ import { FC } from 'react';
import { Navigate, RouteObject, useRoutes } from 'react-router-dom';
import { genresRoutes } from '../features/genres/routes';
+import { animeRoutes, ANIME_PATH } from '../features/anime/routes';
+import { studiosRoutes } from '../features/studios/routes';
const routes: RouteObject[] = [
{
path: '*',
- element: ,
+ element: ,
},
+ ...animeRoutes,
...genresRoutes,
+ ...studiosRoutes,
];
/** Root router component. */
diff --git a/apps/react/src/store/genre/dispatchers.ts b/apps/react/src/store/genre/dispatchers.ts
index e5e77bf1..46865555 100644
--- a/apps/react/src/store/genre/dispatchers.ts
+++ b/apps/react/src/store/genre/dispatchers.ts
@@ -2,9 +2,7 @@ import { createAsyncThunk } from '@reduxjs/toolkit';
import { GenresService } from '../../api/services/genreService';
-/**
- * Function for fetch genres.
- */
+/** Function for fetch genres. */
export const fetchGenres = createAsyncThunk(
'genres/fetch',
() => GenresService.fetchGenres(),
diff --git a/apps/react/src/store/genre/slice.ts b/apps/react/src/store/genre/slice.ts
index 3c30ed3c..8fe70ecc 100644
--- a/apps/react/src/store/genre/slice.ts
+++ b/apps/react/src/store/genre/slice.ts
@@ -3,9 +3,7 @@ import { createSlice } from '@reduxjs/toolkit';
import { fetchGenres } from './dispatchers';
import { initialState } from './state';
-/**
- * Genre slice.
- */
+/** Genre slice. */
export const genresSlice = createSlice({
name: 'genres',
initialState,
diff --git a/apps/react/src/store/genre/state.ts b/apps/react/src/store/genre/state.ts
index 0090901c..6e2dd7e7 100644
--- a/apps/react/src/store/genre/state.ts
+++ b/apps/react/src/store/genre/state.ts
@@ -13,9 +13,7 @@ export type GenresState = {
readonly isLoading: boolean;
};
-/**
- * InitialState for GenresState.
- */
+/** Initial state for genres state. */
export const initialState: GenresState = {
isLoading: false,
genres: [],
diff --git a/apps/react/src/store/index.ts b/apps/react/src/store/index.ts
deleted file mode 100644
index d4068169..00000000
--- a/apps/react/src/store/index.ts
+++ /dev/null
@@ -1 +0,0 @@
-export * from './store';
diff --git a/apps/react/src/store/store.ts b/apps/react/src/store/store.ts
index 46e439c7..75c0d8cb 100644
--- a/apps/react/src/store/store.ts
+++ b/apps/react/src/store/store.ts
@@ -5,9 +5,7 @@ import {
import { genresSlice } from './genre/slice';
-/**
- * Store.
- */
+/** Store. */
export const store = configureStore({
reducer: {
genres: genresSlice.reducer,
@@ -20,20 +18,14 @@ export const store = configureStore({
}),
});
-/**
- * RootState type.
- */
+/** Root state type. */
export type RootState = ReturnType;
-/**
- * AppDispatch type.
- */
+/** App dispatch type. */
export type AppDispatch = typeof store.dispatch;
/** Typed `useDispatch` hook. */
export const useAppDispatch = (): AppDispatch => useDispatch();
-/**
- * Selector for using types.
- */
+/** Selector for using types. */
export const useAppSelector: TypedUseSelectorHook = useSelector;
diff --git a/apps/react/src/theme/styles.css b/apps/react/src/theme/styles.css
new file mode 100644
index 00000000..a46eaacc
--- /dev/null
+++ b/apps/react/src/theme/styles.css
@@ -0,0 +1,18 @@
+@import url("./variables.css");
+
+/* Global styles. */
+*,
+*::before,
+*::after {
+ box-sizing: border-box;
+ margin: 0;
+ padding: 0;
+}
+
+html {
+ font-size: 16px;
+}
+
+body {
+ font-family: Roboto, "Helvetica Neue", sans-serif;
+}
diff --git a/apps/react/src/theme/variables.css b/apps/react/src/theme/variables.css
new file mode 100644
index 00000000..2a546f9f
--- /dev/null
+++ b/apps/react/src/theme/variables.css
@@ -0,0 +1,4 @@
+:root {
+ --header-height: 64px;
+ --form-field-height: 54px;
+}
diff --git a/apps/react/vite-env.d.ts b/apps/react/vite-env.d.ts
index 9183a42b..144e5d79 100644
--- a/apps/react/vite-env.d.ts
+++ b/apps/react/vite-env.d.ts
@@ -3,12 +3,12 @@
interface ImportMetaEnv {
- /** Api base url. */
- readonly VITE_APP_API_BASE_URL: string;
+ /** Api base url. */
+ readonly VITE_APP_API_BASE_URL: string;
}
interface ImportMeta {
- /** Contains application environment data. */
- readonly env: ImportMetaEnv;
+ /** Contains application environment data. */
+ readonly env: ImportMetaEnv;
}
diff --git a/libs/theme/src/variables.css b/libs/theme/src/variables.css
index 252ef95a..148ffc90 100644
--- a/libs/theme/src/variables.css
+++ b/libs/theme/src/variables.css
@@ -1,6 +1,6 @@
:root {
/** Prevalent color in the application */
- --primary-color: rgb(249 115 22);
+ --primary-color: rgb(63 81 181);
--primary-contrast-color: rgb(255 255 255);
--primary-dark-color: rgb(234 88 12);
--primary-dark-contrast-color: rgb(255 255 255);
@@ -10,6 +10,11 @@
--background-contrast-color: rgb(0 0 0);
--error-color: rgb(255 0 0);
--border-color: rgb(0 0 0 / 15%);
+ --shadow-color: rgb(107 107 107 / 65%);
+ --hover-color: rgb(0 0 0 / 15%);
+ --primary-font-color: var(--primary-light-contrast-color);
+ --active-link-color: var(--primary-color);
+ --primary-background-color: var(--primary-contrast-color);
/* Variables for spaces */
--space-xs: 8px;
@@ -25,4 +30,10 @@
--font-size-md: 1.125rem;
--font-size-lg: 1.25rem;
--font-size-xl: 1.5rem;
+
+ /* Variables for font weights */
+ --font-weight-regular: 400;
+ --font-weight-medium: 500;
+ --font-weight-semibold: 600;
+ --font-weight-bold: 700;
}
diff --git a/package-lock.json b/package-lock.json
index 6d94f69e..358dca9d 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -19,6 +19,10 @@
"@angular/platform-browser": "18.0.5",
"@angular/platform-browser-dynamic": "18.0.5",
"@angular/router": "18.0.5",
+ "@emotion/react": "^11.13.0",
+ "@emotion/styled": "^11.13.0",
+ "@mui/icons-material": "^5.16.7",
+ "@mui/material": "^5.16.7",
"@reduxjs/toolkit": "1.9.3",
"axios": "^1.4.0",
"core-js": "^3.30.2",
@@ -1613,7 +1617,6 @@
"version": "7.24.7",
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz",
"integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==",
- "dev": true,
"dependencies": {
"@babel/highlight": "^7.24.7",
"picocolors": "^1.0.0"
@@ -1680,7 +1683,6 @@
"version": "7.24.7",
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.7.tgz",
"integrity": "sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==",
- "dev": true,
"dependencies": {
"@babel/types": "^7.24.7",
"@jridgewell/gen-mapping": "^0.3.5",
@@ -1819,7 +1821,6 @@
"version": "7.24.7",
"resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz",
"integrity": "sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==",
- "dev": true,
"dependencies": {
"@babel/types": "^7.24.7"
},
@@ -1831,7 +1832,6 @@
"version": "7.24.7",
"resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.24.7.tgz",
"integrity": "sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==",
- "dev": true,
"dependencies": {
"@babel/template": "^7.24.7",
"@babel/types": "^7.24.7"
@@ -1844,7 +1844,6 @@
"version": "7.24.7",
"resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.7.tgz",
"integrity": "sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==",
- "dev": true,
"dependencies": {
"@babel/types": "^7.24.7"
},
@@ -1869,7 +1868,6 @@
"version": "7.24.7",
"resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz",
"integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==",
- "dev": true,
"dependencies": {
"@babel/traverse": "^7.24.7",
"@babel/types": "^7.24.7"
@@ -1982,7 +1980,6 @@
"version": "7.24.7",
"resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz",
"integrity": "sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==",
- "dev": true,
"dependencies": {
"@babel/types": "^7.24.7"
},
@@ -1994,7 +1991,6 @@
"version": "7.24.7",
"resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.7.tgz",
"integrity": "sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg==",
- "dev": true,
"engines": {
"node": ">=6.9.0"
}
@@ -2003,7 +1999,6 @@
"version": "7.24.7",
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz",
"integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==",
- "dev": true,
"engines": {
"node": ">=6.9.0"
}
@@ -2049,7 +2044,6 @@
"version": "7.24.7",
"resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz",
"integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==",
- "dev": true,
"dependencies": {
"@babel/helper-validator-identifier": "^7.24.7",
"chalk": "^2.4.2",
@@ -2064,7 +2058,6 @@
"version": "7.24.7",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.7.tgz",
"integrity": "sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==",
- "dev": true,
"bin": {
"parser": "bin/babel-parser.js"
},
@@ -3526,7 +3519,6 @@
"version": "7.24.7",
"resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.7.tgz",
"integrity": "sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==",
- "dev": true,
"dependencies": {
"@babel/code-frame": "^7.24.7",
"@babel/parser": "^7.24.7",
@@ -3540,7 +3532,6 @@
"version": "7.24.7",
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.7.tgz",
"integrity": "sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==",
- "dev": true,
"dependencies": {
"@babel/code-frame": "^7.24.7",
"@babel/generator": "^7.24.7",
@@ -3561,7 +3552,6 @@
"version": "7.24.7",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.7.tgz",
"integrity": "sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==",
- "dev": true,
"dependencies": {
"@babel/helper-string-parser": "^7.24.7",
"@babel/helper-validator-identifier": "^7.24.7",
@@ -3618,6 +3608,187 @@
"node": ">=10.0.0"
}
},
+ "node_modules/@emotion/babel-plugin": {
+ "version": "11.12.0",
+ "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.12.0.tgz",
+ "integrity": "sha512-y2WQb+oP8Jqvvclh8Q55gLUyb7UFvgv7eJfsj7td5TToBrIUtPay2kMrZi4xjq9qw2vD0ZR5fSho0yqoFgX7Rw==",
+ "dependencies": {
+ "@babel/helper-module-imports": "^7.16.7",
+ "@babel/runtime": "^7.18.3",
+ "@emotion/hash": "^0.9.2",
+ "@emotion/memoize": "^0.9.0",
+ "@emotion/serialize": "^1.2.0",
+ "babel-plugin-macros": "^3.1.0",
+ "convert-source-map": "^1.5.0",
+ "escape-string-regexp": "^4.0.0",
+ "find-root": "^1.1.0",
+ "source-map": "^0.5.7",
+ "stylis": "4.2.0"
+ }
+ },
+ "node_modules/@emotion/babel-plugin/node_modules/babel-plugin-macros": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz",
+ "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==",
+ "dependencies": {
+ "@babel/runtime": "^7.12.5",
+ "cosmiconfig": "^7.0.0",
+ "resolve": "^1.19.0"
+ },
+ "engines": {
+ "node": ">=10",
+ "npm": ">=6"
+ }
+ },
+ "node_modules/@emotion/babel-plugin/node_modules/cosmiconfig": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz",
+ "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==",
+ "dependencies": {
+ "@types/parse-json": "^4.0.0",
+ "import-fresh": "^3.2.1",
+ "parse-json": "^5.0.0",
+ "path-type": "^4.0.0",
+ "yaml": "^1.10.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@emotion/babel-plugin/node_modules/escape-string-regexp": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@emotion/babel-plugin/node_modules/source-map": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+ "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/@emotion/cache": {
+ "version": "11.13.1",
+ "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.13.1.tgz",
+ "integrity": "sha512-iqouYkuEblRcXmylXIwwOodiEK5Ifl7JcX7o6V4jI3iW4mLXX3dmt5xwBtIkJiQEXFAI+pC8X0i67yiPkH9Ucw==",
+ "dependencies": {
+ "@emotion/memoize": "^0.9.0",
+ "@emotion/sheet": "^1.4.0",
+ "@emotion/utils": "^1.4.0",
+ "@emotion/weak-memoize": "^0.4.0",
+ "stylis": "4.2.0"
+ }
+ },
+ "node_modules/@emotion/hash": {
+ "version": "0.9.2",
+ "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.2.tgz",
+ "integrity": "sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g=="
+ },
+ "node_modules/@emotion/is-prop-valid": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.3.0.tgz",
+ "integrity": "sha512-SHetuSLvJDzuNbOdtPVbq6yMMMlLoW5Q94uDqJZqy50gcmAjxFkVqmzqSGEFq9gT2iMuIeKV1PXVWmvUhuZLlQ==",
+ "dependencies": {
+ "@emotion/memoize": "^0.9.0"
+ }
+ },
+ "node_modules/@emotion/memoize": {
+ "version": "0.9.0",
+ "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.9.0.tgz",
+ "integrity": "sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ=="
+ },
+ "node_modules/@emotion/react": {
+ "version": "11.13.0",
+ "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.13.0.tgz",
+ "integrity": "sha512-WkL+bw1REC2VNV1goQyfxjx1GYJkcc23CRQkXX+vZNLINyfI7o+uUn/rTGPt/xJ3bJHd5GcljgnxHf4wRw5VWQ==",
+ "dependencies": {
+ "@babel/runtime": "^7.18.3",
+ "@emotion/babel-plugin": "^11.12.0",
+ "@emotion/cache": "^11.13.0",
+ "@emotion/serialize": "^1.3.0",
+ "@emotion/use-insertion-effect-with-fallbacks": "^1.1.0",
+ "@emotion/utils": "^1.4.0",
+ "@emotion/weak-memoize": "^0.4.0",
+ "hoist-non-react-statics": "^3.3.1"
+ },
+ "peerDependencies": {
+ "react": ">=16.8.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@emotion/serialize": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.3.0.tgz",
+ "integrity": "sha512-jACuBa9SlYajnpIVXB+XOXnfJHyckDfe6fOpORIM6yhBDlqGuExvDdZYHDQGoDf3bZXGv7tNr+LpLjJqiEQ6EA==",
+ "dependencies": {
+ "@emotion/hash": "^0.9.2",
+ "@emotion/memoize": "^0.9.0",
+ "@emotion/unitless": "^0.9.0",
+ "@emotion/utils": "^1.4.0",
+ "csstype": "^3.0.2"
+ }
+ },
+ "node_modules/@emotion/sheet": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.4.0.tgz",
+ "integrity": "sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg=="
+ },
+ "node_modules/@emotion/styled": {
+ "version": "11.13.0",
+ "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.13.0.tgz",
+ "integrity": "sha512-tkzkY7nQhW/zC4hztlwucpT8QEZ6eUzpXDRhww/Eej4tFfO0FxQYWRyg/c5CCXa4d/f174kqeXYjuQRnhzf6dA==",
+ "dependencies": {
+ "@babel/runtime": "^7.18.3",
+ "@emotion/babel-plugin": "^11.12.0",
+ "@emotion/is-prop-valid": "^1.3.0",
+ "@emotion/serialize": "^1.3.0",
+ "@emotion/use-insertion-effect-with-fallbacks": "^1.1.0",
+ "@emotion/utils": "^1.4.0"
+ },
+ "peerDependencies": {
+ "@emotion/react": "^11.0.0-rc.0",
+ "react": ">=16.8.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@emotion/unitless": {
+ "version": "0.9.0",
+ "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.9.0.tgz",
+ "integrity": "sha512-TP6GgNZtmtFaFcsOgExdnfxLLpRDla4Q66tnenA9CktvVSdNKDvMVuUah4QvWPIpNjrWsGg3qeGo9a43QooGZQ=="
+ },
+ "node_modules/@emotion/use-insertion-effect-with-fallbacks": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.1.0.tgz",
+ "integrity": "sha512-+wBOcIV5snwGgI2ya3u99D7/FJquOIniQT1IKyDsBmEgwvpxMNeS65Oib7OnE2d2aY+3BU4OiH+0Wchf8yk3Hw==",
+ "peerDependencies": {
+ "react": ">=16.8.0"
+ }
+ },
+ "node_modules/@emotion/utils": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.4.0.tgz",
+ "integrity": "sha512-spEnrA1b6hDR/C68lC2M7m6ALPUHZC0lIY7jAS/B/9DuuO1ZP04eov8SMv/6fwRd8pzmsn2AuJEznRREWlQrlQ=="
+ },
+ "node_modules/@emotion/weak-memoize": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.4.0.tgz",
+ "integrity": "sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg=="
+ },
"node_modules/@es-joy/jsdoccomment": {
"version": "0.36.1",
"resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.36.1.tgz",
@@ -4494,7 +4665,6 @@
"version": "0.3.5",
"resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz",
"integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==",
- "dev": true,
"dependencies": {
"@jridgewell/set-array": "^1.2.1",
"@jridgewell/sourcemap-codec": "^1.4.10",
@@ -4508,7 +4678,6 @@
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
"integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
- "dev": true,
"engines": {
"node": ">=6.0.0"
}
@@ -4517,7 +4686,6 @@
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz",
"integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==",
- "dev": true,
"engines": {
"node": ">=6.0.0"
}
@@ -4535,14 +4703,12 @@
"node_modules/@jridgewell/sourcemap-codec": {
"version": "1.4.15",
"resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
- "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==",
- "dev": true
+ "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg=="
},
"node_modules/@jridgewell/trace-mapping": {
"version": "0.3.25",
"resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",
"integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",
- "dev": true,
"dependencies": {
"@jridgewell/resolve-uri": "^3.1.0",
"@jridgewell/sourcemap-codec": "^1.4.14"
@@ -5516,6 +5682,222 @@
"win32"
]
},
+ "node_modules/@mui/core-downloads-tracker": {
+ "version": "5.16.7",
+ "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.16.7.tgz",
+ "integrity": "sha512-RtsCt4Geed2/v74sbihWzzRs+HsIQCfclHeORh5Ynu2fS4icIKozcSubwuG7vtzq2uW3fOR1zITSP84TNt2GoQ==",
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/mui-org"
+ }
+ },
+ "node_modules/@mui/icons-material": {
+ "version": "5.16.7",
+ "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.16.7.tgz",
+ "integrity": "sha512-UrGwDJCXEszbDI7yV047BYU5A28eGJ79keTCP4cc74WyncuVrnurlmIRxaHL8YK+LI1Kzq+/JM52IAkNnv4u+Q==",
+ "dependencies": {
+ "@babel/runtime": "^7.23.9"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/mui-org"
+ },
+ "peerDependencies": {
+ "@mui/material": "^5.0.0",
+ "@types/react": "^17.0.0 || ^18.0.0",
+ "react": "^17.0.0 || ^18.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@mui/material": {
+ "version": "5.16.7",
+ "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.16.7.tgz",
+ "integrity": "sha512-cwwVQxBhK60OIOqZOVLFt55t01zmarKJiJUWbk0+8s/Ix5IaUzAShqlJchxsIQ4mSrWqgcKCCXKtIlG5H+/Jmg==",
+ "dependencies": {
+ "@babel/runtime": "^7.23.9",
+ "@mui/core-downloads-tracker": "^5.16.7",
+ "@mui/system": "^5.16.7",
+ "@mui/types": "^7.2.15",
+ "@mui/utils": "^5.16.6",
+ "@popperjs/core": "^2.11.8",
+ "@types/react-transition-group": "^4.4.10",
+ "clsx": "^2.1.0",
+ "csstype": "^3.1.3",
+ "prop-types": "^15.8.1",
+ "react-is": "^18.3.1",
+ "react-transition-group": "^4.4.5"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/mui-org"
+ },
+ "peerDependencies": {
+ "@emotion/react": "^11.5.0",
+ "@emotion/styled": "^11.3.0",
+ "@types/react": "^17.0.0 || ^18.0.0",
+ "react": "^17.0.0 || ^18.0.0",
+ "react-dom": "^17.0.0 || ^18.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@emotion/react": {
+ "optional": true
+ },
+ "@emotion/styled": {
+ "optional": true
+ },
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@mui/private-theming": {
+ "version": "5.16.6",
+ "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.16.6.tgz",
+ "integrity": "sha512-rAk+Rh8Clg7Cd7shZhyt2HGTTE5wYKNSJ5sspf28Fqm/PZ69Er9o6KX25g03/FG2dfpg5GCwZh/xOojiTfm3hw==",
+ "dependencies": {
+ "@babel/runtime": "^7.23.9",
+ "@mui/utils": "^5.16.6",
+ "prop-types": "^15.8.1"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/mui-org"
+ },
+ "peerDependencies": {
+ "@types/react": "^17.0.0 || ^18.0.0",
+ "react": "^17.0.0 || ^18.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@mui/styled-engine": {
+ "version": "5.16.6",
+ "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.16.6.tgz",
+ "integrity": "sha512-zaThmS67ZmtHSWToTiHslbI8jwrmITcN93LQaR2lKArbvS7Z3iLkwRoiikNWutx9MBs8Q6okKvbZq1RQYB3v7g==",
+ "dependencies": {
+ "@babel/runtime": "^7.23.9",
+ "@emotion/cache": "^11.11.0",
+ "csstype": "^3.1.3",
+ "prop-types": "^15.8.1"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/mui-org"
+ },
+ "peerDependencies": {
+ "@emotion/react": "^11.4.1",
+ "@emotion/styled": "^11.3.0",
+ "react": "^17.0.0 || ^18.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@emotion/react": {
+ "optional": true
+ },
+ "@emotion/styled": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@mui/system": {
+ "version": "5.16.7",
+ "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.16.7.tgz",
+ "integrity": "sha512-Jncvs/r/d/itkxh7O7opOunTqbbSSzMTHzZkNLM+FjAOg+cYAZHrPDlYe1ZGKUYORwwb2XexlWnpZp0kZ4AHuA==",
+ "dependencies": {
+ "@babel/runtime": "^7.23.9",
+ "@mui/private-theming": "^5.16.6",
+ "@mui/styled-engine": "^5.16.6",
+ "@mui/types": "^7.2.15",
+ "@mui/utils": "^5.16.6",
+ "clsx": "^2.1.0",
+ "csstype": "^3.1.3",
+ "prop-types": "^15.8.1"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/mui-org"
+ },
+ "peerDependencies": {
+ "@emotion/react": "^11.5.0",
+ "@emotion/styled": "^11.3.0",
+ "@types/react": "^17.0.0 || ^18.0.0",
+ "react": "^17.0.0 || ^18.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@emotion/react": {
+ "optional": true
+ },
+ "@emotion/styled": {
+ "optional": true
+ },
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@mui/types": {
+ "version": "7.2.15",
+ "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.15.tgz",
+ "integrity": "sha512-nbo7yPhtKJkdf9kcVOF8JZHPZTmqXjJ/tI0bdWgHg5tp9AnIN4Y7f7wm9T+0SyGYJk76+GYZ8Q5XaTYAsUHN0Q==",
+ "peerDependencies": {
+ "@types/react": "^17.0.0 || ^18.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@mui/utils": {
+ "version": "5.16.6",
+ "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.16.6.tgz",
+ "integrity": "sha512-tWiQqlhxAt3KENNiSRL+DIn9H5xNVK6Jjf70x3PnfQPz1MPBdh7yyIcAyVBT9xiw7hP3SomRhPR7hzBMBCjqEA==",
+ "dependencies": {
+ "@babel/runtime": "^7.23.9",
+ "@mui/types": "^7.2.15",
+ "@types/prop-types": "^15.7.12",
+ "clsx": "^2.1.1",
+ "prop-types": "^15.8.1",
+ "react-is": "^18.3.1"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/mui-org"
+ },
+ "peerDependencies": {
+ "@types/react": "^17.0.0 || ^18.0.0",
+ "react": "^17.0.0 || ^18.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
"node_modules/@nabla/vite-plugin-eslint": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/@nabla/vite-plugin-eslint/-/vite-plugin-eslint-1.6.0.tgz",
@@ -7400,6 +7782,15 @@
"node": ">=14"
}
},
+ "node_modules/@popperjs/core": {
+ "version": "2.11.8",
+ "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz",
+ "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==",
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/popperjs"
+ }
+ },
"node_modules/@reduxjs/toolkit": {
"version": "1.9.3",
"resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-1.9.3.tgz",
@@ -8730,8 +9121,7 @@
"node_modules/@types/parse-json": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz",
- "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==",
- "dev": true
+ "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw=="
},
"node_modules/@types/prop-types": {
"version": "15.7.12",
@@ -8789,6 +9179,14 @@
"@types/react-router": "*"
}
},
+ "node_modules/@types/react-transition-group": {
+ "version": "4.4.11",
+ "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.11.tgz",
+ "integrity": "sha512-RM05tAniPZ5DZPzzNFP+DmrcOdD0efDUxMy3145oljWSl3x9ZV5vhme98gTxFrj2lhXvmGNnUiuDyJgY9IKkNA==",
+ "dependencies": {
+ "@types/react": "*"
+ }
+ },
"node_modules/@types/retry": {
"version": "0.12.2",
"resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz",
@@ -9992,7 +10390,6 @@
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
"integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
- "dev": true,
"dependencies": {
"color-convert": "^1.9.0"
},
@@ -10938,7 +11335,6 @@
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
"integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
- "dev": true,
"engines": {
"node": ">=6"
}
@@ -11042,7 +11438,6 @@
"version": "2.4.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
"integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
- "dev": true,
"dependencies": {
"ansi-styles": "^3.2.1",
"escape-string-regexp": "^1.0.5",
@@ -11269,11 +11664,18 @@
"node": ">=0.10.0"
}
},
+ "node_modules/clsx": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz",
+ "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
"node_modules/color-convert": {
"version": "1.9.3",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
"integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
- "dev": true,
"dependencies": {
"color-name": "1.1.3"
}
@@ -11281,8 +11683,7 @@
"node_modules/color-name": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
- "dev": true
+ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="
},
"node_modules/color-support": {
"version": "1.1.3",
@@ -11491,8 +11892,7 @@
"node_modules/convert-source-map": {
"version": "1.9.0",
"resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz",
- "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==",
- "dev": true
+ "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A=="
},
"node_modules/cookie": {
"version": "0.6.0",
@@ -12098,7 +12498,6 @@
"version": "4.3.5",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz",
"integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==",
- "dev": true,
"dependencies": {
"ms": "2.1.2"
},
@@ -12467,6 +12866,15 @@
"node": ">=6.0.0"
}
},
+ "node_modules/dom-helpers": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz",
+ "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==",
+ "dependencies": {
+ "@babel/runtime": "^7.8.7",
+ "csstype": "^3.0.2"
+ }
+ },
"node_modules/dom-serializer": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz",
@@ -12723,7 +13131,6 @@
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
"integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
- "dev": true,
"dependencies": {
"is-arrayish": "^0.2.1"
}
@@ -12938,7 +13345,6 @@
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
"integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
- "dev": true,
"engines": {
"node": ">=0.8.0"
}
@@ -14209,6 +14615,11 @@
"url": "https://github.com/avajs/find-cache-dir?sponsor=1"
}
},
+ "node_modules/find-root": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz",
+ "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng=="
+ },
"node_modules/find-up": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
@@ -14655,7 +15066,6 @@
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
"integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
- "dev": true,
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
@@ -14903,7 +15313,6 @@
"version": "11.12.0",
"resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
"integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
- "dev": true,
"engines": {
"node": ">=4"
}
@@ -15011,7 +15420,6 @@
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
"integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
- "dev": true,
"engines": {
"node": ">=4"
}
@@ -15077,7 +15485,6 @@
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
"integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
- "dev": true,
"dependencies": {
"function-bind": "^1.1.2"
},
@@ -15555,7 +15962,6 @@
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
"integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
- "dev": true,
"dependencies": {
"parent-module": "^1.0.0",
"resolve-from": "^4.0.0"
@@ -15681,8 +16087,7 @@
"node_modules/is-arrayish": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
- "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==",
- "dev": true
+ "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg=="
},
"node_modules/is-bigint": {
"version": "1.0.4",
@@ -15755,7 +16160,6 @@
"version": "2.14.0",
"resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.14.0.tgz",
"integrity": "sha512-a5dFJih5ZLYlRtDc0dZWP7RiKr6xIKzmn/oAYCDvdLThadVgyJwlaoQPmRtMSpz+rk0OGAgIu+TcM9HUF0fk1A==",
- "dev": true,
"dependencies": {
"hasown": "^2.0.2"
},
@@ -16548,7 +16952,6 @@
"version": "2.5.2",
"resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
"integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
- "dev": true,
"bin": {
"jsesc": "bin/jsesc"
},
@@ -16565,8 +16968,7 @@
"node_modules/json-parse-even-better-errors": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
- "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
- "dev": true
+ "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w=="
},
"node_modules/json-schema-traverse": {
"version": "1.0.0",
@@ -17950,8 +18352,7 @@
"node_modules/ms": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
- "dev": true
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
},
"node_modules/msgpackr": {
"version": "1.11.0",
@@ -18705,7 +19106,6 @@
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
"integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
- "dev": true,
"engines": {
"node": ">=0.10.0"
}
@@ -19153,7 +19553,6 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
"integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
- "dev": true,
"dependencies": {
"callsites": "^3.0.0"
},
@@ -19165,7 +19564,6 @@
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
"integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
- "dev": true,
"dependencies": {
"@babel/code-frame": "^7.0.0",
"error-ex": "^1.3.1",
@@ -19182,8 +19580,7 @@
"node_modules/parse-json/node_modules/lines-and-columns": {
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
- "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
- "dev": true
+ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg=="
},
"node_modules/parse-node-version": {
"version": "1.0.1",
@@ -19289,8 +19686,7 @@
"node_modules/path-parse": {
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
- "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
- "dev": true
+ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
},
"node_modules/path-scurry": {
"version": "1.11.1",
@@ -19327,7 +19723,6 @@
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
"integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
- "dev": true,
"engines": {
"node": ">=8"
}
@@ -19352,8 +19747,7 @@
"node_modules/picocolors": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz",
- "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==",
- "dev": true
+ "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew=="
},
"node_modules/picomatch": {
"version": "4.0.2",
@@ -20218,7 +20612,6 @@
"version": "15.8.1",
"resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz",
"integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==",
- "dev": true,
"dependencies": {
"loose-envify": "^1.4.0",
"object-assign": "^4.1.1",
@@ -20228,8 +20621,7 @@
"node_modules/prop-types/node_modules/react-is": {
"version": "16.13.1",
"resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
- "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==",
- "dev": true
+ "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
},
"node_modules/proxy-addr": {
"version": "2.0.7",
@@ -20456,6 +20848,21 @@
"react-dom": ">=16.8"
}
},
+ "node_modules/react-transition-group": {
+ "version": "4.4.5",
+ "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz",
+ "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==",
+ "dependencies": {
+ "@babel/runtime": "^7.5.5",
+ "dom-helpers": "^5.0.1",
+ "loose-envify": "^1.4.0",
+ "prop-types": "^15.6.2"
+ },
+ "peerDependencies": {
+ "react": ">=16.6.0",
+ "react-dom": ">=16.6.0"
+ }
+ },
"node_modules/read-cache": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",
@@ -20850,7 +21257,6 @@
"version": "1.22.2",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz",
"integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==",
- "dev": true,
"dependencies": {
"is-core-module": "^2.11.0",
"path-parse": "^1.0.7",
@@ -20867,7 +21273,6 @@
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
"integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
- "dev": true,
"engines": {
"node": ">=4"
}
@@ -22505,6 +22910,11 @@
"node": ">=8"
}
},
+ "node_modules/stylis": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz",
+ "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw=="
+ },
"node_modules/stylus": {
"version": "0.59.0",
"resolved": "https://registry.npmjs.org/stylus/-/stylus-0.59.0.tgz",
@@ -22601,7 +23011,6 @@
"version": "5.5.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
"integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
- "dev": true,
"dependencies": {
"has-flag": "^3.0.0"
},
@@ -22647,7 +23056,6 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
"integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
- "dev": true,
"engines": {
"node": ">= 0.4"
},
@@ -23016,7 +23424,6 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
"integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
- "dev": true,
"engines": {
"node": ">=4"
}
@@ -25115,7 +25522,6 @@
"version": "1.10.2",
"resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz",
"integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==",
- "dev": true,
"engines": {
"node": ">= 6"
}
diff --git a/package.json b/package.json
index 4578c472..73b9b4a2 100644
--- a/package.json
+++ b/package.json
@@ -37,6 +37,10 @@
"@angular/platform-browser": "18.0.5",
"@angular/platform-browser-dynamic": "18.0.5",
"@angular/router": "18.0.5",
+ "@emotion/react": "^11.13.0",
+ "@emotion/styled": "^11.13.0",
+ "@mui/icons-material": "^5.16.7",
+ "@mui/material": "^5.16.7",
"@reduxjs/toolkit": "1.9.3",
"axios": "^1.4.0",
"core-js": "^3.30.2",