diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml
new file mode 100644
index 0000000..1113612
--- /dev/null
+++ b/.idea/codeStyles/Project.xml
@@ -0,0 +1,47 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/codeStyles/codeStyleConfig.xml b/.idea/codeStyles/codeStyleConfig.xml
new file mode 100644
index 0000000..79ee123
--- /dev/null
+++ b/.idea/codeStyles/codeStyleConfig.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/.prettierrc b/.prettierrc
new file mode 100644
index 0000000..ae1b2b0
--- /dev/null
+++ b/.prettierrc
@@ -0,0 +1,12 @@
+{
+ "printWidth": 120,
+ "tabWidth": 4,
+ "useTabs": false,
+ "semi": true,
+ "singleQuote": false,
+ "trailingComma": "es5",
+ "bracketSpacing": true,
+ "jsxBracketSameLine": false,
+ "arrowParens": "always",
+ "endOfLine": "crlf"
+}
diff --git a/docker-compose.yml b/docker-compose.yml
index 1ba06c5..a4dd6e2 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -1,17 +1,17 @@
-version: '3.8'
+version: "3.8"
services:
- nextjs:
- build:
- context: .
- dockerfile: Dockerfile
- container_name: nextjs-app
- environment:
- - NEXT_PUBLIC_VERSION=${NEXT_PUBLIC_VERSION}
- - NEXT_PUBLIC_API_URL=${NEXT_PUBLIC_API_URL}
- - NEXT_PUBLIC_SERVER_SOCKET_URL=${NEXT_PUBLIC_SERVER_SOCKET_URL}
- ports:
- - "3000:3000"
- env_file:
- - .env
- restart: unless-stopped
\ No newline at end of file
+ nextjs:
+ build:
+ context: .
+ dockerfile: Dockerfile
+ container_name: nextjs-app
+ environment:
+ - NEXT_PUBLIC_VERSION=${NEXT_PUBLIC_VERSION}
+ - NEXT_PUBLIC_API_URL=${NEXT_PUBLIC_API_URL}
+ - NEXT_PUBLIC_SERVER_SOCKET_URL=${NEXT_PUBLIC_SERVER_SOCKET_URL}
+ ports:
+ - "3000:3000"
+ env_file:
+ - .env
+ restart: unless-stopped
diff --git a/eslint.config.mjs b/eslint.config.mjs
index 348c45a..5baf1f0 100644
--- a/eslint.config.mjs
+++ b/eslint.config.mjs
@@ -6,7 +6,7 @@ const __filename = fileURLToPath(import.meta.url);
const __dirname = dirname(__filename);
const compat = new FlatCompat({
- baseDirectory: __dirname,
+ baseDirectory: __dirname,
});
const eslintConfig = [...compat.extends("next/core-web-vitals")];
diff --git a/jsconfig.json b/jsconfig.json
index b8d6842..c4550b6 100644
--- a/jsconfig.json
+++ b/jsconfig.json
@@ -1,7 +1,7 @@
{
- "compilerOptions": {
- "paths": {
- "@/*": ["./src/*"]
+ "compilerOptions": {
+ "paths": {
+ "@/*": ["./src/*"]
+ }
}
- }
}
diff --git a/package.json b/package.json
index df8779e..ddd01f4 100644
--- a/package.json
+++ b/package.json
@@ -1,46 +1,46 @@
{
- "name": "app",
- "version": "0.1.0",
- "private": true,
- "scripts": {
- "dev": "next dev --turbopack",
- "build": "next build",
- "start": "next start",
- "lint": "next lint",
- "format": "prettier --write \"src/**/*.{js,jsx,ts,tsx,html,css,scss}\""
- },
- "dependencies": {
- "@emotion/cache": "^11.14.0",
- "@emotion/react": "^11.14.0",
- "@emotion/styled": "^11.14.0",
- "@hookform/resolvers": "^5.0.1",
- "@mui/icons-material": "^7.0.2",
- "@mui/material": "^7.0.2",
- "@mui/material-nextjs": "^7.0.2",
- "@mui/x-date-pickers": "^8.2.0",
- "@mui/x-tree-view": "^8.2.0",
- "axios": "^1.9.0",
- "date-fns-jalali": "4.1.0-0",
- "jalali-moment": "^3.3.11",
- "lz-string": "^1.5.0",
- "material-react-table": "^3.2.1",
- "moment": "^2.30.1",
- "next": "15.3.1",
- "react": "^19.0.0",
- "react-dom": "^19.0.0",
- "react-hook-form": "^7.56.1",
- "react-toastify": "^11.0.5",
- "socket.io-client": "^4.8.1",
- "stylis": "^4.3.6",
- "stylis-plugin-rtl": "^2.1.1",
- "swr": "^2.3.3",
- "yup": "^1.6.1"
- },
- "devDependencies": {
- "@eslint/eslintrc": "^3",
- "eslint": "^9",
- "eslint-config-next": "15.3.1",
- "prettier": "3.5.3",
- "sass": "^1.87.0"
- }
-}
\ No newline at end of file
+ "name": "app",
+ "version": "0.1.0",
+ "private": true,
+ "scripts": {
+ "dev": "next dev --turbopack",
+ "build": "next build",
+ "start": "next start",
+ "lint": "next lint",
+ "format": "npx prettier . --write"
+ },
+ "dependencies": {
+ "@emotion/cache": "^11.14.0",
+ "@emotion/react": "^11.14.0",
+ "@emotion/styled": "^11.14.0",
+ "@hookform/resolvers": "^5.0.1",
+ "@mui/icons-material": "^7.0.2",
+ "@mui/material": "^7.0.2",
+ "@mui/material-nextjs": "^7.0.2",
+ "@mui/x-date-pickers": "^8.2.0",
+ "@mui/x-tree-view": "^8.2.0",
+ "axios": "^1.9.0",
+ "date-fns-jalali": "4.1.0-0",
+ "jalali-moment": "^3.3.11",
+ "lz-string": "^1.5.0",
+ "material-react-table": "^3.2.1",
+ "moment": "^2.30.1",
+ "next": "15.3.1",
+ "react": "^19.0.0",
+ "react-dom": "^19.0.0",
+ "react-hook-form": "^7.56.1",
+ "react-toastify": "^11.0.5",
+ "socket.io-client": "^4.8.1",
+ "stylis": "^4.3.6",
+ "stylis-plugin-rtl": "^2.1.1",
+ "swr": "^2.3.3",
+ "yup": "^1.6.1"
+ },
+ "devDependencies": {
+ "@eslint/eslintrc": "^3",
+ "eslint": "^9",
+ "eslint-config-next": "15.3.1",
+ "prettier": "3.5.3",
+ "sass": "^1.87.0"
+ }
+}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 6966f5c..6dad022 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -1,5421 +1,7125 @@
-lockfileVersion: '9.0'
+lockfileVersion: "9.0"
settings:
- autoInstallPeers: true
- excludeLinksFromLockfile: false
+ autoInstallPeers: true
+ excludeLinksFromLockfile: false
importers:
-
- .:
- dependencies:
- '@emotion/cache':
- specifier: ^11.14.0
- version: 11.14.0
- '@emotion/react':
- specifier: ^11.14.0
- version: 11.14.0(@types/react@19.1.2)(react@19.1.0)
- '@emotion/styled':
- specifier: ^11.14.0
- version: 11.14.0(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react@19.1.0)
- '@hookform/resolvers':
- specifier: ^5.0.1
- version: 5.0.1(react-hook-form@7.56.2(react@19.1.0))
- '@mui/icons-material':
- specifier: ^7.0.2
- version: 7.0.2(@mui/material@7.0.2(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@types/react@19.1.2)(react@19.1.0)
- '@mui/material':
- specifier: ^7.0.2
- version: 7.0.2(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
- '@mui/material-nextjs':
- specifier: ^7.0.2
- version: 7.0.2(@emotion/cache@11.14.0)(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(next@15.3.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.87.0))(react@19.1.0)
- '@mui/x-date-pickers':
- specifier: ^8.2.0
- version: 8.2.0(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react@19.1.0))(@mui/material@7.0.2(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mui/system@7.0.2(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(date-fns-jalali@4.1.0-0)(moment@2.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
- '@mui/x-tree-view':
- specifier: ^8.2.0
- version: 8.2.0(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react@19.1.0))(@mui/material@7.0.2(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mui/system@7.0.2(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
- axios:
- specifier: ^1.9.0
- version: 1.9.0
- date-fns-jalali:
- specifier: 4.1.0-0
- version: 4.1.0-0
- jalali-moment:
- specifier: ^3.3.11
- version: 3.3.11
- lz-string:
- specifier: ^1.5.0
- version: 1.5.0
- material-react-table:
- specifier: ^3.2.1
- version: 3.2.1(ec2ae31a6c05688f49c8e8bdcad7fbc8)
- moment:
- specifier: ^2.30.1
- version: 2.30.1
- next:
- specifier: 15.3.1
- version: 15.3.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.87.0)
- react:
- specifier: ^19.0.0
- version: 19.1.0
- react-dom:
- specifier: ^19.0.0
- version: 19.1.0(react@19.1.0)
- react-hook-form:
- specifier: ^7.56.1
- version: 7.56.2(react@19.1.0)
- react-toastify:
- specifier: ^11.0.5
- version: 11.0.5(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
- socket.io-client:
- specifier: ^4.8.1
- version: 4.8.1
- stylis:
- specifier: ^4.3.6
- version: 4.3.6
- stylis-plugin-rtl:
- specifier: ^2.1.1
- version: 2.1.1(stylis@4.3.6)
- swr:
- specifier: ^2.3.3
- version: 2.3.3(react@19.1.0)
- yup:
- specifier: ^1.6.1
- version: 1.6.1
- devDependencies:
- '@eslint/eslintrc':
- specifier: ^3
- version: 3.3.1
- eslint:
- specifier: ^9
- version: 9.26.0
- eslint-config-next:
- specifier: 15.3.1
- version: 15.3.1(eslint@9.26.0)(typescript@5.8.3)
- prettier:
- specifier: 3.5.3
- version: 3.5.3
- sass:
- specifier: ^1.87.0
- version: 1.87.0
+ .:
+ dependencies:
+ "@emotion/cache":
+ specifier: ^11.14.0
+ version: 11.14.0
+ "@emotion/react":
+ specifier: ^11.14.0
+ version: 11.14.0(@types/react@19.1.2)(react@19.1.0)
+ "@emotion/styled":
+ specifier: ^11.14.0
+ version: 11.14.0(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react@19.1.0)
+ "@hookform/resolvers":
+ specifier: ^5.0.1
+ version: 5.0.1(react-hook-form@7.56.2(react@19.1.0))
+ "@mui/icons-material":
+ specifier: ^7.0.2
+ version: 7.0.2(@mui/material@7.0.2(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@types/react@19.1.2)(react@19.1.0)
+ "@mui/material":
+ specifier: ^7.0.2
+ version: 7.0.2(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
+ "@mui/material-nextjs":
+ specifier: ^7.0.2
+ version: 7.0.2(@emotion/cache@11.14.0)(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(next@15.3.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.87.0))(react@19.1.0)
+ "@mui/x-date-pickers":
+ specifier: ^8.2.0
+ version: 8.2.0(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react@19.1.0))(@mui/material@7.0.2(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mui/system@7.0.2(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(date-fns-jalali@4.1.0-0)(moment@2.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
+ "@mui/x-tree-view":
+ specifier: ^8.2.0
+ version: 8.2.0(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react@19.1.0))(@mui/material@7.0.2(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mui/system@7.0.2(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
+ axios:
+ specifier: ^1.9.0
+ version: 1.9.0
+ date-fns-jalali:
+ specifier: 4.1.0-0
+ version: 4.1.0-0
+ jalali-moment:
+ specifier: ^3.3.11
+ version: 3.3.11
+ lz-string:
+ specifier: ^1.5.0
+ version: 1.5.0
+ material-react-table:
+ specifier: ^3.2.1
+ version: 3.2.1(ec2ae31a6c05688f49c8e8bdcad7fbc8)
+ moment:
+ specifier: ^2.30.1
+ version: 2.30.1
+ next:
+ specifier: 15.3.1
+ version: 15.3.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.87.0)
+ react:
+ specifier: ^19.0.0
+ version: 19.1.0
+ react-dom:
+ specifier: ^19.0.0
+ version: 19.1.0(react@19.1.0)
+ react-hook-form:
+ specifier: ^7.56.1
+ version: 7.56.2(react@19.1.0)
+ react-toastify:
+ specifier: ^11.0.5
+ version: 11.0.5(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
+ socket.io-client:
+ specifier: ^4.8.1
+ version: 4.8.1
+ stylis:
+ specifier: ^4.3.6
+ version: 4.3.6
+ stylis-plugin-rtl:
+ specifier: ^2.1.1
+ version: 2.1.1(stylis@4.3.6)
+ swr:
+ specifier: ^2.3.3
+ version: 2.3.3(react@19.1.0)
+ yup:
+ specifier: ^1.6.1
+ version: 1.6.1
+ devDependencies:
+ "@eslint/eslintrc":
+ specifier: ^3
+ version: 3.3.1
+ eslint:
+ specifier: ^9
+ version: 9.26.0
+ eslint-config-next:
+ specifier: 15.3.1
+ version: 15.3.1(eslint@9.26.0)(typescript@5.8.3)
+ prettier:
+ specifier: 3.5.3
+ version: 3.5.3
+ sass:
+ specifier: ^1.87.0
+ version: 1.87.0
packages:
-
- '@babel/code-frame@7.27.1':
- resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==}
- engines: {node: '>=6.9.0'}
-
- '@babel/generator@7.27.1':
- resolution: {integrity: sha512-UnJfnIpc/+JO0/+KRVQNGU+y5taA5vCbwN8+azkX6beii/ZF+enZJSOKo11ZSzGJjlNfJHfQtmQT8H+9TXPG2w==}
- engines: {node: '>=6.9.0'}
-
- '@babel/helper-module-imports@7.27.1':
- resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==}
- engines: {node: '>=6.9.0'}
-
- '@babel/helper-string-parser@7.27.1':
- resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==}
- engines: {node: '>=6.9.0'}
-
- '@babel/helper-validator-identifier@7.27.1':
- resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==}
- engines: {node: '>=6.9.0'}
-
- '@babel/parser@7.27.1':
- resolution: {integrity: sha512-I0dZ3ZpCrJ1c04OqlNsQcKiZlsrXf/kkE4FXzID9rIOYICsAbA8mMDzhW/luRNAHdCNt7os/u8wenklZDlUVUQ==}
- engines: {node: '>=6.0.0'}
- hasBin: true
-
- '@babel/runtime@7.27.1':
- resolution: {integrity: sha512-1x3D2xEk2fRo3PAhwQwu5UubzgiVWSXTBfWpVd2Mx2AzRqJuDJCsgaDVZ7HB5iGzDW1Hl1sWN2mFyKjmR9uAog==}
- engines: {node: '>=6.9.0'}
-
- '@babel/template@7.27.1':
- resolution: {integrity: sha512-Fyo3ghWMqkHHpHQCoBs2VnYjR4iWFFjguTDEqA5WgZDOrFesVjMhMM2FSqTKSoUSDO1VQtavj8NFpdRBEvJTtg==}
- engines: {node: '>=6.9.0'}
-
- '@babel/traverse@7.27.1':
- resolution: {integrity: sha512-ZCYtZciz1IWJB4U61UPu4KEaqyfj+r5T1Q5mqPo+IBpcG9kHv30Z0aD8LXPgC1trYa6rK0orRyAhqUgk4MjmEg==}
- engines: {node: '>=6.9.0'}
-
- '@babel/types@7.27.1':
- resolution: {integrity: sha512-+EzkxvLNfiUeKMgy/3luqfsCWFRXLb7U6wNQTk60tovuckwB15B191tJWvpp4HjiQWdJkCxO3Wbvc6jlk3Xb2Q==}
- engines: {node: '>=6.9.0'}
-
- '@emnapi/core@1.4.3':
- resolution: {integrity: sha512-4m62DuCE07lw01soJwPiBGC0nAww0Q+RY70VZ+n49yDIO13yyinhbWCeNnaob0lakDtWQzSdtNWzJeOJt2ma+g==}
-
- '@emnapi/runtime@1.4.3':
- resolution: {integrity: sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ==}
-
- '@emnapi/wasi-threads@1.0.2':
- resolution: {integrity: sha512-5n3nTJblwRi8LlXkJ9eBzu+kZR8Yxcc7ubakyQTFzPMtIhFpUBRbsnc2Dv88IZDIbCDlBiWrknhB4Lsz7mg6BA==}
-
- '@emotion/babel-plugin@11.13.5':
- resolution: {integrity: sha512-pxHCpT2ex+0q+HH91/zsdHkw/lXd468DIN2zvfvLtPKLLMo6gQj7oLObq8PhkrxOZb/gGCq03S3Z7PDhS8pduQ==}
-
- '@emotion/cache@11.14.0':
- resolution: {integrity: sha512-L/B1lc/TViYk4DcpGxtAVbx0ZyiKM5ktoIyafGkH6zg/tj+mA+NE//aPYKG0k8kCHSHVJrpLpcAlOBEXQ3SavA==}
-
- '@emotion/hash@0.9.2':
- resolution: {integrity: sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==}
-
- '@emotion/is-prop-valid@1.3.1':
- resolution: {integrity: sha512-/ACwoqx7XQi9knQs/G0qKvv5teDMhD7bXYns9N/wM8ah8iNb8jZ2uNO0YOgiq2o2poIvVtJS2YALasQuMSQ7Kw==}
-
- '@emotion/memoize@0.9.0':
- resolution: {integrity: sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==}
-
- '@emotion/react@11.14.0':
- resolution: {integrity: sha512-O000MLDBDdk/EohJPFUqvnp4qnHeYkVP5B0xEG0D/L7cOKP9kefu2DXn8dj74cQfsEzUqh+sr1RzFqiL1o+PpA==}
- peerDependencies:
- '@types/react': '*'
- react: '>=16.8.0'
- peerDependenciesMeta:
- '@types/react':
- optional: true
-
- '@emotion/serialize@1.3.3':
- resolution: {integrity: sha512-EISGqt7sSNWHGI76hC7x1CksiXPahbxEOrC5RjmFRJTqLyEK9/9hZvBbiYn70dw4wuwMKiEMCUlR6ZXTSWQqxA==}
-
- '@emotion/sheet@1.4.0':
- resolution: {integrity: sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg==}
-
- '@emotion/styled@11.14.0':
- resolution: {integrity: sha512-XxfOnXFffatap2IyCeJyNov3kiDQWoR08gPUQxvbL7fxKryGBKUZUkG6Hz48DZwVrJSVh9sJboyV1Ds4OW6SgA==}
- peerDependencies:
- '@emotion/react': ^11.0.0-rc.0
- '@types/react': '*'
- react: '>=16.8.0'
- peerDependenciesMeta:
- '@types/react':
- optional: true
-
- '@emotion/unitless@0.10.0':
- resolution: {integrity: sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg==}
-
- '@emotion/use-insertion-effect-with-fallbacks@1.2.0':
- resolution: {integrity: sha512-yJMtVdH59sxi/aVJBpk9FQq+OR8ll5GT8oWd57UpeaKEVGab41JWaCFA7FRLoMLloOZF/c/wsPoe+bfGmRKgDg==}
- peerDependencies:
- react: '>=16.8.0'
-
- '@emotion/utils@1.4.2':
- resolution: {integrity: sha512-3vLclRofFziIa3J2wDh9jjbkUz9qk5Vi3IZ/FSTKViB0k+ef0fPV7dYrUIugbgupYDx7v9ud/SjrtEP8Y4xLoA==}
-
- '@emotion/weak-memoize@0.4.0':
- resolution: {integrity: sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==}
-
- '@eslint-community/eslint-utils@4.7.0':
- resolution: {integrity: sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==}
- 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.12.1':
- resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==}
- engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
-
- '@eslint/config-array@0.20.0':
- resolution: {integrity: sha512-fxlS1kkIjx8+vy2SjuCB94q3htSNrufYTXubwiBFeaQHbH6Ipi43gFJq2zCMt6PHhImH3Xmr0NksKDvchWlpQQ==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
-
- '@eslint/config-helpers@0.2.2':
- resolution: {integrity: sha512-+GPzk8PlG0sPpzdU5ZvIRMPidzAnZDl/s9L+y13iodqvb8leL53bTannOrQ/Im7UkpsmFU5Ily5U60LWixnmLg==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
-
- '@eslint/core@0.13.0':
- resolution: {integrity: sha512-yfkgDw1KR66rkT5A8ci4irzDysN7FRpq3ttJolR88OqQikAWqwA8j5VZyas+vjyBNFIJ7MfybJ9plMILI2UrCw==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
-
- '@eslint/eslintrc@3.3.1':
- resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
-
- '@eslint/js@9.26.0':
- resolution: {integrity: sha512-I9XlJawFdSMvWjDt6wksMCrgns5ggLNfFwFvnShsleWruvXM514Qxk8V246efTw+eo9JABvVz+u3q2RiAowKxQ==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
-
- '@eslint/object-schema@2.1.6':
- resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
-
- '@eslint/plugin-kit@0.2.8':
- resolution: {integrity: sha512-ZAoA40rNMPwSm+AeHpCq8STiNAwzWLJuP8Xv4CHIc9wv/PSuExjMrmjfYNj682vW0OOiZ1HKxzvjQr9XZIisQA==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
-
- '@hookform/resolvers@5.0.1':
- resolution: {integrity: sha512-u/+Jp83luQNx9AdyW2fIPGY6Y7NG68eN2ZW8FOJYL+M0i4s49+refdJdOp/A9n9HFQtQs3HIDHQvX3ZET2o7YA==}
- peerDependencies:
- react-hook-form: ^7.55.0
-
- '@humanfs/core@0.19.1':
- resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==}
- engines: {node: '>=18.18.0'}
-
- '@humanfs/node@0.16.6':
- resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==}
- engines: {node: '>=18.18.0'}
-
- '@humanwhocodes/module-importer@1.0.1':
- resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==}
- engines: {node: '>=12.22'}
-
- '@humanwhocodes/retry@0.3.1':
- resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==}
- engines: {node: '>=18.18'}
-
- '@humanwhocodes/retry@0.4.2':
- resolution: {integrity: sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==}
- engines: {node: '>=18.18'}
-
- '@img/sharp-darwin-arm64@0.34.1':
- resolution: {integrity: sha512-pn44xgBtgpEbZsu+lWf2KNb6OAf70X68k+yk69Ic2Xz11zHR/w24/U49XT7AeRwJ0Px+mhALhU5LPci1Aymk7A==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
- cpu: [arm64]
- os: [darwin]
-
- '@img/sharp-darwin-x64@0.34.1':
- resolution: {integrity: sha512-VfuYgG2r8BpYiOUN+BfYeFo69nP/MIwAtSJ7/Zpxc5QF3KS22z8Pvg3FkrSFJBPNQ7mmcUcYQFBmEQp7eu1F8Q==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
- cpu: [x64]
- os: [darwin]
-
- '@img/sharp-libvips-darwin-arm64@1.1.0':
- resolution: {integrity: sha512-HZ/JUmPwrJSoM4DIQPv/BfNh9yrOA8tlBbqbLz4JZ5uew2+o22Ik+tHQJcih7QJuSa0zo5coHTfD5J8inqj9DA==}
- cpu: [arm64]
- os: [darwin]
-
- '@img/sharp-libvips-darwin-x64@1.1.0':
- resolution: {integrity: sha512-Xzc2ToEmHN+hfvsl9wja0RlnXEgpKNmftriQp6XzY/RaSfwD9th+MSh0WQKzUreLKKINb3afirxW7A0fz2YWuQ==}
- cpu: [x64]
- os: [darwin]
-
- '@img/sharp-libvips-linux-arm64@1.1.0':
- resolution: {integrity: sha512-IVfGJa7gjChDET1dK9SekxFFdflarnUB8PwW8aGwEoF3oAsSDuNUTYS+SKDOyOJxQyDC1aPFMuRYLoDInyV9Ew==}
- cpu: [arm64]
- os: [linux]
-
- '@img/sharp-libvips-linux-arm@1.1.0':
- resolution: {integrity: sha512-s8BAd0lwUIvYCJyRdFqvsj+BJIpDBSxs6ivrOPm/R7piTs5UIwY5OjXrP2bqXC9/moGsyRa37eYWYCOGVXxVrA==}
- cpu: [arm]
- os: [linux]
-
- '@img/sharp-libvips-linux-ppc64@1.1.0':
- resolution: {integrity: sha512-tiXxFZFbhnkWE2LA8oQj7KYR+bWBkiV2nilRldT7bqoEZ4HiDOcePr9wVDAZPi/Id5fT1oY9iGnDq20cwUz8lQ==}
- cpu: [ppc64]
- os: [linux]
-
- '@img/sharp-libvips-linux-s390x@1.1.0':
- resolution: {integrity: sha512-xukSwvhguw7COyzvmjydRb3x/09+21HykyapcZchiCUkTThEQEOMtBj9UhkaBRLuBrgLFzQ2wbxdeCCJW/jgJA==}
- cpu: [s390x]
- os: [linux]
-
- '@img/sharp-libvips-linux-x64@1.1.0':
- resolution: {integrity: sha512-yRj2+reB8iMg9W5sULM3S74jVS7zqSzHG3Ol/twnAAkAhnGQnpjj6e4ayUz7V+FpKypwgs82xbRdYtchTTUB+Q==}
- cpu: [x64]
- os: [linux]
-
- '@img/sharp-libvips-linuxmusl-arm64@1.1.0':
- resolution: {integrity: sha512-jYZdG+whg0MDK+q2COKbYidaqW/WTz0cc1E+tMAusiDygrM4ypmSCjOJPmFTvHHJ8j/6cAGyeDWZOsK06tP33w==}
- cpu: [arm64]
- os: [linux]
-
- '@img/sharp-libvips-linuxmusl-x64@1.1.0':
- resolution: {integrity: sha512-wK7SBdwrAiycjXdkPnGCPLjYb9lD4l6Ze2gSdAGVZrEL05AOUJESWU2lhlC+Ffn5/G+VKuSm6zzbQSzFX/P65A==}
- cpu: [x64]
- os: [linux]
-
- '@img/sharp-linux-arm64@0.34.1':
- resolution: {integrity: sha512-kX2c+vbvaXC6vly1RDf/IWNXxrlxLNpBVWkdpRq5Ka7OOKj6nr66etKy2IENf6FtOgklkg9ZdGpEu9kwdlcwOQ==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
- cpu: [arm64]
- os: [linux]
-
- '@img/sharp-linux-arm@0.34.1':
- resolution: {integrity: sha512-anKiszvACti2sGy9CirTlNyk7BjjZPiML1jt2ZkTdcvpLU1YH6CXwRAZCA2UmRXnhiIftXQ7+Oh62Ji25W72jA==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
- cpu: [arm]
- os: [linux]
-
- '@img/sharp-linux-s390x@0.34.1':
- resolution: {integrity: sha512-7s0KX2tI9mZI2buRipKIw2X1ufdTeaRgwmRabt5bi9chYfhur+/C1OXg3TKg/eag1W+6CCWLVmSauV1owmRPxA==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
- cpu: [s390x]
- os: [linux]
-
- '@img/sharp-linux-x64@0.34.1':
- resolution: {integrity: sha512-wExv7SH9nmoBW3Wr2gvQopX1k8q2g5V5Iag8Zk6AVENsjwd+3adjwxtp3Dcu2QhOXr8W9NusBU6XcQUohBZ5MA==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
- cpu: [x64]
- os: [linux]
-
- '@img/sharp-linuxmusl-arm64@0.34.1':
- resolution: {integrity: sha512-DfvyxzHxw4WGdPiTF0SOHnm11Xv4aQexvqhRDAoD00MzHekAj9a/jADXeXYCDFH/DzYruwHbXU7uz+H+nWmSOQ==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
- cpu: [arm64]
- os: [linux]
-
- '@img/sharp-linuxmusl-x64@0.34.1':
- resolution: {integrity: sha512-pax/kTR407vNb9qaSIiWVnQplPcGU8LRIJpDT5o8PdAx5aAA7AS3X9PS8Isw1/WfqgQorPotjrZL3Pqh6C5EBg==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
- cpu: [x64]
- os: [linux]
-
- '@img/sharp-wasm32@0.34.1':
- resolution: {integrity: sha512-YDybQnYrLQfEpzGOQe7OKcyLUCML4YOXl428gOOzBgN6Gw0rv8dpsJ7PqTHxBnXnwXr8S1mYFSLSa727tpz0xg==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
- cpu: [wasm32]
-
- '@img/sharp-win32-ia32@0.34.1':
- resolution: {integrity: sha512-WKf/NAZITnonBf3U1LfdjoMgNO5JYRSlhovhRhMxXVdvWYveM4kM3L8m35onYIdh75cOMCo1BexgVQcCDzyoWw==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
- cpu: [ia32]
- os: [win32]
-
- '@img/sharp-win32-x64@0.34.1':
- resolution: {integrity: sha512-hw1iIAHpNE8q3uMIRCgGOeDoz9KtFNarFLQclLxr/LK1VBkj8nby18RjFvr6aP7USRYAjTZW6yisnBWMX571Tw==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
- cpu: [x64]
- os: [win32]
-
- '@jridgewell/gen-mapping@0.3.8':
- resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==}
- 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==}
-
- '@modelcontextprotocol/sdk@1.11.0':
- resolution: {integrity: sha512-k/1pb70eD638anoi0e8wUGAlbMJXyvdV4p62Ko+EZ7eBe1xMx8Uhak1R5DgfoofsK5IBBnRwsYGTaLZl+6/+RQ==}
- engines: {node: '>=18'}
-
- '@mui/core-downloads-tracker@7.0.2':
- resolution: {integrity: sha512-TfeFU9TgN1N06hyb/pV/63FfO34nijZRMqgHk0TJ3gkl4Fbd+wZ73+ZtOd7jag6hMmzO9HSrBc6Vdn591nhkAg==}
-
- '@mui/icons-material@7.0.2':
- resolution: {integrity: sha512-Bo57PFLOqXOqPNrXjd8AhzH5s6TCsNUQbvnQ0VKZ8D+lIlteqKnrk/O1luMJUc/BXONK7BfIdTdc7qOnXYbMdw==}
- engines: {node: '>=14.0.0'}
- peerDependencies:
- '@mui/material': ^7.0.2
- '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0
- react: ^17.0.0 || ^18.0.0 || ^19.0.0
- peerDependenciesMeta:
- '@types/react':
- optional: true
-
- '@mui/material-nextjs@7.0.2':
- resolution: {integrity: sha512-hjm0MFSjx7HWbORMRldbwfKrQPHTSMXD6dkCCSTQZ2XX8fkKlnOXNnoXUFzlzFtMKMzs9QOfe3dHooTvnDEfuQ==}
- engines: {node: '>=14.0.0'}
- peerDependencies:
- '@emotion/cache': ^11.11.0
- '@emotion/react': ^11.11.4
- '@emotion/server': ^11.11.0
- '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0
- next: ^13.0.0 || ^14.0.0 || ^15.0.0
- react: ^17.0.0 || ^18.0.0 || ^19.0.0
- peerDependenciesMeta:
- '@emotion/cache':
- optional: true
- '@emotion/server':
- optional: true
- '@types/react':
- optional: true
-
- '@mui/material@7.0.2':
- resolution: {integrity: sha512-rjJlJ13+3LdLfobRplkXbjIFEIkn6LgpetgU/Cs3Xd8qINCCQK9qXQIjjQ6P0FXFTPFzEVMj0VgBR1mN+FhOcA==}
- engines: {node: '>=14.0.0'}
- peerDependencies:
- '@emotion/react': ^11.5.0
- '@emotion/styled': ^11.3.0
- '@mui/material-pigment-css': ^7.0.2
- '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0
- react: ^17.0.0 || ^18.0.0 || ^19.0.0
- react-dom: ^17.0.0 || ^18.0.0 || ^19.0.0
- peerDependenciesMeta:
- '@emotion/react':
- optional: true
- '@emotion/styled':
- optional: true
- '@mui/material-pigment-css':
- optional: true
- '@types/react':
- optional: true
-
- '@mui/private-theming@7.0.2':
- resolution: {integrity: sha512-6lt8heDC9wN8YaRqEdhqnm0cFCv08AMf4IlttFvOVn7ZdKd81PNpD/rEtPGLLwQAFyyKSxBG4/2XCgpbcdNKiA==}
- engines: {node: '>=14.0.0'}
- peerDependencies:
- '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0
- react: ^17.0.0 || ^18.0.0 || ^19.0.0
- peerDependenciesMeta:
- '@types/react':
- optional: true
-
- '@mui/styled-engine@7.0.2':
- resolution: {integrity: sha512-11Bt4YdHGlh7sB8P75S9mRCUxTlgv7HGbr0UKz6m6Z9KLeiw1Bm9y/t3iqLLVMvSHYB6zL8X8X+LmfTE++gyBw==}
- engines: {node: '>=14.0.0'}
- peerDependencies:
- '@emotion/react': ^11.4.1
- '@emotion/styled': ^11.3.0
- react: ^17.0.0 || ^18.0.0 || ^19.0.0
- peerDependenciesMeta:
- '@emotion/react':
- optional: true
- '@emotion/styled':
- optional: true
-
- '@mui/system@7.0.2':
- resolution: {integrity: sha512-yFUraAWYWuKIISPPEVPSQ1NLeqmTT4qiQ+ktmyS8LO/KwHxB+NNVOacEZaIofh5x1NxY8rzphvU5X2heRZ/RDA==}
- engines: {node: '>=14.0.0'}
- peerDependencies:
- '@emotion/react': ^11.5.0
- '@emotion/styled': ^11.3.0
- '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0
- react: ^17.0.0 || ^18.0.0 || ^19.0.0
- peerDependenciesMeta:
- '@emotion/react':
- optional: true
- '@emotion/styled':
- optional: true
- '@types/react':
- optional: true
-
- '@mui/types@7.4.1':
- resolution: {integrity: sha512-gUL8IIAI52CRXP/MixT1tJKt3SI6tVv4U/9soFsTtAsHzaJQptZ42ffdHZV3niX1ei0aUgMvOxBBN0KYqdG39g==}
- peerDependencies:
- '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0
- peerDependenciesMeta:
- '@types/react':
- optional: true
-
- '@mui/utils@7.0.2':
- resolution: {integrity: sha512-72gcuQjPzhj/MLmPHLCgZjy2VjOH4KniR/4qRtXTTXIEwbkgcN+Y5W/rC90rWtMmZbjt9svZev/z+QHUI4j74w==}
- engines: {node: '>=14.0.0'}
- peerDependencies:
- '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0
- react: ^17.0.0 || ^18.0.0 || ^19.0.0
- peerDependenciesMeta:
- '@types/react':
- optional: true
-
- '@mui/x-date-pickers@8.2.0':
- resolution: {integrity: sha512-nkFzKkaDr4a9uto4pSOsNBMh+M2YQWiW9iYyBDOi5wOa983e2xMeb7zFjHGJ0xaycg1kfxNcbvJd7tm4Ub+RhA==}
- engines: {node: '>=14.0.0'}
- peerDependencies:
- '@emotion/react': ^11.9.0
- '@emotion/styled': ^11.8.1
- '@mui/material': ^5.15.14 || ^6.0.0 || ^7.0.0
- '@mui/system': ^5.15.14 || ^6.0.0 || ^7.0.0
- date-fns: ^2.25.0 || ^3.2.0 || ^4.0.0
- date-fns-jalali: ^2.13.0-0 || ^3.2.0-0 || ^4.0.0-0
- dayjs: ^1.10.7
- luxon: ^3.0.2
- moment: ^2.29.4
- moment-hijri: ^2.1.2 || ^3.0.0
- moment-jalaali: ^0.7.4 || ^0.8.0 || ^0.9.0 || ^0.10.0
- react: ^17.0.0 || ^18.0.0 || ^19.0.0
- react-dom: ^17.0.0 || ^18.0.0 || ^19.0.0
- peerDependenciesMeta:
- '@emotion/react':
- optional: true
- '@emotion/styled':
- optional: true
- date-fns:
- optional: true
- date-fns-jalali:
- optional: true
- dayjs:
- optional: true
- luxon:
- optional: true
- moment:
- optional: true
- moment-hijri:
- optional: true
- moment-jalaali:
- optional: true
-
- '@mui/x-internals@8.2.0':
- resolution: {integrity: sha512-qV4Qr+m4sAPBSuqu8/Ofi5m+nMMvIybGno6cp757bHSmwxkqrn5SKaGyFnH5kB58fOhYA9hG1UivFp7mO1dE4A==}
- engines: {node: '>=14.0.0'}
- peerDependencies:
- react: ^17.0.0 || ^18.0.0 || ^19.0.0
-
- '@mui/x-tree-view@8.2.0':
- resolution: {integrity: sha512-58ZRFXsUfJaqZ/1kiXaAUILfxQOZHZErZbApK3dj0O7jGHgj4mLdjetwlTmwHjZiEO//ryckaDxl4K83sntANQ==}
- engines: {node: '>=14.0.0'}
- peerDependencies:
- '@emotion/react': ^11.9.0
- '@emotion/styled': ^11.8.1
- '@mui/material': ^5.15.14 || ^6.0.0 || ^7.0.0
- '@mui/system': ^5.15.14 || ^6.0.0 || ^7.0.0
- react: ^17.0.0 || ^18.0.0 || ^19.0.0
- react-dom: ^17.0.0 || ^18.0.0 || ^19.0.0
- peerDependenciesMeta:
- '@emotion/react':
- optional: true
- '@emotion/styled':
- optional: true
-
- '@napi-rs/wasm-runtime@0.2.9':
- resolution: {integrity: sha512-OKRBiajrrxB9ATokgEQoG87Z25c67pCpYcCwmXYX8PBftC9pBfN18gnm/fh1wurSLEKIAt+QRFLFCQISrb66Jg==}
-
- '@next/env@15.3.1':
- resolution: {integrity: sha512-cwK27QdzrMblHSn9DZRV+DQscHXRuJv6MydlJRpFSqJWZrTYMLzKDeyueJNN9MGd8NNiUKzDQADAf+dMLXX7YQ==}
-
- '@next/eslint-plugin-next@15.3.1':
- resolution: {integrity: sha512-oEs4dsfM6iyER3jTzMm4kDSbrQJq8wZw5fmT6fg2V3SMo+kgG+cShzLfEV20senZzv8VF+puNLheiGPlBGsv2A==}
-
- '@next/swc-darwin-arm64@15.3.1':
- resolution: {integrity: sha512-hjDw4f4/nla+6wysBL07z52Gs55Gttp5Bsk5/8AncQLJoisvTBP0pRIBK/B16/KqQyH+uN4Ww8KkcAqJODYH3w==}
- engines: {node: '>= 10'}
- cpu: [arm64]
- os: [darwin]
-
- '@next/swc-darwin-x64@15.3.1':
- resolution: {integrity: sha512-q+aw+cJ2ooVYdCEqZVk+T4Ni10jF6Fo5DfpEV51OupMaV5XL6pf3GCzrk6kSSZBsMKZtVC1Zm/xaNBFpA6bJ2g==}
- engines: {node: '>= 10'}
- cpu: [x64]
- os: [darwin]
-
- '@next/swc-linux-arm64-gnu@15.3.1':
- resolution: {integrity: sha512-wBQ+jGUI3N0QZyWmmvRHjXjTWFy8o+zPFLSOyAyGFI94oJi+kK/LIZFJXeykvgXUk1NLDAEFDZw/NVINhdk9FQ==}
- engines: {node: '>= 10'}
- cpu: [arm64]
- os: [linux]
-
- '@next/swc-linux-arm64-musl@15.3.1':
- resolution: {integrity: sha512-IIxXEXRti/AulO9lWRHiCpUUR8AR/ZYLPALgiIg/9ENzMzLn3l0NSxVdva7R/VDcuSEBo0eGVCe3evSIHNz0Hg==}
- engines: {node: '>= 10'}
- cpu: [arm64]
- os: [linux]
-
- '@next/swc-linux-x64-gnu@15.3.1':
- resolution: {integrity: sha512-bfI4AMhySJbyXQIKH5rmLJ5/BP7bPwuxauTvVEiJ/ADoddaA9fgyNNCcsbu9SlqfHDoZmfI6g2EjzLwbsVTr5A==}
- engines: {node: '>= 10'}
- cpu: [x64]
- os: [linux]
-
- '@next/swc-linux-x64-musl@15.3.1':
- resolution: {integrity: sha512-FeAbR7FYMWR+Z+M5iSGytVryKHiAsc0x3Nc3J+FD5NVbD5Mqz7fTSy8CYliXinn7T26nDMbpExRUI/4ekTvoiA==}
- engines: {node: '>= 10'}
- cpu: [x64]
- os: [linux]
-
- '@next/swc-win32-arm64-msvc@15.3.1':
- resolution: {integrity: sha512-yP7FueWjphQEPpJQ2oKmshk/ppOt+0/bB8JC8svPUZNy0Pi3KbPx2Llkzv1p8CoQa+D2wknINlJpHf3vtChVBw==}
- engines: {node: '>= 10'}
- cpu: [arm64]
- os: [win32]
-
- '@next/swc-win32-x64-msvc@15.3.1':
- resolution: {integrity: sha512-3PMvF2zRJAifcRNni9uMk/gulWfWS+qVI/pagd+4yLF5bcXPZPPH2xlYRYOsUjmCJOXSTAC2PjRzbhsRzR2fDQ==}
- engines: {node: '>= 10'}
- cpu: [x64]
- os: [win32]
-
- '@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'}
-
- '@nolyfill/is-core-module@1.0.39':
- resolution: {integrity: sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==}
- engines: {node: '>=12.4.0'}
-
- '@parcel/watcher-android-arm64@2.5.1':
- resolution: {integrity: sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==}
- engines: {node: '>= 10.0.0'}
- cpu: [arm64]
- os: [android]
-
- '@parcel/watcher-darwin-arm64@2.5.1':
- resolution: {integrity: sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==}
- engines: {node: '>= 10.0.0'}
- cpu: [arm64]
- os: [darwin]
-
- '@parcel/watcher-darwin-x64@2.5.1':
- resolution: {integrity: sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==}
- engines: {node: '>= 10.0.0'}
- cpu: [x64]
- os: [darwin]
-
- '@parcel/watcher-freebsd-x64@2.5.1':
- resolution: {integrity: sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==}
- engines: {node: '>= 10.0.0'}
- cpu: [x64]
- os: [freebsd]
-
- '@parcel/watcher-linux-arm-glibc@2.5.1':
- resolution: {integrity: sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==}
- engines: {node: '>= 10.0.0'}
- cpu: [arm]
- os: [linux]
-
- '@parcel/watcher-linux-arm-musl@2.5.1':
- resolution: {integrity: sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==}
- engines: {node: '>= 10.0.0'}
- cpu: [arm]
- os: [linux]
-
- '@parcel/watcher-linux-arm64-glibc@2.5.1':
- resolution: {integrity: sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==}
- engines: {node: '>= 10.0.0'}
- cpu: [arm64]
- os: [linux]
-
- '@parcel/watcher-linux-arm64-musl@2.5.1':
- resolution: {integrity: sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==}
- engines: {node: '>= 10.0.0'}
- cpu: [arm64]
- os: [linux]
-
- '@parcel/watcher-linux-x64-glibc@2.5.1':
- resolution: {integrity: sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==}
- engines: {node: '>= 10.0.0'}
- cpu: [x64]
- os: [linux]
-
- '@parcel/watcher-linux-x64-musl@2.5.1':
- resolution: {integrity: sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==}
- engines: {node: '>= 10.0.0'}
- cpu: [x64]
- os: [linux]
-
- '@parcel/watcher-win32-arm64@2.5.1':
- resolution: {integrity: sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==}
- engines: {node: '>= 10.0.0'}
- cpu: [arm64]
- os: [win32]
-
- '@parcel/watcher-win32-ia32@2.5.1':
- resolution: {integrity: sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==}
- engines: {node: '>= 10.0.0'}
- cpu: [ia32]
- os: [win32]
-
- '@parcel/watcher-win32-x64@2.5.1':
- resolution: {integrity: sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==}
- engines: {node: '>= 10.0.0'}
- cpu: [x64]
- os: [win32]
-
- '@parcel/watcher@2.5.1':
- resolution: {integrity: sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==}
- engines: {node: '>= 10.0.0'}
-
- '@popperjs/core@2.11.8':
- resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==}
-
- '@rtsao/scc@1.1.0':
- resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==}
-
- '@rushstack/eslint-patch@1.11.0':
- resolution: {integrity: sha512-zxnHvoMQVqewTJr/W4pKjF0bMGiKJv1WX7bSrkl46Hg0QjESbzBROWK0Wg4RphzSOS5Jiy7eFimmM3UgMrMZbQ==}
-
- '@socket.io/component-emitter@3.1.2':
- resolution: {integrity: sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==}
-
- '@standard-schema/utils@0.3.0':
- resolution: {integrity: sha512-e7Mew686owMaPJVNNLs55PUvgz371nKgwsc4vxE49zsODpJEnxgxRo2y/OKrqueavXgZNMDVj3DdHFlaSAeU8g==}
-
- '@swc/counter@0.1.3':
- resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==}
-
- '@swc/helpers@0.5.15':
- resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==}
-
- '@tanstack/match-sorter-utils@8.19.4':
- resolution: {integrity: sha512-Wo1iKt2b9OT7d+YGhvEPD3DXvPv2etTusIMhMUoG7fbhmxcXCtIjJDEygy91Y2JFlwGyjqiBPRozme7UD8hoqg==}
- engines: {node: '>=12'}
-
- '@tanstack/react-table@8.20.6':
- resolution: {integrity: sha512-w0jluT718MrOKthRcr2xsjqzx+oEM7B7s/XXyfs19ll++hlId3fjTm+B2zrR3ijpANpkzBAr15j1XGVOMxpggQ==}
- engines: {node: '>=12'}
- peerDependencies:
- react: '>=16.8'
- react-dom: '>=16.8'
-
- '@tanstack/react-virtual@3.11.2':
- resolution: {integrity: sha512-OuFzMXPF4+xZgx8UzJha0AieuMihhhaWG0tCqpp6tDzlFwOmNBPYMuLOtMJ1Tr4pXLHmgjcWhG6RlknY2oNTdQ==}
- peerDependencies:
- react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
- react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
-
- '@tanstack/table-core@8.20.5':
- resolution: {integrity: sha512-P9dF7XbibHph2PFRz8gfBKEXEY/HJPOhym8CHmjF8y3q5mWpKx9xtZapXQUWCgkqvsK0R46Azuz+VaxD4Xl+Tg==}
- engines: {node: '>=12'}
-
- '@tanstack/virtual-core@3.11.2':
- resolution: {integrity: sha512-vTtpNt7mKCiZ1pwU9hfKPhpdVO2sVzFQsxoVBGtOSHxlrRRzYr8iQ2TlwbAcRYCcEiZ9ECAM8kBzH0v2+VzfKw==}
-
- '@tybys/wasm-util@0.9.0':
- resolution: {integrity: sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==}
-
- '@types/estree@1.0.7':
- resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==}
-
- '@types/json-schema@7.0.15':
- resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==}
-
- '@types/json5@0.0.29':
- resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==}
-
- '@types/parse-json@4.0.2':
- resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==}
-
- '@types/prop-types@15.7.14':
- resolution: {integrity: sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==}
-
- '@types/react-transition-group@4.4.12':
- resolution: {integrity: sha512-8TV6R3h2j7a91c+1DXdJi3Syo69zzIZbz7Lg5tORM5LEJG7X/E6a1V3drRyBRZq7/utz7A+c4OgYLiLcYGHG6w==}
- peerDependencies:
- '@types/react': '*'
-
- '@types/react@19.1.2':
- resolution: {integrity: sha512-oxLPMytKchWGbnQM9O7D67uPa9paTNxO7jVoNMXgkkErULBPhPARCfkKL9ytcIJJRGjbsVwW4ugJzyFFvm/Tiw==}
-
- '@typescript-eslint/eslint-plugin@8.31.1':
- resolution: {integrity: sha512-oUlH4h1ABavI4F0Xnl8/fOtML/eu8nI2A1nYd+f+55XI0BLu+RIqKoCiZKNo6DtqZBEQm5aNKA20G3Z5w3R6GQ==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- peerDependencies:
- '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0
- eslint: ^8.57.0 || ^9.0.0
- typescript: '>=4.8.4 <5.9.0'
-
- '@typescript-eslint/parser@8.31.1':
- resolution: {integrity: sha512-oU/OtYVydhXnumd0BobL9rkJg7wFJ9bFFPmSmB/bf/XWN85hlViji59ko6bSKBXyseT9V8l+CN1nwmlbiN0G7Q==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- peerDependencies:
- eslint: ^8.57.0 || ^9.0.0
- typescript: '>=4.8.4 <5.9.0'
-
- '@typescript-eslint/scope-manager@8.31.1':
- resolution: {integrity: sha512-BMNLOElPxrtNQMIsFHE+3P0Yf1z0dJqV9zLdDxN/xLlWMlXK/ApEsVEKzpizg9oal8bAT5Sc7+ocal7AC1HCVw==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
-
- '@typescript-eslint/type-utils@8.31.1':
- resolution: {integrity: sha512-fNaT/m9n0+dpSp8G/iOQ05GoHYXbxw81x+yvr7TArTuZuCA6VVKbqWYVZrV5dVagpDTtj/O8k5HBEE/p/HM5LA==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- peerDependencies:
- eslint: ^8.57.0 || ^9.0.0
- typescript: '>=4.8.4 <5.9.0'
-
- '@typescript-eslint/types@8.31.1':
- resolution: {integrity: sha512-SfepaEFUDQYRoA70DD9GtytljBePSj17qPxFHA/h3eg6lPTqGJ5mWOtbXCk1YrVU1cTJRd14nhaXWFu0l2troQ==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
-
- '@typescript-eslint/typescript-estree@8.31.1':
- resolution: {integrity: sha512-kaA0ueLe2v7KunYOyWYtlf/QhhZb7+qh4Yw6Ni5kgukMIG+iP773tjgBiLWIXYumWCwEq3nLW+TUywEp8uEeag==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- peerDependencies:
- typescript: '>=4.8.4 <5.9.0'
-
- '@typescript-eslint/utils@8.31.1':
- resolution: {integrity: sha512-2DSI4SNfF5T4oRveQ4nUrSjUqjMND0nLq9rEkz0gfGr3tg0S5KB6DhwR+WZPCjzkZl3cH+4x2ce3EsL50FubjQ==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- peerDependencies:
- eslint: ^8.57.0 || ^9.0.0
- typescript: '>=4.8.4 <5.9.0'
-
- '@typescript-eslint/visitor-keys@8.31.1':
- resolution: {integrity: sha512-I+/rgqOVBn6f0o7NDTmAPWWC6NuqhV174lfYvAm9fUaWeiefLdux9/YI3/nLugEn9L8fcSi0XmpKi/r5u0nmpw==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
-
- '@unrs/resolver-binding-darwin-arm64@1.7.2':
- resolution: {integrity: sha512-vxtBno4xvowwNmO/ASL0Y45TpHqmNkAaDtz4Jqb+clmcVSSl8XCG/PNFFkGsXXXS6AMjP+ja/TtNCFFa1QwLRg==}
- cpu: [arm64]
- os: [darwin]
-
- '@unrs/resolver-binding-darwin-x64@1.7.2':
- resolution: {integrity: sha512-qhVa8ozu92C23Hsmv0BF4+5Dyyd5STT1FolV4whNgbY6mj3kA0qsrGPe35zNR3wAN7eFict3s4Rc2dDTPBTuFQ==}
- cpu: [x64]
- os: [darwin]
-
- '@unrs/resolver-binding-freebsd-x64@1.7.2':
- resolution: {integrity: sha512-zKKdm2uMXqLFX6Ac7K5ElnnG5VIXbDlFWzg4WJ8CGUedJryM5A3cTgHuGMw1+P5ziV8CRhnSEgOnurTI4vpHpg==}
- cpu: [x64]
- os: [freebsd]
-
- '@unrs/resolver-binding-linux-arm-gnueabihf@1.7.2':
- resolution: {integrity: sha512-8N1z1TbPnHH+iDS/42GJ0bMPLiGK+cUqOhNbMKtWJ4oFGzqSJk/zoXFzcQkgtI63qMcUI7wW1tq2usZQSb2jxw==}
- cpu: [arm]
- os: [linux]
-
- '@unrs/resolver-binding-linux-arm-musleabihf@1.7.2':
- resolution: {integrity: sha512-tjYzI9LcAXR9MYd9rO45m1s0B/6bJNuZ6jeOxo1pq1K6OBuRMMmfyvJYval3s9FPPGmrldYA3mi4gWDlWuTFGA==}
- cpu: [arm]
- os: [linux]
-
- '@unrs/resolver-binding-linux-arm64-gnu@1.7.2':
- resolution: {integrity: sha512-jon9M7DKRLGZ9VYSkFMflvNqu9hDtOCEnO2QAryFWgT6o6AXU8du56V7YqnaLKr6rAbZBWYsYpikF226v423QA==}
- cpu: [arm64]
- os: [linux]
-
- '@unrs/resolver-binding-linux-arm64-musl@1.7.2':
- resolution: {integrity: sha512-c8Cg4/h+kQ63pL43wBNaVMmOjXI/X62wQmru51qjfTvI7kmCy5uHTJvK/9LrF0G8Jdx8r34d019P1DVJmhXQpA==}
- cpu: [arm64]
- os: [linux]
-
- '@unrs/resolver-binding-linux-ppc64-gnu@1.7.2':
- resolution: {integrity: sha512-A+lcwRFyrjeJmv3JJvhz5NbcCkLQL6Mk16kHTNm6/aGNc4FwPHPE4DR9DwuCvCnVHvF5IAd9U4VIs/VvVir5lg==}
- cpu: [ppc64]
- os: [linux]
-
- '@unrs/resolver-binding-linux-riscv64-gnu@1.7.2':
- resolution: {integrity: sha512-hQQ4TJQrSQW8JlPm7tRpXN8OCNP9ez7PajJNjRD1ZTHQAy685OYqPrKjfaMw/8LiHCt8AZ74rfUVHP9vn0N69Q==}
- cpu: [riscv64]
- os: [linux]
-
- '@unrs/resolver-binding-linux-riscv64-musl@1.7.2':
- resolution: {integrity: sha512-NoAGbiqrxtY8kVooZ24i70CjLDlUFI7nDj3I9y54U94p+3kPxwd2L692YsdLa+cqQ0VoqMWoehDFp21PKRUoIQ==}
- cpu: [riscv64]
- os: [linux]
-
- '@unrs/resolver-binding-linux-s390x-gnu@1.7.2':
- resolution: {integrity: sha512-KaZByo8xuQZbUhhreBTW+yUnOIHUsv04P8lKjQ5otiGoSJ17ISGYArc+4vKdLEpGaLbemGzr4ZeUbYQQsLWFjA==}
- cpu: [s390x]
- os: [linux]
-
- '@unrs/resolver-binding-linux-x64-gnu@1.7.2':
- resolution: {integrity: sha512-dEidzJDubxxhUCBJ/SHSMJD/9q7JkyfBMT77Px1npl4xpg9t0POLvnWywSk66BgZS/b2Hy9Y1yFaoMTFJUe9yg==}
- cpu: [x64]
- os: [linux]
-
- '@unrs/resolver-binding-linux-x64-musl@1.7.2':
- resolution: {integrity: sha512-RvP+Ux3wDjmnZDT4XWFfNBRVG0fMsc+yVzNFUqOflnDfZ9OYujv6nkh+GOr+watwrW4wdp6ASfG/e7bkDradsw==}
- cpu: [x64]
- os: [linux]
-
- '@unrs/resolver-binding-wasm32-wasi@1.7.2':
- resolution: {integrity: sha512-y797JBmO9IsvXVRCKDXOxjyAE4+CcZpla2GSoBQ33TVb3ILXuFnMrbR/QQZoauBYeOFuu4w3ifWLw52sdHGz6g==}
- engines: {node: '>=14.0.0'}
- cpu: [wasm32]
-
- '@unrs/resolver-binding-win32-arm64-msvc@1.7.2':
- resolution: {integrity: sha512-gtYTh4/VREVSLA+gHrfbWxaMO/00y+34htY7XpioBTy56YN2eBjkPrY1ML1Zys89X3RJDKVaogzwxlM1qU7egg==}
- cpu: [arm64]
- os: [win32]
-
- '@unrs/resolver-binding-win32-ia32-msvc@1.7.2':
- resolution: {integrity: sha512-Ywv20XHvHTDRQs12jd3MY8X5C8KLjDbg/jyaal/QLKx3fAShhJyD4blEANInsjxW3P7isHx1Blt56iUDDJO3jg==}
- cpu: [ia32]
- os: [win32]
-
- '@unrs/resolver-binding-win32-x64-msvc@1.7.2':
- resolution: {integrity: sha512-friS8NEQfHaDbkThxopGk+LuE5v3iY0StruifjQEt7SLbA46OnfgMO15sOTkbpJkol6RB+1l1TYPXh0sCddpvA==}
- cpu: [x64]
- os: [win32]
-
- accepts@2.0.0:
- resolution: {integrity: sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==}
- engines: {node: '>= 0.6'}
-
- acorn-jsx@5.3.2:
- resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
- peerDependencies:
- acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
-
- acorn@8.14.1:
- resolution: {integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==}
- engines: {node: '>=0.4.0'}
- hasBin: true
-
- ajv@6.12.6:
- resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
-
- ansi-escapes@4.3.2:
- resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==}
- engines: {node: '>=8'}
-
- ansi-regex@5.0.1:
- resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
- engines: {node: '>=8'}
-
- ansi-styles@4.3.0:
- resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
- engines: {node: '>=8'}
-
- argparse@2.0.1:
- resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
-
- aria-query@5.3.2:
- resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==}
- engines: {node: '>= 0.4'}
-
- array-buffer-byte-length@1.0.2:
- resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==}
- 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.findlastindex@1.2.6:
- resolution: {integrity: sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==}
- engines: {node: '>= 0.4'}
-
- array.prototype.flat@1.3.3:
- resolution: {integrity: sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==}
- engines: {node: '>= 0.4'}
-
- array.prototype.flatmap@1.3.3:
- resolution: {integrity: sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==}
- 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.4:
- resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==}
- engines: {node: '>= 0.4'}
-
- ast-types-flow@0.0.8:
- resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==}
-
- async-function@1.0.0:
- resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==}
- 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'}
-
- axe-core@4.10.3:
- resolution: {integrity: sha512-Xm7bpRXnDSX2YE2YFfBk2FnF0ep6tmG7xPh8iHee8MIcrgq762Nkce856dYtJYLkuIoYZvGfTs/PbZhideTcEg==}
- engines: {node: '>=4'}
-
- axios@1.9.0:
- resolution: {integrity: sha512-re4CqKTJaURpzbLHtIi6XpDv20/CnpXOtjRY5/CU32L8gU8ek9UIivcfvSWvmKEngmVbrUtPpdDwWDWL7DNHvg==}
-
- axobject-query@4.1.0:
- resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==}
- engines: {node: '>= 0.4'}
-
- babel-plugin-macros@3.1.0:
- resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==}
- engines: {node: '>=10', npm: '>=6'}
-
- balanced-match@1.0.2:
- resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
-
- base64-js@1.5.1:
- resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
-
- bl@4.1.0:
- resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==}
-
- body-parser@2.2.0:
- resolution: {integrity: sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==}
- engines: {node: '>=18'}
-
- brace-expansion@1.1.11:
- resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
-
- brace-expansion@2.0.1:
- resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==}
-
- braces@3.0.3:
- resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
- engines: {node: '>=8'}
-
- buffer@5.7.1:
- resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==}
-
- busboy@1.6.0:
- resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==}
- engines: {node: '>=10.16.0'}
-
- bytes@3.1.2:
- resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==}
- engines: {node: '>= 0.8'}
-
- call-bind-apply-helpers@1.0.2:
- resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==}
- engines: {node: '>= 0.4'}
-
- call-bind@1.0.8:
- resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==}
- engines: {node: '>= 0.4'}
-
- call-bound@1.0.4:
- resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==}
- engines: {node: '>= 0.4'}
-
- callsites@3.1.0:
- resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
- engines: {node: '>=6'}
-
- caniuse-lite@1.0.30001717:
- resolution: {integrity: sha512-auPpttCq6BDEG8ZAuHJIplGw6GODhjw+/11e7IjpnYCxZcW/ONgPs0KVBJ0d1bY3e2+7PRe5RCLyP+PfwVgkYw==}
-
- chalk@4.1.2:
- resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
- engines: {node: '>=10'}
-
- chardet@0.7.0:
- resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==}
-
- chokidar@4.0.3:
- resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==}
- engines: {node: '>= 14.16.0'}
-
- cli-cursor@3.1.0:
- resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==}
- engines: {node: '>=8'}
-
- cli-spinners@2.9.2:
- resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==}
- engines: {node: '>=6'}
-
- cli-width@3.0.0:
- resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==}
- engines: {node: '>= 10'}
-
- client-only@0.0.1:
- resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==}
-
- clone@1.0.4:
- resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==}
- engines: {node: '>=0.8'}
-
- clsx@2.1.1:
- resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==}
- engines: {node: '>=6'}
-
- color-convert@2.0.1:
- resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
- engines: {node: '>=7.0.0'}
-
- color-name@1.1.4:
- resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
-
- color-string@1.9.1:
- resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==}
-
- color@4.2.3:
- resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==}
- engines: {node: '>=12.5.0'}
-
- combined-stream@1.0.8:
- resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==}
- engines: {node: '>= 0.8'}
-
- commander@7.2.0:
- resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==}
- engines: {node: '>= 10'}
-
- concat-map@0.0.1:
- resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
-
- content-disposition@1.0.0:
- resolution: {integrity: sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==}
- engines: {node: '>= 0.6'}
-
- content-type@1.0.5:
- resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==}
- engines: {node: '>= 0.6'}
-
- convert-source-map@1.9.0:
- resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==}
-
- cookie-signature@1.2.2:
- resolution: {integrity: sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==}
- engines: {node: '>=6.6.0'}
-
- cookie@0.7.2:
- resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==}
- engines: {node: '>= 0.6'}
-
- cors@2.8.5:
- resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==}
- engines: {node: '>= 0.10'}
-
- cosmiconfig@7.1.0:
- resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==}
- engines: {node: '>=10'}
-
- cross-spawn@7.0.6:
- resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==}
- engines: {node: '>= 8'}
-
- cssjanus@2.3.0:
- resolution: {integrity: sha512-ZZXXn51SnxRxAZ6fdY7mBDPmA4OZd83q/J9Gdqz3YmE9TUq+9tZl+tdOnCi7PpNygI6PEkehj9rgifv5+W8a5A==}
- engines: {node: '>=10.0.0'}
-
- csstype@3.1.3:
- resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
-
- damerau-levenshtein@1.0.8:
- resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==}
-
- data-view-buffer@1.0.2:
- resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==}
- engines: {node: '>= 0.4'}
-
- data-view-byte-length@1.0.2:
- resolution: {integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==}
- engines: {node: '>= 0.4'}
-
- data-view-byte-offset@1.0.1:
- resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==}
- engines: {node: '>= 0.4'}
-
- date-fns-jalali@4.1.0-0:
- resolution: {integrity: sha512-hTIP/z+t+qKwBDcmmsnmjWTduxCg+5KfdqWQvb2X/8C9+knYY6epN/pfxdDuyVlSVeFz0sM5eEfwIUQ70U4ckg==}
-
- debug@3.2.7:
- resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==}
- peerDependencies:
- supports-color: '*'
- peerDependenciesMeta:
- supports-color:
- optional: true
-
- debug@4.3.7:
- resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==}
- engines: {node: '>=6.0'}
- peerDependencies:
- supports-color: '*'
- peerDependenciesMeta:
- supports-color:
- optional: true
-
- debug@4.4.0:
- resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==}
- 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==}
-
- defaults@1.0.4:
- resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==}
-
- 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'}
-
- depd@2.0.0:
- resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==}
- engines: {node: '>= 0.8'}
-
- dequal@2.0.3:
- resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==}
- engines: {node: '>=6'}
-
- detect-libc@1.0.3:
- resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==}
- engines: {node: '>=0.10'}
- hasBin: true
-
- detect-libc@2.0.4:
- resolution: {integrity: sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==}
- engines: {node: '>=8'}
-
- doctrine@2.1.0:
- resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==}
- engines: {node: '>=0.10.0'}
-
- dom-helpers@5.2.1:
- resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==}
-
- dunder-proto@1.0.1:
- resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==}
- engines: {node: '>= 0.4'}
-
- ee-first@1.1.1:
- resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==}
-
- emoji-regex@8.0.0:
- resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
-
- emoji-regex@9.2.2:
- resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==}
-
- encodeurl@2.0.0:
- resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==}
- engines: {node: '>= 0.8'}
-
- engine.io-client@6.6.3:
- resolution: {integrity: sha512-T0iLjnyNWahNyv/lcjS2y4oE358tVS/SYQNxYXGAJ9/GLgH4VCvOQ/mhTjqU88mLZCQgiG8RIegFHYCdVC+j5w==}
-
- engine.io-parser@5.2.3:
- resolution: {integrity: sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==}
- engines: {node: '>=10.0.0'}
-
- error-ex@1.3.2:
- resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==}
-
- es-abstract@1.23.9:
- resolution: {integrity: sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==}
- engines: {node: '>= 0.4'}
-
- es-define-property@1.0.1:
- resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==}
- engines: {node: '>= 0.4'}
-
- es-errors@1.3.0:
- resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==}
- engines: {node: '>= 0.4'}
-
- es-iterator-helpers@1.2.1:
- resolution: {integrity: sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==}
- engines: {node: '>= 0.4'}
-
- es-object-atoms@1.1.1:
- resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==}
- engines: {node: '>= 0.4'}
-
- es-set-tostringtag@2.1.0:
- resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==}
- engines: {node: '>= 0.4'}
-
- es-shim-unscopables@1.1.0:
- resolution: {integrity: sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==}
- engines: {node: '>= 0.4'}
-
- es-to-primitive@1.3.0:
- resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==}
- engines: {node: '>= 0.4'}
-
- escape-html@1.0.3:
- resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==}
-
- 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-config-next@15.3.1:
- resolution: {integrity: sha512-GnmyVd9TE/Ihe3RrvcafFhXErErtr2jS0JDeCSp3vWvy86AXwHsRBt0E3MqP/m8ACS1ivcsi5uaqjbhsG18qKw==}
- peerDependencies:
- eslint: ^7.23.0 || ^8.0.0 || ^9.0.0
- typescript: '>=3.3.1'
- peerDependenciesMeta:
- typescript:
- optional: true
-
- eslint-import-resolver-node@0.3.9:
- resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==}
-
- eslint-import-resolver-typescript@3.10.1:
- resolution: {integrity: sha512-A1rHYb06zjMGAxdLSkN2fXPBwuSaQ0iO5M/hdyS0Ajj1VBaRp0sPD3dn1FhME3c/JluGFbwSxyCfqdSbtQLAHQ==}
- engines: {node: ^14.18.0 || >=16.0.0}
- peerDependencies:
- eslint: '*'
- eslint-plugin-import: '*'
- eslint-plugin-import-x: '*'
- peerDependenciesMeta:
- eslint-plugin-import:
- optional: true
- eslint-plugin-import-x:
- optional: true
-
- eslint-module-utils@2.12.0:
- resolution: {integrity: sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==}
- engines: {node: '>=4'}
- peerDependencies:
- '@typescript-eslint/parser': '*'
- eslint: '*'
- eslint-import-resolver-node: '*'
- eslint-import-resolver-typescript: '*'
- eslint-import-resolver-webpack: '*'
- peerDependenciesMeta:
- '@typescript-eslint/parser':
- optional: true
- eslint:
- optional: true
- eslint-import-resolver-node:
- optional: true
- eslint-import-resolver-typescript:
- optional: true
- eslint-import-resolver-webpack:
- optional: true
-
- eslint-plugin-import@2.31.0:
- resolution: {integrity: sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==}
- engines: {node: '>=4'}
- peerDependencies:
- '@typescript-eslint/parser': '*'
- eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9
- peerDependenciesMeta:
- '@typescript-eslint/parser':
- optional: true
-
- eslint-plugin-jsx-a11y@6.10.2:
- resolution: {integrity: sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==}
- engines: {node: '>=4.0'}
- peerDependencies:
- eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9
-
- eslint-plugin-react-hooks@5.2.0:
- resolution: {integrity: sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==}
- engines: {node: '>=10'}
- peerDependencies:
- eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0
-
- eslint-plugin-react@7.37.5:
- resolution: {integrity: sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==}
- engines: {node: '>=4'}
- peerDependencies:
- eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7
-
- eslint-scope@8.3.0:
- resolution: {integrity: sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.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-visitor-keys@4.2.0:
- resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
-
- eslint@9.26.0:
- resolution: {integrity: sha512-Hx0MOjPh6uK9oq9nVsATZKE/Wlbai7KFjfCuw9UHaguDW3x+HF0O5nIi3ud39TWgrTjTO5nHxmL3R1eANinWHQ==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- hasBin: true
- peerDependencies:
- jiti: '*'
- peerDependenciesMeta:
- jiti:
- optional: true
-
- espree@10.3.0:
- resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.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'}
-
- etag@1.8.1:
- resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==}
- engines: {node: '>= 0.6'}
-
- eventsource-parser@3.0.1:
- resolution: {integrity: sha512-VARTJ9CYeuQYb0pZEPbzi740OWFgpHe7AYJ2WFZVnUDUQp5Dk2yJUgF36YsZ81cOyxT0QxmXD2EQpapAouzWVA==}
- engines: {node: '>=18.0.0'}
-
- eventsource@3.0.6:
- resolution: {integrity: sha512-l19WpE2m9hSuyP06+FbuUUf1G+R0SFLrtQfbRb9PRr+oimOfxQhgGCbVaXg5IvZyyTThJsxh6L/srkMiCeBPDA==}
- engines: {node: '>=18.0.0'}
-
- express-rate-limit@7.5.0:
- resolution: {integrity: sha512-eB5zbQh5h+VenMPM3fh+nw1YExi5nMr6HUCR62ELSP11huvxm/Uir1H1QEyTkk5QX6A58pX6NmaTMceKZ0Eodg==}
- engines: {node: '>= 16'}
- peerDependencies:
- express: ^4.11 || 5 || ^5.0.0-beta.1
-
- express@5.1.0:
- resolution: {integrity: sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==}
- engines: {node: '>= 18'}
-
- external-editor@3.1.0:
- resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==}
- engines: {node: '>=4'}
-
- fast-deep-equal@3.1.3:
- resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
-
- fast-glob@3.3.1:
- resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==}
- engines: {node: '>=8.6.0'}
-
- fast-glob@3.3.3:
- resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==}
- 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.19.1:
- resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==}
-
- fdir@6.4.4:
- resolution: {integrity: sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==}
- peerDependencies:
- picomatch: ^3 || ^4
- peerDependenciesMeta:
- picomatch:
- optional: true
-
- figures@3.2.0:
- resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==}
- engines: {node: '>=8'}
-
- file-entry-cache@8.0.0:
- resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==}
- engines: {node: '>=16.0.0'}
-
- fill-range@7.1.1:
- resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
- engines: {node: '>=8'}
-
- finalhandler@2.1.0:
- resolution: {integrity: sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==}
- engines: {node: '>= 0.8'}
-
- find-root@1.1.0:
- resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==}
-
- find-up@5.0.0:
- resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==}
- engines: {node: '>=10'}
-
- flat-cache@4.0.1:
- resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==}
- engines: {node: '>=16'}
-
- flatted@3.3.3:
- resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==}
-
- follow-redirects@1.15.9:
- resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==}
- engines: {node: '>=4.0'}
- peerDependencies:
- debug: '*'
- peerDependenciesMeta:
- debug:
- optional: true
-
- for-each@0.3.5:
- resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==}
- engines: {node: '>= 0.4'}
-
- form-data@4.0.2:
- resolution: {integrity: sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==}
- engines: {node: '>= 6'}
-
- forwarded@0.2.0:
- resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==}
- engines: {node: '>= 0.6'}
-
- fresh@2.0.0:
- resolution: {integrity: sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==}
- engines: {node: '>= 0.8'}
-
- function-bind@1.1.2:
- resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
-
- function.prototype.name@1.1.8:
- resolution: {integrity: sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==}
- engines: {node: '>= 0.4'}
-
- functions-have-names@1.2.3:
- resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==}
-
- get-intrinsic@1.3.0:
- resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==}
- engines: {node: '>= 0.4'}
-
- get-proto@1.0.1:
- resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==}
- engines: {node: '>= 0.4'}
-
- get-symbol-description@1.1.0:
- resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==}
- engines: {node: '>= 0.4'}
-
- get-tsconfig@4.10.0:
- resolution: {integrity: sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A==}
-
- 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'}
-
- globals@11.12.0:
- resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==}
- engines: {node: '>=4'}
-
- globals@14.0.0:
- resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==}
- engines: {node: '>=18'}
-
- globalthis@1.0.4:
- resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==}
- engines: {node: '>= 0.4'}
-
- gopd@1.2.0:
- resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==}
- engines: {node: '>= 0.4'}
-
- graphemer@1.4.0:
- resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==}
-
- has-bigints@1.1.0:
- resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==}
- engines: {node: '>= 0.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.2.0:
- resolution: {integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==}
- engines: {node: '>= 0.4'}
-
- has-symbols@1.1.0:
- resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==}
- 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'}
-
- highlight-words@2.0.0:
- resolution: {integrity: sha512-If5n+IhSBRXTScE7wl16VPmd+44Vy7kof24EdqhjsZsDuHikpv1OCagVcJFpB4fS4UPUniedlWqrjIO8vWOsIQ==}
- engines: {node: '>= 20', npm: '>= 9'}
-
- hoist-non-react-statics@3.3.2:
- resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==}
-
- http-errors@2.0.0:
- resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==}
- engines: {node: '>= 0.8'}
-
- iconv-lite@0.4.24:
- resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==}
- engines: {node: '>=0.10.0'}
-
- iconv-lite@0.6.3:
- resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==}
- engines: {node: '>=0.10.0'}
-
- ieee754@1.2.1:
- resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==}
-
- ignore@5.3.2:
- resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==}
- engines: {node: '>= 4'}
-
- immutable@5.1.1:
- resolution: {integrity: sha512-3jatXi9ObIsPGr3N5hGw/vWWcTkq6hUYhpQz4k0wLC+owqWi/LiugIw9x0EdNZ2yGedKN/HzePiBvaJRXa0Ujg==}
-
- import-fresh@3.3.1:
- resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==}
- engines: {node: '>=6'}
-
- imurmurhash@0.1.4:
- resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
- engines: {node: '>=0.8.19'}
-
- inherits@2.0.4:
- resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
-
- inquirer@8.2.6:
- resolution: {integrity: sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==}
- engines: {node: '>=12.0.0'}
-
- internal-slot@1.1.0:
- resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==}
- engines: {node: '>= 0.4'}
-
- ipaddr.js@1.9.1:
- resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==}
- engines: {node: '>= 0.10'}
-
- is-array-buffer@3.0.5:
- resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==}
- engines: {node: '>= 0.4'}
-
- is-arrayish@0.2.1:
- resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==}
-
- is-arrayish@0.3.2:
- resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==}
-
- is-async-function@2.1.1:
- resolution: {integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==}
- engines: {node: '>= 0.4'}
-
- is-bigint@1.1.0:
- resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==}
- engines: {node: '>= 0.4'}
-
- is-boolean-object@1.2.2:
- resolution: {integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==}
- engines: {node: '>= 0.4'}
-
- is-bun-module@2.0.0:
- resolution: {integrity: sha512-gNCGbnnnnFAUGKeZ9PdbyeGYJqewpmc2aKHUEMO5nQPWU9lOmv7jcmQIv+qHD8fXW6W7qfuCwX4rY9LNRjXrkQ==}
-
- is-callable@1.2.7:
- resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==}
- engines: {node: '>= 0.4'}
-
- is-core-module@2.16.1:
- resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==}
- engines: {node: '>= 0.4'}
-
- is-data-view@1.0.2:
- resolution: {integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==}
- engines: {node: '>= 0.4'}
-
- is-date-object@1.1.0:
- resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==}
- engines: {node: '>= 0.4'}
-
- is-extglob@2.1.1:
- resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
- engines: {node: '>=0.10.0'}
-
- is-finalizationregistry@1.1.1:
- resolution: {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==}
- engines: {node: '>= 0.4'}
-
- is-fullwidth-code-point@3.0.0:
- resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
- engines: {node: '>=8'}
-
- is-generator-function@1.1.0:
- resolution: {integrity: sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==}
- engines: {node: '>= 0.4'}
-
- is-glob@4.0.3:
- resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
- engines: {node: '>=0.10.0'}
-
- is-interactive@1.0.0:
- resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==}
- engines: {node: '>=8'}
-
- is-map@2.0.3:
- resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==}
- engines: {node: '>= 0.4'}
-
- is-number-object@1.1.1:
- resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==}
- engines: {node: '>= 0.4'}
-
- is-number@7.0.0:
- resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
- engines: {node: '>=0.12.0'}
-
- is-promise@4.0.0:
- resolution: {integrity: sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==}
-
- is-regex@1.2.1:
- resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==}
- 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.4:
- resolution: {integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==}
- engines: {node: '>= 0.4'}
-
- is-string@1.1.1:
- resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==}
- engines: {node: '>= 0.4'}
-
- is-symbol@1.1.1:
- resolution: {integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==}
- engines: {node: '>= 0.4'}
-
- is-typed-array@1.1.15:
- resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==}
- engines: {node: '>= 0.4'}
-
- is-unicode-supported@0.1.0:
- resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==}
- engines: {node: '>=10'}
-
- is-weakmap@2.0.2:
- resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==}
- engines: {node: '>= 0.4'}
-
- is-weakref@1.1.1:
- resolution: {integrity: sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==}
- engines: {node: '>= 0.4'}
-
- is-weakset@2.0.4:
- resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==}
- 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.5:
- resolution: {integrity: sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==}
- engines: {node: '>= 0.4'}
-
- jalali-moment@3.3.11:
- resolution: {integrity: sha512-tdSaRs9cjWjOIaWhcsGFZMhZQhfgok5J0TwqFpBIZPudZxxa6yjUPoLCOwuvbAtRpiZn7k/mvazAJh+vEN5suw==}
- hasBin: true
-
- js-tokens@4.0.0:
- resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
-
- js-yaml@4.1.0:
- resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
- hasBin: true
-
- jsesc@3.1.0:
- resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==}
- engines: {node: '>=6'}
- hasBin: true
-
- json-buffer@3.0.1:
- resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==}
-
- json-parse-even-better-errors@2.3.1:
- resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==}
-
- 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@1.0.2:
- resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==}
- 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==}
-
- language-subtag-registry@0.3.23:
- resolution: {integrity: sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==}
-
- language-tags@1.0.9:
- resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==}
- engines: {node: '>=0.10'}
-
- levn@0.4.1:
- resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
- engines: {node: '>= 0.8.0'}
-
- lines-and-columns@1.2.4:
- resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
-
- 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==}
-
- lodash@4.17.21:
- resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
-
- log-symbols@4.1.0:
- resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==}
- engines: {node: '>=10'}
-
- loose-envify@1.4.0:
- resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
- hasBin: true
-
- lz-string@1.5.0:
- resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==}
- hasBin: true
-
- material-react-table@3.2.1:
- resolution: {integrity: sha512-sQtTf7bETpkPN2Hm5BVtz89wrfXCVQguz6XlwMChSnfKFO5QCKAJJC5aSIKnUc3S0AvTz/k/ILi00FnnY1Gixw==}
- engines: {node: '>=16'}
- peerDependencies:
- '@emotion/react': '>=11.13'
- '@emotion/styled': '>=11.13'
- '@mui/icons-material': '>=6'
- '@mui/material': '>=6'
- '@mui/x-date-pickers': '>=7.15'
- react: '>=18.0'
- react-dom: '>=18.0'
-
- math-intrinsics@1.1.0:
- resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==}
- engines: {node: '>= 0.4'}
-
- media-typer@1.1.0:
- resolution: {integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==}
- engines: {node: '>= 0.8'}
-
- merge-descriptors@2.0.0:
- resolution: {integrity: sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==}
- engines: {node: '>=18'}
-
- merge2@1.4.1:
- resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
- engines: {node: '>= 8'}
-
- micromatch@4.0.8:
- resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==}
- engines: {node: '>=8.6'}
-
- mime-db@1.52.0:
- resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==}
- engines: {node: '>= 0.6'}
-
- mime-db@1.54.0:
- resolution: {integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==}
- engines: {node: '>= 0.6'}
-
- mime-types@2.1.35:
- resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==}
- engines: {node: '>= 0.6'}
-
- mime-types@3.0.1:
- resolution: {integrity: sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==}
- engines: {node: '>= 0.6'}
-
- mimic-fn@2.1.0:
- resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==}
- engines: {node: '>=6'}
-
- minimatch@3.1.2:
- resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
-
- minimatch@9.0.5:
- resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==}
- engines: {node: '>=16 || 14 >=14.17'}
-
- minimist@1.2.8:
- resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
-
- moment@2.30.1:
- resolution: {integrity: sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==}
-
- ms@2.1.3:
- resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
-
- mute-stream@0.0.8:
- resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==}
-
- nanoid@3.3.11:
- resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==}
- engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
- hasBin: true
-
- napi-postinstall@0.2.3:
- resolution: {integrity: sha512-Mi7JISo/4Ij2tDZ2xBE2WH+/KvVlkhA6juEjpEeRAVPNCpN3nxJo/5FhDNKgBcdmcmhaH6JjgST4xY/23ZYK0w==}
- engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0}
- hasBin: true
-
- natural-compare@1.4.0:
- resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
-
- negotiator@1.0.0:
- resolution: {integrity: sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==}
- engines: {node: '>= 0.6'}
-
- next@15.3.1:
- resolution: {integrity: sha512-8+dDV0xNLOgHlyBxP1GwHGVaNXsmp+2NhZEYrXr24GWLHtt27YrBPbPuHvzlhi7kZNYjeJNR93IF5zfFu5UL0g==}
- engines: {node: ^18.18.0 || ^19.8.0 || >= 20.0.0}
- hasBin: true
- peerDependencies:
- '@opentelemetry/api': ^1.1.0
- '@playwright/test': ^1.41.2
- babel-plugin-react-compiler: '*'
- react: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0
- react-dom: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0
- sass: ^1.3.0
- peerDependenciesMeta:
- '@opentelemetry/api':
- optional: true
- '@playwright/test':
- optional: true
- babel-plugin-react-compiler:
- optional: true
- sass:
- optional: true
-
- node-addon-api@7.1.1:
- resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==}
-
- object-assign@4.1.1:
- resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
- engines: {node: '>=0.10.0'}
-
- object-inspect@1.13.4:
- resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==}
- engines: {node: '>= 0.4'}
-
- object-keys@1.1.1:
- resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==}
- engines: {node: '>= 0.4'}
-
- object.assign@4.1.7:
- resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==}
- engines: {node: '>= 0.4'}
-
- object.entries@1.1.9:
- resolution: {integrity: sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==}
- engines: {node: '>= 0.4'}
-
- object.fromentries@2.0.8:
- resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==}
- engines: {node: '>= 0.4'}
-
- object.groupby@1.0.3:
- resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==}
- engines: {node: '>= 0.4'}
-
- object.values@1.2.1:
- resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==}
- engines: {node: '>= 0.4'}
-
- on-finished@2.4.1:
- resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==}
- engines: {node: '>= 0.8'}
-
- 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'}
-
- optionator@0.9.4:
- resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==}
- engines: {node: '>= 0.8.0'}
-
- ora@5.4.1:
- resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==}
- engines: {node: '>=10'}
-
- os-tmpdir@1.0.2:
- resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==}
- engines: {node: '>=0.10.0'}
-
- own-keys@1.0.1:
- resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==}
- engines: {node: '>= 0.4'}
-
- 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'}
-
- parse-json@5.2.0:
- resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==}
- engines: {node: '>=8'}
-
- parseurl@1.3.3:
- resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==}
- engines: {node: '>= 0.8'}
-
- path-exists@4.0.0:
- resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
- engines: {node: '>=8'}
-
- path-key@3.1.1:
- resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
- engines: {node: '>=8'}
-
- path-parse@1.0.7:
- resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
-
- path-to-regexp@8.2.0:
- resolution: {integrity: sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==}
- engines: {node: '>=16'}
-
- path-type@4.0.0:
- resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
- engines: {node: '>=8'}
-
- picocolors@1.1.1:
- resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
-
- picomatch@2.3.1:
- resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
- engines: {node: '>=8.6'}
-
- picomatch@4.0.2:
- resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==}
- engines: {node: '>=12'}
-
- pkce-challenge@5.0.0:
- resolution: {integrity: sha512-ueGLflrrnvwB3xuo/uGob5pd5FN7l0MsLf0Z87o/UQmRtwjvfylfc9MurIxRAWywCYTgrvpXBcqjV4OfCYGCIQ==}
- engines: {node: '>=16.20.0'}
-
- possible-typed-array-names@1.1.0:
- resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==}
- engines: {node: '>= 0.4'}
-
- postcss@8.4.31:
- resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==}
- engines: {node: ^10 || ^12 || >=14}
-
- prelude-ls@1.2.1:
- resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
- engines: {node: '>= 0.8.0'}
-
- prettier@3.5.3:
- resolution: {integrity: sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==}
- 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-addr@2.0.7:
- resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==}
- engines: {node: '>= 0.10'}
-
- 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'}
-
- qs@6.14.0:
- resolution: {integrity: sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==}
- engines: {node: '>=0.6'}
-
- queue-microtask@1.2.3:
- resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
-
- range-parser@1.2.1:
- resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==}
- engines: {node: '>= 0.6'}
-
- raw-body@3.0.0:
- resolution: {integrity: sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==}
- engines: {node: '>= 0.8'}
-
- react-dom@19.1.0:
- resolution: {integrity: sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g==}
- peerDependencies:
- react: ^19.1.0
-
- react-hook-form@7.56.2:
- resolution: {integrity: sha512-vpfuHuQMF/L6GpuQ4c3ZDo+pRYxIi40gQqsCmmfUBwm+oqvBhKhwghCuj2o00YCgSfU6bR9KC/xnQGWm3Gr08A==}
- engines: {node: '>=18.0.0'}
- peerDependencies:
- react: ^16.8.0 || ^17 || ^18 || ^19
-
- react-is@16.13.1:
- resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==}
-
- react-is@19.1.0:
- resolution: {integrity: sha512-Oe56aUPnkHyyDxxkvqtd7KkdQP5uIUfHxd5XTb3wE9d/kRnZLmKbDB0GWk919tdQ+mxxPtG6EAs6RMT6i1qtHg==}
-
- react-toastify@11.0.5:
- resolution: {integrity: sha512-EpqHBGvnSTtHYhCPLxML05NLY2ZX0JURbAdNYa6BUkk+amz4wbKBQvoKQAB0ardvSarUBuY4Q4s1sluAzZwkmA==}
- peerDependencies:
- react: ^18 || ^19
- react-dom: ^18 || ^19
-
- react-transition-group@4.4.5:
- resolution: {integrity: sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==}
- peerDependencies:
- react: '>=16.6.0'
- react-dom: '>=16.6.0'
-
- react@19.1.0:
- resolution: {integrity: sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==}
- engines: {node: '>=0.10.0'}
-
- readable-stream@3.6.2:
- resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==}
- engines: {node: '>= 6'}
-
- readdirp@4.1.2:
- resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==}
- engines: {node: '>= 14.18.0'}
-
- reflect.getprototypeof@1.0.10:
- resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==}
- engines: {node: '>= 0.4'}
-
- regexp.prototype.flags@1.5.4:
- resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==}
- engines: {node: '>= 0.4'}
-
- remove-accents@0.5.0:
- resolution: {integrity: sha512-8g3/Otx1eJaVD12e31UbJj1YzdtVvzH85HV7t+9MJYk/u3XmkOUJ5Ys9wQrf9PCPK8+xn4ymzqYCiZl6QWKn+A==}
-
- reselect@5.1.1:
- resolution: {integrity: sha512-K/BG6eIky/SBpzfHZv/dd+9JBFiS4SWV7FIujVyJRux6e45+73RaUHXLmIR1f7WOMaQ0U1km6qwklRQxpJJY0w==}
-
- resolve-from@4.0.0:
- resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
- engines: {node: '>=4'}
-
- resolve-pkg-maps@1.0.0:
- resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==}
-
- resolve@1.22.10:
- resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==}
- engines: {node: '>= 0.4'}
- hasBin: true
-
- resolve@2.0.0-next.5:
- resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==}
- hasBin: true
-
- restore-cursor@3.1.0:
- resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==}
- engines: {node: '>=8'}
-
- reusify@1.1.0:
- resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==}
- engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
-
- router@2.2.0:
- resolution: {integrity: sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==}
- engines: {node: '>= 18'}
-
- run-async@2.4.1:
- resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==}
- engines: {node: '>=0.12.0'}
-
- run-parallel@1.2.0:
- resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
-
- rxjs@7.8.2:
- resolution: {integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==}
-
- safe-array-concat@1.1.3:
- resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==}
- engines: {node: '>=0.4'}
-
- safe-buffer@5.2.1:
- resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
-
- safe-push-apply@1.0.0:
- resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==}
- engines: {node: '>= 0.4'}
-
- safe-regex-test@1.1.0:
- resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==}
- engines: {node: '>= 0.4'}
-
- safer-buffer@2.1.2:
- resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
-
- sass@1.87.0:
- resolution: {integrity: sha512-d0NoFH4v6SjEK7BoX810Jsrhj7IQSYHAHLi/iSpgqKc7LaIDshFRlSg5LOymf9FqQhxEHs2W5ZQXlvy0KD45Uw==}
- engines: {node: '>=14.0.0'}
- hasBin: true
-
- scheduler@0.26.0:
- resolution: {integrity: sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==}
-
- semver@6.3.1:
- resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
- hasBin: true
-
- semver@7.7.1:
- resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==}
- engines: {node: '>=10'}
- hasBin: true
-
- send@1.2.0:
- resolution: {integrity: sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==}
- engines: {node: '>= 18'}
-
- serve-static@2.2.0:
- resolution: {integrity: sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==}
- engines: {node: '>= 18'}
-
- 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'}
-
- set-proto@1.0.0:
- resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==}
- engines: {node: '>= 0.4'}
-
- setprototypeof@1.2.0:
- resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==}
-
- sharp@0.34.1:
- resolution: {integrity: sha512-1j0w61+eVxu7DawFJtnfYcvSv6qPFvfTaqzTQ2BLknVhHTwGS8sc63ZBF4rzkWMBVKybo4S5OBtDdZahh2A1xg==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
-
- 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-list@1.0.0:
- resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==}
- engines: {node: '>= 0.4'}
-
- side-channel-map@1.0.1:
- resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==}
- engines: {node: '>= 0.4'}
-
- side-channel-weakmap@1.0.2:
- resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==}
- engines: {node: '>= 0.4'}
-
- side-channel@1.1.0:
- resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==}
- engines: {node: '>= 0.4'}
-
- signal-exit@3.0.7:
- resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
-
- simple-swizzle@0.2.2:
- resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==}
-
- socket.io-client@4.8.1:
- resolution: {integrity: sha512-hJVXfu3E28NmzGk8o1sHhN3om52tRvwYeidbj7xKy2eIIse5IoKX3USlS6Tqt3BHAtflLIkCQBkzVrEEfWUyYQ==}
- engines: {node: '>=10.0.0'}
-
- socket.io-parser@4.2.4:
- resolution: {integrity: sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==}
- engines: {node: '>=10.0.0'}
-
- source-map-js@1.2.1:
- resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
- engines: {node: '>=0.10.0'}
-
- source-map@0.5.7:
- resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==}
- engines: {node: '>=0.10.0'}
-
- stable-hash@0.0.5:
- resolution: {integrity: sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA==}
-
- statuses@2.0.1:
- resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==}
- engines: {node: '>= 0.8'}
-
- streamsearch@1.1.0:
- resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==}
- engines: {node: '>=10.0.0'}
-
- string-width@4.2.3:
- resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
- engines: {node: '>=8'}
-
- string.prototype.includes@2.0.1:
- resolution: {integrity: sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==}
- engines: {node: '>= 0.4'}
-
- string.prototype.matchall@4.0.12:
- resolution: {integrity: sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==}
- 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.10:
- resolution: {integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==}
- engines: {node: '>= 0.4'}
-
- string.prototype.trimend@1.0.9:
- resolution: {integrity: sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==}
- engines: {node: '>= 0.4'}
-
- string.prototype.trimstart@1.0.8:
- resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==}
- engines: {node: '>= 0.4'}
-
- string_decoder@1.3.0:
- resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==}
-
- strip-ansi@6.0.1:
- resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
- engines: {node: '>=8'}
-
- strip-bom@3.0.0:
- resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==}
- engines: {node: '>=4'}
-
- strip-json-comments@3.1.1:
- resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
- engines: {node: '>=8'}
-
- styled-jsx@5.1.6:
- resolution: {integrity: sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==}
- engines: {node: '>= 12.0.0'}
- peerDependencies:
- '@babel/core': '*'
- babel-plugin-macros: '*'
- react: '>= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0'
- peerDependenciesMeta:
- '@babel/core':
- optional: true
- babel-plugin-macros:
- optional: true
-
- stylis-plugin-rtl@2.1.1:
- resolution: {integrity: sha512-q6xIkri6fBufIO/sV55md2CbgS5c6gg9EhSVATtHHCdOnbN/jcI0u3lYhNVeuI65c4lQPo67g8xmq5jrREvzlg==}
- peerDependencies:
- stylis: 4.x
-
- stylis@4.2.0:
- resolution: {integrity: sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==}
-
- stylis@4.3.6:
- resolution: {integrity: sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ==}
-
- 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.3.3:
- resolution: {integrity: sha512-dshNvs3ExOqtZ6kJBaAsabhPdHyeY4P2cKwRCniDVifBMoG/SVI7tfLWqPXriVspf2Rg4tPzXJTnwaihIeFw2A==}
- peerDependencies:
- react: ^16.11.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
-
- through@2.3.8:
- resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==}
-
- tiny-case@1.0.3:
- resolution: {integrity: sha512-Eet/eeMhkO6TX8mnUteS9zgPbUMQa4I6Kkp5ORiBD5476/m+PIRiumP5tmh5ioJpH7k51Kehawy2UDfsnxxY8Q==}
-
- tinyglobby@0.2.13:
- resolution: {integrity: sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw==}
- engines: {node: '>=12.0.0'}
-
- tmp@0.0.33:
- resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==}
- engines: {node: '>=0.6.0'}
-
- to-regex-range@5.0.1:
- resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
- engines: {node: '>=8.0'}
-
- toidentifier@1.0.1:
- resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==}
- engines: {node: '>=0.6'}
-
- toposort@2.0.2:
- resolution: {integrity: sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==}
-
- ts-api-utils@2.1.0:
- resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==}
- engines: {node: '>=18.12'}
- peerDependencies:
- typescript: '>=4.8.4'
-
- tsconfig-paths@3.15.0:
- resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==}
-
- tslib@2.8.1:
- resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
-
- type-check@0.4.0:
- resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
- engines: {node: '>= 0.8.0'}
-
- type-fest@0.21.3:
- resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==}
- engines: {node: '>=10'}
-
- type-fest@2.19.0:
- resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==}
- engines: {node: '>=12.20'}
-
- type-is@2.0.1:
- resolution: {integrity: sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==}
- engines: {node: '>= 0.6'}
-
- typed-array-buffer@1.0.3:
- resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==}
- engines: {node: '>= 0.4'}
-
- typed-array-byte-length@1.0.3:
- resolution: {integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==}
- engines: {node: '>= 0.4'}
-
- typed-array-byte-offset@1.0.4:
- resolution: {integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==}
- engines: {node: '>= 0.4'}
-
- typed-array-length@1.0.7:
- resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==}
- engines: {node: '>= 0.4'}
-
- typescript@5.8.3:
- resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==}
- engines: {node: '>=14.17'}
- hasBin: true
-
- unbox-primitive@1.1.0:
- resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==}
- engines: {node: '>= 0.4'}
-
- unpipe@1.0.0:
- resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==}
- engines: {node: '>= 0.8'}
-
- unrs-resolver@1.7.2:
- resolution: {integrity: sha512-BBKpaylOW8KbHsu378Zky/dGh4ckT/4NW/0SHRABdqRLcQJ2dAOjDo9g97p04sWflm0kqPqpUatxReNV/dqI5A==}
-
- uri-js@4.4.1:
- resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
-
- use-sync-external-store@1.5.0:
- resolution: {integrity: sha512-Rb46I4cGGVBmjamjphe8L/UnvJD+uPPtTkNvX5mZgqdbavhI4EbgIWJiIHXJ8bc/i9EQGPRh4DwEURJ552Do0A==}
- peerDependencies:
- react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
-
- util-deprecate@1.0.2:
- resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
-
- vary@1.1.2:
- resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==}
- engines: {node: '>= 0.8'}
-
- wcwidth@1.0.1:
- resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==}
-
- which-boxed-primitive@1.1.1:
- resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==}
- engines: {node: '>= 0.4'}
-
- which-builtin-type@1.2.1:
- resolution: {integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==}
- engines: {node: '>= 0.4'}
-
- which-collection@1.0.2:
- resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==}
- engines: {node: '>= 0.4'}
-
- which-typed-array@1.1.19:
- resolution: {integrity: sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==}
- 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@6.2.0:
- resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==}
- engines: {node: '>=8'}
-
- wrappy@1.0.2:
- resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
-
- ws@8.17.1:
- resolution: {integrity: sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==}
- engines: {node: '>=10.0.0'}
- peerDependencies:
- bufferutil: ^4.0.1
- utf-8-validate: '>=5.0.2'
- peerDependenciesMeta:
- bufferutil:
- optional: true
- utf-8-validate:
- optional: true
-
- xmlhttprequest-ssl@2.1.2:
- resolution: {integrity: sha512-TEU+nJVUUnA4CYJFLvK5X9AOeH4KvDvhIfm0vV1GaQRtchnG0hgK5p8hw/xjv8cunWYCsiPCSDzObPyhEwq3KQ==}
- engines: {node: '>=0.4.0'}
-
- yaml@1.10.2:
- resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==}
- engines: {node: '>= 6'}
-
- yocto-queue@0.1.0:
- resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
- engines: {node: '>=10'}
-
- yup@1.6.1:
- resolution: {integrity: sha512-JED8pB50qbA4FOkDol0bYF/p60qSEDQqBD0/qeIrUCG1KbPBIQ776fCUNb9ldbPcSTxA69g/47XTo4TqWiuXOA==}
-
- zod-to-json-schema@3.24.5:
- resolution: {integrity: sha512-/AuWwMP+YqiPbsJx5D6TfgRTc4kTLjsh5SOcd4bLsfUg2RcEXrFMJl1DGgdHy2aCfsIA/cr/1JM0xcB2GZji8g==}
- peerDependencies:
- zod: ^3.24.1
-
- zod@3.24.4:
- resolution: {integrity: sha512-OdqJE9UDRPwWsrHjLN2F8bPxvwJBK22EHLWtanu0LSYr5YqzsaaW3RMgmjwr8Rypg5k+meEJdSPXJZXE/yqOMg==}
+ "@babel/code-frame@7.27.1":
+ resolution:
+ {
+ integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==,
+ }
+ engines: { node: ">=6.9.0" }
+
+ "@babel/generator@7.27.1":
+ resolution:
+ {
+ integrity: sha512-UnJfnIpc/+JO0/+KRVQNGU+y5taA5vCbwN8+azkX6beii/ZF+enZJSOKo11ZSzGJjlNfJHfQtmQT8H+9TXPG2w==,
+ }
+ engines: { node: ">=6.9.0" }
+
+ "@babel/helper-module-imports@7.27.1":
+ resolution:
+ {
+ integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==,
+ }
+ engines: { node: ">=6.9.0" }
+
+ "@babel/helper-string-parser@7.27.1":
+ resolution:
+ {
+ integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==,
+ }
+ engines: { node: ">=6.9.0" }
+
+ "@babel/helper-validator-identifier@7.27.1":
+ resolution:
+ {
+ integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==,
+ }
+ engines: { node: ">=6.9.0" }
+
+ "@babel/parser@7.27.1":
+ resolution:
+ {
+ integrity: sha512-I0dZ3ZpCrJ1c04OqlNsQcKiZlsrXf/kkE4FXzID9rIOYICsAbA8mMDzhW/luRNAHdCNt7os/u8wenklZDlUVUQ==,
+ }
+ engines: { node: ">=6.0.0" }
+ hasBin: true
+
+ "@babel/runtime@7.27.1":
+ resolution:
+ {
+ integrity: sha512-1x3D2xEk2fRo3PAhwQwu5UubzgiVWSXTBfWpVd2Mx2AzRqJuDJCsgaDVZ7HB5iGzDW1Hl1sWN2mFyKjmR9uAog==,
+ }
+ engines: { node: ">=6.9.0" }
+
+ "@babel/template@7.27.1":
+ resolution:
+ {
+ integrity: sha512-Fyo3ghWMqkHHpHQCoBs2VnYjR4iWFFjguTDEqA5WgZDOrFesVjMhMM2FSqTKSoUSDO1VQtavj8NFpdRBEvJTtg==,
+ }
+ engines: { node: ">=6.9.0" }
+
+ "@babel/traverse@7.27.1":
+ resolution:
+ {
+ integrity: sha512-ZCYtZciz1IWJB4U61UPu4KEaqyfj+r5T1Q5mqPo+IBpcG9kHv30Z0aD8LXPgC1trYa6rK0orRyAhqUgk4MjmEg==,
+ }
+ engines: { node: ">=6.9.0" }
+
+ "@babel/types@7.27.1":
+ resolution:
+ {
+ integrity: sha512-+EzkxvLNfiUeKMgy/3luqfsCWFRXLb7U6wNQTk60tovuckwB15B191tJWvpp4HjiQWdJkCxO3Wbvc6jlk3Xb2Q==,
+ }
+ engines: { node: ">=6.9.0" }
+
+ "@emnapi/core@1.4.3":
+ resolution:
+ {
+ integrity: sha512-4m62DuCE07lw01soJwPiBGC0nAww0Q+RY70VZ+n49yDIO13yyinhbWCeNnaob0lakDtWQzSdtNWzJeOJt2ma+g==,
+ }
+
+ "@emnapi/runtime@1.4.3":
+ resolution:
+ {
+ integrity: sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ==,
+ }
+
+ "@emnapi/wasi-threads@1.0.2":
+ resolution:
+ {
+ integrity: sha512-5n3nTJblwRi8LlXkJ9eBzu+kZR8Yxcc7ubakyQTFzPMtIhFpUBRbsnc2Dv88IZDIbCDlBiWrknhB4Lsz7mg6BA==,
+ }
+
+ "@emotion/babel-plugin@11.13.5":
+ resolution:
+ {
+ integrity: sha512-pxHCpT2ex+0q+HH91/zsdHkw/lXd468DIN2zvfvLtPKLLMo6gQj7oLObq8PhkrxOZb/gGCq03S3Z7PDhS8pduQ==,
+ }
+
+ "@emotion/cache@11.14.0":
+ resolution:
+ {
+ integrity: sha512-L/B1lc/TViYk4DcpGxtAVbx0ZyiKM5ktoIyafGkH6zg/tj+mA+NE//aPYKG0k8kCHSHVJrpLpcAlOBEXQ3SavA==,
+ }
+
+ "@emotion/hash@0.9.2":
+ resolution:
+ {
+ integrity: sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==,
+ }
+
+ "@emotion/is-prop-valid@1.3.1":
+ resolution:
+ {
+ integrity: sha512-/ACwoqx7XQi9knQs/G0qKvv5teDMhD7bXYns9N/wM8ah8iNb8jZ2uNO0YOgiq2o2poIvVtJS2YALasQuMSQ7Kw==,
+ }
+
+ "@emotion/memoize@0.9.0":
+ resolution:
+ {
+ integrity: sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==,
+ }
+
+ "@emotion/react@11.14.0":
+ resolution:
+ {
+ integrity: sha512-O000MLDBDdk/EohJPFUqvnp4qnHeYkVP5B0xEG0D/L7cOKP9kefu2DXn8dj74cQfsEzUqh+sr1RzFqiL1o+PpA==,
+ }
+ peerDependencies:
+ "@types/react": "*"
+ react: ">=16.8.0"
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+
+ "@emotion/serialize@1.3.3":
+ resolution:
+ {
+ integrity: sha512-EISGqt7sSNWHGI76hC7x1CksiXPahbxEOrC5RjmFRJTqLyEK9/9hZvBbiYn70dw4wuwMKiEMCUlR6ZXTSWQqxA==,
+ }
+
+ "@emotion/sheet@1.4.0":
+ resolution:
+ {
+ integrity: sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg==,
+ }
+
+ "@emotion/styled@11.14.0":
+ resolution:
+ {
+ integrity: sha512-XxfOnXFffatap2IyCeJyNov3kiDQWoR08gPUQxvbL7fxKryGBKUZUkG6Hz48DZwVrJSVh9sJboyV1Ds4OW6SgA==,
+ }
+ peerDependencies:
+ "@emotion/react": ^11.0.0-rc.0
+ "@types/react": "*"
+ react: ">=16.8.0"
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+
+ "@emotion/unitless@0.10.0":
+ resolution:
+ {
+ integrity: sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg==,
+ }
+
+ "@emotion/use-insertion-effect-with-fallbacks@1.2.0":
+ resolution:
+ {
+ integrity: sha512-yJMtVdH59sxi/aVJBpk9FQq+OR8ll5GT8oWd57UpeaKEVGab41JWaCFA7FRLoMLloOZF/c/wsPoe+bfGmRKgDg==,
+ }
+ peerDependencies:
+ react: ">=16.8.0"
+
+ "@emotion/utils@1.4.2":
+ resolution:
+ {
+ integrity: sha512-3vLclRofFziIa3J2wDh9jjbkUz9qk5Vi3IZ/FSTKViB0k+ef0fPV7dYrUIugbgupYDx7v9ud/SjrtEP8Y4xLoA==,
+ }
+
+ "@emotion/weak-memoize@0.4.0":
+ resolution:
+ {
+ integrity: sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==,
+ }
+
+ "@eslint-community/eslint-utils@4.7.0":
+ resolution:
+ {
+ integrity: sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==,
+ }
+ 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.12.1":
+ resolution:
+ {
+ integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==,
+ }
+ engines: { node: ^12.0.0 || ^14.0.0 || >=16.0.0 }
+
+ "@eslint/config-array@0.20.0":
+ resolution:
+ {
+ integrity: sha512-fxlS1kkIjx8+vy2SjuCB94q3htSNrufYTXubwiBFeaQHbH6Ipi43gFJq2zCMt6PHhImH3Xmr0NksKDvchWlpQQ==,
+ }
+ engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
+
+ "@eslint/config-helpers@0.2.2":
+ resolution:
+ {
+ integrity: sha512-+GPzk8PlG0sPpzdU5ZvIRMPidzAnZDl/s9L+y13iodqvb8leL53bTannOrQ/Im7UkpsmFU5Ily5U60LWixnmLg==,
+ }
+ engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
+
+ "@eslint/core@0.13.0":
+ resolution:
+ {
+ integrity: sha512-yfkgDw1KR66rkT5A8ci4irzDysN7FRpq3ttJolR88OqQikAWqwA8j5VZyas+vjyBNFIJ7MfybJ9plMILI2UrCw==,
+ }
+ engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
+
+ "@eslint/eslintrc@3.3.1":
+ resolution:
+ {
+ integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==,
+ }
+ engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
+
+ "@eslint/js@9.26.0":
+ resolution:
+ {
+ integrity: sha512-I9XlJawFdSMvWjDt6wksMCrgns5ggLNfFwFvnShsleWruvXM514Qxk8V246efTw+eo9JABvVz+u3q2RiAowKxQ==,
+ }
+ engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
+
+ "@eslint/object-schema@2.1.6":
+ resolution:
+ {
+ integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==,
+ }
+ engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
+
+ "@eslint/plugin-kit@0.2.8":
+ resolution:
+ {
+ integrity: sha512-ZAoA40rNMPwSm+AeHpCq8STiNAwzWLJuP8Xv4CHIc9wv/PSuExjMrmjfYNj682vW0OOiZ1HKxzvjQr9XZIisQA==,
+ }
+ engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
+
+ "@hookform/resolvers@5.0.1":
+ resolution:
+ {
+ integrity: sha512-u/+Jp83luQNx9AdyW2fIPGY6Y7NG68eN2ZW8FOJYL+M0i4s49+refdJdOp/A9n9HFQtQs3HIDHQvX3ZET2o7YA==,
+ }
+ peerDependencies:
+ react-hook-form: ^7.55.0
+
+ "@humanfs/core@0.19.1":
+ resolution:
+ {
+ integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==,
+ }
+ engines: { node: ">=18.18.0" }
+
+ "@humanfs/node@0.16.6":
+ resolution:
+ {
+ integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==,
+ }
+ engines: { node: ">=18.18.0" }
+
+ "@humanwhocodes/module-importer@1.0.1":
+ resolution:
+ {
+ integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==,
+ }
+ engines: { node: ">=12.22" }
+
+ "@humanwhocodes/retry@0.3.1":
+ resolution:
+ {
+ integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==,
+ }
+ engines: { node: ">=18.18" }
+
+ "@humanwhocodes/retry@0.4.2":
+ resolution:
+ {
+ integrity: sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==,
+ }
+ engines: { node: ">=18.18" }
+
+ "@img/sharp-darwin-arm64@0.34.1":
+ resolution:
+ {
+ integrity: sha512-pn44xgBtgpEbZsu+lWf2KNb6OAf70X68k+yk69Ic2Xz11zHR/w24/U49XT7AeRwJ0Px+mhALhU5LPci1Aymk7A==,
+ }
+ engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 }
+ cpu: [arm64]
+ os: [darwin]
+
+ "@img/sharp-darwin-x64@0.34.1":
+ resolution:
+ {
+ integrity: sha512-VfuYgG2r8BpYiOUN+BfYeFo69nP/MIwAtSJ7/Zpxc5QF3KS22z8Pvg3FkrSFJBPNQ7mmcUcYQFBmEQp7eu1F8Q==,
+ }
+ engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 }
+ cpu: [x64]
+ os: [darwin]
+
+ "@img/sharp-libvips-darwin-arm64@1.1.0":
+ resolution:
+ {
+ integrity: sha512-HZ/JUmPwrJSoM4DIQPv/BfNh9yrOA8tlBbqbLz4JZ5uew2+o22Ik+tHQJcih7QJuSa0zo5coHTfD5J8inqj9DA==,
+ }
+ cpu: [arm64]
+ os: [darwin]
+
+ "@img/sharp-libvips-darwin-x64@1.1.0":
+ resolution:
+ {
+ integrity: sha512-Xzc2ToEmHN+hfvsl9wja0RlnXEgpKNmftriQp6XzY/RaSfwD9th+MSh0WQKzUreLKKINb3afirxW7A0fz2YWuQ==,
+ }
+ cpu: [x64]
+ os: [darwin]
+
+ "@img/sharp-libvips-linux-arm64@1.1.0":
+ resolution:
+ {
+ integrity: sha512-IVfGJa7gjChDET1dK9SekxFFdflarnUB8PwW8aGwEoF3oAsSDuNUTYS+SKDOyOJxQyDC1aPFMuRYLoDInyV9Ew==,
+ }
+ cpu: [arm64]
+ os: [linux]
+
+ "@img/sharp-libvips-linux-arm@1.1.0":
+ resolution:
+ {
+ integrity: sha512-s8BAd0lwUIvYCJyRdFqvsj+BJIpDBSxs6ivrOPm/R7piTs5UIwY5OjXrP2bqXC9/moGsyRa37eYWYCOGVXxVrA==,
+ }
+ cpu: [arm]
+ os: [linux]
+
+ "@img/sharp-libvips-linux-ppc64@1.1.0":
+ resolution:
+ {
+ integrity: sha512-tiXxFZFbhnkWE2LA8oQj7KYR+bWBkiV2nilRldT7bqoEZ4HiDOcePr9wVDAZPi/Id5fT1oY9iGnDq20cwUz8lQ==,
+ }
+ cpu: [ppc64]
+ os: [linux]
+
+ "@img/sharp-libvips-linux-s390x@1.1.0":
+ resolution:
+ {
+ integrity: sha512-xukSwvhguw7COyzvmjydRb3x/09+21HykyapcZchiCUkTThEQEOMtBj9UhkaBRLuBrgLFzQ2wbxdeCCJW/jgJA==,
+ }
+ cpu: [s390x]
+ os: [linux]
+
+ "@img/sharp-libvips-linux-x64@1.1.0":
+ resolution:
+ {
+ integrity: sha512-yRj2+reB8iMg9W5sULM3S74jVS7zqSzHG3Ol/twnAAkAhnGQnpjj6e4ayUz7V+FpKypwgs82xbRdYtchTTUB+Q==,
+ }
+ cpu: [x64]
+ os: [linux]
+
+ "@img/sharp-libvips-linuxmusl-arm64@1.1.0":
+ resolution:
+ {
+ integrity: sha512-jYZdG+whg0MDK+q2COKbYidaqW/WTz0cc1E+tMAusiDygrM4ypmSCjOJPmFTvHHJ8j/6cAGyeDWZOsK06tP33w==,
+ }
+ cpu: [arm64]
+ os: [linux]
+
+ "@img/sharp-libvips-linuxmusl-x64@1.1.0":
+ resolution:
+ {
+ integrity: sha512-wK7SBdwrAiycjXdkPnGCPLjYb9lD4l6Ze2gSdAGVZrEL05AOUJESWU2lhlC+Ffn5/G+VKuSm6zzbQSzFX/P65A==,
+ }
+ cpu: [x64]
+ os: [linux]
+
+ "@img/sharp-linux-arm64@0.34.1":
+ resolution:
+ {
+ integrity: sha512-kX2c+vbvaXC6vly1RDf/IWNXxrlxLNpBVWkdpRq5Ka7OOKj6nr66etKy2IENf6FtOgklkg9ZdGpEu9kwdlcwOQ==,
+ }
+ engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 }
+ cpu: [arm64]
+ os: [linux]
+
+ "@img/sharp-linux-arm@0.34.1":
+ resolution:
+ {
+ integrity: sha512-anKiszvACti2sGy9CirTlNyk7BjjZPiML1jt2ZkTdcvpLU1YH6CXwRAZCA2UmRXnhiIftXQ7+Oh62Ji25W72jA==,
+ }
+ engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 }
+ cpu: [arm]
+ os: [linux]
+
+ "@img/sharp-linux-s390x@0.34.1":
+ resolution:
+ {
+ integrity: sha512-7s0KX2tI9mZI2buRipKIw2X1ufdTeaRgwmRabt5bi9chYfhur+/C1OXg3TKg/eag1W+6CCWLVmSauV1owmRPxA==,
+ }
+ engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 }
+ cpu: [s390x]
+ os: [linux]
+
+ "@img/sharp-linux-x64@0.34.1":
+ resolution:
+ {
+ integrity: sha512-wExv7SH9nmoBW3Wr2gvQopX1k8q2g5V5Iag8Zk6AVENsjwd+3adjwxtp3Dcu2QhOXr8W9NusBU6XcQUohBZ5MA==,
+ }
+ engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 }
+ cpu: [x64]
+ os: [linux]
+
+ "@img/sharp-linuxmusl-arm64@0.34.1":
+ resolution:
+ {
+ integrity: sha512-DfvyxzHxw4WGdPiTF0SOHnm11Xv4aQexvqhRDAoD00MzHekAj9a/jADXeXYCDFH/DzYruwHbXU7uz+H+nWmSOQ==,
+ }
+ engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 }
+ cpu: [arm64]
+ os: [linux]
+
+ "@img/sharp-linuxmusl-x64@0.34.1":
+ resolution:
+ {
+ integrity: sha512-pax/kTR407vNb9qaSIiWVnQplPcGU8LRIJpDT5o8PdAx5aAA7AS3X9PS8Isw1/WfqgQorPotjrZL3Pqh6C5EBg==,
+ }
+ engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 }
+ cpu: [x64]
+ os: [linux]
+
+ "@img/sharp-wasm32@0.34.1":
+ resolution:
+ {
+ integrity: sha512-YDybQnYrLQfEpzGOQe7OKcyLUCML4YOXl428gOOzBgN6Gw0rv8dpsJ7PqTHxBnXnwXr8S1mYFSLSa727tpz0xg==,
+ }
+ engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 }
+ cpu: [wasm32]
+
+ "@img/sharp-win32-ia32@0.34.1":
+ resolution:
+ {
+ integrity: sha512-WKf/NAZITnonBf3U1LfdjoMgNO5JYRSlhovhRhMxXVdvWYveM4kM3L8m35onYIdh75cOMCo1BexgVQcCDzyoWw==,
+ }
+ engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 }
+ cpu: [ia32]
+ os: [win32]
+
+ "@img/sharp-win32-x64@0.34.1":
+ resolution:
+ {
+ integrity: sha512-hw1iIAHpNE8q3uMIRCgGOeDoz9KtFNarFLQclLxr/LK1VBkj8nby18RjFvr6aP7USRYAjTZW6yisnBWMX571Tw==,
+ }
+ engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 }
+ cpu: [x64]
+ os: [win32]
+
+ "@jridgewell/gen-mapping@0.3.8":
+ resolution:
+ {
+ integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==,
+ }
+ 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==,
+ }
+
+ "@modelcontextprotocol/sdk@1.11.0":
+ resolution:
+ {
+ integrity: sha512-k/1pb70eD638anoi0e8wUGAlbMJXyvdV4p62Ko+EZ7eBe1xMx8Uhak1R5DgfoofsK5IBBnRwsYGTaLZl+6/+RQ==,
+ }
+ engines: { node: ">=18" }
+
+ "@mui/core-downloads-tracker@7.0.2":
+ resolution:
+ {
+ integrity: sha512-TfeFU9TgN1N06hyb/pV/63FfO34nijZRMqgHk0TJ3gkl4Fbd+wZ73+ZtOd7jag6hMmzO9HSrBc6Vdn591nhkAg==,
+ }
+
+ "@mui/icons-material@7.0.2":
+ resolution:
+ {
+ integrity: sha512-Bo57PFLOqXOqPNrXjd8AhzH5s6TCsNUQbvnQ0VKZ8D+lIlteqKnrk/O1luMJUc/BXONK7BfIdTdc7qOnXYbMdw==,
+ }
+ engines: { node: ">=14.0.0" }
+ peerDependencies:
+ "@mui/material": ^7.0.2
+ "@types/react": ^17.0.0 || ^18.0.0 || ^19.0.0
+ react: ^17.0.0 || ^18.0.0 || ^19.0.0
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+
+ "@mui/material-nextjs@7.0.2":
+ resolution:
+ {
+ integrity: sha512-hjm0MFSjx7HWbORMRldbwfKrQPHTSMXD6dkCCSTQZ2XX8fkKlnOXNnoXUFzlzFtMKMzs9QOfe3dHooTvnDEfuQ==,
+ }
+ engines: { node: ">=14.0.0" }
+ peerDependencies:
+ "@emotion/cache": ^11.11.0
+ "@emotion/react": ^11.11.4
+ "@emotion/server": ^11.11.0
+ "@types/react": ^17.0.0 || ^18.0.0 || ^19.0.0
+ next: ^13.0.0 || ^14.0.0 || ^15.0.0
+ react: ^17.0.0 || ^18.0.0 || ^19.0.0
+ peerDependenciesMeta:
+ "@emotion/cache":
+ optional: true
+ "@emotion/server":
+ optional: true
+ "@types/react":
+ optional: true
+
+ "@mui/material@7.0.2":
+ resolution:
+ {
+ integrity: sha512-rjJlJ13+3LdLfobRplkXbjIFEIkn6LgpetgU/Cs3Xd8qINCCQK9qXQIjjQ6P0FXFTPFzEVMj0VgBR1mN+FhOcA==,
+ }
+ engines: { node: ">=14.0.0" }
+ peerDependencies:
+ "@emotion/react": ^11.5.0
+ "@emotion/styled": ^11.3.0
+ "@mui/material-pigment-css": ^7.0.2
+ "@types/react": ^17.0.0 || ^18.0.0 || ^19.0.0
+ react: ^17.0.0 || ^18.0.0 || ^19.0.0
+ react-dom: ^17.0.0 || ^18.0.0 || ^19.0.0
+ peerDependenciesMeta:
+ "@emotion/react":
+ optional: true
+ "@emotion/styled":
+ optional: true
+ "@mui/material-pigment-css":
+ optional: true
+ "@types/react":
+ optional: true
+
+ "@mui/private-theming@7.0.2":
+ resolution:
+ {
+ integrity: sha512-6lt8heDC9wN8YaRqEdhqnm0cFCv08AMf4IlttFvOVn7ZdKd81PNpD/rEtPGLLwQAFyyKSxBG4/2XCgpbcdNKiA==,
+ }
+ engines: { node: ">=14.0.0" }
+ peerDependencies:
+ "@types/react": ^17.0.0 || ^18.0.0 || ^19.0.0
+ react: ^17.0.0 || ^18.0.0 || ^19.0.0
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+
+ "@mui/styled-engine@7.0.2":
+ resolution:
+ {
+ integrity: sha512-11Bt4YdHGlh7sB8P75S9mRCUxTlgv7HGbr0UKz6m6Z9KLeiw1Bm9y/t3iqLLVMvSHYB6zL8X8X+LmfTE++gyBw==,
+ }
+ engines: { node: ">=14.0.0" }
+ peerDependencies:
+ "@emotion/react": ^11.4.1
+ "@emotion/styled": ^11.3.0
+ react: ^17.0.0 || ^18.0.0 || ^19.0.0
+ peerDependenciesMeta:
+ "@emotion/react":
+ optional: true
+ "@emotion/styled":
+ optional: true
+
+ "@mui/system@7.0.2":
+ resolution:
+ {
+ integrity: sha512-yFUraAWYWuKIISPPEVPSQ1NLeqmTT4qiQ+ktmyS8LO/KwHxB+NNVOacEZaIofh5x1NxY8rzphvU5X2heRZ/RDA==,
+ }
+ engines: { node: ">=14.0.0" }
+ peerDependencies:
+ "@emotion/react": ^11.5.0
+ "@emotion/styled": ^11.3.0
+ "@types/react": ^17.0.0 || ^18.0.0 || ^19.0.0
+ react: ^17.0.0 || ^18.0.0 || ^19.0.0
+ peerDependenciesMeta:
+ "@emotion/react":
+ optional: true
+ "@emotion/styled":
+ optional: true
+ "@types/react":
+ optional: true
+
+ "@mui/types@7.4.1":
+ resolution:
+ {
+ integrity: sha512-gUL8IIAI52CRXP/MixT1tJKt3SI6tVv4U/9soFsTtAsHzaJQptZ42ffdHZV3niX1ei0aUgMvOxBBN0KYqdG39g==,
+ }
+ peerDependencies:
+ "@types/react": ^17.0.0 || ^18.0.0 || ^19.0.0
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+
+ "@mui/utils@7.0.2":
+ resolution:
+ {
+ integrity: sha512-72gcuQjPzhj/MLmPHLCgZjy2VjOH4KniR/4qRtXTTXIEwbkgcN+Y5W/rC90rWtMmZbjt9svZev/z+QHUI4j74w==,
+ }
+ engines: { node: ">=14.0.0" }
+ peerDependencies:
+ "@types/react": ^17.0.0 || ^18.0.0 || ^19.0.0
+ react: ^17.0.0 || ^18.0.0 || ^19.0.0
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+
+ "@mui/x-date-pickers@8.2.0":
+ resolution:
+ {
+ integrity: sha512-nkFzKkaDr4a9uto4pSOsNBMh+M2YQWiW9iYyBDOi5wOa983e2xMeb7zFjHGJ0xaycg1kfxNcbvJd7tm4Ub+RhA==,
+ }
+ engines: { node: ">=14.0.0" }
+ peerDependencies:
+ "@emotion/react": ^11.9.0
+ "@emotion/styled": ^11.8.1
+ "@mui/material": ^5.15.14 || ^6.0.0 || ^7.0.0
+ "@mui/system": ^5.15.14 || ^6.0.0 || ^7.0.0
+ date-fns: ^2.25.0 || ^3.2.0 || ^4.0.0
+ date-fns-jalali: ^2.13.0-0 || ^3.2.0-0 || ^4.0.0-0
+ dayjs: ^1.10.7
+ luxon: ^3.0.2
+ moment: ^2.29.4
+ moment-hijri: ^2.1.2 || ^3.0.0
+ moment-jalaali: ^0.7.4 || ^0.8.0 || ^0.9.0 || ^0.10.0
+ react: ^17.0.0 || ^18.0.0 || ^19.0.0
+ react-dom: ^17.0.0 || ^18.0.0 || ^19.0.0
+ peerDependenciesMeta:
+ "@emotion/react":
+ optional: true
+ "@emotion/styled":
+ optional: true
+ date-fns:
+ optional: true
+ date-fns-jalali:
+ optional: true
+ dayjs:
+ optional: true
+ luxon:
+ optional: true
+ moment:
+ optional: true
+ moment-hijri:
+ optional: true
+ moment-jalaali:
+ optional: true
+
+ "@mui/x-internals@8.2.0":
+ resolution:
+ {
+ integrity: sha512-qV4Qr+m4sAPBSuqu8/Ofi5m+nMMvIybGno6cp757bHSmwxkqrn5SKaGyFnH5kB58fOhYA9hG1UivFp7mO1dE4A==,
+ }
+ engines: { node: ">=14.0.0" }
+ peerDependencies:
+ react: ^17.0.0 || ^18.0.0 || ^19.0.0
+
+ "@mui/x-tree-view@8.2.0":
+ resolution:
+ {
+ integrity: sha512-58ZRFXsUfJaqZ/1kiXaAUILfxQOZHZErZbApK3dj0O7jGHgj4mLdjetwlTmwHjZiEO//ryckaDxl4K83sntANQ==,
+ }
+ engines: { node: ">=14.0.0" }
+ peerDependencies:
+ "@emotion/react": ^11.9.0
+ "@emotion/styled": ^11.8.1
+ "@mui/material": ^5.15.14 || ^6.0.0 || ^7.0.0
+ "@mui/system": ^5.15.14 || ^6.0.0 || ^7.0.0
+ react: ^17.0.0 || ^18.0.0 || ^19.0.0
+ react-dom: ^17.0.0 || ^18.0.0 || ^19.0.0
+ peerDependenciesMeta:
+ "@emotion/react":
+ optional: true
+ "@emotion/styled":
+ optional: true
+
+ "@napi-rs/wasm-runtime@0.2.9":
+ resolution:
+ {
+ integrity: sha512-OKRBiajrrxB9ATokgEQoG87Z25c67pCpYcCwmXYX8PBftC9pBfN18gnm/fh1wurSLEKIAt+QRFLFCQISrb66Jg==,
+ }
+
+ "@next/env@15.3.1":
+ resolution:
+ {
+ integrity: sha512-cwK27QdzrMblHSn9DZRV+DQscHXRuJv6MydlJRpFSqJWZrTYMLzKDeyueJNN9MGd8NNiUKzDQADAf+dMLXX7YQ==,
+ }
+
+ "@next/eslint-plugin-next@15.3.1":
+ resolution:
+ {
+ integrity: sha512-oEs4dsfM6iyER3jTzMm4kDSbrQJq8wZw5fmT6fg2V3SMo+kgG+cShzLfEV20senZzv8VF+puNLheiGPlBGsv2A==,
+ }
+
+ "@next/swc-darwin-arm64@15.3.1":
+ resolution:
+ {
+ integrity: sha512-hjDw4f4/nla+6wysBL07z52Gs55Gttp5Bsk5/8AncQLJoisvTBP0pRIBK/B16/KqQyH+uN4Ww8KkcAqJODYH3w==,
+ }
+ engines: { node: ">= 10" }
+ cpu: [arm64]
+ os: [darwin]
+
+ "@next/swc-darwin-x64@15.3.1":
+ resolution:
+ {
+ integrity: sha512-q+aw+cJ2ooVYdCEqZVk+T4Ni10jF6Fo5DfpEV51OupMaV5XL6pf3GCzrk6kSSZBsMKZtVC1Zm/xaNBFpA6bJ2g==,
+ }
+ engines: { node: ">= 10" }
+ cpu: [x64]
+ os: [darwin]
+
+ "@next/swc-linux-arm64-gnu@15.3.1":
+ resolution:
+ {
+ integrity: sha512-wBQ+jGUI3N0QZyWmmvRHjXjTWFy8o+zPFLSOyAyGFI94oJi+kK/LIZFJXeykvgXUk1NLDAEFDZw/NVINhdk9FQ==,
+ }
+ engines: { node: ">= 10" }
+ cpu: [arm64]
+ os: [linux]
+
+ "@next/swc-linux-arm64-musl@15.3.1":
+ resolution:
+ {
+ integrity: sha512-IIxXEXRti/AulO9lWRHiCpUUR8AR/ZYLPALgiIg/9ENzMzLn3l0NSxVdva7R/VDcuSEBo0eGVCe3evSIHNz0Hg==,
+ }
+ engines: { node: ">= 10" }
+ cpu: [arm64]
+ os: [linux]
+
+ "@next/swc-linux-x64-gnu@15.3.1":
+ resolution:
+ {
+ integrity: sha512-bfI4AMhySJbyXQIKH5rmLJ5/BP7bPwuxauTvVEiJ/ADoddaA9fgyNNCcsbu9SlqfHDoZmfI6g2EjzLwbsVTr5A==,
+ }
+ engines: { node: ">= 10" }
+ cpu: [x64]
+ os: [linux]
+
+ "@next/swc-linux-x64-musl@15.3.1":
+ resolution:
+ {
+ integrity: sha512-FeAbR7FYMWR+Z+M5iSGytVryKHiAsc0x3Nc3J+FD5NVbD5Mqz7fTSy8CYliXinn7T26nDMbpExRUI/4ekTvoiA==,
+ }
+ engines: { node: ">= 10" }
+ cpu: [x64]
+ os: [linux]
+
+ "@next/swc-win32-arm64-msvc@15.3.1":
+ resolution:
+ {
+ integrity: sha512-yP7FueWjphQEPpJQ2oKmshk/ppOt+0/bB8JC8svPUZNy0Pi3KbPx2Llkzv1p8CoQa+D2wknINlJpHf3vtChVBw==,
+ }
+ engines: { node: ">= 10" }
+ cpu: [arm64]
+ os: [win32]
+
+ "@next/swc-win32-x64-msvc@15.3.1":
+ resolution:
+ {
+ integrity: sha512-3PMvF2zRJAifcRNni9uMk/gulWfWS+qVI/pagd+4yLF5bcXPZPPH2xlYRYOsUjmCJOXSTAC2PjRzbhsRzR2fDQ==,
+ }
+ engines: { node: ">= 10" }
+ cpu: [x64]
+ os: [win32]
+
+ "@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" }
+
+ "@nolyfill/is-core-module@1.0.39":
+ resolution:
+ {
+ integrity: sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==,
+ }
+ engines: { node: ">=12.4.0" }
+
+ "@parcel/watcher-android-arm64@2.5.1":
+ resolution:
+ {
+ integrity: sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==,
+ }
+ engines: { node: ">= 10.0.0" }
+ cpu: [arm64]
+ os: [android]
+
+ "@parcel/watcher-darwin-arm64@2.5.1":
+ resolution:
+ {
+ integrity: sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==,
+ }
+ engines: { node: ">= 10.0.0" }
+ cpu: [arm64]
+ os: [darwin]
+
+ "@parcel/watcher-darwin-x64@2.5.1":
+ resolution:
+ {
+ integrity: sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==,
+ }
+ engines: { node: ">= 10.0.0" }
+ cpu: [x64]
+ os: [darwin]
+
+ "@parcel/watcher-freebsd-x64@2.5.1":
+ resolution:
+ {
+ integrity: sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==,
+ }
+ engines: { node: ">= 10.0.0" }
+ cpu: [x64]
+ os: [freebsd]
+
+ "@parcel/watcher-linux-arm-glibc@2.5.1":
+ resolution:
+ {
+ integrity: sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==,
+ }
+ engines: { node: ">= 10.0.0" }
+ cpu: [arm]
+ os: [linux]
+
+ "@parcel/watcher-linux-arm-musl@2.5.1":
+ resolution:
+ {
+ integrity: sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==,
+ }
+ engines: { node: ">= 10.0.0" }
+ cpu: [arm]
+ os: [linux]
+
+ "@parcel/watcher-linux-arm64-glibc@2.5.1":
+ resolution:
+ {
+ integrity: sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==,
+ }
+ engines: { node: ">= 10.0.0" }
+ cpu: [arm64]
+ os: [linux]
+
+ "@parcel/watcher-linux-arm64-musl@2.5.1":
+ resolution:
+ {
+ integrity: sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==,
+ }
+ engines: { node: ">= 10.0.0" }
+ cpu: [arm64]
+ os: [linux]
+
+ "@parcel/watcher-linux-x64-glibc@2.5.1":
+ resolution:
+ {
+ integrity: sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==,
+ }
+ engines: { node: ">= 10.0.0" }
+ cpu: [x64]
+ os: [linux]
+
+ "@parcel/watcher-linux-x64-musl@2.5.1":
+ resolution:
+ {
+ integrity: sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==,
+ }
+ engines: { node: ">= 10.0.0" }
+ cpu: [x64]
+ os: [linux]
+
+ "@parcel/watcher-win32-arm64@2.5.1":
+ resolution:
+ {
+ integrity: sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==,
+ }
+ engines: { node: ">= 10.0.0" }
+ cpu: [arm64]
+ os: [win32]
+
+ "@parcel/watcher-win32-ia32@2.5.1":
+ resolution:
+ {
+ integrity: sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==,
+ }
+ engines: { node: ">= 10.0.0" }
+ cpu: [ia32]
+ os: [win32]
+
+ "@parcel/watcher-win32-x64@2.5.1":
+ resolution:
+ {
+ integrity: sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==,
+ }
+ engines: { node: ">= 10.0.0" }
+ cpu: [x64]
+ os: [win32]
+
+ "@parcel/watcher@2.5.1":
+ resolution:
+ {
+ integrity: sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==,
+ }
+ engines: { node: ">= 10.0.0" }
+
+ "@popperjs/core@2.11.8":
+ resolution:
+ {
+ integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==,
+ }
+
+ "@rtsao/scc@1.1.0":
+ resolution:
+ {
+ integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==,
+ }
+
+ "@rushstack/eslint-patch@1.11.0":
+ resolution:
+ {
+ integrity: sha512-zxnHvoMQVqewTJr/W4pKjF0bMGiKJv1WX7bSrkl46Hg0QjESbzBROWK0Wg4RphzSOS5Jiy7eFimmM3UgMrMZbQ==,
+ }
+
+ "@socket.io/component-emitter@3.1.2":
+ resolution:
+ {
+ integrity: sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==,
+ }
+
+ "@standard-schema/utils@0.3.0":
+ resolution:
+ {
+ integrity: sha512-e7Mew686owMaPJVNNLs55PUvgz371nKgwsc4vxE49zsODpJEnxgxRo2y/OKrqueavXgZNMDVj3DdHFlaSAeU8g==,
+ }
+
+ "@swc/counter@0.1.3":
+ resolution:
+ {
+ integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==,
+ }
+
+ "@swc/helpers@0.5.15":
+ resolution:
+ {
+ integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==,
+ }
+
+ "@tanstack/match-sorter-utils@8.19.4":
+ resolution:
+ {
+ integrity: sha512-Wo1iKt2b9OT7d+YGhvEPD3DXvPv2etTusIMhMUoG7fbhmxcXCtIjJDEygy91Y2JFlwGyjqiBPRozme7UD8hoqg==,
+ }
+ engines: { node: ">=12" }
+
+ "@tanstack/react-table@8.20.6":
+ resolution:
+ {
+ integrity: sha512-w0jluT718MrOKthRcr2xsjqzx+oEM7B7s/XXyfs19ll++hlId3fjTm+B2zrR3ijpANpkzBAr15j1XGVOMxpggQ==,
+ }
+ engines: { node: ">=12" }
+ peerDependencies:
+ react: ">=16.8"
+ react-dom: ">=16.8"
+
+ "@tanstack/react-virtual@3.11.2":
+ resolution:
+ {
+ integrity: sha512-OuFzMXPF4+xZgx8UzJha0AieuMihhhaWG0tCqpp6tDzlFwOmNBPYMuLOtMJ1Tr4pXLHmgjcWhG6RlknY2oNTdQ==,
+ }
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
+ react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
+
+ "@tanstack/table-core@8.20.5":
+ resolution:
+ {
+ integrity: sha512-P9dF7XbibHph2PFRz8gfBKEXEY/HJPOhym8CHmjF8y3q5mWpKx9xtZapXQUWCgkqvsK0R46Azuz+VaxD4Xl+Tg==,
+ }
+ engines: { node: ">=12" }
+
+ "@tanstack/virtual-core@3.11.2":
+ resolution:
+ {
+ integrity: sha512-vTtpNt7mKCiZ1pwU9hfKPhpdVO2sVzFQsxoVBGtOSHxlrRRzYr8iQ2TlwbAcRYCcEiZ9ECAM8kBzH0v2+VzfKw==,
+ }
+
+ "@tybys/wasm-util@0.9.0":
+ resolution:
+ {
+ integrity: sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==,
+ }
+
+ "@types/estree@1.0.7":
+ resolution:
+ {
+ integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==,
+ }
+
+ "@types/json-schema@7.0.15":
+ resolution:
+ {
+ integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==,
+ }
+
+ "@types/json5@0.0.29":
+ resolution:
+ {
+ integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==,
+ }
+
+ "@types/parse-json@4.0.2":
+ resolution:
+ {
+ integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==,
+ }
+
+ "@types/prop-types@15.7.14":
+ resolution:
+ {
+ integrity: sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==,
+ }
+
+ "@types/react-transition-group@4.4.12":
+ resolution:
+ {
+ integrity: sha512-8TV6R3h2j7a91c+1DXdJi3Syo69zzIZbz7Lg5tORM5LEJG7X/E6a1V3drRyBRZq7/utz7A+c4OgYLiLcYGHG6w==,
+ }
+ peerDependencies:
+ "@types/react": "*"
+
+ "@types/react@19.1.2":
+ resolution:
+ {
+ integrity: sha512-oxLPMytKchWGbnQM9O7D67uPa9paTNxO7jVoNMXgkkErULBPhPARCfkKL9ytcIJJRGjbsVwW4ugJzyFFvm/Tiw==,
+ }
+
+ "@typescript-eslint/eslint-plugin@8.31.1":
+ resolution:
+ {
+ integrity: sha512-oUlH4h1ABavI4F0Xnl8/fOtML/eu8nI2A1nYd+f+55XI0BLu+RIqKoCiZKNo6DtqZBEQm5aNKA20G3Z5w3R6GQ==,
+ }
+ engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
+ peerDependencies:
+ "@typescript-eslint/parser": ^8.0.0 || ^8.0.0-alpha.0
+ eslint: ^8.57.0 || ^9.0.0
+ typescript: ">=4.8.4 <5.9.0"
+
+ "@typescript-eslint/parser@8.31.1":
+ resolution:
+ {
+ integrity: sha512-oU/OtYVydhXnumd0BobL9rkJg7wFJ9bFFPmSmB/bf/XWN85hlViji59ko6bSKBXyseT9V8l+CN1nwmlbiN0G7Q==,
+ }
+ engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
+ peerDependencies:
+ eslint: ^8.57.0 || ^9.0.0
+ typescript: ">=4.8.4 <5.9.0"
+
+ "@typescript-eslint/scope-manager@8.31.1":
+ resolution:
+ {
+ integrity: sha512-BMNLOElPxrtNQMIsFHE+3P0Yf1z0dJqV9zLdDxN/xLlWMlXK/ApEsVEKzpizg9oal8bAT5Sc7+ocal7AC1HCVw==,
+ }
+ engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
+
+ "@typescript-eslint/type-utils@8.31.1":
+ resolution:
+ {
+ integrity: sha512-fNaT/m9n0+dpSp8G/iOQ05GoHYXbxw81x+yvr7TArTuZuCA6VVKbqWYVZrV5dVagpDTtj/O8k5HBEE/p/HM5LA==,
+ }
+ engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
+ peerDependencies:
+ eslint: ^8.57.0 || ^9.0.0
+ typescript: ">=4.8.4 <5.9.0"
+
+ "@typescript-eslint/types@8.31.1":
+ resolution:
+ {
+ integrity: sha512-SfepaEFUDQYRoA70DD9GtytljBePSj17qPxFHA/h3eg6lPTqGJ5mWOtbXCk1YrVU1cTJRd14nhaXWFu0l2troQ==,
+ }
+ engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
+
+ "@typescript-eslint/typescript-estree@8.31.1":
+ resolution:
+ {
+ integrity: sha512-kaA0ueLe2v7KunYOyWYtlf/QhhZb7+qh4Yw6Ni5kgukMIG+iP773tjgBiLWIXYumWCwEq3nLW+TUywEp8uEeag==,
+ }
+ engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
+ peerDependencies:
+ typescript: ">=4.8.4 <5.9.0"
+
+ "@typescript-eslint/utils@8.31.1":
+ resolution:
+ {
+ integrity: sha512-2DSI4SNfF5T4oRveQ4nUrSjUqjMND0nLq9rEkz0gfGr3tg0S5KB6DhwR+WZPCjzkZl3cH+4x2ce3EsL50FubjQ==,
+ }
+ engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
+ peerDependencies:
+ eslint: ^8.57.0 || ^9.0.0
+ typescript: ">=4.8.4 <5.9.0"
+
+ "@typescript-eslint/visitor-keys@8.31.1":
+ resolution:
+ {
+ integrity: sha512-I+/rgqOVBn6f0o7NDTmAPWWC6NuqhV174lfYvAm9fUaWeiefLdux9/YI3/nLugEn9L8fcSi0XmpKi/r5u0nmpw==,
+ }
+ engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
+
+ "@unrs/resolver-binding-darwin-arm64@1.7.2":
+ resolution:
+ {
+ integrity: sha512-vxtBno4xvowwNmO/ASL0Y45TpHqmNkAaDtz4Jqb+clmcVSSl8XCG/PNFFkGsXXXS6AMjP+ja/TtNCFFa1QwLRg==,
+ }
+ cpu: [arm64]
+ os: [darwin]
+
+ "@unrs/resolver-binding-darwin-x64@1.7.2":
+ resolution:
+ {
+ integrity: sha512-qhVa8ozu92C23Hsmv0BF4+5Dyyd5STT1FolV4whNgbY6mj3kA0qsrGPe35zNR3wAN7eFict3s4Rc2dDTPBTuFQ==,
+ }
+ cpu: [x64]
+ os: [darwin]
+
+ "@unrs/resolver-binding-freebsd-x64@1.7.2":
+ resolution:
+ {
+ integrity: sha512-zKKdm2uMXqLFX6Ac7K5ElnnG5VIXbDlFWzg4WJ8CGUedJryM5A3cTgHuGMw1+P5ziV8CRhnSEgOnurTI4vpHpg==,
+ }
+ cpu: [x64]
+ os: [freebsd]
+
+ "@unrs/resolver-binding-linux-arm-gnueabihf@1.7.2":
+ resolution:
+ {
+ integrity: sha512-8N1z1TbPnHH+iDS/42GJ0bMPLiGK+cUqOhNbMKtWJ4oFGzqSJk/zoXFzcQkgtI63qMcUI7wW1tq2usZQSb2jxw==,
+ }
+ cpu: [arm]
+ os: [linux]
+
+ "@unrs/resolver-binding-linux-arm-musleabihf@1.7.2":
+ resolution:
+ {
+ integrity: sha512-tjYzI9LcAXR9MYd9rO45m1s0B/6bJNuZ6jeOxo1pq1K6OBuRMMmfyvJYval3s9FPPGmrldYA3mi4gWDlWuTFGA==,
+ }
+ cpu: [arm]
+ os: [linux]
+
+ "@unrs/resolver-binding-linux-arm64-gnu@1.7.2":
+ resolution:
+ {
+ integrity: sha512-jon9M7DKRLGZ9VYSkFMflvNqu9hDtOCEnO2QAryFWgT6o6AXU8du56V7YqnaLKr6rAbZBWYsYpikF226v423QA==,
+ }
+ cpu: [arm64]
+ os: [linux]
+
+ "@unrs/resolver-binding-linux-arm64-musl@1.7.2":
+ resolution:
+ {
+ integrity: sha512-c8Cg4/h+kQ63pL43wBNaVMmOjXI/X62wQmru51qjfTvI7kmCy5uHTJvK/9LrF0G8Jdx8r34d019P1DVJmhXQpA==,
+ }
+ cpu: [arm64]
+ os: [linux]
+
+ "@unrs/resolver-binding-linux-ppc64-gnu@1.7.2":
+ resolution:
+ {
+ integrity: sha512-A+lcwRFyrjeJmv3JJvhz5NbcCkLQL6Mk16kHTNm6/aGNc4FwPHPE4DR9DwuCvCnVHvF5IAd9U4VIs/VvVir5lg==,
+ }
+ cpu: [ppc64]
+ os: [linux]
+
+ "@unrs/resolver-binding-linux-riscv64-gnu@1.7.2":
+ resolution:
+ {
+ integrity: sha512-hQQ4TJQrSQW8JlPm7tRpXN8OCNP9ez7PajJNjRD1ZTHQAy685OYqPrKjfaMw/8LiHCt8AZ74rfUVHP9vn0N69Q==,
+ }
+ cpu: [riscv64]
+ os: [linux]
+
+ "@unrs/resolver-binding-linux-riscv64-musl@1.7.2":
+ resolution:
+ {
+ integrity: sha512-NoAGbiqrxtY8kVooZ24i70CjLDlUFI7nDj3I9y54U94p+3kPxwd2L692YsdLa+cqQ0VoqMWoehDFp21PKRUoIQ==,
+ }
+ cpu: [riscv64]
+ os: [linux]
+
+ "@unrs/resolver-binding-linux-s390x-gnu@1.7.2":
+ resolution:
+ {
+ integrity: sha512-KaZByo8xuQZbUhhreBTW+yUnOIHUsv04P8lKjQ5otiGoSJ17ISGYArc+4vKdLEpGaLbemGzr4ZeUbYQQsLWFjA==,
+ }
+ cpu: [s390x]
+ os: [linux]
+
+ "@unrs/resolver-binding-linux-x64-gnu@1.7.2":
+ resolution:
+ {
+ integrity: sha512-dEidzJDubxxhUCBJ/SHSMJD/9q7JkyfBMT77Px1npl4xpg9t0POLvnWywSk66BgZS/b2Hy9Y1yFaoMTFJUe9yg==,
+ }
+ cpu: [x64]
+ os: [linux]
+
+ "@unrs/resolver-binding-linux-x64-musl@1.7.2":
+ resolution:
+ {
+ integrity: sha512-RvP+Ux3wDjmnZDT4XWFfNBRVG0fMsc+yVzNFUqOflnDfZ9OYujv6nkh+GOr+watwrW4wdp6ASfG/e7bkDradsw==,
+ }
+ cpu: [x64]
+ os: [linux]
+
+ "@unrs/resolver-binding-wasm32-wasi@1.7.2":
+ resolution:
+ {
+ integrity: sha512-y797JBmO9IsvXVRCKDXOxjyAE4+CcZpla2GSoBQ33TVb3ILXuFnMrbR/QQZoauBYeOFuu4w3ifWLw52sdHGz6g==,
+ }
+ engines: { node: ">=14.0.0" }
+ cpu: [wasm32]
+
+ "@unrs/resolver-binding-win32-arm64-msvc@1.7.2":
+ resolution:
+ {
+ integrity: sha512-gtYTh4/VREVSLA+gHrfbWxaMO/00y+34htY7XpioBTy56YN2eBjkPrY1ML1Zys89X3RJDKVaogzwxlM1qU7egg==,
+ }
+ cpu: [arm64]
+ os: [win32]
+
+ "@unrs/resolver-binding-win32-ia32-msvc@1.7.2":
+ resolution:
+ {
+ integrity: sha512-Ywv20XHvHTDRQs12jd3MY8X5C8KLjDbg/jyaal/QLKx3fAShhJyD4blEANInsjxW3P7isHx1Blt56iUDDJO3jg==,
+ }
+ cpu: [ia32]
+ os: [win32]
+
+ "@unrs/resolver-binding-win32-x64-msvc@1.7.2":
+ resolution:
+ {
+ integrity: sha512-friS8NEQfHaDbkThxopGk+LuE5v3iY0StruifjQEt7SLbA46OnfgMO15sOTkbpJkol6RB+1l1TYPXh0sCddpvA==,
+ }
+ cpu: [x64]
+ os: [win32]
+
+ accepts@2.0.0:
+ resolution:
+ {
+ integrity: sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==,
+ }
+ engines: { node: ">= 0.6" }
+
+ acorn-jsx@5.3.2:
+ resolution:
+ {
+ integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==,
+ }
+ peerDependencies:
+ acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
+
+ acorn@8.14.1:
+ resolution:
+ {
+ integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==,
+ }
+ engines: { node: ">=0.4.0" }
+ hasBin: true
+
+ ajv@6.12.6:
+ resolution:
+ {
+ integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==,
+ }
+
+ ansi-escapes@4.3.2:
+ resolution:
+ {
+ integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==,
+ }
+ engines: { node: ">=8" }
+
+ ansi-regex@5.0.1:
+ resolution:
+ {
+ integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==,
+ }
+ engines: { node: ">=8" }
+
+ ansi-styles@4.3.0:
+ resolution:
+ {
+ integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==,
+ }
+ engines: { node: ">=8" }
+
+ argparse@2.0.1:
+ resolution:
+ {
+ integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==,
+ }
+
+ aria-query@5.3.2:
+ resolution:
+ {
+ integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==,
+ }
+ engines: { node: ">= 0.4" }
+
+ array-buffer-byte-length@1.0.2:
+ resolution:
+ {
+ integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==,
+ }
+ 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.findlastindex@1.2.6:
+ resolution:
+ {
+ integrity: sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==,
+ }
+ engines: { node: ">= 0.4" }
+
+ array.prototype.flat@1.3.3:
+ resolution:
+ {
+ integrity: sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==,
+ }
+ engines: { node: ">= 0.4" }
+
+ array.prototype.flatmap@1.3.3:
+ resolution:
+ {
+ integrity: sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==,
+ }
+ 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.4:
+ resolution:
+ {
+ integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==,
+ }
+ engines: { node: ">= 0.4" }
+
+ ast-types-flow@0.0.8:
+ resolution:
+ {
+ integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==,
+ }
+
+ async-function@1.0.0:
+ resolution:
+ {
+ integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==,
+ }
+ 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" }
+
+ axe-core@4.10.3:
+ resolution:
+ {
+ integrity: sha512-Xm7bpRXnDSX2YE2YFfBk2FnF0ep6tmG7xPh8iHee8MIcrgq762Nkce856dYtJYLkuIoYZvGfTs/PbZhideTcEg==,
+ }
+ engines: { node: ">=4" }
+
+ axios@1.9.0:
+ resolution:
+ {
+ integrity: sha512-re4CqKTJaURpzbLHtIi6XpDv20/CnpXOtjRY5/CU32L8gU8ek9UIivcfvSWvmKEngmVbrUtPpdDwWDWL7DNHvg==,
+ }
+
+ axobject-query@4.1.0:
+ resolution:
+ {
+ integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==,
+ }
+ engines: { node: ">= 0.4" }
+
+ babel-plugin-macros@3.1.0:
+ resolution:
+ {
+ integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==,
+ }
+ engines: { node: ">=10", npm: ">=6" }
+
+ balanced-match@1.0.2:
+ resolution:
+ {
+ integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==,
+ }
+
+ base64-js@1.5.1:
+ resolution:
+ {
+ integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==,
+ }
+
+ bl@4.1.0:
+ resolution:
+ {
+ integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==,
+ }
+
+ body-parser@2.2.0:
+ resolution:
+ {
+ integrity: sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==,
+ }
+ engines: { node: ">=18" }
+
+ brace-expansion@1.1.11:
+ resolution:
+ {
+ integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==,
+ }
+
+ brace-expansion@2.0.1:
+ resolution:
+ {
+ integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==,
+ }
+
+ braces@3.0.3:
+ resolution:
+ {
+ integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==,
+ }
+ engines: { node: ">=8" }
+
+ buffer@5.7.1:
+ resolution:
+ {
+ integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==,
+ }
+
+ busboy@1.6.0:
+ resolution:
+ {
+ integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==,
+ }
+ engines: { node: ">=10.16.0" }
+
+ bytes@3.1.2:
+ resolution:
+ {
+ integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==,
+ }
+ engines: { node: ">= 0.8" }
+
+ call-bind-apply-helpers@1.0.2:
+ resolution:
+ {
+ integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==,
+ }
+ engines: { node: ">= 0.4" }
+
+ call-bind@1.0.8:
+ resolution:
+ {
+ integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==,
+ }
+ engines: { node: ">= 0.4" }
+
+ call-bound@1.0.4:
+ resolution:
+ {
+ integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==,
+ }
+ engines: { node: ">= 0.4" }
+
+ callsites@3.1.0:
+ resolution:
+ {
+ integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==,
+ }
+ engines: { node: ">=6" }
+
+ caniuse-lite@1.0.30001717:
+ resolution:
+ {
+ integrity: sha512-auPpttCq6BDEG8ZAuHJIplGw6GODhjw+/11e7IjpnYCxZcW/ONgPs0KVBJ0d1bY3e2+7PRe5RCLyP+PfwVgkYw==,
+ }
+
+ chalk@4.1.2:
+ resolution:
+ {
+ integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==,
+ }
+ engines: { node: ">=10" }
+
+ chardet@0.7.0:
+ resolution:
+ {
+ integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==,
+ }
+
+ chokidar@4.0.3:
+ resolution:
+ {
+ integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==,
+ }
+ engines: { node: ">= 14.16.0" }
+
+ cli-cursor@3.1.0:
+ resolution:
+ {
+ integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==,
+ }
+ engines: { node: ">=8" }
+
+ cli-spinners@2.9.2:
+ resolution:
+ {
+ integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==,
+ }
+ engines: { node: ">=6" }
+
+ cli-width@3.0.0:
+ resolution:
+ {
+ integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==,
+ }
+ engines: { node: ">= 10" }
+
+ client-only@0.0.1:
+ resolution:
+ {
+ integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==,
+ }
+
+ clone@1.0.4:
+ resolution:
+ {
+ integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==,
+ }
+ engines: { node: ">=0.8" }
+
+ clsx@2.1.1:
+ resolution:
+ {
+ integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==,
+ }
+ engines: { node: ">=6" }
+
+ color-convert@2.0.1:
+ resolution:
+ {
+ integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==,
+ }
+ engines: { node: ">=7.0.0" }
+
+ color-name@1.1.4:
+ resolution:
+ {
+ integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==,
+ }
+
+ color-string@1.9.1:
+ resolution:
+ {
+ integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==,
+ }
+
+ color@4.2.3:
+ resolution:
+ {
+ integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==,
+ }
+ engines: { node: ">=12.5.0" }
+
+ combined-stream@1.0.8:
+ resolution:
+ {
+ integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==,
+ }
+ engines: { node: ">= 0.8" }
+
+ commander@7.2.0:
+ resolution:
+ {
+ integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==,
+ }
+ engines: { node: ">= 10" }
+
+ concat-map@0.0.1:
+ resolution:
+ {
+ integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==,
+ }
+
+ content-disposition@1.0.0:
+ resolution:
+ {
+ integrity: sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==,
+ }
+ engines: { node: ">= 0.6" }
+
+ content-type@1.0.5:
+ resolution:
+ {
+ integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==,
+ }
+ engines: { node: ">= 0.6" }
+
+ convert-source-map@1.9.0:
+ resolution:
+ {
+ integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==,
+ }
+
+ cookie-signature@1.2.2:
+ resolution:
+ {
+ integrity: sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==,
+ }
+ engines: { node: ">=6.6.0" }
+
+ cookie@0.7.2:
+ resolution:
+ {
+ integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==,
+ }
+ engines: { node: ">= 0.6" }
+
+ cors@2.8.5:
+ resolution:
+ {
+ integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==,
+ }
+ engines: { node: ">= 0.10" }
+
+ cosmiconfig@7.1.0:
+ resolution:
+ {
+ integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==,
+ }
+ engines: { node: ">=10" }
+
+ cross-spawn@7.0.6:
+ resolution:
+ {
+ integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==,
+ }
+ engines: { node: ">= 8" }
+
+ cssjanus@2.3.0:
+ resolution:
+ {
+ integrity: sha512-ZZXXn51SnxRxAZ6fdY7mBDPmA4OZd83q/J9Gdqz3YmE9TUq+9tZl+tdOnCi7PpNygI6PEkehj9rgifv5+W8a5A==,
+ }
+ engines: { node: ">=10.0.0" }
+
+ csstype@3.1.3:
+ resolution:
+ {
+ integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==,
+ }
+
+ damerau-levenshtein@1.0.8:
+ resolution:
+ {
+ integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==,
+ }
+
+ data-view-buffer@1.0.2:
+ resolution:
+ {
+ integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==,
+ }
+ engines: { node: ">= 0.4" }
+
+ data-view-byte-length@1.0.2:
+ resolution:
+ {
+ integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==,
+ }
+ engines: { node: ">= 0.4" }
+
+ data-view-byte-offset@1.0.1:
+ resolution:
+ {
+ integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==,
+ }
+ engines: { node: ">= 0.4" }
+
+ date-fns-jalali@4.1.0-0:
+ resolution:
+ {
+ integrity: sha512-hTIP/z+t+qKwBDcmmsnmjWTduxCg+5KfdqWQvb2X/8C9+knYY6epN/pfxdDuyVlSVeFz0sM5eEfwIUQ70U4ckg==,
+ }
+
+ debug@3.2.7:
+ resolution:
+ {
+ integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==,
+ }
+ peerDependencies:
+ supports-color: "*"
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+
+ debug@4.3.7:
+ resolution:
+ {
+ integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==,
+ }
+ engines: { node: ">=6.0" }
+ peerDependencies:
+ supports-color: "*"
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+
+ debug@4.4.0:
+ resolution:
+ {
+ integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==,
+ }
+ 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==,
+ }
+
+ defaults@1.0.4:
+ resolution:
+ {
+ integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==,
+ }
+
+ 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" }
+
+ depd@2.0.0:
+ resolution:
+ {
+ integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==,
+ }
+ engines: { node: ">= 0.8" }
+
+ dequal@2.0.3:
+ resolution:
+ {
+ integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==,
+ }
+ engines: { node: ">=6" }
+
+ detect-libc@1.0.3:
+ resolution:
+ {
+ integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==,
+ }
+ engines: { node: ">=0.10" }
+ hasBin: true
+
+ detect-libc@2.0.4:
+ resolution:
+ {
+ integrity: sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==,
+ }
+ engines: { node: ">=8" }
+
+ doctrine@2.1.0:
+ resolution:
+ {
+ integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==,
+ }
+ engines: { node: ">=0.10.0" }
+
+ dom-helpers@5.2.1:
+ resolution:
+ {
+ integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==,
+ }
+
+ dunder-proto@1.0.1:
+ resolution:
+ {
+ integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==,
+ }
+ engines: { node: ">= 0.4" }
+
+ ee-first@1.1.1:
+ resolution:
+ {
+ integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==,
+ }
+
+ emoji-regex@8.0.0:
+ resolution:
+ {
+ integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==,
+ }
+
+ emoji-regex@9.2.2:
+ resolution:
+ {
+ integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==,
+ }
+
+ encodeurl@2.0.0:
+ resolution:
+ {
+ integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==,
+ }
+ engines: { node: ">= 0.8" }
+
+ engine.io-client@6.6.3:
+ resolution:
+ {
+ integrity: sha512-T0iLjnyNWahNyv/lcjS2y4oE358tVS/SYQNxYXGAJ9/GLgH4VCvOQ/mhTjqU88mLZCQgiG8RIegFHYCdVC+j5w==,
+ }
+
+ engine.io-parser@5.2.3:
+ resolution:
+ {
+ integrity: sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==,
+ }
+ engines: { node: ">=10.0.0" }
+
+ error-ex@1.3.2:
+ resolution:
+ {
+ integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==,
+ }
+
+ es-abstract@1.23.9:
+ resolution:
+ {
+ integrity: sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==,
+ }
+ engines: { node: ">= 0.4" }
+
+ es-define-property@1.0.1:
+ resolution:
+ {
+ integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==,
+ }
+ engines: { node: ">= 0.4" }
+
+ es-errors@1.3.0:
+ resolution:
+ {
+ integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==,
+ }
+ engines: { node: ">= 0.4" }
+
+ es-iterator-helpers@1.2.1:
+ resolution:
+ {
+ integrity: sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==,
+ }
+ engines: { node: ">= 0.4" }
+
+ es-object-atoms@1.1.1:
+ resolution:
+ {
+ integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==,
+ }
+ engines: { node: ">= 0.4" }
+
+ es-set-tostringtag@2.1.0:
+ resolution:
+ {
+ integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==,
+ }
+ engines: { node: ">= 0.4" }
+
+ es-shim-unscopables@1.1.0:
+ resolution:
+ {
+ integrity: sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==,
+ }
+ engines: { node: ">= 0.4" }
+
+ es-to-primitive@1.3.0:
+ resolution:
+ {
+ integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==,
+ }
+ engines: { node: ">= 0.4" }
+
+ escape-html@1.0.3:
+ resolution:
+ {
+ integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==,
+ }
+
+ 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-config-next@15.3.1:
+ resolution:
+ {
+ integrity: sha512-GnmyVd9TE/Ihe3RrvcafFhXErErtr2jS0JDeCSp3vWvy86AXwHsRBt0E3MqP/m8ACS1ivcsi5uaqjbhsG18qKw==,
+ }
+ peerDependencies:
+ eslint: ^7.23.0 || ^8.0.0 || ^9.0.0
+ typescript: ">=3.3.1"
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ eslint-import-resolver-node@0.3.9:
+ resolution:
+ {
+ integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==,
+ }
+
+ eslint-import-resolver-typescript@3.10.1:
+ resolution:
+ {
+ integrity: sha512-A1rHYb06zjMGAxdLSkN2fXPBwuSaQ0iO5M/hdyS0Ajj1VBaRp0sPD3dn1FhME3c/JluGFbwSxyCfqdSbtQLAHQ==,
+ }
+ engines: { node: ^14.18.0 || >=16.0.0 }
+ peerDependencies:
+ eslint: "*"
+ eslint-plugin-import: "*"
+ eslint-plugin-import-x: "*"
+ peerDependenciesMeta:
+ eslint-plugin-import:
+ optional: true
+ eslint-plugin-import-x:
+ optional: true
+
+ eslint-module-utils@2.12.0:
+ resolution:
+ {
+ integrity: sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==,
+ }
+ engines: { node: ">=4" }
+ peerDependencies:
+ "@typescript-eslint/parser": "*"
+ eslint: "*"
+ eslint-import-resolver-node: "*"
+ eslint-import-resolver-typescript: "*"
+ eslint-import-resolver-webpack: "*"
+ peerDependenciesMeta:
+ "@typescript-eslint/parser":
+ optional: true
+ eslint:
+ optional: true
+ eslint-import-resolver-node:
+ optional: true
+ eslint-import-resolver-typescript:
+ optional: true
+ eslint-import-resolver-webpack:
+ optional: true
+
+ eslint-plugin-import@2.31.0:
+ resolution:
+ {
+ integrity: sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==,
+ }
+ engines: { node: ">=4" }
+ peerDependencies:
+ "@typescript-eslint/parser": "*"
+ eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9
+ peerDependenciesMeta:
+ "@typescript-eslint/parser":
+ optional: true
+
+ eslint-plugin-jsx-a11y@6.10.2:
+ resolution:
+ {
+ integrity: sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==,
+ }
+ engines: { node: ">=4.0" }
+ peerDependencies:
+ eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9
+
+ eslint-plugin-react-hooks@5.2.0:
+ resolution:
+ {
+ integrity: sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==,
+ }
+ engines: { node: ">=10" }
+ peerDependencies:
+ eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0
+
+ eslint-plugin-react@7.37.5:
+ resolution:
+ {
+ integrity: sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==,
+ }
+ engines: { node: ">=4" }
+ peerDependencies:
+ eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7
+
+ eslint-scope@8.3.0:
+ resolution:
+ {
+ integrity: sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==,
+ }
+ engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.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-visitor-keys@4.2.0:
+ resolution:
+ {
+ integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==,
+ }
+ engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
+
+ eslint@9.26.0:
+ resolution:
+ {
+ integrity: sha512-Hx0MOjPh6uK9oq9nVsATZKE/Wlbai7KFjfCuw9UHaguDW3x+HF0O5nIi3ud39TWgrTjTO5nHxmL3R1eANinWHQ==,
+ }
+ engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
+ hasBin: true
+ peerDependencies:
+ jiti: "*"
+ peerDependenciesMeta:
+ jiti:
+ optional: true
+
+ espree@10.3.0:
+ resolution:
+ {
+ integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==,
+ }
+ engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.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" }
+
+ etag@1.8.1:
+ resolution:
+ {
+ integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==,
+ }
+ engines: { node: ">= 0.6" }
+
+ eventsource-parser@3.0.1:
+ resolution:
+ {
+ integrity: sha512-VARTJ9CYeuQYb0pZEPbzi740OWFgpHe7AYJ2WFZVnUDUQp5Dk2yJUgF36YsZ81cOyxT0QxmXD2EQpapAouzWVA==,
+ }
+ engines: { node: ">=18.0.0" }
+
+ eventsource@3.0.6:
+ resolution:
+ {
+ integrity: sha512-l19WpE2m9hSuyP06+FbuUUf1G+R0SFLrtQfbRb9PRr+oimOfxQhgGCbVaXg5IvZyyTThJsxh6L/srkMiCeBPDA==,
+ }
+ engines: { node: ">=18.0.0" }
+
+ express-rate-limit@7.5.0:
+ resolution:
+ {
+ integrity: sha512-eB5zbQh5h+VenMPM3fh+nw1YExi5nMr6HUCR62ELSP11huvxm/Uir1H1QEyTkk5QX6A58pX6NmaTMceKZ0Eodg==,
+ }
+ engines: { node: ">= 16" }
+ peerDependencies:
+ express: ^4.11 || 5 || ^5.0.0-beta.1
+
+ express@5.1.0:
+ resolution:
+ {
+ integrity: sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==,
+ }
+ engines: { node: ">= 18" }
+
+ external-editor@3.1.0:
+ resolution:
+ {
+ integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==,
+ }
+ engines: { node: ">=4" }
+
+ fast-deep-equal@3.1.3:
+ resolution:
+ {
+ integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==,
+ }
+
+ fast-glob@3.3.1:
+ resolution:
+ {
+ integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==,
+ }
+ engines: { node: ">=8.6.0" }
+
+ fast-glob@3.3.3:
+ resolution:
+ {
+ integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==,
+ }
+ 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.19.1:
+ resolution:
+ {
+ integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==,
+ }
+
+ fdir@6.4.4:
+ resolution:
+ {
+ integrity: sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==,
+ }
+ peerDependencies:
+ picomatch: ^3 || ^4
+ peerDependenciesMeta:
+ picomatch:
+ optional: true
+
+ figures@3.2.0:
+ resolution:
+ {
+ integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==,
+ }
+ engines: { node: ">=8" }
+
+ file-entry-cache@8.0.0:
+ resolution:
+ {
+ integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==,
+ }
+ engines: { node: ">=16.0.0" }
+
+ fill-range@7.1.1:
+ resolution:
+ {
+ integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==,
+ }
+ engines: { node: ">=8" }
+
+ finalhandler@2.1.0:
+ resolution:
+ {
+ integrity: sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==,
+ }
+ engines: { node: ">= 0.8" }
+
+ find-root@1.1.0:
+ resolution:
+ {
+ integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==,
+ }
+
+ find-up@5.0.0:
+ resolution:
+ {
+ integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==,
+ }
+ engines: { node: ">=10" }
+
+ flat-cache@4.0.1:
+ resolution:
+ {
+ integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==,
+ }
+ engines: { node: ">=16" }
+
+ flatted@3.3.3:
+ resolution:
+ {
+ integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==,
+ }
+
+ follow-redirects@1.15.9:
+ resolution:
+ {
+ integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==,
+ }
+ engines: { node: ">=4.0" }
+ peerDependencies:
+ debug: "*"
+ peerDependenciesMeta:
+ debug:
+ optional: true
+
+ for-each@0.3.5:
+ resolution:
+ {
+ integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==,
+ }
+ engines: { node: ">= 0.4" }
+
+ form-data@4.0.2:
+ resolution:
+ {
+ integrity: sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==,
+ }
+ engines: { node: ">= 6" }
+
+ forwarded@0.2.0:
+ resolution:
+ {
+ integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==,
+ }
+ engines: { node: ">= 0.6" }
+
+ fresh@2.0.0:
+ resolution:
+ {
+ integrity: sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==,
+ }
+ engines: { node: ">= 0.8" }
+
+ function-bind@1.1.2:
+ resolution:
+ {
+ integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==,
+ }
+
+ function.prototype.name@1.1.8:
+ resolution:
+ {
+ integrity: sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==,
+ }
+ engines: { node: ">= 0.4" }
+
+ functions-have-names@1.2.3:
+ resolution:
+ {
+ integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==,
+ }
+
+ get-intrinsic@1.3.0:
+ resolution:
+ {
+ integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==,
+ }
+ engines: { node: ">= 0.4" }
+
+ get-proto@1.0.1:
+ resolution:
+ {
+ integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==,
+ }
+ engines: { node: ">= 0.4" }
+
+ get-symbol-description@1.1.0:
+ resolution:
+ {
+ integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==,
+ }
+ engines: { node: ">= 0.4" }
+
+ get-tsconfig@4.10.0:
+ resolution:
+ {
+ integrity: sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A==,
+ }
+
+ 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" }
+
+ globals@11.12.0:
+ resolution:
+ {
+ integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==,
+ }
+ engines: { node: ">=4" }
+
+ globals@14.0.0:
+ resolution:
+ {
+ integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==,
+ }
+ engines: { node: ">=18" }
+
+ globalthis@1.0.4:
+ resolution:
+ {
+ integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==,
+ }
+ engines: { node: ">= 0.4" }
+
+ gopd@1.2.0:
+ resolution:
+ {
+ integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==,
+ }
+ engines: { node: ">= 0.4" }
+
+ graphemer@1.4.0:
+ resolution:
+ {
+ integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==,
+ }
+
+ has-bigints@1.1.0:
+ resolution:
+ {
+ integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==,
+ }
+ engines: { node: ">= 0.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.2.0:
+ resolution:
+ {
+ integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==,
+ }
+ engines: { node: ">= 0.4" }
+
+ has-symbols@1.1.0:
+ resolution:
+ {
+ integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==,
+ }
+ 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" }
+
+ highlight-words@2.0.0:
+ resolution:
+ {
+ integrity: sha512-If5n+IhSBRXTScE7wl16VPmd+44Vy7kof24EdqhjsZsDuHikpv1OCagVcJFpB4fS4UPUniedlWqrjIO8vWOsIQ==,
+ }
+ engines: { node: ">= 20", npm: ">= 9" }
+
+ hoist-non-react-statics@3.3.2:
+ resolution:
+ {
+ integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==,
+ }
+
+ http-errors@2.0.0:
+ resolution:
+ {
+ integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==,
+ }
+ engines: { node: ">= 0.8" }
+
+ iconv-lite@0.4.24:
+ resolution:
+ {
+ integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==,
+ }
+ engines: { node: ">=0.10.0" }
+
+ iconv-lite@0.6.3:
+ resolution:
+ {
+ integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==,
+ }
+ engines: { node: ">=0.10.0" }
+
+ ieee754@1.2.1:
+ resolution:
+ {
+ integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==,
+ }
+
+ ignore@5.3.2:
+ resolution:
+ {
+ integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==,
+ }
+ engines: { node: ">= 4" }
+
+ immutable@5.1.1:
+ resolution:
+ {
+ integrity: sha512-3jatXi9ObIsPGr3N5hGw/vWWcTkq6hUYhpQz4k0wLC+owqWi/LiugIw9x0EdNZ2yGedKN/HzePiBvaJRXa0Ujg==,
+ }
+
+ import-fresh@3.3.1:
+ resolution:
+ {
+ integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==,
+ }
+ engines: { node: ">=6" }
+
+ imurmurhash@0.1.4:
+ resolution:
+ {
+ integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==,
+ }
+ engines: { node: ">=0.8.19" }
+
+ inherits@2.0.4:
+ resolution:
+ {
+ integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==,
+ }
+
+ inquirer@8.2.6:
+ resolution:
+ {
+ integrity: sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==,
+ }
+ engines: { node: ">=12.0.0" }
+
+ internal-slot@1.1.0:
+ resolution:
+ {
+ integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==,
+ }
+ engines: { node: ">= 0.4" }
+
+ ipaddr.js@1.9.1:
+ resolution:
+ {
+ integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==,
+ }
+ engines: { node: ">= 0.10" }
+
+ is-array-buffer@3.0.5:
+ resolution:
+ {
+ integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==,
+ }
+ engines: { node: ">= 0.4" }
+
+ is-arrayish@0.2.1:
+ resolution:
+ {
+ integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==,
+ }
+
+ is-arrayish@0.3.2:
+ resolution:
+ {
+ integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==,
+ }
+
+ is-async-function@2.1.1:
+ resolution:
+ {
+ integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==,
+ }
+ engines: { node: ">= 0.4" }
+
+ is-bigint@1.1.0:
+ resolution:
+ {
+ integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==,
+ }
+ engines: { node: ">= 0.4" }
+
+ is-boolean-object@1.2.2:
+ resolution:
+ {
+ integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==,
+ }
+ engines: { node: ">= 0.4" }
+
+ is-bun-module@2.0.0:
+ resolution:
+ {
+ integrity: sha512-gNCGbnnnnFAUGKeZ9PdbyeGYJqewpmc2aKHUEMO5nQPWU9lOmv7jcmQIv+qHD8fXW6W7qfuCwX4rY9LNRjXrkQ==,
+ }
+
+ is-callable@1.2.7:
+ resolution:
+ {
+ integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==,
+ }
+ engines: { node: ">= 0.4" }
+
+ is-core-module@2.16.1:
+ resolution:
+ {
+ integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==,
+ }
+ engines: { node: ">= 0.4" }
+
+ is-data-view@1.0.2:
+ resolution:
+ {
+ integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==,
+ }
+ engines: { node: ">= 0.4" }
+
+ is-date-object@1.1.0:
+ resolution:
+ {
+ integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==,
+ }
+ engines: { node: ">= 0.4" }
+
+ is-extglob@2.1.1:
+ resolution:
+ {
+ integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==,
+ }
+ engines: { node: ">=0.10.0" }
+
+ is-finalizationregistry@1.1.1:
+ resolution:
+ {
+ integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==,
+ }
+ engines: { node: ">= 0.4" }
+
+ is-fullwidth-code-point@3.0.0:
+ resolution:
+ {
+ integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==,
+ }
+ engines: { node: ">=8" }
+
+ is-generator-function@1.1.0:
+ resolution:
+ {
+ integrity: sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==,
+ }
+ engines: { node: ">= 0.4" }
+
+ is-glob@4.0.3:
+ resolution:
+ {
+ integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==,
+ }
+ engines: { node: ">=0.10.0" }
+
+ is-interactive@1.0.0:
+ resolution:
+ {
+ integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==,
+ }
+ engines: { node: ">=8" }
+
+ is-map@2.0.3:
+ resolution:
+ {
+ integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==,
+ }
+ engines: { node: ">= 0.4" }
+
+ is-number-object@1.1.1:
+ resolution:
+ {
+ integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==,
+ }
+ engines: { node: ">= 0.4" }
+
+ is-number@7.0.0:
+ resolution:
+ {
+ integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==,
+ }
+ engines: { node: ">=0.12.0" }
+
+ is-promise@4.0.0:
+ resolution:
+ {
+ integrity: sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==,
+ }
+
+ is-regex@1.2.1:
+ resolution:
+ {
+ integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==,
+ }
+ 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.4:
+ resolution:
+ {
+ integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==,
+ }
+ engines: { node: ">= 0.4" }
+
+ is-string@1.1.1:
+ resolution:
+ {
+ integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==,
+ }
+ engines: { node: ">= 0.4" }
+
+ is-symbol@1.1.1:
+ resolution:
+ {
+ integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==,
+ }
+ engines: { node: ">= 0.4" }
+
+ is-typed-array@1.1.15:
+ resolution:
+ {
+ integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==,
+ }
+ engines: { node: ">= 0.4" }
+
+ is-unicode-supported@0.1.0:
+ resolution:
+ {
+ integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==,
+ }
+ engines: { node: ">=10" }
+
+ is-weakmap@2.0.2:
+ resolution:
+ {
+ integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==,
+ }
+ engines: { node: ">= 0.4" }
+
+ is-weakref@1.1.1:
+ resolution:
+ {
+ integrity: sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==,
+ }
+ engines: { node: ">= 0.4" }
+
+ is-weakset@2.0.4:
+ resolution:
+ {
+ integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==,
+ }
+ 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.5:
+ resolution:
+ {
+ integrity: sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==,
+ }
+ engines: { node: ">= 0.4" }
+
+ jalali-moment@3.3.11:
+ resolution:
+ {
+ integrity: sha512-tdSaRs9cjWjOIaWhcsGFZMhZQhfgok5J0TwqFpBIZPudZxxa6yjUPoLCOwuvbAtRpiZn7k/mvazAJh+vEN5suw==,
+ }
+ hasBin: true
+
+ js-tokens@4.0.0:
+ resolution:
+ {
+ integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==,
+ }
+
+ js-yaml@4.1.0:
+ resolution:
+ {
+ integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==,
+ }
+ hasBin: true
+
+ jsesc@3.1.0:
+ resolution:
+ {
+ integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==,
+ }
+ engines: { node: ">=6" }
+ hasBin: true
+
+ json-buffer@3.0.1:
+ resolution:
+ {
+ integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==,
+ }
+
+ json-parse-even-better-errors@2.3.1:
+ resolution:
+ {
+ integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==,
+ }
+
+ 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@1.0.2:
+ resolution:
+ {
+ integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==,
+ }
+ 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==,
+ }
+
+ language-subtag-registry@0.3.23:
+ resolution:
+ {
+ integrity: sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==,
+ }
+
+ language-tags@1.0.9:
+ resolution:
+ {
+ integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==,
+ }
+ engines: { node: ">=0.10" }
+
+ levn@0.4.1:
+ resolution:
+ {
+ integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==,
+ }
+ engines: { node: ">= 0.8.0" }
+
+ lines-and-columns@1.2.4:
+ resolution:
+ {
+ integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==,
+ }
+
+ 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==,
+ }
+
+ lodash@4.17.21:
+ resolution:
+ {
+ integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==,
+ }
+
+ log-symbols@4.1.0:
+ resolution:
+ {
+ integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==,
+ }
+ engines: { node: ">=10" }
+
+ loose-envify@1.4.0:
+ resolution:
+ {
+ integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==,
+ }
+ hasBin: true
+
+ lz-string@1.5.0:
+ resolution:
+ {
+ integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==,
+ }
+ hasBin: true
+
+ material-react-table@3.2.1:
+ resolution:
+ {
+ integrity: sha512-sQtTf7bETpkPN2Hm5BVtz89wrfXCVQguz6XlwMChSnfKFO5QCKAJJC5aSIKnUc3S0AvTz/k/ILi00FnnY1Gixw==,
+ }
+ engines: { node: ">=16" }
+ peerDependencies:
+ "@emotion/react": ">=11.13"
+ "@emotion/styled": ">=11.13"
+ "@mui/icons-material": ">=6"
+ "@mui/material": ">=6"
+ "@mui/x-date-pickers": ">=7.15"
+ react: ">=18.0"
+ react-dom: ">=18.0"
+
+ math-intrinsics@1.1.0:
+ resolution:
+ {
+ integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==,
+ }
+ engines: { node: ">= 0.4" }
+
+ media-typer@1.1.0:
+ resolution:
+ {
+ integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==,
+ }
+ engines: { node: ">= 0.8" }
+
+ merge-descriptors@2.0.0:
+ resolution:
+ {
+ integrity: sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==,
+ }
+ engines: { node: ">=18" }
+
+ merge2@1.4.1:
+ resolution:
+ {
+ integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==,
+ }
+ engines: { node: ">= 8" }
+
+ micromatch@4.0.8:
+ resolution:
+ {
+ integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==,
+ }
+ engines: { node: ">=8.6" }
+
+ mime-db@1.52.0:
+ resolution:
+ {
+ integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==,
+ }
+ engines: { node: ">= 0.6" }
+
+ mime-db@1.54.0:
+ resolution:
+ {
+ integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==,
+ }
+ engines: { node: ">= 0.6" }
+
+ mime-types@2.1.35:
+ resolution:
+ {
+ integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==,
+ }
+ engines: { node: ">= 0.6" }
+
+ mime-types@3.0.1:
+ resolution:
+ {
+ integrity: sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==,
+ }
+ engines: { node: ">= 0.6" }
+
+ mimic-fn@2.1.0:
+ resolution:
+ {
+ integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==,
+ }
+ engines: { node: ">=6" }
+
+ minimatch@3.1.2:
+ resolution:
+ {
+ integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==,
+ }
+
+ minimatch@9.0.5:
+ resolution:
+ {
+ integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==,
+ }
+ engines: { node: ">=16 || 14 >=14.17" }
+
+ minimist@1.2.8:
+ resolution:
+ {
+ integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==,
+ }
+
+ moment@2.30.1:
+ resolution:
+ {
+ integrity: sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==,
+ }
+
+ ms@2.1.3:
+ resolution:
+ {
+ integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==,
+ }
+
+ mute-stream@0.0.8:
+ resolution:
+ {
+ integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==,
+ }
+
+ nanoid@3.3.11:
+ resolution:
+ {
+ integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==,
+ }
+ engines: { node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1 }
+ hasBin: true
+
+ napi-postinstall@0.2.3:
+ resolution:
+ {
+ integrity: sha512-Mi7JISo/4Ij2tDZ2xBE2WH+/KvVlkhA6juEjpEeRAVPNCpN3nxJo/5FhDNKgBcdmcmhaH6JjgST4xY/23ZYK0w==,
+ }
+ engines: { node: ^12.20.0 || ^14.18.0 || >=16.0.0 }
+ hasBin: true
+
+ natural-compare@1.4.0:
+ resolution:
+ {
+ integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==,
+ }
+
+ negotiator@1.0.0:
+ resolution:
+ {
+ integrity: sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==,
+ }
+ engines: { node: ">= 0.6" }
+
+ next@15.3.1:
+ resolution:
+ {
+ integrity: sha512-8+dDV0xNLOgHlyBxP1GwHGVaNXsmp+2NhZEYrXr24GWLHtt27YrBPbPuHvzlhi7kZNYjeJNR93IF5zfFu5UL0g==,
+ }
+ engines: { node: ^18.18.0 || ^19.8.0 || >= 20.0.0 }
+ hasBin: true
+ peerDependencies:
+ "@opentelemetry/api": ^1.1.0
+ "@playwright/test": ^1.41.2
+ babel-plugin-react-compiler: "*"
+ react: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0
+ react-dom: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0
+ sass: ^1.3.0
+ peerDependenciesMeta:
+ "@opentelemetry/api":
+ optional: true
+ "@playwright/test":
+ optional: true
+ babel-plugin-react-compiler:
+ optional: true
+ sass:
+ optional: true
+
+ node-addon-api@7.1.1:
+ resolution:
+ {
+ integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==,
+ }
+
+ object-assign@4.1.1:
+ resolution:
+ {
+ integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==,
+ }
+ engines: { node: ">=0.10.0" }
+
+ object-inspect@1.13.4:
+ resolution:
+ {
+ integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==,
+ }
+ engines: { node: ">= 0.4" }
+
+ object-keys@1.1.1:
+ resolution:
+ {
+ integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==,
+ }
+ engines: { node: ">= 0.4" }
+
+ object.assign@4.1.7:
+ resolution:
+ {
+ integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==,
+ }
+ engines: { node: ">= 0.4" }
+
+ object.entries@1.1.9:
+ resolution:
+ {
+ integrity: sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==,
+ }
+ engines: { node: ">= 0.4" }
+
+ object.fromentries@2.0.8:
+ resolution:
+ {
+ integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==,
+ }
+ engines: { node: ">= 0.4" }
+
+ object.groupby@1.0.3:
+ resolution:
+ {
+ integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==,
+ }
+ engines: { node: ">= 0.4" }
+
+ object.values@1.2.1:
+ resolution:
+ {
+ integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==,
+ }
+ engines: { node: ">= 0.4" }
+
+ on-finished@2.4.1:
+ resolution:
+ {
+ integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==,
+ }
+ engines: { node: ">= 0.8" }
+
+ 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" }
+
+ optionator@0.9.4:
+ resolution:
+ {
+ integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==,
+ }
+ engines: { node: ">= 0.8.0" }
+
+ ora@5.4.1:
+ resolution:
+ {
+ integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==,
+ }
+ engines: { node: ">=10" }
+
+ os-tmpdir@1.0.2:
+ resolution:
+ {
+ integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==,
+ }
+ engines: { node: ">=0.10.0" }
+
+ own-keys@1.0.1:
+ resolution:
+ {
+ integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==,
+ }
+ engines: { node: ">= 0.4" }
+
+ 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" }
+
+ parse-json@5.2.0:
+ resolution:
+ {
+ integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==,
+ }
+ engines: { node: ">=8" }
+
+ parseurl@1.3.3:
+ resolution:
+ {
+ integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==,
+ }
+ engines: { node: ">= 0.8" }
+
+ path-exists@4.0.0:
+ resolution:
+ {
+ integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==,
+ }
+ engines: { node: ">=8" }
+
+ path-key@3.1.1:
+ resolution:
+ {
+ integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==,
+ }
+ engines: { node: ">=8" }
+
+ path-parse@1.0.7:
+ resolution:
+ {
+ integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==,
+ }
+
+ path-to-regexp@8.2.0:
+ resolution:
+ {
+ integrity: sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==,
+ }
+ engines: { node: ">=16" }
+
+ path-type@4.0.0:
+ resolution:
+ {
+ integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==,
+ }
+ engines: { node: ">=8" }
+
+ picocolors@1.1.1:
+ resolution:
+ {
+ integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==,
+ }
+
+ picomatch@2.3.1:
+ resolution:
+ {
+ integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==,
+ }
+ engines: { node: ">=8.6" }
+
+ picomatch@4.0.2:
+ resolution:
+ {
+ integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==,
+ }
+ engines: { node: ">=12" }
+
+ pkce-challenge@5.0.0:
+ resolution:
+ {
+ integrity: sha512-ueGLflrrnvwB3xuo/uGob5pd5FN7l0MsLf0Z87o/UQmRtwjvfylfc9MurIxRAWywCYTgrvpXBcqjV4OfCYGCIQ==,
+ }
+ engines: { node: ">=16.20.0" }
+
+ possible-typed-array-names@1.1.0:
+ resolution:
+ {
+ integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==,
+ }
+ engines: { node: ">= 0.4" }
+
+ postcss@8.4.31:
+ resolution:
+ {
+ integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==,
+ }
+ engines: { node: ^10 || ^12 || >=14 }
+
+ prelude-ls@1.2.1:
+ resolution:
+ {
+ integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==,
+ }
+ engines: { node: ">= 0.8.0" }
+
+ prettier@3.5.3:
+ resolution:
+ {
+ integrity: sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==,
+ }
+ 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-addr@2.0.7:
+ resolution:
+ {
+ integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==,
+ }
+ engines: { node: ">= 0.10" }
+
+ 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" }
+
+ qs@6.14.0:
+ resolution:
+ {
+ integrity: sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==,
+ }
+ engines: { node: ">=0.6" }
+
+ queue-microtask@1.2.3:
+ resolution:
+ {
+ integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==,
+ }
+
+ range-parser@1.2.1:
+ resolution:
+ {
+ integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==,
+ }
+ engines: { node: ">= 0.6" }
+
+ raw-body@3.0.0:
+ resolution:
+ {
+ integrity: sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==,
+ }
+ engines: { node: ">= 0.8" }
+
+ react-dom@19.1.0:
+ resolution:
+ {
+ integrity: sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g==,
+ }
+ peerDependencies:
+ react: ^19.1.0
+
+ react-hook-form@7.56.2:
+ resolution:
+ {
+ integrity: sha512-vpfuHuQMF/L6GpuQ4c3ZDo+pRYxIi40gQqsCmmfUBwm+oqvBhKhwghCuj2o00YCgSfU6bR9KC/xnQGWm3Gr08A==,
+ }
+ engines: { node: ">=18.0.0" }
+ peerDependencies:
+ react: ^16.8.0 || ^17 || ^18 || ^19
+
+ react-is@16.13.1:
+ resolution:
+ {
+ integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==,
+ }
+
+ react-is@19.1.0:
+ resolution:
+ {
+ integrity: sha512-Oe56aUPnkHyyDxxkvqtd7KkdQP5uIUfHxd5XTb3wE9d/kRnZLmKbDB0GWk919tdQ+mxxPtG6EAs6RMT6i1qtHg==,
+ }
+
+ react-toastify@11.0.5:
+ resolution:
+ {
+ integrity: sha512-EpqHBGvnSTtHYhCPLxML05NLY2ZX0JURbAdNYa6BUkk+amz4wbKBQvoKQAB0ardvSarUBuY4Q4s1sluAzZwkmA==,
+ }
+ peerDependencies:
+ react: ^18 || ^19
+ react-dom: ^18 || ^19
+
+ react-transition-group@4.4.5:
+ resolution:
+ {
+ integrity: sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==,
+ }
+ peerDependencies:
+ react: ">=16.6.0"
+ react-dom: ">=16.6.0"
+
+ react@19.1.0:
+ resolution:
+ {
+ integrity: sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==,
+ }
+ engines: { node: ">=0.10.0" }
+
+ readable-stream@3.6.2:
+ resolution:
+ {
+ integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==,
+ }
+ engines: { node: ">= 6" }
+
+ readdirp@4.1.2:
+ resolution:
+ {
+ integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==,
+ }
+ engines: { node: ">= 14.18.0" }
+
+ reflect.getprototypeof@1.0.10:
+ resolution:
+ {
+ integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==,
+ }
+ engines: { node: ">= 0.4" }
+
+ regexp.prototype.flags@1.5.4:
+ resolution:
+ {
+ integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==,
+ }
+ engines: { node: ">= 0.4" }
+
+ remove-accents@0.5.0:
+ resolution:
+ {
+ integrity: sha512-8g3/Otx1eJaVD12e31UbJj1YzdtVvzH85HV7t+9MJYk/u3XmkOUJ5Ys9wQrf9PCPK8+xn4ymzqYCiZl6QWKn+A==,
+ }
+
+ reselect@5.1.1:
+ resolution:
+ {
+ integrity: sha512-K/BG6eIky/SBpzfHZv/dd+9JBFiS4SWV7FIujVyJRux6e45+73RaUHXLmIR1f7WOMaQ0U1km6qwklRQxpJJY0w==,
+ }
+
+ resolve-from@4.0.0:
+ resolution:
+ {
+ integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==,
+ }
+ engines: { node: ">=4" }
+
+ resolve-pkg-maps@1.0.0:
+ resolution:
+ {
+ integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==,
+ }
+
+ resolve@1.22.10:
+ resolution:
+ {
+ integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==,
+ }
+ engines: { node: ">= 0.4" }
+ hasBin: true
+
+ resolve@2.0.0-next.5:
+ resolution:
+ {
+ integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==,
+ }
+ hasBin: true
+
+ restore-cursor@3.1.0:
+ resolution:
+ {
+ integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==,
+ }
+ engines: { node: ">=8" }
+
+ reusify@1.1.0:
+ resolution:
+ {
+ integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==,
+ }
+ engines: { iojs: ">=1.0.0", node: ">=0.10.0" }
+
+ router@2.2.0:
+ resolution:
+ {
+ integrity: sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==,
+ }
+ engines: { node: ">= 18" }
+
+ run-async@2.4.1:
+ resolution:
+ {
+ integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==,
+ }
+ engines: { node: ">=0.12.0" }
+
+ run-parallel@1.2.0:
+ resolution:
+ {
+ integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==,
+ }
+
+ rxjs@7.8.2:
+ resolution:
+ {
+ integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==,
+ }
+
+ safe-array-concat@1.1.3:
+ resolution:
+ {
+ integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==,
+ }
+ engines: { node: ">=0.4" }
+
+ safe-buffer@5.2.1:
+ resolution:
+ {
+ integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==,
+ }
+
+ safe-push-apply@1.0.0:
+ resolution:
+ {
+ integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==,
+ }
+ engines: { node: ">= 0.4" }
+
+ safe-regex-test@1.1.0:
+ resolution:
+ {
+ integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==,
+ }
+ engines: { node: ">= 0.4" }
+
+ safer-buffer@2.1.2:
+ resolution:
+ {
+ integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==,
+ }
+
+ sass@1.87.0:
+ resolution:
+ {
+ integrity: sha512-d0NoFH4v6SjEK7BoX810Jsrhj7IQSYHAHLi/iSpgqKc7LaIDshFRlSg5LOymf9FqQhxEHs2W5ZQXlvy0KD45Uw==,
+ }
+ engines: { node: ">=14.0.0" }
+ hasBin: true
+
+ scheduler@0.26.0:
+ resolution:
+ {
+ integrity: sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==,
+ }
+
+ semver@6.3.1:
+ resolution:
+ {
+ integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==,
+ }
+ hasBin: true
+
+ semver@7.7.1:
+ resolution:
+ {
+ integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==,
+ }
+ engines: { node: ">=10" }
+ hasBin: true
+
+ send@1.2.0:
+ resolution:
+ {
+ integrity: sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==,
+ }
+ engines: { node: ">= 18" }
+
+ serve-static@2.2.0:
+ resolution:
+ {
+ integrity: sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==,
+ }
+ engines: { node: ">= 18" }
+
+ 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" }
+
+ set-proto@1.0.0:
+ resolution:
+ {
+ integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==,
+ }
+ engines: { node: ">= 0.4" }
+
+ setprototypeof@1.2.0:
+ resolution:
+ {
+ integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==,
+ }
+
+ sharp@0.34.1:
+ resolution:
+ {
+ integrity: sha512-1j0w61+eVxu7DawFJtnfYcvSv6qPFvfTaqzTQ2BLknVhHTwGS8sc63ZBF4rzkWMBVKybo4S5OBtDdZahh2A1xg==,
+ }
+ engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 }
+
+ 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-list@1.0.0:
+ resolution:
+ {
+ integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==,
+ }
+ engines: { node: ">= 0.4" }
+
+ side-channel-map@1.0.1:
+ resolution:
+ {
+ integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==,
+ }
+ engines: { node: ">= 0.4" }
+
+ side-channel-weakmap@1.0.2:
+ resolution:
+ {
+ integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==,
+ }
+ engines: { node: ">= 0.4" }
+
+ side-channel@1.1.0:
+ resolution:
+ {
+ integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==,
+ }
+ engines: { node: ">= 0.4" }
+
+ signal-exit@3.0.7:
+ resolution:
+ {
+ integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==,
+ }
+
+ simple-swizzle@0.2.2:
+ resolution:
+ {
+ integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==,
+ }
+
+ socket.io-client@4.8.1:
+ resolution:
+ {
+ integrity: sha512-hJVXfu3E28NmzGk8o1sHhN3om52tRvwYeidbj7xKy2eIIse5IoKX3USlS6Tqt3BHAtflLIkCQBkzVrEEfWUyYQ==,
+ }
+ engines: { node: ">=10.0.0" }
+
+ socket.io-parser@4.2.4:
+ resolution:
+ {
+ integrity: sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==,
+ }
+ engines: { node: ">=10.0.0" }
+
+ source-map-js@1.2.1:
+ resolution:
+ {
+ integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==,
+ }
+ engines: { node: ">=0.10.0" }
+
+ source-map@0.5.7:
+ resolution:
+ {
+ integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==,
+ }
+ engines: { node: ">=0.10.0" }
+
+ stable-hash@0.0.5:
+ resolution:
+ {
+ integrity: sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA==,
+ }
+
+ statuses@2.0.1:
+ resolution:
+ {
+ integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==,
+ }
+ engines: { node: ">= 0.8" }
+
+ streamsearch@1.1.0:
+ resolution:
+ {
+ integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==,
+ }
+ engines: { node: ">=10.0.0" }
+
+ string-width@4.2.3:
+ resolution:
+ {
+ integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==,
+ }
+ engines: { node: ">=8" }
+
+ string.prototype.includes@2.0.1:
+ resolution:
+ {
+ integrity: sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==,
+ }
+ engines: { node: ">= 0.4" }
+
+ string.prototype.matchall@4.0.12:
+ resolution:
+ {
+ integrity: sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==,
+ }
+ 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.10:
+ resolution:
+ {
+ integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==,
+ }
+ engines: { node: ">= 0.4" }
+
+ string.prototype.trimend@1.0.9:
+ resolution:
+ {
+ integrity: sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==,
+ }
+ engines: { node: ">= 0.4" }
+
+ string.prototype.trimstart@1.0.8:
+ resolution:
+ {
+ integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==,
+ }
+ engines: { node: ">= 0.4" }
+
+ string_decoder@1.3.0:
+ resolution:
+ {
+ integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==,
+ }
+
+ strip-ansi@6.0.1:
+ resolution:
+ {
+ integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==,
+ }
+ engines: { node: ">=8" }
+
+ strip-bom@3.0.0:
+ resolution:
+ {
+ integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==,
+ }
+ engines: { node: ">=4" }
+
+ strip-json-comments@3.1.1:
+ resolution:
+ {
+ integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==,
+ }
+ engines: { node: ">=8" }
+
+ styled-jsx@5.1.6:
+ resolution:
+ {
+ integrity: sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==,
+ }
+ engines: { node: ">= 12.0.0" }
+ peerDependencies:
+ "@babel/core": "*"
+ babel-plugin-macros: "*"
+ react: ">= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0"
+ peerDependenciesMeta:
+ "@babel/core":
+ optional: true
+ babel-plugin-macros:
+ optional: true
+
+ stylis-plugin-rtl@2.1.1:
+ resolution:
+ {
+ integrity: sha512-q6xIkri6fBufIO/sV55md2CbgS5c6gg9EhSVATtHHCdOnbN/jcI0u3lYhNVeuI65c4lQPo67g8xmq5jrREvzlg==,
+ }
+ peerDependencies:
+ stylis: 4.x
+
+ stylis@4.2.0:
+ resolution:
+ {
+ integrity: sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==,
+ }
+
+ stylis@4.3.6:
+ resolution:
+ {
+ integrity: sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ==,
+ }
+
+ 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.3.3:
+ resolution:
+ {
+ integrity: sha512-dshNvs3ExOqtZ6kJBaAsabhPdHyeY4P2cKwRCniDVifBMoG/SVI7tfLWqPXriVspf2Rg4tPzXJTnwaihIeFw2A==,
+ }
+ peerDependencies:
+ react: ^16.11.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
+
+ through@2.3.8:
+ resolution:
+ {
+ integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==,
+ }
+
+ tiny-case@1.0.3:
+ resolution:
+ {
+ integrity: sha512-Eet/eeMhkO6TX8mnUteS9zgPbUMQa4I6Kkp5ORiBD5476/m+PIRiumP5tmh5ioJpH7k51Kehawy2UDfsnxxY8Q==,
+ }
+
+ tinyglobby@0.2.13:
+ resolution:
+ {
+ integrity: sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw==,
+ }
+ engines: { node: ">=12.0.0" }
+
+ tmp@0.0.33:
+ resolution:
+ {
+ integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==,
+ }
+ engines: { node: ">=0.6.0" }
+
+ to-regex-range@5.0.1:
+ resolution:
+ {
+ integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==,
+ }
+ engines: { node: ">=8.0" }
+
+ toidentifier@1.0.1:
+ resolution:
+ {
+ integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==,
+ }
+ engines: { node: ">=0.6" }
+
+ toposort@2.0.2:
+ resolution:
+ {
+ integrity: sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==,
+ }
+
+ ts-api-utils@2.1.0:
+ resolution:
+ {
+ integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==,
+ }
+ engines: { node: ">=18.12" }
+ peerDependencies:
+ typescript: ">=4.8.4"
+
+ tsconfig-paths@3.15.0:
+ resolution:
+ {
+ integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==,
+ }
+
+ tslib@2.8.1:
+ resolution:
+ {
+ integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==,
+ }
+
+ type-check@0.4.0:
+ resolution:
+ {
+ integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==,
+ }
+ engines: { node: ">= 0.8.0" }
+
+ type-fest@0.21.3:
+ resolution:
+ {
+ integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==,
+ }
+ engines: { node: ">=10" }
+
+ type-fest@2.19.0:
+ resolution:
+ {
+ integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==,
+ }
+ engines: { node: ">=12.20" }
+
+ type-is@2.0.1:
+ resolution:
+ {
+ integrity: sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==,
+ }
+ engines: { node: ">= 0.6" }
+
+ typed-array-buffer@1.0.3:
+ resolution:
+ {
+ integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==,
+ }
+ engines: { node: ">= 0.4" }
+
+ typed-array-byte-length@1.0.3:
+ resolution:
+ {
+ integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==,
+ }
+ engines: { node: ">= 0.4" }
+
+ typed-array-byte-offset@1.0.4:
+ resolution:
+ {
+ integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==,
+ }
+ engines: { node: ">= 0.4" }
+
+ typed-array-length@1.0.7:
+ resolution:
+ {
+ integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==,
+ }
+ engines: { node: ">= 0.4" }
+
+ typescript@5.8.3:
+ resolution:
+ {
+ integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==,
+ }
+ engines: { node: ">=14.17" }
+ hasBin: true
+
+ unbox-primitive@1.1.0:
+ resolution:
+ {
+ integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==,
+ }
+ engines: { node: ">= 0.4" }
+
+ unpipe@1.0.0:
+ resolution:
+ {
+ integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==,
+ }
+ engines: { node: ">= 0.8" }
+
+ unrs-resolver@1.7.2:
+ resolution:
+ {
+ integrity: sha512-BBKpaylOW8KbHsu378Zky/dGh4ckT/4NW/0SHRABdqRLcQJ2dAOjDo9g97p04sWflm0kqPqpUatxReNV/dqI5A==,
+ }
+
+ uri-js@4.4.1:
+ resolution:
+ {
+ integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==,
+ }
+
+ use-sync-external-store@1.5.0:
+ resolution:
+ {
+ integrity: sha512-Rb46I4cGGVBmjamjphe8L/UnvJD+uPPtTkNvX5mZgqdbavhI4EbgIWJiIHXJ8bc/i9EQGPRh4DwEURJ552Do0A==,
+ }
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
+
+ util-deprecate@1.0.2:
+ resolution:
+ {
+ integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==,
+ }
+
+ vary@1.1.2:
+ resolution:
+ {
+ integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==,
+ }
+ engines: { node: ">= 0.8" }
+
+ wcwidth@1.0.1:
+ resolution:
+ {
+ integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==,
+ }
+
+ which-boxed-primitive@1.1.1:
+ resolution:
+ {
+ integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==,
+ }
+ engines: { node: ">= 0.4" }
+
+ which-builtin-type@1.2.1:
+ resolution:
+ {
+ integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==,
+ }
+ engines: { node: ">= 0.4" }
+
+ which-collection@1.0.2:
+ resolution:
+ {
+ integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==,
+ }
+ engines: { node: ">= 0.4" }
+
+ which-typed-array@1.1.19:
+ resolution:
+ {
+ integrity: sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==,
+ }
+ 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@6.2.0:
+ resolution:
+ {
+ integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==,
+ }
+ engines: { node: ">=8" }
+
+ wrappy@1.0.2:
+ resolution:
+ {
+ integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==,
+ }
+
+ ws@8.17.1:
+ resolution:
+ {
+ integrity: sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==,
+ }
+ engines: { node: ">=10.0.0" }
+ peerDependencies:
+ bufferutil: ^4.0.1
+ utf-8-validate: ">=5.0.2"
+ peerDependenciesMeta:
+ bufferutil:
+ optional: true
+ utf-8-validate:
+ optional: true
+
+ xmlhttprequest-ssl@2.1.2:
+ resolution:
+ {
+ integrity: sha512-TEU+nJVUUnA4CYJFLvK5X9AOeH4KvDvhIfm0vV1GaQRtchnG0hgK5p8hw/xjv8cunWYCsiPCSDzObPyhEwq3KQ==,
+ }
+ engines: { node: ">=0.4.0" }
+
+ yaml@1.10.2:
+ resolution:
+ {
+ integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==,
+ }
+ engines: { node: ">= 6" }
+
+ yocto-queue@0.1.0:
+ resolution:
+ {
+ integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==,
+ }
+ engines: { node: ">=10" }
+
+ yup@1.6.1:
+ resolution:
+ {
+ integrity: sha512-JED8pB50qbA4FOkDol0bYF/p60qSEDQqBD0/qeIrUCG1KbPBIQ776fCUNb9ldbPcSTxA69g/47XTo4TqWiuXOA==,
+ }
+
+ zod-to-json-schema@3.24.5:
+ resolution:
+ {
+ integrity: sha512-/AuWwMP+YqiPbsJx5D6TfgRTc4kTLjsh5SOcd4bLsfUg2RcEXrFMJl1DGgdHy2aCfsIA/cr/1JM0xcB2GZji8g==,
+ }
+ peerDependencies:
+ zod: ^3.24.1
+
+ zod@3.24.4:
+ resolution:
+ {
+ integrity: sha512-OdqJE9UDRPwWsrHjLN2F8bPxvwJBK22EHLWtanu0LSYr5YqzsaaW3RMgmjwr8Rypg5k+meEJdSPXJZXE/yqOMg==,
+ }
snapshots:
+ "@babel/code-frame@7.27.1":
+ dependencies:
+ "@babel/helper-validator-identifier": 7.27.1
+ js-tokens: 4.0.0
+ picocolors: 1.1.1
+
+ "@babel/generator@7.27.1":
+ dependencies:
+ "@babel/parser": 7.27.1
+ "@babel/types": 7.27.1
+ "@jridgewell/gen-mapping": 0.3.8
+ "@jridgewell/trace-mapping": 0.3.25
+ jsesc: 3.1.0
+
+ "@babel/helper-module-imports@7.27.1":
+ dependencies:
+ "@babel/traverse": 7.27.1
+ "@babel/types": 7.27.1
+ transitivePeerDependencies:
+ - supports-color
+
+ "@babel/helper-string-parser@7.27.1": {}
+
+ "@babel/helper-validator-identifier@7.27.1": {}
+
+ "@babel/parser@7.27.1":
+ dependencies:
+ "@babel/types": 7.27.1
+
+ "@babel/runtime@7.27.1": {}
+
+ "@babel/template@7.27.1":
+ dependencies:
+ "@babel/code-frame": 7.27.1
+ "@babel/parser": 7.27.1
+ "@babel/types": 7.27.1
+
+ "@babel/traverse@7.27.1":
+ dependencies:
+ "@babel/code-frame": 7.27.1
+ "@babel/generator": 7.27.1
+ "@babel/parser": 7.27.1
+ "@babel/template": 7.27.1
+ "@babel/types": 7.27.1
+ debug: 4.4.0
+ globals: 11.12.0
+ transitivePeerDependencies:
+ - supports-color
+
+ "@babel/types@7.27.1":
+ dependencies:
+ "@babel/helper-string-parser": 7.27.1
+ "@babel/helper-validator-identifier": 7.27.1
+
+ "@emnapi/core@1.4.3":
+ dependencies:
+ "@emnapi/wasi-threads": 1.0.2
+ tslib: 2.8.1
+ optional: true
+
+ "@emnapi/runtime@1.4.3":
+ dependencies:
+ tslib: 2.8.1
+ optional: true
+
+ "@emnapi/wasi-threads@1.0.2":
+ dependencies:
+ tslib: 2.8.1
+ optional: true
+
+ "@emotion/babel-plugin@11.13.5":
+ dependencies:
+ "@babel/helper-module-imports": 7.27.1
+ "@babel/runtime": 7.27.1
+ "@emotion/hash": 0.9.2
+ "@emotion/memoize": 0.9.0
+ "@emotion/serialize": 1.3.3
+ babel-plugin-macros: 3.1.0
+ convert-source-map: 1.9.0
+ escape-string-regexp: 4.0.0
+ find-root: 1.1.0
+ source-map: 0.5.7
+ stylis: 4.2.0
+ transitivePeerDependencies:
+ - supports-color
+
+ "@emotion/cache@11.14.0":
+ dependencies:
+ "@emotion/memoize": 0.9.0
+ "@emotion/sheet": 1.4.0
+ "@emotion/utils": 1.4.2
+ "@emotion/weak-memoize": 0.4.0
+ stylis: 4.2.0
+
+ "@emotion/hash@0.9.2": {}
+
+ "@emotion/is-prop-valid@1.3.1":
+ dependencies:
+ "@emotion/memoize": 0.9.0
+
+ "@emotion/memoize@0.9.0": {}
+
+ "@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0)":
+ dependencies:
+ "@babel/runtime": 7.27.1
+ "@emotion/babel-plugin": 11.13.5
+ "@emotion/cache": 11.14.0
+ "@emotion/serialize": 1.3.3
+ "@emotion/use-insertion-effect-with-fallbacks": 1.2.0(react@19.1.0)
+ "@emotion/utils": 1.4.2
+ "@emotion/weak-memoize": 0.4.0
+ hoist-non-react-statics: 3.3.2
+ react: 19.1.0
+ optionalDependencies:
+ "@types/react": 19.1.2
+ transitivePeerDependencies:
+ - supports-color
+
+ "@emotion/serialize@1.3.3":
+ dependencies:
+ "@emotion/hash": 0.9.2
+ "@emotion/memoize": 0.9.0
+ "@emotion/unitless": 0.10.0
+ "@emotion/utils": 1.4.2
+ csstype: 3.1.3
+
+ "@emotion/sheet@1.4.0": {}
+
+ "@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react@19.1.0)":
+ dependencies:
+ "@babel/runtime": 7.27.1
+ "@emotion/babel-plugin": 11.13.5
+ "@emotion/is-prop-valid": 1.3.1
+ "@emotion/react": 11.14.0(@types/react@19.1.2)(react@19.1.0)
+ "@emotion/serialize": 1.3.3
+ "@emotion/use-insertion-effect-with-fallbacks": 1.2.0(react@19.1.0)
+ "@emotion/utils": 1.4.2
+ react: 19.1.0
+ optionalDependencies:
+ "@types/react": 19.1.2
+ transitivePeerDependencies:
+ - supports-color
+
+ "@emotion/unitless@0.10.0": {}
+
+ "@emotion/use-insertion-effect-with-fallbacks@1.2.0(react@19.1.0)":
+ dependencies:
+ react: 19.1.0
+
+ "@emotion/utils@1.4.2": {}
+
+ "@emotion/weak-memoize@0.4.0": {}
+
+ "@eslint-community/eslint-utils@4.7.0(eslint@9.26.0)":
+ dependencies:
+ eslint: 9.26.0
+ eslint-visitor-keys: 3.4.3
+
+ "@eslint-community/regexpp@4.12.1": {}
+
+ "@eslint/config-array@0.20.0":
+ dependencies:
+ "@eslint/object-schema": 2.1.6
+ debug: 4.4.0
+ minimatch: 3.1.2
+ transitivePeerDependencies:
+ - supports-color
+
+ "@eslint/config-helpers@0.2.2": {}
+
+ "@eslint/core@0.13.0":
+ dependencies:
+ "@types/json-schema": 7.0.15
+
+ "@eslint/eslintrc@3.3.1":
+ dependencies:
+ ajv: 6.12.6
+ debug: 4.4.0
+ espree: 10.3.0
+ globals: 14.0.0
+ ignore: 5.3.2
+ import-fresh: 3.3.1
+ js-yaml: 4.1.0
+ minimatch: 3.1.2
+ strip-json-comments: 3.1.1
+ transitivePeerDependencies:
+ - supports-color
+
+ "@eslint/js@9.26.0": {}
+
+ "@eslint/object-schema@2.1.6": {}
+
+ "@eslint/plugin-kit@0.2.8":
+ dependencies:
+ "@eslint/core": 0.13.0
+ levn: 0.4.1
+
+ "@hookform/resolvers@5.0.1(react-hook-form@7.56.2(react@19.1.0))":
+ dependencies:
+ "@standard-schema/utils": 0.3.0
+ react-hook-form: 7.56.2(react@19.1.0)
+
+ "@humanfs/core@0.19.1": {}
+
+ "@humanfs/node@0.16.6":
+ dependencies:
+ "@humanfs/core": 0.19.1
+ "@humanwhocodes/retry": 0.3.1
+
+ "@humanwhocodes/module-importer@1.0.1": {}
+
+ "@humanwhocodes/retry@0.3.1": {}
+
+ "@humanwhocodes/retry@0.4.2": {}
+
+ "@img/sharp-darwin-arm64@0.34.1":
+ optionalDependencies:
+ "@img/sharp-libvips-darwin-arm64": 1.1.0
+ optional: true
+
+ "@img/sharp-darwin-x64@0.34.1":
+ optionalDependencies:
+ "@img/sharp-libvips-darwin-x64": 1.1.0
+ optional: true
+
+ "@img/sharp-libvips-darwin-arm64@1.1.0":
+ optional: true
+
+ "@img/sharp-libvips-darwin-x64@1.1.0":
+ optional: true
+
+ "@img/sharp-libvips-linux-arm64@1.1.0":
+ optional: true
+
+ "@img/sharp-libvips-linux-arm@1.1.0":
+ optional: true
+
+ "@img/sharp-libvips-linux-ppc64@1.1.0":
+ optional: true
+
+ "@img/sharp-libvips-linux-s390x@1.1.0":
+ optional: true
+
+ "@img/sharp-libvips-linux-x64@1.1.0":
+ optional: true
+
+ "@img/sharp-libvips-linuxmusl-arm64@1.1.0":
+ optional: true
+
+ "@img/sharp-libvips-linuxmusl-x64@1.1.0":
+ optional: true
+
+ "@img/sharp-linux-arm64@0.34.1":
+ optionalDependencies:
+ "@img/sharp-libvips-linux-arm64": 1.1.0
+ optional: true
+
+ "@img/sharp-linux-arm@0.34.1":
+ optionalDependencies:
+ "@img/sharp-libvips-linux-arm": 1.1.0
+ optional: true
+
+ "@img/sharp-linux-s390x@0.34.1":
+ optionalDependencies:
+ "@img/sharp-libvips-linux-s390x": 1.1.0
+ optional: true
+
+ "@img/sharp-linux-x64@0.34.1":
+ optionalDependencies:
+ "@img/sharp-libvips-linux-x64": 1.1.0
+ optional: true
+
+ "@img/sharp-linuxmusl-arm64@0.34.1":
+ optionalDependencies:
+ "@img/sharp-libvips-linuxmusl-arm64": 1.1.0
+ optional: true
+
+ "@img/sharp-linuxmusl-x64@0.34.1":
+ optionalDependencies:
+ "@img/sharp-libvips-linuxmusl-x64": 1.1.0
+ optional: true
+
+ "@img/sharp-wasm32@0.34.1":
+ dependencies:
+ "@emnapi/runtime": 1.4.3
+ optional: true
+
+ "@img/sharp-win32-ia32@0.34.1":
+ optional: true
+
+ "@img/sharp-win32-x64@0.34.1":
+ optional: true
+
+ "@jridgewell/gen-mapping@0.3.8":
+ 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
+
+ "@modelcontextprotocol/sdk@1.11.0":
+ dependencies:
+ content-type: 1.0.5
+ cors: 2.8.5
+ cross-spawn: 7.0.6
+ eventsource: 3.0.6
+ express: 5.1.0
+ express-rate-limit: 7.5.0(express@5.1.0)
+ pkce-challenge: 5.0.0
+ raw-body: 3.0.0
+ zod: 3.24.4
+ zod-to-json-schema: 3.24.5(zod@3.24.4)
+ transitivePeerDependencies:
+ - supports-color
+
+ "@mui/core-downloads-tracker@7.0.2": {}
+
+ "@mui/icons-material@7.0.2(@mui/material@7.0.2(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@types/react@19.1.2)(react@19.1.0)":
+ dependencies:
+ "@babel/runtime": 7.27.1
+ "@mui/material": 7.0.2(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
+ react: 19.1.0
+ optionalDependencies:
+ "@types/react": 19.1.2
+
+ "@mui/material-nextjs@7.0.2(@emotion/cache@11.14.0)(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(next@15.3.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.87.0))(react@19.1.0)":
+ dependencies:
+ "@babel/runtime": 7.27.1
+ "@emotion/react": 11.14.0(@types/react@19.1.2)(react@19.1.0)
+ next: 15.3.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.87.0)
+ react: 19.1.0
+ optionalDependencies:
+ "@emotion/cache": 11.14.0
+ "@types/react": 19.1.2
+
+ "@mui/material@7.0.2(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)":
+ dependencies:
+ "@babel/runtime": 7.27.1
+ "@mui/core-downloads-tracker": 7.0.2
+ "@mui/system": 7.0.2(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react@19.1.0)
+ "@mui/types": 7.4.1(@types/react@19.1.2)
+ "@mui/utils": 7.0.2(@types/react@19.1.2)(react@19.1.0)
+ "@popperjs/core": 2.11.8
+ "@types/react-transition-group": 4.4.12(@types/react@19.1.2)
+ clsx: 2.1.1
+ csstype: 3.1.3
+ prop-types: 15.8.1
+ react: 19.1.0
+ react-dom: 19.1.0(react@19.1.0)
+ react-is: 19.1.0
+ react-transition-group: 4.4.5(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
+ optionalDependencies:
+ "@emotion/react": 11.14.0(@types/react@19.1.2)(react@19.1.0)
+ "@emotion/styled": 11.14.0(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react@19.1.0)
+ "@types/react": 19.1.2
+
+ "@mui/private-theming@7.0.2(@types/react@19.1.2)(react@19.1.0)":
+ dependencies:
+ "@babel/runtime": 7.27.1
+ "@mui/utils": 7.0.2(@types/react@19.1.2)(react@19.1.0)
+ prop-types: 15.8.1
+ react: 19.1.0
+ optionalDependencies:
+ "@types/react": 19.1.2
+
+ "@mui/styled-engine@7.0.2(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react@19.1.0))(react@19.1.0)":
+ dependencies:
+ "@babel/runtime": 7.27.1
+ "@emotion/cache": 11.14.0
+ "@emotion/serialize": 1.3.3
+ "@emotion/sheet": 1.4.0
+ csstype: 3.1.3
+ prop-types: 15.8.1
+ react: 19.1.0
+ optionalDependencies:
+ "@emotion/react": 11.14.0(@types/react@19.1.2)(react@19.1.0)
+ "@emotion/styled": 11.14.0(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react@19.1.0)
+
+ "@mui/system@7.0.2(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react@19.1.0)":
+ dependencies:
+ "@babel/runtime": 7.27.1
+ "@mui/private-theming": 7.0.2(@types/react@19.1.2)(react@19.1.0)
+ "@mui/styled-engine": 7.0.2(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react@19.1.0))(react@19.1.0)
+ "@mui/types": 7.4.1(@types/react@19.1.2)
+ "@mui/utils": 7.0.2(@types/react@19.1.2)(react@19.1.0)
+ clsx: 2.1.1
+ csstype: 3.1.3
+ prop-types: 15.8.1
+ react: 19.1.0
+ optionalDependencies:
+ "@emotion/react": 11.14.0(@types/react@19.1.2)(react@19.1.0)
+ "@emotion/styled": 11.14.0(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react@19.1.0)
+ "@types/react": 19.1.2
+
+ "@mui/types@7.4.1(@types/react@19.1.2)":
+ dependencies:
+ "@babel/runtime": 7.27.1
+ optionalDependencies:
+ "@types/react": 19.1.2
+
+ "@mui/utils@7.0.2(@types/react@19.1.2)(react@19.1.0)":
+ dependencies:
+ "@babel/runtime": 7.27.1
+ "@mui/types": 7.4.1(@types/react@19.1.2)
+ "@types/prop-types": 15.7.14
+ clsx: 2.1.1
+ prop-types: 15.8.1
+ react: 19.1.0
+ react-is: 19.1.0
+ optionalDependencies:
+ "@types/react": 19.1.2
+
+ "@mui/x-date-pickers@8.2.0(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react@19.1.0))(@mui/material@7.0.2(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mui/system@7.0.2(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(date-fns-jalali@4.1.0-0)(moment@2.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)":
+ dependencies:
+ "@babel/runtime": 7.27.1
+ "@mui/material": 7.0.2(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
+ "@mui/system": 7.0.2(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react@19.1.0)
+ "@mui/utils": 7.0.2(@types/react@19.1.2)(react@19.1.0)
+ "@mui/x-internals": 8.2.0(@types/react@19.1.2)(react@19.1.0)
+ "@types/react-transition-group": 4.4.12(@types/react@19.1.2)
+ clsx: 2.1.1
+ prop-types: 15.8.1
+ react: 19.1.0
+ react-dom: 19.1.0(react@19.1.0)
+ react-transition-group: 4.4.5(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
+ optionalDependencies:
+ "@emotion/react": 11.14.0(@types/react@19.1.2)(react@19.1.0)
+ "@emotion/styled": 11.14.0(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react@19.1.0)
+ date-fns-jalali: 4.1.0-0
+ moment: 2.30.1
+ transitivePeerDependencies:
+ - "@types/react"
+
+ "@mui/x-internals@8.2.0(@types/react@19.1.2)(react@19.1.0)":
+ dependencies:
+ "@babel/runtime": 7.27.1
+ "@mui/utils": 7.0.2(@types/react@19.1.2)(react@19.1.0)
+ react: 19.1.0
+ transitivePeerDependencies:
+ - "@types/react"
+
+ "@mui/x-tree-view@8.2.0(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react@19.1.0))(@mui/material@7.0.2(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mui/system@7.0.2(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)":
+ dependencies:
+ "@babel/runtime": 7.27.1
+ "@mui/material": 7.0.2(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
+ "@mui/system": 7.0.2(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react@19.1.0)
+ "@mui/utils": 7.0.2(@types/react@19.1.2)(react@19.1.0)
+ "@mui/x-internals": 8.2.0(@types/react@19.1.2)(react@19.1.0)
+ "@types/react-transition-group": 4.4.12(@types/react@19.1.2)
+ clsx: 2.1.1
+ prop-types: 15.8.1
+ react: 19.1.0
+ react-dom: 19.1.0(react@19.1.0)
+ react-transition-group: 4.4.5(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
+ reselect: 5.1.1
+ use-sync-external-store: 1.5.0(react@19.1.0)
+ optionalDependencies:
+ "@emotion/react": 11.14.0(@types/react@19.1.2)(react@19.1.0)
+ "@emotion/styled": 11.14.0(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react@19.1.0)
+ transitivePeerDependencies:
+ - "@types/react"
+
+ "@napi-rs/wasm-runtime@0.2.9":
+ dependencies:
+ "@emnapi/core": 1.4.3
+ "@emnapi/runtime": 1.4.3
+ "@tybys/wasm-util": 0.9.0
+ optional: true
+
+ "@next/env@15.3.1": {}
+
+ "@next/eslint-plugin-next@15.3.1":
+ dependencies:
+ fast-glob: 3.3.1
+
+ "@next/swc-darwin-arm64@15.3.1":
+ optional: true
+
+ "@next/swc-darwin-x64@15.3.1":
+ optional: true
+
+ "@next/swc-linux-arm64-gnu@15.3.1":
+ optional: true
+
+ "@next/swc-linux-arm64-musl@15.3.1":
+ optional: true
+
+ "@next/swc-linux-x64-gnu@15.3.1":
+ optional: true
+
+ "@next/swc-linux-x64-musl@15.3.1":
+ optional: true
+
+ "@next/swc-win32-arm64-msvc@15.3.1":
+ optional: true
+
+ "@next/swc-win32-x64-msvc@15.3.1":
+ optional: true
+
+ "@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.19.1
+
+ "@nolyfill/is-core-module@1.0.39": {}
+
+ "@parcel/watcher-android-arm64@2.5.1":
+ optional: true
+
+ "@parcel/watcher-darwin-arm64@2.5.1":
+ optional: true
+
+ "@parcel/watcher-darwin-x64@2.5.1":
+ optional: true
+
+ "@parcel/watcher-freebsd-x64@2.5.1":
+ optional: true
- '@babel/code-frame@7.27.1':
- dependencies:
- '@babel/helper-validator-identifier': 7.27.1
- js-tokens: 4.0.0
- picocolors: 1.1.1
-
- '@babel/generator@7.27.1':
- dependencies:
- '@babel/parser': 7.27.1
- '@babel/types': 7.27.1
- '@jridgewell/gen-mapping': 0.3.8
- '@jridgewell/trace-mapping': 0.3.25
- jsesc: 3.1.0
-
- '@babel/helper-module-imports@7.27.1':
- dependencies:
- '@babel/traverse': 7.27.1
- '@babel/types': 7.27.1
- transitivePeerDependencies:
- - supports-color
-
- '@babel/helper-string-parser@7.27.1': {}
-
- '@babel/helper-validator-identifier@7.27.1': {}
-
- '@babel/parser@7.27.1':
- dependencies:
- '@babel/types': 7.27.1
-
- '@babel/runtime@7.27.1': {}
-
- '@babel/template@7.27.1':
- dependencies:
- '@babel/code-frame': 7.27.1
- '@babel/parser': 7.27.1
- '@babel/types': 7.27.1
-
- '@babel/traverse@7.27.1':
- dependencies:
- '@babel/code-frame': 7.27.1
- '@babel/generator': 7.27.1
- '@babel/parser': 7.27.1
- '@babel/template': 7.27.1
- '@babel/types': 7.27.1
- debug: 4.4.0
- globals: 11.12.0
- transitivePeerDependencies:
- - supports-color
-
- '@babel/types@7.27.1':
- dependencies:
- '@babel/helper-string-parser': 7.27.1
- '@babel/helper-validator-identifier': 7.27.1
-
- '@emnapi/core@1.4.3':
- dependencies:
- '@emnapi/wasi-threads': 1.0.2
- tslib: 2.8.1
- optional: true
-
- '@emnapi/runtime@1.4.3':
- dependencies:
- tslib: 2.8.1
- optional: true
-
- '@emnapi/wasi-threads@1.0.2':
- dependencies:
- tslib: 2.8.1
- optional: true
-
- '@emotion/babel-plugin@11.13.5':
- dependencies:
- '@babel/helper-module-imports': 7.27.1
- '@babel/runtime': 7.27.1
- '@emotion/hash': 0.9.2
- '@emotion/memoize': 0.9.0
- '@emotion/serialize': 1.3.3
- babel-plugin-macros: 3.1.0
- convert-source-map: 1.9.0
- escape-string-regexp: 4.0.0
- find-root: 1.1.0
- source-map: 0.5.7
- stylis: 4.2.0
- transitivePeerDependencies:
- - supports-color
-
- '@emotion/cache@11.14.0':
- dependencies:
- '@emotion/memoize': 0.9.0
- '@emotion/sheet': 1.4.0
- '@emotion/utils': 1.4.2
- '@emotion/weak-memoize': 0.4.0
- stylis: 4.2.0
-
- '@emotion/hash@0.9.2': {}
-
- '@emotion/is-prop-valid@1.3.1':
- dependencies:
- '@emotion/memoize': 0.9.0
-
- '@emotion/memoize@0.9.0': {}
-
- '@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0)':
- dependencies:
- '@babel/runtime': 7.27.1
- '@emotion/babel-plugin': 11.13.5
- '@emotion/cache': 11.14.0
- '@emotion/serialize': 1.3.3
- '@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@19.1.0)
- '@emotion/utils': 1.4.2
- '@emotion/weak-memoize': 0.4.0
- hoist-non-react-statics: 3.3.2
- react: 19.1.0
- optionalDependencies:
- '@types/react': 19.1.2
- transitivePeerDependencies:
- - supports-color
-
- '@emotion/serialize@1.3.3':
- dependencies:
- '@emotion/hash': 0.9.2
- '@emotion/memoize': 0.9.0
- '@emotion/unitless': 0.10.0
- '@emotion/utils': 1.4.2
- csstype: 3.1.3
-
- '@emotion/sheet@1.4.0': {}
-
- '@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react@19.1.0)':
- dependencies:
- '@babel/runtime': 7.27.1
- '@emotion/babel-plugin': 11.13.5
- '@emotion/is-prop-valid': 1.3.1
- '@emotion/react': 11.14.0(@types/react@19.1.2)(react@19.1.0)
- '@emotion/serialize': 1.3.3
- '@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@19.1.0)
- '@emotion/utils': 1.4.2
- react: 19.1.0
- optionalDependencies:
- '@types/react': 19.1.2
- transitivePeerDependencies:
- - supports-color
-
- '@emotion/unitless@0.10.0': {}
-
- '@emotion/use-insertion-effect-with-fallbacks@1.2.0(react@19.1.0)':
- dependencies:
- react: 19.1.0
-
- '@emotion/utils@1.4.2': {}
-
- '@emotion/weak-memoize@0.4.0': {}
-
- '@eslint-community/eslint-utils@4.7.0(eslint@9.26.0)':
- dependencies:
- eslint: 9.26.0
- eslint-visitor-keys: 3.4.3
-
- '@eslint-community/regexpp@4.12.1': {}
-
- '@eslint/config-array@0.20.0':
- dependencies:
- '@eslint/object-schema': 2.1.6
- debug: 4.4.0
- minimatch: 3.1.2
- transitivePeerDependencies:
- - supports-color
-
- '@eslint/config-helpers@0.2.2': {}
-
- '@eslint/core@0.13.0':
- dependencies:
- '@types/json-schema': 7.0.15
-
- '@eslint/eslintrc@3.3.1':
- dependencies:
- ajv: 6.12.6
- debug: 4.4.0
- espree: 10.3.0
- globals: 14.0.0
- ignore: 5.3.2
- import-fresh: 3.3.1
- js-yaml: 4.1.0
- minimatch: 3.1.2
- strip-json-comments: 3.1.1
- transitivePeerDependencies:
- - supports-color
-
- '@eslint/js@9.26.0': {}
-
- '@eslint/object-schema@2.1.6': {}
-
- '@eslint/plugin-kit@0.2.8':
- dependencies:
- '@eslint/core': 0.13.0
- levn: 0.4.1
-
- '@hookform/resolvers@5.0.1(react-hook-form@7.56.2(react@19.1.0))':
- dependencies:
- '@standard-schema/utils': 0.3.0
- react-hook-form: 7.56.2(react@19.1.0)
-
- '@humanfs/core@0.19.1': {}
-
- '@humanfs/node@0.16.6':
- dependencies:
- '@humanfs/core': 0.19.1
- '@humanwhocodes/retry': 0.3.1
-
- '@humanwhocodes/module-importer@1.0.1': {}
-
- '@humanwhocodes/retry@0.3.1': {}
-
- '@humanwhocodes/retry@0.4.2': {}
-
- '@img/sharp-darwin-arm64@0.34.1':
- optionalDependencies:
- '@img/sharp-libvips-darwin-arm64': 1.1.0
- optional: true
-
- '@img/sharp-darwin-x64@0.34.1':
- optionalDependencies:
- '@img/sharp-libvips-darwin-x64': 1.1.0
- optional: true
-
- '@img/sharp-libvips-darwin-arm64@1.1.0':
- optional: true
-
- '@img/sharp-libvips-darwin-x64@1.1.0':
- optional: true
-
- '@img/sharp-libvips-linux-arm64@1.1.0':
- optional: true
-
- '@img/sharp-libvips-linux-arm@1.1.0':
- optional: true
-
- '@img/sharp-libvips-linux-ppc64@1.1.0':
- optional: true
-
- '@img/sharp-libvips-linux-s390x@1.1.0':
- optional: true
-
- '@img/sharp-libvips-linux-x64@1.1.0':
- optional: true
-
- '@img/sharp-libvips-linuxmusl-arm64@1.1.0':
- optional: true
-
- '@img/sharp-libvips-linuxmusl-x64@1.1.0':
- optional: true
-
- '@img/sharp-linux-arm64@0.34.1':
- optionalDependencies:
- '@img/sharp-libvips-linux-arm64': 1.1.0
- optional: true
-
- '@img/sharp-linux-arm@0.34.1':
- optionalDependencies:
- '@img/sharp-libvips-linux-arm': 1.1.0
- optional: true
-
- '@img/sharp-linux-s390x@0.34.1':
- optionalDependencies:
- '@img/sharp-libvips-linux-s390x': 1.1.0
- optional: true
-
- '@img/sharp-linux-x64@0.34.1':
- optionalDependencies:
- '@img/sharp-libvips-linux-x64': 1.1.0
- optional: true
-
- '@img/sharp-linuxmusl-arm64@0.34.1':
- optionalDependencies:
- '@img/sharp-libvips-linuxmusl-arm64': 1.1.0
- optional: true
-
- '@img/sharp-linuxmusl-x64@0.34.1':
- optionalDependencies:
- '@img/sharp-libvips-linuxmusl-x64': 1.1.0
- optional: true
-
- '@img/sharp-wasm32@0.34.1':
- dependencies:
- '@emnapi/runtime': 1.4.3
- optional: true
-
- '@img/sharp-win32-ia32@0.34.1':
- optional: true
-
- '@img/sharp-win32-x64@0.34.1':
- optional: true
-
- '@jridgewell/gen-mapping@0.3.8':
- 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
-
- '@modelcontextprotocol/sdk@1.11.0':
- dependencies:
- content-type: 1.0.5
- cors: 2.8.5
- cross-spawn: 7.0.6
- eventsource: 3.0.6
- express: 5.1.0
- express-rate-limit: 7.5.0(express@5.1.0)
- pkce-challenge: 5.0.0
- raw-body: 3.0.0
- zod: 3.24.4
- zod-to-json-schema: 3.24.5(zod@3.24.4)
- transitivePeerDependencies:
- - supports-color
-
- '@mui/core-downloads-tracker@7.0.2': {}
-
- '@mui/icons-material@7.0.2(@mui/material@7.0.2(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@types/react@19.1.2)(react@19.1.0)':
- dependencies:
- '@babel/runtime': 7.27.1
- '@mui/material': 7.0.2(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
- react: 19.1.0
- optionalDependencies:
- '@types/react': 19.1.2
-
- '@mui/material-nextjs@7.0.2(@emotion/cache@11.14.0)(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(next@15.3.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.87.0))(react@19.1.0)':
- dependencies:
- '@babel/runtime': 7.27.1
- '@emotion/react': 11.14.0(@types/react@19.1.2)(react@19.1.0)
- next: 15.3.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.87.0)
- react: 19.1.0
- optionalDependencies:
- '@emotion/cache': 11.14.0
- '@types/react': 19.1.2
-
- '@mui/material@7.0.2(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)':
- dependencies:
- '@babel/runtime': 7.27.1
- '@mui/core-downloads-tracker': 7.0.2
- '@mui/system': 7.0.2(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react@19.1.0)
- '@mui/types': 7.4.1(@types/react@19.1.2)
- '@mui/utils': 7.0.2(@types/react@19.1.2)(react@19.1.0)
- '@popperjs/core': 2.11.8
- '@types/react-transition-group': 4.4.12(@types/react@19.1.2)
- clsx: 2.1.1
- csstype: 3.1.3
- prop-types: 15.8.1
- react: 19.1.0
- react-dom: 19.1.0(react@19.1.0)
- react-is: 19.1.0
- react-transition-group: 4.4.5(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
- optionalDependencies:
- '@emotion/react': 11.14.0(@types/react@19.1.2)(react@19.1.0)
- '@emotion/styled': 11.14.0(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react@19.1.0)
- '@types/react': 19.1.2
-
- '@mui/private-theming@7.0.2(@types/react@19.1.2)(react@19.1.0)':
- dependencies:
- '@babel/runtime': 7.27.1
- '@mui/utils': 7.0.2(@types/react@19.1.2)(react@19.1.0)
- prop-types: 15.8.1
- react: 19.1.0
- optionalDependencies:
- '@types/react': 19.1.2
-
- '@mui/styled-engine@7.0.2(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react@19.1.0))(react@19.1.0)':
- dependencies:
- '@babel/runtime': 7.27.1
- '@emotion/cache': 11.14.0
- '@emotion/serialize': 1.3.3
- '@emotion/sheet': 1.4.0
- csstype: 3.1.3
- prop-types: 15.8.1
- react: 19.1.0
- optionalDependencies:
- '@emotion/react': 11.14.0(@types/react@19.1.2)(react@19.1.0)
- '@emotion/styled': 11.14.0(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react@19.1.0)
-
- '@mui/system@7.0.2(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react@19.1.0)':
- dependencies:
- '@babel/runtime': 7.27.1
- '@mui/private-theming': 7.0.2(@types/react@19.1.2)(react@19.1.0)
- '@mui/styled-engine': 7.0.2(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react@19.1.0))(react@19.1.0)
- '@mui/types': 7.4.1(@types/react@19.1.2)
- '@mui/utils': 7.0.2(@types/react@19.1.2)(react@19.1.0)
- clsx: 2.1.1
- csstype: 3.1.3
- prop-types: 15.8.1
- react: 19.1.0
- optionalDependencies:
- '@emotion/react': 11.14.0(@types/react@19.1.2)(react@19.1.0)
- '@emotion/styled': 11.14.0(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react@19.1.0)
- '@types/react': 19.1.2
-
- '@mui/types@7.4.1(@types/react@19.1.2)':
- dependencies:
- '@babel/runtime': 7.27.1
- optionalDependencies:
- '@types/react': 19.1.2
-
- '@mui/utils@7.0.2(@types/react@19.1.2)(react@19.1.0)':
- dependencies:
- '@babel/runtime': 7.27.1
- '@mui/types': 7.4.1(@types/react@19.1.2)
- '@types/prop-types': 15.7.14
- clsx: 2.1.1
- prop-types: 15.8.1
- react: 19.1.0
- react-is: 19.1.0
- optionalDependencies:
- '@types/react': 19.1.2
-
- '@mui/x-date-pickers@8.2.0(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react@19.1.0))(@mui/material@7.0.2(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mui/system@7.0.2(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(date-fns-jalali@4.1.0-0)(moment@2.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)':
- dependencies:
- '@babel/runtime': 7.27.1
- '@mui/material': 7.0.2(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
- '@mui/system': 7.0.2(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react@19.1.0)
- '@mui/utils': 7.0.2(@types/react@19.1.2)(react@19.1.0)
- '@mui/x-internals': 8.2.0(@types/react@19.1.2)(react@19.1.0)
- '@types/react-transition-group': 4.4.12(@types/react@19.1.2)
- clsx: 2.1.1
- prop-types: 15.8.1
- react: 19.1.0
- react-dom: 19.1.0(react@19.1.0)
- react-transition-group: 4.4.5(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
- optionalDependencies:
- '@emotion/react': 11.14.0(@types/react@19.1.2)(react@19.1.0)
- '@emotion/styled': 11.14.0(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react@19.1.0)
- date-fns-jalali: 4.1.0-0
- moment: 2.30.1
- transitivePeerDependencies:
- - '@types/react'
-
- '@mui/x-internals@8.2.0(@types/react@19.1.2)(react@19.1.0)':
- dependencies:
- '@babel/runtime': 7.27.1
- '@mui/utils': 7.0.2(@types/react@19.1.2)(react@19.1.0)
- react: 19.1.0
- transitivePeerDependencies:
- - '@types/react'
-
- '@mui/x-tree-view@8.2.0(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react@19.1.0))(@mui/material@7.0.2(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mui/system@7.0.2(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)':
- dependencies:
- '@babel/runtime': 7.27.1
- '@mui/material': 7.0.2(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
- '@mui/system': 7.0.2(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react@19.1.0)
- '@mui/utils': 7.0.2(@types/react@19.1.2)(react@19.1.0)
- '@mui/x-internals': 8.2.0(@types/react@19.1.2)(react@19.1.0)
- '@types/react-transition-group': 4.4.12(@types/react@19.1.2)
- clsx: 2.1.1
- prop-types: 15.8.1
- react: 19.1.0
- react-dom: 19.1.0(react@19.1.0)
- react-transition-group: 4.4.5(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
- reselect: 5.1.1
- use-sync-external-store: 1.5.0(react@19.1.0)
- optionalDependencies:
- '@emotion/react': 11.14.0(@types/react@19.1.2)(react@19.1.0)
- '@emotion/styled': 11.14.0(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react@19.1.0)
- transitivePeerDependencies:
- - '@types/react'
-
- '@napi-rs/wasm-runtime@0.2.9':
- dependencies:
- '@emnapi/core': 1.4.3
- '@emnapi/runtime': 1.4.3
- '@tybys/wasm-util': 0.9.0
- optional: true
-
- '@next/env@15.3.1': {}
-
- '@next/eslint-plugin-next@15.3.1':
- dependencies:
- fast-glob: 3.3.1
-
- '@next/swc-darwin-arm64@15.3.1':
- optional: true
-
- '@next/swc-darwin-x64@15.3.1':
- optional: true
-
- '@next/swc-linux-arm64-gnu@15.3.1':
- optional: true
-
- '@next/swc-linux-arm64-musl@15.3.1':
- optional: true
-
- '@next/swc-linux-x64-gnu@15.3.1':
- optional: true
-
- '@next/swc-linux-x64-musl@15.3.1':
- optional: true
-
- '@next/swc-win32-arm64-msvc@15.3.1':
- optional: true
-
- '@next/swc-win32-x64-msvc@15.3.1':
- optional: true
-
- '@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.19.1
-
- '@nolyfill/is-core-module@1.0.39': {}
-
- '@parcel/watcher-android-arm64@2.5.1':
- optional: true
-
- '@parcel/watcher-darwin-arm64@2.5.1':
- optional: true
-
- '@parcel/watcher-darwin-x64@2.5.1':
- optional: true
-
- '@parcel/watcher-freebsd-x64@2.5.1':
- optional: true
+ "@parcel/watcher-linux-arm-glibc@2.5.1":
+ optional: true
- '@parcel/watcher-linux-arm-glibc@2.5.1':
- optional: true
+ "@parcel/watcher-linux-arm-musl@2.5.1":
+ optional: true
- '@parcel/watcher-linux-arm-musl@2.5.1':
- optional: true
+ "@parcel/watcher-linux-arm64-glibc@2.5.1":
+ optional: true
- '@parcel/watcher-linux-arm64-glibc@2.5.1':
- optional: true
+ "@parcel/watcher-linux-arm64-musl@2.5.1":
+ optional: true
- '@parcel/watcher-linux-arm64-musl@2.5.1':
- optional: true
+ "@parcel/watcher-linux-x64-glibc@2.5.1":
+ optional: true
- '@parcel/watcher-linux-x64-glibc@2.5.1':
- optional: true
+ "@parcel/watcher-linux-x64-musl@2.5.1":
+ optional: true
- '@parcel/watcher-linux-x64-musl@2.5.1':
- optional: true
+ "@parcel/watcher-win32-arm64@2.5.1":
+ optional: true
- '@parcel/watcher-win32-arm64@2.5.1':
- optional: true
+ "@parcel/watcher-win32-ia32@2.5.1":
+ optional: true
- '@parcel/watcher-win32-ia32@2.5.1':
- optional: true
+ "@parcel/watcher-win32-x64@2.5.1":
+ optional: true
- '@parcel/watcher-win32-x64@2.5.1':
- optional: true
+ "@parcel/watcher@2.5.1":
+ dependencies:
+ detect-libc: 1.0.3
+ is-glob: 4.0.3
+ micromatch: 4.0.8
+ node-addon-api: 7.1.1
+ optionalDependencies:
+ "@parcel/watcher-android-arm64": 2.5.1
+ "@parcel/watcher-darwin-arm64": 2.5.1
+ "@parcel/watcher-darwin-x64": 2.5.1
+ "@parcel/watcher-freebsd-x64": 2.5.1
+ "@parcel/watcher-linux-arm-glibc": 2.5.1
+ "@parcel/watcher-linux-arm-musl": 2.5.1
+ "@parcel/watcher-linux-arm64-glibc": 2.5.1
+ "@parcel/watcher-linux-arm64-musl": 2.5.1
+ "@parcel/watcher-linux-x64-glibc": 2.5.1
+ "@parcel/watcher-linux-x64-musl": 2.5.1
+ "@parcel/watcher-win32-arm64": 2.5.1
+ "@parcel/watcher-win32-ia32": 2.5.1
+ "@parcel/watcher-win32-x64": 2.5.1
+ optional: true
- '@parcel/watcher@2.5.1':
- dependencies:
- detect-libc: 1.0.3
- is-glob: 4.0.3
- micromatch: 4.0.8
- node-addon-api: 7.1.1
- optionalDependencies:
- '@parcel/watcher-android-arm64': 2.5.1
- '@parcel/watcher-darwin-arm64': 2.5.1
- '@parcel/watcher-darwin-x64': 2.5.1
- '@parcel/watcher-freebsd-x64': 2.5.1
- '@parcel/watcher-linux-arm-glibc': 2.5.1
- '@parcel/watcher-linux-arm-musl': 2.5.1
- '@parcel/watcher-linux-arm64-glibc': 2.5.1
- '@parcel/watcher-linux-arm64-musl': 2.5.1
- '@parcel/watcher-linux-x64-glibc': 2.5.1
- '@parcel/watcher-linux-x64-musl': 2.5.1
- '@parcel/watcher-win32-arm64': 2.5.1
- '@parcel/watcher-win32-ia32': 2.5.1
- '@parcel/watcher-win32-x64': 2.5.1
- optional: true
+ "@popperjs/core@2.11.8": {}
+
+ "@rtsao/scc@1.1.0": {}
- '@popperjs/core@2.11.8': {}
-
- '@rtsao/scc@1.1.0': {}
+ "@rushstack/eslint-patch@1.11.0": {}
- '@rushstack/eslint-patch@1.11.0': {}
+ "@socket.io/component-emitter@3.1.2": {}
+
+ "@standard-schema/utils@0.3.0": {}
+
+ "@swc/counter@0.1.3": {}
+
+ "@swc/helpers@0.5.15":
+ dependencies:
+ tslib: 2.8.1
+
+ "@tanstack/match-sorter-utils@8.19.4":
+ dependencies:
+ remove-accents: 0.5.0
+
+ "@tanstack/react-table@8.20.6(react-dom@19.1.0(react@19.1.0))(react@19.1.0)":
+ dependencies:
+ "@tanstack/table-core": 8.20.5
+ react: 19.1.0
+ react-dom: 19.1.0(react@19.1.0)
+
+ "@tanstack/react-virtual@3.11.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0)":
+ dependencies:
+ "@tanstack/virtual-core": 3.11.2
+ react: 19.1.0
+ react-dom: 19.1.0(react@19.1.0)
+
+ "@tanstack/table-core@8.20.5": {}
+
+ "@tanstack/virtual-core@3.11.2": {}
+
+ "@tybys/wasm-util@0.9.0":
+ dependencies:
+ tslib: 2.8.1
+ optional: true
+
+ "@types/estree@1.0.7": {}
+
+ "@types/json-schema@7.0.15": {}
+
+ "@types/json5@0.0.29": {}
+
+ "@types/parse-json@4.0.2": {}
+
+ "@types/prop-types@15.7.14": {}
+
+ "@types/react-transition-group@4.4.12(@types/react@19.1.2)":
+ dependencies:
+ "@types/react": 19.1.2
+
+ "@types/react@19.1.2":
+ dependencies:
+ csstype: 3.1.3
+
+ "@typescript-eslint/eslint-plugin@8.31.1(@typescript-eslint/parser@8.31.1(eslint@9.26.0)(typescript@5.8.3))(eslint@9.26.0)(typescript@5.8.3)":
+ dependencies:
+ "@eslint-community/regexpp": 4.12.1
+ "@typescript-eslint/parser": 8.31.1(eslint@9.26.0)(typescript@5.8.3)
+ "@typescript-eslint/scope-manager": 8.31.1
+ "@typescript-eslint/type-utils": 8.31.1(eslint@9.26.0)(typescript@5.8.3)
+ "@typescript-eslint/utils": 8.31.1(eslint@9.26.0)(typescript@5.8.3)
+ "@typescript-eslint/visitor-keys": 8.31.1
+ eslint: 9.26.0
+ graphemer: 1.4.0
+ ignore: 5.3.2
+ natural-compare: 1.4.0
+ ts-api-utils: 2.1.0(typescript@5.8.3)
+ typescript: 5.8.3
+ transitivePeerDependencies:
+ - supports-color
+
+ "@typescript-eslint/parser@8.31.1(eslint@9.26.0)(typescript@5.8.3)":
+ dependencies:
+ "@typescript-eslint/scope-manager": 8.31.1
+ "@typescript-eslint/types": 8.31.1
+ "@typescript-eslint/typescript-estree": 8.31.1(typescript@5.8.3)
+ "@typescript-eslint/visitor-keys": 8.31.1
+ debug: 4.4.0
+ eslint: 9.26.0
+ typescript: 5.8.3
+ transitivePeerDependencies:
+ - supports-color
+
+ "@typescript-eslint/scope-manager@8.31.1":
+ dependencies:
+ "@typescript-eslint/types": 8.31.1
+ "@typescript-eslint/visitor-keys": 8.31.1
+
+ "@typescript-eslint/type-utils@8.31.1(eslint@9.26.0)(typescript@5.8.3)":
+ dependencies:
+ "@typescript-eslint/typescript-estree": 8.31.1(typescript@5.8.3)
+ "@typescript-eslint/utils": 8.31.1(eslint@9.26.0)(typescript@5.8.3)
+ debug: 4.4.0
+ eslint: 9.26.0
+ ts-api-utils: 2.1.0(typescript@5.8.3)
+ typescript: 5.8.3
+ transitivePeerDependencies:
+ - supports-color
+
+ "@typescript-eslint/types@8.31.1": {}
+
+ "@typescript-eslint/typescript-estree@8.31.1(typescript@5.8.3)":
+ dependencies:
+ "@typescript-eslint/types": 8.31.1
+ "@typescript-eslint/visitor-keys": 8.31.1
+ debug: 4.4.0
+ fast-glob: 3.3.3
+ is-glob: 4.0.3
+ minimatch: 9.0.5
+ semver: 7.7.1
+ ts-api-utils: 2.1.0(typescript@5.8.3)
+ typescript: 5.8.3
+ transitivePeerDependencies:
+ - supports-color
+
+ "@typescript-eslint/utils@8.31.1(eslint@9.26.0)(typescript@5.8.3)":
+ dependencies:
+ "@eslint-community/eslint-utils": 4.7.0(eslint@9.26.0)
+ "@typescript-eslint/scope-manager": 8.31.1
+ "@typescript-eslint/types": 8.31.1
+ "@typescript-eslint/typescript-estree": 8.31.1(typescript@5.8.3)
+ eslint: 9.26.0
+ typescript: 5.8.3
+ transitivePeerDependencies:
+ - supports-color
+
+ "@typescript-eslint/visitor-keys@8.31.1":
+ dependencies:
+ "@typescript-eslint/types": 8.31.1
+ eslint-visitor-keys: 4.2.0
+
+ "@unrs/resolver-binding-darwin-arm64@1.7.2":
+ optional: true
+
+ "@unrs/resolver-binding-darwin-x64@1.7.2":
+ optional: true
+
+ "@unrs/resolver-binding-freebsd-x64@1.7.2":
+ optional: true
+
+ "@unrs/resolver-binding-linux-arm-gnueabihf@1.7.2":
+ optional: true
+
+ "@unrs/resolver-binding-linux-arm-musleabihf@1.7.2":
+ optional: true
+
+ "@unrs/resolver-binding-linux-arm64-gnu@1.7.2":
+ optional: true
+
+ "@unrs/resolver-binding-linux-arm64-musl@1.7.2":
+ optional: true
+
+ "@unrs/resolver-binding-linux-ppc64-gnu@1.7.2":
+ optional: true
+
+ "@unrs/resolver-binding-linux-riscv64-gnu@1.7.2":
+ optional: true
+
+ "@unrs/resolver-binding-linux-riscv64-musl@1.7.2":
+ optional: true
+
+ "@unrs/resolver-binding-linux-s390x-gnu@1.7.2":
+ optional: true
+
+ "@unrs/resolver-binding-linux-x64-gnu@1.7.2":
+ optional: true
+
+ "@unrs/resolver-binding-linux-x64-musl@1.7.2":
+ optional: true
+
+ "@unrs/resolver-binding-wasm32-wasi@1.7.2":
+ dependencies:
+ "@napi-rs/wasm-runtime": 0.2.9
+ optional: true
+
+ "@unrs/resolver-binding-win32-arm64-msvc@1.7.2":
+ optional: true
+
+ "@unrs/resolver-binding-win32-ia32-msvc@1.7.2":
+ optional: true
+
+ "@unrs/resolver-binding-win32-x64-msvc@1.7.2":
+ optional: true
+
+ accepts@2.0.0:
+ dependencies:
+ mime-types: 3.0.1
+ negotiator: 1.0.0
+
+ acorn-jsx@5.3.2(acorn@8.14.1):
+ dependencies:
+ acorn: 8.14.1
+
+ acorn@8.14.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@4.3.2:
+ dependencies:
+ type-fest: 0.21.3
+
+ ansi-regex@5.0.1: {}
+
+ ansi-styles@4.3.0:
+ dependencies:
+ color-convert: 2.0.1
+
+ argparse@2.0.1: {}
+
+ aria-query@5.3.2: {}
+
+ array-buffer-byte-length@1.0.2:
+ dependencies:
+ call-bound: 1.0.4
+ is-array-buffer: 3.0.5
+
+ array-includes@3.1.8:
+ dependencies:
+ call-bind: 1.0.8
+ define-properties: 1.2.1
+ es-abstract: 1.23.9
+ es-object-atoms: 1.1.1
+ get-intrinsic: 1.3.0
+ is-string: 1.1.1
+
+ array.prototype.findlast@1.2.5:
+ dependencies:
+ call-bind: 1.0.8
+ define-properties: 1.2.1
+ es-abstract: 1.23.9
+ es-errors: 1.3.0
+ es-object-atoms: 1.1.1
+ es-shim-unscopables: 1.1.0
+
+ array.prototype.findlastindex@1.2.6:
+ dependencies:
+ call-bind: 1.0.8
+ call-bound: 1.0.4
+ define-properties: 1.2.1
+ es-abstract: 1.23.9
+ es-errors: 1.3.0
+ es-object-atoms: 1.1.1
+ es-shim-unscopables: 1.1.0
+
+ array.prototype.flat@1.3.3:
+ dependencies:
+ call-bind: 1.0.8
+ define-properties: 1.2.1
+ es-abstract: 1.23.9
+ es-shim-unscopables: 1.1.0
+
+ array.prototype.flatmap@1.3.3:
+ dependencies:
+ call-bind: 1.0.8
+ define-properties: 1.2.1
+ es-abstract: 1.23.9
+ es-shim-unscopables: 1.1.0
+
+ array.prototype.tosorted@1.1.4:
+ dependencies:
+ call-bind: 1.0.8
+ define-properties: 1.2.1
+ es-abstract: 1.23.9
+ es-errors: 1.3.0
+ es-shim-unscopables: 1.1.0
+
+ arraybuffer.prototype.slice@1.0.4:
+ dependencies:
+ array-buffer-byte-length: 1.0.2
+ call-bind: 1.0.8
+ define-properties: 1.2.1
+ es-abstract: 1.23.9
+ es-errors: 1.3.0
+ get-intrinsic: 1.3.0
+ is-array-buffer: 3.0.5
+
+ ast-types-flow@0.0.8: {}
+
+ async-function@1.0.0: {}
+
+ asynckit@0.4.0: {}
+
+ available-typed-arrays@1.0.7:
+ dependencies:
+ possible-typed-array-names: 1.1.0
+
+ axe-core@4.10.3: {}
+
+ axios@1.9.0:
+ dependencies:
+ follow-redirects: 1.15.9
+ form-data: 4.0.2
+ proxy-from-env: 1.1.0
+ transitivePeerDependencies:
+ - debug
+
+ axobject-query@4.1.0: {}
+
+ babel-plugin-macros@3.1.0:
+ dependencies:
+ "@babel/runtime": 7.27.1
+ cosmiconfig: 7.1.0
+ resolve: 1.22.10
+
+ balanced-match@1.0.2: {}
+
+ base64-js@1.5.1: {}
+
+ bl@4.1.0:
+ dependencies:
+ buffer: 5.7.1
+ inherits: 2.0.4
+ readable-stream: 3.6.2
+
+ body-parser@2.2.0:
+ dependencies:
+ bytes: 3.1.2
+ content-type: 1.0.5
+ debug: 4.4.0
+ http-errors: 2.0.0
+ iconv-lite: 0.6.3
+ on-finished: 2.4.1
+ qs: 6.14.0
+ raw-body: 3.0.0
+ type-is: 2.0.1
+ transitivePeerDependencies:
+ - supports-color
+
+ brace-expansion@1.1.11:
+ dependencies:
+ balanced-match: 1.0.2
+ concat-map: 0.0.1
+
+ brace-expansion@2.0.1:
+ dependencies:
+ balanced-match: 1.0.2
+
+ braces@3.0.3:
+ dependencies:
+ fill-range: 7.1.1
- '@socket.io/component-emitter@3.1.2': {}
-
- '@standard-schema/utils@0.3.0': {}
-
- '@swc/counter@0.1.3': {}
-
- '@swc/helpers@0.5.15':
- dependencies:
- tslib: 2.8.1
-
- '@tanstack/match-sorter-utils@8.19.4':
- dependencies:
- remove-accents: 0.5.0
-
- '@tanstack/react-table@8.20.6(react-dom@19.1.0(react@19.1.0))(react@19.1.0)':
- dependencies:
- '@tanstack/table-core': 8.20.5
- react: 19.1.0
- react-dom: 19.1.0(react@19.1.0)
-
- '@tanstack/react-virtual@3.11.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0)':
- dependencies:
- '@tanstack/virtual-core': 3.11.2
- react: 19.1.0
- react-dom: 19.1.0(react@19.1.0)
-
- '@tanstack/table-core@8.20.5': {}
-
- '@tanstack/virtual-core@3.11.2': {}
-
- '@tybys/wasm-util@0.9.0':
- dependencies:
- tslib: 2.8.1
- optional: true
-
- '@types/estree@1.0.7': {}
-
- '@types/json-schema@7.0.15': {}
-
- '@types/json5@0.0.29': {}
-
- '@types/parse-json@4.0.2': {}
-
- '@types/prop-types@15.7.14': {}
-
- '@types/react-transition-group@4.4.12(@types/react@19.1.2)':
- dependencies:
- '@types/react': 19.1.2
-
- '@types/react@19.1.2':
- dependencies:
- csstype: 3.1.3
-
- '@typescript-eslint/eslint-plugin@8.31.1(@typescript-eslint/parser@8.31.1(eslint@9.26.0)(typescript@5.8.3))(eslint@9.26.0)(typescript@5.8.3)':
- dependencies:
- '@eslint-community/regexpp': 4.12.1
- '@typescript-eslint/parser': 8.31.1(eslint@9.26.0)(typescript@5.8.3)
- '@typescript-eslint/scope-manager': 8.31.1
- '@typescript-eslint/type-utils': 8.31.1(eslint@9.26.0)(typescript@5.8.3)
- '@typescript-eslint/utils': 8.31.1(eslint@9.26.0)(typescript@5.8.3)
- '@typescript-eslint/visitor-keys': 8.31.1
- eslint: 9.26.0
- graphemer: 1.4.0
- ignore: 5.3.2
- natural-compare: 1.4.0
- ts-api-utils: 2.1.0(typescript@5.8.3)
- typescript: 5.8.3
- transitivePeerDependencies:
- - supports-color
-
- '@typescript-eslint/parser@8.31.1(eslint@9.26.0)(typescript@5.8.3)':
- dependencies:
- '@typescript-eslint/scope-manager': 8.31.1
- '@typescript-eslint/types': 8.31.1
- '@typescript-eslint/typescript-estree': 8.31.1(typescript@5.8.3)
- '@typescript-eslint/visitor-keys': 8.31.1
- debug: 4.4.0
- eslint: 9.26.0
- typescript: 5.8.3
- transitivePeerDependencies:
- - supports-color
-
- '@typescript-eslint/scope-manager@8.31.1':
- dependencies:
- '@typescript-eslint/types': 8.31.1
- '@typescript-eslint/visitor-keys': 8.31.1
-
- '@typescript-eslint/type-utils@8.31.1(eslint@9.26.0)(typescript@5.8.3)':
- dependencies:
- '@typescript-eslint/typescript-estree': 8.31.1(typescript@5.8.3)
- '@typescript-eslint/utils': 8.31.1(eslint@9.26.0)(typescript@5.8.3)
- debug: 4.4.0
- eslint: 9.26.0
- ts-api-utils: 2.1.0(typescript@5.8.3)
- typescript: 5.8.3
- transitivePeerDependencies:
- - supports-color
-
- '@typescript-eslint/types@8.31.1': {}
-
- '@typescript-eslint/typescript-estree@8.31.1(typescript@5.8.3)':
- dependencies:
- '@typescript-eslint/types': 8.31.1
- '@typescript-eslint/visitor-keys': 8.31.1
- debug: 4.4.0
- fast-glob: 3.3.3
- is-glob: 4.0.3
- minimatch: 9.0.5
- semver: 7.7.1
- ts-api-utils: 2.1.0(typescript@5.8.3)
- typescript: 5.8.3
- transitivePeerDependencies:
- - supports-color
-
- '@typescript-eslint/utils@8.31.1(eslint@9.26.0)(typescript@5.8.3)':
- dependencies:
- '@eslint-community/eslint-utils': 4.7.0(eslint@9.26.0)
- '@typescript-eslint/scope-manager': 8.31.1
- '@typescript-eslint/types': 8.31.1
- '@typescript-eslint/typescript-estree': 8.31.1(typescript@5.8.3)
- eslint: 9.26.0
- typescript: 5.8.3
- transitivePeerDependencies:
- - supports-color
-
- '@typescript-eslint/visitor-keys@8.31.1':
- dependencies:
- '@typescript-eslint/types': 8.31.1
- eslint-visitor-keys: 4.2.0
-
- '@unrs/resolver-binding-darwin-arm64@1.7.2':
- optional: true
-
- '@unrs/resolver-binding-darwin-x64@1.7.2':
- optional: true
-
- '@unrs/resolver-binding-freebsd-x64@1.7.2':
- optional: true
-
- '@unrs/resolver-binding-linux-arm-gnueabihf@1.7.2':
- optional: true
-
- '@unrs/resolver-binding-linux-arm-musleabihf@1.7.2':
- optional: true
-
- '@unrs/resolver-binding-linux-arm64-gnu@1.7.2':
- optional: true
-
- '@unrs/resolver-binding-linux-arm64-musl@1.7.2':
- optional: true
-
- '@unrs/resolver-binding-linux-ppc64-gnu@1.7.2':
- optional: true
-
- '@unrs/resolver-binding-linux-riscv64-gnu@1.7.2':
- optional: true
-
- '@unrs/resolver-binding-linux-riscv64-musl@1.7.2':
- optional: true
-
- '@unrs/resolver-binding-linux-s390x-gnu@1.7.2':
- optional: true
-
- '@unrs/resolver-binding-linux-x64-gnu@1.7.2':
- optional: true
-
- '@unrs/resolver-binding-linux-x64-musl@1.7.2':
- optional: true
-
- '@unrs/resolver-binding-wasm32-wasi@1.7.2':
- dependencies:
- '@napi-rs/wasm-runtime': 0.2.9
- optional: true
-
- '@unrs/resolver-binding-win32-arm64-msvc@1.7.2':
- optional: true
-
- '@unrs/resolver-binding-win32-ia32-msvc@1.7.2':
- optional: true
-
- '@unrs/resolver-binding-win32-x64-msvc@1.7.2':
- optional: true
-
- accepts@2.0.0:
- dependencies:
- mime-types: 3.0.1
- negotiator: 1.0.0
-
- acorn-jsx@5.3.2(acorn@8.14.1):
- dependencies:
- acorn: 8.14.1
-
- acorn@8.14.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@4.3.2:
- dependencies:
- type-fest: 0.21.3
-
- ansi-regex@5.0.1: {}
-
- ansi-styles@4.3.0:
- dependencies:
- color-convert: 2.0.1
-
- argparse@2.0.1: {}
-
- aria-query@5.3.2: {}
-
- array-buffer-byte-length@1.0.2:
- dependencies:
- call-bound: 1.0.4
- is-array-buffer: 3.0.5
-
- array-includes@3.1.8:
- dependencies:
- call-bind: 1.0.8
- define-properties: 1.2.1
- es-abstract: 1.23.9
- es-object-atoms: 1.1.1
- get-intrinsic: 1.3.0
- is-string: 1.1.1
-
- array.prototype.findlast@1.2.5:
- dependencies:
- call-bind: 1.0.8
- define-properties: 1.2.1
- es-abstract: 1.23.9
- es-errors: 1.3.0
- es-object-atoms: 1.1.1
- es-shim-unscopables: 1.1.0
-
- array.prototype.findlastindex@1.2.6:
- dependencies:
- call-bind: 1.0.8
- call-bound: 1.0.4
- define-properties: 1.2.1
- es-abstract: 1.23.9
- es-errors: 1.3.0
- es-object-atoms: 1.1.1
- es-shim-unscopables: 1.1.0
-
- array.prototype.flat@1.3.3:
- dependencies:
- call-bind: 1.0.8
- define-properties: 1.2.1
- es-abstract: 1.23.9
- es-shim-unscopables: 1.1.0
-
- array.prototype.flatmap@1.3.3:
- dependencies:
- call-bind: 1.0.8
- define-properties: 1.2.1
- es-abstract: 1.23.9
- es-shim-unscopables: 1.1.0
-
- array.prototype.tosorted@1.1.4:
- dependencies:
- call-bind: 1.0.8
- define-properties: 1.2.1
- es-abstract: 1.23.9
- es-errors: 1.3.0
- es-shim-unscopables: 1.1.0
-
- arraybuffer.prototype.slice@1.0.4:
- dependencies:
- array-buffer-byte-length: 1.0.2
- call-bind: 1.0.8
- define-properties: 1.2.1
- es-abstract: 1.23.9
- es-errors: 1.3.0
- get-intrinsic: 1.3.0
- is-array-buffer: 3.0.5
-
- ast-types-flow@0.0.8: {}
-
- async-function@1.0.0: {}
-
- asynckit@0.4.0: {}
-
- available-typed-arrays@1.0.7:
- dependencies:
- possible-typed-array-names: 1.1.0
-
- axe-core@4.10.3: {}
-
- axios@1.9.0:
- dependencies:
- follow-redirects: 1.15.9
- form-data: 4.0.2
- proxy-from-env: 1.1.0
- transitivePeerDependencies:
- - debug
-
- axobject-query@4.1.0: {}
-
- babel-plugin-macros@3.1.0:
- dependencies:
- '@babel/runtime': 7.27.1
- cosmiconfig: 7.1.0
- resolve: 1.22.10
-
- balanced-match@1.0.2: {}
-
- base64-js@1.5.1: {}
-
- bl@4.1.0:
- dependencies:
- buffer: 5.7.1
- inherits: 2.0.4
- readable-stream: 3.6.2
-
- body-parser@2.2.0:
- dependencies:
- bytes: 3.1.2
- content-type: 1.0.5
- debug: 4.4.0
- http-errors: 2.0.0
- iconv-lite: 0.6.3
- on-finished: 2.4.1
- qs: 6.14.0
- raw-body: 3.0.0
- type-is: 2.0.1
- transitivePeerDependencies:
- - supports-color
-
- brace-expansion@1.1.11:
- dependencies:
- balanced-match: 1.0.2
- concat-map: 0.0.1
-
- brace-expansion@2.0.1:
- dependencies:
- balanced-match: 1.0.2
-
- braces@3.0.3:
- dependencies:
- fill-range: 7.1.1
+ buffer@5.7.1:
+ dependencies:
+ base64-js: 1.5.1
+ ieee754: 1.2.1
+
+ busboy@1.6.0:
+ dependencies:
+ streamsearch: 1.1.0
- buffer@5.7.1:
- dependencies:
- base64-js: 1.5.1
- ieee754: 1.2.1
-
- busboy@1.6.0:
- dependencies:
- streamsearch: 1.1.0
+ bytes@3.1.2: {}
+
+ call-bind-apply-helpers@1.0.2:
+ dependencies:
+ es-errors: 1.3.0
+ function-bind: 1.1.2
- bytes@3.1.2: {}
-
- call-bind-apply-helpers@1.0.2:
- dependencies:
- es-errors: 1.3.0
- function-bind: 1.1.2
+ call-bind@1.0.8:
+ dependencies:
+ call-bind-apply-helpers: 1.0.2
+ es-define-property: 1.0.1
+ get-intrinsic: 1.3.0
+ set-function-length: 1.2.2
- call-bind@1.0.8:
- dependencies:
- call-bind-apply-helpers: 1.0.2
- es-define-property: 1.0.1
- get-intrinsic: 1.3.0
- set-function-length: 1.2.2
+ call-bound@1.0.4:
+ dependencies:
+ call-bind-apply-helpers: 1.0.2
+ get-intrinsic: 1.3.0
- call-bound@1.0.4:
- dependencies:
- call-bind-apply-helpers: 1.0.2
- get-intrinsic: 1.3.0
+ callsites@3.1.0: {}
- callsites@3.1.0: {}
+ caniuse-lite@1.0.30001717: {}
- caniuse-lite@1.0.30001717: {}
+ chalk@4.1.2:
+ dependencies:
+ ansi-styles: 4.3.0
+ supports-color: 7.2.0
- chalk@4.1.2:
- dependencies:
- ansi-styles: 4.3.0
- supports-color: 7.2.0
+ chardet@0.7.0: {}
- chardet@0.7.0: {}
+ chokidar@4.0.3:
+ dependencies:
+ readdirp: 4.1.2
- chokidar@4.0.3:
- dependencies:
- readdirp: 4.1.2
+ cli-cursor@3.1.0:
+ dependencies:
+ restore-cursor: 3.1.0
- cli-cursor@3.1.0:
- dependencies:
- restore-cursor: 3.1.0
+ cli-spinners@2.9.2: {}
- cli-spinners@2.9.2: {}
+ cli-width@3.0.0: {}
- cli-width@3.0.0: {}
+ client-only@0.0.1: {}
- client-only@0.0.1: {}
+ clone@1.0.4: {}
- clone@1.0.4: {}
+ clsx@2.1.1: {}
- clsx@2.1.1: {}
+ color-convert@2.0.1:
+ dependencies:
+ color-name: 1.1.4
- color-convert@2.0.1:
- dependencies:
- color-name: 1.1.4
+ color-name@1.1.4: {}
- color-name@1.1.4: {}
+ color-string@1.9.1:
+ dependencies:
+ color-name: 1.1.4
+ simple-swizzle: 0.2.2
+ optional: true
- color-string@1.9.1:
- dependencies:
- color-name: 1.1.4
- simple-swizzle: 0.2.2
- optional: true
+ color@4.2.3:
+ dependencies:
+ color-convert: 2.0.1
+ color-string: 1.9.1
+ optional: true
- color@4.2.3:
- dependencies:
- color-convert: 2.0.1
- color-string: 1.9.1
- optional: true
+ combined-stream@1.0.8:
+ dependencies:
+ delayed-stream: 1.0.0
- combined-stream@1.0.8:
- dependencies:
- delayed-stream: 1.0.0
+ commander@7.2.0: {}
- commander@7.2.0: {}
+ concat-map@0.0.1: {}
- concat-map@0.0.1: {}
+ content-disposition@1.0.0:
+ dependencies:
+ safe-buffer: 5.2.1
- content-disposition@1.0.0:
- dependencies:
- safe-buffer: 5.2.1
+ content-type@1.0.5: {}
- content-type@1.0.5: {}
+ convert-source-map@1.9.0: {}
- convert-source-map@1.9.0: {}
+ cookie-signature@1.2.2: {}
- cookie-signature@1.2.2: {}
+ cookie@0.7.2: {}
- cookie@0.7.2: {}
+ cors@2.8.5:
+ dependencies:
+ object-assign: 4.1.1
+ vary: 1.1.2
- cors@2.8.5:
- dependencies:
- object-assign: 4.1.1
- vary: 1.1.2
+ cosmiconfig@7.1.0:
+ dependencies:
+ "@types/parse-json": 4.0.2
+ import-fresh: 3.3.1
+ parse-json: 5.2.0
+ path-type: 4.0.0
+ yaml: 1.10.2
- cosmiconfig@7.1.0:
- dependencies:
- '@types/parse-json': 4.0.2
- import-fresh: 3.3.1
- parse-json: 5.2.0
- path-type: 4.0.0
- yaml: 1.10.2
+ cross-spawn@7.0.6:
+ dependencies:
+ path-key: 3.1.1
+ shebang-command: 2.0.0
+ which: 2.0.2
- cross-spawn@7.0.6:
- dependencies:
- path-key: 3.1.1
- shebang-command: 2.0.0
- which: 2.0.2
+ cssjanus@2.3.0: {}
- cssjanus@2.3.0: {}
+ csstype@3.1.3: {}
- csstype@3.1.3: {}
+ damerau-levenshtein@1.0.8: {}
- damerau-levenshtein@1.0.8: {}
+ data-view-buffer@1.0.2:
+ dependencies:
+ call-bound: 1.0.4
+ es-errors: 1.3.0
+ is-data-view: 1.0.2
- data-view-buffer@1.0.2:
- dependencies:
- call-bound: 1.0.4
- es-errors: 1.3.0
- is-data-view: 1.0.2
+ data-view-byte-length@1.0.2:
+ dependencies:
+ call-bound: 1.0.4
+ es-errors: 1.3.0
+ is-data-view: 1.0.2
- data-view-byte-length@1.0.2:
- dependencies:
- call-bound: 1.0.4
- es-errors: 1.3.0
- is-data-view: 1.0.2
+ data-view-byte-offset@1.0.1:
+ dependencies:
+ call-bound: 1.0.4
+ es-errors: 1.3.0
+ is-data-view: 1.0.2
- data-view-byte-offset@1.0.1:
- dependencies:
- call-bound: 1.0.4
- es-errors: 1.3.0
- is-data-view: 1.0.2
+ date-fns-jalali@4.1.0-0: {}
- date-fns-jalali@4.1.0-0: {}
+ debug@3.2.7:
+ dependencies:
+ ms: 2.1.3
- debug@3.2.7:
- dependencies:
- ms: 2.1.3
+ debug@4.3.7:
+ dependencies:
+ ms: 2.1.3
+
+ debug@4.4.0:
+ dependencies:
+ ms: 2.1.3
+
+ deep-is@0.1.4: {}
+
+ defaults@1.0.4:
+ dependencies:
+ clone: 1.0.4
+
+ define-data-property@1.1.4:
+ dependencies:
+ es-define-property: 1.0.1
+ es-errors: 1.3.0
+ gopd: 1.2.0
+
+ 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: {}
+
+ depd@2.0.0: {}
+
+ dequal@2.0.3: {}
+
+ detect-libc@1.0.3:
+ optional: true
+
+ detect-libc@2.0.4:
+ optional: true
+
+ doctrine@2.1.0:
+ dependencies:
+ esutils: 2.0.3
+
+ dom-helpers@5.2.1:
+ dependencies:
+ "@babel/runtime": 7.27.1
+ csstype: 3.1.3
+
+ dunder-proto@1.0.1:
+ dependencies:
+ call-bind-apply-helpers: 1.0.2
+ es-errors: 1.3.0
+ gopd: 1.2.0
+
+ ee-first@1.1.1: {}
+
+ emoji-regex@8.0.0: {}
+
+ emoji-regex@9.2.2: {}
+
+ encodeurl@2.0.0: {}
+
+ engine.io-client@6.6.3:
+ dependencies:
+ "@socket.io/component-emitter": 3.1.2
+ debug: 4.3.7
+ engine.io-parser: 5.2.3
+ ws: 8.17.1
+ xmlhttprequest-ssl: 2.1.2
+ transitivePeerDependencies:
+ - bufferutil
+ - supports-color
+ - utf-8-validate
+
+ engine.io-parser@5.2.3: {}
+
+ error-ex@1.3.2:
+ dependencies:
+ is-arrayish: 0.2.1
+
+ es-abstract@1.23.9:
+ dependencies:
+ array-buffer-byte-length: 1.0.2
+ arraybuffer.prototype.slice: 1.0.4
+ available-typed-arrays: 1.0.7
+ call-bind: 1.0.8
+ call-bound: 1.0.4
+ data-view-buffer: 1.0.2
+ data-view-byte-length: 1.0.2
+ data-view-byte-offset: 1.0.1
+ es-define-property: 1.0.1
+ es-errors: 1.3.0
+ es-object-atoms: 1.1.1
+ es-set-tostringtag: 2.1.0
+ es-to-primitive: 1.3.0
+ function.prototype.name: 1.1.8
+ get-intrinsic: 1.3.0
+ get-proto: 1.0.1
+ get-symbol-description: 1.1.0
+ globalthis: 1.0.4
+ gopd: 1.2.0
+ has-property-descriptors: 1.0.2
+ has-proto: 1.2.0
+ has-symbols: 1.1.0
+ hasown: 2.0.2
+ internal-slot: 1.1.0
+ is-array-buffer: 3.0.5
+ is-callable: 1.2.7
+ is-data-view: 1.0.2
+ is-regex: 1.2.1
+ is-shared-array-buffer: 1.0.4
+ is-string: 1.1.1
+ is-typed-array: 1.1.15
+ is-weakref: 1.1.1
+ math-intrinsics: 1.1.0
+ object-inspect: 1.13.4
+ object-keys: 1.1.1
+ object.assign: 4.1.7
+ own-keys: 1.0.1
+ regexp.prototype.flags: 1.5.4
+ safe-array-concat: 1.1.3
+ safe-push-apply: 1.0.0
+ safe-regex-test: 1.1.0
+ set-proto: 1.0.0
+ string.prototype.trim: 1.2.10
+ string.prototype.trimend: 1.0.9
+ string.prototype.trimstart: 1.0.8
+ typed-array-buffer: 1.0.3
+ typed-array-byte-length: 1.0.3
+ typed-array-byte-offset: 1.0.4
+ typed-array-length: 1.0.7
+ unbox-primitive: 1.1.0
+ which-typed-array: 1.1.19
+
+ es-define-property@1.0.1: {}
+
+ es-errors@1.3.0: {}
+
+ es-iterator-helpers@1.2.1:
+ dependencies:
+ call-bind: 1.0.8
+ call-bound: 1.0.4
+ define-properties: 1.2.1
+ es-abstract: 1.23.9
+ es-errors: 1.3.0
+ es-set-tostringtag: 2.1.0
+ function-bind: 1.1.2
+ get-intrinsic: 1.3.0
+ globalthis: 1.0.4
+ gopd: 1.2.0
+ has-property-descriptors: 1.0.2
+ has-proto: 1.2.0
+ has-symbols: 1.1.0
+ internal-slot: 1.1.0
+ iterator.prototype: 1.1.5
+ safe-array-concat: 1.1.3
+
+ es-object-atoms@1.1.1:
+ dependencies:
+ es-errors: 1.3.0
+
+ es-set-tostringtag@2.1.0:
+ dependencies:
+ es-errors: 1.3.0
+ get-intrinsic: 1.3.0
+ has-tostringtag: 1.0.2
+ hasown: 2.0.2
+
+ es-shim-unscopables@1.1.0:
+ dependencies:
+ hasown: 2.0.2
+
+ es-to-primitive@1.3.0:
+ dependencies:
+ is-callable: 1.2.7
+ is-date-object: 1.1.0
+ is-symbol: 1.1.1
+
+ escape-html@1.0.3: {}
+
+ escape-string-regexp@1.0.5: {}
+
+ escape-string-regexp@4.0.0: {}
+
+ eslint-config-next@15.3.1(eslint@9.26.0)(typescript@5.8.3):
+ dependencies:
+ "@next/eslint-plugin-next": 15.3.1
+ "@rushstack/eslint-patch": 1.11.0
+ "@typescript-eslint/eslint-plugin": 8.31.1(@typescript-eslint/parser@8.31.1(eslint@9.26.0)(typescript@5.8.3))(eslint@9.26.0)(typescript@5.8.3)
+ "@typescript-eslint/parser": 8.31.1(eslint@9.26.0)(typescript@5.8.3)
+ eslint: 9.26.0
+ eslint-import-resolver-node: 0.3.9
+ eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.31.0)(eslint@9.26.0)
+ eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.31.1(eslint@9.26.0)(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.26.0)
+ eslint-plugin-jsx-a11y: 6.10.2(eslint@9.26.0)
+ eslint-plugin-react: 7.37.5(eslint@9.26.0)
+ eslint-plugin-react-hooks: 5.2.0(eslint@9.26.0)
+ optionalDependencies:
+ typescript: 5.8.3
+ transitivePeerDependencies:
+ - eslint-import-resolver-webpack
+ - eslint-plugin-import-x
+ - supports-color
+
+ eslint-import-resolver-node@0.3.9:
+ dependencies:
+ debug: 3.2.7
+ is-core-module: 2.16.1
+ resolve: 1.22.10
+ transitivePeerDependencies:
+ - supports-color
+
+ eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.31.0)(eslint@9.26.0):
+ dependencies:
+ "@nolyfill/is-core-module": 1.0.39
+ debug: 4.4.0
+ eslint: 9.26.0
+ get-tsconfig: 4.10.0
+ is-bun-module: 2.0.0
+ stable-hash: 0.0.5
+ tinyglobby: 0.2.13
+ unrs-resolver: 1.7.2
+ optionalDependencies:
+ eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.31.1(eslint@9.26.0)(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.26.0)
+ transitivePeerDependencies:
+ - supports-color
+
+ eslint-module-utils@2.12.0(@typescript-eslint/parser@8.31.1(eslint@9.26.0)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.26.0):
+ dependencies:
+ debug: 3.2.7
+ optionalDependencies:
+ "@typescript-eslint/parser": 8.31.1(eslint@9.26.0)(typescript@5.8.3)
+ eslint: 9.26.0
+ eslint-import-resolver-node: 0.3.9
+ eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.31.0)(eslint@9.26.0)
+ transitivePeerDependencies:
+ - supports-color
+
+ eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.31.1(eslint@9.26.0)(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.26.0):
+ dependencies:
+ "@rtsao/scc": 1.1.0
+ array-includes: 3.1.8
+ array.prototype.findlastindex: 1.2.6
+ array.prototype.flat: 1.3.3
+ array.prototype.flatmap: 1.3.3
+ debug: 3.2.7
+ doctrine: 2.1.0
+ eslint: 9.26.0
+ eslint-import-resolver-node: 0.3.9
+ eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.31.1(eslint@9.26.0)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.26.0)
+ hasown: 2.0.2
+ is-core-module: 2.16.1
+ is-glob: 4.0.3
+ minimatch: 3.1.2
+ object.fromentries: 2.0.8
+ object.groupby: 1.0.3
+ object.values: 1.2.1
+ semver: 6.3.1
+ string.prototype.trimend: 1.0.9
+ tsconfig-paths: 3.15.0
+ optionalDependencies:
+ "@typescript-eslint/parser": 8.31.1(eslint@9.26.0)(typescript@5.8.3)
+ transitivePeerDependencies:
+ - eslint-import-resolver-typescript
+ - eslint-import-resolver-webpack
+ - supports-color
+
+ eslint-plugin-jsx-a11y@6.10.2(eslint@9.26.0):
+ dependencies:
+ aria-query: 5.3.2
+ array-includes: 3.1.8
+ array.prototype.flatmap: 1.3.3
+ ast-types-flow: 0.0.8
+ axe-core: 4.10.3
+ axobject-query: 4.1.0
+ damerau-levenshtein: 1.0.8
+ emoji-regex: 9.2.2
+ eslint: 9.26.0
+ hasown: 2.0.2
+ jsx-ast-utils: 3.3.5
+ language-tags: 1.0.9
+ minimatch: 3.1.2
+ object.fromentries: 2.0.8
+ safe-regex-test: 1.1.0
+ string.prototype.includes: 2.0.1
+
+ eslint-plugin-react-hooks@5.2.0(eslint@9.26.0):
+ dependencies:
+ eslint: 9.26.0
+
+ eslint-plugin-react@7.37.5(eslint@9.26.0):
+ dependencies:
+ array-includes: 3.1.8
+ array.prototype.findlast: 1.2.5
+ array.prototype.flatmap: 1.3.3
+ array.prototype.tosorted: 1.1.4
+ doctrine: 2.1.0
+ es-iterator-helpers: 1.2.1
+ eslint: 9.26.0
+ estraverse: 5.3.0
+ hasown: 2.0.2
+ jsx-ast-utils: 3.3.5
+ minimatch: 3.1.2
+ object.entries: 1.1.9
+ object.fromentries: 2.0.8
+ object.values: 1.2.1
+ prop-types: 15.8.1
+ resolve: 2.0.0-next.5
+ semver: 6.3.1
+ string.prototype.matchall: 4.0.12
+ string.prototype.repeat: 1.0.0
+
+ eslint-scope@8.3.0:
+ dependencies:
+ esrecurse: 4.3.0
+ estraverse: 5.3.0
+
+ eslint-visitor-keys@3.4.3: {}
+
+ eslint-visitor-keys@4.2.0: {}
+
+ eslint@9.26.0:
+ dependencies:
+ "@eslint-community/eslint-utils": 4.7.0(eslint@9.26.0)
+ "@eslint-community/regexpp": 4.12.1
+ "@eslint/config-array": 0.20.0
+ "@eslint/config-helpers": 0.2.2
+ "@eslint/core": 0.13.0
+ "@eslint/eslintrc": 3.3.1
+ "@eslint/js": 9.26.0
+ "@eslint/plugin-kit": 0.2.8
+ "@humanfs/node": 0.16.6
+ "@humanwhocodes/module-importer": 1.0.1
+ "@humanwhocodes/retry": 0.4.2
+ "@modelcontextprotocol/sdk": 1.11.0
+ "@types/estree": 1.0.7
+ "@types/json-schema": 7.0.15
+ ajv: 6.12.6
+ chalk: 4.1.2
+ cross-spawn: 7.0.6
+ debug: 4.4.0
+ escape-string-regexp: 4.0.0
+ eslint-scope: 8.3.0
+ eslint-visitor-keys: 4.2.0
+ espree: 10.3.0
+ esquery: 1.6.0
+ esutils: 2.0.3
+ fast-deep-equal: 3.1.3
+ file-entry-cache: 8.0.0
+ find-up: 5.0.0
+ glob-parent: 6.0.2
+ ignore: 5.3.2
+ imurmurhash: 0.1.4
+ is-glob: 4.0.3
+ json-stable-stringify-without-jsonify: 1.0.1
+ lodash.merge: 4.6.2
+ minimatch: 3.1.2
+ natural-compare: 1.4.0
+ optionator: 0.9.4
+ zod: 3.24.4
+ transitivePeerDependencies:
+ - supports-color
+
+ espree@10.3.0:
+ dependencies:
+ acorn: 8.14.1
+ acorn-jsx: 5.3.2(acorn@8.14.1)
+ eslint-visitor-keys: 4.2.0
+
+ 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: {}
+
+ etag@1.8.1: {}
+
+ eventsource-parser@3.0.1: {}
+
+ eventsource@3.0.6:
+ dependencies:
+ eventsource-parser: 3.0.1
+
+ express-rate-limit@7.5.0(express@5.1.0):
+ dependencies:
+ express: 5.1.0
+
+ express@5.1.0:
+ dependencies:
+ accepts: 2.0.0
+ body-parser: 2.2.0
+ content-disposition: 1.0.0
+ content-type: 1.0.5
+ cookie: 0.7.2
+ cookie-signature: 1.2.2
+ debug: 4.4.0
+ encodeurl: 2.0.0
+ escape-html: 1.0.3
+ etag: 1.8.1
+ finalhandler: 2.1.0
+ fresh: 2.0.0
+ http-errors: 2.0.0
+ merge-descriptors: 2.0.0
+ mime-types: 3.0.1
+ on-finished: 2.4.1
+ once: 1.4.0
+ parseurl: 1.3.3
+ proxy-addr: 2.0.7
+ qs: 6.14.0
+ range-parser: 1.2.1
+ router: 2.2.0
+ send: 1.2.0
+ serve-static: 2.2.0
+ statuses: 2.0.1
+ type-is: 2.0.1
+ vary: 1.1.2
+ transitivePeerDependencies:
+ - supports-color
+
+ external-editor@3.1.0:
+ dependencies:
+ chardet: 0.7.0
+ iconv-lite: 0.4.24
+ tmp: 0.0.33
+
+ fast-deep-equal@3.1.3: {}
+
+ fast-glob@3.3.1:
+ 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.8
+
+ fast-glob@3.3.3:
+ 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.8
+
+ fast-json-stable-stringify@2.1.0: {}
+
+ fast-levenshtein@2.0.6: {}
+
+ fastq@1.19.1:
+ dependencies:
+ reusify: 1.1.0
+
+ fdir@6.4.4(picomatch@4.0.2):
+ optionalDependencies:
+ picomatch: 4.0.2
+
+ figures@3.2.0:
+ dependencies:
+ escape-string-regexp: 1.0.5
+
+ file-entry-cache@8.0.0:
+ dependencies:
+ flat-cache: 4.0.1
+
+ fill-range@7.1.1:
+ dependencies:
+ to-regex-range: 5.0.1
+
+ finalhandler@2.1.0:
+ dependencies:
+ debug: 4.4.0
+ encodeurl: 2.0.0
+ escape-html: 1.0.3
+ on-finished: 2.4.1
+ parseurl: 1.3.3
+ statuses: 2.0.1
+ transitivePeerDependencies:
+ - supports-color
+
+ find-root@1.1.0: {}
+
+ find-up@5.0.0:
+ dependencies:
+ locate-path: 6.0.0
+ path-exists: 4.0.0
+
+ flat-cache@4.0.1:
+ dependencies:
+ flatted: 3.3.3
+ keyv: 4.5.4
+
+ flatted@3.3.3: {}
+
+ follow-redirects@1.15.9: {}
+
+ for-each@0.3.5:
+ dependencies:
+ is-callable: 1.2.7
+
+ form-data@4.0.2:
+ dependencies:
+ asynckit: 0.4.0
+ combined-stream: 1.0.8
+ es-set-tostringtag: 2.1.0
+ mime-types: 2.1.35
+
+ forwarded@0.2.0: {}
+
+ fresh@2.0.0: {}
+
+ function-bind@1.1.2: {}
+
+ function.prototype.name@1.1.8:
+ dependencies:
+ call-bind: 1.0.8
+ call-bound: 1.0.4
+ define-properties: 1.2.1
+ functions-have-names: 1.2.3
+ hasown: 2.0.2
+ is-callable: 1.2.7
+
+ functions-have-names@1.2.3: {}
- debug@4.3.7:
- dependencies:
- ms: 2.1.3
-
- debug@4.4.0:
- dependencies:
- ms: 2.1.3
-
- deep-is@0.1.4: {}
-
- defaults@1.0.4:
- dependencies:
- clone: 1.0.4
-
- define-data-property@1.1.4:
- dependencies:
- es-define-property: 1.0.1
- es-errors: 1.3.0
- gopd: 1.2.0
-
- 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: {}
-
- depd@2.0.0: {}
-
- dequal@2.0.3: {}
-
- detect-libc@1.0.3:
- optional: true
-
- detect-libc@2.0.4:
- optional: true
-
- doctrine@2.1.0:
- dependencies:
- esutils: 2.0.3
-
- dom-helpers@5.2.1:
- dependencies:
- '@babel/runtime': 7.27.1
- csstype: 3.1.3
-
- dunder-proto@1.0.1:
- dependencies:
- call-bind-apply-helpers: 1.0.2
- es-errors: 1.3.0
- gopd: 1.2.0
-
- ee-first@1.1.1: {}
-
- emoji-regex@8.0.0: {}
-
- emoji-regex@9.2.2: {}
-
- encodeurl@2.0.0: {}
-
- engine.io-client@6.6.3:
- dependencies:
- '@socket.io/component-emitter': 3.1.2
- debug: 4.3.7
- engine.io-parser: 5.2.3
- ws: 8.17.1
- xmlhttprequest-ssl: 2.1.2
- transitivePeerDependencies:
- - bufferutil
- - supports-color
- - utf-8-validate
-
- engine.io-parser@5.2.3: {}
-
- error-ex@1.3.2:
- dependencies:
- is-arrayish: 0.2.1
-
- es-abstract@1.23.9:
- dependencies:
- array-buffer-byte-length: 1.0.2
- arraybuffer.prototype.slice: 1.0.4
- available-typed-arrays: 1.0.7
- call-bind: 1.0.8
- call-bound: 1.0.4
- data-view-buffer: 1.0.2
- data-view-byte-length: 1.0.2
- data-view-byte-offset: 1.0.1
- es-define-property: 1.0.1
- es-errors: 1.3.0
- es-object-atoms: 1.1.1
- es-set-tostringtag: 2.1.0
- es-to-primitive: 1.3.0
- function.prototype.name: 1.1.8
- get-intrinsic: 1.3.0
- get-proto: 1.0.1
- get-symbol-description: 1.1.0
- globalthis: 1.0.4
- gopd: 1.2.0
- has-property-descriptors: 1.0.2
- has-proto: 1.2.0
- has-symbols: 1.1.0
- hasown: 2.0.2
- internal-slot: 1.1.0
- is-array-buffer: 3.0.5
- is-callable: 1.2.7
- is-data-view: 1.0.2
- is-regex: 1.2.1
- is-shared-array-buffer: 1.0.4
- is-string: 1.1.1
- is-typed-array: 1.1.15
- is-weakref: 1.1.1
- math-intrinsics: 1.1.0
- object-inspect: 1.13.4
- object-keys: 1.1.1
- object.assign: 4.1.7
- own-keys: 1.0.1
- regexp.prototype.flags: 1.5.4
- safe-array-concat: 1.1.3
- safe-push-apply: 1.0.0
- safe-regex-test: 1.1.0
- set-proto: 1.0.0
- string.prototype.trim: 1.2.10
- string.prototype.trimend: 1.0.9
- string.prototype.trimstart: 1.0.8
- typed-array-buffer: 1.0.3
- typed-array-byte-length: 1.0.3
- typed-array-byte-offset: 1.0.4
- typed-array-length: 1.0.7
- unbox-primitive: 1.1.0
- which-typed-array: 1.1.19
-
- es-define-property@1.0.1: {}
-
- es-errors@1.3.0: {}
-
- es-iterator-helpers@1.2.1:
- dependencies:
- call-bind: 1.0.8
- call-bound: 1.0.4
- define-properties: 1.2.1
- es-abstract: 1.23.9
- es-errors: 1.3.0
- es-set-tostringtag: 2.1.0
- function-bind: 1.1.2
- get-intrinsic: 1.3.0
- globalthis: 1.0.4
- gopd: 1.2.0
- has-property-descriptors: 1.0.2
- has-proto: 1.2.0
- has-symbols: 1.1.0
- internal-slot: 1.1.0
- iterator.prototype: 1.1.5
- safe-array-concat: 1.1.3
-
- es-object-atoms@1.1.1:
- dependencies:
- es-errors: 1.3.0
-
- es-set-tostringtag@2.1.0:
- dependencies:
- es-errors: 1.3.0
- get-intrinsic: 1.3.0
- has-tostringtag: 1.0.2
- hasown: 2.0.2
-
- es-shim-unscopables@1.1.0:
- dependencies:
- hasown: 2.0.2
-
- es-to-primitive@1.3.0:
- dependencies:
- is-callable: 1.2.7
- is-date-object: 1.1.0
- is-symbol: 1.1.1
-
- escape-html@1.0.3: {}
-
- escape-string-regexp@1.0.5: {}
-
- escape-string-regexp@4.0.0: {}
-
- eslint-config-next@15.3.1(eslint@9.26.0)(typescript@5.8.3):
- dependencies:
- '@next/eslint-plugin-next': 15.3.1
- '@rushstack/eslint-patch': 1.11.0
- '@typescript-eslint/eslint-plugin': 8.31.1(@typescript-eslint/parser@8.31.1(eslint@9.26.0)(typescript@5.8.3))(eslint@9.26.0)(typescript@5.8.3)
- '@typescript-eslint/parser': 8.31.1(eslint@9.26.0)(typescript@5.8.3)
- eslint: 9.26.0
- eslint-import-resolver-node: 0.3.9
- eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.31.0)(eslint@9.26.0)
- eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.31.1(eslint@9.26.0)(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.26.0)
- eslint-plugin-jsx-a11y: 6.10.2(eslint@9.26.0)
- eslint-plugin-react: 7.37.5(eslint@9.26.0)
- eslint-plugin-react-hooks: 5.2.0(eslint@9.26.0)
- optionalDependencies:
- typescript: 5.8.3
- transitivePeerDependencies:
- - eslint-import-resolver-webpack
- - eslint-plugin-import-x
- - supports-color
-
- eslint-import-resolver-node@0.3.9:
- dependencies:
- debug: 3.2.7
- is-core-module: 2.16.1
- resolve: 1.22.10
- transitivePeerDependencies:
- - supports-color
-
- eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.31.0)(eslint@9.26.0):
- dependencies:
- '@nolyfill/is-core-module': 1.0.39
- debug: 4.4.0
- eslint: 9.26.0
- get-tsconfig: 4.10.0
- is-bun-module: 2.0.0
- stable-hash: 0.0.5
- tinyglobby: 0.2.13
- unrs-resolver: 1.7.2
- optionalDependencies:
- eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.31.1(eslint@9.26.0)(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.26.0)
- transitivePeerDependencies:
- - supports-color
-
- eslint-module-utils@2.12.0(@typescript-eslint/parser@8.31.1(eslint@9.26.0)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.26.0):
- dependencies:
- debug: 3.2.7
- optionalDependencies:
- '@typescript-eslint/parser': 8.31.1(eslint@9.26.0)(typescript@5.8.3)
- eslint: 9.26.0
- eslint-import-resolver-node: 0.3.9
- eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.31.0)(eslint@9.26.0)
- transitivePeerDependencies:
- - supports-color
-
- eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.31.1(eslint@9.26.0)(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.26.0):
- dependencies:
- '@rtsao/scc': 1.1.0
- array-includes: 3.1.8
- array.prototype.findlastindex: 1.2.6
- array.prototype.flat: 1.3.3
- array.prototype.flatmap: 1.3.3
- debug: 3.2.7
- doctrine: 2.1.0
- eslint: 9.26.0
- eslint-import-resolver-node: 0.3.9
- eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.31.1(eslint@9.26.0)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.26.0)
- hasown: 2.0.2
- is-core-module: 2.16.1
- is-glob: 4.0.3
- minimatch: 3.1.2
- object.fromentries: 2.0.8
- object.groupby: 1.0.3
- object.values: 1.2.1
- semver: 6.3.1
- string.prototype.trimend: 1.0.9
- tsconfig-paths: 3.15.0
- optionalDependencies:
- '@typescript-eslint/parser': 8.31.1(eslint@9.26.0)(typescript@5.8.3)
- transitivePeerDependencies:
- - eslint-import-resolver-typescript
- - eslint-import-resolver-webpack
- - supports-color
-
- eslint-plugin-jsx-a11y@6.10.2(eslint@9.26.0):
- dependencies:
- aria-query: 5.3.2
- array-includes: 3.1.8
- array.prototype.flatmap: 1.3.3
- ast-types-flow: 0.0.8
- axe-core: 4.10.3
- axobject-query: 4.1.0
- damerau-levenshtein: 1.0.8
- emoji-regex: 9.2.2
- eslint: 9.26.0
- hasown: 2.0.2
- jsx-ast-utils: 3.3.5
- language-tags: 1.0.9
- minimatch: 3.1.2
- object.fromentries: 2.0.8
- safe-regex-test: 1.1.0
- string.prototype.includes: 2.0.1
-
- eslint-plugin-react-hooks@5.2.0(eslint@9.26.0):
- dependencies:
- eslint: 9.26.0
-
- eslint-plugin-react@7.37.5(eslint@9.26.0):
- dependencies:
- array-includes: 3.1.8
- array.prototype.findlast: 1.2.5
- array.prototype.flatmap: 1.3.3
- array.prototype.tosorted: 1.1.4
- doctrine: 2.1.0
- es-iterator-helpers: 1.2.1
- eslint: 9.26.0
- estraverse: 5.3.0
- hasown: 2.0.2
- jsx-ast-utils: 3.3.5
- minimatch: 3.1.2
- object.entries: 1.1.9
- object.fromentries: 2.0.8
- object.values: 1.2.1
- prop-types: 15.8.1
- resolve: 2.0.0-next.5
- semver: 6.3.1
- string.prototype.matchall: 4.0.12
- string.prototype.repeat: 1.0.0
-
- eslint-scope@8.3.0:
- dependencies:
- esrecurse: 4.3.0
- estraverse: 5.3.0
-
- eslint-visitor-keys@3.4.3: {}
-
- eslint-visitor-keys@4.2.0: {}
-
- eslint@9.26.0:
- dependencies:
- '@eslint-community/eslint-utils': 4.7.0(eslint@9.26.0)
- '@eslint-community/regexpp': 4.12.1
- '@eslint/config-array': 0.20.0
- '@eslint/config-helpers': 0.2.2
- '@eslint/core': 0.13.0
- '@eslint/eslintrc': 3.3.1
- '@eslint/js': 9.26.0
- '@eslint/plugin-kit': 0.2.8
- '@humanfs/node': 0.16.6
- '@humanwhocodes/module-importer': 1.0.1
- '@humanwhocodes/retry': 0.4.2
- '@modelcontextprotocol/sdk': 1.11.0
- '@types/estree': 1.0.7
- '@types/json-schema': 7.0.15
- ajv: 6.12.6
- chalk: 4.1.2
- cross-spawn: 7.0.6
- debug: 4.4.0
- escape-string-regexp: 4.0.0
- eslint-scope: 8.3.0
- eslint-visitor-keys: 4.2.0
- espree: 10.3.0
- esquery: 1.6.0
- esutils: 2.0.3
- fast-deep-equal: 3.1.3
- file-entry-cache: 8.0.0
- find-up: 5.0.0
- glob-parent: 6.0.2
- ignore: 5.3.2
- imurmurhash: 0.1.4
- is-glob: 4.0.3
- json-stable-stringify-without-jsonify: 1.0.1
- lodash.merge: 4.6.2
- minimatch: 3.1.2
- natural-compare: 1.4.0
- optionator: 0.9.4
- zod: 3.24.4
- transitivePeerDependencies:
- - supports-color
-
- espree@10.3.0:
- dependencies:
- acorn: 8.14.1
- acorn-jsx: 5.3.2(acorn@8.14.1)
- eslint-visitor-keys: 4.2.0
-
- 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: {}
-
- etag@1.8.1: {}
-
- eventsource-parser@3.0.1: {}
-
- eventsource@3.0.6:
- dependencies:
- eventsource-parser: 3.0.1
-
- express-rate-limit@7.5.0(express@5.1.0):
- dependencies:
- express: 5.1.0
-
- express@5.1.0:
- dependencies:
- accepts: 2.0.0
- body-parser: 2.2.0
- content-disposition: 1.0.0
- content-type: 1.0.5
- cookie: 0.7.2
- cookie-signature: 1.2.2
- debug: 4.4.0
- encodeurl: 2.0.0
- escape-html: 1.0.3
- etag: 1.8.1
- finalhandler: 2.1.0
- fresh: 2.0.0
- http-errors: 2.0.0
- merge-descriptors: 2.0.0
- mime-types: 3.0.1
- on-finished: 2.4.1
- once: 1.4.0
- parseurl: 1.3.3
- proxy-addr: 2.0.7
- qs: 6.14.0
- range-parser: 1.2.1
- router: 2.2.0
- send: 1.2.0
- serve-static: 2.2.0
- statuses: 2.0.1
- type-is: 2.0.1
- vary: 1.1.2
- transitivePeerDependencies:
- - supports-color
-
- external-editor@3.1.0:
- dependencies:
- chardet: 0.7.0
- iconv-lite: 0.4.24
- tmp: 0.0.33
-
- fast-deep-equal@3.1.3: {}
-
- fast-glob@3.3.1:
- 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.8
-
- fast-glob@3.3.3:
- 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.8
-
- fast-json-stable-stringify@2.1.0: {}
-
- fast-levenshtein@2.0.6: {}
-
- fastq@1.19.1:
- dependencies:
- reusify: 1.1.0
-
- fdir@6.4.4(picomatch@4.0.2):
- optionalDependencies:
- picomatch: 4.0.2
-
- figures@3.2.0:
- dependencies:
- escape-string-regexp: 1.0.5
-
- file-entry-cache@8.0.0:
- dependencies:
- flat-cache: 4.0.1
-
- fill-range@7.1.1:
- dependencies:
- to-regex-range: 5.0.1
-
- finalhandler@2.1.0:
- dependencies:
- debug: 4.4.0
- encodeurl: 2.0.0
- escape-html: 1.0.3
- on-finished: 2.4.1
- parseurl: 1.3.3
- statuses: 2.0.1
- transitivePeerDependencies:
- - supports-color
-
- find-root@1.1.0: {}
-
- find-up@5.0.0:
- dependencies:
- locate-path: 6.0.0
- path-exists: 4.0.0
-
- flat-cache@4.0.1:
- dependencies:
- flatted: 3.3.3
- keyv: 4.5.4
-
- flatted@3.3.3: {}
-
- follow-redirects@1.15.9: {}
-
- for-each@0.3.5:
- dependencies:
- is-callable: 1.2.7
-
- form-data@4.0.2:
- dependencies:
- asynckit: 0.4.0
- combined-stream: 1.0.8
- es-set-tostringtag: 2.1.0
- mime-types: 2.1.35
-
- forwarded@0.2.0: {}
-
- fresh@2.0.0: {}
-
- function-bind@1.1.2: {}
-
- function.prototype.name@1.1.8:
- dependencies:
- call-bind: 1.0.8
- call-bound: 1.0.4
- define-properties: 1.2.1
- functions-have-names: 1.2.3
- hasown: 2.0.2
- is-callable: 1.2.7
-
- functions-have-names@1.2.3: {}
+ get-intrinsic@1.3.0:
+ dependencies:
+ call-bind-apply-helpers: 1.0.2
+ es-define-property: 1.0.1
+ es-errors: 1.3.0
+ es-object-atoms: 1.1.1
+ function-bind: 1.1.2
+ get-proto: 1.0.1
+ gopd: 1.2.0
+ has-symbols: 1.1.0
+ hasown: 2.0.2
+ math-intrinsics: 1.1.0
- get-intrinsic@1.3.0:
- dependencies:
- call-bind-apply-helpers: 1.0.2
- es-define-property: 1.0.1
- es-errors: 1.3.0
- es-object-atoms: 1.1.1
- function-bind: 1.1.2
- get-proto: 1.0.1
- gopd: 1.2.0
- has-symbols: 1.1.0
- hasown: 2.0.2
- math-intrinsics: 1.1.0
+ get-proto@1.0.1:
+ dependencies:
+ dunder-proto: 1.0.1
+ es-object-atoms: 1.1.1
- get-proto@1.0.1:
- dependencies:
- dunder-proto: 1.0.1
- es-object-atoms: 1.1.1
+ get-symbol-description@1.1.0:
+ dependencies:
+ call-bound: 1.0.4
+ es-errors: 1.3.0
+ get-intrinsic: 1.3.0
+
+ get-tsconfig@4.10.0:
+ dependencies:
+ resolve-pkg-maps: 1.0.0
+
+ glob-parent@5.1.2:
+ dependencies:
+ is-glob: 4.0.3
+
+ glob-parent@6.0.2:
+ dependencies:
+ is-glob: 4.0.3
+
+ globals@11.12.0: {}
+
+ globals@14.0.0: {}
+
+ globalthis@1.0.4:
+ dependencies:
+ define-properties: 1.2.1
+ gopd: 1.2.0
+
+ gopd@1.2.0: {}
+
+ graphemer@1.4.0: {}
+
+ has-bigints@1.1.0: {}
+
+ has-flag@4.0.0: {}
+
+ has-property-descriptors@1.0.2:
+ dependencies:
+ es-define-property: 1.0.1
+
+ has-proto@1.2.0:
+ dependencies:
+ dunder-proto: 1.0.1
+
+ has-symbols@1.1.0: {}
+
+ has-tostringtag@1.0.2:
+ dependencies:
+ has-symbols: 1.1.0
+
+ hasown@2.0.2:
+ dependencies:
+ function-bind: 1.1.2
+
+ highlight-words@2.0.0: {}
+
+ hoist-non-react-statics@3.3.2:
+ dependencies:
+ react-is: 16.13.1
+
+ http-errors@2.0.0:
+ dependencies:
+ depd: 2.0.0
+ inherits: 2.0.4
+ setprototypeof: 1.2.0
+ statuses: 2.0.1
+ toidentifier: 1.0.1
+
+ iconv-lite@0.4.24:
+ dependencies:
+ safer-buffer: 2.1.2
+
+ iconv-lite@0.6.3:
+ dependencies:
+ safer-buffer: 2.1.2
+
+ ieee754@1.2.1: {}
+
+ ignore@5.3.2: {}
+
+ immutable@5.1.1: {}
+
+ import-fresh@3.3.1:
+ dependencies:
+ parent-module: 1.0.1
+ resolve-from: 4.0.0
+
+ imurmurhash@0.1.4: {}
- get-symbol-description@1.1.0:
- dependencies:
- call-bound: 1.0.4
- es-errors: 1.3.0
- get-intrinsic: 1.3.0
-
- get-tsconfig@4.10.0:
- dependencies:
- resolve-pkg-maps: 1.0.0
-
- glob-parent@5.1.2:
- dependencies:
- is-glob: 4.0.3
-
- glob-parent@6.0.2:
- dependencies:
- is-glob: 4.0.3
-
- globals@11.12.0: {}
-
- globals@14.0.0: {}
-
- globalthis@1.0.4:
- dependencies:
- define-properties: 1.2.1
- gopd: 1.2.0
-
- gopd@1.2.0: {}
-
- graphemer@1.4.0: {}
-
- has-bigints@1.1.0: {}
-
- has-flag@4.0.0: {}
-
- has-property-descriptors@1.0.2:
- dependencies:
- es-define-property: 1.0.1
-
- has-proto@1.2.0:
- dependencies:
- dunder-proto: 1.0.1
-
- has-symbols@1.1.0: {}
-
- has-tostringtag@1.0.2:
- dependencies:
- has-symbols: 1.1.0
-
- hasown@2.0.2:
- dependencies:
- function-bind: 1.1.2
-
- highlight-words@2.0.0: {}
-
- hoist-non-react-statics@3.3.2:
- dependencies:
- react-is: 16.13.1
-
- http-errors@2.0.0:
- dependencies:
- depd: 2.0.0
- inherits: 2.0.4
- setprototypeof: 1.2.0
- statuses: 2.0.1
- toidentifier: 1.0.1
-
- iconv-lite@0.4.24:
- dependencies:
- safer-buffer: 2.1.2
-
- iconv-lite@0.6.3:
- dependencies:
- safer-buffer: 2.1.2
-
- ieee754@1.2.1: {}
-
- ignore@5.3.2: {}
-
- immutable@5.1.1: {}
-
- import-fresh@3.3.1:
- dependencies:
- parent-module: 1.0.1
- resolve-from: 4.0.0
-
- imurmurhash@0.1.4: {}
+ inherits@2.0.4: {}
- inherits@2.0.4: {}
+ inquirer@8.2.6:
+ dependencies:
+ ansi-escapes: 4.3.2
+ chalk: 4.1.2
+ cli-cursor: 3.1.0
+ cli-width: 3.0.0
+ external-editor: 3.1.0
+ figures: 3.2.0
+ lodash: 4.17.21
+ mute-stream: 0.0.8
+ ora: 5.4.1
+ run-async: 2.4.1
+ rxjs: 7.8.2
+ string-width: 4.2.3
+ strip-ansi: 6.0.1
+ through: 2.3.8
+ wrap-ansi: 6.2.0
- inquirer@8.2.6:
- dependencies:
- ansi-escapes: 4.3.2
- chalk: 4.1.2
- cli-cursor: 3.1.0
- cli-width: 3.0.0
- external-editor: 3.1.0
- figures: 3.2.0
- lodash: 4.17.21
- mute-stream: 0.0.8
- ora: 5.4.1
- run-async: 2.4.1
- rxjs: 7.8.2
- string-width: 4.2.3
- strip-ansi: 6.0.1
- through: 2.3.8
- wrap-ansi: 6.2.0
+ internal-slot@1.1.0:
+ dependencies:
+ es-errors: 1.3.0
+ hasown: 2.0.2
+ side-channel: 1.1.0
- internal-slot@1.1.0:
- dependencies:
- es-errors: 1.3.0
- hasown: 2.0.2
- side-channel: 1.1.0
+ ipaddr.js@1.9.1: {}
- ipaddr.js@1.9.1: {}
+ is-array-buffer@3.0.5:
+ dependencies:
+ call-bind: 1.0.8
+ call-bound: 1.0.4
+ get-intrinsic: 1.3.0
- is-array-buffer@3.0.5:
- dependencies:
- call-bind: 1.0.8
- call-bound: 1.0.4
- get-intrinsic: 1.3.0
+ is-arrayish@0.2.1: {}
- is-arrayish@0.2.1: {}
+ is-arrayish@0.3.2:
+ optional: true
- is-arrayish@0.3.2:
- optional: true
+ is-async-function@2.1.1:
+ dependencies:
+ async-function: 1.0.0
+ call-bound: 1.0.4
+ get-proto: 1.0.1
+ has-tostringtag: 1.0.2
+ safe-regex-test: 1.1.0
- is-async-function@2.1.1:
- dependencies:
- async-function: 1.0.0
- call-bound: 1.0.4
- get-proto: 1.0.1
- has-tostringtag: 1.0.2
- safe-regex-test: 1.1.0
+ is-bigint@1.1.0:
+ dependencies:
+ has-bigints: 1.1.0
- is-bigint@1.1.0:
- dependencies:
- has-bigints: 1.1.0
+ is-boolean-object@1.2.2:
+ dependencies:
+ call-bound: 1.0.4
+ has-tostringtag: 1.0.2
- is-boolean-object@1.2.2:
- dependencies:
- call-bound: 1.0.4
- has-tostringtag: 1.0.2
+ is-bun-module@2.0.0:
+ dependencies:
+ semver: 7.7.1
+
+ is-callable@1.2.7: {}
+
+ is-core-module@2.16.1:
+ dependencies:
+ hasown: 2.0.2
+
+ is-data-view@1.0.2:
+ dependencies:
+ call-bound: 1.0.4
+ get-intrinsic: 1.3.0
+ is-typed-array: 1.1.15
+
+ is-date-object@1.1.0:
+ dependencies:
+ call-bound: 1.0.4
+ has-tostringtag: 1.0.2
- is-bun-module@2.0.0:
- dependencies:
- semver: 7.7.1
-
- is-callable@1.2.7: {}
-
- is-core-module@2.16.1:
- dependencies:
- hasown: 2.0.2
-
- is-data-view@1.0.2:
- dependencies:
- call-bound: 1.0.4
- get-intrinsic: 1.3.0
- is-typed-array: 1.1.15
-
- is-date-object@1.1.0:
- dependencies:
- call-bound: 1.0.4
- has-tostringtag: 1.0.2
+ is-extglob@2.1.1: {}
- is-extglob@2.1.1: {}
+ is-finalizationregistry@1.1.1:
+ dependencies:
+ call-bound: 1.0.4
- is-finalizationregistry@1.1.1:
- dependencies:
- call-bound: 1.0.4
+ is-fullwidth-code-point@3.0.0: {}
- is-fullwidth-code-point@3.0.0: {}
+ is-generator-function@1.1.0:
+ dependencies:
+ call-bound: 1.0.4
+ get-proto: 1.0.1
+ has-tostringtag: 1.0.2
+ safe-regex-test: 1.1.0
- is-generator-function@1.1.0:
- dependencies:
- call-bound: 1.0.4
- get-proto: 1.0.1
- has-tostringtag: 1.0.2
- safe-regex-test: 1.1.0
+ is-glob@4.0.3:
+ dependencies:
+ is-extglob: 2.1.1
- is-glob@4.0.3:
- dependencies:
- is-extglob: 2.1.1
+ is-interactive@1.0.0: {}
- is-interactive@1.0.0: {}
+ is-map@2.0.3: {}
- is-map@2.0.3: {}
+ is-number-object@1.1.1:
+ dependencies:
+ call-bound: 1.0.4
+ has-tostringtag: 1.0.2
+
+ is-number@7.0.0: {}
- is-number-object@1.1.1:
- dependencies:
- call-bound: 1.0.4
- has-tostringtag: 1.0.2
-
- is-number@7.0.0: {}
+ is-promise@4.0.0: {}
- is-promise@4.0.0: {}
+ is-regex@1.2.1:
+ dependencies:
+ call-bound: 1.0.4
+ gopd: 1.2.0
+ has-tostringtag: 1.0.2
+ hasown: 2.0.2
- is-regex@1.2.1:
- dependencies:
- call-bound: 1.0.4
- gopd: 1.2.0
- has-tostringtag: 1.0.2
- hasown: 2.0.2
+ is-set@2.0.3: {}
- is-set@2.0.3: {}
+ is-shared-array-buffer@1.0.4:
+ dependencies:
+ call-bound: 1.0.4
- is-shared-array-buffer@1.0.4:
- dependencies:
- call-bound: 1.0.4
+ is-string@1.1.1:
+ dependencies:
+ call-bound: 1.0.4
+ has-tostringtag: 1.0.2
- is-string@1.1.1:
- dependencies:
- call-bound: 1.0.4
- has-tostringtag: 1.0.2
+ is-symbol@1.1.1:
+ dependencies:
+ call-bound: 1.0.4
+ has-symbols: 1.1.0
+ safe-regex-test: 1.1.0
- is-symbol@1.1.1:
- dependencies:
- call-bound: 1.0.4
- has-symbols: 1.1.0
- safe-regex-test: 1.1.0
+ is-typed-array@1.1.15:
+ dependencies:
+ which-typed-array: 1.1.19
- is-typed-array@1.1.15:
- dependencies:
- which-typed-array: 1.1.19
+ is-unicode-supported@0.1.0: {}
- is-unicode-supported@0.1.0: {}
+ is-weakmap@2.0.2: {}
- is-weakmap@2.0.2: {}
+ is-weakref@1.1.1:
+ dependencies:
+ call-bound: 1.0.4
- is-weakref@1.1.1:
- dependencies:
- call-bound: 1.0.4
+ is-weakset@2.0.4:
+ dependencies:
+ call-bound: 1.0.4
+ get-intrinsic: 1.3.0
- is-weakset@2.0.4:
- dependencies:
- call-bound: 1.0.4
- get-intrinsic: 1.3.0
+ isarray@2.0.5: {}
- isarray@2.0.5: {}
+ isexe@2.0.0: {}
- isexe@2.0.0: {}
+ iterator.prototype@1.1.5:
+ dependencies:
+ define-data-property: 1.1.4
+ es-object-atoms: 1.1.1
+ get-intrinsic: 1.3.0
+ get-proto: 1.0.1
+ has-symbols: 1.1.0
+ set-function-name: 2.0.2
- iterator.prototype@1.1.5:
- dependencies:
- define-data-property: 1.1.4
- es-object-atoms: 1.1.1
- get-intrinsic: 1.3.0
- get-proto: 1.0.1
- has-symbols: 1.1.0
- set-function-name: 2.0.2
+ jalali-moment@3.3.11:
+ dependencies:
+ commander: 7.2.0
+ inquirer: 8.2.6
+ moment: 2.30.1
- jalali-moment@3.3.11:
- dependencies:
- commander: 7.2.0
- inquirer: 8.2.6
- moment: 2.30.1
+ js-tokens@4.0.0: {}
- js-tokens@4.0.0: {}
+ js-yaml@4.1.0:
+ dependencies:
+ argparse: 2.0.1
- js-yaml@4.1.0:
- dependencies:
- argparse: 2.0.1
+ jsesc@3.1.0: {}
- jsesc@3.1.0: {}
+ json-buffer@3.0.1: {}
- json-buffer@3.0.1: {}
+ json-parse-even-better-errors@2.3.1: {}
- json-parse-even-better-errors@2.3.1: {}
+ json-schema-traverse@0.4.1: {}
- json-schema-traverse@0.4.1: {}
+ json-stable-stringify-without-jsonify@1.0.1: {}
- json-stable-stringify-without-jsonify@1.0.1: {}
+ json5@1.0.2:
+ dependencies:
+ minimist: 1.2.8
- json5@1.0.2:
- dependencies:
- minimist: 1.2.8
+ jsx-ast-utils@3.3.5:
+ dependencies:
+ array-includes: 3.1.8
+ array.prototype.flat: 1.3.3
+ object.assign: 4.1.7
+ object.values: 1.2.1
- jsx-ast-utils@3.3.5:
- dependencies:
- array-includes: 3.1.8
- array.prototype.flat: 1.3.3
- object.assign: 4.1.7
- object.values: 1.2.1
+ keyv@4.5.4:
+ dependencies:
+ json-buffer: 3.0.1
- keyv@4.5.4:
- dependencies:
- json-buffer: 3.0.1
+ language-subtag-registry@0.3.23: {}
- language-subtag-registry@0.3.23: {}
+ language-tags@1.0.9:
+ dependencies:
+ language-subtag-registry: 0.3.23
- language-tags@1.0.9:
- dependencies:
- language-subtag-registry: 0.3.23
+ levn@0.4.1:
+ dependencies:
+ prelude-ls: 1.2.1
+ type-check: 0.4.0
- levn@0.4.1:
- dependencies:
- prelude-ls: 1.2.1
- type-check: 0.4.0
+ lines-and-columns@1.2.4: {}
- lines-and-columns@1.2.4: {}
+ locate-path@6.0.0:
+ dependencies:
+ p-locate: 5.0.0
- locate-path@6.0.0:
- dependencies:
- p-locate: 5.0.0
+ lodash.merge@4.6.2: {}
- lodash.merge@4.6.2: {}
+ lodash@4.17.21: {}
- lodash@4.17.21: {}
+ log-symbols@4.1.0:
+ dependencies:
+ chalk: 4.1.2
+ is-unicode-supported: 0.1.0
- log-symbols@4.1.0:
- dependencies:
- chalk: 4.1.2
- is-unicode-supported: 0.1.0
+ loose-envify@1.4.0:
+ dependencies:
+ js-tokens: 4.0.0
- loose-envify@1.4.0:
- dependencies:
- js-tokens: 4.0.0
+ lz-string@1.5.0: {}
- lz-string@1.5.0: {}
+ material-react-table@3.2.1(ec2ae31a6c05688f49c8e8bdcad7fbc8):
+ dependencies:
+ "@emotion/react": 11.14.0(@types/react@19.1.2)(react@19.1.0)
+ "@emotion/styled": 11.14.0(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react@19.1.0)
+ "@mui/icons-material": 7.0.2(@mui/material@7.0.2(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@types/react@19.1.2)(react@19.1.0)
+ "@mui/material": 7.0.2(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
+ "@mui/x-date-pickers": 8.2.0(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react@19.1.0))(@mui/material@7.0.2(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mui/system@7.0.2(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(date-fns-jalali@4.1.0-0)(moment@2.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
+ "@tanstack/match-sorter-utils": 8.19.4
+ "@tanstack/react-table": 8.20.6(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
+ "@tanstack/react-virtual": 3.11.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
+ highlight-words: 2.0.0
+ react: 19.1.0
+ react-dom: 19.1.0(react@19.1.0)
- material-react-table@3.2.1(ec2ae31a6c05688f49c8e8bdcad7fbc8):
- dependencies:
- '@emotion/react': 11.14.0(@types/react@19.1.2)(react@19.1.0)
- '@emotion/styled': 11.14.0(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react@19.1.0)
- '@mui/icons-material': 7.0.2(@mui/material@7.0.2(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@types/react@19.1.2)(react@19.1.0)
- '@mui/material': 7.0.2(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
- '@mui/x-date-pickers': 8.2.0(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react@19.1.0))(@mui/material@7.0.2(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mui/system@7.0.2(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(react@19.1.0))(@types/react@19.1.2)(date-fns-jalali@4.1.0-0)(moment@2.30.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
- '@tanstack/match-sorter-utils': 8.19.4
- '@tanstack/react-table': 8.20.6(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
- '@tanstack/react-virtual': 3.11.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
- highlight-words: 2.0.0
- react: 19.1.0
- react-dom: 19.1.0(react@19.1.0)
+ math-intrinsics@1.1.0: {}
- math-intrinsics@1.1.0: {}
+ media-typer@1.1.0: {}
- media-typer@1.1.0: {}
+ merge-descriptors@2.0.0: {}
- merge-descriptors@2.0.0: {}
+ merge2@1.4.1: {}
- merge2@1.4.1: {}
+ micromatch@4.0.8:
+ dependencies:
+ braces: 3.0.3
+ picomatch: 2.3.1
- micromatch@4.0.8:
- dependencies:
- braces: 3.0.3
- picomatch: 2.3.1
+ mime-db@1.52.0: {}
- mime-db@1.52.0: {}
+ mime-db@1.54.0: {}
- mime-db@1.54.0: {}
+ mime-types@2.1.35:
+ dependencies:
+ mime-db: 1.52.0
- mime-types@2.1.35:
- dependencies:
- mime-db: 1.52.0
+ mime-types@3.0.1:
+ dependencies:
+ mime-db: 1.54.0
- mime-types@3.0.1:
- dependencies:
- mime-db: 1.54.0
+ mimic-fn@2.1.0: {}
- mimic-fn@2.1.0: {}
+ minimatch@3.1.2:
+ dependencies:
+ brace-expansion: 1.1.11
- minimatch@3.1.2:
- dependencies:
- brace-expansion: 1.1.11
+ minimatch@9.0.5:
+ dependencies:
+ brace-expansion: 2.0.1
- minimatch@9.0.5:
- dependencies:
- brace-expansion: 2.0.1
+ minimist@1.2.8: {}
+
+ moment@2.30.1: {}
+
+ ms@2.1.3: {}
+
+ mute-stream@0.0.8: {}
+
+ nanoid@3.3.11: {}
+
+ napi-postinstall@0.2.3: {}
+
+ natural-compare@1.4.0: {}
+
+ negotiator@1.0.0: {}
+
+ next@15.3.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.87.0):
+ dependencies:
+ "@next/env": 15.3.1
+ "@swc/counter": 0.1.3
+ "@swc/helpers": 0.5.15
+ busboy: 1.6.0
+ caniuse-lite: 1.0.30001717
+ postcss: 8.4.31
+ react: 19.1.0
+ react-dom: 19.1.0(react@19.1.0)
+ styled-jsx: 5.1.6(react@19.1.0)
+ optionalDependencies:
+ "@next/swc-darwin-arm64": 15.3.1
+ "@next/swc-darwin-x64": 15.3.1
+ "@next/swc-linux-arm64-gnu": 15.3.1
+ "@next/swc-linux-arm64-musl": 15.3.1
+ "@next/swc-linux-x64-gnu": 15.3.1
+ "@next/swc-linux-x64-musl": 15.3.1
+ "@next/swc-win32-arm64-msvc": 15.3.1
+ "@next/swc-win32-x64-msvc": 15.3.1
+ sass: 1.87.0
+ sharp: 0.34.1
+ transitivePeerDependencies:
+ - "@babel/core"
+ - babel-plugin-macros
+
+ node-addon-api@7.1.1:
+ optional: true
+
+ object-assign@4.1.1: {}
+
+ object-inspect@1.13.4: {}
+
+ object-keys@1.1.1: {}
+
+ object.assign@4.1.7:
+ dependencies:
+ call-bind: 1.0.8
+ call-bound: 1.0.4
+ define-properties: 1.2.1
+ es-object-atoms: 1.1.1
+ has-symbols: 1.1.0
+ object-keys: 1.1.1
+
+ object.entries@1.1.9:
+ dependencies:
+ call-bind: 1.0.8
+ call-bound: 1.0.4
+ define-properties: 1.2.1
+ es-object-atoms: 1.1.1
- minimist@1.2.8: {}
-
- moment@2.30.1: {}
-
- ms@2.1.3: {}
-
- mute-stream@0.0.8: {}
-
- nanoid@3.3.11: {}
-
- napi-postinstall@0.2.3: {}
-
- natural-compare@1.4.0: {}
-
- negotiator@1.0.0: {}
-
- next@15.3.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.87.0):
- dependencies:
- '@next/env': 15.3.1
- '@swc/counter': 0.1.3
- '@swc/helpers': 0.5.15
- busboy: 1.6.0
- caniuse-lite: 1.0.30001717
- postcss: 8.4.31
- react: 19.1.0
- react-dom: 19.1.0(react@19.1.0)
- styled-jsx: 5.1.6(react@19.1.0)
- optionalDependencies:
- '@next/swc-darwin-arm64': 15.3.1
- '@next/swc-darwin-x64': 15.3.1
- '@next/swc-linux-arm64-gnu': 15.3.1
- '@next/swc-linux-arm64-musl': 15.3.1
- '@next/swc-linux-x64-gnu': 15.3.1
- '@next/swc-linux-x64-musl': 15.3.1
- '@next/swc-win32-arm64-msvc': 15.3.1
- '@next/swc-win32-x64-msvc': 15.3.1
- sass: 1.87.0
- sharp: 0.34.1
- transitivePeerDependencies:
- - '@babel/core'
- - babel-plugin-macros
-
- node-addon-api@7.1.1:
- optional: true
-
- object-assign@4.1.1: {}
-
- object-inspect@1.13.4: {}
-
- object-keys@1.1.1: {}
-
- object.assign@4.1.7:
- dependencies:
- call-bind: 1.0.8
- call-bound: 1.0.4
- define-properties: 1.2.1
- es-object-atoms: 1.1.1
- has-symbols: 1.1.0
- object-keys: 1.1.1
-
- object.entries@1.1.9:
- dependencies:
- call-bind: 1.0.8
- call-bound: 1.0.4
- define-properties: 1.2.1
- es-object-atoms: 1.1.1
+ object.fromentries@2.0.8:
+ dependencies:
+ call-bind: 1.0.8
+ define-properties: 1.2.1
+ es-abstract: 1.23.9
+ es-object-atoms: 1.1.1
+
+ object.groupby@1.0.3:
+ dependencies:
+ call-bind: 1.0.8
+ define-properties: 1.2.1
+ es-abstract: 1.23.9
- object.fromentries@2.0.8:
- dependencies:
- call-bind: 1.0.8
- define-properties: 1.2.1
- es-abstract: 1.23.9
- es-object-atoms: 1.1.1
-
- object.groupby@1.0.3:
- dependencies:
- call-bind: 1.0.8
- define-properties: 1.2.1
- es-abstract: 1.23.9
+ object.values@1.2.1:
+ dependencies:
+ call-bind: 1.0.8
+ call-bound: 1.0.4
+ define-properties: 1.2.1
+ es-object-atoms: 1.1.1
+
+ on-finished@2.4.1:
+ dependencies:
+ ee-first: 1.1.1
+
+ once@1.4.0:
+ dependencies:
+ wrappy: 1.0.2
+
+ onetime@5.1.2:
+ dependencies:
+ mimic-fn: 2.1.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
+
+ ora@5.4.1:
+ dependencies:
+ bl: 4.1.0
+ chalk: 4.1.2
+ cli-cursor: 3.1.0
+ cli-spinners: 2.9.2
+ is-interactive: 1.0.0
+ is-unicode-supported: 0.1.0
+ log-symbols: 4.1.0
+ strip-ansi: 6.0.1
+ wcwidth: 1.0.1
+
+ os-tmpdir@1.0.2: {}
+
+ own-keys@1.0.1:
+ dependencies:
+ get-intrinsic: 1.3.0
+ object-keys: 1.1.1
+ safe-push-apply: 1.0.0
+
+ 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
- object.values@1.2.1:
- dependencies:
- call-bind: 1.0.8
- call-bound: 1.0.4
- define-properties: 1.2.1
- es-object-atoms: 1.1.1
-
- on-finished@2.4.1:
- dependencies:
- ee-first: 1.1.1
-
- once@1.4.0:
- dependencies:
- wrappy: 1.0.2
-
- onetime@5.1.2:
- dependencies:
- mimic-fn: 2.1.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
-
- ora@5.4.1:
- dependencies:
- bl: 4.1.0
- chalk: 4.1.2
- cli-cursor: 3.1.0
- cli-spinners: 2.9.2
- is-interactive: 1.0.0
- is-unicode-supported: 0.1.0
- log-symbols: 4.1.0
- strip-ansi: 6.0.1
- wcwidth: 1.0.1
-
- os-tmpdir@1.0.2: {}
-
- own-keys@1.0.1:
- dependencies:
- get-intrinsic: 1.3.0
- object-keys: 1.1.1
- safe-push-apply: 1.0.0
-
- 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
+ parse-json@5.2.0:
+ dependencies:
+ "@babel/code-frame": 7.27.1
+ error-ex: 1.3.2
+ json-parse-even-better-errors: 2.3.1
+ lines-and-columns: 1.2.4
- parse-json@5.2.0:
- dependencies:
- '@babel/code-frame': 7.27.1
- error-ex: 1.3.2
- json-parse-even-better-errors: 2.3.1
- lines-and-columns: 1.2.4
+ parseurl@1.3.3: {}
- parseurl@1.3.3: {}
+ path-exists@4.0.0: {}
+
+ path-key@3.1.1: {}
+
+ path-parse@1.0.7: {}
+
+ path-to-regexp@8.2.0: {}
+
+ path-type@4.0.0: {}
+
+ picocolors@1.1.1: {}
+
+ picomatch@2.3.1: {}
+
+ picomatch@4.0.2: {}
+
+ pkce-challenge@5.0.0: {}
+
+ possible-typed-array-names@1.1.0: {}
+
+ postcss@8.4.31:
+ dependencies:
+ nanoid: 3.3.11
+ picocolors: 1.1.1
+ source-map-js: 1.2.1
- path-exists@4.0.0: {}
-
- path-key@3.1.1: {}
-
- path-parse@1.0.7: {}
-
- path-to-regexp@8.2.0: {}
-
- path-type@4.0.0: {}
-
- picocolors@1.1.1: {}
-
- picomatch@2.3.1: {}
-
- picomatch@4.0.2: {}
-
- pkce-challenge@5.0.0: {}
-
- possible-typed-array-names@1.1.0: {}
-
- postcss@8.4.31:
- dependencies:
- nanoid: 3.3.11
- picocolors: 1.1.1
- source-map-js: 1.2.1
+ prelude-ls@1.2.1: {}
- prelude-ls@1.2.1: {}
+ prettier@3.5.3: {}
- prettier@3.5.3: {}
+ prop-types@15.8.1:
+ dependencies:
+ loose-envify: 1.4.0
+ object-assign: 4.1.1
+ react-is: 16.13.1
- 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: {}
- property-expr@2.0.6: {}
+ proxy-addr@2.0.7:
+ dependencies:
+ forwarded: 0.2.0
+ ipaddr.js: 1.9.1
- proxy-addr@2.0.7:
- dependencies:
- forwarded: 0.2.0
- ipaddr.js: 1.9.1
+ proxy-from-env@1.1.0: {}
- proxy-from-env@1.1.0: {}
+ punycode@2.3.1: {}
- punycode@2.3.1: {}
+ qs@6.14.0:
+ dependencies:
+ side-channel: 1.1.0
- qs@6.14.0:
- dependencies:
- side-channel: 1.1.0
+ queue-microtask@1.2.3: {}
- queue-microtask@1.2.3: {}
+ range-parser@1.2.1: {}
- range-parser@1.2.1: {}
+ raw-body@3.0.0:
+ dependencies:
+ bytes: 3.1.2
+ http-errors: 2.0.0
+ iconv-lite: 0.6.3
+ unpipe: 1.0.0
- raw-body@3.0.0:
- dependencies:
- bytes: 3.1.2
- http-errors: 2.0.0
- iconv-lite: 0.6.3
- unpipe: 1.0.0
+ react-dom@19.1.0(react@19.1.0):
+ dependencies:
+ react: 19.1.0
+ scheduler: 0.26.0
- react-dom@19.1.0(react@19.1.0):
- dependencies:
- react: 19.1.0
- scheduler: 0.26.0
+ react-hook-form@7.56.2(react@19.1.0):
+ dependencies:
+ react: 19.1.0
- react-hook-form@7.56.2(react@19.1.0):
- dependencies:
- react: 19.1.0
+ react-is@16.13.1: {}
- react-is@16.13.1: {}
+ react-is@19.1.0: {}
- react-is@19.1.0: {}
+ react-toastify@11.0.5(react-dom@19.1.0(react@19.1.0))(react@19.1.0):
+ dependencies:
+ clsx: 2.1.1
+ react: 19.1.0
+ react-dom: 19.1.0(react@19.1.0)
- react-toastify@11.0.5(react-dom@19.1.0(react@19.1.0))(react@19.1.0):
- dependencies:
- clsx: 2.1.1
- react: 19.1.0
- react-dom: 19.1.0(react@19.1.0)
+ react-transition-group@4.4.5(react-dom@19.1.0(react@19.1.0))(react@19.1.0):
+ dependencies:
+ "@babel/runtime": 7.27.1
+ dom-helpers: 5.2.1
+ loose-envify: 1.4.0
+ prop-types: 15.8.1
+ react: 19.1.0
+ react-dom: 19.1.0(react@19.1.0)
- react-transition-group@4.4.5(react-dom@19.1.0(react@19.1.0))(react@19.1.0):
- dependencies:
- '@babel/runtime': 7.27.1
- dom-helpers: 5.2.1
- loose-envify: 1.4.0
- prop-types: 15.8.1
- react: 19.1.0
- react-dom: 19.1.0(react@19.1.0)
+ react@19.1.0: {}
- react@19.1.0: {}
+ readable-stream@3.6.2:
+ dependencies:
+ inherits: 2.0.4
+ string_decoder: 1.3.0
+ util-deprecate: 1.0.2
- readable-stream@3.6.2:
- dependencies:
- inherits: 2.0.4
- string_decoder: 1.3.0
- util-deprecate: 1.0.2
+ readdirp@4.1.2: {}
- readdirp@4.1.2: {}
-
- reflect.getprototypeof@1.0.10:
- dependencies:
- call-bind: 1.0.8
- define-properties: 1.2.1
- es-abstract: 1.23.9
- es-errors: 1.3.0
- es-object-atoms: 1.1.1
- get-intrinsic: 1.3.0
- get-proto: 1.0.1
- which-builtin-type: 1.2.1
-
- regexp.prototype.flags@1.5.4:
- dependencies:
- call-bind: 1.0.8
- define-properties: 1.2.1
- es-errors: 1.3.0
- get-proto: 1.0.1
- gopd: 1.2.0
- set-function-name: 2.0.2
-
- remove-accents@0.5.0: {}
-
- reselect@5.1.1: {}
-
- resolve-from@4.0.0: {}
-
- resolve-pkg-maps@1.0.0: {}
-
- resolve@1.22.10:
- dependencies:
- is-core-module: 2.16.1
- path-parse: 1.0.7
- supports-preserve-symlinks-flag: 1.0.0
-
- resolve@2.0.0-next.5:
- dependencies:
- is-core-module: 2.16.1
- path-parse: 1.0.7
- supports-preserve-symlinks-flag: 1.0.0
-
- restore-cursor@3.1.0:
- dependencies:
- onetime: 5.1.2
- signal-exit: 3.0.7
-
- reusify@1.1.0: {}
-
- router@2.2.0:
- dependencies:
- debug: 4.4.0
- depd: 2.0.0
- is-promise: 4.0.0
- parseurl: 1.3.3
- path-to-regexp: 8.2.0
- transitivePeerDependencies:
- - supports-color
-
- run-async@2.4.1: {}
-
- run-parallel@1.2.0:
- dependencies:
- queue-microtask: 1.2.3
-
- rxjs@7.8.2:
- dependencies:
- tslib: 2.8.1
-
- safe-array-concat@1.1.3:
- dependencies:
- call-bind: 1.0.8
- call-bound: 1.0.4
- get-intrinsic: 1.3.0
- has-symbols: 1.1.0
- isarray: 2.0.5
-
- safe-buffer@5.2.1: {}
-
- safe-push-apply@1.0.0:
- dependencies:
- es-errors: 1.3.0
- isarray: 2.0.5
-
- safe-regex-test@1.1.0:
- dependencies:
- call-bound: 1.0.4
- es-errors: 1.3.0
- is-regex: 1.2.1
-
- safer-buffer@2.1.2: {}
-
- sass@1.87.0:
- dependencies:
- chokidar: 4.0.3
- immutable: 5.1.1
- source-map-js: 1.2.1
- optionalDependencies:
- '@parcel/watcher': 2.5.1
-
- scheduler@0.26.0: {}
-
- semver@6.3.1: {}
-
- semver@7.7.1: {}
-
- send@1.2.0:
- dependencies:
- debug: 4.4.0
- encodeurl: 2.0.0
- escape-html: 1.0.3
- etag: 1.8.1
- fresh: 2.0.0
- http-errors: 2.0.0
- mime-types: 3.0.1
- ms: 2.1.3
- on-finished: 2.4.1
- range-parser: 1.2.1
- statuses: 2.0.1
- transitivePeerDependencies:
- - supports-color
-
- serve-static@2.2.0:
- dependencies:
- encodeurl: 2.0.0
- escape-html: 1.0.3
- parseurl: 1.3.3
- send: 1.2.0
- transitivePeerDependencies:
- - supports-color
-
- 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.3.0
- gopd: 1.2.0
- 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
-
- set-proto@1.0.0:
- dependencies:
- dunder-proto: 1.0.1
- es-errors: 1.3.0
- es-object-atoms: 1.1.1
-
- setprototypeof@1.2.0: {}
-
- sharp@0.34.1:
- dependencies:
- color: 4.2.3
- detect-libc: 2.0.4
- semver: 7.7.1
- optionalDependencies:
- '@img/sharp-darwin-arm64': 0.34.1
- '@img/sharp-darwin-x64': 0.34.1
- '@img/sharp-libvips-darwin-arm64': 1.1.0
- '@img/sharp-libvips-darwin-x64': 1.1.0
- '@img/sharp-libvips-linux-arm': 1.1.0
- '@img/sharp-libvips-linux-arm64': 1.1.0
- '@img/sharp-libvips-linux-ppc64': 1.1.0
- '@img/sharp-libvips-linux-s390x': 1.1.0
- '@img/sharp-libvips-linux-x64': 1.1.0
- '@img/sharp-libvips-linuxmusl-arm64': 1.1.0
- '@img/sharp-libvips-linuxmusl-x64': 1.1.0
- '@img/sharp-linux-arm': 0.34.1
- '@img/sharp-linux-arm64': 0.34.1
- '@img/sharp-linux-s390x': 0.34.1
- '@img/sharp-linux-x64': 0.34.1
- '@img/sharp-linuxmusl-arm64': 0.34.1
- '@img/sharp-linuxmusl-x64': 0.34.1
- '@img/sharp-wasm32': 0.34.1
- '@img/sharp-win32-ia32': 0.34.1
- '@img/sharp-win32-x64': 0.34.1
- optional: true
-
- shebang-command@2.0.0:
- dependencies:
- shebang-regex: 3.0.0
-
- shebang-regex@3.0.0: {}
-
- side-channel-list@1.0.0:
- dependencies:
- es-errors: 1.3.0
- object-inspect: 1.13.4
-
- side-channel-map@1.0.1:
- dependencies:
- call-bound: 1.0.4
- es-errors: 1.3.0
- get-intrinsic: 1.3.0
- object-inspect: 1.13.4
-
- side-channel-weakmap@1.0.2:
- dependencies:
- call-bound: 1.0.4
- es-errors: 1.3.0
- get-intrinsic: 1.3.0
- object-inspect: 1.13.4
- side-channel-map: 1.0.1
-
- side-channel@1.1.0:
- dependencies:
- es-errors: 1.3.0
- object-inspect: 1.13.4
- side-channel-list: 1.0.0
- side-channel-map: 1.0.1
- side-channel-weakmap: 1.0.2
-
- signal-exit@3.0.7: {}
-
- simple-swizzle@0.2.2:
- dependencies:
- is-arrayish: 0.3.2
- optional: true
-
- socket.io-client@4.8.1:
- dependencies:
- '@socket.io/component-emitter': 3.1.2
- debug: 4.3.7
- engine.io-client: 6.6.3
- socket.io-parser: 4.2.4
- transitivePeerDependencies:
- - bufferutil
- - supports-color
- - utf-8-validate
-
- socket.io-parser@4.2.4:
- dependencies:
- '@socket.io/component-emitter': 3.1.2
- debug: 4.3.7
- transitivePeerDependencies:
- - supports-color
-
- source-map-js@1.2.1: {}
-
- source-map@0.5.7: {}
-
- stable-hash@0.0.5: {}
-
- statuses@2.0.1: {}
-
- streamsearch@1.1.0: {}
-
- string-width@4.2.3:
- dependencies:
- emoji-regex: 8.0.0
- is-fullwidth-code-point: 3.0.0
- strip-ansi: 6.0.1
-
- string.prototype.includes@2.0.1:
- dependencies:
- call-bind: 1.0.8
- define-properties: 1.2.1
- es-abstract: 1.23.9
-
- string.prototype.matchall@4.0.12:
- dependencies:
- call-bind: 1.0.8
- call-bound: 1.0.4
- define-properties: 1.2.1
- es-abstract: 1.23.9
- es-errors: 1.3.0
- es-object-atoms: 1.1.1
- get-intrinsic: 1.3.0
- gopd: 1.2.0
- has-symbols: 1.1.0
- internal-slot: 1.1.0
- regexp.prototype.flags: 1.5.4
- set-function-name: 2.0.2
- side-channel: 1.1.0
-
- string.prototype.repeat@1.0.0:
- dependencies:
- define-properties: 1.2.1
- es-abstract: 1.23.9
-
- string.prototype.trim@1.2.10:
- dependencies:
- call-bind: 1.0.8
- call-bound: 1.0.4
- define-data-property: 1.1.4
- define-properties: 1.2.1
- es-abstract: 1.23.9
- es-object-atoms: 1.1.1
- has-property-descriptors: 1.0.2
-
- string.prototype.trimend@1.0.9:
- dependencies:
- call-bind: 1.0.8
- call-bound: 1.0.4
- define-properties: 1.2.1
- es-object-atoms: 1.1.1
-
- string.prototype.trimstart@1.0.8:
- dependencies:
- call-bind: 1.0.8
- define-properties: 1.2.1
- es-object-atoms: 1.1.1
-
- string_decoder@1.3.0:
- dependencies:
- safe-buffer: 5.2.1
-
- strip-ansi@6.0.1:
- dependencies:
- ansi-regex: 5.0.1
-
- strip-bom@3.0.0: {}
-
- strip-json-comments@3.1.1: {}
-
- styled-jsx@5.1.6(react@19.1.0):
- dependencies:
- client-only: 0.0.1
- react: 19.1.0
-
- stylis-plugin-rtl@2.1.1(stylis@4.3.6):
- dependencies:
- cssjanus: 2.3.0
- stylis: 4.3.6
-
- stylis@4.2.0: {}
-
- stylis@4.3.6: {}
-
- supports-color@7.2.0:
- dependencies:
- has-flag: 4.0.0
-
- supports-preserve-symlinks-flag@1.0.0: {}
-
- swr@2.3.3(react@19.1.0):
- dependencies:
- dequal: 2.0.3
- react: 19.1.0
- use-sync-external-store: 1.5.0(react@19.1.0)
-
- through@2.3.8: {}
-
- tiny-case@1.0.3: {}
-
- tinyglobby@0.2.13:
- dependencies:
- fdir: 6.4.4(picomatch@4.0.2)
- picomatch: 4.0.2
-
- tmp@0.0.33:
- dependencies:
- os-tmpdir: 1.0.2
-
- to-regex-range@5.0.1:
- dependencies:
- is-number: 7.0.0
-
- toidentifier@1.0.1: {}
-
- toposort@2.0.2: {}
-
- ts-api-utils@2.1.0(typescript@5.8.3):
- dependencies:
- typescript: 5.8.3
-
- tsconfig-paths@3.15.0:
- dependencies:
- '@types/json5': 0.0.29
- json5: 1.0.2
- minimist: 1.2.8
- strip-bom: 3.0.0
-
- tslib@2.8.1: {}
-
- type-check@0.4.0:
- dependencies:
- prelude-ls: 1.2.1
-
- type-fest@0.21.3: {}
-
- type-fest@2.19.0: {}
-
- type-is@2.0.1:
- dependencies:
- content-type: 1.0.5
- media-typer: 1.1.0
- mime-types: 3.0.1
-
- typed-array-buffer@1.0.3:
- dependencies:
- call-bound: 1.0.4
- es-errors: 1.3.0
- is-typed-array: 1.1.15
-
- typed-array-byte-length@1.0.3:
- dependencies:
- call-bind: 1.0.8
- for-each: 0.3.5
- gopd: 1.2.0
- has-proto: 1.2.0
- is-typed-array: 1.1.15
-
- typed-array-byte-offset@1.0.4:
- dependencies:
- available-typed-arrays: 1.0.7
- call-bind: 1.0.8
- for-each: 0.3.5
- gopd: 1.2.0
- has-proto: 1.2.0
- is-typed-array: 1.1.15
- reflect.getprototypeof: 1.0.10
-
- typed-array-length@1.0.7:
- dependencies:
- call-bind: 1.0.8
- for-each: 0.3.5
- gopd: 1.2.0
- is-typed-array: 1.1.15
- possible-typed-array-names: 1.1.0
- reflect.getprototypeof: 1.0.10
-
- typescript@5.8.3: {}
-
- unbox-primitive@1.1.0:
- dependencies:
- call-bound: 1.0.4
- has-bigints: 1.1.0
- has-symbols: 1.1.0
- which-boxed-primitive: 1.1.1
-
- unpipe@1.0.0: {}
-
- unrs-resolver@1.7.2:
- dependencies:
- napi-postinstall: 0.2.3
- optionalDependencies:
- '@unrs/resolver-binding-darwin-arm64': 1.7.2
- '@unrs/resolver-binding-darwin-x64': 1.7.2
- '@unrs/resolver-binding-freebsd-x64': 1.7.2
- '@unrs/resolver-binding-linux-arm-gnueabihf': 1.7.2
- '@unrs/resolver-binding-linux-arm-musleabihf': 1.7.2
- '@unrs/resolver-binding-linux-arm64-gnu': 1.7.2
- '@unrs/resolver-binding-linux-arm64-musl': 1.7.2
- '@unrs/resolver-binding-linux-ppc64-gnu': 1.7.2
- '@unrs/resolver-binding-linux-riscv64-gnu': 1.7.2
- '@unrs/resolver-binding-linux-riscv64-musl': 1.7.2
- '@unrs/resolver-binding-linux-s390x-gnu': 1.7.2
- '@unrs/resolver-binding-linux-x64-gnu': 1.7.2
- '@unrs/resolver-binding-linux-x64-musl': 1.7.2
- '@unrs/resolver-binding-wasm32-wasi': 1.7.2
- '@unrs/resolver-binding-win32-arm64-msvc': 1.7.2
- '@unrs/resolver-binding-win32-ia32-msvc': 1.7.2
- '@unrs/resolver-binding-win32-x64-msvc': 1.7.2
-
- uri-js@4.4.1:
- dependencies:
- punycode: 2.3.1
-
- use-sync-external-store@1.5.0(react@19.1.0):
- dependencies:
- react: 19.1.0
-
- util-deprecate@1.0.2: {}
-
- vary@1.1.2: {}
-
- wcwidth@1.0.1:
- dependencies:
- defaults: 1.0.4
-
- which-boxed-primitive@1.1.1:
- dependencies:
- is-bigint: 1.1.0
- is-boolean-object: 1.2.2
- is-number-object: 1.1.1
- is-string: 1.1.1
- is-symbol: 1.1.1
-
- which-builtin-type@1.2.1:
- dependencies:
- call-bound: 1.0.4
- function.prototype.name: 1.1.8
- has-tostringtag: 1.0.2
- is-async-function: 2.1.1
- is-date-object: 1.1.0
- is-finalizationregistry: 1.1.1
- is-generator-function: 1.1.0
- is-regex: 1.2.1
- is-weakref: 1.1.1
- isarray: 2.0.5
- which-boxed-primitive: 1.1.1
- which-collection: 1.0.2
- which-typed-array: 1.1.19
-
- 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.4
-
- which-typed-array@1.1.19:
- dependencies:
- available-typed-arrays: 1.0.7
- call-bind: 1.0.8
- call-bound: 1.0.4
- for-each: 0.3.5
- get-proto: 1.0.1
- gopd: 1.2.0
- has-tostringtag: 1.0.2
-
- which@2.0.2:
- dependencies:
- isexe: 2.0.0
-
- word-wrap@1.2.5: {}
-
- wrap-ansi@6.2.0:
- dependencies:
- ansi-styles: 4.3.0
- string-width: 4.2.3
- strip-ansi: 6.0.1
-
- wrappy@1.0.2: {}
-
- ws@8.17.1: {}
-
- xmlhttprequest-ssl@2.1.2: {}
-
- yaml@1.10.2: {}
-
- yocto-queue@0.1.0: {}
-
- yup@1.6.1:
- dependencies:
- property-expr: 2.0.6
- tiny-case: 1.0.3
- toposort: 2.0.2
- type-fest: 2.19.0
-
- zod-to-json-schema@3.24.5(zod@3.24.4):
- dependencies:
- zod: 3.24.4
-
- zod@3.24.4: {}
+ reflect.getprototypeof@1.0.10:
+ dependencies:
+ call-bind: 1.0.8
+ define-properties: 1.2.1
+ es-abstract: 1.23.9
+ es-errors: 1.3.0
+ es-object-atoms: 1.1.1
+ get-intrinsic: 1.3.0
+ get-proto: 1.0.1
+ which-builtin-type: 1.2.1
+
+ regexp.prototype.flags@1.5.4:
+ dependencies:
+ call-bind: 1.0.8
+ define-properties: 1.2.1
+ es-errors: 1.3.0
+ get-proto: 1.0.1
+ gopd: 1.2.0
+ set-function-name: 2.0.2
+
+ remove-accents@0.5.0: {}
+
+ reselect@5.1.1: {}
+
+ resolve-from@4.0.0: {}
+
+ resolve-pkg-maps@1.0.0: {}
+
+ resolve@1.22.10:
+ dependencies:
+ is-core-module: 2.16.1
+ path-parse: 1.0.7
+ supports-preserve-symlinks-flag: 1.0.0
+
+ resolve@2.0.0-next.5:
+ dependencies:
+ is-core-module: 2.16.1
+ path-parse: 1.0.7
+ supports-preserve-symlinks-flag: 1.0.0
+
+ restore-cursor@3.1.0:
+ dependencies:
+ onetime: 5.1.2
+ signal-exit: 3.0.7
+
+ reusify@1.1.0: {}
+
+ router@2.2.0:
+ dependencies:
+ debug: 4.4.0
+ depd: 2.0.0
+ is-promise: 4.0.0
+ parseurl: 1.3.3
+ path-to-regexp: 8.2.0
+ transitivePeerDependencies:
+ - supports-color
+
+ run-async@2.4.1: {}
+
+ run-parallel@1.2.0:
+ dependencies:
+ queue-microtask: 1.2.3
+
+ rxjs@7.8.2:
+ dependencies:
+ tslib: 2.8.1
+
+ safe-array-concat@1.1.3:
+ dependencies:
+ call-bind: 1.0.8
+ call-bound: 1.0.4
+ get-intrinsic: 1.3.0
+ has-symbols: 1.1.0
+ isarray: 2.0.5
+
+ safe-buffer@5.2.1: {}
+
+ safe-push-apply@1.0.0:
+ dependencies:
+ es-errors: 1.3.0
+ isarray: 2.0.5
+
+ safe-regex-test@1.1.0:
+ dependencies:
+ call-bound: 1.0.4
+ es-errors: 1.3.0
+ is-regex: 1.2.1
+
+ safer-buffer@2.1.2: {}
+
+ sass@1.87.0:
+ dependencies:
+ chokidar: 4.0.3
+ immutable: 5.1.1
+ source-map-js: 1.2.1
+ optionalDependencies:
+ "@parcel/watcher": 2.5.1
+
+ scheduler@0.26.0: {}
+
+ semver@6.3.1: {}
+
+ semver@7.7.1: {}
+
+ send@1.2.0:
+ dependencies:
+ debug: 4.4.0
+ encodeurl: 2.0.0
+ escape-html: 1.0.3
+ etag: 1.8.1
+ fresh: 2.0.0
+ http-errors: 2.0.0
+ mime-types: 3.0.1
+ ms: 2.1.3
+ on-finished: 2.4.1
+ range-parser: 1.2.1
+ statuses: 2.0.1
+ transitivePeerDependencies:
+ - supports-color
+
+ serve-static@2.2.0:
+ dependencies:
+ encodeurl: 2.0.0
+ escape-html: 1.0.3
+ parseurl: 1.3.3
+ send: 1.2.0
+ transitivePeerDependencies:
+ - supports-color
+
+ 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.3.0
+ gopd: 1.2.0
+ 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
+
+ set-proto@1.0.0:
+ dependencies:
+ dunder-proto: 1.0.1
+ es-errors: 1.3.0
+ es-object-atoms: 1.1.1
+
+ setprototypeof@1.2.0: {}
+
+ sharp@0.34.1:
+ dependencies:
+ color: 4.2.3
+ detect-libc: 2.0.4
+ semver: 7.7.1
+ optionalDependencies:
+ "@img/sharp-darwin-arm64": 0.34.1
+ "@img/sharp-darwin-x64": 0.34.1
+ "@img/sharp-libvips-darwin-arm64": 1.1.0
+ "@img/sharp-libvips-darwin-x64": 1.1.0
+ "@img/sharp-libvips-linux-arm": 1.1.0
+ "@img/sharp-libvips-linux-arm64": 1.1.0
+ "@img/sharp-libvips-linux-ppc64": 1.1.0
+ "@img/sharp-libvips-linux-s390x": 1.1.0
+ "@img/sharp-libvips-linux-x64": 1.1.0
+ "@img/sharp-libvips-linuxmusl-arm64": 1.1.0
+ "@img/sharp-libvips-linuxmusl-x64": 1.1.0
+ "@img/sharp-linux-arm": 0.34.1
+ "@img/sharp-linux-arm64": 0.34.1
+ "@img/sharp-linux-s390x": 0.34.1
+ "@img/sharp-linux-x64": 0.34.1
+ "@img/sharp-linuxmusl-arm64": 0.34.1
+ "@img/sharp-linuxmusl-x64": 0.34.1
+ "@img/sharp-wasm32": 0.34.1
+ "@img/sharp-win32-ia32": 0.34.1
+ "@img/sharp-win32-x64": 0.34.1
+ optional: true
+
+ shebang-command@2.0.0:
+ dependencies:
+ shebang-regex: 3.0.0
+
+ shebang-regex@3.0.0: {}
+
+ side-channel-list@1.0.0:
+ dependencies:
+ es-errors: 1.3.0
+ object-inspect: 1.13.4
+
+ side-channel-map@1.0.1:
+ dependencies:
+ call-bound: 1.0.4
+ es-errors: 1.3.0
+ get-intrinsic: 1.3.0
+ object-inspect: 1.13.4
+
+ side-channel-weakmap@1.0.2:
+ dependencies:
+ call-bound: 1.0.4
+ es-errors: 1.3.0
+ get-intrinsic: 1.3.0
+ object-inspect: 1.13.4
+ side-channel-map: 1.0.1
+
+ side-channel@1.1.0:
+ dependencies:
+ es-errors: 1.3.0
+ object-inspect: 1.13.4
+ side-channel-list: 1.0.0
+ side-channel-map: 1.0.1
+ side-channel-weakmap: 1.0.2
+
+ signal-exit@3.0.7: {}
+
+ simple-swizzle@0.2.2:
+ dependencies:
+ is-arrayish: 0.3.2
+ optional: true
+
+ socket.io-client@4.8.1:
+ dependencies:
+ "@socket.io/component-emitter": 3.1.2
+ debug: 4.3.7
+ engine.io-client: 6.6.3
+ socket.io-parser: 4.2.4
+ transitivePeerDependencies:
+ - bufferutil
+ - supports-color
+ - utf-8-validate
+
+ socket.io-parser@4.2.4:
+ dependencies:
+ "@socket.io/component-emitter": 3.1.2
+ debug: 4.3.7
+ transitivePeerDependencies:
+ - supports-color
+
+ source-map-js@1.2.1: {}
+
+ source-map@0.5.7: {}
+
+ stable-hash@0.0.5: {}
+
+ statuses@2.0.1: {}
+
+ streamsearch@1.1.0: {}
+
+ string-width@4.2.3:
+ dependencies:
+ emoji-regex: 8.0.0
+ is-fullwidth-code-point: 3.0.0
+ strip-ansi: 6.0.1
+
+ string.prototype.includes@2.0.1:
+ dependencies:
+ call-bind: 1.0.8
+ define-properties: 1.2.1
+ es-abstract: 1.23.9
+
+ string.prototype.matchall@4.0.12:
+ dependencies:
+ call-bind: 1.0.8
+ call-bound: 1.0.4
+ define-properties: 1.2.1
+ es-abstract: 1.23.9
+ es-errors: 1.3.0
+ es-object-atoms: 1.1.1
+ get-intrinsic: 1.3.0
+ gopd: 1.2.0
+ has-symbols: 1.1.0
+ internal-slot: 1.1.0
+ regexp.prototype.flags: 1.5.4
+ set-function-name: 2.0.2
+ side-channel: 1.1.0
+
+ string.prototype.repeat@1.0.0:
+ dependencies:
+ define-properties: 1.2.1
+ es-abstract: 1.23.9
+
+ string.prototype.trim@1.2.10:
+ dependencies:
+ call-bind: 1.0.8
+ call-bound: 1.0.4
+ define-data-property: 1.1.4
+ define-properties: 1.2.1
+ es-abstract: 1.23.9
+ es-object-atoms: 1.1.1
+ has-property-descriptors: 1.0.2
+
+ string.prototype.trimend@1.0.9:
+ dependencies:
+ call-bind: 1.0.8
+ call-bound: 1.0.4
+ define-properties: 1.2.1
+ es-object-atoms: 1.1.1
+
+ string.prototype.trimstart@1.0.8:
+ dependencies:
+ call-bind: 1.0.8
+ define-properties: 1.2.1
+ es-object-atoms: 1.1.1
+
+ string_decoder@1.3.0:
+ dependencies:
+ safe-buffer: 5.2.1
+
+ strip-ansi@6.0.1:
+ dependencies:
+ ansi-regex: 5.0.1
+
+ strip-bom@3.0.0: {}
+
+ strip-json-comments@3.1.1: {}
+
+ styled-jsx@5.1.6(react@19.1.0):
+ dependencies:
+ client-only: 0.0.1
+ react: 19.1.0
+
+ stylis-plugin-rtl@2.1.1(stylis@4.3.6):
+ dependencies:
+ cssjanus: 2.3.0
+ stylis: 4.3.6
+
+ stylis@4.2.0: {}
+
+ stylis@4.3.6: {}
+
+ supports-color@7.2.0:
+ dependencies:
+ has-flag: 4.0.0
+
+ supports-preserve-symlinks-flag@1.0.0: {}
+
+ swr@2.3.3(react@19.1.0):
+ dependencies:
+ dequal: 2.0.3
+ react: 19.1.0
+ use-sync-external-store: 1.5.0(react@19.1.0)
+
+ through@2.3.8: {}
+
+ tiny-case@1.0.3: {}
+
+ tinyglobby@0.2.13:
+ dependencies:
+ fdir: 6.4.4(picomatch@4.0.2)
+ picomatch: 4.0.2
+
+ tmp@0.0.33:
+ dependencies:
+ os-tmpdir: 1.0.2
+
+ to-regex-range@5.0.1:
+ dependencies:
+ is-number: 7.0.0
+
+ toidentifier@1.0.1: {}
+
+ toposort@2.0.2: {}
+
+ ts-api-utils@2.1.0(typescript@5.8.3):
+ dependencies:
+ typescript: 5.8.3
+
+ tsconfig-paths@3.15.0:
+ dependencies:
+ "@types/json5": 0.0.29
+ json5: 1.0.2
+ minimist: 1.2.8
+ strip-bom: 3.0.0
+
+ tslib@2.8.1: {}
+
+ type-check@0.4.0:
+ dependencies:
+ prelude-ls: 1.2.1
+
+ type-fest@0.21.3: {}
+
+ type-fest@2.19.0: {}
+
+ type-is@2.0.1:
+ dependencies:
+ content-type: 1.0.5
+ media-typer: 1.1.0
+ mime-types: 3.0.1
+
+ typed-array-buffer@1.0.3:
+ dependencies:
+ call-bound: 1.0.4
+ es-errors: 1.3.0
+ is-typed-array: 1.1.15
+
+ typed-array-byte-length@1.0.3:
+ dependencies:
+ call-bind: 1.0.8
+ for-each: 0.3.5
+ gopd: 1.2.0
+ has-proto: 1.2.0
+ is-typed-array: 1.1.15
+
+ typed-array-byte-offset@1.0.4:
+ dependencies:
+ available-typed-arrays: 1.0.7
+ call-bind: 1.0.8
+ for-each: 0.3.5
+ gopd: 1.2.0
+ has-proto: 1.2.0
+ is-typed-array: 1.1.15
+ reflect.getprototypeof: 1.0.10
+
+ typed-array-length@1.0.7:
+ dependencies:
+ call-bind: 1.0.8
+ for-each: 0.3.5
+ gopd: 1.2.0
+ is-typed-array: 1.1.15
+ possible-typed-array-names: 1.1.0
+ reflect.getprototypeof: 1.0.10
+
+ typescript@5.8.3: {}
+
+ unbox-primitive@1.1.0:
+ dependencies:
+ call-bound: 1.0.4
+ has-bigints: 1.1.0
+ has-symbols: 1.1.0
+ which-boxed-primitive: 1.1.1
+
+ unpipe@1.0.0: {}
+
+ unrs-resolver@1.7.2:
+ dependencies:
+ napi-postinstall: 0.2.3
+ optionalDependencies:
+ "@unrs/resolver-binding-darwin-arm64": 1.7.2
+ "@unrs/resolver-binding-darwin-x64": 1.7.2
+ "@unrs/resolver-binding-freebsd-x64": 1.7.2
+ "@unrs/resolver-binding-linux-arm-gnueabihf": 1.7.2
+ "@unrs/resolver-binding-linux-arm-musleabihf": 1.7.2
+ "@unrs/resolver-binding-linux-arm64-gnu": 1.7.2
+ "@unrs/resolver-binding-linux-arm64-musl": 1.7.2
+ "@unrs/resolver-binding-linux-ppc64-gnu": 1.7.2
+ "@unrs/resolver-binding-linux-riscv64-gnu": 1.7.2
+ "@unrs/resolver-binding-linux-riscv64-musl": 1.7.2
+ "@unrs/resolver-binding-linux-s390x-gnu": 1.7.2
+ "@unrs/resolver-binding-linux-x64-gnu": 1.7.2
+ "@unrs/resolver-binding-linux-x64-musl": 1.7.2
+ "@unrs/resolver-binding-wasm32-wasi": 1.7.2
+ "@unrs/resolver-binding-win32-arm64-msvc": 1.7.2
+ "@unrs/resolver-binding-win32-ia32-msvc": 1.7.2
+ "@unrs/resolver-binding-win32-x64-msvc": 1.7.2
+
+ uri-js@4.4.1:
+ dependencies:
+ punycode: 2.3.1
+
+ use-sync-external-store@1.5.0(react@19.1.0):
+ dependencies:
+ react: 19.1.0
+
+ util-deprecate@1.0.2: {}
+
+ vary@1.1.2: {}
+
+ wcwidth@1.0.1:
+ dependencies:
+ defaults: 1.0.4
+
+ which-boxed-primitive@1.1.1:
+ dependencies:
+ is-bigint: 1.1.0
+ is-boolean-object: 1.2.2
+ is-number-object: 1.1.1
+ is-string: 1.1.1
+ is-symbol: 1.1.1
+
+ which-builtin-type@1.2.1:
+ dependencies:
+ call-bound: 1.0.4
+ function.prototype.name: 1.1.8
+ has-tostringtag: 1.0.2
+ is-async-function: 2.1.1
+ is-date-object: 1.1.0
+ is-finalizationregistry: 1.1.1
+ is-generator-function: 1.1.0
+ is-regex: 1.2.1
+ is-weakref: 1.1.1
+ isarray: 2.0.5
+ which-boxed-primitive: 1.1.1
+ which-collection: 1.0.2
+ which-typed-array: 1.1.19
+
+ 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.4
+
+ which-typed-array@1.1.19:
+ dependencies:
+ available-typed-arrays: 1.0.7
+ call-bind: 1.0.8
+ call-bound: 1.0.4
+ for-each: 0.3.5
+ get-proto: 1.0.1
+ gopd: 1.2.0
+ has-tostringtag: 1.0.2
+
+ which@2.0.2:
+ dependencies:
+ isexe: 2.0.0
+
+ word-wrap@1.2.5: {}
+
+ wrap-ansi@6.2.0:
+ dependencies:
+ ansi-styles: 4.3.0
+ string-width: 4.2.3
+ strip-ansi: 6.0.1
+
+ wrappy@1.0.2: {}
+
+ ws@8.17.1: {}
+
+ xmlhttprequest-ssl@2.1.2: {}
+
+ yaml@1.10.2: {}
+
+ yocto-queue@0.1.0: {}
+
+ yup@1.6.1:
+ dependencies:
+ property-expr: 2.0.6
+ tiny-case: 1.0.3
+ toposort: 2.0.2
+ type-fest: 2.19.0
+
+ zod-to-json-schema@3.24.5(zod@3.24.4):
+ dependencies:
+ zod: 3.24.4
+
+ zod@3.24.4: {}
diff --git a/src/app/(withAuth)/(dashboardLayout)/dashboard/loading.jsx b/src/app/(withAuth)/(dashboardLayout)/dashboard/loading.jsx
index 6469168..4535a8d 100644
--- a/src/app/(withAuth)/(dashboardLayout)/dashboard/loading.jsx
+++ b/src/app/(withAuth)/(dashboardLayout)/dashboard/loading.jsx
@@ -2,6 +2,6 @@
import PageLoading from "@/core/components/PageLoading";
const Loading = () => {
- return ;
+ return ;
};
export default Loading;
diff --git a/src/app/(withAuth)/(dashboardLayout)/dashboard/page.js b/src/app/(withAuth)/(dashboardLayout)/dashboard/page.js
index 3178277..9376f1f 100644
--- a/src/app/(withAuth)/(dashboardLayout)/dashboard/page.js
+++ b/src/app/(withAuth)/(dashboardLayout)/dashboard/page.js
@@ -1,11 +1,11 @@
import DashboardPage from "@/components/dashboard/dashboard";
export const metadata = {
- title: "پیشخوان",
+ title: "پیشخوان",
};
const Page = () => {
- return ;
+ return ;
};
export default Page;
diff --git a/src/app/(withAuth)/(dashboardLayout)/dashboard/users/page.js b/src/app/(withAuth)/(dashboardLayout)/dashboard/users/page.js
index 745cbf1..87ff72f 100644
--- a/src/app/(withAuth)/(dashboardLayout)/dashboard/users/page.js
+++ b/src/app/(withAuth)/(dashboardLayout)/dashboard/users/page.js
@@ -2,15 +2,15 @@ import UsersPage from "@/components/dashboard/Users";
import WithPermission from "@/core/middlewares/withPermission";
export const metadata = {
- title: "کاربران",
+ title: "کاربران",
};
const Page = () => {
- return (
-
-
-
- );
+ return (
+
+
+
+ );
};
export default Page;
diff --git a/src/app/(withAuth)/(dashboardLayout)/layout.js b/src/app/(withAuth)/(dashboardLayout)/layout.js
index 544ff61..efb1344 100644
--- a/src/app/(withAuth)/(dashboardLayout)/layout.js
+++ b/src/app/(withAuth)/(dashboardLayout)/layout.js
@@ -8,22 +8,20 @@ import { Stack } from "@mui/material";
import { SWRConfig } from "swr";
const Layout = ({ children }) => {
- const { data: permissions } = usePermissions();
- const isCallWidgetEnabled = permissions?.some(
- (permission) => permission === "manage_calls",
- );
+ const { data: permissions } = usePermissions();
+ const isCallWidgetEnabled = permissions?.some((permission) => permission === "manage_calls");
- return (
-
- new Map() }}>
-
- {children}
-
-
-
-
-
-
- );
+ return (
+
+ new Map() }}>
+
+ {children}
+
+
+
+
+
+
+ );
};
export default Layout;
diff --git a/src/app/(withAuth)/layout.js b/src/app/(withAuth)/layout.js
index 315d04e..63d25a7 100644
--- a/src/app/(withAuth)/layout.js
+++ b/src/app/(withAuth)/layout.js
@@ -1,7 +1,7 @@
import WithAuthMiddleware from "@/core/middlewares/withAuth";
const Layout = ({ children }) => {
- return {children};
+ return {children};
};
export default Layout;
diff --git a/src/app/(withoutAuth)/layout.js b/src/app/(withoutAuth)/layout.js
index d3d734f..650e355 100644
--- a/src/app/(withoutAuth)/layout.js
+++ b/src/app/(withoutAuth)/layout.js
@@ -3,11 +3,11 @@ import WithoutAuthMiddleware from "@/core/middlewares/withoutAuth";
import { Suspense } from "react";
const Layout = ({ children }) => {
- return (
-
- {children}
-
- );
+ return (
+
+ {children}
+
+ );
};
export default Layout;
diff --git a/src/app/(withoutAuth)/login/page.js b/src/app/(withoutAuth)/login/page.js
index 74eab32..1276073 100644
--- a/src/app/(withoutAuth)/login/page.js
+++ b/src/app/(withoutAuth)/login/page.js
@@ -1,10 +1,10 @@
import LoginPage from "@/components/Login";
export const metadata = {
- title: "ورود",
+ title: "ورود",
};
const Page = () => {
- return ;
+ return ;
};
export default Page;
diff --git a/src/app/default.js b/src/app/default.js
index 6ddf1b7..d157a71 100644
--- a/src/app/default.js
+++ b/src/app/default.js
@@ -1,3 +1,3 @@
export default function Default() {
- return null;
+ return null;
}
diff --git a/src/app/layout.js b/src/app/layout.js
index 12228f6..060ccfe 100644
--- a/src/app/layout.js
+++ b/src/app/layout.js
@@ -5,28 +5,25 @@ import { TableSettingProvider } from "@/lib/contexts/tableSetting";
import { AppRouterCacheProvider } from "@mui/material-nextjs/v15-appRouter";
export const metadata = {
- title: {
- template: "%s | سامانه CRM",
- default: "سامانه CRM",
- },
+ title: {
+ template: "%s | سامانه CRM",
+ default: "سامانه CRM",
+ },
};
export default function RootLayout({ children }) {
- return (
-
-
-
-
-
-
-
- {children}
-
-
-
-
- );
+ return (
+
+
+
+
+
+
+
+ {children}
+
+
+
+
+ );
}
diff --git a/src/app/not-found.js b/src/app/not-found.js
index 7174a75..5d38652 100644
--- a/src/app/not-found.js
+++ b/src/app/not-found.js
@@ -3,19 +3,14 @@ import { Box, Stack, Typography } from "@mui/material";
import SvgNotFound from "@/core/components/svgs/SvgNotFound";
export default function NotFound() {
- return (
-
-
-
-
-
- صفحه موردنظر یافت نشد ...
-
-
- );
+ return (
+
+
+
+
+
+ صفحه موردنظر یافت نشد ...
+
+
+ );
}
diff --git a/src/app/page.js b/src/app/page.js
index 651714b..2997c35 100644
--- a/src/app/page.js
+++ b/src/app/page.js
@@ -1,8 +1,8 @@
import { redirect } from "next/navigation";
function Page() {
- redirect("/dashboard", "replace");
- return null;
+ redirect("/dashboard", "replace");
+ return null;
}
export default Page;
diff --git a/src/app/template.js b/src/app/template.js
index cd9e11e..911d764 100644
--- a/src/app/template.js
+++ b/src/app/template.js
@@ -7,34 +7,34 @@ import { CssBaseline, GlobalStyles, ThemeProvider } from "@mui/material";
import { ToastContainer } from "react-toastify";
const Template = ({ children }) => {
- return (
-
-
-
- {children}
-
-
-
-
- );
+ return (
+
+
+
+ {children}
+
+
+
+
+ );
};
export default Template;
diff --git a/src/assets/scss/fontiran.scss b/src/assets/scss/fontiran.scss
index 6aaa085..e1ac329 100644
--- a/src/assets/scss/fontiran.scss
+++ b/src/assets/scss/fontiran.scss
@@ -1,212 +1,172 @@
@font-face {
- font-family: IRANSansFaNum;
- font-style: normal;
- font-weight: 900;
- src: url("../fonts/eot/IRANSansWeb(FaNum)_Black.eot");
- src:
- url("../fonts/eot/IRANSansWeb(FaNum)_Black.eot?#iefix")
- format("embedded-opentype"),
- /* IE6-8 */ url("../fonts/woff2/IRANSansWeb(FaNum)_Black.woff2")
- format("woff2"),
- /* FF39+,Chrome36+, Opera24+*/
- url("../fonts/woff/IRANSansWeb(FaNum)_Black.woff") format("woff"),
- /* FF3.6+, IE9, Chrome6+, Saf5.1+*/
- url("../fonts/ttf/IRANSansWeb(FaNum)_Black.ttf") format("truetype");
+ font-family: IRANSansFaNum;
+ font-style: normal;
+ font-weight: 900;
+ src: url("../fonts/eot/IRANSansWeb(FaNum)_Black.eot");
+ src:
+ url("../fonts/eot/IRANSansWeb(FaNum)_Black.eot?#iefix") format("embedded-opentype"),
+ /* IE6-8 */ url("../fonts/woff2/IRANSansWeb(FaNum)_Black.woff2") format("woff2"),
+ /* FF39+,Chrome36+, Opera24+*/ url("../fonts/woff/IRANSansWeb(FaNum)_Black.woff") format("woff"),
+ /* FF3.6+, IE9, Chrome6+, Saf5.1+*/ url("../fonts/ttf/IRANSansWeb(FaNum)_Black.ttf") format("truetype");
}
@font-face {
- font-family: IRANSansFaNum;
- font-style: normal;
- font-weight: bold;
- src: url("../fonts/eot/IRANSansWeb(FaNum)_Bold.eot");
- src:
- url("../fonts/eot/IRANSansWeb(FaNum)_Bold.eot?#iefix")
- format("embedded-opentype"),
- /* IE6-8 */ url("../fonts/woff2/IRANSansWeb(FaNum)_Bold.woff2")
- format("woff2"),
- /* FF39+,Chrome36+, Opera24+*/
- url("../fonts/woff/IRANSansWeb(FaNum)_Bold.woff") format("woff"),
- /* FF3.6+, IE9, Chrome6+, Saf5.1+*/
- url("../fonts/ttf/IRANSansWeb(FaNum)_Bold.ttf") format("truetype");
+ font-family: IRANSansFaNum;
+ font-style: normal;
+ font-weight: bold;
+ src: url("../fonts/eot/IRANSansWeb(FaNum)_Bold.eot");
+ src:
+ url("../fonts/eot/IRANSansWeb(FaNum)_Bold.eot?#iefix") format("embedded-opentype"),
+ /* IE6-8 */ url("../fonts/woff2/IRANSansWeb(FaNum)_Bold.woff2") format("woff2"),
+ /* FF39+,Chrome36+, Opera24+*/ url("../fonts/woff/IRANSansWeb(FaNum)_Bold.woff") format("woff"),
+ /* FF3.6+, IE9, Chrome6+, Saf5.1+*/ url("../fonts/ttf/IRANSansWeb(FaNum)_Bold.ttf") format("truetype");
}
@font-face {
- font-family: IRANSansFaNum;
- font-style: normal;
- font-weight: 500;
- src: url("../fonts/eot/IRANSansWeb(FaNum)_Medium.eot");
- src:
- url("../fonts/eot/IRANSansWeb(FaNum)_Medium.eot?#iefix")
- format("embedded-opentype"),
- /* IE6-8 */ url("../fonts/woff2/IRANSansWeb(FaNum)_Medium.woff2")
- format("woff2"),
- /* FF39+,Chrome36+, Opera24+*/
- url("../fonts/woff/IRANSansWeb(FaNum)_Medium.woff") format("woff"),
- /* FF3.6+, IE9, Chrome6+, Saf5.1+*/
- url("../fonts/ttf/IRANSansWeb(FaNum)_Medium.ttf") format("truetype");
+ font-family: IRANSansFaNum;
+ font-style: normal;
+ font-weight: 500;
+ src: url("../fonts/eot/IRANSansWeb(FaNum)_Medium.eot");
+ src:
+ url("../fonts/eot/IRANSansWeb(FaNum)_Medium.eot?#iefix") format("embedded-opentype"),
+ /* IE6-8 */ url("../fonts/woff2/IRANSansWeb(FaNum)_Medium.woff2") format("woff2"),
+ /* FF39+,Chrome36+, Opera24+*/ url("../fonts/woff/IRANSansWeb(FaNum)_Medium.woff") format("woff"),
+ /* FF3.6+, IE9, Chrome6+, Saf5.1+*/ url("../fonts/ttf/IRANSansWeb(FaNum)_Medium.ttf") format("truetype");
}
@font-face {
- font-family: IRANSansFaNum;
- font-style: normal;
- font-weight: 300;
- src: url("../fonts/eot/IRANSansWeb(FaNum)_Light.eot");
- src:
- url("../fonts/eot/IRANSansWeb(FaNum)_Light.eot?#iefix")
- format("embedded-opentype"),
- /* IE6-8 */ url("../fonts/woff2/IRANSansWeb(FaNum)_Light.woff2")
- format("woff2"),
- /* FF39+,Chrome36+, Opera24+*/
- url("../fonts/woff/IRANSansWeb(FaNum)_Light.woff") format("woff"),
- /* FF3.6+, IE9, Chrome6+, Saf5.1+*/
- url("../fonts/ttf/IRANSansWeb(FaNum)_Light.ttf") format("truetype");
+ font-family: IRANSansFaNum;
+ font-style: normal;
+ font-weight: 300;
+ src: url("../fonts/eot/IRANSansWeb(FaNum)_Light.eot");
+ src:
+ url("../fonts/eot/IRANSansWeb(FaNum)_Light.eot?#iefix") format("embedded-opentype"),
+ /* IE6-8 */ url("../fonts/woff2/IRANSansWeb(FaNum)_Light.woff2") format("woff2"),
+ /* FF39+,Chrome36+, Opera24+*/ url("../fonts/woff/IRANSansWeb(FaNum)_Light.woff") format("woff"),
+ /* FF3.6+, IE9, Chrome6+, Saf5.1+*/ url("../fonts/ttf/IRANSansWeb(FaNum)_Light.ttf") format("truetype");
}
@font-face {
- font-family: IRANSansFaNum;
- font-style: normal;
- font-weight: 200;
- src: url("../fonts/eot/IRANSansWeb(FaNum)_UltraLight.eot");
- src:
- url("../fonts/eot/IRANSansWeb(FaNum)_UltraLight.eot?#iefix")
- format("embedded-opentype"),
- /* IE6-8 */ url("../fonts/woff2/IRANSansWeb(FaNum)_UltraLight.woff2")
- format("woff2"),
- /* FF39+,Chrome36+, Opera24+*/
- url("../fonts/woff/IRANSansWeb(FaNum)_UltraLight.woff") format("woff"),
- /* FF3.6+, IE9, Chrome6+, Saf5.1+*/
- url("../fonts/ttf/IRANSansWeb(FaNum)_UltraLight.ttf") format("truetype");
+ font-family: IRANSansFaNum;
+ font-style: normal;
+ font-weight: 200;
+ src: url("../fonts/eot/IRANSansWeb(FaNum)_UltraLight.eot");
+ src:
+ url("../fonts/eot/IRANSansWeb(FaNum)_UltraLight.eot?#iefix") format("embedded-opentype"),
+ /* IE6-8 */ url("../fonts/woff2/IRANSansWeb(FaNum)_UltraLight.woff2") format("woff2"),
+ /* FF39+,Chrome36+, Opera24+*/ url("../fonts/woff/IRANSansWeb(FaNum)_UltraLight.woff") format("woff"),
+ /* FF3.6+, IE9, Chrome6+, Saf5.1+*/ url("../fonts/ttf/IRANSansWeb(FaNum)_UltraLight.ttf") format("truetype");
}
@font-face {
- font-family: IRANSansFaNum;
- font-style: normal;
- font-weight: normal;
- src: url("../fonts/eot/IRANSansWeb(FaNum).eot");
- src:
- url("../fonts/eot/IRANSansWeb(FaNum).eot?#iefix")
- format("embedded-opentype"),
- /* IE6-8 */ url("../fonts/woff2/IRANSansWeb(FaNum).woff2") format("woff2"),
- /* FF39+,Chrome36+, Opera24+*/ url("../fonts/woff/IRANSansWeb(FaNum).woff")
- format("woff"),
- /* FF3.6+, IE9, Chrome6+, Saf5.1+*/
- url("../fonts/ttf/IRANSansWeb(FaNum).ttf") format("truetype");
+ font-family: IRANSansFaNum;
+ font-style: normal;
+ font-weight: normal;
+ src: url("../fonts/eot/IRANSansWeb(FaNum).eot");
+ src:
+ url("../fonts/eot/IRANSansWeb(FaNum).eot?#iefix") format("embedded-opentype"),
+ /* IE6-8 */ url("../fonts/woff2/IRANSansWeb(FaNum).woff2") format("woff2"),
+ /* FF39+,Chrome36+, Opera24+*/ url("../fonts/woff/IRANSansWeb(FaNum).woff") format("woff"),
+ /* FF3.6+, IE9, Chrome6+, Saf5.1+*/ url("../fonts/ttf/IRANSansWeb(FaNum).ttf") format("truetype");
}
@font-face {
- font-family: IRANSans;
- font-style: normal;
- font-weight: 900;
- src: url("../fonts/eot/IRANSansWeb_Black.eot");
- src:
- url("../fonts/eot/IRANSansWeb_Black.eot?#iefix") format("embedded-opentype"),
- /* IE6-8 */ url("../fonts/woff2/IRANSansWeb_Black.woff2") format("woff2"),
- /* FF39+,Chrome36+, Opera24+*/ url("../fonts/woff/IRANSansWeb_Black.woff")
- format("woff"),
- /* FF3.6+, IE9, Chrome6+, Saf5.1+*/
- url("../fonts/ttf/IRANSansWeb_Black.ttf") format("truetype");
+ font-family: IRANSans;
+ font-style: normal;
+ font-weight: 900;
+ src: url("../fonts/eot/IRANSansWeb_Black.eot");
+ src:
+ url("../fonts/eot/IRANSansWeb_Black.eot?#iefix") format("embedded-opentype"),
+ /* IE6-8 */ url("../fonts/woff2/IRANSansWeb_Black.woff2") format("woff2"),
+ /* FF39+,Chrome36+, Opera24+*/ url("../fonts/woff/IRANSansWeb_Black.woff") format("woff"),
+ /* FF3.6+, IE9, Chrome6+, Saf5.1+*/ url("../fonts/ttf/IRANSansWeb_Black.ttf") format("truetype");
}
@font-face {
- font-family: IRANSans;
- font-style: normal;
- font-weight: bold;
- src: url("../fonts/eot/IRANSansWeb_Bold.eot");
- src:
- url("../fonts/eot/IRANSansWeb_Bold.eot?#iefix") format("embedded-opentype"),
- /* IE6-8 */ url("../fonts/woff2/IRANSansWeb_Bold.woff2") format("woff2"),
- /* FF39+,Chrome36+, Opera24+*/ url("../fonts/woff/IRANSansWeb_Bold.woff")
- format("woff"),
- /* FF3.6+, IE9, Chrome6+, Saf5.1+*/ url("../fonts/ttf/IRANSansWeb_Bold.ttf")
- format("truetype");
+ font-family: IRANSans;
+ font-style: normal;
+ font-weight: bold;
+ src: url("../fonts/eot/IRANSansWeb_Bold.eot");
+ src:
+ url("../fonts/eot/IRANSansWeb_Bold.eot?#iefix") format("embedded-opentype"),
+ /* IE6-8 */ url("../fonts/woff2/IRANSansWeb_Bold.woff2") format("woff2"),
+ /* FF39+,Chrome36+, Opera24+*/ url("../fonts/woff/IRANSansWeb_Bold.woff") format("woff"),
+ /* FF3.6+, IE9, Chrome6+, Saf5.1+*/ url("../fonts/ttf/IRANSansWeb_Bold.ttf") format("truetype");
}
@font-face {
- font-family: IRANSans;
- font-style: normal;
- font-weight: 500;
- src: url("../fonts/eot/IRANSansWeb_Medium.eot");
- src:
- url("../fonts/eot/IRANSansWeb_Medium.eot?#iefix")
- format("embedded-opentype"),
- /* IE6-8 */ url("../fonts/woff2/IRANSansWeb_Medium.woff2") format("woff2"),
- /* FF39+,Chrome36+, Opera24+*/ url("../fonts/woff/IRANSansWeb_Medium.woff")
- format("woff"),
- /* FF3.6+, IE9, Chrome6+, Saf5.1+*/
- url("../fonts/ttf/IRANSansWeb_Medium.ttf") format("truetype");
+ font-family: IRANSans;
+ font-style: normal;
+ font-weight: 500;
+ src: url("../fonts/eot/IRANSansWeb_Medium.eot");
+ src:
+ url("../fonts/eot/IRANSansWeb_Medium.eot?#iefix") format("embedded-opentype"),
+ /* IE6-8 */ url("../fonts/woff2/IRANSansWeb_Medium.woff2") format("woff2"),
+ /* FF39+,Chrome36+, Opera24+*/ url("../fonts/woff/IRANSansWeb_Medium.woff") format("woff"),
+ /* FF3.6+, IE9, Chrome6+, Saf5.1+*/ url("../fonts/ttf/IRANSansWeb_Medium.ttf") format("truetype");
}
@font-face {
- font-family: IRANSans;
- font-style: normal;
- font-weight: 300;
- src: url("../fonts/eot/IRANSansWeb_Light.eot");
- src:
- url("../fonts/eot/IRANSansWeb_Light.eot?#iefix") format("embedded-opentype"),
- /* IE6-8 */ url("../fonts/woff2/IRANSansWeb_Light.woff2") format("woff2"),
- /* FF39+,Chrome36+, Opera24+*/ url("../fonts/woff/IRANSansWeb_Light.woff")
- format("woff"),
- /* FF3.6+, IE9, Chrome6+, Saf5.1+*/
- url("../fonts/ttf/IRANSansWeb_Light.ttf") format("truetype");
+ font-family: IRANSans;
+ font-style: normal;
+ font-weight: 300;
+ src: url("../fonts/eot/IRANSansWeb_Light.eot");
+ src:
+ url("../fonts/eot/IRANSansWeb_Light.eot?#iefix") format("embedded-opentype"),
+ /* IE6-8 */ url("../fonts/woff2/IRANSansWeb_Light.woff2") format("woff2"),
+ /* FF39+,Chrome36+, Opera24+*/ url("../fonts/woff/IRANSansWeb_Light.woff") format("woff"),
+ /* FF3.6+, IE9, Chrome6+, Saf5.1+*/ url("../fonts/ttf/IRANSansWeb_Light.ttf") format("truetype");
}
@font-face {
- font-family: IRANSans;
- font-style: normal;
- font-weight: 200;
- src: url("../fonts/eot/IRANSansWeb_UltraLight.eot");
- src:
- url("../fonts/eot/IRANSansWeb_UltraLight.eot?#iefix")
- format("embedded-opentype"),
- /* IE6-8 */ url("../fonts/woff2/IRANSansWeb_UltraLight.woff2")
- format("woff2"),
- /* FF39+,Chrome36+, Opera24+*/
- url("../fonts/woff/IRANSansWeb_UltraLight.woff") format("woff"),
- /* FF3.6+, IE9, Chrome6+, Saf5.1+*/
- url("../fonts/ttf/IRANSansWeb_UltraLight.ttf") format("truetype");
+ font-family: IRANSans;
+ font-style: normal;
+ font-weight: 200;
+ src: url("../fonts/eot/IRANSansWeb_UltraLight.eot");
+ src:
+ url("../fonts/eot/IRANSansWeb_UltraLight.eot?#iefix") format("embedded-opentype"),
+ /* IE6-8 */ url("../fonts/woff2/IRANSansWeb_UltraLight.woff2") format("woff2"),
+ /* FF39+,Chrome36+, Opera24+*/ url("../fonts/woff/IRANSansWeb_UltraLight.woff") format("woff"),
+ /* FF3.6+, IE9, Chrome6+, Saf5.1+*/ url("../fonts/ttf/IRANSansWeb_UltraLight.ttf") format("truetype");
}
@font-face {
- font-family: IRANSans;
- font-style: normal;
- font-weight: normal;
- src: url("../fonts/eot/IRANSansWeb.eot");
- src:
- url("../fonts/eot/IRANSansWeb.eot?#iefix") format("embedded-opentype"),
- /* IE6-8 */ url("../fonts/woff2/IRANSansWeb.woff2") format("woff2"),
- /* FF39+,Chrome36+, Opera24+*/ url("../fonts/woff/IRANSansWeb.woff")
- format("woff"),
- /* FF3.6+, IE9, Chrome6+, Saf5.1+*/ url("../fonts/ttf/IRANSansWeb.ttf")
- format("truetype");
+ font-family: IRANSans;
+ font-style: normal;
+ font-weight: normal;
+ src: url("../fonts/eot/IRANSansWeb.eot");
+ src:
+ url("../fonts/eot/IRANSansWeb.eot?#iefix") format("embedded-opentype"),
+ /* IE6-8 */ url("../fonts/woff2/IRANSansWeb.woff2") format("woff2"),
+ /* FF39+,Chrome36+, Opera24+*/ url("../fonts/woff/IRANSansWeb.woff") format("woff"),
+ /* FF3.6+, IE9, Chrome6+, Saf5.1+*/ url("../fonts/ttf/IRANSansWeb.ttf") format("truetype");
}
@font-face {
- font-family: Parastoo;
- font-style: normal;
- font-weight: normal;
- src: url("../fonts/eot/Parastoo.eot");
- src:
- url("../fonts/eot/Parastoo.eot?#iefix") format("embedded-opentype"),
- /* IE6-8 */ url("../fonts/woff/Parastoo.woff") format("woff"),
- /* FF3.6+, IE9, Chrome6+, Saf5.1+*/ url("../fonts/ttf/Parastoo.ttf")
- format("truetype");
+ font-family: Parastoo;
+ font-style: normal;
+ font-weight: normal;
+ src: url("../fonts/eot/Parastoo.eot");
+ src:
+ url("../fonts/eot/Parastoo.eot?#iefix") format("embedded-opentype"),
+ /* IE6-8 */ url("../fonts/woff/Parastoo.woff") format("woff"),
+ /* FF3.6+, IE9, Chrome6+, Saf5.1+*/ url("../fonts/ttf/Parastoo.ttf") format("truetype");
}
@font-face {
- font-family: Parastoo;
- font-style: normal;
- font-weight: bold;
- src: url("../fonts/eot/Parastoo-Bold.eot");
- src:
- url("../fonts/eot/Parastoo-Bold.eot?#iefix") format("embedded-opentype"),
- /* IE6-8 */ url("../fonts/woff/Parastoo-Bold.woff") format("woff"),
- /* FF3.6+, IE9, Chrome6+, Saf5.1+*/ url("../fonts/ttf/Parastoo-Bold.ttf")
- format("truetype");
+ font-family: Parastoo;
+ font-style: normal;
+ font-weight: bold;
+ src: url("../fonts/eot/Parastoo-Bold.eot");
+ src:
+ url("../fonts/eot/Parastoo-Bold.eot?#iefix") format("embedded-opentype"),
+ /* IE6-8 */ url("../fonts/woff/Parastoo-Bold.woff") format("woff"),
+ /* FF3.6+, IE9, Chrome6+, Saf5.1+*/ url("../fonts/ttf/Parastoo-Bold.ttf") format("truetype");
}
@font-face {
- font-family: Bnazanin;
- font-style: normal;
- font-weight: normal;
- src: url("../fonts/ttf/BNazanin.ttf") format("truetype");
+ font-family: Bnazanin;
+ font-style: normal;
+ font-weight: normal;
+ src: url("../fonts/ttf/BNazanin.ttf") format("truetype");
}
diff --git a/src/assets/scss/global.scss b/src/assets/scss/global.scss
index ec424d5..9618dec 100644
--- a/src/assets/scss/global.scss
+++ b/src/assets/scss/global.scss
@@ -1,6 +1,6 @@
.filter-toast {
- box-shadow:
- rgba(50, 50, 93, 0.25) 0px 13px 27px -5px,
- rgba(0, 0, 0, 0.3) 0px 8px 16px -8px;
- background-color: #d0dfe8;
+ box-shadow:
+ rgba(50, 50, 93, 0.25) 0px 13px 27px -5px,
+ rgba(0, 0, 0, 0.3) 0px 8px 16px -8px;
+ background-color: #d0dfe8;
}
diff --git a/src/components/Login/Form/index.jsx b/src/components/Login/Form/index.jsx
index b836889..cac22bd 100644
--- a/src/components/Login/Form/index.jsx
+++ b/src/components/Login/Form/index.jsx
@@ -5,169 +5,135 @@ import { GET_USER_LOGIN_ROUTE } from "@/core/utils/routes";
import { useAuth } from "@/lib/contexts/auth";
import useRequest from "@/lib/hooks/useRequest";
import { yupResolver } from "@hookform/resolvers/yup";
-import {
- Lock,
- Person,
- PhoneCallback,
- Visibility,
- VisibilityOff,
-} from "@mui/icons-material";
-import {
- Button,
- Container,
- IconButton,
- InputAdornment,
- Stack,
- Typography,
-} from "@mui/material";
+import { Lock, Person, PhoneCallback, Visibility, VisibilityOff } from "@mui/icons-material";
+import { Button, Container, IconButton, InputAdornment, Stack, Typography } from "@mui/material";
import { useState } from "react";
import { Controller, useForm } from "react-hook-form";
import { object, string } from "yup";
const LoginForm = () => {
- const [showPassword, setShowPassword] = useState(false);
- const requestServer = useRequest();
- const { getUser } = useAuth();
- const defaultValues = {
- username: "",
- password: "",
- };
+ const [showPassword, setShowPassword] = useState(false);
+ const requestServer = useRequest();
+ const { getUser } = useAuth();
+ const defaultValues = {
+ username: "",
+ password: "",
+ };
- const validationSchema = object({
- username: string().required("لطفا نام کاربری را وارد کنید!"),
- password: string().required("لطفا رمز عبور را وارد کنید!"),
- });
+ const validationSchema = object({
+ username: string().required("لطفا نام کاربری را وارد کنید!"),
+ password: string().required("لطفا رمز عبور را وارد کنید!"),
+ });
- const {
- control,
- handleSubmit,
- formState: { isSubmitting },
- } = useForm({
- defaultValues,
- resolver: yupResolver(validationSchema),
- mode: "all",
- });
+ const {
+ control,
+ handleSubmit,
+ formState: { isSubmitting },
+ } = useForm({
+ defaultValues,
+ resolver: yupResolver(validationSchema),
+ mode: "all",
+ });
- const handleClickShowPassword = () => setShowPassword((show) => !show);
+ const handleClickShowPassword = () => setShowPassword((show) => !show);
- const onSubmit = async (data) => {
- try {
- const formData = new FormData();
- formData.append("username", data.username);
- formData.append("password", data.password);
- await requestServer(GET_USER_LOGIN_ROUTE, "post", {
- data: formData,
- });
- getUser();
- } catch (error) {}
- };
+ const onSubmit = async (data) => {
+ try {
+ const formData = new FormData();
+ formData.append("username", data.username);
+ formData.append("password", data.password);
+ await requestServer(GET_USER_LOGIN_ROUTE, "post", {
+ data: formData,
+ });
+ getUser();
+ } catch (error) {}
+ };
- return (
-
-
-
-
-
- ورود به سامانه CRM
-
-
-
-
- {
- return (
-
-
-
- ),
- },
- }}
- fullWidth
- error={!!error}
- helperText={!!error && error.message}
- />
- );
- }}
- name={"username"}
- />
- {
- return (
-
-
- {showPassword ? (
-
- ) : (
-
- )}
-
-
- ),
- endAdornment: (
-
-
-
- ),
- },
- }}
- fullWidth
- error={!!error}
- helperText={!!error && error.message}
- />
- );
- }}
- name={"password"}
- />
-
-
-
-
-
-
-
-
- );
+ return (
+
+
+
+
+
+ ورود به سامانه CRM
+
+
+
+
+ {
+ return (
+
+
+
+ ),
+ },
+ }}
+ fullWidth
+ error={!!error}
+ helperText={!!error && error.message}
+ />
+ );
+ }}
+ name={"username"}
+ />
+ {
+ return (
+
+
+ {showPassword ? : }
+
+
+ ),
+ endAdornment: (
+
+
+
+ ),
+ },
+ }}
+ fullWidth
+ error={!!error}
+ helperText={!!error && error.message}
+ />
+ );
+ }}
+ name={"password"}
+ />
+
+
+
+
+
+
+
+
+ );
};
export default LoginForm;
diff --git a/src/components/Login/LoginLinkRouting.jsx b/src/components/Login/LoginLinkRouting.jsx
index 83c5165..6bc9ff7 100644
--- a/src/components/Login/LoginLinkRouting.jsx
+++ b/src/components/Login/LoginLinkRouting.jsx
@@ -4,22 +4,22 @@ import Link from "next/link";
import { useSearchParams } from "next/navigation";
const LoginLinkRouting = () => {
- const searchParams = useSearchParams();
+ const searchParams = useSearchParams();
- const redirect = searchParams.get("redirect");
+ const redirect = searchParams.get("redirect");
- return (
-
-
-
- );
+ return (
+
+
+
+ );
};
export default LoginLinkRouting;
diff --git a/src/components/Login/index.jsx b/src/components/Login/index.jsx
index d0f485d..ad22bd7 100644
--- a/src/components/Login/index.jsx
+++ b/src/components/Login/index.jsx
@@ -5,15 +5,15 @@ import LoginLinkRouting from "./LoginLinkRouting";
import { Suspense } from "react";
const LoginPage = () => {
- return (
-
-
-
-
-
-
-
-
- );
+ return (
+
+
+
+
+
+
+
+
+ );
};
export default LoginPage;
diff --git a/src/components/dashboard/Users/DataTable.jsx b/src/components/dashboard/Users/DataTable.jsx
index 71da3fe..5157149 100644
--- a/src/components/dashboard/Users/DataTable.jsx
+++ b/src/components/dashboard/Users/DataTable.jsx
@@ -13,205 +13,200 @@ import OnlineCell from "./RowActions/Online";
import TelephoneId from "./RowActions/TelephoneId";
const DataTable = () => {
- const columns = useMemo(
- () => [
- {
- accessorKey: "id",
- header: "کد یکتا",
- id: "id",
- enableColumnFilter: true,
- datatype: "text",
- filterMode: "equals",
- sortDescFirst: false,
- columnFilterModeOptions: ["equals", "contains"],
- grow: false,
- size: 100,
- },
- {
- accessorKey: "full_name",
- header: "نام و نام خانوادگی",
- id: "full_name",
- enableColumnFilter: true,
- datatype: "text",
- filterMode: "equals",
- sortDescFirst: false,
- columnFilterModeOptions: ["equals", "contains"],
- grow: false,
- size: 100,
- },
- {
- header: "شماره تماس داخلی",
- id: "telephone_id",
- enableColumnFilter: true,
- datatype: "text",
- filterMode: "equals",
- sortDescFirst: false,
- columnFilterModeOptions: ["equals", "contains"],
- grow: false,
- size: 100,
- Cell: ({ row }) => ,
- },
- {
- accessorKey: "is_online",
- header: "وضعیت برخط",
- id: "is_online",
- enableColumnFilter: true,
- datatype: "text",
- filterMode: "equals",
- sortDescFirst: false,
- columnFilterModeOptions: ["equals", "contains"],
- grow: false,
- size: 100,
- Cell: ({ row }) => ,
- },
- {
- header: "استان",
- id: "province_id",
- enableColumnFilter: true,
- datatype: "numeric",
- filterMode: "equals",
- grow: false,
- size: 130,
- ColumnSelectComponent: (props) => {
- const { provinces, errorProvinces, loadingProvinces } =
- useProvinces();
- const getColumnSelectOptions = useMemo(() => {
- if (loadingProvinces) {
- return [{ value: "loading", label: "در حال بارگذاری..." }];
- }
- if (errorProvinces) {
- return [{ value: "error", label: "خطا در بارگذاری" }];
- }
- return [
- { value: "", label: "کل کشور" },
- ...provinces.map((province) => ({
- value: province.id,
- label: province.name,
- })),
- ];
- }, [provinces, errorProvinces, loadingProvinces]);
- return (
-
- );
- },
- Cell: ({ renderedCellValue, row }) => <>{row.original.province_fa}>,
- },
- {
- accessorKey: "username",
- header: "نام کاربری",
- id: "username",
- enableColumnFilter: true,
- datatype: "text",
- filterMode: "equals",
- sortDescFirst: false,
- columnFilterModeOptions: ["equals", "contains"],
- grow: false,
- size: 100,
- },
- {
- accessorKey: "position",
- header: "سمت",
- id: "position",
- enableColumnFilter: false,
- grow: false,
- size: 100,
- },
- {
- accessorKey: "phone_number",
- header: "شماره همراه",
- id: "phone_number",
- enableColumnFilter: false,
- grow: false,
- size: 100,
- },
- {
- header: "نقش",
- id: "role__id",
- enableColumnFilter: false,
- grow: false,
- size: 100,
- enableColumnFilter: true,
- datatype: "numeric",
- filterMode: "equals",
- grow: false,
- size: 130,
- ColumnSelectComponent: (props) => {
- const { roles, errorRoles, loadingRoles } = useRoles();
- const getColumnSelectOptions = useMemo(() => {
- if (loadingRoles) {
- return [{ value: "loading", label: "در حال بارگذاری..." }];
- }
- if (errorRoles) {
- return [{ value: "error", label: "خطا در بارگذاری" }];
- }
- return [
- { value: "", label: "همه نقش ها" },
- ...roles.map((role) => ({
- value: role.id,
- label: role.name_fa,
- })),
- ];
- }, [roles, errorRoles, loadingRoles]);
- return (
-
- );
- },
- Cell: ({ row }) => <>{row.original.roles[0].name_fa}>,
- },
- {
- accessorKey: "national_id",
- header: "کد ملی",
- id: "national_id",
- enableColumnFilter: true,
- datatype: "text",
- filterMode: "equals",
- sortDescFirst: false,
- columnFilterModeOptions: ["equals", "contains"],
- grow: false,
- size: 100,
- },
- {
- accessorKey: "gender",
- header: "جنسیت",
- id: "gender",
- enableColumnFilter: false,
- grow: false,
- size: 100,
- Cell: ({ renderedCellValue }) => (
- <>{renderedCellValue == "male" ? "آقا" : "خانم"}>
- ),
- },
- ],
- [],
- );
+ const columns = useMemo(
+ () => [
+ {
+ accessorKey: "id",
+ header: "کد یکتا",
+ id: "id",
+ enableColumnFilter: true,
+ datatype: "text",
+ filterMode: "equals",
+ sortDescFirst: false,
+ columnFilterModeOptions: ["equals", "contains"],
+ grow: false,
+ size: 100,
+ },
+ {
+ accessorKey: "full_name",
+ header: "نام و نام خانوادگی",
+ id: "full_name",
+ enableColumnFilter: true,
+ datatype: "text",
+ filterMode: "equals",
+ sortDescFirst: false,
+ columnFilterModeOptions: ["equals", "contains"],
+ grow: false,
+ size: 100,
+ },
+ {
+ header: "شماره تماس داخلی",
+ id: "telephone_id",
+ enableColumnFilter: true,
+ datatype: "text",
+ filterMode: "equals",
+ sortDescFirst: false,
+ columnFilterModeOptions: ["equals", "contains"],
+ grow: false,
+ size: 100,
+ Cell: ({ row }) => ,
+ },
+ {
+ accessorKey: "is_online",
+ header: "وضعیت برخط",
+ id: "is_online",
+ enableColumnFilter: true,
+ datatype: "text",
+ filterMode: "equals",
+ sortDescFirst: false,
+ columnFilterModeOptions: ["equals", "contains"],
+ grow: false,
+ size: 100,
+ Cell: ({ row }) => ,
+ },
+ {
+ header: "استان",
+ id: "province_id",
+ enableColumnFilter: true,
+ datatype: "numeric",
+ filterMode: "equals",
+ grow: false,
+ size: 130,
+ ColumnSelectComponent: (props) => {
+ const { provinces, errorProvinces, loadingProvinces } = useProvinces();
+ const getColumnSelectOptions = useMemo(() => {
+ if (loadingProvinces) {
+ return [{ value: "loading", label: "در حال بارگذاری..." }];
+ }
+ if (errorProvinces) {
+ return [{ value: "error", label: "خطا در بارگذاری" }];
+ }
+ return [
+ { value: "", label: "کل کشور" },
+ ...provinces.map((province) => ({
+ value: province.id,
+ label: province.name,
+ })),
+ ];
+ }, [provinces, errorProvinces, loadingProvinces]);
+ return (
+
+ );
+ },
+ Cell: ({ renderedCellValue, row }) => <>{row.original.province_fa}>,
+ },
+ {
+ accessorKey: "username",
+ header: "نام کاربری",
+ id: "username",
+ enableColumnFilter: true,
+ datatype: "text",
+ filterMode: "equals",
+ sortDescFirst: false,
+ columnFilterModeOptions: ["equals", "contains"],
+ grow: false,
+ size: 100,
+ },
+ {
+ accessorKey: "position",
+ header: "سمت",
+ id: "position",
+ enableColumnFilter: false,
+ grow: false,
+ size: 100,
+ },
+ {
+ accessorKey: "phone_number",
+ header: "شماره همراه",
+ id: "phone_number",
+ enableColumnFilter: false,
+ grow: false,
+ size: 100,
+ },
+ {
+ header: "نقش",
+ id: "role__id",
+ enableColumnFilter: false,
+ grow: false,
+ size: 100,
+ enableColumnFilter: true,
+ datatype: "numeric",
+ filterMode: "equals",
+ grow: false,
+ size: 130,
+ ColumnSelectComponent: (props) => {
+ const { roles, errorRoles, loadingRoles } = useRoles();
+ const getColumnSelectOptions = useMemo(() => {
+ if (loadingRoles) {
+ return [{ value: "loading", label: "در حال بارگذاری..." }];
+ }
+ if (errorRoles) {
+ return [{ value: "error", label: "خطا در بارگذاری" }];
+ }
+ return [
+ { value: "", label: "همه نقش ها" },
+ ...roles.map((role) => ({
+ value: role.id,
+ label: role.name_fa,
+ })),
+ ];
+ }, [roles, errorRoles, loadingRoles]);
+ return (
+
+ );
+ },
+ Cell: ({ row }) => <>{row.original.roles[0].name_fa}>,
+ },
+ {
+ accessorKey: "national_id",
+ header: "کد ملی",
+ id: "national_id",
+ enableColumnFilter: true,
+ datatype: "text",
+ filterMode: "equals",
+ sortDescFirst: false,
+ columnFilterModeOptions: ["equals", "contains"],
+ grow: false,
+ size: 100,
+ },
+ {
+ accessorKey: "gender",
+ header: "جنسیت",
+ id: "gender",
+ enableColumnFilter: false,
+ grow: false,
+ size: 100,
+ Cell: ({ renderedCellValue }) => <>{renderedCellValue == "male" ? "آقا" : "خانم"}>,
+ },
+ ],
+ []
+ );
- return (
- <>
-
-
-
- >
- );
+ return (
+ <>
+
+
+
+ >
+ );
};
export default DataTable;
diff --git a/src/components/dashboard/Users/RowActions/Delete/DeleteContent.jsx b/src/components/dashboard/Users/RowActions/Delete/DeleteContent.jsx
index 36a8710..693e441 100644
--- a/src/components/dashboard/Users/RowActions/Delete/DeleteContent.jsx
+++ b/src/components/dashboard/Users/RowActions/Delete/DeleteContent.jsx
@@ -1,56 +1,39 @@
import { DELETE_USER } from "@/core/utils/routes";
import useRequest from "@/lib/hooks/useRequest";
-import {
- Button,
- DialogActions,
- DialogContent,
- Stack,
- Typography,
-} from "@mui/material";
+import { Button, DialogActions, DialogContent, Stack, Typography } from "@mui/material";
import { useState } from "react";
const DeleteContent = ({ rowId, mutate, setOpenDeleteDialog }) => {
- const [submitting, setSubmitting] = useState(false);
- const requestServer = useRequest({ notificationSuccess: true });
- const handleClick = async () => {
- setSubmitting(true);
- try {
- await requestServer(`${DELETE_USER}/${rowId}`, "delete");
- mutate();
- setOpenDeleteDialog(false);
- } catch (error) {
- } finally {
- setSubmitting(false);
- }
- };
- return (
- <>
-
-
- آیا از حذف کاربر اطمینان دارید؟
-
-
-
-
-
-
- >
- );
+ const [submitting, setSubmitting] = useState(false);
+ const requestServer = useRequest({ notificationSuccess: true });
+ const handleClick = async () => {
+ setSubmitting(true);
+ try {
+ await requestServer(`${DELETE_USER}/${rowId}`, "delete");
+ mutate();
+ setOpenDeleteDialog(false);
+ } catch (error) {
+ } finally {
+ setSubmitting(false);
+ }
+ };
+ return (
+ <>
+
+
+ آیا از حذف کاربر اطمینان دارید؟
+
+
+
+
+
+
+ >
+ );
};
export default DeleteContent;
diff --git a/src/components/dashboard/Users/RowActions/Delete/index.jsx b/src/components/dashboard/Users/RowActions/Delete/index.jsx
index 5f55897..7d045bf 100644
--- a/src/components/dashboard/Users/RowActions/Delete/index.jsx
+++ b/src/components/dashboard/Users/RowActions/Delete/index.jsx
@@ -3,35 +3,30 @@ import { Dialog, DialogTitle, IconButton, Tooltip } from "@mui/material";
import { useState } from "react";
import DeleteContent from "./DeleteContent";
const Delete = ({ rowId, mutate }) => {
- const [openDeleteDialog, setOpenDeleteDialog] = useState(false);
+ const [openDeleteDialog, setOpenDeleteDialog] = useState(false);
- return (
- <>
-
- setOpenDeleteDialog(true)}>
-
-
-
-
- >
- );
+ return (
+ <>
+
+ setOpenDeleteDialog(true)}>
+
+
+
+
+ >
+ );
};
export default Delete;
diff --git a/src/components/dashboard/Users/RowActions/Edit/Form/index.jsx b/src/components/dashboard/Users/RowActions/Edit/Form/index.jsx
index 3094eb3..2686f27 100644
--- a/src/components/dashboard/Users/RowActions/Edit/Form/index.jsx
+++ b/src/components/dashboard/Users/RowActions/Edit/Form/index.jsx
@@ -7,363 +7,357 @@ import useRequest from "@/lib/hooks/useRequest";
import useRoles from "@/lib/hooks/useRoles";
import { yupResolver } from "@hookform/resolvers/yup";
import {
- Button,
- Chip,
- DialogActions,
- DialogContent,
- Divider,
- FormControl,
- FormHelperText,
- Grid,
- InputLabel,
- MenuItem,
- OutlinedInput,
- Select,
- Stack,
- TextField,
+ Button,
+ Chip,
+ DialogActions,
+ DialogContent,
+ Divider,
+ FormControl,
+ FormHelperText,
+ Grid,
+ InputLabel,
+ MenuItem,
+ OutlinedInput,
+ Select,
+ Stack,
+ TextField,
} from "@mui/material";
import { useMemo } from "react";
import { Controller, useForm } from "react-hook-form";
import { object, string } from "yup";
const validationSchema = object().shape({
- full_name: string().required("نام و نام خانوادگی خود را وارد کنید"),
- username: string().required("نام کاربری خود را وارد کنید"),
- phone_number: string()
- .matches(/^09\d{9}$/, "شماره همراه باید با 09 شروع شود و 11 رقم باشد.")
- .required("شماره همراه خود را وارد کنید"),
- gender: string().required("جنسیت خود را وارد کنید"),
- national_id: string()
- .test(
- "max",
- "کد ملی باید شامل 10 رقم باشد",
- (value) => value.toString().length === 10,
- )
- .test("validation", "کد ملی صحیح نمی باشد", (value) =>
- validateNationalCode(value),
- )
- .required("کد ملی خود را وارد کنید"),
- position: string().required("سمت خود را وارد کنید"),
- province_id: string().required("استان خود را وارد کنید"),
- role_id: string().required("نقش خود را وارد کنید"),
+ full_name: string().required("نام و نام خانوادگی خود را وارد کنید"),
+ username: string().required("نام کاربری خود را وارد کنید"),
+ phone_number: string()
+ .matches(/^09\d{9}$/, "شماره همراه باید با 09 شروع شود و 11 رقم باشد.")
+ .required("شماره همراه خود را وارد کنید"),
+ gender: string().required("جنسیت خود را وارد کنید"),
+ national_id: string()
+ .test("max", "کد ملی باید شامل 10 رقم باشد", (value) => value.toString().length === 10)
+ .test("validation", "کد ملی صحیح نمی باشد", (value) => validateNationalCode(value))
+ .required("کد ملی خود را وارد کنید"),
+ position: string().required("سمت خود را وارد کنید"),
+ province_id: string().required("استان خود را وارد کنید"),
+ role_id: string().required("نقش خود را وارد کنید"),
});
const UpdateUserForm = ({ values, setOpen, mutate }) => {
- const requestServer = useRequest({ notificationSuccess: true });
- const { provinces, errorProvinces, loadingProvinces } = useProvinces();
- const { roles, errorRoles, loadingRoles } = useRoles();
+ const requestServer = useRequest({ notificationSuccess: true });
+ const { provinces, errorProvinces, loadingProvinces } = useProvinces();
+ const { roles, errorRoles, loadingRoles } = useRoles();
- const defaultValues = {
- full_name: values.full_name,
- username: values.username,
- position: values.position,
- gender: values.gender,
- national_id: values.national_id,
- phone_number: values.phone_number,
- province_id: values.province_id,
- role_id: values.roles[0].id,
- };
+ const defaultValues = {
+ full_name: values.full_name,
+ username: values.username,
+ position: values.position,
+ gender: values.gender,
+ national_id: values.national_id,
+ phone_number: values.phone_number,
+ province_id: values.province_id,
+ role_id: values.roles[0].id,
+ };
- const provinceSelectOptions = useMemo(() => {
- if (loadingProvinces) {
- return [{ value: "loading", label: "در حال بارگذاری..." }];
- }
- if (errorProvinces) {
- return [{ value: "error", label: "خطا در بارگذاری" }];
- }
- return [
- { value: "", label: "انتخاب استان" },
- ...provinces.map((province) => ({
- value: province.id,
- label: province.name,
- })),
- ];
- }, [provinces, errorProvinces, loadingProvinces]);
+ const provinceSelectOptions = useMemo(() => {
+ if (loadingProvinces) {
+ return [{ value: "loading", label: "در حال بارگذاری..." }];
+ }
+ if (errorProvinces) {
+ return [{ value: "error", label: "خطا در بارگذاری" }];
+ }
+ return [
+ { value: "", label: "انتخاب استان" },
+ ...provinces.map((province) => ({
+ value: province.id,
+ label: province.name,
+ })),
+ ];
+ }, [provinces, errorProvinces, loadingProvinces]);
- const roleSelectOptions = useMemo(() => {
- if (loadingRoles) {
- return [{ value: "loading", label: "در حال بارگذاری..." }];
- }
- if (errorRoles) {
- return [{ value: "error", label: "خطا در بارگذاری" }];
- }
- return [
- { value: "", label: "انتخاب نقش" },
- ...roles.map((role) => ({
- value: role.id,
- label: role.name_fa,
- })),
- ];
- }, [roles, errorRoles, loadingRoles]);
+ const roleSelectOptions = useMemo(() => {
+ if (loadingRoles) {
+ return [{ value: "loading", label: "در حال بارگذاری..." }];
+ }
+ if (errorRoles) {
+ return [{ value: "error", label: "خطا در بارگذاری" }];
+ }
+ return [
+ { value: "", label: "انتخاب نقش" },
+ ...roles.map((role) => ({
+ value: role.id,
+ label: role.name_fa,
+ })),
+ ];
+ }, [roles, errorRoles, loadingRoles]);
- const {
- control,
- handleSubmit,
- formState: { isSubmitting, errors },
- } = useForm({ defaultValues, resolver: yupResolver(validationSchema) });
+ const {
+ control,
+ handleSubmit,
+ formState: { isSubmitting, errors },
+ } = useForm({ defaultValues, resolver: yupResolver(validationSchema) });
- const onSubmit = async (data) => {
- const formData = new FormData();
- Object.keys(data).forEach((key) => {
- formData.append(key, data[key]);
- });
- try {
- await requestServer(`${UPDATE_USER}/${values.id}`, "post", {
- data: formData,
- });
- setOpen(false);
- mutate();
- } catch (error) {}
- };
+ const onSubmit = async (data) => {
+ const formData = new FormData();
+ Object.keys(data).forEach((key) => {
+ formData.append(key, data[key]);
+ });
+ try {
+ await requestServer(`${UPDATE_USER}/${values.id}`, "post", {
+ data: formData,
+ });
+ setOpen(false);
+ mutate();
+ } catch (error) {}
+ };
- return (
- <>
-
-
-
-
-
-
-
-
- {
- return (
-
- );
- }}
- name={"username"}
- />
-
-
- {
- return (
-
- );
- }}
- name={"full_name"}
- />
-
-
- {
- return (
-
- );
- }}
- name={"position"}
- />
-
-
- {
- return (
- {
- const inputValue = event.target.value;
- if (isNaN(Number(inputValue))) {
- return;
- }
- if (inputValue.length > 11) {
- return;
- }
- field.onChange(inputValue);
- }}
- error={!!error}
- helperText={!!error && error.message}
- />
- );
- }}
- name={"phone_number"}
- />
-
-
- {
- return (
-
-
- جنسیت
-
- }
- onChange={(e) => field.onChange(e.target.value)}
- displayEmpty
- >
-
-
-
-
- {!!error && error.message}
-
-
- );
- }}
- name={"gender"}
- />
-
-
- {
- return (
- {
- const inputValue = event.target.value;
- if (isNaN(Number(inputValue))) {
- return;
- }
- if (inputValue.length > 10) {
- return;
- }
- field.onChange(inputValue);
- }}
- error={!!error}
- helperText={!!error && error.message}
- />
- );
- }}
- name={"national_id"}
- />
-
-
- {
- return (
-
-
- استان
-
- }
- onChange={(e) => field.onChange(e.target.value)}
- displayEmpty
- >
- {provinceSelectOptions.map((option) => (
-
- ))}
-
-
- {!!error && error.message}
-
-
- );
- }}
- name={"province_id"}
- />
-
-
- {
- return (
-
-
- نقش
-
- }
- onChange={(e) => field.onChange(e.target.value)}
- displayEmpty
- >
- {roleSelectOptions.map((option) => (
-
- ))}
-
-
- {!!error && error.message}
-
-
- );
- }}
- name={"role_id"}
- />
-
-
-
-
-
-
-
-
-
- >
- );
+ return (
+ <>
+
+
+
+
+
+
+
+
+ {
+ return (
+
+ );
+ }}
+ name={"username"}
+ />
+
+
+ {
+ return (
+
+ );
+ }}
+ name={"full_name"}
+ />
+
+
+ {
+ return (
+
+ );
+ }}
+ name={"position"}
+ />
+
+
+ {
+ return (
+ {
+ const inputValue = event.target.value;
+ if (isNaN(Number(inputValue))) {
+ return;
+ }
+ if (inputValue.length > 11) {
+ return;
+ }
+ field.onChange(inputValue);
+ }}
+ error={!!error}
+ helperText={!!error && error.message}
+ />
+ );
+ }}
+ name={"phone_number"}
+ />
+
+
+ {
+ return (
+
+
+ جنسیت
+
+ }
+ onChange={(e) => field.onChange(e.target.value)}
+ displayEmpty
+ >
+
+
+
+
+ {!!error && error.message}
+
+
+ );
+ }}
+ name={"gender"}
+ />
+
+
+ {
+ return (
+ {
+ const inputValue = event.target.value;
+ if (isNaN(Number(inputValue))) {
+ return;
+ }
+ if (inputValue.length > 10) {
+ return;
+ }
+ field.onChange(inputValue);
+ }}
+ error={!!error}
+ helperText={!!error && error.message}
+ />
+ );
+ }}
+ name={"national_id"}
+ />
+
+
+ {
+ return (
+
+
+ استان
+
+ }
+ onChange={(e) => field.onChange(e.target.value)}
+ displayEmpty
+ >
+ {provinceSelectOptions.map((option) => (
+
+ ))}
+
+
+ {!!error && error.message}
+
+
+ );
+ }}
+ name={"province_id"}
+ />
+
+
+ {
+ return (
+
+
+ نقش
+
+ }
+ onChange={(e) => field.onChange(e.target.value)}
+ displayEmpty
+ >
+ {roleSelectOptions.map((option) => (
+
+ ))}
+
+
+ {!!error && error.message}
+
+
+ );
+ }}
+ name={"role_id"}
+ />
+
+
+
+
+
+
+
+
+
+ >
+ );
};
export default UpdateUserForm;
diff --git a/src/components/dashboard/Users/RowActions/Edit/index.jsx b/src/components/dashboard/Users/RowActions/Edit/index.jsx
index 22c7638..1aa42c4 100644
--- a/src/components/dashboard/Users/RowActions/Edit/index.jsx
+++ b/src/components/dashboard/Users/RowActions/Edit/index.jsx
@@ -5,28 +5,23 @@ import { useState } from "react";
import UpdateUserForm from "./Form";
const UpdateUser = ({ values, mutate }) => {
- const [open, setOpen] = useState(false);
+ const [open, setOpen] = useState(false);
- const handleOpen = () => {
- setOpen(true);
- };
+ const handleOpen = () => {
+ setOpen(true);
+ };
- return (
- <>
-
-
-
-
-
-
- >
- );
+ return (
+ <>
+
+
+
+
+
+
+ >
+ );
};
export default UpdateUser;
diff --git a/src/components/dashboard/Users/RowActions/Online/index.jsx b/src/components/dashboard/Users/RowActions/Online/index.jsx
index 14a730e..bf7645a 100644
--- a/src/components/dashboard/Users/RowActions/Online/index.jsx
+++ b/src/components/dashboard/Users/RowActions/Online/index.jsx
@@ -3,15 +3,11 @@ import { Power, PowerOff } from "@mui/icons-material";
import { Stack } from "@mui/material";
const OnlineCell = ({ user_id }) => {
- const { clientsOnline } = useSocket();
- return (
-
- {clientsOnline.some((co) => co.user_id == user_id) ? (
-
- ) : (
-
- )}
-
- );
+ const { clientsOnline } = useSocket();
+ return (
+
+ {clientsOnline.some((co) => co.user_id == user_id) ? : }
+
+ );
};
export default OnlineCell;
diff --git a/src/components/dashboard/Users/RowActions/TelephoneId/index.jsx b/src/components/dashboard/Users/RowActions/TelephoneId/index.jsx
index 63aea1b..44e5e63 100644
--- a/src/components/dashboard/Users/RowActions/TelephoneId/index.jsx
+++ b/src/components/dashboard/Users/RowActions/TelephoneId/index.jsx
@@ -2,10 +2,8 @@ import { useSocket } from "@/lib/contexts/socket";
import { Stack } from "@mui/material";
const TelephoneId = ({ user_id }) => {
- const { clientsOnline } = useSocket();
- const telephone_id = clientsOnline.find(
- (co) => co.user_id == user_id,
- )?.telephone_id;
- return {telephone_id};
+ const { clientsOnline } = useSocket();
+ const telephone_id = clientsOnline.find((co) => co.user_id == user_id)?.telephone_id;
+ return {telephone_id};
};
export default TelephoneId;
diff --git a/src/components/dashboard/Users/RowActions/index.jsx b/src/components/dashboard/Users/RowActions/index.jsx
index 2b15ee4..b551a15 100644
--- a/src/components/dashboard/Users/RowActions/index.jsx
+++ b/src/components/dashboard/Users/RowActions/index.jsx
@@ -2,11 +2,11 @@ import { Box } from "@mui/material";
import Delete from "./Delete";
import UpdateUser from "./Edit";
const RowActions = ({ row, mutate }) => {
- return (
-
-
-
-
- );
+ return (
+
+
+
+
+ );
};
export default RowActions;
diff --git a/src/components/dashboard/Users/Toolbar/Create/Form/index.jsx b/src/components/dashboard/Users/Toolbar/Create/Form/index.jsx
index c84864a..6c51e4c 100644
--- a/src/components/dashboard/Users/Toolbar/Create/Form/index.jsx
+++ b/src/components/dashboard/Users/Toolbar/Create/Form/index.jsx
@@ -4,22 +4,22 @@ import validateNationalCode from "@/core/utils/nationalCodeValidation";
import useProvinces from "@/lib/hooks/useProvince";
import { yupResolver } from "@hookform/resolvers/yup";
import {
- Button,
- Chip,
- DialogActions,
- DialogContent,
- Divider,
- FormControl,
- FormHelperText,
- Grid,
- IconButton,
- InputAdornment,
- InputLabel,
- MenuItem,
- OutlinedInput,
- Select,
- Stack,
- TextField,
+ Button,
+ Chip,
+ DialogActions,
+ DialogContent,
+ Divider,
+ FormControl,
+ FormHelperText,
+ Grid,
+ IconButton,
+ InputAdornment,
+ InputLabel,
+ MenuItem,
+ OutlinedInput,
+ Select,
+ Stack,
+ TextField,
} from "@mui/material";
import { Controller, useForm } from "react-hook-form";
import { object, string } from "yup";
@@ -30,387 +30,375 @@ import { CREATE_USER } from "@/core/utils/routes";
import { Visibility, VisibilityOff } from "@mui/icons-material";
const defaultValues = {
- full_name: "",
- username: "",
- position: "",
- gender: "male",
- national_id: "",
- phone_number: "",
- province_id: "",
- password: "",
- role_id: "",
+ full_name: "",
+ username: "",
+ position: "",
+ gender: "male",
+ national_id: "",
+ phone_number: "",
+ province_id: "",
+ password: "",
+ role_id: "",
+ telephone_id: "",
};
const validationSchema = object().shape({
- full_name: string().required("نام و نام خانوادگی خود را وارد کنید"),
- username: string().required("نام کاربری خود را وارد کنید"),
- phone_number: string()
- .matches(/^09\d{9}$/, "شماره همراه باید با 09 شروع شود و 11 رقم باشد.")
- .required("شماره همراه خود را وارد کنید"),
- gender: string().required("جنسیت خود را وارد کنید"),
- national_id: string()
- .test(
- "max",
- "کد ملی باید شامل 10 رقم باشد",
- (value) => value.toString().length === 10,
- )
- .test("validation", "کد ملی صحیح نمی باشد", (value) =>
- validateNationalCode(value),
- )
- .required("کد ملی خود را وارد کنید"),
- password: string()
- .required("رمز عبور خود را وارد کنید")
- .matches(
- /^(?=.*[a-zA-Z])(?=.*\d).{8,}$/,
- "رمز عبور باید حداقل 8 کاراکتر و متشکل از عدد، حرف یا سمبل باشد",
- ),
- position: string().required("سمت خود را وارد کنید"),
- province_id: string().required("استان خود را وارد کنید"),
- role_id: string().required("نقش خود را وارد کنید"),
+ full_name: string().required("نام و نام خانوادگی خود را وارد کنید"),
+ username: string().required("نام کاربری خود را وارد کنید"),
+ phone_number: string()
+ .matches(/^09\d{9}$/, "شماره همراه باید با 09 شروع شود و 11 رقم باشد.")
+ .required("شماره همراه خود را وارد کنید"),
+ gender: string().required("جنسیت خود را وارد کنید"),
+ national_id: string()
+ .test("max", "کد ملی باید شامل 10 رقم باشد", (value) => value.toString().length === 10)
+ .test("validation", "کد ملی صحیح نمی باشد", (value) => validateNationalCode(value))
+ .required("کد ملی خود را وارد کنید"),
+ password: string()
+ .required("رمز عبور خود را وارد کنید")
+ .matches(/^(?=.*[a-zA-Z])(?=.*\d).{8,}$/, "رمز عبور باید حداقل 8 کاراکتر و متشکل از عدد، حرف یا سمبل باشد"),
+ position: string().required("سمت خود را وارد کنید"),
+ province_id: string().required("استان خود را وارد کنید"),
+ role_id: string().required("نقش خود را وارد کنید"),
});
const CreateUserForm = ({ setOpen, mutate }) => {
- const requestServer = useRequest({ notificationSuccess: true });
- const [showPassword, setShowPassword] = useState(false);
- const { provinces, errorProvinces, loadingProvinces } = useProvinces();
- const { roles, errorRoles, loadingRoles } = useRoles();
+ const requestServer = useRequest({ notificationSuccess: true });
+ const [showPassword, setShowPassword] = useState(false);
+ const { provinces, errorProvinces, loadingProvinces } = useProvinces();
+ const { roles, errorRoles, loadingRoles } = useRoles();
- const handleClickShowPassword = () => setShowPassword((show) => !show);
+ const handleClickShowPassword = () => setShowPassword((show) => !show);
- const provinceSelectOptions = useMemo(() => {
- if (loadingProvinces) {
- return [{ value: "loading", label: "در حال بارگذاری..." }];
- }
- if (errorProvinces) {
- return [{ value: "error", label: "خطا در بارگذاری" }];
- }
- return [
- { value: "", label: "انتخاب استان" },
- ...provinces.map((province) => ({
- value: province.id,
- label: province.name,
- })),
- ];
- }, [provinces, errorProvinces, loadingProvinces]);
+ const provinceSelectOptions = useMemo(() => {
+ if (loadingProvinces) {
+ return [{ value: "loading", label: "در حال بارگذاری..." }];
+ }
+ if (errorProvinces) {
+ return [{ value: "error", label: "خطا در بارگذاری" }];
+ }
+ return [
+ { value: "", label: "انتخاب استان" },
+ ...provinces.map((province) => ({
+ value: province.id,
+ label: province.name,
+ })),
+ ];
+ }, [provinces, errorProvinces, loadingProvinces]);
- const roleSelectOptions = useMemo(() => {
- if (loadingRoles) {
- return [{ value: "loading", label: "در حال بارگذاری..." }];
- }
- if (errorRoles) {
- return [{ value: "error", label: "خطا در بارگذاری" }];
- }
- return [
- { value: "", label: "انتخاب نقش" },
- ...roles.map((role) => ({
- value: role.id,
- label: role.name_fa,
- })),
- ];
- }, [roles, errorRoles, loadingRoles]);
+ const roleSelectOptions = useMemo(() => {
+ if (loadingRoles) {
+ return [{ value: "loading", label: "در حال بارگذاری..." }];
+ }
+ if (errorRoles) {
+ return [{ value: "error", label: "خطا در بارگذاری" }];
+ }
+ return [
+ { value: "", label: "انتخاب نقش" },
+ ...roles.map((role) => ({
+ value: role.id,
+ label: role.name_fa,
+ })),
+ ];
+ }, [roles, errorRoles, loadingRoles]);
- const {
- control,
- handleSubmit,
- formState: { isSubmitting, errors },
- } = useForm({ defaultValues, resolver: yupResolver(validationSchema) });
+ const {
+ control,
+ handleSubmit,
+ formState: { isSubmitting, errors },
+ } = useForm({ defaultValues, resolver: yupResolver(validationSchema) });
- const onSubmit = async (data) => {
- const formData = new FormData();
- Object.keys(data).forEach((key) => {
- formData.append(key, data[key]);
- });
- try {
- await requestServer(CREATE_USER, "post", {
- data: formData,
- });
- setOpen(false);
- mutate();
- } catch (error) {}
- };
+ const onSubmit = async (data) => {
+ const formData = new FormData();
+ Object.keys(data).forEach((key) => {
+ formData.append(key, data[key]);
+ });
+ try {
+ await requestServer(CREATE_USER, "post", {
+ data: formData,
+ });
+ setOpen(false);
+ mutate();
+ } catch (error) {}
+ };
- return (
- <>
-
-
-
-
-
-
-
-
- {
- return (
-
- );
- }}
- name={"username"}
- />
-
-
- {
- return (
-
-
- {showPassword ? (
-
- ) : (
-
- )}
-
-
- ),
- },
- }}
- fullWidth
- error={!!error}
- helperText={!!error && error.message}
- />
- );
- }}
- name={"password"}
- />
-
-
- {
- return (
-
- );
- }}
- name={"full_name"}
- />
-
-
- {
- return (
-
- );
- }}
- name={"position"}
- />
-
-
- {
- return (
- {
- const inputValue = event.target.value;
- if (isNaN(Number(inputValue))) {
- return;
- }
- if (inputValue.length > 11) {
- return;
- }
- field.onChange(inputValue);
- }}
- error={!!error}
- helperText={!!error && error.message}
- />
- );
- }}
- name={"phone_number"}
- />
-
-
- {
- return (
-
-
- جنسیت
-
- }
- onChange={(e) => field.onChange(e.target.value)}
- displayEmpty
- >
-
-
-
-
- {!!error && error.message}
-
-
- );
- }}
- name={"gender"}
- />
-
-
- {
- return (
- {
- const inputValue = event.target.value;
- if (isNaN(Number(inputValue))) {
- return;
- }
- if (inputValue.length > 10) {
- return;
- }
- field.onChange(inputValue);
- }}
- error={!!error}
- helperText={!!error && error.message}
- />
- );
- }}
- name={"national_id"}
- />
-
-
- {
- return (
-
-
- استان
-
- }
- onChange={(e) => field.onChange(e.target.value)}
- displayEmpty
- >
- {provinceSelectOptions.map((option) => (
-
- ))}
-
-
- {!!error && error.message}
-
-
- );
- }}
- name={"province_id"}
- />
-
-
- {
- return (
-
-
- نقش
-
- }
- onChange={(e) => field.onChange(e.target.value)}
- displayEmpty
- >
- {roleSelectOptions.map((option) => (
-
- ))}
-
-
- {!!error && error.message}
-
-
- );
- }}
- name={"role_id"}
- />
-
-
-
-
-
-
-
-
-
- >
- );
+ return (
+ <>
+
+
+
+
+
+
+
+
+ {
+ return (
+
+ );
+ }}
+ name={"username"}
+ />
+
+
+ {
+ return (
+
+
+ {showPassword ? : }
+
+
+ ),
+ },
+ }}
+ fullWidth
+ error={!!error}
+ helperText={!!error && error.message}
+ />
+ );
+ }}
+ name={"password"}
+ />
+
+
+ {
+ return (
+
+ );
+ }}
+ name={"full_name"}
+ />
+
+
+ {
+ return (
+
+ );
+ }}
+ name={"position"}
+ />
+
+
+ {
+ return (
+ {
+ const inputValue = event.target.value;
+ if (isNaN(Number(inputValue))) {
+ return;
+ }
+ if (inputValue.length > 11) {
+ return;
+ }
+ field.onChange(inputValue);
+ }}
+ error={!!error}
+ helperText={!!error && error.message}
+ />
+ );
+ }}
+ name={"phone_number"}
+ />
+
+
+ {
+ return (
+
+
+ جنسیت
+
+ }
+ onChange={(e) => field.onChange(e.target.value)}
+ displayEmpty
+ >
+
+
+
+
+ {!!error && error.message}
+
+
+ );
+ }}
+ name={"gender"}
+ />
+
+
+ {
+ return (
+ {
+ const inputValue = event.target.value;
+ if (isNaN(Number(inputValue))) {
+ return;
+ }
+ if (inputValue.length > 10) {
+ return;
+ }
+ field.onChange(inputValue);
+ }}
+ error={!!error}
+ helperText={!!error && error.message}
+ />
+ );
+ }}
+ name={"national_id"}
+ />
+
+
+ {
+ return (
+
+
+ استان
+
+ }
+ onChange={(e) => field.onChange(e.target.value)}
+ displayEmpty
+ >
+ {provinceSelectOptions.map((option) => (
+
+ ))}
+
+
+ {!!error && error.message}
+
+
+ );
+ }}
+ name={"province_id"}
+ />
+
+
+ {
+ return (
+
+
+ نقش
+
+ }
+ onChange={(e) => field.onChange(e.target.value)}
+ displayEmpty
+ >
+ {roleSelectOptions.map((option) => (
+
+ ))}
+
+
+ {!!error && error.message}
+
+
+ );
+ }}
+ name={"role_id"}
+ />
+
+
+
+
+
+
+
+
+
+ >
+ );
};
export default CreateUserForm;
diff --git a/src/components/dashboard/Users/Toolbar/Create/index.jsx b/src/components/dashboard/Users/Toolbar/Create/index.jsx
index 2af6c35..99d3e26 100644
--- a/src/components/dashboard/Users/Toolbar/Create/index.jsx
+++ b/src/components/dashboard/Users/Toolbar/Create/index.jsx
@@ -1,49 +1,39 @@
"use client";
import { AddCircle } from "@mui/icons-material";
-import {
- Button,
- Dialog,
- IconButton,
- useMediaQuery,
- useTheme,
-} from "@mui/material";
+import { Button, Dialog, IconButton, useMediaQuery, useTheme } from "@mui/material";
import CreateUserForm from "./Form";
import { useState } from "react";
const CreateUser = ({ mutate }) => {
- const theme = useTheme();
- const isMobile = useMediaQuery(theme.breakpoints.down("sm"));
- const [open, setOpen] = useState(false);
+ const theme = useTheme();
+ const isMobile = useMediaQuery(theme.breakpoints.down("sm"));
+ const [open, setOpen] = useState(false);
- const handleOpen = () => {
- setOpen(true);
- };
+ const handleOpen = () => {
+ setOpen(true);
+ };
- return (
- <>
- {isMobile ? (
-
-
-
- ) : (
- }
- onClick={handleOpen}
- >
- کاربر جدید
-
- )}
-
- >
- );
+ return (
+ <>
+ {isMobile ? (
+
+
+
+ ) : (
+ }
+ onClick={handleOpen}
+ >
+ کاربر جدید
+
+ )}
+
+ >
+ );
};
export default CreateUser;
diff --git a/src/components/dashboard/Users/Toolbar/index.jsx b/src/components/dashboard/Users/Toolbar/index.jsx
index 58b990f..cc33101 100644
--- a/src/components/dashboard/Users/Toolbar/index.jsx
+++ b/src/components/dashboard/Users/Toolbar/index.jsx
@@ -1,10 +1,10 @@
import CreateUser from "./Create";
const Toolbar = ({ mutate }) => {
- return (
- <>
-
- >
- );
+ return (
+ <>
+
+ >
+ );
};
export default Toolbar;
diff --git a/src/components/dashboard/Users/index.jsx b/src/components/dashboard/Users/index.jsx
index 5c4e237..55ca962 100644
--- a/src/components/dashboard/Users/index.jsx
+++ b/src/components/dashboard/Users/index.jsx
@@ -3,12 +3,12 @@ import { Stack } from "@mui/material";
import DataTable from "./DataTable";
const UsersPage = () => {
- return (
-
-
-
-
- );
+ return (
+
+
+
+
+ );
};
export default UsersPage;
diff --git a/src/components/dashboard/dashboard/OnlineUsersReport/index.jsx b/src/components/dashboard/dashboard/OnlineUsersReport/index.jsx
index ee62cbc..f202cd6 100644
--- a/src/components/dashboard/dashboard/OnlineUsersReport/index.jsx
+++ b/src/components/dashboard/dashboard/OnlineUsersReport/index.jsx
@@ -3,10 +3,6 @@ import { Stack } from "@mui/material";
const OnlineUsersReport = () => {
const { clientsOnline } = useSocket();
- return (
-
- clientsOnline: {clientsOnline.length}
-
- )
-}
-export default OnlineUsersReport;
\ No newline at end of file
+ return clientsOnline: {clientsOnline.length};
+};
+export default OnlineUsersReport;
diff --git a/src/components/dashboard/dashboard/index.jsx b/src/components/dashboard/dashboard/index.jsx
index ca6dc5b..29faec3 100644
--- a/src/components/dashboard/dashboard/index.jsx
+++ b/src/components/dashboard/dashboard/index.jsx
@@ -1,4 +1,4 @@
-"use client"
+"use client";
import { Stack } from "@mui/material";
import OnlineUsersReport from "./OnlineUsersReport";
@@ -7,6 +7,6 @@ const DashboardPage = () => {
- )
-}
-export default DashboardPage;
\ No newline at end of file
+ );
+};
+export default DashboardPage;
diff --git a/src/components/layouts/dashboard/headerWithSidebar/HeaderMenu/index.jsx b/src/components/layouts/dashboard/headerWithSidebar/HeaderMenu/index.jsx
index 74c471a..92c9553 100644
--- a/src/components/layouts/dashboard/headerWithSidebar/HeaderMenu/index.jsx
+++ b/src/components/layouts/dashboard/headerWithSidebar/HeaderMenu/index.jsx
@@ -1,60 +1,45 @@
import { ExpandLess, ExpandMore, Link } from "@mui/icons-material";
-import {
- Button,
- Divider,
- ListItemIcon,
- ListItemText,
- Menu,
- MenuItem,
- Stack,
-} from "@mui/material";
+import { Button, Divider, ListItemIcon, ListItemText, Menu, MenuItem, Stack } from "@mui/material";
import NextLink from "next/link";
import { useState } from "react";
const HeaderMenu = ({ menu }) => {
- const [anchorEl, setAnchorEl] = useState(null);
- const open = Boolean(anchorEl);
+ const [anchorEl, setAnchorEl] = useState(null);
+ const open = Boolean(anchorEl);
- const handleClick = (event) => {
- setAnchorEl(event.currentTarget);
- };
- const handleClose = () => {
- setAnchorEl(null);
- };
+ const handleClick = (event) => {
+ setAnchorEl(event.currentTarget);
+ };
+ const handleClose = () => {
+ setAnchorEl(null);
+ };
- return (
-
- : }
- >
- {menu.title}
-
-
-
- );
+ {menu.title}
+
+
+
+ );
};
export default HeaderMenu;
diff --git a/src/components/layouts/dashboard/headerWithSidebar/Sidebar/SidebarBadge.jsx b/src/components/layouts/dashboard/headerWithSidebar/Sidebar/SidebarBadge.jsx
index 239a5e6..5f0fa7a 100644
--- a/src/components/layouts/dashboard/headerWithSidebar/Sidebar/SidebarBadge.jsx
+++ b/src/components/layouts/dashboard/headerWithSidebar/Sidebar/SidebarBadge.jsx
@@ -4,16 +4,16 @@ import { Chip } from "@mui/material";
import { useEffect, useState } from "react";
const SidebarBadge = ({ badge, chipProps = {} }) => {
- const { data } = useSidebarBadge();
- const [value, setValue] = useState();
+ const { data } = useSidebarBadge();
+ const [value, setValue] = useState();
- useEffect(() => {
- setValue(getValueByPath(data, badge));
- }, [data, badge]);
+ useEffect(() => {
+ setValue(getValueByPath(data, badge));
+ }, [data, badge]);
- if (!data) return null;
- if (!value) return null;
+ if (!data) return null;
+ if (!value) return null;
- return ;
+ return ;
};
export default SidebarBadge;
diff --git a/src/components/layouts/dashboard/headerWithSidebar/Sidebar/SidebarListItems.jsx b/src/components/layouts/dashboard/headerWithSidebar/Sidebar/SidebarListItems.jsx
index 4b4e640..c61dbe3 100644
--- a/src/components/layouts/dashboard/headerWithSidebar/Sidebar/SidebarListItems.jsx
+++ b/src/components/layouts/dashboard/headerWithSidebar/Sidebar/SidebarListItems.jsx
@@ -1,92 +1,67 @@
import { ExpandLess, ExpandMore } from "@mui/icons-material";
-import {
- Collapse,
- List,
- ListItem,
- ListItemButton,
- ListItemIcon,
- ListItemText,
- Stack,
-} from "@mui/material";
+import { Collapse, List, ListItem, ListItemButton, ListItemIcon, ListItemText, Stack } from "@mui/material";
import Link from "next/link";
import SidebarBadge from "./SidebarBadge";
import SidebarSubitems from "./SidebarSubitems";
const SidebarListItems = ({ menuItem, dispatch }) => {
- return (
- <>
-
- {
- if (menuItem.type !== "page") {
- dispatch({ type: "COLLAPSE_MENU", id: menuItem.id });
- }
- }}
- >
-
- {menuItem.icon}
-
-
- {menuItem.badges && (
-
- {menuItem.badges.map((badge, i) => (
-
- ))}
-
- )}
- {menuItem.hasSubitems ? (
- menuItem.showSubitems ? (
-
- ) : (
-
- )
- ) : null}
-
-
-
- {menuItem.hasSubitems ? (
-
- {menuItem.Subitems.map((subitem, index) => {
- return (
-
- );
- })}
-
- ) : null}
-
- >
- );
+ return (
+ <>
+
+ {
+ if (menuItem.type !== "page") {
+ dispatch({ type: "COLLAPSE_MENU", id: menuItem.id });
+ }
+ }}
+ >
+
+ {menuItem.icon}
+
+
+ {menuItem.badges && (
+
+ {menuItem.badges.map((badge, i) => (
+
+ ))}
+
+ )}
+ {menuItem.hasSubitems ? menuItem.showSubitems ? : : null}
+
+
+
+ {menuItem.hasSubitems ? (
+
+ {menuItem.Subitems.map((subitem, index) => {
+ return ;
+ })}
+
+ ) : null}
+
+ >
+ );
};
export default SidebarListItems;
diff --git a/src/components/layouts/dashboard/headerWithSidebar/Sidebar/SidebarMenu.jsx b/src/components/layouts/dashboard/headerWithSidebar/Sidebar/SidebarMenu.jsx
index 29c2b09..1bfb012 100644
--- a/src/components/layouts/dashboard/headerWithSidebar/Sidebar/SidebarMenu.jsx
+++ b/src/components/layouts/dashboard/headerWithSidebar/Sidebar/SidebarMenu.jsx
@@ -9,120 +9,106 @@ import SidebarListItems from "./SidebarListItems";
import Profile from "@/core/components/Profile";
function selectPage(item, route) {
- if (item.type === "page") {
- return {
- ...item,
- selected: item.route === route,
- showSubitems: item.route === route,
- };
- } else if (item.Subitems && Array.isArray(item.Subitems)) {
- const updatedSubitems = item.Subitems.map((subitem) =>
- selectPage(subitem, route),
- );
- return {
- ...item,
- Subitems: updatedSubitems,
- showSubitems: updatedSubitems.some(
- (subitem) => subitem.showSubitems || subitem.route === route,
- ),
- };
- }
- return item;
+ if (item.type === "page") {
+ return {
+ ...item,
+ selected: item.route === route,
+ showSubitems: item.route === route,
+ };
+ } else if (item.Subitems && Array.isArray(item.Subitems)) {
+ const updatedSubitems = item.Subitems.map((subitem) => selectPage(subitem, route));
+ return {
+ ...item,
+ Subitems: updatedSubitems,
+ showSubitems: updatedSubitems.some((subitem) => subitem.showSubitems || subitem.route === route),
+ };
+ }
+ return item;
}
function toggleSubitems(items, actionId) {
- return items.map((item) =>
- actionId === item.id
- ? { ...item, showSubitems: !item.showSubitems }
- : { ...item, showSubitems: false },
- );
+ return items.map((item) =>
+ actionId === item.id ? { ...item, showSubitems: !item.showSubitems } : { ...item, showSubitems: false }
+ );
}
function reducer(state, action) {
- switch (action.type) {
- case "UPDATE_MENU":
- const _permissions = action.permissions || [];
- return filterMenuItems(state, ["all", ..._permissions]);
+ switch (action.type) {
+ case "UPDATE_MENU":
+ const _permissions = action.permissions || [];
+ return filterMenuItems(state, ["all", ..._permissions]);
- case "COLLAPSE_MENU":
- return state.map((item) => ({
- ...item,
- showSubitems: item.id === action.id ? !item.showSubitems : false,
- }));
+ case "COLLAPSE_MENU":
+ return state.map((item) => ({
+ ...item,
+ showSubitems: item.id === action.id ? !item.showSubitems : false,
+ }));
- case "COLLAPSE_SUB_ITEMS":
- return state.map((item) =>
- item.hasSubitems
- ? { ...item, Subitems: toggleSubitems(item.Subitems, action.id) }
- : item,
- );
+ case "COLLAPSE_SUB_ITEMS":
+ return state.map((item) =>
+ item.hasSubitems ? { ...item, Subitems: toggleSubitems(item.Subitems, action.id) } : item
+ );
- case "COLLAPSE_SUB_SECOND_ITEMS":
- return state.map((item) =>
- item.hasSubitems
- ? {
- ...item,
- Subitems: item.Subitems.map((subitem) =>
- subitem.hasSubitems
- ? {
- ...subitem,
- Subitems: toggleSubitems(subitem.Subitems, action.id),
- }
- : subitem,
- ),
- }
- : item,
- );
+ case "COLLAPSE_SUB_SECOND_ITEMS":
+ return state.map((item) =>
+ item.hasSubitems
+ ? {
+ ...item,
+ Subitems: item.Subitems.map((subitem) =>
+ subitem.hasSubitems
+ ? {
+ ...subitem,
+ Subitems: toggleSubitems(subitem.Subitems, action.id),
+ }
+ : subitem
+ ),
+ }
+ : item
+ );
- case "SELECTED":
- return state.map((item) => selectPage(item, action.route));
+ case "SELECTED":
+ return state.map((item) => selectPage(item, action.route));
- default:
- throw new Error();
- }
+ default:
+ throw new Error();
+ }
}
const SidebarMenu = () => {
- const { data: userPermissions } = usePermissions();
- const [menuItems, dispatch] = useReducer(reducer, pageMenu);
- const pathname = usePathname();
- const [selectedKey, setSelectedKey] = useState(null);
+ const { data: userPermissions } = usePermissions();
+ const [menuItems, dispatch] = useReducer(reducer, pageMenu);
+ const pathname = usePathname();
+ const [selectedKey, setSelectedKey] = useState(null);
- useEffect(() => {
- dispatch({ type: "SELECTED", route: pathname });
- setSelectedKey(pathname);
- }, [userPermissions, pathname]);
+ useEffect(() => {
+ dispatch({ type: "SELECTED", route: pathname });
+ setSelectedKey(pathname);
+ }, [userPermissions, pathname]);
- useEffect(() => {
- if (!userPermissions) return;
- dispatch({ type: "UPDATE_MENU", permissions: userPermissions });
- }, [userPermissions]);
+ useEffect(() => {
+ if (!userPermissions) return;
+ dispatch({ type: "UPDATE_MENU", permissions: userPermissions });
+ }, [userPermissions]);
- useEffect(() => {
- selectedKey &&
- document.querySelector(`[data-route="${selectedKey}"]`)?.scrollIntoView({
- behavior: "smooth",
- block: "center",
- });
- }, [selectedKey]);
+ useEffect(() => {
+ selectedKey &&
+ document.querySelector(`[data-route="${selectedKey}"]`)?.scrollIntoView({
+ behavior: "smooth",
+ block: "center",
+ });
+ }, [selectedKey]);
- return (
- <>
-
- {userPermissions && (
-
- {menuItems.map((menuItem) => {
- return (
-
- );
- })}
-
- )}
- >
- );
+ return (
+ <>
+
+ {userPermissions && (
+
+ {menuItems.map((menuItem) => {
+ return ;
+ })}
+
+ )}
+ >
+ );
};
export default SidebarMenu;
diff --git a/src/components/layouts/dashboard/headerWithSidebar/Sidebar/SidebarSubitems.jsx b/src/components/layouts/dashboard/headerWithSidebar/Sidebar/SidebarSubitems.jsx
index e74204b..ba0cd5f 100644
--- a/src/components/layouts/dashboard/headerWithSidebar/Sidebar/SidebarSubitems.jsx
+++ b/src/components/layouts/dashboard/headerWithSidebar/Sidebar/SidebarSubitems.jsx
@@ -1,96 +1,76 @@
import { ExpandLess, ExpandMore } from "@mui/icons-material";
-import {
- Box,
- Collapse,
- List,
- ListItem,
- ListItemButton,
- ListItemIcon,
- ListItemText,
- Stack,
-} from "@mui/material";
+import { Box, Collapse, List, ListItem, ListItemButton, ListItemIcon, ListItemText, Stack } from "@mui/material";
import Link from "next/link";
import SidebarBadge from "./SidebarBadge";
const SidebarSubitems = ({ subitem, dispatch }) => {
- return (
- <>
-
- {
- if (subitem.type !== "page") {
- dispatch({ type: "COLLAPSE_SUB_ITEMS", id: subitem.id });
- }
- }}
- >
-
- {subitem.icon}
-
-
- {subitem.badges && (
-
- {subitem.badges.map((badge, i) => (
-
- ))}
-
- )}
- {subitem.hasSubitems ? (
- subitem.showSubitems ? (
-
- ) : (
-
- )
- ) : (
-
- )}
-
-
-
- {subitem.hasSubitems ? (
-
- {subitem.Subitems.map((subSubitem, index) => {
- return (
-
- );
- })}
-
- ) : null}
-
- >
- );
+ return (
+ <>
+
+ {
+ if (subitem.type !== "page") {
+ dispatch({ type: "COLLAPSE_SUB_ITEMS", id: subitem.id });
+ }
+ }}
+ >
+
+ {subitem.icon}
+
+
+ {subitem.badges && (
+
+ {subitem.badges.map((badge, i) => (
+
+ ))}
+
+ )}
+ {subitem.hasSubitems ? (
+ subitem.showSubitems ? (
+
+ ) : (
+
+ )
+ ) : (
+
+ )}
+
+
+
+ {subitem.hasSubitems ? (
+
+ {subitem.Subitems.map((subSubitem, index) => {
+ return ;
+ })}
+
+ ) : null}
+
+ >
+ );
};
export default SidebarSubitems;
diff --git a/src/components/layouts/dashboard/headerWithSidebar/index.jsx b/src/components/layouts/dashboard/headerWithSidebar/index.jsx
index 6fb683a..4b58b78 100644
--- a/src/components/layouts/dashboard/headerWithSidebar/index.jsx
+++ b/src/components/layouts/dashboard/headerWithSidebar/index.jsx
@@ -1,17 +1,7 @@
"use client";
import ChevronRightIcon from "@mui/icons-material/ChevronRight";
import MenuIcon from "@mui/icons-material/Menu";
-import {
- Box,
- Drawer,
- IconButton,
- Stack,
- styled,
- Toolbar,
- Typography,
- useMediaQuery,
- useTheme,
-} from "@mui/material";
+import { Box, Drawer, IconButton, Stack, styled, Toolbar, Typography, useMediaQuery, useTheme } from "@mui/material";
import MuiAppBar from "@mui/material/AppBar";
import { useState, useEffect } from "react";
import HeaderMenu from "./HeaderMenu";
@@ -21,170 +11,157 @@ import SidebarMenu from "./Sidebar/SidebarMenu";
const drawerWidth = 300;
-const Main = styled(Stack, { shouldForwardProp: (prop) => prop !== "open" })(
- ({ theme, open }) => ({
+const Main = styled(Stack, { shouldForwardProp: (prop) => prop !== "open" })(({ theme, open }) => ({
flexGrow: 1,
height: "100%",
transition: theme.transitions.create("margin", {
- easing: theme.transitions.easing.sharp,
- duration: theme.transitions.duration.leavingScreen,
+ easing: theme.transitions.easing.sharp,
+ duration: theme.transitions.duration.leavingScreen,
}),
marginLeft: `-${drawerWidth}px`,
...(open && {
- transition: theme.transitions.create("margin", {
- easing: theme.transitions.easing.easeOut,
- duration: theme.transitions.duration.enteringScreen,
- }),
- marginLeft: 0,
+ transition: theme.transitions.create("margin", {
+ easing: theme.transitions.easing.easeOut,
+ duration: theme.transitions.duration.enteringScreen,
+ }),
+ marginLeft: 0,
}),
- }),
-);
+}));
const AppBar = styled(MuiAppBar, {
- shouldForwardProp: (prop) => prop !== "open",
+ shouldForwardProp: (prop) => prop !== "open",
})(({ theme, open }) => ({
- transition: theme.transitions.create(["margin", "width"], {
- easing: theme.transitions.easing.sharp,
- duration: theme.transitions.duration.leavingScreen,
- }),
- ...(open && {
- width: `calc(100% - ${drawerWidth}px)`,
- marginLeft: `${drawerWidth}px`,
transition: theme.transitions.create(["margin", "width"], {
- easing: theme.transitions.easing.easeOut,
- duration: theme.transitions.duration.enteringScreen,
+ easing: theme.transitions.easing.sharp,
+ duration: theme.transitions.duration.leavingScreen,
+ }),
+ ...(open && {
+ width: `calc(100% - ${drawerWidth}px)`,
+ marginLeft: `${drawerWidth}px`,
+ transition: theme.transitions.create(["margin", "width"], {
+ easing: theme.transitions.easing.easeOut,
+ duration: theme.transitions.duration.enteringScreen,
+ }),
}),
- }),
}));
const DrawerHeader = styled("div")(({ theme }) => ({
- display: "flex",
- alignItems: "center",
- padding: theme.spacing(0, 1),
- ...theme.mixins.toolbar,
- minHeight: "40px !important",
- justifyContent: "flex-end",
+ display: "flex",
+ alignItems: "center",
+ padding: theme.spacing(0, 1),
+ ...theme.mixins.toolbar,
+ minHeight: "40px !important",
+ justifyContent: "flex-end",
}));
const HeaderWithSidebar = ({ children }) => {
- const theme = useTheme();
- const isMobile = useMediaQuery(theme.breakpoints.down("md")); // Detect mobile/tablet screen
- const [open, setOpen] = useState(!isMobile); // Initial state based on screen size
+ const theme = useTheme();
+ const isMobile = useMediaQuery(theme.breakpoints.down("md")); // Detect mobile/tablet screen
+ const [open, setOpen] = useState(!isMobile); // Initial state based on screen size
- useEffect(() => {
- setOpen(!isMobile); // Toggle state when screen size changes
- }, [isMobile]);
+ useEffect(() => {
+ setOpen(!isMobile); // Toggle state when screen size changes
+ }, [isMobile]);
- const now = moment().locale("fa").format("YYYY/MM/DD");
+ const now = moment().locale("fa").format("YYYY/MM/DD");
- const handleDrawerOpen = () => {
- setOpen(true);
- };
- const handleDrawerClose = () => {
- setOpen(false);
- };
+ const handleDrawerOpen = () => {
+ setOpen(true);
+ };
+ const handleDrawerClose = () => {
+ setOpen(false);
+ };
- return (
-
-
-
-
-
-
-
- {headerMenu.map((menu) => (
-
- ))}
-
-
-
-
-
-
- تاریخ امروز: {now}
-
-
-
-
-
-
-
- v{process.env.NEXT_PUBLIC_VERSION}
-
-
-
-
+ return (
- {children}
+
+
+
+
+
+
+ {headerMenu.map((menu) => (
+
+ ))}
+
+
+
+
+
+
+ تاریخ امروز: {now}
+
+
+
+
+
+
+
+ v{process.env.NEXT_PUBLIC_VERSION}
+
+
+
+
+
+ {children}
+
+
-
-
- );
+ );
};
export default HeaderWithSidebar;
diff --git a/src/components/widget/call/CallTabs/CallTabPanel/CallActions/ActionHeader.jsx b/src/components/widget/call/CallTabs/CallTabPanel/CallActions/ActionHeader.jsx
index 368c7b1..560801d 100644
--- a/src/components/widget/call/CallTabs/CallTabPanel/CallActions/ActionHeader.jsx
+++ b/src/components/widget/call/CallTabs/CallTabPanel/CallActions/ActionHeader.jsx
@@ -1,29 +1,25 @@
import { Stack, Typography } from "@mui/material";
const ActionHeader = ({ tab }) => {
- return (
-
-
- .... عملیات های مربوط به تماس:
-
-
- {tab.phone_number} ....
-
-
- );
+ return (
+
+
+ .... عملیات های مربوط به تماس:
+
+
+ {tab.phone_number} ....
+
+
+ );
};
export default ActionHeader;
diff --git a/src/components/widget/call/CallTabs/CallTabPanel/CallActions/CallActionCategoriesButton.jsx b/src/components/widget/call/CallTabs/CallTabPanel/CallActions/CallActionCategoriesButton.jsx
index c21d2dc..734bed4 100644
--- a/src/components/widget/call/CallTabs/CallTabPanel/CallActions/CallActionCategoriesButton.jsx
+++ b/src/components/widget/call/CallTabs/CallTabPanel/CallActions/CallActionCategoriesButton.jsx
@@ -2,26 +2,24 @@ import { Button, Grid } from "@mui/material";
import { Controller } from "react-hook-form";
const CallActionCategoriesButton = ({ category, control }) => {
- return (
- (
-
- )}
- name={"category_id"}
- />
- );
+ return (
+ (
+
+ )}
+ name={"category_id"}
+ />
+ );
};
export default CallActionCategoriesButton;
diff --git a/src/components/widget/call/CallTabs/CallTabPanel/CallActions/CallActionDescription.jsx b/src/components/widget/call/CallTabs/CallTabPanel/CallActions/CallActionDescription.jsx
index 6eacebd..c2bc665 100644
--- a/src/components/widget/call/CallTabs/CallTabPanel/CallActions/CallActionDescription.jsx
+++ b/src/components/widget/call/CallTabs/CallTabPanel/CallActions/CallActionDescription.jsx
@@ -3,42 +3,42 @@ import { useEffect, useRef } from "react";
import { Controller } from "react-hook-form";
const CallActionDescription = ({ control }) => {
- const inputRef = useRef(null);
+ const inputRef = useRef(null);
- useEffect(() => {
- const timer = setTimeout(() => {
- if (inputRef.current) {
- inputRef.current.focus();
- }
- }, 100);
+ useEffect(() => {
+ const timer = setTimeout(() => {
+ if (inputRef.current) {
+ inputRef.current.focus();
+ }
+ }, 100);
- return () => clearTimeout(timer);
- }, []);
+ return () => clearTimeout(timer);
+ }, []);
- return (
- <>
-
-
-
-
- (
-
- )}
- name={"description"}
- />
-
- >
- );
+ return (
+ <>
+
+
+
+
+ (
+
+ )}
+ name={"description"}
+ />
+
+ >
+ );
};
export default CallActionDescription;
diff --git a/src/components/widget/call/CallTabs/CallTabPanel/CallActions/CallActionSubcategoriesButton.jsx b/src/components/widget/call/CallTabs/CallTabPanel/CallActions/CallActionSubcategoriesButton.jsx
index 1783b32..1e68b6d 100644
--- a/src/components/widget/call/CallTabs/CallTabPanel/CallActions/CallActionSubcategoriesButton.jsx
+++ b/src/components/widget/call/CallTabs/CallTabPanel/CallActions/CallActionSubcategoriesButton.jsx
@@ -3,36 +3,36 @@ import { useCallback } from "react";
import { Controller, useWatch } from "react-hook-form";
const CallActionSubcategoriesButton = ({ sub_category, control, onSubmit }) => {
- const category_id = useWatch({ control, name: "category_id" });
+ const category_id = useWatch({ control, name: "category_id" });
- const handleClick = useCallback(
- (onChange) => {
- onChange(sub_category.subcategory_id);
- setTimeout(() => {
- onSubmit();
- }, 0);
- },
- [sub_category.subcategory_id],
- );
+ const handleClick = useCallback(
+ (onChange) => {
+ onChange(sub_category.subcategory_id);
+ setTimeout(() => {
+ onSubmit();
+ }, 0);
+ },
+ [sub_category.subcategory_id]
+ );
- return (
- {
- return sub_category.category_id === category_id ? (
-
- ) : null;
- }}
- name={"subcategory_id"}
- />
- );
+ return (
+ {
+ return sub_category.category_id === category_id ? (
+
+ ) : null;
+ }}
+ name={"subcategory_id"}
+ />
+ );
};
export default CallActionSubcategoriesButton;
diff --git a/src/components/widget/call/CallTabs/CallTabPanel/CallActions/CallActionsCategories.jsx b/src/components/widget/call/CallTabs/CallTabPanel/CallActions/CallActionsCategories.jsx
index 32cd698..d3278e3 100644
--- a/src/components/widget/call/CallTabs/CallTabPanel/CallActions/CallActionsCategories.jsx
+++ b/src/components/widget/call/CallTabs/CallTabPanel/CallActions/CallActionsCategories.jsx
@@ -3,22 +3,18 @@ import CallActionCategoriesButton from "./CallActionCategoriesButton";
import { Chip, Divider, Grid, Stack } from "@mui/material";
const CallActionsCategories = ({ control }) => {
- const { categoryLists } = useCategory();
- return (
- <>
-
-
-
-
- {categoryLists.map((category) => (
-
- ))}
-
- >
- );
+ const { categoryLists } = useCategory();
+ return (
+ <>
+
+
+
+
+ {categoryLists.map((category) => (
+
+ ))}
+
+ >
+ );
};
export default CallActionsCategories;
diff --git a/src/components/widget/call/CallTabs/CallTabPanel/CallActions/CallActionsSubcategories.jsx b/src/components/widget/call/CallTabs/CallTabPanel/CallActions/CallActionsSubcategories.jsx
index f67b385..388b414 100644
--- a/src/components/widget/call/CallTabs/CallTabPanel/CallActions/CallActionsSubcategories.jsx
+++ b/src/components/widget/call/CallTabs/CallTabPanel/CallActions/CallActionsSubcategories.jsx
@@ -3,25 +3,25 @@ import CallActionSubcategoriesButton from "./CallActionSubcategoriesButton";
import { Chip, Divider, Grid, Stack } from "@mui/material";
const CallActionsSubcategories = ({ control, onSubmit }) => {
- const { subCategoryLists } = useCategory();
- return (
- <>
-
-
-
-
- {subCategoryLists.map((sub_category, index) => {
- return (
-
- );
- })}
-
- >
- );
+ const { subCategoryLists } = useCategory();
+ return (
+ <>
+
+
+
+
+ {subCategoryLists.map((sub_category, index) => {
+ return (
+
+ );
+ })}
+
+ >
+ );
};
export default CallActionsSubcategories;
diff --git a/src/components/widget/call/CallTabs/CallTabPanel/CallActions/index.jsx b/src/components/widget/call/CallTabs/CallTabPanel/CallActions/index.jsx
index 242afdf..ae928d7 100644
--- a/src/components/widget/call/CallTabs/CallTabPanel/CallActions/index.jsx
+++ b/src/components/widget/call/CallTabs/CallTabPanel/CallActions/index.jsx
@@ -12,76 +12,70 @@ import CallActionsCategories from "./CallActionsCategories";
import CallActionsSubcategories from "./CallActionsSubcategories";
const defaultValues = {
- description: "",
- category_id: "",
- subcategory_id: "",
+ description: "",
+ category_id: "",
+ subcategory_id: "",
};
const validationSchema = object({
- category_id: string().required("لطفا نام کاربری را وارد کنید!"),
- subcategory_id: string().required("لطفا رمز عبور را وارد کنید!"),
+ category_id: string().required("لطفا نام کاربری را وارد کنید!"),
+ subcategory_id: string().required("لطفا رمز عبور را وارد کنید!"),
});
function CallActions({ tab }) {
- const requestServer = useRequest();
- const { closeCall } = useCall();
+ const requestServer = useRequest();
+ const { closeCall } = useCall();
- const {
- control,
- handleSubmit,
- formState: { isSubmitting },
- } = useForm({
- defaultValues,
- resolver: yupResolver(validationSchema),
- mode: "all",
- });
+ const {
+ control,
+ handleSubmit,
+ formState: { isSubmitting },
+ } = useForm({
+ defaultValues,
+ resolver: yupResolver(validationSchema),
+ mode: "all",
+ });
- const onSubmit = handleSubmit(async (data) => {
- try {
- const formData = new FormData();
- data.description != "" &&
- formData.append("description", data.description);
- formData.append("category_id", data.category_id);
- formData.append("subcategory_id", data.subcategory_id);
- await requestServer(`${CALL_ACTION}/${tab.id}`, "post", {
- data: formData,
- });
- closeCall(tab.id);
- } catch (error) {}
- });
+ const onSubmit = handleSubmit(async (data) => {
+ try {
+ const formData = new FormData();
+ data.description != "" && formData.append("description", data.description);
+ formData.append("category_id", data.category_id);
+ formData.append("subcategory_id", data.subcategory_id);
+ await requestServer(`${CALL_ACTION}/${tab.id}`, "post", {
+ data: formData,
+ });
+ closeCall(tab.id);
+ } catch (error) {}
+ });
- return (
-
-
-
-
-
-
- {isSubmitting && (
-
-
-
- )}
-
-
- );
+ >
+
+
+
+
+
+ {isSubmitting && (
+
+
+
+ )}
+
+
+ );
}
export default CallActions;
diff --git a/src/components/widget/call/CallTabs/CallTabPanel/CallHistory/ErrorOrEmpty.jsx b/src/components/widget/call/CallTabs/CallTabPanel/CallHistory/ErrorOrEmpty.jsx
index e76a269..9cabc94 100644
--- a/src/components/widget/call/CallTabs/CallTabPanel/CallHistory/ErrorOrEmpty.jsx
+++ b/src/components/widget/call/CallTabs/CallTabPanel/CallHistory/ErrorOrEmpty.jsx
@@ -1,39 +1,39 @@
import { Typography } from "@mui/material";
const ErrorOrEmpty = ({ isErrorOrEmpty }) => {
- return (
- <>
- {isErrorOrEmpty === "error" ? (
-
- خطا در دریافت تاریخچه تماس دریافتی
-
- ) : isErrorOrEmpty === "empty" ? (
-
- تاریخچه ای برای تماس دریافتی یافت نشد
-
- ) : (
- <>>
- )}
- >
- );
+ return (
+ <>
+ {isErrorOrEmpty === "error" ? (
+
+ خطا در دریافت تاریخچه تماس دریافتی
+
+ ) : isErrorOrEmpty === "empty" ? (
+
+ تاریخچه ای برای تماس دریافتی یافت نشد
+
+ ) : (
+ <>>
+ )}
+ >
+ );
};
export default ErrorOrEmpty;
diff --git a/src/components/widget/call/CallTabs/CallTabPanel/CallHistory/HistoryHeader.jsx b/src/components/widget/call/CallTabs/CallTabPanel/CallHistory/HistoryHeader.jsx
index e3498d1..39a4a7d 100644
--- a/src/components/widget/call/CallTabs/CallTabPanel/CallHistory/HistoryHeader.jsx
+++ b/src/components/widget/call/CallTabs/CallTabPanel/CallHistory/HistoryHeader.jsx
@@ -1,25 +1,25 @@
import { Stack, Typography } from "@mui/material";
const HistoryHeader = ({ tab }) => {
- return (
-
-
- .... تاریخچه تماس های:
-
-
- {tab.phone_number} ....
-
-
- );
+ return (
+
+
+ .... تاریخچه تماس های:
+
+
+ {tab.phone_number} ....
+
+
+ );
};
export default HistoryHeader;
diff --git a/src/components/widget/call/CallTabs/CallTabPanel/CallHistory/ListItemOfCalls/PreviousOperatorData.jsx b/src/components/widget/call/CallTabs/CallTabPanel/CallHistory/ListItemOfCalls/PreviousOperatorData.jsx
index 5197ca8..4c93548 100644
--- a/src/components/widget/call/CallTabs/CallTabPanel/CallHistory/ListItemOfCalls/PreviousOperatorData.jsx
+++ b/src/components/widget/call/CallTabs/CallTabPanel/CallHistory/ListItemOfCalls/PreviousOperatorData.jsx
@@ -3,28 +3,26 @@ import { Avatar, Box, Stack, Typography } from "@mui/material";
import moment from "jalali-moment";
const PreviousOperatorData = ({ historyItem }) => {
- return (
-
-
-
-
-
-
-
-
-
- {historyItem.operator_full_name}
-
-
- (کارشناس)
-
+ return (
+
+
+
+
+
+
+
+
+ {historyItem.operator_full_name}
+
+ (کارشناس)
+
+
+
+ {moment(historyItem.created_at).locale("fa").fromNow()}
+
+
-
- {moment(historyItem.created_at).locale("fa").fromNow()}
-
-
-
- );
+ );
};
export default PreviousOperatorData;
diff --git a/src/components/widget/call/CallTabs/CallTabPanel/CallHistory/ListItemOfCalls/Topics..jsx b/src/components/widget/call/CallTabs/CallTabPanel/CallHistory/ListItemOfCalls/Topics..jsx
index 13e7063..f4298a9 100644
--- a/src/components/widget/call/CallTabs/CallTabPanel/CallHistory/ListItemOfCalls/Topics..jsx
+++ b/src/components/widget/call/CallTabs/CallTabPanel/CallHistory/ListItemOfCalls/Topics..jsx
@@ -1,60 +1,46 @@
import { Chip, Divider, Stack } from "@mui/material";
const Topics = ({ historyItem }) => {
- return (
-
-
-
-
- {historyItem.category_name && (
-
- )}
-
-
-
-
- {historyItem.subcategory_name && (
-
- )}
-
-
-
-
- {historyItem.description && }
-
-
- );
+ return (
+
+
+
+
+ {historyItem.category_name && }
+
+
+
+
+ {historyItem.subcategory_name && }
+
+
+
+
+ {historyItem.description && }
+
+
+ );
};
export default Topics;
diff --git a/src/components/widget/call/CallTabs/CallTabPanel/CallHistory/ListItemOfCalls/index.jsx b/src/components/widget/call/CallTabs/CallTabPanel/CallHistory/ListItemOfCalls/index.jsx
index f06ba45..5b61e51 100644
--- a/src/components/widget/call/CallTabs/CallTabPanel/CallHistory/ListItemOfCalls/index.jsx
+++ b/src/components/widget/call/CallTabs/CallTabPanel/CallHistory/ListItemOfCalls/index.jsx
@@ -3,12 +3,12 @@ import PreviousOperatorData from "./PreviousOperatorData";
import Topics from "./Topics.";
const ListItemOfCalls = ({ historyItem }) => {
- return (
-
-
-
-
- );
+ return (
+
+
+
+
+ );
};
export default ListItemOfCalls;
diff --git a/src/components/widget/call/CallTabs/CallTabPanel/CallHistory/LoadingHistory.jsx b/src/components/widget/call/CallTabs/CallTabPanel/CallHistory/LoadingHistory.jsx
index 674b7eb..0d49a6b 100644
--- a/src/components/widget/call/CallTabs/CallTabPanel/CallHistory/LoadingHistory.jsx
+++ b/src/components/widget/call/CallTabs/CallTabPanel/CallHistory/LoadingHistory.jsx
@@ -1,115 +1,108 @@
-import {
- Box,
- List,
- ListItem,
- ListItemAvatar,
- ListItemText,
- Skeleton,
-} from "@mui/material";
+import { Box, List, ListItem, ListItemAvatar, ListItemText, Skeleton } from "@mui/material";
const LoadingHistory = () => {
- return (
- <>
-
-
-
-
-
-
-
-
- }
- secondary={
-
- }
- />
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- >
- );
+ >
+
+
+
+
+
+
+
+ }
+ secondary={
+
+ }
+ />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ >
+ );
};
export default LoadingHistory;
diff --git a/src/components/widget/call/CallTabs/CallTabPanel/CallHistory/index.jsx b/src/components/widget/call/CallTabs/CallTabPanel/CallHistory/index.jsx
index 4d47ce3..acfa3df 100644
--- a/src/components/widget/call/CallTabs/CallTabPanel/CallHistory/index.jsx
+++ b/src/components/widget/call/CallTabs/CallTabPanel/CallHistory/index.jsx
@@ -9,53 +9,52 @@ import { Headphones } from "@mui/icons-material";
const max_size = 10;
const CallHistory = ({ tab }) => {
- const {
- firstItemOfHistory,
- historyList,
- isLoadingHistoryList,
- errorHistoryList,
- } = useCallerHistory(tab.id, tab.phone_number, max_size);
- const [showRestOfHistory, setShowRestOfHistory] = useState(false);
+ const { firstItemOfHistory, historyList, isLoadingHistoryList, errorHistoryList } = useCallerHistory(
+ tab.id,
+ tab.phone_number,
+ max_size
+ );
+ const [showRestOfHistory, setShowRestOfHistory] = useState(false);
- return (
-
-
-
- {isLoadingHistoryList ? (
-
- ) : errorHistoryList ? (
-
- ) : !firstItemOfHistory ? (
-
- ) : (
-
-
- {historyList && (
-
- }
- onClick={() => setShowRestOfHistory(true)}
- label={"نمایش موارد بیشتر"}
- disabled={showRestOfHistory}
- />
-
- )}
- {showRestOfHistory &&
- historyList.map((historyItem, index) => (
- <>
-
-
- >
- ))}
-
- )}
-
-
- );
+ return (
+
+
+
+ {isLoadingHistoryList ? (
+
+ ) : errorHistoryList ? (
+
+ ) : !firstItemOfHistory ? (
+
+ ) : (
+
+
+ {historyList && (
+
+ }
+ onClick={() => setShowRestOfHistory(true)}
+ label={"نمایش موارد بیشتر"}
+ disabled={showRestOfHistory}
+ />
+
+ )}
+ {showRestOfHistory &&
+ historyList.map((historyItem, index) => (
+ <>
+
+
+ >
+ ))}
+
+ )}
+
+
+ );
};
export default CallHistory;
diff --git a/src/components/widget/call/CallTabs/CallTabPanel/index.jsx b/src/components/widget/call/CallTabs/CallTabPanel/index.jsx
index a22af79..50443bf 100644
--- a/src/components/widget/call/CallTabs/CallTabPanel/index.jsx
+++ b/src/components/widget/call/CallTabs/CallTabPanel/index.jsx
@@ -3,27 +3,27 @@ import CallActions from "./CallActions";
import CallHistory from "./CallHistory";
const CallTabPanel = ({ tab }) => {
- return (
-
-
-
-
-
-
-
-
-
- );
+ return (
+
+
+
+
+
+
+
+
+
+ );
};
export default CallTabPanel;
diff --git a/src/components/widget/call/CallTabs/CallTabsList/CallTabDetails.jsx b/src/components/widget/call/CallTabs/CallTabsList/CallTabDetails.jsx
index a7c0290..f095d4c 100644
--- a/src/components/widget/call/CallTabs/CallTabsList/CallTabDetails.jsx
+++ b/src/components/widget/call/CallTabs/CallTabsList/CallTabDetails.jsx
@@ -3,19 +3,14 @@ import { Stack, Typography } from "@mui/material";
import CallTabTime from "./CallTabTime";
const CallTabDetails = ({ tab }) => {
- return (
-
-
-
- {tab.phone_number}
-
-
-
- );
+ return (
+
+
+
+ {tab.phone_number}
+
+
+
+ );
};
export default CallTabDetails;
diff --git a/src/components/widget/call/CallTabs/CallTabsList/CallTabLabel.jsx b/src/components/widget/call/CallTabs/CallTabsList/CallTabLabel.jsx
index 3b45b80..97ae268 100644
--- a/src/components/widget/call/CallTabs/CallTabsList/CallTabLabel.jsx
+++ b/src/components/widget/call/CallTabs/CallTabsList/CallTabLabel.jsx
@@ -4,32 +4,31 @@ import { IconButton, Stack, Zoom } from "@mui/material";
import CallTabDetails from "./CallTabDetails";
const CallTabLabel = ({ tab, index }) => {
- const { closeCall, activeCall } = useCall();
- const handleCloseClick = (id) => {
- closeCall(id);
- };
+ const { closeCall, activeCall } = useCall();
+ const handleCloseClick = (id) => {
+ closeCall(id);
+ };
- return (
-
-
-
- handleCloseClick(tab.id)}>
-
-
-
-
- );
+ return (
+
+
+
+ handleCloseClick(tab.id)}>
+
+
+
+
+ );
};
export default CallTabLabel;
diff --git a/src/components/widget/call/CallTabs/CallTabsList/CallTabTime.jsx b/src/components/widget/call/CallTabs/CallTabsList/CallTabTime.jsx
index a2ce2b3..4cefa31 100644
--- a/src/components/widget/call/CallTabs/CallTabsList/CallTabTime.jsx
+++ b/src/components/widget/call/CallTabs/CallTabsList/CallTabTime.jsx
@@ -3,26 +3,26 @@ import moment from "jalali-moment";
import { useEffect, useState } from "react";
const CallTabTime = ({ realTimeDate }) => {
- const [date, setDate] = useState("...");
- const changeTabTime = (tabTime) => {
- moment.relativeTimeThreshold("ss", 1);
- return moment(tabTime).locale("fa").fromNow();
- };
-
- useEffect(() => {
- const timer = setInterval(() => {
- setDate(changeTabTime(realTimeDate));
- }, 1000);
-
- return () => {
- clearInterval(timer);
+ const [date, setDate] = useState("...");
+ const changeTabTime = (tabTime) => {
+ moment.relativeTimeThreshold("ss", 1);
+ return moment(tabTime).locale("fa").fromNow();
};
- }, [realTimeDate]);
- return (
-
- {date}
-
- );
+ useEffect(() => {
+ const timer = setInterval(() => {
+ setDate(changeTabTime(realTimeDate));
+ }, 1000);
+
+ return () => {
+ clearInterval(timer);
+ };
+ }, [realTimeDate]);
+
+ return (
+
+ {date}
+
+ );
};
export default CallTabTime;
diff --git a/src/components/widget/call/CallTabs/CallTabsList/index.jsx b/src/components/widget/call/CallTabs/CallTabsList/index.jsx
index 67e02d9..64bf038 100644
--- a/src/components/widget/call/CallTabs/CallTabsList/index.jsx
+++ b/src/components/widget/call/CallTabs/CallTabsList/index.jsx
@@ -3,38 +3,38 @@ import { Box, Tab, Tabs } from "@mui/material";
import CallTabLabel from "./CallTabLabel";
const CallTabsList = () => {
- const { calls, changeActiveTabCall, activeCall } = useCall();
- const handleChange = (event, newValue) => {
- changeActiveTabCall(newValue);
- };
+ const { calls, changeActiveTabCall, activeCall } = useCall();
+ const handleChange = (event, newValue) => {
+ changeActiveTabCall(newValue);
+ };
- return (
-
-
- {calls.map((call, index) => (
- }
- key={call.id}
- />
- ))}
-
-
- );
+ return (
+
+
+ {calls.map((call, index) => (
+ }
+ key={call.id}
+ />
+ ))}
+
+
+ );
};
export default CallTabsList;
diff --git a/src/components/widget/call/CallTabs/index.jsx b/src/components/widget/call/CallTabs/index.jsx
index 58bb4e7..eb92d0a 100644
--- a/src/components/widget/call/CallTabs/index.jsx
+++ b/src/components/widget/call/CallTabs/index.jsx
@@ -3,15 +3,15 @@ import CallTabPanel from "./CallTabPanel";
import CallTabsList from "./CallTabsList";
const CallTabs = () => {
- const { calls } = useCall();
+ const { calls } = useCall();
- return (
- <>
-
- {calls.map((call) => (
-
- ))}
- >
- );
+ return (
+ <>
+
+ {calls.map((call) => (
+
+ ))}
+ >
+ );
};
export default CallTabs;
diff --git a/src/components/widget/call/CallWidgetDialog.jsx b/src/components/widget/call/CallWidgetDialog.jsx
index ea29f13..b08970e 100644
--- a/src/components/widget/call/CallWidgetDialog.jsx
+++ b/src/components/widget/call/CallWidgetDialog.jsx
@@ -7,42 +7,38 @@ import { useEffect } from "react";
import CallTabs from "./CallTabs";
const CallWidgetDialog = () => {
- const { openCallDialog, setOpenCallDialog, calls, newCall } = useCall();
- const { socket } = useSocket();
+ const { openCallDialog, setOpenCallDialog, calls, newCall } = useCall();
+ const { socket } = useSocket();
- useEffect(() => {
- const call = (_data, act) => {
- const data = JSON.parse(_data);
- newCall({
- id: data.call_id,
- phone_number: data.phone_number,
- });
- act();
- };
- socket.on("call", call);
+ useEffect(() => {
+ const call = (_data, act) => {
+ const data = JSON.parse(_data);
+ newCall({
+ id: data.call_id,
+ phone_number: data.phone_number,
+ });
+ act();
+ };
+ socket.on("call", call);
- return () => {
- socket.off("call", call);
- };
- });
+ return () => {
+ socket.off("call", call);
+ };
+ });
- useEffect(() => {
- if (calls.length === 0) {
- setOpenCallDialog(false);
- return;
- }
- setOpenCallDialog(true);
- }, [calls.length]);
+ useEffect(() => {
+ if (calls.length === 0) {
+ setOpenCallDialog(false);
+ return;
+ }
+ setOpenCallDialog(true);
+ }, [calls.length]);
- return (
-
- );
+ return (
+
+ );
};
export default CallWidgetDialog;
diff --git a/src/components/widget/call/index.jsx b/src/components/widget/call/index.jsx
index cc3a565..5f67ea0 100644
--- a/src/components/widget/call/index.jsx
+++ b/src/components/widget/call/index.jsx
@@ -4,12 +4,12 @@ import { CategoriesProvider } from "@/lib/contexts/category";
import CallWidgetDialog from "./CallWidgetDialog";
const CallWidget = () => {
- return (
-
-
-
-
-
- );
+ return (
+
+
+
+
+
+ );
};
export default CallWidget;
diff --git a/src/core/components/CustomDatePicker.jsx b/src/core/components/CustomDatePicker.jsx
index 27aa544..eb68fa7 100644
--- a/src/core/components/CustomDatePicker.jsx
+++ b/src/core/components/CustomDatePicker.jsx
@@ -5,56 +5,49 @@ import { LocalizationProvider, MobileDatePicker } from "@mui/x-date-pickers";
import { IconButton, InputAdornment } from "@mui/material";
import ClearIcon from "@mui/icons-material/Clear";
-const CustomDatePicker = ({
- dateValue,
- setDateValue,
- placeholder = "انتخاب تاریخ",
- size = "small",
-}) => {
- const handleDateChange = (newValue) => {
- setDateValue(newValue);
- };
+const CustomDatePicker = ({ dateValue, setDateValue, placeholder = "انتخاب تاریخ", size = "small" }) => {
+ const handleDateChange = (newValue) => {
+ setDateValue(newValue);
+ };
- return (
-
-
- {
- event.stopPropagation();
- setDateValue(null);
- }}
- sx={{
- color: "#bfbfbf",
- "&:hover": {
- backgroundColor: "rgba(189, 189, 189, 0.1)",
- color: "#363434",
- },
- }}
- >
-
-
-
- ),
- },
- },
- }}
- >
-
- );
+ return (
+
+
+ {
+ event.stopPropagation();
+ setDateValue(null);
+ }}
+ sx={{
+ color: "#bfbfbf",
+ "&:hover": {
+ backgroundColor: "rgba(189, 189, 189, 0.1)",
+ color: "#363434",
+ },
+ }}
+ >
+
+
+
+ ),
+ },
+ },
+ }}
+ >
+
+ );
};
export default CustomDatePicker;
diff --git a/src/core/components/DataTable/Main.js b/src/core/components/DataTable/Main.js
index 64c8d6a..ef2d81a 100644
--- a/src/core/components/DataTable/Main.js
+++ b/src/core/components/DataTable/Main.js
@@ -11,189 +11,169 @@ import { FA_DATATABLE_LOCALIZATION } from "./localization/fa/datatable";
import DataTable_Paper from "./table/Paper";
const rowSelectionReducer = (state, action) => {
- switch (action.type) {
- case "TOGGLE_ROW":
- return { [action.payload]: true };
- case "RESET":
- return {};
- default:
- return state;
- }
+ switch (action.type) {
+ case "TOGGLE_ROW":
+ return { [action.payload]: true };
+ case "RESET":
+ return {};
+ default:
+ return state;
+ }
};
const DataTable_Main = (props) => {
- const request = useRequest();
- const [rowSelection, dispatchRowSelection] = useReducer(
- rowSelectionReducer,
- {},
- );
- const { filterData, sortData, setSortData, hideData } = useDataTable();
- const {
- need_filter,
- table_url,
- user_id,
- page_name,
- table_name,
- columns,
- initialStateProps,
- TableToolbar,
- table_title,
- RowActions,
- specific_data,
- specialFilter,
- } = props;
- const flatColumns = flattenArrayOfObjects(columns, "columns");
- const [pagination, setPagination] = useState({ pageIndex: 0, pageSize: 10 });
- const [totalRowCount, setTotalRowCount] = useState(0);
- const flattenHideData = flattenObjectOfObjects(hideData);
- const onSortingChange = (event) => {
- setSortData(event);
- };
+ const request = useRequest();
+ const [rowSelection, dispatchRowSelection] = useReducer(rowSelectionReducer, {});
+ const { filterData, sortData, setSortData, hideData } = useDataTable();
+ const {
+ need_filter,
+ table_url,
+ user_id,
+ page_name,
+ table_name,
+ columns,
+ initialStateProps,
+ TableToolbar,
+ table_title,
+ RowActions,
+ specific_data,
+ specialFilter,
+ } = props;
+ const flatColumns = flattenArrayOfObjects(columns, "columns");
+ const [pagination, setPagination] = useState({ pageIndex: 0, pageSize: 10 });
+ const [totalRowCount, setTotalRowCount] = useState(0);
+ const flattenHideData = flattenObjectOfObjects(hideData);
+ const onSortingChange = (event) => {
+ setSortData(event);
+ };
- const fetchUrl = useCallback(() => {
- const params = new URLSearchParams();
- params.set("start", `${pagination.pageIndex * pagination.pageSize}`);
- params.set("size", pagination.pageSize);
- if (specialFilter) {
- const filteredSpecialFilterData = Object.values(specialFilter).filter(
- (filter) => !isArrayEmpty(filter.value),
- );
- params.set("filters", JSON.stringify(filteredSpecialFilterData || []));
- } else {
- const filteredFilterData = DataTableFilterDataStructure(
- filterData,
- isArrayEmpty,
- );
- params.set(
- "filters",
- JSON.stringify(
- filteredFilterData.length === 0 ? [] : filteredFilterData,
+ const fetchUrl = useCallback(() => {
+ const params = new URLSearchParams();
+ params.set("start", `${pagination.pageIndex * pagination.pageSize}`);
+ params.set("size", pagination.pageSize);
+ if (specialFilter) {
+ const filteredSpecialFilterData = Object.values(specialFilter).filter(
+ (filter) => !isArrayEmpty(filter.value)
+ );
+ params.set("filters", JSON.stringify(filteredSpecialFilterData || []));
+ } else {
+ const filteredFilterData = DataTableFilterDataStructure(filterData, isArrayEmpty);
+ params.set("filters", JSON.stringify(filteredFilterData.length === 0 ? [] : filteredFilterData));
+ }
+ params.set(
+ "sorting",
+ JSON.stringify(
+ Object.values(sortData).map(({ id, ...rest }) => ({
+ ...rest,
+ id: id.replace(/__/g, "."),
+ }))
+ )
+ );
+ return `${table_url}?${params}`;
+ }, [table_url, filterData, pagination, sortData, specialFilter]);
+
+ const fetcher = async (url) => {
+ try {
+ const response = await request(url);
+ setTotalRowCount(response.data?.meta?.totalRowCount);
+ if (specific_data) {
+ return specific_data(response.data);
+ } else {
+ return response.data?.data;
+ }
+ } catch (error) {
+ throw error;
+ }
+ };
+
+ const { data, isValidating, mutate } = useSWR(props.data ? "" : fetchUrl(), fetcher, {
+ revalidateIfStale: true,
+ revalidateOnFocus: false,
+ revalidateOnReconnect: true,
+ keepPreviousData: true,
+ });
+
+ useEffect(() => {
+ if (!isValidating) return;
+ dispatchRowSelection({ type: "RESET" });
+ }, [isValidating]);
+
+ const table = useMaterialReactTable({
+ localization: FA_DATATABLE_LOCALIZATION,
+ columns,
+ data: data ?? [],
+ muiTableBodyRowProps: ({ row }) => ({
+ onClick: () => dispatchRowSelection({ type: "TOGGLE_ROW", payload: row.id }),
+ selected: !!rowSelection[row.id],
+ }),
+ initialState: {
+ density: "compact",
+ columnVisibility: flattenHideData,
+ sorting: sortData,
+ ...initialStateProps,
+ },
+ state: {
+ showProgressBars: isValidating || props.loading,
+ columnVisibility: flattenHideData,
+ sorting: sortData,
+ pagination,
+ rowSelection,
+ },
+ muiTableHeadProps: {
+ sx: {
+ borderTop: "1px solid #e1e1e1",
+ borderBottom: "2px solid #e1e1e1",
+ },
+ },
+ muiTableHeadCellProps: {
+ sx: {
+ color: "primary.main",
+ borderLeft: "1px solid #e1e1e1",
+ "&:first-of-type": {
+ borderLeft: "unset",
+ },
+ },
+ },
+ muiTableBodyCellProps: {
+ sx: {
+ borderLeft: "1px solid #e1e1e1",
+ "&:first-of-type": {
+ borderLeft: "unset",
+ },
+ },
+ },
+ manualFiltering: true,
+ manualPagination: true,
+ manualSorting: true,
+ onPaginationChange: setPagination,
+ onSortingChange: onSortingChange,
+ rowCount: totalRowCount,
+ renderTopToolbarCustomActions: ({ table }) => (
+ <>
+ {TableToolbar && (
+
+ )}
+ >
),
- );
- }
- params.set(
- "sorting",
- JSON.stringify(
- Object.values(sortData).map(({ id, ...rest }) => ({
- ...rest,
- id: id.replace(/__/g, "."),
- })),
- ),
- );
- return `${table_url}?${params}`;
- }, [table_url, filterData, pagination, sortData, specialFilter]);
+ renderRowActions: ({ row }) => ,
+ ...props,
+ });
- const fetcher = async (url) => {
- try {
- const response = await request(url);
- setTotalRowCount(response.data?.meta?.totalRowCount);
- if (specific_data) {
- return specific_data(response.data);
- } else {
- return response.data?.data;
- }
- } catch (error) {
- throw error;
- }
- };
-
- const { data, isValidating, mutate } = useSWR(
- props.data ? "" : fetchUrl(),
- fetcher,
- {
- revalidateIfStale: true,
- revalidateOnFocus: false,
- revalidateOnReconnect: true,
- keepPreviousData: true,
- },
- );
-
- useEffect(() => {
- if (!isValidating) return;
- dispatchRowSelection({ type: "RESET" });
- }, [isValidating]);
-
- const table = useMaterialReactTable({
- localization: FA_DATATABLE_LOCALIZATION,
- columns,
- data: data ?? [],
- muiTableBodyRowProps: ({ row }) => ({
- onClick: () =>
- dispatchRowSelection({ type: "TOGGLE_ROW", payload: row.id }),
- selected: !!rowSelection[row.id],
- }),
- initialState: {
- density: "compact",
- columnVisibility: flattenHideData,
- sorting: sortData,
- ...initialStateProps,
- },
- state: {
- showProgressBars: isValidating || props.loading,
- columnVisibility: flattenHideData,
- sorting: sortData,
- pagination,
- rowSelection,
- },
- muiTableHeadProps: {
- sx: {
- borderTop: "1px solid #e1e1e1",
- borderBottom: "2px solid #e1e1e1",
- },
- },
- muiTableHeadCellProps: {
- sx: {
- color: "primary.main",
- borderLeft: "1px solid #e1e1e1",
- "&:first-of-type": {
- borderLeft: "unset",
- },
- },
- },
- muiTableBodyCellProps: {
- sx: {
- borderLeft: "1px solid #e1e1e1",
- "&:first-of-type": {
- borderLeft: "unset",
- },
- },
- },
- manualFiltering: true,
- manualPagination: true,
- manualSorting: true,
- onPaginationChange: setPagination,
- onSortingChange: onSortingChange,
- rowCount: totalRowCount,
- renderTopToolbarCustomActions: ({ table }) => (
- <>
- {TableToolbar && (
-
- )}
- >
- ),
- renderRowActions: ({ row }) => ,
- ...props,
- });
-
- return (
-
- );
+ table_url={table_url}
+ columns={flatColumns}
+ user_id={user_id}
+ page_name={page_name}
+ table_name={table_name}
+ special_data={props.data}
+ special_filter={specialFilter}
+ setFilterData={props.setFilterData}
+ />
+ );
};
export default DataTable_Main;
diff --git a/src/core/components/DataTable/body/TableBody.js b/src/core/components/DataTable/body/TableBody.js
index c427974..b0750be 100644
--- a/src/core/components/DataTable/body/TableBody.js
+++ b/src/core/components/DataTable/body/TableBody.js
@@ -2,200 +2,190 @@ import { parseFromValuesOrFunc } from "@/core/utils/utils";
import { TableBody, Typography } from "@mui/material";
import { useMRT_RowVirtualizer, useMRT_Rows } from "material-react-table";
import { memo, useMemo } from "react";
-import DataTable_TableBodyRow, {
- Memo_DataTable_TableBodyRow,
-} from "./TableBodyRow";
+import DataTable_TableBodyRow, { Memo_DataTable_TableBodyRow } from "./TableBodyRow";
const DataTable_TableBody = ({ columnVirtualizer, table, ...rest }) => {
- const {
- getBottomRows,
- getIsSomeRowsPinned,
- getRowModel,
- getState,
- getTopRows,
- options: {
- enableStickyFooter,
- enableStickyHeader,
- layoutMode,
- localization,
- memoMode,
- muiTableBodyProps,
- renderDetailPanel,
- renderEmptyRowsFallback,
- rowPinningDisplayMode,
- },
- refs: { tableFooterRef, tableHeadRef, tablePaperRef },
- } = table;
- const { columnFilters, globalFilter, isFullScreen, rowPinning } = getState();
+ const {
+ getBottomRows,
+ getIsSomeRowsPinned,
+ getRowModel,
+ getState,
+ getTopRows,
+ options: {
+ enableStickyFooter,
+ enableStickyHeader,
+ layoutMode,
+ localization,
+ memoMode,
+ muiTableBodyProps,
+ renderDetailPanel,
+ renderEmptyRowsFallback,
+ rowPinningDisplayMode,
+ },
+ refs: { tableFooterRef, tableHeadRef, tablePaperRef },
+ } = table;
+ const { columnFilters, globalFilter, isFullScreen, rowPinning } = getState();
- const tableBodyProps = {
- ...parseFromValuesOrFunc(muiTableBodyProps, { table }),
- ...rest,
- };
+ const tableBodyProps = {
+ ...parseFromValuesOrFunc(muiTableBodyProps, { table }),
+ ...rest,
+ };
- const tableHeadHeight =
- ((enableStickyHeader || isFullScreen) &&
- tableHeadRef.current?.clientHeight) ||
- 0;
- const tableFooterHeight =
- (enableStickyFooter && tableFooterRef.current?.clientHeight) || 0;
+ const tableHeadHeight = ((enableStickyHeader || isFullScreen) && tableHeadRef.current?.clientHeight) || 0;
+ const tableFooterHeight = (enableStickyFooter && tableFooterRef.current?.clientHeight) || 0;
- const pinnedRowIds = useMemo(() => {
- if (!rowPinning.bottom?.length && !rowPinning.top?.length) return [];
- return getRowModel()
- .rows.filter((row) => row.getIsPinned())
- .map((r) => r.id);
- }, [rowPinning, getRowModel().rows]);
+ const pinnedRowIds = useMemo(() => {
+ if (!rowPinning.bottom?.length && !rowPinning.top?.length) return [];
+ return getRowModel()
+ .rows.filter((row) => row.getIsPinned())
+ .map((r) => r.id);
+ }, [rowPinning, getRowModel().rows]);
- const rows = useMRT_Rows(table);
+ const rows = useMRT_Rows(table);
- const rowVirtualizer = useMRT_RowVirtualizer(table, rows);
+ const rowVirtualizer = useMRT_RowVirtualizer(table, rows);
- const { virtualRows } = rowVirtualizer ?? {};
+ const { virtualRows } = rowVirtualizer ?? {};
- const commonRowProps = {
- columnVirtualizer,
- numRows: rows.length,
- table,
- };
+ const commonRowProps = {
+ columnVirtualizer,
+ numRows: rows.length,
+ table,
+ };
- return (
- <>
- {!rowPinningDisplayMode?.includes("sticky") &&
- getIsSomeRowsPinned("top") && (
- ({
- display: layoutMode?.startsWith("grid") ? "grid" : undefined,
- position: "sticky",
- top: tableHeadHeight - 1,
- zIndex: 1,
- ...parseFromValuesOrFunc(tableBodyProps?.sx, theme),
- })}
- >
- {getTopRows().map((row, staticRowIndex) => {
- const props = {
- ...commonRowProps,
- row,
- staticRowIndex,
- };
- return memoMode === "rows" ? (
-
- ) : (
-
- );
- })}
-
- )}
- ({
- display: layoutMode?.startsWith("grid") ? "grid" : undefined,
- height: rowVirtualizer
- ? `${rowVirtualizer.getTotalSize()}px`
- : undefined,
- minHeight: !rows.length ? "100px" : undefined,
- position: "relative",
- ...parseFromValuesOrFunc(tableBodyProps?.sx, theme),
- })}
- >
- {tableBodyProps?.children ??
- (!rows.length ? (
-
+ {!rowPinningDisplayMode?.includes("sticky") && getIsSomeRowsPinned("top") && (
+ ({
+ display: layoutMode?.startsWith("grid") ? "grid" : undefined,
+ position: "sticky",
+ top: tableHeadHeight - 1,
+ zIndex: 1,
+ ...parseFromValuesOrFunc(tableBodyProps?.sx, theme),
+ })}
+ >
+ {getTopRows().map((row, staticRowIndex) => {
+ const props = {
+ ...commonRowProps,
+ row,
+ staticRowIndex,
+ };
+ return memoMode === "rows" ? (
+
+ ) : (
+
+ );
+ })}
+
+ )}
+ ({
+ display: layoutMode?.startsWith("grid") ? "grid" : undefined,
+ height: rowVirtualizer ? `${rowVirtualizer.getTotalSize()}px` : undefined,
+ minHeight: !rows.length ? "100px" : undefined,
+ position: "relative",
+ ...parseFromValuesOrFunc(tableBodyProps?.sx, theme),
+ })}
>
- |
- {renderEmptyRowsFallback?.({ table }) ?? (
-
- {globalFilter || columnFilters.length
- ? localization.noResultsFound
- : localization.noRecordsToDisplay}
-
- )}
- |
-
- ) : (
- <>
- {(virtualRows ?? rows).map((rowOrVirtualRow, staticRowIndex) => {
- let row = rowOrVirtualRow;
- if (rowVirtualizer) {
- if (renderDetailPanel) {
- if (rowOrVirtualRow.index % 2 === 1) {
- return null;
- } else {
- staticRowIndex = rowOrVirtualRow.index / 2;
- }
- } else {
- staticRowIndex = rowOrVirtualRow.index;
- }
- row = rows[staticRowIndex];
- }
- const props = {
- ...commonRowProps,
- pinnedRowIds,
- row,
- rowVirtualizer,
- staticRowIndex,
- virtualRow: rowVirtualizer ? rowOrVirtualRow : undefined,
- };
- const key = `${row.id}-${row.index}`;
- return memoMode === "rows" ? (
-
- ) : (
-
- );
- })}
- >
- ))}
-
- {!rowPinningDisplayMode?.includes("sticky") &&
- getIsSomeRowsPinned("bottom") && (
- ({
- bottom: tableFooterHeight - 1,
- display: layoutMode?.startsWith("grid") ? "grid" : undefined,
- position: "sticky",
- zIndex: 1,
- ...parseFromValuesOrFunc(tableBodyProps?.sx, theme),
- })}
- >
- {getBottomRows().map((row, staticRowIndex) => {
- const props = {
- ...commonRowProps,
- row,
- staticRowIndex,
- };
- return memoMode === "rows" ? (
-
- ) : (
-
- );
- })}
-
- )}
- >
- );
+ {tableBodyProps?.children ??
+ (!rows.length ? (
+
+ |
+ {renderEmptyRowsFallback?.({ table }) ?? (
+
+ {globalFilter || columnFilters.length
+ ? localization.noResultsFound
+ : localization.noRecordsToDisplay}
+
+ )}
+ |
+
+ ) : (
+ <>
+ {(virtualRows ?? rows).map((rowOrVirtualRow, staticRowIndex) => {
+ let row = rowOrVirtualRow;
+ if (rowVirtualizer) {
+ if (renderDetailPanel) {
+ if (rowOrVirtualRow.index % 2 === 1) {
+ return null;
+ } else {
+ staticRowIndex = rowOrVirtualRow.index / 2;
+ }
+ } else {
+ staticRowIndex = rowOrVirtualRow.index;
+ }
+ row = rows[staticRowIndex];
+ }
+ const props = {
+ ...commonRowProps,
+ pinnedRowIds,
+ row,
+ rowVirtualizer,
+ staticRowIndex,
+ virtualRow: rowVirtualizer ? rowOrVirtualRow : undefined,
+ };
+ const key = `${row.id}-${row.index}`;
+ return memoMode === "rows" ? (
+
+ ) : (
+
+ );
+ })}
+ >
+ ))}
+
+ {!rowPinningDisplayMode?.includes("sticky") && getIsSomeRowsPinned("bottom") && (
+ ({
+ bottom: tableFooterHeight - 1,
+ display: layoutMode?.startsWith("grid") ? "grid" : undefined,
+ position: "sticky",
+ zIndex: 1,
+ ...parseFromValuesOrFunc(tableBodyProps?.sx, theme),
+ })}
+ >
+ {getBottomRows().map((row, staticRowIndex) => {
+ const props = {
+ ...commonRowProps,
+ row,
+ staticRowIndex,
+ };
+ return memoMode === "rows" ? (
+
+ ) : (
+
+ );
+ })}
+
+ )}
+ >
+ );
};
export default DataTable_TableBody;
export const Memo_DataTable_TableBody = memo(
- DataTable_TableBody,
- (prev, next) => prev.table.options.data === next.table.options.data,
+ DataTable_TableBody,
+ (prev, next) => prev.table.options.data === next.table.options.data
);
diff --git a/src/core/components/DataTable/body/TableBodyCell.js b/src/core/components/DataTable/body/TableBodyCell.js
index fd36420..292f39e 100644
--- a/src/core/components/DataTable/body/TableBodyCell.js
+++ b/src/core/components/DataTable/body/TableBodyCell.js
@@ -1,7 +1,4 @@
-import {
- getCommonMRTCellStyles,
- parseFromValuesOrFunc,
-} from "@/core/utils/utils";
+import { getCommonMRTCellStyles, parseFromValuesOrFunc } from "@/core/utils/utils";
import { useTheme } from "@emotion/react";
import { Skeleton, TableCell } from "@mui/material";
import { isCellEditable, openEditingCell } from "material-react-table";
@@ -9,300 +6,250 @@ import { memo, useEffect, useMemo, useState } from "react";
import DataTable_CopyButton from "../buttons/CopyButton";
import DataTable_TableBodyCellValue from "./TableBodyCellValue";
-const DataTable_TableBodyCell = ({
- cell,
- numRows,
- rowRef,
- staticColumnIndex,
- staticRowIndex,
- table,
- ...rest
-}) => {
- const theme = useTheme();
- const {
- getState,
- options: {
- columnResizeDirection,
- columnResizeMode,
- createDisplayMode,
- editDisplayMode,
- enableCellActions,
- enableClickToCopy,
- enableColumnOrdering,
- enableColumnPinning,
- enableGrouping,
- layoutMode,
- mrtTheme: { draggingBorderColor, baseBackgroundColor },
- muiSkeletonProps,
- muiTableBodyCellProps,
- },
- setHoveredColumn,
- } = table;
- const {
- actionCell,
- columnSizingInfo,
- creatingRow,
- density,
- draggingColumn,
- draggingRow,
- editingCell,
- editingRow,
- hoveredColumn,
- hoveredRow,
- isLoading,
- showSkeletons,
- } = getState();
- const { column, row } = cell;
- const { columnDef } = column;
- const { columnDefType } = columnDef;
-
- const args = { cell, column, row, table };
- const tableCellProps = {
- ...parseFromValuesOrFunc(muiTableBodyCellProps, args),
- ...parseFromValuesOrFunc(columnDef.muiTableBodyCellProps, args),
- ...rest,
- };
-
- const skeletonProps = parseFromValuesOrFunc(muiSkeletonProps, {
- cell,
- column,
- row,
- table,
- });
-
- const [skeletonWidth, setSkeletonWidth] = useState(100);
- useEffect(() => {
- if ((!isLoading && !showSkeletons) || skeletonWidth !== 100) return;
- const size = column.getSize();
- setSkeletonWidth(
- columnDefType === "display"
- ? size / 2
- : Math.round(Math.random() * (size - size / 3) + size / 3),
- );
- }, [isLoading, showSkeletons]);
-
- const draggingBorders = useMemo(() => {
- const isDraggingColumn = draggingColumn?.id === column.id;
- const isHoveredColumn = hoveredColumn?.id === column.id;
- const isDraggingRow = draggingRow?.id === row.id;
- const isHoveredRow = hoveredRow?.id === row.id;
- const isFirstColumn = column.getIsFirstColumn();
- const isLastColumn = column.getIsLastColumn();
- const isLastRow = numRows && staticRowIndex === numRows - 1;
- const isResizingColumn = columnSizingInfo.isResizingColumn === column.id;
- const showResizeBorder =
- isResizingColumn && columnResizeMode === "onChange";
-
- const borderStyle = showResizeBorder
- ? `2px solid ${draggingBorderColor} !important`
- : isDraggingColumn || isDraggingRow
- ? `1px dashed ${theme.palette.grey[500]} !important`
- : isHoveredColumn || isHoveredRow || isResizingColumn
- ? `2px dashed ${draggingBorderColor} !important`
- : undefined;
-
- if (showResizeBorder) {
- return columnResizeDirection === "ltr"
- ? { borderRight: borderStyle }
- : { borderLeft: borderStyle };
- }
-
- return borderStyle
- ? {
- borderBottom:
- isDraggingRow || isHoveredRow || (isLastRow && !isResizingColumn)
- ? borderStyle
- : undefined,
- borderLeft:
- isDraggingColumn ||
- isHoveredColumn ||
- ((isDraggingRow || isHoveredRow) && isFirstColumn)
- ? borderStyle
- : undefined,
- borderRight:
- isDraggingColumn ||
- isHoveredColumn ||
- ((isDraggingRow || isHoveredRow) && isLastColumn)
- ? borderStyle
- : undefined,
- borderTop: isDraggingRow || isHoveredRow ? borderStyle : undefined,
- }
- : undefined;
- }, [
- columnSizingInfo.isResizingColumn,
- draggingColumn,
- draggingRow,
- hoveredColumn,
- hoveredRow,
- staticRowIndex,
- ]);
-
- const isColumnPinned =
- enableColumnPinning &&
- columnDef.columnDefType !== "group" &&
- column.getIsPinned();
-
- const isEditable = isCellEditable({ cell, table });
-
- const isEditing =
- isEditable &&
- !["custom", "modal"].includes(editDisplayMode) &&
- (editDisplayMode === "table" ||
- editingRow?.id === row.id ||
- editingCell?.id === cell.id) &&
- !row.getIsGrouped();
-
- const isCreating =
- isEditable && createDisplayMode === "row" && creatingRow?.id === row.id;
-
- const showClickToCopyButton =
- (parseFromValuesOrFunc(enableClickToCopy, cell) === true ||
- parseFromValuesOrFunc(columnDef.enableClickToCopy, cell) === true) &&
- !["context-menu", false].includes(
- // @ts-ignore
- parseFromValuesOrFunc(columnDef.enableClickToCopy, cell),
- );
-
- const isRightClickable = parseFromValuesOrFunc(enableCellActions, cell);
-
- const cellValueProps = {
- cell,
- table,
- };
-
- const handleDoubleClick = (event) => {
- tableCellProps?.onDoubleClick?.(event);
- openEditingCell({ cell, table });
- };
-
- const handleDragEnter = (e) => {
- tableCellProps?.onDragEnter?.(e);
- if (enableGrouping && hoveredColumn?.id === "drop-zone") {
- setHoveredColumn(null);
- }
- if (enableColumnOrdering && draggingColumn) {
- setHoveredColumn(
- columnDef.enableColumnOrdering !== false ? column : null,
- );
- }
- };
-
- const handleDragOver = (e) => {
- if (columnDef.enableColumnOrdering !== false) {
- e.preventDefault();
- }
- };
-
- const handleContextMenu = (e) => {
- tableCellProps?.onContextMenu?.(e);
- if (isRightClickable) {
- e.preventDefault();
- table.setActionCell(cell);
- table.refs.actionCellRef.current = e.currentTarget;
- }
- };
-
- return (
- ({
- "&:hover": {
- outline:
- actionCell?.id === cell.id ||
- (editDisplayMode === "cell" && isEditable) ||
- (editDisplayMode === "table" && (isCreating || isEditing))
- ? `1px solid ${theme.palette.grey[500]}`
- : undefined,
- textOverflow: "clip",
+const DataTable_TableBodyCell = ({ cell, numRows, rowRef, staticColumnIndex, staticRowIndex, table, ...rest }) => {
+ const theme = useTheme();
+ const {
+ getState,
+ options: {
+ columnResizeDirection,
+ columnResizeMode,
+ createDisplayMode,
+ editDisplayMode,
+ enableCellActions,
+ enableClickToCopy,
+ enableColumnOrdering,
+ enableColumnPinning,
+ enableGrouping,
+ layoutMode,
+ mrtTheme: { draggingBorderColor, baseBackgroundColor },
+ muiSkeletonProps,
+ muiTableBodyCellProps,
},
- alignItems: layoutMode?.startsWith("grid") ? "center" : undefined,
- cursor: isRightClickable
- ? "context-menu"
- : isEditable && editDisplayMode === "cell"
- ? "pointer"
- : "inherit",
- outline:
- actionCell?.id === cell.id
- ? `1px solid ${theme.palette.grey[500]}`
- : undefined,
- outlineOffset: "-1px",
- overflow: "hidden",
- p:
- density === "compact"
- ? columnDefType === "display"
- ? "0 0.5rem"
- : "0.5rem"
- : density === "comfortable"
- ? columnDefType === "display"
- ? "0.5rem 0.75rem"
- : "1rem"
- : columnDefType === "display"
- ? "1rem 1.25rem"
- : "1.5rem",
+ setHoveredColumn,
+ } = table;
+ const {
+ actionCell,
+ columnSizingInfo,
+ creatingRow,
+ density,
+ draggingColumn,
+ draggingRow,
+ editingCell,
+ editingRow,
+ hoveredColumn,
+ hoveredRow,
+ isLoading,
+ showSkeletons,
+ } = getState();
+ const { column, row } = cell;
+ const { columnDef } = column;
+ const { columnDefType } = columnDef;
- textOverflow: columnDefType !== "display" ? "ellipsis" : undefined,
- whiteSpace:
- row.getIsPinned() || density === "compact" ? "nowrap" : "normal",
- ...getCommonMRTCellStyles({
- column,
- table,
- tableCellProps,
- theme,
- }),
- ...draggingBorders,
- backgroundColor: baseBackgroundColor,
- })}
- >
- {tableCellProps.children ?? (
- <>
- {cell.getIsPlaceholder() ? (
- (columnDef.PlaceholderCell?.({ cell, column, row, table }) ?? null)
- ) : showSkeletons !== false && (isLoading || showSkeletons) ? (
-
- ) : columnDefType === "display" &&
- (["mrt-row-expand", "mrt-row-numbers", "mrt-row-select"].includes(
- column.id,
- ) ||
- !row.getIsGrouped()) ? (
- columnDef.Cell?.({
- cell,
- column,
- renderedCellValue: cell.renderValue(),
- row,
- rowRef,
- staticColumnIndex,
- staticRowIndex,
- table,
- })
- ) : showClickToCopyButton && columnDef.enableClickToCopy !== false ? (
-
-
-
- ) : (
-
- )}
- {cell.getIsGrouped() && !columnDef.GroupedCell && (
- <> ({row.subRows?.length})>
- )}
- >
- )}
-
- );
+ const args = { cell, column, row, table };
+ const tableCellProps = {
+ ...parseFromValuesOrFunc(muiTableBodyCellProps, args),
+ ...parseFromValuesOrFunc(columnDef.muiTableBodyCellProps, args),
+ ...rest,
+ };
+
+ const skeletonProps = parseFromValuesOrFunc(muiSkeletonProps, {
+ cell,
+ column,
+ row,
+ table,
+ });
+
+ const [skeletonWidth, setSkeletonWidth] = useState(100);
+ useEffect(() => {
+ if ((!isLoading && !showSkeletons) || skeletonWidth !== 100) return;
+ const size = column.getSize();
+ setSkeletonWidth(
+ columnDefType === "display" ? size / 2 : Math.round(Math.random() * (size - size / 3) + size / 3)
+ );
+ }, [isLoading, showSkeletons]);
+
+ const draggingBorders = useMemo(() => {
+ const isDraggingColumn = draggingColumn?.id === column.id;
+ const isHoveredColumn = hoveredColumn?.id === column.id;
+ const isDraggingRow = draggingRow?.id === row.id;
+ const isHoveredRow = hoveredRow?.id === row.id;
+ const isFirstColumn = column.getIsFirstColumn();
+ const isLastColumn = column.getIsLastColumn();
+ const isLastRow = numRows && staticRowIndex === numRows - 1;
+ const isResizingColumn = columnSizingInfo.isResizingColumn === column.id;
+ const showResizeBorder = isResizingColumn && columnResizeMode === "onChange";
+
+ const borderStyle = showResizeBorder
+ ? `2px solid ${draggingBorderColor} !important`
+ : isDraggingColumn || isDraggingRow
+ ? `1px dashed ${theme.palette.grey[500]} !important`
+ : isHoveredColumn || isHoveredRow || isResizingColumn
+ ? `2px dashed ${draggingBorderColor} !important`
+ : undefined;
+
+ if (showResizeBorder) {
+ return columnResizeDirection === "ltr" ? { borderRight: borderStyle } : { borderLeft: borderStyle };
+ }
+
+ return borderStyle
+ ? {
+ borderBottom:
+ isDraggingRow || isHoveredRow || (isLastRow && !isResizingColumn) ? borderStyle : undefined,
+ borderLeft:
+ isDraggingColumn || isHoveredColumn || ((isDraggingRow || isHoveredRow) && isFirstColumn)
+ ? borderStyle
+ : undefined,
+ borderRight:
+ isDraggingColumn || isHoveredColumn || ((isDraggingRow || isHoveredRow) && isLastColumn)
+ ? borderStyle
+ : undefined,
+ borderTop: isDraggingRow || isHoveredRow ? borderStyle : undefined,
+ }
+ : undefined;
+ }, [columnSizingInfo.isResizingColumn, draggingColumn, draggingRow, hoveredColumn, hoveredRow, staticRowIndex]);
+
+ const isColumnPinned = enableColumnPinning && columnDef.columnDefType !== "group" && column.getIsPinned();
+
+ const isEditable = isCellEditable({ cell, table });
+
+ const isEditing =
+ isEditable &&
+ !["custom", "modal"].includes(editDisplayMode) &&
+ (editDisplayMode === "table" || editingRow?.id === row.id || editingCell?.id === cell.id) &&
+ !row.getIsGrouped();
+
+ const isCreating = isEditable && createDisplayMode === "row" && creatingRow?.id === row.id;
+
+ const showClickToCopyButton =
+ (parseFromValuesOrFunc(enableClickToCopy, cell) === true ||
+ parseFromValuesOrFunc(columnDef.enableClickToCopy, cell) === true) &&
+ !["context-menu", false].includes(
+ // @ts-ignore
+ parseFromValuesOrFunc(columnDef.enableClickToCopy, cell)
+ );
+
+ const isRightClickable = parseFromValuesOrFunc(enableCellActions, cell);
+
+ const cellValueProps = {
+ cell,
+ table,
+ };
+
+ const handleDoubleClick = (event) => {
+ tableCellProps?.onDoubleClick?.(event);
+ openEditingCell({ cell, table });
+ };
+
+ const handleDragEnter = (e) => {
+ tableCellProps?.onDragEnter?.(e);
+ if (enableGrouping && hoveredColumn?.id === "drop-zone") {
+ setHoveredColumn(null);
+ }
+ if (enableColumnOrdering && draggingColumn) {
+ setHoveredColumn(columnDef.enableColumnOrdering !== false ? column : null);
+ }
+ };
+
+ const handleDragOver = (e) => {
+ if (columnDef.enableColumnOrdering !== false) {
+ e.preventDefault();
+ }
+ };
+
+ const handleContextMenu = (e) => {
+ tableCellProps?.onContextMenu?.(e);
+ if (isRightClickable) {
+ e.preventDefault();
+ table.setActionCell(cell);
+ table.refs.actionCellRef.current = e.currentTarget;
+ }
+ };
+
+ return (
+ ({
+ "&:hover": {
+ outline:
+ actionCell?.id === cell.id ||
+ (editDisplayMode === "cell" && isEditable) ||
+ (editDisplayMode === "table" && (isCreating || isEditing))
+ ? `1px solid ${theme.palette.grey[500]}`
+ : undefined,
+ textOverflow: "clip",
+ },
+ alignItems: layoutMode?.startsWith("grid") ? "center" : undefined,
+ cursor: isRightClickable
+ ? "context-menu"
+ : isEditable && editDisplayMode === "cell"
+ ? "pointer"
+ : "inherit",
+ outline: actionCell?.id === cell.id ? `1px solid ${theme.palette.grey[500]}` : undefined,
+ outlineOffset: "-1px",
+ overflow: "hidden",
+ p:
+ density === "compact"
+ ? columnDefType === "display"
+ ? "0 0.5rem"
+ : "0.5rem"
+ : density === "comfortable"
+ ? columnDefType === "display"
+ ? "0.5rem 0.75rem"
+ : "1rem"
+ : columnDefType === "display"
+ ? "1rem 1.25rem"
+ : "1.5rem",
+
+ textOverflow: columnDefType !== "display" ? "ellipsis" : undefined,
+ whiteSpace: row.getIsPinned() || density === "compact" ? "nowrap" : "normal",
+ ...getCommonMRTCellStyles({
+ column,
+ table,
+ tableCellProps,
+ theme,
+ }),
+ ...draggingBorders,
+ backgroundColor: baseBackgroundColor,
+ })}
+ >
+ {tableCellProps.children ?? (
+ <>
+ {cell.getIsPlaceholder() ? (
+ (columnDef.PlaceholderCell?.({ cell, column, row, table }) ?? null)
+ ) : showSkeletons !== false && (isLoading || showSkeletons) ? (
+
+ ) : columnDefType === "display" &&
+ (["mrt-row-expand", "mrt-row-numbers", "mrt-row-select"].includes(column.id) ||
+ !row.getIsGrouped()) ? (
+ columnDef.Cell?.({
+ cell,
+ column,
+ renderedCellValue: cell.renderValue(),
+ row,
+ rowRef,
+ staticColumnIndex,
+ staticRowIndex,
+ table,
+ })
+ ) : showClickToCopyButton && columnDef.enableClickToCopy !== false ? (
+
+
+
+ ) : (
+
+ )}
+ {cell.getIsGrouped() && !columnDef.GroupedCell && <> ({row.subRows?.length})>}
+ >
+ )}
+
+ );
};
export default DataTable_TableBodyCell;
-export const Memo_DataTable_TableBodyCell = memo(
- DataTable_TableBodyCell,
- (prev, next) => next.cell === prev.cell,
-);
+export const Memo_DataTable_TableBodyCell = memo(DataTable_TableBodyCell, (prev, next) => next.cell === prev.cell);
diff --git a/src/core/components/DataTable/body/TableBodyCellValue.js b/src/core/components/DataTable/body/TableBodyCellValue.js
index 5610935..aea105f 100644
--- a/src/core/components/DataTable/body/TableBodyCellValue.js
+++ b/src/core/components/DataTable/body/TableBodyCellValue.js
@@ -2,111 +2,102 @@ import { Box } from "@mui/material";
const allowedTypes = ["string", "number"];
-const DataTable_TableBodyCellValue = ({
- cell,
- rowRef,
- staticColumnIndex,
- staticRowIndex,
- table,
-}) => {
- const {
- getState,
- options: {
- enableFilterMatchHighlighting,
- mrtTheme: { matchHighlightColor },
- },
- } = table;
- const { column, row } = cell;
- const { columnDef } = column;
- const { globalFilter, globalFilterFn } = getState();
- const filterValue = column.getFilterValue();
+const DataTable_TableBodyCellValue = ({ cell, rowRef, staticColumnIndex, staticRowIndex, table }) => {
+ const {
+ getState,
+ options: {
+ enableFilterMatchHighlighting,
+ mrtTheme: { matchHighlightColor },
+ },
+ } = table;
+ const { column, row } = cell;
+ const { columnDef } = column;
+ const { globalFilter, globalFilterFn } = getState();
+ const filterValue = column.getFilterValue();
- let renderedCellValue =
- cell.getIsAggregated() && columnDef.AggregatedCell
- ? columnDef.AggregatedCell({
- cell,
- column,
- row,
- table,
- })
- : row.getIsGrouped() && !cell.getIsGrouped()
- ? null
- : cell.getIsGrouped() && columnDef.GroupedCell
- ? columnDef.GroupedCell({
- cell,
- column,
- row,
- table,
- })
- : undefined;
+ let renderedCellValue =
+ cell.getIsAggregated() && columnDef.AggregatedCell
+ ? columnDef.AggregatedCell({
+ cell,
+ column,
+ row,
+ table,
+ })
+ : row.getIsGrouped() && !cell.getIsGrouped()
+ ? null
+ : cell.getIsGrouped() && columnDef.GroupedCell
+ ? columnDef.GroupedCell({
+ cell,
+ column,
+ row,
+ table,
+ })
+ : undefined;
- const isGroupedValue = renderedCellValue !== undefined;
+ const isGroupedValue = renderedCellValue !== undefined;
- if (!isGroupedValue) {
- renderedCellValue = cell.renderValue();
- }
-
- if (
- enableFilterMatchHighlighting &&
- columnDef.enableFilterMatchHighlighting !== false &&
- String(renderedCellValue) &&
- allowedTypes.includes(typeof renderedCellValue) &&
- ((filterValue &&
- allowedTypes.includes(typeof filterValue) &&
- ["autocomplete", "text"].includes(columnDef.filterVariant)) ||
- (globalFilter &&
- allowedTypes.includes(typeof globalFilter) &&
- column.getCanGlobalFilter()))
- ) {
- const chunks = highlightWords?.({
- matchExactly:
- (filterValue ? columnDef._filterFn : globalFilterFn) !== "fuzzy",
- query: (filterValue ?? globalFilter ?? "").toString(),
- text: renderedCellValue?.toString(),
- });
- if (chunks?.length > 1 || chunks?.[0]?.match) {
- renderedCellValue = (
-
- {chunks?.map(({ key, match, text }) => (
-
- theme.palette.mode === "dark"
- ? theme.palette.common.white
- : theme.palette.common.black,
- padding: "2px 1px",
- }
- : undefined
- }
- >
- {text}
-
- )) ?? renderedCellValue}
-
- );
+ if (!isGroupedValue) {
+ renderedCellValue = cell.renderValue();
}
- }
- if (columnDef.Cell && !isGroupedValue) {
- renderedCellValue = columnDef.Cell({
- cell,
- column,
- renderedCellValue,
- row,
- rowRef,
- staticColumnIndex,
- staticRowIndex,
- table,
- });
- }
+ if (
+ enableFilterMatchHighlighting &&
+ columnDef.enableFilterMatchHighlighting !== false &&
+ String(renderedCellValue) &&
+ allowedTypes.includes(typeof renderedCellValue) &&
+ ((filterValue &&
+ allowedTypes.includes(typeof filterValue) &&
+ ["autocomplete", "text"].includes(columnDef.filterVariant)) ||
+ (globalFilter && allowedTypes.includes(typeof globalFilter) && column.getCanGlobalFilter()))
+ ) {
+ const chunks = highlightWords?.({
+ matchExactly: (filterValue ? columnDef._filterFn : globalFilterFn) !== "fuzzy",
+ query: (filterValue ?? globalFilter ?? "").toString(),
+ text: renderedCellValue?.toString(),
+ });
+ if (chunks?.length > 1 || chunks?.[0]?.match) {
+ renderedCellValue = (
+
+ {chunks?.map(({ key, match, text }) => (
+
+ theme.palette.mode === "dark"
+ ? theme.palette.common.white
+ : theme.palette.common.black,
+ padding: "2px 1px",
+ }
+ : undefined
+ }
+ >
+ {text}
+
+ )) ?? renderedCellValue}
+
+ );
+ }
+ }
- return renderedCellValue;
+ if (columnDef.Cell && !isGroupedValue) {
+ renderedCellValue = columnDef.Cell({
+ cell,
+ column,
+ renderedCellValue,
+ row,
+ rowRef,
+ staticColumnIndex,
+ staticRowIndex,
+ table,
+ });
+ }
+
+ return renderedCellValue;
};
export default DataTable_TableBodyCellValue;
diff --git a/src/core/components/DataTable/body/TableBodyRow.js b/src/core/components/DataTable/body/TableBodyRow.js
index 8d32a9d..2d21f32 100644
--- a/src/core/components/DataTable/body/TableBodyRow.js
+++ b/src/core/components/DataTable/body/TableBodyRow.js
@@ -1,258 +1,216 @@
-import {
- commonCellBeforeAfterStyles,
- getCommonPinnedCellStyles,
- parseFromValuesOrFunc,
-} from "@/core/utils/utils";
+import { commonCellBeforeAfterStyles, getCommonPinnedCellStyles, parseFromValuesOrFunc } from "@/core/utils/utils";
import { useTheme } from "@emotion/react";
import { TableRow, alpha, darken, lighten } from "@mui/material";
import { getIsRowSelected } from "material-react-table";
import { memo, useMemo, useRef } from "react";
-import DataTable_TableBodyCell, {
- Memo_DataTable_TableBodyCell,
-} from "./TableBodyCell";
+import DataTable_TableBodyCell, { Memo_DataTable_TableBodyCell } from "./TableBodyCell";
import DataTable_TableDetailPanel from "./TableDetailPanel";
const DataTable_TableBodyRow = ({
- columnVirtualizer,
- numRows,
- pinnedRowIds,
- row,
- rowVirtualizer,
- staticRowIndex,
- table,
- virtualRow,
- ...rest
+ columnVirtualizer,
+ numRows,
+ pinnedRowIds,
+ row,
+ rowVirtualizer,
+ staticRowIndex,
+ table,
+ virtualRow,
+ ...rest
}) => {
- const theme = useTheme();
+ const theme = useTheme();
- const {
- getState,
- options: {
- enableRowOrdering,
- enableRowPinning,
- enableStickyFooter,
- enableStickyHeader,
- layoutMode,
- memoMode,
- mrtTheme: {
- baseBackgroundColor,
- pinnedRowBackgroundColor,
- selectedRowBackgroundColor,
- },
- muiTableBodyRowProps,
- renderDetailPanel,
- rowPinningDisplayMode,
- },
- refs: { tableFooterRef, tableHeadRef },
- setHoveredRow,
- } = table;
- const {
- density,
- draggingColumn,
- draggingRow,
- editingCell,
- editingRow,
- hoveredRow,
- isFullScreen,
- rowPinning,
- } = getState();
+ const {
+ getState,
+ options: {
+ enableRowOrdering,
+ enableRowPinning,
+ enableStickyFooter,
+ enableStickyHeader,
+ layoutMode,
+ memoMode,
+ mrtTheme: { baseBackgroundColor, pinnedRowBackgroundColor, selectedRowBackgroundColor },
+ muiTableBodyRowProps,
+ renderDetailPanel,
+ rowPinningDisplayMode,
+ },
+ refs: { tableFooterRef, tableHeadRef },
+ setHoveredRow,
+ } = table;
+ const { density, draggingColumn, draggingRow, editingCell, editingRow, hoveredRow, isFullScreen, rowPinning } =
+ getState();
- const visibleCells = row.getVisibleCells();
+ const visibleCells = row.getVisibleCells();
- const { virtualColumns, virtualPaddingLeft, virtualPaddingRight } =
- columnVirtualizer ?? {};
+ const { virtualColumns, virtualPaddingLeft, virtualPaddingRight } = columnVirtualizer ?? {};
- const isRowSelected = getIsRowSelected({ row, table });
- const isRowPinned = enableRowPinning && row.getIsPinned();
- const isDraggingRow = draggingRow?.id === row.id;
- const isHoveredRow = hoveredRow?.id === row.id;
+ const isRowSelected = getIsRowSelected({ row, table });
+ const isRowPinned = enableRowPinning && row.getIsPinned();
+ const isDraggingRow = draggingRow?.id === row.id;
+ const isHoveredRow = hoveredRow?.id === row.id;
- const tableRowProps = {
- ...parseFromValuesOrFunc(muiTableBodyRowProps, {
- row,
- staticRowIndex,
- table,
- }),
- ...rest,
- };
+ const tableRowProps = {
+ ...parseFromValuesOrFunc(muiTableBodyRowProps, {
+ row,
+ staticRowIndex,
+ table,
+ }),
+ ...rest,
+ };
- const [bottomPinnedIndex, topPinnedIndex] = useMemo(() => {
- if (
- !enableRowPinning ||
- !rowPinningDisplayMode?.includes("sticky") ||
- !pinnedRowIds ||
- !row.getIsPinned()
- )
- return [];
- return [
- [...pinnedRowIds].reverse().indexOf(row.id),
- pinnedRowIds.indexOf(row.id),
- ];
- }, [pinnedRowIds, rowPinning]);
+ const [bottomPinnedIndex, topPinnedIndex] = useMemo(() => {
+ if (!enableRowPinning || !rowPinningDisplayMode?.includes("sticky") || !pinnedRowIds || !row.getIsPinned())
+ return [];
+ return [[...pinnedRowIds].reverse().indexOf(row.id), pinnedRowIds.indexOf(row.id)];
+ }, [pinnedRowIds, rowPinning]);
- const tableHeadHeight =
- ((enableStickyHeader || isFullScreen) &&
- tableHeadRef.current?.clientHeight) ||
- 0;
- const tableFooterHeight =
- (enableStickyFooter && tableFooterRef.current?.clientHeight) || 0;
+ const tableHeadHeight = ((enableStickyHeader || isFullScreen) && tableHeadRef.current?.clientHeight) || 0;
+ const tableFooterHeight = (enableStickyFooter && tableFooterRef.current?.clientHeight) || 0;
- const sx = parseFromValuesOrFunc(tableRowProps?.sx, theme);
+ const sx = parseFromValuesOrFunc(tableRowProps?.sx, theme);
- const defaultRowHeight =
- density === "compact" ? 37 : density === "comfortable" ? 53 : 69;
+ const defaultRowHeight = density === "compact" ? 37 : density === "comfortable" ? 53 : 69;
- const customRowHeight =
- // @ts-ignore
- parseInt(tableRowProps?.style?.height ?? sx?.height, 10) || undefined;
+ const customRowHeight =
+ // @ts-ignore
+ parseInt(tableRowProps?.style?.height ?? sx?.height, 10) || undefined;
- const rowHeight = customRowHeight || defaultRowHeight;
+ const rowHeight = customRowHeight || defaultRowHeight;
- const handleDragEnter = (_e) => {
- if (enableRowOrdering && draggingRow) {
- setHoveredRow(row);
- }
- };
+ const handleDragEnter = (_e) => {
+ if (enableRowOrdering && draggingRow) {
+ setHoveredRow(row);
+ }
+ };
- const handleDragOver = (e) => {
- e.preventDefault();
- };
+ const handleDragOver = (e) => {
+ e.preventDefault();
+ };
- const rowRef = useRef(null);
+ const rowRef = useRef(null);
- const cellHighlightColor = isRowSelected
- ? selectedRowBackgroundColor
- : isRowPinned
- ? pinnedRowBackgroundColor
- : undefined;
+ const cellHighlightColor = isRowSelected
+ ? selectedRowBackgroundColor
+ : isRowPinned
+ ? pinnedRowBackgroundColor
+ : undefined;
- const cellHighlightColorHover =
- tableRowProps?.hover !== false
- ? isRowSelected
- ? cellHighlightColor
- : theme.palette.mode === "dark"
- ? `${lighten(baseBackgroundColor, 0.2)}`
- : `${darken(baseBackgroundColor, 0.2)}`
- : undefined;
+ const cellHighlightColorHover =
+ tableRowProps?.hover !== false
+ ? isRowSelected
+ ? cellHighlightColor
+ : theme.palette.mode === "dark"
+ ? `${lighten(baseBackgroundColor, 0.2)}`
+ : `${darken(baseBackgroundColor, 0.2)}`
+ : undefined;
- return (
- <>
- {
- if (node) {
- rowRef.current = node;
- rowVirtualizer?.measureElement(node);
- }
- }}
- selected={isRowSelected}
- {...tableRowProps}
- style={{
- transform: virtualRow
- ? `translateY(${virtualRow.start}px)`
- : undefined,
- ...tableRowProps?.style,
- }}
- sx={(theme) => ({
- "&:hover td:after": cellHighlightColorHover
- ? {
- backgroundColor: alpha(cellHighlightColorHover, 0.3),
- ...commonCellBeforeAfterStyles,
- }
- : undefined,
- bottom:
- !virtualRow && bottomPinnedIndex !== undefined && isRowPinned
- ? `${bottomPinnedIndex * rowHeight + (enableStickyFooter ? tableFooterHeight - 1 : 0)}px`
- : undefined,
- boxSizing: "border-box",
- display: layoutMode?.startsWith("grid") ? "flex" : undefined,
- opacity: isRowPinned ? 0.97 : isDraggingRow || isHoveredRow ? 0.5 : 1,
- position: virtualRow
- ? "absolute"
- : rowPinningDisplayMode?.includes("sticky") && isRowPinned
- ? "sticky"
- : "relative",
- td: {
- ...getCommonPinnedCellStyles({ table, theme }),
- },
- "td:after": cellHighlightColor
- ? {
- backgroundColor: cellHighlightColor,
- ...commonCellBeforeAfterStyles,
- }
- : undefined,
- top: virtualRow
- ? 0
- : topPinnedIndex !== undefined && isRowPinned
- ? `${
- topPinnedIndex * rowHeight +
- (enableStickyHeader || isFullScreen ? tableHeadHeight - 1 : 0)
- }px`
- : undefined,
- transition: virtualRow ? "none" : "all 150ms ease-in-out",
- width: "100%",
- zIndex:
- rowPinningDisplayMode?.includes("sticky") && isRowPinned ? 2 : 0,
- ...sx,
- })}
- >
- {virtualPaddingLeft ? (
- |
- ) : null}
- {(virtualColumns ?? visibleCells).map(
- (cellOrVirtualCell, staticColumnIndex) => {
- let cell = cellOrVirtualCell;
- if (columnVirtualizer) {
- staticColumnIndex = cellOrVirtualCell.index;
- cell = visibleCells[staticColumnIndex];
- }
- const props = {
- cell,
- numRows,
- rowRef,
- staticColumnIndex,
- staticRowIndex,
- table,
- };
- return cell ? (
- memoMode === "cells" &&
- cell.column.columnDef.columnDefType === "data" &&
- !draggingColumn &&
- !draggingRow &&
- editingCell?.id !== cell.id &&
- editingRow?.id !== row.id ? (
-
- ) : (
-
- )
- ) : null;
- },
- )}
- {virtualPaddingRight ? (
- |
- ) : null}
-
- {renderDetailPanel && !row.getIsGrouped() && (
-
- )}
- >
- );
+ return (
+ <>
+ {
+ if (node) {
+ rowRef.current = node;
+ rowVirtualizer?.measureElement(node);
+ }
+ }}
+ selected={isRowSelected}
+ {...tableRowProps}
+ style={{
+ transform: virtualRow ? `translateY(${virtualRow.start}px)` : undefined,
+ ...tableRowProps?.style,
+ }}
+ sx={(theme) => ({
+ "&:hover td:after": cellHighlightColorHover
+ ? {
+ backgroundColor: alpha(cellHighlightColorHover, 0.3),
+ ...commonCellBeforeAfterStyles,
+ }
+ : undefined,
+ bottom:
+ !virtualRow && bottomPinnedIndex !== undefined && isRowPinned
+ ? `${bottomPinnedIndex * rowHeight + (enableStickyFooter ? tableFooterHeight - 1 : 0)}px`
+ : undefined,
+ boxSizing: "border-box",
+ display: layoutMode?.startsWith("grid") ? "flex" : undefined,
+ opacity: isRowPinned ? 0.97 : isDraggingRow || isHoveredRow ? 0.5 : 1,
+ position: virtualRow
+ ? "absolute"
+ : rowPinningDisplayMode?.includes("sticky") && isRowPinned
+ ? "sticky"
+ : "relative",
+ td: {
+ ...getCommonPinnedCellStyles({ table, theme }),
+ },
+ "td:after": cellHighlightColor
+ ? {
+ backgroundColor: cellHighlightColor,
+ ...commonCellBeforeAfterStyles,
+ }
+ : undefined,
+ top: virtualRow
+ ? 0
+ : topPinnedIndex !== undefined && isRowPinned
+ ? `${
+ topPinnedIndex * rowHeight +
+ (enableStickyHeader || isFullScreen ? tableHeadHeight - 1 : 0)
+ }px`
+ : undefined,
+ transition: virtualRow ? "none" : "all 150ms ease-in-out",
+ width: "100%",
+ zIndex: rowPinningDisplayMode?.includes("sticky") && isRowPinned ? 2 : 0,
+ ...sx,
+ })}
+ >
+ {virtualPaddingLeft ? | : null}
+ {(virtualColumns ?? visibleCells).map((cellOrVirtualCell, staticColumnIndex) => {
+ let cell = cellOrVirtualCell;
+ if (columnVirtualizer) {
+ staticColumnIndex = cellOrVirtualCell.index;
+ cell = visibleCells[staticColumnIndex];
+ }
+ const props = {
+ cell,
+ numRows,
+ rowRef,
+ staticColumnIndex,
+ staticRowIndex,
+ table,
+ };
+ return cell ? (
+ memoMode === "cells" &&
+ cell.column.columnDef.columnDefType === "data" &&
+ !draggingColumn &&
+ !draggingRow &&
+ editingCell?.id !== cell.id &&
+ editingRow?.id !== row.id ? (
+
+ ) : (
+
+ )
+ ) : null;
+ })}
+ {virtualPaddingRight ? | : null}
+
+ {renderDetailPanel && !row.getIsGrouped() && (
+
+ )}
+ >
+ );
};
export default DataTable_TableBodyRow;
export const Memo_DataTable_TableBodyRow = memo(
- DataTable_TableBodyRow,
- (prev, next) =>
- prev.row === next.row && prev.staticRowIndex === next.staticRowIndex,
+ DataTable_TableBodyRow,
+ (prev, next) => prev.row === next.row && prev.staticRowIndex === next.staticRowIndex
);
diff --git a/src/core/components/DataTable/body/TableDetailPanel.js b/src/core/components/DataTable/body/TableDetailPanel.js
index b997947..853aab5 100644
--- a/src/core/components/DataTable/body/TableDetailPanel.js
+++ b/src/core/components/DataTable/body/TableDetailPanel.js
@@ -2,90 +2,86 @@ import { parseFromValuesOrFunc } from "@/core/utils/utils";
import { Collapse, TableCell, TableRow } from "@mui/material";
const DataTable_TableDetailPanel = ({
- parentRowRef,
- row,
- rowVirtualizer,
- staticRowIndex,
- table,
- virtualRow,
- ...rest
-}) => {
- const {
- getState,
- getVisibleLeafColumns,
- options: {
- layoutMode,
- mrtTheme: { baseBackgroundColor },
- muiDetailPanelProps,
- muiTableBodyRowProps,
- renderDetailPanel,
- },
- } = table;
- const { isLoading } = getState();
-
- const tableRowProps = parseFromValuesOrFunc(muiTableBodyRowProps, {
- isDetailPanel: true,
+ parentRowRef,
row,
+ rowVirtualizer,
staticRowIndex,
table,
- });
+ virtualRow,
+ ...rest
+}) => {
+ const {
+ getState,
+ getVisibleLeafColumns,
+ options: {
+ layoutMode,
+ mrtTheme: { baseBackgroundColor },
+ muiDetailPanelProps,
+ muiTableBodyRowProps,
+ renderDetailPanel,
+ },
+ } = table;
+ const { isLoading } = getState();
- const tableCellProps = {
- ...parseFromValuesOrFunc(muiDetailPanelProps, {
- row,
- table,
- }),
- ...rest,
- };
+ const tableRowProps = parseFromValuesOrFunc(muiTableBodyRowProps, {
+ isDetailPanel: true,
+ row,
+ staticRowIndex,
+ table,
+ });
- const DetailPanel = !isLoading && renderDetailPanel?.({ row, table });
+ const tableCellProps = {
+ ...parseFromValuesOrFunc(muiDetailPanelProps, {
+ row,
+ table,
+ }),
+ ...rest,
+ };
- return (
- {
- if (node) {
- rowVirtualizer?.measureElement?.(node);
- }
- }}
- {...tableRowProps}
- sx={(theme) => ({
- display: layoutMode?.startsWith("grid") ? "flex" : undefined,
- position: virtualRow ? "absolute" : undefined,
- top: virtualRow
- ? `${parentRowRef.current?.getBoundingClientRect()?.height}px`
- : undefined,
- transform: virtualRow
- ? `translateY(${virtualRow?.start}px)`
- : undefined,
- width: "100%",
- ...parseFromValuesOrFunc(tableRowProps?.sx, theme),
- })}
- >
- ({
- backgroundColor: virtualRow ? baseBackgroundColor : undefined,
- borderBottom: !row.getIsExpanded() ? "none" : undefined,
- display: layoutMode?.startsWith("grid") ? "flex" : undefined,
- py: !!DetailPanel && row.getIsExpanded() ? "1rem" : 0,
- transition: !virtualRow ? "all 150ms ease-in-out" : undefined,
- width: `100%`,
- ...parseFromValuesOrFunc(tableCellProps?.sx, theme),
- })}
- >
- {virtualRow ? (
- row.getIsExpanded() && DetailPanel
- ) : (
-
- {DetailPanel}
-
- )}
-
-
- );
+ const DetailPanel = !isLoading && renderDetailPanel?.({ row, table });
+
+ return (
+ {
+ if (node) {
+ rowVirtualizer?.measureElement?.(node);
+ }
+ }}
+ {...tableRowProps}
+ sx={(theme) => ({
+ display: layoutMode?.startsWith("grid") ? "flex" : undefined,
+ position: virtualRow ? "absolute" : undefined,
+ top: virtualRow ? `${parentRowRef.current?.getBoundingClientRect()?.height}px` : undefined,
+ transform: virtualRow ? `translateY(${virtualRow?.start}px)` : undefined,
+ width: "100%",
+ ...parseFromValuesOrFunc(tableRowProps?.sx, theme),
+ })}
+ >
+ ({
+ backgroundColor: virtualRow ? baseBackgroundColor : undefined,
+ borderBottom: !row.getIsExpanded() ? "none" : undefined,
+ display: layoutMode?.startsWith("grid") ? "flex" : undefined,
+ py: !!DetailPanel && row.getIsExpanded() ? "1rem" : 0,
+ transition: !virtualRow ? "all 150ms ease-in-out" : undefined,
+ width: `100%`,
+ ...parseFromValuesOrFunc(tableCellProps?.sx, theme),
+ })}
+ >
+ {virtualRow ? (
+ row.getIsExpanded() && DetailPanel
+ ) : (
+
+ {DetailPanel}
+
+ )}
+
+
+ );
};
export default DataTable_TableDetailPanel;
diff --git a/src/core/components/DataTable/buttons/CopyButton.js b/src/core/components/DataTable/buttons/CopyButton.js
index 3e2ac04..c4dfe4b 100644
--- a/src/core/components/DataTable/buttons/CopyButton.js
+++ b/src/core/components/DataTable/buttons/CopyButton.js
@@ -1,74 +1,68 @@
-import {
- getCommonTooltipProps,
- parseFromValuesOrFunc,
-} from "@/core/utils/utils";
+import { getCommonTooltipProps, parseFromValuesOrFunc } from "@/core/utils/utils";
import { Button, Tooltip } from "@mui/material";
import { useState } from "react";
const DataTable_CopyButton = ({ cell, table, ...rest }) => {
- const {
- options: { localization, muiCopyButtonProps },
- } = table;
- const { column, row } = cell;
- const { columnDef } = column;
+ const {
+ options: { localization, muiCopyButtonProps },
+ } = table;
+ const { column, row } = cell;
+ const { columnDef } = column;
- const [copied, setCopied] = useState(false);
+ const [copied, setCopied] = useState(false);
- const handleCopy = (event, text) => {
- event.stopPropagation();
- navigator.clipboard.writeText(text);
- setCopied(true);
- setTimeout(() => setCopied(false), 4000);
- };
+ const handleCopy = (event, text) => {
+ event.stopPropagation();
+ navigator.clipboard.writeText(text);
+ setCopied(true);
+ setTimeout(() => setCopied(false), 4000);
+ };
- const buttonProps = {
- ...parseFromValuesOrFunc(muiCopyButtonProps, {
- cell,
- column,
- row,
- table,
- }),
- ...parseFromValuesOrFunc(columnDef.muiCopyButtonProps, {
- cell,
- column,
- row,
- table,
- }),
- ...rest,
- };
+ const buttonProps = {
+ ...parseFromValuesOrFunc(muiCopyButtonProps, {
+ cell,
+ column,
+ row,
+ table,
+ }),
+ ...parseFromValuesOrFunc(columnDef.muiCopyButtonProps, {
+ cell,
+ column,
+ row,
+ table,
+ }),
+ ...rest,
+ };
- return (
-
-
- );
+ return (
+
+
+ );
};
export default DataTable_CopyButton;
diff --git a/src/core/components/DataTable/buttons/GrabHandleButton.js b/src/core/components/DataTable/buttons/GrabHandleButton.js
index 8435913..2071eed 100644
--- a/src/core/components/DataTable/buttons/GrabHandleButton.js
+++ b/src/core/components/DataTable/buttons/GrabHandleButton.js
@@ -1,52 +1,46 @@
-import {
- getCommonTooltipProps,
- parseFromValuesOrFunc,
-} from "@/core/utils/utils";
+import { getCommonTooltipProps, parseFromValuesOrFunc } from "@/core/utils/utils";
import { IconButton, Tooltip } from "@mui/material";
const DataTable_GrabHandleButton = ({ location, table, ...rest }) => {
- const {
- options: {
- icons: { DragHandleIcon },
- localization,
- },
- } = table;
+ const {
+ options: {
+ icons: { DragHandleIcon },
+ localization,
+ },
+ } = table;
- return (
-
- {
- e.stopPropagation();
- rest?.onClick?.(e);
- }}
- sx={(theme) => ({
- "&:active": {
- cursor: "grabbing",
- },
- "&:hover": {
- backgroundColor: "transparent",
- opacity: 1,
- },
- cursor: "grab",
- m: "0 -0.1rem",
- opacity: location === "row" ? 1 : 0.5,
- p: "2px",
- transition: "all 150ms ease-in-out",
- ...parseFromValuesOrFunc(rest?.sx, theme),
- })}
- title={undefined}
- >
-
-
-
- );
+ return (
+
+ {
+ e.stopPropagation();
+ rest?.onClick?.(e);
+ }}
+ sx={(theme) => ({
+ "&:active": {
+ cursor: "grabbing",
+ },
+ "&:hover": {
+ backgroundColor: "transparent",
+ opacity: 1,
+ },
+ cursor: "grab",
+ m: "0 -0.1rem",
+ opacity: location === "row" ? 1 : 0.5,
+ p: "2px",
+ transition: "all 150ms ease-in-out",
+ ...parseFromValuesOrFunc(rest?.sx, theme),
+ })}
+ title={undefined}
+ >
+
+
+
+ );
};
export default DataTable_GrabHandleButton;
diff --git a/src/core/components/DataTable/buttons/ToggleFiltersButton.js b/src/core/components/DataTable/buttons/ToggleFiltersButton.js
index a37dec0..6298223 100644
--- a/src/core/components/DataTable/buttons/ToggleFiltersButton.js
+++ b/src/core/components/DataTable/buttons/ToggleFiltersButton.js
@@ -1,4 +1,4 @@
const DataTable_ToggleFiltersButton = ({ table, ...rest }) => {
- return <>>;
+ return <>>;
};
export default DataTable_ToggleFiltersButton;
diff --git a/src/core/components/DataTable/filter/FilterBody.jsx b/src/core/components/DataTable/filter/FilterBody.jsx
index 132f8df..9d6fad1 100644
--- a/src/core/components/DataTable/filter/FilterBody.jsx
+++ b/src/core/components/DataTable/filter/FilterBody.jsx
@@ -12,122 +12,121 @@ import ScrollBox from "../../ScrollBox";
import FilterBodyController from "./FilterBodyController";
function FilterBody({ columns, drawerState, setDrawerState }) {
- const { filterData, setFilterData } = useDataTable();
- const [validationSchema, setValidationSchema] = useState(Yup.object({}));
+ const { filterData, setFilterData } = useDataTable();
+ const [validationSchema, setValidationSchema] = useState(Yup.object({}));
- console.log(filterData);
+ console.log(filterData);
- useEffect(() => {
- const schema = Yup.object(
- Object.keys(filterData).reduce((acc, key) => {
- const initialValue = filterData[key];
- if (initialValue.filterMode === "between") {
- acc[key] = Yup.object().shape({
- value: Yup.array()
- .of(Yup.string().nullable())
- .test({
- test(value, ctx) {
- const [start, end] = value || ["", ""];
- if (
- initialValue.datatype === "numeric" &&
- parseInt(end, 10) <= parseInt(start, 10)
- ) {
- return ctx.createError({
- message: `مقدار وارده باید بیشتر از (${start}) باشد`,
+ useEffect(() => {
+ const schema = Yup.object(
+ Object.keys(filterData).reduce((acc, key) => {
+ const initialValue = filterData[key];
+ if (initialValue.filterMode === "between") {
+ acc[key] = Yup.object().shape({
+ value: Yup.array()
+ .of(Yup.string().nullable())
+ .test({
+ test(value, ctx) {
+ const [start, end] = value || ["", ""];
+ if (
+ initialValue.datatype === "numeric" &&
+ parseInt(end, 10) <= parseInt(start, 10)
+ ) {
+ return ctx.createError({
+ message: `مقدار وارده باید بیشتر از (${start}) باشد`,
+ });
+ } else if ((start && !end) || (!start && end)) {
+ return ctx.createError({
+ message: "این بخش را تکمیل نمایید",
+ });
+ }
+ return true;
+ },
+ }),
});
- } else if ((start && !end) || (!start && end)) {
- return ctx.createError({
- message: "این بخش را تکمیل نمایید",
- });
- }
- return true;
- },
- }),
- });
- }
- return acc;
- }, {}),
+ }
+ return acc;
+ }, {})
+ );
+
+ setValidationSchema(schema);
+ }, [filterData]);
+
+ const {
+ handleSubmit,
+ control,
+ reset,
+ formState: { errors, isDirty, isValid },
+ } = useForm({
+ defaultValues: filterData,
+ resolver: yupResolver(validationSchema),
+ mode: "all",
+ });
+
+ const onSubmit = (data) => {
+ setDrawerState(false);
+ setFilterData(data);
+ };
+
+ return (
+ <>
+
+ {Object.keys(filterData).length > 0 && (
+
+
+
+ )}
+ >
);
-
- setValidationSchema(schema);
- }, [filterData]);
-
- const {
- handleSubmit,
- control,
- reset,
- formState: { errors, isDirty, isValid },
- } = useForm({
- defaultValues: filterData,
- resolver: yupResolver(validationSchema),
- mode: "all",
- });
-
- const onSubmit = (data) => {
- setDrawerState(false);
- setFilterData(data);
- };
-
- return (
- <>
-
- {Object.keys(filterData).length > 0 && (
-
-
-
- )}
- >
- );
}
export default FilterBody;
diff --git a/src/core/components/DataTable/filter/FilterBodyController.jsx b/src/core/components/DataTable/filter/FilterBodyController.jsx
index 201f84d..40ccdf7 100644
--- a/src/core/components/DataTable/filter/FilterBodyController.jsx
+++ b/src/core/components/DataTable/filter/FilterBodyController.jsx
@@ -2,24 +2,24 @@ import { Controller, useWatch } from "react-hook-form";
import FilterBodyField from "./FilterBodyField";
const FilterBodyController = ({ column, control, reset, errors }) => {
- return (
- {
- return (
- reset()}
- errors={errors}
- />
- );
- }}
- />
- );
+ return (
+ {
+ return (
+ reset()}
+ errors={errors}
+ />
+ );
+ }}
+ />
+ );
};
export default FilterBodyController;
diff --git a/src/core/components/DataTable/filter/FilterBodyControllerWithDependency.jsx b/src/core/components/DataTable/filter/FilterBodyControllerWithDependency.jsx
index 285da0a..f531c48 100644
--- a/src/core/components/DataTable/filter/FilterBodyControllerWithDependency.jsx
+++ b/src/core/components/DataTable/filter/FilterBodyControllerWithDependency.jsx
@@ -1,32 +1,27 @@
import { Controller, useWatch } from "react-hook-form";
import FilterBodyField from "./FilterBodyField";
-const FilterBodyControllerWithDependency = ({
- column,
- control,
- reset,
- errors,
-}) => {
- const dependencyField = useWatch({ control, name: column.dependencyId });
+const FilterBodyControllerWithDependency = ({ column, control, reset, errors }) => {
+ const dependencyField = useWatch({ control, name: column.dependencyId });
- return (
- {
- return (
- reset()}
- errors={errors}
- />
- );
- }}
- />
- );
+ return (
+ {
+ return (
+ reset()}
+ errors={errors}
+ />
+ );
+ }}
+ />
+ );
};
export default FilterBodyControllerWithDependency;
diff --git a/src/core/components/DataTable/filter/FilterBodyField.jsx b/src/core/components/DataTable/filter/FilterBodyField.jsx
index 3c9abab..869c354 100644
--- a/src/core/components/DataTable/filter/FilterBodyField.jsx
+++ b/src/core/components/DataTable/filter/FilterBodyField.jsx
@@ -8,98 +8,97 @@ import CustomTextFieldRange from "@/core/components/DataTable/filter/fieldsType/
import { useState } from "react";
const columnFilterModeOptionFa = {
- equals: "برابر",
- notEquals: "نابرابر",
- contains: "شامل",
- lessThan: "کوچکتر",
- greaterThan: "بزرگتر",
- fuzzy: "فازی",
- between: "مابین",
+ equals: "برابر",
+ notEquals: "نابرابر",
+ contains: "شامل",
+ lessThan: "کوچکتر",
+ greaterThan: "بزرگتر",
+ fuzzy: "فازی",
+ between: "مابین",
};
function FilterBodyField({
- column,
- filterParameters,
- handleChange,
- handleBlur,
- dependencyFieldValue,
- setFieldValue,
- resetForm,
- errors,
+ column,
+ filterParameters,
+ handleChange,
+ handleBlur,
+ dependencyFieldValue,
+ setFieldValue,
+ resetForm,
+ errors,
}) {
- const [anchorEl, setAnchorEl] = useState(null);
- const defaultFilterTranslation =
- columnFilterModeOptionFa[filterParameters.filterMode] ||
- filterParameters.filterMode;
+ const [anchorEl, setAnchorEl] = useState(null);
+ const defaultFilterTranslation =
+ columnFilterModeOptionFa[filterParameters.filterMode] || filterParameters.filterMode;
- const handleOpenFilterBox = (event) => {
- setAnchorEl(event.currentTarget);
- };
-
- const renderField = () => {
- const commonProps = {
- column,
- filterParameters,
- defaultFilterTranslation,
- handleOpenFilterBox,
- dependencyFieldValue,
- setFieldValue,
- handleChange,
- handleBlur,
- errors,
+ const handleOpenFilterBox = (event) => {
+ setAnchorEl(event.currentTarget);
};
- switch (filterParameters.datatype) {
- case "numeric":
- if (filterParameters.filterMode === "between") {
- return ;
- }
- if (filterParameters.filterMode === "equals") {
- return column.ColumnSelectComponent ? (
-
- ) : (
-
- );
- }
- break;
- case "date":
- if (filterParameters.filterMode === "equals") {
- return ;
- }
- if (filterParameters.filterMode === "between") {
- return ;
- }
- break;
+ const renderField = () => {
+ const commonProps = {
+ column,
+ filterParameters,
+ defaultFilterTranslation,
+ handleOpenFilterBox,
+ dependencyFieldValue,
+ setFieldValue,
+ handleChange,
+ handleBlur,
+ errors,
+ };
- case "array":
- if (filterParameters.filterMode === "equals") {
- return ;
+ switch (filterParameters.datatype) {
+ case "numeric":
+ if (filterParameters.filterMode === "between") {
+ return ;
+ }
+ if (filterParameters.filterMode === "equals") {
+ return column.ColumnSelectComponent ? (
+
+ ) : (
+
+ );
+ }
+ break;
+ case "date":
+ if (filterParameters.filterMode === "equals") {
+ return ;
+ }
+ if (filterParameters.filterMode === "between") {
+ return ;
+ }
+ break;
+
+ case "array":
+ if (filterParameters.filterMode === "equals") {
+ return ;
+ }
+ break;
+
+ default:
+ return ;
}
- break;
+ };
- default:
- return ;
- }
- };
-
- return (
- <>
- {renderField()}
- {Array.isArray(column.columnFilterModeOptions) && (
-
- )}
- >
- );
+ return (
+ <>
+ {renderField()}
+ {Array.isArray(column.columnFilterModeOptions) && (
+
+ )}
+ >
+ );
}
export default FilterBodyField;
diff --git a/src/core/components/DataTable/filter/FilterButton.jsx b/src/core/components/DataTable/filter/FilterButton.jsx
index e8c1d85..79cc879 100644
--- a/src/core/components/DataTable/filter/FilterButton.jsx
+++ b/src/core/components/DataTable/filter/FilterButton.jsx
@@ -4,36 +4,34 @@ import { IconButton, Tooltip, Badge } from "@mui/material";
import useDataTable from "@/lib/hooks/useDataTable";
function FilterButton({ drawerState, setDrawerState }) {
- const { filterData } = useDataTable();
- const isValueEmpty = (value) => {
- if (Array.isArray(value)) {
- return value.length === 0 || value.every((v) => v === "");
- }
- return value === "" || value === null || value === undefined;
- };
- const filteredFilterData = Object.values(filterData).filter(
- (filter) => !isValueEmpty(filter.value),
- );
- return (
-
- {
- setDrawerState(!drawerState);
- }}
- aria-label="filter table"
- >
-
-
-
-
-
- );
+ const { filterData } = useDataTable();
+ const isValueEmpty = (value) => {
+ if (Array.isArray(value)) {
+ return value.length === 0 || value.every((v) => v === "");
+ }
+ return value === "" || value === null || value === undefined;
+ };
+ const filteredFilterData = Object.values(filterData).filter((filter) => !isValueEmpty(filter.value));
+ return (
+
+ {
+ setDrawerState(!drawerState);
+ }}
+ aria-label="filter table"
+ >
+
+
+
+
+
+ );
}
export default FilterButton;
diff --git a/src/core/components/DataTable/filter/FilterCustom.jsx b/src/core/components/DataTable/filter/FilterCustom.jsx
index 04a2cd1..a8e4e1e 100644
--- a/src/core/components/DataTable/filter/FilterCustom.jsx
+++ b/src/core/components/DataTable/filter/FilterCustom.jsx
@@ -4,35 +4,35 @@ import { Box, Drawer } from "@mui/material";
import FilterDrawer from "../../FilterDrawer";
const FilterCustom = ({ filterData, setFilterData }) => {
- const [open, setOpen] = useState(false);
+ const [open, setOpen] = useState(false);
- const closeDrawer = useCallback(() => setOpen(false), []);
+ const closeDrawer = useCallback(() => setOpen(false), []);
- return (
- <>
-
- setOpen(false)}
- sx={{
- overflowY: "hidden",
- display: "flex",
- flexDirection: "column",
- height: "100%",
- zIndex: "1300",
- }}
- >
-
- {open && (
-
- )}
-
-
- >
- );
+ return (
+ <>
+
+ setOpen(false)}
+ sx={{
+ overflowY: "hidden",
+ display: "flex",
+ flexDirection: "column",
+ height: "100%",
+ zIndex: "1300",
+ }}
+ >
+
+ {open && (
+
+ )}
+
+
+ >
+ );
};
export default FilterCustom;
diff --git a/src/core/components/DataTable/filter/FilterHeader.jsx b/src/core/components/DataTable/filter/FilterHeader.jsx
index 6a0572d..1aac54e 100644
--- a/src/core/components/DataTable/filter/FilterHeader.jsx
+++ b/src/core/components/DataTable/filter/FilterHeader.jsx
@@ -5,31 +5,30 @@ import FilterAltIcon from "@mui/icons-material/FilterAlt";
import { Box, IconButton, Typography } from "@mui/material";
function FilterHeader({ setDrawerState }) {
- return (
- theme.palette.primary.main,
- boxShadow:
- "rgba(0, 0, 0, 0.19) 0px 10px 20px, rgba(0, 0, 0, 0.23) 0px 6px 6px",
- maxWidth: "450px",
- }}
- >
-
-
-
- فیلتر
-
-
- setDrawerState(false)}>
-
-
-
- );
+ return (
+ theme.palette.primary.main,
+ boxShadow: "rgba(0, 0, 0, 0.19) 0px 10px 20px, rgba(0, 0, 0, 0.23) 0px 6px 6px",
+ maxWidth: "450px",
+ }}
+ >
+
+
+
+ فیلتر
+
+
+ setDrawerState(false)}>
+
+
+
+ );
}
export default FilterHeader;
diff --git a/src/core/components/DataTable/filter/FilterOptionList.jsx b/src/core/components/DataTable/filter/FilterOptionList.jsx
index 205b25b..517d1f2 100644
--- a/src/core/components/DataTable/filter/FilterOptionList.jsx
+++ b/src/core/components/DataTable/filter/FilterOptionList.jsx
@@ -4,55 +4,49 @@ import { ListItem, Menu } from "@mui/material";
import { useState } from "react";
function FilterOptionList({
- filterType,
- filterOption,
- filterParameters,
- anchorEl,
- columnFilterModeOptionFa,
- setAnchorEl,
- handleChange,
+ filterType,
+ filterOption,
+ filterParameters,
+ anchorEl,
+ columnFilterModeOptionFa,
+ setAnchorEl,
+ handleChange,
}) {
- const [selectedFilter, setSelectedFilter] = useState(filterType);
+ const [selectedFilter, setSelectedFilter] = useState(filterType);
- const handleChangeItem = (event, index) => {
- handleChange({
- ...filterParameters,
- value: filterOption[index] === "between" ? ["", ""] : "",
- filterMode: filterOption[index],
- });
- setSelectedFilter(filterOption[index]);
- setAnchorEl(null);
- };
+ const handleChangeItem = (event, index) => {
+ handleChange({
+ ...filterParameters,
+ value: filterOption[index] === "between" ? ["", ""] : "",
+ filterMode: filterOption[index],
+ });
+ setSelectedFilter(filterOption[index]);
+ setAnchorEl(null);
+ };
- const handleCloseFilterBox = () => {
- setAnchorEl(null);
- };
+ const handleCloseFilterBox = () => {
+ setAnchorEl(null);
+ };
- return (
-
- );
+ return (
+
+ );
}
export default FilterOptionList;
diff --git a/src/core/components/DataTable/filter/fieldsType/CustomDate/CustomDatePicker.jsx b/src/core/components/DataTable/filter/fieldsType/CustomDate/CustomDatePicker.jsx
index 85e2b08..5666a43 100644
--- a/src/core/components/DataTable/filter/fieldsType/CustomDate/CustomDatePicker.jsx
+++ b/src/core/components/DataTable/filter/fieldsType/CustomDate/CustomDatePicker.jsx
@@ -2,30 +2,22 @@ import React from "react";
import MuiDatePicker from "@/core/components/DataTable/filter/fieldsType/CustomDate/MuiDatePicker";
import { Typography } from "@mui/material";
-function CustomDatePicker({
- column,
- filterParameters,
- defaultFilterTranslation,
- handleChange,
-}) {
- return (
- {
- handleChange({ ...filterParameters, value: formattedDate });
- }}
- placeholder={column.header}
- helperText={
- theme.palette.primary.main }}
- >
- نوع فیلتر: {defaultFilterTranslation} (تاریخ)
-
- }
- />
- );
+function CustomDatePicker({ column, filterParameters, defaultFilterTranslation, handleChange }) {
+ return (
+ {
+ handleChange({ ...filterParameters, value: formattedDate });
+ }}
+ placeholder={column.header}
+ helperText={
+ theme.palette.primary.main }}>
+ نوع فیلتر: {defaultFilterTranslation} (تاریخ)
+
+ }
+ />
+ );
}
export default CustomDatePicker;
diff --git a/src/core/components/DataTable/filter/fieldsType/CustomDate/CustomDatePickerRange.jsx b/src/core/components/DataTable/filter/fieldsType/CustomDate/CustomDatePickerRange.jsx
index 3b47437..36404b9 100644
--- a/src/core/components/DataTable/filter/fieldsType/CustomDate/CustomDatePickerRange.jsx
+++ b/src/core/components/DataTable/filter/fieldsType/CustomDate/CustomDatePickerRange.jsx
@@ -4,57 +4,44 @@ import React from "react";
import { Box, Typography } from "@mui/material";
import MuiDatePicker from "@/core/components/DataTable/filter/fieldsType/CustomDate/MuiDatePicker";
-function CustomDatePickerRange({
- column,
- filterParameters,
- defaultFilterTranslation,
- handleChange,
- errors,
-}) {
- return (
-
- {
- handleChange({
- ...filterParameters,
- value: [formattedDate, filterParameters.value[1]],
- });
- }}
- maxDate={filterParameters.value[1]}
- placeholder={`از تاریخ`}
- helperText={
- theme.palette.primary.main }}
- >
- نوع فیلتر: {defaultFilterTranslation} (تاریخ)
-
- }
- />
- {
- handleChange({
- ...filterParameters,
- value: [filterParameters.value[0], formattedDate],
- });
- }}
- minDate={filterParameters.value[0]}
- placeholder={`تا تاریخ`}
- helperText={
- errors?.[`${column.id}`]?.value
- ? errors?.[`${column.id}`]?.value.message
- : null
- }
- error={Boolean(errors?.[`${column.id}`]?.value)}
- />
-
- );
+function CustomDatePickerRange({ column, filterParameters, defaultFilterTranslation, handleChange, errors }) {
+ return (
+
+ {
+ handleChange({
+ ...filterParameters,
+ value: [formattedDate, filterParameters.value[1]],
+ });
+ }}
+ maxDate={filterParameters.value[1]}
+ placeholder={`از تاریخ`}
+ helperText={
+ theme.palette.primary.main }}>
+ نوع فیلتر: {defaultFilterTranslation} (تاریخ)
+
+ }
+ />
+ {
+ handleChange({
+ ...filterParameters,
+ value: [filterParameters.value[0], formattedDate],
+ });
+ }}
+ minDate={filterParameters.value[0]}
+ placeholder={`تا تاریخ`}
+ helperText={errors?.[`${column.id}`]?.value ? errors?.[`${column.id}`]?.value.message : null}
+ error={Boolean(errors?.[`${column.id}`]?.value)}
+ />
+
+ );
}
export default CustomDatePickerRange;
diff --git a/src/core/components/DataTable/filter/fieldsType/CustomDate/MuiDatePicker.jsx b/src/core/components/DataTable/filter/fieldsType/CustomDate/MuiDatePicker.jsx
index f98e929..d2d9df0 100644
--- a/src/core/components/DataTable/filter/fieldsType/CustomDate/MuiDatePicker.jsx
+++ b/src/core/components/DataTable/filter/fieldsType/CustomDate/MuiDatePicker.jsx
@@ -6,81 +6,67 @@ import { Box, FormHelperText, IconButton, InputAdornment } from "@mui/material";
import ClearIcon from "@mui/icons-material/Clear";
import moment from "jalali-moment";
-function MuiDatePicker({
- label,
- value,
- setFieldValue,
- name,
- minDate,
- maxDate,
- helperText,
- placeholder,
- error,
-}) {
- return (
-
-
- {
- const date = new Date(value);
- const formattedDate = moment(date)
- .locale("en")
- .format("YYYY-MM-DD");
- setFieldValue(name, formattedDate);
- }}
- minDate={minDate ? new Date(minDate) : null}
- maxDate={maxDate ? new Date(maxDate) : null}
- slotProps={{
- textField: {
- size: "small",
- error: error,
- placeholder: placeholder,
- InputProps: {
- endAdornment: (
-
- {
- event.stopPropagation();
- setFieldValue(name, "");
- }}
- sx={{
- color: "#bfbfbf",
- "&:hover": {
- backgroundColor: "rgba(189, 189, 189, 0.1)",
- color: "#363434",
+function MuiDatePicker({ label, value, setFieldValue, name, minDate, maxDate, helperText, placeholder, error }) {
+ return (
+
+
+ {
+ const date = new Date(value);
+ const formattedDate = moment(date).locale("en").format("YYYY-MM-DD");
+ setFieldValue(name, formattedDate);
+ }}
+ minDate={minDate ? new Date(minDate) : null}
+ maxDate={maxDate ? new Date(maxDate) : null}
+ slotProps={{
+ textField: {
+ size: "small",
+ error: error,
+ placeholder: placeholder,
+ InputProps: {
+ endAdornment: (
+
+ {
+ event.stopPropagation();
+ setFieldValue(name, "");
+ }}
+ sx={{
+ color: "#bfbfbf",
+ "&:hover": {
+ backgroundColor: "rgba(189, 189, 189, 0.1)",
+ color: "#363434",
+ },
+ }}
+ >
+
+
+
+ ),
+ },
+ InputLabelProps: {
+ shrink: true,
+ },
},
- }}
- >
-
-
-
- ),
- },
- InputLabelProps: {
- shrink: true,
- },
- },
- }}
- />
- {/*
+ }}
+ />
+ {/*
{helperText ? helperText : ""}
*/}
-
-
- );
+
+
+ );
}
export default MuiDatePicker;
diff --git a/src/core/components/DataTable/filter/fieldsType/CustomSelect.jsx b/src/core/components/DataTable/filter/fieldsType/CustomSelect.jsx
index c1e5821..f008c5e 100644
--- a/src/core/components/DataTable/filter/fieldsType/CustomSelect.jsx
+++ b/src/core/components/DataTable/filter/fieldsType/CustomSelect.jsx
@@ -1,38 +1,30 @@
"use client";
-import {
- FormControl,
- InputLabel,
- MenuItem,
- OutlinedInput,
- Select,
-} from "@mui/material";
+import { FormControl, InputLabel, MenuItem, OutlinedInput, Select } from "@mui/material";
function CustomSelect({ column, filterParameters, handleChange }) {
- return (
-
-
- {column.header}
-
- }
- size="small"
- onChange={(e) =>
- handleChange({ ...filterParameters, value: e.target.value })
- }
- displayEmpty
- >
- {column.columnSelectOption().map((option) => (
-
- ))}
-
-
- );
+ return (
+
+
+ {column.header}
+
+ }
+ size="small"
+ onChange={(e) => handleChange({ ...filterParameters, value: e.target.value })}
+ displayEmpty
+ >
+ {column.columnSelectOption().map((option) => (
+
+ ))}
+
+
+ );
}
export default CustomSelect;
diff --git a/src/core/components/DataTable/filter/fieldsType/CustomSelectByDependency.jsx b/src/core/components/DataTable/filter/fieldsType/CustomSelectByDependency.jsx
index 4e828c3..0501dbb 100644
--- a/src/core/components/DataTable/filter/fieldsType/CustomSelectByDependency.jsx
+++ b/src/core/components/DataTable/filter/fieldsType/CustomSelectByDependency.jsx
@@ -1,49 +1,39 @@
"use client";
-import {
- FormControl,
- FormHelperText,
- InputLabel,
- MenuItem,
- OutlinedInput,
- Select,
- Typography,
-} from "@mui/material";
+import { FormControl, FormHelperText, InputLabel, MenuItem, OutlinedInput, Select, Typography } from "@mui/material";
import { useCallback, useEffect } from "react";
function CustomSelectByDependency({
- column,
- filterParameters,
- value,
- defaultFilterTranslation,
- handleChange,
- columnSelectOption,
+ column,
+ filterParameters,
+ value,
+ defaultFilterTranslation,
+ handleChange,
+ columnSelectOption,
}) {
- return (
-
-
- {column.header}
-
- }
- onChange={(e) =>
- handleChange({ ...filterParameters, value: e.target.value })
- }
- displayEmpty
- >
- {columnSelectOption.map((option) => (
-
- ))}
-
-
- );
+ return (
+
+
+ {column.header}
+
+ }
+ onChange={(e) => handleChange({ ...filterParameters, value: e.target.value })}
+ displayEmpty
+ >
+ {columnSelectOption.map((option) => (
+
+ ))}
+
+
+ );
}
export default CustomSelectByDependency;
diff --git a/src/core/components/DataTable/filter/fieldsType/CustomSelectMultiple.jsx b/src/core/components/DataTable/filter/fieldsType/CustomSelectMultiple.jsx
index 19843f5..424ab4c 100644
--- a/src/core/components/DataTable/filter/fieldsType/CustomSelectMultiple.jsx
+++ b/src/core/components/DataTable/filter/fieldsType/CustomSelectMultiple.jsx
@@ -1,62 +1,55 @@
"use client";
import {
- Box,
- Chip,
- FormControl,
- FormHelperText,
- InputLabel,
- MenuItem,
- OutlinedInput,
- Select,
- Typography,
+ Box,
+ Chip,
+ FormControl,
+ FormHelperText,
+ InputLabel,
+ MenuItem,
+ OutlinedInput,
+ Select,
+ Typography,
} from "@mui/material";
-function CustomSelectMultiple({
- column,
- filterParameters,
- defaultFilterTranslation,
- handleChange,
-}) {
- const columnSelectOption = column.columnSelectOption;
+function CustomSelectMultiple({ column, filterParameters, defaultFilterTranslation, handleChange }) {
+ const columnSelectOption = column.columnSelectOption;
- const getLabelForValue = (value) => {
- const option = columnSelectOption.find((opt) => opt.value === value);
- return option ? option.label : value;
- };
+ const getLabelForValue = (value) => {
+ const option = columnSelectOption.find((opt) => opt.value === value);
+ return option ? option.label : value;
+ };
- return (
-
-
- {column.header}
-
-
-
- );
+ return (
+
+
+ {column.header}
+
+
+
+ );
}
export default CustomSelectMultiple;
diff --git a/src/core/components/DataTable/filter/fieldsType/CustomTextField.jsx b/src/core/components/DataTable/filter/fieldsType/CustomTextField.jsx
index be54a9f..c6555f2 100644
--- a/src/core/components/DataTable/filter/fieldsType/CustomTextField.jsx
+++ b/src/core/components/DataTable/filter/fieldsType/CustomTextField.jsx
@@ -2,41 +2,35 @@ import { InputAdornment, TextField, Typography } from "@mui/material";
import FilterListIcon from "@mui/icons-material/FilterList";
function CustomTextField({
- column,
- defaultFilterTranslation,
- filterParameters,
- handleOpenFilterBox,
- handleBlur,
- handleChange,
+ column,
+ defaultFilterTranslation,
+ filterParameters,
+ handleOpenFilterBox,
+ handleBlur,
+ handleChange,
}) {
- return (
-
- handleChange({ ...filterParameters, value: e.target.value })
- }
- onBlur={handleBlur}
- fullWidth
- variant="outlined"
- size="small"
- sx={{ my: 1 }}
- InputProps={{
- endAdornment: (
-
-
-
- ),
- }}
- InputLabelProps={{ shrink: true }}
- />
- );
+ return (
+ handleChange({ ...filterParameters, value: e.target.value })}
+ onBlur={handleBlur}
+ fullWidth
+ variant="outlined"
+ size="small"
+ sx={{ my: 1 }}
+ InputProps={{
+ endAdornment: (
+
+
+
+ ),
+ }}
+ InputLabelProps={{ shrink: true }}
+ />
+ );
}
export default CustomTextField;
diff --git a/src/core/components/DataTable/filter/fieldsType/CustomTextFieldRange.jsx b/src/core/components/DataTable/filter/fieldsType/CustomTextFieldRange.jsx
index fc55634..0e434ec 100644
--- a/src/core/components/DataTable/filter/fieldsType/CustomTextFieldRange.jsx
+++ b/src/core/components/DataTable/filter/fieldsType/CustomTextFieldRange.jsx
@@ -2,84 +2,73 @@ import { Box, InputAdornment, TextField, Typography } from "@mui/material";
import FilterListIcon from "@mui/icons-material/FilterList";
function CustomTextFieldRange({
- column,
- defaultFilterTranslation,
- handleOpenFilterBox,
- handleChange,
- filterParameters,
- handleBlur,
- errors,
+ column,
+ defaultFilterTranslation,
+ handleOpenFilterBox,
+ handleChange,
+ filterParameters,
+ handleBlur,
+ errors,
}) {
- return (
-
-
- handleChange({
- ...filterParameters,
- value: [e.target.value, filterParameters.value[1]],
- })
- }
- onBlur={handleBlur}
- label={از {column.header}}
- value={filterParameters.value[0]}
- fullWidth
- error={
- touched?.[`${column.id}`]?.value &&
- Boolean(errors?.[`${column.id}`]?.value)
- }
- helperText={
- theme.palette.primary.main,
- fontWeight: "bold",
- }}
- >
- نوع فیلتر: {defaultFilterTranslation}
-
- }
- variant="outlined"
- size="small"
- sx={{ my: 1, marginRight: 1 }}
- />
-
- handleChange({
- ...filterParameters,
- value: [filterParameters.value[0], e.target.value],
- })
- }
- onBlur={handleBlur}
- error={Boolean(errors?.[`${column.id}`]?.value)}
- helperText={
- errors?.[`${column.id}`]?.value
- ? errors?.[`${column.id}`]?.value.message
- : null
- }
- label={تا {column.header}}
- value={filterParameters.value[1]}
- fullWidth
- variant="outlined"
- size="small"
- sx={{ my: 1 }}
- InputProps={{
- endAdornment: (
-
-
-
- ),
- }}
- />
-
- );
+ return (
+
+
+ handleChange({
+ ...filterParameters,
+ value: [e.target.value, filterParameters.value[1]],
+ })
+ }
+ onBlur={handleBlur}
+ label={از {column.header}}
+ value={filterParameters.value[0]}
+ fullWidth
+ error={touched?.[`${column.id}`]?.value && Boolean(errors?.[`${column.id}`]?.value)}
+ helperText={
+ theme.palette.primary.main,
+ fontWeight: "bold",
+ }}
+ >
+ نوع فیلتر: {defaultFilterTranslation}
+
+ }
+ variant="outlined"
+ size="small"
+ sx={{ my: 1, marginRight: 1 }}
+ />
+
+ handleChange({
+ ...filterParameters,
+ value: [filterParameters.value[0], e.target.value],
+ })
+ }
+ onBlur={handleBlur}
+ error={Boolean(errors?.[`${column.id}`]?.value)}
+ helperText={errors?.[`${column.id}`]?.value ? errors?.[`${column.id}`]?.value.message : null}
+ label={تا {column.header}}
+ value={filterParameters.value[1]}
+ fullWidth
+ variant="outlined"
+ size="small"
+ sx={{ my: 1 }}
+ InputProps={{
+ endAdornment: (
+
+
+
+ ),
+ }}
+ />
+
+ );
}
export default CustomTextFieldRange;
diff --git a/src/core/components/DataTable/filter/index.jsx b/src/core/components/DataTable/filter/index.jsx
index a03159d..5dfbb22 100644
--- a/src/core/components/DataTable/filter/index.jsx
+++ b/src/core/components/DataTable/filter/index.jsx
@@ -5,37 +5,37 @@ import FilterBody from "@/core/components/DataTable/filter/FilterBody";
import { Box, Drawer } from "@mui/material";
function FilterColumn({ columns, user_id, page_name, table_name }) {
- const [open, setOpen] = useState(false);
+ const [open, setOpen] = useState(false);
- return (
- <>
-
- setOpen(false)}
- sx={{
- overflowY: "hidden",
- display: "flex",
- flexDirection: "column",
- height: "100%",
- zIndex: "1300",
- }}
- >
-
- {open && (
-
- )}
-
-
- >
- );
+ return (
+ <>
+
+ setOpen(false)}
+ sx={{
+ overflowY: "hidden",
+ display: "flex",
+ flexDirection: "column",
+ height: "100%",
+ zIndex: "1300",
+ }}
+ >
+
+ {open && (
+
+ )}
+
+
+ >
+ );
}
export default FilterColumn;
diff --git a/src/core/components/DataTable/head/TableHead.js b/src/core/components/DataTable/head/TableHead.js
index 828cc48..39ee214 100644
--- a/src/core/components/DataTable/head/TableHead.js
+++ b/src/core/components/DataTable/head/TableHead.js
@@ -3,54 +3,49 @@ import { TableHead } from "@mui/material";
import DataTable_TableHeadRow from "./TableHeadRow";
const DataTable_TableHead = ({ columnVirtualizer, table, ...rest }) => {
- const {
- getState,
- options: {
- enableStickyHeader,
- layoutMode,
- muiTableHeadProps,
- positionToolbarAlertBanner,
- },
- refs: { tableHeadRef },
- } = table;
- const { isFullScreen, showAlertBanner } = getState();
+ const {
+ getState,
+ options: { enableStickyHeader, layoutMode, muiTableHeadProps, positionToolbarAlertBanner },
+ refs: { tableHeadRef },
+ } = table;
+ const { isFullScreen, showAlertBanner } = getState();
- const tableHeadProps = {
- ...parseFromValuesOrFunc(muiTableHeadProps, { table }),
- ...rest,
- };
+ const tableHeadProps = {
+ ...parseFromValuesOrFunc(muiTableHeadProps, { table }),
+ ...rest,
+ };
- const stickyHeader = enableStickyHeader || isFullScreen;
+ const stickyHeader = enableStickyHeader || isFullScreen;
- return (
- {
- tableHeadRef.current = ref;
- if (tableHeadProps?.ref) {
- // @ts-ignore
- tableHeadProps.ref.current = ref;
- }
- }}
- sx={(theme) => ({
- display: layoutMode?.startsWith("grid") ? "grid" : undefined,
- opacity: 0.97,
- position: stickyHeader ? "sticky" : "relative",
- top: stickyHeader && layoutMode?.startsWith("grid") ? 0 : undefined,
- zIndex: stickyHeader ? 2 : undefined,
- ...parseFromValuesOrFunc(tableHeadProps?.sx, theme),
- })}
- >
- {table.getHeaderGroups().map((headerGroup, index) => (
-
- ))}
-
- );
+ return (
+ {
+ tableHeadRef.current = ref;
+ if (tableHeadProps?.ref) {
+ // @ts-ignore
+ tableHeadProps.ref.current = ref;
+ }
+ }}
+ sx={(theme) => ({
+ display: layoutMode?.startsWith("grid") ? "grid" : undefined,
+ opacity: 0.97,
+ position: stickyHeader ? "sticky" : "relative",
+ top: stickyHeader && layoutMode?.startsWith("grid") ? 0 : undefined,
+ zIndex: stickyHeader ? 2 : undefined,
+ ...parseFromValuesOrFunc(tableHeadProps?.sx, theme),
+ })}
+ >
+ {table.getHeaderGroups().map((headerGroup, index) => (
+
+ ))}
+
+ );
};
export default DataTable_TableHead;
diff --git a/src/core/components/DataTable/head/TableHeadCell.js b/src/core/components/DataTable/head/TableHeadCell.js
index febf64c..631a122 100644
--- a/src/core/components/DataTable/head/TableHeadCell.js
+++ b/src/core/components/DataTable/head/TableHeadCell.js
@@ -1,290 +1,244 @@
-import {
- getCommonMRTCellStyles,
- parseFromValuesOrFunc,
-} from "@/core/utils/utils";
+import { getCommonMRTCellStyles, parseFromValuesOrFunc } from "@/core/utils/utils";
import { useTheme } from "@emotion/react";
import { Box, TableCell } from "@mui/material";
import { MRT_TableHeadCellSortLabel } from "material-react-table";
import { useMemo } from "react";
-const DataTable_TableHeadCell = ({
- columnVirtualizer,
- header,
- staticColumnIndex,
- backgroundColor,
- table,
- ...rest
-}) => {
- const theme = useTheme();
- const {
- getState,
- options: {
- columnResizeDirection,
- columnResizeMode,
- enableColumnActions,
- enableColumnDragging,
- enableColumnOrdering,
- enableColumnPinning,
- enableGrouping,
- enableMultiSort,
- layoutMode,
- mrtTheme: { draggingBorderColor },
- muiTableHeadCellProps,
- },
- refs: { tableHeadCellRefs },
- setHoveredColumn,
- } = table;
- const {
- columnSizingInfo,
- density,
- draggingColumn,
- grouping,
- hoveredColumn,
- showColumnFilters,
- } = getState();
- const { column } = header;
- const { columnDef } = column;
- const { columnDefType } = columnDef;
-
- const tableCellProps = {
- ...parseFromValuesOrFunc(muiTableHeadCellProps, { column, table }),
- ...parseFromValuesOrFunc(columnDef.muiTableHeadCellProps, {
- column,
- table,
- }),
- ...rest,
- };
-
- const isColumnPinned =
- enableColumnPinning &&
- columnDef.columnDefType !== "group" &&
- column.getIsPinned();
-
- const showColumnActions =
- (enableColumnActions || columnDef.enableColumnActions) &&
- columnDef.enableColumnActions !== false;
-
- const showDragHandle =
- enableColumnDragging !== false &&
- columnDef.enableColumnDragging !== false &&
- (enableColumnDragging ||
- (enableColumnOrdering && columnDef.enableColumnOrdering !== false) ||
- (enableGrouping &&
- columnDef.enableGrouping !== false &&
- !grouping.includes(column.id)));
-
- const headerPL = useMemo(() => {
- let pl = 0;
- if (column.getCanSort()) pl += 1;
- if (showColumnActions) pl += 1.75;
- if (showDragHandle) pl += 1.5;
- return pl;
- }, [showColumnActions, showDragHandle]);
-
- const draggingBorders = useMemo(() => {
- const showResizeBorder =
- columnSizingInfo.isResizingColumn === column.id &&
- columnResizeMode === "onChange" &&
- !header.subHeaders.length;
-
- const borderStyle = showResizeBorder
- ? `2px solid ${draggingBorderColor} !important`
- : draggingColumn?.id === column.id
- ? `1px dashed ${theme.palette.grey[500]}`
- : hoveredColumn?.id === column.id
- ? `2px dashed ${draggingBorderColor}`
- : undefined;
-
- if (showResizeBorder) {
- return columnResizeDirection === "ltr"
- ? { borderRight: borderStyle }
- : { borderLeft: borderStyle };
- }
- const draggingBorders = borderStyle
- ? {
- borderLeft: borderStyle,
- borderRight: borderStyle,
- borderTop: borderStyle,
- }
- : undefined;
-
- return draggingBorders;
- }, [draggingColumn, hoveredColumn, columnSizingInfo.isResizingColumn]);
-
- const handleDragEnter = (_e) => {
- if (enableGrouping && hoveredColumn?.id === "drop-zone") {
- setHoveredColumn(null);
- }
- if (enableColumnOrdering && draggingColumn && columnDefType !== "group") {
- setHoveredColumn(
- columnDef.enableColumnOrdering !== false ? column : null,
- );
- }
- };
-
- const handleDragOver = (e) => {
- if (columnDef.enableColumnOrdering !== false) {
- e.preventDefault();
- }
- };
-
- const HeaderElement =
- parseFromValuesOrFunc(columnDef.Header, {
- column,
- header,
- table,
- }) ?? columnDef.header;
-
- const columnRelativeDepth = header.depth - column.depth;
-
- if (columnRelativeDepth > 1) {
- return null;
- }
-
- let rowSpan = 1;
- if (header.isPlaceholder) {
- const leafs = header.getLeafHeaders();
- rowSpan = leafs[leafs.length - 1].depth - header.depth;
- }
-
- return (
- {
- if (node) {
- tableHeadCellRefs.current[column.id] = node;
- if (columnDefType !== "group") {
- columnVirtualizer?.measureElement?.(node);
- }
- }
- }}
- {...tableCellProps}
- sx={(theme) => ({
- "& :hover": {
- ".MuiButtonBase-root": {
- opacity: 1,
- },
+const DataTable_TableHeadCell = ({ columnVirtualizer, header, staticColumnIndex, backgroundColor, table, ...rest }) => {
+ const theme = useTheme();
+ const {
+ getState,
+ options: {
+ columnResizeDirection,
+ columnResizeMode,
+ enableColumnActions,
+ enableColumnDragging,
+ enableColumnOrdering,
+ enableColumnPinning,
+ enableGrouping,
+ enableMultiSort,
+ layoutMode,
+ mrtTheme: { draggingBorderColor },
+ muiTableHeadCellProps,
},
- flexDirection: layoutMode?.startsWith("grid") ? "column" : undefined,
- fontWeight: "bold",
- overflow: "visible",
- p:
- density === "compact"
- ? "0.5rem"
- : density === "comfortable"
- ? columnDefType === "display"
- ? "0.75rem"
- : "1rem"
- : columnDefType === "display"
- ? "1rem 1.25rem"
- : "1.5rem",
- pb:
- columnDefType === "display"
- ? 0
- : showColumnFilters || density === "compact"
- ? "0.4rem"
- : "0.6rem",
- pt:
- columnDefType === "group" || density === "compact"
- ? "0.25rem"
- : density === "comfortable"
- ? ".75rem"
- : "1.25rem",
- userSelect: enableMultiSort && column.getCanSort() ? "none" : undefined,
- verticalAlign: "middle",
- ...getCommonMRTCellStyles({
- column,
- header,
- table,
- tableCellProps,
- theme,
+ refs: { tableHeadCellRefs },
+ setHoveredColumn,
+ } = table;
+ const { columnSizingInfo, density, draggingColumn, grouping, hoveredColumn, showColumnFilters } = getState();
+ const { column } = header;
+ const { columnDef } = column;
+ const { columnDefType } = columnDef;
+
+ const tableCellProps = {
+ ...parseFromValuesOrFunc(muiTableHeadCellProps, { column, table }),
+ ...parseFromValuesOrFunc(columnDef.muiTableHeadCellProps, {
+ column,
+ table,
}),
- ...draggingBorders,
- backgroundColor: backgroundColor,
- })}
- >
- {tableCellProps.children ?? (
-
- {
+ let pl = 0;
+ if (column.getCanSort()) pl += 1;
+ if (showColumnActions) pl += 1.75;
+ if (showDragHandle) pl += 1.5;
+ return pl;
+ }, [showColumnActions, showDragHandle]);
+
+ const draggingBorders = useMemo(() => {
+ const showResizeBorder =
+ columnSizingInfo.isResizingColumn === column.id &&
+ columnResizeMode === "onChange" &&
+ !header.subHeaders.length;
+
+ const borderStyle = showResizeBorder
+ ? `2px solid ${draggingBorderColor} !important`
+ : draggingColumn?.id === column.id
+ ? `1px dashed ${theme.palette.grey[500]}`
+ : hoveredColumn?.id === column.id
+ ? `2px dashed ${draggingBorderColor}`
+ : undefined;
+
+ if (showResizeBorder) {
+ return columnResizeDirection === "ltr" ? { borderRight: borderStyle } : { borderLeft: borderStyle };
+ }
+ const draggingBorders = borderStyle
+ ? {
+ borderLeft: borderStyle,
+ borderRight: borderStyle,
+ borderTop: borderStyle,
+ }
+ : undefined;
+
+ return draggingBorders;
+ }, [draggingColumn, hoveredColumn, columnSizingInfo.isResizingColumn]);
+
+ const handleDragEnter = (_e) => {
+ if (enableGrouping && hoveredColumn?.id === "drop-zone") {
+ setHoveredColumn(null);
+ }
+ if (enableColumnOrdering && draggingColumn && columnDefType !== "group") {
+ setHoveredColumn(columnDef.enableColumnOrdering !== false ? column : null);
+ }
+ };
+
+ const handleDragOver = (e) => {
+ if (columnDef.enableColumnOrdering !== false) {
+ e.preventDefault();
+ }
+ };
+
+ const HeaderElement =
+ parseFromValuesOrFunc(columnDef.Header, {
+ column,
+ header,
+ table,
+ }) ?? columnDef.header;
+
+ const columnRelativeDepth = header.depth - column.depth;
+
+ if (columnRelativeDepth > 1) {
+ return null;
+ }
+
+ let rowSpan = 1;
+ if (header.isPlaceholder) {
+ const leafs = header.getLeafHeaders();
+ rowSpan = leafs[leafs.length - 1].depth - header.depth;
+ }
+
+ return (
+ {
+ if (node) {
+ tableHeadCellRefs.current[column.id] = node;
+ if (columnDefType !== "group") {
+ columnVirtualizer?.measureElement?.(node);
+ }
+ }
}}
- >
- ({
+ "& :hover": {
+ ".MuiButtonBase-root": {
+ opacity: 1,
+ },
},
- minWidth: `${Math.min(columnDef.header?.length ?? 0, 4)}ch`,
- overflow: columnDefType === "data" ? "hidden" : undefined,
- textOverflow: "ellipsis",
- textAlign: "start",
- color: "#fff",
- fontWeight: "400",
- whiteSpace: "nowrap",
- }}
- >
- {HeaderElement}
-
- {column.getCanSort() && columnDefType !== "group" && (
-
+ flexDirection: layoutMode?.startsWith("grid") ? "column" : undefined,
+ fontWeight: "bold",
+ overflow: "visible",
+ p:
+ density === "compact"
+ ? "0.5rem"
+ : density === "comfortable"
+ ? columnDefType === "display"
+ ? "0.75rem"
+ : "1rem"
+ : columnDefType === "display"
+ ? "1rem 1.25rem"
+ : "1.5rem",
+ pb: columnDefType === "display" ? 0 : showColumnFilters || density === "compact" ? "0.4rem" : "0.6rem",
+ pt:
+ columnDefType === "group" || density === "compact"
+ ? "0.25rem"
+ : density === "comfortable"
+ ? ".75rem"
+ : "1.25rem",
+ userSelect: enableMultiSort && column.getCanSort() ? "none" : undefined,
+ verticalAlign: "middle",
+ ...getCommonMRTCellStyles({
+ column,
+ header,
+ table,
+ tableCellProps,
+ theme,
+ }),
+ ...draggingBorders,
+ backgroundColor: backgroundColor,
+ })}
+ >
+ {tableCellProps.children ?? (
+
+
+
+ {HeaderElement}
+
+ {column.getCanSort() && columnDefType !== "group" && (
+
+ )}
+
+
)}
-
-
- )}
-
- );
+
+ );
};
export default DataTable_TableHeadCell;
diff --git a/src/core/components/DataTable/head/TableHeadRow.js b/src/core/components/DataTable/head/TableHeadRow.js
index bee809f..94a50f2 100644
--- a/src/core/components/DataTable/head/TableHeadRow.js
+++ b/src/core/components/DataTable/head/TableHeadRow.js
@@ -3,67 +3,58 @@ import { TableRow, useTheme } from "@mui/material";
import DataTable_TableHeadCell from "./TableHeadCell";
const DataTable_TableHeadRow = ({
- columnVirtualizer,
- headerGroup,
- table,
- index, // Add index prop
- ...rest
+ columnVirtualizer,
+ headerGroup,
+ table,
+ index, // Add index prop
+ ...rest
}) => {
- const { palette } = useTheme();
+ const { palette } = useTheme();
- const {
- options: { enableStickyHeader, layoutMode, muiTableHeadRowProps },
- } = table;
- const { virtualColumns, virtualPaddingLeft, virtualPaddingRight } =
- columnVirtualizer ?? {};
+ const {
+ options: { enableStickyHeader, layoutMode, muiTableHeadRowProps },
+ } = table;
+ const { virtualColumns, virtualPaddingLeft, virtualPaddingRight } = columnVirtualizer ?? {};
- const backgroundColor =
- index % 2 === 0 ? palette.primary.main : palette.secondary.main;
+ const backgroundColor = index % 2 === 0 ? palette.primary.main : palette.secondary.main;
- const tableRowProps = {
- ...parseFromValuesOrFunc(muiTableHeadRowProps, {
- headerGroup,
- table,
- }),
- ...rest,
- sx: (theme) => ({
- // Access theme from the sx function
- ...(parseFromValuesOrFunc(muiTableHeadRowProps?.sx, theme) || {}),
- display: layoutMode?.startsWith("grid") ? "flex" : undefined,
- position:
- enableStickyHeader && layoutMode === "semantic" ? "sticky" : "relative",
- top: 0,
- }),
- };
+ const tableRowProps = {
+ ...parseFromValuesOrFunc(muiTableHeadRowProps, {
+ headerGroup,
+ table,
+ }),
+ ...rest,
+ sx: (theme) => ({
+ // Access theme from the sx function
+ ...(parseFromValuesOrFunc(muiTableHeadRowProps?.sx, theme) || {}),
+ display: layoutMode?.startsWith("grid") ? "flex" : undefined,
+ position: enableStickyHeader && layoutMode === "semantic" ? "sticky" : "relative",
+ top: 0,
+ }),
+ };
- return (
-
- {virtualPaddingLeft && (
- |
- )}
- {(virtualColumns ?? headerGroup.headers).map(
- (headerOrVirtualHeader, staticColumnIndex) => {
- const header = columnVirtualizer
- ? headerGroup.headers[headerOrVirtualHeader.index]
- : headerOrVirtualHeader;
+ return (
+
+ {virtualPaddingLeft && | }
+ {(virtualColumns ?? headerGroup.headers).map((headerOrVirtualHeader, staticColumnIndex) => {
+ const header = columnVirtualizer
+ ? headerGroup.headers[headerOrVirtualHeader.index]
+ : headerOrVirtualHeader;
- return header ? (
-
- ) : null;
- },
- )}
- {virtualPaddingRight && (
- |
- )}
-
- );
+ return header ? (
+
+ ) : null;
+ })}
+ {virtualPaddingRight && | }
+
+ );
};
export default DataTable_TableHeadRow;
diff --git a/src/core/components/DataTable/hide/HideBody.jsx b/src/core/components/DataTable/hide/HideBody.jsx
index 47c96ee..9cf76f6 100644
--- a/src/core/components/DataTable/hide/HideBody.jsx
+++ b/src/core/components/DataTable/hide/HideBody.jsx
@@ -8,36 +8,31 @@ import HideOrShowAll from "@/core/components/DataTable/hide/HideOrShowAll";
import ScrollBox from "../../ScrollBox";
function HideBody({ columns, drawerState, setDrawerState }) {
- const { hideData, setHideData } = useDataTable();
+ const { hideData, setHideData } = useDataTable();
- return (
- setDrawerState(false)}
- sx={{
- overflowY: "hidden",
- display: "flex",
- flexDirection: "column",
- height: "100%",
- zIndex: "1300",
- }}
- >
-
-
-
-
- {columns.map((column) => (
-
- ))}
-
-
-
- );
+ return (
+ setDrawerState(false)}
+ sx={{
+ overflowY: "hidden",
+ display: "flex",
+ flexDirection: "column",
+ height: "100%",
+ zIndex: "1300",
+ }}
+ >
+
+
+
+
+ {columns.map((column) => (
+
+ ))}
+
+
+
+ );
}
export default HideBody;
diff --git a/src/core/components/DataTable/hide/HideBodyField.jsx b/src/core/components/DataTable/hide/HideBodyField.jsx
index c008514..6b60966 100644
--- a/src/core/components/DataTable/hide/HideBodyField.jsx
+++ b/src/core/components/DataTable/hide/HideBodyField.jsx
@@ -3,78 +3,74 @@ import { SimpleTreeView } from "@mui/x-tree-view";
import { TreeItem, treeItemClasses } from "@mui/x-tree-view/TreeItem";
const CustomTreeItem = styled(TreeItem)(({ theme }) => ({
- [`& .${treeItemClasses.content}`]: {
- padding: theme.spacing(0.5, 0.5),
- margin: theme.spacing(0.2, 0),
- gap: 0,
- },
- [`& .${treeItemClasses.iconContainer}`]: {
- "& .close": {
- opacity: 0.3,
+ [`& .${treeItemClasses.content}`]: {
+ padding: theme.spacing(0.5, 0.5),
+ margin: theme.spacing(0.2, 0),
+ gap: 0,
+ },
+ [`& .${treeItemClasses.iconContainer}`]: {
+ "& .close": {
+ opacity: 0.3,
+ },
+ },
+ [`& .${treeItemClasses.groupTransition}`]: {
+ marginLeft: 16,
+ paddingLeft: 16,
+ borderLeft: `1px dashed ${alpha(theme.palette.text.primary, 0.4)}`,
},
- },
- [`& .${treeItemClasses.groupTransition}`]: {
- marginLeft: 16,
- paddingLeft: 16,
- borderLeft: `1px dashed ${alpha(theme.palette.text.primary, 0.4)}`,
- },
}));
function HideBodyField({ column, hideData, setHideData }) {
- const handleCheckboxChange = () => {
- setHideData((prevData) => {
- const updateHideData = (data, id) => {
- if (data.hasOwnProperty(id)) {
- return { ...data, [id]: !data[id] };
+ const handleCheckboxChange = () => {
+ setHideData((prevData) => {
+ const updateHideData = (data, id) => {
+ if (data.hasOwnProperty(id)) {
+ return { ...data, [id]: !data[id] };
+ }
+ const updatedData = { ...data };
+ for (const key in data) {
+ if (data[key] && typeof data[key] === "object") {
+ updatedData[key] = updateHideData(data[key], id);
+ }
+ }
+ return updatedData;
+ };
+
+ return updateHideData(prevData, column.id);
+ });
+ };
+
+ const labelContent = (() => {
+ if (typeof hideData[column.id] === "boolean") {
+ return (
+
+
+ {column.header}
+
+ );
+ } else {
+ return (
+
+ {column.header}
+
+ );
}
- const updatedData = { ...data };
- for (const key in data) {
- if (data[key] && typeof data[key] === "object") {
- updatedData[key] = updateHideData(data[key], id);
- }
- }
- return updatedData;
- };
+ })();
- return updateHideData(prevData, column.id);
- });
- };
-
- const labelContent = (() => {
- if (typeof hideData[column.id] === "boolean") {
- return (
-
-
- {column.header}
-
- );
- } else {
- return (
-
- {column.header}
-
- );
- }
- })();
-
- return (
-
-
- {column.columns?.map((subColumn) => (
-
- ))}
-
-
- );
+ return (
+
+
+ {column.columns?.map((subColumn) => (
+
+ ))}
+
+
+ );
}
export default HideBodyField;
diff --git a/src/core/components/DataTable/hide/HideButton.jsx b/src/core/components/DataTable/hide/HideButton.jsx
index 4ada7c7..fa93857 100644
--- a/src/core/components/DataTable/hide/HideButton.jsx
+++ b/src/core/components/DataTable/hide/HideButton.jsx
@@ -5,33 +5,31 @@ import useDataTable from "@/lib/hooks/useDataTable";
import { flattenObjectOfObjects } from "@/core/utils/flattenObjectOfObjects";
function HideButton({ drawerState, setDrawerState }) {
- const { hideData } = useDataTable();
- const flattenHideData = flattenObjectOfObjects(hideData);
- const falseCount = Object.values(flattenHideData).filter(
- (value) => value === false,
- ).length;
+ const { hideData } = useDataTable();
+ const flattenHideData = flattenObjectOfObjects(hideData);
+ const falseCount = Object.values(flattenHideData).filter((value) => value === false).length;
- return (
-
- {
- setDrawerState(!drawerState);
- }}
- aria-label="hide table column"
- >
-
-
-
-
-
- );
+ return (
+
+ {
+ setDrawerState(!drawerState);
+ }}
+ aria-label="hide table column"
+ >
+
+
+
+
+
+ );
}
export default HideButton;
diff --git a/src/core/components/DataTable/hide/HideHeader.jsx b/src/core/components/DataTable/hide/HideHeader.jsx
index 034271e..5adcf25 100644
--- a/src/core/components/DataTable/hide/HideHeader.jsx
+++ b/src/core/components/DataTable/hide/HideHeader.jsx
@@ -5,31 +5,30 @@ import CancelIcon from "@mui/icons-material/Cancel";
import ViewColumnIcon from "@mui/icons-material/ViewColumn";
function FilterHeader({ setDrawerState }) {
- return (
-
-
-
-
- نمایش/مخفی کردن ستون ها
-
-
- setDrawerState(false)}>
-
-
-
- );
+ return (
+
+
+
+
+ نمایش/مخفی کردن ستون ها
+
+
+ setDrawerState(false)}>
+
+
+
+ );
}
export default FilterHeader;
diff --git a/src/core/components/DataTable/hide/HideOrShowAll.jsx b/src/core/components/DataTable/hide/HideOrShowAll.jsx
index 27c8849..c0d2e8d 100644
--- a/src/core/components/DataTable/hide/HideOrShowAll.jsx
+++ b/src/core/components/DataTable/hide/HideOrShowAll.jsx
@@ -5,66 +5,66 @@ import VisibilityIcon from "@mui/icons-material/Visibility";
import VisibilityOffIcon from "@mui/icons-material/VisibilityOff";
const setAllValues = (obj, value) => {
- const result = {};
- for (const key in obj) {
- if (typeof obj[key] === "object" && obj[key] !== null) {
- result[key] = setAllValues(obj[key], value);
- } else {
- result[key] = value;
+ const result = {};
+ for (const key in obj) {
+ if (typeof obj[key] === "object" && obj[key] !== null) {
+ result[key] = setAllValues(obj[key], value);
+ } else {
+ result[key] = value;
+ }
}
- }
- return result;
+ return result;
};
const allValuesAre = (obj, value) => {
- for (const key in obj) {
- if (typeof obj[key] === "object" && obj[key] !== null) {
- if (!allValuesAre(obj[key], value)) {
- return false;
- }
- } else if (obj[key] !== value) {
- return false;
+ for (const key in obj) {
+ if (typeof obj[key] === "object" && obj[key] !== null) {
+ if (!allValuesAre(obj[key], value)) {
+ return false;
+ }
+ } else if (obj[key] !== value) {
+ return false;
+ }
}
- }
- return true;
+ return true;
};
function HideOrShowAll({ hideData, setHideData }) {
- const handleShowAll = () => {
- const newHideData = setAllValues(hideData, true);
- setHideData(newHideData);
- };
+ const handleShowAll = () => {
+ const newHideData = setAllValues(hideData, true);
+ setHideData(newHideData);
+ };
- const handleHideAll = () => {
- const newHideData = setAllValues(hideData, false);
- setHideData(newHideData);
- };
+ const handleHideAll = () => {
+ const newHideData = setAllValues(hideData, false);
+ setHideData(newHideData);
+ };
- const allHidden = allValuesAre(hideData, false);
- const allVisible = allValuesAre(hideData, true);
+ const allHidden = allValuesAre(hideData, false);
+ const allVisible = allValuesAre(hideData, true);
- return (
-
- }
- onClick={handleShowAll}
- >
- نمایش همه
-
- }
- onClick={handleHideAll}
- >
- مخفی کردن همه
-
-
- );
+ return (
+
+ }
+ onClick={handleShowAll}
+ >
+ نمایش همه
+
+ }
+ onClick={handleHideAll}
+ >
+ مخفی کردن همه
+
+
+ );
}
export default HideOrShowAll;
diff --git a/src/core/components/DataTable/hide/index.jsx b/src/core/components/DataTable/hide/index.jsx
index 865c0e2..b917c56 100644
--- a/src/core/components/DataTable/hide/index.jsx
+++ b/src/core/components/DataTable/hide/index.jsx
@@ -5,20 +5,20 @@ import HideButton from "@/core/components/DataTable/hide/HideButton";
import HideBody from "@/core/components/DataTable/hide/HideBody";
function HideColumn({ columns, user_id, page_name, table_name }) {
- const [open, setOpen] = useState(false);
- return (
- <>
-
-
- >
- );
+ const [open, setOpen] = useState(false);
+ return (
+ <>
+
+
+ >
+ );
}
export default HideColumn;
diff --git a/src/core/components/DataTable/index.js b/src/core/components/DataTable/index.js
index 6f1c07e..1e881f9 100644
--- a/src/core/components/DataTable/index.js
+++ b/src/core/components/DataTable/index.js
@@ -2,17 +2,17 @@ import DataTable_Main from "./Main";
import DataTableProvider from "@/lib/contexts/DataTable";
const DataTable = (props) => {
- return (
-
-
-
- );
+ return (
+
+
+
+ );
};
export default DataTable;
diff --git a/src/core/components/DataTable/localization/fa/datatable.js b/src/core/components/DataTable/localization/fa/datatable.js
index 819a84b..e36f366 100644
--- a/src/core/components/DataTable/localization/fa/datatable.js
+++ b/src/core/components/DataTable/localization/fa/datatable.js
@@ -1,92 +1,91 @@
export const FA_DATATABLE_LOCALIZATION = {
- actions: "عملیات",
- and: "و",
- cancel: "لغو",
- changeFilterMode: "تغییر حالت فیلتر",
- changeSearchMode: "تغییر حالت جستجو",
- clearFilter: "پاک کردن فیلتر",
- clearSearch: "پاک کردن جستجو",
- clearSort: "پاک کردن مرتب سازی",
- clickToCopy: "کلیک برای کپی",
- collapse: "جمع شدن",
- collapseAll: "جمع شدن همه",
- columnActions: "عملیات ستون",
- copiedToClipboard: "کپی شد",
- dropToGroupBy: "رها کردن برای گروه بندی بر اساس {column}",
- edit: "ویرایش",
- expand: "باز شدن",
- expandAll: "باز شدن همه",
- filterArrIncludes: "شامل",
- filterArrIncludesAll: "شامل همه",
- filterArrIncludesSome: "شامل",
- filterBetween: "میان",
- filterBetweenInclusive: "میان با احتساب هر دو",
- filterByColumn: "فیلتر بر اساس {column}",
- filterContains: "شامل",
- filterEmpty: "خالی",
- filterEndsWith: "به پایان میرسد با",
- filterEquals: "برابر",
- filterEqualsString: "برابر",
- filterFuzzy: "نزدیک",
- filterGreaterThan: "بزرگتر از",
- filterGreaterThanOrEqualTo: "بزرگتر یا مساوی",
- filterInNumberRange: "میان",
- filterIncludesString: "شامل",
- filterIncludesStringSensitive: "شامل",
- filterLessThan: "کوچکتر از",
- filterLessThanOrEqualTo: "کوچکتر یا مساوی",
- filterMode: "حالت فیلتر: {filterType}",
- filterNotEmpty: "غیر خالی",
- filterNotEquals: "نا برابر",
- filterStartsWith: "شروع میشود با",
- filterWeakEquals: "برابر",
- filteringByColumn: "فیلتر بر اساس {column} - {filterType} {filterValue}",
- goToFirstPage: "رفتن به صفحه اول",
- goToLastPage: "رفتن به صفحه آخر",
- goToNextPage: "رفتن به صفحه بعدی",
- goToPreviousPage: "رفتن به صفحه قبلی",
- grab: "گرفتن",
- groupByColumn: "گروه بندی بر اساس {column}",
- groupedBy: "گروه بندی شده بر اساس",
- hideAll: "پنهان کردن همه",
- hideColumn: "پنهان کردن ستون {column}",
- max: "حداکثر",
- min: "حداقل",
- move: "انتقال",
- noRecordsToDisplay: "هیچ رکوردی برای نمایش وجود ندارد",
- noResultsFound: "نتیجهای یافت نشد",
- of: "از",
- or: "یا",
- pinToLeft: "چسباندن به سمت چپ",
- pinToRight: "چسباندن به سمت راست",
- resetColumnSize: "بازنشانی اندازه ستون",
- resetOrder: "بازنشانی ترتیب",
- rowActions: "عملیات ردیف",
- rowNumber: "#",
- rowNumbers: "شماره ردیف",
- rowsPerPage: "ردیف در هر صفحه",
- save: "ذخیره",
- search: "جستجو",
- selectedCountOfRowCountRowsSelected:
- "{selectedCount} از {rowCount} ردیف انتخاب شده",
- select: "انتخاب",
- showAll: "نمایش همه",
- showAllColumns: "نمایش همه ستونها",
- showHideColumns: "نمایش/مخفی کردن ستونها",
- showHideFilters: "نمایش/مخفی کردن فیلترها",
- showHideSearch: "نمایش/مخفی کردن جستجو",
- sortByColumnAsc: "مرتب سازی بر اساس {column} صعودی",
- sortByColumnDesc: "مرتب سازی بر اساس {column} نزولی",
- sortedByColumnAsc: "مرتب شده بر اساس {column} صعودی",
- sortedByColumnDesc: "مرتب شده بر اساس {column} نزولی",
- thenBy: "، سپس بر اساس ",
- toggleDensity: "تغییر تراکم",
- toggleFullScreen: "تغییر حالت تمام صفحه",
- toggleSelectAll: "انتخاب/عدم انتخاب همه",
- toggleSelectRow: "انتخاب/عدم انتخاب ردیف",
- toggleVisibility: "تغییر پیدا/پنهان",
- ungroupByColumn: "لغو گروه بندی بر اساس {column}",
- unpin: "رها کردن",
- unpinAll: "رها کردن همه",
- unsorted: "بدون مرتب سازی",
+ actions: "عملیات",
+ and: "و",
+ cancel: "لغو",
+ changeFilterMode: "تغییر حالت فیلتر",
+ changeSearchMode: "تغییر حالت جستجو",
+ clearFilter: "پاک کردن فیلتر",
+ clearSearch: "پاک کردن جستجو",
+ clearSort: "پاک کردن مرتب سازی",
+ clickToCopy: "کلیک برای کپی",
+ collapse: "جمع شدن",
+ collapseAll: "جمع شدن همه",
+ columnActions: "عملیات ستون",
+ copiedToClipboard: "کپی شد",
+ dropToGroupBy: "رها کردن برای گروه بندی بر اساس {column}",
+ edit: "ویرایش",
+ expand: "باز شدن",
+ expandAll: "باز شدن همه",
+ filterArrIncludes: "شامل",
+ filterArrIncludesAll: "شامل همه",
+ filterArrIncludesSome: "شامل",
+ filterBetween: "میان",
+ filterBetweenInclusive: "میان با احتساب هر دو",
+ filterByColumn: "فیلتر بر اساس {column}",
+ filterContains: "شامل",
+ filterEmpty: "خالی",
+ filterEndsWith: "به پایان میرسد با",
+ filterEquals: "برابر",
+ filterEqualsString: "برابر",
+ filterFuzzy: "نزدیک",
+ filterGreaterThan: "بزرگتر از",
+ filterGreaterThanOrEqualTo: "بزرگتر یا مساوی",
+ filterInNumberRange: "میان",
+ filterIncludesString: "شامل",
+ filterIncludesStringSensitive: "شامل",
+ filterLessThan: "کوچکتر از",
+ filterLessThanOrEqualTo: "کوچکتر یا مساوی",
+ filterMode: "حالت فیلتر: {filterType}",
+ filterNotEmpty: "غیر خالی",
+ filterNotEquals: "نا برابر",
+ filterStartsWith: "شروع میشود با",
+ filterWeakEquals: "برابر",
+ filteringByColumn: "فیلتر بر اساس {column} - {filterType} {filterValue}",
+ goToFirstPage: "رفتن به صفحه اول",
+ goToLastPage: "رفتن به صفحه آخر",
+ goToNextPage: "رفتن به صفحه بعدی",
+ goToPreviousPage: "رفتن به صفحه قبلی",
+ grab: "گرفتن",
+ groupByColumn: "گروه بندی بر اساس {column}",
+ groupedBy: "گروه بندی شده بر اساس",
+ hideAll: "پنهان کردن همه",
+ hideColumn: "پنهان کردن ستون {column}",
+ max: "حداکثر",
+ min: "حداقل",
+ move: "انتقال",
+ noRecordsToDisplay: "هیچ رکوردی برای نمایش وجود ندارد",
+ noResultsFound: "نتیجهای یافت نشد",
+ of: "از",
+ or: "یا",
+ pinToLeft: "چسباندن به سمت چپ",
+ pinToRight: "چسباندن به سمت راست",
+ resetColumnSize: "بازنشانی اندازه ستون",
+ resetOrder: "بازنشانی ترتیب",
+ rowActions: "عملیات ردیف",
+ rowNumber: "#",
+ rowNumbers: "شماره ردیف",
+ rowsPerPage: "ردیف در هر صفحه",
+ save: "ذخیره",
+ search: "جستجو",
+ selectedCountOfRowCountRowsSelected: "{selectedCount} از {rowCount} ردیف انتخاب شده",
+ select: "انتخاب",
+ showAll: "نمایش همه",
+ showAllColumns: "نمایش همه ستونها",
+ showHideColumns: "نمایش/مخفی کردن ستونها",
+ showHideFilters: "نمایش/مخفی کردن فیلترها",
+ showHideSearch: "نمایش/مخفی کردن جستجو",
+ sortByColumnAsc: "مرتب سازی بر اساس {column} صعودی",
+ sortByColumnDesc: "مرتب سازی بر اساس {column} نزولی",
+ sortedByColumnAsc: "مرتب شده بر اساس {column} صعودی",
+ sortedByColumnDesc: "مرتب شده بر اساس {column} نزولی",
+ thenBy: "، سپس بر اساس ",
+ toggleDensity: "تغییر تراکم",
+ toggleFullScreen: "تغییر حالت تمام صفحه",
+ toggleSelectAll: "انتخاب/عدم انتخاب همه",
+ toggleSelectRow: "انتخاب/عدم انتخاب ردیف",
+ toggleVisibility: "تغییر پیدا/پنهان",
+ ungroupByColumn: "لغو گروه بندی بر اساس {column}",
+ unpin: "رها کردن",
+ unpinAll: "رها کردن همه",
+ unsorted: "بدون مرتب سازی",
};
diff --git a/src/core/components/DataTable/menus/ActionMenuItem.js b/src/core/components/DataTable/menus/ActionMenuItem.js
index a7a03b3..012fcc5 100644
--- a/src/core/components/DataTable/menus/ActionMenuItem.js
+++ b/src/core/components/DataTable/menus/ActionMenuItem.js
@@ -1,49 +1,38 @@
import { Box, IconButton, ListItemIcon, MenuItem } from "@mui/material";
-const DataTable_ActionMenuItem = ({
- icon,
- label,
- onOpenSubMenu,
- table,
- ...rest
-}) => {
- const {
- options: {
- icons: { ArrowRightIcon },
- },
- } = table;
+const DataTable_ActionMenuItem = ({ icon, label, onOpenSubMenu, table, ...rest }) => {
+ const {
+ options: {
+ icons: { ArrowRightIcon },
+ },
+ } = table;
- return (
-
- );
+
+ {icon}
+ {label}
+
+ {onOpenSubMenu && (
+
+
+
+ )}
+
+ );
};
export default DataTable_ActionMenuItem;
diff --git a/src/core/components/DataTable/menus/CellActionMenu.js b/src/core/components/DataTable/menus/CellActionMenu.js
index 12256ab..5b27ca9 100644
--- a/src/core/components/DataTable/menus/CellActionMenu.js
+++ b/src/core/components/DataTable/menus/CellActionMenu.js
@@ -3,94 +3,92 @@ import { Menu } from "@mui/material";
import DataTable_ActionMenuItem from "./ActionMenuItem";
const DataTable_CellActionMenu = ({ table, ...rest }) => {
- const {
- getState,
- options: {
- editDisplayMode,
- enableClickToCopy,
- enableEditing,
- icons: { ContentCopy, EditIcon },
- localization,
- mrtTheme: { menuBackgroundColor },
- renderCellActionMenuItems,
- },
- refs: { actionCellRef },
- } = table;
- const { actionCell, density } = getState();
- const cell = actionCell || null;
- const { row } = cell;
- const { column } = cell;
- const { columnDef } = column;
+ const {
+ getState,
+ options: {
+ editDisplayMode,
+ enableClickToCopy,
+ enableEditing,
+ icons: { ContentCopy, EditIcon },
+ localization,
+ mrtTheme: { menuBackgroundColor },
+ renderCellActionMenuItems,
+ },
+ refs: { actionCellRef },
+ } = table;
+ const { actionCell, density } = getState();
+ const cell = actionCell || null;
+ const { row } = cell;
+ const { column } = cell;
+ const { columnDef } = column;
- const handleClose = (event) => {
- event?.stopPropagation();
- table.setActionCell(null);
- actionCellRef.current = null;
- };
+ const handleClose = (event) => {
+ event?.stopPropagation();
+ table.setActionCell(null);
+ actionCellRef.current = null;
+ };
- const internalMenuItems = [
- (parseFromValuesOrFunc(enableClickToCopy, cell) === "context-menu" ||
- parseFromValuesOrFunc(columnDef.enableClickToCopy, cell) ===
- "context-menu") && (
- }
- key={"mrt-copy"}
- label={localization.copy}
- onClick={(event) => {
- event.stopPropagation();
- navigator.clipboard.writeText(cell.getValue());
- handleClose();
- }}
- table={table}
- />
- ),
- parseFromValuesOrFunc(enableEditing, row) && editDisplayMode === "cell" && (
- }
- key={"mrt-edit"}
- label={localization.edit}
- onClick={() => {
- openEditingCell({ cell, table });
- handleClose();
- }}
- table={table}
- />
- ),
- ].filter(Boolean);
+ const internalMenuItems = [
+ (parseFromValuesOrFunc(enableClickToCopy, cell) === "context-menu" ||
+ parseFromValuesOrFunc(columnDef.enableClickToCopy, cell) === "context-menu") && (
+ }
+ key={"mrt-copy"}
+ label={localization.copy}
+ onClick={(event) => {
+ event.stopPropagation();
+ navigator.clipboard.writeText(cell.getValue());
+ handleClose();
+ }}
+ table={table}
+ />
+ ),
+ parseFromValuesOrFunc(enableEditing, row) && editDisplayMode === "cell" && (
+ }
+ key={"mrt-edit"}
+ label={localization.edit}
+ onClick={() => {
+ openEditingCell({ cell, table });
+ handleClose();
+ }}
+ table={table}
+ />
+ ),
+ ].filter(Boolean);
- const renderActionProps = {
- cell,
- closeMenu: handleClose,
- column,
- internalMenuItems,
- row,
- table,
- };
+ const renderActionProps = {
+ cell,
+ closeMenu: handleClose,
+ column,
+ internalMenuItems,
+ row,
+ table,
+ };
- const menuItems =
- columnDef.renderCellActionMenuItems?.(renderActionProps) ??
- renderCellActionMenuItems?.(renderActionProps);
+ const menuItems =
+ columnDef.renderCellActionMenuItems?.(renderActionProps) ?? renderCellActionMenuItems?.(renderActionProps);
- return (
- (!!menuItems?.length || !!internalMenuItems?.length) && (
-
- )
- );
+ return (
+ (!!menuItems?.length || !!internalMenuItems?.length) && (
+
+ )
+ );
};
export default DataTable_CellActionMenu;
diff --git a/src/core/components/DataTable/reset/ResetStorage.jsx b/src/core/components/DataTable/reset/ResetStorage.jsx
index 76edf58..7994867 100644
--- a/src/core/components/DataTable/reset/ResetStorage.jsx
+++ b/src/core/components/DataTable/reset/ResetStorage.jsx
@@ -5,32 +5,32 @@ import useTableSetting from "@/lib/hooks/useTableSetting";
import useDataTable from "@/lib/hooks/useDataTable";
function ResetStorage({ user_id, page_name, table_name }) {
- const { resetAction } = useTableSetting();
- const { isAnyDirty } = useDataTable();
- const reset = () => {
- resetAction(user_id, page_name, table_name);
- };
+ const { resetAction } = useTableSetting();
+ const { isAnyDirty } = useDataTable();
+ const reset = () => {
+ resetAction(user_id, page_name, table_name);
+ };
- return (
-
-
- {isAnyDirty ? (
-
-
-
- ) : (
-
- )}
-
-
- );
+ return (
+
+
+ {isAnyDirty ? (
+
+
+
+ ) : (
+
+ )}
+
+
+ );
}
export default ResetStorage;
diff --git a/src/core/components/DataTable/table/Paper.js b/src/core/components/DataTable/table/Paper.js
index cdca182..9ce08fc 100644
--- a/src/core/components/DataTable/table/Paper.js
+++ b/src/core/components/DataTable/table/Paper.js
@@ -5,98 +5,96 @@ import DataTable_TopToolbar from "../toolbar/TopToolbar";
import DataTable_TableContainer from "./TableContainer";
const DataTable_Paper = ({
- table,
- table_name,
- columns,
- user_id,
- page_name,
- mutate,
- need_filter,
- table_url,
- table_title,
- setFilterData,
- ...rest
+ table,
+ table_name,
+ columns,
+ user_id,
+ page_name,
+ mutate,
+ need_filter,
+ table_url,
+ table_title,
+ setFilterData,
+ ...rest
}) => {
- const {
- getState,
- options: {
- enableBottomToolbar,
- enableTopToolbar,
- mrtTheme: { baseBackgroundColor },
- muiTablePaperProps,
- renderBottomToolbar,
- renderTopToolbar,
- },
- refs: { tablePaperRef },
- } = table;
+ const {
+ getState,
+ options: {
+ enableBottomToolbar,
+ enableTopToolbar,
+ mrtTheme: { baseBackgroundColor },
+ muiTablePaperProps,
+ renderBottomToolbar,
+ renderTopToolbar,
+ },
+ refs: { tablePaperRef },
+ } = table;
- const { isFullScreen } = getState();
+ const { isFullScreen } = getState();
- const paperProps = {
- ...parseFromValuesOrFunc(muiTablePaperProps, { table }),
- ...rest,
- };
+ const paperProps = {
+ ...parseFromValuesOrFunc(muiTablePaperProps, { table }),
+ ...rest,
+ };
- return (
- {
- tablePaperRef.current = ref;
- if (paperProps?.ref) {
- //@ts-ignore
- paperProps.ref.current = ref;
- }
- }}
- style={{
- ...(isFullScreen
- ? {
- bottom: 0,
- height: "100dvh",
- left: 0,
- margin: 0,
- maxHeight: "100dvh",
- maxWidth: "100dvw",
- padding: 0,
- position: "fixed",
- right: 0,
- top: 0,
- width: "100dvw",
- zIndex: 999,
- }
- : {}),
- ...paperProps?.style,
- }}
- sx={(theme) => ({
- backgroundColor: baseBackgroundColor,
- backgroundImage: "unset",
- overflow: "hidden",
- transition: "all 100ms ease-in-out",
- ...parseFromValuesOrFunc(paperProps?.sx, theme),
- })}
- >
- {enableTopToolbar &&
- (parseFromValuesOrFunc(renderTopToolbar, { table }) ?? (
-
- ))}
-
- {enableBottomToolbar &&
- (parseFromValuesOrFunc(renderBottomToolbar, { table }) ?? (
-
- ))}
-
- );
+ ref={(ref) => {
+ tablePaperRef.current = ref;
+ if (paperProps?.ref) {
+ //@ts-ignore
+ paperProps.ref.current = ref;
+ }
+ }}
+ style={{
+ ...(isFullScreen
+ ? {
+ bottom: 0,
+ height: "100dvh",
+ left: 0,
+ margin: 0,
+ maxHeight: "100dvh",
+ maxWidth: "100dvw",
+ padding: 0,
+ position: "fixed",
+ right: 0,
+ top: 0,
+ width: "100dvw",
+ zIndex: 999,
+ }
+ : {}),
+ ...paperProps?.style,
+ }}
+ sx={(theme) => ({
+ backgroundColor: baseBackgroundColor,
+ backgroundImage: "unset",
+ overflow: "hidden",
+ transition: "all 100ms ease-in-out",
+ ...parseFromValuesOrFunc(paperProps?.sx, theme),
+ })}
+ >
+ {enableTopToolbar &&
+ (parseFromValuesOrFunc(renderTopToolbar, { table }) ?? (
+
+ ))}
+
+ {enableBottomToolbar &&
+ (parseFromValuesOrFunc(renderBottomToolbar, { table }) ?? )}
+
+ );
};
export default DataTable_Paper;
diff --git a/src/core/components/DataTable/table/Table.js b/src/core/components/DataTable/table/Table.js
index cfcb591..1bf6b69 100644
--- a/src/core/components/DataTable/table/Table.js
+++ b/src/core/components/DataTable/table/Table.js
@@ -2,75 +2,72 @@ import { parseCSSVarId, parseFromValuesOrFunc } from "@/core/utils/utils";
import { Table } from "@mui/material";
import { useMRT_ColumnVirtualizer } from "material-react-table";
import { useMemo } from "react";
-import DataTable_TableBody, {
- Memo_DataTable_TableBody,
-} from "../body/TableBody";
+import DataTable_TableBody, { Memo_DataTable_TableBody } from "../body/TableBody";
import DataTable_TableHead from "../head/TableHead";
const DataTable_Table = ({ table, ...rest }) => {
- const {
- getFlatHeaders,
- getState,
- options: {
- columns,
- enableStickyHeader,
- enableTableFooter,
- enableTableHead,
- layoutMode,
- memoMode,
- muiTableProps,
- renderCaption,
- },
- } = table;
- const { columnSizing, columnSizingInfo, columnVisibility, isFullScreen } =
- getState();
+ const {
+ getFlatHeaders,
+ getState,
+ options: {
+ columns,
+ enableStickyHeader,
+ enableTableFooter,
+ enableTableHead,
+ layoutMode,
+ memoMode,
+ muiTableProps,
+ renderCaption,
+ },
+ } = table;
+ const { columnSizing, columnSizingInfo, columnVisibility, isFullScreen } = getState();
- const tableProps = {
- ...parseFromValuesOrFunc(muiTableProps, { table }),
- ...rest,
- };
+ const tableProps = {
+ ...parseFromValuesOrFunc(muiTableProps, { table }),
+ ...rest,
+ };
- const Caption = parseFromValuesOrFunc(renderCaption, { table });
+ const Caption = parseFromValuesOrFunc(renderCaption, { table });
- const columnSizeVars = useMemo(() => {
- const headers = getFlatHeaders();
- const colSizes = {};
- for (let i = 0; i < headers.length; i++) {
- const header = headers[i];
- const colSize = header.getSize();
- colSizes[`--header-${parseCSSVarId(header.id)}-size`] = colSize;
- colSizes[`--col-${parseCSSVarId(header.column.id)}-size`] = colSize;
- }
- return colSizes;
- }, [columns, columnSizing, columnSizingInfo, columnVisibility]);
+ const columnSizeVars = useMemo(() => {
+ const headers = getFlatHeaders();
+ const colSizes = {};
+ for (let i = 0; i < headers.length; i++) {
+ const header = headers[i];
+ const colSize = header.getSize();
+ colSizes[`--header-${parseCSSVarId(header.id)}-size`] = colSize;
+ colSizes[`--col-${parseCSSVarId(header.column.id)}-size`] = colSize;
+ }
+ return colSizes;
+ }, [columns, columnSizing, columnSizingInfo, columnVisibility]);
- const columnVirtualizer = useMRT_ColumnVirtualizer(table);
+ const columnVirtualizer = useMRT_ColumnVirtualizer(table);
- const commonTableGroupProps = {
- columnVirtualizer,
- table,
- };
+ const commonTableGroupProps = {
+ columnVirtualizer,
+ table,
+ };
- return (
- ({
- display: layoutMode?.startsWith("grid") ? "grid" : undefined,
- position: "relative",
- ...parseFromValuesOrFunc(tableProps?.sx, theme),
- })}
- >
- {!!Caption && {Caption}}
- {enableTableHead && }
- {memoMode === "table-body" || columnSizingInfo.isResizingColumn ? (
-
- ) : (
-
- )}
- {/* {enableTableFooter && } */}
-
- );
+ return (
+ ({
+ display: layoutMode?.startsWith("grid") ? "grid" : undefined,
+ position: "relative",
+ ...parseFromValuesOrFunc(tableProps?.sx, theme),
+ })}
+ >
+ {!!Caption && {Caption}}
+ {enableTableHead && }
+ {memoMode === "table-body" || columnSizingInfo.isResizingColumn ? (
+
+ ) : (
+
+ )}
+ {/* {enableTableFooter && } */}
+
+ );
};
export default DataTable_Table;
diff --git a/src/core/components/DataTable/table/TableContainer.js b/src/core/components/DataTable/table/TableContainer.js
index 67ee485..3e1320e 100644
--- a/src/core/components/DataTable/table/TableContainer.js
+++ b/src/core/components/DataTable/table/TableContainer.js
@@ -5,80 +5,68 @@ import DataTable_CellActionMenu from "../menus/CellActionMenu";
import DataTable_Table from "./Table";
import DataTable_TableLoadingOverlay from "./TableLoadingOverlay";
-const useIsomorphicLayoutEffect =
- typeof window !== "undefined" ? useLayoutEffect : useEffect;
+const useIsomorphicLayoutEffect = typeof window !== "undefined" ? useLayoutEffect : useEffect;
const DataTable_TableContainer = ({ table, ...rest }) => {
- const {
- getState,
- options: { enableCellActions, enableStickyHeader, muiTableContainerProps },
- refs: { bottomToolbarRef, tableContainerRef, topToolbarRef },
- } = table;
- const { actionCell, isFullScreen, isLoading, showLoadingOverlay } =
- getState();
+ const {
+ getState,
+ options: { enableCellActions, enableStickyHeader, muiTableContainerProps },
+ refs: { bottomToolbarRef, tableContainerRef, topToolbarRef },
+ } = table;
+ const { actionCell, isFullScreen, isLoading, showLoadingOverlay } = getState();
- const loading =
- showLoadingOverlay !== false && (isLoading || showLoadingOverlay);
+ const loading = showLoadingOverlay !== false && (isLoading || showLoadingOverlay);
- const [totalToolbarHeight, setTotalToolbarHeight] = useState(0);
+ const [totalToolbarHeight, setTotalToolbarHeight] = useState(0);
- const tableContainerProps = {
- ...parseFromValuesOrFunc(muiTableContainerProps, {
- table,
- }),
- ...rest,
- };
+ const tableContainerProps = {
+ ...parseFromValuesOrFunc(muiTableContainerProps, {
+ table,
+ }),
+ ...rest,
+ };
- useIsomorphicLayoutEffect(() => {
- const topToolbarHeight =
- typeof document !== "undefined"
- ? (topToolbarRef.current?.offsetHeight ?? 0)
- : 0;
+ useIsomorphicLayoutEffect(() => {
+ const topToolbarHeight = typeof document !== "undefined" ? (topToolbarRef.current?.offsetHeight ?? 0) : 0;
- const bottomToolbarHeight =
- typeof document !== "undefined"
- ? (bottomToolbarRef?.current?.offsetHeight ?? 0)
- : 0;
+ const bottomToolbarHeight =
+ typeof document !== "undefined" ? (bottomToolbarRef?.current?.offsetHeight ?? 0) : 0;
- setTotalToolbarHeight(topToolbarHeight + bottomToolbarHeight);
- });
+ setTotalToolbarHeight(topToolbarHeight + bottomToolbarHeight);
+ });
- return (
- {
- if (node) {
- tableContainerRef.current = node;
- if (tableContainerProps?.ref) {
- //@ts-ignore
- tableContainerProps.ref.current = node;
- }
- }
- }}
- style={{
- maxHeight: isFullScreen
- ? `calc(100vh - ${totalToolbarHeight}px)`
- : undefined,
- ...tableContainerProps?.style,
- }}
- sx={(theme) => ({
- maxHeight: enableStickyHeader
- ? `clamp(350px, calc(100vh - ${totalToolbarHeight}px), 9999px)`
- : undefined,
- maxWidth: "100%",
- overflow: "auto",
- position: "relative",
- ...parseFromValuesOrFunc(tableContainerProps?.sx, theme),
- })}
- >
- {loading ? : null}
-
- {enableCellActions && actionCell && (
-
- )}
-
- );
+ return (
+ {
+ if (node) {
+ tableContainerRef.current = node;
+ if (tableContainerProps?.ref) {
+ //@ts-ignore
+ tableContainerProps.ref.current = node;
+ }
+ }
+ }}
+ style={{
+ maxHeight: isFullScreen ? `calc(100vh - ${totalToolbarHeight}px)` : undefined,
+ ...tableContainerProps?.style,
+ }}
+ sx={(theme) => ({
+ maxHeight: enableStickyHeader
+ ? `clamp(350px, calc(100vh - ${totalToolbarHeight}px), 9999px)`
+ : undefined,
+ maxWidth: "100%",
+ overflow: "auto",
+ position: "relative",
+ ...parseFromValuesOrFunc(tableContainerProps?.sx, theme),
+ })}
+ >
+ {loading ? : null}
+
+ {enableCellActions && actionCell && }
+
+ );
};
export default DataTable_TableContainer;
diff --git a/src/core/components/DataTable/table/TableLoadingOverlay.js b/src/core/components/DataTable/table/TableLoadingOverlay.js
index 946fff7..0c417dd 100644
--- a/src/core/components/DataTable/table/TableLoadingOverlay.js
+++ b/src/core/components/DataTable/table/TableLoadingOverlay.js
@@ -1,44 +1,44 @@
import { Box, CircularProgress } from "@mui/material";
const DataTable_TableLoadingOverlay = ({ table, ...rest }) => {
- const {
- options: {
- localization,
- mrtTheme: { baseBackgroundColor },
- muiCircularProgressProps,
- },
- } = table;
+ const {
+ options: {
+ localization,
+ mrtTheme: { baseBackgroundColor },
+ muiCircularProgressProps,
+ },
+ } = table;
- const circularProgressProps = {
- ...parseFromValuesOrFunc(muiCircularProgressProps, { table }),
- ...rest,
- };
+ const circularProgressProps = {
+ ...parseFromValuesOrFunc(muiCircularProgressProps, { table }),
+ ...rest,
+ };
- return (
-
- {circularProgressProps?.Component ?? (
-
- )}
-
- );
+ return (
+
+ {circularProgressProps?.Component ?? (
+
+ )}
+
+ );
};
export default DataTable_TableLoadingOverlay;
diff --git a/src/core/components/DataTable/toolbar/BottomToolbar.js b/src/core/components/DataTable/toolbar/BottomToolbar.js
index 809a390..ced2c06 100644
--- a/src/core/components/DataTable/toolbar/BottomToolbar.js
+++ b/src/core/components/DataTable/toolbar/BottomToolbar.js
@@ -1,85 +1,72 @@
-import {
- getCommonToolbarStyles,
- parseFromValuesOrFunc,
-} from "@/core/utils/utils";
+import { getCommonToolbarStyles, parseFromValuesOrFunc } from "@/core/utils/utils";
import { Box, alpha, useMediaQuery } from "@mui/material";
import DataTable_LinearProgressBar from "./LinearProgressBar";
import DataTable_TablePagination from "./TablePagination";
const DataTable_BottomToolbar = ({ table, ...rest }) => {
- const {
- getState,
- options: {
- enablePagination,
- muiBottomToolbarProps,
- positionPagination,
- renderBottomToolbarCustomActions,
- },
- refs: { bottomToolbarRef },
- } = table;
- const { isFullScreen } = getState();
+ const {
+ getState,
+ options: { enablePagination, muiBottomToolbarProps, positionPagination, renderBottomToolbarCustomActions },
+ refs: { bottomToolbarRef },
+ } = table;
+ const { isFullScreen } = getState();
- const isMobile = useMediaQuery("(max-width:720px)");
- const toolbarProps = {
- ...parseFromValuesOrFunc(muiBottomToolbarProps, { table }),
- ...rest,
- };
+ const isMobile = useMediaQuery("(max-width:720px)");
+ const toolbarProps = {
+ ...parseFromValuesOrFunc(muiBottomToolbarProps, { table }),
+ ...rest,
+ };
- const stackAlertBanner = isMobile || !!renderBottomToolbarCustomActions;
- return (
- {
- if (node) {
- bottomToolbarRef.current = node;
- if (toolbarProps?.ref) {
- // @ts-ignore
- toolbarProps.ref.current = node;
- }
- }
- }}
- sx={(theme) => ({
- ...getCommonToolbarStyles({ table, theme }),
- bottom: isFullScreen ? "0" : undefined,
- boxShadow: `0 1px 2px -1px ${alpha(theme.palette.grey[700], 0.5)} inset`,
- left: 0,
- position: isFullScreen ? "fixed" : "relative",
- right: 0,
- ...parseFromValuesOrFunc(toolbarProps?.sx, theme),
- })}
- >
-
-
- {renderBottomToolbarCustomActions ? (
- renderBottomToolbarCustomActions({ table })
- ) : (
-
- )}
+ const stackAlertBanner = isMobile || !!renderBottomToolbarCustomActions;
+ return (
{
+ if (node) {
+ bottomToolbarRef.current = node;
+ if (toolbarProps?.ref) {
+ // @ts-ignore
+ toolbarProps.ref.current = node;
+ }
+ }
+ }}
+ sx={(theme) => ({
+ ...getCommonToolbarStyles({ table, theme }),
+ bottom: isFullScreen ? "0" : undefined,
+ boxShadow: `0 1px 2px -1px ${alpha(theme.palette.grey[700], 0.5)} inset`,
+ left: 0,
+ position: isFullScreen ? "fixed" : "relative",
+ right: 0,
+ ...parseFromValuesOrFunc(toolbarProps?.sx, theme),
+ })}
>
- {enablePagination &&
- ["both", "bottom"].includes(positionPagination ?? "") && (
-
- )}
+
+
+ {renderBottomToolbarCustomActions ? renderBottomToolbarCustomActions({ table }) : }
+
+ {enablePagination && ["both", "bottom"].includes(positionPagination ?? "") && (
+
+ )}
+
+
-
-
- );
+ );
};
export default DataTable_BottomToolbar;
diff --git a/src/core/components/DataTable/toolbar/LinearProgressBar.js b/src/core/components/DataTable/toolbar/LinearProgressBar.js
index 9c40fc7..74c465f 100644
--- a/src/core/components/DataTable/toolbar/LinearProgressBar.js
+++ b/src/core/components/DataTable/toolbar/LinearProgressBar.js
@@ -2,39 +2,39 @@ import { parseFromValuesOrFunc } from "@/core/utils/utils";
import { Collapse, LinearProgress } from "@mui/material";
const DataTable_LinearProgressBar = ({ isTopToolbar, table, ...rest }) => {
- const {
- getState,
- options: { muiLinearProgressProps },
- } = table;
- const { isSaving, showProgressBars } = getState();
+ const {
+ getState,
+ options: { muiLinearProgressProps },
+ } = table;
+ const { isSaving, showProgressBars } = getState();
- const linearProgressProps = {
- ...parseFromValuesOrFunc(muiLinearProgressProps, {
- isTopToolbar,
- table,
- }),
- ...rest,
- };
+ const linearProgressProps = {
+ ...parseFromValuesOrFunc(muiLinearProgressProps, {
+ isTopToolbar,
+ table,
+ }),
+ ...rest,
+ };
- return (
-
-
-
- );
+ return (
+
+
+
+ );
};
export default DataTable_LinearProgressBar;
diff --git a/src/core/components/DataTable/toolbar/TablePagination.js b/src/core/components/DataTable/toolbar/TablePagination.js
index 7942a3a..6492b41 100644
--- a/src/core/components/DataTable/toolbar/TablePagination.js
+++ b/src/core/components/DataTable/toolbar/TablePagination.js
@@ -1,228 +1,218 @@
-import {
- flipIconStyles,
- getCommonTooltipProps,
- parseFromValuesOrFunc,
-} from "@/core/utils/utils";
+import { flipIconStyles, getCommonTooltipProps, parseFromValuesOrFunc } from "@/core/utils/utils";
import { useTheme } from "@emotion/react";
import {
- Box,
- IconButton,
- InputLabel,
- MenuItem,
- Pagination,
- PaginationItem,
- Select,
- Tooltip,
- Typography,
- useMediaQuery,
+ Box,
+ IconButton,
+ InputLabel,
+ MenuItem,
+ Pagination,
+ PaginationItem,
+ Select,
+ Tooltip,
+ Typography,
+ useMediaQuery,
} from "@mui/material";
const defaultRowsPerPage = [5, 10, 15, 20, 25, 30, 50, 100];
const DataTable_TablePagination = ({ position = "bottom", table, ...rest }) => {
- const theme = useTheme();
- const isMobile = useMediaQuery("(max-width: 720px)");
+ const theme = useTheme();
+ const isMobile = useMediaQuery("(max-width: 720px)");
- const {
- getState,
- options: {
- enableToolbarInternalActions,
- icons: { ChevronLeftIcon, ChevronRightIcon, FirstPageIcon, LastPageIcon },
- localization,
- muiPaginationProps,
- paginationDisplayMode,
- },
- } = table;
+ const {
+ getState,
+ options: {
+ enableToolbarInternalActions,
+ icons: { ChevronLeftIcon, ChevronRightIcon, FirstPageIcon, LastPageIcon },
+ localization,
+ muiPaginationProps,
+ paginationDisplayMode,
+ },
+ } = table;
- const {
- pagination: { pageIndex = 0, pageSize = 10 },
- showGlobalFilter,
- } = getState();
+ const {
+ pagination: { pageIndex = 0, pageSize = 10 },
+ showGlobalFilter,
+ } = getState();
- const paginationProps = {
- ...parseFromValuesOrFunc(muiPaginationProps, {
- table,
- }),
- ...rest,
- };
+ const paginationProps = {
+ ...parseFromValuesOrFunc(muiPaginationProps, {
+ table,
+ }),
+ ...rest,
+ };
- const totalRowCount = table.getRowCount();
- const numberOfPages = table.getPageCount();
- const showFirstLastPageButtons = numberOfPages > 2;
- const firstRowIndex = pageIndex * pageSize;
- const lastRowIndex = Math.min(pageIndex * pageSize + pageSize, totalRowCount);
+ const totalRowCount = table.getRowCount();
+ const numberOfPages = table.getPageCount();
+ const showFirstLastPageButtons = numberOfPages > 2;
+ const firstRowIndex = pageIndex * pageSize;
+ const lastRowIndex = Math.min(pageIndex * pageSize + pageSize, totalRowCount);
- const {
- SelectProps = {},
- disabled = false,
- rowsPerPageOptions = defaultRowsPerPage,
- showFirstButton = showFirstLastPageButtons,
- showLastButton = showFirstLastPageButtons,
- showRowsPerPage = true,
- ...restPaginationProps
- } = paginationProps ?? {};
+ const {
+ SelectProps = {},
+ disabled = false,
+ rowsPerPageOptions = defaultRowsPerPage,
+ showFirstButton = showFirstLastPageButtons,
+ showLastButton = showFirstLastPageButtons,
+ showRowsPerPage = true,
+ ...restPaginationProps
+ } = paginationProps ?? {};
- const disableBack = pageIndex <= 0 || disabled;
- const disableNext = lastRowIndex >= totalRowCount || disabled;
+ const disableBack = pageIndex <= 0 || disabled;
+ const disableNext = lastRowIndex >= totalRowCount || disabled;
- if (isMobile && SelectProps?.native !== false) {
- SelectProps.native = true;
- }
+ if (isMobile && SelectProps?.native !== false) {
+ SelectProps.native = true;
+ }
- const tooltipProps = getCommonTooltipProps();
+ const tooltipProps = getCommonTooltipProps();
- return (
-
- {showRowsPerPage && (
-
-
- {localization.rowsPerPage}
-
-
+ >
+ {showRowsPerPage && (
+
+
+ {localization.rowsPerPage}
+
+
+
+ )}
+ {paginationDisplayMode === "pages" ? (
+ table.setPageIndex(newPageIndex - 1)}
+ page={pageIndex + 1}
+ renderItem={(item) => (
+
+ )}
+ showFirstButton={showFirstButton}
+ showLastButton={showLastButton}
+ {...restPaginationProps}
+ />
+ ) : paginationDisplayMode === "default" ? (
+ <>
+ {`${
+ lastRowIndex === 0 ? 0 : (firstRowIndex + 1).toLocaleString()
+ }-${lastRowIndex.toLocaleString()} ${
+ localization.of
+ } ${totalRowCount.toLocaleString()}`}
+
+ {showFirstButton && (
+
+
+ table.firstPage()}
+ size="small"
+ >
+
+
+
+
+ )}
+
+
+ table.previousPage()}
+ size="small"
+ >
+
+
+
+
+
+
+ table.nextPage()}
+ size="small"
+ >
+
+
+
+
+ {showLastButton && (
+
+
+ table.lastPage()}
+ size="small"
+ >
+
+
+
+
+ )}
+
+ >
+ ) : null}
- )}
- {paginationDisplayMode === "pages" ? (
- table.setPageIndex(newPageIndex - 1)}
- page={pageIndex + 1}
- renderItem={(item) => (
-
- )}
- showFirstButton={showFirstButton}
- showLastButton={showLastButton}
- {...restPaginationProps}
- />
- ) : paginationDisplayMode === "default" ? (
- <>
- {`${
- lastRowIndex === 0 ? 0 : (firstRowIndex + 1).toLocaleString()
- }-${lastRowIndex.toLocaleString()} ${
- localization.of
- } ${totalRowCount.toLocaleString()}`}
-
- {showFirstButton && (
-
-
- table.firstPage()}
- size="small"
- >
-
-
-
-
- )}
-
-
- table.previousPage()}
- size="small"
- >
-
-
-
-
-
-
- table.nextPage()}
- size="small"
- >
-
-
-
-
- {showLastButton && (
-
-
- table.lastPage()}
- size="small"
- >
-
-
-
-
- )}
-
- >
- ) : null}
-
- );
+ );
};
export default DataTable_TablePagination;
diff --git a/src/core/components/DataTable/toolbar/TopToolbar.js b/src/core/components/DataTable/toolbar/TopToolbar.js
index a1c0aeb..6a34164 100644
--- a/src/core/components/DataTable/toolbar/TopToolbar.js
+++ b/src/core/components/DataTable/toolbar/TopToolbar.js
@@ -1,7 +1,4 @@
-import {
- getCommonToolbarStyles,
- parseFromValuesOrFunc,
-} from "@/core/utils/utils";
+import { getCommonToolbarStyles, parseFromValuesOrFunc } from "@/core/utils/utils";
import { Box, Typography, useMediaQuery } from "@mui/material";
import DataTable_LinearProgressBar from "./LinearProgressBar";
import DataTable_TablePagination from "./TablePagination";
@@ -12,145 +9,134 @@ import HideColumn from "@/core/components/DataTable/hide";
import FilterCustom from "../filter/FilterCustom";
const DataTable_TopToolbar = ({
- mutate,
- need_filter,
- table,
- columns,
- table_url,
- user_id,
- page_name,
- table_name,
- table_title,
- special_data,
- special_filter,
- setFilterData,
+ mutate,
+ need_filter,
+ table,
+ columns,
+ table_url,
+ user_id,
+ page_name,
+ table_name,
+ table_title,
+ special_data,
+ special_filter,
+ setFilterData,
}) => {
- const {
- getState,
- options: {
- enablePagination,
- enableToolbarInternalActions,
- muiTopToolbarProps,
- positionPagination,
- renderTopToolbarCustomActions,
- },
- refs: { topToolbarRef },
- } = table;
- const { isFullScreen, showGlobalFilter } = getState();
+ const {
+ getState,
+ options: {
+ enablePagination,
+ enableToolbarInternalActions,
+ muiTopToolbarProps,
+ positionPagination,
+ renderTopToolbarCustomActions,
+ },
+ refs: { topToolbarRef },
+ } = table;
+ const { isFullScreen, showGlobalFilter } = getState();
- const isMobile = useMediaQuery("(max-width:720px)");
- const isTablet = useMediaQuery("(max-width:1024px)");
+ const isMobile = useMediaQuery("(max-width:720px)");
+ const isTablet = useMediaQuery("(max-width:1024px)");
- const toolbarProps = parseFromValuesOrFunc(muiTopToolbarProps, { table });
+ const toolbarProps = parseFromValuesOrFunc(muiTopToolbarProps, { table });
- const stackAlertBanner =
- isMobile ||
- !!renderTopToolbarCustomActions ||
- (showGlobalFilter && isTablet);
+ const stackAlertBanner = isMobile || !!renderTopToolbarCustomActions || (showGlobalFilter && isTablet);
- return (
- {
- topToolbarRef.current = ref;
- if (toolbarProps?.ref) {
- // @ts-ignore
- toolbarProps.ref.current = ref;
- }
- }}
- sx={(theme) => ({
- ...getCommonToolbarStyles({ table, theme }),
- position: isFullScreen ? "sticky" : "relative",
- top: isFullScreen ? "0" : undefined,
- ...parseFromValuesOrFunc(toolbarProps?.sx, theme),
- })}
- >
-
+ return (
- {renderTopToolbarCustomActions?.({ table })}
-
-
- {table_title || ""}
-
- {enableToolbarInternalActions && (
- {
+ topToolbarRef.current = ref;
+ if (toolbarProps?.ref) {
+ // @ts-ignore
+ toolbarProps.ref.current = ref;
+ }
}}
- >
- {!special_data && (
- <>
-
-
- >
+ sx={(theme) => ({
+ ...getCommonToolbarStyles({ table, theme }),
+ position: isFullScreen ? "sticky" : "relative",
+ top: isFullScreen ? "0" : undefined,
+ ...parseFromValuesOrFunc(toolbarProps?.sx, theme),
+ })}
+ >
+
+
+ {renderTopToolbarCustomActions?.({ table })}
+
+
+ {table_title || ""}
+
+ {enableToolbarInternalActions && (
+
+ {!special_data && (
+ <>
+
+
+ >
+ )}
+
+ {need_filter && (
+
+ )}
+ {special_filter && setFilterData && (
+
+ )}
+
+ )}
+
+ {enablePagination && ["both", "top"].includes(positionPagination ?? "") && (
+
)}
-
- {need_filter && (
-
- )}
- {special_filter && setFilterData && (
-
- )}
-
- )}
-
- {enablePagination &&
- ["both", "top"].includes(positionPagination ?? "") && (
-
- )}
-
-
- );
+
+
+ );
};
export default DataTable_TopToolbar;
diff --git a/src/core/components/DataTable/update/UpdateTable.jsx b/src/core/components/DataTable/update/UpdateTable.jsx
index 93b54b7..8a60c8d 100644
--- a/src/core/components/DataTable/update/UpdateTable.jsx
+++ b/src/core/components/DataTable/update/UpdateTable.jsx
@@ -3,17 +3,17 @@ import { IconButton, Tooltip } from "@mui/material";
import RestartAltIcon from "@mui/icons-material/RestartAlt";
function UpdateTable({ mutate }) {
- const update = () => {
- mutate();
- };
+ const update = () => {
+ mutate();
+ };
- return (
-
-
-
-
-
- );
+ return (
+
+
+
+
+
+ );
}
export default UpdateTable;
diff --git a/src/core/components/DataTableWithAuth.jsx b/src/core/components/DataTableWithAuth.jsx
index 2ef70ab..3363495 100644
--- a/src/core/components/DataTableWithAuth.jsx
+++ b/src/core/components/DataTableWithAuth.jsx
@@ -2,7 +2,7 @@ import DataTable from "@/core/components/DataTable";
import { useAuth } from "@/lib/contexts/auth";
const DataTableWithAuth = (props) => {
- const { user } = useAuth();
- return ;
+ const { user } = useAuth();
+ return ;
};
export default DataTableWithAuth;
diff --git a/src/core/components/DialogTransition.jsx b/src/core/components/DialogTransition.jsx
index de09a75..ad476e8 100644
--- a/src/core/components/DialogTransition.jsx
+++ b/src/core/components/DialogTransition.jsx
@@ -1,8 +1,6 @@
import { forwardRef } from "react";
import { Slide } from "@mui/material";
-export const DialogTransition = forwardRef(
- function DialogTransition(props, ref) {
+export const DialogTransition = forwardRef(function DialogTransition(props, ref) {
return ;
- },
-);
+});
diff --git a/src/core/components/FilterDrawer/FilterController.jsx b/src/core/components/FilterDrawer/FilterController.jsx
index b8121d2..4a6a125 100644
--- a/src/core/components/FilterDrawer/FilterController.jsx
+++ b/src/core/components/FilterDrawer/FilterController.jsx
@@ -2,24 +2,24 @@ import { Controller } from "react-hook-form";
import FilterField from "./FilterField";
const FilterController = ({ item, control, reset, errors }) => {
- return (
- {
- return (
- reset()}
- errors={errors}
- />
- );
- }}
- />
- );
+ return (
+ {
+ return (
+ reset()}
+ errors={errors}
+ />
+ );
+ }}
+ />
+ );
};
export default FilterController;
diff --git a/src/core/components/FilterDrawer/FilterControllerWithDependency.jsx b/src/core/components/FilterDrawer/FilterControllerWithDependency.jsx
index 699d592..361941f 100644
--- a/src/core/components/FilterDrawer/FilterControllerWithDependency.jsx
+++ b/src/core/components/FilterDrawer/FilterControllerWithDependency.jsx
@@ -2,26 +2,26 @@ import { Controller, useWatch } from "react-hook-form";
import FilterField from "./FilterField";
const FilterControllerWithDependency = ({ item, control, reset, errors }) => {
- const dependencyField = useWatch({ control, name: item.dependencyId });
+ const dependencyField = useWatch({ control, name: item.dependencyId });
- return (
- {
- return (
- reset()}
- errors={errors}
- />
- );
- }}
- />
- );
+ return (
+ {
+ return (
+ reset()}
+ errors={errors}
+ />
+ );
+ }}
+ />
+ );
};
export default FilterControllerWithDependency;
diff --git a/src/core/components/FilterDrawer/FilterField.jsx b/src/core/components/FilterDrawer/FilterField.jsx
index 7210315..ed86df8 100644
--- a/src/core/components/FilterDrawer/FilterField.jsx
+++ b/src/core/components/FilterDrawer/FilterField.jsx
@@ -8,98 +8,96 @@ import CustomTextField from "./fieldsType/CustomTextField";
import FilterOptionList from "./FilterOptionList";
const filterModeOptionFa = {
- equals: "برابر",
- notEquals: "نابرابر",
- contains: "شامل",
- lessThan: "کوچکتر",
- greaterThan: "بزرگتر",
- fuzzy: "فازی",
- between: "مابین",
+ equals: "برابر",
+ notEquals: "نابرابر",
+ contains: "شامل",
+ lessThan: "کوچکتر",
+ greaterThan: "بزرگتر",
+ fuzzy: "فازی",
+ between: "مابین",
};
function FilterField({
- item,
- filterParameters,
- handleChange,
- handleBlur,
- dependencyFieldValue,
- setFieldValue,
- resetForm,
- errors,
+ item,
+ filterParameters,
+ handleChange,
+ handleBlur,
+ dependencyFieldValue,
+ setFieldValue,
+ resetForm,
+ errors,
}) {
- const [anchorEl, setAnchorEl] = useState(null);
- const defaultFilterTranslation =
- filterModeOptionFa[filterParameters.filterMode] ||
- filterParameters.filterMode;
+ const [anchorEl, setAnchorEl] = useState(null);
+ const defaultFilterTranslation = filterModeOptionFa[filterParameters.filterMode] || filterParameters.filterMode;
- const handleOpenFilterBox = (event) => {
- setAnchorEl(event.currentTarget);
- };
-
- const renderField = () => {
- const commonProps = {
- item,
- filterParameters,
- defaultFilterTranslation,
- handleOpenFilterBox,
- dependencyFieldValue,
- setFieldValue,
- handleChange,
- handleBlur,
- errors,
+ const handleOpenFilterBox = (event) => {
+ setAnchorEl(event.currentTarget);
};
- switch (filterParameters.datatype) {
- case "numeric":
- if (filterParameters.filterMode === "between") {
- return ;
- }
- if (filterParameters.filterMode === "equals") {
- return item.SelectComponent ? (
-
- ) : (
-
- );
- }
- break;
- case "date":
- if (filterParameters.filterMode === "equals") {
- return ;
- }
- if (filterParameters.filterMode === "between") {
- return ;
- }
- break;
+ const renderField = () => {
+ const commonProps = {
+ item,
+ filterParameters,
+ defaultFilterTranslation,
+ handleOpenFilterBox,
+ dependencyFieldValue,
+ setFieldValue,
+ handleChange,
+ handleBlur,
+ errors,
+ };
- case "array":
- if (filterParameters.filterMode === "equals") {
- return ;
+ switch (filterParameters.datatype) {
+ case "numeric":
+ if (filterParameters.filterMode === "between") {
+ return ;
+ }
+ if (filterParameters.filterMode === "equals") {
+ return item.SelectComponent ? (
+
+ ) : (
+
+ );
+ }
+ break;
+ case "date":
+ if (filterParameters.filterMode === "equals") {
+ return ;
+ }
+ if (filterParameters.filterMode === "between") {
+ return ;
+ }
+ break;
+
+ case "array":
+ if (filterParameters.filterMode === "equals") {
+ return ;
+ }
+ break;
+
+ default:
+ return ;
}
- break;
+ };
- default:
- return ;
- }
- };
-
- return (
- <>
- {renderField()}
- {Array.isArray(item.filterModeOptions) && (
-
- )}
- >
- );
+ return (
+ <>
+ {renderField()}
+ {Array.isArray(item.filterModeOptions) && (
+
+ )}
+ >
+ );
}
export default FilterField;
diff --git a/src/core/components/FilterDrawer/FilterOptionList.jsx b/src/core/components/FilterDrawer/FilterOptionList.jsx
index 19d4d0b..a8571c7 100644
--- a/src/core/components/FilterDrawer/FilterOptionList.jsx
+++ b/src/core/components/FilterDrawer/FilterOptionList.jsx
@@ -4,55 +4,49 @@ import { ListItem, Menu } from "@mui/material";
import { useState } from "react";
function FilterOptionList({
- filterType,
- filterOption,
- filterParameters,
- anchorEl,
- filterModeOptionFa,
- setAnchorEl,
- handleChange,
+ filterType,
+ filterOption,
+ filterParameters,
+ anchorEl,
+ filterModeOptionFa,
+ setAnchorEl,
+ handleChange,
}) {
- const [selectedFilter, setSelectedFilter] = useState(filterType);
+ const [selectedFilter, setSelectedFilter] = useState(filterType);
- const handleChangeItem = (event, index) => {
- handleChange({
- ...filterParameters,
- value: filterOption[index] === "between" ? ["", ""] : "",
- filterMode: filterOption[index],
- });
- setSelectedFilter(filterOption[index]);
- setAnchorEl(null);
- };
+ const handleChangeItem = (event, index) => {
+ handleChange({
+ ...filterParameters,
+ value: filterOption[index] === "between" ? ["", ""] : "",
+ filterMode: filterOption[index],
+ });
+ setSelectedFilter(filterOption[index]);
+ setAnchorEl(null);
+ };
- const handleCloseFilterBox = () => {
- setAnchorEl(null);
- };
+ const handleCloseFilterBox = () => {
+ setAnchorEl(null);
+ };
- return (
-
- );
+ return (
+
+ );
}
export default FilterOptionList;
diff --git a/src/core/components/FilterDrawer/fieldsType/CustomDate/CustomDatePicker.jsx b/src/core/components/FilterDrawer/fieldsType/CustomDate/CustomDatePicker.jsx
index 85e2b08..5666a43 100644
--- a/src/core/components/FilterDrawer/fieldsType/CustomDate/CustomDatePicker.jsx
+++ b/src/core/components/FilterDrawer/fieldsType/CustomDate/CustomDatePicker.jsx
@@ -2,30 +2,22 @@ import React from "react";
import MuiDatePicker from "@/core/components/DataTable/filter/fieldsType/CustomDate/MuiDatePicker";
import { Typography } from "@mui/material";
-function CustomDatePicker({
- column,
- filterParameters,
- defaultFilterTranslation,
- handleChange,
-}) {
- return (
- {
- handleChange({ ...filterParameters, value: formattedDate });
- }}
- placeholder={column.header}
- helperText={
- theme.palette.primary.main }}
- >
- نوع فیلتر: {defaultFilterTranslation} (تاریخ)
-
- }
- />
- );
+function CustomDatePicker({ column, filterParameters, defaultFilterTranslation, handleChange }) {
+ return (
+ {
+ handleChange({ ...filterParameters, value: formattedDate });
+ }}
+ placeholder={column.header}
+ helperText={
+ theme.palette.primary.main }}>
+ نوع فیلتر: {defaultFilterTranslation} (تاریخ)
+
+ }
+ />
+ );
}
export default CustomDatePicker;
diff --git a/src/core/components/FilterDrawer/fieldsType/CustomDate/CustomDatePickerRange.jsx b/src/core/components/FilterDrawer/fieldsType/CustomDate/CustomDatePickerRange.jsx
index e10be45..bb36d02 100644
--- a/src/core/components/FilterDrawer/fieldsType/CustomDate/CustomDatePickerRange.jsx
+++ b/src/core/components/FilterDrawer/fieldsType/CustomDate/CustomDatePickerRange.jsx
@@ -4,57 +4,44 @@ import React from "react";
import { Box, Typography } from "@mui/material";
import MuiDatePicker from "@/core/components/DataTable/filter/fieldsType/CustomDate/MuiDatePicker";
-function CustomDatePickerRange({
- item,
- filterParameters,
- defaultFilterTranslation,
- handleChange,
- errors,
-}) {
- return (
-
- {
- handleChange({
- ...filterParameters,
- value: [formattedDate, filterParameters.value[1]],
- });
- }}
- maxDate={filterParameters.value[1]}
- placeholder={`از تاریخ`}
- helperText={
- theme.palette.primary.main }}
- >
- نوع فیلتر: {defaultFilterTranslation} (تاریخ)
-
- }
- />
- {
- handleChange({
- ...filterParameters,
- value: [filterParameters.value[0], formattedDate],
- });
- }}
- minDate={filterParameters.value[0]}
- placeholder={`تا تاریخ`}
- helperText={
- errors?.[`${item.id}`]?.value
- ? errors?.[`${item.id}`]?.value.message
- : null
- }
- error={Boolean(errors?.[`${item.id}`]?.value)}
- />
-
- );
+function CustomDatePickerRange({ item, filterParameters, defaultFilterTranslation, handleChange, errors }) {
+ return (
+
+ {
+ handleChange({
+ ...filterParameters,
+ value: [formattedDate, filterParameters.value[1]],
+ });
+ }}
+ maxDate={filterParameters.value[1]}
+ placeholder={`از تاریخ`}
+ helperText={
+ theme.palette.primary.main }}>
+ نوع فیلتر: {defaultFilterTranslation} (تاریخ)
+
+ }
+ />
+ {
+ handleChange({
+ ...filterParameters,
+ value: [filterParameters.value[0], formattedDate],
+ });
+ }}
+ minDate={filterParameters.value[0]}
+ placeholder={`تا تاریخ`}
+ helperText={errors?.[`${item.id}`]?.value ? errors?.[`${item.id}`]?.value.message : null}
+ error={Boolean(errors?.[`${item.id}`]?.value)}
+ />
+
+ );
}
export default CustomDatePickerRange;
diff --git a/src/core/components/FilterDrawer/fieldsType/CustomDate/MuiDatePicker.jsx b/src/core/components/FilterDrawer/fieldsType/CustomDate/MuiDatePicker.jsx
index f98e929..d2d9df0 100644
--- a/src/core/components/FilterDrawer/fieldsType/CustomDate/MuiDatePicker.jsx
+++ b/src/core/components/FilterDrawer/fieldsType/CustomDate/MuiDatePicker.jsx
@@ -6,81 +6,67 @@ import { Box, FormHelperText, IconButton, InputAdornment } from "@mui/material";
import ClearIcon from "@mui/icons-material/Clear";
import moment from "jalali-moment";
-function MuiDatePicker({
- label,
- value,
- setFieldValue,
- name,
- minDate,
- maxDate,
- helperText,
- placeholder,
- error,
-}) {
- return (
-
-
- {
- const date = new Date(value);
- const formattedDate = moment(date)
- .locale("en")
- .format("YYYY-MM-DD");
- setFieldValue(name, formattedDate);
- }}
- minDate={minDate ? new Date(minDate) : null}
- maxDate={maxDate ? new Date(maxDate) : null}
- slotProps={{
- textField: {
- size: "small",
- error: error,
- placeholder: placeholder,
- InputProps: {
- endAdornment: (
-
- {
- event.stopPropagation();
- setFieldValue(name, "");
- }}
- sx={{
- color: "#bfbfbf",
- "&:hover": {
- backgroundColor: "rgba(189, 189, 189, 0.1)",
- color: "#363434",
+function MuiDatePicker({ label, value, setFieldValue, name, minDate, maxDate, helperText, placeholder, error }) {
+ return (
+
+
+ {
+ const date = new Date(value);
+ const formattedDate = moment(date).locale("en").format("YYYY-MM-DD");
+ setFieldValue(name, formattedDate);
+ }}
+ minDate={minDate ? new Date(minDate) : null}
+ maxDate={maxDate ? new Date(maxDate) : null}
+ slotProps={{
+ textField: {
+ size: "small",
+ error: error,
+ placeholder: placeholder,
+ InputProps: {
+ endAdornment: (
+
+ {
+ event.stopPropagation();
+ setFieldValue(name, "");
+ }}
+ sx={{
+ color: "#bfbfbf",
+ "&:hover": {
+ backgroundColor: "rgba(189, 189, 189, 0.1)",
+ color: "#363434",
+ },
+ }}
+ >
+
+
+
+ ),
+ },
+ InputLabelProps: {
+ shrink: true,
+ },
},
- }}
- >
-
-
-
- ),
- },
- InputLabelProps: {
- shrink: true,
- },
- },
- }}
- />
- {/*
+ }}
+ />
+ {/*
{helperText ? helperText : ""}
*/}
-
-
- );
+
+
+ );
}
export default MuiDatePicker;
diff --git a/src/core/components/FilterDrawer/fieldsType/CustomSelect.jsx b/src/core/components/FilterDrawer/fieldsType/CustomSelect.jsx
index 24e6b37..61172e6 100644
--- a/src/core/components/FilterDrawer/fieldsType/CustomSelect.jsx
+++ b/src/core/components/FilterDrawer/fieldsType/CustomSelect.jsx
@@ -1,38 +1,30 @@
"use client";
-import {
- FormControl,
- InputLabel,
- MenuItem,
- OutlinedInput,
- Select,
-} from "@mui/material";
+import { FormControl, InputLabel, MenuItem, OutlinedInput, Select } from "@mui/material";
function CustomSelect({ item, filterParameters, handleChange }) {
- return (
-
-
- {item.header}
-
- }
- size="small"
- onChange={(e) =>
- handleChange({ ...filterParameters, value: e.target.value })
- }
- displayEmpty
- >
- {item.selectOption().map((option) => (
-
- ))}
-
-
- );
+ return (
+
+
+ {item.header}
+
+ }
+ size="small"
+ onChange={(e) => handleChange({ ...filterParameters, value: e.target.value })}
+ displayEmpty
+ >
+ {item.selectOption().map((option) => (
+
+ ))}
+
+
+ );
}
export default CustomSelect;
diff --git a/src/core/components/FilterDrawer/fieldsType/CustomSelectByDependency.jsx b/src/core/components/FilterDrawer/fieldsType/CustomSelectByDependency.jsx
index 6db3d11..69536cd 100644
--- a/src/core/components/FilterDrawer/fieldsType/CustomSelectByDependency.jsx
+++ b/src/core/components/FilterDrawer/fieldsType/CustomSelectByDependency.jsx
@@ -1,44 +1,30 @@
"use client";
-import {
- FormControl,
- InputLabel,
- MenuItem,
- OutlinedInput,
- Select,
-} from "@mui/material";
-function CustomSelectByDependency({
- item,
- filterParameters,
- value,
- handleChange,
- selectOption,
-}) {
- return (
-
-
- {item.header}
-
- }
- onChange={(e) =>
- handleChange({ ...filterParameters, value: e.target.value })
- }
- displayEmpty
- >
- {selectOption.map((option) => (
-
- ))}
-
-
- );
+import { FormControl, InputLabel, MenuItem, OutlinedInput, Select } from "@mui/material";
+function CustomSelectByDependency({ item, filterParameters, value, handleChange, selectOption }) {
+ return (
+
+
+ {item.header}
+
+ }
+ onChange={(e) => handleChange({ ...filterParameters, value: e.target.value })}
+ displayEmpty
+ >
+ {selectOption.map((option) => (
+
+ ))}
+
+
+ );
}
export default CustomSelectByDependency;
diff --git a/src/core/components/FilterDrawer/fieldsType/CustomSelectMultiple.jsx b/src/core/components/FilterDrawer/fieldsType/CustomSelectMultiple.jsx
index 4602f8c..c1fd7fa 100644
--- a/src/core/components/FilterDrawer/fieldsType/CustomSelectMultiple.jsx
+++ b/src/core/components/FilterDrawer/fieldsType/CustomSelectMultiple.jsx
@@ -1,57 +1,55 @@
"use client";
import {
- Box,
- Chip,
- FormControl,
- FormHelperText,
- InputLabel,
- MenuItem,
- OutlinedInput,
- Select,
- Typography,
+ Box,
+ Chip,
+ FormControl,
+ FormHelperText,
+ InputLabel,
+ MenuItem,
+ OutlinedInput,
+ Select,
+ Typography,
} from "@mui/material";
function CustomSelectMultiple({ item, filterParameters, handleChange }) {
- const selectOption = item.selectOption;
+ const selectOption = item.selectOption;
- const getLabelForValue = (value) => {
- const option = selectOption.find((opt) => opt.value === value);
- return option ? option.label : value;
- };
+ const getLabelForValue = (value) => {
+ const option = selectOption.find((opt) => opt.value === value);
+ return option ? option.label : value;
+ };
- return (
-
-
- {item.header}
-
-
-
- );
+ return (
+
+
+ {item.header}
+
+
+
+ );
}
export default CustomSelectMultiple;
diff --git a/src/core/components/FilterDrawer/fieldsType/CustomTextField.jsx b/src/core/components/FilterDrawer/fieldsType/CustomTextField.jsx
index e0e361d..86a9c57 100644
--- a/src/core/components/FilterDrawer/fieldsType/CustomTextField.jsx
+++ b/src/core/components/FilterDrawer/fieldsType/CustomTextField.jsx
@@ -1,41 +1,29 @@
import { InputAdornment, TextField, Typography } from "@mui/material";
import FilterListIcon from "@mui/icons-material/FilterList";
-function CustomTextField({
- item,
- filterParameters,
- handleOpenFilterBox,
- handleBlur,
- handleChange,
-}) {
- return (
-
- handleChange({ ...filterParameters, value: e.target.value })
- }
- onBlur={handleBlur}
- fullWidth
- variant="outlined"
- size="small"
- sx={{ my: 1 }}
- InputProps={{
- endAdornment: (
-
-
-
- ),
- }}
- InputLabelProps={{ shrink: true }}
- />
- );
+function CustomTextField({ item, filterParameters, handleOpenFilterBox, handleBlur, handleChange }) {
+ return (
+ handleChange({ ...filterParameters, value: e.target.value })}
+ onBlur={handleBlur}
+ fullWidth
+ variant="outlined"
+ size="small"
+ sx={{ my: 1 }}
+ InputProps={{
+ endAdornment: (
+
+
+
+ ),
+ }}
+ InputLabelProps={{ shrink: true }}
+ />
+ );
}
export default CustomTextField;
diff --git a/src/core/components/FilterDrawer/fieldsType/CustomTextFieldRange.jsx b/src/core/components/FilterDrawer/fieldsType/CustomTextFieldRange.jsx
index 84fd028..f892564 100644
--- a/src/core/components/FilterDrawer/fieldsType/CustomTextFieldRange.jsx
+++ b/src/core/components/FilterDrawer/fieldsType/CustomTextFieldRange.jsx
@@ -2,84 +2,73 @@ import { Box, InputAdornment, TextField, Typography } from "@mui/material";
import FilterListIcon from "@mui/icons-material/FilterList";
function CustomTextFieldRange({
- item,
- defaultFilterTranslation,
- handleOpenFilterBox,
- handleChange,
- filterParameters,
- handleBlur,
- errors,
+ item,
+ defaultFilterTranslation,
+ handleOpenFilterBox,
+ handleChange,
+ filterParameters,
+ handleBlur,
+ errors,
}) {
- return (
-
-
- handleChange({
- ...filterParameters,
- value: [e.target.value, filterParameters.value[1]],
- })
- }
- onBlur={handleBlur}
- label={از {item.header}}
- value={filterParameters.value[0]}
- fullWidth
- error={
- touched?.[`${item.id}`]?.value &&
- Boolean(errors?.[`${item.id}`]?.value)
- }
- helperText={
- theme.palette.primary.main,
- fontWeight: "bold",
- }}
- >
- نوع فیلتر: {defaultFilterTranslation}
-
- }
- variant="outlined"
- size="small"
- sx={{ my: 1, marginRight: 1 }}
- />
-
- handleChange({
- ...filterParameters,
- value: [filterParameters.value[0], e.target.value],
- })
- }
- onBlur={handleBlur}
- error={Boolean(errors?.[`${item.id}`]?.value)}
- helperText={
- errors?.[`${item.id}`]?.value
- ? errors?.[`${item.id}`]?.value.message
- : null
- }
- label={تا {item.header}}
- value={filterParameters.value[1]}
- fullWidth
- variant="outlined"
- size="small"
- sx={{ my: 1 }}
- InputProps={{
- endAdornment: (
-
-
-
- ),
- }}
- />
-
- );
+ return (
+
+
+ handleChange({
+ ...filterParameters,
+ value: [e.target.value, filterParameters.value[1]],
+ })
+ }
+ onBlur={handleBlur}
+ label={از {item.header}}
+ value={filterParameters.value[0]}
+ fullWidth
+ error={touched?.[`${item.id}`]?.value && Boolean(errors?.[`${item.id}`]?.value)}
+ helperText={
+ theme.palette.primary.main,
+ fontWeight: "bold",
+ }}
+ >
+ نوع فیلتر: {defaultFilterTranslation}
+
+ }
+ variant="outlined"
+ size="small"
+ sx={{ my: 1, marginRight: 1 }}
+ />
+
+ handleChange({
+ ...filterParameters,
+ value: [filterParameters.value[0], e.target.value],
+ })
+ }
+ onBlur={handleBlur}
+ error={Boolean(errors?.[`${item.id}`]?.value)}
+ helperText={errors?.[`${item.id}`]?.value ? errors?.[`${item.id}`]?.value.message : null}
+ label={تا {item.header}}
+ value={filterParameters.value[1]}
+ fullWidth
+ variant="outlined"
+ size="small"
+ sx={{ my: 1 }}
+ InputProps={{
+ endAdornment: (
+
+
+
+ ),
+ }}
+ />
+
+ );
}
export default CustomTextFieldRange;
diff --git a/src/core/components/FilterDrawer/index.jsx b/src/core/components/FilterDrawer/index.jsx
index 318f048..69cca10 100644
--- a/src/core/components/FilterDrawer/index.jsx
+++ b/src/core/components/FilterDrawer/index.jsx
@@ -8,15 +8,14 @@ import FilterController from "./FilterController";
import FilterControllerWithDependency from "./FilterControllerWithDependency";
const headerSx = {
- display: "flex",
- alignItems: "center",
- justifyContent: "space-between",
- px: 2,
- py: 1,
- backgroundColor: (theme) => theme.palette.primary.main,
- boxShadow:
- "rgba(0, 0, 0, 0.19) 0px 10px 20px, rgba(0, 0, 0, 0.23) 0px 6px 6px",
- maxWidth: "450px",
+ display: "flex",
+ alignItems: "center",
+ justifyContent: "space-between",
+ px: 2,
+ py: 1,
+ backgroundColor: (theme) => theme.palette.primary.main,
+ boxShadow: "rgba(0, 0, 0, 0.19) 0px 10px 20px, rgba(0, 0, 0, 0.23) 0px 6px 6px",
+ maxWidth: "450px",
};
const headerTitleSx = { display: "flex", alignItems: "center" };
@@ -25,136 +24,135 @@ const iconButtonSx = { color: "#fff" };
const formContainerSx = { px: 2, py: 3 };
const footerSx = {
- display: "flex",
- justifyContent: "center",
- alignItems: "center",
- pb: 2,
+ display: "flex",
+ justifyContent: "center",
+ alignItems: "center",
+ pb: 2,
};
const submitButtonSx = {
- px: 8,
- boxShadow:
- "rgba(0, 0, 0, 0.23) 0px 6px 6px, rgba(0, 0, 0, 0.19) 10px 0px 20px",
- backgroundColor: "primary2",
- ":hover": { backgroundColor: "primary2" },
+ px: 8,
+ boxShadow: "rgba(0, 0, 0, 0.23) 0px 6px 6px, rgba(0, 0, 0, 0.19) 10px 0px 20px",
+ backgroundColor: "primary2",
+ ":hover": { backgroundColor: "primary2" },
};
const validationSchema = Yup.object({
- activity_date_time: Yup.array()
- .of(Yup.string().nullable())
- .test({
- test(value, ctx) {
- const [start, end] = value || ["", ""];
- if ((start && !end) || (!start && end)) {
- return ctx.createError({ message: "این بخش را تکمیل نمایید" });
- }
- return true;
- },
- }),
+ activity_date_time: Yup.array()
+ .of(Yup.string().nullable())
+ .test({
+ test(value, ctx) {
+ const [start, end] = value || ["", ""];
+ if ((start && !end) || (!start && end)) {
+ return ctx.createError({ message: "این بخش را تکمیل نمایید" });
+ }
+ return true;
+ },
+ }),
});
const FilterDrawer = ({ defaultValues, setFilterData, closeDrawer }) => {
- const {
- control,
- errors,
- reset,
- handleSubmit,
- formState: { isDirty },
- } = useForm({
- defaultValues,
- resolver: yupResolver(
- Yup.object(
- Object.keys(defaultValues).reduce((acc, key) => {
- const initialValue = defaultValues[key];
- if (initialValue.filterMode === "between") {
- acc[key] = Yup.object().shape({
- value: Yup.array()
- .of(Yup.string().nullable())
- .test({
- test(value, ctx) {
- const [start, end] = value || ["", ""];
- if (
- initialValue.datatype === "numeric" &&
- parseInt(end, 10) <= parseInt(start, 10)
- ) {
- return ctx.createError({
- message: `مقدار وارده باید بیشتر از (${start}) باشد`,
- });
- } else if ((start && !end) || (!start && end)) {
- return ctx.createError({
- message: "این بخش را تکمیل نمایید",
- });
+ const {
+ control,
+ errors,
+ reset,
+ handleSubmit,
+ formState: { isDirty },
+ } = useForm({
+ defaultValues,
+ resolver: yupResolver(
+ Yup.object(
+ Object.keys(defaultValues).reduce((acc, key) => {
+ const initialValue = defaultValues[key];
+ if (initialValue.filterMode === "between") {
+ acc[key] = Yup.object().shape({
+ value: Yup.array()
+ .of(Yup.string().nullable())
+ .test({
+ test(value, ctx) {
+ const [start, end] = value || ["", ""];
+ if (
+ initialValue.datatype === "numeric" &&
+ parseInt(end, 10) <= parseInt(start, 10)
+ ) {
+ return ctx.createError({
+ message: `مقدار وارده باید بیشتر از (${start}) باشد`,
+ });
+ } else if ((start && !end) || (!start && end)) {
+ return ctx.createError({
+ message: "این بخش را تکمیل نمایید",
+ });
+ }
+ return true;
+ },
+ }),
+ });
}
- return true;
- },
- }),
- });
- }
- return acc;
- }, {}),
- ),
- ),
- mode: "all",
- });
+ return acc;
+ }, {})
+ )
+ ),
+ mode: "all",
+ });
- const onSubmit = (data) => {
- setFilterData(data);
- closeDrawer();
- };
+ const onSubmit = (data) => {
+ setFilterData(data);
+ closeDrawer();
+ };
- return (
- <>
-
-
-
-
- فیلتر
-
-
-
-
-
-
-
-
-
- >
- );
+
+
+
+ >
+ );
};
export default FilterDrawer;
diff --git a/src/core/components/LoadingHardPage.jsx b/src/core/components/LoadingHardPage.jsx
index 4e9125a..5c61646 100644
--- a/src/core/components/LoadingHardPage.jsx
+++ b/src/core/components/LoadingHardPage.jsx
@@ -4,79 +4,65 @@ import SvgLoading from "@/core/components/svgs/SvgLoading";
import { Backdrop, Box, Stack, styled, useTheme } from "@mui/material";
const LoadingImage = styled(Box)({
- "@keyframes load": {
- "0%": {
- transform: "scale(1)",
+ "@keyframes load": {
+ "0%": {
+ transform: "scale(1)",
+ },
+ "50%": {
+ transform: "scale(.5)",
+ },
+ "100%": {
+ transform: "scale(1)",
+ },
},
- "50%": {
- transform: "scale(.5)",
- },
- "100%": {
- transform: "scale(1)",
- },
- },
- animation: "load 2s infinite",
+ animation: "load 2s infinite",
});
const LoadingHardPage = ({
- children,
- loading,
- authState = false,
- sx = {},
- icon = null,
- width = 200,
- height = 200,
- label = "",
+ children,
+ loading,
+ authState = false,
+ sx = {},
+ icon = null,
+ width = 200,
+ height = 200,
+ label = "",
}) => {
- const theme = useTheme();
- return (
- <>
- theme.zIndex.drawer + 1,
- ...sx,
- }}
- open={loading}
- >
-
- {authState ? (
-
- {icon ? (
-
- {icon}
-
- ) : (
-
- )}
-
- ) : (
-
- {icon ? (
-
- {icon}
-
- ) : (
-
- )}
-
- )}
-
- {label}
-
-
-
- {children}
- >
- );
+ const theme = useTheme();
+ return (
+ <>
+ theme.zIndex.drawer + 1,
+ ...sx,
+ }}
+ open={loading}
+ >
+
+ {authState ? (
+
+ {icon ? (
+ {icon}
+ ) : (
+
+ )}
+
+ ) : (
+
+ {icon ? (
+ {icon}
+ ) : (
+
+ )}
+
+ )}
+ {label}
+
+
+ {children}
+ >
+ );
};
export default LoadingHardPage;
diff --git a/src/core/components/LtrTextField.jsx b/src/core/components/LtrTextField.jsx
index fd58d17..ea17042 100644
--- a/src/core/components/LtrTextField.jsx
+++ b/src/core/components/LtrTextField.jsx
@@ -1,10 +1,10 @@
import { styled, TextField } from "@mui/material";
const LtrTextField = styled(TextField)`
- .MuiInputBase-input {
- /* @noflip */
- direction: ltr;
- }
+ .MuiInputBase-input {
+ /* @noflip */
+ direction: ltr;
+ }
`;
export default LtrTextField;
diff --git a/src/core/components/NotificationDesign/AskForKeepData.jsx b/src/core/components/NotificationDesign/AskForKeepData.jsx
index 3fe7f2e..18eceb3 100644
--- a/src/core/components/NotificationDesign/AskForKeepData.jsx
+++ b/src/core/components/NotificationDesign/AskForKeepData.jsx
@@ -7,88 +7,66 @@ import { toast } from "react-toastify";
import useTableSetting from "@/lib/hooks/useTableSetting";
import { flattenObjectOfObjects } from "@/core/utils/flattenObjectOfObjects";
-function AskForKeepData({
- filterData,
- sortData,
- hideData,
- user_id,
- page_name,
- table_name,
- columns,
-}) {
- const { filterAction, sortAction, hideAction } = useTableSetting();
+function AskForKeepData({ filterData, sortData, hideData, user_id, page_name, table_name, columns }) {
+ const { filterAction, sortAction, hideAction } = useTableSetting();
- const filteredHideData = Object.fromEntries(
- Object.entries(hideData).filter(([key, value]) => value === false),
- );
+ const filteredHideData = Object.fromEntries(Object.entries(hideData).filter(([key, value]) => value === false));
- const flattenHideData = flattenObjectOfObjects(filteredHideData);
+ const flattenHideData = flattenObjectOfObjects(filteredHideData);
- const onSaveFilter = () => {
- const filteredItems = Object.keys(filterData)
- .map((key) => {
- const value = filterData[key].value;
- if (
- value !== "" &&
- !(
- Array.isArray(value) &&
- (value.length === 0 ||
- (value.length === 2 && value[0] === "" && value[1] === ""))
- )
- ) {
- return filterData[key];
- }
- })
- .filter(Boolean);
- filterAction(user_id, page_name, table_name, filteredItems, columns);
- sortAction(user_id, page_name, table_name, sortData, columns);
- hideAction(user_id, page_name, table_name, flattenHideData, columns);
- toast.dismiss({ containerId: "datatable" });
- };
+ const onSaveFilter = () => {
+ const filteredItems = Object.keys(filterData)
+ .map((key) => {
+ const value = filterData[key].value;
+ if (
+ value !== "" &&
+ !(
+ Array.isArray(value) &&
+ (value.length === 0 || (value.length === 2 && value[0] === "" && value[1] === ""))
+ )
+ ) {
+ return filterData[key];
+ }
+ })
+ .filter(Boolean);
+ filterAction(user_id, page_name, table_name, filteredItems, columns);
+ sortAction(user_id, page_name, table_name, sortData, columns);
+ hideAction(user_id, page_name, table_name, flattenHideData, columns);
+ toast.dismiss({ containerId: "datatable" });
+ };
- const handleDismiss = () => {
- toast.dismiss({ containerId: "datatable" });
- };
+ const handleDismiss = () => {
+ toast.dismiss({ containerId: "datatable" });
+ };
- return (
-
-
-
- ذخیره سازی تغییرات
-
-
-
-
-
- آیا مایل به ذخیره تغییر های اعمال شده برای دفعات بعد هستید؟
-
-
-
- }
- onClick={onSaveFilter}
- >
- ذخیره
-
-
-
-
- );
+ return (
+
+
+
+ ذخیره سازی تغییرات
+
+
+
+
+ آیا مایل به ذخیره تغییر های اعمال شده برای دفعات بعد هستید؟
+
+
+ } onClick={onSaveFilter}>
+ ذخیره
+
+
+
+
+ );
}
export default AskForKeepData;
diff --git a/src/core/components/PageLoading.jsx b/src/core/components/PageLoading.jsx
index 5b36836..186e1ae 100644
--- a/src/core/components/PageLoading.jsx
+++ b/src/core/components/PageLoading.jsx
@@ -3,23 +3,18 @@ import { Paper } from "@mui/material";
import LoadingHardPage from "./LoadingHardPage";
const PageLoading = () => {
- return (
-
-
-
- );
+ return (
+
+
+
+ );
};
export default PageLoading;
diff --git a/src/core/components/PageTitle.jsx b/src/core/components/PageTitle.jsx
index 675b6b8..4c93098 100644
--- a/src/core/components/PageTitle.jsx
+++ b/src/core/components/PageTitle.jsx
@@ -3,16 +3,16 @@
import { Chip, Divider, Typography } from "@mui/material";
const PageTitle = ({ title }) => {
- return (
-
-
- {title}
-
- }
- />
-
- );
+ return (
+
+
+ {title}
+
+ }
+ />
+
+ );
};
export default PageTitle;
diff --git a/src/core/components/Profile/ChangePassword/Form.jsx b/src/core/components/Profile/ChangePassword/Form.jsx
index 19dec1a..b708625 100644
--- a/src/core/components/Profile/ChangePassword/Form.jsx
+++ b/src/core/components/Profile/ChangePassword/Form.jsx
@@ -1,15 +1,15 @@
"use client";
import {
- Chip,
- Divider,
- FormControl,
- FormHelperText,
- Grid,
- IconButton,
- InputAdornment,
- InputLabel,
- OutlinedInput,
+ Chip,
+ Divider,
+ FormControl,
+ FormHelperText,
+ Grid,
+ IconButton,
+ InputAdornment,
+ InputLabel,
+ OutlinedInput,
} from "@mui/material";
import StyledForm from "@/core/components/StyledForm";
import { useForm } from "react-hook-form";
@@ -22,164 +22,133 @@ import VisibilityOff from "@mui/icons-material/VisibilityOff";
import useRequest from "@/lib/hooks/useRequest";
const validationSchema = object({
- current_password: string().required("اجباری"),
- new_password: string().required("اجباری"),
- repeat_new_password: string()
- .required("اجباری")
- .test(
- "password-match",
- "رمز عبور جدید و تکرار آن باید یکسان باشند",
- function (value) {
- return this.parent.new_password === value;
- },
- ),
+ current_password: string().required("اجباری"),
+ new_password: string().required("اجباری"),
+ repeat_new_password: string()
+ .required("اجباری")
+ .test("password-match", "رمز عبور جدید و تکرار آن باید یکسان باشند", function (value) {
+ return this.parent.new_password === value;
+ }),
});
const defaultValues = {
- current_password: "",
- new_password: "",
- repeat_new_password: "",
+ current_password: "",
+ new_password: "",
+ repeat_new_password: "",
};
const Form = ({ handleCloseForm, setLoading }) => {
- const request = useRequest();
- const [showNewPassword, setShowNewPassword] = useState();
- const [showRepeatNewPassword, setShowRepeatNewPassword] = useState();
+ const request = useRequest();
+ const [showNewPassword, setShowNewPassword] = useState();
+ const [showRepeatNewPassword, setShowRepeatNewPassword] = useState();
- const {
- register,
- handleSubmit,
- formState: { isSubmitting, errors },
- } = useForm({ defaultValues, resolver: yupResolver(validationSchema) });
+ const {
+ register,
+ handleSubmit,
+ formState: { isSubmitting, errors },
+ } = useForm({ defaultValues, resolver: yupResolver(validationSchema) });
- useEffect(() => {
- setLoading(isSubmitting);
- }, [isSubmitting]);
+ useEffect(() => {
+ setLoading(isSubmitting);
+ }, [isSubmitting]);
- const onSubmit = async (data) => {
- console.log(data);
+ const onSubmit = async (data) => {
+ console.log(data);
- const formData = new FormData();
- formData.append("current_password", data.current_password);
- formData.append("new_password", data.new_password);
- try {
- await request(CHANGE_USER_PASSWORD, "post", { data: formData });
- handleCloseForm();
- } catch (error) {}
- };
+ const formData = new FormData();
+ formData.append("current_password", data.current_password);
+ formData.append("new_password", data.new_password);
+ try {
+ await request(CHANGE_USER_PASSWORD, "post", { data: formData });
+ handleCloseForm();
+ } catch (error) {}
+ };
- return (
- <>
-
-
-
-
-
-
-
- رمز عبور فعلی
-
-
- {errors.current_password
- ? errors.current_password.message
- : null}
-
-
-
-
-
- رمز عبور جدید
-
- setShowNewPassword(!showNewPassword)}
- onMouseDown={(event) => event.preventDefault()}
- edge="end"
- >
- {showNewPassword ? : }
-
-
- }
- />
-
- {errors.new_password ? errors.new_password.message : null}
-
-
-
-
-
-
- تکرار رمز عبور جدید
-
-
-
- setShowRepeatNewPassword(!showRepeatNewPassword)
- }
- onMouseDown={(event) => event.preventDefault()}
- edge="end"
- >
- {showRepeatNewPassword ? (
-
- ) : (
-
- )}
-
-
- }
- />
-
- {errors.repeat_new_password
- ? errors.repeat_new_password.message
- : null}
-
-
-
-
-
- >
- );
+ return (
+ <>
+
+
+
+
+
+
+
+ رمز عبور فعلی
+
+
+ {errors.current_password ? errors.current_password.message : null}
+
+
+
+
+
+ رمز عبور جدید
+
+ setShowNewPassword(!showNewPassword)}
+ onMouseDown={(event) => event.preventDefault()}
+ edge="end"
+ >
+ {showNewPassword ? : }
+
+
+ }
+ />
+
+ {errors.new_password ? errors.new_password.message : null}
+
+
+
+
+
+ تکرار رمز عبور جدید
+
+ setShowRepeatNewPassword(!showRepeatNewPassword)}
+ onMouseDown={(event) => event.preventDefault()}
+ edge="end"
+ >
+ {showRepeatNewPassword ? : }
+
+
+ }
+ />
+
+ {errors.repeat_new_password ? errors.repeat_new_password.message : null}
+
+
+
+
+
+ >
+ );
};
export default Form;
diff --git a/src/core/components/Profile/ChangePassword/index.jsx b/src/core/components/Profile/ChangePassword/index.jsx
index 366584b..3a3a828 100644
--- a/src/core/components/Profile/ChangePassword/index.jsx
+++ b/src/core/components/Profile/ChangePassword/index.jsx
@@ -6,40 +6,34 @@ import { useState } from "react";
import Form from "./Form";
const ChangePassword = ({ open, setOpen }) => {
- const [loading, setLoading] = useState(false);
+ const [loading, setLoading] = useState(false);
- const handleCloseForm = () => {
- setOpen(false);
- };
+ const handleCloseForm = () => {
+ setOpen(false);
+ };
- return (
-
- );
+ return (
+
+ );
};
export default ChangePassword;
diff --git a/src/core/components/Profile/ProfileActions.jsx b/src/core/components/Profile/ProfileActions.jsx
index 46dcc92..3c93fd3 100644
--- a/src/core/components/Profile/ProfileActions.jsx
+++ b/src/core/components/Profile/ProfileActions.jsx
@@ -10,25 +10,25 @@ import { useState } from "react";
import ChangePassword from "./ChangePassword";
const ProfileActions = () => {
- const { getUser, logout } = useAuth();
- const requestServer = useRequest();
- const [openUpdate, setOpenUpdate] = useState(false);
- const [openChangePass, setOpenChangePass] = useState(false);
+ const { getUser, logout } = useAuth();
+ const requestServer = useRequest();
+ const [openUpdate, setOpenUpdate] = useState(false);
+ const [openChangePass, setOpenChangePass] = useState(false);
- const openUpdateProfile = () => {
- getUser();
- setOpenUpdate(true);
- };
- const handleLogout = () => {
- requestServer(GET_USER_LOGOUT_ROUTE, "post").then(() => {
- logout();
- });
- };
+ const openUpdateProfile = () => {
+ getUser();
+ setOpenUpdate(true);
+ };
+ const handleLogout = () => {
+ requestServer(GET_USER_LOGOUT_ROUTE, "post").then(() => {
+ logout();
+ });
+ };
- return (
- <>
-
- {/*
+ return (
+ <>
+
+ {/*
{
flexItem
sx={{ mx: 1 }}
/> */}
-
-
-
-
-
-
-
- {
- setOpenChangePass(true);
- }}
- >
-
-
-
-
- {/* */}
-
- >
- );
+
+
+
+
+
+
+
+ {
+ setOpenChangePass(true);
+ }}
+ >
+
+
+
+
+ {/* */}
+
+ >
+ );
};
export default ProfileActions;
diff --git a/src/core/components/Profile/ProfileInfo.jsx b/src/core/components/Profile/ProfileInfo.jsx
index ec84b2a..1b28171 100644
--- a/src/core/components/Profile/ProfileInfo.jsx
+++ b/src/core/components/Profile/ProfileInfo.jsx
@@ -5,45 +5,34 @@ import { Avatar, Box, Chip, Divider, Stack, Typography } from "@mui/material";
import moment from "jalali-moment";
const ProfileInfo = () => {
- const { user } = useAuth();
+ const { user } = useAuth();
- return (
- <>
-
-
-
-
- {`${user.full_name}`}
-
-
- شماره تماس داخلی : {user.telephone_id}
-
-
-
-
-
- آخرین ورود
-
-
-
- {moment(user.last_login).locale("fa").fromNow()}
-
-
-
-
-
-
-
- >
- );
+ return (
+ <>
+
+
+
+
+ {`${user.full_name}`}
+
+ شماره تماس داخلی : {user.telephone_id}
+
+
+
+
+ آخرین ورود
+
+
+
+ {moment(user.last_login).locale("fa").fromNow()}
+
+
+
+
+
+
+
+ >
+ );
};
export default ProfileInfo;
diff --git a/src/core/components/Profile/index.jsx b/src/core/components/Profile/index.jsx
index d538990..fd5cbf4 100644
--- a/src/core/components/Profile/index.jsx
+++ b/src/core/components/Profile/index.jsx
@@ -5,18 +5,18 @@ import ProfileInfo from "./ProfileInfo";
import ProfileActions from "./ProfileActions";
const Profile = () => {
- return (
-
-
-
-
- );
+ return (
+
+
+
+
+ );
};
export default Profile;
diff --git a/src/core/components/ScrollBox.jsx b/src/core/components/ScrollBox.jsx
index c4a7391..e7bd5d7 100644
--- a/src/core/components/ScrollBox.jsx
+++ b/src/core/components/ScrollBox.jsx
@@ -1,20 +1,20 @@
import { Box, styled } from "@mui/material";
const ScrollBox = styled(Box)(({ theme }) => ({
- flexGrow: 1,
- overflowY: "auto",
- maxWidth: "450px",
- "::-webkit-scrollbar": {
- width: "5px",
- },
- "::-webkit-scrollbar-track": {
- boxShadow: "inset 0 0 5px #fff",
- borderRadius: "5px",
- },
- "::-webkit-scrollbar-thumb": {
- background: theme.palette.primary.dark,
- borderRadius: "0px",
- },
+ flexGrow: 1,
+ overflowY: "auto",
+ maxWidth: "450px",
+ "::-webkit-scrollbar": {
+ width: "5px",
+ },
+ "::-webkit-scrollbar-track": {
+ boxShadow: "inset 0 0 5px #fff",
+ borderRadius: "5px",
+ },
+ "::-webkit-scrollbar-thumb": {
+ background: theme.palette.primary.dark,
+ borderRadius: "0px",
+ },
}));
export default ScrollBox;
diff --git a/src/core/components/Toasts/error.jsx b/src/core/components/Toasts/error.jsx
index ffd6381..dbc25e8 100644
--- a/src/core/components/Toasts/error.jsx
+++ b/src/core/components/Toasts/error.jsx
@@ -3,220 +3,214 @@ import { Box, Typography } from "@mui/material";
import { Dangerous } from "@mui/icons-material";
export const errorServerToast = (toastContainer) =>
- toast.error(
- () => (
-
-
-
-
-
- {"The request failed due to an internal error."}
-
-
-
-
- ),
- {
- icon: false,
- containerId: toastContainer,
- autoClose: 5000,
- hideProgressBar: true,
- pauseOnHover: true,
- closeOnClick: false,
- draggable: true,
- },
- );
+ toast.error(
+ () => (
+
+
+
+
+ {"The request failed due to an internal error."}
+
+
+
+ ),
+ {
+ icon: false,
+ containerId: toastContainer,
+ autoClose: 5000,
+ hideProgressBar: true,
+ pauseOnHover: true,
+ closeOnClick: false,
+ draggable: true,
+ }
+ );
export const errorUnauthorizedToast = (toastContainer) =>
- toast.error(
- () => (
-
-
-
-
-
- {"The user is not authorized to make the request."}
-
-
-
-
- ),
- {
- icon: false,
- containerId: toastContainer,
- autoClose: 3000,
- hideProgressBar: true,
- pauseOnHover: true,
- closeOnClick: false,
- draggable: true,
- },
- );
+ toast.error(
+ () => (
+
+
+
+
+ {"The user is not authorized to make the request."}
+
+
+
+ ),
+ {
+ icon: false,
+ containerId: toastContainer,
+ autoClose: 3000,
+ hideProgressBar: true,
+ pauseOnHover: true,
+ closeOnClick: false,
+ draggable: true,
+ }
+ );
export const errorAccessDeniedToast = (message, toastContainer) =>
- toast.error(
- () => (
-
-
-
-
-
- {message || "Access Denied"}
-
-
-
-
- ),
- {
- icon: false,
- containerId: toastContainer,
- autoClose: 3000,
- hideProgressBar: true,
- pauseOnHover: true,
- closeOnClick: false,
- draggable: true,
- },
- );
+ toast.error(
+ () => (
+
+
+
+
+ {message || "Access Denied"}
+
+
+
+ ),
+ {
+ icon: false,
+ containerId: toastContainer,
+ autoClose: 3000,
+ hideProgressBar: true,
+ pauseOnHover: true,
+ closeOnClick: false,
+ draggable: true,
+ }
+ );
export const errorLogicToast = (message, toastContainer) =>
- toast.error(
- () => (
-
-
-
-
-
- {message ||
- "The request was well-formed but was unable to be followed due to semantic errors."}
-
-
-
-
- ),
- {
- icon: false,
- containerId: toastContainer,
- autoClose: false,
- closeOnClick: false,
- draggable: false,
- },
- );
+ toast.error(
+ () => (
+
+
+
+
+
+ {message ||
+ "The request was well-formed but was unable to be followed due to semantic errors."}
+
+
+
+
+ ),
+ {
+ icon: false,
+ containerId: toastContainer,
+ autoClose: false,
+ closeOnClick: false,
+ draggable: false,
+ }
+ );
export const errorValidationToast = (message, toastContainer) =>
- toast.error(
- () => (
-
-
-
-
-
- {message ||
- "The request was well-formed but was unable to be followed due to semantic errors."}
-
-
-
-
- ),
- {
- icon: false,
- containerId: toastContainer,
- autoClose: false,
- closeOnClick: false,
- draggable: false,
- },
- );
+ toast.error(
+ () => (
+
+
+
+
+
+ {message ||
+ "The request was well-formed but was unable to be followed due to semantic errors."}
+
+
+
+
+ ),
+ {
+ icon: false,
+ containerId: toastContainer,
+ autoClose: false,
+ closeOnClick: false,
+ draggable: false,
+ }
+ );
export const errorTooManyToast = (toastContainer) =>
- toast.error(
- () => (
-
-
-
-
-
- {"Too many requests have been sent within a given time span."}
-
-
-
-
- ),
- {
- icon: false,
- containerId: toastContainer,
- autoClose: false,
- closeOnClick: false,
- draggable: false,
- },
- );
+ toast.error(
+ () => (
+
+
+
+
+
+ {"Too many requests have been sent within a given time span."}
+
+
+
+
+ ),
+ {
+ icon: false,
+ containerId: toastContainer,
+ autoClose: false,
+ closeOnClick: false,
+ draggable: false,
+ }
+ );
export const errorClientToast = (toastContainer) =>
- toast.error(
- () => (
-
-
-
-
-
- {
- "The API request is invalid or improperly formed. Consequently, the API server could not understand the request."
- }
-
-
-
-
- ),
- {
- icon: false,
- containerId: toastContainer,
- autoClose: false,
- closeOnClick: false,
- draggable: false,
- },
- );
+ toast.error(
+ () => (
+
+
+
+
+
+ {
+ "The API request is invalid or improperly formed. Consequently, the API server could not understand the request."
+ }
+
+
+
+
+ ),
+ {
+ icon: false,
+ containerId: toastContainer,
+ autoClose: false,
+ closeOnClick: false,
+ draggable: false,
+ }
+ );
diff --git a/src/core/components/Toasts/success.jsx b/src/core/components/Toasts/success.jsx
index 7cdea7f..fc11759 100644
--- a/src/core/components/Toasts/success.jsx
+++ b/src/core/components/Toasts/success.jsx
@@ -3,33 +3,31 @@ import { Box, Typography } from "@mui/material";
import { Beenhere } from "@mui/icons-material";
export const successToast = (toastContainer) =>
- toast.success(
- () => (
-
-
-
-
-
- {"عملیات با موفقیت انجام شد"}
-
-
-
-
- ),
- {
- icon: false,
- containerId: toastContainer,
- autoClose: 3000,
- hideProgressBar: true,
- pauseOnHover: true,
- closeOnClick: false,
- draggable: true,
- },
- );
+ toast.success(
+ () => (
+
+
+
+
+ {"عملیات با موفقیت انجام شد"}
+
+
+
+ ),
+ {
+ icon: false,
+ containerId: toastContainer,
+ autoClose: 3000,
+ hideProgressBar: true,
+ pauseOnHover: true,
+ closeOnClick: false,
+ draggable: true,
+ }
+ );
diff --git a/src/core/components/svgs/SvgError.jsx b/src/core/components/svgs/SvgError.jsx
index 756496e..580b803 100644
--- a/src/core/components/svgs/SvgError.jsx
+++ b/src/core/components/svgs/SvgError.jsx
@@ -2,99 +2,94 @@
import { useTheme } from "@mui/material";
const SvgError = ({ width, height, color = null }) => {
- const theme = useTheme();
- const fillColor = color || theme.palette.primary.main;
+ const theme = useTheme();
+ const fillColor = color || theme.palette.primary.main;
- return (
-
- );
+ return (
+
+ );
};
export default SvgError;
diff --git a/src/core/components/svgs/SvgLoading.jsx b/src/core/components/svgs/SvgLoading.jsx
index 661441e..750c57b 100644
--- a/src/core/components/svgs/SvgLoading.jsx
+++ b/src/core/components/svgs/SvgLoading.jsx
@@ -2,292 +2,292 @@
import { useTheme } from "@mui/material";
const SvgLoading = ({ width, height, color = null }) => {
- const theme = useTheme();
- const fillColor = color || theme.palette.primary.main;
+ const theme = useTheme();
+ const fillColor = color || theme.palette.primary.main;
- return (
-
- );
+ return (
+
+ );
};
export default SvgLoading;
diff --git a/src/core/components/svgs/SvgNotFound.jsx b/src/core/components/svgs/SvgNotFound.jsx
index 7c57e88..5d16909 100644
--- a/src/core/components/svgs/SvgNotFound.jsx
+++ b/src/core/components/svgs/SvgNotFound.jsx
@@ -1,162 +1,162 @@
import { useTheme } from "@mui/material";
const SvgNotFound = ({ width, height, color = null }) => {
- const theme = useTheme();
- const fillColor = color || theme.palette.primary.main;
+ const theme = useTheme();
+ const fillColor = color || theme.palette.primary.main;
- return (
-
- );
+ return (
+
+ );
};
export default SvgNotFound;
diff --git a/src/core/middlewares/withAuth.js b/src/core/middlewares/withAuth.js
index c9286e7..f2a40f7 100644
--- a/src/core/middlewares/withAuth.js
+++ b/src/core/middlewares/withAuth.js
@@ -6,39 +6,36 @@ import LoadingHardPage from "../components/LoadingHardPage";
import { Stack, Typography } from "@mui/material";
function WithAuthMiddleware({ children }) {
- const router = useRouter();
- const pathName = usePathname();
- const { isAuth, initAuthState, errorState } = useAuth();
+ const router = useRouter();
+ const pathName = usePathname();
+ const { isAuth, initAuthState, errorState } = useAuth();
- useEffect(() => {
- if (!initAuthState) return;
- if (!isAuth) {
- router.replace(`/login?redirect=${encodeURIComponent(pathName)}`);
- }
- }, [isAuth, initAuthState]);
-
- if (!initAuthState || !isAuth)
- return (
-
- {errorState.message}
-
- {" "}
- کد : {errorState.status}
-
-
- ) : (
- درحال احراز هویت...
- )
+ useEffect(() => {
+ if (!initAuthState) return;
+ if (!isAuth) {
+ router.replace(`/login?redirect=${encodeURIComponent(pathName)}`);
}
- loading={true}
- />
- );
+ }, [isAuth, initAuthState]);
- return <>{children}>;
+ if (!initAuthState || !isAuth)
+ return (
+
+ {errorState.message}
+ کد : {errorState.status}
+
+ ) : (
+ درحال احراز هویت...
+ )
+ }
+ loading={true}
+ />
+ );
+
+ return <>{children}>;
}
export default WithAuthMiddleware;
diff --git a/src/core/middlewares/withPermission.js b/src/core/middlewares/withPermission.js
index f8b121a..7da7969 100644
--- a/src/core/middlewares/withPermission.js
+++ b/src/core/middlewares/withPermission.js
@@ -5,43 +5,39 @@ import { usePermissions } from "@/lib/hooks/usePermissions";
import { useEffect, useState } from "react";
function WithPermission({ children, permission_name }) {
- const { data, isLoading } = usePermissions();
- const [cachedData, setCachedData] = useState(null);
+ const { data, isLoading } = usePermissions();
+ const [cachedData, setCachedData] = useState(null);
- useEffect(() => {
- if (data) {
- setCachedData(data);
+ useEffect(() => {
+ if (data) {
+ setCachedData(data);
+ }
+ }, [data]);
+
+ if (isLoading || !cachedData || !permission_name) {
+ return null;
}
- }, [data]);
- if (isLoading || !cachedData || !permission_name) {
- return null;
- }
+ const hasPermission =
+ permission_name.includes("all") || permission_name.some((permission) => cachedData.includes(permission));
- const hasPermission =
- permission_name.includes("all") ||
- permission_name.some((permission) => cachedData.includes(permission));
-
- if (!hasPermission) {
- return (
-
-
- شما دسترسی لازم به این صفحه را ندارید
-
-
- );
- }
- return <>{children}>;
+ if (!hasPermission) {
+ return (
+
+
+ شما دسترسی لازم به این صفحه را ندارید
+
+
+ );
+ }
+ return <>{children}>;
}
export default WithPermission;
diff --git a/src/core/middlewares/withWidget.js b/src/core/middlewares/withWidget.js
index 95180ab..9413bdb 100644
--- a/src/core/middlewares/withWidget.js
+++ b/src/core/middlewares/withWidget.js
@@ -1,5 +1,5 @@
const WithWidgetMiddleware = ({ children, enable }) => {
- return enable ? <>{children}> : null;
+ return enable ? <>{children}> : null;
};
export default WithWidgetMiddleware;
diff --git a/src/core/middlewares/withoutAuth.js b/src/core/middlewares/withoutAuth.js
index 396b848..2600f93 100644
--- a/src/core/middlewares/withoutAuth.js
+++ b/src/core/middlewares/withoutAuth.js
@@ -6,40 +6,37 @@ import LoadingHardPage from "../components/LoadingHardPage";
import { Stack, Typography } from "@mui/material";
function WithoutAuthMiddleware({ children }) {
- const router = useRouter();
- const { isAuth, initAuthState, errorState } = useAuth();
- const searchParams = useSearchParams();
+ const router = useRouter();
+ const { isAuth, initAuthState, errorState } = useAuth();
+ const searchParams = useSearchParams();
- const redirect = searchParams.get("redirect");
+ const redirect = searchParams.get("redirect");
- useEffect(() => {
- if (!initAuthState) return;
- if (isAuth) {
- router.replace(redirect ? decodeURIComponent(redirect) : "/dashboard");
- }
- }, [isAuth, initAuthState]);
-
- if (!initAuthState || isAuth)
- return (
-
- {errorState.message}
-
- {" "}
- کد : {errorState.status}
-
-
- ) : (
- درحال احراز هویت...
- )
+ useEffect(() => {
+ if (!initAuthState) return;
+ if (isAuth) {
+ router.replace(redirect ? decodeURIComponent(redirect) : "/dashboard");
}
- loading={true}
- />
- );
- return <>{children}>;
+ }, [isAuth, initAuthState]);
+
+ if (!initAuthState || isAuth)
+ return (
+
+ {errorState.message}
+ کد : {errorState.status}
+
+ ) : (
+ درحال احراز هویت...
+ )
+ }
+ loading={true}
+ />
+ );
+ return <>{children}>;
}
export default WithoutAuthMiddleware;
diff --git a/src/core/utils/DataTableFilterDataStructure.js b/src/core/utils/DataTableFilterDataStructure.js
index e8a5ddb..43f1144 100644
--- a/src/core/utils/DataTableFilterDataStructure.js
+++ b/src/core/utils/DataTableFilterDataStructure.js
@@ -1,10 +1,10 @@
export default function DataTableFilterDataStructure(filterData, isValueEmpty) {
- return Object.values(filterData)
- .filter((filter) => !isValueEmpty(filter.value))
- .map(({ filterMode, id, datatype, value }) => ({
- id: id.replace(/__/g, "."),
- fn: filterMode,
- datatype,
- value,
- }));
+ return Object.values(filterData)
+ .filter((filter) => !isValueEmpty(filter.value))
+ .map(({ filterMode, id, datatype, value }) => ({
+ id: id.replace(/__/g, "."),
+ fn: filterMode,
+ datatype,
+ value,
+ }));
}
diff --git a/src/core/utils/cacheRtl.js b/src/core/utils/cacheRtl.js
index 5830941..120f7f8 100644
--- a/src/core/utils/cacheRtl.js
+++ b/src/core/utils/cacheRtl.js
@@ -6,10 +6,10 @@ import rtlPlugin from "stylis-plugin-rtl";
// Create rtl cache
export const rtlCache = createCache({
- key: "mui-rtl",
- stylisPlugins: [prefixer, rtlPlugin],
+ key: "mui-rtl",
+ stylisPlugins: [prefixer, rtlPlugin],
});
export function Rtl(props) {
- return {props.children};
+ return {props.children};
}
diff --git a/src/core/utils/errorResponse.js b/src/core/utils/errorResponse.js
index 8d281ba..2a147ed 100644
--- a/src/core/utils/errorResponse.js
+++ b/src/core/utils/errorResponse.js
@@ -1,72 +1,65 @@
"use client";
import { toast } from "react-toastify";
import {
- errorAccessDeniedToast,
- errorClientToast,
- errorLogicToast,
- errorServerToast,
- errorTooManyToast,
- errorUnauthorizedToast,
- errorValidationToast,
+ errorAccessDeniedToast,
+ errorClientToast,
+ errorLogicToast,
+ errorServerToast,
+ errorTooManyToast,
+ errorUnauthorizedToast,
+ errorValidationToast,
} from "@/core/components/Toasts/error";
const isServerError = (status) => status >= 500 && status <= 599;
const isClientError = (status) => status >= 400 && status <= 499;
const errorServer = (response, notification, toastContainer) => {
- if (notification) errorServerToast(toastContainer);
+ if (notification) errorServerToast(toastContainer);
};
const errorClient = (response, notification, toastContainer, logout) => {
- switch (response.status) {
- case 401:
- logout();
- if (notification) errorUnauthorizedToast(toastContainer);
- break;
- case 403:
- if (notification)
- errorAccessDeniedToast(response.data.message, toastContainer);
- break;
- case 422:
- if ("type" in response.data) {
- if (Array.isArray(response.data.message)) {
- response.data.message.map((item) => {
- if (notification) errorLogicToast(item, toastContainer);
- });
- } else {
- if (notification)
- errorLogicToast(response.data.message, toastContainer);
- }
- break;
- }
- if (notification) {
- const errorsMap = Object.keys(response.data.errors);
- const errorsArray = response.data.errors;
+ switch (response.status) {
+ case 401:
+ logout();
+ if (notification) errorUnauthorizedToast(toastContainer);
+ break;
+ case 403:
+ if (notification) errorAccessDeniedToast(response.data.message, toastContainer);
+ break;
+ case 422:
+ if ("type" in response.data) {
+ if (Array.isArray(response.data.message)) {
+ response.data.message.map((item) => {
+ if (notification) errorLogicToast(item, toastContainer);
+ });
+ } else {
+ if (notification) errorLogicToast(response.data.message, toastContainer);
+ }
+ break;
+ }
+ if (notification) {
+ const errorsMap = Object.keys(response.data.errors);
+ const errorsArray = response.data.errors;
- errorsMap.map((item, index) => {
- errorValidationToast(errorsArray[item][0], toastContainer);
- });
- }
- break;
- case 429:
- if (notification) errorTooManyToast(toastContainer);
- break;
- default:
- if (notification) errorClientToast(toastContainer);
- break;
- }
+ errorsMap.map((item, index) => {
+ errorValidationToast(errorsArray[item][0], toastContainer);
+ });
+ }
+ break;
+ case 429:
+ if (notification) errorTooManyToast(toastContainer);
+ break;
+ default:
+ if (notification) errorClientToast(toastContainer);
+ break;
+ }
};
-export const errorResponse = (
- response,
- notification,
- toastContainer,
- logout,
-) => {
- if (notification) toast.dismiss({ containerId: toastContainer });
- if (isServerError(response.status)) {
- errorServer(response, notification, toastContainer);
- } else if (isClientError(response.status)) {
- errorClient(response, notification, toastContainer, logout);
- }
+export const errorResponse = (response, notification, toastContainer, logout) => {
+ if (notification) toast.dismiss({ containerId: toastContainer });
+ if (isServerError(response.status)) {
+ errorServer(response, notification, toastContainer);
+ } else if (isClientError(response.status)) {
+ errorClient(response, notification, toastContainer, logout);
+ }
};
diff --git a/src/core/utils/filterMenuItems.js b/src/core/utils/filterMenuItems.js
index ad10189..bd35a95 100644
--- a/src/core/utils/filterMenuItems.js
+++ b/src/core/utils/filterMenuItems.js
@@ -1,19 +1,17 @@
export function filterMenuItems(items, _permissions = []) {
- return items.reduce((acc, item) => {
- if (item.permissions) {
- if (
- item.permissions.some((permission) => _permissions.includes(permission))
- ) {
- acc.push(item);
- }
- } else if (item.hasSubitems) {
- const filteredSubItems = filterMenuItems(item.Subitems, _permissions);
- if (filteredSubItems.length > 0) {
- acc.push({ ...item, Subitems: filteredSubItems });
- }
- } else {
- acc.push(item);
- }
- return acc;
- }, []);
+ return items.reduce((acc, item) => {
+ if (item.permissions) {
+ if (item.permissions.some((permission) => _permissions.includes(permission))) {
+ acc.push(item);
+ }
+ } else if (item.hasSubitems) {
+ const filteredSubItems = filterMenuItems(item.Subitems, _permissions);
+ if (filteredSubItems.length > 0) {
+ acc.push({ ...item, Subitems: filteredSubItems });
+ }
+ } else {
+ acc.push(item);
+ }
+ return acc;
+ }, []);
}
diff --git a/src/core/utils/flattenArrayOfObjects.js b/src/core/utils/flattenArrayOfObjects.js
index d503e5b..e4d5051 100644
--- a/src/core/utils/flattenArrayOfObjects.js
+++ b/src/core/utils/flattenArrayOfObjects.js
@@ -1,9 +1,9 @@
export const flattenArrayOfObjects = (array, key) => {
- return array.reduce((acc, obj) => {
- acc.push(obj);
- if (Array.isArray(obj[key])) {
- acc.push(...flattenArrayOfObjects(obj[key], key));
- }
- return acc;
- }, []);
+ return array.reduce((acc, obj) => {
+ acc.push(obj);
+ if (Array.isArray(obj[key])) {
+ acc.push(...flattenArrayOfObjects(obj[key], key));
+ }
+ return acc;
+ }, []);
};
diff --git a/src/core/utils/flattenObjectOfObjects.js b/src/core/utils/flattenObjectOfObjects.js
index 50458dd..fb03576 100644
--- a/src/core/utils/flattenObjectOfObjects.js
+++ b/src/core/utils/flattenObjectOfObjects.js
@@ -1,12 +1,12 @@
export const flattenObjectOfObjects = (obj, res = {}) => {
- for (let key in obj) {
- if (obj.hasOwnProperty(key)) {
- if (typeof obj[key] === "object" && obj[key] !== null) {
- flattenObjectOfObjects(obj[key], res);
- } else {
- res[key] = obj[key];
- }
+ for (let key in obj) {
+ if (obj.hasOwnProperty(key)) {
+ if (typeof obj[key] === "object" && obj[key] !== null) {
+ flattenObjectOfObjects(obj[key], res);
+ } else {
+ res[key] = obj[key];
+ }
+ }
}
- }
- return res;
+ return res;
};
diff --git a/src/core/utils/getValueByPath.js b/src/core/utils/getValueByPath.js
index a03958a..a31f76f 100644
--- a/src/core/utils/getValueByPath.js
+++ b/src/core/utils/getValueByPath.js
@@ -1,14 +1,14 @@
export const getValueByPath = (obj, path) => {
- const keys = path.split(".");
+ const keys = path.split(".");
- let value = obj;
+ let value = obj;
- for (const key of keys) {
- if (value === undefined) {
- return undefined;
+ for (const key of keys) {
+ if (value === undefined) {
+ return undefined;
+ }
+ value = value[key];
}
- value = value[key];
- }
- return value;
+ return value;
};
diff --git a/src/core/utils/headerMenu.js b/src/core/utils/headerMenu.js
index cd33e61..5b987bf 100644
--- a/src/core/utils/headerMenu.js
+++ b/src/core/utils/headerMenu.js
@@ -1,15 +1,15 @@
const api = process.env.NEXT_PUBLIC_API_URL;
export const headerMenu = [
- // {
- // title: "تصادفات",
- // subMenu: [
- // [
- // {
- // title: "تصادفات روزانه",
- // href: api + "/v2/daily_accidents/create",
- // },
- // ],
- // ],
- // },
+ // {
+ // title: "تصادفات",
+ // subMenu: [
+ // [
+ // {
+ // title: "تصادفات روزانه",
+ // href: api + "/v2/daily_accidents/create",
+ // },
+ // ],
+ // ],
+ // },
];
diff --git a/src/core/utils/isArrayEmpty.js b/src/core/utils/isArrayEmpty.js
index 61f7c8d..81624fb 100644
--- a/src/core/utils/isArrayEmpty.js
+++ b/src/core/utils/isArrayEmpty.js
@@ -1,6 +1,6 @@
export default function isArrayEmpty(value) {
- if (Array.isArray(value)) {
- return value.length === 0 || value.every((v) => v === "");
- }
- return value === "" || value === null || value === undefined;
+ if (Array.isArray(value)) {
+ return value.length === 0 || value.every((v) => v === "");
+ }
+ return value === "" || value === null || value === undefined;
}
diff --git a/src/core/utils/nationalCodeValidation.js b/src/core/utils/nationalCodeValidation.js
index 2afec8c..747f4cd 100644
--- a/src/core/utils/nationalCodeValidation.js
+++ b/src/core/utils/nationalCodeValidation.js
@@ -1,30 +1,30 @@
function validateNationalCode(code) {
- const invalidCodes = [
- "1111111111",
- "2222222222",
- "3333333333",
- "4444444444",
- "5555555555",
- "6666666666",
- "7777777777",
- "8888888888",
- "9999999999",
- ];
- if (invalidCodes.includes(code)) return false;
+ const invalidCodes = [
+ "1111111111",
+ "2222222222",
+ "3333333333",
+ "4444444444",
+ "5555555555",
+ "6666666666",
+ "7777777777",
+ "8888888888",
+ "9999999999",
+ ];
+ if (invalidCodes.includes(code)) return false;
- const L = code.length;
- if (L < 8 || parseInt(code, 10) === 0) return false;
+ const L = code.length;
+ if (L < 8 || parseInt(code, 10) === 0) return false;
- code = code.padStart(10, "0");
- if (parseInt(code.substr(3, 6), 10) === 0) return false;
+ code = code.padStart(10, "0");
+ if (parseInt(code.substr(3, 6), 10) === 0) return false;
- const c = parseInt(code.charAt(9), 10);
- let s = 0;
- for (let i = 0; i < 9; i++) {
- s += parseInt(code.charAt(i), 10) * (10 - i);
- }
- s = s % 11;
- return (s < 2 && c === s) || (s >= 2 && c === 11 - s);
+ const c = parseInt(code.charAt(9), 10);
+ let s = 0;
+ for (let i = 0; i < 9; i++) {
+ s += parseInt(code.charAt(i), 10) * (10 - i);
+ }
+ s = s % 11;
+ return (s < 2 && c === s) || (s >= 2 && c === 11 - s);
}
export default validateNationalCode;
diff --git a/src/core/utils/pageMenu.js b/src/core/utils/pageMenu.js
index 8a4b62e..8aa30ff 100644
--- a/src/core/utils/pageMenu.js
+++ b/src/core/utils/pageMenu.js
@@ -2,28 +2,28 @@ import { Settings } from "@mui/icons-material";
import SpaceDashboardIcon from "@mui/icons-material/SpaceDashboard";
export const pageMenu = [
- {
- id: "dashboard",
- label: "پیشخوان",
- type: "page",
- route: "/dashboard",
- icon: ,
- permissions: ["all"],
- },
- {
- id: "systemManagment",
- label: "مدیریت سامانه",
- type: "menu",
- icon: ,
- hasSubitems: true,
- Subitems: [
- {
- id: "systemManagment-users",
- label: "کاربران",
+ {
+ id: "dashboard",
+ label: "پیشخوان",
type: "page",
- route: "/dashboard/users",
- permissions: ["manage_users"],
- },
- ],
- },
+ route: "/dashboard",
+ icon: ,
+ permissions: ["all"],
+ },
+ {
+ id: "systemManagment",
+ label: "مدیریت سامانه",
+ type: "menu",
+ icon: ,
+ hasSubitems: true,
+ Subitems: [
+ {
+ id: "systemManagment-users",
+ label: "کاربران",
+ type: "page",
+ route: "/dashboard/users",
+ permissions: ["manage_users"],
+ },
+ ],
+ },
];
diff --git a/src/core/utils/successRequest.js b/src/core/utils/successRequest.js
index daa2ab7..7fbde71 100644
--- a/src/core/utils/successRequest.js
+++ b/src/core/utils/successRequest.js
@@ -3,8 +3,8 @@ import { toast } from "react-toastify";
import { successToast } from "@/core/components/Toasts/success";
export const successRequest = (notification, toastContainer) => {
- if (notification) {
- toast.dismiss({ containerId: toastContainer });
- successToast(toastContainer);
- }
+ if (notification) {
+ toast.dismiss({ containerId: toastContainer });
+ successToast(toastContainer);
+ }
};
diff --git a/src/core/utils/theme.js b/src/core/utils/theme.js
index 9ec62c4..4405609 100644
--- a/src/core/utils/theme.js
+++ b/src/core/utils/theme.js
@@ -2,31 +2,31 @@
import { createTheme } from "@mui/material";
const theme = createTheme({
- direction: "rtl",
- typography: {
- fontFamily: `IRANSansFaNum, sans-serif`,
- fontSize: 12,
- },
- palette: {
- primary: {
- main: "#1b4332",
- contrastText: "#FFFFFF",
+ direction: "rtl",
+ typography: {
+ fontFamily: `IRANSansFaNum, sans-serif`,
+ fontSize: 12,
},
- secondary: {
- main: "#1B4043",
- contrastText: "#FFFFFF",
- },
- },
- components: {
- MuiBackdrop: {
- styleOverrides: {
- root: {
- backdropFilter: "blur(3px)",
- backgroundColor: "rgba(0, 0, 0, 0.3)",
+ palette: {
+ primary: {
+ main: "#1b4332",
+ contrastText: "#FFFFFF",
+ },
+ secondary: {
+ main: "#1B4043",
+ contrastText: "#FFFFFF",
+ },
+ },
+ components: {
+ MuiBackdrop: {
+ styleOverrides: {
+ root: {
+ backdropFilter: "blur(3px)",
+ backgroundColor: "rgba(0, 0, 0, 0.3)",
+ },
+ },
},
- },
},
- },
});
export default theme;
diff --git a/src/core/utils/utils.js b/src/core/utils/utils.js
index fb9a24a..a0a320d 100644
--- a/src/core/utils/utils.js
+++ b/src/core/utils/utils.js
@@ -2,148 +2,119 @@ import { alpha, darken } from "@mui/material";
export const parseCSSVarId = (id) => id.replace(/[^a-zA-Z0-9]/g, "_");
-export const parseFromValuesOrFunc = (fn, arg) =>
- fn instanceof Function ? fn(arg) : fn;
+export const parseFromValuesOrFunc = (fn, arg) => (fn instanceof Function ? fn(arg) : fn);
export const getCommonToolbarStyles = ({ table }) => ({
- alignItems: "flex-start",
- backgroundColor: table.options.mrtTheme.baseBackgroundColor,
- display: "grid",
- flexWrap: "wrap-reverse",
- minHeight: "3.5rem",
- overflow: "hidden",
- position: "relative",
- transition: "all 150ms ease-in-out",
- zIndex: 1,
+ alignItems: "flex-start",
+ backgroundColor: table.options.mrtTheme.baseBackgroundColor,
+ display: "grid",
+ flexWrap: "wrap-reverse",
+ minHeight: "3.5rem",
+ overflow: "hidden",
+ position: "relative",
+ transition: "all 150ms ease-in-out",
+ zIndex: 1,
});
export const getCommonTooltipProps = (placement) => ({
- disableInteractive: true,
- enterDelay: 500,
- enterNextDelay: 500,
- placement,
+ disableInteractive: true,
+ enterDelay: 500,
+ enterNextDelay: 500,
+ placement,
});
export const flipIconStyles = (theme) =>
- theme.direction === "rtl"
- ? { style: { transform: "scaleX(-1)" } }
- : undefined;
+ theme.direction === "rtl" ? { style: { transform: "scaleX(-1)" } } : undefined;
export const getCommonPinnedCellStyles = ({ column, table, theme }) => {
- const { baseBackgroundColor } = table.options.mrtTheme;
- const isPinned = column?.getIsPinned();
+ const { baseBackgroundColor } = table.options.mrtTheme;
+ const isPinned = column?.getIsPinned();
- return {
- '&[data-pinned="true"]': {
- "&:before": {
- backgroundColor: alpha(
- darken(
- baseBackgroundColor,
- theme.palette.mode === "dark" ? 0.05 : 0.01,
- ),
- 0.97,
- ),
- boxShadow: column
- ? isPinned === "left" && column.getIsLastColumn(isPinned)
- ? `-4px 0 4px -4px ${alpha(theme.palette.grey[700], 0.5)} inset`
- : isPinned === "right" && column.getIsFirstColumn(isPinned)
- ? `4px 0 4px -4px ${alpha(theme.palette.grey[700], 0.5)} inset`
- : undefined
- : undefined,
- ...commonCellBeforeAfterStyles,
- },
- },
- };
+ return {
+ '&[data-pinned="true"]': {
+ "&:before": {
+ backgroundColor: alpha(darken(baseBackgroundColor, theme.palette.mode === "dark" ? 0.05 : 0.01), 0.97),
+ boxShadow: column
+ ? isPinned === "left" && column.getIsLastColumn(isPinned)
+ ? `-4px 0 4px -4px ${alpha(theme.palette.grey[700], 0.5)} inset`
+ : isPinned === "right" && column.getIsFirstColumn(isPinned)
+ ? `4px 0 4px -4px ${alpha(theme.palette.grey[700], 0.5)} inset`
+ : undefined
+ : undefined,
+ ...commonCellBeforeAfterStyles,
+ },
+ },
+ };
};
-export const getCommonMRTCellStyles = ({
- column,
- header,
- table,
- tableCellProps,
- theme,
-}) => {
- const {
- getState,
- options: { enableColumnVirtualization, layoutMode },
- } = table;
- const { draggingColumn } = getState();
- const { columnDef } = column;
- const { columnDefType } = columnDef;
+export const getCommonMRTCellStyles = ({ column, header, table, tableCellProps, theme }) => {
+ const {
+ getState,
+ options: { enableColumnVirtualization, layoutMode },
+ } = table;
+ const { draggingColumn } = getState();
+ const { columnDef } = column;
+ const { columnDefType } = columnDef;
- const isColumnPinned =
- columnDef.columnDefType !== "group" && column.getIsPinned();
+ const isColumnPinned = columnDef.columnDefType !== "group" && column.getIsPinned();
- const widthStyles = {
- minWidth: `max(calc(var(--${header ? "header" : "col"}-${parseCSSVarId(
- header?.id ?? column.id,
- )}-size) * 1px), ${columnDef.minSize ?? 30}px)`,
- width: `calc(var(--${header ? "header" : "col"}-${parseCSSVarId(header?.id ?? column.id)}-size) * 1px)`,
- };
+ const widthStyles = {
+ minWidth: `max(calc(var(--${header ? "header" : "col"}-${parseCSSVarId(
+ header?.id ?? column.id
+ )}-size) * 1px), ${columnDef.minSize ?? 30}px)`,
+ width: `calc(var(--${header ? "header" : "col"}-${parseCSSVarId(header?.id ?? column.id)}-size) * 1px)`,
+ };
- if (layoutMode === "grid") {
- widthStyles.flex = `${
- [0, false].includes(columnDef.grow)
- ? 0
- : `var(--${header ? "header" : "col"}-${parseCSSVarId(header?.id ?? column.id)}-size)`
- } 0 auto`;
- } else if (layoutMode === "grid-no-grow") {
- widthStyles.flex = `${+(columnDef.grow || 0)} 0 auto`;
- }
+ if (layoutMode === "grid") {
+ widthStyles.flex = `${
+ [0, false].includes(columnDef.grow)
+ ? 0
+ : `var(--${header ? "header" : "col"}-${parseCSSVarId(header?.id ?? column.id)}-size)`
+ } 0 auto`;
+ } else if (layoutMode === "grid-no-grow") {
+ widthStyles.flex = `${+(columnDef.grow || 0)} 0 auto`;
+ }
- const pinnedStyles = isColumnPinned
- ? {
- ...getCommonPinnedCellStyles({ column, table, theme }),
- left:
- isColumnPinned === "left"
- ? `${column.getStart("left")}px`
- : undefined,
- opacity: 0.97,
- position: "sticky",
- right:
- isColumnPinned === "right"
- ? `${column.getAfter("right")}px`
- : undefined,
- }
- : {};
+ const pinnedStyles = isColumnPinned
+ ? {
+ ...getCommonPinnedCellStyles({ column, table, theme }),
+ left: isColumnPinned === "left" ? `${column.getStart("left")}px` : undefined,
+ opacity: 0.97,
+ position: "sticky",
+ right: isColumnPinned === "right" ? `${column.getAfter("right")}px` : undefined,
+ }
+ : {};
- return {
- backgroundColor: "inherit",
- backgroundImage: "inherit",
- display: layoutMode?.startsWith("grid") ? "flex" : undefined,
- justifyContent:
- columnDefType === "group"
- ? "center"
- : layoutMode?.startsWith("grid")
- ? tableCellProps.align
- : undefined,
- opacity:
- table.getState().draggingColumn?.id === column.id ||
- table.getState().hoveredColumn?.id === column.id
- ? 0.5
- : 1,
- position: "relative",
- transition: enableColumnVirtualization
- ? "none"
- : `padding 150ms ease-in-out`,
- zIndex:
- column.getIsResizing() || draggingColumn?.id === column.id
- ? 2
- : columnDefType !== "group" && isColumnPinned
- ? 1
- : 0,
- ...pinnedStyles,
- ...widthStyles,
- ...parseFromValuesOrFunc(tableCellProps?.sx, theme),
- };
+ return {
+ backgroundColor: "inherit",
+ backgroundImage: "inherit",
+ display: layoutMode?.startsWith("grid") ? "flex" : undefined,
+ justifyContent:
+ columnDefType === "group" ? "center" : layoutMode?.startsWith("grid") ? tableCellProps.align : undefined,
+ opacity:
+ table.getState().draggingColumn?.id === column.id || table.getState().hoveredColumn?.id === column.id
+ ? 0.5
+ : 1,
+ position: "relative",
+ transition: enableColumnVirtualization ? "none" : `padding 150ms ease-in-out`,
+ zIndex:
+ column.getIsResizing() || draggingColumn?.id === column.id
+ ? 2
+ : columnDefType !== "group" && isColumnPinned
+ ? 1
+ : 0,
+ ...pinnedStyles,
+ ...widthStyles,
+ ...parseFromValuesOrFunc(tableCellProps?.sx, theme),
+ };
};
export const commonCellBeforeAfterStyles = {
- content: '""',
- height: "100%",
- left: 0,
- position: "absolute",
- top: 0,
- width: "100%",
- zIndex: -1,
+ content: '""',
+ height: "100%",
+ left: 0,
+ position: "absolute",
+ top: 0,
+ width: "100%",
+ zIndex: -1,
};
diff --git a/src/lib/contexts/DataTable.js b/src/lib/contexts/DataTable.js
index 28899d6..60ef071 100644
--- a/src/lib/contexts/DataTable.js
+++ b/src/lib/contexts/DataTable.js
@@ -7,205 +7,182 @@ import { LinearProgress } from "@mui/material";
export const DataTableContext = createContext();
-const DataTableProvider = ({
- children,
- user_id,
- page_name,
- table_name,
- columns,
- initialSort = [],
-}) => {
- const { settingStore } = useTableSetting();
- const [isInitStates, setInitStates] = useState(false);
- const flatColumns = flattenArrayOfObjects(columns, "columns");
- const [initFilter, setInitFilter] = useState({});
- const [filterData, setFilterData] = useState({});
- const [initSort, setInitSort] = useState(initialSort || []);
- const [sortData, setSortData] = useState(initialSort || []);
- const [initHide, setInitHide] = useState({});
- const [hideData, setHideData] = useState({});
- const [isDirty, setIsDirty] = useState(false);
- const [isAnyDirty, setIsAnyDirty] = useState(false);
+const DataTableProvider = ({ children, user_id, page_name, table_name, columns, initialSort = [] }) => {
+ const { settingStore } = useTableSetting();
+ const [isInitStates, setInitStates] = useState(false);
+ const flatColumns = flattenArrayOfObjects(columns, "columns");
+ const [initFilter, setInitFilter] = useState({});
+ const [filterData, setFilterData] = useState({});
+ const [initSort, setInitSort] = useState(initialSort || []);
+ const [sortData, setSortData] = useState(initialSort || []);
+ const [initHide, setInitHide] = useState({});
+ const [hideData, setHideData] = useState({});
+ const [isDirty, setIsDirty] = useState(false);
+ const [isAnyDirty, setIsAnyDirty] = useState(false);
- useEffect(() => {
- let hasAnyConflict = false;
- const hasConflict =
- JSON.stringify(hideData) !== JSON.stringify(initHide) ||
- JSON.stringify(sortData) !== JSON.stringify(initSort) ||
- JSON.stringify(filterData) !== JSON.stringify(initFilter);
+ useEffect(() => {
+ let hasAnyConflict = false;
+ const hasConflict =
+ JSON.stringify(hideData) !== JSON.stringify(initHide) ||
+ JSON.stringify(sortData) !== JSON.stringify(initSort) ||
+ JSON.stringify(filterData) !== JSON.stringify(initFilter);
- const CheckFilterValues = Object.values(filterData).every((innerObject) => {
- if (
- innerObject.datatype === "date" &&
- innerObject.filterMode === "between"
- ) {
- return (
- Array.isArray(innerObject.value) &&
- innerObject.value.length === 2 &&
- innerObject.value.every((v) => v === "")
- );
- } else {
- return innerObject.value === "";
- }
- });
- const flattenObject = (obj) => {
- let result = {};
- for (const key in obj) {
- if (typeof obj[key] === "object" && obj[key] !== null) {
- Object.assign(result, flattenObject(obj[key])); // باز کردن اشیای تودرتو
- } else {
- result[key] = obj[key];
- }
- }
- return result;
- };
-
- // تبدیل آبجکت به آبجکت فلت شده
- const flatHideData = flattenObject(hideData);
-
- const CheckHideValues = Object.values(flatHideData).every(
- (value) => value === true,
- );
- hasAnyConflict =
- !CheckHideValues ||
- JSON.stringify(sortData) !== JSON.stringify(initialSort) ||
- !CheckFilterValues;
-
- setIsDirty(hasConflict);
- setIsAnyDirty(hasAnyConflict);
- }, [hideData, sortData, filterData, initHide, initSort, initFilter]);
-
- useEffect(() => {
- if (!settingStore) return;
- const filterValues = flatColumns.reduce((acc, column) => {
- if (!column.enableColumnFilter) return acc;
- const storeFilter = settingStore?.[user_id]?.[page_name]?.[table_name]?.[
- "filters"
- ]?.find((filter) => filter.id === column.id);
- if (column.datatype === "array") {
- acc[column.id] = {
- id: column.id,
- value: storeFilter?.value || [],
- filterMode: storeFilter?.filterMode || column.filterMode,
- datatype: column.datatype,
- };
- } else if (column.filterMode === "between") {
- acc[column.id] = {
- id: column.id,
- value: storeFilter?.value || ["", ""],
- filterMode: storeFilter?.filterMode || column.filterMode,
- datatype: column.datatype,
- };
- } else {
- acc[column.id] = {
- id: column.id,
- value: storeFilter?.value || "",
- filterMode: storeFilter?.filterMode || column.filterMode,
- datatype: column.datatype,
- };
- }
- return acc;
- }, {});
-
- const getHideValues = (columns) => {
- return columns.reduce((acc, column) => {
- const columnId = column.id;
- const storeHide =
- settingStore?.[user_id]?.[page_name]?.[table_name]?.["hides"]?.[
- columnId
- ];
- if (column.columns && column.columns.length > 0) {
- acc[columnId] = getHideValues(column.columns);
- } else {
- acc[columnId] = storeHide !== undefined ? storeHide : true;
- }
-
- return acc;
- }, {});
- };
-
- const hideValues = getHideValues(columns);
- setHideData(hideValues);
- setInitHide(hideValues);
- setFilterData(filterValues);
- setInitFilter(filterValues);
- setSortData(
- settingStore?.[user_id]?.[page_name]?.[table_name]?.["sorts"] ||
- initialSort,
- );
- setInitSort(
- settingStore?.[user_id]?.[page_name]?.[table_name]?.["sorts"] ||
- initialSort,
- );
- setInitStates(true);
- }, [settingStore]);
-
- useEffect(() => {
- if (
- JSON.stringify(initFilter) !== JSON.stringify(filterData) ||
- JSON.stringify(initSort) !== JSON.stringify(sortData) ||
- JSON.stringify(initHide) !== JSON.stringify(hideData)
- ) {
- if (!toast.isActive("keep_data", "filtering")) {
- toast(
- ,
- {
- containerId: "filtering",
- toastId: "keep_data",
- className: "filter-toast",
- position: "bottom-left",
- draggable: true,
- autoClose: false,
- },
- );
- } else {
- toast.update("keep_data", {
- containerId: "filtering",
- toastId: "keep_data",
- render: (
-
- ),
+ const CheckFilterValues = Object.values(filterData).every((innerObject) => {
+ if (innerObject.datatype === "date" && innerObject.filterMode === "between") {
+ return (
+ Array.isArray(innerObject.value) &&
+ innerObject.value.length === 2 &&
+ innerObject.value.every((v) => v === "")
+ );
+ } else {
+ return innerObject.value === "";
+ }
});
- }
- } else {
- toast.dismiss({ containerId: "datatable" });
- }
- }, [filterData, sortData, hideData]);
+ const flattenObject = (obj) => {
+ let result = {};
+ for (const key in obj) {
+ if (typeof obj[key] === "object" && obj[key] !== null) {
+ Object.assign(result, flattenObject(obj[key])); // باز کردن اشیای تودرتو
+ } else {
+ result[key] = obj[key];
+ }
+ }
+ return result;
+ };
- if (!isInitStates) return ;
+ // تبدیل آبجکت به آبجکت فلت شده
+ const flatHideData = flattenObject(hideData);
- return (
-
- {children}
-
- );
+ const CheckHideValues = Object.values(flatHideData).every((value) => value === true);
+ hasAnyConflict =
+ !CheckHideValues || JSON.stringify(sortData) !== JSON.stringify(initialSort) || !CheckFilterValues;
+
+ setIsDirty(hasConflict);
+ setIsAnyDirty(hasAnyConflict);
+ }, [hideData, sortData, filterData, initHide, initSort, initFilter]);
+
+ useEffect(() => {
+ if (!settingStore) return;
+ const filterValues = flatColumns.reduce((acc, column) => {
+ if (!column.enableColumnFilter) return acc;
+ const storeFilter = settingStore?.[user_id]?.[page_name]?.[table_name]?.["filters"]?.find(
+ (filter) => filter.id === column.id
+ );
+ if (column.datatype === "array") {
+ acc[column.id] = {
+ id: column.id,
+ value: storeFilter?.value || [],
+ filterMode: storeFilter?.filterMode || column.filterMode,
+ datatype: column.datatype,
+ };
+ } else if (column.filterMode === "between") {
+ acc[column.id] = {
+ id: column.id,
+ value: storeFilter?.value || ["", ""],
+ filterMode: storeFilter?.filterMode || column.filterMode,
+ datatype: column.datatype,
+ };
+ } else {
+ acc[column.id] = {
+ id: column.id,
+ value: storeFilter?.value || "",
+ filterMode: storeFilter?.filterMode || column.filterMode,
+ datatype: column.datatype,
+ };
+ }
+ return acc;
+ }, {});
+
+ const getHideValues = (columns) => {
+ return columns.reduce((acc, column) => {
+ const columnId = column.id;
+ const storeHide = settingStore?.[user_id]?.[page_name]?.[table_name]?.["hides"]?.[columnId];
+ if (column.columns && column.columns.length > 0) {
+ acc[columnId] = getHideValues(column.columns);
+ } else {
+ acc[columnId] = storeHide !== undefined ? storeHide : true;
+ }
+
+ return acc;
+ }, {});
+ };
+
+ const hideValues = getHideValues(columns);
+ setHideData(hideValues);
+ setInitHide(hideValues);
+ setFilterData(filterValues);
+ setInitFilter(filterValues);
+ setSortData(settingStore?.[user_id]?.[page_name]?.[table_name]?.["sorts"] || initialSort);
+ setInitSort(settingStore?.[user_id]?.[page_name]?.[table_name]?.["sorts"] || initialSort);
+ setInitStates(true);
+ }, [settingStore]);
+
+ useEffect(() => {
+ if (
+ JSON.stringify(initFilter) !== JSON.stringify(filterData) ||
+ JSON.stringify(initSort) !== JSON.stringify(sortData) ||
+ JSON.stringify(initHide) !== JSON.stringify(hideData)
+ ) {
+ if (!toast.isActive("keep_data", "filtering")) {
+ toast(
+ ,
+ {
+ containerId: "filtering",
+ toastId: "keep_data",
+ className: "filter-toast",
+ position: "bottom-left",
+ draggable: true,
+ autoClose: false,
+ }
+ );
+ } else {
+ toast.update("keep_data", {
+ containerId: "filtering",
+ toastId: "keep_data",
+ render: (
+
+ ),
+ });
+ }
+ } else {
+ toast.dismiss({ containerId: "datatable" });
+ }
+ }, [filterData, sortData, hideData]);
+
+ if (!isInitStates) return ;
+
+ return (
+
+ {children}
+
+ );
};
export default DataTableProvider;
diff --git a/src/lib/contexts/auth.js b/src/lib/contexts/auth.js
index e56dd22..a8d3784 100644
--- a/src/lib/contexts/auth.js
+++ b/src/lib/contexts/auth.js
@@ -1,109 +1,99 @@
"use client";
import { GET_USER_ROUTE } from "@/core/utils/routes";
import axios from "axios";
-import {
- createContext,
- useCallback,
- useContext,
- useEffect,
- useReducer,
- useState,
-} from "react";
+import { createContext, useCallback, useContext, useEffect, useReducer, useState } from "react";
const initAuth = {
- initAuthState: false,
- isAuth: false,
- user: {},
+ initAuthState: false,
+ isAuth: false,
+ user: {},
};
const authReducer = (state, action) => {
- switch (action.type) {
- case "CLEAR_USER":
- return { ...state, user: {} };
- case "CHANGE_USER":
- return { ...state, user: action.user };
- case "CHANGE_AUTH_STATE":
- return { ...state, isAuth: action.isAuth };
- case "CHANGE_INIT_AUTH":
- return { ...state, initAuthState: action.initAuthState };
- default:
- return state;
- }
+ switch (action.type) {
+ case "CLEAR_USER":
+ return { ...state, user: {} };
+ case "CHANGE_USER":
+ return { ...state, user: action.user };
+ case "CHANGE_AUTH_STATE":
+ return { ...state, isAuth: action.isAuth };
+ case "CHANGE_INIT_AUTH":
+ return { ...state, initAuthState: action.initAuthState };
+ default:
+ return state;
+ }
};
const AuthContext = createContext();
export const AuthProvider = ({ children }) => {
- const [errorState, setErrorState] = useState({ status: null, message: "" });
- const [state, dispatch] = useReducer(authReducer, initAuth);
+ const [errorState, setErrorState] = useState({ status: null, message: "" });
+ const [state, dispatch] = useReducer(authReducer, initAuth);
- const clearUser = useCallback(() => {
- dispatch({ type: "CLEAR_USER" });
- }, []);
+ const clearUser = useCallback(() => {
+ dispatch({ type: "CLEAR_USER" });
+ }, []);
- const changeUser = useCallback((user) => {
- dispatch({ type: "CHANGE_USER", user });
- }, []);
+ const changeUser = useCallback((user) => {
+ dispatch({ type: "CHANGE_USER", user });
+ }, []);
- const changeAuthState = useCallback((isAuth) => {
- dispatch({ type: "CHANGE_AUTH_STATE", isAuth });
- }, []);
+ const changeAuthState = useCallback((isAuth) => {
+ dispatch({ type: "CHANGE_AUTH_STATE", isAuth });
+ }, []);
- const changeInitAuth = useCallback((initAuthState) => {
- dispatch({ type: "CHANGE_INIT_AUTH", initAuthState });
- }, []);
+ const changeInitAuth = useCallback((initAuthState) => {
+ dispatch({ type: "CHANGE_INIT_AUTH", initAuthState });
+ }, []);
- const logout = () => {
- clearUser();
- changeAuthState(false);
- changeInitAuth(true);
- };
-
- const getUser = useCallback(async () => {
- try {
- const { data } = await axios.get(GET_USER_ROUTE, {
- withCredentials: true,
- });
- changeUser(data.data);
- changeAuthState(true);
- changeInitAuth(true);
- setErrorState(false);
- } catch (error) {
- if (error.response && error.response.status === 401) {
+ const logout = () => {
clearUser();
changeAuthState(false);
changeInitAuth(true);
- return;
- }
- let status =
- error.response && error.response.status
- ? error.response.status
- : "نامشخص";
- setErrorState({
- status,
- message: " مشکلی در احراز هویت رخ داده است . دقایقی بعد امتحان کنید!!!",
- });
- }
- }, [clearUser, changeUser, changeAuthState, changeInitAuth]);
+ };
- useEffect(() => {
- getUser();
- }, []);
+ const getUser = useCallback(async () => {
+ try {
+ const { data } = await axios.get(GET_USER_ROUTE, {
+ withCredentials: true,
+ });
+ changeUser(data.data);
+ changeAuthState(true);
+ changeInitAuth(true);
+ setErrorState(false);
+ } catch (error) {
+ if (error.response && error.response.status === 401) {
+ clearUser();
+ changeAuthState(false);
+ changeInitAuth(true);
+ return;
+ }
+ let status = error.response && error.response.status ? error.response.status : "نامشخص";
+ setErrorState({
+ status,
+ message: " مشکلی در احراز هویت رخ داده است . دقایقی بعد امتحان کنید!!!",
+ });
+ }
+ }, [clearUser, changeUser, changeAuthState, changeInitAuth]);
- return (
-
- {children}
-
- );
+ useEffect(() => {
+ getUser();
+ }, []);
+
+ return (
+
+ {children}
+
+ );
};
export const useAuth = () => useContext(AuthContext);
diff --git a/src/lib/contexts/call.js b/src/lib/contexts/call.js
index df634b2..f42f7a1 100644
--- a/src/lib/contexts/call.js
+++ b/src/lib/contexts/call.js
@@ -1,106 +1,95 @@
"use client";
-import {
- createContext,
- useReducer,
- useState,
- useCallback,
- useMemo,
- useContext,
-} from "react";
+import { createContext, useReducer, useState, useCallback, useMemo, useContext } from "react";
const reducer = (state, action) => {
- switch (action.type) {
- case "CHANGE_ACTIVE_TAB":
- return state.map((call, index) => ({
- ...call,
- active: index === action.index_call,
- }));
- case "CHANGE_LIST":
- return [...action.new_list];
- case "CHANGE_ACTIVE_CATEGORY_ID":
- return state.map((call) =>
- call.id === action.tab_id
- ? { ...call, active_category_id: action.category_id }
- : call,
- );
- default:
- return state;
- }
+ switch (action.type) {
+ case "CHANGE_ACTIVE_TAB":
+ return state.map((call, index) => ({
+ ...call,
+ active: index === action.index_call,
+ }));
+ case "CHANGE_LIST":
+ return [...action.new_list];
+ case "CHANGE_ACTIVE_CATEGORY_ID":
+ return state.map((call) =>
+ call.id === action.tab_id ? { ...call, active_category_id: action.category_id } : call
+ );
+ default:
+ return state;
+ }
};
export const CallContext = createContext(null);
export const CallProvider = ({ children }) => {
- const [openCallDialog, setOpenCallDialog] = useState(false);
- const [activeCall, setActiveCall] = useState(0);
- const [calls, dispatch] = useReducer(reducer, []);
+ const [openCallDialog, setOpenCallDialog] = useState(false);
+ const [activeCall, setActiveCall] = useState(0);
+ const [calls, dispatch] = useReducer(reducer, []);
- const changeActiveTab = useCallback((index_call) => {
- dispatch({ type: "CHANGE_ACTIVE_TAB", index_call });
- }, []);
+ const changeActiveTab = useCallback((index_call) => {
+ dispatch({ type: "CHANGE_ACTIVE_TAB", index_call });
+ }, []);
- const changeList = useCallback((new_list) => {
- dispatch({ type: "CHANGE_LIST", new_list });
- }, []);
+ const changeList = useCallback((new_list) => {
+ dispatch({ type: "CHANGE_LIST", new_list });
+ }, []);
- const changeActiveCategoryId = useCallback((tab_id, category_id) => {
- dispatch({ type: "CHANGE_ACTIVE_CATEGORY_ID", tab_id, category_id });
- }, []);
+ const changeActiveCategoryId = useCallback((tab_id, category_id) => {
+ dispatch({ type: "CHANGE_ACTIVE_CATEGORY_ID", tab_id, category_id });
+ }, []);
- const changeActiveTabCall = (newValue) => {
- changeActiveTab(newValue);
- setActiveCall(newValue);
- };
+ const changeActiveTabCall = (newValue) => {
+ changeActiveTab(newValue);
+ setActiveCall(newValue);
+ };
- const newCall = useCallback(
- (data) => {
- const newCall = {
- id: data.id,
- phone_number: data.phone_number,
- date: new Date(),
- active: true,
- active_category_id: null,
- };
- const newList = [...calls, newCall];
- changeList(newList);
- changeActiveTabCall(newList.length - 1);
- },
- [calls],
- );
+ const newCall = useCallback(
+ (data) => {
+ const newCall = {
+ id: data.id,
+ phone_number: data.phone_number,
+ date: new Date(),
+ active: true,
+ active_category_id: null,
+ };
+ const newList = [...calls, newCall];
+ changeList(newList);
+ changeActiveTabCall(newList.length - 1);
+ },
+ [calls]
+ );
- const closeCall = useCallback(
- (id) => {
- const index = calls.findIndex((answer) => answer.id === id);
- const newIndex = index === 0 ? 0 : index - 1;
- const newList = [...calls];
- newList.splice(index, 1);
- if (newList.length !== 0) {
- newList[newIndex].active = true;
- changeActiveTabCall(newIndex);
- }
- changeList(newList);
- },
- [calls],
- );
+ const closeCall = useCallback(
+ (id) => {
+ const index = calls.findIndex((answer) => answer.id === id);
+ const newIndex = index === 0 ? 0 : index - 1;
+ const newList = [...calls];
+ newList.splice(index, 1);
+ if (newList.length !== 0) {
+ newList[newIndex].active = true;
+ changeActiveTabCall(newIndex);
+ }
+ changeList(newList);
+ },
+ [calls]
+ );
- const contextValue = useMemo(
- () => ({
- openCallDialog,
- setOpenCallDialog,
- calls,
- newCall,
- closeCall,
- activeCall,
- setActiveCall,
- changeActiveCategoryId,
- changeActiveTabCall,
- }),
- [openCallDialog, calls, activeCall],
- );
+ const contextValue = useMemo(
+ () => ({
+ openCallDialog,
+ setOpenCallDialog,
+ calls,
+ newCall,
+ closeCall,
+ activeCall,
+ setActiveCall,
+ changeActiveCategoryId,
+ changeActiveTabCall,
+ }),
+ [openCallDialog, calls, activeCall]
+ );
- return (
- {children}
- );
+ return {children};
};
export const useCall = () => useContext(CallContext);
diff --git a/src/lib/contexts/category.js b/src/lib/contexts/category.js
index 79e8360..4db143d 100644
--- a/src/lib/contexts/category.js
+++ b/src/lib/contexts/category.js
@@ -1,72 +1,57 @@
import { GET_CATEGORY } from "@/core/utils/routes";
-import {
- createContext,
- useCallback,
- useContext,
- useEffect,
- useMemo,
- useReducer,
-} from "react";
+import { createContext, useCallback, useContext, useEffect, useMemo, useReducer } from "react";
import useRequest from "../hooks/useRequest";
const initialState = {
- categoryLists: [],
- subCategoryLists: [],
- active_category_id: null,
+ categoryLists: [],
+ subCategoryLists: [],
+ active_category_id: null,
};
const reducer = (state, action) => {
- switch (action.type) {
- case "SET_CATEGORIES":
- return { ...state, categoryLists: action.payload };
- case "SET_SUBCATEGORIES":
- return { ...state, subCategoryLists: action.payload };
- default:
- return state;
- }
+ switch (action.type) {
+ case "SET_CATEGORIES":
+ return { ...state, categoryLists: action.payload };
+ case "SET_SUBCATEGORIES":
+ return { ...state, subCategoryLists: action.payload };
+ default:
+ return state;
+ }
};
export const CategoriesContext = createContext(null);
export const CategoriesProvider = ({ children }) => {
- const requestServer = useRequest({ notificationShow: false });
+ const requestServer = useRequest({ notificationShow: false });
- const [state, dispatch] = useReducer(reducer, initialState);
+ const [state, dispatch] = useReducer(reducer, initialState);
- useEffect(() => {
- const fetchCategories = async () => {
- try {
- const { data } = await requestServer(GET_CATEGORY, "get");
- const subCategories = data.data;
+ useEffect(() => {
+ const fetchCategories = async () => {
+ try {
+ const { data } = await requestServer(GET_CATEGORY, "get");
+ const subCategories = data.data;
- const categories = Array.from(
- new Map(
- subCategories.map((item) => [item.category_id, item]),
- ).values(),
- );
+ const categories = Array.from(new Map(subCategories.map((item) => [item.category_id, item])).values());
- dispatch({ type: "SET_CATEGORIES", payload: categories });
- dispatch({ type: "SET_SUBCATEGORIES", payload: subCategories });
- } catch (error) {}
- };
+ dispatch({ type: "SET_CATEGORIES", payload: categories });
+ dispatch({ type: "SET_SUBCATEGORIES", payload: subCategories });
+ } catch (error) {}
+ };
- fetchCategories();
- }, []);
+ fetchCategories();
+ }, []);
- const contextValue = useMemo(
- () => ({
- categoryLists: state.categoryLists,
- subCategoryLists: state.subCategoryLists,
- active_category_id: state.active_category_id,
- }),
- [state],
- );
+ const contextValue = useMemo(
+ () => ({
+ categoryLists: state.categoryLists,
+ subCategoryLists: state.subCategoryLists,
+ active_category_id: state.active_category_id,
+ }),
+ [state]
+ );
- return (
-
- {children}
-
- );
+ return {children};
};
export const useCategory = () => useContext(CategoriesContext);
diff --git a/src/lib/contexts/socket.js b/src/lib/contexts/socket.js
index a103a3a..f989e55 100644
--- a/src/lib/contexts/socket.js
+++ b/src/lib/contexts/socket.js
@@ -1,129 +1,111 @@
"use client";
import { Power, PowerOff } from "@mui/icons-material";
-import {
- createContext,
- useContext,
- useEffect,
- useMemo,
- useRef,
- useState,
- useCallback,
-} from "react";
+import { createContext, useContext, useEffect, useMemo, useRef, useState, useCallback } from "react";
import { toast } from "react-toastify";
import { io } from "socket.io-client";
import { useAuth } from "./auth";
const SocketContext = createContext({
- socket: null,
- status: "",
+ socket: null,
+ status: "",
});
export const useSocket = () => useContext(SocketContext);
export const SocketProvider = ({ children }) => {
- const { user } = useAuth();
- const socketToastId = useRef(null);
- const [status, setStatus] = useState("");
- const [clientsOnline, setClientsOnline] = useState([]);
+ const { user } = useAuth();
+ const socketToastId = useRef(null);
+ const [status, setStatus] = useState("");
+ const [clientsOnline, setClientsOnline] = useState([]);
- const socket = useMemo(() => {
- return io(`${process.env.NEXT_PUBLIC_SERVER_SOCKET_URL}`, {
- path: "/notification/socket.io",
- autoConnect: false,
- auth: { token: null },
- });
- }, []);
-
- useEffect(() => {
- if (user?.telephone_id) {
- socket.auth.token = { telephone_id: user.telephone_id, user_id: user.id };
- }
- }, [user, socket]);
-
- const handleConnect = useCallback(() => setStatus("connected"), []);
- const handleDisconnect = useCallback(() => setStatus("disconnected"), []);
- const handleConnectError = useCallback(() => setStatus("error"), []);
-
- useEffect(() => {
- socket.on("connect", handleConnect);
- socket.on("disconnect", handleDisconnect);
- socket.on("connect_error", handleConnectError);
-
- return () => {
- socket.off("connect", handleConnect);
- socket.off("disconnect", handleDisconnect);
- socket.off("connect_error", handleConnectError);
- };
- }, [socket, handleConnect, handleDisconnect, handleConnectError]);
-
- useEffect(() => {
- if (status === "connected") {
- toast.update(socketToastId.current, {
- containerId: "socket_connection",
- type: "success",
- render: "ارتباط با سرور برقرار شد",
- autoClose: 2000,
- closeButton: true,
- closeOnClick: true,
- icon: ({ theme, type }) => ,
- });
- } else if (status === "error" || status === "disconnected") {
- if (socketToastId.current) {
- toast.update(socketToastId.current, {
- containerId: "socket_connection",
- type: "warning",
- render: "ارتباط با سرور قطع شد. در حال تلاش برای بازیابی…",
- autoClose: false,
- closeButton: false,
- draggable: false,
- icon: ({ theme, type }) => ,
+ const socket = useMemo(() => {
+ return io(`${process.env.NEXT_PUBLIC_SERVER_SOCKET_URL}`, {
+ path: "/notification/socket.io",
+ autoConnect: false,
+ auth: { token: null },
});
- } else {
- socketToastId.current = toast.warn(
- "ارتباط با سرور قطع شد. در حال تلاش برای بازیابی…",
- {
- containerId: "socket_connection",
- autoClose: false,
- closeButton: false,
- draggable: false,
- icon: ({ theme, type }) => ,
- },
- );
- }
- }
- }, [status]);
+ }, []);
- useEffect(() => {
- if (status == "connected") return;
+ useEffect(() => {
+ if (user?.telephone_id) {
+ socket.auth.token = { telephone_id: user.telephone_id, user_id: user.id };
+ }
+ }, [user, socket]);
- socket.connect();
+ const handleConnect = useCallback(() => setStatus("connected"), []);
+ const handleDisconnect = useCallback(() => setStatus("disconnected"), []);
+ const handleConnectError = useCallback(() => setStatus("error"), []);
- return () => {
- socket.disconnect();
- };
- }, [socket]);
+ useEffect(() => {
+ socket.on("connect", handleConnect);
+ socket.on("disconnect", handleDisconnect);
+ socket.on("connect_error", handleConnectError);
- useEffect(() => {
- const handleNotification = (data) => {
- setClientsOnline(data.clients);
- };
- socket.on("onlineClientsUpdated", handleNotification);
+ return () => {
+ socket.off("connect", handleConnect);
+ socket.off("disconnect", handleDisconnect);
+ socket.off("connect_error", handleConnectError);
+ };
+ }, [socket, handleConnect, handleDisconnect, handleConnectError]);
- return () => {
- socket.off("onlineClientsUpdated", handleNotification);
- };
- }, [socket]);
+ useEffect(() => {
+ if (status === "connected") {
+ toast.update(socketToastId.current, {
+ containerId: "socket_connection",
+ type: "success",
+ render: "ارتباط با سرور برقرار شد",
+ autoClose: 2000,
+ closeButton: true,
+ closeOnClick: true,
+ icon: ({ theme, type }) => ,
+ });
+ } else if (status === "error" || status === "disconnected") {
+ if (socketToastId.current) {
+ toast.update(socketToastId.current, {
+ containerId: "socket_connection",
+ type: "warning",
+ render: "ارتباط با سرور قطع شد. در حال تلاش برای بازیابی…",
+ autoClose: false,
+ closeButton: false,
+ draggable: false,
+ icon: ({ theme, type }) => ,
+ });
+ } else {
+ socketToastId.current = toast.warn("ارتباط با سرور قطع شد. در حال تلاش برای بازیابی…", {
+ containerId: "socket_connection",
+ autoClose: false,
+ closeButton: false,
+ draggable: false,
+ icon: ({ theme, type }) => ,
+ });
+ }
+ }
+ }, [status]);
- const contextValue = useMemo(
- () => ({ socket, status, clientsOnline }),
- [socket, status, clientsOnline],
- );
+ useEffect(() => {
+ if (status == "connected") return;
- return (
-
- {children}
-
- );
+ socket.connect();
+
+ return () => {
+ socket.disconnect();
+ };
+ }, [socket]);
+
+ useEffect(() => {
+ const handleNotification = (data) => {
+ setClientsOnline(data.clients);
+ };
+ socket.on("onlineClientsUpdated", handleNotification);
+
+ return () => {
+ socket.off("onlineClientsUpdated", handleNotification);
+ };
+ }, [socket]);
+
+ const contextValue = useMemo(() => ({ socket, status, clientsOnline }), [socket, status, clientsOnline]);
+
+ return {children};
};
export default SocketContext;
diff --git a/src/lib/contexts/tableSetting.js b/src/lib/contexts/tableSetting.js
index 6009f88..bde0505 100644
--- a/src/lib/contexts/tableSetting.js
+++ b/src/lib/contexts/tableSetting.js
@@ -6,184 +6,137 @@ import LZString from "lz-string";
export const TableSettingContext = createContext();
const decompressData = (compressedData) => {
- try {
- const decompressed = LZString.decompressFromUTF16(compressedData);
- if (decompressed === null) {
- localStorage.removeItem("_setting-app");
- return null;
- } else {
- return JSON.parse(decompressed);
+ try {
+ const decompressed = LZString.decompressFromUTF16(compressedData);
+ if (decompressed === null) {
+ localStorage.removeItem("_setting-app");
+ return null;
+ } else {
+ return JSON.parse(decompressed);
+ }
+ } catch (error) {
+ localStorage.removeItem("_setting-app");
+ return null;
}
- } catch (error) {
- localStorage.removeItem("_setting-app");
- return null;
- }
};
export const TableSettingProvider = ({ children }) => {
- const [settingStore, setSettingStore] = useState({});
+ const [settingStore, setSettingStore] = useState({});
- useEffect(() => {
- const compressedData = localStorage.getItem("_setting-app");
+ useEffect(() => {
+ const compressedData = localStorage.getItem("_setting-app");
- const data = compressedData ? decompressData(compressedData) : null;
- if (data) {
- setSettingStore(data);
- }
- }, []);
+ const data = compressedData ? decompressData(compressedData) : null;
+ if (data) {
+ setSettingStore(data);
+ }
+ }, []);
- const hideAction = useCallback(
- (user_id, page_name, table_name, settingValue) => {
- clearAction(user_id, page_name, table_name, "hides");
- updateSettingStorage(
- user_id,
- page_name,
- table_name,
- "hides",
- settingValue,
- );
- },
- [],
- );
+ const hideAction = useCallback((user_id, page_name, table_name, settingValue) => {
+ clearAction(user_id, page_name, table_name, "hides");
+ updateSettingStorage(user_id, page_name, table_name, "hides", settingValue);
+ }, []);
- const sortAction = useCallback(
- (user_id, page_name, table_name, settingValue) => {
- updateSettingStorage(
- user_id,
- page_name,
- table_name,
- "sorts",
- settingValue,
- );
- },
- [],
- );
+ const sortAction = useCallback((user_id, page_name, table_name, settingValue) => {
+ updateSettingStorage(user_id, page_name, table_name, "sorts", settingValue);
+ }, []);
- const filterAction = (user_id, page_name, table_name, settingValue) => {
- updateSettingStorage(
- user_id,
- page_name,
- table_name,
- "filters",
- settingValue,
- );
- };
-
- const resetAction = (user_id, page_name, table_name) => {
- const compressedData = localStorage.getItem("_setting-app");
- const prevLocalStorage = compressedData
- ? decompressData(compressedData)
- : {};
-
- const userSettings = prevLocalStorage[user_id] || {};
- const pageSettings = userSettings[page_name] || {};
- delete pageSettings[table_name];
-
- const resetData = {
- ...prevLocalStorage,
- [user_id]: {
- ...userSettings,
- [page_name]: {
- ...pageSettings,
- },
- },
+ const filterAction = (user_id, page_name, table_name, settingValue) => {
+ updateSettingStorage(user_id, page_name, table_name, "filters", settingValue);
};
- localStorage.setItem(
- "_setting-app",
- LZString.compressToUTF16(JSON.stringify(resetData)),
- );
- setSettingStore(resetData);
- };
+ const resetAction = (user_id, page_name, table_name) => {
+ const compressedData = localStorage.getItem("_setting-app");
+ const prevLocalStorage = compressedData ? decompressData(compressedData) : {};
- const updateSettingStorage = (
- user_id,
- page_name,
- table_name,
- settingType,
- settingValue,
- ) => {
- const compressedData = localStorage.getItem("_setting-app");
- const prevLocalStorage = compressedData
- ? decompressData(compressedData)
- : {};
+ const userSettings = prevLocalStorage[user_id] || {};
+ const pageSettings = userSettings[page_name] || {};
+ delete pageSettings[table_name];
- const userSettings = prevLocalStorage[user_id] || {};
- const pageSettings = userSettings[page_name] || {};
- const tableSettings = pageSettings[table_name] || {};
+ const resetData = {
+ ...prevLocalStorage,
+ [user_id]: {
+ ...userSettings,
+ [page_name]: {
+ ...pageSettings,
+ },
+ },
+ };
- let newSettings;
- if (settingType === "sorts" || settingType === "filters") {
- newSettings = [...settingValue];
- } else {
- newSettings = { ...(tableSettings[settingType] || {}), ...settingValue };
- }
-
- const updatedLocalStorage = {
- ...prevLocalStorage,
- [user_id]: {
- ...userSettings,
- [page_name]: {
- ...pageSettings,
- [table_name]: {
- ...tableSettings,
- [settingType]: Array.isArray(settingValue)
- ? [...newSettings]
- : { ...newSettings },
- },
- },
- },
+ localStorage.setItem("_setting-app", LZString.compressToUTF16(JSON.stringify(resetData)));
+ setSettingStore(resetData);
};
- localStorage.setItem(
- "_setting-app",
- LZString.compressToUTF16(JSON.stringify(updatedLocalStorage)),
- );
- setSettingStore(updatedLocalStorage);
- };
+ const updateSettingStorage = (user_id, page_name, table_name, settingType, settingValue) => {
+ const compressedData = localStorage.getItem("_setting-app");
+ const prevLocalStorage = compressedData ? decompressData(compressedData) : {};
- const clearAction = (user_id, page_name, table_name, key) => {
- const compressedData = localStorage.getItem("_setting-app");
- const prevLocalStorage = compressedData
- ? decompressData(compressedData)
- : {};
+ const userSettings = prevLocalStorage[user_id] || {};
+ const pageSettings = userSettings[page_name] || {};
+ const tableSettings = pageSettings[table_name] || {};
- const userSettings = prevLocalStorage[user_id] || {};
- const pageSettings = userSettings[page_name] || {};
- const tableSettings = pageSettings[table_name] || {};
+ let newSettings;
+ if (settingType === "sorts" || settingType === "filters") {
+ newSettings = [...settingValue];
+ } else {
+ newSettings = { ...(tableSettings[settingType] || {}), ...settingValue };
+ }
- const updatedSettings = {
- ...prevLocalStorage,
- [user_id]: {
- ...userSettings,
- [page_name]: {
- ...pageSettings,
- [table_name]: {
- ...tableSettings,
- [key]: Array.isArray(tableSettings[key]) ? [] : {},
- },
- },
- },
+ const updatedLocalStorage = {
+ ...prevLocalStorage,
+ [user_id]: {
+ ...userSettings,
+ [page_name]: {
+ ...pageSettings,
+ [table_name]: {
+ ...tableSettings,
+ [settingType]: Array.isArray(settingValue) ? [...newSettings] : { ...newSettings },
+ },
+ },
+ },
+ };
+
+ localStorage.setItem("_setting-app", LZString.compressToUTF16(JSON.stringify(updatedLocalStorage)));
+ setSettingStore(updatedLocalStorage);
};
- localStorage.setItem(
- "_setting-app",
- LZString.compressToUTF16(JSON.stringify(updatedSettings)),
- );
- setSettingStore(updatedSettings);
- };
+ const clearAction = (user_id, page_name, table_name, key) => {
+ const compressedData = localStorage.getItem("_setting-app");
+ const prevLocalStorage = compressedData ? decompressData(compressedData) : {};
- return (
-
- {children}
-
- );
+ const userSettings = prevLocalStorage[user_id] || {};
+ const pageSettings = userSettings[page_name] || {};
+ const tableSettings = pageSettings[table_name] || {};
+
+ const updatedSettings = {
+ ...prevLocalStorage,
+ [user_id]: {
+ ...userSettings,
+ [page_name]: {
+ ...pageSettings,
+ [table_name]: {
+ ...tableSettings,
+ [key]: Array.isArray(tableSettings[key]) ? [] : {},
+ },
+ },
+ },
+ };
+
+ localStorage.setItem("_setting-app", LZString.compressToUTF16(JSON.stringify(updatedSettings)));
+ setSettingStore(updatedSettings);
+ };
+
+ return (
+
+ {children}
+
+ );
};
diff --git a/src/lib/hooks/useCallerHistory.js b/src/lib/hooks/useCallerHistory.js
index 21cee61..10da59f 100644
--- a/src/lib/hooks/useCallerHistory.js
+++ b/src/lib/hooks/useCallerHistory.js
@@ -3,47 +3,45 @@ import useRequest from "./useRequest";
import { GET_CALLER_HISTORY } from "@/core/utils/routes";
const useCallerHistory = (callId, phoneNumber, maxSize) => {
- const requestServer = useRequest();
+ const requestServer = useRequest();
- const [historyData, setHistoryData] = useState([]);
- const [isLoading, setIsLoading] = useState(false);
- const [hasError, setHasError] = useState(false);
+ const [historyData, setHistoryData] = useState([]);
+ const [isLoading, setIsLoading] = useState(false);
+ const [hasError, setHasError] = useState(false);
- useEffect(() => {
- const fetchHistory = async () => {
- if (!phoneNumber || !maxSize) return;
+ useEffect(() => {
+ const fetchHistory = async () => {
+ if (!phoneNumber || !maxSize) return;
- setIsLoading(true);
- setHasError(false);
+ setIsLoading(true);
+ setHasError(false);
- try {
- const url = `${GET_CALLER_HISTORY}?phone_number=${phoneNumber}&size=${maxSize}`;
- const { data } = await requestServer(url, "get");
- const items = data?.data || [];
+ try {
+ const url = `${GET_CALLER_HISTORY}?phone_number=${phoneNumber}&size=${maxSize}`;
+ const { data } = await requestServer(url, "get");
+ const items = data?.data || [];
- const filtered = items.filter((item) => item.id !== callId);
- const unique = Array.from(
- new Map(filtered.map((item) => [item.id, item])).values(),
- );
+ const filtered = items.filter((item) => item.id !== callId);
+ const unique = Array.from(new Map(filtered.map((item) => [item.id, item])).values());
- setHistoryData(unique);
- } catch (error) {
- setHasError(true);
- setHistoryData([]);
- } finally {
- setIsLoading(false);
- }
+ setHistoryData(unique);
+ } catch (error) {
+ setHasError(true);
+ setHistoryData([]);
+ } finally {
+ setIsLoading(false);
+ }
+ };
+
+ fetchHistory();
+ }, [callId, phoneNumber, maxSize]);
+
+ return {
+ firstItemOfHistory: historyData[0] || false,
+ historyList: historyData.length > 1 ? historyData.slice(1) : false,
+ isLoadingHistoryList: isLoading,
+ errorHistoryList: hasError,
};
-
- fetchHistory();
- }, [callId, phoneNumber, maxSize]);
-
- return {
- firstItemOfHistory: historyData[0] || false,
- historyList: historyData.length > 1 ? historyData.slice(1) : false,
- isLoadingHistoryList: isLoading,
- errorHistoryList: hasError,
- };
};
export default useCallerHistory;
diff --git a/src/lib/hooks/useDataTable.js b/src/lib/hooks/useDataTable.js
index f0cdc03..c940d91 100644
--- a/src/lib/hooks/useDataTable.js
+++ b/src/lib/hooks/useDataTable.js
@@ -2,26 +2,18 @@ import { useContext } from "react";
import { DataTableContext } from "@/lib/contexts/DataTable";
const useTableSetting = () => {
- const {
- filterData,
- setFilterData,
- sortData,
- setSortData,
- hideData,
- setHideData,
- isDirty,
- isAnyDirty,
- } = useContext(DataTableContext);
- return {
- filterData,
- setFilterData,
- sortData,
- setSortData,
- hideData,
- setHideData,
- isDirty,
- isAnyDirty,
- };
+ const { filterData, setFilterData, sortData, setSortData, hideData, setHideData, isDirty, isAnyDirty } =
+ useContext(DataTableContext);
+ return {
+ filterData,
+ setFilterData,
+ sortData,
+ setSortData,
+ hideData,
+ setHideData,
+ isDirty,
+ isAnyDirty,
+ };
};
export default useTableSetting;
diff --git a/src/lib/hooks/usePermissions.js b/src/lib/hooks/usePermissions.js
index b1f2856..c50c0e6 100644
--- a/src/lib/hooks/usePermissions.js
+++ b/src/lib/hooks/usePermissions.js
@@ -3,19 +3,19 @@ import useSWR from "swr";
import useRequest from "./useRequest";
export const usePermissions = () => {
- const request = useRequest();
+ const request = useRequest();
- const fetcher = async (url) => {
- try {
- const response = await request(url);
- return response.data.data;
- } catch (error) {
- throw new Error();
- }
- };
+ const fetcher = async (url) => {
+ try {
+ const response = await request(url);
+ return response.data.data;
+ } catch (error) {
+ throw new Error();
+ }
+ };
- return useSWR(GET_PERMISSIONS_ROUTE, fetcher, {
- keepPreviousData: true,
- dedupingInterval: 30000,
- });
+ return useSWR(GET_PERMISSIONS_ROUTE, fetcher, {
+ keepPreviousData: true,
+ dedupingInterval: 30000,
+ });
};
diff --git a/src/lib/hooks/useProvince.js b/src/lib/hooks/useProvince.js
index d73cfdc..a670efd 100644
--- a/src/lib/hooks/useProvince.js
+++ b/src/lib/hooks/useProvince.js
@@ -3,27 +3,27 @@ import { GET_PROVINCE_LISTS } from "@/core/utils/routes";
import useRequest from "@/lib/hooks/useRequest";
const useProvinces = () => {
- const requestServer = useRequest();
- const [provinces, setProvinces] = useState([]);
- const [loadingProvinces, setLoadingProvinces] = useState(true);
- const [errorProvinces, setErrorProvinces] = useState(null);
+ const requestServer = useRequest();
+ const [provinces, setProvinces] = useState([]);
+ const [loadingProvinces, setLoadingProvinces] = useState(true);
+ const [errorProvinces, setErrorProvinces] = useState(null);
- useEffect(() => {
- const fetchProvinces = async () => {
- try {
- const response = await requestServer(`${GET_PROVINCE_LISTS}`);
- setProvinces(response.data.data);
- setLoadingProvinces(false);
- } catch (e) {
- setErrorProvinces(e);
- setLoadingProvinces(false);
- }
- };
+ useEffect(() => {
+ const fetchProvinces = async () => {
+ try {
+ const response = await requestServer(`${GET_PROVINCE_LISTS}`);
+ setProvinces(response.data.data);
+ setLoadingProvinces(false);
+ } catch (e) {
+ setErrorProvinces(e);
+ setLoadingProvinces(false);
+ }
+ };
- fetchProvinces();
- }, []);
+ fetchProvinces();
+ }, []);
- return { provinces, loadingProvinces, errorProvinces };
+ return { provinces, loadingProvinces, errorProvinces };
};
export default useProvinces;
diff --git a/src/lib/hooks/useRequest.js b/src/lib/hooks/useRequest.js
index 9f4f2ff..547161e 100644
--- a/src/lib/hooks/useRequest.js
+++ b/src/lib/hooks/useRequest.js
@@ -5,62 +5,58 @@ import { useAuth } from "../contexts/auth";
import { useSidebarBadge } from "./useSidebarBadge";
const defaultOptions = {
- data: {},
- requestOptions: {
- headers: {},
- },
- notificationShow: true,
- notificationSuccess: false,
- notificationFailed: true,
- hasSidebarUpdate: false,
+ data: {},
+ requestOptions: {
+ headers: {},
+ },
+ notificationShow: true,
+ notificationSuccess: false,
+ notificationFailed: true,
+ hasSidebarUpdate: false,
};
const useRequest = (initOptions) => {
- const _options = Object.assign({}, defaultOptions, initOptions);
+ const _options = Object.assign({}, defaultOptions, initOptions);
- const { mutate: sidebarUpdate } = useSidebarBadge({
- enable: _options.hasSidebarUpdate,
- });
- const { logout } = useAuth();
+ const { mutate: sidebarUpdate } = useSidebarBadge({
+ enable: _options.hasSidebarUpdate,
+ });
+ const { logout } = useAuth();
- /**
- * Performs an HTTP request.
- * @param {string} url - The URL to send the request to.
- * @param {'get' | 'post' | 'put' | 'delete'} [method='get'] - HTTP method.
- * @param {object} [options] - Additional request options.
- * @returns {Promise} - Axios response.
- */
- return async (url = "", method = "get", options) => {
- const mergedOptions = Object.assign({}, _options, options);
- try {
- const response = await axios({
- url,
- method,
- data: method === "get" ? null : mergedOptions.data,
- withCredentials: true,
- ...mergedOptions.requestOptions,
- });
- if (mergedOptions.hasSidebarUpdate) {
- if (method === "post" || method === "put" || method === "delete")
- sidebarUpdate();
- }
- successRequest(
- mergedOptions.notificationShow && mergedOptions.notificationSuccess,
- "request_data",
- );
- return response;
- } catch (error) {
- if (error.response) {
- errorResponse(
- error.response,
- mergedOptions.notificationShow && mergedOptions.notificationFailed,
- "request_data",
- logout,
- );
- }
- throw error;
- }
- };
+ /**
+ * Performs an HTTP request.
+ * @param {string} url - The URL to send the request to.
+ * @param {'get' | 'post' | 'put' | 'delete'} [method='get'] - HTTP method.
+ * @param {object} [options] - Additional request options.
+ * @returns {Promise} - Axios response.
+ */
+ return async (url = "", method = "get", options) => {
+ const mergedOptions = Object.assign({}, _options, options);
+ try {
+ const response = await axios({
+ url,
+ method,
+ data: method === "get" ? null : mergedOptions.data,
+ withCredentials: true,
+ ...mergedOptions.requestOptions,
+ });
+ if (mergedOptions.hasSidebarUpdate) {
+ if (method === "post" || method === "put" || method === "delete") sidebarUpdate();
+ }
+ successRequest(mergedOptions.notificationShow && mergedOptions.notificationSuccess, "request_data");
+ return response;
+ } catch (error) {
+ if (error.response) {
+ errorResponse(
+ error.response,
+ mergedOptions.notificationShow && mergedOptions.notificationFailed,
+ "request_data",
+ logout
+ );
+ }
+ throw error;
+ }
+ };
};
export default useRequest;
diff --git a/src/lib/hooks/useRoles.js b/src/lib/hooks/useRoles.js
index 822cbef..098f3e4 100644
--- a/src/lib/hooks/useRoles.js
+++ b/src/lib/hooks/useRoles.js
@@ -3,27 +3,27 @@ import { GET_ROLE_LISTS } from "@/core/utils/routes";
import useRequest from "@/lib/hooks/useRequest";
const useRoles = () => {
- const requestServer = useRequest();
- const [roles, setRoles] = useState([]);
- const [loadingRoles, setLoadingRoles] = useState(true);
- const [errorRoles, setErrorRoles] = useState(null);
+ const requestServer = useRequest();
+ const [roles, setRoles] = useState([]);
+ const [loadingRoles, setLoadingRoles] = useState(true);
+ const [errorRoles, setErrorRoles] = useState(null);
- useEffect(() => {
- const fetchRoles = async () => {
- try {
- const response = await requestServer(`${GET_ROLE_LISTS}`);
- setRoles(response.data.data);
- setLoadingRoles(false);
- } catch (e) {
- setErrorRoles(e);
- setLoadingRoles(false);
- }
- };
+ useEffect(() => {
+ const fetchRoles = async () => {
+ try {
+ const response = await requestServer(`${GET_ROLE_LISTS}`);
+ setRoles(response.data.data);
+ setLoadingRoles(false);
+ } catch (e) {
+ setErrorRoles(e);
+ setLoadingRoles(false);
+ }
+ };
- fetchRoles();
- }, []);
+ fetchRoles();
+ }, []);
- return { roles, loadingRoles, errorRoles };
+ return { roles, loadingRoles, errorRoles };
};
export default useRoles;
diff --git a/src/lib/hooks/useSidebarBadge.js b/src/lib/hooks/useSidebarBadge.js
index 10e7461..7f83a07 100644
--- a/src/lib/hooks/useSidebarBadge.js
+++ b/src/lib/hooks/useSidebarBadge.js
@@ -3,21 +3,21 @@ import axios from "axios";
import useSWR from "swr";
export const useSidebarBadge = ({ enable = true }) => {
- const fetcher = async (url) => {
- try {
- const response = await axios({
- url,
- method: "get",
- withCredentials: true,
- });
- return response.data.data;
- } catch (error) {
- throw new Error();
- }
- };
+ const fetcher = async (url) => {
+ try {
+ const response = await axios({
+ url,
+ method: "get",
+ withCredentials: true,
+ });
+ return response.data.data;
+ } catch (error) {
+ throw new Error();
+ }
+ };
- return useSWR(enable ? GET_SIDEBAR_BADGE_ROUTE : "", fetcher, {
- keepPreviousData: true,
- dedupingInterval: 30000,
- });
+ return useSWR(enable ? GET_SIDEBAR_BADGE_ROUTE : "", fetcher, {
+ keepPreviousData: true,
+ dedupingInterval: 30000,
+ });
};
diff --git a/src/lib/hooks/useTableSetting.js b/src/lib/hooks/useTableSetting.js
index 35860f0..c841ffc 100644
--- a/src/lib/hooks/useTableSetting.js
+++ b/src/lib/hooks/useTableSetting.js
@@ -2,9 +2,8 @@ import { useContext } from "react";
import { TableSettingContext } from "../contexts/tableSetting";
const useTableSetting = () => {
- const { settingStore, hideAction, sortAction, filterAction, resetAction } =
- useContext(TableSettingContext);
- return { settingStore, hideAction, sortAction, filterAction, resetAction };
+ const { settingStore, hideAction, sortAction, filterAction, resetAction } = useContext(TableSettingContext);
+ return { settingStore, hideAction, sortAction, filterAction, resetAction };
};
export default useTableSetting;