diff --git a/.dockerignore b/.dockerignore
new file mode 100644
index 0000000..49ef682
--- /dev/null
+++ b/.dockerignore
@@ -0,0 +1,34 @@
+.git
+.github
+.dockerignore
+.gitattributes
+.gitignore
+.idea
+.vscode
+
+__pycache__/
+*.py[cod]
+*$py.class
+*.so
+htmlcov/
+.coverage
+.coverage.*
+.pylintrc
+.pytest_cache/
+.venv
+venv
+
+.DS_Store
+.AppleDouble
+.LSOverride
+._*
+
+*/node_modules
+*/dist
+*/data/db
+*/mealie/test
+*/mealie/.temp
+
+model.crfmodel
+
+crowdin.yml
diff --git a/Taskfile.yml b/Taskfile.yml
index 854f425..188371a 100644
--- a/Taskfile.yml
+++ b/Taskfile.yml
@@ -21,13 +21,8 @@ tasks:
desc: runs the backend server
cmds:
- poetry run python backend/app.py
- fe:i:
- desc: runs the install package
- dir: frontend
+ docker:
+ desc: builds and runs the production docker image locally
+ dir: docker
cmds:
- - pnpm i
- fe:
- desc: runs the frontend server
- dir: frontend
- cmds:
- - pnpm dev
+ - docker compose -f docker-compose.yml -p fuware up -d --build
diff --git a/backend/core/logger/logconf.prod.json b/backend/core/logger/logconf.prod.json
index cc2c7ef..1103fd2 100644
--- a/backend/core/logger/logconf.prod.json
+++ b/backend/core/logger/logconf.prod.json
@@ -39,7 +39,7 @@
"class": "logging.handlers.RotatingFileHandler",
"level": "DEBUG",
"formatter": "detailed",
- "filename": "${DATA_DIR}/mealie.log",
+ "filename": "data/fuware.log",
"maxBytes": 10000,
"backupCount": 3
}
diff --git a/docker/Dockerfile b/docker/Dockerfile
new file mode 100644
index 0000000..e0fbfd1
--- /dev/null
+++ b/docker/Dockerfile
@@ -0,0 +1,104 @@
+###############################################
+# Base Image - Python
+###############################################
+FROM python:3.10-slim AS python-base
+
+ENV FUWARE_HOME="/app"
+
+ENV PYTHONUNBUFFERED=1 \
+ PYTHONDONTWRITEBYTECODE=1 \
+ PIP_NO_CACHE_DIR=off \
+ PIP_DISABLE_PIP_VERSION_CHECK=on \
+ PIP_DEFAULT_TIMEOUT=100 \
+ POETRY_HOME="/opt/poetry" \
+ POETRY_VIRTUALENVS_IN_PROJECT=true \
+ POETRY_NO_INTERACTION=1 \
+ PYSETUP_PATH="/opt/pysetup" \
+ VENV_PATH="/opt/pysetup/.venv"
+
+# prepend poetry and venv to path
+ENV PATH="$POETRY_HOME/bin:$VENV_PATH/bin:$PATH"
+
+# create user account
+RUN useradd -u 911 -U -d $FUWARE_HOME -s /bin/bash abc \
+ && usermod -G users abc \
+ && mkdir $FUWARE_HOME
+
+###############################################
+# Builder Image
+###############################################
+FROM python-base AS builder-base
+RUN apt-get update \
+ && apt-get install --no-install-recommends -y \
+ curl \
+ build-essential \
+ libpq-dev \
+ libwebp-dev \
+ # LDAP Dependencies
+ libsasl2-dev libldap2-dev libssl-dev \
+ gnupg gnupg2 gnupg1 \
+ && rm -rf /var/lib/apt/lists/* \
+ && pip install -U --no-cache-dir pip
+
+# install poetry - respects $POETRY_VERSION & $POETRY_HOME
+ENV POETRY_VERSION=1.3.1
+RUN curl -sSL https://install.python-poetry.org | python3 -
+
+# copy project requirement files here to ensure they will be cached.
+WORKDIR $PYSETUP_PATH
+COPY ./poetry.lock ./pyproject.toml ./
+
+# install runtime deps - uses $POETRY_VIRTUALENVS_IN_PROJECT internally
+RUN poetry install --only main
+
+###############################################
+# Production Image
+###############################################
+FROM python-base AS production
+ENV PRODUCTION=true
+ENV TESTING=false
+
+ARG COMMIT
+ENV GIT_COMMIT_HASH=$COMMIT
+
+RUN apt-get update \
+ && apt-get install --no-install-recommends -y \
+ gosu \
+ iproute2 \
+ libldap-common \
+ libldap-2.5 \
+ && rm -rf /var/lib/apt/lists/*
+
+# create directory used for Docker Secrets
+RUN mkdir -p /run/secrets
+
+# copying poetry and venv into image
+COPY --from=builder-base $POETRY_HOME $POETRY_HOME
+COPY --from=builder-base $PYSETUP_PATH $PYSETUP_PATH
+
+# copy backend
+COPY ./backend $FUWARE_HOME/backend
+COPY ./poetry.lock ./pyproject.toml $FUWARE_HOME/
+
+# Alembic
+COPY ./alembic $FUWARE_HOME/alembic
+COPY ./alembic.ini $FUWARE_HOME/
+
+# venv already has runtime deps installed we get a quicker install
+WORKDIR $FUWARE_HOME
+RUN . $VENV_PATH/bin/activate && poetry install --only main
+WORKDIR /
+
+VOLUME [ "$FUWARE_HOME/data/" ]
+ENV APP_PORT=9000
+
+EXPOSE ${APP_PORT}
+
+# ----------------------------------
+ENV HOST 0.0.0.0
+
+EXPOSE ${APP_PORT}
+COPY ./docker/entry.sh $FUWARE_HOME/run.sh
+
+RUN chmod +x $FUWARE_HOME/run.sh
+ENTRYPOINT ["/app/run.sh"]
diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml
new file mode 100644
index 0000000..ffda285
--- /dev/null
+++ b/docker/docker-compose.yml
@@ -0,0 +1,30 @@
+services:
+ fuware:
+ container_name: fuware
+ image: fuware:dev
+ build:
+ context: ../
+ target: production
+ dockerfile: ./docker/Dockerfile
+ restart: always
+ volumes:
+ - fuware-data:/app/data/
+ ports:
+ - 9091:9000
+ environment:
+ ALLOW_SIGNUP: "false"
+ LOG_LEVEL: "DEBUG"
+
+ # =====================================
+ # Email Configuration
+ # SMTP_HOST=
+ # SMTP_PORT=587
+ # SMTP_FROM_NAME=Mealie
+ # SMTP_AUTH_STRATEGY=TLS # Options: 'TLS', 'SSL', 'NONE'
+ # SMTP_FROM_EMAIL=
+ # SMTP_USER=
+ # SMTP_PASSWORD=
+
+volumes:
+ fuware-data:
+ driver: local
diff --git a/docker/entry.sh b/docker/entry.sh
new file mode 100644
index 0000000..71f514e
--- /dev/null
+++ b/docker/entry.sh
@@ -0,0 +1,44 @@
+#!/bin/bash
+# Start Backend API
+
+# Get PUID/PGID
+PUID=${PUID:-911}
+PGID=${PGID:-911}
+BASH_SOURCE=${BASH_SOURCE:-$0}
+
+add_user() {
+ groupmod -o -g "$PGID" abc
+ usermod -o -u "$PUID" abc
+}
+
+change_user() {
+ if [ "$(id -u)" = $PUID ]; then
+ echo "
+ User uid: $PUID
+ User gid: $PGID
+ "
+ elif [ "$(id -u)" = "0" ]; then
+ # If container is started as root then create a new user and switch to it
+ add_user
+ chown -R $PUID:$PGID /app
+
+ echo "Switching to dedicated user"
+ exec gosu $PUID "$BASH_SOURCE" "$@"
+ fi
+}
+
+init() {
+ # $FUWARE_HOME directory
+ cd /app
+
+ # Activate our virtual environment here
+ . /opt/pysetup/.venv/bin/activate
+}
+
+change_user
+init
+
+# Start API
+HOST_IP=`/sbin/ip route|awk '/default/ { print $3 }'`
+
+exec python /app/backend/main.py
diff --git a/frontend/.dockerignore b/frontend/.dockerignore
deleted file mode 100644
index 8d8bf1c..0000000
--- a/frontend/.dockerignore
+++ /dev/null
@@ -1,7 +0,0 @@
-Dockerfile
-.dockerignore
-node_modules
-README.md
-.git
-.gitignore
-.env
diff --git a/frontend/.eslintrc.cjs b/frontend/.eslintrc.cjs
deleted file mode 100644
index db21f0e..0000000
--- a/frontend/.eslintrc.cjs
+++ /dev/null
@@ -1,41 +0,0 @@
-module.exports = {
- root: true,
- env: { browser: true, es2021: true },
- plugins: ['react-refresh'],
- extends: [
- 'eslint:recommended',
- 'plugin:react/recommended',
- 'plugin:react/jsx-runtime',
- 'plugin:react-hooks/recommended',
- ],
- overrides: [
- {
- env: {
- node: true,
- },
- files: ['.eslintrc.{js,cjs}'],
- parserOptions: {
- sourceType: 'script',
- },
- },
- ],
- ignorePatterns: ['dist', '.eslintrc.cjs'],
- parserOptions: { ecmaVersion: 'latest', sourceType: 'module' },
- settings: { react: { version: '18.2' } },
- rules: {
- 'react/jsx-no-target-blank': 'off',
- 'react/prop-types': 'off',
- 'react-refresh/only-export-components': [
- 'warn',
- { allowConstantExport: true },
- ],
- 'react-hooks/exhaustive-deps': 'off',
- // indent: ['warn', 2],
- quotes: ['error', 'single'],
- semi: ['error', 'never'],
- 'max-lines-per-function': [1, 300],
- 'no-unused-vars': ['warn'],
- 'no-prototype-builtins': 'off',
- 'react/display-name': 'off',
- },
-}
diff --git a/frontend/.gitignore b/frontend/.gitignore
deleted file mode 100644
index a547bf3..0000000
--- a/frontend/.gitignore
+++ /dev/null
@@ -1,24 +0,0 @@
-# Logs
-logs
-*.log
-npm-debug.log*
-yarn-debug.log*
-yarn-error.log*
-pnpm-debug.log*
-lerna-debug.log*
-
-node_modules
-dist
-dist-ssr
-*.local
-
-# Editor directories and files
-.vscode/*
-!.vscode/extensions.json
-.idea
-.DS_Store
-*.suo
-*.ntvs*
-*.njsproj
-*.sln
-*.sw?
diff --git a/frontend/.lintstagedrc b/frontend/.lintstagedrc
deleted file mode 100644
index 9cac71b..0000000
--- a/frontend/.lintstagedrc
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "src/**/*.{js,jsx}": ["pnpm eslint", "pnpm prettier"]
-}
diff --git a/frontend/.prettierignore b/frontend/.prettierignore
deleted file mode 100644
index 4f671c2..0000000
--- a/frontend/.prettierignore
+++ /dev/null
@@ -1,4 +0,0 @@
-
-/node_modules
-/public
-/build
diff --git a/frontend/.prettierrc b/frontend/.prettierrc
deleted file mode 100644
index 41d3fb8..0000000
--- a/frontend/.prettierrc
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "trailingComma": "all",
- "useTabs": false,
- "tabWidth": 2,
- "semi": false,
- "singleQuote": true
-}
diff --git a/frontend/Dockerfile b/frontend/Dockerfile
deleted file mode 100644
index e4294c7..0000000
--- a/frontend/Dockerfile
+++ /dev/null
@@ -1,14 +0,0 @@
-FROM node:18.19.0-alpine3.19
-
-WORKDIR /app/client
-
-COPY package*.json .
-RUN npm i
-
-COPY . .
-ENV NODE_ENV=production
-ENV VITE_LOGIN_KEY=7fo24CMyIc
-
-EXPOSE 5000
-
-CMD ["npm", "run", "dev"]
diff --git a/frontend/README.md b/frontend/README.md
deleted file mode 100644
index f768e33..0000000
--- a/frontend/README.md
+++ /dev/null
@@ -1,8 +0,0 @@
-# React + Vite
-
-This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.
-
-Currently, two official plugins are available:
-
-- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/README.md) uses [Babel](https://babeljs.io/) for Fast Refresh
-- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh
diff --git a/frontend/index.html b/frontend/index.html
deleted file mode 100644
index cdf59e1..0000000
--- a/frontend/index.html
+++ /dev/null
@@ -1,20 +0,0 @@
-
-
-
-
-
-
-
-
-
-
- Fuware
-
-
-
-
-
-
diff --git a/frontend/jsconfig.json b/frontend/jsconfig.json
deleted file mode 100644
index c2ef0e3..0000000
--- a/frontend/jsconfig.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- "extends": "./jsconfig.paths.json",
- "compilerOptions": {
- "target": "ESNext",
- "module": "ESNext",
- "moduleResolution": "node",
- "allowSyntheticDefaultImports": true,
- "esModuleInterop": true,
- "jsx": "preserve",
- "jsxImportSource": "solid-js",
- "resolveJsonModule": true,
- "isolatedModules": false,
- "allowJs": true,
- "skipLibCheck": true
- }
-}
diff --git a/frontend/jsconfig.paths.json b/frontend/jsconfig.paths.json
deleted file mode 100644
index c291a0b..0000000
--- a/frontend/jsconfig.paths.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
- "compilerOptions": {
- "baseUrl": ".",
- "paths": {
- "@api/*": ["src/api/*"],
- "@pages/*": ["src/pages/*"],
- "@components/*": ["src/components/*"],
- "@routes/*": ["src/routes/*"],
- "@utils/*": ["src/utils/*"],
- "@assets/*": ["src/assets/*"],
- "@context/*": ["src/context/*"],
- "@lang/*": ["src/lang/*"],
- "@hooks/*": ["src/hooks/*"],
- "@/*": ["src/*"]
- }
- }
-}
diff --git a/frontend/package.json b/frontend/package.json
deleted file mode 100644
index 291607d..0000000
--- a/frontend/package.json
+++ /dev/null
@@ -1,50 +0,0 @@
-{
- "name": "frontend",
- "private": true,
- "version": "0.0.0",
- "type": "module",
- "scripts": {
- "dev": "vite",
- "build": "vite build",
- "lint": "eslint . --ext js,jsx --report-unused-disable-directives --max-warnings 0",
- "preview": "vite preview"
- },
- "dependencies": {
- "@mantine/core": "^7.11.2",
- "@mantine/dates": "^7.11.2",
- "@mantine/form": "^7.11.2",
- "@mantine/hooks": "^7.11.2",
- "@mantine/modals": "^7.11.2",
- "@mantine/notifications": "^7.11.2",
- "@mantine/nprogress": "^7.11.2",
- "@tabler/icons-react": "^3.11.0",
- "axios": "^1.7.2",
- "crypto-js": "^4.2.0",
- "dayjs": "^1.11.12",
- "i18next": "^23.12.2",
- "i18next-http-backend": "^2.5.2",
- "react": "^18.3.1",
- "react-dom": "^18.3.1",
- "react-i18next": "^15.0.0",
- "react-router-dom": "^6.25.1",
- "swr": "^2.2.5",
- "uuid": "^10.0.0",
- "yup": "^1.4.0"
- },
- "devDependencies": {
- "@types/react": "^18.3.3",
- "@types/react-dom": "^18.3.0",
- "@vitejs/plugin-react": "^4.3.1",
- "eslint": "^8.57.0",
- "eslint-plugin-react": "^7.34.3",
- "eslint-plugin-react-hooks": "^4.6.2",
- "eslint-plugin-react-refresh": "^0.4.7",
- "lint-staged": "^15.2.7",
- "postcss": "^8.4.39",
- "postcss-preset-mantine": "^1.17.0",
- "postcss-simple-vars": "^7.0.1",
- "prettier": "^3.3.3",
- "sass": "^1.77.8",
- "vite": "^5.3.4"
- }
-}
diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml
deleted file mode 100644
index 97b462a..0000000
--- a/frontend/pnpm-lock.yaml
+++ /dev/null
@@ -1,4130 +0,0 @@
-lockfileVersion: '9.0'
-
-settings:
- autoInstallPeers: true
- excludeLinksFromLockfile: false
-
-importers:
-
- .:
- dependencies:
- '@mantine/core':
- specifier: ^7.11.2
- version: 7.11.2(@mantine/hooks@7.11.2(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@mantine/dates':
- specifier: ^7.11.2
- version: 7.11.2(@mantine/core@7.11.2(@mantine/hooks@7.11.2(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.11.2(react@18.3.1))(dayjs@1.11.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@mantine/form':
- specifier: ^7.11.2
- version: 7.11.2(react@18.3.1)
- '@mantine/hooks':
- specifier: ^7.11.2
- version: 7.11.2(react@18.3.1)
- '@mantine/modals':
- specifier: ^7.11.2
- version: 7.11.2(@mantine/core@7.11.2(@mantine/hooks@7.11.2(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.11.2(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@mantine/notifications':
- specifier: ^7.11.2
- version: 7.11.2(@mantine/core@7.11.2(@mantine/hooks@7.11.2(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.11.2(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@mantine/nprogress':
- specifier: ^7.11.2
- version: 7.11.2(@mantine/core@7.11.2(@mantine/hooks@7.11.2(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.11.2(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@tabler/icons-react':
- specifier: ^3.11.0
- version: 3.11.0(react@18.3.1)
- axios:
- specifier: ^1.7.2
- version: 1.7.2
- crypto-js:
- specifier: ^4.2.0
- version: 4.2.0
- dayjs:
- specifier: ^1.11.12
- version: 1.11.12
- i18next:
- specifier: ^23.12.2
- version: 23.12.2
- i18next-http-backend:
- specifier: ^2.5.2
- version: 2.5.2
- react:
- specifier: ^18.3.1
- version: 18.3.1
- react-dom:
- specifier: ^18.3.1
- version: 18.3.1(react@18.3.1)
- react-i18next:
- specifier: ^15.0.0
- version: 15.0.0(i18next@23.12.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- react-router-dom:
- specifier: ^6.25.1
- version: 6.25.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- swr:
- specifier: ^2.2.5
- version: 2.2.5(react@18.3.1)
- uuid:
- specifier: ^10.0.0
- version: 10.0.0
- yup:
- specifier: ^1.4.0
- version: 1.4.0
- devDependencies:
- '@types/react':
- specifier: ^18.3.3
- version: 18.3.3
- '@types/react-dom':
- specifier: ^18.3.0
- version: 18.3.0
- '@vitejs/plugin-react':
- specifier: ^4.3.1
- version: 4.3.1(vite@5.3.4(sass@1.77.8)(sugarss@4.0.1(postcss@8.4.39)))
- eslint:
- specifier: ^8.57.0
- version: 8.57.0
- eslint-plugin-react:
- specifier: ^7.34.3
- version: 7.35.0(eslint@8.57.0)
- eslint-plugin-react-hooks:
- specifier: ^4.6.2
- version: 4.6.2(eslint@8.57.0)
- eslint-plugin-react-refresh:
- specifier: ^0.4.7
- version: 0.4.9(eslint@8.57.0)
- lint-staged:
- specifier: ^15.2.7
- version: 15.2.7
- postcss:
- specifier: ^8.4.39
- version: 8.4.39
- postcss-preset-mantine:
- specifier: ^1.17.0
- version: 1.17.0(postcss@8.4.39)
- postcss-simple-vars:
- specifier: ^7.0.1
- version: 7.0.1(postcss@8.4.39)
- prettier:
- specifier: ^3.3.3
- version: 3.3.3
- sass:
- specifier: ^1.77.8
- version: 1.77.8
- vite:
- specifier: ^5.3.4
- version: 5.3.4(sass@1.77.8)(sugarss@4.0.1(postcss@8.4.39))
-
-packages:
-
- '@ampproject/remapping@2.3.0':
- resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==}
- engines: {node: '>=6.0.0'}
-
- '@babel/code-frame@7.24.7':
- resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==}
- engines: {node: '>=6.9.0'}
-
- '@babel/compat-data@7.24.9':
- resolution: {integrity: sha512-e701mcfApCJqMMueQI0Fb68Amflj83+dvAvHawoBpAz+GDjCIyGHzNwnefjsWJ3xiYAqqiQFoWbspGYBdb2/ng==}
- engines: {node: '>=6.9.0'}
-
- '@babel/core@7.24.9':
- resolution: {integrity: sha512-5e3FI4Q3M3Pbr21+5xJwCv6ZT6KmGkI0vw3Tozy5ODAQFTIWe37iT8Cr7Ice2Ntb+M3iSKCEWMB1MBgKrW3whg==}
- engines: {node: '>=6.9.0'}
-
- '@babel/generator@7.24.10':
- resolution: {integrity: sha512-o9HBZL1G2129luEUlG1hB4N/nlYNWHnpwlND9eOMclRqqu1YDy2sSYVCFUZwl8I1Gxh+QSRrP2vD7EpUmFVXxg==}
- engines: {node: '>=6.9.0'}
-
- '@babel/helper-compilation-targets@7.24.8':
- resolution: {integrity: sha512-oU+UoqCHdp+nWVDkpldqIQL/i/bvAv53tRqLG/s+cOXxe66zOYLU7ar/Xs3LdmBihrUMEUhwu6dMZwbNOYDwvw==}
- engines: {node: '>=6.9.0'}
-
- '@babel/helper-environment-visitor@7.24.7':
- resolution: {integrity: sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==}
- engines: {node: '>=6.9.0'}
-
- '@babel/helper-function-name@7.24.7':
- resolution: {integrity: sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==}
- engines: {node: '>=6.9.0'}
-
- '@babel/helper-hoist-variables@7.24.7':
- resolution: {integrity: sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==}
- engines: {node: '>=6.9.0'}
-
- '@babel/helper-module-imports@7.24.7':
- resolution: {integrity: sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==}
- engines: {node: '>=6.9.0'}
-
- '@babel/helper-module-transforms@7.24.9':
- resolution: {integrity: sha512-oYbh+rtFKj/HwBQkFlUzvcybzklmVdVV3UU+mN7n2t/q3yGHbuVdNxyFvSBO1tfvjyArpHNcWMAzsSPdyI46hw==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0
-
- '@babel/helper-plugin-utils@7.24.8':
- resolution: {integrity: sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==}
- engines: {node: '>=6.9.0'}
-
- '@babel/helper-simple-access@7.24.7':
- resolution: {integrity: sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==}
- engines: {node: '>=6.9.0'}
-
- '@babel/helper-split-export-declaration@7.24.7':
- resolution: {integrity: sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==}
- engines: {node: '>=6.9.0'}
-
- '@babel/helper-string-parser@7.24.8':
- resolution: {integrity: sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==}
- engines: {node: '>=6.9.0'}
-
- '@babel/helper-validator-identifier@7.24.7':
- resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==}
- engines: {node: '>=6.9.0'}
-
- '@babel/helper-validator-option@7.24.8':
- resolution: {integrity: sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==}
- engines: {node: '>=6.9.0'}
-
- '@babel/helpers@7.24.8':
- resolution: {integrity: sha512-gV2265Nkcz7weJJfvDoAEVzC1e2OTDpkGbEsebse8koXUJUXPsCMi7sRo/+SPMuMZ9MtUPnGwITTnQnU5YjyaQ==}
- engines: {node: '>=6.9.0'}
-
- '@babel/highlight@7.24.7':
- resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==}
- engines: {node: '>=6.9.0'}
-
- '@babel/parser@7.24.8':
- resolution: {integrity: sha512-WzfbgXOkGzZiXXCqk43kKwZjzwx4oulxZi3nq2TYL9mOjQv6kYwul9mz6ID36njuL7Xkp6nJEfok848Zj10j/w==}
- engines: {node: '>=6.0.0'}
- hasBin: true
-
- '@babel/plugin-transform-react-jsx-self@7.24.7':
- resolution: {integrity: sha512-fOPQYbGSgH0HUp4UJO4sMBFjY6DuWq+2i8rixyUMb3CdGixs/gccURvYOAhajBdKDoGajFr3mUq5rH3phtkGzw==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
-
- '@babel/plugin-transform-react-jsx-source@7.24.7':
- resolution: {integrity: sha512-J2z+MWzZHVOemyLweMqngXrgGC42jQ//R0KdxqkIz/OrbVIIlhFI3WigZ5fO+nwFvBlncr4MGapd8vTyc7RPNQ==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
-
- '@babel/runtime@7.24.8':
- resolution: {integrity: sha512-5F7SDGs1T72ZczbRwbGO9lQi0NLjQxzl6i4lJxLxfW9U5UluCSyEJeniWvnhl3/euNiqQVbo8zruhsDfid0esA==}
- engines: {node: '>=6.9.0'}
-
- '@babel/template@7.24.7':
- resolution: {integrity: sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==}
- engines: {node: '>=6.9.0'}
-
- '@babel/traverse@7.24.8':
- resolution: {integrity: sha512-t0P1xxAPzEDcEPmjprAQq19NWum4K0EQPjMwZQZbHt+GiZqvjCHjj755Weq1YRPVzBI+3zSfvScfpnuIecVFJQ==}
- engines: {node: '>=6.9.0'}
-
- '@babel/types@7.24.9':
- resolution: {integrity: sha512-xm8XrMKz0IlUdocVbYJe0Z9xEgidU7msskG8BbhnTPK/HZ2z/7FP7ykqPgrUH+C+r414mNfNWam1f2vqOjqjYQ==}
- engines: {node: '>=6.9.0'}
-
- '@esbuild/aix-ppc64@0.21.5':
- resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==}
- engines: {node: '>=12'}
- cpu: [ppc64]
- os: [aix]
-
- '@esbuild/android-arm64@0.21.5':
- resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==}
- engines: {node: '>=12'}
- cpu: [arm64]
- os: [android]
-
- '@esbuild/android-arm@0.21.5':
- resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==}
- engines: {node: '>=12'}
- cpu: [arm]
- os: [android]
-
- '@esbuild/android-x64@0.21.5':
- resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==}
- engines: {node: '>=12'}
- cpu: [x64]
- os: [android]
-
- '@esbuild/darwin-arm64@0.21.5':
- resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==}
- engines: {node: '>=12'}
- cpu: [arm64]
- os: [darwin]
-
- '@esbuild/darwin-x64@0.21.5':
- resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==}
- engines: {node: '>=12'}
- cpu: [x64]
- os: [darwin]
-
- '@esbuild/freebsd-arm64@0.21.5':
- resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==}
- engines: {node: '>=12'}
- cpu: [arm64]
- os: [freebsd]
-
- '@esbuild/freebsd-x64@0.21.5':
- resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==}
- engines: {node: '>=12'}
- cpu: [x64]
- os: [freebsd]
-
- '@esbuild/linux-arm64@0.21.5':
- resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==}
- engines: {node: '>=12'}
- cpu: [arm64]
- os: [linux]
-
- '@esbuild/linux-arm@0.21.5':
- resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==}
- engines: {node: '>=12'}
- cpu: [arm]
- os: [linux]
-
- '@esbuild/linux-ia32@0.21.5':
- resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==}
- engines: {node: '>=12'}
- cpu: [ia32]
- os: [linux]
-
- '@esbuild/linux-loong64@0.21.5':
- resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==}
- engines: {node: '>=12'}
- cpu: [loong64]
- os: [linux]
-
- '@esbuild/linux-mips64el@0.21.5':
- resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==}
- engines: {node: '>=12'}
- cpu: [mips64el]
- os: [linux]
-
- '@esbuild/linux-ppc64@0.21.5':
- resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==}
- engines: {node: '>=12'}
- cpu: [ppc64]
- os: [linux]
-
- '@esbuild/linux-riscv64@0.21.5':
- resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==}
- engines: {node: '>=12'}
- cpu: [riscv64]
- os: [linux]
-
- '@esbuild/linux-s390x@0.21.5':
- resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==}
- engines: {node: '>=12'}
- cpu: [s390x]
- os: [linux]
-
- '@esbuild/linux-x64@0.21.5':
- resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==}
- engines: {node: '>=12'}
- cpu: [x64]
- os: [linux]
-
- '@esbuild/netbsd-x64@0.21.5':
- resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==}
- engines: {node: '>=12'}
- cpu: [x64]
- os: [netbsd]
-
- '@esbuild/openbsd-x64@0.21.5':
- resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==}
- engines: {node: '>=12'}
- cpu: [x64]
- os: [openbsd]
-
- '@esbuild/sunos-x64@0.21.5':
- resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==}
- engines: {node: '>=12'}
- cpu: [x64]
- os: [sunos]
-
- '@esbuild/win32-arm64@0.21.5':
- resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==}
- engines: {node: '>=12'}
- cpu: [arm64]
- os: [win32]
-
- '@esbuild/win32-ia32@0.21.5':
- resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==}
- engines: {node: '>=12'}
- cpu: [ia32]
- os: [win32]
-
- '@esbuild/win32-x64@0.21.5':
- resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==}
- engines: {node: '>=12'}
- cpu: [x64]
- os: [win32]
-
- '@eslint-community/eslint-utils@4.4.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
-
- '@eslint-community/regexpp@4.11.0':
- resolution: {integrity: sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==}
- engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
-
- '@eslint/eslintrc@2.1.4':
- resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
-
- '@eslint/js@8.57.0':
- resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
-
- '@floating-ui/core@1.6.5':
- resolution: {integrity: sha512-8GrTWmoFhm5BsMZOTHeGD2/0FLKLQQHvO/ZmQga4tKempYRLz8aqJGqXVuQgisnMObq2YZ2SgkwctN1LOOxcqA==}
-
- '@floating-ui/dom@1.6.8':
- resolution: {integrity: sha512-kx62rP19VZ767Q653wsP1XZCGIirkE09E0QUGNYTM/ttbbQHqcGPdSfWFxUyyNLc/W6aoJRBajOSXhP6GXjC0Q==}
-
- '@floating-ui/react-dom@2.1.1':
- resolution: {integrity: sha512-4h84MJt3CHrtG18mGsXuLCHMrug49d7DFkU0RMIyshRveBeyV2hmV/pDaF2Uxtu8kgq5r46llp5E5FQiR0K2Yg==}
- peerDependencies:
- react: '>=16.8.0'
- react-dom: '>=16.8.0'
-
- '@floating-ui/react@0.26.20':
- resolution: {integrity: sha512-RixKJJG92fcIsVoqrFr4Onpzh7hlOx4U7NV4aLhMLmtvjZ5oTB/WzXaANYUZATKqXvvW7t9sCxtzejip26N5Ag==}
- peerDependencies:
- react: '>=16.8.0'
- react-dom: '>=16.8.0'
-
- '@floating-ui/utils@0.2.5':
- resolution: {integrity: sha512-sTcG+QZ6fdEUObICavU+aB3Mp8HY4n14wYHdxK4fXjPmv3PXZZeY5RaguJmGyeH/CJQhX3fqKUtS4qc1LoHwhQ==}
-
- '@humanwhocodes/config-array@0.11.14':
- resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==}
- engines: {node: '>=10.10.0'}
- deprecated: Use @eslint/config-array instead
-
- '@humanwhocodes/module-importer@1.0.1':
- resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==}
- engines: {node: '>=12.22'}
-
- '@humanwhocodes/object-schema@2.0.3':
- resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==}
- deprecated: Use @eslint/object-schema instead
-
- '@jridgewell/gen-mapping@0.3.5':
- resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==}
- engines: {node: '>=6.0.0'}
-
- '@jridgewell/resolve-uri@3.1.2':
- resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
- engines: {node: '>=6.0.0'}
-
- '@jridgewell/set-array@1.2.1':
- resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==}
- engines: {node: '>=6.0.0'}
-
- '@jridgewell/sourcemap-codec@1.5.0':
- resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==}
-
- '@jridgewell/trace-mapping@0.3.25':
- resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==}
-
- '@mantine/core@7.11.2':
- resolution: {integrity: sha512-T64RjdgY8UPAv249miW1lQyPPot1JbCcKKsAZMNQHgcttcxLhrFpKVvglc4/48hdSoxI4LYJPNvqp7zciZmucQ==}
- peerDependencies:
- '@mantine/hooks': 7.11.2
- react: ^18.2.0
- react-dom: ^18.2.0
-
- '@mantine/dates@7.11.2':
- resolution: {integrity: sha512-BEZs949EvfIG1fRNsEpcB0YqSe53z/KObwHyBwiqFjFHJ2eFPVMpxw6Rpy1Bud0/FZRV+QBokebxaf6+2tbCCw==}
- peerDependencies:
- '@mantine/core': 7.11.2
- '@mantine/hooks': 7.11.2
- dayjs: '>=1.0.0'
- react: ^18.2.0
- react-dom: ^18.2.0
-
- '@mantine/form@7.11.2':
- resolution: {integrity: sha512-NRY4HDgcArDEP+wUaHITnoVh0Ce3rM3Blo9fLNj2VYO8k7AfuSWp+fQdqrjDI0k9wGU3YEj4/dbwOjKbtXEhxw==}
- peerDependencies:
- react: ^18.2.0
-
- '@mantine/hooks@7.11.2':
- resolution: {integrity: sha512-jhyVe/sbDEG2U8rr2lMecUPgQxcfr5hh9HazqGfkS7ZRIMDO7uJ947yAcTMGGkp5Lxtt5TBFt1Cb6tiB2/1agg==}
- peerDependencies:
- react: ^18.2.0
-
- '@mantine/modals@7.11.2':
- resolution: {integrity: sha512-AsVyGP5+F9jkQdQ9J0qzaK8q7n9bPcpswAjScpzIgEfUBC4RCvf63bmh9Yp1OEgxl1xkNdzGUYGVau0SQqHasA==}
- peerDependencies:
- '@mantine/core': 7.11.2
- '@mantine/hooks': 7.11.2
- react: ^18.2.0
- react-dom: ^18.2.0
-
- '@mantine/notifications@7.11.2':
- resolution: {integrity: sha512-KB/6mp3mU3LvcFlfMc5zK5mWcrAO+zAGeiBb1oUjNFXBECCn9xizqqUeT0YbWBHL7wysq9IThDJxLwUBnQt+8Q==}
- peerDependencies:
- '@mantine/core': 7.11.2
- '@mantine/hooks': 7.11.2
- react: ^18.2.0
- react-dom: ^18.2.0
-
- '@mantine/nprogress@7.11.2':
- resolution: {integrity: sha512-0xQLDvUPv3bh9i+4OsXs5jgPdEM8pgTDWUrnY2Y5SgGNJg2wZzFmbExaxFx9P/STJHn6kAM/YFtCS0PlRQohSw==}
- peerDependencies:
- '@mantine/core': 7.11.2
- '@mantine/hooks': 7.11.2
- react: ^18.2.0
- react-dom: ^18.2.0
-
- '@mantine/store@7.11.2':
- resolution: {integrity: sha512-FfkmnOnCivOjqwNaTZeV4TgDANUs7fP+0uSgzp0GuvwTuDfQNVafPBRzPkjKuz5ug+Nn9l6WwjfJ6LBDv9U0LQ==}
- peerDependencies:
- react: ^18.2.0
-
- '@nodelib/fs.scandir@2.1.5':
- resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
- engines: {node: '>= 8'}
-
- '@nodelib/fs.stat@2.0.5':
- resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
- engines: {node: '>= 8'}
-
- '@nodelib/fs.walk@1.2.8':
- resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
- engines: {node: '>= 8'}
-
- '@remix-run/router@1.18.0':
- resolution: {integrity: sha512-L3jkqmqoSVBVKHfpGZmLrex0lxR5SucGA0sUfFzGctehw+S/ggL9L/0NnC5mw6P8HUWpFZ3nQw3cRApjjWx9Sw==}
- engines: {node: '>=14.0.0'}
-
- '@rollup/rollup-android-arm-eabi@4.19.0':
- resolution: {integrity: sha512-JlPfZ/C7yn5S5p0yKk7uhHTTnFlvTgLetl2VxqE518QgyM7C9bSfFTYvB/Q/ftkq0RIPY4ySxTz+/wKJ/dXC0w==}
- cpu: [arm]
- os: [android]
-
- '@rollup/rollup-android-arm64@4.19.0':
- resolution: {integrity: sha512-RDxUSY8D1tWYfn00DDi5myxKgOk6RvWPxhmWexcICt/MEC6yEMr4HNCu1sXXYLw8iAsg0D44NuU+qNq7zVWCrw==}
- cpu: [arm64]
- os: [android]
-
- '@rollup/rollup-darwin-arm64@4.19.0':
- resolution: {integrity: sha512-emvKHL4B15x6nlNTBMtIaC9tLPRpeA5jMvRLXVbl/W9Ie7HhkrE7KQjvgS9uxgatL1HmHWDXk5TTS4IaNJxbAA==}
- cpu: [arm64]
- os: [darwin]
-
- '@rollup/rollup-darwin-x64@4.19.0':
- resolution: {integrity: sha512-fO28cWA1dC57qCd+D0rfLC4VPbh6EOJXrreBmFLWPGI9dpMlER2YwSPZzSGfq11XgcEpPukPTfEVFtw2q2nYJg==}
- cpu: [x64]
- os: [darwin]
-
- '@rollup/rollup-linux-arm-gnueabihf@4.19.0':
- resolution: {integrity: sha512-2Rn36Ubxdv32NUcfm0wB1tgKqkQuft00PtM23VqLuCUR4N5jcNWDoV5iBC9jeGdgS38WK66ElncprqgMUOyomw==}
- cpu: [arm]
- os: [linux]
-
- '@rollup/rollup-linux-arm-musleabihf@4.19.0':
- resolution: {integrity: sha512-gJuzIVdq/X1ZA2bHeCGCISe0VWqCoNT8BvkQ+BfsixXwTOndhtLUpOg0A1Fcx/+eA6ei6rMBzlOz4JzmiDw7JQ==}
- cpu: [arm]
- os: [linux]
-
- '@rollup/rollup-linux-arm64-gnu@4.19.0':
- resolution: {integrity: sha512-0EkX2HYPkSADo9cfeGFoQ7R0/wTKb7q6DdwI4Yn/ULFE1wuRRCHybxpl2goQrx4c/yzK3I8OlgtBu4xvted0ug==}
- cpu: [arm64]
- os: [linux]
-
- '@rollup/rollup-linux-arm64-musl@4.19.0':
- resolution: {integrity: sha512-GlIQRj9px52ISomIOEUq/IojLZqzkvRpdP3cLgIE1wUWaiU5Takwlzpz002q0Nxxr1y2ZgxC2obWxjr13lvxNQ==}
- cpu: [arm64]
- os: [linux]
-
- '@rollup/rollup-linux-powerpc64le-gnu@4.19.0':
- resolution: {integrity: sha512-N6cFJzssruDLUOKfEKeovCKiHcdwVYOT1Hs6dovDQ61+Y9n3Ek4zXvtghPPelt6U0AH4aDGnDLb83uiJMkWYzQ==}
- cpu: [ppc64]
- os: [linux]
-
- '@rollup/rollup-linux-riscv64-gnu@4.19.0':
- resolution: {integrity: sha512-2DnD3mkS2uuam/alF+I7M84koGwvn3ZVD7uG+LEWpyzo/bq8+kKnus2EVCkcvh6PlNB8QPNFOz6fWd5N8o1CYg==}
- cpu: [riscv64]
- os: [linux]
-
- '@rollup/rollup-linux-s390x-gnu@4.19.0':
- resolution: {integrity: sha512-D6pkaF7OpE7lzlTOFCB2m3Ngzu2ykw40Nka9WmKGUOTS3xcIieHe82slQlNq69sVB04ch73thKYIWz/Ian8DUA==}
- cpu: [s390x]
- os: [linux]
-
- '@rollup/rollup-linux-x64-gnu@4.19.0':
- resolution: {integrity: sha512-HBndjQLP8OsdJNSxpNIN0einbDmRFg9+UQeZV1eiYupIRuZsDEoeGU43NQsS34Pp166DtwQOnpcbV/zQxM+rWA==}
- cpu: [x64]
- os: [linux]
-
- '@rollup/rollup-linux-x64-musl@4.19.0':
- resolution: {integrity: sha512-HxfbvfCKJe/RMYJJn0a12eiOI9OOtAUF4G6ozrFUK95BNyoJaSiBjIOHjZskTUffUrB84IPKkFG9H9nEvJGW6A==}
- cpu: [x64]
- os: [linux]
-
- '@rollup/rollup-win32-arm64-msvc@4.19.0':
- resolution: {integrity: sha512-HxDMKIhmcguGTiP5TsLNolwBUK3nGGUEoV/BO9ldUBoMLBssvh4J0X8pf11i1fTV7WShWItB1bKAKjX4RQeYmg==}
- cpu: [arm64]
- os: [win32]
-
- '@rollup/rollup-win32-ia32-msvc@4.19.0':
- resolution: {integrity: sha512-xItlIAZZaiG/u0wooGzRsx11rokP4qyc/79LkAOdznGRAbOFc+SfEdfUOszG1odsHNgwippUJavag/+W/Etc6Q==}
- cpu: [ia32]
- os: [win32]
-
- '@rollup/rollup-win32-x64-msvc@4.19.0':
- resolution: {integrity: sha512-xNo5fV5ycvCCKqiZcpB65VMR11NJB+StnxHz20jdqRAktfdfzhgjTiJ2doTDQE/7dqGaV5I7ZGqKpgph6lCIag==}
- cpu: [x64]
- os: [win32]
-
- '@tabler/icons-react@3.11.0':
- resolution: {integrity: sha512-xHNBi9mns1slvqos+7LkP3ube4CjWrANMbxMaorzwzO9J/+y1sAEG/sN8CV8FmtpYW/9/gDR+OWCjjLLg0RmAw==}
- peerDependencies:
- react: '>= 16'
-
- '@tabler/icons@3.11.0':
- resolution: {integrity: sha512-/vZinJNvCYhdAB+RUsyCpanSPuOEKHHIZi4Uu0Bw7ilewHnQhCWUPrT704uHCRli2ROl7spADPmWzAqOganA5A==}
-
- '@types/babel__core@7.20.5':
- resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==}
-
- '@types/babel__generator@7.6.8':
- resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==}
-
- '@types/babel__template@7.4.4':
- resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==}
-
- '@types/babel__traverse@7.20.6':
- resolution: {integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==}
-
- '@types/estree@1.0.5':
- resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==}
-
- '@types/prop-types@15.7.12':
- resolution: {integrity: sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==}
-
- '@types/react-dom@18.3.0':
- resolution: {integrity: sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==}
-
- '@types/react@18.3.3':
- resolution: {integrity: sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw==}
-
- '@ungap/structured-clone@1.2.0':
- resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==}
-
- '@vitejs/plugin-react@4.3.1':
- resolution: {integrity: sha512-m/V2syj5CuVnaxcUJOQRel/Wr31FFXRFlnOoq1TVtkCxsY5veGMTEmpWHndrhB2U8ScHtCQB1e+4hWYExQc6Lg==}
- engines: {node: ^14.18.0 || >=16.0.0}
- peerDependencies:
- vite: ^4.2.0 || ^5.0.0
-
- acorn-jsx@5.3.2:
- resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
- peerDependencies:
- acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
-
- acorn@8.12.1:
- resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==}
- engines: {node: '>=0.4.0'}
- hasBin: true
-
- ajv@6.12.6:
- resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
-
- ansi-escapes@6.2.1:
- resolution: {integrity: sha512-4nJ3yixlEthEJ9Rk4vPcdBRkZvQZlYyu8j4/Mqz5sgIkddmEnH2Yj2ZrnP9S3tQOvSNRUIgVNF/1yPpRAGNRig==}
- engines: {node: '>=14.16'}
-
- ansi-regex@5.0.1:
- resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
- engines: {node: '>=8'}
-
- ansi-regex@6.0.1:
- resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==}
- engines: {node: '>=12'}
-
- ansi-styles@3.2.1:
- resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==}
- engines: {node: '>=4'}
-
- ansi-styles@4.3.0:
- resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
- engines: {node: '>=8'}
-
- ansi-styles@6.2.1:
- resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==}
- engines: {node: '>=12'}
-
- anymatch@3.1.3:
- resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
- engines: {node: '>= 8'}
-
- argparse@2.0.1:
- resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
-
- array-buffer-byte-length@1.0.1:
- resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==}
- engines: {node: '>= 0.4'}
-
- array-includes@3.1.8:
- resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==}
- engines: {node: '>= 0.4'}
-
- array.prototype.findlast@1.2.5:
- resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==}
- engines: {node: '>= 0.4'}
-
- array.prototype.flat@1.3.2:
- resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==}
- engines: {node: '>= 0.4'}
-
- array.prototype.flatmap@1.3.2:
- resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==}
- engines: {node: '>= 0.4'}
-
- array.prototype.tosorted@1.1.4:
- resolution: {integrity: sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==}
- engines: {node: '>= 0.4'}
-
- arraybuffer.prototype.slice@1.0.3:
- resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==}
- engines: {node: '>= 0.4'}
-
- asynckit@0.4.0:
- resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==}
-
- available-typed-arrays@1.0.7:
- resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==}
- engines: {node: '>= 0.4'}
-
- axios@1.7.2:
- resolution: {integrity: sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==}
-
- balanced-match@1.0.2:
- resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
-
- binary-extensions@2.3.0:
- resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==}
- engines: {node: '>=8'}
-
- brace-expansion@1.1.11:
- resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
-
- braces@3.0.3:
- resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
- engines: {node: '>=8'}
-
- browserslist@4.23.2:
- resolution: {integrity: sha512-qkqSyistMYdxAcw+CzbZwlBy8AGmS/eEWs+sEV5TnLRGDOL+C5M2EnH6tlZyg0YoAxGJAFKh61En9BR941GnHA==}
- engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
- hasBin: true
-
- call-bind@1.0.7:
- resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==}
- engines: {node: '>= 0.4'}
-
- callsites@3.1.0:
- resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
- engines: {node: '>=6'}
-
- camelcase-css@2.0.1:
- resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==}
- engines: {node: '>= 6'}
-
- caniuse-lite@1.0.30001643:
- resolution: {integrity: sha512-ERgWGNleEilSrHM6iUz/zJNSQTP8Mr21wDWpdgvRwcTXGAq6jMtOUPP4dqFPTdKqZ2wKTdtB+uucZ3MRpAUSmg==}
-
- chalk@2.4.2:
- resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
- engines: {node: '>=4'}
-
- chalk@4.1.2:
- resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
- engines: {node: '>=10'}
-
- chalk@5.3.0:
- resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==}
- engines: {node: ^12.17.0 || ^14.13 || >=16.0.0}
-
- chokidar@3.6.0:
- resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==}
- engines: {node: '>= 8.10.0'}
-
- cli-cursor@4.0.0:
- resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
-
- cli-truncate@4.0.0:
- resolution: {integrity: sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==}
- engines: {node: '>=18'}
-
- client-only@0.0.1:
- resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==}
-
- clsx@2.1.1:
- resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==}
- engines: {node: '>=6'}
-
- color-convert@1.9.3:
- resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
-
- color-convert@2.0.1:
- resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
- engines: {node: '>=7.0.0'}
-
- color-name@1.1.3:
- resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==}
-
- color-name@1.1.4:
- resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
-
- colorette@2.0.20:
- resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==}
-
- combined-stream@1.0.8:
- resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==}
- engines: {node: '>= 0.8'}
-
- commander@12.1.0:
- resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==}
- engines: {node: '>=18'}
-
- concat-map@0.0.1:
- resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
-
- convert-source-map@2.0.0:
- resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==}
-
- cross-fetch@4.0.0:
- resolution: {integrity: sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==}
-
- cross-spawn@7.0.3:
- resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
- engines: {node: '>= 8'}
-
- crypto-js@4.2.0:
- resolution: {integrity: sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==}
-
- cssesc@3.0.0:
- resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==}
- engines: {node: '>=4'}
- hasBin: true
-
- csstype@3.1.3:
- resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
-
- data-view-buffer@1.0.1:
- resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==}
- engines: {node: '>= 0.4'}
-
- data-view-byte-length@1.0.1:
- resolution: {integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==}
- engines: {node: '>= 0.4'}
-
- data-view-byte-offset@1.0.0:
- resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==}
- engines: {node: '>= 0.4'}
-
- dayjs@1.11.12:
- resolution: {integrity: sha512-Rt2g+nTbLlDWZTwwrIXjy9MeiZmSDI375FvZs72ngxx8PDC6YXOeR3q5LAuPzjZQxhiWdRKac7RKV+YyQYfYIg==}
-
- debug@4.3.5:
- resolution: {integrity: sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==}
- engines: {node: '>=6.0'}
- peerDependencies:
- supports-color: '*'
- peerDependenciesMeta:
- supports-color:
- optional: true
-
- deep-is@0.1.4:
- resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
-
- define-data-property@1.1.4:
- resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==}
- engines: {node: '>= 0.4'}
-
- define-properties@1.2.1:
- resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==}
- engines: {node: '>= 0.4'}
-
- delayed-stream@1.0.0:
- resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==}
- engines: {node: '>=0.4.0'}
-
- detect-node-es@1.1.0:
- resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==}
-
- doctrine@2.1.0:
- resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==}
- engines: {node: '>=0.10.0'}
-
- doctrine@3.0.0:
- resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==}
- engines: {node: '>=6.0.0'}
-
- dom-helpers@5.2.1:
- resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==}
-
- electron-to-chromium@1.5.0:
- resolution: {integrity: sha512-Vb3xHHYnLseK8vlMJQKJYXJ++t4u1/qJ3vykuVrVjvdiOEhYyT1AuP4x03G8EnPmYvYOhe9T+dADTmthjRQMkA==}
-
- emoji-regex@10.3.0:
- resolution: {integrity: sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==}
-
- es-abstract@1.23.3:
- resolution: {integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==}
- engines: {node: '>= 0.4'}
-
- es-define-property@1.0.0:
- resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==}
- engines: {node: '>= 0.4'}
-
- es-errors@1.3.0:
- resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==}
- engines: {node: '>= 0.4'}
-
- es-iterator-helpers@1.0.19:
- resolution: {integrity: sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw==}
- engines: {node: '>= 0.4'}
-
- es-object-atoms@1.0.0:
- resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==}
- engines: {node: '>= 0.4'}
-
- es-set-tostringtag@2.0.3:
- resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==}
- engines: {node: '>= 0.4'}
-
- es-shim-unscopables@1.0.2:
- resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==}
-
- es-to-primitive@1.2.1:
- resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==}
- engines: {node: '>= 0.4'}
-
- esbuild@0.21.5:
- resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==}
- engines: {node: '>=12'}
- hasBin: true
-
- escalade@3.1.2:
- resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==}
- engines: {node: '>=6'}
-
- escape-string-regexp@1.0.5:
- resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
- engines: {node: '>=0.8.0'}
-
- escape-string-regexp@4.0.0:
- resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
- engines: {node: '>=10'}
-
- eslint-plugin-react-hooks@4.6.2:
- resolution: {integrity: sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==}
- engines: {node: '>=10'}
- peerDependencies:
- eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0
-
- eslint-plugin-react-refresh@0.4.9:
- resolution: {integrity: sha512-QK49YrBAo5CLNLseZ7sZgvgTy21E6NEw22eZqc4teZfH8pxV3yXc9XXOYfUI6JNpw7mfHNkAeWtBxrTyykB6HA==}
- peerDependencies:
- eslint: '>=7'
-
- eslint-plugin-react@7.35.0:
- resolution: {integrity: sha512-v501SSMOWv8gerHkk+IIQBkcGRGrO2nfybfj5pLxuJNFTPxxA3PSryhXTK+9pNbtkggheDdsC0E9Q8CuPk6JKA==}
- engines: {node: '>=4'}
- peerDependencies:
- eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7
-
- eslint-scope@7.2.2:
- resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
-
- eslint-visitor-keys@3.4.3:
- resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
-
- eslint@8.57.0:
- resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- hasBin: true
-
- espree@9.6.1:
- resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
-
- esquery@1.6.0:
- resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==}
- engines: {node: '>=0.10'}
-
- esrecurse@4.3.0:
- resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==}
- engines: {node: '>=4.0'}
-
- estraverse@5.3.0:
- resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
- engines: {node: '>=4.0'}
-
- esutils@2.0.3:
- resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
- engines: {node: '>=0.10.0'}
-
- eventemitter3@5.0.1:
- resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==}
-
- execa@8.0.1:
- resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==}
- engines: {node: '>=16.17'}
-
- fast-deep-equal@3.1.3:
- resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
-
- fast-glob@3.3.2:
- resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==}
- engines: {node: '>=8.6.0'}
-
- fast-json-stable-stringify@2.1.0:
- resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
-
- fast-levenshtein@2.0.6:
- resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==}
-
- fastq@1.17.1:
- resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==}
-
- file-entry-cache@6.0.1:
- resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==}
- engines: {node: ^10.12.0 || >=12.0.0}
-
- fill-range@7.1.1:
- resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
- engines: {node: '>=8'}
-
- find-up@5.0.0:
- resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==}
- engines: {node: '>=10'}
-
- flat-cache@3.2.0:
- resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==}
- engines: {node: ^10.12.0 || >=12.0.0}
-
- flatted@3.3.1:
- resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==}
-
- follow-redirects@1.15.6:
- resolution: {integrity: sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==}
- engines: {node: '>=4.0'}
- peerDependencies:
- debug: '*'
- peerDependenciesMeta:
- debug:
- optional: true
-
- for-each@0.3.3:
- resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==}
-
- form-data@4.0.0:
- resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==}
- engines: {node: '>= 6'}
-
- fs.realpath@1.0.0:
- resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
-
- fsevents@2.3.3:
- resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
- engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
- os: [darwin]
-
- function-bind@1.1.2:
- resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
-
- function.prototype.name@1.1.6:
- resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==}
- engines: {node: '>= 0.4'}
-
- functions-have-names@1.2.3:
- resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==}
-
- gensync@1.0.0-beta.2:
- resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==}
- engines: {node: '>=6.9.0'}
-
- get-east-asian-width@1.2.0:
- resolution: {integrity: sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==}
- engines: {node: '>=18'}
-
- get-intrinsic@1.2.4:
- resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==}
- engines: {node: '>= 0.4'}
-
- get-nonce@1.0.1:
- resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==}
- engines: {node: '>=6'}
-
- get-stream@8.0.1:
- resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==}
- engines: {node: '>=16'}
-
- get-symbol-description@1.0.2:
- resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==}
- engines: {node: '>= 0.4'}
-
- glob-parent@5.1.2:
- resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
- engines: {node: '>= 6'}
-
- glob-parent@6.0.2:
- resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
- engines: {node: '>=10.13.0'}
-
- glob@7.2.3:
- resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
- deprecated: Glob versions prior to v9 are no longer supported
-
- globals@11.12.0:
- resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==}
- engines: {node: '>=4'}
-
- globals@13.24.0:
- resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==}
- engines: {node: '>=8'}
-
- globalthis@1.0.4:
- resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==}
- engines: {node: '>= 0.4'}
-
- gopd@1.0.1:
- resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==}
-
- graphemer@1.4.0:
- resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==}
-
- has-bigints@1.0.2:
- resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==}
-
- has-flag@3.0.0:
- resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==}
- engines: {node: '>=4'}
-
- has-flag@4.0.0:
- resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
- engines: {node: '>=8'}
-
- has-property-descriptors@1.0.2:
- resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==}
-
- has-proto@1.0.3:
- resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==}
- engines: {node: '>= 0.4'}
-
- has-symbols@1.0.3:
- resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==}
- engines: {node: '>= 0.4'}
-
- has-tostringtag@1.0.2:
- resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==}
- engines: {node: '>= 0.4'}
-
- hasown@2.0.2:
- resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
- engines: {node: '>= 0.4'}
-
- html-parse-stringify@3.0.1:
- resolution: {integrity: sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg==}
-
- human-signals@5.0.0:
- resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==}
- engines: {node: '>=16.17.0'}
-
- i18next-http-backend@2.5.2:
- resolution: {integrity: sha512-+K8HbDfrvc1/2X8jpb7RLhI9ZxBDpx3xogYkQwGKlWAUXLSEGXzgdt3EcUjLlBCdMwdQY+K+EUF6oh8oB6rwHw==}
-
- i18next@23.12.2:
- resolution: {integrity: sha512-XIeh5V+bi8SJSWGL3jqbTEBW5oD6rbP5L+E7dVQh1MNTxxYef0x15rhJVcRb7oiuq4jLtgy2SD8eFlf6P2cmqg==}
-
- ignore@5.3.1:
- resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==}
- engines: {node: '>= 4'}
-
- immutable@4.3.7:
- resolution: {integrity: sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==}
-
- import-fresh@3.3.0:
- resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==}
- engines: {node: '>=6'}
-
- imurmurhash@0.1.4:
- resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
- engines: {node: '>=0.8.19'}
-
- inflight@1.0.6:
- resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
- deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.
-
- inherits@2.0.4:
- resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
-
- internal-slot@1.0.7:
- resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==}
- engines: {node: '>= 0.4'}
-
- invariant@2.2.4:
- resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==}
-
- is-array-buffer@3.0.4:
- resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==}
- engines: {node: '>= 0.4'}
-
- is-async-function@2.0.0:
- resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==}
- engines: {node: '>= 0.4'}
-
- is-bigint@1.0.4:
- resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==}
-
- is-binary-path@2.1.0:
- resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
- engines: {node: '>=8'}
-
- is-boolean-object@1.1.2:
- resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==}
- engines: {node: '>= 0.4'}
-
- is-callable@1.2.7:
- resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==}
- engines: {node: '>= 0.4'}
-
- is-core-module@2.15.0:
- resolution: {integrity: sha512-Dd+Lb2/zvk9SKy1TGCt1wFJFo/MWBPMX5x7KcvLajWTGuomczdQX61PvY5yK6SVACwpoexWo81IfFyoKY2QnTA==}
- engines: {node: '>= 0.4'}
-
- is-data-view@1.0.1:
- resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==}
- engines: {node: '>= 0.4'}
-
- is-date-object@1.0.5:
- resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==}
- engines: {node: '>= 0.4'}
-
- is-extglob@2.1.1:
- resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
- engines: {node: '>=0.10.0'}
-
- is-finalizationregistry@1.0.2:
- resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==}
-
- is-fullwidth-code-point@4.0.0:
- resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==}
- engines: {node: '>=12'}
-
- is-fullwidth-code-point@5.0.0:
- resolution: {integrity: sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==}
- engines: {node: '>=18'}
-
- is-generator-function@1.0.10:
- resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==}
- engines: {node: '>= 0.4'}
-
- is-glob@4.0.3:
- resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
- engines: {node: '>=0.10.0'}
-
- is-map@2.0.3:
- resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==}
- engines: {node: '>= 0.4'}
-
- is-negative-zero@2.0.3:
- resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==}
- engines: {node: '>= 0.4'}
-
- is-number-object@1.0.7:
- resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==}
- engines: {node: '>= 0.4'}
-
- is-number@7.0.0:
- resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
- engines: {node: '>=0.12.0'}
-
- is-path-inside@3.0.3:
- resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==}
- engines: {node: '>=8'}
-
- is-regex@1.1.4:
- resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==}
- engines: {node: '>= 0.4'}
-
- is-set@2.0.3:
- resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==}
- engines: {node: '>= 0.4'}
-
- is-shared-array-buffer@1.0.3:
- resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==}
- engines: {node: '>= 0.4'}
-
- is-stream@3.0.0:
- resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
-
- is-string@1.0.7:
- resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==}
- engines: {node: '>= 0.4'}
-
- is-symbol@1.0.4:
- resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==}
- engines: {node: '>= 0.4'}
-
- is-typed-array@1.1.13:
- resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==}
- engines: {node: '>= 0.4'}
-
- is-weakmap@2.0.2:
- resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==}
- engines: {node: '>= 0.4'}
-
- is-weakref@1.0.2:
- resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==}
-
- is-weakset@2.0.3:
- resolution: {integrity: sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==}
- engines: {node: '>= 0.4'}
-
- isarray@2.0.5:
- resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==}
-
- isexe@2.0.0:
- resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
-
- iterator.prototype@1.1.2:
- resolution: {integrity: sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==}
-
- js-tokens@4.0.0:
- resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
-
- js-yaml@4.1.0:
- resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
- hasBin: true
-
- jsesc@2.5.2:
- resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==}
- engines: {node: '>=4'}
- hasBin: true
-
- json-buffer@3.0.1:
- resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==}
-
- json-schema-traverse@0.4.1:
- resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
-
- json-stable-stringify-without-jsonify@1.0.1:
- resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
-
- json5@2.2.3:
- resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==}
- engines: {node: '>=6'}
- hasBin: true
-
- jsx-ast-utils@3.3.5:
- resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==}
- engines: {node: '>=4.0'}
-
- keyv@4.5.4:
- resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==}
-
- klona@2.0.6:
- resolution: {integrity: sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==}
- engines: {node: '>= 8'}
-
- levn@0.4.1:
- resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
- engines: {node: '>= 0.8.0'}
-
- lilconfig@3.1.2:
- resolution: {integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==}
- engines: {node: '>=14'}
-
- lint-staged@15.2.7:
- resolution: {integrity: sha512-+FdVbbCZ+yoh7E/RosSdqKJyUM2OEjTciH0TFNkawKgvFp1zbGlEC39RADg+xKBG1R4mhoH2j85myBQZ5wR+lw==}
- engines: {node: '>=18.12.0'}
- hasBin: true
-
- listr2@8.2.3:
- resolution: {integrity: sha512-Lllokma2mtoniUOS94CcOErHWAug5iu7HOmDrvWgpw8jyQH2fomgB+7lZS4HWZxytUuQwkGOwe49FvwVaA85Xw==}
- engines: {node: '>=18.0.0'}
-
- locate-path@6.0.0:
- resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
- engines: {node: '>=10'}
-
- lodash.merge@4.6.2:
- resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
-
- log-update@6.0.0:
- resolution: {integrity: sha512-niTvB4gqvtof056rRIrTZvjNYE4rCUzO6X/X+kYjd7WFxXeJ0NwEFnRxX6ehkvv3jTwrXnNdtAak5XYZuIyPFw==}
- engines: {node: '>=18'}
-
- loose-envify@1.4.0:
- resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
- hasBin: true
-
- lru-cache@5.1.1:
- resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
-
- merge-stream@2.0.0:
- resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
-
- merge2@1.4.1:
- resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
- engines: {node: '>= 8'}
-
- micromatch@4.0.7:
- resolution: {integrity: sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==}
- engines: {node: '>=8.6'}
-
- mime-db@1.52.0:
- resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==}
- engines: {node: '>= 0.6'}
-
- mime-types@2.1.35:
- resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==}
- engines: {node: '>= 0.6'}
-
- mimic-fn@2.1.0:
- resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==}
- engines: {node: '>=6'}
-
- mimic-fn@4.0.0:
- resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==}
- engines: {node: '>=12'}
-
- minimatch@3.1.2:
- resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
-
- ms@2.1.2:
- resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
-
- nanoid@3.3.7:
- resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==}
- engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
- hasBin: true
-
- natural-compare@1.4.0:
- resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
-
- node-fetch@2.7.0:
- resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==}
- engines: {node: 4.x || >=6.0.0}
- peerDependencies:
- encoding: ^0.1.0
- peerDependenciesMeta:
- encoding:
- optional: true
-
- node-releases@2.0.18:
- resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==}
-
- normalize-path@3.0.0:
- resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
- engines: {node: '>=0.10.0'}
-
- npm-run-path@5.3.0:
- resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
-
- object-assign@4.1.1:
- resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
- engines: {node: '>=0.10.0'}
-
- object-inspect@1.13.2:
- resolution: {integrity: sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==}
- engines: {node: '>= 0.4'}
-
- object-keys@1.1.1:
- resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==}
- engines: {node: '>= 0.4'}
-
- object.assign@4.1.5:
- resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==}
- engines: {node: '>= 0.4'}
-
- object.entries@1.1.8:
- resolution: {integrity: sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==}
- engines: {node: '>= 0.4'}
-
- object.fromentries@2.0.8:
- resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==}
- engines: {node: '>= 0.4'}
-
- object.values@1.2.0:
- resolution: {integrity: sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==}
- engines: {node: '>= 0.4'}
-
- once@1.4.0:
- resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
-
- onetime@5.1.2:
- resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==}
- engines: {node: '>=6'}
-
- onetime@6.0.0:
- resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==}
- engines: {node: '>=12'}
-
- optionator@0.9.4:
- resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==}
- engines: {node: '>= 0.8.0'}
-
- p-limit@3.1.0:
- resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}
- engines: {node: '>=10'}
-
- p-locate@5.0.0:
- resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==}
- engines: {node: '>=10'}
-
- parent-module@1.0.1:
- resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
- engines: {node: '>=6'}
-
- path-exists@4.0.0:
- resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
- engines: {node: '>=8'}
-
- path-is-absolute@1.0.1:
- resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
- engines: {node: '>=0.10.0'}
-
- path-key@3.1.1:
- resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
- engines: {node: '>=8'}
-
- path-key@4.0.0:
- resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==}
- engines: {node: '>=12'}
-
- path-parse@1.0.7:
- resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
-
- picocolors@1.0.1:
- resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==}
-
- picomatch@2.3.1:
- resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
- engines: {node: '>=8.6'}
-
- pidtree@0.6.0:
- resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==}
- engines: {node: '>=0.10'}
- hasBin: true
-
- possible-typed-array-names@1.0.0:
- resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==}
- engines: {node: '>= 0.4'}
-
- postcss-js@4.0.1:
- resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==}
- engines: {node: ^12 || ^14 || >= 16}
- peerDependencies:
- postcss: ^8.4.21
-
- postcss-mixins@9.0.4:
- resolution: {integrity: sha512-XVq5jwQJDRu5M1XGkdpgASqLk37OqkH4JCFDXl/Dn7janOJjCTEKL+36cnRVy7bMtoBzALfO7bV7nTIsFnUWLA==}
- engines: {node: '>=14.0'}
- peerDependencies:
- postcss: ^8.2.14
-
- postcss-nested@6.2.0:
- resolution: {integrity: sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==}
- engines: {node: '>=12.0'}
- peerDependencies:
- postcss: ^8.2.14
-
- postcss-preset-mantine@1.17.0:
- resolution: {integrity: sha512-ji1PMDBUf2Vsx/HE5faMSs1+ff6qE6YRulTr4Ja+6HD3gop8rSMTCYdpN7KrdsEg079kfBKkO/PaKhG9uR0zwQ==}
- peerDependencies:
- postcss: '>=8.0.0'
-
- postcss-selector-parser@6.1.1:
- resolution: {integrity: sha512-b4dlw/9V8A71rLIDsSwVmak9z2DuBUB7CA1/wSdelNEzqsjoSPeADTWNO09lpH49Diy3/JIZ2bSPB1dI3LJCHg==}
- engines: {node: '>=4'}
-
- postcss-simple-vars@7.0.1:
- resolution: {integrity: sha512-5GLLXaS8qmzHMOjVxqkk1TZPf1jMqesiI7qLhnlyERalG0sMbHIbJqrcnrpmZdKCLglHnRHoEBB61RtGTsj++A==}
- engines: {node: '>=14.0'}
- peerDependencies:
- postcss: ^8.2.1
-
- postcss@8.4.39:
- resolution: {integrity: sha512-0vzE+lAiG7hZl1/9I8yzKLx3aR9Xbof3fBHKunvMfOCYAtMhrsnccJY2iTURb9EZd5+pLuiNV9/c/GZJOHsgIw==}
- engines: {node: ^10 || ^12 || >=14}
-
- prelude-ls@1.2.1:
- resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
- engines: {node: '>= 0.8.0'}
-
- prettier@3.3.3:
- resolution: {integrity: sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==}
- engines: {node: '>=14'}
- hasBin: true
-
- prop-types@15.8.1:
- resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==}
-
- property-expr@2.0.6:
- resolution: {integrity: sha512-SVtmxhRE/CGkn3eZY1T6pC8Nln6Fr/lu1mKSgRud0eC73whjGfoAogbn78LkD8aFL0zz3bAFerKSnOl7NlErBA==}
-
- proxy-from-env@1.1.0:
- resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==}
-
- punycode@2.3.1:
- resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
- engines: {node: '>=6'}
-
- queue-microtask@1.2.3:
- resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
-
- react-dom@18.3.1:
- resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==}
- peerDependencies:
- react: ^18.3.1
-
- react-i18next@15.0.0:
- resolution: {integrity: sha512-2O3IgF4zivg57Q6p6i+ChDgJ371IDcEWbuWC6gvoh5NbkDMs0Q+O7RPr4v61+Se32E0V+LmtwePAeqWZW0bi6g==}
- peerDependencies:
- i18next: '>= 23.2.3'
- react: '>= 16.8.0'
- react-dom: '*'
- react-native: '*'
- peerDependenciesMeta:
- react-dom:
- optional: true
- react-native:
- optional: true
-
- react-is@16.13.1:
- resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==}
-
- react-number-format@5.4.0:
- resolution: {integrity: sha512-NWdICrqLhI7rAS8yUeLVd6Wr4cN7UjJ9IBTS0f/a9i7UB4x4Ti70kGnksBtZ7o4Z7YRbvCMMR/jQmkoOBa/4fg==}
- peerDependencies:
- react: ^0.14 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0
- react-dom: ^0.14 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0
-
- react-refresh@0.14.2:
- resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==}
- engines: {node: '>=0.10.0'}
-
- react-remove-scroll-bar@2.3.6:
- resolution: {integrity: sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g==}
- engines: {node: '>=10'}
- peerDependencies:
- '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0
- react: ^16.8.0 || ^17.0.0 || ^18.0.0
- peerDependenciesMeta:
- '@types/react':
- optional: true
-
- react-remove-scroll@2.5.10:
- resolution: {integrity: sha512-m3zvBRANPBw3qxVVjEIPEQinkcwlFZ4qyomuWVpNJdv4c6MvHfXV0C3L9Jx5rr3HeBHKNRX+1jreB5QloDIJjA==}
- engines: {node: '>=10'}
- peerDependencies:
- '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0
- react: ^16.8.0 || ^17.0.0 || ^18.0.0
- peerDependenciesMeta:
- '@types/react':
- optional: true
-
- react-router-dom@6.25.1:
- resolution: {integrity: sha512-0tUDpbFvk35iv+N89dWNrJp+afLgd+y4VtorJZuOCXK0kkCWjEvb3vTJM++SYvMEpbVwXKf3FjeVveVEb6JpDQ==}
- engines: {node: '>=14.0.0'}
- peerDependencies:
- react: '>=16.8'
- react-dom: '>=16.8'
-
- react-router@6.25.1:
- resolution: {integrity: sha512-u8ELFr5Z6g02nUtpPAggP73Jigj1mRePSwhS/2nkTrlPU5yEkH1vYzWNyvSnSzeeE2DNqWdH+P8OhIh9wuXhTw==}
- engines: {node: '>=14.0.0'}
- peerDependencies:
- react: '>=16.8'
-
- react-style-singleton@2.2.1:
- resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==}
- engines: {node: '>=10'}
- peerDependencies:
- '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0
- react: ^16.8.0 || ^17.0.0 || ^18.0.0
- peerDependenciesMeta:
- '@types/react':
- optional: true
-
- react-textarea-autosize@8.5.3:
- resolution: {integrity: sha512-XT1024o2pqCuZSuBt9FwHlaDeNtVrtCXu0Rnz88t1jUGheCLa3PhjE1GH8Ctm2axEtvdCl5SUHYschyQ0L5QHQ==}
- engines: {node: '>=10'}
- peerDependencies:
- react: ^16.8.0 || ^17.0.0 || ^18.0.0
-
- react-transition-group@4.4.5:
- resolution: {integrity: sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==}
- peerDependencies:
- react: '>=16.6.0'
- react-dom: '>=16.6.0'
-
- react@18.3.1:
- resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==}
- engines: {node: '>=0.10.0'}
-
- readdirp@3.6.0:
- resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
- engines: {node: '>=8.10.0'}
-
- reflect.getprototypeof@1.0.6:
- resolution: {integrity: sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==}
- engines: {node: '>= 0.4'}
-
- regenerator-runtime@0.14.1:
- resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==}
-
- regexp.prototype.flags@1.5.2:
- resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==}
- engines: {node: '>= 0.4'}
-
- resolve-from@4.0.0:
- resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
- engines: {node: '>=4'}
-
- resolve@2.0.0-next.5:
- resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==}
- hasBin: true
-
- restore-cursor@4.0.0:
- resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
-
- reusify@1.0.4:
- resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
- engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
-
- rfdc@1.4.1:
- resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==}
-
- rimraf@3.0.2:
- resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==}
- deprecated: Rimraf versions prior to v4 are no longer supported
- hasBin: true
-
- rollup@4.19.0:
- resolution: {integrity: sha512-5r7EYSQIowHsK4eTZ0Y81qpZuJz+MUuYeqmmYmRMl1nwhdmbiYqt5jwzf6u7wyOzJgYqtCRMtVRKOtHANBz7rA==}
- engines: {node: '>=18.0.0', npm: '>=8.0.0'}
- hasBin: true
-
- run-parallel@1.2.0:
- resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
-
- safe-array-concat@1.1.2:
- resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==}
- engines: {node: '>=0.4'}
-
- safe-regex-test@1.0.3:
- resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==}
- engines: {node: '>= 0.4'}
-
- sass@1.77.8:
- resolution: {integrity: sha512-4UHg6prsrycW20fqLGPShtEvo/WyHRVRHwOP4DzkUrObWoWI05QBSfzU71TVB7PFaL104TwNaHpjlWXAZbQiNQ==}
- engines: {node: '>=14.0.0'}
- hasBin: true
-
- scheduler@0.23.2:
- resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==}
-
- semver@6.3.1:
- resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
- hasBin: true
-
- set-function-length@1.2.2:
- resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==}
- engines: {node: '>= 0.4'}
-
- set-function-name@2.0.2:
- resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==}
- engines: {node: '>= 0.4'}
-
- shebang-command@2.0.0:
- resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
- engines: {node: '>=8'}
-
- shebang-regex@3.0.0:
- resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
- engines: {node: '>=8'}
-
- side-channel@1.0.6:
- resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==}
- engines: {node: '>= 0.4'}
-
- signal-exit@3.0.7:
- resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
-
- signal-exit@4.1.0:
- resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==}
- engines: {node: '>=14'}
-
- slice-ansi@5.0.0:
- resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==}
- engines: {node: '>=12'}
-
- slice-ansi@7.1.0:
- resolution: {integrity: sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==}
- engines: {node: '>=18'}
-
- source-map-js@1.2.0:
- resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==}
- engines: {node: '>=0.10.0'}
-
- string-argv@0.3.2:
- resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==}
- engines: {node: '>=0.6.19'}
-
- string-width@7.2.0:
- resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==}
- engines: {node: '>=18'}
-
- string.prototype.matchall@4.0.11:
- resolution: {integrity: sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==}
- engines: {node: '>= 0.4'}
-
- string.prototype.repeat@1.0.0:
- resolution: {integrity: sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==}
-
- string.prototype.trim@1.2.9:
- resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==}
- engines: {node: '>= 0.4'}
-
- string.prototype.trimend@1.0.8:
- resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==}
-
- string.prototype.trimstart@1.0.8:
- resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==}
- engines: {node: '>= 0.4'}
-
- strip-ansi@6.0.1:
- resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
- engines: {node: '>=8'}
-
- strip-ansi@7.1.0:
- resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==}
- engines: {node: '>=12'}
-
- strip-final-newline@3.0.0:
- resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==}
- engines: {node: '>=12'}
-
- strip-json-comments@3.1.1:
- resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
- engines: {node: '>=8'}
-
- sugarss@4.0.1:
- resolution: {integrity: sha512-WCjS5NfuVJjkQzK10s8WOBY+hhDxxNt/N6ZaGwxFZ+wN3/lKKFSaaKUNecULcTTvE4urLcKaZFQD8vO0mOZujw==}
- engines: {node: '>=12.0'}
- peerDependencies:
- postcss: ^8.3.3
-
- supports-color@5.5.0:
- resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
- engines: {node: '>=4'}
-
- supports-color@7.2.0:
- resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
- engines: {node: '>=8'}
-
- supports-preserve-symlinks-flag@1.0.0:
- resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
- engines: {node: '>= 0.4'}
-
- swr@2.2.5:
- resolution: {integrity: sha512-QtxqyclFeAsxEUeZIYmsaQ0UjimSq1RZ9Un7I68/0ClKK/U3LoyQunwkQfJZr2fc22DfIXLNDc2wFyTEikCUpg==}
- peerDependencies:
- react: ^16.11.0 || ^17.0.0 || ^18.0.0
-
- tabbable@6.2.0:
- resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==}
-
- text-table@0.2.0:
- resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
-
- tiny-case@1.0.3:
- resolution: {integrity: sha512-Eet/eeMhkO6TX8mnUteS9zgPbUMQa4I6Kkp5ORiBD5476/m+PIRiumP5tmh5ioJpH7k51Kehawy2UDfsnxxY8Q==}
-
- to-fast-properties@2.0.0:
- resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==}
- engines: {node: '>=4'}
-
- to-regex-range@5.0.1:
- resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
- engines: {node: '>=8.0'}
-
- toposort@2.0.2:
- resolution: {integrity: sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==}
-
- tr46@0.0.3:
- resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==}
-
- tslib@2.6.3:
- resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==}
-
- type-check@0.4.0:
- resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
- engines: {node: '>= 0.8.0'}
-
- type-fest@0.20.2:
- resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==}
- engines: {node: '>=10'}
-
- type-fest@2.19.0:
- resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==}
- engines: {node: '>=12.20'}
-
- type-fest@4.23.0:
- resolution: {integrity: sha512-ZiBujro2ohr5+Z/hZWHESLz3g08BBdrdLMieYFULJO+tWc437sn8kQsWLJoZErY8alNhxre9K4p3GURAG11n+w==}
- engines: {node: '>=16'}
-
- typed-array-buffer@1.0.2:
- resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==}
- engines: {node: '>= 0.4'}
-
- typed-array-byte-length@1.0.1:
- resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==}
- engines: {node: '>= 0.4'}
-
- typed-array-byte-offset@1.0.2:
- resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==}
- engines: {node: '>= 0.4'}
-
- typed-array-length@1.0.6:
- resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==}
- engines: {node: '>= 0.4'}
-
- unbox-primitive@1.0.2:
- resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==}
-
- update-browserslist-db@1.1.0:
- resolution: {integrity: sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==}
- hasBin: true
- peerDependencies:
- browserslist: '>= 4.21.0'
-
- uri-js@4.4.1:
- resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
-
- use-callback-ref@1.3.2:
- resolution: {integrity: sha512-elOQwe6Q8gqZgDA8mrh44qRTQqpIHDcZ3hXTLjBe1i4ph8XpNJnO+aQf3NaG+lriLopI4HMx9VjQLfPQ6vhnoA==}
- engines: {node: '>=10'}
- peerDependencies:
- '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0
- react: ^16.8.0 || ^17.0.0 || ^18.0.0
- peerDependenciesMeta:
- '@types/react':
- optional: true
-
- use-composed-ref@1.3.0:
- resolution: {integrity: sha512-GLMG0Jc/jiKov/3Ulid1wbv3r54K9HlMW29IWcDFPEqFkSO2nS0MuefWgMJpeHQ9YJeXDL3ZUF+P3jdXlZX/cQ==}
- peerDependencies:
- react: ^16.8.0 || ^17.0.0 || ^18.0.0
-
- use-isomorphic-layout-effect@1.1.2:
- resolution: {integrity: sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==}
- peerDependencies:
- '@types/react': '*'
- react: ^16.8.0 || ^17.0.0 || ^18.0.0
- peerDependenciesMeta:
- '@types/react':
- optional: true
-
- use-latest@1.2.1:
- resolution: {integrity: sha512-xA+AVm/Wlg3e2P/JiItTziwS7FK92LWrDB0p+hgXloIMuVCeJJ8v6f0eeHyPZaJrM+usM1FkFfbNCrJGs8A/zw==}
- peerDependencies:
- '@types/react': '*'
- react: ^16.8.0 || ^17.0.0 || ^18.0.0
- peerDependenciesMeta:
- '@types/react':
- optional: true
-
- use-sidecar@1.1.2:
- resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==}
- engines: {node: '>=10'}
- peerDependencies:
- '@types/react': ^16.9.0 || ^17.0.0 || ^18.0.0
- react: ^16.8.0 || ^17.0.0 || ^18.0.0
- peerDependenciesMeta:
- '@types/react':
- optional: true
-
- use-sync-external-store@1.2.2:
- resolution: {integrity: sha512-PElTlVMwpblvbNqQ82d2n6RjStvdSoNe9FG28kNfz3WiXilJm4DdNkEzRhCZuIDwY8U08WVihhGR5iRqAwfDiw==}
- peerDependencies:
- react: ^16.8.0 || ^17.0.0 || ^18.0.0
-
- util-deprecate@1.0.2:
- resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
-
- uuid@10.0.0:
- resolution: {integrity: sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==}
- hasBin: true
-
- vite@5.3.4:
- resolution: {integrity: sha512-Cw+7zL3ZG9/NZBB8C+8QbQZmR54GwqIz+WMI4b3JgdYJvX+ny9AjJXqkGQlDXSXRP9rP0B4tbciRMOVEKulVOA==}
- engines: {node: ^18.0.0 || >=20.0.0}
- hasBin: true
- peerDependencies:
- '@types/node': ^18.0.0 || >=20.0.0
- less: '*'
- lightningcss: ^1.21.0
- sass: '*'
- stylus: '*'
- sugarss: '*'
- terser: ^5.4.0
- peerDependenciesMeta:
- '@types/node':
- optional: true
- less:
- optional: true
- lightningcss:
- optional: true
- sass:
- optional: true
- stylus:
- optional: true
- sugarss:
- optional: true
- terser:
- optional: true
-
- void-elements@3.1.0:
- resolution: {integrity: sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==}
- engines: {node: '>=0.10.0'}
-
- webidl-conversions@3.0.1:
- resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==}
-
- whatwg-url@5.0.0:
- resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==}
-
- which-boxed-primitive@1.0.2:
- resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==}
-
- which-builtin-type@1.1.3:
- resolution: {integrity: sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==}
- engines: {node: '>= 0.4'}
-
- which-collection@1.0.2:
- resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==}
- engines: {node: '>= 0.4'}
-
- which-typed-array@1.1.15:
- resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==}
- engines: {node: '>= 0.4'}
-
- which@2.0.2:
- resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
- engines: {node: '>= 8'}
- hasBin: true
-
- word-wrap@1.2.5:
- resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==}
- engines: {node: '>=0.10.0'}
-
- wrap-ansi@9.0.0:
- resolution: {integrity: sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==}
- engines: {node: '>=18'}
-
- wrappy@1.0.2:
- resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
-
- yallist@3.1.1:
- resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==}
-
- yaml@2.4.5:
- resolution: {integrity: sha512-aBx2bnqDzVOyNKfsysjA2ms5ZlnjSAW2eG3/L5G/CSujfjLJTJsEw1bGw8kCf04KodQWk1pxlGnZ56CRxiawmg==}
- engines: {node: '>= 14'}
- hasBin: true
-
- yocto-queue@0.1.0:
- resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
- engines: {node: '>=10'}
-
- yup@1.4.0:
- resolution: {integrity: sha512-wPbgkJRCqIf+OHyiTBQoJiP5PFuAXaWiJK6AmYkzQAh5/c2K9hzSApBZG5wV9KoKSePF7sAxmNSvh/13YHkFDg==}
-
-snapshots:
-
- '@ampproject/remapping@2.3.0':
- dependencies:
- '@jridgewell/gen-mapping': 0.3.5
- '@jridgewell/trace-mapping': 0.3.25
-
- '@babel/code-frame@7.24.7':
- dependencies:
- '@babel/highlight': 7.24.7
- picocolors: 1.0.1
-
- '@babel/compat-data@7.24.9': {}
-
- '@babel/core@7.24.9':
- dependencies:
- '@ampproject/remapping': 2.3.0
- '@babel/code-frame': 7.24.7
- '@babel/generator': 7.24.10
- '@babel/helper-compilation-targets': 7.24.8
- '@babel/helper-module-transforms': 7.24.9(@babel/core@7.24.9)
- '@babel/helpers': 7.24.8
- '@babel/parser': 7.24.8
- '@babel/template': 7.24.7
- '@babel/traverse': 7.24.8
- '@babel/types': 7.24.9
- convert-source-map: 2.0.0
- debug: 4.3.5
- gensync: 1.0.0-beta.2
- json5: 2.2.3
- semver: 6.3.1
- transitivePeerDependencies:
- - supports-color
-
- '@babel/generator@7.24.10':
- dependencies:
- '@babel/types': 7.24.9
- '@jridgewell/gen-mapping': 0.3.5
- '@jridgewell/trace-mapping': 0.3.25
- jsesc: 2.5.2
-
- '@babel/helper-compilation-targets@7.24.8':
- dependencies:
- '@babel/compat-data': 7.24.9
- '@babel/helper-validator-option': 7.24.8
- browserslist: 4.23.2
- lru-cache: 5.1.1
- semver: 6.3.1
-
- '@babel/helper-environment-visitor@7.24.7':
- dependencies:
- '@babel/types': 7.24.9
-
- '@babel/helper-function-name@7.24.7':
- dependencies:
- '@babel/template': 7.24.7
- '@babel/types': 7.24.9
-
- '@babel/helper-hoist-variables@7.24.7':
- dependencies:
- '@babel/types': 7.24.9
-
- '@babel/helper-module-imports@7.24.7':
- dependencies:
- '@babel/traverse': 7.24.8
- '@babel/types': 7.24.9
- transitivePeerDependencies:
- - supports-color
-
- '@babel/helper-module-transforms@7.24.9(@babel/core@7.24.9)':
- dependencies:
- '@babel/core': 7.24.9
- '@babel/helper-environment-visitor': 7.24.7
- '@babel/helper-module-imports': 7.24.7
- '@babel/helper-simple-access': 7.24.7
- '@babel/helper-split-export-declaration': 7.24.7
- '@babel/helper-validator-identifier': 7.24.7
- transitivePeerDependencies:
- - supports-color
-
- '@babel/helper-plugin-utils@7.24.8': {}
-
- '@babel/helper-simple-access@7.24.7':
- dependencies:
- '@babel/traverse': 7.24.8
- '@babel/types': 7.24.9
- transitivePeerDependencies:
- - supports-color
-
- '@babel/helper-split-export-declaration@7.24.7':
- dependencies:
- '@babel/types': 7.24.9
-
- '@babel/helper-string-parser@7.24.8': {}
-
- '@babel/helper-validator-identifier@7.24.7': {}
-
- '@babel/helper-validator-option@7.24.8': {}
-
- '@babel/helpers@7.24.8':
- dependencies:
- '@babel/template': 7.24.7
- '@babel/types': 7.24.9
-
- '@babel/highlight@7.24.7':
- dependencies:
- '@babel/helper-validator-identifier': 7.24.7
- chalk: 2.4.2
- js-tokens: 4.0.0
- picocolors: 1.0.1
-
- '@babel/parser@7.24.8':
- dependencies:
- '@babel/types': 7.24.9
-
- '@babel/plugin-transform-react-jsx-self@7.24.7(@babel/core@7.24.9)':
- dependencies:
- '@babel/core': 7.24.9
- '@babel/helper-plugin-utils': 7.24.8
-
- '@babel/plugin-transform-react-jsx-source@7.24.7(@babel/core@7.24.9)':
- dependencies:
- '@babel/core': 7.24.9
- '@babel/helper-plugin-utils': 7.24.8
-
- '@babel/runtime@7.24.8':
- dependencies:
- regenerator-runtime: 0.14.1
-
- '@babel/template@7.24.7':
- dependencies:
- '@babel/code-frame': 7.24.7
- '@babel/parser': 7.24.8
- '@babel/types': 7.24.9
-
- '@babel/traverse@7.24.8':
- dependencies:
- '@babel/code-frame': 7.24.7
- '@babel/generator': 7.24.10
- '@babel/helper-environment-visitor': 7.24.7
- '@babel/helper-function-name': 7.24.7
- '@babel/helper-hoist-variables': 7.24.7
- '@babel/helper-split-export-declaration': 7.24.7
- '@babel/parser': 7.24.8
- '@babel/types': 7.24.9
- debug: 4.3.5
- globals: 11.12.0
- transitivePeerDependencies:
- - supports-color
-
- '@babel/types@7.24.9':
- dependencies:
- '@babel/helper-string-parser': 7.24.8
- '@babel/helper-validator-identifier': 7.24.7
- to-fast-properties: 2.0.0
-
- '@esbuild/aix-ppc64@0.21.5':
- optional: true
-
- '@esbuild/android-arm64@0.21.5':
- optional: true
-
- '@esbuild/android-arm@0.21.5':
- optional: true
-
- '@esbuild/android-x64@0.21.5':
- optional: true
-
- '@esbuild/darwin-arm64@0.21.5':
- optional: true
-
- '@esbuild/darwin-x64@0.21.5':
- optional: true
-
- '@esbuild/freebsd-arm64@0.21.5':
- optional: true
-
- '@esbuild/freebsd-x64@0.21.5':
- optional: true
-
- '@esbuild/linux-arm64@0.21.5':
- optional: true
-
- '@esbuild/linux-arm@0.21.5':
- optional: true
-
- '@esbuild/linux-ia32@0.21.5':
- optional: true
-
- '@esbuild/linux-loong64@0.21.5':
- optional: true
-
- '@esbuild/linux-mips64el@0.21.5':
- optional: true
-
- '@esbuild/linux-ppc64@0.21.5':
- optional: true
-
- '@esbuild/linux-riscv64@0.21.5':
- optional: true
-
- '@esbuild/linux-s390x@0.21.5':
- optional: true
-
- '@esbuild/linux-x64@0.21.5':
- optional: true
-
- '@esbuild/netbsd-x64@0.21.5':
- optional: true
-
- '@esbuild/openbsd-x64@0.21.5':
- optional: true
-
- '@esbuild/sunos-x64@0.21.5':
- optional: true
-
- '@esbuild/win32-arm64@0.21.5':
- optional: true
-
- '@esbuild/win32-ia32@0.21.5':
- optional: true
-
- '@esbuild/win32-x64@0.21.5':
- optional: true
-
- '@eslint-community/eslint-utils@4.4.0(eslint@8.57.0)':
- dependencies:
- eslint: 8.57.0
- eslint-visitor-keys: 3.4.3
-
- '@eslint-community/regexpp@4.11.0': {}
-
- '@eslint/eslintrc@2.1.4':
- dependencies:
- ajv: 6.12.6
- debug: 4.3.5
- espree: 9.6.1
- globals: 13.24.0
- ignore: 5.3.1
- import-fresh: 3.3.0
- js-yaml: 4.1.0
- minimatch: 3.1.2
- strip-json-comments: 3.1.1
- transitivePeerDependencies:
- - supports-color
-
- '@eslint/js@8.57.0': {}
-
- '@floating-ui/core@1.6.5':
- dependencies:
- '@floating-ui/utils': 0.2.5
-
- '@floating-ui/dom@1.6.8':
- dependencies:
- '@floating-ui/core': 1.6.5
- '@floating-ui/utils': 0.2.5
-
- '@floating-ui/react-dom@2.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
- dependencies:
- '@floating-ui/dom': 1.6.8
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
-
- '@floating-ui/react@0.26.20(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
- dependencies:
- '@floating-ui/react-dom': 2.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@floating-ui/utils': 0.2.5
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
- tabbable: 6.2.0
-
- '@floating-ui/utils@0.2.5': {}
-
- '@humanwhocodes/config-array@0.11.14':
- dependencies:
- '@humanwhocodes/object-schema': 2.0.3
- debug: 4.3.5
- minimatch: 3.1.2
- transitivePeerDependencies:
- - supports-color
-
- '@humanwhocodes/module-importer@1.0.1': {}
-
- '@humanwhocodes/object-schema@2.0.3': {}
-
- '@jridgewell/gen-mapping@0.3.5':
- dependencies:
- '@jridgewell/set-array': 1.2.1
- '@jridgewell/sourcemap-codec': 1.5.0
- '@jridgewell/trace-mapping': 0.3.25
-
- '@jridgewell/resolve-uri@3.1.2': {}
-
- '@jridgewell/set-array@1.2.1': {}
-
- '@jridgewell/sourcemap-codec@1.5.0': {}
-
- '@jridgewell/trace-mapping@0.3.25':
- dependencies:
- '@jridgewell/resolve-uri': 3.1.2
- '@jridgewell/sourcemap-codec': 1.5.0
-
- '@mantine/core@7.11.2(@mantine/hooks@7.11.2(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
- dependencies:
- '@floating-ui/react': 0.26.20(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@mantine/hooks': 7.11.2(react@18.3.1)
- clsx: 2.1.1
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
- react-number-format: 5.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- react-remove-scroll: 2.5.10(@types/react@18.3.3)(react@18.3.1)
- react-textarea-autosize: 8.5.3(@types/react@18.3.3)(react@18.3.1)
- type-fest: 4.23.0
- transitivePeerDependencies:
- - '@types/react'
-
- '@mantine/dates@7.11.2(@mantine/core@7.11.2(@mantine/hooks@7.11.2(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.11.2(react@18.3.1))(dayjs@1.11.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
- dependencies:
- '@mantine/core': 7.11.2(@mantine/hooks@7.11.2(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@mantine/hooks': 7.11.2(react@18.3.1)
- clsx: 2.1.1
- dayjs: 1.11.12
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
-
- '@mantine/form@7.11.2(react@18.3.1)':
- dependencies:
- fast-deep-equal: 3.1.3
- klona: 2.0.6
- react: 18.3.1
-
- '@mantine/hooks@7.11.2(react@18.3.1)':
- dependencies:
- react: 18.3.1
-
- '@mantine/modals@7.11.2(@mantine/core@7.11.2(@mantine/hooks@7.11.2(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.11.2(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
- dependencies:
- '@mantine/core': 7.11.2(@mantine/hooks@7.11.2(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@mantine/hooks': 7.11.2(react@18.3.1)
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
-
- '@mantine/notifications@7.11.2(@mantine/core@7.11.2(@mantine/hooks@7.11.2(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.11.2(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
- dependencies:
- '@mantine/core': 7.11.2(@mantine/hooks@7.11.2(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@mantine/hooks': 7.11.2(react@18.3.1)
- '@mantine/store': 7.11.2(react@18.3.1)
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
- react-transition-group: 4.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-
- '@mantine/nprogress@7.11.2(@mantine/core@7.11.2(@mantine/hooks@7.11.2(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.11.2(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
- dependencies:
- '@mantine/core': 7.11.2(@mantine/hooks@7.11.2(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@mantine/hooks': 7.11.2(react@18.3.1)
- '@mantine/store': 7.11.2(react@18.3.1)
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
-
- '@mantine/store@7.11.2(react@18.3.1)':
- dependencies:
- react: 18.3.1
-
- '@nodelib/fs.scandir@2.1.5':
- dependencies:
- '@nodelib/fs.stat': 2.0.5
- run-parallel: 1.2.0
-
- '@nodelib/fs.stat@2.0.5': {}
-
- '@nodelib/fs.walk@1.2.8':
- dependencies:
- '@nodelib/fs.scandir': 2.1.5
- fastq: 1.17.1
-
- '@remix-run/router@1.18.0': {}
-
- '@rollup/rollup-android-arm-eabi@4.19.0':
- optional: true
-
- '@rollup/rollup-android-arm64@4.19.0':
- optional: true
-
- '@rollup/rollup-darwin-arm64@4.19.0':
- optional: true
-
- '@rollup/rollup-darwin-x64@4.19.0':
- optional: true
-
- '@rollup/rollup-linux-arm-gnueabihf@4.19.0':
- optional: true
-
- '@rollup/rollup-linux-arm-musleabihf@4.19.0':
- optional: true
-
- '@rollup/rollup-linux-arm64-gnu@4.19.0':
- optional: true
-
- '@rollup/rollup-linux-arm64-musl@4.19.0':
- optional: true
-
- '@rollup/rollup-linux-powerpc64le-gnu@4.19.0':
- optional: true
-
- '@rollup/rollup-linux-riscv64-gnu@4.19.0':
- optional: true
-
- '@rollup/rollup-linux-s390x-gnu@4.19.0':
- optional: true
-
- '@rollup/rollup-linux-x64-gnu@4.19.0':
- optional: true
-
- '@rollup/rollup-linux-x64-musl@4.19.0':
- optional: true
-
- '@rollup/rollup-win32-arm64-msvc@4.19.0':
- optional: true
-
- '@rollup/rollup-win32-ia32-msvc@4.19.0':
- optional: true
-
- '@rollup/rollup-win32-x64-msvc@4.19.0':
- optional: true
-
- '@tabler/icons-react@3.11.0(react@18.3.1)':
- dependencies:
- '@tabler/icons': 3.11.0
- react: 18.3.1
-
- '@tabler/icons@3.11.0': {}
-
- '@types/babel__core@7.20.5':
- dependencies:
- '@babel/parser': 7.24.8
- '@babel/types': 7.24.9
- '@types/babel__generator': 7.6.8
- '@types/babel__template': 7.4.4
- '@types/babel__traverse': 7.20.6
-
- '@types/babel__generator@7.6.8':
- dependencies:
- '@babel/types': 7.24.9
-
- '@types/babel__template@7.4.4':
- dependencies:
- '@babel/parser': 7.24.8
- '@babel/types': 7.24.9
-
- '@types/babel__traverse@7.20.6':
- dependencies:
- '@babel/types': 7.24.9
-
- '@types/estree@1.0.5': {}
-
- '@types/prop-types@15.7.12': {}
-
- '@types/react-dom@18.3.0':
- dependencies:
- '@types/react': 18.3.3
-
- '@types/react@18.3.3':
- dependencies:
- '@types/prop-types': 15.7.12
- csstype: 3.1.3
-
- '@ungap/structured-clone@1.2.0': {}
-
- '@vitejs/plugin-react@4.3.1(vite@5.3.4(sass@1.77.8)(sugarss@4.0.1(postcss@8.4.39)))':
- dependencies:
- '@babel/core': 7.24.9
- '@babel/plugin-transform-react-jsx-self': 7.24.7(@babel/core@7.24.9)
- '@babel/plugin-transform-react-jsx-source': 7.24.7(@babel/core@7.24.9)
- '@types/babel__core': 7.20.5
- react-refresh: 0.14.2
- vite: 5.3.4(sass@1.77.8)(sugarss@4.0.1(postcss@8.4.39))
- transitivePeerDependencies:
- - supports-color
-
- acorn-jsx@5.3.2(acorn@8.12.1):
- dependencies:
- acorn: 8.12.1
-
- acorn@8.12.1: {}
-
- ajv@6.12.6:
- dependencies:
- fast-deep-equal: 3.1.3
- fast-json-stable-stringify: 2.1.0
- json-schema-traverse: 0.4.1
- uri-js: 4.4.1
-
- ansi-escapes@6.2.1: {}
-
- ansi-regex@5.0.1: {}
-
- ansi-regex@6.0.1: {}
-
- ansi-styles@3.2.1:
- dependencies:
- color-convert: 1.9.3
-
- ansi-styles@4.3.0:
- dependencies:
- color-convert: 2.0.1
-
- ansi-styles@6.2.1: {}
-
- anymatch@3.1.3:
- dependencies:
- normalize-path: 3.0.0
- picomatch: 2.3.1
-
- argparse@2.0.1: {}
-
- array-buffer-byte-length@1.0.1:
- dependencies:
- call-bind: 1.0.7
- is-array-buffer: 3.0.4
-
- array-includes@3.1.8:
- dependencies:
- call-bind: 1.0.7
- define-properties: 1.2.1
- es-abstract: 1.23.3
- es-object-atoms: 1.0.0
- get-intrinsic: 1.2.4
- is-string: 1.0.7
-
- array.prototype.findlast@1.2.5:
- dependencies:
- call-bind: 1.0.7
- define-properties: 1.2.1
- es-abstract: 1.23.3
- es-errors: 1.3.0
- es-object-atoms: 1.0.0
- es-shim-unscopables: 1.0.2
-
- array.prototype.flat@1.3.2:
- dependencies:
- call-bind: 1.0.7
- define-properties: 1.2.1
- es-abstract: 1.23.3
- es-shim-unscopables: 1.0.2
-
- array.prototype.flatmap@1.3.2:
- dependencies:
- call-bind: 1.0.7
- define-properties: 1.2.1
- es-abstract: 1.23.3
- es-shim-unscopables: 1.0.2
-
- array.prototype.tosorted@1.1.4:
- dependencies:
- call-bind: 1.0.7
- define-properties: 1.2.1
- es-abstract: 1.23.3
- es-errors: 1.3.0
- es-shim-unscopables: 1.0.2
-
- arraybuffer.prototype.slice@1.0.3:
- dependencies:
- array-buffer-byte-length: 1.0.1
- call-bind: 1.0.7
- define-properties: 1.2.1
- es-abstract: 1.23.3
- es-errors: 1.3.0
- get-intrinsic: 1.2.4
- is-array-buffer: 3.0.4
- is-shared-array-buffer: 1.0.3
-
- asynckit@0.4.0: {}
-
- available-typed-arrays@1.0.7:
- dependencies:
- possible-typed-array-names: 1.0.0
-
- axios@1.7.2:
- dependencies:
- follow-redirects: 1.15.6
- form-data: 4.0.0
- proxy-from-env: 1.1.0
- transitivePeerDependencies:
- - debug
-
- balanced-match@1.0.2: {}
-
- binary-extensions@2.3.0: {}
-
- brace-expansion@1.1.11:
- dependencies:
- balanced-match: 1.0.2
- concat-map: 0.0.1
-
- braces@3.0.3:
- dependencies:
- fill-range: 7.1.1
-
- browserslist@4.23.2:
- dependencies:
- caniuse-lite: 1.0.30001643
- electron-to-chromium: 1.5.0
- node-releases: 2.0.18
- update-browserslist-db: 1.1.0(browserslist@4.23.2)
-
- call-bind@1.0.7:
- dependencies:
- es-define-property: 1.0.0
- es-errors: 1.3.0
- function-bind: 1.1.2
- get-intrinsic: 1.2.4
- set-function-length: 1.2.2
-
- callsites@3.1.0: {}
-
- camelcase-css@2.0.1: {}
-
- caniuse-lite@1.0.30001643: {}
-
- chalk@2.4.2:
- dependencies:
- ansi-styles: 3.2.1
- escape-string-regexp: 1.0.5
- supports-color: 5.5.0
-
- chalk@4.1.2:
- dependencies:
- ansi-styles: 4.3.0
- supports-color: 7.2.0
-
- chalk@5.3.0: {}
-
- chokidar@3.6.0:
- dependencies:
- anymatch: 3.1.3
- braces: 3.0.3
- glob-parent: 5.1.2
- is-binary-path: 2.1.0
- is-glob: 4.0.3
- normalize-path: 3.0.0
- readdirp: 3.6.0
- optionalDependencies:
- fsevents: 2.3.3
-
- cli-cursor@4.0.0:
- dependencies:
- restore-cursor: 4.0.0
-
- cli-truncate@4.0.0:
- dependencies:
- slice-ansi: 5.0.0
- string-width: 7.2.0
-
- client-only@0.0.1: {}
-
- clsx@2.1.1: {}
-
- color-convert@1.9.3:
- dependencies:
- color-name: 1.1.3
-
- color-convert@2.0.1:
- dependencies:
- color-name: 1.1.4
-
- color-name@1.1.3: {}
-
- color-name@1.1.4: {}
-
- colorette@2.0.20: {}
-
- combined-stream@1.0.8:
- dependencies:
- delayed-stream: 1.0.0
-
- commander@12.1.0: {}
-
- concat-map@0.0.1: {}
-
- convert-source-map@2.0.0: {}
-
- cross-fetch@4.0.0:
- dependencies:
- node-fetch: 2.7.0
- transitivePeerDependencies:
- - encoding
-
- cross-spawn@7.0.3:
- dependencies:
- path-key: 3.1.1
- shebang-command: 2.0.0
- which: 2.0.2
-
- crypto-js@4.2.0: {}
-
- cssesc@3.0.0: {}
-
- csstype@3.1.3: {}
-
- data-view-buffer@1.0.1:
- dependencies:
- call-bind: 1.0.7
- es-errors: 1.3.0
- is-data-view: 1.0.1
-
- data-view-byte-length@1.0.1:
- dependencies:
- call-bind: 1.0.7
- es-errors: 1.3.0
- is-data-view: 1.0.1
-
- data-view-byte-offset@1.0.0:
- dependencies:
- call-bind: 1.0.7
- es-errors: 1.3.0
- is-data-view: 1.0.1
-
- dayjs@1.11.12: {}
-
- debug@4.3.5:
- dependencies:
- ms: 2.1.2
-
- deep-is@0.1.4: {}
-
- define-data-property@1.1.4:
- dependencies:
- es-define-property: 1.0.0
- es-errors: 1.3.0
- gopd: 1.0.1
-
- define-properties@1.2.1:
- dependencies:
- define-data-property: 1.1.4
- has-property-descriptors: 1.0.2
- object-keys: 1.1.1
-
- delayed-stream@1.0.0: {}
-
- detect-node-es@1.1.0: {}
-
- doctrine@2.1.0:
- dependencies:
- esutils: 2.0.3
-
- doctrine@3.0.0:
- dependencies:
- esutils: 2.0.3
-
- dom-helpers@5.2.1:
- dependencies:
- '@babel/runtime': 7.24.8
- csstype: 3.1.3
-
- electron-to-chromium@1.5.0: {}
-
- emoji-regex@10.3.0: {}
-
- es-abstract@1.23.3:
- dependencies:
- array-buffer-byte-length: 1.0.1
- arraybuffer.prototype.slice: 1.0.3
- available-typed-arrays: 1.0.7
- call-bind: 1.0.7
- data-view-buffer: 1.0.1
- data-view-byte-length: 1.0.1
- data-view-byte-offset: 1.0.0
- es-define-property: 1.0.0
- es-errors: 1.3.0
- es-object-atoms: 1.0.0
- es-set-tostringtag: 2.0.3
- es-to-primitive: 1.2.1
- function.prototype.name: 1.1.6
- get-intrinsic: 1.2.4
- get-symbol-description: 1.0.2
- globalthis: 1.0.4
- gopd: 1.0.1
- has-property-descriptors: 1.0.2
- has-proto: 1.0.3
- has-symbols: 1.0.3
- hasown: 2.0.2
- internal-slot: 1.0.7
- is-array-buffer: 3.0.4
- is-callable: 1.2.7
- is-data-view: 1.0.1
- is-negative-zero: 2.0.3
- is-regex: 1.1.4
- is-shared-array-buffer: 1.0.3
- is-string: 1.0.7
- is-typed-array: 1.1.13
- is-weakref: 1.0.2
- object-inspect: 1.13.2
- object-keys: 1.1.1
- object.assign: 4.1.5
- regexp.prototype.flags: 1.5.2
- safe-array-concat: 1.1.2
- safe-regex-test: 1.0.3
- string.prototype.trim: 1.2.9
- string.prototype.trimend: 1.0.8
- string.prototype.trimstart: 1.0.8
- typed-array-buffer: 1.0.2
- typed-array-byte-length: 1.0.1
- typed-array-byte-offset: 1.0.2
- typed-array-length: 1.0.6
- unbox-primitive: 1.0.2
- which-typed-array: 1.1.15
-
- es-define-property@1.0.0:
- dependencies:
- get-intrinsic: 1.2.4
-
- es-errors@1.3.0: {}
-
- es-iterator-helpers@1.0.19:
- dependencies:
- call-bind: 1.0.7
- define-properties: 1.2.1
- es-abstract: 1.23.3
- es-errors: 1.3.0
- es-set-tostringtag: 2.0.3
- function-bind: 1.1.2
- get-intrinsic: 1.2.4
- globalthis: 1.0.4
- has-property-descriptors: 1.0.2
- has-proto: 1.0.3
- has-symbols: 1.0.3
- internal-slot: 1.0.7
- iterator.prototype: 1.1.2
- safe-array-concat: 1.1.2
-
- es-object-atoms@1.0.0:
- dependencies:
- es-errors: 1.3.0
-
- es-set-tostringtag@2.0.3:
- dependencies:
- get-intrinsic: 1.2.4
- has-tostringtag: 1.0.2
- hasown: 2.0.2
-
- es-shim-unscopables@1.0.2:
- dependencies:
- hasown: 2.0.2
-
- es-to-primitive@1.2.1:
- dependencies:
- is-callable: 1.2.7
- is-date-object: 1.0.5
- is-symbol: 1.0.4
-
- esbuild@0.21.5:
- optionalDependencies:
- '@esbuild/aix-ppc64': 0.21.5
- '@esbuild/android-arm': 0.21.5
- '@esbuild/android-arm64': 0.21.5
- '@esbuild/android-x64': 0.21.5
- '@esbuild/darwin-arm64': 0.21.5
- '@esbuild/darwin-x64': 0.21.5
- '@esbuild/freebsd-arm64': 0.21.5
- '@esbuild/freebsd-x64': 0.21.5
- '@esbuild/linux-arm': 0.21.5
- '@esbuild/linux-arm64': 0.21.5
- '@esbuild/linux-ia32': 0.21.5
- '@esbuild/linux-loong64': 0.21.5
- '@esbuild/linux-mips64el': 0.21.5
- '@esbuild/linux-ppc64': 0.21.5
- '@esbuild/linux-riscv64': 0.21.5
- '@esbuild/linux-s390x': 0.21.5
- '@esbuild/linux-x64': 0.21.5
- '@esbuild/netbsd-x64': 0.21.5
- '@esbuild/openbsd-x64': 0.21.5
- '@esbuild/sunos-x64': 0.21.5
- '@esbuild/win32-arm64': 0.21.5
- '@esbuild/win32-ia32': 0.21.5
- '@esbuild/win32-x64': 0.21.5
-
- escalade@3.1.2: {}
-
- escape-string-regexp@1.0.5: {}
-
- escape-string-regexp@4.0.0: {}
-
- eslint-plugin-react-hooks@4.6.2(eslint@8.57.0):
- dependencies:
- eslint: 8.57.0
-
- eslint-plugin-react-refresh@0.4.9(eslint@8.57.0):
- dependencies:
- eslint: 8.57.0
-
- eslint-plugin-react@7.35.0(eslint@8.57.0):
- dependencies:
- array-includes: 3.1.8
- array.prototype.findlast: 1.2.5
- array.prototype.flatmap: 1.3.2
- array.prototype.tosorted: 1.1.4
- doctrine: 2.1.0
- es-iterator-helpers: 1.0.19
- eslint: 8.57.0
- estraverse: 5.3.0
- hasown: 2.0.2
- jsx-ast-utils: 3.3.5
- minimatch: 3.1.2
- object.entries: 1.1.8
- object.fromentries: 2.0.8
- object.values: 1.2.0
- prop-types: 15.8.1
- resolve: 2.0.0-next.5
- semver: 6.3.1
- string.prototype.matchall: 4.0.11
- string.prototype.repeat: 1.0.0
-
- eslint-scope@7.2.2:
- dependencies:
- esrecurse: 4.3.0
- estraverse: 5.3.0
-
- eslint-visitor-keys@3.4.3: {}
-
- eslint@8.57.0:
- dependencies:
- '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0)
- '@eslint-community/regexpp': 4.11.0
- '@eslint/eslintrc': 2.1.4
- '@eslint/js': 8.57.0
- '@humanwhocodes/config-array': 0.11.14
- '@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
- debug: 4.3.5
- doctrine: 3.0.0
- escape-string-regexp: 4.0.0
- eslint-scope: 7.2.2
- eslint-visitor-keys: 3.4.3
- espree: 9.6.1
- esquery: 1.6.0
- esutils: 2.0.3
- fast-deep-equal: 3.1.3
- file-entry-cache: 6.0.1
- find-up: 5.0.0
- glob-parent: 6.0.2
- globals: 13.24.0
- graphemer: 1.4.0
- ignore: 5.3.1
- imurmurhash: 0.1.4
- is-glob: 4.0.3
- is-path-inside: 3.0.3
- js-yaml: 4.1.0
- json-stable-stringify-without-jsonify: 1.0.1
- levn: 0.4.1
- lodash.merge: 4.6.2
- minimatch: 3.1.2
- natural-compare: 1.4.0
- optionator: 0.9.4
- strip-ansi: 6.0.1
- text-table: 0.2.0
- transitivePeerDependencies:
- - supports-color
-
- espree@9.6.1:
- dependencies:
- acorn: 8.12.1
- acorn-jsx: 5.3.2(acorn@8.12.1)
- eslint-visitor-keys: 3.4.3
-
- esquery@1.6.0:
- dependencies:
- estraverse: 5.3.0
-
- esrecurse@4.3.0:
- dependencies:
- estraverse: 5.3.0
-
- estraverse@5.3.0: {}
-
- esutils@2.0.3: {}
-
- eventemitter3@5.0.1: {}
-
- execa@8.0.1:
- dependencies:
- cross-spawn: 7.0.3
- get-stream: 8.0.1
- human-signals: 5.0.0
- is-stream: 3.0.0
- merge-stream: 2.0.0
- npm-run-path: 5.3.0
- onetime: 6.0.0
- signal-exit: 4.1.0
- strip-final-newline: 3.0.0
-
- fast-deep-equal@3.1.3: {}
-
- fast-glob@3.3.2:
- dependencies:
- '@nodelib/fs.stat': 2.0.5
- '@nodelib/fs.walk': 1.2.8
- glob-parent: 5.1.2
- merge2: 1.4.1
- micromatch: 4.0.7
-
- fast-json-stable-stringify@2.1.0: {}
-
- fast-levenshtein@2.0.6: {}
-
- fastq@1.17.1:
- dependencies:
- reusify: 1.0.4
-
- file-entry-cache@6.0.1:
- dependencies:
- flat-cache: 3.2.0
-
- fill-range@7.1.1:
- dependencies:
- to-regex-range: 5.0.1
-
- find-up@5.0.0:
- dependencies:
- locate-path: 6.0.0
- path-exists: 4.0.0
-
- flat-cache@3.2.0:
- dependencies:
- flatted: 3.3.1
- keyv: 4.5.4
- rimraf: 3.0.2
-
- flatted@3.3.1: {}
-
- follow-redirects@1.15.6: {}
-
- for-each@0.3.3:
- dependencies:
- is-callable: 1.2.7
-
- form-data@4.0.0:
- dependencies:
- asynckit: 0.4.0
- combined-stream: 1.0.8
- mime-types: 2.1.35
-
- fs.realpath@1.0.0: {}
-
- fsevents@2.3.3:
- optional: true
-
- function-bind@1.1.2: {}
-
- function.prototype.name@1.1.6:
- dependencies:
- call-bind: 1.0.7
- define-properties: 1.2.1
- es-abstract: 1.23.3
- functions-have-names: 1.2.3
-
- functions-have-names@1.2.3: {}
-
- gensync@1.0.0-beta.2: {}
-
- get-east-asian-width@1.2.0: {}
-
- get-intrinsic@1.2.4:
- dependencies:
- es-errors: 1.3.0
- function-bind: 1.1.2
- has-proto: 1.0.3
- has-symbols: 1.0.3
- hasown: 2.0.2
-
- get-nonce@1.0.1: {}
-
- get-stream@8.0.1: {}
-
- get-symbol-description@1.0.2:
- dependencies:
- call-bind: 1.0.7
- es-errors: 1.3.0
- get-intrinsic: 1.2.4
-
- glob-parent@5.1.2:
- dependencies:
- is-glob: 4.0.3
-
- glob-parent@6.0.2:
- dependencies:
- is-glob: 4.0.3
-
- glob@7.2.3:
- dependencies:
- fs.realpath: 1.0.0
- inflight: 1.0.6
- inherits: 2.0.4
- minimatch: 3.1.2
- once: 1.4.0
- path-is-absolute: 1.0.1
-
- globals@11.12.0: {}
-
- globals@13.24.0:
- dependencies:
- type-fest: 0.20.2
-
- globalthis@1.0.4:
- dependencies:
- define-properties: 1.2.1
- gopd: 1.0.1
-
- gopd@1.0.1:
- dependencies:
- get-intrinsic: 1.2.4
-
- graphemer@1.4.0: {}
-
- has-bigints@1.0.2: {}
-
- has-flag@3.0.0: {}
-
- has-flag@4.0.0: {}
-
- has-property-descriptors@1.0.2:
- dependencies:
- es-define-property: 1.0.0
-
- has-proto@1.0.3: {}
-
- has-symbols@1.0.3: {}
-
- has-tostringtag@1.0.2:
- dependencies:
- has-symbols: 1.0.3
-
- hasown@2.0.2:
- dependencies:
- function-bind: 1.1.2
-
- html-parse-stringify@3.0.1:
- dependencies:
- void-elements: 3.1.0
-
- human-signals@5.0.0: {}
-
- i18next-http-backend@2.5.2:
- dependencies:
- cross-fetch: 4.0.0
- transitivePeerDependencies:
- - encoding
-
- i18next@23.12.2:
- dependencies:
- '@babel/runtime': 7.24.8
-
- ignore@5.3.1: {}
-
- immutable@4.3.7: {}
-
- import-fresh@3.3.0:
- dependencies:
- parent-module: 1.0.1
- resolve-from: 4.0.0
-
- imurmurhash@0.1.4: {}
-
- inflight@1.0.6:
- dependencies:
- once: 1.4.0
- wrappy: 1.0.2
-
- inherits@2.0.4: {}
-
- internal-slot@1.0.7:
- dependencies:
- es-errors: 1.3.0
- hasown: 2.0.2
- side-channel: 1.0.6
-
- invariant@2.2.4:
- dependencies:
- loose-envify: 1.4.0
-
- is-array-buffer@3.0.4:
- dependencies:
- call-bind: 1.0.7
- get-intrinsic: 1.2.4
-
- is-async-function@2.0.0:
- dependencies:
- has-tostringtag: 1.0.2
-
- is-bigint@1.0.4:
- dependencies:
- has-bigints: 1.0.2
-
- is-binary-path@2.1.0:
- dependencies:
- binary-extensions: 2.3.0
-
- is-boolean-object@1.1.2:
- dependencies:
- call-bind: 1.0.7
- has-tostringtag: 1.0.2
-
- is-callable@1.2.7: {}
-
- is-core-module@2.15.0:
- dependencies:
- hasown: 2.0.2
-
- is-data-view@1.0.1:
- dependencies:
- is-typed-array: 1.1.13
-
- is-date-object@1.0.5:
- dependencies:
- has-tostringtag: 1.0.2
-
- is-extglob@2.1.1: {}
-
- is-finalizationregistry@1.0.2:
- dependencies:
- call-bind: 1.0.7
-
- is-fullwidth-code-point@4.0.0: {}
-
- is-fullwidth-code-point@5.0.0:
- dependencies:
- get-east-asian-width: 1.2.0
-
- is-generator-function@1.0.10:
- dependencies:
- has-tostringtag: 1.0.2
-
- is-glob@4.0.3:
- dependencies:
- is-extglob: 2.1.1
-
- is-map@2.0.3: {}
-
- is-negative-zero@2.0.3: {}
-
- is-number-object@1.0.7:
- dependencies:
- has-tostringtag: 1.0.2
-
- is-number@7.0.0: {}
-
- is-path-inside@3.0.3: {}
-
- is-regex@1.1.4:
- dependencies:
- call-bind: 1.0.7
- has-tostringtag: 1.0.2
-
- is-set@2.0.3: {}
-
- is-shared-array-buffer@1.0.3:
- dependencies:
- call-bind: 1.0.7
-
- is-stream@3.0.0: {}
-
- is-string@1.0.7:
- dependencies:
- has-tostringtag: 1.0.2
-
- is-symbol@1.0.4:
- dependencies:
- has-symbols: 1.0.3
-
- is-typed-array@1.1.13:
- dependencies:
- which-typed-array: 1.1.15
-
- is-weakmap@2.0.2: {}
-
- is-weakref@1.0.2:
- dependencies:
- call-bind: 1.0.7
-
- is-weakset@2.0.3:
- dependencies:
- call-bind: 1.0.7
- get-intrinsic: 1.2.4
-
- isarray@2.0.5: {}
-
- isexe@2.0.0: {}
-
- iterator.prototype@1.1.2:
- dependencies:
- define-properties: 1.2.1
- get-intrinsic: 1.2.4
- has-symbols: 1.0.3
- reflect.getprototypeof: 1.0.6
- set-function-name: 2.0.2
-
- js-tokens@4.0.0: {}
-
- js-yaml@4.1.0:
- dependencies:
- argparse: 2.0.1
-
- jsesc@2.5.2: {}
-
- json-buffer@3.0.1: {}
-
- json-schema-traverse@0.4.1: {}
-
- json-stable-stringify-without-jsonify@1.0.1: {}
-
- json5@2.2.3: {}
-
- jsx-ast-utils@3.3.5:
- dependencies:
- array-includes: 3.1.8
- array.prototype.flat: 1.3.2
- object.assign: 4.1.5
- object.values: 1.2.0
-
- keyv@4.5.4:
- dependencies:
- json-buffer: 3.0.1
-
- klona@2.0.6: {}
-
- levn@0.4.1:
- dependencies:
- prelude-ls: 1.2.1
- type-check: 0.4.0
-
- lilconfig@3.1.2: {}
-
- lint-staged@15.2.7:
- dependencies:
- chalk: 5.3.0
- commander: 12.1.0
- debug: 4.3.5
- execa: 8.0.1
- lilconfig: 3.1.2
- listr2: 8.2.3
- micromatch: 4.0.7
- pidtree: 0.6.0
- string-argv: 0.3.2
- yaml: 2.4.5
- transitivePeerDependencies:
- - supports-color
-
- listr2@8.2.3:
- dependencies:
- cli-truncate: 4.0.0
- colorette: 2.0.20
- eventemitter3: 5.0.1
- log-update: 6.0.0
- rfdc: 1.4.1
- wrap-ansi: 9.0.0
-
- locate-path@6.0.0:
- dependencies:
- p-locate: 5.0.0
-
- lodash.merge@4.6.2: {}
-
- log-update@6.0.0:
- dependencies:
- ansi-escapes: 6.2.1
- cli-cursor: 4.0.0
- slice-ansi: 7.1.0
- strip-ansi: 7.1.0
- wrap-ansi: 9.0.0
-
- loose-envify@1.4.0:
- dependencies:
- js-tokens: 4.0.0
-
- lru-cache@5.1.1:
- dependencies:
- yallist: 3.1.1
-
- merge-stream@2.0.0: {}
-
- merge2@1.4.1: {}
-
- micromatch@4.0.7:
- dependencies:
- braces: 3.0.3
- picomatch: 2.3.1
-
- mime-db@1.52.0: {}
-
- mime-types@2.1.35:
- dependencies:
- mime-db: 1.52.0
-
- mimic-fn@2.1.0: {}
-
- mimic-fn@4.0.0: {}
-
- minimatch@3.1.2:
- dependencies:
- brace-expansion: 1.1.11
-
- ms@2.1.2: {}
-
- nanoid@3.3.7: {}
-
- natural-compare@1.4.0: {}
-
- node-fetch@2.7.0:
- dependencies:
- whatwg-url: 5.0.0
-
- node-releases@2.0.18: {}
-
- normalize-path@3.0.0: {}
-
- npm-run-path@5.3.0:
- dependencies:
- path-key: 4.0.0
-
- object-assign@4.1.1: {}
-
- object-inspect@1.13.2: {}
-
- object-keys@1.1.1: {}
-
- object.assign@4.1.5:
- dependencies:
- call-bind: 1.0.7
- define-properties: 1.2.1
- has-symbols: 1.0.3
- object-keys: 1.1.1
-
- object.entries@1.1.8:
- dependencies:
- call-bind: 1.0.7
- define-properties: 1.2.1
- es-object-atoms: 1.0.0
-
- object.fromentries@2.0.8:
- dependencies:
- call-bind: 1.0.7
- define-properties: 1.2.1
- es-abstract: 1.23.3
- es-object-atoms: 1.0.0
-
- object.values@1.2.0:
- dependencies:
- call-bind: 1.0.7
- define-properties: 1.2.1
- es-object-atoms: 1.0.0
-
- once@1.4.0:
- dependencies:
- wrappy: 1.0.2
-
- onetime@5.1.2:
- dependencies:
- mimic-fn: 2.1.0
-
- onetime@6.0.0:
- dependencies:
- mimic-fn: 4.0.0
-
- optionator@0.9.4:
- dependencies:
- deep-is: 0.1.4
- fast-levenshtein: 2.0.6
- levn: 0.4.1
- prelude-ls: 1.2.1
- type-check: 0.4.0
- word-wrap: 1.2.5
-
- p-limit@3.1.0:
- dependencies:
- yocto-queue: 0.1.0
-
- p-locate@5.0.0:
- dependencies:
- p-limit: 3.1.0
-
- parent-module@1.0.1:
- dependencies:
- callsites: 3.1.0
-
- path-exists@4.0.0: {}
-
- path-is-absolute@1.0.1: {}
-
- path-key@3.1.1: {}
-
- path-key@4.0.0: {}
-
- path-parse@1.0.7: {}
-
- picocolors@1.0.1: {}
-
- picomatch@2.3.1: {}
-
- pidtree@0.6.0: {}
-
- possible-typed-array-names@1.0.0: {}
-
- postcss-js@4.0.1(postcss@8.4.39):
- dependencies:
- camelcase-css: 2.0.1
- postcss: 8.4.39
-
- postcss-mixins@9.0.4(postcss@8.4.39):
- dependencies:
- fast-glob: 3.3.2
- postcss: 8.4.39
- postcss-js: 4.0.1(postcss@8.4.39)
- postcss-simple-vars: 7.0.1(postcss@8.4.39)
- sugarss: 4.0.1(postcss@8.4.39)
-
- postcss-nested@6.2.0(postcss@8.4.39):
- dependencies:
- postcss: 8.4.39
- postcss-selector-parser: 6.1.1
-
- postcss-preset-mantine@1.17.0(postcss@8.4.39):
- dependencies:
- postcss: 8.4.39
- postcss-mixins: 9.0.4(postcss@8.4.39)
- postcss-nested: 6.2.0(postcss@8.4.39)
-
- postcss-selector-parser@6.1.1:
- dependencies:
- cssesc: 3.0.0
- util-deprecate: 1.0.2
-
- postcss-simple-vars@7.0.1(postcss@8.4.39):
- dependencies:
- postcss: 8.4.39
-
- postcss@8.4.39:
- dependencies:
- nanoid: 3.3.7
- picocolors: 1.0.1
- source-map-js: 1.2.0
-
- prelude-ls@1.2.1: {}
-
- prettier@3.3.3: {}
-
- prop-types@15.8.1:
- dependencies:
- loose-envify: 1.4.0
- object-assign: 4.1.1
- react-is: 16.13.1
-
- property-expr@2.0.6: {}
-
- proxy-from-env@1.1.0: {}
-
- punycode@2.3.1: {}
-
- queue-microtask@1.2.3: {}
-
- react-dom@18.3.1(react@18.3.1):
- dependencies:
- loose-envify: 1.4.0
- react: 18.3.1
- scheduler: 0.23.2
-
- react-i18next@15.0.0(i18next@23.12.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
- dependencies:
- '@babel/runtime': 7.24.8
- html-parse-stringify: 3.0.1
- i18next: 23.12.2
- react: 18.3.1
- optionalDependencies:
- react-dom: 18.3.1(react@18.3.1)
-
- react-is@16.13.1: {}
-
- react-number-format@5.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
- dependencies:
- prop-types: 15.8.1
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
-
- react-refresh@0.14.2: {}
-
- react-remove-scroll-bar@2.3.6(@types/react@18.3.3)(react@18.3.1):
- dependencies:
- react: 18.3.1
- react-style-singleton: 2.2.1(@types/react@18.3.3)(react@18.3.1)
- tslib: 2.6.3
- optionalDependencies:
- '@types/react': 18.3.3
-
- react-remove-scroll@2.5.10(@types/react@18.3.3)(react@18.3.1):
- dependencies:
- react: 18.3.1
- react-remove-scroll-bar: 2.3.6(@types/react@18.3.3)(react@18.3.1)
- react-style-singleton: 2.2.1(@types/react@18.3.3)(react@18.3.1)
- tslib: 2.6.3
- use-callback-ref: 1.3.2(@types/react@18.3.3)(react@18.3.1)
- use-sidecar: 1.1.2(@types/react@18.3.3)(react@18.3.1)
- optionalDependencies:
- '@types/react': 18.3.3
-
- react-router-dom@6.25.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
- dependencies:
- '@remix-run/router': 1.18.0
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
- react-router: 6.25.1(react@18.3.1)
-
- react-router@6.25.1(react@18.3.1):
- dependencies:
- '@remix-run/router': 1.18.0
- react: 18.3.1
-
- react-style-singleton@2.2.1(@types/react@18.3.3)(react@18.3.1):
- dependencies:
- get-nonce: 1.0.1
- invariant: 2.2.4
- react: 18.3.1
- tslib: 2.6.3
- optionalDependencies:
- '@types/react': 18.3.3
-
- react-textarea-autosize@8.5.3(@types/react@18.3.3)(react@18.3.1):
- dependencies:
- '@babel/runtime': 7.24.8
- react: 18.3.1
- use-composed-ref: 1.3.0(react@18.3.1)
- use-latest: 1.2.1(@types/react@18.3.3)(react@18.3.1)
- transitivePeerDependencies:
- - '@types/react'
-
- react-transition-group@4.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
- dependencies:
- '@babel/runtime': 7.24.8
- dom-helpers: 5.2.1
- loose-envify: 1.4.0
- prop-types: 15.8.1
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
-
- react@18.3.1:
- dependencies:
- loose-envify: 1.4.0
-
- readdirp@3.6.0:
- dependencies:
- picomatch: 2.3.1
-
- reflect.getprototypeof@1.0.6:
- dependencies:
- call-bind: 1.0.7
- define-properties: 1.2.1
- es-abstract: 1.23.3
- es-errors: 1.3.0
- get-intrinsic: 1.2.4
- globalthis: 1.0.4
- which-builtin-type: 1.1.3
-
- regenerator-runtime@0.14.1: {}
-
- regexp.prototype.flags@1.5.2:
- dependencies:
- call-bind: 1.0.7
- define-properties: 1.2.1
- es-errors: 1.3.0
- set-function-name: 2.0.2
-
- resolve-from@4.0.0: {}
-
- resolve@2.0.0-next.5:
- dependencies:
- is-core-module: 2.15.0
- path-parse: 1.0.7
- supports-preserve-symlinks-flag: 1.0.0
-
- restore-cursor@4.0.0:
- dependencies:
- onetime: 5.1.2
- signal-exit: 3.0.7
-
- reusify@1.0.4: {}
-
- rfdc@1.4.1: {}
-
- rimraf@3.0.2:
- dependencies:
- glob: 7.2.3
-
- rollup@4.19.0:
- dependencies:
- '@types/estree': 1.0.5
- optionalDependencies:
- '@rollup/rollup-android-arm-eabi': 4.19.0
- '@rollup/rollup-android-arm64': 4.19.0
- '@rollup/rollup-darwin-arm64': 4.19.0
- '@rollup/rollup-darwin-x64': 4.19.0
- '@rollup/rollup-linux-arm-gnueabihf': 4.19.0
- '@rollup/rollup-linux-arm-musleabihf': 4.19.0
- '@rollup/rollup-linux-arm64-gnu': 4.19.0
- '@rollup/rollup-linux-arm64-musl': 4.19.0
- '@rollup/rollup-linux-powerpc64le-gnu': 4.19.0
- '@rollup/rollup-linux-riscv64-gnu': 4.19.0
- '@rollup/rollup-linux-s390x-gnu': 4.19.0
- '@rollup/rollup-linux-x64-gnu': 4.19.0
- '@rollup/rollup-linux-x64-musl': 4.19.0
- '@rollup/rollup-win32-arm64-msvc': 4.19.0
- '@rollup/rollup-win32-ia32-msvc': 4.19.0
- '@rollup/rollup-win32-x64-msvc': 4.19.0
- fsevents: 2.3.3
-
- run-parallel@1.2.0:
- dependencies:
- queue-microtask: 1.2.3
-
- safe-array-concat@1.1.2:
- dependencies:
- call-bind: 1.0.7
- get-intrinsic: 1.2.4
- has-symbols: 1.0.3
- isarray: 2.0.5
-
- safe-regex-test@1.0.3:
- dependencies:
- call-bind: 1.0.7
- es-errors: 1.3.0
- is-regex: 1.1.4
-
- sass@1.77.8:
- dependencies:
- chokidar: 3.6.0
- immutable: 4.3.7
- source-map-js: 1.2.0
-
- scheduler@0.23.2:
- dependencies:
- loose-envify: 1.4.0
-
- semver@6.3.1: {}
-
- set-function-length@1.2.2:
- dependencies:
- define-data-property: 1.1.4
- es-errors: 1.3.0
- function-bind: 1.1.2
- get-intrinsic: 1.2.4
- gopd: 1.0.1
- has-property-descriptors: 1.0.2
-
- set-function-name@2.0.2:
- dependencies:
- define-data-property: 1.1.4
- es-errors: 1.3.0
- functions-have-names: 1.2.3
- has-property-descriptors: 1.0.2
-
- shebang-command@2.0.0:
- dependencies:
- shebang-regex: 3.0.0
-
- shebang-regex@3.0.0: {}
-
- side-channel@1.0.6:
- dependencies:
- call-bind: 1.0.7
- es-errors: 1.3.0
- get-intrinsic: 1.2.4
- object-inspect: 1.13.2
-
- signal-exit@3.0.7: {}
-
- signal-exit@4.1.0: {}
-
- slice-ansi@5.0.0:
- dependencies:
- ansi-styles: 6.2.1
- is-fullwidth-code-point: 4.0.0
-
- slice-ansi@7.1.0:
- dependencies:
- ansi-styles: 6.2.1
- is-fullwidth-code-point: 5.0.0
-
- source-map-js@1.2.0: {}
-
- string-argv@0.3.2: {}
-
- string-width@7.2.0:
- dependencies:
- emoji-regex: 10.3.0
- get-east-asian-width: 1.2.0
- strip-ansi: 7.1.0
-
- string.prototype.matchall@4.0.11:
- dependencies:
- call-bind: 1.0.7
- define-properties: 1.2.1
- es-abstract: 1.23.3
- es-errors: 1.3.0
- es-object-atoms: 1.0.0
- get-intrinsic: 1.2.4
- gopd: 1.0.1
- has-symbols: 1.0.3
- internal-slot: 1.0.7
- regexp.prototype.flags: 1.5.2
- set-function-name: 2.0.2
- side-channel: 1.0.6
-
- string.prototype.repeat@1.0.0:
- dependencies:
- define-properties: 1.2.1
- es-abstract: 1.23.3
-
- string.prototype.trim@1.2.9:
- dependencies:
- call-bind: 1.0.7
- define-properties: 1.2.1
- es-abstract: 1.23.3
- es-object-atoms: 1.0.0
-
- string.prototype.trimend@1.0.8:
- dependencies:
- call-bind: 1.0.7
- define-properties: 1.2.1
- es-object-atoms: 1.0.0
-
- string.prototype.trimstart@1.0.8:
- dependencies:
- call-bind: 1.0.7
- define-properties: 1.2.1
- es-object-atoms: 1.0.0
-
- strip-ansi@6.0.1:
- dependencies:
- ansi-regex: 5.0.1
-
- strip-ansi@7.1.0:
- dependencies:
- ansi-regex: 6.0.1
-
- strip-final-newline@3.0.0: {}
-
- strip-json-comments@3.1.1: {}
-
- sugarss@4.0.1(postcss@8.4.39):
- dependencies:
- postcss: 8.4.39
-
- supports-color@5.5.0:
- dependencies:
- has-flag: 3.0.0
-
- supports-color@7.2.0:
- dependencies:
- has-flag: 4.0.0
-
- supports-preserve-symlinks-flag@1.0.0: {}
-
- swr@2.2.5(react@18.3.1):
- dependencies:
- client-only: 0.0.1
- react: 18.3.1
- use-sync-external-store: 1.2.2(react@18.3.1)
-
- tabbable@6.2.0: {}
-
- text-table@0.2.0: {}
-
- tiny-case@1.0.3: {}
-
- to-fast-properties@2.0.0: {}
-
- to-regex-range@5.0.1:
- dependencies:
- is-number: 7.0.0
-
- toposort@2.0.2: {}
-
- tr46@0.0.3: {}
-
- tslib@2.6.3: {}
-
- type-check@0.4.0:
- dependencies:
- prelude-ls: 1.2.1
-
- type-fest@0.20.2: {}
-
- type-fest@2.19.0: {}
-
- type-fest@4.23.0: {}
-
- typed-array-buffer@1.0.2:
- dependencies:
- call-bind: 1.0.7
- es-errors: 1.3.0
- is-typed-array: 1.1.13
-
- typed-array-byte-length@1.0.1:
- dependencies:
- call-bind: 1.0.7
- for-each: 0.3.3
- gopd: 1.0.1
- has-proto: 1.0.3
- is-typed-array: 1.1.13
-
- typed-array-byte-offset@1.0.2:
- dependencies:
- available-typed-arrays: 1.0.7
- call-bind: 1.0.7
- for-each: 0.3.3
- gopd: 1.0.1
- has-proto: 1.0.3
- is-typed-array: 1.1.13
-
- typed-array-length@1.0.6:
- dependencies:
- call-bind: 1.0.7
- for-each: 0.3.3
- gopd: 1.0.1
- has-proto: 1.0.3
- is-typed-array: 1.1.13
- possible-typed-array-names: 1.0.0
-
- unbox-primitive@1.0.2:
- dependencies:
- call-bind: 1.0.7
- has-bigints: 1.0.2
- has-symbols: 1.0.3
- which-boxed-primitive: 1.0.2
-
- update-browserslist-db@1.1.0(browserslist@4.23.2):
- dependencies:
- browserslist: 4.23.2
- escalade: 3.1.2
- picocolors: 1.0.1
-
- uri-js@4.4.1:
- dependencies:
- punycode: 2.3.1
-
- use-callback-ref@1.3.2(@types/react@18.3.3)(react@18.3.1):
- dependencies:
- react: 18.3.1
- tslib: 2.6.3
- optionalDependencies:
- '@types/react': 18.3.3
-
- use-composed-ref@1.3.0(react@18.3.1):
- dependencies:
- react: 18.3.1
-
- use-isomorphic-layout-effect@1.1.2(@types/react@18.3.3)(react@18.3.1):
- dependencies:
- react: 18.3.1
- optionalDependencies:
- '@types/react': 18.3.3
-
- use-latest@1.2.1(@types/react@18.3.3)(react@18.3.1):
- dependencies:
- react: 18.3.1
- use-isomorphic-layout-effect: 1.1.2(@types/react@18.3.3)(react@18.3.1)
- optionalDependencies:
- '@types/react': 18.3.3
-
- use-sidecar@1.1.2(@types/react@18.3.3)(react@18.3.1):
- dependencies:
- detect-node-es: 1.1.0
- react: 18.3.1
- tslib: 2.6.3
- optionalDependencies:
- '@types/react': 18.3.3
-
- use-sync-external-store@1.2.2(react@18.3.1):
- dependencies:
- react: 18.3.1
-
- util-deprecate@1.0.2: {}
-
- uuid@10.0.0: {}
-
- vite@5.3.4(sass@1.77.8)(sugarss@4.0.1(postcss@8.4.39)):
- dependencies:
- esbuild: 0.21.5
- postcss: 8.4.39
- rollup: 4.19.0
- optionalDependencies:
- fsevents: 2.3.3
- sass: 1.77.8
- sugarss: 4.0.1(postcss@8.4.39)
-
- void-elements@3.1.0: {}
-
- webidl-conversions@3.0.1: {}
-
- whatwg-url@5.0.0:
- dependencies:
- tr46: 0.0.3
- webidl-conversions: 3.0.1
-
- which-boxed-primitive@1.0.2:
- dependencies:
- is-bigint: 1.0.4
- is-boolean-object: 1.1.2
- is-number-object: 1.0.7
- is-string: 1.0.7
- is-symbol: 1.0.4
-
- which-builtin-type@1.1.3:
- dependencies:
- function.prototype.name: 1.1.6
- has-tostringtag: 1.0.2
- 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.2
- which-typed-array: 1.1.15
-
- which-collection@1.0.2:
- dependencies:
- is-map: 2.0.3
- is-set: 2.0.3
- is-weakmap: 2.0.2
- is-weakset: 2.0.3
-
- which-typed-array@1.1.15:
- dependencies:
- available-typed-arrays: 1.0.7
- call-bind: 1.0.7
- for-each: 0.3.3
- gopd: 1.0.1
- has-tostringtag: 1.0.2
-
- which@2.0.2:
- dependencies:
- isexe: 2.0.0
-
- word-wrap@1.2.5: {}
-
- wrap-ansi@9.0.0:
- dependencies:
- ansi-styles: 6.2.1
- string-width: 7.2.0
- strip-ansi: 7.1.0
-
- wrappy@1.0.2: {}
-
- yallist@3.1.1: {}
-
- yaml@2.4.5: {}
-
- yocto-queue@0.1.0: {}
-
- yup@1.4.0:
- dependencies:
- property-expr: 2.0.6
- tiny-case: 1.0.3
- toposort: 2.0.2
- type-fest: 2.19.0
diff --git a/frontend/postcss.config.mjs b/frontend/postcss.config.mjs
deleted file mode 100644
index 5ada75c..0000000
--- a/frontend/postcss.config.mjs
+++ /dev/null
@@ -1,14 +0,0 @@
-export default {
- plugins: {
- 'postcss-preset-mantine': {},
- 'postcss-simple-vars': {
- variables: {
- 'mantine-breakpoint-xs': '36em',
- 'mantine-breakpoint-sm': '48em',
- 'mantine-breakpoint-md': '62em',
- 'mantine-breakpoint-lg': '75em',
- 'mantine-breakpoint-xl': '88em',
- },
- },
- },
-}
diff --git a/frontend/public/android-chrome-192x192.png b/frontend/public/android-chrome-192x192.png
deleted file mode 100644
index 624960a..0000000
Binary files a/frontend/public/android-chrome-192x192.png and /dev/null differ
diff --git a/frontend/public/android-chrome-512x512.png b/frontend/public/android-chrome-512x512.png
deleted file mode 100644
index 487a500..0000000
Binary files a/frontend/public/android-chrome-512x512.png and /dev/null differ
diff --git a/frontend/public/apple-touch-icon.png b/frontend/public/apple-touch-icon.png
deleted file mode 100644
index be54c39..0000000
Binary files a/frontend/public/apple-touch-icon.png and /dev/null differ
diff --git a/frontend/public/favicon-16x16.png b/frontend/public/favicon-16x16.png
deleted file mode 100644
index 85819bf..0000000
Binary files a/frontend/public/favicon-16x16.png and /dev/null differ
diff --git a/frontend/public/favicon-32x32.png b/frontend/public/favicon-32x32.png
deleted file mode 100644
index 17a3b8f..0000000
Binary files a/frontend/public/favicon-32x32.png and /dev/null differ
diff --git a/frontend/public/favicon.ico b/frontend/public/favicon.ico
deleted file mode 100644
index 1237a43..0000000
Binary files a/frontend/public/favicon.ico and /dev/null differ
diff --git a/frontend/public/i18n/en.json b/frontend/public/i18n/en.json
deleted file mode 100644
index ce59999..0000000
--- a/frontend/public/i18n/en.json
+++ /dev/null
@@ -1,64 +0,0 @@
-{
- "ui_username": "Username",
- "ui_password": "Password",
- "ui_login": "Login",
- "ui_logout": "Logout",
- "ui_dashboard": "Dashboard",
- "ui_profile": "Profile",
- "ui_change_info": "Account information",
- "ui_save": "Save",
- "ui_clear": "Clear",
- "ui_house": "Location",
- "ui_action": "Action",
- "ui_create_new": "Create new",
- "ui_warehouse": "Warehouse",
- "ui_display_name": "Display name",
- "ui_new_password": "New password",
- "ui_confirm_new_password": "Confirm new password",
- "ui_new_house": "Create new location",
- "ui_edit_house": "Edit location",
- "ui_houseName": "Location name",
- "ui_house_icon": "Icon",
- "ui_house_address": "Address",
- "ui_areas": "Areas",
- "ui_area_name": "Area name",
- "ui_area_desc": "Description",
- "ui_add_area": "Add area",
- "ui_edit_area": "Sửa khu vực",
- "ui_create": "Create",
- "ui_update": "Update",
- "ui_delete": "Delete",
- "ui_confirm": "Confirm",
- "ui_cancel": "Cancel",
- "ui_find_icon_here": "Find icons here",
- "ui_empty": "Empty",
- "ui_error": "Error!",
- "ui_success": "Success!",
- "ui_info": "Information",
- "ui_loading": "Loading...",
- "ui_showing": "Showing",
- "table_col_no": "No.",
- "table_col_name": "Name",
- "table_col_icon": "Icon",
- "table_col_address": "Address",
- "table_col_action": "Action",
- "message_login_success": "Login successfully!",
- "message_welcom_back": "Welcome back!",
- "message_login_fail": "Login failed!",
- "message_logout_fail": "Logout failed!",
- "message_create_user_success": "Create account successfully!",
- "message_created_user": "Username is already in use!",
- "message_login_wrong": "Wrong username or password.",
- "message_user_lock": "Your account is locked.",
- "message_is_required": "{{field}} is required.",
- "message_password_mustmatch": "Password must match.",
- "message_update_success": "Update successfully!",
- "message_update_profile_success": "Update profile successfully!",
- "message_update_fail": "Update failed!",
- "message_api_call_fail": "API call failed!",
- "message_create_house_fail": "Create new location failed!",
- "message_create_house_success": "Create new location successfully!",
- "message_confirm_delete": "Are you sure you want to delete this item?",
- "message_confirm_delete_note": "Attention ‼: Once deleted, it cannot be recovered.",
- "message_min_three_char": "At least 3 characters are required."
-}
diff --git a/frontend/public/i18n/vi.json b/frontend/public/i18n/vi.json
deleted file mode 100644
index cc13e43..0000000
--- a/frontend/public/i18n/vi.json
+++ /dev/null
@@ -1,65 +0,0 @@
-{
- "ui_username": "Tên người dùng",
- "ui_password": "Mật khẩu",
- "ui_login": "Đăng Nhập",
- "ui_logout": "Đăng xuất",
- "ui_dashboard": "Bảng điều khiển",
- "ui_profile": "Hồ sơ",
- "ui_change_info": "Thông tin tài khoản",
- "ui_save": "Lưu",
- "ui_clear": "Xóa",
- "ui_house": "Địa điểm",
- "ui_action": "Thao Tác",
- "ui_create_new": "Tạo mới",
- "ui_warehouse": "Khu vực",
- "ui_display_name": "Tên hiển thị",
- "ui_new_password": "Mật khẩu mới",
- "ui_confirm_new_password": "Nhập lại mật khẩu",
- "ui_new_house": "Tạo địa điểm mới",
- "ui_edit_house": "Sửa địa điểm",
- "ui_house_name": "Tên địa điểm",
- "ui_house_icon": "Ký tự",
- "ui_house_address": "Địa chỉ",
- "ui_areas": "Khu vực",
- "ui_area_name": "Tên khu vực",
- "ui_area_desc": "Mô tả",
- "ui_add_area": "Thêm khu vực",
- "ui_edit_area": "Sửa khu vực",
- "ui_create": "Tạo",
- "ui_update": "Cập nhật",
- "ui_delete": "Xóa",
- "ui_confirm": "Xác nhận",
- "ui_cancel": "Huỷ",
- "ui_find_icon_here": "Tìm ở đây",
- "ui_empty": "Trống",
- "ui_error": "lỗi!",
- "ui_success": "Thành công!",
- "ui_info": "Thông tin",
- "ui_loading": "Đang tải...",
- "ui_showing": "Hiển thị",
- "table_col_no": "STT",
- "table_col_name": "Tên",
- "table_col_icon": "Ký tự",
- "table_col_address": "Địa chỉ",
- "table_col_action": "Thao Tác",
- "message_login_success": "Đăng nhập thành công!",
- "message_welcom_back": "Chào mừng trở lại!",
- "message_login_fail": "Đăng nhập thất bại!",
- "message_logout_fail": "Đăng nhập thất bại!",
- "message_create_user_success": "Tạo tài khoản thành công!",
- "message_created_user": "Tên tài khoản đã có người sử dụng!",
- "message_login_wrong": "Bạn nhập sai tên người dùng hoặc mật khẩu.",
- "message_user_lock": "Tài khoản bạn hiện đang bị khóa.",
- "message_is_required": "{{field}} là bắt buộc.",
- "message_password_mustmatch": "Cần nhập trùng với mật khẩu.",
- "message_update_success": "Cập nhật thành công!",
- "message_update_profile_success": "Cập nhật hồ sơ thành công!",
- "message_update_fail": "Cập nhật thất bại!",
- "message_success_delete": "Xóa thành công!",
- "message_api_call_fail": "Call API có vẫn đề!",
- "message_action_house_fail": "{{action}} địa điểm mới thất bại!",
- "message_action_house_success": "{{action}} địa điểm mới thành công!",
- "message_confirm_delete": "Bạn có chắc là muốn xóa mục này?",
- "message_confirm_delete_note": "Chú Ý ‼: Một khi đã XÓA thì không thể nào khôi phục lại được.",
- "message_min_three_char": "Ít nhất phải có 3 ký tự"
-}
diff --git a/frontend/public/images/bg-login.jpg b/frontend/public/images/bg-login.jpg
deleted file mode 100644
index 8fedf82..0000000
Binary files a/frontend/public/images/bg-login.jpg and /dev/null differ
diff --git a/frontend/public/logo.svg b/frontend/public/logo.svg
deleted file mode 100644
index d7859b3..0000000
--- a/frontend/public/logo.svg
+++ /dev/null
@@ -1,585 +0,0 @@
-
-
-
diff --git a/frontend/public/site.webmanifest b/frontend/public/site.webmanifest
deleted file mode 100644
index 45dc8a2..0000000
--- a/frontend/public/site.webmanifest
+++ /dev/null
@@ -1 +0,0 @@
-{"name":"","short_name":"","icons":[{"src":"/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"theme_color":"#ffffff","background_color":"#ffffff","display":"standalone"}
\ No newline at end of file
diff --git a/frontend/src/App.jsx b/frontend/src/App.jsx
deleted file mode 100644
index 210227c..0000000
--- a/frontend/src/App.jsx
+++ /dev/null
@@ -1,76 +0,0 @@
-import { AuthProvider } from '@context/auth-context'
-import {
- createTheme,
- Input,
- InputWrapper,
- MantineProvider,
-} from '@mantine/core'
-import { ModalsProvider } from '@mantine/modals'
-import { Notifications } from '@mantine/notifications'
-import router from '@routes/routes'
-import { RouterProvider } from 'react-router-dom'
-
-const inputStyle = (theme) => ({
- root: {
- display: 'grid',
- gridTemplate: `"left mid right"
- "input input input"
- "desc desc desc" auto / auto 1fr 100px`,
- },
- description: {
- gridArea: 'desc',
- },
- label: {
- gridArea: 'left',
- marginRight: theme.spacing.sm,
- },
- error: {
- gridArea: 'mid',
- },
-})
-
-const gTheme = createTheme({
- colors: {
- greed: [
- '#ddffff',
- '#c8fdff',
- '#98f8ff',
- '#62f3fe',
- '#38effc',
- '#1bedfc',
- '#00ecfd',
- '#00d2e1',
- '#00bbc9',
- '#00a2b0',
- ],
- },
- primaryColor: 'greed',
- components: {
- InputWrapper: InputWrapper.extend({
- styles: inputStyle,
- }),
- Input: Input.extend({
- styles: {
- wrapper: {
- gridArea: 'input',
- margin: '5px 0',
- },
- },
- }),
- },
-})
-
-function App() {
- return (
-
-
-
-
-
-
-
-
- )
-}
-
-export default App
diff --git a/frontend/src/_mantine.scss b/frontend/src/_mantine.scss
deleted file mode 100644
index 1b02b50..0000000
--- a/frontend/src/_mantine.scss
+++ /dev/null
@@ -1 +0,0 @@
-// for mixin
diff --git a/frontend/src/api/auth.js b/frontend/src/api/auth.js
deleted file mode 100644
index f28cc87..0000000
--- a/frontend/src/api/auth.js
+++ /dev/null
@@ -1,14 +0,0 @@
-import { protocol } from './index'
-import { POST_LOGIN, POST_LOGOUT, POST_REFRESH } from './url'
-
-export const postLogin = (payload) => {
- return protocol.post(POST_LOGIN, payload)
-}
-
-export const getLogout = () => {
- return protocol.get(POST_LOGOUT, {})
-}
-
-export const refreshToken = () => {
- return protocol.get(POST_REFRESH, {})
-}
diff --git a/frontend/src/api/house.js b/frontend/src/api/house.js
deleted file mode 100644
index a5cacf7..0000000
--- a/frontend/src/api/house.js
+++ /dev/null
@@ -1,65 +0,0 @@
-import useSWR from 'swr'
-import useSWRMutation from 'swr/mutation'
-import { protocol } from './index'
-import {
- DEL_DELETE_HOUSE,
- GET_HOUSE_DETAIL,
- GET_HOUSES_LIST,
- POST_HOUSE_CREATE,
- PUT_UPDATE_HOUSE,
-} from './url'
-
-const getAllHouse = async ({ page, pageSize }) => {
- const url = GET_HOUSES_LIST({ page, pageSize })
- const response = await protocol.get(url, {})
- return response.data
-}
-
-const getHouseDetail = async (id) => {
- const url = GET_HOUSE_DETAIL(id)
- const response = await protocol.get(url, {})
- return response.data
-}
-
-const postCreateHouse = (payload) => {
- return protocol.post(POST_HOUSE_CREATE, payload)
-}
-
-const putUpdateHouse = (payload) => {
- return protocol.put(PUT_UPDATE_HOUSE, payload)
-}
-
-const putDeleteHouse = (_action, { arg: id }) => {
- return protocol.delete(DEL_DELETE_HOUSE(id))
-}
-
-const createOrUpdateHouse = (_action, { arg }) => {
- const isUpdate = !!arg.id
- const fnWait = isUpdate ? putUpdateHouse : postCreateHouse
-
- return fnWait(arg)
-}
-
-export function useHouse(page, pageSize) {
- const swrObj = useSWR({ page, pageSize }, getAllHouse)
- const { trigger, isMutating } = useSWRMutation('action', putDeleteHouse)
-
- return {
- ...swrObj,
- houses: swrObj.data ?? [],
- trigger,
- isMutating,
- }
-}
-
-export function useHouseDetail(id) {
- const swrObj = useSWR(id, getHouseDetail)
- const { trigger, isMutating } = useSWRMutation('action', createOrUpdateHouse)
-
- return {
- ...swrObj,
- house: swrObj.data ?? {},
- trigger,
- isMutating,
- }
-}
diff --git a/frontend/src/api/index.js b/frontend/src/api/index.js
deleted file mode 100644
index ee226b4..0000000
--- a/frontend/src/api/index.js
+++ /dev/null
@@ -1,80 +0,0 @@
-import { LOGIN_KEY } from '@utils/enum'
-import axios from 'axios'
-import { Helpers } from '../utils/helper'
-import { refreshToken } from './auth'
-
-const protocol = axios.create({
- baseURL: '/',
-})
-
-const forceLogout = () => {
- Helpers.clearStorage()
- window.location.href = '/login'
-}
-
-protocol.interceptors.request.use(async (config) => {
- config.headers.set(
- 'Content-Type',
- config.headers.get('Content-Type') ?? 'application/json',
- )
-
- if (
- config.url.indexOf('/login') >= 0 ||
- config.url.indexOf('/refresh') >= 0
- ) {
- return config
- }
-
- const { accessToken, exp } = await JSON.parse(
- Helpers.decrypt(localStorage.getItem(LOGIN_KEY)),
- )
- if (accessToken && !Helpers.checkTokenExpired(exp)) {
- config.headers.set('Authorization', `Bearer ${accessToken}`)
- }
-
- return config
-})
-
-protocol.interceptors.response.use(
- (response) => {
- return response.data || {}
- },
- async (error) => {
- const {
- response: { status, data },
- config,
- } = error
-
- if (
- config.url.indexOf('/login') >= 0 ||
- config.url.indexOf('/refresh') >= 0
- ) {
- return Promise.reject(data)
- }
-
- if (status === 401 && !config._retry) {
- config._retry = true
- try {
- // call refresh token
- const resp = await refreshToken()
- if (resp.status === 200) {
- const { data } = resp
- localStorage.setItem(LOGIN_KEY, Helpers.encrypt(JSON.stringify(data)))
-
- config.headers['Authorization'] = `Bearer ${data.accessToken}`
- return protocol(config)
- }
- } catch (error) {
- forceLogout()
- return Promise.reject(error)
- }
- }
- if (status === 403) {
- forceLogout()
- }
-
- return Promise.reject(data)
- },
-)
-
-export { protocol }
diff --git a/frontend/src/api/url.js b/frontend/src/api/url.js
deleted file mode 100644
index c484784..0000000
--- a/frontend/src/api/url.js
+++ /dev/null
@@ -1,15 +0,0 @@
-export const POST_LOGIN = '/api/auth/login'
-export const POST_LOGOUT = '/api/auth/logout'
-export const POST_REFRESH = '/api/auth/refresh'
-export const GET_USER_PROFILE = '/api/user/me'
-export const PUT_UPDATE_USER_PROFILE = '/api/user/update-profile'
-
-/**
- * House API
- */
-export const POST_HOUSE_CREATE = '/api/house/create'
-export const GET_HOUSES_LIST = ({ page, pageSize }) =>
- `/api/house/all?page=${page}&pageSize=${pageSize}`
-export const GET_HOUSE_DETAIL = (id) => `/api/house/${id}`
-export const PUT_UPDATE_HOUSE = '/api/house/update'
-export const DEL_DELETE_HOUSE = (id) => `/api/house/delete/${id}`
diff --git a/frontend/src/api/user.js b/frontend/src/api/user.js
deleted file mode 100644
index 7b3dda6..0000000
--- a/frontend/src/api/user.js
+++ /dev/null
@@ -1,10 +0,0 @@
-import { protocol } from './index'
-import { GET_USER_PROFILE, PUT_UPDATE_USER_PROFILE } from './url'
-
-export const getProfile = () => {
- return protocol.get(GET_USER_PROFILE, {})
-}
-
-export const putUpdateProfile = (payload) => {
- return protocol.put(PUT_UPDATE_USER_PROFILE, payload)
-}
diff --git a/frontend/src/assets/css/fu-theme.scss b/frontend/src/assets/css/fu-theme.scss
deleted file mode 100644
index a44d932..0000000
--- a/frontend/src/assets/css/fu-theme.scss
+++ /dev/null
@@ -1,4 +0,0 @@
-.input:focus,
-.input:focus-within {
- outline-color: var(--primary);
-}
diff --git a/frontend/src/assets/images/logo.svg b/frontend/src/assets/images/logo.svg
deleted file mode 100644
index d7859b3..0000000
--- a/frontend/src/assets/images/logo.svg
+++ /dev/null
@@ -1,585 +0,0 @@
-
-
-
diff --git a/frontend/src/assets/react.svg b/frontend/src/assets/react.svg
deleted file mode 100644
index 6c87de9..0000000
--- a/frontend/src/assets/react.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/frontend/src/components/AreaInput.jsx b/frontend/src/components/AreaInput.jsx
deleted file mode 100644
index a320774..0000000
--- a/frontend/src/components/AreaInput.jsx
+++ /dev/null
@@ -1,181 +0,0 @@
-import {
- ActionIcon,
- Button,
- Grid,
- Group,
- InputWrapper,
- Modal,
- Text,
- Textarea,
- TextInput,
-} from '@mantine/core'
-import { useForm, yupResolver } from '@mantine/form'
-import { useDisclosure, useMediaQuery } from '@mantine/hooks'
-import {
- IconAddressBook,
- IconCirclePlus,
- IconFileDescription,
-} from '@tabler/icons-react'
-import { useEffect, useState } from 'react'
-import { useTranslation } from 'react-i18next'
-import { v4 as uuidv4 } from 'uuid'
-import * as yup from 'yup'
-import AreaItem from './AreaItem'
-import { errorTip, labelWithIcon } from './Common'
-
-const areaSchema = (t) =>
- yup.object({
- name: yup
- .string()
- .min(3, t('message_min_three_char'))
- .required(t('message_is_required', { field: t('ui_area_name') })),
- desc: yup
- .string()
- .min(3, t('message_min_three_char'))
- .required(t('message_is_required', { field: t('ui_area_desc') })),
- })
-
-export default function AreaInput(props) {
- const { t } = useTranslation()
- const [editData, setEditData] = useState(null)
- const [opened, { open, close }] = useDisclosure(false)
- const isMobile = useMediaQuery('(max-width: 62em)')
- const { value, onChange, error } = props
- const form = useForm({
- initialValues: {
- name: '',
- desc: '',
- },
- validate: yupResolver(areaSchema(t)),
- enhanceGetInputProps: (payload) => ({
- error: errorTip(payload.inputProps.error),
- }),
- })
-
- useEffect(() => {
- if (editData) {
- form.setValues(editData)
- }
- }, [editData])
-
- const onCloseModal = () => {
- form.reset()
- setEditData(null)
- close()
- }
-
- const addArea = (area) => {
- area.id = uuidv4()
- area.isCreate = true
- onChange([...value, area])
- onCloseModal()
- }
-
- const updateArea = (area) => {
- onChange(value.map((item) => (item.id === area.id ? area : item)))
- form.reset()
- onCloseModal()
- }
-
- const onEditArea = (area) => {
- setEditData(area)
- open()
- }
-
- const onDeleteArea = (area) => {
- onChange(value.filter((item) => item.id !== area.id))
- }
-
- return (
- <>
-
-
-
-
-
- {value.length > 0 ? (
- value.map((area) => (
-
-
-
- ))
- ) : (
-
-
- {t('ui_empty')}
-
-
- )}
-
-
-
-
-
- >
- )
-}
diff --git a/frontend/src/components/AreaItem.jsx b/frontend/src/components/AreaItem.jsx
deleted file mode 100644
index e76d66e..0000000
--- a/frontend/src/components/AreaItem.jsx
+++ /dev/null
@@ -1,55 +0,0 @@
-import {
- ActionIcon,
- Card,
- Group,
- Text,
- TypographyStylesProvider,
-} from '@mantine/core'
-import { modals } from '@mantine/modals'
-import { IconPencil, IconTrash } from '@tabler/icons-react'
-import { useTranslation } from 'react-i18next'
-
-export default function AreaItem({ data, onEdit, onDelete }) {
- const { t } = useTranslation()
-
- const openConfirmModal = () =>
- modals.openConfirmModal({
- title: t('message_confirm_delete'),
- centered: true,
- children: (
-
-
-
- ),
- labels: { confirm: t('ui_delete'), cancel: t('ui_cancel') },
- confirmProps: { color: 'red' },
- onConfirm: () => onDelete(data),
- })
-
- const onClickEdit = () => onEdit(data)
-
- return (
-
-
- {data.name}
-
-
- {data.desc}
-
-
-
-
-
-
-
-
-
-
-
-
- )
-}
diff --git a/frontend/src/components/Common.jsx b/frontend/src/components/Common.jsx
deleted file mode 100644
index b39844a..0000000
--- a/frontend/src/components/Common.jsx
+++ /dev/null
@@ -1,18 +0,0 @@
-import { Flex, Text, Tooltip } from '@mantine/core'
-import { IconInfoCircle } from '@tabler/icons-react'
-
-export const errorTip = (message) =>
- message && (
-
-
-
- )
-
-export const labelWithIcon = (text, Icon = null, iconProps = {}) => (
-
- {Icon && }
-
- {text}
-
-
-)
diff --git a/frontend/src/components/Datatable.jsx b/frontend/src/components/Datatable.jsx
deleted file mode 100644
index bda5b82..0000000
--- a/frontend/src/components/Datatable.jsx
+++ /dev/null
@@ -1,42 +0,0 @@
-import { Box, Table } from '@mantine/core'
-
-export default function Datatable({ columns, data, withCheckbox = false }) {
- const renderCols = columns.map((col) => (
-
- {col.title}
-
- ))
-
- const renderRows = data.map((row) => (
-
- {columns.map((col) => (
-
- {col.render ? col.render(row) : row[col.field]}
-
- ))}
-
- ))
-
- return (
- ({
- border: `1px solid ${theme.colors.gray[3]}`,
- overflow: 'hidden',
- borderRadius: '10px',
- })}
- >
-
-
- {renderCols}
-
- {renderRows}
-
-
- )
-}
diff --git a/frontend/src/components/GridList.jsx b/frontend/src/components/GridList.jsx
deleted file mode 100644
index 7ba3d97..0000000
--- a/frontend/src/components/GridList.jsx
+++ /dev/null
@@ -1,41 +0,0 @@
-import { Box, Card, Center, SimpleGrid } from '@mantine/core'
-
-export default function GridList({ columns, data }) {
- return (
-
- {data.map((row) => (
-
- {columns.map((col) => {
- if (col.field === 'icon') {
- return (
-
- {col.render(row, true)}
-
- )
- }
- if (col.field === 'action') {
- return (
-
- {col.render(row, true)}
-
- )
- }
- return (
-
- {col.render(row, true)}
-
- )
- })}
-
- ))}
-
- )
-}
diff --git a/frontend/src/components/Header.jsx b/frontend/src/components/Header.jsx
deleted file mode 100644
index 02b2a41..0000000
--- a/frontend/src/components/Header.jsx
+++ /dev/null
@@ -1,131 +0,0 @@
-import { getProfile } from '@api/user'
-import Logo from '@assets/images/logo.svg'
-import { useAuth, useSignInUp } from '@hooks/useAuth'
-import {
- Avatar,
- Badge,
- Burger,
- Flex,
- Group,
- Image,
- Menu,
- Text,
-} from '@mantine/core'
-import { notifications } from '@mantine/notifications'
-import { PathConstants } from '@routes/routes'
-import {
- IconAt,
- IconCircleXFilled,
- IconLogout,
- IconUserCircle,
-} from '@tabler/icons-react'
-import { useEffect } from 'react'
-import { useTranslation } from 'react-i18next'
-import { Link } from 'react-router-dom'
-
-async function getData(t, setUserInfo) {
- try {
- const resp = await getProfile()
- if (resp.status === 200) {
- setUserInfo(resp.data)
- }
- } catch (error) {
- notifications.show({
- color: 'red.5',
- icon: ,
- withCloseButton: true,
- title: t('message_api_call_fail'),
- })
- }
-}
-
-export default function Header({ opened, onClick }) {
- const { auth, setAuth, setUserInfo } = useAuth()
- const { t } = useTranslation()
- const { onLogout } = useSignInUp(setAuth)
-
- useEffect(() => {
- if (auth.isLogged) {
- getData(t, setUserInfo)
- }
- }, [auth.isLogged])
-
- const logOut = async () => {
- try {
- await onLogout()
- } catch (error) {
- notifications.show({
- color: 'red.5',
- icon: ,
- withCloseButton: true,
- title: t('message_logout_fail'),
- })
- }
- }
-
- return (
-
-
-
-
-
- Fuware
-
-
-
- {auth.isLogged && (
-
-
-
-
- )}
-
- )
-}
diff --git a/frontend/src/components/Navbar.jsx b/frontend/src/components/Navbar.jsx
deleted file mode 100644
index 1b4c1b7..0000000
--- a/frontend/src/components/Navbar.jsx
+++ /dev/null
@@ -1,128 +0,0 @@
-import { useAuth, useSignInUp } from '@hooks/useAuth'
-import { Avatar, Badge, Box, Divider, Flex, Menu, NavLink } from '@mantine/core'
-import { notifications } from '@mantine/notifications'
-import { NAV_ITEM } from '@routes/nav-route'
-import { PathConstants } from '@routes/routes'
-import {
- IconAt,
- IconCircleXFilled,
- IconLogout,
- IconUserCircle,
-} from '@tabler/icons-react'
-import { useTranslation } from 'react-i18next'
-import { NavLink as Link } from 'react-router-dom'
-
-function NavLinkWithChildren(item) {
- const Icon = item.icon
-
- return (
- }>
- {item.children.map((child) => {
- if (!child.show) return
- if (child.children) {
- return
- } else {
- return (
- }
- label={child.text}
- component={Link}
- to={child.pathName}
- />
- )
- }
- })}
-
- )
-}
-
-export default function Navbar() {
- const { auth, setAuth } = useAuth()
- const { t } = useTranslation()
- const { onLogout } = useSignInUp(setAuth)
-
- const logOut = async () => {
- try {
- await onLogout()
- } catch (error) {
- notifications.show({
- color: 'red.5',
- icon: ,
- withCloseButton: true,
- title: t('message_logout_fail'),
- })
- }
- }
-
- return (
- <>
-
-
-
-
-
-
-
- {NAV_ITEM(t, auth?.userInfo?.isAdmin).map((item) => {
- if (!item.show) return null
- const Icon = item.icon
-
- if (item.children) {
- return
- } else {
- return (
- }
- label={item.text}
- component={Link}
- to={item.pathName}
- className={({ isActive, isPending }) =>
- isPending ? 'pending' : isActive ? 'active' : ''
- }
- color="red.8"
- />
- )
- }
- })}
-
- >
- )
-}
diff --git a/frontend/src/context/auth-context.jsx b/frontend/src/context/auth-context.jsx
deleted file mode 100644
index e182529..0000000
--- a/frontend/src/context/auth-context.jsx
+++ /dev/null
@@ -1,56 +0,0 @@
-import { STORE_KEY } from '@utils/enum'
-import { Helpers } from '@utils/helper'
-import { createContext, useCallback, useEffect, useMemo, useState } from 'react'
-
-const AuthContext = createContext()
-
-const DEFAULT_AUTH = {
- isLogged: false,
- userInfo: null,
-}
-
-function getInitialAuth() {
- return Helpers.decrypt(localStorage.getItem(STORE_KEY), DEFAULT_AUTH)
-}
-
-function AuthProvider({ children }) {
- const [auth, setAuth] = useState(getInitialAuth())
-
- useEffect(() => {
- localStorage.setItem(STORE_KEY, Helpers.encrypt(auth))
- }, [auth])
-
- const setLoggedIn = useCallback(
- (value) => {
- setAuth({
- ...auth,
- isLogged: value,
- })
- },
- [auth],
- )
-
- const setUserInfo = useCallback(
- (value) => {
- setAuth({
- ...auth,
- userInfo: value,
- })
- },
- [auth],
- )
-
- const context = useMemo(
- () => ({
- auth,
- setAuth,
- setLoggedIn,
- setUserInfo,
- }),
- [auth, setLoggedIn, setUserInfo],
- )
-
- return {children}
-}
-
-export { AuthContext, AuthProvider }
diff --git a/frontend/src/hooks/useAuth.js b/frontend/src/hooks/useAuth.js
deleted file mode 100644
index 954d593..0000000
--- a/frontend/src/hooks/useAuth.js
+++ /dev/null
@@ -1,37 +0,0 @@
-import { getLogout, postLogin } from '@api/auth'
-import { AuthContext } from '@context/auth-context'
-import { PathConstants } from '@routes/routes'
-import { LOGIN_KEY } from '@utils/enum'
-import { Helpers } from '@utils/helper'
-import { useContext } from 'react'
-import { useNavigate } from 'react-router-dom'
-
-export function useSignInUp(setAuth) {
- const navigate = useNavigate()
-
- const onLogin = async ({ username, password }) => {
- const resp = await postLogin({ username, password })
-
- if (resp.status === 200) {
- const token = resp.data || {}
- if (token) {
- const { name, ...rest } = token
- setAuth({ isLogged: true, userInfo: { name } })
- localStorage.setItem(LOGIN_KEY, Helpers.encrypt(JSON.stringify(rest)))
- }
- navigate('/')
- }
- }
-
- const onLogout = async () => {
- await getLogout()
- Helpers.clearStorage()
- setAuth({ isLogged: false, userInfo: null })
- navigate(PathConstants.LOGIN)
- }
- return { onLogin, onLogout }
-}
-
-export function useAuth() {
- return useContext(AuthContext)
-}
diff --git a/frontend/src/i18n.js b/frontend/src/i18n.js
deleted file mode 100644
index 2334dba..0000000
--- a/frontend/src/i18n.js
+++ /dev/null
@@ -1,23 +0,0 @@
-import i18n from 'i18next'
-import i18nBackend from 'i18next-http-backend'
-import { initReactI18next } from 'react-i18next'
-
-i18n
- .use(i18nBackend)
- .use(initReactI18next)
- .init({
- lng: 'vi',
- fallbackLng: 'en',
- debug: false,
- interpolation: {
- escapeValue: false,
- },
- // react: {
- // useSuspense: false
- // },
- backend: {
- loadPath: `${window.location.origin}/i18n/{{lng}}.json`,
- },
- })
-
-export default i18n
diff --git a/frontend/src/index.scss b/frontend/src/index.scss
deleted file mode 100644
index a9a365d..0000000
--- a/frontend/src/index.scss
+++ /dev/null
@@ -1,49 +0,0 @@
-@import '@mantine/core/styles.css';
-@import '@mantine/nprogress/styles.css';
-@import '@mantine/notifications/styles.css';
-
-:root {
- font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif;
- line-height: 1.5;
- font-weight: 400;
-
- color-scheme: light dark;
-
- font-synthesis: none;
- text-rendering: optimizeLegibility;
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
-}
-
-a {
- font-weight: 500;
- color: #646cff;
- text-decoration: inherit;
-}
-a:hover {
- color: #535bf2;
-}
-
-body {
- margin: 0;
- font-size: 12px;
- font-family: 'Roboto', sans-serif;
-}
-
-*,
-*::before,
-*::after {
- box-sizing: border-box;
-}
-
-input,
-button,
-textarea,
-select {
- font: inherit;
-}
-
-button,
-select {
- text-transform: none;
-}
diff --git a/frontend/src/main.jsx b/frontend/src/main.jsx
deleted file mode 100644
index f31e884..0000000
--- a/frontend/src/main.jsx
+++ /dev/null
@@ -1,13 +0,0 @@
-import React from 'react'
-import ReactDOM from 'react-dom/client'
-import App from './App.jsx'
-
-import './i18n'
-
-import './index.scss'
-
-ReactDOM.createRoot(document.getElementById('root')).render(
-
-
- ,
-)
diff --git a/frontend/src/pages/Dashboard.jsx b/frontend/src/pages/Dashboard.jsx
deleted file mode 100644
index 4156868..0000000
--- a/frontend/src/pages/Dashboard.jsx
+++ /dev/null
@@ -1,3 +0,0 @@
-export default function Dashboard() {
- return <>Dashboard>
-}
diff --git a/frontend/src/pages/Home.jsx b/frontend/src/pages/Home.jsx
deleted file mode 100644
index 854d5a1..0000000
--- a/frontend/src/pages/Home.jsx
+++ /dev/null
@@ -1,30 +0,0 @@
-import { useAuth } from '@hooks/useAuth'
-import { NAV_ITEM } from '@routes/nav-route'
-import { PathConstants } from '@routes/routes'
-import { useEffect } from 'react'
-import { useTranslation } from 'react-i18next'
-import { useNavigate } from 'react-router-dom'
-
-function getFirstItem(array) {
- const first = array.filter((item) => item.show)[0]
-
- if (first.children) {
- return getFirstItem(first.children)
- }
- return first
-}
-
-export default function Home() {
- const { t } = useTranslation()
- const { auth } = useAuth()
- const navigate = useNavigate()
-
- useEffect(() => {
- if (auth?.userInfo?.isAdmin) {
- const first = getFirstItem(NAV_ITEM(t, auth?.userInfo?.isAdmin))
- navigate(first ? first.pathName : PathConstants.PROFILE)
- }
- }, [auth.userInfo.isAdmin])
-
- return <>>
-}
diff --git a/frontend/src/pages/House.jsx b/frontend/src/pages/House.jsx
deleted file mode 100644
index 88b1580..0000000
--- a/frontend/src/pages/House.jsx
+++ /dev/null
@@ -1,281 +0,0 @@
-import { useHouse } from '@api/house'
-import Datatable from '@components/Datatable'
-import GridList from '@components/GridList'
-import {
- ActionIcon,
- Box,
- Button,
- Divider,
- Group,
- Pagination,
- Paper,
- rem,
- SegmentedControl,
- Select,
- Skeleton,
- Text,
- TypographyStylesProvider,
- VisuallyHidden,
-} from '@mantine/core'
-import { modals } from '@mantine/modals'
-import { notifications } from '@mantine/notifications'
-import { PathConstants } from '@routes/routes'
-import * as icons from '@tabler/icons-react'
-import {
- IconCircleCheck,
- IconCircleXFilled,
- IconGridDots,
- IconLayoutList,
- IconMapPin,
- IconPencil,
- IconTrash,
-} from '@tabler/icons-react'
-import { VIEWDATA } from '@utils/enum'
-import { useMemo, useState } from 'react'
-import { useTranslation } from 'react-i18next'
-import { Link, useNavigate } from 'react-router-dom'
-
-const PAGE_SIZE = [10, 50, 100]
-
-const getPaginationText = (total, size, page) => {
- const start = (page - 1) * size + 1
- const end = Math.min(start + size - 1, total)
-
- return `${start} - ${end} / ${total}`
-}
-
-export default function House() {
- const { t } = useTranslation()
- const [view, setView] = useState(VIEWDATA['list'])
- const [page, setPage] = useState(1)
- const navigate = useNavigate()
- const [pageSize, setPageSize] = useState(PAGE_SIZE[0])
- const { houses, isLoading, mutate, trigger } = useHouse(page, pageSize)
-
- const iconProps = (dimansions = 15) => ({
- style: {
- width: rem(dimansions),
- height: rem(dimansions),
- display: 'block',
- },
- stroke: 1.5,
- })
-
- const onClickEdit = (editId) => () => {
- navigate(PathConstants.EDIT_LOCATION.replace(':id', editId), {
- replace: true,
- })
- }
-
- const onDelete = async (deleteId) => {
- console.log('delete', deleteId)
- try {
- const rs = await trigger(deleteId)
- if (rs.status === 200) {
- notifications.show({
- color: 'green.5',
- icon: ,
- withCloseButton: true,
- title: t('ui_success'),
- message: t('message_success_delete'),
- })
- mutate()
- }
- } catch (error) {
- notifications.show({
- color: 'red.5',
- icon: ,
- withCloseButton: true,
- title: t('ui_error'),
- message: JSON.stringify(error),
- })
- }
- }
-
- const onClickDelete = (deleteId) => () => {
- modals.openConfirmModal({
- title: t('message_confirm_delete'),
- centered: true,
- children: (
-
-
-
- ),
- labels: { confirm: t('ui_delete'), cancel: t('ui_cancel') },
- confirmProps: { color: 'red' },
- onConfirm: () => onDelete(deleteId),
- })
- }
-
- const columnsData = useMemo(
- () => [
- {
- title: t('table_col_icon'),
- width: '10%',
- field: 'icon',
- render: ({ icon }, view = false) => {
- const Icon = icons[icon]
- return Icon ? : null
- },
- },
- {
- title: t('table_col_name'),
- width: '35%',
- field: 'name',
- render: ({ name }) => {name},
- },
- {
- title: t('table_col_address'),
- width: '35%',
- field: 'address',
- render: ({ address }) => {address},
- },
- {
- title: t('table_col_action'),
- width: '20%',
- field: 'action',
- render: ({ id }, view = false) => {
- return (
-
-
-
-
-
-
-
-
- )
- },
- },
- ],
- [],
- )
-
- if (isLoading) {
- return (
-
-
-
-
- {t('ui_house')}
-
- >
- }
- mb="md"
- />
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- )
- }
-
- return (
-
-
-
-
- {t('ui_house')}
-
- >
- }
- mb="md"
- />
-
-
-
-
- List
- >
- ),
- value: VIEWDATA['list'],
- },
- {
- label: (
- <>
-
- Grid
- >
- ),
- value: VIEWDATA['grid'],
- },
- ]}
- />
-
-
-
-
-
- {view === VIEWDATA['list'] ? (
-
- ) : (
-
- )}
-
-
-
-
- {t('ui_showing')}:{' '}
- {getPaginationText(houses?.total, pageSize, page)}
-
-
-
-
-
-
- )
-}
diff --git a/frontend/src/pages/HouseCreate.jsx b/frontend/src/pages/HouseCreate.jsx
deleted file mode 100644
index b46426d..0000000
--- a/frontend/src/pages/HouseCreate.jsx
+++ /dev/null
@@ -1,279 +0,0 @@
-import { useHouseDetail } from '@api/house'
-import AreaInput from '@components/AreaInput'
-import { errorTip, labelWithIcon } from '@components/Common'
-import {
- Anchor,
- Box,
- Breadcrumbs,
- Button,
- Divider,
- Grid,
- Group,
- Paper,
- Select,
- Skeleton,
- Text,
- TextInput,
-} from '@mantine/core'
-import { useForm, yupResolver } from '@mantine/form'
-import { notifications } from '@mantine/notifications'
-import { PathConstants } from '@routes/routes'
-import {
- IconAddressBook,
- IconCheck,
- IconCircleCheck,
- IconCircleXFilled,
- IconIcons,
- IconMapPin,
- icons,
- IconTagFilled,
- IconVector,
-} from '@tabler/icons-react'
-import { useEffect } from 'react'
-import { useTranslation } from 'react-i18next'
-import { Link, NavLink, useNavigate, useParams } from 'react-router-dom'
-import * as yup from 'yup'
-
-const houseSchema = (t) =>
- yup.object({
- icon: yup
- .string()
- .min(3, t('message_min_three_char'))
- .required(t('message_is_required', { field: t('ui_house_icon') })),
- name: yup
- .string()
- .min(3, t('message_min_three_char'))
- .required(t('message_is_required', { field: t('ui_house_name') })),
- address: yup
- .string()
- .min(3, t('message_min_three_char'))
- .required(t('message_is_required', { field: t('ui_house_address') })),
- areas: yup
- .array()
- .min(1, t('message_is_required', { field: t('ui_areas') }))
- .required(t('message_is_required', { field: t('ui_areas') })),
- })
-
-function IconDynamic({ icon }) {
- const Icon = icons[icon]
-
- return Icon ? : null
-}
-
-export default function HouseCreate() {
- const { t } = useTranslation()
- const { id } = useParams()
- const navigate = useNavigate()
-
- const { house, isLoading, trigger } = useHouseDetail(id)
- const form = useForm({
- initialValues: {
- icon: '',
- name: '',
- address: '',
- areas: [],
- },
- validate: yupResolver(houseSchema(t)),
- enhanceGetInputProps: (payload) => ({
- error: errorTip(payload.inputProps.error),
- }),
- })
-
- useEffect(() => {
- if (id && house) {
- form.setValues(house)
- }
- }, [house])
-
- const onSubmit = async (values) => {
- const result = {
- ...values,
- areas: values.areas.map((item) =>
- item.isCreate ? { name: item.name, desc: item.desc } : { ...item },
- ),
- }
- try {
- const data = await trigger(result)
-
- if (data.status === 200) {
- notifications.show({
- color: 'green.5',
- icon: ,
- title: t('ui_success'),
- message: t('message_action_house_success', {
- action: t(id ? 'ui_update' : 'ui_create'),
- }),
- })
- navigate(PathConstants.LOCATION)
- }
- } catch (error) {
- notifications.show({
- color: 'red.5',
- icon: ,
- withCloseButton: true,
- title: t('ui_error'),
- message: error
- ? error
- : t('message_action_house_fail', {
- action: t(id ? 'ui_update' : 'ui_create'),
- }),
- })
- }
- }
-
- if (isLoading) {
- return (
-
-
-
- {t('ui_house')}
-
-
- {t('ui_new_house')}
-
-
-
-
-
- {t('ui_new_house')}
-
- >
- }
- mb="md"
- />
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- )
- }
-
- return (
-
-
-
- {t('ui_house')}
-
-
- {t('ui_new_house')}
-
-
-
-
-
- {t('ui_new_house')}
-
- >
- }
- mb="md"
- />
-
-
-
-
- )
-}
diff --git a/frontend/src/pages/Layout.jsx b/frontend/src/pages/Layout.jsx
deleted file mode 100644
index 7471c7a..0000000
--- a/frontend/src/pages/Layout.jsx
+++ /dev/null
@@ -1,41 +0,0 @@
-import Header from '@components/Header'
-import Navbar from '@components/Navbar'
-import { useAuth } from '@hooks/useAuth'
-import { AppShell, ScrollArea } from '@mantine/core'
-import { useDisclosure } from '@mantine/hooks'
-import { PathConstants } from '@routes/routes'
-import { useEffect } from 'react'
-import { Outlet, useNavigate } from 'react-router-dom'
-
-export default function Layout() {
- const [opened, { toggle }] = useDisclosure()
- const { auth } = useAuth()
- const navigate = useNavigate()
-
- useEffect(() => {
- if (!auth.isLogged) {
- navigate(PathConstants.LOGIN)
- }
- }, [])
-
- return (
-
-
-
-
-
-
-
-
-
-
-
-
-
- )
-}
diff --git a/frontend/src/pages/Login/Login.jsx b/frontend/src/pages/Login/Login.jsx
deleted file mode 100644
index daf3e51..0000000
--- a/frontend/src/pages/Login/Login.jsx
+++ /dev/null
@@ -1,130 +0,0 @@
-import Logo from '@assets/images/logo.svg'
-import { errorTip, labelWithIcon } from '@components/Common'
-import { useAuth, useSignInUp } from '@hooks/useAuth'
-import {
- Box,
- Button,
- Card,
- Center,
- Container,
- Group,
- Image,
- PasswordInput,
- TextInput,
- Title,
-} from '@mantine/core'
-import { isNotEmpty, useForm } from '@mantine/form'
-import { notifications } from '@mantine/notifications'
-import {
- IconCircleCheck,
- IconCircleXFilled,
- IconKeyFilled,
- IconUserFilled,
-} from '@tabler/icons-react'
-import { useEffect } from 'react'
-import { useTranslation } from 'react-i18next'
-import { useNavigate } from 'react-router-dom'
-import { s_logo, s_wrapper } from './Login.module.scss'
-
-export default function Login() {
- const {
- auth: { isLogged },
- setAuth,
- } = useAuth()
- const { t } = useTranslation()
- const navigate = useNavigate()
- const { onLogin } = useSignInUp(setAuth)
- const form = useForm({
- initialValues: {
- username: '',
- password: '',
- },
- validate: {
- username: isNotEmpty(
- t('message_is_required', { field: t('ui_username') }),
- ),
- password: isNotEmpty(
- t('message_is_required', { field: t('ui_password') }),
- ),
- },
- enhanceGetInputProps: (payload) => ({
- error: errorTip(payload.inputProps.error),
- }),
- })
-
- useEffect(() => {
- if (isLogged) {
- navigate('/', { replace: true })
- }
- })
-
- const onSubmitLogin = async (values) => {
- try {
- await onLogin(values)
- notifications.show({
- color: 'green.5',
- icon: ,
- title: t('message_login_success'),
- message: t('message_welcom_back'),
- })
- } catch (error) {
- notifications.show({
- color: 'red.5',
- icon: ,
- title: t('message_login_fail'),
- message: error?.data ? t(error.data) : t('message_login_wrong'),
- })
- }
- }
-
- return (
-
-
-
-
-
-
-
-
-
-
- )
-}
diff --git a/frontend/src/pages/Login/Login.module.scss b/frontend/src/pages/Login/Login.module.scss
deleted file mode 100644
index 7de6b15..0000000
--- a/frontend/src/pages/Login/Login.module.scss
+++ /dev/null
@@ -1,42 +0,0 @@
-.s_wrapper {
- position: relative;
-
- &:after {
- content: '';
- display: block;
- width: 500px;
- height: 500px;
- border-radius: 15px;
- position: absolute;
- z-index: 2;
- top: -120px;
- left: -285px;
- background: #10b981;
- transform: rotate(45deg);
- }
-
- &:before {
- content: '';
- display: block;
- width: 520px;
- height: 520px;
- border-radius: 15px;
- position: absolute;
- z-index: 2;
- top: -40px;
- left: -130px;
- background: #ff6600;
- transform: rotate(20deg);
- }
-
- & .s_logo {
- position: relative;
- z-index: 4;
- display: block;
- width: 40%;
- max-width: 150px;
- min-width: 100px;
- margin: 0 auto;
- margin-top: 15px;
- }
-}
diff --git a/frontend/src/pages/Login/index.js b/frontend/src/pages/Login/index.js
deleted file mode 100644
index 24a7ad1..0000000
--- a/frontend/src/pages/Login/index.js
+++ /dev/null
@@ -1,2 +0,0 @@
-export * from './Login'
-export { default } from './Login'
diff --git a/frontend/src/pages/Page404.jsx b/frontend/src/pages/Page404.jsx
deleted file mode 100644
index b22a0a2..0000000
--- a/frontend/src/pages/Page404.jsx
+++ /dev/null
@@ -1,13 +0,0 @@
-import { Text } from '@mantine/core'
-import { useRouteError } from 'react-router-dom'
-
-export default function Page404() {
- let error = useRouteError()
-
- return (
- <>
- 404
- {error.message || JSON.stringify(error)}
- >
- )
-}
diff --git a/frontend/src/pages/Profile.jsx b/frontend/src/pages/Profile.jsx
deleted file mode 100644
index abe7c6a..0000000
--- a/frontend/src/pages/Profile.jsx
+++ /dev/null
@@ -1,124 +0,0 @@
-import { putUpdateProfile } from '@api/user'
-import { errorTip, labelWithIcon } from '@components/Common'
-import { useAuth } from '@hooks/useAuth'
-import {
- Box,
- Button,
- Divider,
- Group,
- Paper,
- PasswordInput,
- Text,
- TextInput,
-} from '@mantine/core'
-import { useForm, yupResolver } from '@mantine/form'
-import { notifications } from '@mantine/notifications'
-import {
- IconCircleCheckFilled,
- IconKeyFilled,
- IconUserCircle,
- IconUserFilled,
-} from '@tabler/icons-react'
-import { Helpers } from '@utils/helper'
-import { useEffect } from 'react'
-import { useTranslation } from 'react-i18next'
-import * as yup from 'yup'
-
-const vschema = (t) =>
- yup.object({
- name: yup
- .string()
- .required(t('message_is_required', { field: t('ui_display_name') })),
- password: yup.string().nullable().optional(),
- confirmPassword: yup.string().when('password', {
- is: (val) => !!(val && val.length > 0),
- then: (schema) =>
- schema.oneOf(
- [yup.ref('password'), null],
- t('message_password_mustmatch'),
- ),
- }),
- })
-
-export default function Profile() {
- const { t } = useTranslation()
- const { auth, setUserInfo } = useAuth()
- const form = useForm({
- initialValues: {
- name: '',
- password: '',
- confirmPassword: '',
- },
- validate: yupResolver(vschema(t)),
- transformValues: (values) => ({
- name: values.name,
- password: values.password,
- }),
- enhanceGetInputProps: (payload) => ({
- error: errorTip(payload.inputProps.error),
- }),
- })
-
- const onSubmit = async (values) => {
- const resp = await putUpdateProfile(Helpers.clearObject(values))
-
- if (resp.status === 200) {
- setUserInfo(resp.data)
- form.reset()
- }
-
- notifications.show({
- color: 'green.5',
- icon: ,
- title: t('ui_success'),
- message: t('message_update_success'),
- })
- }
-
- useEffect(() => {
- if (auth.userInfo) {
- form.setFieldValue('name', auth?.userInfo?.name)
- }
- }, [auth.userInfo])
-
- return (
-
-
-
-
- {t('ui_profile')}
-
- >
- }
- mb="md"
- />
-
- {t('ui_change_info')}
-
-
-
- )
-}
diff --git a/frontend/src/routes/index.js b/frontend/src/routes/index.js
deleted file mode 100644
index 8b31ca5..0000000
--- a/frontend/src/routes/index.js
+++ /dev/null
@@ -1,2 +0,0 @@
-export * from './nav-route'
-export * from './routes'
diff --git a/frontend/src/routes/nav-route.js b/frontend/src/routes/nav-route.js
deleted file mode 100644
index a76ac2c..0000000
--- a/frontend/src/routes/nav-route.js
+++ /dev/null
@@ -1,27 +0,0 @@
-import {
- IconBuildingWarehouse,
- IconDashboard,
- IconMapPin,
-} from '@tabler/icons-react'
-import { PathConstants } from './routes'
-
-export const NAV_ITEM = (t, admin = false) => [
- {
- pathName: PathConstants.DASHBOARD,
- show: admin,
- icon: IconDashboard,
- text: t('ui_dashboard'),
- },
- {
- pathName: PathConstants.LOCATION,
- show: true,
- icon: IconMapPin,
- text: t('ui_house'),
- },
- {
- pathName: PathConstants.WAREHOUSE,
- show: false,
- icon: IconBuildingWarehouse,
- text: t('ui_warehouse'),
- },
-]
diff --git a/frontend/src/routes/routes.jsx b/frontend/src/routes/routes.jsx
deleted file mode 100644
index 42f997b..0000000
--- a/frontend/src/routes/routes.jsx
+++ /dev/null
@@ -1,59 +0,0 @@
-import Dashboard from '@pages/Dashboard'
-import Home from '@pages/Home'
-import House from '@pages/House'
-import HouseCreate from '@pages/HouseCreate'
-import Layout from '@pages/Layout'
-import Login from '@pages/Login'
-import Page404 from '@pages/Page404'
-import Profile from '@pages/Profile'
-import { createBrowserRouter } from 'react-router-dom'
-
-export const PathConstants = {
- LOGIN: '/login',
- PROFILE: '/me',
- DASHBOARD: '/dashboard',
- LOCATION: '/location',
- CREATE_LOCATION: '/location/create',
- EDIT_LOCATION: '/location/edit/:id',
- WAREHOUSE: '/warehouse',
-}
-
-const router = createBrowserRouter([
- {
- path: PathConstants.LOGIN,
- element: ,
- },
- {
- path: '/',
- element: ,
- errorElement: ,
- children: [
- {
- path: '',
- element: ,
- },
- {
- path: PathConstants.PROFILE,
- element: ,
- },
- {
- path: PathConstants.DASHBOARD,
- element: ,
- },
- {
- path: PathConstants.LOCATION,
- element: ,
- },
- {
- path: PathConstants.CREATE_LOCATION,
- element: ,
- },
- {
- path: PathConstants.EDIT_LOCATION,
- element: ,
- },
- ],
- },
-])
-
-export default router
diff --git a/frontend/src/utils/enum.js b/frontend/src/utils/enum.js
deleted file mode 100644
index 41e072a..0000000
--- a/frontend/src/utils/enum.js
+++ /dev/null
@@ -1,11 +0,0 @@
-export const SECRET_KEY = 'bGV0IGRvIGl0IGZvciBlbmNyeXRo'
-export const STORE_KEY = 'dXNlciBsb2dpbiBpbmZv'
-export const LOGIN_KEY = '7fo24CMyIc'
-export const VIEWDATA = Object.freeze(
- new Proxy(
- { list: 'list', grid: 'grid' },
- {
- get: (target, prop) => target[prop] ?? 'list',
- },
- ),
-)
diff --git a/frontend/src/utils/helper.js b/frontend/src/utils/helper.js
deleted file mode 100644
index 089b9b0..0000000
--- a/frontend/src/utils/helper.js
+++ /dev/null
@@ -1,76 +0,0 @@
-import { AES, enc } from 'crypto-js'
-import { LOGIN_KEY, SECRET_KEY, STORE_KEY } from './enum'
-
-export class Helpers {
- static setCookie = (cname, cvalue, exdays) => {
- const d = new Date()
- d.setTime(d.getTime() + exdays * 24 * 60 * 60 * 1000)
- let expires = `expires=${d.toUTCString()}`
- document.cookie = `${cname}=${cvalue};${expires};path=/`
- }
-
- static getCookie = (cname) => {
- let name = cname + '='
- let ca = document.cookie.split(';')
- for (let i = 0; i < ca.length; i++) {
- let c = ca[i]
- while (c.charAt(0) == ' ') {
- c = c.substring(1)
- }
- if (c.indexOf(name) == 0) {
- return c.substring(name.length, c.length)
- }
- }
- return ''
- }
-
- static deleteCookie = (cname) => {
- document.cookie = `${cname}=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;`
- }
-
- static clearStorage = () => {
- localStorage.removeItem(LOGIN_KEY)
- localStorage.removeItem(STORE_KEY)
- }
-
- static checkTokenExpired = (exp) => {
- const currentTime = Math.floor(new Date().getTime() / 1000)
- return exp < currentTime
- }
-
- static encrypt = (obj) => {
- return AES.encrypt(JSON.stringify(obj), SECRET_KEY).toString()
- }
-
- static decrypt = (hash, defaultValue = {}) => {
- return hash
- ? JSON.parse(AES.decrypt(hash, SECRET_KEY).toString(enc.Utf8))
- : defaultValue
- }
-
- static clearObject = (object) => {
- for (var propName in object) {
- if (
- object[propName] === null ||
- object[propName] === undefined ||
- object[propName] === ''
- ) {
- delete object[propName]
- }
- }
- return object
- }
-
- static clearArrayWithNullObject = (array) => {
- if (array instanceof Array) {
- array.forEach((element, i) => {
- if (element instanceof Object) {
- const obk = this.clearObject(element)
- if (obk) array.splice(i, 1)
- }
- })
- }
-
- return array.length > 0 ? array : null
- }
-}
diff --git a/frontend/vite.config.js b/frontend/vite.config.js
deleted file mode 100644
index 4f7f0fd..0000000
--- a/frontend/vite.config.js
+++ /dev/null
@@ -1,86 +0,0 @@
-import react from '@vitejs/plugin-react'
-import path, { dirname } from 'path'
-import { fileURLToPath } from 'url'
-import { defineConfig, loadEnv } from 'vite'
-
-const _dirname = dirname(fileURLToPath(import.meta.url))
-
-// https://vitejs.dev/config/
-export default defineConfig(({ mode }) => {
- // eslint-disable-next-line no-undef
- const env = loadEnv(mode, process.cwd(), '')
-
- // production
- if (env.NODE_ENV === 'production') {
- return {
- resolve: {
- alias: {
- '@': path.resolve(_dirname, './src'),
- '@lang': path.resolve(_dirname, './src/lang'),
- '@api': path.resolve(_dirname, './src/api'),
- '@hooks': path.resolve(_dirname, './src/hooks'),
- '@pages': path.resolve(_dirname, './src/pages'),
- '@components': path.resolve(_dirname, './src/components'),
- '@routes': path.resolve(_dirname, './src/routes'),
- '@utils': path.resolve(_dirname, './src/utils'),
- '@assets': path.resolve(_dirname, './src/assets'),
- '@context': path.resolve(_dirname, './src/context'),
- },
- },
- plugins: [react()],
- css: {
- preprocessorOptions: {
- scss: {
- additionalData: '@import "./src/_mantine";',
- },
- },
- },
- server: {
- https: false,
- host: false,
- port: 5001,
- strictPort: true,
- watch: {
- usePolling: true,
- },
- },
- }
- }
-
- return {
- resolve: {
- alias: {
- '@': path.resolve(_dirname, './src'),
- '@lang': path.resolve(_dirname, './src/lang'),
- '@api': path.resolve(_dirname, './src/api'),
- '@hooks': path.resolve(_dirname, './src/hooks'),
- '@pages': path.resolve(_dirname, './src/pages'),
- '@components': path.resolve(_dirname, './src/components'),
- '@routes': path.resolve(_dirname, './src/routes'),
- '@utils': path.resolve(_dirname, './src/utils'),
- '@assets': path.resolve(_dirname, './src/assets'),
- '@context': path.resolve(_dirname, './src/context'),
- },
- },
- plugins: [react()],
- css: {
- preprocessorOptions: {
- scss: {
- additionalData: '@import "./src/_mantine";',
- },
- },
- },
- server: {
- https: false,
- host: true,
- port: 5001,
- strictPort: true,
- watch: {
- usePolling: true,
- },
- proxy: {
- '/api': 'http://localhost:9000',
- },
- },
- }
-})
diff --git a/pyproject.toml b/pyproject.toml
index 9f555ce..6875407 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -3,7 +3,6 @@ name = "backend"
version = "0.1.0"
description = "project for manage item with exp date"
authors = ["Sam Liu "]
-readme = "README.md"
[tool.poetry.dependencies]
python = "^3.10"