diff --git a/.cursorindexingignore b/.cursorindexingignore
new file mode 100644
index 00000000..953908e7
--- /dev/null
+++ b/.cursorindexingignore
@@ -0,0 +1,3 @@
+
+# Don't index SpecStory auto-save files, but allow explicit context inclusion via @ references
+.specstory/**
diff --git a/.env.sample b/.env.sample
index 6f595878..43aa0761 100644
--- a/.env.sample
+++ b/.env.sample
@@ -1,4 +1,7 @@
-# Required - LeadCMS root URL could be local or remote url or empty value if admin is supposed to be server from wwwroot folder of the backend
+# Required - LeadCMS API root URL (preferred key)
+VITE_API_URL=
+
+# Backward compatibility key (legacy). If VITE_API_URL is empty, CORE_API will be used.
CORE_API=
#Required - Code version
diff --git a/README.md b/README.md
index 2aa8fda7..31e7d080 100644
--- a/README.md
+++ b/README.md
@@ -21,6 +21,10 @@ Install dependencies:
Create `.env` file and add configurations as shown in `.env.sample` file. Refer below example:
+ VITE_API_URL=http://localhost:45437
+
+Legacy key is still supported:
+
CORE_API=http://localhost:45437
Fix any code formatting errors/warnings before do git commit.
@@ -43,4 +47,4 @@ Start development server:
Open the app:
-http://localhost:8080
+http://localhost:8081
diff --git a/index.html b/index.html
new file mode 100644
index 00000000..d4f31555
--- /dev/null
+++ b/index.html
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+ <%= title || 'LeadCMS Admin' %>
+
+
+
+
+
+
+
diff --git a/package-lock.json b/package-lock.json
index d19531a6..7f113685 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "leadcms.admin",
- "version": "1.5.15-pre",
+ "version": "1.5.16-pre",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "leadcms.admin",
- "version": "1.5.15-pre",
+ "version": "1.5.16-pre",
"license": "MIT",
"dependencies": {
"@azure/msal-browser": "^4.12.0",
@@ -23,10 +23,10 @@
"@mdx-js/mdx": "^3.1.1",
"@mdxeditor/editor": "^3.42.0",
"@monaco-editor/react": "^4.7.0",
- "@mui/icons-material": "^7.1.0",
- "@mui/material": "^7.1.0",
- "@mui/x-data-grid": "^8.27.1",
- "@mui/x-date-pickers": "^8.27.0",
+ "@mui/material": "7.3.7",
+ "@mui/x-data-grid": "^8.3.0",
+ "@mui/x-date-pickers": "^8.3.0",
+ "@tinymce/tinymce-react": "^6.1.0",
"@uiw/react-md-editor": "^4.0.6",
"@uiw/react-textarea-code-editor": "^3.1.1",
"cronstrue": "^2.55.0",
@@ -36,7 +36,6 @@
"hastscript": "^7.2.0",
"liquidjs": "^10.24.0",
"locale-codes": "^1.3.1",
- "lodash": "^4.17.21",
"lucide-react": "^0.513.0",
"marked": "^18.0.2",
"mjml-browser": "^4.18.0",
@@ -57,7 +56,6 @@
"remark-directive": "^2.0.1",
"remark-gfm": "^3.0.1",
"sanitize-html": "^2.17.3",
- "typesafe-routes": "^9.0.1",
"unist-util-visit": "^4.1.2",
"use-debounce": "^9.0.3",
"use-local-storage": "^2.3.6",
@@ -67,30 +65,24 @@
"zod-formik-adapter": "^1.2.0"
},
"devDependencies": {
- "@types/dotenv-webpack": "^7.0.3",
- "@types/node": "^22.0.0",
+ "@types/node": "^24.1.0",
"@types/react": "^18.2.0",
"@types/react-dom": "^18.0.10",
"@types/sanitize-html": "^2.16.1",
- "@typescript-eslint/eslint-plugin": "^5.48.2",
- "@typescript-eslint/parser": "^5.48.2",
- "buffer": "^6.0.3",
- "clean-webpack-plugin": "^4.0.0",
+ "@typescript-eslint/eslint-plugin": "8.52.0",
+ "@typescript-eslint/parser": "8.52.0",
+ "@vitejs/plugin-react": "5.1.2",
+ "buffer": "6.0.3",
"commander": "^14.0.0",
- "copy-webpack-plugin": "^13.0.0",
"cross-env": "^7.0.3",
- "css-loader": "^7.1.2",
"dotenv": "^16.0.3",
- "dotenv-webpack": "^8.0.1",
- "eslint": "^8.32.0",
- "eslint-config-prettier": "^8.6.0",
- "eslint-plugin-prettier": "^4.2.1",
- "eslint-plugin-react": "^7.32.1",
- "eslint-plugin-react-hooks": "^4.6.0",
- "html-webpack-plugin": "^5.6.3",
+ "eslint": "9.39.2",
+ "eslint-config-prettier": "10.1.8",
+ "eslint-plugin-prettier": "5.5.4",
+ "eslint-plugin-react": "7.37.5",
+ "eslint-plugin-react-hooks": "7.0.1",
"husky": "^8.0.3",
- "prettier": "^2.8.3",
- "style-loader": "^4.0.0",
+ "prettier": "3.7.4",
"swagger-typescript-api": "^13.1.3",
"ts-loader": "^9.5.2",
"ts-node": "^10.9.1",
@@ -102,7 +94,7 @@
},
"engines": {
"node": "^24.0.0",
- "npm": "^11.0.0"
+ "npm": "^11.1.0"
}
},
"node_modules/@azure/msal-browser": {
@@ -154,6 +146,61 @@
"node": ">=6.9.0"
}
},
+ "node_modules/@babel/compat-data": {
+ "version": "7.28.5",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.5.tgz",
+ "integrity": "sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/core": {
+ "version": "7.28.5",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.5.tgz",
+ "integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@babel/code-frame": "^7.27.1",
+ "@babel/generator": "^7.28.5",
+ "@babel/helper-compilation-targets": "^7.27.2",
+ "@babel/helper-module-transforms": "^7.28.3",
+ "@babel/helpers": "^7.28.4",
+ "@babel/parser": "^7.28.5",
+ "@babel/template": "^7.27.2",
+ "@babel/traverse": "^7.28.5",
+ "@babel/types": "^7.28.5",
+ "@jridgewell/remapping": "^2.3.5",
+ "convert-source-map": "^2.0.0",
+ "debug": "^4.1.0",
+ "gensync": "^1.0.0-beta.2",
+ "json5": "^2.2.3",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/babel"
+ }
+ },
+ "node_modules/@babel/core/node_modules/convert-source-map": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
+ "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
+ "dev": true
+ },
+ "node_modules/@babel/core/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
"node_modules/@babel/generator": {
"version": "7.29.1",
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.1.tgz",
@@ -170,11 +217,35 @@
"node": ">=6.9.0"
}
},
+ "node_modules/@babel/helper-compilation-targets": {
+ "version": "7.27.2",
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz",
+ "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/compat-data": "^7.27.2",
+ "@babel/helper-validator-option": "^7.27.1",
+ "browserslist": "^4.24.0",
+ "lru-cache": "^5.1.1",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-compilation-targets/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
"node_modules/@babel/helper-globals": {
"version": "7.28.0",
"resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz",
"integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==",
- "license": "MIT",
"engines": {
"node": ">=6.9.0"
}
@@ -192,6 +263,32 @@
"node": ">=6.9.0"
}
},
+ "node_modules/@babel/helper-module-transforms": {
+ "version": "7.28.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz",
+ "integrity": "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-module-imports": "^7.27.1",
+ "@babel/helper-validator-identifier": "^7.27.1",
+ "@babel/traverse": "^7.28.3"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/helper-plugin-utils": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz",
+ "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
"node_modules/@babel/helper-string-parser": {
"version": "7.27.1",
"resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz",
@@ -205,15 +302,36 @@
"version": "7.28.5",
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz",
"integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==",
- "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-validator-option": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz",
+ "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helpers": {
+ "version": "7.28.4",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.4.tgz",
+ "integrity": "sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==",
+ "dev": true,
+ "dependencies": {
+ "@babel/template": "^7.27.2",
+ "@babel/types": "^7.28.4"
+ },
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/parser": {
- "version": "7.29.0",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.0.tgz",
- "integrity": "sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==",
+ "version": "7.29.2",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.2.tgz",
+ "integrity": "sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==",
"license": "MIT",
"dependencies": {
"@babel/types": "^7.29.0"
@@ -225,10 +343,40 @@
"node": ">=6.0.0"
}
},
+ "node_modules/@babel/plugin-transform-react-jsx-self": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.27.1.tgz",
+ "integrity": "sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-react-jsx-source": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.27.1.tgz",
+ "integrity": "sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
"node_modules/@babel/runtime": {
- "version": "7.28.6",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.6.tgz",
- "integrity": "sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA==",
+ "version": "7.28.4",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.4.tgz",
+ "integrity": "sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==",
"license": "MIT",
"engines": {
"node": ">=6.9.0"
@@ -1099,6 +1247,12 @@
"react-dom": "^16.8.0 || ^17 || ^18 || ^19"
}
},
+ "node_modules/@codesandbox/sandpack-react/node_modules/react-is": {
+ "version": "17.0.2",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
+ "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==",
+ "license": "MIT"
+ },
"node_modules/@cspotcode/source-map-support": {
"version": "0.8.1",
"resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz",
@@ -1348,155 +1502,670 @@
"integrity": "sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==",
"license": "MIT"
},
- "node_modules/@eslint-community/eslint-utils": {
- "version": "4.9.1",
- "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz",
- "integrity": "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==",
+ "node_modules/@esbuild/aix-ppc64": {
+ "version": "0.27.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.2.tgz",
+ "integrity": "sha512-GZMB+a0mOMZs4MpDbj8RJp4cw+w1WV5NYD6xzgvzUJ5Ek2jerwfO2eADyI6ExDSUED+1X8aMbegahsJi+8mgpw==",
+ "cpu": [
+ "ppc64"
+ ],
"dev": true,
- "license": "MIT",
- "dependencies": {
- "eslint-visitor-keys": "^3.4.3"
- },
+ "optional": true,
+ "os": [
+ "aix"
+ ],
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- },
- "peerDependencies": {
- "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
+ "node": ">=18"
}
},
- "node_modules/@eslint-community/regexpp": {
- "version": "4.12.2",
- "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz",
- "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==",
+ "node_modules/@esbuild/android-arm": {
+ "version": "0.27.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.2.tgz",
+ "integrity": "sha512-DVNI8jlPa7Ujbr1yjU2PfUSRtAUZPG9I1RwW4F4xFB1Imiu2on0ADiI/c3td+KmDtVKNbi+nffGDQMfcIMkwIA==",
+ "cpu": [
+ "arm"
+ ],
"dev": true,
- "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
"engines": {
- "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
+ "node": ">=18"
}
},
- "node_modules/@eslint/eslintrc": {
- "version": "2.1.4",
- "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz",
- "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==",
+ "node_modules/@esbuild/android-arm64": {
+ "version": "0.27.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.2.tgz",
+ "integrity": "sha512-pvz8ZZ7ot/RBphf8fv60ljmaoydPU12VuXHImtAs0XhLLw+EXBi2BLe3OYSBslR4rryHvweW5gmkKFwTiFy6KA==",
+ "cpu": [
+ "arm64"
+ ],
"dev": true,
- "license": "MIT",
- "dependencies": {
- "ajv": "^6.12.4",
- "debug": "^4.3.2",
- "espree": "^9.6.0",
- "globals": "^13.19.0",
- "ignore": "^5.2.0",
- "import-fresh": "^3.2.1",
- "js-yaml": "^4.1.0",
- "minimatch": "^3.1.2",
- "strip-json-comments": "^3.1.1"
- },
+ "optional": true,
+ "os": [
+ "android"
+ ],
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
+ "node": ">=18"
}
},
- "node_modules/@eslint/js": {
- "version": "8.57.1",
- "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz",
- "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==",
+ "node_modules/@esbuild/android-x64": {
+ "version": "0.27.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.2.tgz",
+ "integrity": "sha512-z8Ank4Byh4TJJOh4wpz8g2vDy75zFL0TlZlkUkEwYXuPSgX8yzep596n6mT7905kA9uHZsf/o2OJZubl2l3M7A==",
+ "cpu": [
+ "x64"
+ ],
"dev": true,
- "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": ">=18"
}
},
- "node_modules/@exodus/schemasafe": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/@exodus/schemasafe/-/schemasafe-1.3.0.tgz",
- "integrity": "sha512-5Aap/GaRupgNx/feGBwLLTVv8OQFfv3pq2lPRzPg9R+IOBnDgghTGW7l7EuVXOvg5cc/xSAlRW8rBrjIC3Nvqw==",
+ "node_modules/@esbuild/darwin-arm64": {
+ "version": "0.27.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.2.tgz",
+ "integrity": "sha512-davCD2Zc80nzDVRwXTcQP/28fiJbcOwvdolL0sOiOsbwBa72kegmVU0Wrh1MYrbuCL98Omp5dVhQFWRKR2ZAlg==",
+ "cpu": [
+ "arm64"
+ ],
"dev": true,
- "license": "MIT"
- },
- "node_modules/@floating-ui/core": {
- "version": "1.7.4",
- "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.7.4.tgz",
- "integrity": "sha512-C3HlIdsBxszvm5McXlB8PeOEWfBhcGBTZGkGlWc2U0KFY5IwG5OQEuQ8rq52DZmcHDlPLd+YFBK+cZcytwIFWg==",
- "license": "MIT",
- "dependencies": {
- "@floating-ui/utils": "^0.2.10"
- }
- },
- "node_modules/@floating-ui/dom": {
- "version": "1.7.5",
- "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.7.5.tgz",
- "integrity": "sha512-N0bD2kIPInNHUHehXhMke1rBGs1dwqvC9O9KYMyyjK7iXt7GAhnro7UlcuYcGdS/yYOlq0MAVgrow8IbWJwyqg==",
- "license": "MIT",
- "dependencies": {
- "@floating-ui/core": "^1.7.4",
- "@floating-ui/utils": "^0.2.10"
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=18"
}
},
- "node_modules/@floating-ui/react": {
- "version": "0.27.18",
- "resolved": "https://registry.npmjs.org/@floating-ui/react/-/react-0.27.18.tgz",
- "integrity": "sha512-xJWJxvmy3a05j643gQt+pRbht5XnTlGpsEsAPnMi5F5YTOEEJymA90uZKBD8OvIv5XvZ1qi4GcccSlqT3Bq44Q==",
- "license": "MIT",
- "dependencies": {
- "@floating-ui/react-dom": "^2.1.7",
- "@floating-ui/utils": "^0.2.10",
- "tabbable": "^6.0.0"
- },
- "peerDependencies": {
- "react": ">=17.0.0",
- "react-dom": ">=17.0.0"
+ "node_modules/@esbuild/darwin-x64": {
+ "version": "0.27.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.2.tgz",
+ "integrity": "sha512-ZxtijOmlQCBWGwbVmwOF/UCzuGIbUkqB1faQRf5akQmxRJ1ujusWsb3CVfk/9iZKr2L5SMU5wPBi1UWbvL+VQA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=18"
}
},
- "node_modules/@floating-ui/react-dom": {
- "version": "2.1.7",
- "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.7.tgz",
- "integrity": "sha512-0tLRojf/1Go2JgEVm+3Frg9A3IW8bJgKgdO0BN5RkF//ufuz2joZM63Npau2ff3J6lUVYgDSNzNkR+aH3IVfjg==",
- "license": "MIT",
- "dependencies": {
- "@floating-ui/dom": "^1.7.5"
- },
- "peerDependencies": {
- "react": ">=16.8.0",
- "react-dom": ">=16.8.0"
+ "node_modules/@esbuild/freebsd-arm64": {
+ "version": "0.27.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.2.tgz",
+ "integrity": "sha512-lS/9CN+rgqQ9czogxlMcBMGd+l8Q3Nj1MFQwBZJyoEKI50XGxwuzznYdwcav6lpOGv5BqaZXqvBSiB/kJ5op+g==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=18"
}
},
- "node_modules/@floating-ui/utils": {
- "version": "0.2.10",
- "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.10.tgz",
- "integrity": "sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==",
- "license": "MIT"
- },
- "node_modules/@hookform/resolvers": {
- "version": "5.2.2",
- "resolved": "https://registry.npmjs.org/@hookform/resolvers/-/resolvers-5.2.2.tgz",
- "integrity": "sha512-A/IxlMLShx3KjV/HeTcTfaMxdwy690+L/ZADoeaTltLx+CVuzkeVIPuybK3jrRfw7YZnmdKsVVHAlEPIAEUNlA==",
- "license": "MIT",
- "dependencies": {
- "@standard-schema/utils": "^0.3.0"
- },
- "peerDependencies": {
- "react-hook-form": "^7.55.0"
+ "node_modules/@esbuild/freebsd-x64": {
+ "version": "0.27.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.2.tgz",
+ "integrity": "sha512-tAfqtNYb4YgPnJlEFu4c212HYjQWSO/w/h/lQaBK7RbwGIkBOuNKQI9tqWzx7Wtp7bTPaGC6MJvWI608P3wXYA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=18"
}
},
- "node_modules/@humanwhocodes/config-array": {
- "version": "0.13.0",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz",
- "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==",
- "deprecated": "Use @eslint/config-array instead",
+ "node_modules/@esbuild/linux-arm": {
+ "version": "0.27.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.2.tgz",
+ "integrity": "sha512-vWfq4GaIMP9AIe4yj1ZUW18RDhx6EPQKjwe7n8BbIecFtCQG4CfHGaHuh7fdfq+y3LIA2vGS/o9ZBGVxIDi9hw==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-arm64": {
+ "version": "0.27.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.2.tgz",
+ "integrity": "sha512-hYxN8pr66NsCCiRFkHUAsxylNOcAQaxSSkHMMjcpx0si13t1LHFphxJZUiGwojB1a/Hd5OiPIqDdXONia6bhTw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-ia32": {
+ "version": "0.27.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.2.tgz",
+ "integrity": "sha512-MJt5BRRSScPDwG2hLelYhAAKh9imjHK5+NE/tvnRLbIqUWa+0E9N4WNMjmp/kXXPHZGqPLxggwVhz7QP8CTR8w==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-loong64": {
+ "version": "0.27.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.2.tgz",
+ "integrity": "sha512-lugyF1atnAT463aO6KPshVCJK5NgRnU4yb3FUumyVz+cGvZbontBgzeGFO1nF+dPueHD367a2ZXe1NtUkAjOtg==",
+ "cpu": [
+ "loong64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-mips64el": {
+ "version": "0.27.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.2.tgz",
+ "integrity": "sha512-nlP2I6ArEBewvJ2gjrrkESEZkB5mIoaTswuqNFRv/WYd+ATtUpe9Y09RnJvgvdag7he0OWgEZWhviS1OTOKixw==",
+ "cpu": [
+ "mips64el"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-ppc64": {
+ "version": "0.27.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.2.tgz",
+ "integrity": "sha512-C92gnpey7tUQONqg1n6dKVbx3vphKtTHJaNG2Ok9lGwbZil6DrfyecMsp9CrmXGQJmZ7iiVXvvZH6Ml5hL6XdQ==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-riscv64": {
+ "version": "0.27.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.2.tgz",
+ "integrity": "sha512-B5BOmojNtUyN8AXlK0QJyvjEZkWwy/FKvakkTDCziX95AowLZKR6aCDhG7LeF7uMCXEJqwa8Bejz5LTPYm8AvA==",
+ "cpu": [
+ "riscv64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-s390x": {
+ "version": "0.27.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.2.tgz",
+ "integrity": "sha512-p4bm9+wsPwup5Z8f4EpfN63qNagQ47Ua2znaqGH6bqLlmJ4bx97Y9JdqxgGZ6Y8xVTixUnEkoKSHcpRlDnNr5w==",
+ "cpu": [
+ "s390x"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-x64": {
+ "version": "0.27.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.2.tgz",
+ "integrity": "sha512-uwp2Tip5aPmH+NRUwTcfLb+W32WXjpFejTIOWZFw/v7/KnpCDKG66u4DLcurQpiYTiYwQ9B7KOeMJvLCu/OvbA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/netbsd-arm64": {
+ "version": "0.27.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.2.tgz",
+ "integrity": "sha512-Kj6DiBlwXrPsCRDeRvGAUb/LNrBASrfqAIok+xB0LxK8CHqxZ037viF13ugfsIpePH93mX7xfJp97cyDuTZ3cw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/netbsd-x64": {
+ "version": "0.27.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.2.tgz",
+ "integrity": "sha512-HwGDZ0VLVBY3Y+Nw0JexZy9o/nUAWq9MlV7cahpaXKW6TOzfVno3y3/M8Ga8u8Yr7GldLOov27xiCnqRZf0tCA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/openbsd-arm64": {
+ "version": "0.27.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.2.tgz",
+ "integrity": "sha512-DNIHH2BPQ5551A7oSHD0CKbwIA/Ox7+78/AWkbS5QoRzaqlev2uFayfSxq68EkonB+IKjiuxBFoV8ESJy8bOHA==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/openbsd-x64": {
+ "version": "0.27.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.2.tgz",
+ "integrity": "sha512-/it7w9Nb7+0KFIzjalNJVR5bOzA9Vay+yIPLVHfIQYG/j+j9VTH84aNB8ExGKPU4AzfaEvN9/V4HV+F+vo8OEg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/openharmony-arm64": {
+ "version": "0.27.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.2.tgz",
+ "integrity": "sha512-LRBbCmiU51IXfeXk59csuX/aSaToeG7w48nMwA6049Y4J4+VbWALAuXcs+qcD04rHDuSCSRKdmY63sruDS5qag==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "openharmony"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/sunos-x64": {
+ "version": "0.27.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.2.tgz",
+ "integrity": "sha512-kMtx1yqJHTmqaqHPAzKCAkDaKsffmXkPHThSfRwZGyuqyIeBvf08KSsYXl+abf5HDAPMJIPnbBfXvP2ZC2TfHg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "sunos"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/win32-arm64": {
+ "version": "0.27.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.2.tgz",
+ "integrity": "sha512-Yaf78O/B3Kkh+nKABUF++bvJv5Ijoy9AN1ww904rOXZFLWVc5OLOfL56W+C8F9xn5JQZa3UX6m+IktJnIb1Jjg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/win32-ia32": {
+ "version": "0.27.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.2.tgz",
+ "integrity": "sha512-Iuws0kxo4yusk7sw70Xa2E2imZU5HoixzxfGCdxwBdhiDgt9vX9VUCBhqcwY7/uh//78A1hMkkROMJq9l27oLQ==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/win32-x64": {
+ "version": "0.27.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.2.tgz",
+ "integrity": "sha512-sRdU18mcKf7F+YgheI/zGf5alZatMUTKj/jNS6l744f9u3WFu4v7twcUI9vu4mknF4Y9aDlblIie0IM+5xxaqQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@eslint-community/eslint-utils": {
+ "version": "4.9.1",
+ "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz",
+ "integrity": "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "eslint-visitor-keys": "^3.4.3"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
+ }
+ },
+ "node_modules/@eslint-community/regexpp": {
+ "version": "4.12.2",
+ "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz",
+ "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
+ }
+ },
+ "node_modules/@eslint/config-array": {
+ "version": "0.21.1",
+ "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.1.tgz",
+ "integrity": "sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@eslint/object-schema": "^2.1.7",
+ "debug": "^4.3.1",
+ "minimatch": "^3.1.2"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ }
+ },
+ "node_modules/@eslint/config-helpers": {
+ "version": "0.4.2",
+ "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.2.tgz",
+ "integrity": "sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@eslint/core": "^0.17.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ }
+ },
+ "node_modules/@eslint/core": {
+ "version": "0.17.0",
+ "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.17.0.tgz",
+ "integrity": "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@types/json-schema": "^7.0.15"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ }
+ },
+ "node_modules/@eslint/eslintrc": {
+ "version": "3.3.3",
+ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.3.tgz",
+ "integrity": "sha512-Kr+LPIUVKz2qkx1HAMH8q1q6azbqBAsXJUxBl/ODDuVPX45Z9DfwB8tPjTi6nNZ8BuM3nbJxC5zCAg5elnBUTQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ajv": "^6.12.4",
+ "debug": "^4.3.2",
+ "espree": "^10.0.1",
+ "globals": "^14.0.0",
+ "ignore": "^5.2.0",
+ "import-fresh": "^3.2.1",
+ "js-yaml": "^4.1.1",
+ "minimatch": "^3.1.2",
+ "strip-json-comments": "^3.1.1"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/@eslint/eslintrc/node_modules/ignore": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz",
+ "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/@eslint/eslintrc/node_modules/js-yaml": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz",
+ "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "argparse": "^2.0.1"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/@eslint/js": {
+ "version": "9.39.2",
+ "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.2.tgz",
+ "integrity": "sha512-q1mjIoW1VX4IvSocvM/vbTiveKC4k9eLrajNEuSsmjymSDEbpGddtpfOoN7YGAqBK3NG+uqo8ia4PDTt8buCYA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://eslint.org/donate"
+ }
+ },
+ "node_modules/@eslint/object-schema": {
+ "version": "2.1.7",
+ "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.7.tgz",
+ "integrity": "sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ }
+ },
+ "node_modules/@eslint/plugin-kit": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.1.tgz",
+ "integrity": "sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@eslint/core": "^0.17.0",
+ "levn": "^0.4.1"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ }
+ },
+ "node_modules/@exodus/schemasafe": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/@exodus/schemasafe/-/schemasafe-1.3.0.tgz",
+ "integrity": "sha512-5Aap/GaRupgNx/feGBwLLTVv8OQFfv3pq2lPRzPg9R+IOBnDgghTGW7l7EuVXOvg5cc/xSAlRW8rBrjIC3Nvqw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@floating-ui/core": {
+ "version": "1.7.4",
+ "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.7.4.tgz",
+ "integrity": "sha512-C3HlIdsBxszvm5McXlB8PeOEWfBhcGBTZGkGlWc2U0KFY5IwG5OQEuQ8rq52DZmcHDlPLd+YFBK+cZcytwIFWg==",
+ "license": "MIT",
+ "dependencies": {
+ "@floating-ui/utils": "^0.2.10"
+ }
+ },
+ "node_modules/@floating-ui/dom": {
+ "version": "1.7.5",
+ "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.7.5.tgz",
+ "integrity": "sha512-N0bD2kIPInNHUHehXhMke1rBGs1dwqvC9O9KYMyyjK7iXt7GAhnro7UlcuYcGdS/yYOlq0MAVgrow8IbWJwyqg==",
+ "license": "MIT",
+ "dependencies": {
+ "@floating-ui/core": "^1.7.4",
+ "@floating-ui/utils": "^0.2.10"
+ }
+ },
+ "node_modules/@floating-ui/react": {
+ "version": "0.27.18",
+ "resolved": "https://registry.npmjs.org/@floating-ui/react/-/react-0.27.18.tgz",
+ "integrity": "sha512-xJWJxvmy3a05j643gQt+pRbht5XnTlGpsEsAPnMi5F5YTOEEJymA90uZKBD8OvIv5XvZ1qi4GcccSlqT3Bq44Q==",
+ "license": "MIT",
+ "dependencies": {
+ "@floating-ui/react-dom": "^2.1.7",
+ "@floating-ui/utils": "^0.2.10",
+ "tabbable": "^6.0.0"
+ },
+ "peerDependencies": {
+ "react": ">=17.0.0",
+ "react-dom": ">=17.0.0"
+ }
+ },
+ "node_modules/@floating-ui/react-dom": {
+ "version": "2.1.7",
+ "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.7.tgz",
+ "integrity": "sha512-0tLRojf/1Go2JgEVm+3Frg9A3IW8bJgKgdO0BN5RkF//ufuz2joZM63Npau2ff3J6lUVYgDSNzNkR+aH3IVfjg==",
+ "license": "MIT",
+ "dependencies": {
+ "@floating-ui/dom": "^1.7.5"
+ },
+ "peerDependencies": {
+ "react": ">=16.8.0",
+ "react-dom": ">=16.8.0"
+ }
+ },
+ "node_modules/@floating-ui/utils": {
+ "version": "0.2.10",
+ "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.10.tgz",
+ "integrity": "sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==",
+ "license": "MIT"
+ },
+ "node_modules/@hookform/resolvers": {
+ "version": "5.2.2",
+ "resolved": "https://registry.npmjs.org/@hookform/resolvers/-/resolvers-5.2.2.tgz",
+ "integrity": "sha512-A/IxlMLShx3KjV/HeTcTfaMxdwy690+L/ZADoeaTltLx+CVuzkeVIPuybK3jrRfw7YZnmdKsVVHAlEPIAEUNlA==",
+ "license": "MIT",
+ "dependencies": {
+ "@standard-schema/utils": "^0.3.0"
+ },
+ "peerDependencies": {
+ "react-hook-form": "^7.55.0"
+ }
+ },
+ "node_modules/@humanfs/core": {
+ "version": "0.19.1",
+ "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz",
+ "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=18.18.0"
+ }
+ },
+ "node_modules/@humanfs/node": {
+ "version": "0.16.7",
+ "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.7.tgz",
+ "integrity": "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
- "@humanwhocodes/object-schema": "^2.0.3",
- "debug": "^4.3.1",
- "minimatch": "^3.0.5"
+ "@humanfs/core": "^0.19.1",
+ "@humanwhocodes/retry": "^0.4.0"
},
"engines": {
- "node": ">=10.10.0"
+ "node": ">=18.18.0"
}
},
"node_modules/@humanwhocodes/module-importer": {
@@ -1513,24 +2182,39 @@
"url": "https://github.com/sponsors/nzakas"
}
},
- "node_modules/@humanwhocodes/object-schema": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz",
- "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==",
- "deprecated": "Use @eslint/object-schema instead",
+ "node_modules/@humanwhocodes/retry": {
+ "version": "0.4.3",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz",
+ "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==",
"dev": true,
- "license": "BSD-3-Clause"
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=18.18"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/nzakas"
+ }
},
"node_modules/@jridgewell/gen-mapping": {
"version": "0.3.13",
"resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz",
"integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==",
- "license": "MIT",
"dependencies": {
"@jridgewell/sourcemap-codec": "^1.5.0",
"@jridgewell/trace-mapping": "^0.3.24"
}
},
+ "node_modules/@jridgewell/remapping": {
+ "version": "2.3.5",
+ "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz",
+ "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==",
+ "dev": true,
+ "dependencies": {
+ "@jridgewell/gen-mapping": "^0.3.5",
+ "@jridgewell/trace-mapping": "^0.3.24"
+ }
+ },
"node_modules/@jridgewell/resolve-uri": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
@@ -1561,7 +2245,6 @@
"version": "0.3.31",
"resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz",
"integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==",
- "license": "MIT",
"dependencies": {
"@jridgewell/resolve-uri": "^3.1.0",
"@jridgewell/sourcemap-codec": "^1.4.14"
@@ -1619,14 +2302,14 @@
}
},
"node_modules/@jsonjoy.com/fs-core": {
- "version": "4.56.10",
- "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-core/-/fs-core-4.56.10.tgz",
- "integrity": "sha512-PyAEA/3cnHhsGcdY+AmIU+ZPqTuZkDhCXQ2wkXypdLitSpd6d5Ivxhnq4wa2ETRWFVJGabYynBWxIijOswSmOw==",
+ "version": "4.57.2",
+ "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-core/-/fs-core-4.57.2.tgz",
+ "integrity": "sha512-SVjwklkpIV5wrynpYtuYnfYH1QF4/nDuLBX7VXdb+3miglcAgBVZb/5y0cOsehRV/9Vb+3UqhkMq3/NR3ztdkQ==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
- "@jsonjoy.com/fs-node-builtins": "4.56.10",
- "@jsonjoy.com/fs-node-utils": "4.56.10",
+ "@jsonjoy.com/fs-node-builtins": "4.57.2",
+ "@jsonjoy.com/fs-node-utils": "4.57.2",
"thingies": "^2.5.0"
},
"engines": {
@@ -1641,15 +2324,15 @@
}
},
"node_modules/@jsonjoy.com/fs-fsa": {
- "version": "4.56.10",
- "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-fsa/-/fs-fsa-4.56.10.tgz",
- "integrity": "sha512-/FVK63ysNzTPOnCCcPoPHt77TOmachdMS422txM4KhxddLdbW1fIbFMYH0AM0ow/YchCyS5gqEjKLNyv71j/5Q==",
+ "version": "4.57.2",
+ "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-fsa/-/fs-fsa-4.57.2.tgz",
+ "integrity": "sha512-fhO8+iR2I+OCw668ISDJdn1aArc9zx033sWejIyzQ8RBeXa9bDSaUeA3ix0poYOfrj1KdOzytmYNv2/uLDfV6g==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
- "@jsonjoy.com/fs-core": "4.56.10",
- "@jsonjoy.com/fs-node-builtins": "4.56.10",
- "@jsonjoy.com/fs-node-utils": "4.56.10",
+ "@jsonjoy.com/fs-core": "4.57.2",
+ "@jsonjoy.com/fs-node-builtins": "4.57.2",
+ "@jsonjoy.com/fs-node-utils": "4.57.2",
"thingies": "^2.5.0"
},
"engines": {
@@ -1664,17 +2347,17 @@
}
},
"node_modules/@jsonjoy.com/fs-node": {
- "version": "4.56.10",
- "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node/-/fs-node-4.56.10.tgz",
- "integrity": "sha512-7R4Gv3tkUdW3dXfXiOkqxkElxKNVdd8BDOWC0/dbERd0pXpPY+s2s1Mino+aTvkGrFPiY+mmVxA7zhskm4Ue4Q==",
+ "version": "4.57.2",
+ "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node/-/fs-node-4.57.2.tgz",
+ "integrity": "sha512-nX2AdL6cOFwLdju9G4/nbRnYevmCJbh7N7hvR3gGm97Cs60uEjyd0rpR+YBS7cTg175zzl22pGKXR5USaQMvKg==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
- "@jsonjoy.com/fs-core": "4.56.10",
- "@jsonjoy.com/fs-node-builtins": "4.56.10",
- "@jsonjoy.com/fs-node-utils": "4.56.10",
- "@jsonjoy.com/fs-print": "4.56.10",
- "@jsonjoy.com/fs-snapshot": "4.56.10",
+ "@jsonjoy.com/fs-core": "4.57.2",
+ "@jsonjoy.com/fs-node-builtins": "4.57.2",
+ "@jsonjoy.com/fs-node-utils": "4.57.2",
+ "@jsonjoy.com/fs-print": "4.57.2",
+ "@jsonjoy.com/fs-snapshot": "4.57.2",
"glob-to-regex.js": "^1.0.0",
"thingies": "^2.5.0"
},
@@ -1690,9 +2373,9 @@
}
},
"node_modules/@jsonjoy.com/fs-node-builtins": {
- "version": "4.56.10",
- "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node-builtins/-/fs-node-builtins-4.56.10.tgz",
- "integrity": "sha512-uUnKz8R0YJyKq5jXpZtkGV9U0pJDt8hmYcLRrPjROheIfjMXsz82kXMgAA/qNg0wrZ1Kv+hrg7azqEZx6XZCVw==",
+ "version": "4.57.2",
+ "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node-builtins/-/fs-node-builtins-4.57.2.tgz",
+ "integrity": "sha512-xhiegylRmhw43Ki2HO1ZBL7DQ5ja/qpRsL29VtQ2xuUHiuDGbgf2uD4p9Qd8hJI5P6RCtGYD50IXHXVq/Ocjcg==",
"dev": true,
"license": "Apache-2.0",
"engines": {
@@ -1707,15 +2390,15 @@
}
},
"node_modules/@jsonjoy.com/fs-node-to-fsa": {
- "version": "4.56.10",
- "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node-to-fsa/-/fs-node-to-fsa-4.56.10.tgz",
- "integrity": "sha512-oH+O6Y4lhn9NyG6aEoFwIBNKZeYy66toP5LJcDOMBgL99BKQMUf/zWJspdRhMdn/3hbzQsZ8EHHsuekbFLGUWw==",
+ "version": "4.57.2",
+ "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node-to-fsa/-/fs-node-to-fsa-4.57.2.tgz",
+ "integrity": "sha512-18LmWTSONhoAPW+IWRuf8w/+zRolPFGPeGwMxlAhhfY11EKzX+5XHDBPAw67dBF5dxDErHJbl40U+3IXSDRXSQ==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
- "@jsonjoy.com/fs-fsa": "4.56.10",
- "@jsonjoy.com/fs-node-builtins": "4.56.10",
- "@jsonjoy.com/fs-node-utils": "4.56.10"
+ "@jsonjoy.com/fs-fsa": "4.57.2",
+ "@jsonjoy.com/fs-node-builtins": "4.57.2",
+ "@jsonjoy.com/fs-node-utils": "4.57.2"
},
"engines": {
"node": ">=10.0"
@@ -1729,13 +2412,13 @@
}
},
"node_modules/@jsonjoy.com/fs-node-utils": {
- "version": "4.56.10",
- "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node-utils/-/fs-node-utils-4.56.10.tgz",
- "integrity": "sha512-8EuPBgVI2aDPwFdaNQeNpHsyqPi3rr+85tMNG/lHvQLiVjzoZsvxA//Xd8aB567LUhy4QS03ptT+unkD/DIsNg==",
+ "version": "4.57.2",
+ "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node-utils/-/fs-node-utils-4.57.2.tgz",
+ "integrity": "sha512-rsPSJgekz43IlNbLyAM/Ab+ouYLWGp5DDBfYBNNEqDaSpsbXfthBn29Q4muFA9L0F+Z3mKo+CWlgSCXrf+mOyQ==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
- "@jsonjoy.com/fs-node-builtins": "4.56.10"
+ "@jsonjoy.com/fs-node-builtins": "4.57.2"
},
"engines": {
"node": ">=10.0"
@@ -1749,13 +2432,13 @@
}
},
"node_modules/@jsonjoy.com/fs-print": {
- "version": "4.56.10",
- "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-print/-/fs-print-4.56.10.tgz",
- "integrity": "sha512-JW4fp5mAYepzFsSGrQ48ep8FXxpg4niFWHdF78wDrFGof7F3tKDJln72QFDEn/27M1yHd4v7sKHHVPh78aWcEw==",
+ "version": "4.57.2",
+ "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-print/-/fs-print-4.57.2.tgz",
+ "integrity": "sha512-wK9NSow48i4DbDl9F1CQE5TqnyZOJ04elU3WFG5aJ76p+YxO/ulyBBQvKsessPxdo381Bc2pcEoyPujMOhcRqQ==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
- "@jsonjoy.com/fs-node-utils": "4.56.10",
+ "@jsonjoy.com/fs-node-utils": "4.57.2",
"tree-dump": "^1.1.0"
},
"engines": {
@@ -1770,14 +2453,14 @@
}
},
"node_modules/@jsonjoy.com/fs-snapshot": {
- "version": "4.56.10",
- "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-snapshot/-/fs-snapshot-4.56.10.tgz",
- "integrity": "sha512-DkR6l5fj7+qj0+fVKm/OOXMGfDFCGXLfyHkORH3DF8hxkpDgIHbhf/DwncBMs2igu/ST7OEkexn1gIqoU6Y+9g==",
+ "version": "4.57.2",
+ "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-snapshot/-/fs-snapshot-4.57.2.tgz",
+ "integrity": "sha512-GdduDZuoP5V/QCgJkx9+BZ6SC0EZ/smXAdTS7PfMqgMTGXLlt/bH/FqMYaqB9JmLf05sJPtO0XRbAwwkEEPbVw==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
"@jsonjoy.com/buffers": "^17.65.0",
- "@jsonjoy.com/fs-node-utils": "4.56.10",
+ "@jsonjoy.com/fs-node-utils": "4.57.2",
"@jsonjoy.com/json-pack": "^17.65.0",
"@jsonjoy.com/util": "^17.65.0"
},
@@ -2005,41 +2688,41 @@
"license": "MIT"
},
"node_modules/@lexical/clipboard": {
- "version": "0.35.0",
- "resolved": "https://registry.npmjs.org/@lexical/clipboard/-/clipboard-0.35.0.tgz",
- "integrity": "sha512-ko7xSIIiayvDiqjNDX6fgH9RlcM6r9vrrvJYTcfGVBor5httx16lhIi0QJZ4+RNPvGtTjyFv4bwRmsixRRwImg==",
+ "version": "0.33.1",
+ "resolved": "https://registry.npmjs.org/@lexical/clipboard/-/clipboard-0.33.1.tgz",
+ "integrity": "sha512-Qd3/Cm3TW2DFQv58kMtLi86u5YOgpBdf+o7ySbXz55C613SLACsYQBB3X5Vu5hTx/t/ugYOpII4HkiatW6d9zA==",
"license": "MIT",
"dependencies": {
- "@lexical/html": "0.35.0",
- "@lexical/list": "0.35.0",
- "@lexical/selection": "0.35.0",
- "@lexical/utils": "0.35.0",
- "lexical": "0.35.0"
+ "@lexical/html": "0.33.1",
+ "@lexical/list": "0.33.1",
+ "@lexical/selection": "0.33.1",
+ "@lexical/utils": "0.33.1",
+ "lexical": "0.33.1"
}
},
"node_modules/@lexical/code": {
- "version": "0.35.0",
- "resolved": "https://registry.npmjs.org/@lexical/code/-/code-0.35.0.tgz",
- "integrity": "sha512-ox4DZwETQ9IA7+DS6PN8RJNwSAF7RMjL7YTVODIqFZ5tUFIf+5xoCHbz7Fll0Bvixlp12hVH90xnLwTLRGpkKw==",
+ "version": "0.33.1",
+ "resolved": "https://registry.npmjs.org/@lexical/code/-/code-0.33.1.tgz",
+ "integrity": "sha512-E0Y/+1znkqVpP52Y6blXGAduoZek9SSehJN+vbH+4iQKyFwTA7JB+jd5C5/K0ik55du9X7SN/oTynByg7lbcAA==",
"license": "MIT",
"dependencies": {
- "@lexical/utils": "0.35.0",
- "lexical": "0.35.0",
+ "@lexical/utils": "0.33.1",
+ "lexical": "0.33.1",
"prismjs": "^1.30.0"
}
},
"node_modules/@lexical/devtools-core": {
- "version": "0.35.0",
- "resolved": "https://registry.npmjs.org/@lexical/devtools-core/-/devtools-core-0.35.0.tgz",
- "integrity": "sha512-C2wwtsMCR6ZTfO0TqpSM17RLJWyfHmifAfCTjFtOJu15p3M6NO/nHYK5Mt7YMQteuS89mOjB4ng8iwoLEZ6QpQ==",
+ "version": "0.33.1",
+ "resolved": "https://registry.npmjs.org/@lexical/devtools-core/-/devtools-core-0.33.1.tgz",
+ "integrity": "sha512-3yHu5diNtjwhoe2q/x9as6n6rIfA+QO2CfaVjFRkam8rkAW6zUzQT1D0fQdE8nOfWvXBgY1mH/ZLP4dDXBdG5Q==",
"license": "MIT",
"dependencies": {
- "@lexical/html": "0.35.0",
- "@lexical/link": "0.35.0",
- "@lexical/mark": "0.35.0",
- "@lexical/table": "0.35.0",
- "@lexical/utils": "0.35.0",
- "lexical": "0.35.0"
+ "@lexical/html": "0.33.1",
+ "@lexical/link": "0.33.1",
+ "@lexical/mark": "0.33.1",
+ "@lexical/table": "0.33.1",
+ "@lexical/utils": "0.33.1",
+ "lexical": "0.33.1"
},
"peerDependencies": {
"react": ">=17.x",
@@ -2047,144 +2730,144 @@
}
},
"node_modules/@lexical/dragon": {
- "version": "0.35.0",
- "resolved": "https://registry.npmjs.org/@lexical/dragon/-/dragon-0.35.0.tgz",
- "integrity": "sha512-SL6mT5pcqrt6hEbJ16vWxip5+r3uvMd0bQV5UUxuk+cxIeuP86iTgRh0HFR7SM2dRTYovL6/tM/O+8QLAUGTIg==",
+ "version": "0.33.1",
+ "resolved": "https://registry.npmjs.org/@lexical/dragon/-/dragon-0.33.1.tgz",
+ "integrity": "sha512-UQ6DLkcDAr83wA1vz3sUgtcpYcMifC4sF0MieZAoMzFrna6Ekqj7OJ7g8Lo7m7AeuT4NETRVDsjIEDdrQMKLLA==",
"license": "MIT",
"dependencies": {
- "lexical": "0.35.0"
+ "lexical": "0.33.1"
}
},
"node_modules/@lexical/hashtag": {
- "version": "0.35.0",
- "resolved": "https://registry.npmjs.org/@lexical/hashtag/-/hashtag-0.35.0.tgz",
- "integrity": "sha512-LYJWzXuO2ZjKsvQwrLkNZiS2TsjwYkKjlDgtugzejquTBQ/o/nfSn/MmVx6EkYLOYizaJemmZbz3IBh+u732FA==",
+ "version": "0.33.1",
+ "resolved": "https://registry.npmjs.org/@lexical/hashtag/-/hashtag-0.33.1.tgz",
+ "integrity": "sha512-M3IsDe4cifggMBZgYAVT7hCLWcwQ3dIcUPdr9Xc6wDQQQdEqOQYB0PO//9bSYUVq+BNiiTgysc+TtlM7PiJfiw==",
"license": "MIT",
"dependencies": {
- "@lexical/utils": "0.35.0",
- "lexical": "0.35.0"
+ "@lexical/utils": "0.33.1",
+ "lexical": "0.33.1"
}
},
"node_modules/@lexical/history": {
- "version": "0.35.0",
- "resolved": "https://registry.npmjs.org/@lexical/history/-/history-0.35.0.tgz",
- "integrity": "sha512-onjDRLLxGbCfHexSxxrQaDaieIHyV28zCDrbxR5dxTfW8F8PxjuNyuaG0z6o468AXYECmclxkP+P4aT6poHEpQ==",
+ "version": "0.33.1",
+ "resolved": "https://registry.npmjs.org/@lexical/history/-/history-0.33.1.tgz",
+ "integrity": "sha512-Bk0h3D6cFkJ7w3HKvqQua7n6Xfz7nR7L3gLDBH9L0nsS4MM9+LteSEZPUe0kj4VuEjnxufYstTc9HA2aNLKxnQ==",
"license": "MIT",
"dependencies": {
- "@lexical/utils": "0.35.0",
- "lexical": "0.35.0"
+ "@lexical/utils": "0.33.1",
+ "lexical": "0.33.1"
}
},
"node_modules/@lexical/html": {
- "version": "0.35.0",
- "resolved": "https://registry.npmjs.org/@lexical/html/-/html-0.35.0.tgz",
- "integrity": "sha512-rXGFE5S5rKsg3tVnr1s4iEgOfCApNXGpIFI3T2jGEShaCZ5HLaBY9NVBXnE9Nb49e9bkDkpZ8FZd1qokCbQXbw==",
+ "version": "0.33.1",
+ "resolved": "https://registry.npmjs.org/@lexical/html/-/html-0.33.1.tgz",
+ "integrity": "sha512-t14vu4eKa6BWz1N7/rwXgXif1k4dj73dRvllWJgfXum+a36vn1aySNYOlOfqWXF7k1b3uJmoqsWK7n/1ASnimw==",
"license": "MIT",
"dependencies": {
- "@lexical/selection": "0.35.0",
- "@lexical/utils": "0.35.0",
- "lexical": "0.35.0"
+ "@lexical/selection": "0.33.1",
+ "@lexical/utils": "0.33.1",
+ "lexical": "0.33.1"
}
},
"node_modules/@lexical/link": {
- "version": "0.35.0",
- "resolved": "https://registry.npmjs.org/@lexical/link/-/link-0.35.0.tgz",
- "integrity": "sha512-+0Wx6cBwO8TfdMzpkYFacsmgFh8X1rkiYbq3xoLvk3qV8upYxaMzK1s8Q1cpKmWyI0aZrU6z7fiK4vUqB7+69w==",
+ "version": "0.33.1",
+ "resolved": "https://registry.npmjs.org/@lexical/link/-/link-0.33.1.tgz",
+ "integrity": "sha512-JCTu7Fft2J2kgfqJiWnGei+UMIXVKiZKaXzuHCuGQTFu92DeCyd02azBaFazZHEkSqCIFZ0DqVV2SpIJmd0Ygw==",
"license": "MIT",
"dependencies": {
- "@lexical/utils": "0.35.0",
- "lexical": "0.35.0"
+ "@lexical/utils": "0.33.1",
+ "lexical": "0.33.1"
}
},
"node_modules/@lexical/list": {
- "version": "0.35.0",
- "resolved": "https://registry.npmjs.org/@lexical/list/-/list-0.35.0.tgz",
- "integrity": "sha512-owsmc8iwgExBX8sFe8fKTiwJVhYULt9hD1RZ/HwfaiEtRZZkINijqReOBnW2mJfRxBzhFSWc4NG3ISB+fHYzqw==",
+ "version": "0.33.1",
+ "resolved": "https://registry.npmjs.org/@lexical/list/-/list-0.33.1.tgz",
+ "integrity": "sha512-PXp56dWADSThc9WhwWV4vXhUc3sdtCqsfPD3UQNGUZ9rsAY1479rqYLtfYgEmYPc8JWXikQCAKEejahCJIm8OQ==",
"license": "MIT",
"dependencies": {
- "@lexical/selection": "0.35.0",
- "@lexical/utils": "0.35.0",
- "lexical": "0.35.0"
+ "@lexical/selection": "0.33.1",
+ "@lexical/utils": "0.33.1",
+ "lexical": "0.33.1"
}
},
"node_modules/@lexical/mark": {
- "version": "0.35.0",
- "resolved": "https://registry.npmjs.org/@lexical/mark/-/mark-0.35.0.tgz",
- "integrity": "sha512-W0hwMTAVeexvpk9/+J6n1G/sNkpI/Meq1yeDazahFLLAwXLHtvhIAq2P/klgFknDy1hr8X7rcsQuN/bqKcKHYg==",
+ "version": "0.33.1",
+ "resolved": "https://registry.npmjs.org/@lexical/mark/-/mark-0.33.1.tgz",
+ "integrity": "sha512-tGdOf1e694lnm/HyWUKEkEWjDyfhCBFG7u8iRKNpsYTpB3M1FsJUXbphE2bb8MyWfhHbaNxnklupSSaSPzO88A==",
"license": "MIT",
"dependencies": {
- "@lexical/utils": "0.35.0",
- "lexical": "0.35.0"
+ "@lexical/utils": "0.33.1",
+ "lexical": "0.33.1"
}
},
"node_modules/@lexical/markdown": {
- "version": "0.35.0",
- "resolved": "https://registry.npmjs.org/@lexical/markdown/-/markdown-0.35.0.tgz",
- "integrity": "sha512-BlNyXZAt4gWidMw0SRWrhBETY1BpPglFBZI7yzfqukFqgXRh7HUQA28OYeI/nsx9pgNob8TiUduUwShqqvOdEA==",
+ "version": "0.33.1",
+ "resolved": "https://registry.npmjs.org/@lexical/markdown/-/markdown-0.33.1.tgz",
+ "integrity": "sha512-p5zwWNF70pELRx60wxE8YOFVNiNDkw7gjKoYqkED23q5hj4mcqco9fQf6qeeZChjxLKjfyT6F1PpWgxmlBlxBw==",
"license": "MIT",
"dependencies": {
- "@lexical/code": "0.35.0",
- "@lexical/link": "0.35.0",
- "@lexical/list": "0.35.0",
- "@lexical/rich-text": "0.35.0",
- "@lexical/text": "0.35.0",
- "@lexical/utils": "0.35.0",
- "lexical": "0.35.0"
+ "@lexical/code": "0.33.1",
+ "@lexical/link": "0.33.1",
+ "@lexical/list": "0.33.1",
+ "@lexical/rich-text": "0.33.1",
+ "@lexical/text": "0.33.1",
+ "@lexical/utils": "0.33.1",
+ "lexical": "0.33.1"
}
},
"node_modules/@lexical/offset": {
- "version": "0.35.0",
- "resolved": "https://registry.npmjs.org/@lexical/offset/-/offset-0.35.0.tgz",
- "integrity": "sha512-DRE4Df6qYf2XiV6foh6KpGNmGAv2ANqt3oVXpyS6W8hTx3+cUuAA1APhCZmLNuU107um4zmHym7taCu6uXW5Yg==",
+ "version": "0.33.1",
+ "resolved": "https://registry.npmjs.org/@lexical/offset/-/offset-0.33.1.tgz",
+ "integrity": "sha512-3YIlUs43QdKSBLEfOkuciE2tn9loxVmkSs/HgaIiLYl0Edf1W00FP4ItSmYU4De5GopXsHq6+Y3ry4pU/ciUiQ==",
"license": "MIT",
"dependencies": {
- "lexical": "0.35.0"
+ "lexical": "0.33.1"
}
},
"node_modules/@lexical/overflow": {
- "version": "0.35.0",
- "resolved": "https://registry.npmjs.org/@lexical/overflow/-/overflow-0.35.0.tgz",
- "integrity": "sha512-B25YvnJQTGlZcrNv7b0PJBLWq3tl8sql497OHfYYLem7EOMPKKDGJScJAKM/91D4H/mMAsx5gnA/XgKobriuTg==",
+ "version": "0.33.1",
+ "resolved": "https://registry.npmjs.org/@lexical/overflow/-/overflow-0.33.1.tgz",
+ "integrity": "sha512-3BDq1lOw567FeCk4rN2ellKwoXTM9zGkGuKnSGlXS1JmtGGGSvT+uTANX3KOOfqTNSrOkrwoM+3hlFv7p6VpiQ==",
"license": "MIT",
"dependencies": {
- "lexical": "0.35.0"
+ "lexical": "0.33.1"
}
},
"node_modules/@lexical/plain-text": {
- "version": "0.35.0",
- "resolved": "https://registry.npmjs.org/@lexical/plain-text/-/plain-text-0.35.0.tgz",
- "integrity": "sha512-lwBCUNMJf7Gujp2syVWMpKRahfbTv5Wq+H3HK1Q1gKH1P2IytPRxssCHvexw9iGwprSyghkKBlbF3fGpEdIJvQ==",
+ "version": "0.33.1",
+ "resolved": "https://registry.npmjs.org/@lexical/plain-text/-/plain-text-0.33.1.tgz",
+ "integrity": "sha512-2HxdhAx6bwF8y5A9P0q3YHsYbhUo4XXm+GyKJO87an8JClL2W+GYLTSDbfNWTh4TtH95eG+UYLOjNEgyU6tsWA==",
"license": "MIT",
"dependencies": {
- "@lexical/clipboard": "0.35.0",
- "@lexical/selection": "0.35.0",
- "@lexical/utils": "0.35.0",
- "lexical": "0.35.0"
+ "@lexical/clipboard": "0.33.1",
+ "@lexical/selection": "0.33.1",
+ "@lexical/utils": "0.33.1",
+ "lexical": "0.33.1"
}
},
"node_modules/@lexical/react": {
- "version": "0.35.0",
- "resolved": "https://registry.npmjs.org/@lexical/react/-/react-0.35.0.tgz",
- "integrity": "sha512-uYAZSqumH8tRymMef+A0f2hQvMwplKK9DXamcefnk3vSNDHHqRWQXpiUo6kD+rKWuQmMbVa5RW4xRQebXEW+1A==",
+ "version": "0.33.1",
+ "resolved": "https://registry.npmjs.org/@lexical/react/-/react-0.33.1.tgz",
+ "integrity": "sha512-ylnUmom5h8PY+Z14uDmKLQEoikTPN77GRM0NRCIdtbWmOQqOq/5BhuCzMZE1WvpL5C6n3GtK6IFnsMcsKmVOcw==",
"license": "MIT",
"dependencies": {
"@floating-ui/react": "^0.27.8",
- "@lexical/devtools-core": "0.35.0",
- "@lexical/dragon": "0.35.0",
- "@lexical/hashtag": "0.35.0",
- "@lexical/history": "0.35.0",
- "@lexical/link": "0.35.0",
- "@lexical/list": "0.35.0",
- "@lexical/mark": "0.35.0",
- "@lexical/markdown": "0.35.0",
- "@lexical/overflow": "0.35.0",
- "@lexical/plain-text": "0.35.0",
- "@lexical/rich-text": "0.35.0",
- "@lexical/table": "0.35.0",
- "@lexical/text": "0.35.0",
- "@lexical/utils": "0.35.0",
- "@lexical/yjs": "0.35.0",
- "lexical": "0.35.0",
+ "@lexical/devtools-core": "0.33.1",
+ "@lexical/dragon": "0.33.1",
+ "@lexical/hashtag": "0.33.1",
+ "@lexical/history": "0.33.1",
+ "@lexical/link": "0.33.1",
+ "@lexical/list": "0.33.1",
+ "@lexical/mark": "0.33.1",
+ "@lexical/markdown": "0.33.1",
+ "@lexical/overflow": "0.33.1",
+ "@lexical/plain-text": "0.33.1",
+ "@lexical/rich-text": "0.33.1",
+ "@lexical/table": "0.33.1",
+ "@lexical/text": "0.33.1",
+ "@lexical/utils": "0.33.1",
+ "@lexical/yjs": "0.33.1",
+ "lexical": "0.33.1",
"react-error-boundary": "^3.1.4"
},
"peerDependencies": {
@@ -2209,67 +2892,67 @@
}
},
"node_modules/@lexical/rich-text": {
- "version": "0.35.0",
- "resolved": "https://registry.npmjs.org/@lexical/rich-text/-/rich-text-0.35.0.tgz",
- "integrity": "sha512-qEHu8g7vOEzz9GUz1VIUxZBndZRJPh9iJUFI+qTDHj+tQqnd5LCs+G9yz6jgNfiuWWpezTp0i1Vz/udNEuDPKQ==",
+ "version": "0.33.1",
+ "resolved": "https://registry.npmjs.org/@lexical/rich-text/-/rich-text-0.33.1.tgz",
+ "integrity": "sha512-ZBIsj4LwmamRBCGjJiPSLj7N/XkUDv/pnYn5Rp0BL42WpOiQLvOoGLrZxgUJZEmRPQnx42ZgLKVgrWHsyjuoAA==",
"license": "MIT",
"dependencies": {
- "@lexical/clipboard": "0.35.0",
- "@lexical/selection": "0.35.0",
- "@lexical/utils": "0.35.0",
- "lexical": "0.35.0"
+ "@lexical/clipboard": "0.33.1",
+ "@lexical/selection": "0.33.1",
+ "@lexical/utils": "0.33.1",
+ "lexical": "0.33.1"
}
},
"node_modules/@lexical/selection": {
- "version": "0.35.0",
- "resolved": "https://registry.npmjs.org/@lexical/selection/-/selection-0.35.0.tgz",
- "integrity": "sha512-mMtDE7Q0nycXdFTTH/+ta6EBrBwxBB4Tg8QwsGntzQ1Cq//d838dpXpFjJOqHEeVHUqXpiuj+cBG8+bvz/rPRw==",
+ "version": "0.33.1",
+ "resolved": "https://registry.npmjs.org/@lexical/selection/-/selection-0.33.1.tgz",
+ "integrity": "sha512-KXPkdCDdVfIUXmkwePu9DAd3kLjL0aAqL5G9CMCFsj7RG9lLvvKk7kpivrAIbRbcsDzO44QwsFPisZHbX4ioXA==",
"license": "MIT",
"dependencies": {
- "lexical": "0.35.0"
+ "lexical": "0.33.1"
}
},
"node_modules/@lexical/table": {
- "version": "0.35.0",
- "resolved": "https://registry.npmjs.org/@lexical/table/-/table-0.35.0.tgz",
- "integrity": "sha512-9jlTlkVideBKwsEnEkqkdg7A3mije1SvmfiqoYnkl1kKJCLA5iH90ywx327PU0p+bdnURAytWUeZPXaEuEl2OA==",
+ "version": "0.33.1",
+ "resolved": "https://registry.npmjs.org/@lexical/table/-/table-0.33.1.tgz",
+ "integrity": "sha512-pzB11i1Y6fzmy0IPUKJyCdhVBgXaNOxJUxrQJWdKNYCh1eMwwMEQvj+8inItd/11aUkjcdHjwDTht8gL2UHKiQ==",
"license": "MIT",
"dependencies": {
- "@lexical/clipboard": "0.35.0",
- "@lexical/utils": "0.35.0",
- "lexical": "0.35.0"
+ "@lexical/clipboard": "0.33.1",
+ "@lexical/utils": "0.33.1",
+ "lexical": "0.33.1"
}
},
"node_modules/@lexical/text": {
- "version": "0.35.0",
- "resolved": "https://registry.npmjs.org/@lexical/text/-/text-0.35.0.tgz",
- "integrity": "sha512-uaMh46BkysV8hK8wQwp5g/ByZW+2hPDt8ahAErxtf8NuzQem1FHG/f5RTchmFqqUDVHO3qLNTv4AehEGmXv8MA==",
+ "version": "0.33.1",
+ "resolved": "https://registry.npmjs.org/@lexical/text/-/text-0.33.1.tgz",
+ "integrity": "sha512-CnyU3q3RytXXWVSvC5StOKISzFAPGK9MuesNDDGyZk7yDK+J98gV6df4RBKfqwcokFMThpkUlvMeKe1+S2y25A==",
"license": "MIT",
"dependencies": {
- "lexical": "0.35.0"
+ "lexical": "0.33.1"
}
},
"node_modules/@lexical/utils": {
- "version": "0.35.0",
- "resolved": "https://registry.npmjs.org/@lexical/utils/-/utils-0.35.0.tgz",
- "integrity": "sha512-2H393EYDnFznYCDFOW3MHiRzwEO5M/UBhtUjvTT+9kc+qhX4U3zc8ixQalo5UmZ5B2nh7L/inXdTFzvSRXtsRA==",
+ "version": "0.33.1",
+ "resolved": "https://registry.npmjs.org/@lexical/utils/-/utils-0.33.1.tgz",
+ "integrity": "sha512-eKysPjzEE9zD+2af3WRX5U3XbeNk0z4uv1nXGH3RG15uJ4Huzjht82hzsQpCFUobKmzYlQaQs5y2IYKE2puipQ==",
"license": "MIT",
"dependencies": {
- "@lexical/list": "0.35.0",
- "@lexical/selection": "0.35.0",
- "@lexical/table": "0.35.0",
- "lexical": "0.35.0"
+ "@lexical/list": "0.33.1",
+ "@lexical/selection": "0.33.1",
+ "@lexical/table": "0.33.1",
+ "lexical": "0.33.1"
}
},
"node_modules/@lexical/yjs": {
- "version": "0.35.0",
- "resolved": "https://registry.npmjs.org/@lexical/yjs/-/yjs-0.35.0.tgz",
- "integrity": "sha512-3DSP7QpmTGYU9bN/yljP0PIao4tNIQtsR4ycauWNSawxs/GQCZtSmAPcLRnCm6qpqsDDjUtKjO/1Ej8FRp0m0w==",
+ "version": "0.33.1",
+ "resolved": "https://registry.npmjs.org/@lexical/yjs/-/yjs-0.33.1.tgz",
+ "integrity": "sha512-Zx1rabMm/Zjk7n7YQMIQLUN+tqzcg1xqcgNpEHSfK1GA8QMPXCPvXWFT3ZDC4tfZOSy/YIqpVUyWZAomFqRa+g==",
"license": "MIT",
"dependencies": {
- "@lexical/offset": "0.35.0",
- "@lexical/selection": "0.35.0",
- "lexical": "0.35.0"
+ "@lexical/offset": "0.33.1",
+ "@lexical/selection": "0.33.1",
+ "lexical": "0.33.1"
},
"peerDependencies": {
"yjs": ">=13.5.22"
@@ -2521,9 +3204,9 @@
}
},
"node_modules/@mdxeditor/editor": {
- "version": "3.52.4",
- "resolved": "https://registry.npmjs.org/@mdxeditor/editor/-/editor-3.52.4.tgz",
- "integrity": "sha512-Tr/QKR7pVrle9xF3ZCsUESOlLY8UZ0N/8RZcyyRWvnuEvePi4EAcbthwnyDkVpnwGppkUxPNrFTAnL7Y0R1Hwg==",
+ "version": "3.42.0",
+ "resolved": "https://registry.npmjs.org/@mdxeditor/editor/-/editor-3.42.0.tgz",
+ "integrity": "sha512-nQN07RkTm842T477IjPqp1FhWCQMpmbLToOVrc6EjSI60aHifwzva+eqYmElHFKE2jyGiD5FsaQXri1SSORJNg==",
"license": "MIT",
"dependencies": {
"@codemirror/commands": "^6.2.4",
@@ -2533,16 +3216,16 @@
"@codemirror/state": "^6.4.0",
"@codemirror/view": "^6.23.0",
"@codesandbox/sandpack-react": "^2.20.0",
- "@lexical/clipboard": "^0.35.0",
- "@lexical/link": "^0.35.0",
- "@lexical/list": "^0.35.0",
- "@lexical/markdown": "^0.35.0",
- "@lexical/plain-text": "^0.35.0",
- "@lexical/react": "^0.35.0",
- "@lexical/rich-text": "^0.35.0",
- "@lexical/selection": "^0.35.0",
- "@lexical/utils": "^0.35.0",
- "@mdxeditor/gurx": "^1.2.4",
+ "@lexical/clipboard": "^0.33.1",
+ "@lexical/link": "^0.33.1",
+ "@lexical/list": "^0.33.1",
+ "@lexical/markdown": "^0.33.1",
+ "@lexical/plain-text": "^0.33.1",
+ "@lexical/react": "^0.33.1",
+ "@lexical/rich-text": "^0.33.1",
+ "@lexical/selection": "^0.33.1",
+ "@lexical/utils": "^0.33.1",
+ "@mdxeditor/gurx": "^1.1.4",
"@radix-ui/colors": "^3.0.0",
"@radix-ui/react-dialog": "^1.1.11",
"@radix-ui/react-icons": "^1.3.2",
@@ -2556,8 +3239,8 @@
"cm6-theme-basic-light": "^0.2.0",
"codemirror": "^6.0.1",
"downshift": "^7.6.0",
- "js-yaml": "4.1.1",
- "lexical": "^0.35.0",
+ "js-yaml": "4.1.0",
+ "lexical": "^0.33.1",
"mdast-util-directive": "^3.0.0",
"mdast-util-from-markdown": "^2.0.0",
"mdast-util-frontmatter": "^2.0.1",
@@ -2592,9 +3275,9 @@
}
},
"node_modules/@mdxeditor/gurx": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/@mdxeditor/gurx/-/gurx-1.2.4.tgz",
- "integrity": "sha512-9ZykIFYhKaXaaSPCs1cuI+FvYDegJjbKwmA4ASE/zY+hJY6EYqvoye4esiO85CjhOw9aoD/izD/CU78/egVqmg==",
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/@mdxeditor/gurx/-/gurx-1.2.3.tgz",
+ "integrity": "sha512-5DQOlEx46oN9spggrC8husAGAhVoEFBGIYKN48es08XhRUbSU6l5bcIQYwRrQaY8clU1tExIcXzw8/fNnoxjpg==",
"license": "MIT",
"engines": {
"node": ">=16"
@@ -2628,53 +3311,27 @@
}
},
"node_modules/@mui/core-downloads-tracker": {
- "version": "7.3.8",
- "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-7.3.8.tgz",
- "integrity": "sha512-s9UHZo7QJVly7gNArEZkbbsimHqJZhElgBpXIJdehZ4OWXt+CCr0SBDgUCDJnQrqpd1dWK2dLq5rmO4mCBmI3w==",
- "license": "MIT",
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/mui-org"
- }
- },
- "node_modules/@mui/icons-material": {
- "version": "7.3.8",
- "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-7.3.8.tgz",
- "integrity": "sha512-88sWg/UJc1X82OMO+ISR4E3P58I3BjFVg0qkmDu7OWlN8VijneZD3ylFA+ImxuPjMHW3SHosfSJYy1fztoz0fw==",
+ "version": "7.3.7",
+ "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-7.3.7.tgz",
+ "integrity": "sha512-8jWwS6FweMkpyRkrJooamUGe1CQfO1yJ+lM43IyUJbrhHW/ObES+6ry4vfGi8EKaldHL3t3BG1bcLcERuJPcjg==",
"license": "MIT",
- "dependencies": {
- "@babel/runtime": "^7.28.6"
- },
- "engines": {
- "node": ">=14.0.0"
- },
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/mui-org"
- },
- "peerDependencies": {
- "@mui/material": "^7.3.8",
- "@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
- }
}
},
"node_modules/@mui/material": {
- "version": "7.3.8",
- "resolved": "https://registry.npmjs.org/@mui/material/-/material-7.3.8.tgz",
- "integrity": "sha512-QKd1RhDXE1hf2sQDNayA9ic9jGkEgvZOf0tTkJxlBPG8ns8aS4rS8WwYURw2x5y3739p0HauUXX9WbH7UufFLw==",
+ "version": "7.3.7",
+ "resolved": "https://registry.npmjs.org/@mui/material/-/material-7.3.7.tgz",
+ "integrity": "sha512-6bdIxqzeOtBAj2wAsfhWCYyMKPLkRO9u/2o5yexcL0C3APqyy91iGSWgT3H7hg+zR2XgE61+WAu12wXPON8b6A==",
"license": "MIT",
"peer": true,
"dependencies": {
- "@babel/runtime": "^7.28.6",
- "@mui/core-downloads-tracker": "^7.3.8",
- "@mui/system": "^7.3.8",
- "@mui/types": "^7.4.11",
- "@mui/utils": "^7.3.8",
+ "@babel/runtime": "^7.28.4",
+ "@mui/core-downloads-tracker": "^7.3.7",
+ "@mui/system": "^7.3.7",
+ "@mui/types": "^7.4.10",
+ "@mui/utils": "^7.3.7",
"@popperjs/core": "^2.11.8",
"@types/react-transition-group": "^4.4.12",
"clsx": "^2.1.1",
@@ -2693,7 +3350,7 @@
"peerDependencies": {
"@emotion/react": "^11.5.0",
"@emotion/styled": "^11.3.0",
- "@mui/material-pigment-css": "^7.3.8",
+ "@mui/material-pigment-css": "^7.3.7",
"@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"
@@ -2720,13 +3377,13 @@
"license": "MIT"
},
"node_modules/@mui/private-theming": {
- "version": "7.3.8",
- "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-7.3.8.tgz",
- "integrity": "sha512-du5dlPZ9XL3xW2apHoGDXBI+QLtyVJGrXNCfcNYfP/ojkz1RQ0rRV6VG9Rkm1DqEFRG8mjjTL7zmE1Bvn1eR4A==",
+ "version": "7.3.7",
+ "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-7.3.7.tgz",
+ "integrity": "sha512-w7r1+CYhG0syCAQUWAuV5zSaU2/67WA9JXUderdb7DzCIJdp/5RmJv6L85wRjgKCMsxFF0Kfn0kPgPbPgw/jdw==",
"license": "MIT",
"dependencies": {
- "@babel/runtime": "^7.28.6",
- "@mui/utils": "^7.3.8",
+ "@babel/runtime": "^7.28.4",
+ "@mui/utils": "^7.3.7",
"prop-types": "^15.8.1"
},
"engines": {
@@ -2747,12 +3404,12 @@
}
},
"node_modules/@mui/styled-engine": {
- "version": "7.3.8",
- "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-7.3.8.tgz",
- "integrity": "sha512-JHAeXQzS0tJ+Fq3C6J4TVDsW+yKhO4uuxuiLaopNStJeQYBIUCXpKYyUCcgXym4AmhbznQnv9RlHywSH6b0FOg==",
+ "version": "7.3.7",
+ "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-7.3.7.tgz",
+ "integrity": "sha512-y/QkNXv6cF6dZ5APztd/dFWfQ6LHKPx3skyYO38YhQD4+Cxd6sFAL3Z38WMSSC8LQz145Mpp3CcLrSCLKPwYAg==",
"license": "MIT",
"dependencies": {
- "@babel/runtime": "^7.28.6",
+ "@babel/runtime": "^7.28.4",
"@emotion/cache": "^11.14.0",
"@emotion/serialize": "^1.3.3",
"@emotion/sheet": "^1.4.0",
@@ -2781,17 +3438,17 @@
}
},
"node_modules/@mui/system": {
- "version": "7.3.8",
- "resolved": "https://registry.npmjs.org/@mui/system/-/system-7.3.8.tgz",
- "integrity": "sha512-hoFRj4Zw2Km8DPWZp/nKG+ao5Jw5LSk2m/e4EGc6M3RRwXKEkMSG4TgtfVJg7dS2homRwtdXSMW+iRO0ZJ4+IA==",
+ "version": "7.3.7",
+ "resolved": "https://registry.npmjs.org/@mui/system/-/system-7.3.7.tgz",
+ "integrity": "sha512-DovL3k+FBRKnhmatzUMyO5bKkhMLlQ9L7Qw5qHrre3m8zCZmE+31NDVBFfqrbrA7sq681qaEIHdkWD5nmiAjyQ==",
"license": "MIT",
"peer": true,
"dependencies": {
- "@babel/runtime": "^7.28.6",
- "@mui/private-theming": "^7.3.8",
- "@mui/styled-engine": "^7.3.8",
- "@mui/types": "^7.4.11",
- "@mui/utils": "^7.3.8",
+ "@babel/runtime": "^7.28.4",
+ "@mui/private-theming": "^7.3.7",
+ "@mui/styled-engine": "^7.3.7",
+ "@mui/types": "^7.4.10",
+ "@mui/utils": "^7.3.7",
"clsx": "^2.1.1",
"csstype": "^3.2.3",
"prop-types": "^15.8.1"
@@ -2822,12 +3479,12 @@
}
},
"node_modules/@mui/types": {
- "version": "7.4.11",
- "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.4.11.tgz",
- "integrity": "sha512-fZ2xO9D08IKOxO2oUBi1nnVKH6oJUD+64cnv4YAaFoC0E5+i1+S5AHbNqqvZlYYsbPEQ6qEVwuBqY3jl5W4G+Q==",
+ "version": "7.4.10",
+ "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.4.10.tgz",
+ "integrity": "sha512-0+4mSjknSu218GW3isRqoxKRTOrTLd/vHi/7UC4+wZcUrOAqD9kRk7UQRL1mcrzqRoe7s3UT6rsRpbLkW5mHpQ==",
"license": "MIT",
"dependencies": {
- "@babel/runtime": "^7.28.6"
+ "@babel/runtime": "^7.28.4"
},
"peerDependencies": {
"@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0"
@@ -2839,13 +3496,13 @@
}
},
"node_modules/@mui/utils": {
- "version": "7.3.8",
- "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-7.3.8.tgz",
- "integrity": "sha512-kZRcE2620CBGr+XI8YMmwPj6WIPwSF7uMJjvSfqd8zXVvlz0MCJbzRRUGNf8NgflCLthdji2DdS643TeyJ3+nA==",
+ "version": "7.3.7",
+ "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-7.3.7.tgz",
+ "integrity": "sha512-+YjnjMRnyeTkWnspzoxRdiSOgkrcpTikhNPoxOZW0APXx+urHtUoXJ9lbtCZRCA5a4dg5gSbd19alL1DvRs5fg==",
"license": "MIT",
"dependencies": {
- "@babel/runtime": "^7.28.6",
- "@mui/types": "^7.4.11",
+ "@babel/runtime": "^7.28.4",
+ "@mui/types": "^7.4.10",
"@types/prop-types": "^15.7.15",
"clsx": "^2.1.1",
"prop-types": "^15.8.1",
@@ -3035,44 +3692,6 @@
"url": "https://paulmillr.com/funding/"
}
},
- "node_modules/@nodelib/fs.scandir": {
- "version": "2.1.5",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
- "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@nodelib/fs.stat": "2.0.5",
- "run-parallel": "^1.1.9"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/@nodelib/fs.stat": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
- "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/@nodelib/fs.walk": {
- "version": "1.2.8",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
- "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@nodelib/fs.scandir": "2.1.5",
- "fastq": "^1.6.0"
- },
- "engines": {
- "node": ">= 8"
- }
- },
"node_modules/@open-draft/deferred-promise": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/@open-draft/deferred-promise/-/deferred-promise-2.2.0.tgz",
@@ -3238,6 +3857,19 @@
"node": ">=20.0.0"
}
},
+ "node_modules/@pkgr/core": {
+ "version": "0.2.9",
+ "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.9.tgz",
+ "integrity": "sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^12.20.0 || ^14.18.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/pkgr"
+ }
+ },
"node_modules/@popperjs/core": {
"version": "2.11.8",
"resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz",
@@ -4021,42 +4653,373 @@
}
}
},
- "node_modules/@radix-ui/rect": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.1.1.tgz",
- "integrity": "sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==",
- "license": "MIT"
+ "node_modules/@radix-ui/rect": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.1.1.tgz",
+ "integrity": "sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==",
+ "license": "MIT"
+ },
+ "node_modules/@react-hook/intersection-observer": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/@react-hook/intersection-observer/-/intersection-observer-3.1.2.tgz",
+ "integrity": "sha512-mWU3BMkmmzyYMSuhO9wu3eJVP21N8TcgYm9bZnTrMwuM818bEk+0NRM3hP+c/TqA9Ln5C7qE53p1H0QMtzYdvQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@react-hook/passive-layout-effect": "^1.2.0",
+ "intersection-observer": "^0.10.0"
+ },
+ "peerDependencies": {
+ "react": ">=16.8"
+ }
+ },
+ "node_modules/@react-hook/passive-layout-effect": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@react-hook/passive-layout-effect/-/passive-layout-effect-1.2.1.tgz",
+ "integrity": "sha512-IwEphTD75liO8g+6taS+4oqz+nnroocNfWVHWz7j+N+ZO2vYrc6PV1q7GQhuahL0IOR7JccFTsFKQ/mb6iZWAg==",
+ "license": "MIT",
+ "peerDependencies": {
+ "react": ">=16.8"
+ }
+ },
+ "node_modules/@remix-run/router": {
+ "version": "1.23.0",
+ "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.23.0.tgz",
+ "integrity": "sha512-O3rHJzAQKamUz1fvE0Qaw0xSFqsA/yafi2iqeE0pvdFtCO1viYx8QL6f3Ln/aCCTLxs68SLf0KPM9eSeM8yBnA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@rolldown/pluginutils": {
+ "version": "1.0.0-beta.53",
+ "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.53.tgz",
+ "integrity": "sha512-vENRlFU4YbrwVqNDZ7fLvy+JR1CRkyr01jhSiDpE1u6py3OMzQfztQU2jxykW3ALNxO4kSlqIDeYyD0Y9RcQeQ==",
+ "dev": true
+ },
+ "node_modules/@rollup/rollup-android-arm-eabi": {
+ "version": "4.55.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.55.1.tgz",
+ "integrity": "sha512-9R0DM/ykwfGIlNu6+2U09ga0WXeZ9MRC2Ter8jnz8415VbuIykVuc6bhdrbORFZANDmTDvq26mJrEVTl8TdnDg==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "android"
+ ]
+ },
+ "node_modules/@rollup/rollup-android-arm64": {
+ "version": "4.55.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.55.1.tgz",
+ "integrity": "sha512-eFZCb1YUqhTysgW3sj/55du5cG57S7UTNtdMjCW7LwVcj3dTTcowCsC8p7uBdzKsZYa8J7IDE8lhMI+HX1vQvg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "android"
+ ]
+ },
+ "node_modules/@rollup/rollup-darwin-arm64": {
+ "version": "4.55.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.55.1.tgz",
+ "integrity": "sha512-p3grE2PHcQm2e8PSGZdzIhCKbMCw/xi9XvMPErPhwO17vxtvCN5FEA2mSLgmKlCjHGMQTP6phuQTYWUnKewwGg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ]
+ },
+ "node_modules/@rollup/rollup-darwin-x64": {
+ "version": "4.55.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.55.1.tgz",
+ "integrity": "sha512-rDUjG25C9qoTm+e02Esi+aqTKSBYwVTaoS1wxcN47/Luqef57Vgp96xNANwt5npq9GDxsH7kXxNkJVEsWEOEaQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ]
+ },
+ "node_modules/@rollup/rollup-freebsd-arm64": {
+ "version": "4.55.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.55.1.tgz",
+ "integrity": "sha512-+JiU7Jbp5cdxekIgdte0jfcu5oqw4GCKr6i3PJTlXTCU5H5Fvtkpbs4XJHRmWNXF+hKmn4v7ogI5OQPaupJgOg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "freebsd"
+ ]
+ },
+ "node_modules/@rollup/rollup-freebsd-x64": {
+ "version": "4.55.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.55.1.tgz",
+ "integrity": "sha512-V5xC1tOVWtLLmr3YUk2f6EJK4qksksOYiz/TCsFHu/R+woubcLWdC9nZQmwjOAbmExBIVKsm1/wKmEy4z4u4Bw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "freebsd"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm-gnueabihf": {
+ "version": "4.55.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.55.1.tgz",
+ "integrity": "sha512-Rn3n+FUk2J5VWx+ywrG/HGPTD9jXNbicRtTM11e/uorplArnXZYsVifnPPqNNP5BsO3roI4n8332ukpY/zN7rQ==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm-musleabihf": {
+ "version": "4.55.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.55.1.tgz",
+ "integrity": "sha512-grPNWydeKtc1aEdrJDWk4opD7nFtQbMmV7769hiAaYyUKCT1faPRm2av8CX1YJsZ4TLAZcg9gTR1KvEzoLjXkg==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm64-gnu": {
+ "version": "4.55.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.55.1.tgz",
+ "integrity": "sha512-a59mwd1k6x8tXKcUxSyISiquLwB5pX+fJW9TkWU46lCqD/GRDe9uDN31jrMmVP3feI3mhAdvcCClhV8V5MhJFQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm64-musl": {
+ "version": "4.55.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.55.1.tgz",
+ "integrity": "sha512-puS1MEgWX5GsHSoiAsF0TYrpomdvkaXm0CofIMG5uVkP6IBV+ZO9xhC5YEN49nsgYo1DuuMquF9+7EDBVYu4uA==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-loong64-gnu": {
+ "version": "4.55.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.55.1.tgz",
+ "integrity": "sha512-r3Wv40in+lTsULSb6nnoudVbARdOwb2u5fpeoOAZjFLznp6tDU8kd+GTHmJoqZ9lt6/Sys33KdIHUaQihFcu7g==",
+ "cpu": [
+ "loong64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-loong64-musl": {
+ "version": "4.55.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.55.1.tgz",
+ "integrity": "sha512-MR8c0+UxAlB22Fq4R+aQSPBayvYa3+9DrwG/i1TKQXFYEaoW3B5b/rkSRIypcZDdWjWnpcvxbNaAJDcSbJU3Lw==",
+ "cpu": [
+ "loong64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-ppc64-gnu": {
+ "version": "4.55.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.55.1.tgz",
+ "integrity": "sha512-3KhoECe1BRlSYpMTeVrD4sh2Pw2xgt4jzNSZIIPLFEsnQn9gAnZagW9+VqDqAHgm1Xc77LzJOo2LdigS5qZ+gw==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-ppc64-musl": {
+ "version": "4.55.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.55.1.tgz",
+ "integrity": "sha512-ziR1OuZx0vdYZZ30vueNZTg73alF59DicYrPViG0NEgDVN8/Jl87zkAPu4u6VjZST2llgEUjaiNl9JM6HH1Vdw==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-riscv64-gnu": {
+ "version": "4.55.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.55.1.tgz",
+ "integrity": "sha512-uW0Y12ih2XJRERZ4jAfKamTyIHVMPQnTZcQjme2HMVDAHY4amf5u414OqNYC+x+LzRdRcnIG1YodLrrtA8xsxw==",
+ "cpu": [
+ "riscv64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-riscv64-musl": {
+ "version": "4.55.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.55.1.tgz",
+ "integrity": "sha512-u9yZ0jUkOED1BFrqu3BwMQoixvGHGZ+JhJNkNKY/hyoEgOwlqKb62qu+7UjbPSHYjiVy8kKJHvXKv5coH4wDeg==",
+ "cpu": [
+ "riscv64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-s390x-gnu": {
+ "version": "4.55.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.55.1.tgz",
+ "integrity": "sha512-/0PenBCmqM4ZUd0190j7J0UsQ/1nsi735iPRakO8iPciE7BQ495Y6msPzaOmvx0/pn+eJVVlZrNrSh4WSYLxNg==",
+ "cpu": [
+ "s390x"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-x64-gnu": {
+ "version": "4.55.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.55.1.tgz",
+ "integrity": "sha512-a8G4wiQxQG2BAvo+gU6XrReRRqj+pLS2NGXKm8io19goR+K8lw269eTrPkSdDTALwMmJp4th2Uh0D8J9bEV1vg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-x64-musl": {
+ "version": "4.55.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.55.1.tgz",
+ "integrity": "sha512-bD+zjpFrMpP/hqkfEcnjXWHMw5BIghGisOKPj+2NaNDuVT+8Ds4mPf3XcPHuat1tz89WRL+1wbcxKY3WSbiT7w==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-openbsd-x64": {
+ "version": "4.55.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.55.1.tgz",
+ "integrity": "sha512-eLXw0dOiqE4QmvikfQ6yjgkg/xDM+MdU9YJuP4ySTibXU0oAvnEWXt7UDJmD4UkYialMfOGFPJnIHSe/kdzPxg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "openbsd"
+ ]
},
- "node_modules/@react-hook/intersection-observer": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/@react-hook/intersection-observer/-/intersection-observer-3.1.2.tgz",
- "integrity": "sha512-mWU3BMkmmzyYMSuhO9wu3eJVP21N8TcgYm9bZnTrMwuM818bEk+0NRM3hP+c/TqA9Ln5C7qE53p1H0QMtzYdvQ==",
- "license": "MIT",
- "dependencies": {
- "@react-hook/passive-layout-effect": "^1.2.0",
- "intersection-observer": "^0.10.0"
- },
- "peerDependencies": {
- "react": ">=16.8"
- }
+ "node_modules/@rollup/rollup-openharmony-arm64": {
+ "version": "4.55.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.55.1.tgz",
+ "integrity": "sha512-xzm44KgEP11te3S2HCSyYf5zIzWmx3n8HDCc7EE59+lTcswEWNpvMLfd9uJvVX8LCg9QWG67Xt75AuHn4vgsXw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "openharmony"
+ ]
},
- "node_modules/@react-hook/passive-layout-effect": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/@react-hook/passive-layout-effect/-/passive-layout-effect-1.2.1.tgz",
- "integrity": "sha512-IwEphTD75liO8g+6taS+4oqz+nnroocNfWVHWz7j+N+ZO2vYrc6PV1q7GQhuahL0IOR7JccFTsFKQ/mb6iZWAg==",
- "license": "MIT",
- "peerDependencies": {
- "react": ">=16.8"
- }
+ "node_modules/@rollup/rollup-win32-arm64-msvc": {
+ "version": "4.55.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.55.1.tgz",
+ "integrity": "sha512-yR6Bl3tMC/gBok5cz/Qi0xYnVbIxGx5Fcf/ca0eB6/6JwOY+SRUcJfI0OpeTpPls7f194as62thCt/2BjxYN8g==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "win32"
+ ]
},
- "node_modules/@remix-run/router": {
- "version": "1.23.2",
- "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.23.2.tgz",
- "integrity": "sha512-Ic6m2U/rMjTkhERIa/0ZtXJP17QUi2CbWE7cqx4J58M8aA3QTfW+2UlQ4psvTX9IO1RfNVhK3pcpdjej7L+t2w==",
- "license": "MIT",
- "engines": {
- "node": ">=14.0.0"
- }
+ "node_modules/@rollup/rollup-win32-ia32-msvc": {
+ "version": "4.55.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.55.1.tgz",
+ "integrity": "sha512-3fZBidchE0eY0oFZBnekYCfg+5wAB0mbpCBuofh5mZuzIU/4jIVkbESmd2dOsFNS78b53CYv3OAtwqkZZmU5nA==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@rollup/rollup-win32-x64-gnu": {
+ "version": "4.55.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.55.1.tgz",
+ "integrity": "sha512-xGGY5pXj69IxKb4yv/POoocPy/qmEGhimy/FoTpTSVju3FYXUQQMFCaZZXJVidsmGxRioZAwpThl/4zX41gRKg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@rollup/rollup-win32-x64-msvc": {
+ "version": "4.55.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.55.1.tgz",
+ "integrity": "sha512-SPEpaL6DX4rmcXtnhdrQYgzQ5W2uW3SCJch88lB2zImhJRhIIK44fkUrgIV/Q8yUNfw5oyZ5vkeQsZLhCb06lw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "win32"
+ ]
},
"node_modules/@standard-schema/utils": {
"version": "0.3.0",
@@ -4070,6 +5033,25 @@
"integrity": "sha512-Gfkvwk9o9kE9r9XNBmJRfV8zONvXThnm1tcuojL04Uy5uRyqg93DC83lDebl0rocZCfKSjUv+fWYtMQmEDJldg==",
"license": "MIT"
},
+ "node_modules/@tinymce/tinymce-react": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/@tinymce/tinymce-react/-/tinymce-react-6.3.0.tgz",
+ "integrity": "sha512-E++xnn0XzDzpKr40jno2Kj7umfAE6XfINZULEBBeNjTMvbACWzA6CjiR6V8eTDc9yVmdVhIPqVzV4PqD5TZ/4g==",
+ "license": "MIT",
+ "dependencies": {
+ "prop-types": "^15.6.2"
+ },
+ "peerDependencies": {
+ "react": "^19.0.0 || ^18.0.0 || ^17.0.1 || ^16.7.0",
+ "react-dom": "^19.0.0 || ^18.0.0 || ^17.0.1 || ^16.7.0",
+ "tinymce": "^8.0.0 || ^7.0.0 || ^6.0.0 || ^5.5.1"
+ },
+ "peerDependenciesMeta": {
+ "tinymce": {
+ "optional": true
+ }
+ }
+ },
"node_modules/@tsconfig/node10": {
"version": "1.0.12",
"resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.12.tgz",
@@ -4098,6 +5080,47 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/@types/babel__core": {
+ "version": "7.20.5",
+ "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz",
+ "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/parser": "^7.20.7",
+ "@babel/types": "^7.20.7",
+ "@types/babel__generator": "*",
+ "@types/babel__template": "*",
+ "@types/babel__traverse": "*"
+ }
+ },
+ "node_modules/@types/babel__generator": {
+ "version": "7.27.0",
+ "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz",
+ "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/types": "^7.0.0"
+ }
+ },
+ "node_modules/@types/babel__template": {
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz",
+ "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==",
+ "dev": true,
+ "dependencies": {
+ "@babel/parser": "^7.1.0",
+ "@babel/types": "^7.0.0"
+ }
+ },
+ "node_modules/@types/babel__traverse": {
+ "version": "7.28.0",
+ "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz",
+ "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==",
+ "dev": true,
+ "dependencies": {
+ "@babel/types": "^7.28.2"
+ }
+ },
"node_modules/@types/body-parser": {
"version": "1.19.6",
"resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.6.tgz",
@@ -4212,24 +5235,13 @@
"@types/ms": "*"
}
},
- "node_modules/@types/dotenv-webpack": {
- "version": "7.0.8",
- "resolved": "https://registry.npmjs.org/@types/dotenv-webpack/-/dotenv-webpack-7.0.8.tgz",
- "integrity": "sha512-JiLJdF2y9dW0eJjKUBlVnIwz/Raej00MOMdKcUuVxYJquvcuMgQdJw7cnN+hRZ7eejYgKr8kZsIw4nihwYYGeA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@types/node": "*",
- "tapable": "^2.2.0",
- "webpack": "^5"
- }
- },
"node_modules/@types/eslint": {
"version": "9.6.1",
"resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz",
"integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@types/estree": "*",
"@types/json-schema": "*"
@@ -4249,8 +5261,7 @@
"node_modules/@types/estree": {
"version": "1.0.8",
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz",
- "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==",
- "license": "MIT"
+ "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w=="
},
"node_modules/@types/estree-jsx": {
"version": "1.0.5",
@@ -4287,17 +5298,6 @@
"@types/send": "*"
}
},
- "node_modules/@types/glob": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz",
- "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@types/minimatch": "*",
- "@types/node": "*"
- }
- },
"node_modules/@types/hast": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz",
@@ -4319,20 +5319,6 @@
"@types/react": "*"
}
},
- "node_modules/@types/html-minifier-terser": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz",
- "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@types/http-errors": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.5.tgz",
- "integrity": "sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==",
- "dev": true,
- "license": "MIT"
- },
"node_modules/@types/http-proxy": {
"version": "1.17.17",
"resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.17.tgz",
@@ -4380,20 +5366,6 @@
"integrity": "sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==",
"license": "MIT"
},
- "node_modules/@types/mime": {
- "version": "1.3.5",
- "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz",
- "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@types/minimatch": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz",
- "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==",
- "dev": true,
- "license": "MIT"
- },
"node_modules/@types/ms": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz",
@@ -4401,14 +5373,13 @@
"license": "MIT"
},
"node_modules/@types/node": {
- "version": "22.19.11",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-22.19.11.tgz",
- "integrity": "sha512-BH7YwL6rA93ReqeQS1c4bsPpcfOmJasG+Fkr6Y59q83f9M1WcBRHR2vM+P9eOisYRcN3ujQoiZY8uk5W+1WL8w==",
+ "version": "24.10.4",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.4.tgz",
+ "integrity": "sha512-vnDVpYPMzs4wunl27jHrfmwojOGKya0xyM3sH+UE5iv5uPS6vX7UIoh6m+vQc5LGBq52HBKPIn/zcSZVzeDEZg==",
"dev": true,
- "license": "MIT",
"peer": true,
"dependencies": {
- "undici-types": "~6.21.0"
+ "undici-types": "~7.16.0"
}
},
"node_modules/@types/parse-json": {
@@ -4436,9 +5407,10 @@
"license": "MIT"
},
"node_modules/@types/qs": {
- "version": "6.14.0",
- "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.14.0.tgz",
- "integrity": "sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==",
+ "version": "6.15.0",
+ "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.15.0.tgz",
+ "integrity": "sha512-JawvT8iBVWpzTrz3EGw9BTQFg3BQNmwERdKE22vlTxawwtbyUSlMppvZYKLZzB5zgACXdXxbD3m1bXaMqP/9ow==",
+ "dev": true,
"license": "MIT"
},
"node_modules/@types/range-parser": {
@@ -4588,13 +5560,6 @@
"entities": "^7.0.1"
}
},
- "node_modules/@types/semver": {
- "version": "7.7.1",
- "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.7.1.tgz",
- "integrity": "sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==",
- "dev": true,
- "license": "MIT"
- },
"node_modules/@types/send": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/@types/send/-/send-1.2.1.tgz",
@@ -4685,123 +5650,150 @@
}
},
"node_modules/@typescript-eslint/eslint-plugin": {
- "version": "5.62.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz",
- "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==",
+ "version": "8.52.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.52.0.tgz",
+ "integrity": "sha512-okqtOgqu2qmZJ5iN4TWlgfF171dZmx2FzdOv2K/ixL2LZWDStL8+JgQerI2sa8eAEfoydG9+0V96m7V+P8yE1Q==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@eslint-community/regexpp": "^4.4.0",
- "@typescript-eslint/scope-manager": "5.62.0",
- "@typescript-eslint/type-utils": "5.62.0",
- "@typescript-eslint/utils": "5.62.0",
- "debug": "^4.3.4",
- "graphemer": "^1.4.0",
- "ignore": "^5.2.0",
- "natural-compare-lite": "^1.4.0",
- "semver": "^7.3.7",
- "tsutils": "^3.21.0"
+ "@eslint-community/regexpp": "^4.12.2",
+ "@typescript-eslint/scope-manager": "8.52.0",
+ "@typescript-eslint/type-utils": "8.52.0",
+ "@typescript-eslint/utils": "8.52.0",
+ "@typescript-eslint/visitor-keys": "8.52.0",
+ "ignore": "^7.0.5",
+ "natural-compare": "^1.4.0",
+ "ts-api-utils": "^2.4.0"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/typescript-eslint"
},
"peerDependencies": {
- "@typescript-eslint/parser": "^5.0.0",
- "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
+ "@typescript-eslint/parser": "^8.52.0",
+ "eslint": "^8.57.0 || ^9.0.0",
+ "typescript": ">=4.8.4 <6.0.0"
}
},
"node_modules/@typescript-eslint/parser": {
- "version": "5.62.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz",
- "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==",
+ "version": "8.52.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.52.0.tgz",
+ "integrity": "sha512-iIACsx8pxRnguSYhHiMn2PvhvfpopO9FXHyn1mG5txZIsAaB6F0KwbFnUQN3KCiG3Jcuad/Cao2FAs1Wp7vAyg==",
"dev": true,
- "license": "BSD-2-Clause",
+ "license": "MIT",
"peer": true,
"dependencies": {
- "@typescript-eslint/scope-manager": "5.62.0",
- "@typescript-eslint/types": "5.62.0",
- "@typescript-eslint/typescript-estree": "5.62.0",
- "debug": "^4.3.4"
+ "@typescript-eslint/scope-manager": "8.52.0",
+ "@typescript-eslint/types": "8.52.0",
+ "@typescript-eslint/typescript-estree": "8.52.0",
+ "@typescript-eslint/visitor-keys": "8.52.0",
+ "debug": "^4.4.3"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/typescript-eslint"
},
"peerDependencies": {
- "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
+ "eslint": "^8.57.0 || ^9.0.0",
+ "typescript": ">=4.8.4 <6.0.0"
+ }
+ },
+ "node_modules/@typescript-eslint/project-service": {
+ "version": "8.52.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.52.0.tgz",
+ "integrity": "sha512-xD0MfdSdEmeFa3OmVqonHi+Cciab96ls1UhIF/qX/O/gPu5KXD0bY9lu33jj04fjzrXHcuvjBcBC+D3SNSadaw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/tsconfig-utils": "^8.52.0",
+ "@typescript-eslint/types": "^8.52.0",
+ "debug": "^4.4.3"
},
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "typescript": ">=4.8.4 <6.0.0"
}
},
"node_modules/@typescript-eslint/scope-manager": {
- "version": "5.62.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz",
- "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==",
+ "version": "8.52.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.52.0.tgz",
+ "integrity": "sha512-ixxqmmCcc1Nf8S0mS0TkJ/3LKcC8mruYJPOU6Ia2F/zUUR4pApW7LzrpU3JmtePbRUTes9bEqRc1Gg4iyRnDzA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/types": "5.62.0",
- "@typescript-eslint/visitor-keys": "5.62.0"
+ "@typescript-eslint/types": "8.52.0",
+ "@typescript-eslint/visitor-keys": "8.52.0"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@typescript-eslint/tsconfig-utils": {
+ "version": "8.52.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.52.0.tgz",
+ "integrity": "sha512-jl+8fzr/SdzdxWJznq5nvoI7qn2tNYV/ZBAEcaFMVXf+K6jmXvAFrgo/+5rxgnL152f//pDEAYAhhBAZGrVfwg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "typescript": ">=4.8.4 <6.0.0"
}
},
"node_modules/@typescript-eslint/type-utils": {
- "version": "5.62.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz",
- "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==",
+ "version": "8.52.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.52.0.tgz",
+ "integrity": "sha512-JD3wKBRWglYRQkAtsyGz1AewDu3mTc7NtRjR/ceTyGoPqmdS5oCdx/oZMWD5Zuqmo6/MpsYs0wp6axNt88/2EQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/typescript-estree": "5.62.0",
- "@typescript-eslint/utils": "5.62.0",
- "debug": "^4.3.4",
- "tsutils": "^3.21.0"
+ "@typescript-eslint/types": "8.52.0",
+ "@typescript-eslint/typescript-estree": "8.52.0",
+ "@typescript-eslint/utils": "8.52.0",
+ "debug": "^4.4.3",
+ "ts-api-utils": "^2.4.0"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/typescript-eslint"
},
"peerDependencies": {
- "eslint": "*"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
+ "eslint": "^8.57.0 || ^9.0.0",
+ "typescript": ">=4.8.4 <6.0.0"
}
},
"node_modules/@typescript-eslint/types": {
- "version": "5.62.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz",
- "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==",
+ "version": "8.52.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.52.0.tgz",
+ "integrity": "sha512-LWQV1V4q9V4cT4H5JCIx3481iIFxH1UkVk+ZkGGAV1ZGcjGI9IoFOfg3O6ywz8QqCDEp7Inlg6kovMofsNRaGg==",
"dev": true,
"license": "MIT",
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
"type": "opencollective",
@@ -4809,78 +5801,114 @@
}
},
"node_modules/@typescript-eslint/typescript-estree": {
- "version": "5.62.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz",
- "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==",
+ "version": "8.52.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.52.0.tgz",
+ "integrity": "sha512-XP3LClsCc0FsTK5/frGjolyADTh3QmsLp6nKd476xNI9CsSsLnmn4f0jrzNoAulmxlmNIpeXuHYeEQv61Q6qeQ==",
"dev": true,
- "license": "BSD-2-Clause",
+ "license": "MIT",
"dependencies": {
- "@typescript-eslint/types": "5.62.0",
- "@typescript-eslint/visitor-keys": "5.62.0",
- "debug": "^4.3.4",
- "globby": "^11.1.0",
- "is-glob": "^4.0.3",
- "semver": "^7.3.7",
- "tsutils": "^3.21.0"
+ "@typescript-eslint/project-service": "8.52.0",
+ "@typescript-eslint/tsconfig-utils": "8.52.0",
+ "@typescript-eslint/types": "8.52.0",
+ "@typescript-eslint/visitor-keys": "8.52.0",
+ "debug": "^4.4.3",
+ "minimatch": "^9.0.5",
+ "semver": "^7.7.3",
+ "tinyglobby": "^0.2.15",
+ "ts-api-utils": "^2.4.0"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/typescript-eslint"
},
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
+ "peerDependencies": {
+ "typescript": ">=4.8.4 <6.0.0"
+ }
+ },
+ "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
+ "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": {
+ "version": "9.0.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
+ "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/@typescript-eslint/utils": {
- "version": "5.62.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz",
- "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==",
+ "version": "8.52.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.52.0.tgz",
+ "integrity": "sha512-wYndVMWkweqHpEpwPhwqE2lnD2DxC6WVLupU/DOt/0/v+/+iQbbzO3jOHjmBMnhu0DgLULvOaU4h4pwHYi2oRQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@eslint-community/eslint-utils": "^4.2.0",
- "@types/json-schema": "^7.0.9",
- "@types/semver": "^7.3.12",
- "@typescript-eslint/scope-manager": "5.62.0",
- "@typescript-eslint/types": "5.62.0",
- "@typescript-eslint/typescript-estree": "5.62.0",
- "eslint-scope": "^5.1.1",
- "semver": "^7.3.7"
+ "@eslint-community/eslint-utils": "^4.9.1",
+ "@typescript-eslint/scope-manager": "8.52.0",
+ "@typescript-eslint/types": "8.52.0",
+ "@typescript-eslint/typescript-estree": "8.52.0"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/typescript-eslint"
},
"peerDependencies": {
- "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
+ "eslint": "^8.57.0 || ^9.0.0",
+ "typescript": ">=4.8.4 <6.0.0"
}
},
"node_modules/@typescript-eslint/visitor-keys": {
- "version": "5.62.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz",
- "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==",
+ "version": "8.52.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.52.0.tgz",
+ "integrity": "sha512-ink3/Zofus34nmBsPjow63FP5M7IGff0RKAgqR6+CFpdk22M7aLwC9gOcLGYqr7MczLPzZVERW9hRog3O4n1sQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/types": "5.62.0",
- "eslint-visitor-keys": "^3.3.0"
+ "@typescript-eslint/types": "8.52.0",
+ "eslint-visitor-keys": "^4.2.1"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/typescript-eslint"
}
},
+ "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz",
+ "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
"node_modules/@uiw/copy-to-clipboard": {
"version": "1.0.20",
"resolved": "https://registry.npmjs.org/@uiw/copy-to-clipboard/-/copy-to-clipboard-1.0.20.tgz",
@@ -5345,6 +6373,27 @@
"integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==",
"license": "ISC"
},
+ "node_modules/@vitejs/plugin-react": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-5.1.2.tgz",
+ "integrity": "sha512-EcA07pHJouywpzsoTUqNh5NwGayl2PPVEJKUSinGGSxFGYn+shYbqMGBg6FXDqgXum9Ou/ecb+411ssw8HImJQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/core": "^7.28.5",
+ "@babel/plugin-transform-react-jsx-self": "^7.27.1",
+ "@babel/plugin-transform-react-jsx-source": "^7.27.1",
+ "@rolldown/pluginutils": "1.0.0-beta.53",
+ "@types/babel__core": "^7.20.5",
+ "react-refresh": "^0.18.0"
+ },
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ },
+ "peerDependencies": {
+ "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0"
+ }
+ },
"node_modules/@webassemblyjs/ast": {
"version": "1.14.1",
"resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz",
@@ -5850,26 +6899,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/array-union": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
- "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/array-uniq": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz",
- "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/array.prototype.findlast": {
"version": "1.2.5",
"resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz",
@@ -5969,14 +6998,14 @@
}
},
"node_modules/asn1js": {
- "version": "3.0.7",
- "resolved": "https://registry.npmjs.org/asn1js/-/asn1js-3.0.7.tgz",
- "integrity": "sha512-uLvq6KJu04qoQM6gvBfKFjlh6Gl0vOKQuR5cJMDHQkmwfMOQeN3F3SHCv9SNYSL+CRoHvOGFfllDlVz03GQjvQ==",
+ "version": "3.0.10",
+ "resolved": "https://registry.npmjs.org/asn1js/-/asn1js-3.0.10.tgz",
+ "integrity": "sha512-S2s3aOytiKdFRdulw2qPE51MzjzVOisppcVv7jVFR+Kw0kxwvFrDcYA0h7Ndqbmj0HkMIXYWaoj7fli8kgx1eg==",
"dev": true,
"license": "BSD-3-Clause",
"dependencies": {
"pvtsutils": "^1.3.6",
- "pvutils": "^1.1.3",
+ "pvutils": "^1.1.5",
"tslib": "^2.8.1"
},
"engines": {
@@ -6080,9 +7109,9 @@
"license": "MIT"
},
"node_modules/baseline-browser-mapping": {
- "version": "2.10.0",
- "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.0.tgz",
- "integrity": "sha512-lIyg0szRfYbiy67j9KN8IyeD7q7hcmqnJ1ddWmNt19ItGpNN64mnllmxUNFIOdOm6by97jlL6wfpTTJrmnjWAA==",
+ "version": "2.10.19",
+ "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.19.tgz",
+ "integrity": "sha512-qCkNLi2sfBOn8XhZQ0FXsT1Ki/Yo5P90hrkRamVFRS7/KV9hpfA4HkoWNU152+8w0zPjnxo5psx5NL3PSGgv5g==",
"dev": true,
"license": "Apache-2.0",
"bin": {
@@ -6158,27 +7187,11 @@
}
},
"node_modules/body-parser/node_modules/ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/body-parser/node_modules/qs": {
- "version": "6.14.2",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.2.tgz",
- "integrity": "sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q==",
- "dev": true,
- "license": "BSD-3-Clause",
- "dependencies": {
- "side-channel": "^1.1.0"
- },
- "engines": {
- "node": ">=0.6"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "dev": true,
+ "license": "MIT"
},
"node_modules/bonjour-service": {
"version": "1.3.0",
@@ -6198,9 +7211,9 @@
"license": "ISC"
},
"node_modules/brace-expansion": {
- "version": "1.1.13",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.13.tgz",
- "integrity": "sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==",
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -6388,6 +7401,7 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
"integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
+ "dev": true,
"license": "MIT",
"dependencies": {
"es-errors": "^1.3.0",
@@ -6401,6 +7415,7 @@
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz",
"integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==",
+ "dev": true,
"license": "MIT",
"dependencies": {
"call-bind-apply-helpers": "^1.0.2",
@@ -6429,17 +7444,6 @@
"node": ">=6"
}
},
- "node_modules/camel-case": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz",
- "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "pascal-case": "^3.1.2",
- "tslib": "^2.0.3"
- }
- },
"node_modules/caniuse-lite": {
"version": "1.0.30001770",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001770.tgz",
@@ -6595,51 +7599,12 @@
"integrity": "sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==",
"license": "MIT"
},
- "node_modules/clean-css": {
- "version": "5.3.3",
- "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.3.tgz",
- "integrity": "sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "source-map": "~0.6.0"
- },
- "engines": {
- "node": ">= 10.0"
- }
- },
- "node_modules/clean-css/node_modules/source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true,
- "license": "BSD-3-Clause",
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/clean-set": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/clean-set/-/clean-set-1.1.2.tgz",
"integrity": "sha512-cA8uCj0qSoG9e0kevyOWXwPaELRPVg5Pxp6WskLMwerx257Zfnh8Nl0JBH59d7wQzij2CK7qEfJQK3RjuKKIug==",
"license": "MIT"
},
- "node_modules/clean-webpack-plugin": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/clean-webpack-plugin/-/clean-webpack-plugin-4.0.0.tgz",
- "integrity": "sha512-WuWE1nyTNAyW5T7oNyys2EN0cfP2fdRxhxnIQWiAp0bMabPdHhoGxM8A6YL2GhqwgrPnnaemVE7nv5XJ2Fhh2w==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "del": "^4.1.1"
- },
- "engines": {
- "node": ">=10.0.0"
- },
- "peerDependencies": {
- "webpack": ">=4.0.0 <6.0.0"
- }
- },
"node_modules/cliui": {
"version": "8.0.1",
"resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
@@ -6692,6 +7657,19 @@
"node": ">=6"
}
},
+ "node_modules/clone-deep/node_modules/is-plain-object": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
+ "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "isobject": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/clsx": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz",
@@ -6860,16 +7838,6 @@
"dev": true,
"license": "MIT"
},
- "node_modules/connect-history-api-fallback": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz",
- "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.8"
- }
- },
"node_modules/consola": {
"version": "3.4.2",
"resolved": "https://registry.npmjs.org/consola/-/consola-3.4.2.tgz",
@@ -6935,30 +7903,6 @@
"toggle-selection": "^1.0.6"
}
},
- "node_modules/copy-webpack-plugin": {
- "version": "13.0.1",
- "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-13.0.1.tgz",
- "integrity": "sha512-J+YV3WfhY6W/Xf9h+J1znYuqTye2xkBUIGyTPWuBAT27qajBa5mR4f8WBmfDY3YjRftT2kqZZiLi1qf0H+UOFw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "glob-parent": "^6.0.1",
- "normalize-path": "^3.0.0",
- "schema-utils": "^4.2.0",
- "serialize-javascript": "^6.0.2",
- "tinyglobby": "^0.2.12"
- },
- "engines": {
- "node": ">= 18.12.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/webpack"
- },
- "peerDependencies": {
- "webpack": "^5.1.0"
- }
- },
"node_modules/core-util-is": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
@@ -7056,59 +8000,6 @@
"tiny-invariant": "^1.0.6"
}
},
- "node_modules/css-loader": {
- "version": "7.1.4",
- "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-7.1.4.tgz",
- "integrity": "sha512-vv3J9tlOl04WjiMvHQI/9tmIrCxVrj6PFbHemBB1iihpeRbi/I4h033eoFIhwxBBqLhI0KYFS7yvynBFhIZfTw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "icss-utils": "^5.1.0",
- "postcss": "^8.4.40",
- "postcss-modules-extract-imports": "^3.1.0",
- "postcss-modules-local-by-default": "^4.0.5",
- "postcss-modules-scope": "^3.2.0",
- "postcss-modules-values": "^4.0.0",
- "postcss-value-parser": "^4.2.0",
- "semver": "^7.6.3"
- },
- "engines": {
- "node": ">= 18.12.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/webpack"
- },
- "peerDependencies": {
- "@rspack/core": "0.x || ^1.0.0 || ^2.0.0-0",
- "webpack": "^5.27.0"
- },
- "peerDependenciesMeta": {
- "@rspack/core": {
- "optional": true
- },
- "webpack": {
- "optional": true
- }
- }
- },
- "node_modules/css-select": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz",
- "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "boolbase": "^1.0.0",
- "css-what": "^6.0.1",
- "domhandler": "^4.3.1",
- "domutils": "^2.8.0",
- "nth-check": "^2.0.1"
- },
- "funding": {
- "url": "https://github.com/sponsors/fb55"
- }
- },
"node_modules/css-selector-parser": {
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/css-selector-parser/-/css-selector-parser-3.3.0.tgz",
@@ -7125,32 +8016,6 @@
],
"license": "MIT"
},
- "node_modules/css-what": {
- "version": "6.2.2",
- "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz",
- "integrity": "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==",
- "dev": true,
- "license": "BSD-2-Clause",
- "engines": {
- "node": ">= 6"
- },
- "funding": {
- "url": "https://github.com/sponsors/fb55"
- }
- },
- "node_modules/cssesc": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
- "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
- "dev": true,
- "license": "MIT",
- "bin": {
- "cssesc": "bin/cssesc"
- },
- "engines": {
- "node": ">=4"
- }
- },
"node_modules/csstype": {
"version": "3.2.3",
"resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz",
@@ -7346,9 +8211,9 @@
}
},
"node_modules/dayjs": {
- "version": "1.11.19",
- "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.19.tgz",
- "integrity": "sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw==",
+ "version": "1.11.13",
+ "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz",
+ "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==",
"license": "MIT",
"peer": true
},
@@ -7490,65 +8355,6 @@
"dev": true,
"license": "MIT"
},
- "node_modules/del": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz",
- "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@types/glob": "^7.1.1",
- "globby": "^6.1.0",
- "is-path-cwd": "^2.0.0",
- "is-path-in-cwd": "^2.0.0",
- "p-map": "^2.0.0",
- "pify": "^4.0.1",
- "rimraf": "^2.6.3"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/del/node_modules/array-union": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
- "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "array-uniq": "^1.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/del/node_modules/globby": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz",
- "integrity": "sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "array-union": "^1.0.1",
- "glob": "^7.0.3",
- "object-assign": "^4.0.1",
- "pify": "^2.0.0",
- "pinkie-promise": "^2.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/del/node_modules/globby/node_modules/pify": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
- "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/depd": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
@@ -7613,27 +8419,15 @@
}
},
"node_modules/diff": {
- "version": "5.2.2",
- "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.2.tgz",
- "integrity": "sha512-vtcDfH3TOjP8UekytvnHH1o1P4FcUdt4eQ1Y+Abap1tk/OB2MWQvcwS2ClCd1zuIhc3JKOx6p3kod8Vfys3E+A==",
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz",
+ "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==",
+ "dev": true,
"license": "BSD-3-Clause",
"engines": {
"node": ">=0.3.1"
}
},
- "node_modules/dir-glob": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
- "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "path-type": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/direction": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/direction/-/direction-2.0.1.tgz",
@@ -7660,29 +8454,6 @@
"node": ">=6"
}
},
- "node_modules/doctrine": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
- "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
- "dev": true,
- "license": "Apache-2.0",
- "dependencies": {
- "esutils": "^2.0.2"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/dom-converter": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz",
- "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "utila": "~0.4"
- }
- },
"node_modules/dom-helpers": {
"version": "5.2.1",
"resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz",
@@ -7693,31 +8464,6 @@
"csstype": "^3.0.2"
}
},
- "node_modules/dom-serializer": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz",
- "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "domelementtype": "^2.0.1",
- "domhandler": "^4.2.0",
- "entities": "^2.0.0"
- },
- "funding": {
- "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
- }
- },
- "node_modules/dom-serializer/node_modules/entities": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz",
- "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==",
- "dev": true,
- "license": "BSD-2-Clause",
- "funding": {
- "url": "https://github.com/fb55/entities?sponsor=1"
- }
- },
"node_modules/domelementtype": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
@@ -7730,22 +8476,6 @@
],
"license": "BSD-2-Clause"
},
- "node_modules/domhandler": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz",
- "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "domelementtype": "^2.2.0"
- },
- "engines": {
- "node": ">= 4"
- },
- "funding": {
- "url": "https://github.com/fb55/domhandler?sponsor=1"
- }
- },
"node_modules/dompurify": {
"version": "3.2.7",
"resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.2.7.tgz",
@@ -7755,78 +8485,16 @@
"@types/trusted-types": "^2.0.7"
}
},
- "node_modules/domutils": {
- "version": "2.8.0",
- "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz",
- "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "dom-serializer": "^1.0.1",
- "domelementtype": "^2.2.0",
- "domhandler": "^4.2.0"
- },
- "funding": {
- "url": "https://github.com/fb55/domutils?sponsor=1"
- }
- },
- "node_modules/dot-case": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz",
- "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "no-case": "^3.0.4",
- "tslib": "^2.0.3"
- }
- },
"node_modules/dotenv": {
"version": "16.6.1",
"resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.6.1.tgz",
"integrity": "sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==",
- "license": "BSD-2-Clause",
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://dotenvx.com"
- }
- },
- "node_modules/dotenv-defaults": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/dotenv-defaults/-/dotenv-defaults-2.0.2.tgz",
- "integrity": "sha512-iOIzovWfsUHU91L5i8bJce3NYK5JXeAwH50Jh6+ARUdLiiGlYWfGw6UkzsYqaXZH/hjE/eCd/PlfM/qqyK0AMg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "dotenv": "^8.2.0"
- }
- },
- "node_modules/dotenv-defaults/node_modules/dotenv": {
- "version": "8.6.0",
- "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz",
- "integrity": "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==",
- "dev": true,
- "license": "BSD-2-Clause",
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/dotenv-webpack": {
- "version": "8.1.1",
- "resolved": "https://registry.npmjs.org/dotenv-webpack/-/dotenv-webpack-8.1.1.tgz",
- "integrity": "sha512-+TY/AJ2k9bU2EML3mxgLmaAvEcqs1Wbv6deCIUSI3eW3Xeo8LBQumYib6puyaSwbjC9JCzg/y5Pwjd/lePX04w==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "dotenv-defaults": "^2.0.2"
- },
+ "license": "BSD-2-Clause",
"engines": {
- "node": ">=10"
+ "node": ">=12"
},
- "peerDependencies": {
- "webpack": "^4 || ^5"
+ "funding": {
+ "url": "https://dotenvx.com"
}
},
"node_modules/downshift": {
@@ -7845,10 +8513,17 @@
"react": ">=16.12.0"
}
},
+ "node_modules/downshift/node_modules/react-is": {
+ "version": "17.0.2",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
+ "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==",
+ "license": "MIT"
+ },
"node_modules/dunder-proto": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
"integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
+ "dev": true,
"license": "MIT",
"dependencies": {
"call-bind-apply-helpers": "^1.0.1",
@@ -7896,14 +8571,14 @@
}
},
"node_modules/enhanced-resolve": {
- "version": "5.19.0",
- "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.19.0.tgz",
- "integrity": "sha512-phv3E1Xl4tQOShqSte26C7Fl84EwUdZsyOuSSk9qtAGyyQs2s3jJzComh+Abf4g187lUUAvH+H26omrqia2aGg==",
+ "version": "5.21.0",
+ "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.21.0.tgz",
+ "integrity": "sha512-otxSQPw4lkOZWkHpB3zaEQs6gWYEsmX4xQF68ElXC/TWvGxGMSGOvoNbaLXm6/cS/fSfHtsEdw90y20PCd+sCA==",
"dev": true,
"license": "MIT",
"dependencies": {
"graceful-fs": "^4.2.4",
- "tapable": "^2.3.0"
+ "tapable": "^2.3.3"
},
"engines": {
"node": ">=10.13.0"
@@ -8016,6 +8691,7 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
"integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
+ "dev": true,
"license": "MIT",
"engines": {
"node": ">= 0.4"
@@ -8025,6 +8701,7 @@
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
"integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
+ "dev": true,
"license": "MIT",
"engines": {
"node": ">= 0.4"
@@ -8069,6 +8746,7 @@
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz",
"integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==",
+ "dev": true,
"license": "MIT",
"dependencies": {
"es-errors": "^1.3.0"
@@ -8214,6 +8892,47 @@
"url": "https://opencollective.com/unified"
}
},
+ "node_modules/esbuild": {
+ "version": "0.27.2",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.2.tgz",
+ "integrity": "sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw==",
+ "dev": true,
+ "hasInstallScript": true,
+ "bin": {
+ "esbuild": "bin/esbuild"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "optionalDependencies": {
+ "@esbuild/aix-ppc64": "0.27.2",
+ "@esbuild/android-arm": "0.27.2",
+ "@esbuild/android-arm64": "0.27.2",
+ "@esbuild/android-x64": "0.27.2",
+ "@esbuild/darwin-arm64": "0.27.2",
+ "@esbuild/darwin-x64": "0.27.2",
+ "@esbuild/freebsd-arm64": "0.27.2",
+ "@esbuild/freebsd-x64": "0.27.2",
+ "@esbuild/linux-arm": "0.27.2",
+ "@esbuild/linux-arm64": "0.27.2",
+ "@esbuild/linux-ia32": "0.27.2",
+ "@esbuild/linux-loong64": "0.27.2",
+ "@esbuild/linux-mips64el": "0.27.2",
+ "@esbuild/linux-ppc64": "0.27.2",
+ "@esbuild/linux-riscv64": "0.27.2",
+ "@esbuild/linux-s390x": "0.27.2",
+ "@esbuild/linux-x64": "0.27.2",
+ "@esbuild/netbsd-arm64": "0.27.2",
+ "@esbuild/netbsd-x64": "0.27.2",
+ "@esbuild/openbsd-arm64": "0.27.2",
+ "@esbuild/openbsd-x64": "0.27.2",
+ "@esbuild/openharmony-arm64": "0.27.2",
+ "@esbuild/sunos-x64": "0.27.2",
+ "@esbuild/win32-arm64": "0.27.2",
+ "@esbuild/win32-ia32": "0.27.2",
+ "@esbuild/win32-x64": "0.27.2"
+ }
+ },
"node_modules/escalade": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
@@ -8250,93 +8969,109 @@
}
},
"node_modules/eslint": {
- "version": "8.57.1",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz",
- "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==",
- "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.",
+ "version": "9.39.2",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.2.tgz",
+ "integrity": "sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==",
"dev": true,
"license": "MIT",
"peer": true,
"dependencies": {
- "@eslint-community/eslint-utils": "^4.2.0",
- "@eslint-community/regexpp": "^4.6.1",
- "@eslint/eslintrc": "^2.1.4",
- "@eslint/js": "8.57.1",
- "@humanwhocodes/config-array": "^0.13.0",
+ "@eslint-community/eslint-utils": "^4.8.0",
+ "@eslint-community/regexpp": "^4.12.1",
+ "@eslint/config-array": "^0.21.1",
+ "@eslint/config-helpers": "^0.4.2",
+ "@eslint/core": "^0.17.0",
+ "@eslint/eslintrc": "^3.3.1",
+ "@eslint/js": "9.39.2",
+ "@eslint/plugin-kit": "^0.4.1",
+ "@humanfs/node": "^0.16.6",
"@humanwhocodes/module-importer": "^1.0.1",
- "@nodelib/fs.walk": "^1.2.8",
- "@ungap/structured-clone": "^1.2.0",
+ "@humanwhocodes/retry": "^0.4.2",
+ "@types/estree": "^1.0.6",
"ajv": "^6.12.4",
"chalk": "^4.0.0",
- "cross-spawn": "^7.0.2",
+ "cross-spawn": "^7.0.6",
"debug": "^4.3.2",
- "doctrine": "^3.0.0",
"escape-string-regexp": "^4.0.0",
- "eslint-scope": "^7.2.2",
- "eslint-visitor-keys": "^3.4.3",
- "espree": "^9.6.1",
- "esquery": "^1.4.2",
+ "eslint-scope": "^8.4.0",
+ "eslint-visitor-keys": "^4.2.1",
+ "espree": "^10.4.0",
+ "esquery": "^1.5.0",
"esutils": "^2.0.2",
"fast-deep-equal": "^3.1.3",
- "file-entry-cache": "^6.0.1",
+ "file-entry-cache": "^8.0.0",
"find-up": "^5.0.0",
"glob-parent": "^6.0.2",
- "globals": "^13.19.0",
- "graphemer": "^1.4.0",
"ignore": "^5.2.0",
"imurmurhash": "^0.1.4",
"is-glob": "^4.0.0",
- "is-path-inside": "^3.0.3",
- "js-yaml": "^4.1.0",
"json-stable-stringify-without-jsonify": "^1.0.1",
- "levn": "^0.4.1",
"lodash.merge": "^4.6.2",
"minimatch": "^3.1.2",
"natural-compare": "^1.4.0",
- "optionator": "^0.9.3",
- "strip-ansi": "^6.0.1",
- "text-table": "^0.2.0"
+ "optionator": "^0.9.3"
},
"bin": {
"eslint": "bin/eslint.js"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
- "url": "https://opencollective.com/eslint"
+ "url": "https://eslint.org/donate"
+ },
+ "peerDependencies": {
+ "jiti": "*"
+ },
+ "peerDependenciesMeta": {
+ "jiti": {
+ "optional": true
+ }
}
},
"node_modules/eslint-config-prettier": {
- "version": "8.10.2",
- "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.10.2.tgz",
- "integrity": "sha512-/IGJ6+Dka158JnP5n5YFMOszjDWrXggGz1LaK/guZq9vZTmniaKlHcsscvkAhn9y4U+BU3JuUdYvtAMcv30y4A==",
+ "version": "10.1.8",
+ "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.1.8.tgz",
+ "integrity": "sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==",
"dev": true,
"license": "MIT",
+ "peer": true,
"bin": {
"eslint-config-prettier": "bin/cli.js"
},
+ "funding": {
+ "url": "https://opencollective.com/eslint-config-prettier"
+ },
"peerDependencies": {
"eslint": ">=7.0.0"
}
},
"node_modules/eslint-plugin-prettier": {
- "version": "4.2.5",
- "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.5.tgz",
- "integrity": "sha512-9Ni+xgemM2IWLq6aXEpP2+V/V30GeA/46Ar629vcMqVPodFFWC9skHu/D1phvuqtS8bJCFnNf01/qcmqYEwNfg==",
+ "version": "5.5.4",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.5.4.tgz",
+ "integrity": "sha512-swNtI95SToIz05YINMA6Ox5R057IMAmWZ26GqPxusAp1TZzj+IdY9tXNWWD3vkF/wEqydCONcwjTFpxybBqZsg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "prettier-linter-helpers": "^1.0.0"
+ "prettier-linter-helpers": "^1.0.0",
+ "synckit": "^0.11.7"
},
"engines": {
- "node": ">=12.0.0"
+ "node": "^14.18.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint-plugin-prettier"
},
"peerDependencies": {
- "eslint": ">=7.28.0",
- "prettier": ">=2.0.0"
+ "@types/eslint": ">=8.0.0",
+ "eslint": ">=8.0.0",
+ "eslint-config-prettier": ">= 7.0.0 <10.0.0 || >=10.1.0",
+ "prettier": ">=3.0.0"
},
"peerDependenciesMeta": {
+ "@types/eslint": {
+ "optional": true
+ },
"eslint-config-prettier": {
"optional": true
}
@@ -8376,16 +9111,23 @@
}
},
"node_modules/eslint-plugin-react-hooks": {
- "version": "4.6.2",
- "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz",
- "integrity": "sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==",
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-7.0.1.tgz",
+ "integrity": "sha512-O0d0m04evaNzEPoSW+59Mezf8Qt0InfgGIBJnpC0h3NH/WjUAR7BIKUfysC6todmtiZ/A0oUVS8Gce0WhBrHsA==",
"dev": true,
"license": "MIT",
+ "dependencies": {
+ "@babel/core": "^7.24.4",
+ "@babel/parser": "^7.24.4",
+ "hermes-parser": "^0.25.1",
+ "zod": "^3.25.0 || ^4.0.0",
+ "zod-validation-error": "^3.5.0 || ^4.0.0"
+ },
"engines": {
- "node": ">=10"
+ "node": ">=18"
},
"peerDependencies": {
- "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0"
+ "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0"
}
},
"node_modules/eslint-plugin-react/node_modules/doctrine": {
@@ -8473,9 +9215,9 @@
}
},
"node_modules/eslint/node_modules/eslint-scope": {
- "version": "7.2.2",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz",
- "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==",
+ "version": "8.4.0",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz",
+ "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==",
"dev": true,
"license": "BSD-2-Clause",
"dependencies": {
@@ -8483,12 +9225,35 @@
"estraverse": "^5.2.0"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/eslint/node_modules/eslint-visitor-keys": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz",
+ "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
"url": "https://opencollective.com/eslint"
}
},
+ "node_modules/eslint/node_modules/ignore": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz",
+ "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 4"
+ }
+ },
"node_modules/esniff": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/esniff/-/esniff-2.0.1.tgz",
@@ -8505,18 +9270,31 @@
}
},
"node_modules/espree": {
- "version": "9.6.1",
- "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz",
- "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==",
+ "version": "10.4.0",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz",
+ "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==",
"dev": true,
"license": "BSD-2-Clause",
"dependencies": {
- "acorn": "^8.9.0",
+ "acorn": "^8.15.0",
"acorn-jsx": "^5.3.2",
- "eslint-visitor-keys": "^3.4.1"
+ "eslint-visitor-keys": "^4.2.1"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/espree/node_modules/eslint-visitor-keys": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz",
+ "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
"url": "https://opencollective.com/eslint"
@@ -8794,22 +9572,6 @@
"dev": true,
"license": "MIT"
},
- "node_modules/express/node_modules/qs": {
- "version": "6.14.2",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.2.tgz",
- "integrity": "sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q==",
- "dev": true,
- "license": "BSD-3-Clause",
- "dependencies": {
- "side-channel": "^1.1.0"
- },
- "engines": {
- "node": ">=0.6"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/exsolve": {
"version": "1.0.8",
"resolved": "https://registry.npmjs.org/exsolve/-/exsolve-1.0.8.tgz",
@@ -8867,36 +9629,6 @@
"node": ">=6.0.0"
}
},
- "node_modules/fast-glob": {
- "version": "3.3.3",
- "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz",
- "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@nodelib/fs.stat": "^2.0.2",
- "@nodelib/fs.walk": "^1.2.3",
- "glob-parent": "^5.1.2",
- "merge2": "^1.3.0",
- "micromatch": "^4.0.8"
- },
- "engines": {
- "node": ">=8.6.0"
- }
- },
- "node_modules/fast-glob/node_modules/glob-parent": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
- "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "is-glob": "^4.0.1"
- },
- "engines": {
- "node": ">= 6"
- }
- },
"node_modules/fast-json-stable-stringify": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
@@ -8945,16 +9677,6 @@
"node": ">= 4.9.1"
}
},
- "node_modules/fastq": {
- "version": "1.20.1",
- "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz",
- "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "reusify": "^1.0.4"
- }
- },
"node_modules/fault": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/fault/-/fault-2.0.1.tgz",
@@ -8982,16 +9704,16 @@
}
},
"node_modules/file-entry-cache": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
- "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz",
+ "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "flat-cache": "^3.0.4"
+ "flat-cache": "^4.0.0"
},
"engines": {
- "node": "^10.12.0 || >=12.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/file-selector": {
@@ -9089,35 +9811,17 @@
}
},
"node_modules/flat-cache": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz",
- "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==",
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz",
+ "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==",
"dev": true,
"license": "MIT",
"dependencies": {
"flatted": "^3.2.9",
- "keyv": "^4.5.3",
- "rimraf": "^3.0.2"
+ "keyv": "^4.5.4"
},
"engines": {
- "node": "^10.12.0 || >=12.0.0"
- }
- },
- "node_modules/flat-cache/node_modules/rimraf": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
- "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
- "deprecated": "Rimraf versions prior to v4 are no longer supported",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "glob": "^7.1.3"
- },
- "bin": {
- "rimraf": "bin.js"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
+ "node": ">=16"
}
},
"node_modules/flatted": {
@@ -9140,9 +9844,9 @@
}
},
"node_modules/follow-redirects": {
- "version": "1.15.11",
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz",
- "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==",
+ "version": "1.16.0",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.16.0.tgz",
+ "integrity": "sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==",
"dev": true,
"funding": [
{
@@ -9292,13 +9996,6 @@
"node": ">= 0.6"
}
},
- "node_modules/fs.realpath": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
- "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
- "dev": true,
- "license": "ISC"
- },
"node_modules/fsevents": {
"version": "2.3.3",
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
@@ -9364,6 +10061,15 @@
"node": ">= 0.4"
}
},
+ "node_modules/gensync": {
+ "version": "1.0.0-beta.2",
+ "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
+ "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
"node_modules/get-caller-file": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
@@ -9378,6 +10084,7 @@
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
"integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==",
+ "dev": true,
"license": "MIT",
"dependencies": {
"call-bind-apply-helpers": "^1.0.2",
@@ -9411,6 +10118,7 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz",
"integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
+ "dev": true,
"license": "MIT",
"dependencies": {
"dunder-proto": "^1.0.1",
@@ -9472,28 +10180,6 @@
"integrity": "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==",
"license": "ISC"
},
- "node_modules/glob": {
- "version": "7.2.3",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
- "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
- "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.1.1",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- },
- "engines": {
- "node": "*"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
"node_modules/glob-parent": {
"version": "6.0.2",
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
@@ -9532,16 +10218,16 @@
"license": "BSD-2-Clause"
},
"node_modules/globals": {
- "version": "13.24.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz",
- "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==",
+ "version": "14.0.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz",
+ "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"type-fest": "^0.20.2"
},
"engines": {
- "node": ">=8"
+ "node": ">=18"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
@@ -9564,31 +10250,11 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/globby": {
- "version": "11.1.0",
- "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
- "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "array-union": "^2.1.0",
- "dir-glob": "^3.0.1",
- "fast-glob": "^3.2.9",
- "ignore": "^5.2.0",
- "merge2": "^1.4.1",
- "slash": "^3.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/gopd": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
"integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
+ "dev": true,
"license": "MIT",
"engines": {
"node": ">= 0.4"
@@ -9604,13 +10270,6 @@
"dev": true,
"license": "ISC"
},
- "node_modules/graphemer": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz",
- "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==",
- "dev": true,
- "license": "MIT"
- },
"node_modules/gray-matter": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz",
@@ -9636,9 +10295,9 @@
}
},
"node_modules/gray-matter/node_modules/js-yaml": {
- "version": "3.14.2",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz",
- "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==",
+ "version": "3.14.1",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
+ "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
"license": "MIT",
"dependencies": {
"argparse": "^1.0.7",
@@ -9711,6 +10370,7 @@
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
"integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
+ "dev": true,
"license": "MIT",
"engines": {
"node": ">= 0.4"
@@ -10266,14 +10926,21 @@
"url": "https://github.com/sponsors/wooorm"
}
},
- "node_modules/he": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
- "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
+ "node_modules/hermes-estree": {
+ "version": "0.25.1",
+ "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.25.1.tgz",
+ "integrity": "sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/hermes-parser": {
+ "version": "0.25.1",
+ "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.25.1.tgz",
+ "integrity": "sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==",
"dev": true,
"license": "MIT",
- "bin": {
- "he": "bin/he"
+ "dependencies": {
+ "hermes-estree": "0.25.1"
}
},
"node_modules/hoist-non-react-statics": {
@@ -10330,133 +10997,38 @@
"node_modules/hpack.js/node_modules/safe-buffer": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/hpack.js/node_modules/string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "safe-buffer": "~5.1.0"
- }
- },
- "node_modules/html-minifier-terser": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz",
- "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "camel-case": "^4.1.2",
- "clean-css": "^5.2.2",
- "commander": "^8.3.0",
- "he": "^1.2.0",
- "param-case": "^3.0.4",
- "relateurl": "^0.2.7",
- "terser": "^5.10.0"
- },
- "bin": {
- "html-minifier-terser": "cli.js"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/html-minifier-terser/node_modules/commander": {
- "version": "8.3.0",
- "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz",
- "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 12"
- }
- },
- "node_modules/html-url-attributes": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/html-url-attributes/-/html-url-attributes-3.0.1.tgz",
- "integrity": "sha512-ol6UPyBWqsrO6EJySPz2O7ZSr856WDrEzM5zMqp+FJJLGMW35cLYmmZnl0vztAZxRUoNZJFTCohfjuIJ8I4QBQ==",
- "license": "MIT",
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/html-void-elements": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-2.0.1.tgz",
- "integrity": "sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A==",
- "license": "MIT",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/html-webpack-plugin": {
- "version": "5.6.6",
- "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.6.6.tgz",
- "integrity": "sha512-bLjW01UTrvoWTJQL5LsMRo1SypHW80FTm12OJRSnr3v6YHNhfe+1r0MYUZJMACxnCHURVnBWRwAsWs2yPU9Ezw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@types/html-minifier-terser": "^6.0.0",
- "html-minifier-terser": "^6.0.2",
- "lodash": "^4.17.21",
- "pretty-error": "^4.0.0",
- "tapable": "^2.0.0"
- },
- "engines": {
- "node": ">=10.13.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/html-webpack-plugin"
- },
- "peerDependencies": {
- "@rspack/core": "0.x || 1.x",
- "webpack": "^5.20.0"
- },
- "peerDependenciesMeta": {
- "@rspack/core": {
- "optional": true
- },
- "webpack": {
- "optional": true
- }
- }
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+ "dev": true,
+ "license": "MIT"
},
- "node_modules/htmlparser2": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz",
- "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==",
+ "node_modules/hpack.js/node_modules/string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
"dev": true,
- "funding": [
- "https://github.com/fb55/htmlparser2?sponsor=1",
- {
- "type": "github",
- "url": "https://github.com/sponsors/fb55"
- }
- ],
"license": "MIT",
"dependencies": {
- "domelementtype": "^2.0.1",
- "domhandler": "^4.0.0",
- "domutils": "^2.5.2",
- "entities": "^2.0.0"
+ "safe-buffer": "~5.1.0"
}
},
- "node_modules/htmlparser2/node_modules/entities": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz",
- "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==",
- "dev": true,
- "license": "BSD-2-Clause",
+ "node_modules/html-url-attributes": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/html-url-attributes/-/html-url-attributes-3.0.1.tgz",
+ "integrity": "sha512-ol6UPyBWqsrO6EJySPz2O7ZSr856WDrEzM5zMqp+FJJLGMW35cLYmmZnl0vztAZxRUoNZJFTCohfjuIJ8I4QBQ==",
+ "license": "MIT",
"funding": {
- "url": "https://github.com/fb55/entities?sponsor=1"
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/html-void-elements": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-2.0.1.tgz",
+ "integrity": "sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
}
},
"node_modules/http-deceiver": {
@@ -10593,19 +11165,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/icss-utils": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz",
- "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==",
- "dev": true,
- "license": "ISC",
- "engines": {
- "node": "^10 || ^12 || >= 14"
- },
- "peerDependencies": {
- "postcss": "^8.1.0"
- }
- },
"node_modules/ieee754": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
@@ -10627,9 +11186,9 @@
"license": "BSD-3-Clause"
},
"node_modules/ignore": {
- "version": "5.3.2",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz",
- "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==",
+ "version": "7.0.5",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz",
+ "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==",
"dev": true,
"license": "MIT",
"engines": {
@@ -10682,18 +11241,6 @@
"node": ">=0.8.19"
}
},
- "node_modules/inflight": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
- "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
- "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
"node_modules/inherits": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
@@ -11118,9 +11665,9 @@
}
},
"node_modules/is-network-error": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/is-network-error/-/is-network-error-1.3.0.tgz",
- "integrity": "sha512-6oIwpsgRfnDiyEDLMay/GqCl3HoAtH5+RUKW29gYkL0QA+ipzpDLA16yQs7/RHCSu+BwgbJaOUqa4A99qNVQVw==",
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/is-network-error/-/is-network-error-1.3.1.tgz",
+ "integrity": "sha512-6QCxa49rQbmUWLfk0nuGqzql9U8uaV2H6279bRErPBHe/109hCzsLUBUHfbEtvLIHBd6hyXbgedBSHevm43Edw==",
"dev": true,
"license": "MIT",
"engines": {
@@ -11157,52 +11704,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/is-path-cwd": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz",
- "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/is-path-in-cwd": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz",
- "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "is-path-inside": "^2.1.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/is-path-in-cwd/node_modules/is-path-inside": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz",
- "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "path-is-inside": "^1.0.2"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/is-path-inside": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
- "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/is-plain-obj": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz",
@@ -11215,19 +11716,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/is-plain-object": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
- "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "isobject": "^3.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/is-regex": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz",
@@ -11487,6 +11975,7 @@
"integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==",
"dev": true,
"license": "MIT",
+ "peer": true,
"bin": {
"jiti": "lib/jiti-cli.mjs"
}
@@ -11507,9 +11996,9 @@
"license": "MIT"
},
"node_modules/js-yaml": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz",
- "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==",
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
+ "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
"license": "MIT",
"dependencies": {
"argparse": "^2.0.1"
@@ -11621,9 +12110,9 @@
"license": "MIT"
},
"node_modules/launch-editor": {
- "version": "2.13.0",
- "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.13.0.tgz",
- "integrity": "sha512-u+9asUHMJ99lA15VRMXw5XKfySFR9dGXwgsgS14YTbUq3GITP58mIM32At90P5fZ+MUId5Yw+IwI/yKub7jnCQ==",
+ "version": "2.13.2",
+ "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.13.2.tgz",
+ "integrity": "sha512-4VVDnbOpLXy/s8rdRCSXb+zfMeFR0WlJWpET1iA9CQdlZDfwyLjUuGQzXU4VeOoey6AicSAluWan7Etga6Kcmg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -11646,15 +12135,15 @@
}
},
"node_modules/lexical": {
- "version": "0.35.0",
- "resolved": "https://registry.npmjs.org/lexical/-/lexical-0.35.0.tgz",
- "integrity": "sha512-3VuV8xXhh5xJA6tzvfDvE0YBCMkIZUmxtRilJQDDdCgJCc+eut6qAv2qbN+pbqvarqcQqPN1UF+8YvsjmyOZpw==",
+ "version": "0.33.1",
+ "resolved": "https://registry.npmjs.org/lexical/-/lexical-0.33.1.tgz",
+ "integrity": "sha512-+kiCS/GshQmCs/meMb8MQT4AMvw3S3Ef0lSCv2Xi6Itvs59OD+NjQWNfYkDteIbKtVE/w0Yiqh56VyGwIb8UcA==",
"license": "MIT"
},
"node_modules/lib0": {
- "version": "0.2.117",
- "resolved": "https://registry.npmjs.org/lib0/-/lib0-0.2.117.tgz",
- "integrity": "sha512-DeXj9X5xDCjgKLU/7RR+/HQEVzuuEUiwldwOGsHK/sfAfELGWEyTcf0x+uOvCvK3O2zPmZePXWL85vtia6GyZw==",
+ "version": "0.2.114",
+ "resolved": "https://registry.npmjs.org/lib0/-/lib0-0.2.114.tgz",
+ "integrity": "sha512-gcxmNFzA4hv8UYi8j43uPlQ7CGcyMJ2KQb5kZASw6SnAKAf10hK12i2fjrS3Cl/ugZa5Ui6WwIu1/6MIXiHttQ==",
"license": "MIT",
"dependencies": {
"isomorphic.js": "^0.2.4"
@@ -11679,9 +12168,9 @@
"license": "MIT"
},
"node_modules/liquidjs": {
- "version": "10.25.2",
- "resolved": "https://registry.npmjs.org/liquidjs/-/liquidjs-10.25.2.tgz",
- "integrity": "sha512-ZbgcjEjGNlAIjqhuMzymO3lCpHgmVMftKfrq4/YLLxmKaFFeQMXRGrJTqKX7OXX1hKVPUDpTIrvL7lxt3X/hmw==",
+ "version": "10.25.5",
+ "resolved": "https://registry.npmjs.org/liquidjs/-/liquidjs-10.25.5.tgz",
+ "integrity": "sha512-GKiKeZjJDdVoQAu+S9rzkYsYnYhcep5W3WwZXgb5f+yq484P/k9JqamBbGYu+LBEixcUAXZr2jogdAIjB3ki1w==",
"license": "MIT",
"dependencies": {
"commander": "^10.0.0"
@@ -11752,15 +12241,15 @@
}
},
"node_modules/lodash": {
- "version": "4.17.23",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz",
- "integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==",
+ "version": "4.17.21",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
+ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
"license": "MIT"
},
"node_modules/lodash-es": {
- "version": "4.17.23",
- "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.23.tgz",
- "integrity": "sha512-kVI48u3PZr38HdYz98UmfPnXl2DXrpdctLrFLCd3kOx1xUkOmpFPx7gCWWM5MPkL/fD8zb+Ph0QzjGFs4+hHWg==",
+ "version": "4.17.22",
+ "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.22.tgz",
+ "integrity": "sha512-XEawp1t0gxSi9x01glktRZ5HDy0HXqrM0x5pXQM98EaI0NxO6jVM7omDOxsuEo5UIASAnm2bRp1Jt/e0a2XU8Q==",
"license": "MIT"
},
"node_modules/lodash.merge": {
@@ -11798,14 +12287,13 @@
"loose-envify": "cli.js"
}
},
- "node_modules/lower-case": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz",
- "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==",
+ "node_modules/lru-cache": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
+ "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
"dev": true,
- "license": "MIT",
"dependencies": {
- "tslib": "^2.0.3"
+ "yallist": "^3.0.2"
}
},
"node_modules/lucide-react": {
@@ -11871,6 +12359,7 @@
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
"integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
+ "dev": true,
"license": "MIT",
"engines": {
"node": ">= 0.4"
@@ -13131,9 +13620,9 @@
}
},
"node_modules/mdast-util-to-hast": {
- "version": "13.2.1",
- "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.1.tgz",
- "integrity": "sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA==",
+ "version": "13.2.0",
+ "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.0.tgz",
+ "integrity": "sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==",
"license": "MIT",
"dependencies": {
"@types/hast": "^3.0.0",
@@ -13226,20 +13715,20 @@
}
},
"node_modules/memfs": {
- "version": "4.56.10",
- "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.56.10.tgz",
- "integrity": "sha512-eLvzyrwqLHnLYalJP7YZ3wBe79MXktMdfQbvMrVD80K+NhrIukCVBvgP30zTJYEEDh9hZ/ep9z0KOdD7FSHo7w==",
+ "version": "4.57.2",
+ "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.57.2.tgz",
+ "integrity": "sha512-2nWzSsJzrukurSDna4Z0WywuScK4Id3tSKejgu74u8KCdW4uNrseKRSIDg75C6Yw5ZRqBe0F0EtMNlTbUq8bAQ==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
- "@jsonjoy.com/fs-core": "4.56.10",
- "@jsonjoy.com/fs-fsa": "4.56.10",
- "@jsonjoy.com/fs-node": "4.56.10",
- "@jsonjoy.com/fs-node-builtins": "4.56.10",
- "@jsonjoy.com/fs-node-to-fsa": "4.56.10",
- "@jsonjoy.com/fs-node-utils": "4.56.10",
- "@jsonjoy.com/fs-print": "4.56.10",
- "@jsonjoy.com/fs-snapshot": "4.56.10",
+ "@jsonjoy.com/fs-core": "4.57.2",
+ "@jsonjoy.com/fs-fsa": "4.57.2",
+ "@jsonjoy.com/fs-node": "4.57.2",
+ "@jsonjoy.com/fs-node-builtins": "4.57.2",
+ "@jsonjoy.com/fs-node-to-fsa": "4.57.2",
+ "@jsonjoy.com/fs-node-utils": "4.57.2",
+ "@jsonjoy.com/fs-print": "4.57.2",
+ "@jsonjoy.com/fs-snapshot": "4.57.2",
"@jsonjoy.com/json-pack": "^1.11.0",
"@jsonjoy.com/util": "^1.9.0",
"glob-to-regex.js": "^1.0.1",
@@ -13278,16 +13767,6 @@
"dev": true,
"license": "MIT"
},
- "node_modules/merge2": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
- "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 8"
- }
- },
"node_modules/methods": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
@@ -14889,13 +15368,6 @@
"dev": true,
"license": "MIT"
},
- "node_modules/natural-compare-lite": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz",
- "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==",
- "dev": true,
- "license": "MIT"
- },
"node_modules/negotiator": {
"version": "0.6.4",
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz",
@@ -14919,17 +15391,6 @@
"integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==",
"license": "ISC"
},
- "node_modules/no-case": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz",
- "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "lower-case": "^2.0.2",
- "tslib": "^2.0.3"
- }
- },
"node_modules/node-exports-info": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/node-exports-info/-/node-exports-info-1.6.0.tgz",
@@ -15175,6 +15636,7 @@
"version": "1.13.4",
"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz",
"integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==",
+ "dev": true,
"license": "MIT",
"engines": {
"node": ">= 0.4"
@@ -15305,16 +15767,6 @@
"node": ">= 0.8"
}
},
- "node_modules/once": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
- "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "wrappy": "1"
- }
- },
"node_modules/open": {
"version": "10.2.0",
"resolved": "https://registry.npmjs.org/open/-/open-10.2.0.tgz",
@@ -15415,16 +15867,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/p-map": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz",
- "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/p-retry": {
"version": "6.2.1",
"resolved": "https://registry.npmjs.org/p-retry/-/p-retry-6.2.1.tgz",
@@ -15453,17 +15895,6 @@
"node": ">=6"
}
},
- "node_modules/param-case": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz",
- "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "dot-case": "^3.0.4",
- "tslib": "^2.0.3"
- }
- },
"node_modules/parent-module": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
@@ -15553,17 +15984,6 @@
"node": ">= 0.8"
}
},
- "node_modules/pascal-case": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz",
- "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "no-case": "^3.0.4",
- "tslib": "^2.0.3"
- }
- },
"node_modules/path-exists": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
@@ -15574,23 +15994,6 @@
"node": ">=8"
}
},
- "node_modules/path-is-absolute": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
- "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/path-is-inside": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz",
- "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==",
- "dev": true,
- "license": "(WTFPL OR MIT)"
- },
"node_modules/path-key": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
@@ -15656,39 +16059,6 @@
"url": "https://github.com/sponsors/jonschlinkert"
}
},
- "node_modules/pify": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
- "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/pinkie": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
- "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/pinkie-promise": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
- "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "pinkie": "^2.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/pkg-dir": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
@@ -15771,9 +16141,9 @@
}
},
"node_modules/pkijs": {
- "version": "3.3.3",
- "resolved": "https://registry.npmjs.org/pkijs/-/pkijs-3.3.3.tgz",
- "integrity": "sha512-+KD8hJtqQMYoTuL1bbGOqxb4z+nZkTAwVdNtWwe8Tc2xNbEmdJYIYoc6Qt0uF55e6YW6KuTHw1DjQ18gMhzepw==",
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/pkijs/-/pkijs-3.4.0.tgz",
+ "integrity": "sha512-emEcLuomt2j03vxD54giVB4SxTjnsqkU692xZOZXHDVoYyypEm+b3jpiTcc+Cf+myooc+/Ly0z01jqeNHVgJGw==",
"dev": true,
"license": "BSD-3-Clause",
"dependencies": {
@@ -15816,8 +16186,6 @@
"url": "https://github.com/sponsors/ai"
}
],
- "license": "MIT",
- "peer": true,
"dependencies": {
"nanoid": "^3.3.11",
"picocolors": "^1.1.1",
@@ -15827,90 +16195,6 @@
"node": "^10 || ^12 || >=14"
}
},
- "node_modules/postcss-modules-extract-imports": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz",
- "integrity": "sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==",
- "dev": true,
- "license": "ISC",
- "engines": {
- "node": "^10 || ^12 || >= 14"
- },
- "peerDependencies": {
- "postcss": "^8.1.0"
- }
- },
- "node_modules/postcss-modules-local-by-default": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.2.0.tgz",
- "integrity": "sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "icss-utils": "^5.0.0",
- "postcss-selector-parser": "^7.0.0",
- "postcss-value-parser": "^4.1.0"
- },
- "engines": {
- "node": "^10 || ^12 || >= 14"
- },
- "peerDependencies": {
- "postcss": "^8.1.0"
- }
- },
- "node_modules/postcss-modules-scope": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.1.tgz",
- "integrity": "sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "postcss-selector-parser": "^7.0.0"
- },
- "engines": {
- "node": "^10 || ^12 || >= 14"
- },
- "peerDependencies": {
- "postcss": "^8.1.0"
- }
- },
- "node_modules/postcss-modules-values": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz",
- "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "icss-utils": "^5.0.0"
- },
- "engines": {
- "node": "^10 || ^12 || >= 14"
- },
- "peerDependencies": {
- "postcss": "^8.1.0"
- }
- },
- "node_modules/postcss-selector-parser": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz",
- "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "cssesc": "^3.0.0",
- "util-deprecate": "^1.0.2"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/postcss-value-parser": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
- "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
- "dev": true,
- "license": "MIT"
- },
"node_modules/prelude-ls": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
@@ -15922,17 +16206,17 @@
}
},
"node_modules/prettier": {
- "version": "2.8.8",
- "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz",
- "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==",
+ "version": "3.7.4",
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.7.4.tgz",
+ "integrity": "sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA==",
"dev": true,
"license": "MIT",
"peer": true,
"bin": {
- "prettier": "bin-prettier.js"
+ "prettier": "bin/prettier.cjs"
},
"engines": {
- "node": ">=10.13.0"
+ "node": ">=14"
},
"funding": {
"url": "https://github.com/prettier/prettier?sponsor=1"
@@ -15948,18 +16232,7 @@
"fast-diff": "^1.1.2"
},
"engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/pretty-error": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz",
- "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "lodash": "^4.17.20",
- "renderkid": "^3.0.0"
+ "node": ">=6.0.0"
}
},
"node_modules/prismjs": {
@@ -16060,9 +16333,10 @@
}
},
"node_modules/qs": {
- "version": "6.15.0",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.0.tgz",
- "integrity": "sha512-mAZTtNCeetKMH+pSjrb76NAM8V9a05I9aBZOHztWy/UqcJdQYNsf59vrRKWnojAT9Y+GbIvoTBC++CPHqpDBhQ==",
+ "version": "6.14.2",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.2.tgz",
+ "integrity": "sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q==",
+ "dev": true,
"license": "BSD-3-Clause",
"dependencies": {
"side-channel": "^1.1.0"
@@ -16074,37 +16348,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/queue-microtask": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
- "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "license": "MIT"
- },
- "node_modules/randombytes": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
- "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "safe-buffer": "^5.1.0"
- }
- },
"node_modules/range-parser": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
@@ -16218,6 +16461,15 @@
"react-dom": "^15.3.0 || ^16.0.0 || ^17.0.0 || ^18.0.0"
}
},
+ "node_modules/react-diff-viewer-continued/node_modules/diff": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz",
+ "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==",
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.3.1"
+ }
+ },
"node_modules/react-dom": {
"version": "18.3.0",
"resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.0.tgz",
@@ -16268,9 +16520,9 @@
"license": "MIT"
},
"node_modules/react-focus-lock": {
- "version": "2.13.7",
- "resolved": "https://registry.npmjs.org/react-focus-lock/-/react-focus-lock-2.13.7.tgz",
- "integrity": "sha512-20lpZHEQrXPb+pp1tzd4ULL6DyO5D2KnR0G69tTDdydrmNhU7pdFmbQUYVyHUgp+xN29IuFR0PVuhOmvaZL9Og==",
+ "version": "2.13.6",
+ "resolved": "https://registry.npmjs.org/react-focus-lock/-/react-focus-lock-2.13.6.tgz",
+ "integrity": "sha512-ehylFFWyYtBKXjAO9+3v8d0i+cnc1trGS0vlTGhzFW1vbFXVUTmR8s2tt/ZQG8x5hElg6rhENlLG1H3EZK0Llg==",
"license": "MIT",
"dependencies": {
"@babel/runtime": "^7.0.0",
@@ -16291,10 +16543,9 @@
}
},
"node_modules/react-hook-form": {
- "version": "7.71.1",
- "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.71.1.tgz",
- "integrity": "sha512-9SUJKCGKo8HUSsCO+y0CtqkqI5nNuaDqTxyqPsZPqIwudpj4rCrAz/jZV+jn57bx5gtZKOh3neQu94DXMc+w5w==",
- "license": "MIT",
+ "version": "7.56.4",
+ "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.56.4.tgz",
+ "integrity": "sha512-Rob7Ftz2vyZ/ZGsQZPaRdIefkgOSrQSPXfqBdvOPwJfoGnjwRJUs7EM7Kc1mcoDv3NOtqBzPGbcMB8CGn9CKgw==",
"peer": true,
"engines": {
"node": ">=18.0.0"
@@ -16328,12 +16579,6 @@
"react": ">=16.0.0"
}
},
- "node_modules/react-is": {
- "version": "17.0.2",
- "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
- "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==",
- "license": "MIT"
- },
"node_modules/react-markdown": {
"version": "8.0.7",
"resolved": "https://registry.npmjs.org/react-markdown/-/react-markdown-8.0.7.tgz",
@@ -17020,6 +17265,15 @@
"url": "https://opencollective.com/unified"
}
},
+ "node_modules/react-refresh": {
+ "version": "0.18.0",
+ "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.18.0.tgz",
+ "integrity": "sha512-QgT5//D3jfjJb6Gsjxv0Slpj23ip+HtOpnNgnb2S5zU3CB26G/IDPGoy4RJB42wzFE46DRsstbW6tKHoKbhAxw==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/react-remove-scroll": {
"version": "2.7.2",
"resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.7.2.tgz",
@@ -17068,12 +17322,12 @@
}
},
"node_modules/react-router": {
- "version": "6.30.3",
- "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.30.3.tgz",
- "integrity": "sha512-XRnlbKMTmktBkjCLE8/XcZFlnHvr2Ltdr1eJX4idL55/9BbORzyZEaIkBFDhFGCEWBBItsVrDxwx3gnisMitdw==",
+ "version": "6.30.1",
+ "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.30.1.tgz",
+ "integrity": "sha512-X1m21aEmxGXqENEPG3T6u0Th7g0aS4ZmoNynhbs+Cn+q+QGTLt+d5IQ2bHAXKzKcxGJjxACpVbnYQSCRcfxHlQ==",
"license": "MIT",
"dependencies": {
- "@remix-run/router": "1.23.2"
+ "@remix-run/router": "1.23.0"
},
"engines": {
"node": ">=14.0.0"
@@ -17083,13 +17337,13 @@
}
},
"node_modules/react-router-dom": {
- "version": "6.30.3",
- "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.30.3.tgz",
- "integrity": "sha512-pxPcv1AczD4vso7G4Z3TKcvlxK7g7TNt3/FNGMhfqyntocvYKj+GCatfigGDjbLozC4baguJ0ReCigoDJXb0ag==",
+ "version": "6.30.1",
+ "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.30.1.tgz",
+ "integrity": "sha512-llKsgOkZdbPU1Eg3zK8lCn+sjD9wMRZZPuzmdWWX5SUs8OFkN5HnFVC0u5KMeMaC9aoancFI/KoLuKPqN+hxHw==",
"license": "MIT",
"dependencies": {
- "@remix-run/router": "1.23.2",
- "react-router": "6.30.3"
+ "@remix-run/router": "1.23.0",
+ "react-router": "6.30.1"
},
"engines": {
"node": ">=14.0.0"
@@ -17172,12 +17426,6 @@
"node": ">= 12"
}
},
- "node_modules/react-spreadsheet-import/node_modules/lodash": {
- "version": "4.17.21",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
- "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
- "license": "MIT"
- },
"node_modules/react-spreadsheet-import/node_modules/react-dropzone": {
"version": "14.2.3",
"resolved": "https://registry.npmjs.org/react-dropzone/-/react-dropzone-14.2.3.tgz",
@@ -17402,6 +17650,45 @@
"url": "https://opencollective.com/unified"
}
},
+ "node_modules/recma-stringify/node_modules/@types/unist": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz",
+ "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==",
+ "license": "MIT"
+ },
+ "node_modules/recma-stringify/node_modules/unified": {
+ "version": "11.0.5",
+ "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.5.tgz",
+ "integrity": "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^3.0.0",
+ "bail": "^2.0.0",
+ "devlop": "^1.0.0",
+ "extend": "^3.0.0",
+ "is-plain-obj": "^4.0.0",
+ "trough": "^2.0.0",
+ "vfile": "^6.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/recma-stringify/node_modules/vfile": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz",
+ "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^3.0.0",
+ "vfile-message": "^4.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
"node_modules/reflect-metadata": {
"version": "0.2.2",
"resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.2.2.tgz",
@@ -17851,16 +18138,6 @@
"url": "https://opencollective.com/unified"
}
},
- "node_modules/relateurl": {
- "version": "0.2.7",
- "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz",
- "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 0.10"
- }
- },
"node_modules/remark-breaks": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/remark-breaks/-/remark-breaks-3.0.3.tgz",
@@ -18809,18 +19086,195 @@
"url": "https://opencollective.com/unified"
}
},
- "node_modules/renderkid": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz",
- "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==",
- "dev": true,
+ "node_modules/remark-stringify/node_modules/@types/unist": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz",
+ "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==",
+ "license": "MIT"
+ },
+ "node_modules/remark-stringify/node_modules/mdast-util-phrasing": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz",
+ "integrity": "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/mdast": "^4.0.0",
+ "unist-util-is": "^6.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/remark-stringify/node_modules/mdast-util-to-markdown": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.2.tgz",
+ "integrity": "sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/mdast": "^4.0.0",
+ "@types/unist": "^3.0.0",
+ "longest-streak": "^3.0.0",
+ "mdast-util-phrasing": "^4.0.0",
+ "mdast-util-to-string": "^4.0.0",
+ "micromark-util-classify-character": "^2.0.0",
+ "micromark-util-decode-string": "^2.0.0",
+ "unist-util-visit": "^5.0.0",
+ "zwitch": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/remark-stringify/node_modules/mdast-util-to-string": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz",
+ "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/mdast": "^4.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/remark-stringify/node_modules/micromark-util-classify-character": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.1.tgz",
+ "integrity": "sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/remark-stringify/node_modules/micromark-util-decode-numeric-character-reference": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.2.tgz",
+ "integrity": "sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "micromark-util-symbol": "^2.0.0"
+ }
+ },
+ "node_modules/remark-stringify/node_modules/micromark-util-decode-string": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.1.tgz",
+ "integrity": "sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "decode-named-character-reference": "^1.0.0",
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-decode-numeric-character-reference": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0"
+ }
+ },
+ "node_modules/remark-stringify/node_modules/unified": {
+ "version": "11.0.5",
+ "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.5.tgz",
+ "integrity": "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^3.0.0",
+ "bail": "^2.0.0",
+ "devlop": "^1.0.0",
+ "extend": "^3.0.0",
+ "is-plain-obj": "^4.0.0",
+ "trough": "^2.0.0",
+ "vfile": "^6.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/remark-stringify/node_modules/unist-util-is": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz",
+ "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^3.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/remark-stringify/node_modules/unist-util-visit": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz",
+ "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^3.0.0",
+ "unist-util-is": "^6.0.0",
+ "unist-util-visit-parents": "^6.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/remark-stringify/node_modules/unist-util-visit-parents": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz",
+ "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^3.0.0",
+ "unist-util-is": "^6.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/remark-stringify/node_modules/vfile": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz",
+ "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==",
"license": "MIT",
"dependencies": {
- "css-select": "^4.1.3",
- "dom-converter": "^0.2.0",
- "htmlparser2": "^6.1.0",
- "lodash": "^4.17.21",
- "strip-ansi": "^6.0.1"
+ "@types/unist": "^3.0.0",
+ "vfile-message": "^4.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
}
},
"node_modules/require-directory": {
@@ -18918,29 +19372,48 @@
"node": ">= 4"
}
},
- "node_modules/reusify": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz",
- "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "iojs": ">=1.0.0",
- "node": ">=0.10.0"
- }
- },
- "node_modules/rimraf": {
- "version": "2.7.1",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
- "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
- "deprecated": "Rimraf versions prior to v4 are no longer supported",
+ "node_modules/rollup": {
+ "version": "4.55.1",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.55.1.tgz",
+ "integrity": "sha512-wDv/Ht1BNHB4upNbK74s9usvl7hObDnvVzknxqY/E/O3X6rW1U1rV1aENEfJ54eFZDTNo7zv1f5N4edCluH7+A==",
"dev": true,
- "license": "ISC",
"dependencies": {
- "glob": "^7.1.3"
+ "@types/estree": "1.0.8"
},
"bin": {
- "rimraf": "bin.js"
+ "rollup": "dist/bin/rollup"
+ },
+ "engines": {
+ "node": ">=18.0.0",
+ "npm": ">=8.0.0"
+ },
+ "optionalDependencies": {
+ "@rollup/rollup-android-arm-eabi": "4.55.1",
+ "@rollup/rollup-android-arm64": "4.55.1",
+ "@rollup/rollup-darwin-arm64": "4.55.1",
+ "@rollup/rollup-darwin-x64": "4.55.1",
+ "@rollup/rollup-freebsd-arm64": "4.55.1",
+ "@rollup/rollup-freebsd-x64": "4.55.1",
+ "@rollup/rollup-linux-arm-gnueabihf": "4.55.1",
+ "@rollup/rollup-linux-arm-musleabihf": "4.55.1",
+ "@rollup/rollup-linux-arm64-gnu": "4.55.1",
+ "@rollup/rollup-linux-arm64-musl": "4.55.1",
+ "@rollup/rollup-linux-loong64-gnu": "4.55.1",
+ "@rollup/rollup-linux-loong64-musl": "4.55.1",
+ "@rollup/rollup-linux-ppc64-gnu": "4.55.1",
+ "@rollup/rollup-linux-ppc64-musl": "4.55.1",
+ "@rollup/rollup-linux-riscv64-gnu": "4.55.1",
+ "@rollup/rollup-linux-riscv64-musl": "4.55.1",
+ "@rollup/rollup-linux-s390x-gnu": "4.55.1",
+ "@rollup/rollup-linux-x64-gnu": "4.55.1",
+ "@rollup/rollup-linux-x64-musl": "4.55.1",
+ "@rollup/rollup-openbsd-x64": "4.55.1",
+ "@rollup/rollup-openharmony-arm64": "4.55.1",
+ "@rollup/rollup-win32-arm64-msvc": "4.55.1",
+ "@rollup/rollup-win32-ia32-msvc": "4.55.1",
+ "@rollup/rollup-win32-x64-gnu": "4.55.1",
+ "@rollup/rollup-win32-x64-msvc": "4.55.1",
+ "fsevents": "~2.3.2"
}
},
"node_modules/run-applescript": {
@@ -18956,30 +19429,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/run-parallel": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
- "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "queue-microtask": "^1.2.2"
- }
- },
"node_modules/sade": {
"version": "1.8.1",
"resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz",
@@ -19295,9 +19744,9 @@
}
},
"node_modules/semver": {
- "version": "7.7.4",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz",
- "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==",
+ "version": "7.7.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
+ "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
"dev": true,
"license": "ISC",
"bin": {
@@ -19349,16 +19798,6 @@
"dev": true,
"license": "MIT"
},
- "node_modules/serialize-javascript": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz",
- "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==",
- "dev": true,
- "license": "BSD-3-Clause",
- "dependencies": {
- "randombytes": "^2.1.0"
- }
- },
"node_modules/serve-index": {
"version": "1.9.2",
"resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.2.tgz",
@@ -19621,6 +20060,7 @@
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz",
"integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==",
+ "dev": true,
"license": "MIT",
"dependencies": {
"es-errors": "^1.3.0",
@@ -19640,6 +20080,7 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz",
"integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==",
+ "dev": true,
"license": "MIT",
"dependencies": {
"es-errors": "^1.3.0",
@@ -19656,6 +20097,7 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz",
"integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==",
+ "dev": true,
"license": "MIT",
"dependencies": {
"call-bound": "^1.0.2",
@@ -19674,6 +20116,7 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz",
"integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==",
+ "dev": true,
"license": "MIT",
"dependencies": {
"call-bound": "^1.0.2",
@@ -19689,16 +20132,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/slash": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
- "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/sockjs": {
"version": "0.3.24",
"resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz",
@@ -20067,23 +20500,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/style-loader": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-4.0.0.tgz",
- "integrity": "sha512-1V4WqhhZZgjVAVJyt7TdDPZoPBPNHbekX4fWnCJL1yQukhCeZhJySUL+gL9y6sNdN95uEOS83Y55SqHcP7MzLA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 18.12.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/webpack"
- },
- "peerDependencies": {
- "webpack": "^5.27.0"
- }
- },
"node_modules/style-mod": {
"version": "4.1.3",
"resolved": "https://registry.npmjs.org/style-mod/-/style-mod-4.1.3.tgz",
@@ -20279,10 +20695,26 @@
"node": ">= 6"
}
},
+ "node_modules/synckit": {
+ "version": "0.11.11",
+ "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.11.tgz",
+ "integrity": "sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@pkgr/core": "^0.2.9"
+ },
+ "engines": {
+ "node": "^14.18.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/synckit"
+ }
+ },
"node_modules/tabbable": {
- "version": "6.4.0",
- "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.4.0.tgz",
- "integrity": "sha512-05PUHKSNE8ou2dwIxTngl4EzcnsCDZGJ/iCLtDflR/SHB/ny14rXc+qU5P4mG9JkusiV7EivzY9Mhm55AzAvCg==",
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz",
+ "integrity": "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==",
"license": "MIT"
},
"node_modules/tagged-tag": {
@@ -20299,9 +20731,9 @@
}
},
"node_modules/tapable": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.0.tgz",
- "integrity": "sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==",
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.3.tgz",
+ "integrity": "sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==",
"dev": true,
"license": "MIT",
"engines": {
@@ -20318,6 +20750,7 @@
"integrity": "sha512-jTwoImyr/QbOWFFso3YoU3ik0jBBDJ6JTOQiy/J2YxVJdZCc+5u7skhNwiOR3FQIygFqVUPHl7qbbxtjW2K3Qg==",
"dev": true,
"license": "BSD-2-Clause",
+ "peer": true,
"dependencies": {
"@jridgewell/source-map": "^0.3.3",
"acorn": "^8.15.0",
@@ -20332,9 +20765,9 @@
}
},
"node_modules/terser-webpack-plugin": {
- "version": "5.4.0",
- "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.4.0.tgz",
- "integrity": "sha512-Bn5vxm48flOIfkdl5CaD2+1CiUVbonWQ3KQPyP7/EuIl9Gbzq/gQFOzaMFUEgVjB1396tcK0SG8XcNJ/2kDH8g==",
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.5.0.tgz",
+ "integrity": "sha512-UYhptBwhWvfIjKd/UuFo6D8uq9xpGLDK+z8EDsj/zWhrTaH34cKEbrkMKfV5YWqGBvAYA3tlzZbs2R+qYrbQJA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -20372,17 +20805,10 @@
"dev": true,
"license": "MIT"
},
- "node_modules/text-table": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
- "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
- "dev": true,
- "license": "MIT"
- },
"node_modules/thingies": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/thingies/-/thingies-2.5.0.tgz",
- "integrity": "sha512-s+2Bwztg6PhWUD7XMfeYm5qliDdSiZm7M7n8KjTkIsm3l/2lgVRc2/Gx/v+ZX8lT4FMA+i8aQvhcWylldc+ZNw==",
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/thingies/-/thingies-2.6.0.tgz",
+ "integrity": "sha512-rMHRjmlFLM1R96UYPvpmnc3LYtdFrT33JIB7L9hetGue1qAPfn1N2LJeEjxUSidu1Iku+haLZXDuEXUHNGO/lg==",
"dev": true,
"license": "MIT",
"engines": {
@@ -20439,7 +20865,6 @@
"resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz",
"integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==",
"dev": true,
- "license": "MIT",
"dependencies": {
"fdir": "^6.5.0",
"picomatch": "^4.0.3"
@@ -20456,7 +20881,6 @@
"resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz",
"integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">=12.0.0"
},
@@ -20470,11 +20894,10 @@
}
},
"node_modules/tinyglobby/node_modules/picomatch": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz",
- "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==",
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz",
+ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
"dev": true,
- "license": "MIT",
"peer": true,
"engines": {
"node": ">=12"
@@ -20556,10 +20979,23 @@
"url": "https://github.com/sponsors/wooorm"
}
},
+ "node_modules/ts-api-utils": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.4.0.tgz",
+ "integrity": "sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18.12"
+ },
+ "peerDependencies": {
+ "typescript": ">=4.8.4"
+ }
+ },
"node_modules/ts-loader": {
- "version": "9.5.4",
- "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.4.tgz",
- "integrity": "sha512-nCz0rEwunlTZiy6rXFByQU1kVVpCIgUpc/psFiKVrUwrizdnIbRFu8w7bxhUF0X613DYwT4XzrZHpVyMe758hQ==",
+ "version": "9.5.7",
+ "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.7.tgz",
+ "integrity": "sha512-/ZNrKgA3K3PtpMYOC71EeMWIloGw3IYEa5/t1cyz2r5/PyUwTXGzYJvcD3kfUvmhlfpz1rhV8B2O6IVTQ0avsg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -20631,16 +21067,6 @@
}
}
},
- "node_modules/ts-node/node_modules/diff": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.4.tgz",
- "integrity": "sha512-X07nttJQkwkfKfvTPG/KSnE2OMdcUCao6+eXF3wmnIQRn2aPAHH3VxDbDOdegkd6JbPsXqShpvEOHfAT+nCNwQ==",
- "dev": true,
- "license": "BSD-3-Clause",
- "engines": {
- "node": ">=0.3.1"
- }
- },
"node_modules/tsconfig-paths": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz",
@@ -20679,29 +21105,6 @@
"license": "0BSD",
"peer": true
},
- "node_modules/tsutils": {
- "version": "3.21.0",
- "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz",
- "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "tslib": "^1.8.1"
- },
- "engines": {
- "node": ">= 6"
- },
- "peerDependencies": {
- "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta"
- }
- },
- "node_modules/tsutils/node_modules/tslib": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
- "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
- "dev": true,
- "license": "0BSD"
- },
"node_modules/tsyringe": {
"version": "4.10.0",
"resolved": "https://registry.npmjs.org/tsyringe/-/tsyringe-4.10.0.tgz",
@@ -20846,28 +21249,11 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/typesafe-routes": {
- "version": "9.0.1",
- "resolved": "https://registry.npmjs.org/typesafe-routes/-/typesafe-routes-9.0.1.tgz",
- "integrity": "sha512-CnfSI1QVaJnj/l/Tc0jkQI38YOasOSogNRmLOspFBjTwsLBzko8ukdMnlRL3MbZCBx6a5HxrK5TXlcS3AicF6Q==",
- "license": "MIT",
- "dependencies": {
- "@types/qs": "^6.9.7",
- "qs": "^6.10.3"
- },
- "peerDependencies": {
- "typescript": "^4.1.0"
- },
- "peerDependenciesMeta": {
- "react-router-dom": {
- "optional": true
- }
- }
- },
"node_modules/typescript": {
"version": "4.9.5",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz",
"integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==",
+ "dev": true,
"license": "Apache-2.0",
"peer": true,
"bin": {
@@ -20898,11 +21284,10 @@
}
},
"node_modules/undici-types": {
- "version": "6.21.0",
- "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz",
- "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==",
- "dev": true,
- "license": "MIT"
+ "version": "7.16.0",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz",
+ "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==",
+ "dev": true
},
"node_modules/unidiff": {
"version": "1.0.4",
@@ -20913,6 +21298,15 @@
"diff": "^5.1.0"
}
},
+ "node_modules/unidiff/node_modules/diff": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz",
+ "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==",
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.3.1"
+ }
+ },
"node_modules/unified": {
"version": "11.0.5",
"resolved": "https://registry.npmjs.org/unified/-/unified-11.0.5.tgz",
@@ -21212,13 +21606,6 @@
"dev": true,
"license": "MIT"
},
- "node_modules/utila": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz",
- "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==",
- "dev": true,
- "license": "MIT"
- },
"node_modules/utils-merge": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
@@ -21260,6 +21647,15 @@
"node": ">=8"
}
},
+ "node_modules/uvu/node_modules/diff": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz",
+ "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==",
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.3.1"
+ }
+ },
"node_modules/v8-compile-cache-lib": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz",
@@ -21401,6 +21797,110 @@
"d3-timer": "^3.0.1"
}
},
+ "node_modules/vite": {
+ "version": "7.3.1",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.1.tgz",
+ "integrity": "sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==",
+ "dev": true,
+ "dependencies": {
+ "esbuild": "^0.27.0",
+ "fdir": "^6.5.0",
+ "picomatch": "^4.0.3",
+ "postcss": "^8.5.6",
+ "rollup": "^4.43.0",
+ "tinyglobby": "^0.2.15"
+ },
+ "bin": {
+ "vite": "bin/vite.js"
+ },
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ },
+ "funding": {
+ "url": "https://github.com/vitejs/vite?sponsor=1"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.3"
+ },
+ "peerDependencies": {
+ "@types/node": "^20.19.0 || >=22.12.0",
+ "jiti": ">=1.21.0",
+ "less": "^4.0.0",
+ "lightningcss": "^1.21.0",
+ "sass": "^1.70.0",
+ "sass-embedded": "^1.70.0",
+ "stylus": ">=0.54.8",
+ "sugarss": "^5.0.0",
+ "terser": "^5.16.0",
+ "tsx": "^4.8.1",
+ "yaml": "^2.4.2"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ },
+ "jiti": {
+ "optional": true
+ },
+ "less": {
+ "optional": true
+ },
+ "lightningcss": {
+ "optional": true
+ },
+ "sass": {
+ "optional": true
+ },
+ "sass-embedded": {
+ "optional": true
+ },
+ "stylus": {
+ "optional": true
+ },
+ "sugarss": {
+ "optional": true
+ },
+ "terser": {
+ "optional": true
+ },
+ "tsx": {
+ "optional": true
+ },
+ "yaml": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/vite/node_modules/fdir": {
+ "version": "6.5.0",
+ "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz",
+ "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==",
+ "dev": true,
+ "engines": {
+ "node": ">=12.0.0"
+ },
+ "peerDependencies": {
+ "picomatch": "^3 || ^4"
+ },
+ "peerDependenciesMeta": {
+ "picomatch": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/vite/node_modules/picomatch": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz",
+ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
"node_modules/w3c-keyname": {
"version": "2.2.8",
"resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.8.tgz",
@@ -21449,9 +21949,9 @@
"license": "BSD-2-Clause"
},
"node_modules/webpack": {
- "version": "5.105.2",
- "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.105.2.tgz",
- "integrity": "sha512-dRXm0a2qcHPUBEzVk8uph0xWSjV/xZxenQQbLwnwP7caQCYpqG1qddwlyEkIDkYn0K8tvmcrZ+bOrzoQ3HxCDw==",
+ "version": "5.106.2",
+ "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.106.2.tgz",
+ "integrity": "sha512-wGN3qcrBQIFmQ/c0AiOAQBvrZ5lmY8vbbMv4Mxfgzqd/B6+9pXtLo73WuS1dSGXM5QYY3hZnIbvx+K1xxe6FyA==",
"dev": true,
"license": "MIT",
"peer": true,
@@ -21462,25 +21962,24 @@
"@webassemblyjs/ast": "^1.14.1",
"@webassemblyjs/wasm-edit": "^1.14.1",
"@webassemblyjs/wasm-parser": "^1.14.1",
- "acorn": "^8.15.0",
+ "acorn": "^8.16.0",
"acorn-import-phases": "^1.0.3",
"browserslist": "^4.28.1",
"chrome-trace-event": "^1.0.2",
- "enhanced-resolve": "^5.19.0",
+ "enhanced-resolve": "^5.20.0",
"es-module-lexer": "^2.0.0",
"eslint-scope": "5.1.1",
"events": "^3.2.0",
"glob-to-regexp": "^0.4.1",
"graceful-fs": "^4.2.11",
- "json-parse-even-better-errors": "^2.3.1",
"loader-runner": "^4.3.1",
- "mime-types": "^2.1.27",
+ "mime-db": "^1.54.0",
"neo-async": "^2.6.2",
"schema-utils": "^4.3.3",
"tapable": "^2.3.0",
- "terser-webpack-plugin": "^5.3.16",
+ "terser-webpack-plugin": "^5.3.17",
"watchpack": "^2.5.1",
- "webpack-sources": "^3.3.3"
+ "webpack-sources": "^3.3.4"
},
"bin": {
"webpack": "bin/webpack.js"
@@ -21504,7 +22003,6 @@
"integrity": "sha512-MfwFQ6SfwinsUVi0rNJm7rHZ31GyTcpVE5pgVA3hwFRb7COD4TzjUUwhGWKfO50+xdc2MQPuEBBJoqIMGt3JDw==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"@discoveryjs/json-ext": "^0.6.1",
"@webpack-cli/configtest": "^3.0.1",
@@ -21682,6 +22180,16 @@
"fsevents": "~2.3.2"
}
},
+ "node_modules/webpack-dev-server/node_modules/connect-history-api-fallback": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz",
+ "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.8"
+ }
+ },
"node_modules/webpack-dev-server/node_modules/glob-parent": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
@@ -21724,9 +22232,9 @@
}
},
"node_modules/webpack-sources": {
- "version": "3.3.4",
- "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.3.4.tgz",
- "integrity": "sha512-7tP1PdV4vF+lYPnkMR0jMY5/la2ub5Fc/8VQrrU+lXkiM6C4TjVfGw7iKfyhnTQOsD+6Q/iKw0eFciziRgD58Q==",
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.4.0.tgz",
+ "integrity": "sha512-gHwIe1cgBvvfLeu1Yz/dcFpmHfKDVxxyqI+kzqmuxZED81z2ChxpyqPaWcNqigPywhaEke7AjSGga+kxY55gjQ==",
"dev": true,
"license": "MIT",
"engines": {
@@ -21940,17 +22448,10 @@
"node": ">=8"
}
},
- "node_modules/wrappy": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
- "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
- "dev": true,
- "license": "ISC"
- },
"node_modules/ws": {
- "version": "8.19.0",
- "resolved": "https://registry.npmjs.org/ws/-/ws-8.19.0.tgz",
- "integrity": "sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==",
+ "version": "8.20.0",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.20.0.tgz",
+ "integrity": "sha512-sAt8BhgNbzCtgGbt2OxmpuryO63ZoDk/sqaB/znQm94T4fCEsy/yV+7CdC1kJhOU9lboAEU7R3kquuycDoibVA==",
"dev": true,
"license": "MIT",
"engines": {
@@ -22007,11 +22508,18 @@
"node": ">=10"
}
},
+ "node_modules/yallist": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
+ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
+ "dev": true
+ },
"node_modules/yaml": {
"version": "2.8.3",
"resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.3.tgz",
"integrity": "sha512-AvbaCLOO2Otw/lW5bmh9d/WEdcDFdQp2Z2ZUH3pX9U2ihyUY0nvLv7J6TrWowklRGPYbB/IuIMfYgxaCPg5Bpg==",
"license": "ISC",
+ "peer": true,
"bin": {
"yaml": "bin.mjs"
},
@@ -22074,9 +22582,9 @@
}
},
"node_modules/yjs": {
- "version": "13.6.29",
- "resolved": "https://registry.npmjs.org/yjs/-/yjs-13.6.29.tgz",
- "integrity": "sha512-kHqDPdltoXH+X4w1lVmMtddE3Oeqq48nM40FD5ojTd8xYhQpzIDcfE2keMSU5bAgRPJBe225WTUdyUgj1DtbiQ==",
+ "version": "13.6.27",
+ "resolved": "https://registry.npmjs.org/yjs/-/yjs-13.6.27.tgz",
+ "integrity": "sha512-OIDwaflOaq4wC6YlPBy2L6ceKeKuF7DeTxx+jPzv1FHn9tCZ0ZwSRnUBxD05E3yed46fv/FWJbvR+Ud7x0L7zw==",
"license": "MIT",
"peer": true,
"dependencies": {
@@ -22134,6 +22642,19 @@
"zod": "^3.22.4"
}
},
+ "node_modules/zod-validation-error": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/zod-validation-error/-/zod-validation-error-4.0.2.tgz",
+ "integrity": "sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18.0.0"
+ },
+ "peerDependencies": {
+ "zod": "^3.25.0 || ^4.0.0"
+ }
+ },
"node_modules/zwitch": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz",
diff --git a/package.json b/package.json
index 4fb2ad9e..c26d59d3 100644
--- a/package.json
+++ b/package.json
@@ -8,9 +8,8 @@
"leadcms"
],
"scripts": {
- "start": "cross-env TS_NODE_PROJECT=\"./webpack/tsconfig.json\" webpack serve --config=\"./webpack/webpack.config.ts\" --mode=development",
- "build": "cross-env TS_NODE_PROJECT=\"./webpack/tsconfig.json\" webpack --config=\"./webpack/webpack.config.ts\" --mode=production",
- "serve": "npx serve -s dist -l 8080",
+ "start": "vite",
+ "build": "vite build",
"lint": "eslint ./src/**/*",
"format": "prettier --write \"./src/**/*.{ts,tsx,js,jsx}\" --ignore-path .prettierignore",
"prepare": "husky install",
@@ -27,33 +26,27 @@
"homepage": "https://leadcms.ai",
"engines": {
"node": "^24.0.0",
- "npm": "^11.0.0"
+ "npm": "^11.1.0"
},
"devDependencies": {
- "@types/dotenv-webpack": "^7.0.3",
- "@types/node": "^22.0.0",
+ "@types/node": "^24.1.0",
"@types/react": "^18.2.0",
"@types/react-dom": "^18.0.10",
+ "@typescript-eslint/eslint-plugin": "8.52.0",
+ "@typescript-eslint/parser": "8.52.0",
+ "@vitejs/plugin-react": "5.1.2",
+ "buffer": "6.0.3",
"@types/sanitize-html": "^2.16.1",
- "@typescript-eslint/eslint-plugin": "^5.48.2",
- "@typescript-eslint/parser": "^5.48.2",
- "buffer": "^6.0.3",
- "clean-webpack-plugin": "^4.0.0",
"commander": "^14.0.0",
- "copy-webpack-plugin": "^13.0.0",
"cross-env": "^7.0.3",
- "css-loader": "^7.1.2",
"dotenv": "^16.0.3",
- "dotenv-webpack": "^8.0.1",
- "eslint": "^8.32.0",
- "eslint-config-prettier": "^8.6.0",
- "eslint-plugin-prettier": "^4.2.1",
- "eslint-plugin-react": "^7.32.1",
- "eslint-plugin-react-hooks": "^4.6.0",
- "html-webpack-plugin": "^5.6.3",
+ "eslint": "9.39.2",
+ "eslint-config-prettier": "10.1.8",
+ "eslint-plugin-prettier": "5.5.4",
+ "eslint-plugin-react": "7.37.5",
+ "eslint-plugin-react-hooks": "7.0.1",
"husky": "^8.0.3",
- "prettier": "^2.8.3",
- "style-loader": "^4.0.0",
+ "prettier": "3.7.4",
"swagger-typescript-api": "^13.1.3",
"ts-loader": "^9.5.2",
"ts-node": "^10.9.1",
@@ -78,10 +71,10 @@
"@mdx-js/mdx": "^3.1.1",
"@mdxeditor/editor": "^3.42.0",
"@monaco-editor/react": "^4.7.0",
- "@mui/icons-material": "^7.1.0",
- "@mui/material": "^7.1.0",
- "@mui/x-data-grid": "^8.27.1",
- "@mui/x-date-pickers": "^8.27.0",
+ "@mui/material": "7.3.7",
+ "@mui/x-data-grid": "^8.3.0",
+ "@mui/x-date-pickers": "^8.3.0",
+ "@tinymce/tinymce-react": "^6.1.0",
"@uiw/react-md-editor": "^4.0.6",
"@uiw/react-textarea-code-editor": "^3.1.1",
"cronstrue": "^2.55.0",
@@ -91,7 +84,6 @@
"hastscript": "^7.2.0",
"liquidjs": "^10.24.0",
"locale-codes": "^1.3.1",
- "lodash": "^4.17.21",
"lucide-react": "^0.513.0",
"marked": "^18.0.2",
"mjml-browser": "^4.18.0",
@@ -112,7 +104,6 @@
"remark-directive": "^2.0.1",
"remark-gfm": "^3.0.1",
"sanitize-html": "^2.17.3",
- "typesafe-routes": "^9.0.1",
"unist-util-visit": "^4.1.2",
"use-debounce": "^9.0.3",
"use-local-storage": "^2.3.6",
diff --git a/public/index.html b/public/index.html
deleted file mode 100644
index 69a0ca39..00000000
--- a/public/index.html
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
-
-
-
-
-
-
- LeadCMS Admin
-
-
-
-
-
diff --git a/src/app.tsx b/src/app.tsx
index 9455ad3d..14ca22bc 100644
--- a/src/app.tsx
+++ b/src/app.tsx
@@ -1,7 +1,7 @@
import { BrowserRouter, Outlet, Route, Routes, useLocation } from "react-router-dom";
import { ThemeProvider } from "providers/theme-provider";
import { AppLayout } from "@components/app-layout";
-import { coreModuleRoute, rootRoute } from "@lib/router";
+import { rootRoute } from "@lib/router";
import { ModuleLoader } from "@features/module-loader";
import { RequestProvider } from "@providers/request-provider";
import { AuthProvider } from "@providers/auth-provider";
@@ -124,11 +124,8 @@ export const App = () => {
}
>
- } />
- }
- />
+ } />
+ } />
diff --git a/src/components/ai-cover-dialog/index.tsx b/src/components/ai-cover-dialog/index.tsx
index dd9651f4..8d658f86 100644
--- a/src/components/ai-cover-dialog/index.tsx
+++ b/src/components/ai-cover-dialog/index.tsx
@@ -1,19 +1,17 @@
-import {
- Dialog,
- DialogTitle,
- DialogContent,
- DialogActions,
- Button,
- Typography,
- Box,
- TextField,
- Alert,
- Stack,
- Link,
- IconButton,
- Backdrop,
- CircularProgress,
-} from "@mui/material";
+import Dialog from "@mui/material/Dialog";
+import DialogTitle from "@mui/material/DialogTitle";
+import DialogContent from "@mui/material/DialogContent";
+import DialogActions from "@mui/material/DialogActions";
+import Button from "@mui/material/Button";
+import Typography from "@mui/material/Typography";
+import Box from "@mui/material/Box";
+import TextField from "@mui/material/TextField";
+import Alert from "@mui/material/Alert";
+import Stack from "@mui/material/Stack";
+import Link from "@mui/material/Link";
+import IconButton from "@mui/material/IconButton";
+import Backdrop from "@mui/material/Backdrop";
+import CircularProgress from "@mui/material/CircularProgress";
import type { Theme } from "@mui/material/styles";
import { X, Trash2, ImagePlus, Sparkles } from "lucide-react";
import { useEffect, useMemo, useRef, useState } from "react";
diff --git a/src/components/ai-draft-dialog/index.tsx b/src/components/ai-draft-dialog/index.tsx
index bfcd2b9e..1b29e89f 100644
--- a/src/components/ai-draft-dialog/index.tsx
+++ b/src/components/ai-draft-dialog/index.tsx
@@ -1,27 +1,25 @@
-import {
- Dialog,
- DialogTitle,
- DialogContent,
- DialogActions,
- Button,
- FormControl,
- InputLabel,
- Select,
- MenuItem,
- Typography,
- Box,
- IconButton,
- CircularProgress,
- Alert,
- Backdrop,
- TextField,
- Autocomplete,
- RadioGroup,
- FormControlLabel,
- Radio,
- FormLabel,
- Stack,
-} from "@mui/material";
+import Dialog from '@mui/material/Dialog';
+import DialogTitle from '@mui/material/DialogTitle';
+import DialogContent from '@mui/material/DialogContent';
+import DialogActions from '@mui/material/DialogActions';
+import Button from '@mui/material/Button';
+import FormControl from '@mui/material/FormControl';
+import InputLabel from '@mui/material/InputLabel';
+import Select from '@mui/material/Select';
+import MenuItem from '@mui/material/MenuItem';
+import Typography from '@mui/material/Typography';
+import Box from '@mui/material/Box';
+import IconButton from '@mui/material/IconButton';
+import CircularProgress from '@mui/material/CircularProgress';
+import Alert from '@mui/material/Alert';
+import Backdrop from '@mui/material/Backdrop';
+import TextField from '@mui/material/TextField';
+import Autocomplete from '@mui/material/Autocomplete';
+import FormLabel from '@mui/material/FormLabel';
+import RadioGroup from '@mui/material/RadioGroup';
+import FormControlLabel from '@mui/material/FormControlLabel';
+import Radio from '@mui/material/Radio';
+import Stack from '@mui/material/Stack';
import { ImagePlus, Sparkles, Trash2, X } from "lucide-react";
import { useState, useEffect, useMemo } from "react";
import { useDebounce } from "use-debounce";
diff --git a/src/components/ai-edit-dialog/index.tsx b/src/components/ai-edit-dialog/index.tsx
index 6c2962d7..43b2deb9 100644
--- a/src/components/ai-edit-dialog/index.tsx
+++ b/src/components/ai-edit-dialog/index.tsx
@@ -1,24 +1,22 @@
-import {
- Dialog,
- DialogTitle,
- DialogContent,
- DialogActions,
- Button,
- Typography,
- Box,
- IconButton,
- CircularProgress,
- Alert,
- Backdrop,
- TextField,
- RadioGroup,
- FormControlLabel,
- Radio,
- FormControl,
- FormLabel,
- Stack,
-} from "@mui/material";
import { ImagePlus, Plus, Sparkles, Trash2, X } from "lucide-react";
+import Dialog from "@mui/material/Dialog";
+import DialogTitle from "@mui/material/DialogTitle";
+import DialogContent from "@mui/material/DialogContent";
+import DialogActions from "@mui/material/DialogActions";
+import Button from "@mui/material/Button";
+import Typography from "@mui/material/Typography";
+import Box from "@mui/material/Box";
+import IconButton from "@mui/material/IconButton";
+import CircularProgress from "@mui/material/CircularProgress";
+import Alert from "@mui/material/Alert";
+import Backdrop from "@mui/material/Backdrop";
+import TextField from "@mui/material/TextField";
+import FormControl from "@mui/material/FormControl";
+import FormLabel from "@mui/material/FormLabel";
+import FormControlLabel from "@mui/material/FormControlLabel";
+import Radio from "@mui/material/Radio";
+import RadioGroup from "@mui/material/RadioGroup";
+import Stack from "@mui/material/Stack";
import { useState, useEffect, useMemo } from "react";
import { useConfig } from "@providers/config-provider";
import type { Theme } from "@mui/material/styles";
diff --git a/src/components/api-error-display/index.tsx b/src/components/api-error-display/index.tsx
index 14e1d066..2931bc44 100644
--- a/src/components/api-error-display/index.tsx
+++ b/src/components/api-error-display/index.tsx
@@ -1,5 +1,9 @@
import React from "react";
-import { Box, Typography, List, ListItem, ListItemText } from "@mui/material";
+import Box from "@mui/material/Box";
+import Typography from "@mui/material/Typography";
+import List from "@mui/material/List";
+import ListItem from "@mui/material/ListItem";
+import ListItemText from "@mui/material/ListItemText";
import { ApiError } from "@lib/network/wrapApiClient";
interface ApiErrorDisplayProps {
diff --git a/src/components/app-header/dropdown-menu/index.tsx b/src/components/app-header/dropdown-menu/index.tsx
index e6f8612a..efa5e08a 100644
--- a/src/components/app-header/dropdown-menu/index.tsx
+++ b/src/components/app-header/dropdown-menu/index.tsx
@@ -1,14 +1,12 @@
import React, { useState } from "react";
-import {
- Box,
- Menu,
- MenuItem,
- Tooltip,
- IconButton,
- Avatar,
- Divider,
- ListItemIcon,
-} from "@mui/material";
+import Box from "@mui/material/Box";
+import Menu from "@mui/material/Menu";
+import MenuItem from "@mui/material/MenuItem";
+import Tooltip from "@mui/material/Tooltip";
+import IconButton from "@mui/material/IconButton";
+import Avatar from "@mui/material/Avatar";
+import Divider from "@mui/material/Divider";
+import ListItemIcon from "@mui/material/ListItemIcon";
import { LogOut } from "lucide-react";
import { useUserInfo } from "@providers/user-provider";
import { buildAbsoluteUrl } from "@lib/network/utils";
diff --git a/src/components/app-header/index.styled.tsx b/src/components/app-header/index.styled.tsx
index 0e81da4a..317e015b 100644
--- a/src/components/app-header/index.styled.tsx
+++ b/src/components/app-header/index.styled.tsx
@@ -1,4 +1,6 @@
-import { AppBar, styled, Toolbar } from "@mui/material";
+import AppBar from "@mui/material/AppBar";
+import { styled } from "@mui/material/styles";
+import Toolbar from "@mui/material/Toolbar";
export const AppBarStyled = styled(AppBar)`
position: sticky;
diff --git a/src/components/app-header/index.tsx b/src/components/app-header/index.tsx
index 59150f44..f86c5ccd 100644
--- a/src/components/app-header/index.tsx
+++ b/src/components/app-header/index.tsx
@@ -1,4 +1,8 @@
-import { Box, IconButton, useMediaQuery, useTheme, Tooltip } from "@mui/material";
+import Box from "@mui/material/Box";
+import IconButton from "@mui/material/IconButton";
+import useMediaQuery from "@mui/material/useMediaQuery";
+import { useTheme } from "@mui/material/styles";
+import Tooltip from "@mui/material/Tooltip";
import { AppBarStyled, AppBarToolbar } from "./index.styled";
import { DropdownMenu } from "./dropdown-menu";
import { BreadCrumbNavigation } from "@components/breadcrumbs";
diff --git a/src/components/app-layout/index.styled.tsx b/src/components/app-layout/index.styled.tsx
index 7c0e55b9..ecdab8cd 100644
--- a/src/components/app-layout/index.styled.tsx
+++ b/src/components/app-layout/index.styled.tsx
@@ -1,4 +1,4 @@
-import { styled } from "@mui/material";
+import { styled } from "@mui/material/styles";
export const AppLayoutWrapper = styled("div")`
display: flex;
@@ -42,3 +42,23 @@ export const MainContent = styled("main")<{ fullWidth?: boolean }>`
background-color: ${({ theme }) => theme.palette.background.primary};
box-sizing: border-box;
`;
+
+export const SkipLink = styled("a")`
+ position: absolute;
+ top: -40px;
+ left: 0;
+ background-color: ${({ theme }) => theme.palette.primary.main};
+ color: ${({ theme }) => theme.palette.primary.contrastText};
+ padding: ${({ theme }) => theme.spacing(1, 2)};
+ text-decoration: none;
+ z-index: 9999;
+ font-weight: 600;
+ border-radius: 0 0 ${({ theme }) => theme.spacing(1)} 0;
+ transition: top 0.2s ease;
+
+ &:focus {
+ top: 0;
+ outline: 2px solid ${({ theme }) => theme.palette.primary.dark};
+ outline-offset: 2px;
+ }
+`;
diff --git a/src/components/app-layout/index.tsx b/src/components/app-layout/index.tsx
index 2760c9ce..5e778dc0 100644
--- a/src/components/app-layout/index.tsx
+++ b/src/components/app-layout/index.tsx
@@ -1,11 +1,12 @@
import { ReactNode, useState } from "react";
+import { useParams } from "react-router-dom";
import { AppHeader } from "@components/app-header";
import { Sidebar } from "@components/side-bar";
-import { AppLayoutWrapper, MainColumn, MainContent } from "./index.styled";
-import { useMediaQuery, useTheme } from "@mui/material";
+import { AppLayoutWrapper, MainColumn, MainContent, SkipLink } from "./index.styled";
+import useMediaQuery from "@mui/material/useMediaQuery";
+import { useTheme } from "@mui/material/styles";
import { buildMenuItems } from "../../utils/build-menu-items";
-import { useRouteParams } from "typesafe-routes";
-import { coreModuleRoute } from "@lib/router";
+import { ModuleRouteParams } from "@lib/router";
import { SidebarProvider } from "@providers/sidebar-provider";
import { useConfig } from "@providers/config-provider";
@@ -40,12 +41,12 @@ export const AppLayout = ({
const theme = useTheme();
const isMobile = useMediaQuery(theme.breakpoints.down("md"));
const [mobileOpen, setMobileOpen] = useState(false);
- const { moduleName } = useRouteParams(coreModuleRoute);
+ const { moduleName } = useParams();
const { config, loading: configLoading } = useConfig();
const menuItems = buildMenuItems(
config?.entities,
- moduleName,
+ moduleName ?? "",
config?.capabilities
) as SidebarMenuSection[];
const menuLoading = configLoading;
@@ -61,6 +62,7 @@ export const AppLayout = ({
return (
+ Skip to main content
- {children}
+
+ {children}
+
diff --git a/src/components/breadcrumbs/index.tsx b/src/components/breadcrumbs/index.tsx
index 8e0cdab5..65798ec5 100644
--- a/src/components/breadcrumbs/index.tsx
+++ b/src/components/breadcrumbs/index.tsx
@@ -1,5 +1,7 @@
import { ChevronRight } from "lucide-react";
-import { Breadcrumbs, Link, Typography } from "@mui/material";
+import Breadcrumbs from "@mui/material/Breadcrumbs";
+import Link from "@mui/material/Link";
+import Typography from "@mui/material/Typography";
import { GhostLink } from "components/ghost-link";
interface Links {
diff --git a/src/components/bulk-delete-toolbar/index.tsx b/src/components/bulk-delete-toolbar/index.tsx
index 1044c8ca..98d86246 100644
--- a/src/components/bulk-delete-toolbar/index.tsx
+++ b/src/components/bulk-delete-toolbar/index.tsx
@@ -1,17 +1,15 @@
import { useState } from "react";
-import {
- Box,
- Button,
- Checkbox,
- Chip,
- CircularProgress,
- Dialog,
- DialogActions,
- DialogContent,
- DialogTitle,
- Paper,
- Typography,
-} from "@mui/material";
+import Box from "@mui/material/Box";
+import Button from "@mui/material/Button";
+import Checkbox from "@mui/material/Checkbox";
+import Chip from "@mui/material/Chip";
+import CircularProgress from "@mui/material/CircularProgress";
+import Dialog from "@mui/material/Dialog";
+import DialogActions from "@mui/material/DialogActions";
+import DialogContent from "@mui/material/DialogContent";
+import DialogTitle from "@mui/material/DialogTitle";
+import Paper from "@mui/material/Paper";
+import Typography from "@mui/material/Typography";
import { Pencil, Trash2 } from "lucide-react";
export interface BulkDeleteToolbarProps {
diff --git a/src/components/comment-sort-popup/index.tsx b/src/components/comment-sort-popup/index.tsx
index 0634d4ff..93f2668e 100644
--- a/src/components/comment-sort-popup/index.tsx
+++ b/src/components/comment-sort-popup/index.tsx
@@ -1,5 +1,10 @@
import React from "react";
-import { Popover, Divider, Box, useTheme, Stack, Button } from "@mui/material";
+import Popover from "@mui/material/Popover";
+import Divider from "@mui/material/Divider";
+import Box from "@mui/material/Box";
+import { useTheme } from "@mui/material/styles";
+import Stack from "@mui/material/Stack";
+import Button from "@mui/material/Button";
import { Check } from "lucide-react";
interface SortOption {
diff --git a/src/components/content-language-badges/index.tsx b/src/components/content-language-badges/index.tsx
index 1dd89063..e9a15ed1 100644
--- a/src/components/content-language-badges/index.tsx
+++ b/src/components/content-language-badges/index.tsx
@@ -1,5 +1,7 @@
-import { Box, Chip, Tooltip } from "@mui/material";
-import { Add, Language } from "@mui/icons-material";
+import Box from "@mui/material/Box";
+import Chip from "@mui/material/Chip";
+import Tooltip from "@mui/material/Tooltip";
+import { Plus as Add, Languages as Language } from 'lucide-react';
import { ContentDetailsDto, LanguageDto } from "@lib/network/swagger-client";
import { useConfig } from "@providers/config-provider";
import { useNavigate } from "react-router-dom";
@@ -110,7 +112,7 @@ export const ContentLanguageBadges = ({
-
+
{lang.code?.toUpperCase()}
}
@@ -139,7 +141,7 @@ export const ContentLanguageBadges = ({
// Full view - show all languages
return (
-
+
{/* Existing translations */}
{existingLanguages.map((lang) => (
@@ -168,7 +170,7 @@ export const ContentLanguageBadges = ({
{missingLanguages.map((lang) => (
}
+ icon={ }
label={getLanguageName(lang.code || "")}
size="small"
variant="outlined"
diff --git a/src/components/content-language-switcher/index.tsx b/src/components/content-language-switcher/index.tsx
index e28433b4..d43b0385 100644
--- a/src/components/content-language-switcher/index.tsx
+++ b/src/components/content-language-switcher/index.tsx
@@ -1,15 +1,18 @@
import { useState, useEffect } from "react";
+import Box from "@mui/material/Box";
+import Chip from "@mui/material/Chip";
+import Typography from "@mui/material/Typography";
+import CircularProgress from "@mui/material/CircularProgress";
+import Menu from "@mui/material/Menu";
+import MenuItem from "@mui/material/MenuItem";
+import Tooltip from "@mui/material/Tooltip";
+import Divider from "@mui/material/Divider";
import {
- Box,
- Chip,
- Typography,
- CircularProgress,
- Menu,
- MenuItem,
- Tooltip,
- Divider,
-} from "@mui/material";
-import { Add, Translate, ExpandMore, Link } from "@mui/icons-material";
+ Plus as Add,
+ Languages as Translate,
+ ChevronDown as ExpandMore,
+ Link
+} from 'lucide-react';
import { ContentDetailsDto, LanguageDto } from "@lib/network/swagger-client";
import { useRequestContext } from "@providers/request-provider";
import { useConfig } from "@providers/config-provider";
@@ -272,12 +275,12 @@ export const ContentLanguageSwitcher = ({
-
+
{getCurrentLanguageLabel()}
{loading ? (
) : (
-
+
)}
}
@@ -357,7 +360,7 @@ export const ContentLanguageSwitcher = ({
gap: 1,
}}
>
-
+
{lang.name}
))}
@@ -374,7 +377,7 @@ export const ContentLanguageSwitcher = ({
gap: 1,
}}
>
-
+
Link Translation
@@ -398,7 +401,7 @@ export const ContentLanguageSwitcher = ({
// Full mode
return (
-
+
Language:
@@ -408,7 +411,7 @@ export const ContentLanguageSwitcher = ({
label={
{getCurrentLanguageLabel()}
- {loading ? : }
+ {loading ? : }
}
size="small"
@@ -485,7 +488,7 @@ export const ContentLanguageSwitcher = ({
gap: 1,
}}
>
-
+
{lang.name}
))}
@@ -502,7 +505,7 @@ export const ContentLanguageSwitcher = ({
gap: 1,
}}
>
-
+
Link Translation
@@ -674,7 +677,7 @@ export const LanguageHighlights = ({
-
+
{lang.name}
}
diff --git a/src/components/content-sort-popup/index.tsx b/src/components/content-sort-popup/index.tsx
index 43495503..2313b7c2 100644
--- a/src/components/content-sort-popup/index.tsx
+++ b/src/components/content-sort-popup/index.tsx
@@ -1,5 +1,10 @@
import React from "react";
-import { Popover, Divider, Box, useTheme, Stack, Button } from "@mui/material";
+import Popover from "@mui/material/Popover";
+import Divider from "@mui/material/Divider";
+import Box from "@mui/material/Box";
+import { useTheme } from "@mui/material/styles";
+import Stack from "@mui/material/Stack";
+import Button from "@mui/material/Button";
import { Check } from "lucide-react";
interface SortOption {
diff --git a/src/components/content-type-filter/index.tsx b/src/components/content-type-filter/index.tsx
index 4fa4dffe..90e2a517 100644
--- a/src/components/content-type-filter/index.tsx
+++ b/src/components/content-type-filter/index.tsx
@@ -1,5 +1,8 @@
import React, { useMemo } from "react";
-import { Box, Chip, Typography, Tooltip } from "@mui/material";
+import Box from "@mui/material/Box";
+import Chip from "@mui/material/Chip";
+import Typography from "@mui/material/Typography";
+import Tooltip from "@mui/material/Tooltip";
import { idToDisplayName } from "@features/content/content-types";
interface ContentTypeFilterProps {
diff --git a/src/components/custom-filter/index.tsx b/src/components/custom-filter/index.tsx
index 23c5530c..bfb8dd49 100644
--- a/src/components/custom-filter/index.tsx
+++ b/src/components/custom-filter/index.tsx
@@ -1,21 +1,19 @@
-import {
- Autocomplete,
- Box,
- TextField,
- MenuItem,
- Button,
- Chip,
- Dialog,
- DialogTitle,
- DialogContent,
- DialogActions,
- Stack,
- FormLabel,
- IconButton,
- ListSubheader,
-} from "@mui/material";
-import { GridColDef } from "@mui/x-data-grid";
import { useEffect, useMemo, useState } from "react";
+import Autocomplete from "@mui/material/Autocomplete";
+import Box from "@mui/material/Box";
+import TextField from "@mui/material/TextField";
+import MenuItem from "@mui/material/MenuItem";
+import Button from "@mui/material/Button";
+import Chip from "@mui/material/Chip";
+import Dialog from "@mui/material/Dialog";
+import ListSubheader from "@mui/material/ListSubheader";
+import DialogTitle from "@mui/material/DialogTitle";
+import DialogContent from "@mui/material/DialogContent";
+import DialogActions from "@mui/material/DialogActions";
+import Stack from "@mui/material/Stack";
+import FormLabel from "@mui/material/FormLabel";
+import IconButton from "@mui/material/IconButton";
+import type { GridColDef } from "@mui/x-data-grid";
import { X } from "lucide-react";
import { useConfig } from "@providers/config-provider";
import { useRequestContext } from "providers/request-provider";
diff --git a/src/components/data-list/index.styled.ts b/src/components/data-list/index.styled.ts
index 7ca2b347..72a65672 100644
--- a/src/components/data-list/index.styled.ts
+++ b/src/components/data-list/index.styled.ts
@@ -1,4 +1,9 @@
-import { CardHeader, Grid, ListItem, ListItemText, Paper, styled } from "@mui/material";
+import CardHeader from "@mui/material/CardHeader";
+import Grid from "@mui/material/Grid";
+import ListItem from "@mui/material/ListItem";
+import ListItemText from "@mui/material/ListItemText";
+import Paper from "@mui/material/Paper";
+import { styled } from "@mui/material/styles";
export const ActionsContainer = styled("div")`
display: flex;
diff --git a/src/components/data-management/index.styled.ts b/src/components/data-management/index.styled.ts
index 524cc1ed..e35a792f 100644
--- a/src/components/data-management/index.styled.ts
+++ b/src/components/data-management/index.styled.ts
@@ -1,4 +1,5 @@
-import { CardHeader, styled } from "@mui/material";
+import CardHeader from "@mui/material/CardHeader";
+import { styled } from "@mui/material/styles";
export const DeleteButtonContainer = styled("div")`
padding-left: ${({ theme }) => theme.spacing(2)};
diff --git a/src/components/data-management/index.tsx b/src/components/data-management/index.tsx
index 8df306ba..c2f20b4b 100644
--- a/src/components/data-management/index.tsx
+++ b/src/components/data-management/index.tsx
@@ -1,27 +1,24 @@
import { useEffect, useState } from "react";
-import {
- Button,
- Card,
- CardActions,
- CardContent,
- Dialog,
- DialogActions,
- DialogContent,
- DialogContentText,
- DialogTitle,
- Grid,
- Typography,
- Box,
-} from "@mui/material";
+import Button from "@mui/material/Button";
+import Card from "@mui/material/Card";
+import CardActions from "@mui/material/CardActions";
+import CardContent from "@mui/material/CardContent";
+import Dialog from "@mui/material/Dialog";
+import DialogActions from "@mui/material/DialogActions";
+import DialogContent from "@mui/material/DialogContent";
+import DialogContentText from "@mui/material/DialogContentText";
+import DialogTitle from "@mui/material/DialogTitle";
+import Grid from "@mui/material/Grid";
+import Typography from "@mui/material/Typography";
+import Box from "@mui/material/Box";
import { DeleteButtonContainer } from "./index.styled";
import { Trash2, Edit } from "lucide-react";
import { useCoreModuleNavigation, useNotificationsService } from "@hooks";
import { HttpResponse, ProblemDetails } from "@lib/network/swagger-client";
import { useErrorDetailsModal } from "@providers/error-details-modal-provider";
import { execDeleteWithToast } from "utils/general-helper";
-import { useRouteParams } from "typesafe-routes";
-import { coreModuleRoute } from "@lib/router";
-import { useNavigate } from "react-router-dom";
+import { useParams, useNavigate } from "react-router-dom";
+import { ModuleRouteParams } from "@lib/router";
type DataDeleteProps = {
header: string;
@@ -101,7 +98,7 @@ export const DataManagementBlock = ({
const { Show: showErrorModal } = useErrorDetailsModal();
const handleNavigation = useCoreModuleNavigation();
const navigate = useNavigate();
- const { moduleName } = useRouteParams(coreModuleRoute);
+ const { moduleName } = useParams();
const [openConfirmation, setOpenConfirmation] = useState(false);
const [isDeleting, setIsDeleting] = useState(false);
diff --git a/src/components/data-table/index.styled.ts b/src/components/data-table/index.styled.ts
index 2d1b8503..166cc663 100644
--- a/src/components/data-table/index.styled.ts
+++ b/src/components/data-table/index.styled.ts
@@ -1,4 +1,4 @@
-import { styled } from "@mui/material";
+import { styled } from "@mui/material/styles";
export const DataTableContainer = styled("div")`
width: 100%;
diff --git a/src/components/data-table/index.styled.tsx b/src/components/data-table/index.styled.tsx
index fbfc861a..9f82eac9 100644
--- a/src/components/data-table/index.styled.tsx
+++ b/src/components/data-table/index.styled.tsx
@@ -1,5 +1,5 @@
import styled from "@emotion/styled";
-import { Paper } from "@mui/material";
+import Paper from "@mui/material/Paper";
export const DataTableContainer = styled(Paper)`
flex-grow: 1;
diff --git a/src/components/data-table/index.tsx b/src/components/data-table/index.tsx
index 2941632f..cdd2ad71 100644
--- a/src/components/data-table/index.tsx
+++ b/src/components/data-table/index.tsx
@@ -14,7 +14,9 @@ import { GridInitialStateCommunity } from "@mui/x-data-grid/models/gridStateComm
import { Pencil, Eye, ChevronRight, ChevronDown } from "lucide-react";
import { useNavigate } from "react-router-dom";
import { getEditFormRoute, getViewFormRoute } from "lib/router";
-import { Box, Collapse, IconButton } from "@mui/material";
+import Box from "@mui/material/Box";
+import Collapse from "@mui/material/Collapse";
+import IconButton from "@mui/material/IconButton";
import { GridDataFilterState } from "types";
import { forwardRef, ReactNode, useEffect, useState } from "react";
diff --git a/src/components/data-view/index.styled.ts b/src/components/data-view/index.styled.ts
index b322f523..b508a690 100644
--- a/src/components/data-view/index.styled.ts
+++ b/src/components/data-view/index.styled.ts
@@ -1,4 +1,7 @@
-import { Card, Grid, ListItemText, styled } from "@mui/material";
+import Card from "@mui/material/Card";
+import Grid from "@mui/material/Grid";
+import ListItemText from "@mui/material/ListItemText";
+import { styled } from "@mui/material/styles";
export const ViewListItemText = styled(ListItemText)`
.MuiListItemText-primary {
diff --git a/src/components/data-view/index.tsx b/src/components/data-view/index.tsx
index 5a7e67d6..676f1786 100644
--- a/src/components/data-view/index.tsx
+++ b/src/components/data-view/index.tsx
@@ -1,4 +1,6 @@
-import { CardContent, Grid, Typography } from "@mui/material";
+import CardContent from "@mui/material/CardContent";
+import Grid from "@mui/material/Grid";
+import Typography from "@mui/material/Typography";
import { Fragment, ReactNode } from "react";
import { CardContainer, ViewListItemText, ViewRowGrid } from "./index.styled";
diff --git a/src/components/email-group-autocomplete/create-new.tsx b/src/components/email-group-autocomplete/create-new.tsx
index 3d83a9a4..6a0c760f 100644
--- a/src/components/email-group-autocomplete/create-new.tsx
+++ b/src/components/email-group-autocomplete/create-new.tsx
@@ -6,6 +6,8 @@ import DialogActions from "@mui/material/DialogActions";
import DialogContent from "@mui/material/DialogContent";
import DialogTitle from "@mui/material/DialogTitle";
import Fade from "@mui/material/Fade";
+import Box from "@mui/material/Box";
+import TextField from "@mui/material/TextField";
import Typography from "@mui/material/Typography";
import { TransitionProps } from "@mui/material/transitions";
import { useErrorDetailsModal } from "@providers/error-details-modal-provider";
@@ -15,7 +17,6 @@ import React from "react";
import { toPromiseError } from "@utils/api-error-parser";
import { toFormikValidationSchema } from "zod-formik-adapter";
import { EmailGroupEditValidationScheme } from "./validation";
-import { Box, TextField } from "@mui/material";
import { CreateNewEmailGroupProps } from "./types";
import { LanguageSelect } from "@components/language-select";
import { useConfig } from "@providers/config-provider";
diff --git a/src/components/email-group-autocomplete/index.tsx b/src/components/email-group-autocomplete/index.tsx
index b8b17213..78b3f4cd 100644
--- a/src/components/email-group-autocomplete/index.tsx
+++ b/src/components/email-group-autocomplete/index.tsx
@@ -1,5 +1,10 @@
import { useState, useEffect } from "react";
-import { TextField, MenuItem, CircularProgress, Grid, Chip, Box } from "@mui/material";
+import TextField from "@mui/material/TextField";
+import MenuItem from "@mui/material/MenuItem";
+import CircularProgress from "@mui/material/CircularProgress";
+import Grid from "@mui/material/Grid";
+import Chip from "@mui/material/Chip";
+import Box from "@mui/material/Box";
import { Plus } from "lucide-react";
import { CreateNewEmailGroup } from "./create-new";
import { useRequestContext } from "@providers/request-provider";
diff --git a/src/components/error-details-display/index.tsx b/src/components/error-details-display/index.tsx
index 6d9f3757..5c107cd8 100644
--- a/src/components/error-details-display/index.tsx
+++ b/src/components/error-details-display/index.tsx
@@ -1,5 +1,6 @@
import React from "react";
-import { Box, Typography } from "@mui/material";
+import Box from "@mui/material/Box";
+import Typography from "@mui/material/Typography";
import { AlertCircle } from "lucide-react";
export interface ErrorDetailsDisplayProps {
diff --git a/src/components/error-details/index.tsx b/src/components/error-details/index.tsx
index 30e2baa7..8f7e5746 100644
--- a/src/components/error-details/index.tsx
+++ b/src/components/error-details/index.tsx
@@ -1,4 +1,9 @@
-import { Button, DialogActions, DialogContent, DialogTitle, Fade, Typography } from "@mui/material";
+import Button from "@mui/material/Button";
+import DialogActions from "@mui/material/DialogActions";
+import DialogContent from "@mui/material/DialogContent";
+import DialogTitle from "@mui/material/DialogTitle";
+import Fade from "@mui/material/Fade";
+import Typography from "@mui/material/Typography";
import Dialog from "@mui/material/Dialog";
import { TransitionProps } from "@mui/material/transitions";
import React from "react";
diff --git a/src/components/export-popup/index.tsx b/src/components/export-popup/index.tsx
index f4dc30ed..50df8d3c 100644
--- a/src/components/export-popup/index.tsx
+++ b/src/components/export-popup/index.tsx
@@ -1,22 +1,20 @@
import { useEffect, useState } from "react";
-import {
- Dialog,
- DialogTitle,
- DialogContent,
- DialogActions,
- Button,
- FormControl,
- RadioGroup,
- FormControlLabel,
- Radio,
- Checkbox,
- FormGroup,
- Box,
- Typography,
- IconButton,
- CircularProgress,
- Alert,
-} from "@mui/material";
+import Dialog from "@mui/material/Dialog";
+import DialogTitle from "@mui/material/DialogTitle";
+import DialogContent from "@mui/material/DialogContent";
+import DialogActions from "@mui/material/DialogActions";
+import Button from "@mui/material/Button";
+import FormControl from "@mui/material/FormControl";
+import RadioGroup from "@mui/material/RadioGroup";
+import FormControlLabel from "@mui/material/FormControlLabel";
+import Radio from "@mui/material/Radio";
+import Checkbox from "@mui/material/Checkbox";
+import FormGroup from "@mui/material/FormGroup";
+import Box from "@mui/material/Box";
+import Typography from "@mui/material/Typography";
+import IconButton from "@mui/material/IconButton";
+import CircularProgress from "@mui/material/CircularProgress";
+import Alert from "@mui/material/Alert";
import { GridColDef, GridColumnVisibilityModel, GridValidRowModel } from "@mui/x-data-grid";
import { X } from "lucide-react";
diff --git a/src/components/file-dropdown/index.styled.tsx b/src/components/file-dropdown/index.styled.tsx
index feb966cf..77fd2dff 100644
--- a/src/components/file-dropdown/index.styled.tsx
+++ b/src/components/file-dropdown/index.styled.tsx
@@ -1,4 +1,5 @@
-import { Box, styled } from "@mui/material";
+import Box from "@mui/material/Box";
+import { styled } from "@mui/material/styles";
export const BoxStyled = styled(Box)`
border: 2px dashed gray;
diff --git a/src/components/file-dropdown/index.tsx b/src/components/file-dropdown/index.tsx
index e56d7cb7..73e75b58 100644
--- a/src/components/file-dropdown/index.tsx
+++ b/src/components/file-dropdown/index.tsx
@@ -1,6 +1,9 @@
import Dropzone, { Accept, FileRejection } from "react-dropzone";
import { BoxStyled } from "./index.styled";
-import { Button, Grid, Box, IconButton } from "@mui/material";
+import Button from "@mui/material/Button";
+import Grid from "@mui/material/Grid";
+import Box from "@mui/material/Box";
+import IconButton from "@mui/material/IconButton";
import { X } from "lucide-react";
import { useNotificationsService } from "@hooks";
diff --git a/src/components/generic-components/edit-components/array-edit.tsx b/src/components/generic-components/edit-components/array-edit.tsx
index 26c34f29..0b6224c1 100644
--- a/src/components/generic-components/edit-components/array-edit.tsx
+++ b/src/components/generic-components/edit-components/array-edit.tsx
@@ -4,16 +4,14 @@ import {
KnownTagsAutocomplete,
type KnownTagsEntityType,
} from "@components/known-tags-autocomplete";
-import {
- Dialog,
- DialogTitle,
- Table,
- TableBody,
- TableCell,
- TableHead,
- TableRow,
- TextField,
-} from "@mui/material";
+import Dialog from "@mui/material/Dialog";
+import DialogTitle from "@mui/material/DialogTitle";
+import Table from "@mui/material/Table";
+import TableBody from "@mui/material/TableBody";
+import TableCell from "@mui/material/TableCell";
+import TableHead from "@mui/material/TableHead";
+import TableRow from "@mui/material/TableRow";
+import TextField from "@mui/material/TextField";
import { camelCaseToTitleCase } from "../common";
import { getModuleNameFromUrl } from "@utils/general-helper";
diff --git a/src/components/generic-components/edit-components/dictionary-edit.tsx b/src/components/generic-components/edit-components/dictionary-edit.tsx
index 17e195f9..7ed105b8 100644
--- a/src/components/generic-components/edit-components/dictionary-edit.tsx
+++ b/src/components/generic-components/edit-components/dictionary-edit.tsx
@@ -1,6 +1,7 @@
import { ReactNode } from "react";
import { EditProps } from "@components/generic-components/edit-components/common";
-import { Autocomplete, TextField } from "@mui/material";
+import Autocomplete from "@mui/material/Autocomplete";
+import TextField from "@mui/material/TextField";
import { DictItem } from "@components/generic-components";
export const DictionaryEdit = ({
diff --git a/src/components/generic-components/edit-components/enum-edit.tsx b/src/components/generic-components/edit-components/enum-edit.tsx
index 0678b015..2457311d 100644
--- a/src/components/generic-components/edit-components/enum-edit.tsx
+++ b/src/components/generic-components/edit-components/enum-edit.tsx
@@ -1,6 +1,7 @@
import { ReactNode } from "react";
import { EditProps } from "@components/generic-components/edit-components/common";
-import { Autocomplete, TextField } from "@mui/material";
+import Autocomplete from "@mui/material/Autocomplete";
+import TextField from "@mui/material/TextField";
export const EnumEdit = ({
key,
diff --git a/src/components/generic-components/edit-components/number-edit.tsx b/src/components/generic-components/edit-components/number-edit.tsx
index 837c3254..442a5330 100644
--- a/src/components/generic-components/edit-components/number-edit.tsx
+++ b/src/components/generic-components/edit-components/number-edit.tsx
@@ -1,6 +1,6 @@
import { ReactNode } from "react";
import { EditProps } from "@components/generic-components/edit-components/common";
-import { TextField } from "@mui/material";
+import TextField from "@mui/material/TextField";
export const NumberEdit = ({
key,
diff --git a/src/components/generic-components/edit-components/text-edit.tsx b/src/components/generic-components/edit-components/text-edit.tsx
index 064753c8..2a9d58f3 100644
--- a/src/components/generic-components/edit-components/text-edit.tsx
+++ b/src/components/generic-components/edit-components/text-edit.tsx
@@ -1,6 +1,6 @@
import { ReactNode } from "react";
import { EditProps } from "@components/generic-components/edit-components/common";
-import { TextField } from "@mui/material";
+import TextField from "@mui/material/TextField";
export const TextEdit = ({
key,
diff --git a/src/components/generic-components/generic-data-grid.tsx b/src/components/generic-components/generic-data-grid.tsx
index c03c5755..f54f1646 100644
--- a/src/components/generic-components/generic-data-grid.tsx
+++ b/src/components/generic-components/generic-data-grid.tsx
@@ -24,7 +24,9 @@ import {
GenericDataGridSettings,
} from "@components/generic-components/common";
import { ActionButtonContainer, DataTableContainer } from "@components/data-table/index.styled";
-import { Box, IconButton, Typography } from "@mui/material";
+import IconButton from "@mui/material/IconButton";
+import Box from "@mui/material/Box";
+import Typography from "@mui/material/Typography";
import { Pencil, Eye, AlertCircle } from "lucide-react";
import dayjs from "dayjs";
import useLocalStorage from "use-local-storage";
diff --git a/src/components/generic-components/generic-form.tsx b/src/components/generic-components/generic-form.tsx
index 9d0397b0..cb2549b2 100644
--- a/src/components/generic-components/generic-form.tsx
+++ b/src/components/generic-components/generic-form.tsx
@@ -8,7 +8,13 @@ import {
} from "@components/generic-components/common";
import { useEffect, useState } from "react";
import { useModuleWrapperContext } from "@providers/module-wrapper-provider";
-import { Card, CardContent, Grid, Tab, Tabs, Typography, Box } from "@mui/material";
+import Card from "@mui/material/Card";
+import CardContent from "@mui/material/CardContent";
+import Grid from "@mui/material/Grid";
+import Tab from "@mui/material/Tab";
+import Tabs from "@mui/material/Tabs";
+import Typography from "@mui/material/Typography";
+import Box from "@mui/material/Box";
import {
NumberEdit,
TextEdit,
diff --git a/src/components/generic-components/generic-module.tsx b/src/components/generic-components/generic-module.tsx
index c122ae81..e7aac7e6 100644
--- a/src/components/generic-components/generic-module.tsx
+++ b/src/components/generic-components/generic-module.tsx
@@ -1,10 +1,9 @@
import { Outlet, Route, Routes } from "react-router-dom";
import {
- addFormRoute,
- CoreModule,
- editFormRoute,
+ CoreModuleType,
getAddFormRoute,
- viewFormRoute,
+ getEditFormRoute,
+ getViewFormRoute,
} from "@lib/router";
import {
BasicTypeForGeneric,
@@ -20,7 +19,8 @@ import {
import { ModuleWrapper } from "@components/module-wrapper";
import { dataListBreadcrumbLinks } from "../../utils/constants";
import { GenericForm, GenericFormProps } from "@components/generic-components/generic-form";
-import { Button, Box } from "@mui/material";
+import Button from "@mui/material/Button";
+import Box from "@mui/material/Box";
import { SearchBar } from "@components/search-bar";
import { GhostLink } from "@components/ghost-link";
import {
@@ -67,7 +67,7 @@ interface ExtraActions {
interface GenericModuleProps {
moduleName: string;
- modulePath: CoreModule;
+ modulePath: CoreModuleType;
addButtonContent?: string | ReactNode | undefined;
extraActions?: ExtraActions | undefined;
tableProps?: GenericDataGridProps;
@@ -308,7 +308,7 @@ export function GenericModule
)}
@@ -397,9 +397,9 @@ export function GenericModule
-
-
-
+
+
+
>
diff --git a/src/components/generic-components/index.styled.ts b/src/components/generic-components/index.styled.ts
index 3c661439..287072c6 100644
--- a/src/components/generic-components/index.styled.ts
+++ b/src/components/generic-components/index.styled.ts
@@ -1,4 +1,6 @@
-import { Divider, ListItemText, styled } from "@mui/material";
+import Divider from "@mui/material/Divider";
+import ListItemText from "@mui/material/ListItemText";
+import { styled } from "@mui/material/styles";
export const GenericViewDeleteContainer = styled("div")`
margin-top: ${({ theme }) => theme.spacing(2)};
diff --git a/src/components/generic-components/view-components/array-view.tsx b/src/components/generic-components/view-components/array-view.tsx
index 2a3f06a7..75e73ecf 100644
--- a/src/components/generic-components/view-components/array-view.tsx
+++ b/src/components/generic-components/view-components/array-view.tsx
@@ -1,12 +1,10 @@
-import {
- Dialog,
- DialogTitle,
- Table,
- TableBody,
- TableCell,
- TableHead,
- TableRow,
-} from "@mui/material";
+import Dialog from "@mui/material/Dialog";
+import DialogTitle from "@mui/material/DialogTitle";
+import Table from "@mui/material/Table";
+import TableBody from "@mui/material/TableBody";
+import TableCell from "@mui/material/TableCell";
+import TableHead from "@mui/material/TableHead";
+import TableRow from "@mui/material/TableRow";
import { ReactNode, useState } from "react";
import { camelCaseToTitleCase, isJsonArray } from "../common";
import { ViewListItemText } from "../index.styled";
diff --git a/src/components/ghost-link/index.ts b/src/components/ghost-link/index.ts
index c0ade8fe..c7cd5917 100644
--- a/src/components/ghost-link/index.ts
+++ b/src/components/ghost-link/index.ts
@@ -1,5 +1,5 @@
import { Link } from "react-router-dom";
-import { styled } from "@mui/material";
+import { styled } from "@mui/material/styles";
const aResetStyle = `
text-decoration: none;
diff --git a/src/components/global-language-filter/index.tsx b/src/components/global-language-filter/index.tsx
index 10658949..25686f6b 100644
--- a/src/components/global-language-filter/index.tsx
+++ b/src/components/global-language-filter/index.tsx
@@ -1,4 +1,7 @@
-import { TextField, MenuItem, Chip, ListSubheader } from "@mui/material";
+import TextField from "@mui/material/TextField";
+import MenuItem from "@mui/material/MenuItem";
+import Chip from "@mui/material/Chip";
+import ListSubheader from "@mui/material/ListSubheader";
import { useConfig } from "@providers/config-provider";
import { useGlobalLanguageFilter } from "@providers/global-language-filter-provider";
import { Globe, Languages } from "lucide-react";
diff --git a/src/components/image-selection-dialog/image-selection-dialog.tsx b/src/components/image-selection-dialog/image-selection-dialog.tsx
index c7669782..341529ee 100644
--- a/src/components/image-selection-dialog/image-selection-dialog.tsx
+++ b/src/components/image-selection-dialog/image-selection-dialog.tsx
@@ -1,22 +1,19 @@
import React, { useState, useEffect, useMemo, useCallback } from "react";
-import {
- Dialog,
- DialogTitle,
- DialogContent,
- DialogActions,
- Box,
- Button,
- Grid,
- TextField,
- Typography,
- CircularProgress,
- Breadcrumbs,
- Paper,
- IconButton,
- InputAdornment,
-} from "@mui/material";
-import { Search, X } from "lucide-react";
-import FolderIcon from "@mui/icons-material/Folder";
+import Dialog from "@mui/material/Dialog";
+import DialogTitle from "@mui/material/DialogTitle";
+import DialogContent from "@mui/material/DialogContent";
+import DialogActions from "@mui/material/DialogActions";
+import Box from "@mui/material/Box";
+import Button from "@mui/material/Button";
+import Grid from "@mui/material/Grid";
+import TextField from "@mui/material/TextField";
+import Typography from "@mui/material/Typography";
+import CircularProgress from "@mui/material/CircularProgress";
+import Breadcrumbs from "@mui/material/Breadcrumbs";
+import Paper from "@mui/material/Paper";
+import IconButton from "@mui/material/IconButton";
+import InputAdornment from "@mui/material/InputAdornment";
+import { Search, X, Folder as FolderIcon } from "lucide-react";
import { useRequestContext } from "@providers/request-provider";
import { wrapApiClient } from "@lib/network/wrapApiClient";
import { buildAbsoluteUrlWithCacheBust } from "@lib/network/utils";
@@ -321,11 +318,9 @@ export const ImageSelectionDialog: React.FC = ({
}}
>
= ({
: "#e0e0e0",
borderRadius: 2,
overflow: "hidden",
- transition: "all 0.2s",
- "&:hover": {
- elevation: 3,
- transform: "translateY(-2px)",
- },
}}
onClick={() => handleImageSelect(item)}
>
diff --git a/src/components/image-selection-dialog/index.tsx b/src/components/image-selection-dialog/index.tsx
index 930ee865..3f26df17 100644
--- a/src/components/image-selection-dialog/index.tsx
+++ b/src/components/image-selection-dialog/index.tsx
@@ -1,15 +1,13 @@
import React, { useState } from "react";
-import {
- Box,
- Button,
- Typography,
- CircularProgress,
- IconButton,
- Paper,
- Alert,
- Stack,
- Link,
-} from "@mui/material";
+import Box from "@mui/material/Box";
+import Button from "@mui/material/Button";
+import Typography from "@mui/material/Typography";
+import CircularProgress from "@mui/material/CircularProgress";
+import IconButton from "@mui/material/IconButton";
+import Paper from "@mui/material/Paper";
+import Alert from "@mui/material/Alert";
+import Stack from "@mui/material/Stack";
+import Link from "@mui/material/Link";
import { Upload, Trash2, Image as ImageIcon, ExternalLink, Sparkles } from "lucide-react";
import { useDropzone } from "react-dropzone";
import { useRequestContext } from "@providers/request-provider";
diff --git a/src/components/language-select/index.tsx b/src/components/language-select/index.tsx
index 66a54936..7697463b 100644
--- a/src/components/language-select/index.tsx
+++ b/src/components/language-select/index.tsx
@@ -1,4 +1,5 @@
-import { TextField, MenuItem } from "@mui/material";
+import TextField from "@mui/material/TextField";
+import MenuItem from "@mui/material/MenuItem";
import { useConfig } from "@providers/config-provider";
interface LanguageSelectProps {
diff --git a/src/components/layout/index.tsx b/src/components/layout/index.tsx
index 91e33b0a..78dac9b9 100644
--- a/src/components/layout/index.tsx
+++ b/src/components/layout/index.tsx
@@ -1,4 +1,5 @@
-import { Box, styled } from "@mui/material";
+import Box from "@mui/material/Box";
+import { styled } from "@mui/material/styles";
import { PropsWithChildren } from "react";
import "react-toastify/dist/ReactToastify.css";
diff --git a/src/components/link-translation-dialog/index.tsx b/src/components/link-translation-dialog/index.tsx
index db8ac4df..e936c10f 100644
--- a/src/components/link-translation-dialog/index.tsx
+++ b/src/components/link-translation-dialog/index.tsx
@@ -1,20 +1,18 @@
-import {
- Dialog,
- DialogTitle,
- DialogContent,
- DialogActions,
- Button,
- TextField,
- Box,
- Typography,
- Card,
- CardContent,
- Chip,
- IconButton,
- CircularProgress,
- Alert,
- InputAdornment,
-} from "@mui/material";
+import Dialog from "@mui/material/Dialog";
+import DialogTitle from "@mui/material/DialogTitle";
+import DialogContent from "@mui/material/DialogContent";
+import DialogActions from "@mui/material/DialogActions";
+import Button from "@mui/material/Button";
+import TextField from "@mui/material/TextField";
+import Box from "@mui/material/Box";
+import Typography from "@mui/material/Typography";
+import Card from "@mui/material/Card";
+import CardContent from "@mui/material/CardContent";
+import Chip from "@mui/material/Chip";
+import IconButton from "@mui/material/IconButton";
+import CircularProgress from "@mui/material/CircularProgress";
+import Alert from "@mui/material/Alert";
+import InputAdornment from "@mui/material/InputAdornment";
import { Search, X, Link as LinkIcon } from "lucide-react";
import { useState, useEffect } from "react";
import { useConfig } from "@providers/config-provider";
diff --git a/src/components/markdown-editor/commands/image-upload.tsx b/src/components/markdown-editor/commands/image-upload.tsx
index c80d331f..2d9e4eeb 100644
--- a/src/components/markdown-editor/commands/image-upload.tsx
+++ b/src/components/markdown-editor/commands/image-upload.tsx
@@ -1,5 +1,5 @@
import { Image } from "lucide-react";
-import { Button } from "@mui/material";
+import Button from "@mui/material/Button";
import { ExtendedCommandBase } from "../types";
import { useRequestContext } from "@providers/request-provider";
import { ContentDetails } from "@features/content/content-edit/types";
diff --git a/src/components/markdown-live-viewer/index.tsx b/src/components/markdown-live-viewer/index.tsx
index 40e4adeb..bba3cb8b 100644
--- a/src/components/markdown-live-viewer/index.tsx
+++ b/src/components/markdown-live-viewer/index.tsx
@@ -1,14 +1,12 @@
import { useMemo, useEffect, useState, useRef } from "react";
-import {
- Box,
- CircularProgress,
- Typography,
- Alert,
- IconButton,
- ToggleButtonGroup,
- ToggleButton,
- Tooltip,
-} from "@mui/material";
+import Box from "@mui/material/Box";
+import CircularProgress from "@mui/material/CircularProgress";
+import Typography from "@mui/material/Typography";
+import Alert from "@mui/material/Alert";
+import IconButton from "@mui/material/IconButton";
+import ToggleButtonGroup from "@mui/material/ToggleButtonGroup";
+import ToggleButton from "@mui/material/ToggleButton";
+import Tooltip from "@mui/material/Tooltip";
import { ZoomIn, ZoomOut, Monitor, Smartphone, RotateCcw } from "lucide-react";
import { MarkdownLiveViewerProps } from "./types";
import "./styles.css";
diff --git a/src/components/mdx-editor-new/components/mdx-code-block.tsx b/src/components/mdx-editor-new/components/mdx-code-block.tsx
index 249d7063..d0d84c19 100644
--- a/src/components/mdx-editor-new/components/mdx-code-block.tsx
+++ b/src/components/mdx-editor-new/components/mdx-code-block.tsx
@@ -1,5 +1,5 @@
import React from "react";
-import { Box } from "@mui/material";
+import Box from "@mui/material/Box";
import CodeEditor from "@uiw/react-textarea-code-editor";
interface MdxCodeBlockProps {
diff --git a/src/components/mdx-editor-new/components/mdx-components-panel.tsx b/src/components/mdx-editor-new/components/mdx-components-panel.tsx
index 6d16b593..e93607b5 100644
--- a/src/components/mdx-editor-new/components/mdx-components-panel.tsx
+++ b/src/components/mdx-editor-new/components/mdx-components-panel.tsx
@@ -1,13 +1,11 @@
import React from "react";
-import {
- Box,
- Typography,
- Tooltip,
- Accordion,
- AccordionSummary,
- AccordionDetails,
- Stack,
-} from "@mui/material";
+import Box from "@mui/material/Box";
+import Typography from "@mui/material/Typography";
+import Tooltip from "@mui/material/Tooltip";
+import Accordion from "@mui/material/Accordion";
+import AccordionSummary from "@mui/material/AccordionSummary";
+import AccordionDetails from "@mui/material/AccordionDetails";
+import Stack from "@mui/material/Stack";
import { ChevronDown, Copy } from "lucide-react";
import { MdxComponentDto, MdxComponentPropertyDto } from "@lib/network/swagger-client";
import { MdxCodeBlock } from "./mdx-code-block";
diff --git a/src/components/mdx-editor-new/mdx-editor-new.tsx b/src/components/mdx-editor-new/mdx-editor-new.tsx
index 16be8327..2e9d702c 100644
--- a/src/components/mdx-editor-new/mdx-editor-new.tsx
+++ b/src/components/mdx-editor-new/mdx-editor-new.tsx
@@ -1,6 +1,11 @@
import { useCallback, useEffect, useState, useMemo, useRef } from "react";
import React from "react";
-import { Box, Grid, IconButton, Drawer, Typography, Chip } from "@mui/material";
+import Box from "@mui/material/Box";
+import Grid from "@mui/material/Grid";
+import IconButton from "@mui/material/IconButton";
+import Drawer from "@mui/material/Drawer";
+import Typography from "@mui/material/Typography";
+import Chip from "@mui/material/Chip";
import { Component, ImagePlus } from "lucide-react";
import {
MDXEditor,
diff --git a/src/components/media-sort-popup/index.tsx b/src/components/media-sort-popup/index.tsx
index 55fbecd8..a25a26af 100644
--- a/src/components/media-sort-popup/index.tsx
+++ b/src/components/media-sort-popup/index.tsx
@@ -1,5 +1,10 @@
import React from "react";
-import { Popover, Divider, Box, useTheme, Stack, Button } from "@mui/material";
+import Popover from "@mui/material/Popover";
+import Divider from "@mui/material/Divider";
+import Box from "@mui/material/Box";
+import { useTheme } from "@mui/material/styles";
+import Stack from "@mui/material/Stack";
+import Button from "@mui/material/Button";
import { Check } from "lucide-react";
interface SortOption {
diff --git a/src/components/metric-cells/index.tsx b/src/components/metric-cells/index.tsx
index 6fdea643..2f0414d5 100644
--- a/src/components/metric-cells/index.tsx
+++ b/src/components/metric-cells/index.tsx
@@ -1,4 +1,5 @@
-import { Box, Typography } from "@mui/material";
+import Box from "@mui/material/Box";
+import Typography from "@mui/material/Typography";
import { TrendingUp } from "lucide-react";
import {
normalizeNumber,
diff --git a/src/components/module-wrapper/index.styled.tsx b/src/components/module-wrapper/index.styled.tsx
index 220bfac9..4fffe9c5 100644
--- a/src/components/module-wrapper/index.styled.tsx
+++ b/src/components/module-wrapper/index.styled.tsx
@@ -1,4 +1,5 @@
-import { CircularProgress, styled } from "@mui/material";
+import CircularProgress from "@mui/material/CircularProgress";
+import { styled } from "@mui/material/styles";
export const ActionsContainer = styled("div")`
display: flex;
diff --git a/src/components/module/index.ts b/src/components/module/index.ts
index 324008b2..29be7062 100644
--- a/src/components/module/index.ts
+++ b/src/components/module/index.ts
@@ -1,4 +1,4 @@
-import { styled } from "@mui/material";
+import { styled } from "@mui/material/styles";
export const ModuleContainer = styled("div")<{ fullWidth?: boolean }>`
display: flex;
diff --git a/src/components/no-records-display/index.tsx b/src/components/no-records-display/index.tsx
index ceb5166a..68205e3c 100644
--- a/src/components/no-records-display/index.tsx
+++ b/src/components/no-records-display/index.tsx
@@ -1,5 +1,8 @@
import React from "react";
-import { Box, Typography, Button, Paper } from "@mui/material";
+import Box from "@mui/material/Box";
+import Typography from "@mui/material/Typography";
+import Button from "@mui/material/Button";
+import Paper from "@mui/material/Paper";
import { Search, FileX, RefreshCw } from "lucide-react";
interface NoRecordsDisplayProps {
diff --git a/src/components/password-requirements/index.tsx b/src/components/password-requirements/index.tsx
index 8162e14a..6ccb64ab 100644
--- a/src/components/password-requirements/index.tsx
+++ b/src/components/password-requirements/index.tsx
@@ -1,13 +1,11 @@
import React from "react";
-import {
- Box,
- List,
- ListItem,
- ListItemIcon,
- ListItemText,
- Typography,
- Skeleton,
-} from "@mui/material";
+import Box from "@mui/material/Box";
+import List from "@mui/material/List";
+import ListItem from "@mui/material/ListItem";
+import ListItemIcon from "@mui/material/ListItemIcon";
+import ListItemText from "@mui/material/ListItemText";
+import Typography from "@mui/material/Typography";
+import Skeleton from "@mui/material/Skeleton";
import { CheckCircle, XCircle } from "lucide-react";
import { PasswordValidationResult, PasswordPolicySettings } from "../../hooks/use-password-policy";
diff --git a/src/components/publication-status-dialog/index.tsx b/src/components/publication-status-dialog/index.tsx
index 90bf119f..883022af 100644
--- a/src/components/publication-status-dialog/index.tsx
+++ b/src/components/publication-status-dialog/index.tsx
@@ -1,21 +1,19 @@
-import {
- Dialog,
- DialogTitle,
- DialogContent,
- DialogActions,
- Button,
- Typography,
- Box,
- IconButton,
- Alert,
- FormControlLabel,
- Checkbox,
- Radio,
- RadioGroup,
- FormControl,
- FormLabel,
- Stack,
-} from "@mui/material";
+import Dialog from "@mui/material/Dialog";
+import DialogTitle from "@mui/material/DialogTitle";
+import DialogContent from "@mui/material/DialogContent";
+import DialogActions from "@mui/material/DialogActions";
+import Button from "@mui/material/Button";
+import Typography from "@mui/material/Typography";
+import Box from "@mui/material/Box";
+import IconButton from "@mui/material/IconButton";
+import Alert from "@mui/material/Alert";
+import FormControlLabel from "@mui/material/FormControlLabel";
+import Checkbox from "@mui/material/Checkbox";
+import Radio from "@mui/material/Radio";
+import RadioGroup from "@mui/material/RadioGroup";
+import FormControl from "@mui/material/FormControl";
+import FormLabel from "@mui/material/FormLabel";
+import Stack from "@mui/material/Stack";
import { DatePicker } from "@mui/x-date-pickers";
import { Calendar, X } from "lucide-react";
import { useState, useEffect } from "react";
diff --git a/src/components/remote-autocomplete/index.tsx b/src/components/remote-autocomplete/index.tsx
index 2d96bf8b..d08d81e0 100644
--- a/src/components/remote-autocomplete/index.tsx
+++ b/src/components/remote-autocomplete/index.tsx
@@ -1,4 +1,6 @@
-import { Autocomplete, TextField, CircularProgress } from "@mui/material";
+import Autocomplete from "@mui/material/Autocomplete";
+import TextField from "@mui/material/TextField";
+import CircularProgress from "@mui/material/CircularProgress";
import { RemoteAutoCompleteProps, RemoteValues } from "./types";
import React, { useState, useEffect } from "react";
import { useRequestContext } from "@providers/request-provider";
diff --git a/src/components/responsive-actions/index.tsx b/src/components/responsive-actions/index.tsx
index c785c986..bf18821d 100644
--- a/src/components/responsive-actions/index.tsx
+++ b/src/components/responsive-actions/index.tsx
@@ -1,5 +1,10 @@
import React, { useRef, useLayoutEffect, useState } from "react";
-import { IconButton, Menu, MenuItem, Box, Typography, useTheme } from "@mui/material";
+import IconButton from "@mui/material/IconButton";
+import Menu from "@mui/material/Menu";
+import MenuItem from "@mui/material/MenuItem";
+import Box from "@mui/material/Box";
+import Typography from "@mui/material/Typography";
+import { useTheme } from "@mui/material/styles";
import { MoreHorizontal } from "lucide-react";
import { GhostLink } from "@components/ghost-link";
diff --git a/src/components/restore-data/index.tsx b/src/components/restore-data/index.tsx
index 9774b2a1..bfc78f03 100644
--- a/src/components/restore-data/index.tsx
+++ b/src/components/restore-data/index.tsx
@@ -1,12 +1,10 @@
-import {
- Dialog,
- DialogContent,
- DialogContentText,
- DialogTitle,
- DialogActions,
- Button,
- Fade,
-} from "@mui/material";
+import Dialog from "@mui/material/Dialog";
+import DialogContent from "@mui/material/DialogContent";
+import DialogContentText from "@mui/material/DialogContentText";
+import DialogTitle from "@mui/material/DialogTitle";
+import DialogActions from "@mui/material/DialogActions";
+import Button from "@mui/material/Button";
+import Fade from "@mui/material/Fade";
import { RestoreDataProps } from "./types";
import React from "react";
import { TransitionProps } from "@mui/material/transitions";
diff --git a/src/components/saving-bar/index.tsx b/src/components/saving-bar/index.tsx
index 9e72bd54..1ba3f1dd 100644
--- a/src/components/saving-bar/index.tsx
+++ b/src/components/saving-bar/index.tsx
@@ -1,11 +1,11 @@
/* eslint-disable react/display-name */
+import React, { useEffect, useState } from "react";
import CircularProgress from "@mui/material/CircularProgress";
import Grid from "@mui/material/Grid";
import Typography from "@mui/material/Typography";
+import Box from "@mui/material/Box";
+import Fade from "@mui/material/Fade";
import { Save } from "lucide-react";
-import { Box, Fade } from "@mui/material";
-import { useEffect, useState } from "react";
-import React from "react";
const SavingBarBegin = React.forwardRef((props, ref) => {
return (
diff --git a/src/components/search-bar/index.tsx b/src/components/search-bar/index.tsx
index 7d1726be..4d6ed996 100644
--- a/src/components/search-bar/index.tsx
+++ b/src/components/search-bar/index.tsx
@@ -1,5 +1,8 @@
import { useEffect, useState } from "react";
-import { TextField, Box, InputAdornment, IconButton } from "@mui/material";
+import TextField from "@mui/material/TextField";
+import Box from "@mui/material/Box";
+import InputAdornment from "@mui/material/InputAdornment";
+import IconButton from "@mui/material/IconButton";
import { Search, X } from "lucide-react";
interface SearchBoxProps {
setSearchTermOnChange: (searchTerm: string) => void;
diff --git a/src/components/side-bar/index.styled.tsx b/src/components/side-bar/index.styled.tsx
index e0d3ba41..9de7ef81 100644
--- a/src/components/side-bar/index.styled.tsx
+++ b/src/components/side-bar/index.styled.tsx
@@ -1,15 +1,11 @@
-import {
- Drawer,
- ListItemButton,
- ListItemButtonProps,
- ListItemIcon,
- ListItemText,
- ListItemTextProps,
- ListSubheader,
- styled,
- IconButton,
-} from "@mui/material";
import { ElementType } from "react";
+import Drawer from "@mui/material/Drawer";
+import ListItemButton, { type ListItemButtonProps } from "@mui/material/ListItemButton";
+import ListItemIcon from "@mui/material/ListItemIcon";
+import ListItemText, { type ListItemTextProps } from "@mui/material/ListItemText";
+import ListSubheader from "@mui/material/ListSubheader";
+import { styled } from "@mui/material/styles";
+import IconButton from "@mui/material/IconButton";
export const SidebarTopContainer = styled("div")<{
isMobile?: boolean;
@@ -116,12 +112,11 @@ export const ListSubheaderStyled = styled(ListSubheader, {
font-size: ${({ theme }) => theme.typography.subtitle2.fontSize};
color: ${({ theme }) => theme.typography.subtitle2.color};
font-weight: ${({ theme }) => theme.typography.subtitle2.fontWeight};
- display: ${({ isCollapsed }) => (isCollapsed ? "none" : "flex")};
- padding-left: 16px;
- padding-right: 8px;
- padding-top: 8px;
- padding-bottom: 8px;
- min-height: 32px;
+ display: ${({ isCollapsed }) => (isCollapsed ? "none" : "block")};
+ padding-left: 18px;
+ padding-right: 0px;
+ padding-bottom: 4px;
+ min-height: 0;
line-height: ${({ theme }) => theme.typography.subtitle2.lineHeight};
border-radius: ${({ theme }) => theme.spacing(1)};
transition: background-color 0.2s ease;
@@ -135,48 +130,69 @@ type SidebarLinkProps = ListItemButtonProps & {
export const SidebarLink = styled(ListItemButton, {
shouldForwardProp: (prop) => prop !== "isCollapsed",
-})`
- border-radius: ${({ theme }) => theme.spacing(2)};
- height: ${({ theme }) => theme.spacing(9)};
- margin-top: ${({ theme }) => theme.spacing(1)};
- margin-left: ${({ theme, isCollapsed }) => (isCollapsed ? theme.spacing(1) : "0")};
- margin-right: ${({ theme, isCollapsed }) => (isCollapsed ? theme.spacing(1) : "10px")};
- color: ${({ theme: { palette } }) => palette.text.secondary};
- min-width: ${({ isCollapsed }) => (isCollapsed ? "56px" : "auto")};
- justify-content: ${({ isCollapsed }) => (isCollapsed ? "center" : "flex-start")};
- padding-left: ${({ theme, isCollapsed }) => (isCollapsed ? "0" : theme.spacing(2))};
+})<{ isCollapsed?: boolean }>(({ theme, isCollapsed }) => `
+ border-radius: ${theme.spacing(2)};
+ height: ${theme.spacing(9)};
+ margin-top: ${theme.spacing(1)};
+ margin-left: ${isCollapsed ? theme.spacing(1) : "10px"};
+ margin-right: ${isCollapsed ? theme.spacing(1) : "10px"};
+ color: ${theme.palette.text.primary};
+ min-width: ${isCollapsed ? "56px" : "auto"};
+ justify-content: ${isCollapsed ? "center" : "flex-start"};
+ padding-left: ${isCollapsed ? "0" : theme.spacing(2)};
+ background-color: transparent;
+ transition: background-color 0.2s ease;
+
:hover {
- background-color: ${({ theme: { palette } }) => palette.secondary.light};
+ background-color: ${theme.palette.background.primaryHover};
}
- &.Mui-selected {
- color: ${({ theme: { palette } }) => palette.primary.main};
- background-color: ${({ theme: { palette } }) => palette.primary.light};
+ :focus,
+ :focus-visible {
+ outline: 2px solid ${theme.palette.primary.main};
+ outline-offset: 2px;
+ background-color: ${theme.palette.primary.light};
+ color: ${theme.palette.primary.contrastText};
}
-`;
-type SidebarLinkTextProps = ListItemTextProps & {
- isCollapsed?: boolean;
-};
+ &.Mui-selected {
+ color: ${theme.palette.primary.contrastText};
+ background-color: ${theme.palette.primary.main};
+ font-weight: 600;
+
+ :hover {
+ background-color: ${theme.palette.primary.dark};
+ color: ${theme.palette.primary.contrastText};
+ }
+
+ :focus,
+ :focus-visible {
+ outline: 2px solid ${theme.palette.primary.dark};
+ outline-offset: 2px;
+ background-color: ${theme.palette.primary.main};
+ }
+ }
+`);
export const SidebarLinkText = styled(ListItemText, {
shouldForwardProp: (prop) => prop !== "isCollapsed",
-})`
+})<{ isCollapsed?: boolean }>(({ theme, isCollapsed }) => `
.MuiTypography-root {
font-weight: 500;
font-size: 14px;
line-height: 20px;
- margin-left: ${({ theme }) => theme.spacing(1)};
+ margin-left: ${theme.spacing(1)};
}
- display: ${({ isCollapsed }) => (isCollapsed ? "none" : "block")};
-`;
+ display: ${isCollapsed ? "none" : "block"};
+`);
export const ListItemIconStyled = styled(ListItemIcon)`
min-width: ${({ theme }) => theme.spacing(8)};
- color: ${({ theme }) => theme.typography.subtitle2.color};
- margin-left: ${({ theme }) => theme.spacing(3)};
+ color: ${({ theme }) => theme.palette.text.secondary};
+ transition: color 0.2s ease;
+
.Mui-selected & {
- color: ${({ theme }) => theme.palette.primary.main};
+ color: ${({ theme }) => theme.palette.primary.contrastText};
}
` as typeof ListItemIcon;
diff --git a/src/components/side-bar/index.tsx b/src/components/side-bar/index.tsx
index 18a7d4db..9b67a4f4 100644
--- a/src/components/side-bar/index.tsx
+++ b/src/components/side-bar/index.tsx
@@ -1,14 +1,13 @@
-import {
- List,
- useMediaQuery,
- useTheme,
- CircularProgress,
- IconButton,
- Tooltip,
- Collapse,
- Box,
-} from "@mui/material";
import { useEffect, useState } from "react";
+import {useTheme} from "@mui/material/styles";
+import useMediaQuery from "@mui/material/useMediaQuery";
+import List from "@mui/material/List";
+import Typography from "@mui/material/Typography";
+import CircularProgress from "@mui/material/CircularProgress";
+import IconButton from "@mui/material/IconButton";
+import Tooltip from "@mui/material/Tooltip";
+import Collapse from "@mui/material/Collapse";
+import Box from "@mui/material/Box";
import { PanelRightOpen, PanelLeftOpen, ChevronDown, ChevronRight } from "lucide-react";
import {
ListItemIconStyled,
@@ -22,7 +21,6 @@ import {
import { getCoreModuleRoute, CoreModule } from "lib/router";
import { useSidebar } from "@providers/sidebar-provider";
import { LogoComponent } from "@components/app-header/index.styled";
-import Typography from "@mui/material/Typography";
import { GhostLink } from "@components/ghost-link";
interface SidebarMenuItem {
@@ -129,12 +127,19 @@ export const Sidebar = ({
- {isCollapsed ? : }
+ {isCollapsed ? (
+
+ ) : (
+
+ )}
)}
diff --git a/src/components/snack-bar/constants.ts b/src/components/snack-bar/constants.ts
index 26ff6242..18deac7b 100644
--- a/src/components/snack-bar/constants.ts
+++ b/src/components/snack-bar/constants.ts
@@ -1,4 +1,4 @@
-import { AlertColor } from "@mui/material";
+import type { AlertColor } from "@mui/material/Alert";
export const initialSnackBarParams = {
message: "",
diff --git a/src/components/snack-bar/index.tsx b/src/components/snack-bar/index.tsx
index 4633f125..9e921718 100644
--- a/src/components/snack-bar/index.tsx
+++ b/src/components/snack-bar/index.tsx
@@ -1,7 +1,8 @@
import { forwardRef, SyntheticEvent, useEffect, useState } from "react";
import Stack from "@mui/material/Stack";
import Snackbar from "@mui/material/Snackbar";
-import MuiAlert, { AlertColor, AlertProps } from "@mui/material/Alert";
+import MuiAlert from "@mui/material/Alert";
+import { type AlertColor, type AlertProps } from "@mui/material/Alert";
import { CoreModule } from "lib/router";
import { useCoreModuleNavigation } from "@hooks";
diff --git a/src/components/spreadsheet-import/index.styled.ts b/src/components/spreadsheet-import/index.styled.ts
index 157fecd0..a5b71709 100644
--- a/src/components/spreadsheet-import/index.styled.ts
+++ b/src/components/spreadsheet-import/index.styled.ts
@@ -1,5 +1,6 @@
import styled from "@emotion/styled";
-import { Backdrop, Button } from "@mui/material";
+import Backdrop from "@mui/material/Backdrop";
+import Button from "@mui/material/Button";
export const FileNameTextSpan = styled("span")({
marginRight: "5px",
diff --git a/src/components/spreadsheet-import/index.tsx b/src/components/spreadsheet-import/index.tsx
index 29f06c60..dc45f88a 100644
--- a/src/components/spreadsheet-import/index.tsx
+++ b/src/components/spreadsheet-import/index.tsx
@@ -1,4 +1,4 @@
-import { CircularProgress } from "@mui/material";
+import CircularProgress from "@mui/material/CircularProgress";
import { Fragment, useState } from "react";
import { ReactSpreadsheetImport } from "react-spreadsheet-import";
import { Result } from "react-spreadsheet-import/types/types";
diff --git a/src/components/syntax-validation-indicator/index.tsx b/src/components/syntax-validation-indicator/index.tsx
index 2ca63de5..176cb0e4 100644
--- a/src/components/syntax-validation-indicator/index.tsx
+++ b/src/components/syntax-validation-indicator/index.tsx
@@ -1,5 +1,6 @@
import React from "react";
-import { Chip, Tooltip } from "@mui/material";
+import Chip from "@mui/material/Chip";
+import Tooltip from "@mui/material/Tooltip";
import { AlertCircle, CheckCircle, Clock } from "lucide-react";
import { useSyntaxValidation } from "@hooks";
import { useConfig } from "@providers/config-provider";
diff --git a/src/components/syntax-validation-preview/index.tsx b/src/components/syntax-validation-preview/index.tsx
index 4217329a..e148ad1b 100644
--- a/src/components/syntax-validation-preview/index.tsx
+++ b/src/components/syntax-validation-preview/index.tsx
@@ -1,5 +1,9 @@
import React, { useEffect, useState } from "react";
-import { Box, Alert, Typography, Chip, CircularProgress } from "@mui/material";
+import Box from "@mui/material/Box";
+import Alert from "@mui/material/Alert";
+import Typography from "@mui/material/Typography";
+import Chip from "@mui/material/Chip";
+import CircularProgress from "@mui/material/CircularProgress";
import { AlertTriangle, Code } from "lucide-react";
import {
validateContentSyntax,
diff --git a/src/components/tool-bar-button/index.tsx b/src/components/tool-bar-button/index.tsx
index 0e5b9f49..526adcb1 100644
--- a/src/components/tool-bar-button/index.tsx
+++ b/src/components/tool-bar-button/index.tsx
@@ -1,5 +1,7 @@
import React from "react";
-import { Button, ButtonProps, useTheme } from "@mui/material";
+import Button from "@mui/material/Button";
+import type { ButtonProps } from "@mui/material/Button";
+import { useTheme } from "@mui/material/styles";
interface ToolbarButtonProps extends ButtonProps {
startIcon?: React.ReactNode;
diff --git a/src/components/translate-dialog/index.tsx b/src/components/translate-dialog/index.tsx
index dff6528c..39206412 100644
--- a/src/components/translate-dialog/index.tsx
+++ b/src/components/translate-dialog/index.tsx
@@ -1,21 +1,19 @@
-import {
- Dialog,
- DialogTitle,
- DialogContent,
- DialogActions,
- Button,
- FormControl,
- InputLabel,
- Select,
- MenuItem,
- Typography,
- Box,
- IconButton,
- Radio,
- CircularProgress,
- Alert,
- Backdrop,
-} from "@mui/material";
+import Dialog from "@mui/material/Dialog";
+import DialogTitle from "@mui/material/DialogTitle";
+import DialogContent from "@mui/material/DialogContent";
+import DialogActions from "@mui/material/DialogActions";
+import Button from "@mui/material/Button";
+import FormControl from "@mui/material/FormControl";
+import InputLabel from "@mui/material/InputLabel";
+import Select from "@mui/material/Select";
+import MenuItem from "@mui/material/MenuItem";
+import Typography from "@mui/material/Typography";
+import Box from "@mui/material/Box";
+import IconButton from "@mui/material/IconButton";
+import Radio from "@mui/material/Radio";
+import CircularProgress from "@mui/material/CircularProgress";
+import Alert from "@mui/material/Alert";
+import Backdrop from "@mui/material/Backdrop";
import { Languages, X } from "lucide-react";
import { useState, useEffect } from "react";
import { useConfig } from "@providers/config-provider";
diff --git a/src/components/unified-ai-progress/index.tsx b/src/components/unified-ai-progress/index.tsx
index ff7ebb83..f31d24fe 100644
--- a/src/components/unified-ai-progress/index.tsx
+++ b/src/components/unified-ai-progress/index.tsx
@@ -1,4 +1,9 @@
-import { Dialog, DialogContent, Box, Typography, LinearProgress, Backdrop } from "@mui/material";
+import Dialog from "@mui/material/Dialog";
+import DialogContent from "@mui/material/DialogContent";
+import Box from "@mui/material/Box";
+import Typography from "@mui/material/Typography";
+import LinearProgress from "@mui/material/LinearProgress";
+import Backdrop from "@mui/material/Backdrop";
import { Bot, Sparkles } from "lucide-react";
import { useEffect, useState, useRef, useCallback, useMemo } from "react";
import type { Theme } from "@mui/material/styles";
diff --git a/src/components/validation-status-bubble/index.tsx b/src/components/validation-status-bubble/index.tsx
index d38dc0a2..2bfd99c7 100644
--- a/src/components/validation-status-bubble/index.tsx
+++ b/src/components/validation-status-bubble/index.tsx
@@ -1,5 +1,9 @@
import React from "react";
-import { Box, Tooltip, Paper, Typography, Alert } from "@mui/material";
+import Box from "@mui/material/Box";
+import Tooltip from "@mui/material/Tooltip";
+import Paper from "@mui/material/Paper";
+import Typography from "@mui/material/Typography";
+import Alert from "@mui/material/Alert";
import { AlertCircle, CheckCircle, Clock, Code, AlertTriangle } from "lucide-react";
import { useSyntaxValidation } from "@hooks";
import { useConfig } from "@providers/config-provider";
diff --git a/src/features/about/index.tsx b/src/features/about/index.tsx
index dfe49e6c..4df7321f 100644
--- a/src/features/about/index.tsx
+++ b/src/features/about/index.tsx
@@ -1,5 +1,8 @@
import { ModuleWrapper } from "@components/module-wrapper";
-import { Card, CardContent, CircularProgress, Typography } from "@mui/material";
+import Card from "@mui/material/Card";
+import CardContent from "@mui/material/CardContent";
+import CircularProgress from "@mui/material/CircularProgress";
+import Typography from "@mui/material/Typography";
import Grid from "@mui/material/Grid";
import { useRequestContext } from "@providers/request-provider";
import { useEffect, useState } from "react";
diff --git a/src/features/about/lazy.tsx b/src/features/about/lazy.tsx
new file mode 100644
index 00000000..14965fdd
--- /dev/null
+++ b/src/features/about/lazy.tsx
@@ -0,0 +1,8 @@
+import { lazy } from "react";
+
+const AboutModule = lazy(() =>
+ import("./index").then((module) => ({ default: module.AboutModule }))
+);
+
+export { AboutModule };
+
diff --git a/src/features/accounts/accounts-module.tsx b/src/features/accounts/accounts-module.tsx
index e887690a..29860665 100644
--- a/src/features/accounts/accounts-module.tsx
+++ b/src/features/accounts/accounts-module.tsx
@@ -1,4 +1,4 @@
-import { detailsRoute, addFormRoute, editFormRoute, viewFormRoute } from "lib/router";
+import { getAddFormRoute, getEditFormRoute, getViewFormRoute } from "lib/router";
import { Outlet, Route, Routes } from "react-router-dom";
import { AccountAdd } from "./add";
import { AccountEdit } from "./edit";
@@ -11,12 +11,12 @@ export const AccountsModule = () => {
<>
} />
- } />
- }>
+ } />
+ }>
} />
- } />
+ } />
- } />
+ } />
>
diff --git a/src/features/accounts/edit/index.tsx b/src/features/accounts/edit/index.tsx
index 4a2945d9..46909f56 100644
--- a/src/features/accounts/edit/index.tsx
+++ b/src/features/accounts/edit/index.tsx
@@ -2,13 +2,14 @@ import { useEffect, useState } from "react";
import { AccountDetailsDto, AccountUpdateDto } from "lib/network/swagger-client";
import { useRequestContext } from "providers/request-provider";
import { AccountForm } from "../form";
-import { useRouteParams } from "typesafe-routes";
-import { editFormRoute } from "@lib/router";
+import { useParams } from "react-router-dom";
+import { type IdRouteParams } from "@lib/router";
export const AccountEdit = () => {
const { client } = useRequestContext();
- const { id } = useRouteParams(editFormRoute);
+ const { id: idParam } = useParams();
+ const id = Number(idParam);
const [account, setAccount] = useState({ name: "" });
diff --git a/src/features/accounts/form/index.tsx b/src/features/accounts/form/index.tsx
index 563dbd79..00e2b5fb 100644
--- a/src/features/accounts/form/index.tsx
+++ b/src/features/accounts/form/index.tsx
@@ -3,28 +3,27 @@ import { KnownTagsAutocomplete } from "@components/known-tags-autocomplete";
import { useCoreModuleNavigation, useNotificationsService, useSaveShortcut } from "@hooks";
import { AccountDetailsDto } from "@lib/network/swagger-client";
import { CoreModule, getCoreModuleRoute, getViewFormRoute } from "@lib/router";
-import {
- Accordion,
- AccordionDetails,
- AccordionSummary,
- Autocomplete,
- Avatar,
- Box,
- Button,
- Card,
- CardContent,
- CircularProgress,
- Dialog,
- DialogActions,
- DialogContent,
- DialogContentText,
- DialogTitle,
- Grid,
- IconButton,
- TextField,
- Tooltip,
- Typography,
-} from "@mui/material";
+import Autocomplete from "@mui/material/Autocomplete";
+import Button from "@mui/material/Button";
+import CardContent from "@mui/material/CardContent";
+import Divider from "@mui/material/Divider";
+import Grid from "@mui/material/Grid";
+import IconButton from "@mui/material/IconButton";
+import TextField from "@mui/material/TextField";
+import Tooltip from "@mui/material/Tooltip";
+import Typography from "@mui/material/Typography";
+import Box from "@mui/material/Box";
+import Card from "@mui/material/Card";
+import CircularProgress from "@mui/material/CircularProgress";
+import Avatar from "@mui/material/Avatar";
+import Accordion from "@mui/material/Accordion";
+import AccordionSummary from "@mui/material/AccordionSummary";
+import AccordionDetails from "@mui/material/AccordionDetails";
+import Dialog from "@mui/material/Dialog";
+import DialogTitle from "@mui/material/DialogTitle";
+import DialogContent from "@mui/material/DialogContent";
+import DialogContentText from "@mui/material/DialogContentText";
+import DialogActions from "@mui/material/DialogActions";
import { useModuleWrapperContext } from "@providers/module-wrapper-provider";
import { useRequestContext } from "@providers/request-provider";
import { ChangeEvent, Fragment, SyntheticEvent, useEffect, useRef, useState } from "react";
diff --git a/src/features/accounts/index.styled.ts b/src/features/accounts/index.styled.ts
index ed1a8c0f..9ff58d28 100644
--- a/src/features/accounts/index.styled.ts
+++ b/src/features/accounts/index.styled.ts
@@ -1,4 +1,8 @@
-import { Avatar, Card, ListItem, ListItemText, styled } from "@mui/material";
+import Avatar from "@mui/material/Avatar";
+import Card from "@mui/material/Card";
+import ListItem from "@mui/material/ListItem";
+import ListItemText from "@mui/material/ListItemText";
+import { styled } from "@mui/material/styles";
export const AccountListItem = styled(ListItem)({
alignItems: "center",
diff --git a/src/features/accounts/index.tsx b/src/features/accounts/index.tsx
index d3b18dcf..3a2aa7e9 100644
--- a/src/features/accounts/index.tsx
+++ b/src/features/accounts/index.tsx
@@ -1,4 +1,6 @@
-import { Avatar, Button, ListItemAvatar } from "@mui/material";
+import Avatar from "@mui/material/Avatar";
+import Button from "@mui/material/Button";
+import ListItemAvatar from "@mui/material/ListItemAvatar";
import { AccountDetailsDto, AccountImportDto } from "lib/network/swagger-client";
import { useRequestContext } from "providers/request-provider";
import { AccountListItem, AccountListItemText, AccountUrlHref } from "./index.styled";
diff --git a/src/features/accounts/lazy.tsx b/src/features/accounts/lazy.tsx
index 4f74da82..fd0af673 100644
--- a/src/features/accounts/lazy.tsx
+++ b/src/features/accounts/lazy.tsx
@@ -1,5 +1,11 @@
import { lazy } from "react";
-export const AccountsLazy = lazy(() =>
- import("features/accounts").then(({ Accounts }) => ({ default: Accounts }))
+const AccountsModule = lazy(() =>
+ import("./accounts-module").then((module) => ({ default: module.AccountsModule }))
);
+
+const AccountsLazy = lazy(() =>
+ import("./index").then((module) => ({ default: module.Accounts }))
+);
+
+export { AccountsModule, AccountsLazy };
diff --git a/src/features/accounts/view/details/index.tsx b/src/features/accounts/view/details/index.tsx
index 1a0b37db..ac11adff 100644
--- a/src/features/accounts/view/details/index.tsx
+++ b/src/features/accounts/view/details/index.tsx
@@ -1,16 +1,13 @@
import { ReactNode, useEffect, useState } from "react";
-import { Box, Card, CardContent, Chip, Divider, Grid, Typography, useTheme } from "@mui/material";
-import {
- Building,
- Globe,
- Hash,
- MapPin,
- Share2,
- ShoppingCart,
- Tag,
- TrendingUp,
- Users,
-} from "lucide-react";
+import Box from "@mui/material/Box";
+import Card from "@mui/material/Card";
+import CardContent from "@mui/material/CardContent";
+import Chip from "@mui/material/Chip";
+import Divider from "@mui/material/Divider";
+import Grid from "@mui/material/Grid";
+import Typography from "@mui/material/Typography";
+import { useTheme } from "@mui/material/styles";
+import { Building, Globe, Hash, MapPin, Share2, ShoppingCart, Tag, TrendingUp, Users } from "lucide-react";
import { useOutletContext } from "react-router-dom";
import { useConfig } from "@providers/config-provider";
import { AccountUrlHref } from "@features/accounts/index.styled";
diff --git a/src/features/accounts/view/index.tsx b/src/features/accounts/view/index.tsx
index 050c963e..a760269f 100644
--- a/src/features/accounts/view/index.tsx
+++ b/src/features/accounts/view/index.tsx
@@ -1,22 +1,20 @@
import { SyntheticEvent, useEffect, useMemo, useRef, useState } from "react";
-import {
- Avatar,
- Box,
- Button,
- Card,
- CardContent,
- Divider,
- Tab,
- Tabs,
- Typography,
-} from "@mui/material";
-import { Edit, ExternalLink } from "lucide-react";
-import { Outlet, useLocation, useNavigate, useParams } from "react-router-dom";
-import { AccountDetailsDto } from "@lib/network/swagger-client";
+import Avatar from "@mui/material/Avatar";
+import Box from "@mui/material/Box";
+import Button from "@mui/material/Button";
+import Card from "@mui/material/Card";
+import CardContent from "@mui/material/CardContent";
+import Divider from "@mui/material/Divider";
+import Tab from "@mui/material/Tab";
+import Tabs from "@mui/material/Tabs";
+import Typography from "@mui/material/Typography";
import { CoreModule, getEditFormRoute } from "@lib/router";
+import { AccountDetailsDto } from "@lib/network/swagger-client";
import { useRequestContext } from "@providers/request-provider";
import { useNotificationsService } from "@hooks";
import { showApiError } from "@utils/api-error-parser";
+import { Edit, ExternalLink } from "lucide-react";
+import { Outlet, useLocation, useNavigate, useParams } from "react-router-dom";
import { ModuleWrapper } from "@components/module-wrapper";
import { accountFormBreadcrumbLinks } from "../constants";
import { AccountViewOutletContext } from "./types";
diff --git a/src/features/activity-log/lazy.tsx b/src/features/activity-log/lazy.tsx
new file mode 100644
index 00000000..902dc739
--- /dev/null
+++ b/src/features/activity-log/lazy.tsx
@@ -0,0 +1,8 @@
+import { lazy } from "react";
+
+const ActivityLogModule = lazy(() =>
+ import("./index").then((module) => ({ default: module.ActivityLogModule }))
+);
+
+export { ActivityLogModule };
+
diff --git a/src/features/auth/device-verify/device-verify.styled.tsx b/src/features/auth/device-verify/device-verify.styled.tsx
index 8a378787..d07b6ed2 100644
--- a/src/features/auth/device-verify/device-verify.styled.tsx
+++ b/src/features/auth/device-verify/device-verify.styled.tsx
@@ -1,5 +1,7 @@
import styled from "@emotion/styled";
-import { Box, Button, Typography } from "@mui/material";
+import Box from "@mui/material/Box";
+import Button from "@mui/material/Button";
+import Typography from "@mui/material/Typography";
export const VerifyContainer = styled(Box)`
display: flex;
@@ -67,4 +69,4 @@ export const ErrorButton = styled(Button)`
&:hover {
background-color: #d32f2f;
}
-`;
\ No newline at end of file
+`;
diff --git a/src/features/auth/device-verify/device-verify.tsx b/src/features/auth/device-verify/device-verify.tsx
index f683d486..73989bd9 100644
--- a/src/features/auth/device-verify/device-verify.tsx
+++ b/src/features/auth/device-verify/device-verify.tsx
@@ -1,5 +1,8 @@
import { useState, useEffect } from "react";
-import { Typography, CircularProgress, TextField, Box } from "@mui/material";
+import Typography from "@mui/material/Typography";
+import CircularProgress from "@mui/material/CircularProgress";
+import TextField from "@mui/material/TextField";
+import Box from "@mui/material/Box";
import { useSearchParams, useNavigate } from "react-router-dom";
import { useRequestContext } from "@providers/request-provider";
import { useAuthState } from "@providers/auth-provider";
diff --git a/src/features/auth/forgot-password/index.styled.tsx b/src/features/auth/forgot-password/index.styled.tsx
index 131267b3..05f32d78 100644
--- a/src/features/auth/forgot-password/index.styled.tsx
+++ b/src/features/auth/forgot-password/index.styled.tsx
@@ -1,5 +1,7 @@
import styled from "@emotion/styled";
-import { Box, Button, Typography } from "@mui/material";
+import Box from "@mui/material/Box";
+import Button from "@mui/material/Button";
+import Typography from "@mui/material/Typography";
export const LoginContainer = styled(Box)`
display: flex;
diff --git a/src/features/auth/forgot-password/index.tsx b/src/features/auth/forgot-password/index.tsx
index e2555bca..253ed0aa 100644
--- a/src/features/auth/forgot-password/index.tsx
+++ b/src/features/auth/forgot-password/index.tsx
@@ -1,5 +1,8 @@
import { useState } from "react";
-import { Button, Typography, TextField, Box, CircularProgress } from "@mui/material";
+import Button from "@mui/material/Button";
+import Typography from "@mui/material/Typography";
+import TextField from "@mui/material/TextField";
+import CircularProgress from "@mui/material/CircularProgress";
import { LoginContainer, StyledForm, Logo, LogoRow } from "./index.styled";
import { useForm } from "react-hook-form";
import { z } from "zod";
diff --git a/src/features/auth/login/index.styled.tsx b/src/features/auth/login/index.styled.tsx
index d8254473..c07e1bf5 100644
--- a/src/features/auth/login/index.styled.tsx
+++ b/src/features/auth/login/index.styled.tsx
@@ -1,5 +1,7 @@
import styled from "@emotion/styled";
-import { Box, Button, Typography } from "@mui/material";
+import Box from "@mui/material/Box";
+import Button from "@mui/material/Button";
+import Typography from "@mui/material/Typography";
export const LoginContainer = styled(Box)`
display: flex;
diff --git a/src/features/auth/login/index.tsx b/src/features/auth/login/index.tsx
index c106594a..6f383a9f 100644
--- a/src/features/auth/login/index.tsx
+++ b/src/features/auth/login/index.tsx
@@ -1,15 +1,13 @@
import { useMsal } from "@azure/msal-react";
import { useState, useEffect } from "react";
-import {
- Button,
- Typography,
- TextField,
- IconButton,
- InputAdornment,
- Box,
- CircularProgress,
- Link,
-} from "@mui/material";
+import Button from "@mui/material/Button";
+import Typography from "@mui/material/Typography";
+import TextField from "@mui/material/TextField";
+import IconButton from "@mui/material/IconButton";
+import InputAdornment from "@mui/material/InputAdornment";
+import Box from "@mui/material/Box";
+import CircularProgress from "@mui/material/CircularProgress";
+import Link from "@mui/material/Link";
import { Eye, EyeOff } from "lucide-react";
import { useSearchParams } from "react-router-dom";
import { LoginDto } from "@lib/network/swagger-client";
diff --git a/src/features/auth/reset-password/index.styled.tsx b/src/features/auth/reset-password/index.styled.tsx
index d8254473..c07e1bf5 100644
--- a/src/features/auth/reset-password/index.styled.tsx
+++ b/src/features/auth/reset-password/index.styled.tsx
@@ -1,5 +1,7 @@
import styled from "@emotion/styled";
-import { Box, Button, Typography } from "@mui/material";
+import Box from "@mui/material/Box";
+import Button from "@mui/material/Button";
+import Typography from "@mui/material/Typography";
export const LoginContainer = styled(Box)`
display: flex;
diff --git a/src/features/auth/reset-password/index.tsx b/src/features/auth/reset-password/index.tsx
index 59f41819..a1c62ce9 100644
--- a/src/features/auth/reset-password/index.tsx
+++ b/src/features/auth/reset-password/index.tsx
@@ -1,15 +1,13 @@
import { useState } from "react";
-import {
- Button,
- Typography,
- TextField,
- Box,
- CircularProgress,
- List,
- ListItem,
- ListItemIcon,
- ListItemText,
-} from "@mui/material";
+import Button from "@mui/material/Button";
+import Typography from "@mui/material/Typography";
+import TextField from "@mui/material/TextField";
+import Box from "@mui/material/Box";
+import CircularProgress from "@mui/material/CircularProgress";
+import List from "@mui/material/List";
+import ListItem from "@mui/material/ListItem";
+import ListItemIcon from "@mui/material/ListItemIcon";
+import ListItemText from "@mui/material/ListItemText";
import { Eye, EyeOff, Check, X } from "lucide-react";
import { useForm } from "react-hook-form";
import { z } from "zod";
diff --git a/src/features/campaigns/campaigns-module.tsx b/src/features/campaigns/campaigns-module.tsx
index e3d07f0e..c43cfe55 100644
--- a/src/features/campaigns/campaigns-module.tsx
+++ b/src/features/campaigns/campaigns-module.tsx
@@ -1,4 +1,4 @@
-import { addFormRoute, editFormRoute, viewFormRoute } from "lib/router";
+import { getAddFormRoute, getEditFormRoute, getViewFormRoute } from "lib/router";
import { Outlet, Route, Routes } from "react-router-dom";
import { Campaigns } from "./index";
import { CampaignAdd } from "./add";
@@ -10,9 +10,9 @@ export const CampaignsModule = () => {
<>
} />
- } />
- } />
- } />
+ } />
+ } />
+ } />
>
diff --git a/src/features/comments/comments-list/index.tsx b/src/features/comments/comments-list/index.tsx
index 4f4724ff..1b2d4e5c 100644
--- a/src/features/comments/comments-list/index.tsx
+++ b/src/features/comments/comments-list/index.tsx
@@ -1,32 +1,30 @@
import React, { useState, useEffect, useRef } from "react";
import { Link } from "react-router-dom";
-import {
- Box,
- Button,
- Card,
- CardContent,
- Chip,
- Avatar,
- Tabs,
- Tab,
- TextField,
- MenuItem,
- Select,
- FormControl,
- InputLabel,
- Checkbox,
- FormControlLabel,
- Dialog,
- DialogTitle,
- DialogContent,
- DialogActions,
- Typography,
- CircularProgress,
- SelectChangeEvent,
- Grid,
- Divider,
- Stack,
-} from "@mui/material";
+import Box from "@mui/material/Box";
+import Button from "@mui/material/Button";
+import Card from "@mui/material/Card";
+import CardContent from "@mui/material/CardContent";
+import Chip from "@mui/material/Chip";
+import Avatar from "@mui/material/Avatar";
+import Tabs from "@mui/material/Tabs";
+import Tab from "@mui/material/Tab";
+import TextField from "@mui/material/TextField";
+import MenuItem from "@mui/material/MenuItem";
+import Select from "@mui/material/Select";
+import FormControl from "@mui/material/FormControl";
+import InputLabel from "@mui/material/InputLabel";
+import Checkbox from "@mui/material/Checkbox";
+import FormControlLabel from "@mui/material/FormControlLabel";
+import Dialog from "@mui/material/Dialog";
+import DialogTitle from "@mui/material/DialogTitle";
+import DialogContent from "@mui/material/DialogContent";
+import DialogActions from "@mui/material/DialogActions";
+import Typography from "@mui/material/Typography";
+import CircularProgress from "@mui/material/CircularProgress";
+import type { SelectChangeEvent } from "@mui/material/Select";
+import Grid from "@mui/material/Grid";
+import Divider from "@mui/material/Divider";
+import Stack from "@mui/material/Stack";
import {
MessageSquare,
MessageCircle,
diff --git a/src/features/comments/lazy.tsx b/src/features/comments/lazy.tsx
new file mode 100644
index 00000000..c98459f1
--- /dev/null
+++ b/src/features/comments/lazy.tsx
@@ -0,0 +1,8 @@
+import { lazy } from "react";
+
+const CommentsModule = lazy(() =>
+ import("./index").then((module) => ({ default: module.CommentsModule }))
+);
+
+export { CommentsModule };
+
diff --git a/src/features/contacts/contacts-module.tsx b/src/features/contacts/contacts-module.tsx
index a61469cb..8dc86145 100644
--- a/src/features/contacts/contacts-module.tsx
+++ b/src/features/contacts/contacts-module.tsx
@@ -1,14 +1,7 @@
import {
- addFormRoute,
- contactActivityRoute,
- contactCommunicationsRoute,
- contactDealsRoute,
- contactInvoicesRoute,
- contactOrdersRoute,
- detailsRoute,
- contactLogsRoute,
- editFormRoute,
- viewFormRoute,
+ getAddFormRoute,
+ getEditFormRoute,
+ getViewFormRoute,
} from "lib/router";
import { Outlet, Route, Routes } from "react-router-dom";
import { ContactAdd } from "./add";
@@ -26,19 +19,19 @@ export const ContactsModule = () => {
<>
} />
- } />
- }>
+ } />
+ }>
} />
- } />
- } />
- } />
- } />
- } />
+ } />
+ } />
+ } />
+ } />
+ } />
{/* Legacy paths retained for compatibility */}
- } />
- } />
+ } />
+ } />
- } />
+ } />
>
diff --git a/src/features/contacts/edit/index.tsx b/src/features/contacts/edit/index.tsx
index 4a4ea3ba..ef661dec 100644
--- a/src/features/contacts/edit/index.tsx
+++ b/src/features/contacts/edit/index.tsx
@@ -1,14 +1,15 @@
import { useEffect, useState } from "react";
import { ContactDetailsDto, ContactUpdateDto } from "lib/network/swagger-client";
-import { editFormRoute } from "lib/router";
import { useRequestContext } from "providers/request-provider";
-import { useRouteParams } from "typesafe-routes";
+import { useParams } from "react-router-dom";
+import { type IdRouteParams } from "@lib/router";
import { ContactForm } from "../form";
export const ContactEdit = () => {
const { client } = useRequestContext();
- const { id } = useRouteParams(editFormRoute);
+ const { id: idParam } = useParams();
+ const id = Number(idParam);
const [contact, setContact] = useState({
firstName: "",
diff --git a/src/features/contacts/form/index.tsx b/src/features/contacts/form/index.tsx
index f033f266..6d3430d1 100644
--- a/src/features/contacts/form/index.tsx
+++ b/src/features/contacts/form/index.tsx
@@ -1,25 +1,23 @@
import { ChangeEvent, SyntheticEvent, useEffect, useRef, useState } from "react";
-import {
- Autocomplete,
- Button,
- Dialog,
- DialogActions,
- DialogContent,
- DialogContentText,
- DialogTitle,
- InputAdornment,
- TextField,
- Typography,
- Box,
- Avatar,
- Grid,
- Accordion,
- AccordionSummary,
- AccordionDetails,
- Card,
- CardContent,
- CircularProgress,
-} from "@mui/material";
+import Autocomplete from "@mui/material/Autocomplete";
+import Button from "@mui/material/Button";
+import Dialog from "@mui/material/Dialog";
+import DialogActions from "@mui/material/DialogActions";
+import DialogContent from "@mui/material/DialogContent";
+import DialogContentText from "@mui/material/DialogContentText";
+import DialogTitle from "@mui/material/DialogTitle";
+import InputAdornment from "@mui/material/InputAdornment";
+import TextField from "@mui/material/TextField";
+import Typography from "@mui/material/Typography";
+import Box from "@mui/material/Box";
+import Avatar from "@mui/material/Avatar";
+import Grid from "@mui/material/Grid";
+import Accordion from "@mui/material/Accordion";
+import AccordionSummary from "@mui/material/AccordionSummary";
+import AccordionDetails from "@mui/material/AccordionDetails";
+import Card from "@mui/material/Card";
+import CardContent from "@mui/material/CardContent";
+import CircularProgress from "@mui/material/CircularProgress";
import { ContactDetailsDto } from "lib/network/swagger-client";
import { CoreModule, getCoreModuleRoute, getViewFormRoute } from "lib/router";
import { contactAddHeader, contactEditHeader, contactFormBreadcrumbLinks } from "../constants";
diff --git a/src/features/contacts/index.styled.ts b/src/features/contacts/index.styled.ts
index 25d7332c..967cc383 100644
--- a/src/features/contacts/index.styled.ts
+++ b/src/features/contacts/index.styled.ts
@@ -1,13 +1,11 @@
-import {
- Avatar,
- Card,
- CardHeader,
- Grid,
- ListItem,
- ListItemText,
- Paper,
- styled,
-} from "@mui/material";
+import Avatar from "@mui/material/Avatar";
+import Card from "@mui/material/Card";
+import CardHeader from "@mui/material/CardHeader";
+import Grid from "@mui/material/Grid";
+import ListItem from "@mui/material/ListItem";
+import ListItemText from "@mui/material/ListItemText";
+import Paper from "@mui/material/Paper";
+import { styled } from "@mui/material/styles";
export const ActionsContainer = styled("div")`
display: flex;
diff --git a/src/features/contacts/index.tsx b/src/features/contacts/index.tsx
index 69263686..74ada5ca 100644
--- a/src/features/contacts/index.tsx
+++ b/src/features/contacts/index.tsx
@@ -1,14 +1,12 @@
-import {
- Avatar,
- Autocomplete,
- Box,
- Button,
- Chip,
- ListItemAvatar,
- MenuItem,
- TextField,
- Tooltip,
-} from "@mui/material";
+import Avatar from "@mui/material/Avatar";
+import Autocomplete from "@mui/material/Autocomplete";
+import Box from "@mui/material/Box";
+import Button from "@mui/material/Button";
+import Chip from "@mui/material/Chip";
+import ListItemAvatar from "@mui/material/ListItemAvatar";
+import MenuItem from "@mui/material/MenuItem";
+import TextField from "@mui/material/TextField";
+import Tooltip from "@mui/material/Tooltip";
import { ContactDetailsDto, ContactImportDto, SegmentDetailsDto } from "lib/network/swagger-client";
import { useRequestContext } from "providers/request-provider";
import { getAvailableContactFields } from "@features/segments/types";
diff --git a/src/features/contacts/lazy.tsx b/src/features/contacts/lazy.tsx
index fe3f852a..e0ac8e83 100644
--- a/src/features/contacts/lazy.tsx
+++ b/src/features/contacts/lazy.tsx
@@ -1,5 +1,11 @@
import { lazy } from "react";
-export const ContactsLazy = lazy(() =>
- import("features/contacts").then(({ Contacts }) => ({ default: Contacts }))
+const ContactsModule = lazy(() =>
+ import("./contacts-module").then((module) => ({ default: module.ContactsModule }))
);
+
+const ContactsLazy = lazy(() =>
+ import("./index").then((module) => ({ default: module.Contacts }))
+);
+
+export { ContactsModule, ContactsLazy };
diff --git a/src/features/contacts/view/activity/index.tsx b/src/features/contacts/view/activity/index.tsx
index 3e83a54c..9363f19e 100644
--- a/src/features/contacts/view/activity/index.tsx
+++ b/src/features/contacts/view/activity/index.tsx
@@ -1,4 +1,7 @@
-import { Box, Card, CardContent, Typography } from "@mui/material";
+import Box from "@mui/material/Box";
+import Card from "@mui/material/Card";
+import CardContent from "@mui/material/CardContent";
+import Typography from "@mui/material/Typography";
import { MessageSquareOff } from "lucide-react";
export const ContactActivity = () => {
diff --git a/src/features/contacts/view/communications/index.tsx b/src/features/contacts/view/communications/index.tsx
index 771008cb..05642881 100644
--- a/src/features/contacts/view/communications/index.tsx
+++ b/src/features/contacts/view/communications/index.tsx
@@ -1,18 +1,16 @@
-import {
- Box,
- Button,
- Card,
- CardActionArea,
- CardContent,
- Chip,
- CircularProgress,
- Dialog,
- DialogContent,
- DialogTitle,
- IconButton,
- Stack,
- Typography,
-} from "@mui/material";
+import Box from "@mui/material/Box";
+import Button from "@mui/material/Button";
+import Card from "@mui/material/Card";
+import CardActionArea from "@mui/material/CardActionArea";
+import CardContent from "@mui/material/CardContent";
+import Chip from "@mui/material/Chip";
+import CircularProgress from "@mui/material/CircularProgress";
+import Dialog from "@mui/material/Dialog";
+import DialogContent from "@mui/material/DialogContent";
+import DialogTitle from "@mui/material/DialogTitle";
+import IconButton from "@mui/material/IconButton";
+import Stack from "@mui/material/Stack";
+import Typography from "@mui/material/Typography";
import { ChevronLeft, ChevronRight, Mail, MessageSquare, X } from "lucide-react";
import { useEffect, useMemo, useState } from "react";
import { useOutletContext } from "react-router-dom";
diff --git a/src/features/contacts/view/deals/index.tsx b/src/features/contacts/view/deals/index.tsx
index f25509d0..000d5a1c 100644
--- a/src/features/contacts/view/deals/index.tsx
+++ b/src/features/contacts/view/deals/index.tsx
@@ -1,13 +1,11 @@
-import {
- Box,
- Button,
- Card,
- CardContent,
- Chip,
- CircularProgress,
- Stack,
- Typography,
-} from "@mui/material";
+import Box from "@mui/material/Box";
+import Button from "@mui/material/Button";
+import Card from "@mui/material/Card";
+import CardContent from "@mui/material/CardContent";
+import Chip from "@mui/material/Chip";
+import CircularProgress from "@mui/material/CircularProgress";
+import Stack from "@mui/material/Stack";
+import Typography from "@mui/material/Typography";
import { BriefcaseBusiness, Plus } from "lucide-react";
import { useEffect, useState } from "react";
import { useOutletContext } from "react-router-dom";
diff --git a/src/features/contacts/view/details/index.tsx b/src/features/contacts/view/details/index.tsx
index 539b13e7..97cb9009 100644
--- a/src/features/contacts/view/details/index.tsx
+++ b/src/features/contacts/view/details/index.tsx
@@ -1,15 +1,13 @@
import { ReactNode, useEffect, useState } from "react";
-import {
- Box,
- Card,
- CardActionArea,
- CardContent,
- Chip,
- Divider,
- Grid,
- Typography,
- useTheme,
-} from "@mui/material";
+import Box from "@mui/material/Box";
+import Card from "@mui/material/Card";
+import CardActionArea from "@mui/material/CardActionArea";
+import CardContent from "@mui/material/CardContent";
+import Chip from "@mui/material/Chip";
+import Divider from "@mui/material/Divider";
+import Grid from "@mui/material/Grid";
+import Typography from "@mui/material/Typography";
+import { useTheme } from "@mui/material/styles";
import {
Briefcase,
Building,
diff --git a/src/features/contacts/view/index.tsx b/src/features/contacts/view/index.tsx
index 8734294f..c41b7d9f 100644
--- a/src/features/contacts/view/index.tsx
+++ b/src/features/contacts/view/index.tsx
@@ -1,17 +1,15 @@
import { SyntheticEvent, useEffect, useMemo, useRef, useState } from "react";
-import {
- Avatar,
- Box,
- Button,
- Card,
- CardContent,
- Chip,
- Divider,
- Tab,
- Tabs,
- Tooltip,
- Typography,
-} from "@mui/material";
+import Avatar from "@mui/material/Avatar";
+import Box from "@mui/material/Box";
+import Button from "@mui/material/Button";
+import Card from "@mui/material/Card";
+import CardContent from "@mui/material/CardContent";
+import Chip from "@mui/material/Chip";
+import Divider from "@mui/material/Divider";
+import Tab from "@mui/material/Tab";
+import Tabs from "@mui/material/Tabs";
+import Tooltip from "@mui/material/Tooltip";
+import Typography from "@mui/material/Typography";
import { Briefcase, Edit, Mail, MailX } from "lucide-react";
import { Outlet, useLocation, useNavigate, useParams } from "react-router-dom";
import { ContactDetailsDto, RequestParams } from "lib/network/swagger-client";
diff --git a/src/features/contacts/view/logs/index.tsx b/src/features/contacts/view/logs/index.tsx
index 22639e43..f7e1aaaf 100644
--- a/src/features/contacts/view/logs/index.tsx
+++ b/src/features/contacts/view/logs/index.tsx
@@ -1 +1,2 @@
-export { ContactActivity as ContactLogs } from "../activity";
+import { ContactActivity as ContactLogs } from "../activity";
+export { ContactLogs };
diff --git a/src/features/contacts/view/orders/index.tsx b/src/features/contacts/view/orders/index.tsx
index 797b1d11..db6e6cb8 100644
--- a/src/features/contacts/view/orders/index.tsx
+++ b/src/features/contacts/view/orders/index.tsx
@@ -1,6 +1,11 @@
import { useEffect, useState } from "react";
-import { Box, Card, CardContent, CircularProgress, IconButton, Typography } from "@mui/material";
-import { DataGrid, GridColDef } from "@mui/x-data-grid";
+import Box from "@mui/material/Box";
+import Card from "@mui/material/Card";
+import CardContent from "@mui/material/CardContent";
+import CircularProgress from "@mui/material/CircularProgress";
+import IconButton from "@mui/material/IconButton";
+import Typography from "@mui/material/Typography";
+import { DataGrid, type GridColDef } from "@mui/x-data-grid";
import { ArrowRight, ShoppingCart } from "lucide-react";
import { useNavigate, useOutletContext } from "react-router-dom";
import { useConfig } from "@providers/config-provider";
diff --git a/src/features/content/content-edit/components/content-change-log.tsx b/src/features/content/content-edit/components/content-change-log.tsx
index b80a11ba..05fa799c 100644
--- a/src/features/content/content-edit/components/content-change-log.tsx
+++ b/src/features/content/content-edit/components/content-change-log.tsx
@@ -1,28 +1,26 @@
import { useState, useEffect, useCallback, useRef } from "react";
-import {
- Box,
- Card,
- CardContent,
- Typography,
- Chip,
- CircularProgress,
- Button,
- Dialog,
- DialogTitle,
- DialogContent,
- DialogActions,
- Divider,
- Grid,
- Paper,
- Tooltip,
- Table,
- TableBody,
- TableCell,
- TableContainer,
- TableHead,
- TableRow,
- Checkbox,
-} from "@mui/material";
+import Box from "@mui/material/Box";
+import Card from "@mui/material/Card";
+import CardContent from "@mui/material/CardContent";
+import Typography from "@mui/material/Typography";
+import Chip from "@mui/material/Chip";
+import CircularProgress from "@mui/material/CircularProgress";
+import Button from "@mui/material/Button";
+import Dialog from "@mui/material/Dialog";
+import DialogTitle from "@mui/material/DialogTitle";
+import DialogContent from "@mui/material/DialogContent";
+import DialogActions from "@mui/material/DialogActions";
+import Divider from "@mui/material/Divider";
+import Grid from "@mui/material/Grid";
+import Paper from "@mui/material/Paper";
+import Tooltip from "@mui/material/Tooltip";
+import Table from "@mui/material/Table";
+import TableBody from "@mui/material/TableBody";
+import TableCell from "@mui/material/TableCell";
+import TableContainer from "@mui/material/TableContainer";
+import TableHead from "@mui/material/TableHead";
+import TableRow from "@mui/material/TableRow";
+import Checkbox from "@mui/material/Checkbox";
import { History, Eye, User, Calendar, GitCompare, Rocket } from "lucide-react";
import dayjs from "dayjs";
import relativeTime from "dayjs/plugin/relativeTime";
diff --git a/src/features/content/content-edit/components/content-edit-action-buttons.tsx b/src/features/content/content-edit/components/content-edit-action-buttons.tsx
index 3f5533e7..1863c008 100644
--- a/src/features/content/content-edit/components/content-edit-action-buttons.tsx
+++ b/src/features/content/content-edit/components/content-edit-action-buttons.tsx
@@ -1,13 +1,11 @@
-import {
- Box,
- Button,
- CircularProgress,
- Dialog,
- DialogTitle,
- DialogContent,
- DialogContentText,
- DialogActions,
-} from "@mui/material";
+import Box from "@mui/material/Box";
+import Button from "@mui/material/Button";
+import CircularProgress from "@mui/material/CircularProgress";
+import Dialog from "@mui/material/Dialog";
+import DialogTitle from "@mui/material/DialogTitle";
+import DialogContent from "@mui/material/DialogContent";
+import DialogContentText from "@mui/material/DialogContentText";
+import DialogActions from "@mui/material/DialogActions";
import { useState } from "react";
import { useNavigate } from "react-router-dom";
import { useRequestContext } from "@providers/request-provider";
diff --git a/src/features/content/content-edit/components/content-edit-metadata-section.tsx b/src/features/content/content-edit/components/content-edit-metadata-section.tsx
index 7e3fcd9c..cdc5b84e 100644
--- a/src/features/content/content-edit/components/content-edit-metadata-section.tsx
+++ b/src/features/content/content-edit/components/content-edit-metadata-section.tsx
@@ -1,4 +1,10 @@
-import { Box, Grid, TextField, Typography, IconButton, Collapse, Alert } from "@mui/material";
+import Box from "@mui/material/Box";
+import Grid from "@mui/material/Grid";
+import TextField from "@mui/material/TextField";
+import Typography from "@mui/material/Typography";
+import IconButton from "@mui/material/IconButton";
+import Collapse from "@mui/material/Collapse";
+import Alert from "@mui/material/Alert";
import { ChevronDown, ChevronUp } from "lucide-react";
import { ContentTypeDropdown } from "@features/content/content-types";
import { LanguageHighlights } from "@components/content-language-switcher";
diff --git a/src/features/content/content-edit/index.tsx b/src/features/content/content-edit/index.tsx
index bef3a4ca..fabca39c 100644
--- a/src/features/content/content-edit/index.tsx
+++ b/src/features/content/content-edit/index.tsx
@@ -47,28 +47,26 @@ import { ErrorBoundary } from "react-error-boundary";
import { ModuleWrapper } from "@components/module-wrapper";
// Import UI components
-import {
- Card,
- CardContent,
- Tabs,
- Tab,
- Box,
- CircularProgress,
- Switch,
- Typography,
- FormControlLabel,
- IconButton,
- Button,
- Grid,
- TextField,
- Checkbox,
- Stack,
- Skeleton,
- Menu,
- MenuItem,
- ListItemIcon,
- ListItemText,
-} from "@mui/material";
+import Card from "@mui/material/Card";
+import CardContent from "@mui/material/CardContent";
+import Tabs from "@mui/material/Tabs";
+import Tab from "@mui/material/Tab";
+import Box from "@mui/material/Box";
+import CircularProgress from "@mui/material/CircularProgress";
+import Switch from "@mui/material/Switch";
+import Typography from "@mui/material/Typography";
+import FormControlLabel from "@mui/material/FormControlLabel";
+import IconButton from "@mui/material/IconButton";
+import Button from "@mui/material/Button";
+import Grid from "@mui/material/Grid";
+import TextField from "@mui/material/TextField";
+import Checkbox from "@mui/material/Checkbox";
+import Stack from "@mui/material/Stack";
+import Skeleton from "@mui/material/Skeleton";
+import Menu from "@mui/material/Menu";
+import MenuItem from "@mui/material/MenuItem";
+import ListItemIcon from "@mui/material/ListItemIcon";
+import ListItemText from "@mui/material/ListItemText";
import { RefreshCw, ExternalLink, ChevronDown, Save, Eye, FileX } from "lucide-react";
// Import existing components and utilities
diff --git a/src/features/content/content-list.tsx b/src/features/content/content-list.tsx
index fac11e6f..6ab63dd7 100644
--- a/src/features/content/content-list.tsx
+++ b/src/features/content/content-list.tsx
@@ -1,23 +1,21 @@
-import {
- Button,
- Card,
- CardActions,
- CardContent,
- CardMedia,
- Grid,
- Typography,
- Dialog,
- DialogTitle,
- DialogContent,
- DialogContentText,
- DialogActions,
- IconButton,
- Menu,
- MenuItem,
- Tooltip,
- Box,
- CircularProgress,
-} from "@mui/material";
+import Button from "@mui/material/Button";
+import Card from "@mui/material/Card";
+import CardActions from "@mui/material/CardActions";
+import CardContent from "@mui/material/CardContent";
+import CardMedia from "@mui/material/CardMedia";
+import Grid from "@mui/material/Grid";
+import Typography from "@mui/material/Typography";
+import Dialog from "@mui/material/Dialog";
+import DialogTitle from "@mui/material/DialogTitle";
+import DialogContent from "@mui/material/DialogContent";
+import DialogContentText from "@mui/material/DialogContentText";
+import DialogActions from "@mui/material/DialogActions";
+import IconButton from "@mui/material/IconButton";
+import Menu from "@mui/material/Menu";
+import MenuItem from "@mui/material/MenuItem";
+import Tooltip from "@mui/material/Tooltip";
+import Box from "@mui/material/Box";
+import CircularProgress from "@mui/material/CircularProgress";
import { ContentDetailsDto } from "@lib/network/swagger-client";
import { ContentListContainer } from "./index.styled";
import { useEffect, useState, useRef } from "react";
diff --git a/src/features/content/content-types/content-type-dropdown.tsx b/src/features/content/content-types/content-type-dropdown.tsx
index 913230b9..fb565870 100644
--- a/src/features/content/content-types/content-type-dropdown.tsx
+++ b/src/features/content/content-types/content-type-dropdown.tsx
@@ -1,5 +1,9 @@
import { useState } from "react";
-import { Grid, TextField, Typography, Box, MenuItem } from "@mui/material";
+import Grid from "@mui/material/Grid";
+import TextField from "@mui/material/TextField";
+import Typography from "@mui/material/Typography";
+import Box from "@mui/material/Box";
+import MenuItem from "@mui/material/MenuItem";
import { Plus } from "lucide-react";
import { idToDisplayName } from "./content-types";
import { ContentTypeForm } from "./content-type-form";
diff --git a/src/features/content/content-types/content-type-form.tsx b/src/features/content/content-types/content-type-form.tsx
index f60818c3..fe214789 100644
--- a/src/features/content/content-types/content-type-form.tsx
+++ b/src/features/content/content-types/content-type-form.tsx
@@ -1,24 +1,22 @@
import { useState } from "react";
-import {
- Button,
- Dialog,
- DialogActions,
- DialogContent,
- DialogTitle,
- FormControl,
- FormControlLabel,
- FormGroup,
- Grid,
- InputLabel,
- MenuItem,
- Select,
- Switch,
- TextField,
- Typography,
- Tooltip,
- IconButton,
- CircularProgress,
-} from "@mui/material";
+import Button from "@mui/material/Button";
+import Dialog from "@mui/material/Dialog";
+import DialogActions from "@mui/material/DialogActions";
+import DialogContent from "@mui/material/DialogContent";
+import DialogTitle from "@mui/material/DialogTitle";
+import FormControl from "@mui/material/FormControl";
+import FormControlLabel from "@mui/material/FormControlLabel";
+import FormGroup from "@mui/material/FormGroup";
+import Grid from "@mui/material/Grid";
+import InputLabel from "@mui/material/InputLabel";
+import MenuItem from "@mui/material/MenuItem";
+import Select from "@mui/material/Select";
+import Switch from "@mui/material/Switch";
+import TextField from "@mui/material/TextField";
+import Typography from "@mui/material/Typography";
+import Tooltip from "@mui/material/Tooltip";
+import IconButton from "@mui/material/IconButton";
+import CircularProgress from "@mui/material/CircularProgress";
import { Info } from "lucide-react";
import { ContentFormat, displayNameToId, addContentType } from "./content-types";
import { useRequestContext } from "@providers/request-provider";
diff --git a/src/features/content/index.styled.ts b/src/features/content/index.styled.ts
index a6059fc8..f61a76c5 100644
--- a/src/features/content/index.styled.ts
+++ b/src/features/content/index.styled.ts
@@ -1,4 +1,4 @@
-import { styled } from "@mui/material";
+import { styled } from "@mui/material/styles";
export const ContentListContainer = styled("div")``;
diff --git a/src/features/content/lazy.tsx b/src/features/content/lazy.tsx
new file mode 100644
index 00000000..1a8bad1b
--- /dev/null
+++ b/src/features/content/lazy.tsx
@@ -0,0 +1,8 @@
+import { lazy } from "react";
+
+const ContentModule = lazy(() =>
+ import("./index").then((module) => ({ default: module.ContentModule }))
+);
+
+export { ContentModule };
+
diff --git a/src/features/dashboard/index.styled.ts b/src/features/dashboard/index.styled.ts
index c3e2be86..20f6a8ba 100644
--- a/src/features/dashboard/index.styled.ts
+++ b/src/features/dashboard/index.styled.ts
@@ -1,4 +1,6 @@
-import { ListItem, ListItemText, styled } from "@mui/material";
+import ListItem from "@mui/material/ListItem";
+import ListItemText from "@mui/material/ListItemText";
+import { styled } from "@mui/material/styles";
export const DashboardListItem = styled(ListItem)({
alignItems: "center",
diff --git a/src/features/dashboard/index.tsx b/src/features/dashboard/index.tsx
index 37e06ab3..2c6ac2ea 100644
--- a/src/features/dashboard/index.tsx
+++ b/src/features/dashboard/index.tsx
@@ -1,25 +1,23 @@
import React from "react";
-import {
- Box,
- Paper,
- Typography,
- Tabs,
- Tab,
- Select,
- MenuItem,
- FormControl,
- InputLabel,
- Chip,
- Stack,
- Skeleton,
- List,
- ListItem,
- ListItemText,
- ListItemIcon,
- ToggleButton,
- ToggleButtonGroup,
- Button,
-} from "@mui/material";
+import Box from "@mui/material/Box";
+import Paper from "@mui/material/Paper";
+import Typography from "@mui/material/Typography";
+import Tabs from "@mui/material/Tabs";
+import Tab from "@mui/material/Tab";
+import Select from "@mui/material/Select";
+import MenuItem from "@mui/material/MenuItem";
+import FormControl from "@mui/material/FormControl";
+import InputLabel from "@mui/material/InputLabel";
+import Chip from "@mui/material/Chip";
+import Stack from "@mui/material/Stack";
+import Skeleton from "@mui/material/Skeleton";
+import List from "@mui/material/List";
+import ListItem from "@mui/material/ListItem";
+import ListItemText from "@mui/material/ListItemText";
+import ListItemIcon from "@mui/material/ListItemIcon";
+import ToggleButton from "@mui/material/ToggleButton";
+import ToggleButtonGroup from "@mui/material/ToggleButtonGroup";
+import Button from "@mui/material/Button";
import Grid from "@mui/material/Grid";
import { ArrowDown, ArrowUp, Building2, FileText, MessageSquare, ShoppingCart } from "lucide-react";
import { useRequestContext } from "@providers/request-provider";
@@ -167,8 +165,6 @@ const Card: React.FC = ({ title, subtitle, action, children }) => (
gap: 1.25,
borderRadius: 2,
borderColor: (t) => t.palette.divider,
- transition: "box-shadow 0.2s, border-color 0.2s",
- "&:hover": { boxShadow: 6 },
}}
>
{(title || action) && (
diff --git a/src/features/dashboard/lazy.tsx b/src/features/dashboard/lazy.tsx
index ddfa4bf6..ca1dbcab 100644
--- a/src/features/dashboard/lazy.tsx
+++ b/src/features/dashboard/lazy.tsx
@@ -1,5 +1,7 @@
import { lazy } from "react";
-export const DashboardLazy = lazy(() =>
- import("./index").then(({ DashboardModule }) => ({ default: DashboardModule }))
+const DashboardModule = lazy(() =>
+ import("./dashboard-module").then((module) => ({ default: module.DashboardModule }))
);
+
+export { DashboardModule };
diff --git a/src/features/deployments/deployment-details/index.tsx b/src/features/deployments/deployment-details/index.tsx
index e5c51152..e7e6dc87 100644
--- a/src/features/deployments/deployment-details/index.tsx
+++ b/src/features/deployments/deployment-details/index.tsx
@@ -1,31 +1,29 @@
import { useState, useEffect, useCallback } from "react";
-import {
- Box,
- Paper,
- Typography,
- Button,
- Chip,
- Skeleton,
- IconButton,
- Stepper,
- Step,
- StepLabel,
- StepContent,
- Alert,
- Link,
-} from "@mui/material";
+import Box from "@mui/material/Box";
+import Paper from "@mui/material/Paper";
+import Typography from "@mui/material/Typography";
+import Button from "@mui/material/Button";
+import Chip from "@mui/material/Chip";
+import Skeleton from "@mui/material/Skeleton";
+import IconButton from "@mui/material/IconButton";
+import Stepper from "@mui/material/Stepper";
+import Step from "@mui/material/Step";
+import StepLabel from "@mui/material/StepLabel";
+import StepContent from "@mui/material/StepContent";
+import Alert from "@mui/material/Alert";
+import Link from "@mui/material/Link";
import Grid from "@mui/material/Grid";
import {
- ArrowBack,
- PlayArrow,
- Refresh,
+ ArrowLeft,
+ Play,
+ RefreshCw,
CheckCircle,
- Cancel,
- Schedule,
- Error as ErrorIcon,
- HourglassEmpty,
+ X,
+ Clock,
+ AlertCircle,
+ Loader,
Terminal,
-} from "@mui/icons-material";
+} from "lucide-react";
import { useNavigate, useParams } from "react-router-dom";
import { useRequestContext } from "@providers/request-provider";
import { useNotificationsService } from "@hooks";
@@ -38,15 +36,15 @@ const getStepIcon = (status: string | undefined) => {
case "Completed":
return ;
case "Failed":
- return ;
+ return ;
case "InProgress":
- return ;
+ return ;
case "Pending":
- return ;
+ return ;
case "Cancelled":
- return ;
+ return ;
default:
- return ;
+ return ;
}
};
@@ -149,11 +147,11 @@ export const DeploymentDetails = () => {
return (
-
+
{error || "Deployment not found"}
- } onClick={handleBack} sx={{ mt: 2 }}>
+ } onClick={handleBack} sx={{ mt: 2 }}>
Back to Deployments
@@ -180,7 +178,7 @@ export const DeploymentDetails = () => {
>
-
+
@@ -194,7 +192,7 @@ export const DeploymentDetails = () => {
}
+ startIcon={ }
onClick={loadDeployment}
disabled={loading}
>
@@ -203,7 +201,7 @@ export const DeploymentDetails = () => {
{deployment.status === "Failed" && (
}
+ startIcon={ }
onClick={handleRetry}
disabled={retrying}
>
@@ -227,13 +225,13 @@ export const DeploymentDetails = () => {
deployment.status === "Completed" ? (
) : deployment.status === "Failed" ? (
-
+
) : deployment.status === "InProgress" ? (
-
+
) : deployment.status === "Pending" ? (
-
+
) : (
-
+
)
}
sx={{ fontSize: "1rem", py: 2.5, px: 1 }}
diff --git a/src/features/deployments/deployment-list/index.tsx b/src/features/deployments/deployment-list/index.tsx
index e287aa63..f04be077 100644
--- a/src/features/deployments/deployment-list/index.tsx
+++ b/src/features/deployments/deployment-list/index.tsx
@@ -1,58 +1,55 @@
import React, { useState, useEffect, useCallback, useRef } from "react";
-import {
- Box,
- Paper,
- Typography,
- Button,
- Card,
- CardContent,
- Table,
- TableBody,
- TableCell,
- TableContainer,
- TableHead,
- TableRow,
- Tabs,
- Tab,
- Chip,
- Skeleton,
- LinearProgress,
- Checkbox,
- IconButton,
- Tooltip,
- Link,
- Dialog,
- DialogTitle,
- DialogContent,
- DialogActions,
- List,
- ListItem,
- ListItemIcon,
- ListItemText,
- Alert,
-} from "@mui/material";
+import Box from "@mui/material/Box";
+import Paper from "@mui/material/Paper";
+import Typography from "@mui/material/Typography";
+import Button from "@mui/material/Button";
+import Card from "@mui/material/Card";
+import CardContent from "@mui/material/CardContent";
+import Table from "@mui/material/Table";
+import TableBody from "@mui/material/TableBody";
+import TableCell from "@mui/material/TableCell";
+import TableContainer from "@mui/material/TableContainer";
+import TableHead from "@mui/material/TableHead";
+import TableRow from "@mui/material/TableRow";
+import Tabs from "@mui/material/Tabs";
+import Tab from "@mui/material/Tab";
+import Chip from "@mui/material/Chip";
+import Skeleton from "@mui/material/Skeleton";
+import LinearProgress from "@mui/material/LinearProgress";
+import Checkbox from "@mui/material/Checkbox";
+import IconButton from "@mui/material/IconButton";
+import Tooltip from "@mui/material/Tooltip";
+import Link from "@mui/material/Link";
+import Dialog from "@mui/material/Dialog";
+import DialogTitle from "@mui/material/DialogTitle";
+import DialogContent from "@mui/material/DialogContent";
+import DialogActions from "@mui/material/DialogActions";
+import List from "@mui/material/List";
+import ListItem from "@mui/material/ListItem";
+import ListItemIcon from "@mui/material/ListItemIcon";
+import ListItemText from "@mui/material/ListItemText";
+import Alert from "@mui/material/Alert";
import Grid from "@mui/material/Grid";
import {
- PlayArrow,
- Refresh,
+ RefreshCw,
CheckCircle,
- Cancel,
- Schedule,
+ X,
+ Clock,
+ AlertCircle,
+ Loader,
+ Eye,
+ Rocket,
+ AlertTriangle,
CloudUpload,
+ CloudUploadIcon,
TrendingUp,
- AccessTime,
- Error as ErrorIcon,
- HourglassEmpty,
- Visibility,
- Rocket,
- Warning,
-} from "@mui/icons-material";
+ Play,
+} from "lucide-react";
import { useNavigate, useSearchParams } from "react-router-dom";
import { useRequestContext } from "@providers/request-provider";
import { useNotificationsService } from "@hooks";
import { useErrorDetailsModal } from "@providers/error-details-modal-provider";
import { parseApiError } from "@utils/api-error-parser";
-import { AlertCircle } from "lucide-react";
import type { DeploymentRecordDto, DeploymentStatsDto, DeploymentTargetDto } from "../types";
import {
formatDuration,
@@ -389,7 +386,7 @@ export const DeploymentsList = () => {
}
+ startIcon={ }
onClick={handleRefresh}
disabled={loading}
>
@@ -416,7 +413,7 @@ export const DeploymentsList = () => {
Lifetime total
-
+
@@ -442,7 +439,7 @@ export const DeploymentsList = () => {
color="success"
/>
-
+
@@ -477,7 +474,7 @@ export const DeploymentsList = () => {
-
+
@@ -504,7 +501,7 @@ export const DeploymentsList = () => {
Average deployment time
-
+
@@ -546,7 +543,7 @@ export const DeploymentsList = () => {
) : targets.length === 0 ? (
-
+
No deployment targets configured yet
Configure targets in your deployment settings to get started
@@ -586,7 +583,7 @@ export const DeploymentsList = () => {
{lastStatus === "Failed" ? (
-
+
) : lastStatus === "Completed" ? (
) : (
@@ -637,7 +634,7 @@ export const DeploymentsList = () => {
"&:hover": { bgcolor: "primary.main", color: "white" },
}}
>
-
+
@@ -664,7 +661,7 @@ export const DeploymentsList = () => {
}
+ startIcon={ }
onClick={handleDeployAll}
disabled={deploying || targets.length === 0}
>
@@ -672,7 +669,7 @@ export const DeploymentsList = () => {
}
+ startIcon={ }
onClick={handleDeploySelected}
disabled={deploying || selectedTargets.length === 0}
>
@@ -743,13 +740,13 @@ export const DeploymentsList = () => {
deployment.status === "Completed" ? (
) : deployment.status === "Failed" ? (
-
+
) : deployment.status === "InProgress" ? (
-
+
) : deployment.status === "Pending" ? (
-
+
) : (
-
+
)
}
/>
@@ -803,7 +800,7 @@ export const DeploymentsList = () => {
handleViewDeployment(deployment.id);
}}
>
-
+
@@ -958,7 +955,7 @@ export const DeploymentsList = () => {
>
)}
- } sx={{ mt: 2 }}>
+ } sx={{ mt: 2 }}>
Deployments will run in sequence. You can monitor progress in the History tab.
diff --git a/src/features/domains/domains-module.tsx b/src/features/domains/domains-module.tsx
index 5af6c597..ecb7337a 100644
--- a/src/features/domains/domains-module.tsx
+++ b/src/features/domains/domains-module.tsx
@@ -1,11 +1,11 @@
import { GenericFormProps, getSchemaDto } from "@components/generic-components";
import { DomainCreateDto, DomainDetailsDto, DomainUpdateDto } from "@lib/network/swagger-client";
import {
- addFormRoute,
CoreModule,
- editFormRoute,
+ getAddFormRoute,
getCoreModuleRoute,
- viewFormRoute,
+ getEditFormRoute,
+ getViewFormRoute,
} from "lib/router";
import { Outlet, Route, Routes, useNavigate, useParams } from "react-router-dom";
import { DomainsLazy } from "./lazy";
@@ -77,9 +77,9 @@ export const DomainsModule = () => {
<>
} />
-
-
-
+
+
+
>
diff --git a/src/features/domains/form/index.tsx b/src/features/domains/form/index.tsx
index aa5d6f75..a2b8932c 100644
--- a/src/features/domains/form/index.tsx
+++ b/src/features/domains/form/index.tsx
@@ -1,10 +1,10 @@
import { GenericForm, GenericFormProps } from "@components/generic-components";
import { ModuleWrapper } from "@components/module-wrapper";
-import { SavingBar } from "@components/saving-bar";
import { DomainCreateDto, DomainDetailsDto, DomainUpdateDto } from "@lib/network/swagger-client";
import { domainFormBreadcrumbLinks } from "../constants";
import { useState } from "react";
-import { Button, Box } from "@mui/material";
+import Button from "@mui/material/Button";
+import Box from "@mui/material/Box";
import { XCircle, Save } from "lucide-react";
import { DataManagementBlock } from "@components/data-management";
diff --git a/src/features/domains/index.styled.ts b/src/features/domains/index.styled.ts
index 76c6a2d1..b4a3e576 100644
--- a/src/features/domains/index.styled.ts
+++ b/src/features/domains/index.styled.ts
@@ -1,4 +1,6 @@
-import { ListItem, ListItemText, styled } from "@mui/material";
+import ListItem from "@mui/material/ListItem";
+import ListItemText from "@mui/material/ListItemText";
+import { styled } from "@mui/material/styles";
export const DomainListItem = styled(ListItem)({
alignItems: "center",
diff --git a/src/features/domains/index.tsx b/src/features/domains/index.tsx
index 3615c680..b2ae40ee 100644
--- a/src/features/domains/index.tsx
+++ b/src/features/domains/index.tsx
@@ -1,4 +1,7 @@
-import { Avatar, ListItemAvatar } from "@mui/material";
+import Avatar from "@mui/material/Avatar";
+import ListItemAvatar from "@mui/material/ListItemAvatar";
+import Button from "@mui/material/Button";
+
import { DomainDetailsDto } from "lib/network/swagger-client";
import { useRequestContext } from "providers/request-provider";
import { DomainListItem, DomainListItemText } from "./index.styled";
@@ -20,7 +23,6 @@ import { Fragment, useRef, useState } from "react";
import { getModelByName } from "@lib/network/swagger-models";
import { Result } from "react-spreadsheet-import/types/types";
import { SearchBar } from "@components/search-bar";
-import { Button } from "@mui/material";
import { Plus, Download, Upload, Filter, Settings2 } from "lucide-react";
import { CsvImport } from "@components/spreadsheet-import";
import { GhostLink } from "@components/ghost-link";
diff --git a/src/features/domains/lazy.tsx b/src/features/domains/lazy.tsx
index 093ed337..40ae5c68 100644
--- a/src/features/domains/lazy.tsx
+++ b/src/features/domains/lazy.tsx
@@ -1,5 +1,11 @@
import { lazy } from "react";
-export const DomainsLazy = lazy(() =>
- import("features/domains").then(({ Domains }) => ({ default: Domains }))
+const DomainsModule = lazy(() =>
+ import("./domains-module").then((module) => ({ default: module.DomainsModule }))
);
+
+const DomainsLazy = lazy(() =>
+ import("./index").then((module) => ({ default: module.Domains }))
+);
+
+export { DomainsModule, DomainsLazy };
diff --git a/src/features/email-templates/edit/index.styled.tsx b/src/features/email-templates/edit/index.styled.tsx
index 9156a472..860b23cc 100644
--- a/src/features/email-templates/edit/index.styled.tsx
+++ b/src/features/email-templates/edit/index.styled.tsx
@@ -1,4 +1,4 @@
-import { styled } from "@mui/material";
+import { styled } from "@mui/material/styles";
export const EmailTemplateEditContainer = styled("div")`
flex-grow: 1;
diff --git a/src/features/email-templates/edit/index.tsx b/src/features/email-templates/edit/index.tsx
index f168eec6..b63d18e2 100644
--- a/src/features/email-templates/edit/index.tsx
+++ b/src/features/email-templates/edit/index.tsx
@@ -20,31 +20,28 @@ import { ModuleWrapper } from "@components/module-wrapper";
import { emailTemplateFormBreadcrumbLinks, emailTemplateGroupFilterStorageKey } from "../constants";
import { useGlobalLanguageFilter } from "@providers/global-language-filter-provider";
import { EmailTemplateEditContainer } from "./index.styled";
-import {
- Alert,
- Button,
- Card,
- CardContent,
- Grid,
- TextField,
- Tabs,
- Tab,
- Box,
- Typography,
- IconButton,
- Collapse,
- CircularProgress,
- Dialog,
- DialogTitle,
- DialogContent,
- DialogContentText,
- DialogActions,
- Select,
- MenuItem,
- FormControl,
- InputLabel,
-} from "@mui/material";
-import type { SelectChangeEvent } from "@mui/material";
+import Button from "@mui/material/Button";
+import Card from "@mui/material/Card";
+import CardContent from "@mui/material/CardContent";
+import Grid from "@mui/material/Grid";
+import TextField from "@mui/material/TextField";
+import Tabs from "@mui/material/Tabs";
+import Tab from "@mui/material/Tab";
+import Box from "@mui/material/Box";
+import Alert from "@mui/material/Alert";
+import Typography from "@mui/material/Typography";
+import IconButton from "@mui/material/IconButton";
+import Collapse from "@mui/material/Collapse";
+import CircularProgress from "@mui/material/CircularProgress";
+import Dialog from "@mui/material/Dialog";
+import DialogTitle from "@mui/material/DialogTitle";
+import DialogContent from "@mui/material/DialogContent";
+import DialogContentText from "@mui/material/DialogContentText";
+import DialogActions from "@mui/material/DialogActions";
+import Select, { type SelectChangeEvent } from "@mui/material/Select";
+import MenuItem from "@mui/material/MenuItem";
+import FormControl from "@mui/material/FormControl";
+import InputLabel from "@mui/material/InputLabel";
import useLocalStorage from "use-local-storage";
import { EmailTemplateEditProps } from "./types";
import { LanguageSelect } from "@components/language-select";
diff --git a/src/features/email-templates/lazy.tsx b/src/features/email-templates/lazy.tsx
new file mode 100644
index 00000000..00cbb2e8
--- /dev/null
+++ b/src/features/email-templates/lazy.tsx
@@ -0,0 +1,8 @@
+import { lazy } from "react";
+
+const EmailTemplatesModule = lazy(() =>
+ import("./index").then((module) => ({ default: module.EmailTemplatesModule }))
+);
+
+export { EmailTemplatesModule };
+
diff --git a/src/features/links/lazy.tsx b/src/features/links/lazy.tsx
new file mode 100644
index 00000000..eab7cd88
--- /dev/null
+++ b/src/features/links/lazy.tsx
@@ -0,0 +1,8 @@
+import { lazy } from "react";
+
+const LinksModule = lazy(() =>
+ import("./index").then((module) => ({ default: module.LinksModule }))
+);
+
+export { LinksModule };
+
diff --git a/src/features/media/index.tsx b/src/features/media/index.tsx
index f3a40329..7f476556 100644
--- a/src/features/media/index.tsx
+++ b/src/features/media/index.tsx
@@ -1,27 +1,25 @@
import React, { useEffect, useState, useCallback, useMemo } from "react";
-import {
- Box,
- Button,
- Dialog,
- DialogActions,
- DialogContent,
- DialogTitle,
- Grid,
- Switch,
- FormControlLabel,
- TextField,
- IconButton,
- Paper,
- Typography,
- CircularProgress,
- Breadcrumbs,
- ToggleButtonGroup,
- ToggleButton,
- Tooltip,
- InputAdornment,
- Checkbox,
- Chip,
-} from "@mui/material";
+import Box from "@mui/material/Box";
+import Button from "@mui/material/Button";
+import Dialog from "@mui/material/Dialog";
+import DialogActions from "@mui/material/DialogActions";
+import DialogContent from "@mui/material/DialogContent";
+import DialogTitle from "@mui/material/DialogTitle";
+import Grid from "@mui/material/Grid";
+import Switch from "@mui/material/Switch";
+import FormControlLabel from "@mui/material/FormControlLabel";
+import TextField from "@mui/material/TextField";
+import IconButton from "@mui/material/IconButton";
+import Paper from "@mui/material/Paper";
+import Typography from "@mui/material/Typography";
+import CircularProgress from "@mui/material/CircularProgress";
+import Breadcrumbs from "@mui/material/Breadcrumbs";
+import ToggleButtonGroup from "@mui/material/ToggleButtonGroup";
+import ToggleButton from "@mui/material/ToggleButton";
+import Tooltip from "@mui/material/Tooltip";
+import InputAdornment from "@mui/material/InputAdornment";
+import Checkbox from "@mui/material/Checkbox";
+import Chip from "@mui/material/Chip";
import {
DataGrid,
GridColDef,
@@ -29,24 +27,9 @@ import {
GridRowParams,
GridRowSelectionModel,
} from "@mui/x-data-grid";
-import FolderIcon from "@mui/icons-material/Folder";
-import MoreVertIcon from "@mui/icons-material/MoreVert";
-import InsertDriveFileIcon from "@mui/icons-material/InsertDriveFile";
-import ImageIcon from "@mui/icons-material/Image";
-import MovieIcon from "@mui/icons-material/Movie";
-import MusicNoteIcon from "@mui/icons-material/MusicNote";
-import DescriptionIcon from "@mui/icons-material/Description";
-import CoPresentIcon from "@mui/icons-material/CoPresent";
-import ArchiveIcon from "@mui/icons-material/Archive";
-import DriveFileRenameOutlineIcon from "@mui/icons-material/DriveFileRenameOutline";
import { useRequestContext } from "@providers/request-provider";
import Menu from "@mui/material/Menu";
import MenuItem from "@mui/material/MenuItem";
-import FileCopyIcon from "@mui/icons-material/FileCopy";
-import DownloadIcon from "@mui/icons-material/Download";
-import DeleteIcon from "@mui/icons-material/Delete";
-import AutoFixHighIcon from "@mui/icons-material/AutoFixHigh";
-import RestoreIcon from "@mui/icons-material/Restore";
import { useNavigate, useLocation } from "react-router-dom";
import { buildAbsoluteUrl, buildAbsoluteUrlWithCacheBust } from "@lib/network/utils";
import { MediaPreview } from "./media-preview";
@@ -59,16 +42,7 @@ import { MediaSortPopup } from "@components/media-sort-popup";
import useLocalStorage from "use-local-storage";
import { ToolbarButton } from "@components/tool-bar-button";
import { DataTableContainer } from "@components/data-table/index.styled";
-import {
- SortAsc,
- SortDesc,
- LayoutGrid,
- Table as TableIcon,
- File,
- X,
- Search,
- AlertCircle,
-} from "lucide-react";
+import { SortAsc, SortDesc, LayoutGrid, Table as TableIcon, File, X, Search, ImageIcon, FileTextIcon, VideoIcon, MusicIcon, PackageIcon, Folder, MoreVerticalIcon, TrashIcon, Download, Copy, Pencil, Trash, Wand2, RotateCcw, AlertCircle, Gift } from "lucide-react";
import { useConfig } from "@providers/config-provider";
import { parseApiError } from "@utils/api-error-parser";
@@ -115,12 +89,12 @@ function buildBreadcrumbs(folder: string): { name: string; scopeUid: string }[]
const fileTypeIcons: Record = {
image: ,
- video: ,
- audio: ,
- document: ,
- archive: ,
- folder: ,
- other: ,
+ video: ,
+ audio: ,
+ document: ,
+ archive: ,
+ folder: ,
+ other: ,
};
const getFileType = (mimeType: string, extension: string) => {
@@ -147,7 +121,7 @@ const isPptxDocument = (mimeType: string, extension: string) => {
const getFileIcon = (mimeType: string, extension: string, type: string): JSX.Element => {
if (type === "document" && isPptxDocument(mimeType, extension)) {
- return ;
+ return ;
}
return fileTypeIcons[type] || fileTypeIcons.other;
@@ -1162,7 +1136,7 @@ const MediaManagement = () => {
handleMenuOpen(e, row);
}}
>
-
+
) : null;
},
@@ -1311,7 +1285,7 @@ const MediaManagement = () => {
onClick={(event) => setFolderMenuAnchorEl(event.currentTarget)}
aria-label="Folder actions"
>
-
+
setDialog("upload")}>
Upload
@@ -1371,7 +1345,7 @@ const MediaManagement = () => {
size="small"
variant="outlined"
color="error"
- startIcon={ }
+ startIcon={ }
onClick={() => setIsBulkDeleteDialogOpen(true)}
>
Delete Selected
@@ -1476,7 +1450,6 @@ const MediaManagement = () => {
borderRadius: 3,
overflow: "hidden",
position: "relative",
- transition: "box-shadow 0.2s, border 0.2s",
boxShadow: 1,
border: "1px solid #e0e0e0",
cursor: isFolder ? "pointer" : "default",
@@ -1487,9 +1460,6 @@ const MediaManagement = () => {
flexDirection: "column",
justifyContent: "flex-start",
alignItems: "stretch",
- "&:hover": {
- boxShadow: 6,
- },
}}
onClick={() => {
if (isFolder) {
@@ -1619,7 +1589,7 @@ const MediaManagement = () => {
}}
>
-
+
{/* Info */}
@@ -1803,17 +1773,17 @@ const MediaManagement = () => {
>
{menuItem && menuItem.mimeType !== "inode/directory" && (
handlePreviewMenu(menuItem)}>
- Preview
+ Preview
)}
{menuItem && menuItem.mimeType !== "inode/directory" && (
handleDownload(menuItem)}>
- Download
+ Download
)}
{menuItem && menuItem.mimeType !== "inode/directory" && (
handleCopyLink(menuItem)}>
- Copy Link
+ Copy Link
)}
{menuItem && menuItem.mimeType !== "inode/directory" && (
@@ -1823,13 +1793,13 @@ const MediaManagement = () => {
handleRenameOpen(menuItem);
}}
>
- Move / Rename
+ Move / Rename
)}
{/* Only show Rename/Delete for files, not folders */}
{menuItem && menuItem.mimeType !== "inode/directory" && (
handleDelete(menuItem)}>
- Delete
+ Delete
)}
@@ -1847,7 +1817,7 @@ const MediaManagement = () => {
}}
disabled={!(folderMenuItem?.scopeUid || currentScopeUid)}
>
- Rename Folder
+ Rename Folder
{
@@ -1857,7 +1827,7 @@ const MediaManagement = () => {
setBulkDialog("optimize");
}}
>
- Optimize Folder
+ Optimize Folder
{
@@ -1867,7 +1837,7 @@ const MediaManagement = () => {
setBulkDialog("reset");
}}
>
- Reset Folder
+ Reset Folder
{
@@ -1876,7 +1846,7 @@ const MediaManagement = () => {
}}
disabled={!(folderMenuItem?.scopeUid || currentScopeUid)}
>
- Delete Folder
+ Delete Folder
{isPdf && }
{isVideo && }
- {isPptx && }
+ {isPptx && }
{file.name}
0 ? `Used in ${usageCount} place(s)` : "Not used"}
@@ -961,7 +962,7 @@ export const MediaPreview = ({
}}
sx={{ color: "error.main" }}
>
-
+
Delete
)}
@@ -976,7 +977,7 @@ export const MediaPreview = ({
) : pdfError || !pdfBlobUrl ? (
-
+
PDF Preview Not Available
@@ -1003,7 +1004,7 @@ export const MediaPreview = ({
) : isVideo ? (
videoError ? (
-
+
Video Preview Not Available
@@ -1680,7 +1681,7 @@ export const MediaPreview = ({
control={
{
+ onChange={(e: React.ChangeEvent) => {
const checked = e.target.checked;
setMaintainAspectRatio(checked);
if (!checked) return;
diff --git a/src/features/media/media-upload-dialog.tsx b/src/features/media/media-upload-dialog.tsx
index 39c7819b..2fda3095 100644
--- a/src/features/media/media-upload-dialog.tsx
+++ b/src/features/media/media-upload-dialog.tsx
@@ -1,21 +1,21 @@
import React, { useEffect } from "react";
+import Dialog from "@mui/material/Dialog";
+import DialogTitle from "@mui/material/DialogTitle";
+import DialogContent from "@mui/material/DialogContent";
+import DialogActions from "@mui/material/DialogActions";
+import Box from "@mui/material/Box";
+import Typography from "@mui/material/Typography";
+import Button from "@mui/material/Button";
+import CircularProgress from "@mui/material/CircularProgress";
+import IconButton from "@mui/material/IconButton";
+import Grid from "@mui/material/Grid";
+import Paper from "@mui/material/Paper";
+import Tooltip from "@mui/material/Tooltip";
import {
- Dialog,
- DialogTitle,
- DialogContent,
- DialogActions,
- Box,
- Typography,
- Button,
- CircularProgress,
- IconButton,
- Grid,
- Paper,
- Tooltip,
-} from "@mui/material";
-import CloudUploadIcon from "@mui/icons-material/CloudUpload";
-import DeleteIcon from "@mui/icons-material/Delete";
-import InfoOutlinedIcon from "@mui/icons-material/InfoOutlined";
+ CloudUpload as CloudUploadIcon,
+ Trash2 as DeleteIcon,
+ Info as InfoOutlinedIcon
+} from 'lucide-react';
import { ApiErrorDisplay } from "@components/api-error-display";
export interface FileUploadStatus {
@@ -147,7 +147,7 @@ export const MediaUploadDialog = ({
onDragOver={(e) => e.preventDefault()}
onClick={() => document.getElementById("file-upload-input")?.click()}
>
-
+
Drag and drop files here or click to browse
diff --git a/src/features/module-loader/index.tsx b/src/features/module-loader/index.tsx
index bd52f5cb..be375723 100644
--- a/src/features/module-loader/index.tsx
+++ b/src/features/module-loader/index.tsx
@@ -1,25 +1,29 @@
"use client";
-import { Suspense } from "react";
-import { useRouteParams } from "typesafe-routes";
-import { CoreModule, coreModuleRoute, defaultModuleRoute } from "lib/router";
-import { ContentModule } from "features/content";
-import { DashboardModule } from "features/dashboard";
-import { ContactsModule } from "features/contacts/contacts-module";
-import { AccountsModule } from "features/accounts/accounts-module";
-import { OrdersModule } from "features/orders/orders-module";
-import { DomainsModule } from "features/domains/domains-module";
-import { LinksModule } from "@features/links";
+import { Suspense, useEffect, useState } from "react";
+import { useParams } from "react-router-dom";
+import { CoreModule, defaultModuleRoute, ModuleRouteParams } from "lib/router";
import { ModuleWrapperProvider } from "@providers/module-wrapper-provider";
-import { CommentsModule } from "@features/comments";
-import { UnsubscribesModule } from "@features/unsubscribes";
-import { UserModule } from "@features/users";
-import { AboutModule } from "@features/about";
-import { SegmentsModule } from "@features/segments/segments-module";
import { Navigate } from "react-router-dom";
-import { EmailTemplatesModule } from "@features/email-templates";
-import { ActivityLogModule } from "@features/activity-log";
import { ErrorBoundary } from "react-error-boundary";
import { ErrorBoundaryFallbackPage } from "@components/error-boundary-fallback-page";
+import Box from "@mui/material/Box";
+import LinearProgress from "@mui/material/LinearProgress";
+import Typography from "@mui/material/Typography";
+import Fade from "@mui/material/Fade";
+import { ContentModule } from "@features/content/lazy";
+import { DashboardModule } from "@features/dashboard/lazy";
+import { ContactsModule } from "@features/contacts/lazy";
+import { AccountsModule } from "@features/accounts/lazy";
+import { OrdersModule } from "@features/orders/lazy";
+import { DomainsModule } from "@features/domains/lazy";
+import { LinksModule } from "@features/links/lazy";
+import { CommentsModule } from "@features/comments/lazy";
+import { UnsubscribesModule } from "@features/unsubscribes/lazy";
+import { UserModule } from "@features/users/lazy";
+import { AboutModule } from "@features/about/lazy";
+import { SegmentsModule } from "@features/segments/lazy";
+import { EmailTemplatesModule } from "@features/email-templates/lazy";
+import { ActivityLogModule } from "@features/activity-log/lazy";
import { MediaModule } from "@features/media/lazy";
import { SettingsModule } from "@features/settings/lazy";
import { TasksModule } from "@features/tasks";
@@ -27,13 +31,58 @@ import { DeploymentsModule } from "@features/deployments";
import { CampaignsModule } from "@features/campaigns/campaigns-module";
import { SequencesModule } from "@features/sequences/sequences-module";
+const ModuleLoadingFallback = () => {
+ const [showLoader, setShowLoader] = useState(false);
+
+ useEffect(() => {
+ // Prevent flash on very fast transitions.
+ const timer = window.setTimeout(() => setShowLoader(true), 180);
+ return () => window.clearTimeout(timer);
+ }, []);
+
+ return (
+
+
+
+
+
+
+ Loading...
+
+
+
+
+
+ );
+};
+
export const ModuleLoader = () => {
- const { moduleName } = useRouteParams(coreModuleRoute);
+ const { moduleName } = useParams();
return (
-
+ }>
{moduleName === CoreModule.content && }
{moduleName === CoreModule.contacts && }
{moduleName === CoreModule.unsubscribes && }
diff --git a/src/features/orders/edit/index.tsx b/src/features/orders/edit/index.tsx
index 53e25b1c..03e9ac79 100644
--- a/src/features/orders/edit/index.tsx
+++ b/src/features/orders/edit/index.tsx
@@ -2,13 +2,14 @@ import { useEffect, useState } from "react";
import { OrderDetailsDto, OrderUpdateDto } from "lib/network/swagger-client";
import { useRequestContext } from "providers/request-provider";
import { OrderForm } from "../form";
-import { useRouteParams } from "typesafe-routes";
-import { editFormRoute } from "@lib/router";
+import { useParams } from "react-router-dom";
+import { type IdRouteParams } from "@lib/router";
export const OrderEdit = () => {
const { client } = useRequestContext();
- const { id } = useRouteParams(editFormRoute);
+ const { id: idParam } = useParams();
+ const id = Number(idParam);
const [order, setOrder] = useState();
diff --git a/src/features/orders/form/index.tsx b/src/features/orders/form/index.tsx
index 530cde65..b02a39c6 100644
--- a/src/features/orders/form/index.tsx
+++ b/src/features/orders/form/index.tsx
@@ -5,33 +5,31 @@ import { useNotificationsService, useSaveShortcut } from "@hooks";
import { ContactDetailsDto, OrderDetailsDto } from "@lib/network/swagger-client";
import { defaultFilterLimit } from "@providers/query-provider";
import { CoreModule, getCoreModuleRoute, getViewFormRoute } from "@lib/router";
-import {
- Accordion,
- AccordionDetails,
- AccordionSummary,
- Autocomplete,
- Avatar,
- Box,
- Button,
- Card,
- CardContent,
- Checkbox,
- Chip,
- CircularProgress,
- Dialog,
- DialogActions,
- DialogContent,
- DialogContentText,
- DialogTitle,
- FormControl,
- Grid,
- InputLabel,
- MenuItem,
- Select,
- TextField,
- Tooltip,
- Typography,
-} from "@mui/material";
+import Accordion from "@mui/material/Accordion";
+import AccordionDetails from "@mui/material/AccordionDetails";
+import AccordionSummary from "@mui/material/AccordionSummary";
+import Autocomplete from "@mui/material/Autocomplete";
+import Avatar from "@mui/material/Avatar";
+import Box from "@mui/material/Box";
+import Button from "@mui/material/Button";
+import Card from "@mui/material/Card";
+import CardContent from "@mui/material/CardContent";
+import Checkbox from "@mui/material/Checkbox";
+import Chip from "@mui/material/Chip";
+import CircularProgress from "@mui/material/CircularProgress";
+import Dialog from "@mui/material/Dialog";
+import DialogActions from "@mui/material/DialogActions";
+import DialogContent from "@mui/material/DialogContent";
+import DialogContentText from "@mui/material/DialogContentText";
+import DialogTitle from "@mui/material/DialogTitle";
+import FormControl from "@mui/material/FormControl";
+import Grid from "@mui/material/Grid";
+import InputLabel from "@mui/material/InputLabel";
+import MenuItem from "@mui/material/MenuItem";
+import Select from "@mui/material/Select";
+import TextField from "@mui/material/TextField";
+import Tooltip from "@mui/material/Tooltip";
+import Typography from "@mui/material/Typography";
import { useModuleWrapperContext } from "@providers/module-wrapper-provider";
import { useRequestContext } from "@providers/request-provider";
import { useCoreModuleNavigation } from "@hooks";
diff --git a/src/features/orders/index.styled.ts b/src/features/orders/index.styled.ts
index f12525e4..849d85b1 100644
--- a/src/features/orders/index.styled.ts
+++ b/src/features/orders/index.styled.ts
@@ -1,4 +1,5 @@
-import { Card, styled } from "@mui/material";
+import Card from "@mui/material/Card";
+import { styled } from "@mui/material/styles";
export const CardContainer = styled(Card)`
margin-left: ${({ theme }) => theme.spacing(20)};
diff --git a/src/features/orders/index.tsx b/src/features/orders/index.tsx
index 9a02b108..8273fb64 100644
--- a/src/features/orders/index.tsx
+++ b/src/features/orders/index.tsx
@@ -19,23 +19,21 @@ import { DataListSettings } from "types";
import { getModelByName } from "@lib/network/swagger-models";
import { Result } from "react-spreadsheet-import/types/types";
import { SearchBar } from "@components/search-bar";
-import {
- Button,
- Chip,
- FormControl,
- InputLabel,
- MenuItem,
- Select,
- Table,
- TableBody,
- TableCell,
- TableContainer,
- TableHead,
- TableRow,
- TextField,
- Tooltip,
- Typography,
-} from "@mui/material";
+import Button from "@mui/material/Button";
+import Chip from "@mui/material/Chip";
+import FormControl from "@mui/material/FormControl";
+import InputLabel from "@mui/material/InputLabel";
+import MenuItem from "@mui/material/MenuItem";
+import Select from "@mui/material/Select";
+import Table from "@mui/material/Table";
+import TableBody from "@mui/material/TableBody";
+import TableCell from "@mui/material/TableCell";
+import TableContainer from "@mui/material/TableContainer";
+import TableHead from "@mui/material/TableHead";
+import TableRow from "@mui/material/TableRow";
+import TextField from "@mui/material/TextField";
+import Tooltip from "@mui/material/Tooltip";
+import Typography from "@mui/material/Typography";
import { Plus, Upload, Download, Filter, Settings2, Package } from "lucide-react";
import { CsvImport } from "@components/spreadsheet-import";
import { GhostLink } from "@components/ghost-link";
diff --git a/src/features/orders/lazy.tsx b/src/features/orders/lazy.tsx
index f1ce1482..88f4f1ba 100644
--- a/src/features/orders/lazy.tsx
+++ b/src/features/orders/lazy.tsx
@@ -1,5 +1,11 @@
import { lazy } from "react";
-export const OrdersLazy = lazy(() =>
- import("features/orders").then(({ Orders }) => ({ default: Orders }))
+const OrdersModule = lazy(() =>
+ import("./orders-module").then((module) => ({ default: module.OrdersModule }))
);
+
+const OrdersLazy = lazy(() =>
+ import("./index").then((module) => ({ default: module.Orders }))
+);
+
+export { OrdersModule, OrdersLazy };
diff --git a/src/features/orders/orders-module.tsx b/src/features/orders/orders-module.tsx
index 5a32ddd1..b0d7c5fd 100644
--- a/src/features/orders/orders-module.tsx
+++ b/src/features/orders/orders-module.tsx
@@ -1,4 +1,4 @@
-import { addFormRoute, editFormRoute, detailsRoute, viewFormRoute } from "lib/router";
+import { getAddFormRoute, getEditFormRoute, getViewFormRoute } from "lib/router";
import { Outlet, Route, Routes } from "react-router-dom";
import { OrderAdd } from "./add";
import { OrderEdit } from "./edit";
@@ -12,13 +12,13 @@ export const OrdersModule = () => {
<>
} />
- } />
- }>
+ } />
+ }>
} />
- } />
+ } />
} />
- } />
+ } />
>
diff --git a/src/features/orders/view/details/index.tsx b/src/features/orders/view/details/index.tsx
index b5d65778..96097771 100644
--- a/src/features/orders/view/details/index.tsx
+++ b/src/features/orders/view/details/index.tsx
@@ -1,23 +1,19 @@
import { ReactNode, useEffect, useState } from "react";
-import {
- Box,
- Card,
- CardActionArea,
- CardContent,
- Chip,
- Divider,
- Grid,
- Typography,
- useTheme,
-} from "@mui/material";
+import Box from "@mui/material/Box";
+import Card from "@mui/material/Card";
+import CardActionArea from "@mui/material/CardActionArea";
+import CardContent from "@mui/material/CardContent";
+import Chip from "@mui/material/Chip";
+import Divider from "@mui/material/Divider";
+import Grid from "@mui/material/Grid";
+import Typography from "@mui/material/Typography";
+import { useTheme } from "@mui/material/styles";
import {
Banknote,
Building,
- Calendar,
DollarSign,
ExternalLink,
Hash,
- MapPin,
Package,
ShoppingCart,
Tag,
diff --git a/src/features/orders/view/index.tsx b/src/features/orders/view/index.tsx
index ab5a668d..a093ff28 100644
--- a/src/features/orders/view/index.tsx
+++ b/src/features/orders/view/index.tsx
@@ -1,16 +1,14 @@
import { SyntheticEvent, useEffect, useMemo, useRef, useState } from "react";
-import {
- Avatar,
- Box,
- Button,
- Card,
- CardContent,
- Chip,
- Divider,
- Tab,
- Tabs,
- Typography,
-} from "@mui/material";
+import Avatar from "@mui/material/Avatar";
+import Box from "@mui/material/Box";
+import Button from "@mui/material/Button";
+import Card from "@mui/material/Card";
+import CardContent from "@mui/material/CardContent";
+import Chip from "@mui/material/Chip";
+import Divider from "@mui/material/Divider";
+import Tab from "@mui/material/Tab";
+import Tabs from "@mui/material/Tabs";
+import Typography from "@mui/material/Typography";
import { Edit, ShoppingCart, User } from "lucide-react";
import { Outlet, useLocation, useNavigate, useParams } from "react-router-dom";
import {
diff --git a/src/features/orders/view/items/index.tsx b/src/features/orders/view/items/index.tsx
index 71d619a9..9459c4bd 100644
--- a/src/features/orders/view/items/index.tsx
+++ b/src/features/orders/view/items/index.tsx
@@ -1,16 +1,14 @@
import { useState } from "react";
-import {
- Autocomplete,
- Box,
- Button,
- Card,
- CardContent,
- Grid,
- IconButton,
- TextField,
- Tooltip,
- Typography,
-} from "@mui/material";
+import Autocomplete from "@mui/material/Autocomplete";
+import Box from "@mui/material/Box";
+import Button from "@mui/material/Button";
+import Card from "@mui/material/Card";
+import CardContent from "@mui/material/CardContent";
+import Grid from "@mui/material/Grid";
+import IconButton from "@mui/material/IconButton";
+import TextField from "@mui/material/TextField";
+import Tooltip from "@mui/material/Tooltip";
+import Typography from "@mui/material/Typography";
import { DataGrid, GridCellParams, GridColDef } from "@mui/x-data-grid";
import { Edit, Package, Plus, XCircle } from "lucide-react";
import { useOutletContext } from "react-router-dom";
diff --git a/src/features/segments/components/contact-picker-modal.tsx b/src/features/segments/components/contact-picker-modal.tsx
index fbe35c1c..9520d102 100644
--- a/src/features/segments/components/contact-picker-modal.tsx
+++ b/src/features/segments/components/contact-picker-modal.tsx
@@ -1,24 +1,22 @@
import React, { useState, useEffect } from "react";
-import {
- Dialog,
- DialogTitle,
- DialogContent,
- DialogActions,
- Button,
- TextField,
- List,
- ListItem,
- ListItemText,
- ListItemSecondaryAction,
- Checkbox,
- Typography,
- Box,
- Avatar,
- InputAdornment,
- Chip,
- CircularProgress,
- IconButton,
-} from "@mui/material";
+import Dialog from "@mui/material/Dialog";
+import DialogTitle from "@mui/material/DialogTitle";
+import DialogContent from "@mui/material/DialogContent";
+import DialogActions from "@mui/material/DialogActions";
+import Button from "@mui/material/Button";
+import TextField from "@mui/material/TextField";
+import List from "@mui/material/List";
+import ListItem from "@mui/material/ListItem";
+import ListItemText from "@mui/material/ListItemText";
+import ListItemSecondaryAction from "@mui/material/ListItemSecondaryAction";
+import Checkbox from "@mui/material/Checkbox";
+import Typography from "@mui/material/Typography";
+import Box from "@mui/material/Box";
+import Avatar from "@mui/material/Avatar";
+import InputAdornment from "@mui/material/InputAdornment";
+import Chip from "@mui/material/Chip";
+import CircularProgress from "@mui/material/CircularProgress";
+import IconButton from "@mui/material/IconButton";
import { Search, X } from "lucide-react";
import { ContactDetailsDto } from "lib/network/swagger-client";
import { useRequestContext } from "providers/request-provider";
diff --git a/src/features/segments/components/rule-builder.tsx b/src/features/segments/components/rule-builder.tsx
index 4c07bd2f..b25bc721 100644
--- a/src/features/segments/components/rule-builder.tsx
+++ b/src/features/segments/components/rule-builder.tsx
@@ -1,20 +1,18 @@
import React, { useEffect, useState } from "react";
-import {
- Autocomplete,
- Box,
- Button,
- Card,
- CardContent,
- Chip,
- FormControl,
- IconButton,
- InputLabel,
- ListSubheader,
- MenuItem,
- Select,
- TextField,
- Typography,
-} from "@mui/material";
+import Autocomplete from "@mui/material/Autocomplete";
+import Box from "@mui/material/Box";
+import Button from "@mui/material/Button";
+import Card from "@mui/material/Card";
+import CardContent from "@mui/material/CardContent";
+import FormControl from "@mui/material/FormControl";
+import InputLabel from "@mui/material/InputLabel";
+import MenuItem from "@mui/material/MenuItem";
+import Select from "@mui/material/Select";
+import TextField from "@mui/material/TextField";
+import Typography from "@mui/material/Typography";
+import IconButton from "@mui/material/IconButton";
+import Chip from "@mui/material/Chip";
+import ListSubheader from "@mui/material/ListSubheader";
import { Plus, Trash2 } from "lucide-react";
import {
type AutocompleteKey,
diff --git a/src/features/segments/form/edit.tsx b/src/features/segments/form/edit.tsx
index a3c1b52b..6c64252e 100644
--- a/src/features/segments/form/edit.tsx
+++ b/src/features/segments/form/edit.tsx
@@ -1,17 +1,19 @@
-import React, { useEffect, useState } from "react";
-import { Alert, Box, CircularProgress } from "@mui/material";
+import { useEffect, useState } from "react";
+import Alert from "@mui/material/Alert";
+import Box from "@mui/material/Box";
+import CircularProgress from "@mui/material/CircularProgress";
import { useNavigate, useParams } from "react-router-dom";
import { ModuleWrapper } from "@components/module-wrapper";
import { SegmentsBreadcrumbLinks } from "../constants";
import { SegmentCreateDto, SegmentDetailsDto, SegmentUpdateDto } from "lib/network/swagger-client";
import { useRequestContext } from "providers/request-provider";
import { useNotificationsService } from "@hooks";
-import { CoreModule, getCoreModuleRoute, getViewFormRoute } from "lib/router";
+import { CoreModule, getCoreModuleRoute, getViewFormRoute, type IdRouteParams } from "lib/router";
import { SegmentForm } from "./segment-form";
export const SegmentEdit = () => {
const navigate = useNavigate();
- const { id } = useParams<{ id: string }>();
+ const { id } = useParams();
const { client } = useRequestContext();
const { notificationsService } = useNotificationsService();
diff --git a/src/features/segments/form/segment-form.tsx b/src/features/segments/form/segment-form.tsx
index 74c60dcc..df3a7f16 100644
--- a/src/features/segments/form/segment-form.tsx
+++ b/src/features/segments/form/segment-form.tsx
@@ -1,26 +1,24 @@
import React, { useCallback, useEffect, useMemo, useState } from "react";
-import {
- Alert,
- Box,
- Button,
- Card,
- CardContent,
- CardHeader,
- Chip,
- CircularProgress,
- Dialog,
- DialogActions,
- DialogContent,
- DialogContentText,
- DialogTitle,
- IconButton,
- MenuItem,
- Tab,
- Tabs,
- TextField,
- Tooltip,
- Typography,
-} from "@mui/material";
+import Alert from "@mui/material/Alert";
+import Box from "@mui/material/Box";
+import Button from "@mui/material/Button";
+import Card from "@mui/material/Card";
+import CardContent from "@mui/material/CardContent";
+import CardHeader from "@mui/material/CardHeader";
+import Chip from "@mui/material/Chip";
+import CircularProgress from "@mui/material/CircularProgress";
+import Dialog from "@mui/material/Dialog";
+import DialogActions from "@mui/material/DialogActions";
+import DialogContent from "@mui/material/DialogContent";
+import DialogContentText from "@mui/material/DialogContentText";
+import DialogTitle from "@mui/material/DialogTitle";
+import IconButton from "@mui/material/IconButton";
+import MenuItem from "@mui/material/MenuItem";
+import Tab from "@mui/material/Tab";
+import Tabs from "@mui/material/Tabs";
+import TextField from "@mui/material/TextField";
+import Tooltip from "@mui/material/Tooltip";
+import Typography from "@mui/material/Typography";
import { Save, Settings2, Trash2, Users, Plus, X } from "lucide-react";
import { ModuleWrapper } from "@components/module-wrapper";
import { SegmentsBreadcrumbLinks } from "../constants";
diff --git a/src/features/segments/index.tsx b/src/features/segments/index.tsx
index 3eb0364d..bb9e368e 100644
--- a/src/features/segments/index.tsx
+++ b/src/features/segments/index.tsx
@@ -13,7 +13,10 @@ import { getAddFormRoute } from "lib/router";
import useLocalStorage from "use-local-storage";
import { DataListSettings } from "types";
import { SearchBar } from "@components/search-bar";
-import { Box, Typography, Button, Chip } from "@mui/material";
+import Box from "@mui/material/Box";
+import Typography from "@mui/material/Typography";
+import Button from "@mui/material/Button";
+import Chip from "@mui/material/Chip";
import { Plus, Settings2, Users, Zap, UserPlus } from "lucide-react";
import { GhostLink } from "@components/ghost-link";
import { ModuleWrapper } from "@components/module-wrapper";
diff --git a/src/features/segments/lazy.tsx b/src/features/segments/lazy.tsx
new file mode 100644
index 00000000..1d15d4d2
--- /dev/null
+++ b/src/features/segments/lazy.tsx
@@ -0,0 +1,8 @@
+import { lazy } from "react";
+
+const SegmentsModule = lazy(() =>
+ import("./segments-module").then((module) => ({ default: module.SegmentsModule }))
+);
+
+export { SegmentsModule };
+
diff --git a/src/features/segments/segments-module.tsx b/src/features/segments/segments-module.tsx
index 3acfe796..339b607c 100644
--- a/src/features/segments/segments-module.tsx
+++ b/src/features/segments/segments-module.tsx
@@ -1,4 +1,4 @@
-import { addFormRoute, editFormRoute, viewFormRoute } from "lib/router";
+import { getAddFormRoute, getEditFormRoute, getViewFormRoute } from "lib/router";
import { Outlet, Route, Routes } from "react-router-dom";
import { Segments } from "./index";
import { SegmentAdd } from "./form/add";
@@ -10,9 +10,9 @@ export const SegmentsModule = () => {
<>
} />
- } />
- } />
- } />
+ } />
+ } />
+ } />
>
diff --git a/src/features/segments/view/details/index.tsx b/src/features/segments/view/details/index.tsx
index 47a3768d..da7ef00e 100644
--- a/src/features/segments/view/details/index.tsx
+++ b/src/features/segments/view/details/index.tsx
@@ -1,18 +1,16 @@
import { ReactNode, useEffect, useState } from "react";
-import {
- Alert,
- Avatar,
- Box,
- Button,
- Card,
- CardContent,
- Chip,
- CircularProgress,
- Divider,
- Tab,
- Tabs,
- Typography,
-} from "@mui/material";
+import Alert from "@mui/material/Alert";
+import Avatar from "@mui/material/Avatar";
+import Box from "@mui/material/Box";
+import Button from "@mui/material/Button";
+import Card from "@mui/material/Card";
+import CardContent from "@mui/material/CardContent";
+import Divider from "@mui/material/Divider";
+import Chip from "@mui/material/Chip";
+import CircularProgress from "@mui/material/CircularProgress";
+import Tab from "@mui/material/Tab";
+import Tabs from "@mui/material/Tabs";
+import Typography from "@mui/material/Typography";
import Grid from "@mui/material/Grid";
import { Edit, Users } from "lucide-react";
import { useNavigate, useParams, useSearchParams } from "react-router-dom";
@@ -22,7 +20,7 @@ import { SegmentsBreadcrumbLinks } from "../../constants";
import { getFieldDisplayName, getOperatorDisplayName } from "../../types";
import { useRequestContext } from "providers/request-provider";
import { SegmentDetailsDto as ApiSegmentDetailsDto, SegmentRule } from "lib/network/swagger-client";
-import { CoreModule, getEditFormRoute } from "@lib/router";
+import { CoreModule, getEditFormRoute, type IdRouteParams } from "@lib/router";
import { getFormattedDateOnly } from "utils/general-helper";
type DetailRow = { label: string; value: ReactNode };
@@ -101,7 +99,7 @@ const getSegmentViewTabValue = (tabParam: string | null) => {
};
export const SegmentView = () => {
- const { id } = useParams<{ id: string }>();
+ const { id } = useParams();
const { client } = useRequestContext();
const navigate = useNavigate();
const [searchParams, setSearchParams] = useSearchParams();
diff --git a/src/features/sequences/sequences-module.tsx b/src/features/sequences/sequences-module.tsx
index 0a974c8e..0b605999 100644
--- a/src/features/sequences/sequences-module.tsx
+++ b/src/features/sequences/sequences-module.tsx
@@ -1,4 +1,4 @@
-import { addFormRoute, editFormRoute, viewFormRoute } from "lib/router";
+import { getAddFormRoute, getEditFormRoute, getViewFormRoute } from "lib/router";
import { Outlet, Route, Routes } from "react-router-dom";
import { Sequences } from "./index";
import { SequenceAdd } from "./add";
@@ -11,9 +11,9 @@ export const SequencesModule = () => {
<>
} />
- } />
- } />
- } />
+ } />
+ } />
+ } />
} />
diff --git a/src/features/settings/index.tsx b/src/features/settings/index.tsx
index ce6e9198..9c7d3d15 100644
--- a/src/features/settings/index.tsx
+++ b/src/features/settings/index.tsx
@@ -1,33 +1,30 @@
import React, { useState, useEffect, useRef } from "react";
import { useSearchParams } from "react-router-dom";
-import {
- Box,
- Card,
- CardContent,
- TextField,
- Typography,
- Button,
- Chip,
- Stack,
- CircularProgress,
- Alert,
- Grid,
- Accordion,
- AccordionSummary,
- AccordionDetails,
- Tabs,
- Tab,
- FormControlLabel,
- Switch,
- FormGroup,
- MenuItem,
- Select,
- IconButton,
- InputAdornment,
- Tooltip,
-} from "@mui/material";
-import { ExpandMore } from "@mui/icons-material";
-import { Save, Info, RefreshCw, Copy, Check } from "lucide-react";
+import Box from "@mui/material/Box";
+import Card from "@mui/material/Card";
+import CardContent from "@mui/material/CardContent";
+import TextField from "@mui/material/TextField";
+import Typography from "@mui/material/Typography";
+import Button from "@mui/material/Button";
+import Chip from "@mui/material/Chip";
+import Stack from "@mui/material/Stack";
+import CircularProgress from "@mui/material/CircularProgress";
+import Alert from "@mui/material/Alert";
+import Grid from "@mui/material/Grid";
+import Accordion from "@mui/material/Accordion";
+import AccordionSummary from "@mui/material/AccordionSummary";
+import AccordionDetails from "@mui/material/AccordionDetails";
+import Tabs from "@mui/material/Tabs";
+import Tab from "@mui/material/Tab";
+import FormControlLabel from "@mui/material/FormControlLabel";
+import Switch from "@mui/material/Switch";
+import FormGroup from "@mui/material/FormGroup";
+import MenuItem from "@mui/material/MenuItem";
+import Select from "@mui/material/Select";
+import IconButton from "@mui/material/IconButton";
+import InputAdornment from "@mui/material/InputAdornment";
+import Tooltip from "@mui/material/Tooltip";
+import { Save, Info, RefreshCw, Copy, Check, ChevronDown } from "lucide-react";
import { DateTimePicker } from "@mui/x-date-pickers";
import dayjs, { Dayjs } from "dayjs";
import { ModuleWrapper } from "@components/module-wrapper";
@@ -1202,7 +1199,7 @@ const Settings = () => {
}
+ expandIcon={ }
sx={{
backgroundColor: "rgba(0, 0, 0, 0.02)",
borderBottom: "1px solid rgba(0, 0, 0, 0.08)",
diff --git a/src/features/tasks/task-list/index.tsx b/src/features/tasks/task-list/index.tsx
index ba83f302..bae493fd 100644
--- a/src/features/tasks/task-list/index.tsx
+++ b/src/features/tasks/task-list/index.tsx
@@ -1,59 +1,57 @@
import React, { useState, useEffect } from "react";
-import {
- Box,
- Paper,
- Typography,
- Button,
- TextField,
- Chip,
- Card,
- CardContent,
- Table,
- TableBody,
- TableCell,
- TableContainer,
- TableHead,
- TableRow,
- Select,
- MenuItem,
- FormControl,
- InputLabel,
- Tabs,
- Tab,
- Dialog,
- DialogTitle,
- DialogContent,
- DialogContentText,
- DialogActions,
- Tooltip,
- IconButton,
- Menu,
- Skeleton,
- InputAdornment,
-} from "@mui/material";
+import Box from "@mui/material/Box";
+import Paper from "@mui/material/Paper";
+import Typography from "@mui/material/Typography";
+import Button from "@mui/material/Button";
+import TextField from "@mui/material/TextField";
+import Chip from "@mui/material/Chip";
+import Card from "@mui/material/Card";
+import CardContent from "@mui/material/CardContent";
+import Table from "@mui/material/Table";
+import TableBody from "@mui/material/TableBody";
+import TableCell from "@mui/material/TableCell";
+import TableContainer from "@mui/material/TableContainer";
+import TableHead from "@mui/material/TableHead";
+import TableRow from "@mui/material/TableRow";
+import Select from "@mui/material/Select";
+import MenuItem from "@mui/material/MenuItem";
+import FormControl from "@mui/material/FormControl";
+import InputLabel from "@mui/material/InputLabel";
+import Tabs from "@mui/material/Tabs";
+import Tab from "@mui/material/Tab";
+import Dialog from "@mui/material/Dialog";
+import DialogTitle from "@mui/material/DialogTitle";
+import DialogContent from "@mui/material/DialogContent";
+import DialogContentText from "@mui/material/DialogContentText";
+import DialogActions from "@mui/material/DialogActions";
+import Tooltip from "@mui/material/Tooltip";
+import IconButton from "@mui/material/IconButton";
+import Menu from "@mui/material/Menu";
+import Skeleton from "@mui/material/Skeleton";
+import InputAdornment from "@mui/material/InputAdornment";
import Grid from "@mui/material/Grid";
import {
- PlayArrow,
- Stop,
- Refresh,
- Schedule,
+ Play,
+ RefreshCw,
+ Clock,
CheckCircle,
- Cancel,
- MoreVert,
+ X,
+ MoreVertical,
Search,
- Description,
- CalendarToday,
- Storage,
+ CalendarDays,
+ Database,
Mail,
- Delete,
- Build,
- Language,
+ Trash2,
+ Languages,
TrendingUp,
- PlayCircleOutline,
- ToggleOn,
- ToggleOff,
- PhotoLibrary,
-} from "@mui/icons-material";
+ Building2,
+ Globe,
+ Images,
+ ToggleLeft,
+ ToggleRight,
+ FileText,
+ ChartColumnIncreasing,
+} from "lucide-react";
import { useRequestContext } from "@providers/request-provider";
import { useNotificationsService } from "@hooks";
import { parseApiError, showApiError } from "@utils/api-error-parser";
@@ -64,17 +62,17 @@ import { getCategoryColor } from "../utils";
import type { TaskCategory } from "../types";
const categoryIcons: Record = {
- "data-sync": ,
- maintenance: ,
- reporting: ,
- enrichment: ,
- email: ,
- cleanup: ,
- other: ,
+ "data-sync": ,
+ maintenance: ,
+ reporting: ,
+ enrichment: ,
+ email: ,
+ cleanup: ,
+ other: ,
};
const taskIcons: Record = {
- MediaMetaUpdateTask: ,
+ MediaMetaUpdateTask: ,
};
export const TasksList = () => {
@@ -413,7 +411,7 @@ export const TasksList = () => {
endAdornment: searchQuery ? (
setSearchQuery("")} aria-label="Clear">
-
+
) : null,
@@ -523,7 +521,7 @@ export const TasksList = () => {
-
+
{describeCron(task.cronSchedule || "")}
@@ -543,14 +541,14 @@ export const TasksList = () => {
}
+ icon={ }
label="Enabled"
/>
) : (
}
+ icon={ }
label="Disabled"
/>
)}
@@ -569,7 +567,7 @@ export const TasksList = () => {
}
disabled={isExecuting}
>
-
+
@@ -585,7 +583,7 @@ export const TasksList = () => {
})
}
>
-
+
) : (
@@ -600,7 +598,7 @@ export const TasksList = () => {
})
}
>
-
+
)}
@@ -609,7 +607,7 @@ export const TasksList = () => {
size="small"
onClick={(e) => handleMenuOpen(e, task.name || "")}
>
-
+
@@ -699,7 +697,7 @@ export const TasksList = () => {
}
+ icon={ }
label="Success"
/>
)}
@@ -707,7 +705,7 @@ export const TasksList = () => {
}
+ icon={ }
label="Failed"
/>
)}
@@ -715,7 +713,7 @@ export const TasksList = () => {
}
+ icon={ }
label="Running"
/>
)}
@@ -723,7 +721,7 @@ export const TasksList = () => {
}
+ icon={ }
label="Pending"
/>
)}
@@ -743,9 +741,9 @@ export const TasksList = () => {
variant="outlined"
icon={
log.triggeredBy === "Scheduled" ? (
-
+
) : (
-
+
)
}
label={log.triggeredBy === "Scheduled" ? "Schedule" : "Manual"}
@@ -785,7 +783,7 @@ export const TasksList = () => {
{/* Context Menu */}
-
+
View Logs
diff --git a/src/features/unsubscribes/index.tsx b/src/features/unsubscribes/index.tsx
index b374dde2..1862b0f4 100644
--- a/src/features/unsubscribes/index.tsx
+++ b/src/features/unsubscribes/index.tsx
@@ -1,4 +1,4 @@
-import { addFormRoute, editFormRoute, viewFormRoute } from "@lib/router";
+import { getAddFormRoute, getEditFormRoute, getViewFormRoute } from "@lib/router";
import { Outlet, Route, Routes } from "react-router-dom";
import { UnsubscribesList } from "./list";
import { UnsubscribeFormPage } from "./form";
@@ -8,9 +8,9 @@ export const UnsubscribesModule = () => {
<>
} />
- } />
- } />
- } />
+ } />
+ } />
+ } />
>
diff --git a/src/features/unsubscribes/lazy.tsx b/src/features/unsubscribes/lazy.tsx
new file mode 100644
index 00000000..4b542a22
--- /dev/null
+++ b/src/features/unsubscribes/lazy.tsx
@@ -0,0 +1,8 @@
+import { lazy } from "react";
+
+const UnsubscribesModule = lazy(() =>
+ import("./index").then((module) => ({ default: module.UnsubscribesModule }))
+);
+
+export { UnsubscribesModule };
+
diff --git a/src/features/users/lazy.tsx b/src/features/users/lazy.tsx
new file mode 100644
index 00000000..e0dacbec
--- /dev/null
+++ b/src/features/users/lazy.tsx
@@ -0,0 +1,8 @@
+import { lazy } from "react";
+
+const UserModule = lazy(() =>
+ import("./index").then((module) => ({ default: module.UserModule }))
+);
+
+export { UserModule };
+
diff --git a/src/features/users/user-edit/index.tsx b/src/features/users/user-edit/index.tsx
index 436cb46b..5e8645d1 100644
--- a/src/features/users/user-edit/index.tsx
+++ b/src/features/users/user-edit/index.tsx
@@ -21,23 +21,21 @@ import { useEffect, useRef, useState } from "react";
import { ModuleWrapper } from "@components/module-wrapper";
import { UserEditBreadcrumbLinks } from "../constants";
import { StyledAvatar } from "./styled";
-import {
- Box,
- Grid,
- Typography,
- Badge,
- Avatar,
- TextField,
- Button,
- FormControlLabel,
- Checkbox,
- Paper,
- InputAdornment,
- IconButton,
- Tooltip,
- useTheme,
- useMediaQuery,
-} from "@mui/material";
+import Box from "@mui/material/Box";
+import Grid from "@mui/material/Grid";
+import Typography from "@mui/material/Typography";
+import Badge from "@mui/material/Badge";
+import Avatar from "@mui/material/Avatar";
+import TextField from "@mui/material/TextField";
+import Button from "@mui/material/Button";
+import FormControlLabel from "@mui/material/FormControlLabel";
+import Checkbox from "@mui/material/Checkbox";
+import Paper from "@mui/material/Paper";
+import InputAdornment from "@mui/material/InputAdornment";
+import IconButton from "@mui/material/IconButton";
+import Tooltip from "@mui/material/Tooltip";
+import { useTheme } from "@mui/material/styles";
+import useMediaQuery from "@mui/material/useMediaQuery";
import { Camera, XCircle, Save, Eye, EyeOff, User, Lock } from "lucide-react";
import { UserEditProps } from "./types";
import { buildAbsoluteUrl } from "@lib/network/utils";
diff --git a/src/features/users/user-edit/styled.tsx b/src/features/users/user-edit/styled.tsx
index fdbc5675..3edf3e43 100644
--- a/src/features/users/user-edit/styled.tsx
+++ b/src/features/users/user-edit/styled.tsx
@@ -1,6 +1,6 @@
import { styled } from "@mui/material/styles";
-import { Avatar } from "@mui/material";
-import { Theme as MuiTheme } from "@mui/material/styles";
+import type { Theme } from "@mui/material/styles";
+import Avatar from "@mui/material/Avatar";
export const UserEditContainer = styled("div")`
flex-grow: 1;
@@ -8,7 +8,7 @@ export const UserEditContainer = styled("div")`
export const StyledAvatar = styled(Avatar)`
&:hover {
- background-color: ${({ theme }: { theme: MuiTheme }) => theme.palette.primary.light};
+ background-color: ${({ theme }: { theme: Theme }) => theme.palette.primary.light};
cursor: pointer;
}
`;
diff --git a/src/features/users/user-list/index.styled.tsx b/src/features/users/user-list/index.styled.tsx
index 1fe3ea50..7b502d09 100644
--- a/src/features/users/user-list/index.styled.tsx
+++ b/src/features/users/user-list/index.styled.tsx
@@ -1,4 +1,5 @@
-import { ListItem, styled } from "@mui/material";
+import ListItem from "@mui/material/ListItem";
+import { styled } from "@mui/material/styles";
import ListItemText from "@mui/material/ListItemText";
export const UserNameListItem = styled(ListItem)({
diff --git a/src/features/users/user-list/index.tsx b/src/features/users/user-list/index.tsx
index 65403911..3f7429d7 100644
--- a/src/features/users/user-list/index.tsx
+++ b/src/features/users/user-list/index.tsx
@@ -15,7 +15,9 @@ import useLocalStorage from "use-local-storage";
import { DataListSettings } from "types";
import { Plus, Download, Upload, Settings2, Filter } from "lucide-react";
import { Fragment, useState } from "react";
-import { Avatar, Button, ListItemAvatar } from "@mui/material";
+import Avatar from "@mui/material/Avatar";
+import Button from "@mui/material/Button";
+import ListItemAvatar from "@mui/material/ListItemAvatar";
import { getAddFormRoute } from "@lib/router";
import { GhostLink } from "@components/ghost-link";
import { useRequestContext } from "@providers/request-provider";
diff --git a/src/lib/network/utils.ts b/src/lib/network/utils.ts
index 5ef4425f..630ec278 100644
--- a/src/lib/network/utils.ts
+++ b/src/lib/network/utils.ts
@@ -2,7 +2,7 @@ export const buildAbsoluteUrl = (localUrl: string | null | undefined) => {
if (!localUrl || localUrl.length === 0) {
return "";
}
- const coreApi = process.env.CORE_API;
+ const coreApi = import.meta.env.VITE_API_URL || import.meta.env.CORE_API;
const base =
coreApi && coreApi.trim().length > 0
? coreApi
diff --git a/src/lib/router/index.ts b/src/lib/router/index.ts
index 7e10e940..69f5bca0 100644
--- a/src/lib/router/index.ts
+++ b/src/lib/router/index.ts
@@ -1,85 +1,66 @@
-import { Parser, route, intParser } from "typesafe-routes";
-
-export const enum CoreModule {
- dashboard = "dashboard",
- contacts = "contacts",
- links = "links",
- comments = "comments",
- content = "content",
- media = "media",
- accounts = "accounts",
- orders = "orders",
- deals = "deals",
- domains = "domains",
- segments = "segments",
- unsubscribes = "unsubscribes",
- users = "users",
- about = "about",
- emailTemplates = "email-templates",
- activityLogs = "activity-logs",
- settings = "settings",
- tasks = "tasks",
- deployments = "deployments",
- campaigns = "campaigns",
- sequences = "sequences",
-}
-
-const coreModuleParser: Parser = {
- parse: (value) => value as CoreModule,
- serialize: (moduleName) => moduleName,
+export const CoreModule = {
+ dashboard: "dashboard",
+ contacts: "contacts",
+ links: "links",
+ comments: "comments",
+ content: "content",
+ media: "media",
+ accounts: "accounts",
+ orders: "orders",
+ deals: "deals",
+ domains: "domains",
+ segments: "segments",
+ unsubscribes: "unsubscribes",
+ users: "users",
+ about: "about",
+ emailTemplates: "email-templates",
+ activityLogs: "activity-logs",
+ settings: "settings",
+ tasks: "tasks",
+ deployments: "deployments",
+ campaigns: "campaigns",
+ sequences: "sequences",
+} as const;
+
+export type CoreModuleType = typeof CoreModule[keyof typeof CoreModule];
+
+// Route parameter types for use with React Router's useParams()
+// Note: URL params are always strings, so we parse them when needed
+// Using Record type to satisfy React Router's type constraints
+export type ModuleRouteParams = {
+ moduleName?: string;
};
-export const coreModuleRoute = route(
- "/:moduleName",
- {
- moduleName: coreModuleParser,
- },
- {}
-);
-
-export const editFormRoute = route(
- ":id/edit",
- {
- id: intParser,
- },
- {}
-);
-
-export const viewFormRoute = route(
- ":id/view",
- {
- id: intParser,
- },
- {}
-);
-
-export const addFormRoute = route("add", {}, {});
-
-export const importFormRoute = route("import", {}, {});
-
-export const detailsRoute = route("details", {}, {});
-
-export const contactInvoicesRoute = route("invoices", {}, {});
-
-export const contactLogsRoute = route("logs", {}, {});
-
-export const contactCommunicationsRoute = route("communications", {}, {});
-
-export const contactActivityRoute = route("activity", {}, {});
-
-export const contactOrdersRoute = route("orders", {}, {});
+export type IdRouteParams = {
+ id?: string;
+};
-export const contactDealsRoute = route("deals", {}, {});
+export type ModuleWithIdRouteParams = ModuleRouteParams & IdRouteParams;
-export const getCoreModuleRoute = (moduleName: CoreModule) => coreModuleRoute({ moduleName }).$;
+// Simple type-safe route builders
+export const getCoreModuleRoute = (moduleName: CoreModuleType) => `/${moduleName}`;
-export const getEditFormRoute = (id: number) => editFormRoute({ id: id }).$;
+/**
+ * Returns a route path for editing a form.
+ * @param id - Optional ID. If provided, returns actual path (e.g., "123/edit").
+ * If not provided, returns route template (e.g., ":id/edit") for use in route definitions.
+ */
+export const getEditFormRoute = (id?: number): string => {
+ return id !== undefined ? `${id}/edit` : ":id/edit";
+};
-export const getViewFormRoute = (id: number) => viewFormRoute({ id: id }).$;
+/**
+ * Returns a route path for viewing a form.
+ * @param id - Optional ID. If provided, returns actual path (e.g., "123/view").
+ * If not provided, returns route template (e.g., ":id/view") for use in route definitions.
+ */
+export const getViewFormRoute = (id?: number): string => {
+ return id !== undefined ? `${id}/view` : ":id/view";
+};
-export const getAddFormRoute = () => addFormRoute({}).$;
+export const getAddFormRoute = () => "add";
-export const getImportFormRoute = () => importFormRoute({}).$;
+export const getImportFormRoute = () => "import";
export const rootRoute = "/";
diff --git a/src/providers/auth-provider.tsx b/src/providers/auth-provider.tsx
index d35f218e..dc746027 100644
--- a/src/providers/auth-provider.tsx
+++ b/src/providers/auth-provider.tsx
@@ -1,7 +1,10 @@
import { memo, PropsWithChildren, useCallback, useEffect, useState } from "react";
import { PublicClientApplication, Configuration, InteractionStatus } from "@azure/msal-browser";
import { MsalProvider, useMsal } from "@azure/msal-react";
-import { Box, CircularProgress, Typography, Alert } from "@mui/material";
+import Box from "@mui/material/Box";
+import CircularProgress from "@mui/material/CircularProgress";
+import Typography from "@mui/material/Typography";
+import Alert from "@mui/material/Alert";
import { useConfig } from "@providers/config-provider";
import { Api } from "@lib/network/swagger-client";
import { buildAbsoluteUrl } from "@lib/network/utils";
diff --git a/src/providers/config-provider.tsx b/src/providers/config-provider.tsx
index 73d5963e..6ff90753 100644
--- a/src/providers/config-provider.tsx
+++ b/src/providers/config-provider.tsx
@@ -27,7 +27,8 @@ export const ConfigProvider = ({ children }: { children: React.ReactNode }) => {
try {
setLoading(true);
setError(null);
- const response = await client.api.configList();
+ // Config is required before auth bootstrap; do not attach auth requirements here.
+ const response = await client.api.configList({ secure: false });
setConfig(response.data as ExtendedConfigDto);
} catch (e: unknown) {
let errorMessage = "Failed to load configuration from /api/config";
@@ -58,6 +59,12 @@ export const ConfigProvider = ({ children }: { children: React.ReactNode }) => {
errorMessage = `Server error: ${error.error.message}`;
} else if (error.error?.title) {
errorMessage = `Server error: ${error.error.title}`;
+ } else if (
+ error.message?.includes("Unexpected token '<'") ||
+ error.message?.includes(" {
const reloadConfig = async () => {
try {
setError(null);
- const response = await client.api.configList();
+ const response = await client.api.configList({ secure: false });
setConfig(response.data as ExtendedConfigDto);
} catch (e) {
// Silent reload - don't update error state to avoid disrupting the UI
diff --git a/src/providers/theme-provider.tsx b/src/providers/theme-provider.tsx
index e5ea0d04..b133c2ea 100644
--- a/src/providers/theme-provider.tsx
+++ b/src/providers/theme-provider.tsx
@@ -1,87 +1,252 @@
import { memo, PropsWithChildren } from "react";
-import { createTheme, CssBaseline, ThemeProvider as MUIThemeProvider } from "@mui/material";
+import { createTheme, ThemeProvider as MUIThemeProvider } from "@mui/material/styles";
+import CssBaseline from "@mui/material/CssBaseline";
import { ThemeOptions } from "@mui/material/styles";
export const themeOptions: ThemeOptions = {
spacing: 4,
+ shape: {
+ borderRadius: 8, // Modern rounded corners
+ },
typography: {
- fontFamily: "'Inter', 'Roboto', 'Helvetica', 'Arial', sans-serif",
+ fontFamily: "'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Helvetica', 'Arial', sans-serif",
+ h1: {
+ fontSize: "2.5rem",
+ fontWeight: 700,
+ lineHeight: 1.2,
+ letterSpacing: "-0.02em",
+ },
+ h2: {
+ fontSize: "2rem",
+ fontWeight: 700,
+ lineHeight: 1.3,
+ letterSpacing: "-0.01em",
+ },
h3: {
- fontSize: "36px",
+ fontSize: "1.75rem",
fontWeight: 600,
- lineHeight: "42px",
+ lineHeight: 1.4,
+ letterSpacing: "-0.01em",
+ },
+ h4: {
+ fontSize: "1.5rem",
+ fontWeight: 600,
+ lineHeight: 1.4,
+ },
+ h5: {
+ fontSize: "1.25rem",
+ fontWeight: 600,
+ lineHeight: 1.5,
+ },
+ h6: {
+ fontSize: "1rem",
+ fontWeight: 600,
+ lineHeight: 1.5,
+ },
+ body1: {
+ fontSize: "1rem",
+ lineHeight: 1.6,
+ },
+ body2: {
+ fontSize: "0.875rem",
+ lineHeight: 1.5,
},
subtitle1: {
- fontSize: "16px",
+ fontSize: "1rem",
fontWeight: 500,
- lineHeight: "20px",
+ lineHeight: 1.5,
},
subtitle2: {
- fontSize: "12px",
+ fontSize: "0.875rem",
fontWeight: 600,
- lineHeight: "16px",
+ lineHeight: 1.4,
color: "#6B7280",
},
+ button: {
+ textTransform: "none",
+ fontWeight: 500,
+ },
},
palette: {
+ mode: "light",
primary: {
main: "#3878FF",
- light: "#f0f4ff",
+ light: "#6B9AFF",
dark: "#2854B2",
+ contrastText: "#FFFFFF",
},
secondary: {
- main: "#0b0b0d",
- light: "#f8faff",
- dark: "#060A10",
+ main: "#0F172A",
+ light: "#1E293B",
+ dark: "#020617",
+ contrastText: "#FFFFFF",
},
text: {
- primary: "#0b0b0d",
- secondary: "#0b0b0ddb",
- disabled: "rgba(0, 0, 0, 0.38)",
+ primary: "#0F172A",
+ secondary: "#64748B",
+ disabled: "#94A3B8",
},
info: {
- main: "#2196F3",
- light: "#64B6F7",
- dark: "#0B79D0",
- contrastText: "#FFF",
+ main: "#3B82F6",
+ light: "#60A5FA",
+ dark: "#2563EB",
+ contrastText: "#FFFFFF",
},
success: {
- main: "#52AF21",
- light: "#7BC652",
- dark: "#3B7E17",
- contrastText: "#FFF",
+ main: "#10B981",
+ light: "#34D399",
+ dark: "#059669",
+ contrastText: "#FFFFFF",
},
error: {
- main: "#C82828",
- light: "#D55858",
- dark: "#8E1C1C",
- contrastText: "#FFF",
+ main: "#EF4444",
+ light: "#F87171",
+ dark: "#DC2626",
+ contrastText: "#FFFFFF",
},
warning: {
- main: "#ff9800",
- light: "#FFB547",
- dark: "#C77700",
- contrastText: "rgba(0, 0, 0, 0.87)",
+ main: "#F59E0B",
+ light: "#FBBF24",
+ dark: "#D97706",
+ contrastText: "#FFFFFF",
},
background: {
- default: "#ffffff",
- primary: "#fbfcff",
- primaryHover: "#F1F2F4",
- secondary: "#FAFCFF",
+ default: "#FFFFFF",
+ paper: "#FFFFFF",
+ primary: "#F8FAFC",
+ primaryHover: "#F1F5F9",
+ secondary: "#FFFFFF",
+ } as any,
+ grey: {
+ 50: "#F8FAFC",
+ 100: "#F1F5F9",
+ 200: "#E2E8F0",
+ 300: "#CBD5E1",
+ 400: "#94A3B8",
+ 500: "#64748B",
+ 600: "#475569",
+ 700: "#334155",
+ 800: "#1E293B",
+ 900: "#0F172A",
},
},
+ shadows: [
+ "none",
+ "0px 1px 2px 0px rgba(15, 23, 42, 0.05)", // sm
+ "0px 1px 3px 0px rgba(15, 23, 42, 0.1), 0px 1px 2px 0px rgba(15, 23, 42, 0.06)", // md
+ "0px 4px 6px -1px rgba(15, 23, 42, 0.1), 0px 2px 4px -1px rgba(15, 23, 42, 0.06)", // lg
+ "0px 10px 15px -3px rgba(15, 23, 42, 0.1), 0px 4px 6px -2px rgba(15, 23, 42, 0.05)", // xl
+ "0px 20px 25px -5px rgba(15, 23, 42, 0.1), 0px 10px 10px -5px rgba(15, 23, 42, 0.04)", // 2xl
+ "0px 25px 50px -12px rgba(15, 23, 42, 0.25)", // 3xl
+ "0px 25px 50px -12px rgba(15, 23, 42, 0.25)",
+ "0px 25px 50px -12px rgba(15, 23, 42, 0.25)",
+ "0px 25px 50px -12px rgba(15, 23, 42, 0.25)",
+ "0px 25px 50px -12px rgba(15, 23, 42, 0.25)",
+ "0px 25px 50px -12px rgba(15, 23, 42, 0.25)",
+ "0px 25px 50px -12px rgba(15, 23, 42, 0.25)",
+ "0px 25px 50px -12px rgba(15, 23, 42, 0.25)",
+ "0px 25px 50px -12px rgba(15, 23, 42, 0.25)",
+ "0px 25px 50px -12px rgba(15, 23, 42, 0.25)",
+ "0px 25px 50px -12px rgba(15, 23, 42, 0.25)",
+ "0px 25px 50px -12px rgba(15, 23, 42, 0.25)",
+ "0px 25px 50px -12px rgba(15, 23, 42, 0.25)",
+ "0px 25px 50px -12px rgba(15, 23, 42, 0.25)",
+ "0px 25px 50px -12px rgba(15, 23, 42, 0.25)",
+ "0px 25px 50px -12px rgba(15, 23, 42, 0.25)",
+ "0px 25px 50px -12px rgba(15, 23, 42, 0.25)",
+ "0px 25px 50px -12px rgba(15, 23, 42, 0.25)",
+ "0px 25px 50px -12px rgba(15, 23, 42, 0.25)",
+ ] as any,
components: {
MuiButton: {
styleOverrides: {
root: {
textTransform: "none",
+ fontWeight: 500,
+ borderRadius: 8,
+ padding: "8px 16px",
+ boxShadow: "none",
+ "&:hover": {
+ boxShadow: "none",
+ },
+ },
+ contained: {
+ "&:hover": {
+ boxShadow: "0px 4px 6px -1px rgba(15, 23, 42, 0.1), 0px 2px 4px -1px rgba(15, 23, 42, 0.06)",
+ },
+ },
+ },
+ },
+ MuiCard: {
+ styleOverrides: {
+ root: {
+ borderRadius: 12,
+ boxShadow: "0px 1px 3px 0px rgba(15, 23, 42, 0.1), 0px 1px 2px 0px rgba(15, 23, 42, 0.06)",
+ border: "1px solid #E2E8F0",
+ transition: "none",
},
},
},
MuiCardContent: {
styleOverrides: {
root: {
- paddingLeft: "23px",
+ padding: "24px",
+ "&:last-child": {
+ paddingBottom: "24px",
+ },
+ },
+ },
+ },
+ MuiTextField: {
+ styleOverrides: {
+ root: {
+ "& .MuiOutlinedInput-root": {
+ borderRadius: 8,
+ "&:hover .MuiOutlinedInput-notchedOutline": {
+ borderColor: "#CBD5E1",
+ },
+ },
+ },
+ },
+ },
+ MuiChip: {
+ styleOverrides: {
+ root: {
+ borderRadius: 6,
+ fontWeight: 500,
+ },
+ },
+ },
+ MuiPaper: {
+ styleOverrides: {
+ root: {
+ borderRadius: 12,
+ transition: "none",
+ },
+ },
+ },
+ MuiDialog: {
+ styleOverrides: {
+ paper: {
+ borderRadius: 16,
+ boxShadow: "0px 20px 25px -5px rgba(15, 23, 42, 0.1), 0px 10px 10px -5px rgba(15, 23, 42, 0.04)",
+ },
+ },
+ },
+ MuiDataGrid: {
+ styleOverrides: {
+ root: {
+ border: "none",
+ "& .MuiDataGrid-columnHeaders": {
+ backgroundColor: "#F8FAFC",
+ borderBottom: "1px solid #E2E8F0",
+ },
+ "& .MuiDataGrid-cell": {
+ borderBottom: "1px solid #F1F5F9",
+ },
+ "& .MuiDataGrid-row:hover": {
+ backgroundColor: "#F8FAFC",
+ },
},
},
},
diff --git a/src/types/theme.d.ts b/src/types/theme.d.ts
index b427c237..ab163fd6 100644
--- a/src/types/theme.d.ts
+++ b/src/types/theme.d.ts
@@ -6,18 +6,22 @@ import "@mui/material/styles";
// Add custom theme properties
declare module "@mui/material/styles" {
interface Theme extends MuiTheme {
- palette: MuiTheme["palette"];
- background: {
- primary: string;
- primaryHover: string;
+ palette: MuiTheme["palette"] & {
+ background: MuiTheme["palette"]["background"] & {
+ primary?: string;
+ primaryHover?: string;
+ secondary?: string;
+ };
};
}
- interface ThemeOptions extends MuiTheme {
- background?: {
- primary?: string;
- primaryHover?: string;
+ interface ThemeOptions {
+ palette?: {
+ background?: {
+ primary?: string;
+ primaryHover?: string;
+ secondary?: string;
+ };
};
- unstable_sx?: Record; // Use a more specific type for unstable_sx
}
}
diff --git a/src/utils/import-file-helper.ts b/src/utils/import-file-helper.ts
index d39a227f..83b04cca 100644
--- a/src/utils/import-file-helper.ts
+++ b/src/utils/import-file-helper.ts
@@ -1,4 +1,3 @@
-import { Dictionary } from "lodash";
interface Validation {
rule: string;
@@ -6,7 +5,7 @@ interface Validation {
level: string;
}
-const alternativeMatches: Dictionary = {
+const alternativeMatches: Record = {
firstName: ["first name", "first"],
lastName: ["last name", "last"],
email: ["email address"],
@@ -59,7 +58,7 @@ const buildValidations = (key: string, property: any) => {
return validations;
};
-const typeMapping: Dictionary = {
+const typeMapping: Record = {
string: "input",
integer: "input",
boolean: "checkbox",
diff --git a/src/utils/menu-config.tsx b/src/utils/menu-config.tsx
index 5c5f0624..6f2e5cca 100644
--- a/src/utils/menu-config.tsx
+++ b/src/utils/menu-config.tsx
@@ -1,4 +1,4 @@
-import { CoreModule, getCoreModuleRoute } from "../lib/router";
+import { CoreModule, CoreModuleType, getCoreModuleRoute } from "../lib/router";
import {
LayoutDashboard,
FileText,
@@ -22,7 +22,20 @@ import {
Zap,
} from "lucide-react";
-export const MENU_CONFIG = [
+export type MenuItem = {
+ id: string;
+ label: string;
+ icon: React.ReactNode;
+ entity?: string;
+ route: string;
+};
+
+interface SidebarMenuSection {
+ header: string;
+ items: MenuItem[];
+}
+
+export const MENU_CONFIG: SidebarMenuSection[] = [
{
header: "MAIN",
items: [
@@ -30,7 +43,6 @@ export const MENU_CONFIG = [
id: "dashboard",
label: "Dashboard",
icon: ,
- entity: null,
route: getCoreModuleRoute(CoreModule.dashboard),
},
],
@@ -163,7 +175,6 @@ export const MENU_CONFIG = [
id: "tasks",
label: "Tasks",
icon: ,
- entity: null,
route: getCoreModuleRoute(CoreModule.tasks),
},
],
@@ -175,7 +186,6 @@ export const MENU_CONFIG = [
id: "settings",
label: "Settings",
icon: ,
- entity: null,
route: getCoreModuleRoute(CoreModule.settings),
},
{
@@ -196,7 +206,6 @@ export const MENU_CONFIG = [
id: "about",
label: "About",
icon: ,
- entity: null,
route: getCoreModuleRoute(CoreModule.about),
},
],
diff --git a/src/vite-env.d.ts b/src/vite-env.d.ts
new file mode 100644
index 00000000..f794a291
--- /dev/null
+++ b/src/vite-env.d.ts
@@ -0,0 +1,8 @@
+interface ImportMetaEnv {
+ readonly VITE_API_URL: string;
+ readonly CORE_API?: string;
+}
+
+interface ImportMeta {
+ readonly env: ImportMetaEnv;
+}
diff --git a/tsconfig.json b/tsconfig.json
index 908b5bef..09d39c33 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -2,7 +2,7 @@
"compilerOptions": {
"lib": ["dom", "dom.iterable", "es2020", "esnext"],
"jsx": "react-jsx",
- "moduleResolution": "node",
+ "moduleResolution": "bundler",
"allowJs": false,
"target": "ESNext",
"module": "ESNext",
diff --git a/vite.config.ts b/vite.config.ts
new file mode 100644
index 00000000..a3820890
--- /dev/null
+++ b/vite.config.ts
@@ -0,0 +1,182 @@
+import { defineConfig, loadEnv, PluginOption } from 'vite';
+import react from '@vitejs/plugin-react';
+import tsconfigPaths from 'vite-tsconfig-paths';
+import { resolve } from 'path';
+import { createHtmlPlugin } from 'vite-plugin-html';
+import { analyzer } from 'vite-bundle-analyzer'
+
+// https://vitejs.dev/config/
+export default defineConfig(({ mode, command }) => {
+ // Load env file based on `mode` in the current working directory.
+ // Set the third parameter to '' to load all env regardless of the `VITE_` prefix.
+ const env = loadEnv(mode, process.cwd(), '');
+
+ const isProduction = mode === 'production';
+ const isDevelopment = mode === 'development';
+
+ return {
+ // Replaces webpack entry point - Vite uses index.html as entry
+ // Your src/index.ts will be referenced from index.html
+
+ // Replaces webpack output configuration
+ build: {
+ outDir: 'dist',
+ // Replaces [name].[contenthash:8].js
+ rollupOptions: {
+ output: {
+ entryFileNames: '[name].[hash:8].js',
+ chunkFileNames: '[name].[hash:8].js',
+ assetFileNames: '[name].[hash:8].[ext]',
+ // Module Federation equivalent - shared dependencies
+ manualChunks: (id) => {
+ // Replicate Module Federation shared dependencies
+ if (id.includes('node_modules')) {
+ if (id.includes('react') || id.includes('react-dom')) {
+ return 'react-vendor';
+ }
+ // Split other vendors
+ return 'vendor';
+ }
+ },
+ },
+ },
+ // Replaces devtool: false in production
+ sourcemap: !isProduction,
+ // Enable minification
+ minify: isProduction ? 'terser' : false,
+ // Replicate webpack cache behavior
+ emptyOutDir: true, // Replaces CleanWebpackPlugin
+ },
+
+ // Replaces webpack cache.type: 'filesystem'
+ cacheDir: 'node_modules/.vite',
+
+ // Replaces webpack resolve
+ resolve: {
+ // Replaces webpack resolve.extensions
+ extensions: ['.tsx', '.ts', '.js', '.jsx', '.json'],
+
+ // Replaces TsconfigPathsPlugin + manual aliases
+ alias: {
+ '@providers': resolve(__dirname, './src/providers'),
+ '@lib': resolve(__dirname, './src/lib'),
+ '@features': resolve(__dirname, './src/features'),
+ '@components': resolve(__dirname, './src/components'),
+ '@': resolve(__dirname, './src'),
+ // Replaces webpack fallback for buffer
+ 'buffer': 'buffer/',
+ },
+ },
+
+ // Replaces webpack DefinePlugin via DotenvPlugin
+ define: {
+ // Make env variables available
+ 'process.env': JSON.stringify(env),
+ // Provide global if needed
+ 'global': 'globalThis',
+ },
+
+ // Replaces webpack-dev-server
+ server: {
+ port: 8081,
+ open: true,
+ host: true,
+ // Replaces historyApiFallback: true
+ historyApiFallback: true,
+ // Enable HMR
+ hmr: {
+ overlay: true,
+ },
+ },
+
+ // Preview server (for testing production builds)
+ preview: {
+ port: 3000,
+ open: true,
+ historyApiFallback: true,
+ },
+
+ // Plugins
+ plugins: [
+ analyzer({
+ analyzerPort: 8082,
+ }),
+ // React plugin (replaces babel/react loaders)
+ react({
+ // Fast Refresh
+ fastRefresh: true,
+ // If you use @emotion
+ jsxImportSource: '@emotion/react',
+ babel: {
+ plugins: ['@emotion/babel-plugin'],
+ },
+ }),
+
+ // Replaces TsconfigPathsPlugin
+ tsconfigPaths({
+ root: resolve(__dirname, '.'),
+ // Use your tsconfig
+ projects: [resolve(__dirname, './tsconfig.json')],
+ }),
+
+ // Replaces HtmlWebpackPlugin + CopyWebpackPlugin for index.html
+ createHtmlPlugin({
+ minify: isProduction,
+ inject: {
+ data: {
+ title: 'LeadCMS Admin',
+ // Add any variables you need in HTML
+ },
+ },
+ // Template is now in root as index.html
+ }),
+
+ // Progress plugin equivalent (Vite shows progress by default)
+ // But you can add custom progress if needed
+ ...(isDevelopment ? [progressPlugin()] : []),
+ ],
+
+ // CSS handling (replaces style-loader + css-loader)
+ css: {
+ modules: {
+ localsConvention: 'camelCase',
+ },
+ devSourcemap: isDevelopment,
+ },
+
+ // Optimize dependencies (replaces webpack optimization)
+ optimizeDeps: {
+ // Force include buffer for ProvidePlugin equivalent
+ include: [
+ 'buffer',
+ 'react',
+ 'react-dom',
+ 'react/jsx-runtime',
+ ],
+ // Replicate webpack ProvidePlugin for Buffer
+ esbuildOptions: {
+ define: {
+ global: 'globalThis',
+ },
+ },
+ },
+
+ // Worker configuration (if you use web workers)
+ worker: {
+ format: 'es',
+ },
+ };
+});
+
+// Custom progress plugin (optional - Vite already shows progress)
+function progressPlugin(): PluginOption {
+ return {
+ name: 'vite-plugin-progress',
+ buildStart() {
+ console.log('🚀 Build starting...');
+ },
+ buildEnd() {
+ console.log('✅ Build complete!');
+ },
+ };
+}
diff --git a/webpack/tsconfig.json b/webpack/tsconfig.json
deleted file mode 100644
index eb7726e5..00000000
--- a/webpack/tsconfig.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "compilerOptions": {
- "target": "ES5",
- "module": "CommonJS",
- "esModuleInterop": true,
- "resolveJsonModule": true,
- "strict": true,
- "forceConsistentCasingInFileNames": true,
- "skipLibCheck": true,
- "types": ["node"]
- }
-}
diff --git a/webpack/webpack.config.ts b/webpack/webpack.config.ts
deleted file mode 100644
index 8a07c121..00000000
--- a/webpack/webpack.config.ts
+++ /dev/null
@@ -1,117 +0,0 @@
-// https://github.com/dividab/tsconfig-paths-webpack-plugin/issues/32#issuecomment-478042178
-delete process.env.TS_NODE_PROJECT;
-
-import { resolve } from "path";
-import { container, ProvidePlugin, ProgressPlugin } from "webpack";
-import HtmlWebpackPlugin from "html-webpack-plugin";
-import { CleanWebpackPlugin } from "clean-webpack-plugin";
-import TsconfigPathsPlugin from "tsconfig-paths-webpack-plugin";
-import { Configuration as WebpackConfiguration } from "webpack";
-import { Configuration as WebpackDevServerConfiguration } from "webpack-dev-server";
-import dotenv from "dotenv";
-import DotenvPlugin from "dotenv-webpack";
-import CopyWebpackPlugin from "copy-webpack-plugin";
-import * as fs from "fs";
-
-const packageJson = JSON.parse(fs.readFileSync(resolve(__dirname, "../package.json"), "utf-8"));
-const { dependencies } = packageJson;
-
-const { ModuleFederationPlugin } = container;
-
-interface Configuration extends WebpackConfiguration {
- devServer?: WebpackDevServerConfiguration;
-}
-
-dotenv.config();
-
-const configuration: Configuration = {
- entry: {
- main: resolve(__dirname, "../src/index.ts"),
- },
- output: {
- path: resolve(__dirname, "../dist"),
- filename: "[name].[contenthash:8].js",
- publicPath: "/",
- },
- cache: {
- type: "filesystem", // Enable persistent caching
- },
- resolve: {
- extensions: [".tsx", ".ts", ".js"], // Limit extensions to reduce overhead
- plugins: [new TsconfigPathsPlugin({ configFile: resolve(__dirname, "../tsconfig.json") })],
- alias: {
- "@providers": resolve(__dirname, "../src/providers"),
- "@lib": resolve(__dirname, "../src/lib"),
- "@features": resolve(__dirname, "../src/features"),
- "@components": resolve(__dirname, "../src/components"),
- },
- fallback: {
- buffer: require.resolve("buffer/"),
- },
- },
- devtool:
- process.env.NODE_ENV === "production"
- ? false // Disable source maps in production
- : "source-map", // Enable source maps in development
- module: {
- rules: [
- {
- test: /\.css$/,
- use: [{ loader: "style-loader" }, { loader: "css-loader" }],
- },
- {
- test: /\.tsx?$/,
- include: resolve(__dirname, "../src"), // Use include instead of exclude
- use: [
- {
- loader: "ts-loader",
- options: {
- transpileOnly: true, // Speed up compilation by skipping type checking
- },
- },
- ],
- },
- ],
- },
- devServer: {
- historyApiFallback: true,
- },
- plugins: [
- new CleanWebpackPlugin(),
- new DotenvPlugin(),
- new HtmlWebpackPlugin({
- template: resolve(__dirname, "../public/index.html"),
- }),
- new CopyWebpackPlugin({
- patterns: [
- {
- from: resolve(__dirname, "../public"),
- to: resolve(__dirname, "../dist"),
- filter: (resourcePath) => !resourcePath.endsWith("index.html"),
- },
- ],
- }),
- new ModuleFederationPlugin({
- shared: {
- react: {
- requiredVersion: dependencies.react,
- singleton: true,
- },
- "react/jsx-runtime": {
- singleton: true,
- requiredVersion: dependencies.react,
- },
- "react-dom": {
- requiredVersion: dependencies["react-dom"],
- singleton: true,
- },
- },
- }),
- new ProvidePlugin({
- Buffer: ["buffer", "Buffer"],
- }),
- new ProgressPlugin(),
- ],
-};
-
-export default configuration;