From cb0fd04f59aa82ee008ba190ddfccf31ac74ad1e Mon Sep 17 00:00:00 2001 From: LeonspaceX Date: Sat, 18 Oct 2025 17:34:11 +0800 Subject: [PATCH] first commit --- .gitignore | 24 + LICENSE.txt | 21 + README-deployment.md | 70 + README.md | 74 + eslint.config.js | 23 + index.html | 13 + package.json | 43 + pnpm-lock.yaml | 6129 ++++++++++++++++++++++++ public/_redirects | 1 + public/about.md | 8 + public/icon.png | Bin 0 -> 126780 bytes src/App.css | 27 + src/App.tsx | 125 + src/admin_api.tsx | 732 +++ src/api.ts | 234 + src/assets/react.svg | 1 + src/components/AboutPage.tsx | 99 + src/components/AdminDashboard.tsx | 886 ++++ src/components/AdminLogin.tsx | 179 + src/components/AdminManageComments.tsx | 259 + src/components/AdminModifyPost.tsx | 152 + src/components/AdminPage.tsx | 46 + src/components/AdminPostCard.tsx | 165 + src/components/CommentSection.tsx | 233 + src/components/CreatePost.tsx | 130 + src/components/PostCard.tsx | 227 + src/components/PostState.tsx | 73 + src/components/ReportPost.tsx | 84 + src/components/ReportState.tsx | 72 + src/components/StatusDisplay.tsx | 153 + src/config.ts | 12 + src/index.css | 8 + src/layouts/MainLayout.tsx | 124 + src/layouts/components/Footer.tsx | 26 + src/layouts/components/Header.tsx | 70 + src/layouts/components/Sidebar.tsx | 115 + src/main.tsx | 13 + src/pages/InitPage.tsx | 114 + src/pages/NotFound.tsx | 79 + tsconfig.app.json | 28 + tsconfig.json | 7 + tsconfig.node.json | 26 + vite.config.ts | 17 + 43 files changed, 10922 insertions(+) create mode 100644 .gitignore create mode 100644 LICENSE.txt create mode 100644 README-deployment.md create mode 100644 README.md create mode 100644 eslint.config.js create mode 100644 index.html create mode 100644 package.json create mode 100644 pnpm-lock.yaml create mode 100644 public/_redirects create mode 100644 public/about.md create mode 100644 public/icon.png create mode 100644 src/App.css create mode 100644 src/App.tsx create mode 100644 src/admin_api.tsx create mode 100644 src/api.ts create mode 100644 src/assets/react.svg create mode 100644 src/components/AboutPage.tsx create mode 100644 src/components/AdminDashboard.tsx create mode 100644 src/components/AdminLogin.tsx create mode 100644 src/components/AdminManageComments.tsx create mode 100644 src/components/AdminModifyPost.tsx create mode 100644 src/components/AdminPage.tsx create mode 100644 src/components/AdminPostCard.tsx create mode 100644 src/components/CommentSection.tsx create mode 100644 src/components/CreatePost.tsx create mode 100644 src/components/PostCard.tsx create mode 100644 src/components/PostState.tsx create mode 100644 src/components/ReportPost.tsx create mode 100644 src/components/ReportState.tsx create mode 100644 src/components/StatusDisplay.tsx create mode 100644 src/config.ts create mode 100644 src/index.css create mode 100644 src/layouts/MainLayout.tsx create mode 100644 src/layouts/components/Footer.tsx create mode 100644 src/layouts/components/Header.tsx create mode 100644 src/layouts/components/Sidebar.tsx create mode 100644 src/main.tsx create mode 100644 src/pages/InitPage.tsx create mode 100644 src/pages/NotFound.tsx create mode 100644 tsconfig.app.json create mode 100644 tsconfig.json create mode 100644 tsconfig.node.json create mode 100644 vite.config.ts diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a547bf3 --- /dev/null +++ b/.gitignore @@ -0,0 +1,24 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/LICENSE.txt b/LICENSE.txt new file mode 100644 index 0000000..563cc6c --- /dev/null +++ b/LICENSE.txt @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024-2025 libm + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README-deployment.md b/README-deployment.md new file mode 100644 index 0000000..53547da --- /dev/null +++ b/README-deployment.md @@ -0,0 +1,70 @@ +# SPA 路由部署说明 + +## 问题描述 +React Router 使用的是客户端路由,当用户直接访问 `/admin`、`/create` 等路由时,服务器会尝试查找对应的文件,但这些路径在服务器上并不存在,因此返回 404。 + +## 解决方案 + +### 1. OpenResty/Nginx 配置 + +在你的 OpenResty 配置中添加以下配置: + +```nginx +server { + listen 80; + server_name your-domain.com; + root /path/to/your/dist; + index index.html; + + # 处理静态资源 + location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot)$ { + expires 1y; + add_header Cache-Control "public, immutable"; + try_files $uri =404; + } + + # SPA 路由回退 - 关键配置 + location / { + try_files $uri $uri/ /index.html; + } +} +``` + +### 2. 关键配置说明 + +- `try_files $uri $uri/ /index.html;` 是核心配置 +- 当访问任何路由时,服务器会: + 1. 首先尝试查找对应的文件 (`$uri`) + 2. 然后尝试查找对应的目录 (`$uri/`) + 3. 最后回退到 `index.html` + +### 3. 部署步骤 + +1. 构建项目: + ```bash + pnpm build + ``` + +2. 将 `dist` 目录的内容上传到服务器 + +3. 配置 OpenResty/Nginx 使用上述配置 + +4. 重启服务器: + ```bash + nginx -s reload + # 或 + systemctl reload nginx + ``` + +### 4. 验证 + +部署后,以下访问方式都应该正常工作: +- 直接访问 `https://your-domain.com/admin` +- 直接访问 `https://your-domain.com/create` +- 通过侧边栏导航访问 + +### 5. 注意事项 + +- 确保静态资源路径正确 +- 如果使用子路径部署,需要相应调整配置 +- API 路由需要单独配置代理,避免被 SPA 回退规则影响 \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..61ab9a1 --- /dev/null +++ b/README.md @@ -0,0 +1,74 @@ +# React + TypeScript + Vite + +This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules. + +Currently, two official plugins are available: + +- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react) uses [Babel](https://babeljs.io/) (or [oxc](https://oxc.rs) when used in [rolldown-vite](https://vite.dev/guide/rolldown)) for Fast Refresh +- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh + +## React Compiler + +The React Compiler is not enabled on this template because of its impact on dev & build performances. To add it, see [this documentation](https://react.dev/learn/react-compiler/installation). + +## Expanding the ESLint configuration + +If you are developing a production application, we recommend updating the configuration to enable type-aware lint rules: + +```js +export default defineConfig([ + globalIgnores(['dist']), + { + files: ['**/*.{ts,tsx}'], + extends: [ + // Other configs... + + // Remove tseslint.configs.recommended and replace with this + tseslint.configs.recommendedTypeChecked, + // Alternatively, use this for stricter rules + tseslint.configs.strictTypeChecked, + // Optionally, add this for stylistic rules + tseslint.configs.stylisticTypeChecked, + + // Other configs... + ], + languageOptions: { + parserOptions: { + project: ['./tsconfig.node.json', './tsconfig.app.json'], + tsconfigRootDir: import.meta.dirname, + }, + // other options... + }, + }, +]) +``` + +You can also install [eslint-plugin-react-x](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-x) and [eslint-plugin-react-dom](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-dom) for React-specific lint rules: + +```js +// eslint.config.js +import reactX from 'eslint-plugin-react-x' +import reactDom from 'eslint-plugin-react-dom' + +export default defineConfig([ + globalIgnores(['dist']), + { + files: ['**/*.{ts,tsx}'], + extends: [ + // Other configs... + // Enable lint rules for React + reactX.configs['recommended-typescript'], + // Enable lint rules for React DOM + reactDom.configs.recommended, + ], + languageOptions: { + parserOptions: { + project: ['./tsconfig.node.json', './tsconfig.app.json'], + tsconfigRootDir: import.meta.dirname, + }, + // other options... + }, + }, +]) +``` +"# frontend" diff --git a/eslint.config.js b/eslint.config.js new file mode 100644 index 0000000..b19330b --- /dev/null +++ b/eslint.config.js @@ -0,0 +1,23 @@ +import js from '@eslint/js' +import globals from 'globals' +import reactHooks from 'eslint-plugin-react-hooks' +import reactRefresh from 'eslint-plugin-react-refresh' +import tseslint from 'typescript-eslint' +import { defineConfig, globalIgnores } from 'eslint/config' + +export default defineConfig([ + globalIgnores(['dist']), + { + files: ['**/*.{ts,tsx}'], + extends: [ + js.configs.recommended, + tseslint.configs.recommended, + reactHooks.configs['recommended-latest'], + reactRefresh.configs.vite, + ], + languageOptions: { + ecmaVersion: 2020, + globals: globals.browser, + }, + }, +]) diff --git a/index.html b/index.html new file mode 100644 index 0000000..310ee24 --- /dev/null +++ b/index.html @@ -0,0 +1,13 @@ + + + + + + + + + +
+ + + diff --git a/package.json b/package.json new file mode 100644 index 0000000..c0740f6 --- /dev/null +++ b/package.json @@ -0,0 +1,43 @@ +{ + "name": "sycamore_whisper_front", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "tsc -b && vite build", + "lint": "eslint .", + "preview": "vite preview" + }, + "dependencies": { + "@arco-design/web-react": "^2.66.5", + "@fluentui/react": "^8.124.0", + "@fluentui/react-components": "^9.72.1", + "@fluentui/react-icons": "^2.0.311", + "@uiw/react-md-editor": "^4.0.8", + "axios": "^1.12.2", + "react": "^19.1.1", + "react-dom": "^19.1.1", + "react-hot-toast": "^2.6.0", + "react-markdown": "^10.1.0", + "react-markdown-editor-lite": "^1.3.4", + "react-router-dom": "^7.9.3", + "react-toastify": "^11.0.5", + "remark-gfm": "^4.0.1", + "remark-ins": "^1.2.1" + }, + "devDependencies": { + "@eslint/js": "^9.36.0", + "@types/node": "^24.6.0", + "@types/react": "^19.1.16", + "@types/react-dom": "^19.1.9", + "@vitejs/plugin-react": "^5.0.4", + "eslint": "^9.36.0", + "eslint-plugin-react-hooks": "^5.2.0", + "eslint-plugin-react-refresh": "^0.4.22", + "globals": "^16.4.0", + "typescript": "~5.9.3", + "typescript-eslint": "^8.45.0", + "vite": "^7.1.7" + } +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000..068528b --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,6129 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@arco-design/web-react': + specifier: ^2.66.5 + version: 2.66.5(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react': + specifier: ^8.124.0 + version: 8.124.0(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-components': + specifier: ^9.72.1 + version: 9.72.1(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0) + '@fluentui/react-icons': + specifier: ^2.0.311 + version: 2.0.311(react@19.2.0) + '@uiw/react-md-editor': + specifier: ^4.0.8 + version: 4.0.8(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + axios: + specifier: ^1.12.2 + version: 1.12.2 + react: + specifier: ^19.1.1 + version: 19.2.0 + react-dom: + specifier: ^19.1.1 + version: 19.2.0(react@19.2.0) + react-hot-toast: + specifier: ^2.6.0 + version: 2.6.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + react-markdown: + specifier: ^10.1.0 + version: 10.1.0(@types/react@19.2.2)(react@19.2.0) + react-markdown-editor-lite: + specifier: ^1.3.4 + version: 1.3.4(react@19.2.0) + react-router-dom: + specifier: ^7.9.3 + version: 7.9.3(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + react-toastify: + specifier: ^11.0.5 + version: 11.0.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + remark-gfm: + specifier: ^4.0.1 + version: 4.0.1 + remark-ins: + specifier: ^1.2.1 + version: 1.2.1(unified@11.0.5) + devDependencies: + '@eslint/js': + specifier: ^9.36.0 + version: 9.37.0 + '@types/node': + specifier: ^24.6.0 + version: 24.7.0 + '@types/react': + specifier: ^19.1.16 + version: 19.2.2 + '@types/react-dom': + specifier: ^19.1.9 + version: 19.2.1(@types/react@19.2.2) + '@vitejs/plugin-react': + specifier: ^5.0.4 + version: 5.0.4(vite@7.1.9(@types/node@24.7.0)) + eslint: + specifier: ^9.36.0 + version: 9.37.0 + eslint-plugin-react-hooks: + specifier: ^5.2.0 + version: 5.2.0(eslint@9.37.0) + eslint-plugin-react-refresh: + specifier: ^0.4.22 + version: 0.4.23(eslint@9.37.0) + globals: + specifier: ^16.4.0 + version: 16.4.0 + typescript: + specifier: ~5.9.3 + version: 5.9.3 + typescript-eslint: + specifier: ^8.45.0 + version: 8.46.0(eslint@9.37.0)(typescript@5.9.3) + vite: + specifier: ^7.1.7 + version: 7.1.9(@types/node@24.7.0) + +packages: + + '@arco-design/color@0.4.0': + resolution: {integrity: sha512-s7p9MSwJgHeL8DwcATaXvWT3m2SigKpxx4JA1BGPHL4gfvaQsmQfrLBDpjOJFJuJ2jG2dMt3R3P8Pm9E65q18g==} + + '@arco-design/web-react@2.66.5': + resolution: {integrity: sha512-ity0kG+B6pmuJ2/Zh3wUtBV78XxWmRtGEwazL8f4KAjoQpMkisgLMXibUpAGfcqph3vycNFq4yHgHujjgwrJMQ==} + peerDependencies: + react: '>=16' + react-dom: '>=16' + + '@babel/code-frame@7.27.1': + resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} + engines: {node: '>=6.9.0'} + + '@babel/compat-data@7.28.4': + resolution: {integrity: sha512-YsmSKC29MJwf0gF8Rjjrg5LQCmyh+j/nD8/eP7f+BeoQTKYqs9RoWbjGOdy0+1Ekr68RJZMUOPVQaQisnIo4Rw==} + engines: {node: '>=6.9.0'} + + '@babel/core@7.28.4': + resolution: {integrity: sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA==} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.28.3': + resolution: {integrity: sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-compilation-targets@7.27.2': + resolution: {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-globals@7.28.0': + resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-imports@7.27.1': + resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-transforms@7.28.3': + resolution: {integrity: sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-plugin-utils@7.27.1': + resolution: {integrity: sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-string-parser@7.27.1': + resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.27.1': + resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-option@7.27.1': + resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} + engines: {node: '>=6.9.0'} + + '@babel/helpers@7.28.4': + resolution: {integrity: sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.28.4': + resolution: {integrity: sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/plugin-transform-react-jsx-self@7.27.1': + resolution: {integrity: sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-jsx-source@7.27.1': + resolution: {integrity: sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/runtime@7.28.4': + resolution: {integrity: sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==} + engines: {node: '>=6.9.0'} + + '@babel/template@7.27.2': + resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.28.4': + resolution: {integrity: sha512-YEzuboP2qvQavAcjgQNVgsvHIDv6ZpwXvcvjmyySP2DIMuByS/6ioU5G9pYrWHM6T2YDfc7xga9iNzYOs12CFQ==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.28.4': + resolution: {integrity: sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==} + engines: {node: '>=6.9.0'} + + '@ctrl/tinycolor@3.6.1': + resolution: {integrity: sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA==} + engines: {node: '>=10'} + + '@emotion/hash@0.9.2': + resolution: {integrity: sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==} + + '@esbuild/aix-ppc64@0.25.10': + resolution: {integrity: sha512-0NFWnA+7l41irNuaSVlLfgNT12caWJVLzp5eAVhZ0z1qpxbockccEt3s+149rE64VUI3Ml2zt8Nv5JVc4QXTsw==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.25.10': + resolution: {integrity: sha512-LSQa7eDahypv/VO6WKohZGPSJDq5OVOo3UoFR1E4t4Gj1W7zEQMUhI+lo81H+DtB+kP+tDgBp+M4oNCwp6kffg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.25.10': + resolution: {integrity: sha512-dQAxF1dW1C3zpeCDc5KqIYuZ1tgAdRXNoZP7vkBIRtKZPYe2xVr/d3SkirklCHudW1B45tGiUlz2pUWDfbDD4w==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.25.10': + resolution: {integrity: sha512-MiC9CWdPrfhibcXwr39p9ha1x0lZJ9KaVfvzA0Wxwz9ETX4v5CHfF09bx935nHlhi+MxhA63dKRRQLiVgSUtEg==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.25.10': + resolution: {integrity: sha512-JC74bdXcQEpW9KkV326WpZZjLguSZ3DfS8wrrvPMHgQOIEIG/sPXEN/V8IssoJhbefLRcRqw6RQH2NnpdprtMA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.25.10': + resolution: {integrity: sha512-tguWg1olF6DGqzws97pKZ8G2L7Ig1vjDmGTwcTuYHbuU6TTjJe5FXbgs5C1BBzHbJ2bo1m3WkQDbWO2PvamRcg==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.25.10': + resolution: {integrity: sha512-3ZioSQSg1HT2N05YxeJWYR+Libe3bREVSdWhEEgExWaDtyFbbXWb49QgPvFH8u03vUPX10JhJPcz7s9t9+boWg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.25.10': + resolution: {integrity: sha512-LLgJfHJk014Aa4anGDbh8bmI5Lk+QidDmGzuC2D+vP7mv/GeSN+H39zOf7pN5N8p059FcOfs2bVlrRr4SK9WxA==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.25.10': + resolution: {integrity: sha512-5luJWN6YKBsawd5f9i4+c+geYiVEw20FVW5x0v1kEMWNq8UctFjDiMATBxLvmmHA4bf7F6hTRaJgtghFr9iziQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.25.10': + resolution: {integrity: sha512-oR31GtBTFYCqEBALI9r6WxoU/ZofZl962pouZRTEYECvNF/dtXKku8YXcJkhgK/beU+zedXfIzHijSRapJY3vg==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.25.10': + resolution: {integrity: sha512-NrSCx2Kim3EnnWgS4Txn0QGt0Xipoumb6z6sUtl5bOEZIVKhzfyp/Lyw4C1DIYvzeW/5mWYPBFJU3a/8Yr75DQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.25.10': + resolution: {integrity: sha512-xoSphrd4AZda8+rUDDfD9J6FUMjrkTz8itpTITM4/xgerAZZcFW7Dv+sun7333IfKxGG8gAq+3NbfEMJfiY+Eg==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.25.10': + resolution: {integrity: sha512-ab6eiuCwoMmYDyTnyptoKkVS3k8fy/1Uvq7Dj5czXI6DF2GqD2ToInBI0SHOp5/X1BdZ26RKc5+qjQNGRBelRA==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.25.10': + resolution: {integrity: sha512-NLinzzOgZQsGpsTkEbdJTCanwA5/wozN9dSgEl12haXJBzMTpssebuXR42bthOF3z7zXFWH1AmvWunUCkBE4EA==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.25.10': + resolution: {integrity: sha512-FE557XdZDrtX8NMIeA8LBJX3dC2M8VGXwfrQWU7LB5SLOajfJIxmSdyL/gU1m64Zs9CBKvm4UAuBp5aJ8OgnrA==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.25.10': + resolution: {integrity: sha512-3BBSbgzuB9ajLoVZk0mGu+EHlBwkusRmeNYdqmznmMc9zGASFjSsxgkNsqmXugpPk00gJ0JNKh/97nxmjctdew==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.25.10': + resolution: {integrity: sha512-QSX81KhFoZGwenVyPoberggdW1nrQZSvfVDAIUXr3WqLRZGZqWk/P4T8p2SP+de2Sr5HPcvjhcJzEiulKgnxtA==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-arm64@0.25.10': + resolution: {integrity: sha512-AKQM3gfYfSW8XRk8DdMCzaLUFB15dTrZfnX8WXQoOUpUBQ+NaAFCP1kPS/ykbbGYz7rxn0WS48/81l9hFl3u4A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.25.10': + resolution: {integrity: sha512-7RTytDPGU6fek/hWuN9qQpeGPBZFfB4zZgcz2VK2Z5VpdUxEI8JKYsg3JfO0n/Z1E/6l05n0unDCNc4HnhQGig==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.25.10': + resolution: {integrity: sha512-5Se0VM9Wtq797YFn+dLimf2Zx6McttsH2olUBsDml+lm0GOCRVebRWUvDtkY4BWYv/3NgzS8b/UM3jQNh5hYyw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.25.10': + resolution: {integrity: sha512-XkA4frq1TLj4bEMB+2HnI0+4RnjbuGZfet2gs/LNs5Hc7D89ZQBHQ0gL2ND6Lzu1+QVkjp3x1gIcPKzRNP8bXw==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openharmony-arm64@0.25.10': + resolution: {integrity: sha512-AVTSBhTX8Y/Fz6OmIVBip9tJzZEUcY8WLh7I59+upa5/GPhh2/aM6bvOMQySspnCCHvFi79kMtdJS1w0DXAeag==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + + '@esbuild/sunos-x64@0.25.10': + resolution: {integrity: sha512-fswk3XT0Uf2pGJmOpDB7yknqhVkJQkAQOcW/ccVOtfx05LkbWOaRAtn5SaqXypeKQra1QaEa841PgrSL9ubSPQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.25.10': + resolution: {integrity: sha512-ah+9b59KDTSfpaCg6VdJoOQvKjI33nTaQr4UluQwW7aEwZQsbMCfTmfEO4VyewOxx4RaDT/xCy9ra2GPWmO7Kw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.25.10': + resolution: {integrity: sha512-QHPDbKkrGO8/cz9LKVnJU22HOi4pxZnZhhA2HYHez5Pz4JeffhDjf85E57Oyco163GnzNCVkZK0b/n4Y0UHcSw==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.25.10': + resolution: {integrity: sha512-9KpxSVFCu0iK1owoez6aC/s/EdUQLDN3adTxGCqxMVhrPDj6bt5dbrHDXUuq+Bs2vATFBBrQS5vdQ/Ed2P+nbw==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@eslint-community/eslint-utils@4.9.0': + resolution: {integrity: sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + + '@eslint-community/regexpp@4.12.1': + resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + '@eslint/config-array@0.21.0': + resolution: {integrity: sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/config-helpers@0.4.0': + resolution: {integrity: sha512-WUFvV4WoIwW8Bv0KeKCIIEgdSiFOsulyN0xrMu+7z43q/hkOLXjvb5u7UC9jDxvRzcrbEmuZBX5yJZz1741jog==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/core@0.16.0': + resolution: {integrity: sha512-nmC8/totwobIiFcGkDza3GIKfAw1+hLiYVrh3I1nIomQ8PEr5cxg34jnkmGawul/ep52wGRAcyeDCNtWKSOj4Q==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/eslintrc@3.3.1': + resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/js@9.37.0': + resolution: {integrity: sha512-jaS+NJ+hximswBG6pjNX0uEJZkrT0zwpVi3BA3vX22aFGjJjmgSTSmPpZCRKmoBL5VY/M6p0xsSJx7rk7sy5gg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/object-schema@2.1.6': + resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/plugin-kit@0.4.0': + resolution: {integrity: sha512-sB5uyeq+dwCWyPi31B2gQlVlo+j5brPlWx4yZBrEaRo/nhdDE8Xke1gsGgtiBdaBTxuTkceLVuVt/pclrasb0A==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@floating-ui/core@1.7.3': + resolution: {integrity: sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w==} + + '@floating-ui/devtools@0.2.3': + resolution: {integrity: sha512-ZTcxTvgo9CRlP7vJV62yCxdqmahHTGpSTi5QaTDgGoyQq0OyjaVZhUhXv/qdkQFOI3Sxlfmz0XGG4HaZMsDf8Q==} + peerDependencies: + '@floating-ui/dom': ^1.0.0 + + '@floating-ui/dom@1.7.4': + resolution: {integrity: sha512-OOchDgh4F2CchOX94cRVqhvy7b3AFb+/rQXyswmzmGakRfkMgoWVjfnLWkRirfLEfuD4ysVW16eXzwt3jHIzKA==} + + '@floating-ui/utils@0.2.10': + resolution: {integrity: sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==} + + '@fluentui/date-time-utilities@8.6.10': + resolution: {integrity: sha512-Bxq8DIMkFvkpCA1HKtCHdnFwPAnXLz3TkGp9kpi2T6VIv6VtLVSxRn95mbsUydpP9Up/DLglp/z9re5YFBGNbw==} + + '@fluentui/dom-utilities@2.3.10': + resolution: {integrity: sha512-6WDImiLqTOpkEtfUKSStcTDpzmJfL6ZammomcjawN9xH/8u8G3Hx72CIt2MNck9giw/oUlNLJFdWRAjeP3rmPQ==} + + '@fluentui/font-icons-mdl2@8.5.64': + resolution: {integrity: sha512-aiGPNWdOHM5WOugyF9KNNqGSA/9sdT+B9+JYmdR1lGzNJtn6hxhbiwXCjerKh+JFp7WXtIetgBHQbz2TKIa4Kw==} + + '@fluentui/foundation-legacy@8.5.0': + resolution: {integrity: sha512-YEpoT+KsWCfWhyLVJkgmyIc/Siip5V3XNZXbHIIOfeI1v3CzONoNV8ofsgJxLbJv2HleeH4qMKf9W7NQfrxQ/A==} + peerDependencies: + '@types/react': '>=16.8.0 <19.0.0' + react: '>=16.8.0 <19.0.0' + + '@fluentui/keyboard-key@0.4.23': + resolution: {integrity: sha512-9GXeyUqNJUdg5JiQUZeGPiKnRzMRi9YEUn1l9zq6X/imYdMhxHrxpVZS12129cBfgvPyxt9ceJpywSfmLWqlKA==} + + '@fluentui/keyboard-keys@9.0.8': + resolution: {integrity: sha512-iUSJUUHAyTosnXK8O2Ilbfxma+ZyZPMua5vB028Ys96z80v+LFwntoehlFsdH3rMuPsA8GaC1RE7LMezwPBPdw==} + + '@fluentui/merge-styles@8.6.14': + resolution: {integrity: sha512-vghuHFAfQgS9WLIIs4kgDOCh/DHd5vGIddP4/bzposhlAVLZR6wUBqldm9AuCdY88r5LyCRMavVJLV+Up3xdvA==} + + '@fluentui/priority-overflow@9.2.0': + resolution: {integrity: sha512-uwB5drtNGeEdLO3CEzM/VolyzkywIgpNhuOzFrLbKFxq20kCqteRDkUJIySgYu/+rK+Cyl8xiKmLzey49nlocg==} + + '@fluentui/react-accordion@9.8.8': + resolution: {integrity: sha512-jicuHHlFK7Tsh0gx1FWKpgZixaZMBU1Nw751cGerL7XGF1OODBXCPqbmvZBSe/xLzfKj250EfDQ3V/5EGt6tcg==} + peerDependencies: + '@types/react': '>=16.14.0 <20.0.0' + '@types/react-dom': '>=16.9.0 <20.0.0' + react: '>=16.14.0 <20.0.0' + react-dom: '>=16.14.0 <20.0.0' + + '@fluentui/react-alert@9.0.0-beta.124': + resolution: {integrity: sha512-yFBo3B5H9hnoaXxlkuz8wRz04DEyQ+ElYA/p5p+Vojf19Zuta8DmFZZ6JtWdtxcdnnQ4LvAfC5OYYlzdReozPA==} + peerDependencies: + '@types/react': '>=16.14.0 <19.0.0' + '@types/react-dom': '>=16.9.0 <19.0.0' + react: '>=16.14.0 <19.0.0' + react-dom: '>=16.14.0 <19.0.0' + + '@fluentui/react-aria@9.17.1': + resolution: {integrity: sha512-OmHqfHpVQZV6M8pZpl7QYmEoQuKbrDMboLWUzvAH9FxCjYQljNfgYyUKy5aP+gPJIKsO90mUUIbGY1LRH4e3fQ==} + peerDependencies: + '@types/react': '>=16.14.0 <20.0.0' + '@types/react-dom': '>=16.9.0 <20.0.0' + react: '>=16.14.0 <20.0.0' + react-dom: '>=16.14.0 <20.0.0' + + '@fluentui/react-avatar@9.9.7': + resolution: {integrity: sha512-T5zZGXta1sWbnxG5Dr+DzV9oxbab5Diws9V4ztcBWsBCowViPh8sZ6y/dSd/dnML3uWhMwNeW6dwPubA94pdAQ==} + peerDependencies: + '@types/react': '>=16.14.0 <20.0.0' + '@types/react-dom': '>=16.9.0 <20.0.0' + react: '>=16.14.0 <20.0.0' + react-dom: '>=16.14.0 <20.0.0' + + '@fluentui/react-badge@9.4.6': + resolution: {integrity: sha512-WxmUMcw5VthyeZrNAaSPLaMp+0F5g+Z9KZXH2ENAh0xM+BoWQjfruWUlTuMVT4rlmQcUEd7rz4rXjyflMoFzIQ==} + peerDependencies: + '@types/react': '>=16.14.0 <20.0.0' + '@types/react-dom': '>=16.9.0 <20.0.0' + react: '>=16.14.0 <20.0.0' + react-dom: '>=16.14.0 <20.0.0' + + '@fluentui/react-breadcrumb@9.3.7': + resolution: {integrity: sha512-NbSHxHpEKvTC0IeLIZg+NM8Kf6sL0VeMd8DgId1Py+XnUI4PpI7glJ1JovhSenMWL3kPNX7qPeFcxbtHn3BowA==} + peerDependencies: + '@types/react': '>=16.14.0 <20.0.0' + '@types/react-dom': '>=16.9.0 <20.0.0' + react: '>=16.14.0 <20.0.0' + react-dom: '>=16.14.0 <20.0.0' + + '@fluentui/react-button@9.6.7': + resolution: {integrity: sha512-les2Fwej/nCOpf+jZigqX/+cspdwZLZgKuGbbOQ/70f8bOOBB+pXft795wpFKcjncRIGLa+ABjZbc4eTbUYuJQ==} + peerDependencies: + '@types/react': '>=16.14.0 <20.0.0' + '@types/react-dom': '>=16.9.0 <20.0.0' + react: '>=16.14.0 <20.0.0' + react-dom: '>=16.14.0 <20.0.0' + + '@fluentui/react-card@9.5.1': + resolution: {integrity: sha512-ZaNkQFjsmaDFKD+EsOwpCcLWOt+ZHZ2AWRkW4OK3cUzPSpqa/7Wa6eMUpsvOeSfritLnwTv9XFfrpmFSgXV8PQ==} + peerDependencies: + '@types/react': '>=16.14.0 <20.0.0' + '@types/react-dom': '>=16.9.0 <20.0.0' + react: '>=16.14.0 <20.0.0' + react-dom: '>=16.14.0 <20.0.0' + + '@fluentui/react-carousel@9.8.7': + resolution: {integrity: sha512-Bdw0yAA4U7X+nzhjgtTeL/Xmupu4uYurO38VmZiC7jmKLq1jqE8YjA+u5eFuyEG/Nc9auThFkES6vhDcPnezDw==} + peerDependencies: + '@types/react': '>=16.14.0 <20.0.0' + '@types/react-dom': '>=16.9.0 <20.0.0' + react: '>=16.14.0 <20.0.0' + react-dom: '>=16.14.0 <20.0.0' + + '@fluentui/react-checkbox@9.5.6': + resolution: {integrity: sha512-nUOnn0MMrIZAEFkB664qYdXzUG7G6pA4IWCd1KtS5/jn01s29+nDLDuwgNXVD6jGZ+VLGo0ZEJ8+SJowsddFCA==} + peerDependencies: + '@types/react': '>=16.14.0 <20.0.0' + '@types/react-dom': '>=16.9.0 <20.0.0' + react: '>=16.14.0 <20.0.0' + react-dom: '>=16.14.0 <20.0.0' + + '@fluentui/react-color-picker@9.2.6': + resolution: {integrity: sha512-CYgSbG8yTTEW1Jf2LVJS6dvFN8NQFB24HazmU42+ZmnSJX/qAYMAmxOA0F3apV2ziOitnjrdUYeRqHPMsaAdqA==} + peerDependencies: + '@types/react': '>=16.14.0 <20.0.0' + '@types/react-dom': '>=16.9.0 <20.0.0' + react: '>=16.14.0 <20.0.0' + react-dom: '>=16.14.0 <20.0.0' + + '@fluentui/react-combobox@9.16.7': + resolution: {integrity: sha512-n3Y+bqD1c9fCUY8kbdsteMJT8VMuwr3pn0JvdCXsDiRxL7z9W1j/vFn+9gIAVC6okRhhwLwoi4wXoXDnPD907g==} + peerDependencies: + '@types/react': '>=16.14.0 <20.0.0' + '@types/react-dom': '>=16.9.0 <20.0.0' + react: '>=16.14.0 <20.0.0' + react-dom: '>=16.14.0 <20.0.0' + + '@fluentui/react-components@9.72.1': + resolution: {integrity: sha512-drBaCVWpPVC8z029yit0ECL+XgfjsRBSwGPgyJPj4JbdtpoCv8ujYT1frUjnwdkmwiUkoY4kCUY+N5wayiT+hQ==} + peerDependencies: + '@types/react': '>=16.14.0 <20.0.0' + '@types/react-dom': '>=16.9.0 <20.0.0' + react: '>=16.14.0 <20.0.0' + react-dom: '>=16.14.0 <20.0.0' + + '@fluentui/react-context-selector@9.2.8': + resolution: {integrity: sha512-mh7Phvz6S4LQGuoRLCtqoAOP66JrbHyzrUynSK5yR4V+WRhBH0QNC/eOeivocV8wSQWV9YlCmRYm9hNEvOqi1Q==} + peerDependencies: + '@types/react': '>=16.14.0 <20.0.0' + '@types/react-dom': '>=16.9.0 <20.0.0' + react: '>=16.14.0 <20.0.0' + react-dom: '>=16.14.0 <20.0.0' + scheduler: '>=0.19.0 <=0.23.0' + + '@fluentui/react-dialog@9.15.3': + resolution: {integrity: sha512-GtGUXVoNttsI7NuHMkhtLbJpjUw5ovIWKH3CMpdlgmnispdd4jYYYyTVDapG+9VJvYesHXI00yOoBM1ymtVrJA==} + peerDependencies: + '@types/react': '>=16.14.0 <20.0.0' + '@types/react-dom': '>=16.9.0 <20.0.0' + react: '>=16.14.0 <20.0.0' + react-dom: '>=16.14.0 <20.0.0' + + '@fluentui/react-divider@9.4.6': + resolution: {integrity: sha512-pIk5mvkXQRR+rZkOg62vn2rWS//eikvm+jLn3E4e+qy59BQhXufI1aGw2gcZG3WTpeHHtRMbDD/xauEkMdrg7A==} + peerDependencies: + '@types/react': '>=16.14.0 <20.0.0' + '@types/react-dom': '>=16.9.0 <20.0.0' + react: '>=16.14.0 <20.0.0' + react-dom: '>=16.14.0 <20.0.0' + + '@fluentui/react-drawer@9.10.3': + resolution: {integrity: sha512-HLr41jlQ1QFgk1iD0u/Cu+2uoQl2lMaMj7/CERina0SIneof+skt61WQdUtntEKidM0fyHfU41PUDySWXYKLtg==} + peerDependencies: + '@types/react': '>=16.14.0 <20.0.0' + '@types/react-dom': '>=16.9.0 <20.0.0' + react: '>=16.14.0 <20.0.0' + react-dom: '>=16.14.0 <20.0.0' + + '@fluentui/react-field@9.4.6': + resolution: {integrity: sha512-Xk/bNYhL2bLMO/mdoZrGX05Ga51QQVVC0wyqvcv5yv4l3s3oLcxb9pZCVgexzQOOUNUAaxz5QDOBHRjv7KT2xg==} + peerDependencies: + '@types/react': '>=16.14.0 <20.0.0' + '@types/react-dom': '>=16.9.0 <20.0.0' + react: '>=16.14.0 <20.0.0' + react-dom: '>=16.14.0 <20.0.0' + + '@fluentui/react-focus@8.9.27': + resolution: {integrity: sha512-DD+C41Ttr7S6OFrJ0/hjMdE+TD5Ue9UvmlTVO4tDRuZeZm1o8339v/i493a4eXb/+zdlygs2ZJPyxy0BPAgXDg==} + peerDependencies: + '@types/react': '>=16.8.0 <19.0.0' + react: '>=16.8.0 <19.0.0' + + '@fluentui/react-hooks@8.9.0': + resolution: {integrity: sha512-2Yw45+HNqy9+s21XvrkaAxL+SCy9u0lbM3vC5Jn+sjLbXQ/XKijLdwIFZn+juVfmQr5NKQIboipBRbhos6sFPQ==} + peerDependencies: + '@types/react': '>=16.8.0 <19.0.0' + react: '>=16.8.0 <19.0.0' + + '@fluentui/react-icons@2.0.311': + resolution: {integrity: sha512-njTCiHki4gxtB0ebFFIy8jC+9xFqIbnqzFGO+3mixSjUIn/wl0NKUVzXiXcaYUx6d0okEAiYgciuT7eQjJhW8Q==} + peerDependencies: + react: '>=16.8.0 <20.0.0' + + '@fluentui/react-image@9.3.6': + resolution: {integrity: sha512-khdxM+h+A+d5fcFZG+mZinTGy6x38QBkjxvhly4TFJHIVziuF+mbB3vpf4J0TwynZOMiza3D174kvrK3x5yyvw==} + peerDependencies: + '@types/react': '>=16.14.0 <20.0.0' + '@types/react-dom': '>=16.9.0 <20.0.0' + react: '>=16.14.0 <20.0.0' + react-dom: '>=16.14.0 <20.0.0' + + '@fluentui/react-infobutton@9.0.0-beta.102': + resolution: {integrity: sha512-3kA4F0Vga8Ds6JGlBajLCCDOo/LmPuS786Wg7ui4ZTDYVIMzy1yp2XuVcZniifBFvEp0HQCUoDPWUV0VI3FfzQ==} + peerDependencies: + '@types/react': '>=16.14.0 <19.0.0' + '@types/react-dom': '>=16.9.0 <19.0.0' + react: '>=16.14.0 <19.0.0' + react-dom: '>=16.14.0 <19.0.0' + + '@fluentui/react-infolabel@9.4.7': + resolution: {integrity: sha512-JHhIML6Wv+X0w+qyRYDx9GH8tUU0dCN3lAodI/02w+3do2a6ychRjoEa/7Aa9gA2wYxAuz7TC6hzfdcI4ec//Q==} + peerDependencies: + '@types/react': '>=16.8.0 <20.0.0' + '@types/react-dom': '>=16.8.0 <20.0.0' + react: '>=16.14.0 <20.0.0' + react-dom: '>=16.8.0 <20.0.0' + + '@fluentui/react-input@9.7.6': + resolution: {integrity: sha512-s+f5kznbm2McheAAz868Lre1+xzCinVJm4eNiuKXJzTSCiLsdlE27xWjv2+Lzh1du4HLC+arUkdZ+HCLg5Kvug==} + peerDependencies: + '@types/react': '>=16.14.0 <20.0.0' + '@types/react-dom': '>=16.9.0 <20.0.0' + react: '>=16.14.0 <20.0.0' + react-dom: '>=16.14.0 <20.0.0' + + '@fluentui/react-jsx-runtime@9.2.1': + resolution: {integrity: sha512-qfkqqYqKbqMEXk+yxnQ+L88yEi9CWzCmYHyZQ5Xhk6wfKyNAWYv/otConKLzbWJWnbpEq0zgysqqeJT/LYAoDg==} + peerDependencies: + '@types/react': '>=16.14.0 <20.0.0' + react: '>=16.14.0 <20.0.0' + + '@fluentui/react-label@9.3.6': + resolution: {integrity: sha512-3mnDaoZrPuMTeJdXUQkNBMvhrq/qYw3UFKO6lfqu4701FCggLk2kdqcUqx5ViKEgEtRELrDjbilOYapagZvpag==} + peerDependencies: + '@types/react': '>=16.14.0 <20.0.0' + '@types/react-dom': '>=16.9.0 <20.0.0' + react: '>=16.14.0 <20.0.0' + react-dom: '>=16.14.0 <20.0.0' + + '@fluentui/react-link@9.6.6': + resolution: {integrity: sha512-b6hQLNK7L/HJ85XneVszKmnEhxf20DQImcRlMUcdHediJTFuCjoat3DHE6mFNjZEZSfQJTbDsH7rqwA0TOiuvg==} + peerDependencies: + '@types/react': '>=16.14.0 <20.0.0' + '@types/react-dom': '>=16.9.0 <20.0.0' + react: '>=16.14.0 <20.0.0' + react-dom: '>=16.14.0 <20.0.0' + + '@fluentui/react-list@9.6.1': + resolution: {integrity: sha512-eoYupnsGDGKfpfcOfXhyCHuXz9jiIRmEYZXcrk1fCK+9KYEaSZ3gAqPFY/FWq5xDLs0+exyECfDPAstb7R1fxg==} + peerDependencies: + '@types/react': '>=16.8.0 <20.0.0' + '@types/react-dom': '>=16.8.0 <20.0.0' + react: '>=16.14.0 <20.0.0' + react-dom: '>=16.8.0 <20.0.0' + + '@fluentui/react-menu@9.20.0': + resolution: {integrity: sha512-zKgavux8mhd+H6544hACS+OYG8fi53ndZtocJqTF85ebBA/ndHY2GFZcHLemifRKctjKQsYKNAekg2Bxu4QmgA==} + peerDependencies: + '@types/react': '>=16.14.0 <20.0.0' + '@types/react-dom': '>=16.9.0 <20.0.0' + react: '>=16.14.0 <20.0.0' + react-dom: '>=16.14.0 <20.0.0' + + '@fluentui/react-message-bar@9.6.8': + resolution: {integrity: sha512-XSPOSLtXzW7xXqA5I1gJa88xyV+kwOPhgadmYfPEfTAOeqYYzCqnJnI5ZSnMgjDQuCotzgvLT/hGxTGIhb9MFw==} + peerDependencies: + '@types/react': '>=16.8.0 <20.0.0' + '@types/react-dom': '>=16.8.0 <20.0.0' + react: '>=16.14.0 <20.0.0' + react-dom: '>=16.8.0 <20.0.0' + + '@fluentui/react-motion-components-preview@0.11.0': + resolution: {integrity: sha512-IIG3FI31AUaiyp56+4g9gx1J4W2UqUj0s6vpMB9zkIZ+KCFEq1x47H7b0kARHdGUc0voMY2OGPQQeewFcukUaw==} + peerDependencies: + '@types/react': '>=16.14.0 <20.0.0' + '@types/react-dom': '>=16.9.0 <20.0.0' + react: '>=16.14.0 <20.0.0' + react-dom: '>=16.14.0 <20.0.0' + + '@fluentui/react-motion@9.11.0': + resolution: {integrity: sha512-X6MAw4zXsV9RwpE9WCVjz3Uwkjgl7A+q2lT+hy0wKSprASQ1g3HZJwTtS6cCuBNijUKge2wIhIquUuk0WCcWqA==} + peerDependencies: + '@types/react': '>=16.8.0 <20.0.0' + '@types/react-dom': '>=16.8.0 <20.0.0' + react: '>=16.14.0 <20.0.0' + react-dom: '>=16.8.0 <20.0.0' + + '@fluentui/react-nav@9.3.8': + resolution: {integrity: sha512-UwFxa5qlBJLS7nNXLBVo9bhbxjIbIOSe2shAEJcOFK1ziPfOTUIBFalYvmSZGK1bNAq2lvuSY2lVMkiMHS7Y2Q==} + peerDependencies: + '@types/react': '>=16.14.0 <20.0.0' + '@types/react-dom': '>=16.9.0 <20.0.0' + react: '>=16.14.0 <20.0.0' + react-dom: '>=16.14.0 <20.0.0' + + '@fluentui/react-overflow@9.6.0': + resolution: {integrity: sha512-ZzjBuNQXHEp84lGPzJOeZjPcsStugUEzzDiDp/0v9LdF3EZoBmq8/4Z7nZfqoTU+oHXOy2mGkhpCKTrXgawXOw==} + peerDependencies: + '@types/react': '>=16.14.0 <20.0.0' + '@types/react-dom': '>=16.9.0 <20.0.0' + react: '>=16.14.0 <20.0.0' + react-dom: '>=16.14.0 <20.0.0' + + '@fluentui/react-persona@9.5.7': + resolution: {integrity: sha512-4dPcmnE4jX8IUgOxZu+aWQ+XhqTcJ5ISK1VwDxujH3JQbjOK/4aQjUBTwQWfRej0/lfT74ktD/CorcdB7Wz6CA==} + peerDependencies: + '@types/react': '>=16.14.0 <20.0.0' + '@types/react-dom': '>=16.9.0 <20.0.0' + react: '>=16.14.0 <20.0.0' + react-dom: '>=16.14.0 <20.0.0' + + '@fluentui/react-popover@9.12.7': + resolution: {integrity: sha512-AkbtGCEG6OwpeXQ4RjorOw56Qnlh7ndf5Lb7P8x/2jmXyi2BusJy0qAJ9cqpt3n5Y31dt1dJ2e+DNk7A1tu23w==} + peerDependencies: + '@types/react': '>=16.14.0 <20.0.0' + '@types/react-dom': '>=16.9.0 <20.0.0' + react: '>=16.14.0 <20.0.0' + react-dom: '>=16.14.0 <20.0.0' + + '@fluentui/react-portal-compat-context@9.0.15': + resolution: {integrity: sha512-DpV+qtFvM3dmH1j8ZD+YcM5vaTvmQPHUAx6tQnnmIoYJWs2R0wU/L5p2EajXy7zSg74jrDbDRxzaziamoOaJdg==} + peerDependencies: + '@types/react': '>=16.14.0 <20.0.0' + react: '>=16.14.0 <20.0.0' + + '@fluentui/react-portal@9.8.3': + resolution: {integrity: sha512-+i2TW9pQ/Oz7PAKxssbonStD4kcgkzsaKZrhTfK9rynSpy3YR4DpyHPzd/5ioJgSKFlqTnoBBCu5zVFohXI6gw==} + peerDependencies: + '@types/react': '>=16.14.0 <20.0.0' + '@types/react-dom': '>=16.9.0 <20.0.0' + react: '>=16.14.0 <20.0.0' + react-dom: '>=16.14.0 <20.0.0' + + '@fluentui/react-positioning@9.20.6': + resolution: {integrity: sha512-g4/XRftuW/MztCC2pYVvlfHExmWRqOqgwQu9MoWglTuZFz9rSTTonCNSKJLIsZQYV9BpqFXDHUe8v+pqyDNZ2g==} + peerDependencies: + '@types/react': '>=16.14.0 <20.0.0' + '@types/react-dom': '>=16.9.0 <20.0.0' + react: '>=16.14.0 <20.0.0' + react-dom: '>=16.14.0 <20.0.0' + + '@fluentui/react-progress@9.4.6': + resolution: {integrity: sha512-zDmSmsTGaM9rPk9lQ6wKcG8kkM9UHtzJdsXPfvPKj8K7gP1Oyha7yb5hIlX45q0YeWG+3nweQYz9WNnoAAAsQQ==} + peerDependencies: + '@types/react': '>=16.14.0 <20.0.0' + '@types/react-dom': '>=16.9.0 <20.0.0' + react: '>=16.14.0 <20.0.0' + react-dom: '>=16.14.0 <20.0.0' + + '@fluentui/react-provider@9.22.6': + resolution: {integrity: sha512-vHShKHYeZptf+Jc6O+ZVGTjU0fo0OzqrzSpcEeQ9iuRF2XPvhTldE0Q67KYeCe5eQJsiDH7wYM6Hjt7UihNmOA==} + peerDependencies: + '@types/react': '>=16.14.0 <20.0.0' + '@types/react-dom': '>=16.9.0 <20.0.0' + react: '>=16.14.0 <20.0.0' + react-dom: '>=16.14.0 <20.0.0' + + '@fluentui/react-radio@9.5.6': + resolution: {integrity: sha512-MT6AFJ3GuL5JgZ22xSbHlxO0RUVaJJUW5eq96zy2kqSSzyJxDLLhuNxkoMI/nnlEGlzkSipM5WOxutYfOhJTwQ==} + peerDependencies: + '@types/react': '>=16.14.0 <20.0.0' + '@types/react-dom': '>=16.9.0 <20.0.0' + react: '>=16.14.0 <20.0.0' + react-dom: '>=16.14.0 <20.0.0' + + '@fluentui/react-rating@9.3.6': + resolution: {integrity: sha512-0mvmcyDDnUUrFOIrM15K1Ie+UTBF3iFL/FDaiTTelL3xlAHSOUksVKStkj4pFsvXb8xNgFjoACvM+COV7DRSLg==} + peerDependencies: + '@types/react': '>=16.8.0 <20.0.0' + '@types/react-dom': '>=16.8.0 <20.0.0' + react: '>=16.14.0 <20.0.0' + react-dom: '>=16.8.0 <20.0.0' + + '@fluentui/react-search@9.3.6': + resolution: {integrity: sha512-pvmzcBOqvrQaLiw0gk+Yg0YxFX/qGod3NhoZrXXAI7YrHItMbkqEcECZbtiyoPG+WV+IiSzTGzFw2BlTJq7FCg==} + peerDependencies: + '@types/react': '>=16.14.0 <20.0.0' + '@types/react-dom': '>=16.9.0 <20.0.0' + react: '>=16.14.0 <20.0.0' + react-dom: '>=16.14.0 <20.0.0' + + '@fluentui/react-select@9.4.6': + resolution: {integrity: sha512-LJ0cl7w6TDsDK6TKQDij3O1TI8mwt3nzuoTcsMlgSQRJZMC/n4nSGRUmX0GHbLCtcWxfFJ3Vy+1e/9NydxLJqA==} + peerDependencies: + '@types/react': '>=16.14.0 <20.0.0' + '@types/react-dom': '>=16.9.0 <20.0.0' + react: '>=16.14.0 <20.0.0' + react-dom: '>=16.14.0 <20.0.0' + + '@fluentui/react-shared-contexts@9.25.2': + resolution: {integrity: sha512-PxDVy6RPps3gqee/RESIMXzOlrlVOQ/uQffFMeVniqjW0IPwCs/d2TwJT1Sfh9DCFgnI9onD0GGlBelszzRjmA==} + peerDependencies: + '@types/react': '>=16.14.0 <20.0.0' + react: '>=16.14.0 <20.0.0' + + '@fluentui/react-skeleton@9.4.6': + resolution: {integrity: sha512-AnGvW28A4equQ0j2uxZHDpwrOrqeE8ZqELhI7pIyRgSwQaIjaxjb0C3tlqQS9jl6456g8NE1hpoanb41ojtqNw==} + peerDependencies: + '@types/react': '>=16.14.0 <20.0.0' + '@types/react-dom': '>=16.9.0 <20.0.0' + react: '>=16.14.0 <20.0.0' + react-dom: '>=16.14.0 <20.0.0' + + '@fluentui/react-slider@9.5.6': + resolution: {integrity: sha512-JoIDXA1GHB9n99EvxOxcxwy6nUVk/p2GYoQ9sWoAvf5QOEQjOsD2QHymtDoVoNWWUKfBE51A8XGnJ80uk0qAcA==} + peerDependencies: + '@types/react': '>=16.14.0 <20.0.0' + '@types/react-dom': '>=16.9.0 <20.0.0' + react: '>=16.14.0 <20.0.0' + react-dom: '>=16.14.0 <20.0.0' + + '@fluentui/react-spinbutton@9.5.6': + resolution: {integrity: sha512-D+cDKaZjVh+3P/u+G9mcZSKO3riyYYr/D6n7zVhWaFxC2dZxHQpvtCG+8cj1Jgt8FjhZWby4wXKoQfEeja2Yzw==} + peerDependencies: + '@types/react': '>=16.14.0 <20.0.0' + '@types/react-dom': '>=16.9.0 <20.0.0' + react: '>=16.14.0 <20.0.0' + react-dom: '>=16.14.0 <20.0.0' + + '@fluentui/react-spinner@9.7.6': + resolution: {integrity: sha512-vOJIXA3GI75n2hoVCWm10ZzqmCqKR5ZQV4naSd3koJ4cb/6AMYHGVzfy41KTuybTUtkPbN1RRfjFcwv9HGncew==} + peerDependencies: + '@types/react': '>=16.14.0 <20.0.0' + '@types/react-dom': '>=16.9.0 <20.0.0' + react: '>=16.14.0 <20.0.0' + react-dom: '>=16.14.0 <20.0.0' + + '@fluentui/react-swatch-picker@9.4.6': + resolution: {integrity: sha512-c1ZJqjcpb+PjzqkHh9G3N3iXUq9t31b7HXdNwQJ2gKzi8kiGL8LFgmGCzhbUeGsZNmV0rkQAxfp6nzKGXSSr7g==} + peerDependencies: + '@types/react': '>=16.8.0 <20.0.0' + '@types/react-dom': '>=16.8.0 <20.0.0' + react: '>=16.14.0 <20.0.0' + react-dom: '>=16.8.0 <20.0.0' + + '@fluentui/react-switch@9.4.6': + resolution: {integrity: sha512-FNMWwHbD7GxwtOZJArSc2wRo2Dg4l2VUjHTYBL5yeS4cmDnVjCaChMCDPHxocv86upw3Uom1VSWLssUzXRNN1w==} + peerDependencies: + '@types/react': '>=16.14.0 <20.0.0' + '@types/react-dom': '>=16.9.0 <20.0.0' + react: '>=16.14.0 <20.0.0' + react-dom: '>=16.14.0 <20.0.0' + + '@fluentui/react-table@9.19.0': + resolution: {integrity: sha512-4XR2XNp5iq4sY3MtkEnuUBLu7BZ4xhGnyrnZ3eFb23TP3ERZTXx0oewpyURscERSv05czV3fwFjvT2gsQPy4Pw==} + peerDependencies: + '@types/react': '>=16.14.0 <20.0.0' + '@types/react-dom': '>=16.9.0 <20.0.0' + react: '>=16.14.0 <20.0.0' + react-dom: '>=16.14.0 <20.0.0' + + '@fluentui/react-tabs@9.10.2': + resolution: {integrity: sha512-aK4QVtCN3LQ40MR2/5LGb/reyBsCPsPnEjkifSQn8YrhJbkt0XRFMyIgJJ+EOOUadvQxEXEDDbz/PNpZFWoQCQ==} + peerDependencies: + '@types/react': '>=16.14.0 <20.0.0' + '@types/react-dom': '>=16.9.0 <20.0.0' + react: '>=16.14.0 <20.0.0' + react-dom: '>=16.14.0 <20.0.0' + + '@fluentui/react-tabster@9.26.6': + resolution: {integrity: sha512-4uk8O7S3qEkixjP2PnB4FvXxNqFKMVRetS3bCsc0T7MLufWtFYMqIfxSrdqyxvtLKMPdMohWmdeOu7E4X+ef6Q==} + peerDependencies: + '@types/react': '>=16.14.0 <20.0.0' + '@types/react-dom': '>=16.9.0 <20.0.0' + react: '>=16.14.0 <20.0.0' + react-dom: '>=16.14.0 <20.0.0' + + '@fluentui/react-tag-picker@9.7.7': + resolution: {integrity: sha512-yN8x01vvEt4C9SZHtF4OyUmIP2wFjjAcEqWY1ofwyICKsI9Xc23OANsIWBR9QdvM6jISJ7slwcwcgfP8JmyOSA==} + peerDependencies: + '@types/react': '>=16.14.0 <20.0.0' + '@types/react-dom': '>=16.9.0 <20.0.0' + react: '>=16.14.0 <20.0.0' + react-dom: '>=16.14.0 <20.0.0' + + '@fluentui/react-tags@9.7.7': + resolution: {integrity: sha512-TZ9Cc73hdCFzOBDvL3pQthndlVnGByn+l3vKyAu5kT6pWzrC7gfiWXHsUVUDzLQ8XyFDq1G4vCYfq+949OYyAg==} + peerDependencies: + '@types/react': '>=16.14.0 <20.0.0' + '@types/react-dom': '>=16.9.0 <20.0.0' + react: '>=16.14.0 <20.0.0' + react-dom: '>=16.14.0 <20.0.0' + + '@fluentui/react-teaching-popover@9.6.7': + resolution: {integrity: sha512-SIXQLP4NKhv5E6hUCR2eMgg+MBehfuHWSygvf8yEZKaoGjgN/4bg/4Rn64Ld6cELcXcHpg7/0tFmDxgxycSU4w==} + peerDependencies: + '@types/react': '>=16.8.0 <20.0.0' + '@types/react-dom': '>=16.8.0 <20.0.0' + react: '>=16.14.0 <20.0.0' + react-dom: '>=16.8.0 <20.0.0' + + '@fluentui/react-text@9.6.6': + resolution: {integrity: sha512-WfxzfE3LnGLAy+7w1elVkUwcnCgoVtGVysfYNbQYqs7eEDp7c7asRkVn++nWYGFALu2S0OCthYj98JT5VZlccA==} + peerDependencies: + '@types/react': '>=16.14.0 <20.0.0' + '@types/react-dom': '>=16.9.0 <20.0.0' + react: '>=16.14.0 <20.0.0' + react-dom: '>=16.14.0 <20.0.0' + + '@fluentui/react-textarea@9.6.6': + resolution: {integrity: sha512-opxqQg+6IexnjW4XJrrueaU66dznDq7h5zjg6KoVR6RscYaqWpythrW2ragZujXQifouUHcrkw+BnwmnAuollw==} + peerDependencies: + '@types/react': '>=16.14.0 <20.0.0' + '@types/react-dom': '>=16.9.0 <20.0.0' + react: '>=16.14.0 <20.0.0' + react-dom: '>=16.14.0 <20.0.0' + + '@fluentui/react-theme@9.2.0': + resolution: {integrity: sha512-Q0zp/MY1m5RjlkcwMcjn/PQRT2T+q3bgxuxWbhgaD07V+tLzBhGROvuqbsdg4YWF/IK21zPfLhmGyifhEu0DnQ==} + + '@fluentui/react-toast@9.7.3': + resolution: {integrity: sha512-JuuOwvzCT+RK3X6IuZGLS3267cg3/DWQ9hlmP3ZThkHKabO/MYyFYTvry+Id5IDBBzFfyoV5M3L7T8MVwAbhYg==} + peerDependencies: + '@types/react': '>=16.14.0 <20.0.0' + '@types/react-dom': '>=16.9.0 <20.0.0' + react: '>=16.14.0 <20.0.0' + react-dom: '>=16.14.0 <20.0.0' + + '@fluentui/react-toolbar@9.6.7': + resolution: {integrity: sha512-EaBT312aP3WXCwc9vUP/6diNdGUEtFSBbPupolkvM7l3Hqt2NaEgN86RMPubykCbwV4SoJvOQCTxgtsYKCK0gg==} + peerDependencies: + '@types/react': '>=16.14.0 <20.0.0' + '@types/react-dom': '>=16.9.0 <20.0.0' + react: '>=16.14.0 <20.0.0' + react-dom: '>=16.14.0 <20.0.0' + + '@fluentui/react-tooltip@9.8.6': + resolution: {integrity: sha512-ue72LCnpTyLUvTNA+KWao0zt8T2BQsQdigY1rXwXUu6PQi4X8TKdZsOMaXCe/pzBDKWk9Du0ClZq7JWw3/mKig==} + peerDependencies: + '@types/react': '>=16.14.0 <20.0.0' + '@types/react-dom': '>=16.9.0 <20.0.0' + react: '>=16.14.0 <20.0.0' + react-dom: '>=16.14.0 <20.0.0' + + '@fluentui/react-tree@9.15.0': + resolution: {integrity: sha512-Z0tK8NJN8a2thzySwqfueN2xcVogFs4M1EXuhrk793X+ZkeokhA0qjref7Mpkc08E/tU7895e7FtaGpxzSIzfA==} + peerDependencies: + '@types/react': '>=16.14.0 <20.0.0' + '@types/react-dom': '>=16.9.0 <20.0.0' + react: '>=16.14.0 <20.0.0' + react-dom: '>=16.14.0 <20.0.0' + + '@fluentui/react-utilities@9.25.0': + resolution: {integrity: sha512-ZuQ1jjNZ9DKxnnwPnQFTnjgt7qEWHttgaNdAoJlbqk1MG9zZYcuglEMLzj0wajPdkVuOOuS9LhSbbdCoW1aSsA==} + peerDependencies: + '@types/react': '>=16.14.0 <20.0.0' + react: '>=16.14.0 <20.0.0' + + '@fluentui/react-virtualizer@9.0.0-alpha.102': + resolution: {integrity: sha512-kt/kuAMTKTTY/00ToUlgUwUCty2HGj4Tnr+fxKRmr7Ziy5VWhi1YoNJ8vcgmxog5J90t4tS29LB0LP0KztQUVg==} + peerDependencies: + '@types/react': '>=16.14.0 <19.0.0' + '@types/react-dom': '>=16.9.0 <19.0.0' + react: '>=16.14.0 <19.0.0' + react-dom: '>=16.14.0 <19.0.0' + + '@fluentui/react-window-provider@2.2.30': + resolution: {integrity: sha512-2SXuiZcU29W0D9zfExcTfzVx97OI50YCn5fGGO0bTDuP5VxzTQp1mipAY4qm/yJMMinoXkzBGLl1rK0Tdtxh1w==} + peerDependencies: + '@types/react': '>=16.8.0 <19.0.0' + react: '>=16.8.0 <19.0.0' + + '@fluentui/react@8.124.0': + resolution: {integrity: sha512-3/VOFfLZgwNW60QtI7M6w2QKuu45PzkPyKA+6SYbL3bZiTonfcUKwOCysPpBmaCfdrDy7USctw36hnx35LQi9g==} + peerDependencies: + '@types/react': '>=16.8.0 <19.0.0' + '@types/react-dom': '>=16.8.0 <19.0.0' + react: '>=16.8.0 <19.0.0' + react-dom: '>=16.8.0 <19.0.0' + + '@fluentui/set-version@8.2.24': + resolution: {integrity: sha512-8uNi2ThvNgF+6d3q2luFVVdk/wZV0AbRfJ85kkvf2+oSRY+f6QVK0w13vMorNhA5puumKcZniZoAfUF02w7NSg==} + + '@fluentui/style-utilities@8.13.0': + resolution: {integrity: sha512-91cxKXIgvNnh5cyqrNUXRtvO7OfmzmLmZJnPz9yYCFJJteYlWPst6iRffuuTL6+LN6eRi55qbgU6SLzjvDwdcw==} + + '@fluentui/theme@2.6.68': + resolution: {integrity: sha512-rhCCVNaYl/RHeJzdFwskuxikxVo6YtaS5lGxoZUzQ7QSFm6wFpAqVyqOfgTTEKKtYWs4Sxko0ennJPw5Vil2iQ==} + peerDependencies: + '@types/react': '>=16.8.0 <19.0.0' + react: '>=16.8.0 <19.0.0' + + '@fluentui/tokens@1.0.0-alpha.22': + resolution: {integrity: sha512-i9fgYyyCWFRdUi+vQwnV6hp7wpLGK4p09B+O/f2u71GBXzPuniubPYvrIJYtl444DD6shLjYToJhQ1S6XTFwLg==} + + '@fluentui/utilities@8.16.0': + resolution: {integrity: sha512-V8ZUYNhkUKjic5nxn8UeDnSxp3nJOY3rN3+Xszc/pGCSC2JW8DWfmtHV2lXOeyG3qnqOAfyeeysRopSnjEKoxw==} + peerDependencies: + '@types/react': '>=16.8.0 <19.0.0' + react: '>=16.8.0 <19.0.0' + + '@griffel/core@1.19.2': + resolution: {integrity: sha512-WkB/QQkjy9dE4vrNYGhQvRRUHFkYVOuaznVOMNTDT4pS9aTJ9XPrMTXXlkpcwaf0D3vNKoerj4zAwnU2lBzbOg==} + + '@griffel/react@1.5.30': + resolution: {integrity: sha512-1q4ojbEVFY5YA0j1NamP0WWF4BKh+GHsVugltDYeEgEaVbH3odJ7tJabuhQgY+7Nhka0pyEFWSiHJev0K3FSew==} + peerDependencies: + react: '>=16.8.0 <20.0.0' + + '@griffel/style-types@1.3.0': + resolution: {integrity: sha512-bHwD3sUE84Xwv4dH011gOKe1jul77M1S6ZFN9Tnq8pvZ48UMdY//vtES6fv7GRS5wXYT4iqxQPBluAiYAfkpmw==} + + '@humanfs/core@0.19.1': + resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} + engines: {node: '>=18.18.0'} + + '@humanfs/node@0.16.7': + resolution: {integrity: sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==} + engines: {node: '>=18.18.0'} + + '@humanwhocodes/module-importer@1.0.1': + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + + '@humanwhocodes/retry@0.4.3': + resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} + engines: {node: '>=18.18'} + + '@jridgewell/gen-mapping@0.3.13': + resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} + + '@jridgewell/remapping@2.3.5': + resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/sourcemap-codec@1.5.5': + resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} + + '@jridgewell/trace-mapping@0.3.31': + resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} + + '@microsoft/load-themed-styles@1.10.295': + resolution: {integrity: sha512-W+IzEBw8a6LOOfRJM02dTT7BDZijxm+Z7lhtOAz1+y9vQm1Kdz9jlAO+qCEKsfxtUOmKilW8DIRqFw2aUgKeGg==} + + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + + '@rolldown/pluginutils@1.0.0-beta.38': + resolution: {integrity: sha512-N/ICGKleNhA5nc9XXQG/kkKHJ7S55u0x0XUJbbkmdCnFuoRkM1Il12q9q0eX19+M7KKUEPw/daUPIRnxhcxAIw==} + + '@rollup/rollup-android-arm-eabi@4.52.4': + resolution: {integrity: sha512-BTm2qKNnWIQ5auf4deoetINJm2JzvihvGb9R6K/ETwKLql/Bb3Eg2H1FBp1gUb4YGbydMA3jcmQTR73q7J+GAA==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.52.4': + resolution: {integrity: sha512-P9LDQiC5vpgGFgz7GSM6dKPCiqR3XYN1WwJKA4/BUVDjHpYsf3iBEmVz62uyq20NGYbiGPR5cNHI7T1HqxNs2w==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.52.4': + resolution: {integrity: sha512-QRWSW+bVccAvZF6cbNZBJwAehmvG9NwfWHwMy4GbWi/BQIA/laTIktebT2ipVjNncqE6GLPxOok5hsECgAxGZg==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.52.4': + resolution: {integrity: sha512-hZgP05pResAkRJxL1b+7yxCnXPGsXU0fG9Yfd6dUaoGk+FhdPKCJ5L1Sumyxn8kvw8Qi5PvQ8ulenUbRjzeCTw==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-freebsd-arm64@4.52.4': + resolution: {integrity: sha512-xmc30VshuBNUd58Xk4TKAEcRZHaXlV+tCxIXELiE9sQuK3kG8ZFgSPi57UBJt8/ogfhAF5Oz4ZSUBN77weM+mQ==} + cpu: [arm64] + os: [freebsd] + + '@rollup/rollup-freebsd-x64@4.52.4': + resolution: {integrity: sha512-WdSLpZFjOEqNZGmHflxyifolwAiZmDQzuOzIq9L27ButpCVpD7KzTRtEG1I0wMPFyiyUdOO+4t8GvrnBLQSwpw==} + cpu: [x64] + os: [freebsd] + + '@rollup/rollup-linux-arm-gnueabihf@4.52.4': + resolution: {integrity: sha512-xRiOu9Of1FZ4SxVbB0iEDXc4ddIcjCv2aj03dmW8UrZIW7aIQ9jVJdLBIhxBI+MaTnGAKyvMwPwQnoOEvP7FgQ==} + cpu: [arm] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-arm-musleabihf@4.52.4': + resolution: {integrity: sha512-FbhM2p9TJAmEIEhIgzR4soUcsW49e9veAQCziwbR+XWB2zqJ12b4i/+hel9yLiD8pLncDH4fKIPIbt5238341Q==} + cpu: [arm] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-arm64-gnu@4.52.4': + resolution: {integrity: sha512-4n4gVwhPHR9q/g8lKCyz0yuaD0MvDf7dV4f9tHt0C73Mp8h38UCtSCSE6R9iBlTbXlmA8CjpsZoujhszefqueg==} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-arm64-musl@4.52.4': + resolution: {integrity: sha512-u0n17nGA0nvi/11gcZKsjkLj1QIpAuPFQbR48Subo7SmZJnGxDpspyw2kbpuoQnyK+9pwf3pAoEXerJs/8Mi9g==} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-loong64-gnu@4.52.4': + resolution: {integrity: sha512-0G2c2lpYtbTuXo8KEJkDkClE/+/2AFPdPAbmaHoE870foRFs4pBrDehilMcrSScrN/fB/1HTaWO4bqw+ewBzMQ==} + cpu: [loong64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-ppc64-gnu@4.52.4': + resolution: {integrity: sha512-teSACug1GyZHmPDv14VNbvZFX779UqWTsd7KtTM9JIZRDI5NUwYSIS30kzI8m06gOPB//jtpqlhmraQ68b5X2g==} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-riscv64-gnu@4.52.4': + resolution: {integrity: sha512-/MOEW3aHjjs1p4Pw1Xk4+3egRevx8Ji9N6HUIA1Ifh8Q+cg9dremvFCUbOX2Zebz80BwJIgCBUemjqhU5XI5Eg==} + cpu: [riscv64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-riscv64-musl@4.52.4': + resolution: {integrity: sha512-1HHmsRyh845QDpEWzOFtMCph5Ts+9+yllCrREuBR/vg2RogAQGGBRC8lDPrPOMnrdOJ+mt1WLMOC2Kao/UwcvA==} + cpu: [riscv64] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-s390x-gnu@4.52.4': + resolution: {integrity: sha512-seoeZp4L/6D1MUyjWkOMRU6/iLmCU2EjbMTyAG4oIOs1/I82Y5lTeaxW0KBfkUdHAWN7j25bpkt0rjnOgAcQcA==} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-x64-gnu@4.40.0': + resolution: {integrity: sha512-RcDGMtqF9EFN8i2RYN2W+64CdHruJ5rPqrlYw+cgM3uOVPSsnAQps7cpjXe9be/yDp8UC7VLoCoKC8J3Kn2FkQ==} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-x64-gnu@4.52.4': + resolution: {integrity: sha512-Wi6AXf0k0L7E2gteNsNHUs7UMwCIhsCTs6+tqQ5GPwVRWMaflqGec4Sd8n6+FNFDw9vGcReqk2KzBDhCa1DLYg==} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-x64-musl@4.52.4': + resolution: {integrity: sha512-dtBZYjDmCQ9hW+WgEkaffvRRCKm767wWhxsFW3Lw86VXz/uJRuD438/XvbZT//B96Vs8oTA8Q4A0AfHbrxP9zw==} + cpu: [x64] + os: [linux] + libc: [musl] + + '@rollup/rollup-openharmony-arm64@4.52.4': + resolution: {integrity: sha512-1ox+GqgRWqaB1RnyZXL8PD6E5f7YyRUJYnCqKpNzxzP0TkaUh112NDrR9Tt+C8rJ4x5G9Mk8PQR3o7Ku2RKqKA==} + cpu: [arm64] + os: [openharmony] + + '@rollup/rollup-win32-arm64-msvc@4.52.4': + resolution: {integrity: sha512-8GKr640PdFNXwzIE0IrkMWUNUomILLkfeHjXBi/nUvFlpZP+FA8BKGKpacjW6OUUHaNI6sUURxR2U2g78FOHWQ==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.52.4': + resolution: {integrity: sha512-AIy/jdJ7WtJ/F6EcfOb2GjR9UweO0n43jNObQMb6oGxkYTfLcnN7vYYpG+CN3lLxrQkzWnMOoNSHTW54pgbVxw==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-gnu@4.52.4': + resolution: {integrity: sha512-UF9KfsH9yEam0UjTwAgdK0anlQ7c8/pWPU2yVjyWcF1I1thABt6WXE47cI71pGiZ8wGvxohBoLnxM04L/wj8mQ==} + cpu: [x64] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.52.4': + resolution: {integrity: sha512-bf9PtUa0u8IXDVxzRToFQKsNCRz9qLYfR/MpECxl4mRoWYjAeFjgxj1XdZr2M/GNVpT05p+LgQOHopYDlUu6/w==} + cpu: [x64] + os: [win32] + + '@swc/helpers@0.5.17': + resolution: {integrity: sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==} + + '@types/babel__core@7.20.5': + resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} + + '@types/babel__generator@7.27.0': + resolution: {integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==} + + '@types/babel__template@7.4.4': + resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} + + '@types/babel__traverse@7.28.0': + resolution: {integrity: sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==} + + '@types/debug@4.1.12': + resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} + + '@types/estree-jsx@1.0.5': + resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==} + + '@types/estree@1.0.8': + resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + + '@types/hast@2.3.10': + resolution: {integrity: sha512-McWspRw8xx8J9HurkVBfYj0xKoE25tOFlHGdx4MJ5xORQrMGZNqJhVQWaIbm6Oyla5kYOXtDiopzKRJzEOkwJw==} + + '@types/hast@3.0.4': + resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} + + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + + '@types/mdast@4.0.4': + resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} + + '@types/ms@2.1.0': + resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} + + '@types/node@24.7.0': + resolution: {integrity: sha512-IbKooQVqUBrlzWTi79E8Fw78l8k1RNtlDDNWsFZs7XonuQSJ8oNYfEeclhprUldXISRMLzBpILuKgPlIxm+/Yw==} + + '@types/prismjs@1.26.5': + resolution: {integrity: sha512-AUZTa7hQ2KY5L7AmtSiqxlhWxb4ina0yd8hNbl4TWuqnv/pFP0nDMb3YrfSBf4hJVGLh2YEIBfKaBW/9UEl6IQ==} + + '@types/react-dom@19.2.1': + resolution: {integrity: sha512-/EEvYBdT3BflCWvTMO7YkYBHVE9Ci6XdqZciZANQgKpaiDRGOLIlRo91jbTNRQjgPFWVaRxcYc0luVNFitz57A==} + peerDependencies: + '@types/react': ^19.2.0 + + '@types/react@19.2.2': + resolution: {integrity: sha512-6mDvHUFSjyT2B2yeNx2nUgMxh9LtOWvkhIU3uePn2I2oyNymUAX1NIsdgviM4CH+JSrp2D2hsMvJOkxY+0wNRA==} + + '@types/unist@2.0.11': + resolution: {integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==} + + '@types/unist@3.0.3': + resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} + + '@typescript-eslint/eslint-plugin@8.46.0': + resolution: {integrity: sha512-hA8gxBq4ukonVXPy0OKhiaUh/68D0E88GSmtC1iAEnGaieuDi38LhS7jdCHRLi6ErJBNDGCzvh5EnzdPwUc0DA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + '@typescript-eslint/parser': ^8.46.0 + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <6.0.0' + + '@typescript-eslint/parser@8.46.0': + resolution: {integrity: sha512-n1H6IcDhmmUEG7TNVSspGmiHHutt7iVKtZwRppD7e04wha5MrkV1h3pti9xQLcCMt6YWsncpoT0HMjkH1FNwWQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <6.0.0' + + '@typescript-eslint/project-service@8.46.0': + resolution: {integrity: sha512-OEhec0mH+U5Je2NZOeK1AbVCdm0ChyapAyTeXVIYTPXDJ3F07+cu87PPXcGoYqZ7M9YJVvFnfpGg1UmCIqM+QQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.0.0' + + '@typescript-eslint/scope-manager@8.46.0': + resolution: {integrity: sha512-lWETPa9XGcBes4jqAMYD9fW0j4n6hrPtTJwWDmtqgFO/4HF4jmdH/Q6wggTw5qIT5TXjKzbt7GsZUBnWoO3dqw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/tsconfig-utils@8.46.0': + resolution: {integrity: sha512-WrYXKGAHY836/N7zoK/kzi6p8tXFhasHh8ocFL9VZSAkvH956gfeRfcnhs3xzRy8qQ/dq3q44v1jvQieMFg2cw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.0.0' + + '@typescript-eslint/type-utils@8.46.0': + resolution: {integrity: sha512-hy+lvYV1lZpVs2jRaEYvgCblZxUoJiPyCemwbQZ+NGulWkQRy0HRPYAoef/CNSzaLt+MLvMptZsHXHlkEilaeg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <6.0.0' + + '@typescript-eslint/types@8.46.0': + resolution: {integrity: sha512-bHGGJyVjSE4dJJIO5yyEWt/cHyNwga/zXGJbJJ8TiO01aVREK6gCTu3L+5wrkb1FbDkQ+TKjMNe9R/QQQP9+rA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/typescript-estree@8.46.0': + resolution: {integrity: sha512-ekDCUfVpAKWJbRfm8T1YRrCot1KFxZn21oV76v5Fj4tr7ELyk84OS+ouvYdcDAwZL89WpEkEj2DKQ+qg//+ucg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.0.0' + + '@typescript-eslint/utils@8.46.0': + resolution: {integrity: sha512-nD6yGWPj1xiOm4Gk0k6hLSZz2XkNXhuYmyIrOWcHoPuAhjT9i5bAG+xbWPgFeNR8HPHHtpNKdYUXJl/D3x7f5g==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <6.0.0' + + '@typescript-eslint/visitor-keys@8.46.0': + resolution: {integrity: sha512-FrvMpAK+hTbFy7vH5j1+tMYHMSKLE6RzluFJlkFNKD0p9YsUT75JlBSmr5so3QRzvMwU5/bIEdeNrxm8du8l3Q==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@uiw/copy-to-clipboard@1.0.17': + resolution: {integrity: sha512-O2GUHV90Iw2VrSLVLK0OmNIMdZ5fgEg4NhvtwINsX+eZ/Wf6DWD0TdsK9xwV7dNRnK/UI2mQtl0a2/kRgm1m1A==} + + '@uiw/react-markdown-preview@5.1.5': + resolution: {integrity: sha512-DNOqx1a6gJR7Btt57zpGEKTfHRlb7rWbtctMRO2f82wWcuoJsxPBrM+JWebDdOD0LfD8oe2CQvW2ICQJKHQhZg==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + + '@uiw/react-md-editor@4.0.8': + resolution: {integrity: sha512-S3mOzZeGmJNhzdXJxRTCwsFMDp8nBWeQUf59cK3L6QHzDUHnRoHpcmWpfVRyKGKSg8zaI2+meU5cYWf8kYn3mQ==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + + '@ungap/structured-clone@1.3.0': + resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} + + '@vitejs/plugin-react@5.0.4': + resolution: {integrity: sha512-La0KD0vGkVkSk6K+piWDKRUyg8Rl5iAIKRMH0vMJI0Eg47bq1eOxmoObAaQG37WMW9MSyk7Cs8EIWwJC1PtzKA==} + engines: {node: ^20.19.0 || >=22.12.0} + peerDependencies: + vite: ^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 + + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + acorn@8.15.0: + resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} + engines: {node: '>=0.4.0'} + hasBin: true + + ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + + axios@1.12.2: + resolution: {integrity: sha512-vMJzPewAlRyOgxV2dU0Cuz2O8zzzx9VYtbJOaBgXFeLc4IV/Eg50n4LowmehOOR61S8ZMpc2K5Sa7g6A4jfkUw==} + + b-tween@0.3.3: + resolution: {integrity: sha512-oEHegcRpA7fAuc9KC4nktucuZn2aS8htymCPcP3qkEGPqiBH+GfqtqoG2l7LxHngg6O0HFM7hOeOYExl1Oz4ZA==} + + b-validate@1.5.3: + resolution: {integrity: sha512-iCvCkGFskbaYtfQ0a3GmcQCHl/Sv1GufXFGuUQ+FE+WJa7A/espLOuFIn09B944V8/ImPj71T4+rTASxO2PAuA==} + + bail@2.0.2: + resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + baseline-browser-mapping@2.8.13: + resolution: {integrity: sha512-7s16KR8io8nIBWQyCYhmFhd+ebIzb9VKTzki+wOJXHTxTnV6+mFGH3+Jwn1zoKaY9/H9T/0BcKCZnzXljPnpSQ==} + hasBin: true + + bcp-47-match@2.0.3: + resolution: {integrity: sha512-JtTezzbAibu8G0R9op9zb3vcWZd9JF6M0xOYGPn0fNCd7wOpRB1mU2mH9T8gaBGbAAyIIVgB2G7xG0GP98zMAQ==} + + boolbase@1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + + brace-expansion@1.1.12: + resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} + + brace-expansion@2.0.2: + resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==} + + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + + browserslist@4.26.3: + resolution: {integrity: sha512-lAUU+02RFBuCKQPj/P6NgjlbCnLBMp4UtgTx7vNHd3XSIJF87s9a5rA3aH2yw3GS9DqZAUbOtZdCCiZeVRqt0w==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + call-bind-apply-helpers@1.0.2: + resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} + engines: {node: '>= 0.4'} + + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + caniuse-lite@1.0.30001749: + resolution: {integrity: sha512-0rw2fJOmLfnzCRbkm8EyHL8SvI2Apu5UbnQuTsJ0ClgrH8hcwFooJ1s5R0EP8o8aVrFu8++ae29Kt9/gZAZp/Q==} + + ccount@2.0.1: + resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + character-entities-html4@2.1.0: + resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} + + character-entities-legacy@3.0.0: + resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} + + character-entities@2.0.2: + resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} + + character-reference-invalid@2.0.1: + resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} + + classnames@2.5.1: + resolution: {integrity: sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==} + + clsx@2.1.1: + resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} + engines: {node: '>=6'} + + color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + color-string@1.9.1: + resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} + + color@3.2.1: + resolution: {integrity: sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==} + + combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + + comma-separated-tokens@2.0.3: + resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} + + compute-scroll-into-view@1.0.20: + resolution: {integrity: sha512-UCB0ioiyj8CRjtrvaceBLqqhZCVP+1B8+NWQhmdsm0VXOJtobBCf1dBQmebCCo34qZmUwZfIH2MZLqNHazrfjg==} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + + cookie@1.0.2: + resolution: {integrity: sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==} + engines: {node: '>=18'} + + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} + + css-selector-parser@3.1.3: + resolution: {integrity: sha512-gJMigczVZqYAk0hPVzx/M4Hm1D9QOtqkdQk9005TNzDIUGzo5cnHEDiKUT7jGPximL/oYb+LIitcHFQ4aKupxg==} + + csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + + dayjs@1.11.18: + resolution: {integrity: sha512-zFBQ7WFRvVRhKcWoUh+ZA1g2HVgUbsZm9sbddh8EC5iv93sui8DVVz1Npvz+r6meo9VKfa8NyLWBsQK1VvIKPA==} + + debug@4.4.3: + resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + decode-named-character-reference@1.2.0: + resolution: {integrity: sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q==} + + deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + + delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + + dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + + detect-node-es@1.1.0: + resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} + + devlop@1.1.0: + resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} + + direction@2.0.1: + resolution: {integrity: sha512-9S6m9Sukh1cZNknO1CWAr2QAWsbKLafQiyM5gZ7VgXHeuaoUwffKN4q6NC4A/Mf9iiPlOXQEKW/Mv/mh9/3YFA==} + hasBin: true + + dom-helpers@5.2.1: + resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==} + + dunder-proto@1.0.1: + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} + engines: {node: '>= 0.4'} + + electron-to-chromium@1.5.233: + resolution: {integrity: sha512-iUdTQSf7EFXsDdQsp8MwJz5SVk4APEFqXU/S47OtQ0YLqacSwPXdZ5vRlMX3neb07Cy2vgioNuRnWUXFwuslkg==} + + embla-carousel-autoplay@8.6.0: + resolution: {integrity: sha512-OBu5G3nwaSXkZCo1A6LTaFMZ8EpkYbwIaH+bPqdBnDGQ2fh4+NbzjXjs2SktoPNKCtflfVMc75njaDHOYXcrsA==} + peerDependencies: + embla-carousel: 8.6.0 + + embla-carousel-fade@8.6.0: + resolution: {integrity: sha512-qaYsx5mwCz72ZrjlsXgs1nKejSrW+UhkbOMwLgfRT7w2LtdEB03nPRI06GHuHv5ac2USvbEiX2/nAHctcDwvpg==} + peerDependencies: + embla-carousel: 8.6.0 + + embla-carousel@8.6.0: + resolution: {integrity: sha512-SjWyZBHJPbqxHOzckOfo8lHisEaJWmwd23XppYFYVh10bU66/Pn5tkVkbkCMZVdbUE5eTCI2nD8OyIP4Z+uwkA==} + + entities@6.0.1: + resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==} + engines: {node: '>=0.12'} + + es-define-property@1.0.1: + resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + es-object-atoms@1.1.1: + resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} + engines: {node: '>= 0.4'} + + es-set-tostringtag@2.1.0: + resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} + engines: {node: '>= 0.4'} + + esbuild@0.25.10: + resolution: {integrity: sha512-9RiGKvCwaqxO2owP61uQ4BgNborAQskMR6QusfWzQqv7AZOg5oGehdY2pRJMTKuwxd1IDBP4rSbI5lHzU7SMsQ==} + engines: {node: '>=18'} + hasBin: true + + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + escape-string-regexp@5.0.0: + resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} + engines: {node: '>=12'} + + eslint-plugin-react-hooks@5.2.0: + resolution: {integrity: sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==} + engines: {node: '>=10'} + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 + + eslint-plugin-react-refresh@0.4.23: + resolution: {integrity: sha512-G4j+rv0NmbIR45kni5xJOrYvCtyD3/7LjpVH8MPPcudXDcNu8gv+4ATTDXTtbRR8rTCM5HxECvCSsRmxKnWDsA==} + peerDependencies: + eslint: '>=8.40' + + eslint-scope@8.4.0: + resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint-visitor-keys@4.2.1: + resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint@9.37.0: + resolution: {integrity: sha512-XyLmROnACWqSxiGYArdef1fItQd47weqB7iwtfr9JHwRrqIXZdcFMvvEcL9xHCmL0SNsOvF0c42lWyM1U5dgig==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + hasBin: true + peerDependencies: + jiti: '*' + peerDependenciesMeta: + jiti: + optional: true + + espree@10.4.0: + resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + esquery@1.6.0: + resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} + engines: {node: '>=0.10'} + + esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + estree-util-is-identifier-name@3.0.0: + resolution: {integrity: sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==} + + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + eventemitter3@4.0.7: + resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} + + extend@3.0.2: + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-glob@3.3.3: + resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} + engines: {node: '>=8.6.0'} + + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + + fastq@1.19.1: + resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} + + fdir@6.5.0: + resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} + engines: {node: '>=12.0.0'} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + + file-entry-cache@8.0.0: + resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} + engines: {node: '>=16.0.0'} + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + + flat-cache@4.0.1: + resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} + engines: {node: '>=16'} + + flatted@3.3.3: + resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} + + focus-lock@1.3.6: + resolution: {integrity: sha512-Ik/6OCk9RQQ0T5Xw+hKNLWrjSMtv51dD4GRmJjbD5a58TIEpI5a5iXagKVl3Z5UuyslMCA8Xwnu76jQob62Yhg==} + engines: {node: '>=10'} + + follow-redirects@1.15.11: + resolution: {integrity: sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + + form-data@4.0.4: + resolution: {integrity: sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==} + engines: {node: '>= 6'} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + + get-intrinsic@1.3.0: + resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} + engines: {node: '>= 0.4'} + + get-proto@1.0.1: + resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} + engines: {node: '>= 0.4'} + + github-slugger@2.0.0: + resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==} + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + + globals@14.0.0: + resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} + engines: {node: '>=18'} + + globals@16.4.0: + resolution: {integrity: sha512-ob/2LcVVaVGCYN+r14cnwnoDPUufjiYgSqRhiFD0Q1iI4Odora5RE8Iv1D24hAz5oMophRGkGz+yuvQmmUMnMw==} + engines: {node: '>=18'} + + goober@2.1.18: + resolution: {integrity: sha512-2vFqsaDVIT9Gz7N6kAL++pLpp41l3PfDuusHcjnGLfR6+huZkl6ziX+zgVC3ZxpqWhzH6pyDdGrCeDhMIvwaxw==} + peerDependencies: + csstype: ^3.0.10 + + gopd@1.2.0: + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} + engines: {node: '>= 0.4'} + + graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + has-symbols@1.1.0: + resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} + engines: {node: '>= 0.4'} + + has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + + hast-util-from-html@2.0.3: + resolution: {integrity: sha512-CUSRHXyKjzHov8yKsQjGOElXy/3EKpyX56ELnkHH34vDVw1N1XSQ1ZcAvTyAPtGqLTuKP/uxM+aLkSPqF/EtMw==} + + hast-util-from-parse5@8.0.3: + resolution: {integrity: sha512-3kxEVkEKt0zvcZ3hCRYI8rqrgwtlIOFMWkbclACvjlDw8Li9S2hk/d51OI0nr/gIpdMHNepwgOKqZ/sy0Clpyg==} + + hast-util-has-property@3.0.0: + resolution: {integrity: sha512-MNilsvEKLFpV604hwfhVStK0usFY/QmM5zX16bo7EjnAEGofr5YyI37kzopBlZJkHD4t887i+q/C8/tr5Q94cA==} + + hast-util-heading-rank@3.0.0: + resolution: {integrity: sha512-EJKb8oMUXVHcWZTDepnr+WNbfnXKFNf9duMesmr4S8SXTJBJ9M4Yok08pu9vxdJwdlGRhVumk9mEhkEvKGifwA==} + + hast-util-is-element@3.0.0: + resolution: {integrity: sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==} + + hast-util-parse-selector@3.1.1: + resolution: {integrity: sha512-jdlwBjEexy1oGz0aJ2f4GKMaVKkA9jwjr4MjAAI22E5fM/TXVZHuS5OpONtdeIkRKqAaryQ2E9xNQxijoThSZA==} + + hast-util-parse-selector@4.0.0: + resolution: {integrity: sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==} + + hast-util-raw@9.1.0: + resolution: {integrity: sha512-Y8/SBAHkZGoNkpzqqfCldijcuUKh7/su31kEBp67cFY09Wy0mTRgtsLYsiIxMJxlu0f6AA5SUTbDR8K0rxnbUw==} + + hast-util-select@6.0.4: + resolution: {integrity: sha512-RqGS1ZgI0MwxLaKLDxjprynNzINEkRHY2i8ln4DDjgv9ZhcYVIHN9rlpiYsqtFwrgpYU361SyWDQcGNIBVu3lw==} + + hast-util-to-html@9.0.5: + resolution: {integrity: sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==} + + hast-util-to-jsx-runtime@2.3.6: + resolution: {integrity: sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg==} + + hast-util-to-parse5@8.0.0: + resolution: {integrity: sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==} + + hast-util-to-string@3.0.1: + resolution: {integrity: sha512-XelQVTDWvqcl3axRfI0xSeoVKzyIFPwsAGSLIsKdJKQMXDYJS4WYrBNF/8J7RdhIcFI2BOHgAifggsvsxp/3+A==} + + hast-util-whitespace@3.0.0: + resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} + + hastscript@7.2.0: + resolution: {integrity: sha512-TtYPq24IldU8iKoJQqvZOuhi5CyCQRAbvDOX0x1eW6rsHSxa/1i2CCiptNTotGHJ3VoHRGmqiv6/D3q113ikkw==} + + hastscript@9.0.1: + resolution: {integrity: sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w==} + + html-url-attributes@3.0.1: + resolution: {integrity: sha512-ol6UPyBWqsrO6EJySPz2O7ZSr856WDrEzM5zMqp+FJJLGMW35cLYmmZnl0vztAZxRUoNZJFTCohfjuIJ8I4QBQ==} + + html-void-elements@3.0.0: + resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} + + ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} + engines: {node: '>= 4'} + + ignore@7.0.5: + resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} + engines: {node: '>= 4'} + + import-fresh@3.3.1: + resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} + engines: {node: '>=6'} + + imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + inline-style-parser@0.2.4: + resolution: {integrity: sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==} + + is-alphabetical@2.0.1: + resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} + + is-alphanumerical@2.0.1: + resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==} + + is-arrayish@0.3.4: + resolution: {integrity: sha512-m6UrgzFVUYawGBh1dUsWR5M2Clqic9RVXC/9f8ceNlv2IcO9j9J/z8UoCLPqtsPBFNzEpfR3xftohbfqDx8EQA==} + + is-decimal@2.0.1: + resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-hexadecimal@2.0.1: + resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-plain-obj@4.1.0: + resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} + engines: {node: '>=12'} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + + jsesc@3.1.0: + resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} + engines: {node: '>=6'} + hasBin: true + + json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + + json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + + json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + keyborg@2.6.0: + resolution: {integrity: sha512-o5kvLbuTF+o326CMVYpjlaykxqYP9DphFQZ2ZpgrvBouyvOxyEB7oqe8nOLFpiV5VCtz0D3pt8gXQYWpLpBnmA==} + + keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + + levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + + lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + + lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + + longest-streak@3.1.0: + resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} + + loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + + lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + + markdown-table@3.0.4: + resolution: {integrity: sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==} + + math-intrinsics@1.1.0: + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} + engines: {node: '>= 0.4'} + + mdast-util-find-and-replace@3.0.2: + resolution: {integrity: sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==} + + mdast-util-from-markdown@2.0.2: + resolution: {integrity: sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==} + + mdast-util-gfm-autolink-literal@2.0.1: + resolution: {integrity: sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==} + + mdast-util-gfm-footnote@2.1.0: + resolution: {integrity: sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==} + + mdast-util-gfm-strikethrough@2.0.0: + resolution: {integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==} + + mdast-util-gfm-table@2.0.0: + resolution: {integrity: sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==} + + mdast-util-gfm-task-list-item@2.0.0: + resolution: {integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==} + + mdast-util-gfm@3.1.0: + resolution: {integrity: sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==} + + mdast-util-mdx-expression@2.0.1: + resolution: {integrity: sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==} + + mdast-util-mdx-jsx@3.2.0: + resolution: {integrity: sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==} + + mdast-util-mdxjs-esm@2.0.1: + resolution: {integrity: sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==} + + mdast-util-phrasing@4.1.0: + resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} + + mdast-util-to-hast@13.2.0: + resolution: {integrity: sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==} + + mdast-util-to-markdown@2.1.2: + resolution: {integrity: sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==} + + mdast-util-to-string@4.0.0: + resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + micromark-core-commonmark@2.0.3: + resolution: {integrity: sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==} + + micromark-extension-gfm-autolink-literal@2.1.0: + resolution: {integrity: sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==} + + micromark-extension-gfm-footnote@2.1.0: + resolution: {integrity: sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==} + + micromark-extension-gfm-strikethrough@2.1.0: + resolution: {integrity: sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==} + + micromark-extension-gfm-table@2.1.1: + resolution: {integrity: sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==} + + micromark-extension-gfm-tagfilter@2.0.0: + resolution: {integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==} + + micromark-extension-gfm-task-list-item@2.1.0: + resolution: {integrity: sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==} + + micromark-extension-gfm@3.0.0: + resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==} + + micromark-factory-destination@2.0.1: + resolution: {integrity: sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==} + + micromark-factory-label@2.0.1: + resolution: {integrity: sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==} + + micromark-factory-space@2.0.1: + resolution: {integrity: sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==} + + micromark-factory-title@2.0.1: + resolution: {integrity: sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==} + + micromark-factory-whitespace@2.0.1: + resolution: {integrity: sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==} + + micromark-util-character@2.1.1: + resolution: {integrity: sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==} + + micromark-util-chunked@2.0.1: + resolution: {integrity: sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==} + + micromark-util-classify-character@2.0.1: + resolution: {integrity: sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==} + + micromark-util-combine-extensions@2.0.1: + resolution: {integrity: sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==} + + micromark-util-decode-numeric-character-reference@2.0.2: + resolution: {integrity: sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==} + + micromark-util-decode-string@2.0.1: + resolution: {integrity: sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==} + + micromark-util-encode@2.0.1: + resolution: {integrity: sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==} + + micromark-util-html-tag-name@2.0.1: + resolution: {integrity: sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==} + + micromark-util-normalize-identifier@2.0.1: + resolution: {integrity: sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==} + + micromark-util-resolve-all@2.0.1: + resolution: {integrity: sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==} + + micromark-util-sanitize-uri@2.0.1: + resolution: {integrity: sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==} + + micromark-util-subtokenize@2.1.0: + resolution: {integrity: sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==} + + micromark-util-symbol@2.0.1: + resolution: {integrity: sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==} + + micromark-util-types@2.0.2: + resolution: {integrity: sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==} + + micromark@4.0.2: + resolution: {integrity: sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==} + + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + + minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + + minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + engines: {node: '>=16 || 14 >=14.17'} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + nanoid@3.3.11: + resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + + node-releases@2.0.23: + resolution: {integrity: sha512-cCmFDMSm26S6tQSDpBCg/NR8NENrVPhAJSf+XbxBG4rPFaaonlEoE9wHQmun+cls499TQGSb7ZyPBRlzgKfpeg==} + + nth-check@2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + + number-precision@1.6.0: + resolution: {integrity: sha512-05OLPgbgmnixJw+VvEh18yNPUo3iyp4BEWJcrLu4X9W05KmMifN7Mu5exYvQXqxxeNWhvIF+j3Rij+HmddM/hQ==} + + object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + engines: {node: '>= 0.8.0'} + + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + + parse-entities@4.0.2: + resolution: {integrity: sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==} + + parse-numeric-range@1.3.0: + resolution: {integrity: sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ==} + + parse5@7.3.0: + resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + picomatch@4.0.3: + resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} + engines: {node: '>=12'} + + postcss@8.5.6: + resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} + engines: {node: ^10 || ^12 || >=14} + + prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + + prop-types@15.8.1: + resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} + + property-information@6.5.0: + resolution: {integrity: sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==} + + property-information@7.1.0: + resolution: {integrity: sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==} + + proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + react-clientside-effect@1.2.8: + resolution: {integrity: sha512-ma2FePH0z3px2+WOu6h+YycZcEvFmmxIlAb62cF52bG86eMySciO/EQZeQMXd07kPCYB0a1dWDT5J+KE9mCDUw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + + react-dom@19.2.0: + resolution: {integrity: sha512-UlbRu4cAiGaIewkPyiRGJk0imDN2T3JjieT6spoL2UeSf5od4n5LB/mQ4ejmxhCFT1tYe8IvaFulzynWovsEFQ==} + peerDependencies: + react: ^19.2.0 + + react-focus-lock@2.13.6: + resolution: {integrity: sha512-ehylFFWyYtBKXjAO9+3v8d0i+cnc1trGS0vlTGhzFW1vbFXVUTmR8s2tt/ZQG8x5hElg6rhENlLG1H3EZK0Llg==} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + react-hot-toast@2.6.0: + resolution: {integrity: sha512-bH+2EBMZ4sdyou/DPrfgIouFpcRLCJ+HoCA32UoAYHn6T3Ur5yfcDCeSr5mwldl6pFOsiocmrXMuoCJ1vV8bWg==} + engines: {node: '>=10'} + peerDependencies: + react: '>=16' + react-dom: '>=16' + + react-is@16.13.1: + resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + + react-is@17.0.2: + resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} + + react-is@18.3.1: + resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} + + react-markdown-editor-lite@1.3.4: + resolution: {integrity: sha512-PhS4HzLzSgCsr8O9CfJX75nAYmZ0NwpfviLxARlT0Tau+APOerDSHSw3u9hub5wd0EqmonWibw0vhXXNu4ldRA==} + peerDependencies: + react: ^16.9.0 || ^17.0.0 || ^18.0.0 + + react-markdown@10.1.0: + resolution: {integrity: sha512-qKxVopLT/TyA6BX3Ue5NwabOsAzm0Q7kAPwq6L+wWDwisYs7R8vZ0nRXqq6rkueboxpkjvLGU9fWifiX/ZZFxQ==} + peerDependencies: + '@types/react': '>=18' + react: '>=18' + + react-markdown@9.0.3: + resolution: {integrity: sha512-Yk7Z94dbgYTOrdk41Z74GoKA7rThnsbbqBTRYuxoe08qvfQ9tJVhmAKw6BJS/ZORG7kTy/s1QvYzSuaoBA1qfw==} + peerDependencies: + '@types/react': '>=18' + react: '>=18' + + react-refresh@0.17.0: + resolution: {integrity: sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==} + engines: {node: '>=0.10.0'} + + react-router-dom@7.9.3: + resolution: {integrity: sha512-1QSbA0TGGFKTAc/aWjpfW/zoEukYfU4dc1dLkT/vvf54JoGMkW+fNA+3oyo2gWVW1GM7BxjJVHz5GnPJv40rvg==} + engines: {node: '>=20.0.0'} + peerDependencies: + react: '>=18' + react-dom: '>=18' + + react-router@7.9.3: + resolution: {integrity: sha512-4o2iWCFIwhI/eYAIL43+cjORXYn/aRQPgtFRRZb3VzoyQ5Uej0Bmqj7437L97N9NJW4wnicSwLOLS+yCXfAPgg==} + engines: {node: '>=20.0.0'} + peerDependencies: + react: '>=18' + react-dom: '>=18' + peerDependenciesMeta: + react-dom: + optional: true + + react-toastify@11.0.5: + resolution: {integrity: sha512-EpqHBGvnSTtHYhCPLxML05NLY2ZX0JURbAdNYa6BUkk+amz4wbKBQvoKQAB0ardvSarUBuY4Q4s1sluAzZwkmA==} + peerDependencies: + react: ^18 || ^19 + react-dom: ^18 || ^19 + + react-transition-group@4.4.5: + resolution: {integrity: sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==} + peerDependencies: + react: '>=16.6.0' + react-dom: '>=16.6.0' + + react@19.2.0: + resolution: {integrity: sha512-tmbWg6W31tQLeB5cdIBOicJDJRR2KzXsV7uSK9iNfLWQ5bIZfxuPEHp7M8wiHyHnn0DD1i7w3Zmin0FtkrwoCQ==} + engines: {node: '>=0.10.0'} + + refractor@4.9.0: + resolution: {integrity: sha512-nEG1SPXFoGGx+dcjftjv8cAjEusIh6ED1xhf5DG3C0x/k+rmZ2duKnc3QLpt6qeHv5fPb8uwN3VWN2BT7fr3Og==} + + rehype-attr@3.0.3: + resolution: {integrity: sha512-Up50Xfra8tyxnkJdCzLBIBtxOcB2M1xdeKe1324U06RAvSjYm7ULSeoM+b/nYPQPVd7jsXJ9+39IG1WAJPXONw==} + engines: {node: '>=16'} + + rehype-autolink-headings@7.1.0: + resolution: {integrity: sha512-rItO/pSdvnvsP4QRB1pmPiNHUskikqtPojZKJPPPAVx9Hj8i8TwMBhofrrAYRhYOOBZH9tgmG5lPqDLuIWPWmw==} + + rehype-ignore@2.0.2: + resolution: {integrity: sha512-BpAT/3lU9DMJ2siYVD/dSR0A/zQgD6Fb+fxkJd4j+wDVy6TYbYpK+FZqu8eM9EuNKGvi4BJR7XTZ/+zF02Dq8w==} + engines: {node: '>=16'} + + rehype-parse@9.0.1: + resolution: {integrity: sha512-ksCzCD0Fgfh7trPDxr2rSylbwq9iYDkSn8TCDmEJ49ljEUBxDVCzCHv7QNzZOfODanX4+bWQ4WZqLCRWYLfhag==} + + rehype-prism-plus@2.0.0: + resolution: {integrity: sha512-FeM/9V2N7EvDZVdR2dqhAzlw5YI49m9Tgn7ZrYJeYHIahM6gcXpH0K1y2gNnKanZCydOMluJvX2cB9z3lhY8XQ==} + + rehype-prism-plus@2.0.1: + resolution: {integrity: sha512-Wglct0OW12tksTUseAPyWPo3srjBOY7xKlql/DPKi7HbsdZTyaLCAoO58QBKSczFQxElTsQlOY3JDOFzB/K++Q==} + + rehype-raw@7.0.0: + resolution: {integrity: sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==} + + rehype-rewrite@4.0.2: + resolution: {integrity: sha512-rjLJ3z6fIV11phwCqHp/KRo8xuUCO8o9bFJCNw5o6O2wlLk6g8r323aRswdGBQwfXPFYeSuZdAjp4tzo6RGqEg==} + engines: {node: '>=16.0.0'} + + rehype-slug@6.0.0: + resolution: {integrity: sha512-lWyvf/jwu+oS5+hL5eClVd3hNdmwM1kAC0BUvEGD19pajQMIzcNUd/k9GsfQ+FfECvX+JE+e9/btsKH0EjJT6A==} + + rehype-stringify@10.0.1: + resolution: {integrity: sha512-k9ecfXHmIPuFVI61B9DeLPN0qFHfawM6RsuX48hoqlaKSF61RskNjSm1lI8PhBEM0MRdLxVVm4WmTqJQccH9mA==} + + rehype@13.0.2: + resolution: {integrity: sha512-j31mdaRFrwFRUIlxGeuPXXKWQxet52RBQRvCmzl5eCefn/KGbomK5GMHNMsOJf55fgo3qw5tST5neDuarDYR2A==} + + remark-gfm@4.0.1: + resolution: {integrity: sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==} + + remark-github-blockquote-alert@1.3.1: + resolution: {integrity: sha512-OPNnimcKeozWN1w8KVQEuHOxgN3L4rah8geMOLhA5vN9wITqU4FWD+G26tkEsCGHiOVDbISx+Se5rGZ+D1p0Jg==} + engines: {node: '>=16'} + + remark-ins@1.2.1: + resolution: {integrity: sha512-Q31eT9DEcQz6kmNvIbI1hJwr2xXnTJ2geVt5fm4GVTgjVgeiCQ4mEfLqZp3R/iWLWDJqX5nsVJNu4TRwEAPfZg==} + peerDependencies: + unified: ^11 + + remark-parse@11.0.0: + resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} + + remark-rehype@11.1.2: + resolution: {integrity: sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw==} + + remark-stringify@11.0.0: + resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==} + + resize-observer-polyfill@1.5.1: + resolution: {integrity: sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==} + + resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + reusify@1.1.0: + resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + rollup@4.52.4: + resolution: {integrity: sha512-CLEVl+MnPAiKh5pl4dEWSyMTpuflgNQiLGhMv8ezD5W/qP8AKvmYpCOKRRNOh7oRKnauBZ4SyeYkMS+1VSyKwQ==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + + rtl-css-js@1.16.1: + resolution: {integrity: sha512-lRQgou1mu19e+Ya0LsTvKrVJ5TYUbqCVPAiImX3UfLTenarvPUl1QFdvu5Z3PYmHT9RCcwIfbjRQBntExyj3Zg==} + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + scheduler@0.27.0: + resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==} + + scroll-into-view-if-needed@2.2.31: + resolution: {integrity: sha512-dGCXy99wZQivjmjIqihaBQNjryrz5rueJY7eHfTdyWEiR4ttYpsajb14rn9s5d4DY4EcY6+4+U/maARBXJedkA==} + + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + + semver@7.7.3: + resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==} + engines: {node: '>=10'} + hasBin: true + + set-cookie-parser@2.7.1: + resolution: {integrity: sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==} + + shallowequal@1.1.0: + resolution: {integrity: sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==} + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + simple-swizzle@0.2.4: + resolution: {integrity: sha512-nAu1WFPQSMNr2Zn9PGSZK9AGn4t/y97lEm+MXTtUDwfP0ksAIX4nO+6ruD9Jwut4C49SB1Ws+fbXsm/yScWOHw==} + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + space-separated-tokens@2.0.2: + resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} + + stringify-entities@4.0.4: + resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} + + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + style-to-js@1.1.17: + resolution: {integrity: sha512-xQcBGDxJb6jjFCTzvQtfiPn6YvvP2O8U1MDIPNfJQlWMYfktPy+iGsHE7cssjs7y84d9fQaK4UF3RIJaAHSoYA==} + + style-to-object@1.0.9: + resolution: {integrity: sha512-G4qppLgKu/k6FwRpHiGiKPaPTFcG3g4wNVX/Qsfu+RqQM30E7Tyu/TEgxcL9PNLF5pdRLwQdE3YKKf+KF2Dzlw==} + + stylis@4.3.6: + resolution: {integrity: sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ==} + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + tabster@8.5.6: + resolution: {integrity: sha512-2vfrRGrx8O9BjdrtSlVA5fvpmbq5HQBRN13XFRg6LAvZ1Fr3QdBnswgT4YgFS5Bhoo5nxwgjRaRueI2Us/dv7g==} + + tinyglobby@0.2.15: + resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} + engines: {node: '>=12.0.0'} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + trim-lines@3.0.1: + resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} + + trough@2.2.0: + resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} + + ts-api-utils@2.1.0: + resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==} + engines: {node: '>=18.12'} + peerDependencies: + typescript: '>=4.8.4' + + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + + type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + + typescript-eslint@8.46.0: + resolution: {integrity: sha512-6+ZrB6y2bT2DX3K+Qd9vn7OFOJR+xSLDj+Aw/N3zBwUt27uTw2sw2TE2+UcY1RiyBZkaGbTkVg9SSdPNUG6aUw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <6.0.0' + + typescript@5.9.3: + resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} + engines: {node: '>=14.17'} + hasBin: true + + undici-types@7.14.0: + resolution: {integrity: sha512-QQiYxHuyZ9gQUIrmPo3IA+hUl4KYk8uSA7cHrcKd/l3p1OTpZcM0Tbp9x7FAtXdAYhlasd60ncPpgu6ihG6TOA==} + + unified@11.0.5: + resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} + + unist-builder@4.0.0: + resolution: {integrity: sha512-wmRFnH+BLpZnTKpc5L7O67Kac89s9HMrtELpnNaE6TAobq5DTZZs5YaTQfAZBA9bFPECx2uVAPO31c+GVug8mg==} + + unist-util-filter@5.0.1: + resolution: {integrity: sha512-pHx7D4Zt6+TsfwylH9+lYhBhzyhEnCXs/lbq/Hstxno5z4gVdyc2WEW0asfjGKPyG4pEKrnBv5hdkO6+aRnQJw==} + + unist-util-find-after@5.0.0: + resolution: {integrity: sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==} + + unist-util-find-all-after@5.0.0: + resolution: {integrity: sha512-nGmOYvTSdGcI4RvrUNfe0mOsqqbbJOtqCQsppsY9KZjmv3nwM3YRgNBwFPdZ8Y+iv9Z/2PDjR9u6u+uK62XTTg==} + + unist-util-find-all-before@5.0.0: + resolution: {integrity: sha512-zir6a7GsXfdn4YAWR4F3hLNKZjTjLBJurdyquysvmX38xbftS1+qwvEhutxxHLq0Pp1tW5V1TDiuj+qluuOnKw==} + + unist-util-find-between-all@1.1.0: + resolution: {integrity: sha512-vL7mANFHZaZsZC9ckyZUUWTE98sFNElwZtscONxIk87/0BYHo0mTKGG9/zUPa7nzSh4S5PAf0KhxXaCFfjJM2A==} + + unist-util-is@6.0.0: + resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} + + unist-util-position@5.0.0: + resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} + + unist-util-stringify-position@4.0.0: + resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} + + unist-util-visit-parents@6.0.1: + resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} + + unist-util-visit@5.0.0: + resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} + + update-browserslist-db@1.1.3: + resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + + use-callback-ref@1.3.3: + resolution: {integrity: sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + use-sidecar@1.1.3: + resolution: {integrity: sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + use-sync-external-store@1.6.0: + resolution: {integrity: sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + + uuid@8.3.2: + resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + hasBin: true + + vfile-location@5.0.3: + resolution: {integrity: sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==} + + vfile-message@4.0.3: + resolution: {integrity: sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==} + + vfile@6.0.3: + resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} + + vite@7.1.9: + resolution: {integrity: sha512-4nVGliEpxmhCL8DslSAUdxlB6+SMrhB0a1v5ijlh1xB1nEPuy1mxaHxysVucLHuWryAxLWg6a5ei+U4TLn/rFg==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + 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 + + web-namespaces@2.0.1: + resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + + yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + + zwitch@2.0.4: + resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} + +snapshots: + + '@arco-design/color@0.4.0': + dependencies: + color: 3.2.1 + + '@arco-design/web-react@2.66.5(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + dependencies: + '@arco-design/color': 0.4.0 + '@babel/runtime': 7.28.4 + b-tween: 0.3.3 + b-validate: 1.5.3 + compute-scroll-into-view: 1.0.20 + dayjs: 1.11.18 + lodash: 4.17.21 + number-precision: 1.6.0 + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + react-focus-lock: 2.13.6(@types/react@19.2.2)(react@19.2.0) + react-is: 18.3.1 + react-transition-group: 4.4.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + resize-observer-polyfill: 1.5.1 + scroll-into-view-if-needed: 2.2.31 + shallowequal: 1.1.0 + transitivePeerDependencies: + - '@types/react' + + '@babel/code-frame@7.27.1': + dependencies: + '@babel/helper-validator-identifier': 7.27.1 + js-tokens: 4.0.0 + picocolors: 1.1.1 + + '@babel/compat-data@7.28.4': {} + + '@babel/core@7.28.4': + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/generator': 7.28.3 + '@babel/helper-compilation-targets': 7.27.2 + '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.4) + '@babel/helpers': 7.28.4 + '@babel/parser': 7.28.4 + '@babel/template': 7.27.2 + '@babel/traverse': 7.28.4 + '@babel/types': 7.28.4 + '@jridgewell/remapping': 2.3.5 + convert-source-map: 2.0.0 + debug: 4.4.3 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/generator@7.28.3': + dependencies: + '@babel/parser': 7.28.4 + '@babel/types': 7.28.4 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + jsesc: 3.1.0 + + '@babel/helper-compilation-targets@7.27.2': + dependencies: + '@babel/compat-data': 7.28.4 + '@babel/helper-validator-option': 7.27.1 + browserslist: 4.26.3 + lru-cache: 5.1.1 + semver: 6.3.1 + + '@babel/helper-globals@7.28.0': {} + + '@babel/helper-module-imports@7.27.1': + dependencies: + '@babel/traverse': 7.28.4 + '@babel/types': 7.28.4 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-transforms@7.28.3(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-module-imports': 7.27.1 + '@babel/helper-validator-identifier': 7.27.1 + '@babel/traverse': 7.28.4 + transitivePeerDependencies: + - supports-color + + '@babel/helper-plugin-utils@7.27.1': {} + + '@babel/helper-string-parser@7.27.1': {} + + '@babel/helper-validator-identifier@7.27.1': {} + + '@babel/helper-validator-option@7.27.1': {} + + '@babel/helpers@7.28.4': + dependencies: + '@babel/template': 7.27.2 + '@babel/types': 7.28.4 + + '@babel/parser@7.28.4': + dependencies: + '@babel/types': 7.28.4 + + '@babel/plugin-transform-react-jsx-self@7.27.1(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-react-jsx-source@7.27.1(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/runtime@7.28.4': {} + + '@babel/template@7.27.2': + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/parser': 7.28.4 + '@babel/types': 7.28.4 + + '@babel/traverse@7.28.4': + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/generator': 7.28.3 + '@babel/helper-globals': 7.28.0 + '@babel/parser': 7.28.4 + '@babel/template': 7.27.2 + '@babel/types': 7.28.4 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + + '@babel/types@7.28.4': + dependencies: + '@babel/helper-string-parser': 7.27.1 + '@babel/helper-validator-identifier': 7.27.1 + + '@ctrl/tinycolor@3.6.1': {} + + '@emotion/hash@0.9.2': {} + + '@esbuild/aix-ppc64@0.25.10': + optional: true + + '@esbuild/android-arm64@0.25.10': + optional: true + + '@esbuild/android-arm@0.25.10': + optional: true + + '@esbuild/android-x64@0.25.10': + optional: true + + '@esbuild/darwin-arm64@0.25.10': + optional: true + + '@esbuild/darwin-x64@0.25.10': + optional: true + + '@esbuild/freebsd-arm64@0.25.10': + optional: true + + '@esbuild/freebsd-x64@0.25.10': + optional: true + + '@esbuild/linux-arm64@0.25.10': + optional: true + + '@esbuild/linux-arm@0.25.10': + optional: true + + '@esbuild/linux-ia32@0.25.10': + optional: true + + '@esbuild/linux-loong64@0.25.10': + optional: true + + '@esbuild/linux-mips64el@0.25.10': + optional: true + + '@esbuild/linux-ppc64@0.25.10': + optional: true + + '@esbuild/linux-riscv64@0.25.10': + optional: true + + '@esbuild/linux-s390x@0.25.10': + optional: true + + '@esbuild/linux-x64@0.25.10': + optional: true + + '@esbuild/netbsd-arm64@0.25.10': + optional: true + + '@esbuild/netbsd-x64@0.25.10': + optional: true + + '@esbuild/openbsd-arm64@0.25.10': + optional: true + + '@esbuild/openbsd-x64@0.25.10': + optional: true + + '@esbuild/openharmony-arm64@0.25.10': + optional: true + + '@esbuild/sunos-x64@0.25.10': + optional: true + + '@esbuild/win32-arm64@0.25.10': + optional: true + + '@esbuild/win32-ia32@0.25.10': + optional: true + + '@esbuild/win32-x64@0.25.10': + optional: true + + '@eslint-community/eslint-utils@4.9.0(eslint@9.37.0)': + dependencies: + eslint: 9.37.0 + eslint-visitor-keys: 3.4.3 + + '@eslint-community/regexpp@4.12.1': {} + + '@eslint/config-array@0.21.0': + dependencies: + '@eslint/object-schema': 2.1.6 + debug: 4.4.3 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + + '@eslint/config-helpers@0.4.0': + dependencies: + '@eslint/core': 0.16.0 + + '@eslint/core@0.16.0': + dependencies: + '@types/json-schema': 7.0.15 + + '@eslint/eslintrc@3.3.1': + dependencies: + ajv: 6.12.6 + debug: 4.4.3 + espree: 10.4.0 + globals: 14.0.0 + ignore: 5.3.2 + import-fresh: 3.3.1 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + + '@eslint/js@9.37.0': {} + + '@eslint/object-schema@2.1.6': {} + + '@eslint/plugin-kit@0.4.0': + dependencies: + '@eslint/core': 0.16.0 + levn: 0.4.1 + + '@floating-ui/core@1.7.3': + dependencies: + '@floating-ui/utils': 0.2.10 + + '@floating-ui/devtools@0.2.3(@floating-ui/dom@1.7.4)': + dependencies: + '@floating-ui/dom': 1.7.4 + + '@floating-ui/dom@1.7.4': + dependencies: + '@floating-ui/core': 1.7.3 + '@floating-ui/utils': 0.2.10 + + '@floating-ui/utils@0.2.10': {} + + '@fluentui/date-time-utilities@8.6.10': + dependencies: + '@fluentui/set-version': 8.2.24 + tslib: 2.8.1 + + '@fluentui/dom-utilities@2.3.10': + dependencies: + '@fluentui/set-version': 8.2.24 + tslib: 2.8.1 + + '@fluentui/font-icons-mdl2@8.5.64(@types/react@19.2.2)(react@19.2.0)': + dependencies: + '@fluentui/set-version': 8.2.24 + '@fluentui/style-utilities': 8.13.0(@types/react@19.2.2)(react@19.2.0) + '@fluentui/utilities': 8.16.0(@types/react@19.2.2)(react@19.2.0) + tslib: 2.8.1 + transitivePeerDependencies: + - '@types/react' + - react + + '@fluentui/foundation-legacy@8.5.0(@types/react@19.2.2)(react@19.2.0)': + dependencies: + '@fluentui/merge-styles': 8.6.14 + '@fluentui/set-version': 8.2.24 + '@fluentui/style-utilities': 8.13.0(@types/react@19.2.2)(react@19.2.0) + '@fluentui/utilities': 8.16.0(@types/react@19.2.2)(react@19.2.0) + '@types/react': 19.2.2 + react: 19.2.0 + tslib: 2.8.1 + + '@fluentui/keyboard-key@0.4.23': + dependencies: + tslib: 2.8.1 + + '@fluentui/keyboard-keys@9.0.8': + dependencies: + '@swc/helpers': 0.5.17 + + '@fluentui/merge-styles@8.6.14': + dependencies: + '@fluentui/set-version': 8.2.24 + tslib: 2.8.1 + + '@fluentui/priority-overflow@9.2.0': + dependencies: + '@swc/helpers': 0.5.17 + + '@fluentui/react-accordion@9.8.8(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0)': + dependencies: + '@fluentui/react-aria': 9.17.1(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-context-selector': 9.2.8(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0) + '@fluentui/react-icons': 2.0.311(react@19.2.0) + '@fluentui/react-jsx-runtime': 9.2.1(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-motion': 9.11.0(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-motion-components-preview': 0.11.0(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-shared-contexts': 9.25.2(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-tabster': 9.26.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-theme': 9.2.0 + '@fluentui/react-utilities': 9.25.0(@types/react@19.2.2)(react@19.2.0) + '@griffel/react': 1.5.30(react@19.2.0) + '@swc/helpers': 0.5.17 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.1(@types/react@19.2.2) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + transitivePeerDependencies: + - scheduler + + '@fluentui/react-alert@9.0.0-beta.124(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0)': + dependencies: + '@fluentui/react-avatar': 9.9.7(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0) + '@fluentui/react-button': 9.6.7(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-icons': 2.0.311(react@19.2.0) + '@fluentui/react-jsx-runtime': 9.2.1(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-tabster': 9.26.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-theme': 9.2.0 + '@fluentui/react-utilities': 9.25.0(@types/react@19.2.2)(react@19.2.0) + '@griffel/react': 1.5.30(react@19.2.0) + '@swc/helpers': 0.5.17 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.1(@types/react@19.2.2) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + transitivePeerDependencies: + - scheduler + + '@fluentui/react-aria@9.17.1(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + dependencies: + '@fluentui/keyboard-keys': 9.0.8 + '@fluentui/react-jsx-runtime': 9.2.1(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-shared-contexts': 9.25.2(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-tabster': 9.26.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-utilities': 9.25.0(@types/react@19.2.2)(react@19.2.0) + '@swc/helpers': 0.5.17 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.1(@types/react@19.2.2) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + + '@fluentui/react-avatar@9.9.7(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0)': + dependencies: + '@fluentui/react-badge': 9.4.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-context-selector': 9.2.8(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0) + '@fluentui/react-icons': 2.0.311(react@19.2.0) + '@fluentui/react-jsx-runtime': 9.2.1(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-popover': 9.12.7(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0) + '@fluentui/react-shared-contexts': 9.25.2(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-tabster': 9.26.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-theme': 9.2.0 + '@fluentui/react-tooltip': 9.8.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-utilities': 9.25.0(@types/react@19.2.2)(react@19.2.0) + '@griffel/react': 1.5.30(react@19.2.0) + '@swc/helpers': 0.5.17 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.1(@types/react@19.2.2) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + transitivePeerDependencies: + - scheduler + + '@fluentui/react-badge@9.4.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + dependencies: + '@fluentui/react-icons': 2.0.311(react@19.2.0) + '@fluentui/react-jsx-runtime': 9.2.1(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-shared-contexts': 9.25.2(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-theme': 9.2.0 + '@fluentui/react-utilities': 9.25.0(@types/react@19.2.2)(react@19.2.0) + '@griffel/react': 1.5.30(react@19.2.0) + '@swc/helpers': 0.5.17 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.1(@types/react@19.2.2) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + + '@fluentui/react-breadcrumb@9.3.7(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + dependencies: + '@fluentui/react-aria': 9.17.1(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-button': 9.6.7(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-icons': 2.0.311(react@19.2.0) + '@fluentui/react-jsx-runtime': 9.2.1(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-link': 9.6.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-shared-contexts': 9.25.2(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-tabster': 9.26.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-theme': 9.2.0 + '@fluentui/react-utilities': 9.25.0(@types/react@19.2.2)(react@19.2.0) + '@griffel/react': 1.5.30(react@19.2.0) + '@swc/helpers': 0.5.17 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.1(@types/react@19.2.2) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + + '@fluentui/react-button@9.6.7(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + dependencies: + '@fluentui/keyboard-keys': 9.0.8 + '@fluentui/react-aria': 9.17.1(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-icons': 2.0.311(react@19.2.0) + '@fluentui/react-jsx-runtime': 9.2.1(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-shared-contexts': 9.25.2(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-tabster': 9.26.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-theme': 9.2.0 + '@fluentui/react-utilities': 9.25.0(@types/react@19.2.2)(react@19.2.0) + '@griffel/react': 1.5.30(react@19.2.0) + '@swc/helpers': 0.5.17 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.1(@types/react@19.2.2) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + + '@fluentui/react-card@9.5.1(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + dependencies: + '@fluentui/keyboard-keys': 9.0.8 + '@fluentui/react-jsx-runtime': 9.2.1(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-shared-contexts': 9.25.2(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-tabster': 9.26.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-text': 9.6.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-theme': 9.2.0 + '@fluentui/react-utilities': 9.25.0(@types/react@19.2.2)(react@19.2.0) + '@griffel/react': 1.5.30(react@19.2.0) + '@swc/helpers': 0.5.17 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.1(@types/react@19.2.2) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + + '@fluentui/react-carousel@9.8.7(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0)': + dependencies: + '@fluentui/react-aria': 9.17.1(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-button': 9.6.7(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-context-selector': 9.2.8(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0) + '@fluentui/react-icons': 2.0.311(react@19.2.0) + '@fluentui/react-jsx-runtime': 9.2.1(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-shared-contexts': 9.25.2(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-tabster': 9.26.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-theme': 9.2.0 + '@fluentui/react-tooltip': 9.8.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-utilities': 9.25.0(@types/react@19.2.2)(react@19.2.0) + '@griffel/react': 1.5.30(react@19.2.0) + '@swc/helpers': 0.5.17 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.1(@types/react@19.2.2) + embla-carousel: 8.6.0 + embla-carousel-autoplay: 8.6.0(embla-carousel@8.6.0) + embla-carousel-fade: 8.6.0(embla-carousel@8.6.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + transitivePeerDependencies: + - scheduler + + '@fluentui/react-checkbox@9.5.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0)': + dependencies: + '@fluentui/react-field': 9.4.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0) + '@fluentui/react-icons': 2.0.311(react@19.2.0) + '@fluentui/react-jsx-runtime': 9.2.1(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-label': 9.3.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-shared-contexts': 9.25.2(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-tabster': 9.26.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-theme': 9.2.0 + '@fluentui/react-utilities': 9.25.0(@types/react@19.2.2)(react@19.2.0) + '@griffel/react': 1.5.30(react@19.2.0) + '@swc/helpers': 0.5.17 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.1(@types/react@19.2.2) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + transitivePeerDependencies: + - scheduler + + '@fluentui/react-color-picker@9.2.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0)': + dependencies: + '@ctrl/tinycolor': 3.6.1 + '@fluentui/react-context-selector': 9.2.8(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0) + '@fluentui/react-jsx-runtime': 9.2.1(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-shared-contexts': 9.25.2(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-tabster': 9.26.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-theme': 9.2.0 + '@fluentui/react-utilities': 9.25.0(@types/react@19.2.2)(react@19.2.0) + '@griffel/react': 1.5.30(react@19.2.0) + '@swc/helpers': 0.5.17 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.1(@types/react@19.2.2) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + transitivePeerDependencies: + - scheduler + + '@fluentui/react-combobox@9.16.7(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0)': + dependencies: + '@fluentui/keyboard-keys': 9.0.8 + '@fluentui/react-aria': 9.17.1(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-context-selector': 9.2.8(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0) + '@fluentui/react-field': 9.4.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0) + '@fluentui/react-icons': 2.0.311(react@19.2.0) + '@fluentui/react-jsx-runtime': 9.2.1(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-portal': 9.8.3(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-positioning': 9.20.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-shared-contexts': 9.25.2(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-tabster': 9.26.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-theme': 9.2.0 + '@fluentui/react-utilities': 9.25.0(@types/react@19.2.2)(react@19.2.0) + '@griffel/react': 1.5.30(react@19.2.0) + '@swc/helpers': 0.5.17 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.1(@types/react@19.2.2) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + transitivePeerDependencies: + - scheduler + + '@fluentui/react-components@9.72.1(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0)': + dependencies: + '@fluentui/react-accordion': 9.8.8(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0) + '@fluentui/react-alert': 9.0.0-beta.124(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0) + '@fluentui/react-aria': 9.17.1(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-avatar': 9.9.7(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0) + '@fluentui/react-badge': 9.4.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-breadcrumb': 9.3.7(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-button': 9.6.7(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-card': 9.5.1(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-carousel': 9.8.7(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0) + '@fluentui/react-checkbox': 9.5.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0) + '@fluentui/react-color-picker': 9.2.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0) + '@fluentui/react-combobox': 9.16.7(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0) + '@fluentui/react-dialog': 9.15.3(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0) + '@fluentui/react-divider': 9.4.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-drawer': 9.10.3(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0) + '@fluentui/react-field': 9.4.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0) + '@fluentui/react-image': 9.3.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-infobutton': 9.0.0-beta.102(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0) + '@fluentui/react-infolabel': 9.4.7(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0) + '@fluentui/react-input': 9.7.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0) + '@fluentui/react-label': 9.3.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-link': 9.6.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-list': 9.6.1(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0) + '@fluentui/react-menu': 9.20.0(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0) + '@fluentui/react-message-bar': 9.6.8(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-motion': 9.11.0(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-nav': 9.3.8(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0) + '@fluentui/react-overflow': 9.6.0(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0) + '@fluentui/react-persona': 9.5.7(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0) + '@fluentui/react-popover': 9.12.7(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0) + '@fluentui/react-portal': 9.8.3(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-positioning': 9.20.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-progress': 9.4.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0) + '@fluentui/react-provider': 9.22.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-radio': 9.5.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0) + '@fluentui/react-rating': 9.3.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-search': 9.3.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0) + '@fluentui/react-select': 9.4.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0) + '@fluentui/react-shared-contexts': 9.25.2(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-skeleton': 9.4.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0) + '@fluentui/react-slider': 9.5.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0) + '@fluentui/react-spinbutton': 9.5.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0) + '@fluentui/react-spinner': 9.7.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-swatch-picker': 9.4.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0) + '@fluentui/react-switch': 9.4.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0) + '@fluentui/react-table': 9.19.0(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0) + '@fluentui/react-tabs': 9.10.2(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0) + '@fluentui/react-tabster': 9.26.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-tag-picker': 9.7.7(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0) + '@fluentui/react-tags': 9.7.7(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0) + '@fluentui/react-teaching-popover': 9.6.7(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0) + '@fluentui/react-text': 9.6.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-textarea': 9.6.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0) + '@fluentui/react-theme': 9.2.0 + '@fluentui/react-toast': 9.7.3(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-toolbar': 9.6.7(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0) + '@fluentui/react-tooltip': 9.8.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-tree': 9.15.0(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0) + '@fluentui/react-utilities': 9.25.0(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-virtualizer': 9.0.0-alpha.102(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@griffel/react': 1.5.30(react@19.2.0) + '@swc/helpers': 0.5.17 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.1(@types/react@19.2.2) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + transitivePeerDependencies: + - scheduler + + '@fluentui/react-context-selector@9.2.8(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0)': + dependencies: + '@fluentui/react-utilities': 9.25.0(@types/react@19.2.2)(react@19.2.0) + '@swc/helpers': 0.5.17 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.1(@types/react@19.2.2) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + scheduler: 0.27.0 + + '@fluentui/react-dialog@9.15.3(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0)': + dependencies: + '@fluentui/keyboard-keys': 9.0.8 + '@fluentui/react-aria': 9.17.1(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-context-selector': 9.2.8(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0) + '@fluentui/react-icons': 2.0.311(react@19.2.0) + '@fluentui/react-jsx-runtime': 9.2.1(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-motion': 9.11.0(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-motion-components-preview': 0.11.0(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-portal': 9.8.3(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-shared-contexts': 9.25.2(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-tabster': 9.26.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-theme': 9.2.0 + '@fluentui/react-utilities': 9.25.0(@types/react@19.2.2)(react@19.2.0) + '@griffel/react': 1.5.30(react@19.2.0) + '@swc/helpers': 0.5.17 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.1(@types/react@19.2.2) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + transitivePeerDependencies: + - scheduler + + '@fluentui/react-divider@9.4.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + dependencies: + '@fluentui/react-jsx-runtime': 9.2.1(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-shared-contexts': 9.25.2(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-theme': 9.2.0 + '@fluentui/react-utilities': 9.25.0(@types/react@19.2.2)(react@19.2.0) + '@griffel/react': 1.5.30(react@19.2.0) + '@swc/helpers': 0.5.17 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.1(@types/react@19.2.2) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + + '@fluentui/react-drawer@9.10.3(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0)': + dependencies: + '@fluentui/react-dialog': 9.15.3(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0) + '@fluentui/react-jsx-runtime': 9.2.1(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-motion': 9.11.0(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-portal': 9.8.3(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-shared-contexts': 9.25.2(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-tabster': 9.26.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-theme': 9.2.0 + '@fluentui/react-utilities': 9.25.0(@types/react@19.2.2)(react@19.2.0) + '@griffel/react': 1.5.30(react@19.2.0) + '@swc/helpers': 0.5.17 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.1(@types/react@19.2.2) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + transitivePeerDependencies: + - scheduler + + '@fluentui/react-field@9.4.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0)': + dependencies: + '@fluentui/react-context-selector': 9.2.8(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0) + '@fluentui/react-icons': 2.0.311(react@19.2.0) + '@fluentui/react-jsx-runtime': 9.2.1(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-label': 9.3.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-shared-contexts': 9.25.2(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-theme': 9.2.0 + '@fluentui/react-utilities': 9.25.0(@types/react@19.2.2)(react@19.2.0) + '@griffel/react': 1.5.30(react@19.2.0) + '@swc/helpers': 0.5.17 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.1(@types/react@19.2.2) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + transitivePeerDependencies: + - scheduler + + '@fluentui/react-focus@8.9.27(@types/react@19.2.2)(react@19.2.0)': + dependencies: + '@fluentui/keyboard-key': 0.4.23 + '@fluentui/merge-styles': 8.6.14 + '@fluentui/set-version': 8.2.24 + '@fluentui/style-utilities': 8.13.0(@types/react@19.2.2)(react@19.2.0) + '@fluentui/utilities': 8.16.0(@types/react@19.2.2)(react@19.2.0) + '@types/react': 19.2.2 + react: 19.2.0 + tslib: 2.8.1 + + '@fluentui/react-hooks@8.9.0(@types/react@19.2.2)(react@19.2.0)': + dependencies: + '@fluentui/react-window-provider': 2.2.30(@types/react@19.2.2)(react@19.2.0) + '@fluentui/set-version': 8.2.24 + '@fluentui/utilities': 8.16.0(@types/react@19.2.2)(react@19.2.0) + '@types/react': 19.2.2 + react: 19.2.0 + tslib: 2.8.1 + + '@fluentui/react-icons@2.0.311(react@19.2.0)': + dependencies: + '@griffel/react': 1.5.30(react@19.2.0) + react: 19.2.0 + tslib: 2.8.1 + + '@fluentui/react-image@9.3.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + dependencies: + '@fluentui/react-jsx-runtime': 9.2.1(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-shared-contexts': 9.25.2(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-theme': 9.2.0 + '@fluentui/react-utilities': 9.25.0(@types/react@19.2.2)(react@19.2.0) + '@griffel/react': 1.5.30(react@19.2.0) + '@swc/helpers': 0.5.17 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.1(@types/react@19.2.2) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + + '@fluentui/react-infobutton@9.0.0-beta.102(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0)': + dependencies: + '@fluentui/react-icons': 2.0.311(react@19.2.0) + '@fluentui/react-jsx-runtime': 9.2.1(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-label': 9.3.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-popover': 9.12.7(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0) + '@fluentui/react-tabster': 9.26.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-theme': 9.2.0 + '@fluentui/react-utilities': 9.25.0(@types/react@19.2.2)(react@19.2.0) + '@griffel/react': 1.5.30(react@19.2.0) + '@swc/helpers': 0.5.17 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.1(@types/react@19.2.2) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + transitivePeerDependencies: + - scheduler + + '@fluentui/react-infolabel@9.4.7(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0)': + dependencies: + '@fluentui/react-icons': 2.0.311(react@19.2.0) + '@fluentui/react-jsx-runtime': 9.2.1(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-label': 9.3.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-popover': 9.12.7(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0) + '@fluentui/react-shared-contexts': 9.25.2(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-tabster': 9.26.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-theme': 9.2.0 + '@fluentui/react-utilities': 9.25.0(@types/react@19.2.2)(react@19.2.0) + '@griffel/react': 1.5.30(react@19.2.0) + '@swc/helpers': 0.5.17 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.1(@types/react@19.2.2) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + transitivePeerDependencies: + - scheduler + + '@fluentui/react-input@9.7.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0)': + dependencies: + '@fluentui/react-field': 9.4.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0) + '@fluentui/react-jsx-runtime': 9.2.1(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-shared-contexts': 9.25.2(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-theme': 9.2.0 + '@fluentui/react-utilities': 9.25.0(@types/react@19.2.2)(react@19.2.0) + '@griffel/react': 1.5.30(react@19.2.0) + '@swc/helpers': 0.5.17 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.1(@types/react@19.2.2) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + transitivePeerDependencies: + - scheduler + + '@fluentui/react-jsx-runtime@9.2.1(@types/react@19.2.2)(react@19.2.0)': + dependencies: + '@fluentui/react-utilities': 9.25.0(@types/react@19.2.2)(react@19.2.0) + '@swc/helpers': 0.5.17 + '@types/react': 19.2.2 + react: 19.2.0 + react-is: 17.0.2 + + '@fluentui/react-label@9.3.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + dependencies: + '@fluentui/react-jsx-runtime': 9.2.1(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-shared-contexts': 9.25.2(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-theme': 9.2.0 + '@fluentui/react-utilities': 9.25.0(@types/react@19.2.2)(react@19.2.0) + '@griffel/react': 1.5.30(react@19.2.0) + '@swc/helpers': 0.5.17 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.1(@types/react@19.2.2) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + + '@fluentui/react-link@9.6.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + dependencies: + '@fluentui/keyboard-keys': 9.0.8 + '@fluentui/react-jsx-runtime': 9.2.1(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-shared-contexts': 9.25.2(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-tabster': 9.26.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-theme': 9.2.0 + '@fluentui/react-utilities': 9.25.0(@types/react@19.2.2)(react@19.2.0) + '@griffel/react': 1.5.30(react@19.2.0) + '@swc/helpers': 0.5.17 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.1(@types/react@19.2.2) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + + '@fluentui/react-list@9.6.1(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0)': + dependencies: + '@fluentui/keyboard-keys': 9.0.8 + '@fluentui/react-checkbox': 9.5.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0) + '@fluentui/react-context-selector': 9.2.8(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0) + '@fluentui/react-jsx-runtime': 9.2.1(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-shared-contexts': 9.25.2(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-tabster': 9.26.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-theme': 9.2.0 + '@fluentui/react-utilities': 9.25.0(@types/react@19.2.2)(react@19.2.0) + '@griffel/react': 1.5.30(react@19.2.0) + '@swc/helpers': 0.5.17 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.1(@types/react@19.2.2) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + transitivePeerDependencies: + - scheduler + + '@fluentui/react-menu@9.20.0(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0)': + dependencies: + '@fluentui/keyboard-keys': 9.0.8 + '@fluentui/react-aria': 9.17.1(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-context-selector': 9.2.8(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0) + '@fluentui/react-icons': 2.0.311(react@19.2.0) + '@fluentui/react-jsx-runtime': 9.2.1(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-portal': 9.8.3(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-positioning': 9.20.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-shared-contexts': 9.25.2(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-tabster': 9.26.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-theme': 9.2.0 + '@fluentui/react-utilities': 9.25.0(@types/react@19.2.2)(react@19.2.0) + '@griffel/react': 1.5.30(react@19.2.0) + '@swc/helpers': 0.5.17 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.1(@types/react@19.2.2) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + transitivePeerDependencies: + - scheduler + + '@fluentui/react-message-bar@9.6.8(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + dependencies: + '@fluentui/react-button': 9.6.7(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-icons': 2.0.311(react@19.2.0) + '@fluentui/react-jsx-runtime': 9.2.1(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-link': 9.6.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-motion': 9.11.0(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-motion-components-preview': 0.11.0(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-shared-contexts': 9.25.2(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-theme': 9.2.0 + '@fluentui/react-utilities': 9.25.0(@types/react@19.2.2)(react@19.2.0) + '@griffel/react': 1.5.30(react@19.2.0) + '@swc/helpers': 0.5.17 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.1(@types/react@19.2.2) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + + '@fluentui/react-motion-components-preview@0.11.0(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + dependencies: + '@fluentui/react-motion': 9.11.0(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@swc/helpers': 0.5.17 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.1(@types/react@19.2.2) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + + '@fluentui/react-motion@9.11.0(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + dependencies: + '@fluentui/react-shared-contexts': 9.25.2(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-utilities': 9.25.0(@types/react@19.2.2)(react@19.2.0) + '@swc/helpers': 0.5.17 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.1(@types/react@19.2.2) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + + '@fluentui/react-nav@9.3.8(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0)': + dependencies: + '@fluentui/react-aria': 9.17.1(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-button': 9.6.7(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-context-selector': 9.2.8(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0) + '@fluentui/react-divider': 9.4.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-drawer': 9.10.3(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0) + '@fluentui/react-icons': 2.0.311(react@19.2.0) + '@fluentui/react-jsx-runtime': 9.2.1(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-motion': 9.11.0(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-shared-contexts': 9.25.2(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-tabster': 9.26.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-theme': 9.2.0 + '@fluentui/react-tooltip': 9.8.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-utilities': 9.25.0(@types/react@19.2.2)(react@19.2.0) + '@griffel/react': 1.5.30(react@19.2.0) + '@swc/helpers': 0.5.17 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.1(@types/react@19.2.2) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + transitivePeerDependencies: + - scheduler + + '@fluentui/react-overflow@9.6.0(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0)': + dependencies: + '@fluentui/priority-overflow': 9.2.0 + '@fluentui/react-context-selector': 9.2.8(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0) + '@fluentui/react-theme': 9.2.0 + '@fluentui/react-utilities': 9.25.0(@types/react@19.2.2)(react@19.2.0) + '@griffel/react': 1.5.30(react@19.2.0) + '@swc/helpers': 0.5.17 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.1(@types/react@19.2.2) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + transitivePeerDependencies: + - scheduler + + '@fluentui/react-persona@9.5.7(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0)': + dependencies: + '@fluentui/react-avatar': 9.9.7(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0) + '@fluentui/react-badge': 9.4.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-jsx-runtime': 9.2.1(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-shared-contexts': 9.25.2(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-theme': 9.2.0 + '@fluentui/react-utilities': 9.25.0(@types/react@19.2.2)(react@19.2.0) + '@griffel/react': 1.5.30(react@19.2.0) + '@swc/helpers': 0.5.17 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.1(@types/react@19.2.2) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + transitivePeerDependencies: + - scheduler + + '@fluentui/react-popover@9.12.7(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0)': + dependencies: + '@fluentui/keyboard-keys': 9.0.8 + '@fluentui/react-aria': 9.17.1(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-context-selector': 9.2.8(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0) + '@fluentui/react-jsx-runtime': 9.2.1(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-portal': 9.8.3(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-positioning': 9.20.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-shared-contexts': 9.25.2(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-tabster': 9.26.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-theme': 9.2.0 + '@fluentui/react-utilities': 9.25.0(@types/react@19.2.2)(react@19.2.0) + '@griffel/react': 1.5.30(react@19.2.0) + '@swc/helpers': 0.5.17 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.1(@types/react@19.2.2) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + transitivePeerDependencies: + - scheduler + + '@fluentui/react-portal-compat-context@9.0.15(@types/react@19.2.2)(react@19.2.0)': + dependencies: + '@swc/helpers': 0.5.17 + '@types/react': 19.2.2 + react: 19.2.0 + + '@fluentui/react-portal@9.8.3(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + dependencies: + '@fluentui/react-shared-contexts': 9.25.2(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-tabster': 9.26.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-utilities': 9.25.0(@types/react@19.2.2)(react@19.2.0) + '@griffel/react': 1.5.30(react@19.2.0) + '@swc/helpers': 0.5.17 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.1(@types/react@19.2.2) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + + '@fluentui/react-positioning@9.20.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + dependencies: + '@floating-ui/devtools': 0.2.3(@floating-ui/dom@1.7.4) + '@floating-ui/dom': 1.7.4 + '@fluentui/react-shared-contexts': 9.25.2(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-theme': 9.2.0 + '@fluentui/react-utilities': 9.25.0(@types/react@19.2.2)(react@19.2.0) + '@griffel/react': 1.5.30(react@19.2.0) + '@swc/helpers': 0.5.17 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.1(@types/react@19.2.2) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + use-sync-external-store: 1.6.0(react@19.2.0) + + '@fluentui/react-progress@9.4.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0)': + dependencies: + '@fluentui/react-field': 9.4.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0) + '@fluentui/react-jsx-runtime': 9.2.1(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-shared-contexts': 9.25.2(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-theme': 9.2.0 + '@fluentui/react-utilities': 9.25.0(@types/react@19.2.2)(react@19.2.0) + '@griffel/react': 1.5.30(react@19.2.0) + '@swc/helpers': 0.5.17 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.1(@types/react@19.2.2) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + transitivePeerDependencies: + - scheduler + + '@fluentui/react-provider@9.22.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + dependencies: + '@fluentui/react-icons': 2.0.311(react@19.2.0) + '@fluentui/react-jsx-runtime': 9.2.1(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-shared-contexts': 9.25.2(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-tabster': 9.26.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-theme': 9.2.0 + '@fluentui/react-utilities': 9.25.0(@types/react@19.2.2)(react@19.2.0) + '@griffel/core': 1.19.2 + '@griffel/react': 1.5.30(react@19.2.0) + '@swc/helpers': 0.5.17 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.1(@types/react@19.2.2) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + + '@fluentui/react-radio@9.5.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0)': + dependencies: + '@fluentui/react-field': 9.4.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0) + '@fluentui/react-jsx-runtime': 9.2.1(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-label': 9.3.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-shared-contexts': 9.25.2(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-tabster': 9.26.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-theme': 9.2.0 + '@fluentui/react-utilities': 9.25.0(@types/react@19.2.2)(react@19.2.0) + '@griffel/react': 1.5.30(react@19.2.0) + '@swc/helpers': 0.5.17 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.1(@types/react@19.2.2) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + transitivePeerDependencies: + - scheduler + + '@fluentui/react-rating@9.3.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + dependencies: + '@fluentui/react-icons': 2.0.311(react@19.2.0) + '@fluentui/react-jsx-runtime': 9.2.1(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-shared-contexts': 9.25.2(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-tabster': 9.26.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-theme': 9.2.0 + '@fluentui/react-utilities': 9.25.0(@types/react@19.2.2)(react@19.2.0) + '@griffel/react': 1.5.30(react@19.2.0) + '@swc/helpers': 0.5.17 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.1(@types/react@19.2.2) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + + '@fluentui/react-search@9.3.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0)': + dependencies: + '@fluentui/react-icons': 2.0.311(react@19.2.0) + '@fluentui/react-input': 9.7.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0) + '@fluentui/react-jsx-runtime': 9.2.1(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-shared-contexts': 9.25.2(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-theme': 9.2.0 + '@fluentui/react-utilities': 9.25.0(@types/react@19.2.2)(react@19.2.0) + '@griffel/react': 1.5.30(react@19.2.0) + '@swc/helpers': 0.5.17 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.1(@types/react@19.2.2) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + transitivePeerDependencies: + - scheduler + + '@fluentui/react-select@9.4.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0)': + dependencies: + '@fluentui/react-field': 9.4.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0) + '@fluentui/react-icons': 2.0.311(react@19.2.0) + '@fluentui/react-jsx-runtime': 9.2.1(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-shared-contexts': 9.25.2(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-theme': 9.2.0 + '@fluentui/react-utilities': 9.25.0(@types/react@19.2.2)(react@19.2.0) + '@griffel/react': 1.5.30(react@19.2.0) + '@swc/helpers': 0.5.17 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.1(@types/react@19.2.2) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + transitivePeerDependencies: + - scheduler + + '@fluentui/react-shared-contexts@9.25.2(@types/react@19.2.2)(react@19.2.0)': + dependencies: + '@fluentui/react-theme': 9.2.0 + '@swc/helpers': 0.5.17 + '@types/react': 19.2.2 + react: 19.2.0 + + '@fluentui/react-skeleton@9.4.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0)': + dependencies: + '@fluentui/react-field': 9.4.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0) + '@fluentui/react-jsx-runtime': 9.2.1(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-shared-contexts': 9.25.2(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-theme': 9.2.0 + '@fluentui/react-utilities': 9.25.0(@types/react@19.2.2)(react@19.2.0) + '@griffel/react': 1.5.30(react@19.2.0) + '@swc/helpers': 0.5.17 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.1(@types/react@19.2.2) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + transitivePeerDependencies: + - scheduler + + '@fluentui/react-slider@9.5.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0)': + dependencies: + '@fluentui/react-field': 9.4.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0) + '@fluentui/react-jsx-runtime': 9.2.1(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-shared-contexts': 9.25.2(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-tabster': 9.26.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-theme': 9.2.0 + '@fluentui/react-utilities': 9.25.0(@types/react@19.2.2)(react@19.2.0) + '@griffel/react': 1.5.30(react@19.2.0) + '@swc/helpers': 0.5.17 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.1(@types/react@19.2.2) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + transitivePeerDependencies: + - scheduler + + '@fluentui/react-spinbutton@9.5.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0)': + dependencies: + '@fluentui/keyboard-keys': 9.0.8 + '@fluentui/react-field': 9.4.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0) + '@fluentui/react-icons': 2.0.311(react@19.2.0) + '@fluentui/react-jsx-runtime': 9.2.1(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-shared-contexts': 9.25.2(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-theme': 9.2.0 + '@fluentui/react-utilities': 9.25.0(@types/react@19.2.2)(react@19.2.0) + '@griffel/react': 1.5.30(react@19.2.0) + '@swc/helpers': 0.5.17 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.1(@types/react@19.2.2) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + transitivePeerDependencies: + - scheduler + + '@fluentui/react-spinner@9.7.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + dependencies: + '@fluentui/react-jsx-runtime': 9.2.1(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-label': 9.3.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-shared-contexts': 9.25.2(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-theme': 9.2.0 + '@fluentui/react-utilities': 9.25.0(@types/react@19.2.2)(react@19.2.0) + '@griffel/react': 1.5.30(react@19.2.0) + '@swc/helpers': 0.5.17 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.1(@types/react@19.2.2) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + + '@fluentui/react-swatch-picker@9.4.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0)': + dependencies: + '@fluentui/react-context-selector': 9.2.8(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0) + '@fluentui/react-field': 9.4.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0) + '@fluentui/react-icons': 2.0.311(react@19.2.0) + '@fluentui/react-jsx-runtime': 9.2.1(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-shared-contexts': 9.25.2(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-tabster': 9.26.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-theme': 9.2.0 + '@fluentui/react-utilities': 9.25.0(@types/react@19.2.2)(react@19.2.0) + '@griffel/react': 1.5.30(react@19.2.0) + '@swc/helpers': 0.5.17 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.1(@types/react@19.2.2) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + transitivePeerDependencies: + - scheduler + + '@fluentui/react-switch@9.4.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0)': + dependencies: + '@fluentui/react-field': 9.4.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0) + '@fluentui/react-icons': 2.0.311(react@19.2.0) + '@fluentui/react-jsx-runtime': 9.2.1(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-label': 9.3.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-shared-contexts': 9.25.2(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-tabster': 9.26.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-theme': 9.2.0 + '@fluentui/react-utilities': 9.25.0(@types/react@19.2.2)(react@19.2.0) + '@griffel/react': 1.5.30(react@19.2.0) + '@swc/helpers': 0.5.17 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.1(@types/react@19.2.2) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + transitivePeerDependencies: + - scheduler + + '@fluentui/react-table@9.19.0(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0)': + dependencies: + '@fluentui/keyboard-keys': 9.0.8 + '@fluentui/react-aria': 9.17.1(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-avatar': 9.9.7(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0) + '@fluentui/react-checkbox': 9.5.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0) + '@fluentui/react-context-selector': 9.2.8(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0) + '@fluentui/react-icons': 2.0.311(react@19.2.0) + '@fluentui/react-jsx-runtime': 9.2.1(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-radio': 9.5.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0) + '@fluentui/react-shared-contexts': 9.25.2(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-tabster': 9.26.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-theme': 9.2.0 + '@fluentui/react-utilities': 9.25.0(@types/react@19.2.2)(react@19.2.0) + '@griffel/react': 1.5.30(react@19.2.0) + '@swc/helpers': 0.5.17 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.1(@types/react@19.2.2) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + transitivePeerDependencies: + - scheduler + + '@fluentui/react-tabs@9.10.2(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0)': + dependencies: + '@fluentui/react-context-selector': 9.2.8(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0) + '@fluentui/react-jsx-runtime': 9.2.1(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-shared-contexts': 9.25.2(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-tabster': 9.26.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-theme': 9.2.0 + '@fluentui/react-utilities': 9.25.0(@types/react@19.2.2)(react@19.2.0) + '@griffel/react': 1.5.30(react@19.2.0) + '@swc/helpers': 0.5.17 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.1(@types/react@19.2.2) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + transitivePeerDependencies: + - scheduler + + '@fluentui/react-tabster@9.26.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + dependencies: + '@fluentui/react-shared-contexts': 9.25.2(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-theme': 9.2.0 + '@fluentui/react-utilities': 9.25.0(@types/react@19.2.2)(react@19.2.0) + '@griffel/react': 1.5.30(react@19.2.0) + '@swc/helpers': 0.5.17 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.1(@types/react@19.2.2) + keyborg: 2.6.0 + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + tabster: 8.5.6 + + '@fluentui/react-tag-picker@9.7.7(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0)': + dependencies: + '@fluentui/keyboard-keys': 9.0.8 + '@fluentui/react-aria': 9.17.1(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-combobox': 9.16.7(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0) + '@fluentui/react-context-selector': 9.2.8(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0) + '@fluentui/react-field': 9.4.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0) + '@fluentui/react-icons': 2.0.311(react@19.2.0) + '@fluentui/react-jsx-runtime': 9.2.1(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-portal': 9.8.3(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-positioning': 9.20.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-shared-contexts': 9.25.2(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-tabster': 9.26.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-tags': 9.7.7(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0) + '@fluentui/react-theme': 9.2.0 + '@fluentui/react-utilities': 9.25.0(@types/react@19.2.2)(react@19.2.0) + '@griffel/react': 1.5.30(react@19.2.0) + '@swc/helpers': 0.5.17 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.1(@types/react@19.2.2) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + transitivePeerDependencies: + - scheduler + + '@fluentui/react-tags@9.7.7(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0)': + dependencies: + '@fluentui/keyboard-keys': 9.0.8 + '@fluentui/react-aria': 9.17.1(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-avatar': 9.9.7(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0) + '@fluentui/react-icons': 2.0.311(react@19.2.0) + '@fluentui/react-jsx-runtime': 9.2.1(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-shared-contexts': 9.25.2(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-tabster': 9.26.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-theme': 9.2.0 + '@fluentui/react-utilities': 9.25.0(@types/react@19.2.2)(react@19.2.0) + '@griffel/react': 1.5.30(react@19.2.0) + '@swc/helpers': 0.5.17 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.1(@types/react@19.2.2) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + transitivePeerDependencies: + - scheduler + + '@fluentui/react-teaching-popover@9.6.7(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0)': + dependencies: + '@fluentui/react-aria': 9.17.1(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-button': 9.6.7(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-context-selector': 9.2.8(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0) + '@fluentui/react-icons': 2.0.311(react@19.2.0) + '@fluentui/react-jsx-runtime': 9.2.1(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-popover': 9.12.7(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0) + '@fluentui/react-shared-contexts': 9.25.2(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-tabster': 9.26.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-theme': 9.2.0 + '@fluentui/react-utilities': 9.25.0(@types/react@19.2.2)(react@19.2.0) + '@griffel/react': 1.5.30(react@19.2.0) + '@swc/helpers': 0.5.17 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.1(@types/react@19.2.2) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + use-sync-external-store: 1.6.0(react@19.2.0) + transitivePeerDependencies: + - scheduler + + '@fluentui/react-text@9.6.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + dependencies: + '@fluentui/react-jsx-runtime': 9.2.1(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-shared-contexts': 9.25.2(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-theme': 9.2.0 + '@fluentui/react-utilities': 9.25.0(@types/react@19.2.2)(react@19.2.0) + '@griffel/react': 1.5.30(react@19.2.0) + '@swc/helpers': 0.5.17 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.1(@types/react@19.2.2) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + + '@fluentui/react-textarea@9.6.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0)': + dependencies: + '@fluentui/react-field': 9.4.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0) + '@fluentui/react-jsx-runtime': 9.2.1(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-shared-contexts': 9.25.2(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-theme': 9.2.0 + '@fluentui/react-utilities': 9.25.0(@types/react@19.2.2)(react@19.2.0) + '@griffel/react': 1.5.30(react@19.2.0) + '@swc/helpers': 0.5.17 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.1(@types/react@19.2.2) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + transitivePeerDependencies: + - scheduler + + '@fluentui/react-theme@9.2.0': + dependencies: + '@fluentui/tokens': 1.0.0-alpha.22 + '@swc/helpers': 0.5.17 + + '@fluentui/react-toast@9.7.3(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + dependencies: + '@fluentui/keyboard-keys': 9.0.8 + '@fluentui/react-aria': 9.17.1(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-icons': 2.0.311(react@19.2.0) + '@fluentui/react-jsx-runtime': 9.2.1(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-motion': 9.11.0(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-motion-components-preview': 0.11.0(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-portal': 9.8.3(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-shared-contexts': 9.25.2(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-tabster': 9.26.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-theme': 9.2.0 + '@fluentui/react-utilities': 9.25.0(@types/react@19.2.2)(react@19.2.0) + '@griffel/react': 1.5.30(react@19.2.0) + '@swc/helpers': 0.5.17 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.1(@types/react@19.2.2) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + + '@fluentui/react-toolbar@9.6.7(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0)': + dependencies: + '@fluentui/react-button': 9.6.7(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-context-selector': 9.2.8(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0) + '@fluentui/react-divider': 9.4.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-jsx-runtime': 9.2.1(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-radio': 9.5.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0) + '@fluentui/react-shared-contexts': 9.25.2(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-tabster': 9.26.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-theme': 9.2.0 + '@fluentui/react-utilities': 9.25.0(@types/react@19.2.2)(react@19.2.0) + '@griffel/react': 1.5.30(react@19.2.0) + '@swc/helpers': 0.5.17 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.1(@types/react@19.2.2) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + transitivePeerDependencies: + - scheduler + + '@fluentui/react-tooltip@9.8.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + dependencies: + '@fluentui/keyboard-keys': 9.0.8 + '@fluentui/react-jsx-runtime': 9.2.1(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-portal': 9.8.3(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-positioning': 9.20.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-shared-contexts': 9.25.2(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-tabster': 9.26.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-theme': 9.2.0 + '@fluentui/react-utilities': 9.25.0(@types/react@19.2.2)(react@19.2.0) + '@griffel/react': 1.5.30(react@19.2.0) + '@swc/helpers': 0.5.17 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.1(@types/react@19.2.2) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + + '@fluentui/react-tree@9.15.0(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0)': + dependencies: + '@fluentui/keyboard-keys': 9.0.8 + '@fluentui/react-aria': 9.17.1(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-avatar': 9.9.7(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0) + '@fluentui/react-button': 9.6.7(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-checkbox': 9.5.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0) + '@fluentui/react-context-selector': 9.2.8(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0) + '@fluentui/react-icons': 2.0.311(react@19.2.0) + '@fluentui/react-jsx-runtime': 9.2.1(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-motion': 9.11.0(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-motion-components-preview': 0.11.0(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-radio': 9.5.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(scheduler@0.27.0) + '@fluentui/react-shared-contexts': 9.25.2(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-tabster': 9.26.6(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@fluentui/react-theme': 9.2.0 + '@fluentui/react-utilities': 9.25.0(@types/react@19.2.2)(react@19.2.0) + '@griffel/react': 1.5.30(react@19.2.0) + '@swc/helpers': 0.5.17 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.1(@types/react@19.2.2) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + transitivePeerDependencies: + - scheduler + + '@fluentui/react-utilities@9.25.0(@types/react@19.2.2)(react@19.2.0)': + dependencies: + '@fluentui/keyboard-keys': 9.0.8 + '@fluentui/react-shared-contexts': 9.25.2(@types/react@19.2.2)(react@19.2.0) + '@swc/helpers': 0.5.17 + '@types/react': 19.2.2 + react: 19.2.0 + + '@fluentui/react-virtualizer@9.0.0-alpha.102(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + dependencies: + '@fluentui/react-jsx-runtime': 9.2.1(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-shared-contexts': 9.25.2(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-utilities': 9.25.0(@types/react@19.2.2)(react@19.2.0) + '@griffel/react': 1.5.30(react@19.2.0) + '@swc/helpers': 0.5.17 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.1(@types/react@19.2.2) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + + '@fluentui/react-window-provider@2.2.30(@types/react@19.2.2)(react@19.2.0)': + dependencies: + '@fluentui/set-version': 8.2.24 + '@types/react': 19.2.2 + react: 19.2.0 + tslib: 2.8.1 + + '@fluentui/react@8.124.0(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + dependencies: + '@fluentui/date-time-utilities': 8.6.10 + '@fluentui/font-icons-mdl2': 8.5.64(@types/react@19.2.2)(react@19.2.0) + '@fluentui/foundation-legacy': 8.5.0(@types/react@19.2.2)(react@19.2.0) + '@fluentui/merge-styles': 8.6.14 + '@fluentui/react-focus': 8.9.27(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-hooks': 8.9.0(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-portal-compat-context': 9.0.15(@types/react@19.2.2)(react@19.2.0) + '@fluentui/react-window-provider': 2.2.30(@types/react@19.2.2)(react@19.2.0) + '@fluentui/set-version': 8.2.24 + '@fluentui/style-utilities': 8.13.0(@types/react@19.2.2)(react@19.2.0) + '@fluentui/theme': 2.6.68(@types/react@19.2.2)(react@19.2.0) + '@fluentui/utilities': 8.16.0(@types/react@19.2.2)(react@19.2.0) + '@microsoft/load-themed-styles': 1.10.295 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.1(@types/react@19.2.2) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + tslib: 2.8.1 + + '@fluentui/set-version@8.2.24': + dependencies: + tslib: 2.8.1 + + '@fluentui/style-utilities@8.13.0(@types/react@19.2.2)(react@19.2.0)': + dependencies: + '@fluentui/merge-styles': 8.6.14 + '@fluentui/set-version': 8.2.24 + '@fluentui/theme': 2.6.68(@types/react@19.2.2)(react@19.2.0) + '@fluentui/utilities': 8.16.0(@types/react@19.2.2)(react@19.2.0) + '@microsoft/load-themed-styles': 1.10.295 + tslib: 2.8.1 + transitivePeerDependencies: + - '@types/react' + - react + + '@fluentui/theme@2.6.68(@types/react@19.2.2)(react@19.2.0)': + dependencies: + '@fluentui/merge-styles': 8.6.14 + '@fluentui/set-version': 8.2.24 + '@fluentui/utilities': 8.16.0(@types/react@19.2.2)(react@19.2.0) + '@types/react': 19.2.2 + react: 19.2.0 + tslib: 2.8.1 + + '@fluentui/tokens@1.0.0-alpha.22': + dependencies: + '@swc/helpers': 0.5.17 + + '@fluentui/utilities@8.16.0(@types/react@19.2.2)(react@19.2.0)': + dependencies: + '@fluentui/dom-utilities': 2.3.10 + '@fluentui/merge-styles': 8.6.14 + '@fluentui/react-window-provider': 2.2.30(@types/react@19.2.2)(react@19.2.0) + '@fluentui/set-version': 8.2.24 + '@types/react': 19.2.2 + react: 19.2.0 + tslib: 2.8.1 + + '@griffel/core@1.19.2': + dependencies: + '@emotion/hash': 0.9.2 + '@griffel/style-types': 1.3.0 + csstype: 3.1.3 + rtl-css-js: 1.16.1 + stylis: 4.3.6 + tslib: 2.8.1 + + '@griffel/react@1.5.30(react@19.2.0)': + dependencies: + '@griffel/core': 1.19.2 + react: 19.2.0 + tslib: 2.8.1 + + '@griffel/style-types@1.3.0': + dependencies: + csstype: 3.1.3 + + '@humanfs/core@0.19.1': {} + + '@humanfs/node@0.16.7': + dependencies: + '@humanfs/core': 0.19.1 + '@humanwhocodes/retry': 0.4.3 + + '@humanwhocodes/module-importer@1.0.1': {} + + '@humanwhocodes/retry@0.4.3': {} + + '@jridgewell/gen-mapping@0.3.13': + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/remapping@2.3.5': + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/sourcemap-codec@1.5.5': {} + + '@jridgewell/trace-mapping@0.3.31': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.5 + + '@microsoft/load-themed-styles@1.10.295': {} + + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.19.1 + + '@rolldown/pluginutils@1.0.0-beta.38': {} + + '@rollup/rollup-android-arm-eabi@4.52.4': + optional: true + + '@rollup/rollup-android-arm64@4.52.4': + optional: true + + '@rollup/rollup-darwin-arm64@4.52.4': + optional: true + + '@rollup/rollup-darwin-x64@4.52.4': + optional: true + + '@rollup/rollup-freebsd-arm64@4.52.4': + optional: true + + '@rollup/rollup-freebsd-x64@4.52.4': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.52.4': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.52.4': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.52.4': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.52.4': + optional: true + + '@rollup/rollup-linux-loong64-gnu@4.52.4': + optional: true + + '@rollup/rollup-linux-ppc64-gnu@4.52.4': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.52.4': + optional: true + + '@rollup/rollup-linux-riscv64-musl@4.52.4': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.52.4': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.40.0': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.52.4': + optional: true + + '@rollup/rollup-linux-x64-musl@4.52.4': + optional: true + + '@rollup/rollup-openharmony-arm64@4.52.4': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.52.4': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.52.4': + optional: true + + '@rollup/rollup-win32-x64-gnu@4.52.4': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.52.4': + optional: true + + '@swc/helpers@0.5.17': + dependencies: + tslib: 2.8.1 + + '@types/babel__core@7.20.5': + dependencies: + '@babel/parser': 7.28.4 + '@babel/types': 7.28.4 + '@types/babel__generator': 7.27.0 + '@types/babel__template': 7.4.4 + '@types/babel__traverse': 7.28.0 + + '@types/babel__generator@7.27.0': + dependencies: + '@babel/types': 7.28.4 + + '@types/babel__template@7.4.4': + dependencies: + '@babel/parser': 7.28.4 + '@babel/types': 7.28.4 + + '@types/babel__traverse@7.28.0': + dependencies: + '@babel/types': 7.28.4 + + '@types/debug@4.1.12': + dependencies: + '@types/ms': 2.1.0 + + '@types/estree-jsx@1.0.5': + dependencies: + '@types/estree': 1.0.8 + + '@types/estree@1.0.8': {} + + '@types/hast@2.3.10': + dependencies: + '@types/unist': 2.0.11 + + '@types/hast@3.0.4': + dependencies: + '@types/unist': 3.0.3 + + '@types/json-schema@7.0.15': {} + + '@types/mdast@4.0.4': + dependencies: + '@types/unist': 3.0.3 + + '@types/ms@2.1.0': {} + + '@types/node@24.7.0': + dependencies: + undici-types: 7.14.0 + + '@types/prismjs@1.26.5': {} + + '@types/react-dom@19.2.1(@types/react@19.2.2)': + dependencies: + '@types/react': 19.2.2 + + '@types/react@19.2.2': + dependencies: + csstype: 3.1.3 + + '@types/unist@2.0.11': {} + + '@types/unist@3.0.3': {} + + '@typescript-eslint/eslint-plugin@8.46.0(@typescript-eslint/parser@8.46.0(eslint@9.37.0)(typescript@5.9.3))(eslint@9.37.0)(typescript@5.9.3)': + dependencies: + '@eslint-community/regexpp': 4.12.1 + '@typescript-eslint/parser': 8.46.0(eslint@9.37.0)(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.46.0 + '@typescript-eslint/type-utils': 8.46.0(eslint@9.37.0)(typescript@5.9.3) + '@typescript-eslint/utils': 8.46.0(eslint@9.37.0)(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.46.0 + eslint: 9.37.0 + graphemer: 1.4.0 + ignore: 7.0.5 + natural-compare: 1.4.0 + ts-api-utils: 2.1.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/parser@8.46.0(eslint@9.37.0)(typescript@5.9.3)': + dependencies: + '@typescript-eslint/scope-manager': 8.46.0 + '@typescript-eslint/types': 8.46.0 + '@typescript-eslint/typescript-estree': 8.46.0(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.46.0 + debug: 4.4.3 + eslint: 9.37.0 + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/project-service@8.46.0(typescript@5.9.3)': + dependencies: + '@typescript-eslint/tsconfig-utils': 8.46.0(typescript@5.9.3) + '@typescript-eslint/types': 8.46.0 + debug: 4.4.3 + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/scope-manager@8.46.0': + dependencies: + '@typescript-eslint/types': 8.46.0 + '@typescript-eslint/visitor-keys': 8.46.0 + + '@typescript-eslint/tsconfig-utils@8.46.0(typescript@5.9.3)': + dependencies: + typescript: 5.9.3 + + '@typescript-eslint/type-utils@8.46.0(eslint@9.37.0)(typescript@5.9.3)': + dependencies: + '@typescript-eslint/types': 8.46.0 + '@typescript-eslint/typescript-estree': 8.46.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.46.0(eslint@9.37.0)(typescript@5.9.3) + debug: 4.4.3 + eslint: 9.37.0 + ts-api-utils: 2.1.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/types@8.46.0': {} + + '@typescript-eslint/typescript-estree@8.46.0(typescript@5.9.3)': + dependencies: + '@typescript-eslint/project-service': 8.46.0(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.46.0(typescript@5.9.3) + '@typescript-eslint/types': 8.46.0 + '@typescript-eslint/visitor-keys': 8.46.0 + debug: 4.4.3 + fast-glob: 3.3.3 + is-glob: 4.0.3 + minimatch: 9.0.5 + semver: 7.7.3 + ts-api-utils: 2.1.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@8.46.0(eslint@9.37.0)(typescript@5.9.3)': + dependencies: + '@eslint-community/eslint-utils': 4.9.0(eslint@9.37.0) + '@typescript-eslint/scope-manager': 8.46.0 + '@typescript-eslint/types': 8.46.0 + '@typescript-eslint/typescript-estree': 8.46.0(typescript@5.9.3) + eslint: 9.37.0 + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/visitor-keys@8.46.0': + dependencies: + '@typescript-eslint/types': 8.46.0 + eslint-visitor-keys: 4.2.1 + + '@uiw/copy-to-clipboard@1.0.17': {} + + '@uiw/react-markdown-preview@5.1.5(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + dependencies: + '@babel/runtime': 7.28.4 + '@uiw/copy-to-clipboard': 1.0.17 + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + react-markdown: 9.0.3(@types/react@19.2.2)(react@19.2.0) + rehype-attr: 3.0.3 + rehype-autolink-headings: 7.1.0 + rehype-ignore: 2.0.2 + rehype-prism-plus: 2.0.0 + rehype-raw: 7.0.0 + rehype-rewrite: 4.0.2 + rehype-slug: 6.0.0 + remark-gfm: 4.0.1 + remark-github-blockquote-alert: 1.3.1 + unist-util-visit: 5.0.0 + transitivePeerDependencies: + - '@types/react' + - supports-color + + '@uiw/react-md-editor@4.0.8(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + dependencies: + '@babel/runtime': 7.28.4 + '@uiw/react-markdown-preview': 5.1.5(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + rehype: 13.0.2 + rehype-prism-plus: 2.0.1 + transitivePeerDependencies: + - '@types/react' + - supports-color + + '@ungap/structured-clone@1.3.0': {} + + '@vitejs/plugin-react@5.0.4(vite@7.1.9(@types/node@24.7.0))': + dependencies: + '@babel/core': 7.28.4 + '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-react-jsx-source': 7.27.1(@babel/core@7.28.4) + '@rolldown/pluginutils': 1.0.0-beta.38 + '@types/babel__core': 7.20.5 + react-refresh: 0.17.0 + vite: 7.1.9(@types/node@24.7.0) + transitivePeerDependencies: + - supports-color + + acorn-jsx@5.3.2(acorn@8.15.0): + dependencies: + acorn: 8.15.0 + + acorn@8.15.0: {} + + ajv@6.12.6: + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + argparse@2.0.1: {} + + asynckit@0.4.0: {} + + axios@1.12.2: + dependencies: + follow-redirects: 1.15.11 + form-data: 4.0.4 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + + b-tween@0.3.3: {} + + b-validate@1.5.3: {} + + bail@2.0.2: {} + + balanced-match@1.0.2: {} + + baseline-browser-mapping@2.8.13: {} + + bcp-47-match@2.0.3: {} + + boolbase@1.0.0: {} + + brace-expansion@1.1.12: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + brace-expansion@2.0.2: + dependencies: + balanced-match: 1.0.2 + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + browserslist@4.26.3: + dependencies: + baseline-browser-mapping: 2.8.13 + caniuse-lite: 1.0.30001749 + electron-to-chromium: 1.5.233 + node-releases: 2.0.23 + update-browserslist-db: 1.1.3(browserslist@4.26.3) + + call-bind-apply-helpers@1.0.2: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + + callsites@3.1.0: {} + + caniuse-lite@1.0.30001749: {} + + ccount@2.0.1: {} + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + character-entities-html4@2.1.0: {} + + character-entities-legacy@3.0.0: {} + + character-entities@2.0.2: {} + + character-reference-invalid@2.0.1: {} + + classnames@2.5.1: {} + + clsx@2.1.1: {} + + color-convert@1.9.3: + dependencies: + color-name: 1.1.3 + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.3: {} + + color-name@1.1.4: {} + + color-string@1.9.1: + dependencies: + color-name: 1.1.4 + simple-swizzle: 0.2.4 + + color@3.2.1: + dependencies: + color-convert: 1.9.3 + color-string: 1.9.1 + + combined-stream@1.0.8: + dependencies: + delayed-stream: 1.0.0 + + comma-separated-tokens@2.0.3: {} + + compute-scroll-into-view@1.0.20: {} + + concat-map@0.0.1: {} + + convert-source-map@2.0.0: {} + + cookie@1.0.2: {} + + cross-spawn@7.0.6: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + css-selector-parser@3.1.3: {} + + csstype@3.1.3: {} + + dayjs@1.11.18: {} + + debug@4.4.3: + dependencies: + ms: 2.1.3 + + decode-named-character-reference@1.2.0: + dependencies: + character-entities: 2.0.2 + + deep-is@0.1.4: {} + + delayed-stream@1.0.0: {} + + dequal@2.0.3: {} + + detect-node-es@1.1.0: {} + + devlop@1.1.0: + dependencies: + dequal: 2.0.3 + + direction@2.0.1: {} + + dom-helpers@5.2.1: + dependencies: + '@babel/runtime': 7.28.4 + csstype: 3.1.3 + + dunder-proto@1.0.1: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-errors: 1.3.0 + gopd: 1.2.0 + + electron-to-chromium@1.5.233: {} + + embla-carousel-autoplay@8.6.0(embla-carousel@8.6.0): + dependencies: + embla-carousel: 8.6.0 + + embla-carousel-fade@8.6.0(embla-carousel@8.6.0): + dependencies: + embla-carousel: 8.6.0 + + embla-carousel@8.6.0: {} + + entities@6.0.1: {} + + es-define-property@1.0.1: {} + + es-errors@1.3.0: {} + + es-object-atoms@1.1.1: + dependencies: + es-errors: 1.3.0 + + es-set-tostringtag@2.1.0: + dependencies: + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + + esbuild@0.25.10: + optionalDependencies: + '@esbuild/aix-ppc64': 0.25.10 + '@esbuild/android-arm': 0.25.10 + '@esbuild/android-arm64': 0.25.10 + '@esbuild/android-x64': 0.25.10 + '@esbuild/darwin-arm64': 0.25.10 + '@esbuild/darwin-x64': 0.25.10 + '@esbuild/freebsd-arm64': 0.25.10 + '@esbuild/freebsd-x64': 0.25.10 + '@esbuild/linux-arm': 0.25.10 + '@esbuild/linux-arm64': 0.25.10 + '@esbuild/linux-ia32': 0.25.10 + '@esbuild/linux-loong64': 0.25.10 + '@esbuild/linux-mips64el': 0.25.10 + '@esbuild/linux-ppc64': 0.25.10 + '@esbuild/linux-riscv64': 0.25.10 + '@esbuild/linux-s390x': 0.25.10 + '@esbuild/linux-x64': 0.25.10 + '@esbuild/netbsd-arm64': 0.25.10 + '@esbuild/netbsd-x64': 0.25.10 + '@esbuild/openbsd-arm64': 0.25.10 + '@esbuild/openbsd-x64': 0.25.10 + '@esbuild/openharmony-arm64': 0.25.10 + '@esbuild/sunos-x64': 0.25.10 + '@esbuild/win32-arm64': 0.25.10 + '@esbuild/win32-ia32': 0.25.10 + '@esbuild/win32-x64': 0.25.10 + + escalade@3.2.0: {} + + escape-string-regexp@4.0.0: {} + + escape-string-regexp@5.0.0: {} + + eslint-plugin-react-hooks@5.2.0(eslint@9.37.0): + dependencies: + eslint: 9.37.0 + + eslint-plugin-react-refresh@0.4.23(eslint@9.37.0): + dependencies: + eslint: 9.37.0 + + eslint-scope@8.4.0: + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + + eslint-visitor-keys@3.4.3: {} + + eslint-visitor-keys@4.2.1: {} + + eslint@9.37.0: + dependencies: + '@eslint-community/eslint-utils': 4.9.0(eslint@9.37.0) + '@eslint-community/regexpp': 4.12.1 + '@eslint/config-array': 0.21.0 + '@eslint/config-helpers': 0.4.0 + '@eslint/core': 0.16.0 + '@eslint/eslintrc': 3.3.1 + '@eslint/js': 9.37.0 + '@eslint/plugin-kit': 0.4.0 + '@humanfs/node': 0.16.7 + '@humanwhocodes/module-importer': 1.0.1 + '@humanwhocodes/retry': 0.4.3 + '@types/estree': 1.0.8 + '@types/json-schema': 7.0.15 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.6 + debug: 4.4.3 + escape-string-regexp: 4.0.0 + eslint-scope: 8.4.0 + eslint-visitor-keys: 4.2.1 + espree: 10.4.0 + esquery: 1.6.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 8.0.0 + find-up: 5.0.0 + glob-parent: 6.0.2 + ignore: 5.3.2 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + json-stable-stringify-without-jsonify: 1.0.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.4 + transitivePeerDependencies: + - supports-color + + espree@10.4.0: + dependencies: + acorn: 8.15.0 + acorn-jsx: 5.3.2(acorn@8.15.0) + eslint-visitor-keys: 4.2.1 + + esquery@1.6.0: + dependencies: + estraverse: 5.3.0 + + esrecurse@4.3.0: + dependencies: + estraverse: 5.3.0 + + estraverse@5.3.0: {} + + estree-util-is-identifier-name@3.0.0: {} + + esutils@2.0.3: {} + + eventemitter3@4.0.7: {} + + extend@3.0.2: {} + + fast-deep-equal@3.1.3: {} + + fast-glob@3.3.3: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + + fast-json-stable-stringify@2.1.0: {} + + fast-levenshtein@2.0.6: {} + + fastq@1.19.1: + dependencies: + reusify: 1.1.0 + + fdir@6.5.0(picomatch@4.0.3): + optionalDependencies: + picomatch: 4.0.3 + + file-entry-cache@8.0.0: + dependencies: + flat-cache: 4.0.1 + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + find-up@5.0.0: + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + flat-cache@4.0.1: + dependencies: + flatted: 3.3.3 + keyv: 4.5.4 + + flatted@3.3.3: {} + + focus-lock@1.3.6: + dependencies: + tslib: 2.8.1 + + follow-redirects@1.15.11: {} + + form-data@4.0.4: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + es-set-tostringtag: 2.1.0 + hasown: 2.0.2 + mime-types: 2.1.35 + + fsevents@2.3.3: + optional: true + + function-bind@1.1.2: {} + + gensync@1.0.0-beta.2: {} + + get-intrinsic@1.3.0: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + function-bind: 1.1.2 + get-proto: 1.0.1 + gopd: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.2 + math-intrinsics: 1.1.0 + + get-proto@1.0.1: + dependencies: + dunder-proto: 1.0.1 + es-object-atoms: 1.1.1 + + github-slugger@2.0.0: {} + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + glob-parent@6.0.2: + dependencies: + is-glob: 4.0.3 + + globals@14.0.0: {} + + globals@16.4.0: {} + + goober@2.1.18(csstype@3.1.3): + dependencies: + csstype: 3.1.3 + + gopd@1.2.0: {} + + graphemer@1.4.0: {} + + has-flag@4.0.0: {} + + has-symbols@1.1.0: {} + + has-tostringtag@1.0.2: + dependencies: + has-symbols: 1.1.0 + + hasown@2.0.2: + dependencies: + function-bind: 1.1.2 + + hast-util-from-html@2.0.3: + dependencies: + '@types/hast': 3.0.4 + devlop: 1.1.0 + hast-util-from-parse5: 8.0.3 + parse5: 7.3.0 + vfile: 6.0.3 + vfile-message: 4.0.3 + + hast-util-from-parse5@8.0.3: + dependencies: + '@types/hast': 3.0.4 + '@types/unist': 3.0.3 + devlop: 1.1.0 + hastscript: 9.0.1 + property-information: 7.1.0 + vfile: 6.0.3 + vfile-location: 5.0.3 + web-namespaces: 2.0.1 + + hast-util-has-property@3.0.0: + dependencies: + '@types/hast': 3.0.4 + + hast-util-heading-rank@3.0.0: + dependencies: + '@types/hast': 3.0.4 + + hast-util-is-element@3.0.0: + dependencies: + '@types/hast': 3.0.4 + + hast-util-parse-selector@3.1.1: + dependencies: + '@types/hast': 2.3.10 + + hast-util-parse-selector@4.0.0: + dependencies: + '@types/hast': 3.0.4 + + hast-util-raw@9.1.0: + dependencies: + '@types/hast': 3.0.4 + '@types/unist': 3.0.3 + '@ungap/structured-clone': 1.3.0 + hast-util-from-parse5: 8.0.3 + hast-util-to-parse5: 8.0.0 + html-void-elements: 3.0.0 + mdast-util-to-hast: 13.2.0 + parse5: 7.3.0 + unist-util-position: 5.0.0 + unist-util-visit: 5.0.0 + vfile: 6.0.3 + web-namespaces: 2.0.1 + zwitch: 2.0.4 + + hast-util-select@6.0.4: + dependencies: + '@types/hast': 3.0.4 + '@types/unist': 3.0.3 + bcp-47-match: 2.0.3 + comma-separated-tokens: 2.0.3 + css-selector-parser: 3.1.3 + devlop: 1.1.0 + direction: 2.0.1 + hast-util-has-property: 3.0.0 + hast-util-to-string: 3.0.1 + hast-util-whitespace: 3.0.0 + nth-check: 2.1.1 + property-information: 7.1.0 + space-separated-tokens: 2.0.2 + unist-util-visit: 5.0.0 + zwitch: 2.0.4 + + hast-util-to-html@9.0.5: + dependencies: + '@types/hast': 3.0.4 + '@types/unist': 3.0.3 + ccount: 2.0.1 + comma-separated-tokens: 2.0.3 + hast-util-whitespace: 3.0.0 + html-void-elements: 3.0.0 + mdast-util-to-hast: 13.2.0 + property-information: 7.1.0 + space-separated-tokens: 2.0.2 + stringify-entities: 4.0.4 + zwitch: 2.0.4 + + hast-util-to-jsx-runtime@2.3.6: + dependencies: + '@types/estree': 1.0.8 + '@types/hast': 3.0.4 + '@types/unist': 3.0.3 + comma-separated-tokens: 2.0.3 + devlop: 1.1.0 + estree-util-is-identifier-name: 3.0.0 + hast-util-whitespace: 3.0.0 + mdast-util-mdx-expression: 2.0.1 + mdast-util-mdx-jsx: 3.2.0 + mdast-util-mdxjs-esm: 2.0.1 + property-information: 7.1.0 + space-separated-tokens: 2.0.2 + style-to-js: 1.1.17 + unist-util-position: 5.0.0 + vfile-message: 4.0.3 + transitivePeerDependencies: + - supports-color + + hast-util-to-parse5@8.0.0: + dependencies: + '@types/hast': 3.0.4 + comma-separated-tokens: 2.0.3 + devlop: 1.1.0 + property-information: 6.5.0 + space-separated-tokens: 2.0.2 + web-namespaces: 2.0.1 + zwitch: 2.0.4 + + hast-util-to-string@3.0.1: + dependencies: + '@types/hast': 3.0.4 + + hast-util-whitespace@3.0.0: + dependencies: + '@types/hast': 3.0.4 + + hastscript@7.2.0: + dependencies: + '@types/hast': 2.3.10 + comma-separated-tokens: 2.0.3 + hast-util-parse-selector: 3.1.1 + property-information: 6.5.0 + space-separated-tokens: 2.0.2 + + hastscript@9.0.1: + dependencies: + '@types/hast': 3.0.4 + comma-separated-tokens: 2.0.3 + hast-util-parse-selector: 4.0.0 + property-information: 7.1.0 + space-separated-tokens: 2.0.2 + + html-url-attributes@3.0.1: {} + + html-void-elements@3.0.0: {} + + ignore@5.3.2: {} + + ignore@7.0.5: {} + + import-fresh@3.3.1: + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + imurmurhash@0.1.4: {} + + inline-style-parser@0.2.4: {} + + is-alphabetical@2.0.1: {} + + is-alphanumerical@2.0.1: + dependencies: + is-alphabetical: 2.0.1 + is-decimal: 2.0.1 + + is-arrayish@0.3.4: {} + + is-decimal@2.0.1: {} + + is-extglob@2.1.1: {} + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-hexadecimal@2.0.1: {} + + is-number@7.0.0: {} + + is-plain-obj@4.1.0: {} + + isexe@2.0.0: {} + + js-tokens@4.0.0: {} + + js-yaml@4.1.0: + dependencies: + argparse: 2.0.1 + + jsesc@3.1.0: {} + + json-buffer@3.0.1: {} + + json-schema-traverse@0.4.1: {} + + json-stable-stringify-without-jsonify@1.0.1: {} + + json5@2.2.3: {} + + keyborg@2.6.0: {} + + keyv@4.5.4: + dependencies: + json-buffer: 3.0.1 + + levn@0.4.1: + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 + + lodash.merge@4.6.2: {} + + lodash@4.17.21: {} + + longest-streak@3.1.0: {} + + loose-envify@1.4.0: + dependencies: + js-tokens: 4.0.0 + + lru-cache@5.1.1: + dependencies: + yallist: 3.1.1 + + markdown-table@3.0.4: {} + + math-intrinsics@1.1.0: {} + + mdast-util-find-and-replace@3.0.2: + dependencies: + '@types/mdast': 4.0.4 + escape-string-regexp: 5.0.0 + unist-util-is: 6.0.0 + unist-util-visit-parents: 6.0.1 + + mdast-util-from-markdown@2.0.2: + dependencies: + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + decode-named-character-reference: 1.2.0 + devlop: 1.1.0 + mdast-util-to-string: 4.0.0 + micromark: 4.0.2 + micromark-util-decode-numeric-character-reference: 2.0.2 + micromark-util-decode-string: 2.0.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + unist-util-stringify-position: 4.0.0 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-autolink-literal@2.0.1: + dependencies: + '@types/mdast': 4.0.4 + ccount: 2.0.1 + devlop: 1.1.0 + mdast-util-find-and-replace: 3.0.2 + micromark-util-character: 2.1.1 + + mdast-util-gfm-footnote@2.1.0: + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + micromark-util-normalize-identifier: 2.0.1 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-strikethrough@2.0.0: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-table@2.0.0: + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + markdown-table: 3.0.4 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-task-list-item@2.0.0: + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm@3.1.0: + dependencies: + mdast-util-from-markdown: 2.0.2 + mdast-util-gfm-autolink-literal: 2.0.1 + mdast-util-gfm-footnote: 2.1.0 + mdast-util-gfm-strikethrough: 2.0.0 + mdast-util-gfm-table: 2.0.0 + mdast-util-gfm-task-list-item: 2.0.0 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-mdx-expression@2.0.1: + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-mdx-jsx@3.2.0: + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + ccount: 2.0.1 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + parse-entities: 4.0.2 + stringify-entities: 4.0.4 + unist-util-stringify-position: 4.0.0 + vfile-message: 4.0.3 + transitivePeerDependencies: + - supports-color + + mdast-util-mdxjs-esm@2.0.1: + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-phrasing@4.1.0: + dependencies: + '@types/mdast': 4.0.4 + unist-util-is: 6.0.0 + + mdast-util-to-hast@13.2.0: + dependencies: + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + '@ungap/structured-clone': 1.3.0 + devlop: 1.1.0 + micromark-util-sanitize-uri: 2.0.1 + trim-lines: 3.0.1 + unist-util-position: 5.0.0 + unist-util-visit: 5.0.0 + vfile: 6.0.3 + + mdast-util-to-markdown@2.1.2: + dependencies: + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + longest-streak: 3.1.0 + mdast-util-phrasing: 4.1.0 + mdast-util-to-string: 4.0.0 + micromark-util-classify-character: 2.0.1 + micromark-util-decode-string: 2.0.1 + unist-util-visit: 5.0.0 + zwitch: 2.0.4 + + mdast-util-to-string@4.0.0: + dependencies: + '@types/mdast': 4.0.4 + + merge2@1.4.1: {} + + micromark-core-commonmark@2.0.3: + dependencies: + decode-named-character-reference: 1.2.0 + devlop: 1.1.0 + micromark-factory-destination: 2.0.1 + micromark-factory-label: 2.0.1 + micromark-factory-space: 2.0.1 + micromark-factory-title: 2.0.1 + micromark-factory-whitespace: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-chunked: 2.0.1 + micromark-util-classify-character: 2.0.1 + micromark-util-html-tag-name: 2.0.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-resolve-all: 2.0.1 + micromark-util-subtokenize: 2.1.0 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm-autolink-literal@2.1.0: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-sanitize-uri: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm-footnote@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-core-commonmark: 2.0.3 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-sanitize-uri: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm-strikethrough@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-util-chunked: 2.0.1 + micromark-util-classify-character: 2.0.1 + micromark-util-resolve-all: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm-table@2.1.1: + dependencies: + devlop: 1.1.0 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm-tagfilter@2.0.0: + dependencies: + micromark-util-types: 2.0.2 + + micromark-extension-gfm-task-list-item@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm@3.0.0: + dependencies: + micromark-extension-gfm-autolink-literal: 2.1.0 + micromark-extension-gfm-footnote: 2.1.0 + micromark-extension-gfm-strikethrough: 2.1.0 + micromark-extension-gfm-table: 2.1.1 + micromark-extension-gfm-tagfilter: 2.0.0 + micromark-extension-gfm-task-list-item: 2.1.0 + micromark-util-combine-extensions: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-factory-destination@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-factory-label@2.0.1: + dependencies: + devlop: 1.1.0 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-factory-space@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-types: 2.0.2 + + micromark-factory-title@2.0.1: + dependencies: + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-factory-whitespace@2.0.1: + dependencies: + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-character@2.1.1: + dependencies: + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-chunked@2.0.1: + dependencies: + micromark-util-symbol: 2.0.1 + + micromark-util-classify-character@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-combine-extensions@2.0.1: + dependencies: + micromark-util-chunked: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-decode-numeric-character-reference@2.0.2: + dependencies: + micromark-util-symbol: 2.0.1 + + micromark-util-decode-string@2.0.1: + dependencies: + decode-named-character-reference: 1.2.0 + micromark-util-character: 2.1.1 + micromark-util-decode-numeric-character-reference: 2.0.2 + micromark-util-symbol: 2.0.1 + + micromark-util-encode@2.0.1: {} + + micromark-util-html-tag-name@2.0.1: {} + + micromark-util-normalize-identifier@2.0.1: + dependencies: + micromark-util-symbol: 2.0.1 + + micromark-util-resolve-all@2.0.1: + dependencies: + micromark-util-types: 2.0.2 + + micromark-util-sanitize-uri@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-encode: 2.0.1 + micromark-util-symbol: 2.0.1 + + micromark-util-subtokenize@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-util-chunked: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-symbol@2.0.1: {} + + micromark-util-types@2.0.2: {} + + micromark@4.0.2: + dependencies: + '@types/debug': 4.1.12 + debug: 4.4.3 + decode-named-character-reference: 1.2.0 + devlop: 1.1.0 + micromark-core-commonmark: 2.0.3 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-chunked: 2.0.1 + micromark-util-combine-extensions: 2.0.1 + micromark-util-decode-numeric-character-reference: 2.0.2 + micromark-util-encode: 2.0.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-resolve-all: 2.0.1 + micromark-util-sanitize-uri: 2.0.1 + micromark-util-subtokenize: 2.1.0 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + transitivePeerDependencies: + - supports-color + + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + + mime-db@1.52.0: {} + + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + + minimatch@3.1.2: + dependencies: + brace-expansion: 1.1.12 + + minimatch@9.0.5: + dependencies: + brace-expansion: 2.0.2 + + ms@2.1.3: {} + + nanoid@3.3.11: {} + + natural-compare@1.4.0: {} + + node-releases@2.0.23: {} + + nth-check@2.1.1: + dependencies: + boolbase: 1.0.0 + + number-precision@1.6.0: {} + + object-assign@4.1.1: {} + + optionator@0.9.4: + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.5 + + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 + + parent-module@1.0.1: + dependencies: + callsites: 3.1.0 + + parse-entities@4.0.2: + dependencies: + '@types/unist': 2.0.11 + character-entities-legacy: 3.0.0 + character-reference-invalid: 2.0.1 + decode-named-character-reference: 1.2.0 + is-alphanumerical: 2.0.1 + is-decimal: 2.0.1 + is-hexadecimal: 2.0.1 + + parse-numeric-range@1.3.0: {} + + parse5@7.3.0: + dependencies: + entities: 6.0.1 + + path-exists@4.0.0: {} + + path-key@3.1.1: {} + + picocolors@1.1.1: {} + + picomatch@2.3.1: {} + + picomatch@4.0.3: {} + + postcss@8.5.6: + dependencies: + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + prelude-ls@1.2.1: {} + + prop-types@15.8.1: + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + react-is: 16.13.1 + + property-information@6.5.0: {} + + property-information@7.1.0: {} + + proxy-from-env@1.1.0: {} + + punycode@2.3.1: {} + + queue-microtask@1.2.3: {} + + react-clientside-effect@1.2.8(react@19.2.0): + dependencies: + '@babel/runtime': 7.28.4 + react: 19.2.0 + + react-dom@19.2.0(react@19.2.0): + dependencies: + react: 19.2.0 + scheduler: 0.27.0 + + react-focus-lock@2.13.6(@types/react@19.2.2)(react@19.2.0): + dependencies: + '@babel/runtime': 7.28.4 + focus-lock: 1.3.6 + prop-types: 15.8.1 + react: 19.2.0 + react-clientside-effect: 1.2.8(react@19.2.0) + use-callback-ref: 1.3.3(@types/react@19.2.2)(react@19.2.0) + use-sidecar: 1.1.3(@types/react@19.2.2)(react@19.2.0) + optionalDependencies: + '@types/react': 19.2.2 + + react-hot-toast@2.6.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0): + dependencies: + csstype: 3.1.3 + goober: 2.1.18(csstype@3.1.3) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + + react-is@16.13.1: {} + + react-is@17.0.2: {} + + react-is@18.3.1: {} + + react-markdown-editor-lite@1.3.4(react@19.2.0): + dependencies: + '@babel/runtime': 7.28.4 + classnames: 2.5.1 + eventemitter3: 4.0.7 + react: 19.2.0 + uuid: 8.3.2 + + react-markdown@10.1.0(@types/react@19.2.2)(react@19.2.0): + dependencies: + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + '@types/react': 19.2.2 + devlop: 1.1.0 + hast-util-to-jsx-runtime: 2.3.6 + html-url-attributes: 3.0.1 + mdast-util-to-hast: 13.2.0 + react: 19.2.0 + remark-parse: 11.0.0 + remark-rehype: 11.1.2 + unified: 11.0.5 + unist-util-visit: 5.0.0 + vfile: 6.0.3 + transitivePeerDependencies: + - supports-color + + react-markdown@9.0.3(@types/react@19.2.2)(react@19.2.0): + dependencies: + '@types/hast': 3.0.4 + '@types/react': 19.2.2 + devlop: 1.1.0 + hast-util-to-jsx-runtime: 2.3.6 + html-url-attributes: 3.0.1 + mdast-util-to-hast: 13.2.0 + react: 19.2.0 + remark-parse: 11.0.0 + remark-rehype: 11.1.2 + unified: 11.0.5 + unist-util-visit: 5.0.0 + vfile: 6.0.3 + transitivePeerDependencies: + - supports-color + + react-refresh@0.17.0: {} + + react-router-dom@7.9.3(react-dom@19.2.0(react@19.2.0))(react@19.2.0): + dependencies: + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + react-router: 7.9.3(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + + react-router@7.9.3(react-dom@19.2.0(react@19.2.0))(react@19.2.0): + dependencies: + cookie: 1.0.2 + react: 19.2.0 + set-cookie-parser: 2.7.1 + optionalDependencies: + react-dom: 19.2.0(react@19.2.0) + + react-toastify@11.0.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0): + dependencies: + clsx: 2.1.1 + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + + react-transition-group@4.4.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0): + dependencies: + '@babel/runtime': 7.28.4 + dom-helpers: 5.2.1 + loose-envify: 1.4.0 + prop-types: 15.8.1 + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + + react@19.2.0: {} + + refractor@4.9.0: + dependencies: + '@types/hast': 2.3.10 + '@types/prismjs': 1.26.5 + hastscript: 7.2.0 + parse-entities: 4.0.2 + + rehype-attr@3.0.3: + dependencies: + unified: 11.0.5 + unist-util-visit: 5.0.0 + + rehype-autolink-headings@7.1.0: + dependencies: + '@types/hast': 3.0.4 + '@ungap/structured-clone': 1.3.0 + hast-util-heading-rank: 3.0.0 + hast-util-is-element: 3.0.0 + unified: 11.0.5 + unist-util-visit: 5.0.0 + + rehype-ignore@2.0.2: + dependencies: + hast-util-select: 6.0.4 + unified: 11.0.5 + unist-util-visit: 5.0.0 + + rehype-parse@9.0.1: + dependencies: + '@types/hast': 3.0.4 + hast-util-from-html: 2.0.3 + unified: 11.0.5 + + rehype-prism-plus@2.0.0: + dependencies: + hast-util-to-string: 3.0.1 + parse-numeric-range: 1.3.0 + refractor: 4.9.0 + rehype-parse: 9.0.1 + unist-util-filter: 5.0.1 + unist-util-visit: 5.0.0 + + rehype-prism-plus@2.0.1: + dependencies: + hast-util-to-string: 3.0.1 + parse-numeric-range: 1.3.0 + refractor: 4.9.0 + rehype-parse: 9.0.1 + unist-util-filter: 5.0.1 + unist-util-visit: 5.0.0 + + rehype-raw@7.0.0: + dependencies: + '@types/hast': 3.0.4 + hast-util-raw: 9.1.0 + vfile: 6.0.3 + + rehype-rewrite@4.0.2: + dependencies: + hast-util-select: 6.0.4 + unified: 11.0.5 + unist-util-visit: 5.0.0 + + rehype-slug@6.0.0: + dependencies: + '@types/hast': 3.0.4 + github-slugger: 2.0.0 + hast-util-heading-rank: 3.0.0 + hast-util-to-string: 3.0.1 + unist-util-visit: 5.0.0 + + rehype-stringify@10.0.1: + dependencies: + '@types/hast': 3.0.4 + hast-util-to-html: 9.0.5 + unified: 11.0.5 + + rehype@13.0.2: + dependencies: + '@types/hast': 3.0.4 + rehype-parse: 9.0.1 + rehype-stringify: 10.0.1 + unified: 11.0.5 + + remark-gfm@4.0.1: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-gfm: 3.1.0 + micromark-extension-gfm: 3.0.0 + remark-parse: 11.0.0 + remark-stringify: 11.0.0 + unified: 11.0.5 + transitivePeerDependencies: + - supports-color + + remark-github-blockquote-alert@1.3.1: + dependencies: + unist-util-visit: 5.0.0 + + remark-ins@1.2.1(unified@11.0.5): + dependencies: + '@types/mdast': 4.0.4 + unified: 11.0.5 + unist-builder: 4.0.0 + unist-util-find-after: 5.0.0 + unist-util-find-all-after: 5.0.0 + unist-util-find-all-before: 5.0.0 + unist-util-find-between-all: 1.1.0 + unist-util-visit: 5.0.0 + + remark-parse@11.0.0: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-from-markdown: 2.0.2 + micromark-util-types: 2.0.2 + unified: 11.0.5 + transitivePeerDependencies: + - supports-color + + remark-rehype@11.1.2: + dependencies: + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + mdast-util-to-hast: 13.2.0 + unified: 11.0.5 + vfile: 6.0.3 + + remark-stringify@11.0.0: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-to-markdown: 2.1.2 + unified: 11.0.5 + + resize-observer-polyfill@1.5.1: {} + + resolve-from@4.0.0: {} + + reusify@1.1.0: {} + + rollup@4.52.4: + dependencies: + '@types/estree': 1.0.8 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.52.4 + '@rollup/rollup-android-arm64': 4.52.4 + '@rollup/rollup-darwin-arm64': 4.52.4 + '@rollup/rollup-darwin-x64': 4.52.4 + '@rollup/rollup-freebsd-arm64': 4.52.4 + '@rollup/rollup-freebsd-x64': 4.52.4 + '@rollup/rollup-linux-arm-gnueabihf': 4.52.4 + '@rollup/rollup-linux-arm-musleabihf': 4.52.4 + '@rollup/rollup-linux-arm64-gnu': 4.52.4 + '@rollup/rollup-linux-arm64-musl': 4.52.4 + '@rollup/rollup-linux-loong64-gnu': 4.52.4 + '@rollup/rollup-linux-ppc64-gnu': 4.52.4 + '@rollup/rollup-linux-riscv64-gnu': 4.52.4 + '@rollup/rollup-linux-riscv64-musl': 4.52.4 + '@rollup/rollup-linux-s390x-gnu': 4.52.4 + '@rollup/rollup-linux-x64-gnu': 4.52.4 + '@rollup/rollup-linux-x64-musl': 4.52.4 + '@rollup/rollup-openharmony-arm64': 4.52.4 + '@rollup/rollup-win32-arm64-msvc': 4.52.4 + '@rollup/rollup-win32-ia32-msvc': 4.52.4 + '@rollup/rollup-win32-x64-gnu': 4.52.4 + '@rollup/rollup-win32-x64-msvc': 4.52.4 + fsevents: 2.3.3 + + rtl-css-js@1.16.1: + dependencies: + '@babel/runtime': 7.28.4 + + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + + scheduler@0.27.0: {} + + scroll-into-view-if-needed@2.2.31: + dependencies: + compute-scroll-into-view: 1.0.20 + + semver@6.3.1: {} + + semver@7.7.3: {} + + set-cookie-parser@2.7.1: {} + + shallowequal@1.1.0: {} + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} + + simple-swizzle@0.2.4: + dependencies: + is-arrayish: 0.3.4 + + source-map-js@1.2.1: {} + + space-separated-tokens@2.0.2: {} + + stringify-entities@4.0.4: + dependencies: + character-entities-html4: 2.1.0 + character-entities-legacy: 3.0.0 + + strip-json-comments@3.1.1: {} + + style-to-js@1.1.17: + dependencies: + style-to-object: 1.0.9 + + style-to-object@1.0.9: + dependencies: + inline-style-parser: 0.2.4 + + stylis@4.3.6: {} + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + tabster@8.5.6: + dependencies: + keyborg: 2.6.0 + tslib: 2.8.1 + optionalDependencies: + '@rollup/rollup-linux-x64-gnu': 4.40.0 + + tinyglobby@0.2.15: + dependencies: + fdir: 6.5.0(picomatch@4.0.3) + picomatch: 4.0.3 + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + trim-lines@3.0.1: {} + + trough@2.2.0: {} + + ts-api-utils@2.1.0(typescript@5.9.3): + dependencies: + typescript: 5.9.3 + + tslib@2.8.1: {} + + type-check@0.4.0: + dependencies: + prelude-ls: 1.2.1 + + typescript-eslint@8.46.0(eslint@9.37.0)(typescript@5.9.3): + dependencies: + '@typescript-eslint/eslint-plugin': 8.46.0(@typescript-eslint/parser@8.46.0(eslint@9.37.0)(typescript@5.9.3))(eslint@9.37.0)(typescript@5.9.3) + '@typescript-eslint/parser': 8.46.0(eslint@9.37.0)(typescript@5.9.3) + '@typescript-eslint/typescript-estree': 8.46.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.46.0(eslint@9.37.0)(typescript@5.9.3) + eslint: 9.37.0 + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + typescript@5.9.3: {} + + undici-types@7.14.0: {} + + unified@11.0.5: + dependencies: + '@types/unist': 3.0.3 + bail: 2.0.2 + devlop: 1.1.0 + extend: 3.0.2 + is-plain-obj: 4.1.0 + trough: 2.2.0 + vfile: 6.0.3 + + unist-builder@4.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-filter@5.0.1: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.0 + unist-util-visit-parents: 6.0.1 + + unist-util-find-after@5.0.0: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.0 + + unist-util-find-all-after@5.0.0: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.0 + + unist-util-find-all-before@5.0.0: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.0 + + unist-util-find-between-all@1.1.0: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.0 + + unist-util-is@6.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-position@5.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-stringify-position@4.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-visit-parents@6.0.1: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.0 + + unist-util-visit@5.0.0: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.0 + unist-util-visit-parents: 6.0.1 + + update-browserslist-db@1.1.3(browserslist@4.26.3): + dependencies: + browserslist: 4.26.3 + escalade: 3.2.0 + picocolors: 1.1.1 + + uri-js@4.4.1: + dependencies: + punycode: 2.3.1 + + use-callback-ref@1.3.3(@types/react@19.2.2)(react@19.2.0): + dependencies: + react: 19.2.0 + tslib: 2.8.1 + optionalDependencies: + '@types/react': 19.2.2 + + use-sidecar@1.1.3(@types/react@19.2.2)(react@19.2.0): + dependencies: + detect-node-es: 1.1.0 + react: 19.2.0 + tslib: 2.8.1 + optionalDependencies: + '@types/react': 19.2.2 + + use-sync-external-store@1.6.0(react@19.2.0): + dependencies: + react: 19.2.0 + + uuid@8.3.2: {} + + vfile-location@5.0.3: + dependencies: + '@types/unist': 3.0.3 + vfile: 6.0.3 + + vfile-message@4.0.3: + dependencies: + '@types/unist': 3.0.3 + unist-util-stringify-position: 4.0.0 + + vfile@6.0.3: + dependencies: + '@types/unist': 3.0.3 + vfile-message: 4.0.3 + + vite@7.1.9(@types/node@24.7.0): + dependencies: + esbuild: 0.25.10 + fdir: 6.5.0(picomatch@4.0.3) + picomatch: 4.0.3 + postcss: 8.5.6 + rollup: 4.52.4 + tinyglobby: 0.2.15 + optionalDependencies: + '@types/node': 24.7.0 + fsevents: 2.3.3 + + web-namespaces@2.0.1: {} + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + word-wrap@1.2.5: {} + + yallist@3.1.1: {} + + yocto-queue@0.1.0: {} + + zwitch@2.0.4: {} diff --git a/public/_redirects b/public/_redirects new file mode 100644 index 0000000..50a4633 --- /dev/null +++ b/public/_redirects @@ -0,0 +1 @@ +/* /index.html 200 \ No newline at end of file diff --git a/public/about.md b/public/about.md new file mode 100644 index 0000000..6ab044f --- /dev/null +++ b/public/about.md @@ -0,0 +1,8 @@ +# Hi~欢迎来到Sycamore_Whisper匿名投稿站! +这里的内容来自开发环境下的/public/about.md,请编辑此文件以便在这里显示自己的内容! + +如果你不了解Markdown文档的语法,可以前往[这里](https://www.runoob.com/markdown/md-tutorial.html)简单学习 + + + +Made with ❤️ By Leonxie \ No newline at end of file diff --git a/public/icon.png b/public/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..e022bfca898270028732d246656f20b775a1839a GIT binary patch literal 126780 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 X%vd%@sMcW@(rYQpe~_z}u?YPiT0Uo; literal 0 HcmV?d00001 diff --git a/src/App.css b/src/App.css new file mode 100644 index 0000000..edad5ed --- /dev/null +++ b/src/App.css @@ -0,0 +1,27 @@ +/* 滚动条样式 */ +::-webkit-scrollbar { + width: 10px; + height: 10px; +} + +::-webkit-scrollbar-track { + background: transparent; +} + +::-webkit-scrollbar-thumb { + background: #888; + border-radius: 5px; +} + +::-webkit-scrollbar-thumb:hover { + background: #555; +} + +/* 深色模式下的滚动条 */ +.dark ::-webkit-scrollbar-thumb { + background: #4a4a4a; +} + +.dark ::-webkit-scrollbar-thumb:hover { + background: #3a3a3a; +} diff --git a/src/App.tsx b/src/App.tsx new file mode 100644 index 0000000..d2d4d25 --- /dev/null +++ b/src/App.tsx @@ -0,0 +1,125 @@ +import React, { useState, useEffect, useRef, useCallback } from 'react'; +import { FluentProvider, webLightTheme, webDarkTheme } from '@fluentui/react-components'; +import { BrowserRouter, Routes, Route } from 'react-router-dom'; +import PostCard from './components/PostCard'; +import MainLayout from './layouts/MainLayout'; +import './App.css'; +import { fetchArticles } from './api'; +import CreatePost from './components/CreatePost'; +import { ToastContainer } from 'react-toastify'; +import 'react-toastify/dist/ReactToastify.css'; +import AboutPage from './components/AboutPage'; +import PostState from './components/PostState'; +import ReportState from './components/ReportState'; +import AdminPage from './components/AdminPage'; +import InitPage from './pages/InitPage'; +import NotFound from './pages/NotFound'; + +function App() { + const [isDarkMode, setIsDarkMode] = React.useState(false); + const [articles, setArticles] = useState>([]); + const [page, setPage] = useState(1); + const [loading, setLoading] = useState(false); + const [hasMore, setHasMore] = useState(true); + const observer = useRef(null); + + const lastArticleRef = useCallback((node: HTMLDivElement) => { + if (loading) return; + if (observer.current) observer.current.disconnect(); + observer.current = new IntersectionObserver(entries => { + if (entries[0].isIntersecting && hasMore) { + setPage(prevPage => prevPage + 1); + } + }); + if (node) observer.current.observe(node); + }, [loading, hasMore]); + + useEffect(() => { + const controller = new AbortController(); + const signal = controller.signal; + + const loadArticles = async () => { + if (!hasMore) return; + setLoading(true); + try { + const newArticles = await fetchArticles(page, signal); + if (newArticles.length === 0) { + setHasMore(false); + } else { + setArticles(prev => [...prev, ...newArticles]); + } + } catch (error) { + if (error instanceof Error && error.name !== 'AbortError') { + console.error('Failed to load articles:', error); + } + } finally { + setLoading(false); + } + }; + loadArticles(); + + return () => { + controller.abort(); + }; + }, [page, hasMore]); + + return ( + + + + setIsDarkMode(!isDarkMode)} />}> + +
+ {articles.map((article, index) => { + if (articles.length === index + 1 && hasMore) { + return ( +
+ +
+ ); + } else { + return ( + + ); + } + })} + {loading &&
加载中...
} +
+ + } + /> + } /> + } /> + } /> + } /> + + } /> + } /> + } /> +
+
+ +
+ ); +} + +export default App; diff --git a/src/admin_api.tsx b/src/admin_api.tsx new file mode 100644 index 0000000..9cbcab4 --- /dev/null +++ b/src/admin_api.tsx @@ -0,0 +1,732 @@ +import { API_CONFIG } from './config'; + +// 管理员认证相关的 API 接口 + +export interface AdminAuthResponse { + success: boolean; + message?: string; +} + +// 管理员密码缓存键 +const ADMIN_TOKEN_KEY = 'admin_token'; + +/** + * 获取存储的管理员令牌 + */ +export const getAdminToken = (): string | null => { + return localStorage.getItem(ADMIN_TOKEN_KEY); +}; + +/** + * 存储管理员令牌 + */ +export const setAdminToken = (token: string): void => { + localStorage.setItem(ADMIN_TOKEN_KEY, token); +}; + +/** + * 清除管理员令牌 + */ +export const clearAdminToken = (): void => { + localStorage.removeItem(ADMIN_TOKEN_KEY); +}; + +/** + * 验证管理员密码 + * @param password 管理员密码 + * @returns Promise + */ +export const verifyAdminPassword = async (password: string): Promise => { + try { + const response = await fetch(`${API_CONFIG.BASE_URL}/admin/test`, { + method: 'GET', + headers: { + 'Authorization': `Bearer ${password}`, + 'Content-Type': 'application/json', + }, + }); + + if (response.status === 401 || response.status === 403) { + return { + success: false, + message: '密码错误,请重新输入' + }; + } + + if (response.ok) { + // 密码正确,存储到缓存 + setAdminToken(password); + return { + success: true, + message: '登录成功' + }; + } + + // 其他错误状态 + return { + success: false, + message: `服务器错误: ${response.status}` + }; + + } catch (error) { + console.error('Admin authentication error:', error); + return { + success: false, + message: '网络错误,请检查连接' + }; + } +}; + +/** + * 检查管理员是否已登录 + */ +export const isAdminLoggedIn = (): boolean => { + return getAdminToken() !== null; +}; + +/** + * 管理员退出登录 + */ +export const adminLogout = (): void => { + clearAdminToken(); +}; + +/** + * 创建带有管理员认证的请求头 + */ +export const createAdminHeaders = (): HeadersInit => { + const token = getAdminToken(); + return { + 'Content-Type': 'application/json', + ...(token && { 'Authorization': `Bearer ${token}` }) + }; +}; + +/** + * 通用的管理员 API 请求函数 + * @param endpoint API 端点 + * @param options 请求选项 + */ +export const adminApiRequest = async ( + endpoint: string, + options: RequestInit = {} +): Promise => { + const token = getAdminToken(); + + if (!token) { + throw new Error('未登录或登录已过期'); + } + + // 动态处理 Content-Type:当 body 是 FormData 时让浏览器自动设置 boundary + const baseHeaders: HeadersInit = createAdminHeaders(); + if (typeof FormData !== 'undefined' && options.body instanceof FormData) { + // @ts-ignore + delete baseHeaders['Content-Type']; + } + + const response = await fetch(`${API_CONFIG.BASE_URL}/admin${endpoint}`, { + ...options, + headers: { + ...baseHeaders, + ...options.headers, + }, + }); + + // 如果返回 401 或 403,说明令牌无效,清除缓存 + if (response.status === 401 || response.status === 403) { + clearAdminToken(); + throw new Error('登录已过期,请重新登录'); + } + + return response; +}; + +/** + * 创建备份并返回 ZIP 文件 Blob 与文件名 + * GET /admin/get/backup -> ZIP + */ +export const getBackupZip = async (): Promise<{ blob: Blob; filename: string }> => { + const resp = await adminApiRequest('/get/backup', { method: 'GET' }); + if (!resp.ok) { + throw new Error(`创建备份失败: ${resp.status}`); + } + const disposition = resp.headers.get('Content-Disposition') || ''; + let filename = 'backup.zip'; + const match = disposition.match(/filename\*=UTF-8''([^;]+)|filename="?([^";]+)"?/i); + if (match) { + filename = decodeURIComponent(match[1] || match[2] || filename); + } + const blob = await resp.blob(); + return { blob, filename }; +}; + +/** + * 恢复备份 + * POST /admin/recover (multipart/form-data: backup_file) + */ +export const recoverBackup = async (file: File): Promise<{ status: 'OK' }> => { + const form = new FormData(); + // 后端要求的字段名:file + form.append('file', file); + const resp = await adminApiRequest('/recover', { + method: 'POST', + body: form, + // 让 adminApiRequest 自动去掉 Content-Type + }); + if (!resp.ok) { + let detail = ''; + try { + const ct = resp.headers.get('Content-Type') || ''; + if (ct.includes('application/json')) { + const data = await resp.json(); + detail = typeof data === 'string' ? data : (data?.message || JSON.stringify(data)); + } else { + detail = await resp.text(); + } + } catch {} + throw new Error(`恢复备份失败: ${resp.status}${detail ? ` - ${detail}` : ''}`); + } + return resp.json(); +}; + +/** + * 获取当前帖子审核模式 + * GET /admin/get/need_audit -> { status: boolean } + */ +export const getAuditMode = async (): Promise<{ status: boolean }> => { + const resp = await adminApiRequest('/get/need_audit', { + method: 'GET', + }); + if (!resp.ok) { + throw new Error(`获取审核模式失败: ${resp.status}`); + } + return resp.json(); +}; + +/** + * 切换帖子审核模式 + * POST /admin/need_audit { need_audit: boolean } + */ +export const setAuditMode = async (need_audit: boolean): Promise<{ status: 'OK' }> => { + const resp = await adminApiRequest('/need_audit', { + method: 'POST', + body: JSON.stringify({ need_audit }), + }); + if (!resp.ok) { + throw new Error(`切换审核模式失败: ${resp.status}`); + } + return resp.json(); +}; + +/** + * 图片链接项 + */ +export interface PicLink { + filename: string; + url: string; + upload_time: string; +} + +/** + * 获取图片链接列表 + * GET /admin/get/pic_links?page=1 -> PicLink[] + */ +export const getPicLinks = async (page: number = 1): Promise => { + const resp = await adminApiRequest(`/get/pic_links?page=${encodeURIComponent(page)}`, { + method: 'GET', + }); + if (!resp.ok) { + throw new Error(`获取图片链接失败: ${resp.status}`); + } + const data = await resp.json(); + // 兼容字符串数组(如 ["/img/251012_xxx.png", ...])与对象数组的返回 + return (Array.isArray(data) ? data : []).map((item: any) => { + // 字符串项:直接视为图片相对或绝对 URL + if (typeof item === 'string') { + const raw = item.trim(); + const isAbsolute = /^https?:\/\//i.test(raw); + const path = isAbsolute ? raw : (raw.startsWith('/') ? raw : `/${raw}`); + const url = isAbsolute ? raw : `${API_CONFIG.BASE_URL}${path}`; + // 从路径派生 filename + let filename = ''; + if (raw.startsWith('/img/')) { + filename = raw.slice('/img/'.length); + } else { + const idx = raw.lastIndexOf('/'); + filename = idx >= 0 ? raw.slice(idx + 1) : raw; + } + try { filename = decodeURIComponent(filename); } catch {} + return { filename, url, upload_time: '' } as PicLink; + } + + // 对象项:使用字段并进行回退与绝对化 + const filename = String(item?.filename || ''); + const upload_time = String(item?.upload_time || ''); + const urlRaw = item?.url; + let url = typeof urlRaw === 'string' ? urlRaw.trim() : ''; + if (!url && filename) { + url = `/img/${encodeURIComponent(filename)}`; + } + if (url && !/^https?:\/\//i.test(url)) { + const path = url.startsWith('/') ? url : `/${url}`; + url = `${API_CONFIG.BASE_URL}${path}`; + } + return { filename, url, upload_time } as PicLink; + }); +}; + +/** + * 删除图片 + * POST /admin/del_pic { filename } + */ +export const deletePic = async (filename: string): Promise<{ status: 'OK' }> => { + if (!filename) { + throw new Error('缺少图片文件名'); + } + const resp = await adminApiRequest('/del_pic', { + method: 'POST', + body: JSON.stringify({ filename }), + }); + if (!resp.ok) { + let detail = ''; + try { + const ct = resp.headers.get('Content-Type') || ''; + if (ct.includes('application/json')) { + const data = await resp.json(); + detail = typeof data === 'string' ? data : (data?.message || JSON.stringify(data)); + } else { + detail = await resp.text(); + } + } catch {} + throw new Error(`删除图片失败: ${resp.status}${detail ? ` - ${detail}` : ''}`); + } + return resp.json(); +}; + +/** + * 待处理举报项 + */ +export interface PendingReport { + id: number; + submission_id: number; + title: string; + content: string; + status: string; + created_at: string; +} + +/** + * 获取待处理举报列表 + * GET /admin/get/pending_reports -> PendingReport[] + */ +export const getPendingReports = async (): Promise => { + const resp = await adminApiRequest('/get/pending_reports', { method: 'GET' }); + if (!resp.ok) { + throw new Error(`获取待处理举报失败: ${resp.status}`); + } + const data = await resp.json(); + return (Array.isArray(data) ? data : []).map((item: any) => ({ + id: Number(item?.id ?? 0), + submission_id: Number(item?.submission_id ?? 0), + title: String(item?.title ?? ''), + content: String(item?.content ?? ''), + status: String(item?.status ?? ''), + created_at: String(item?.created_at ?? ''), + })); +}; + +/** + * 批准举报 + * POST /admin/approve_report { id } + */ +export const approveReport = async (id: number): Promise<{ status: 'OK' }> => { + if (!id && id !== 0) { + throw new Error('缺少举报 ID'); + } + const resp = await adminApiRequest('/approve_report', { + method: 'POST', + body: JSON.stringify({ id }), + }); + if (!resp.ok) { + let detail = ''; + try { + const ct = resp.headers.get('Content-Type') || ''; + if (ct.includes('application/json')) { + const data = await resp.json(); + detail = typeof data === 'string' ? data : (data?.message || JSON.stringify(data)); + } else { + detail = await resp.text(); + } + } catch {} + throw new Error(`批准举报失败: ${resp.status}${detail ? ` - ${detail}` : ''}`); + } + return resp.json(); +}; + +/** + * 拒绝举报 + * POST /admin/reject_report { id } + */ +export const rejectReport = async (id: number): Promise<{ status: 'OK' }> => { + if (!id && id !== 0) { + throw new Error('缺少举报 ID'); + } + const resp = await adminApiRequest('/reject_report', { + method: 'POST', + body: JSON.stringify({ id }), + }); + if (!resp.ok) { + let detail = ''; + try { + const ct = resp.headers.get('Content-Type') || ''; + if (ct.includes('application/json')) { + const data = await resp.json(); + detail = typeof data === 'string' ? data : (data?.message || JSON.stringify(data)); + } else { + detail = await resp.text(); + } + } catch {} + throw new Error(`拒绝举报失败: ${resp.status}${detail ? ` - ${detail}` : ''}`); + } + return resp.json(); +}; + +/** + * 获取管理员视角的帖子详情(只需 content 字段) + * GET /admin/get/post_info?id=number -> { content: string, ... } + */ +export interface AdminPostInfo { content: string } + +export const getAdminPostInfo = async (id: number): Promise => { + if (!id && id !== 0) { + throw new Error('缺少帖子 ID'); + } + const resp = await adminApiRequest(`/get/post_info?id=${encodeURIComponent(id)}`, { method: 'GET' }); + if (!resp.ok) { + let detail = ''; + try { + const ct = resp.headers.get('Content-Type') || ''; + if (ct.includes('application/json')) { + const data = await resp.json(); + detail = typeof data === 'string' ? data : (data?.message || JSON.stringify(data)); + } else { + detail = await resp.text(); + } + } catch {} + throw new Error(`获取帖子详情失败: ${resp.status}${detail ? ` - ${detail}` : ''}`); + } + const data = await resp.json(); + return { content: String(data?.content || '') }; +}; + +/** + * 管理端帖子列表项(用于待审核/已拒绝) + */ +export interface AdminPostListItem { + id: number; + content: string; + create_time: string; + upvotes: number; + downvotes: number; +} + +/** + * 获取待审核帖子列表 + * GET /admin/get/pending_posts -> AdminPostListItem[] + */ +export const getPendingPosts = async (): Promise => { + const resp = await adminApiRequest('/get/pending_posts', { method: 'GET' }); + if (!resp.ok) { + let detail = ''; + try { + const ct = resp.headers.get('Content-Type') || ''; + if (ct.includes('application/json')) { + const data = await resp.json(); + detail = typeof data === 'string' ? data : (data?.message || JSON.stringify(data)); + } else { + detail = await resp.text(); + } + } catch {} + throw new Error(`获取待审核帖子失败: ${resp.status}${detail ? ` - ${detail}` : ''}`); + } + const data = await resp.json(); + return Array.isArray(data) ? data as AdminPostListItem[] : []; +}; + +/** + * 获取已拒绝帖子列表 + * GET /admin/get/reject_posts -> AdminPostListItem[] + */ +export const getRejectedPosts = async (): Promise => { + const resp = await adminApiRequest('/get/reject_posts', { method: 'GET' }); + if (!resp.ok) { + let detail = ''; + try { + const ct = resp.headers.get('Content-Type') || ''; + if (ct.includes('application/json')) { + const data = await resp.json(); + detail = typeof data === 'string' ? data : (data?.message || JSON.stringify(data)); + } else { + detail = await resp.text(); + } + } catch {} + throw new Error(`获取已拒绝帖子失败: ${resp.status}${detail ? ` - ${detail}` : ''}`); + } + const data = await resp.json(); + return Array.isArray(data) ? data as AdminPostListItem[] : []; +}; + +/** + * 审核通过帖子 + * POST /admin/approve { id } + */ +export const approvePost = async (id: number): Promise<{ status: 'OK' }> => { + if (!id && id !== 0) { + throw new Error('缺少帖子 ID'); + } + const resp = await adminApiRequest('/approve', { + method: 'POST', + body: JSON.stringify({ id }), + }); + if (!resp.ok) { + let detail = ''; + try { + const ct = resp.headers.get('Content-Type') || ''; + if (ct.includes('application/json')) { + const data = await resp.json(); + detail = typeof data === 'string' ? data : (data?.message || JSON.stringify(data)); + } else { + detail = await resp.text(); + } + } catch {} + const msg = resp.status === 401 || resp.status === 403 + ? '身份验证失败,请重新登陆' + : resp.status === 404 + ? '帖子不存在' + : resp.status === 400 + ? '缺少帖子 ID' + : `审核通过失败: ${resp.status}${detail ? ` - ${detail}` : ''}`; + throw new Error(msg); + } + return resp.json(); +}; + +/** + * 拒绝帖子 + * POST /admin/disapprove { id } + */ +export const disapprovePost = async (id: number): Promise<{ status: 'OK' }> => { + if (!id && id !== 0) { + throw new Error('缺少帖子 ID'); + } + const resp = await adminApiRequest('/disapprove', { + method: 'POST', + body: JSON.stringify({ id }), + }); + if (!resp.ok) { + let detail = ''; + try { + const ct = resp.headers.get('Content-Type') || ''; + if (ct.includes('application/json')) { + const data = await resp.json(); + detail = typeof data === 'string' ? data : (data?.message || JSON.stringify(data)); + } else { + detail = await resp.text(); + } + } catch {} + const msg = resp.status === 401 || resp.status === 403 + ? '身份验证失败,请重新登陆' + : resp.status === 404 + ? '帖子不存在' + : resp.status === 400 + ? '缺少帖子 ID' + : `拒绝帖子失败: ${resp.status}${detail ? ` - ${detail}` : ''}`; + throw new Error(msg); + } + return resp.json(); +}; + +/** + * 重新审核帖子(将已通过设回待审核) + * POST /admin/reaudit { id } + */ +export const reauditPost = async (id: number): Promise<{ status: 'OK' }> => { + if (!id && id !== 0) { + throw new Error('缺少帖子 ID'); + } + const resp = await adminApiRequest('/reaudit', { + method: 'POST', + body: JSON.stringify({ id }), + }); + if (!resp.ok) { + let detail = ''; + try { + const ct = resp.headers.get('Content-Type') || ''; + if (ct.includes('application/json')) { + const data = await resp.json(); + detail = typeof data === 'string' ? data : (data?.message || JSON.stringify(data)); + } else { + detail = await resp.text(); + } + } catch {} + const msg = resp.status === 401 || resp.status === 403 + ? '身份验证失败,请重新登陆' + : resp.status === 404 + ? '帖子不存在' + : resp.status === 400 + ? '缺少帖子 ID' + : `重新审核失败: ${resp.status}${detail ? ` - ${detail}` : ''}`; + throw new Error(msg); + } + return resp.json(); +}; + +/** + * 删除帖子 + * POST /admin/del_post { id } + */ +export const deletePost = async (id: number): Promise<{ status: 'OK' }> => { + if (!id && id !== 0) { + throw new Error('缺少帖子 ID'); + } + const resp = await adminApiRequest('/del_post', { + method: 'POST', + body: JSON.stringify({ id }), + }); + if (!resp.ok) { + let detail = ''; + try { + const ct = resp.headers.get('Content-Type') || ''; + if (ct.includes('application/json')) { + const data = await resp.json(); + detail = typeof data === 'string' ? data : (data?.message || JSON.stringify(data)); + } else { + detail = await resp.text(); + } + } catch {} + const msg = resp.status === 401 || resp.status === 403 + ? '身份验证失败,请重新登陆' + : resp.status === 404 + ? '帖子不存在' + : resp.status === 400 + ? '缺少帖子 ID' + : `删除帖子失败: ${resp.status}${detail ? ` - ${detail}` : ''}`; + throw new Error(msg); + } + return resp.json(); +}; + +/** + * 修改帖子内容 + * POST /admin/modify_post { id, content } + */ +export const modifyPost = async ( + id: number, + content: string +): Promise<{ status: 'OK' }> => { + if ((!id && id !== 0) || !content) { + throw new Error(!content ? '缺少帖子内容' : '缺少帖子 ID'); + } + const resp = await adminApiRequest('/modify_post', { + method: 'POST', + body: JSON.stringify({ id, content }), + }); + if (!resp.ok) { + let detail = ''; + try { + const ct = resp.headers.get('Content-Type') || ''; + if (ct.includes('application/json')) { + const data = await resp.json(); + detail = typeof data === 'string' ? data : (data?.message || JSON.stringify(data)); + } else { + detail = await resp.text(); + } + } catch {} + const msg = resp.status === 401 || resp.status === 403 + ? '身份验证失败,请重新登陆' + : resp.status === 404 + ? '帖子不存在' + : resp.status === 400 + ? '缺少 ID 或 content' + : `修改帖子失败: ${resp.status}${detail ? ` - ${detail}` : ''}`; + throw new Error(msg); + } + return resp.json(); +}; + +/** + * 删除评论 + * POST /admin/del_comment { id } + */ +export const deleteComment = async (id: number): Promise<{ status: 'OK' }> => { + if (!id && id !== 0) { + throw new Error('缺少评论 ID'); + } + const resp = await adminApiRequest('/del_comment', { + method: 'POST', + body: JSON.stringify({ id }), + }); + if (!resp.ok) { + let detail = ''; + try { + const ct = resp.headers.get('Content-Type') || ''; + if (ct.includes('application/json')) { + const data = await resp.json(); + detail = typeof data === 'string' ? data : (data?.message || JSON.stringify(data)); + } else { + detail = await resp.text(); + } + } catch {} + const msg = resp.status === 401 || resp.status === 403 + ? '身份验证失败,请重新登陆' + : resp.status === 404 + ? '评论不存在' + : resp.status === 400 + ? '缺少评论 ID' + : `删除评论失败: ${resp.status}${detail ? ` - ${detail}` : ''}`; + throw new Error(msg); + } + return resp.json(); +}; + +/** + * 修改评论 + * POST /admin/modify_comment { id, content, parent_comment_id, nickname } + */ +export const modifyComment = async ( + id: number, + content: string, + parent_comment_id: number, + nickname: string +): Promise<{ status: 'OK' }> => { + const missingId = !id && id !== 0; + const missingParent = parent_comment_id === undefined || parent_comment_id === null || Number.isNaN(parent_comment_id); + if (missingId || !content || !nickname || missingParent) { + throw new Error('缺少必填字段'); + } + const resp = await adminApiRequest('/modify_comment', { + method: 'POST', + body: JSON.stringify({ id, content, parent_comment_id, nickname }), + }); + if (!resp.ok) { + let detail = ''; + try { + const ct = resp.headers.get('Content-Type') || ''; + if (ct.includes('application/json')) { + const data = await resp.json(); + detail = typeof data === 'string' ? data : (data?.message || JSON.stringify(data)); + } else { + detail = await resp.text(); + } + } catch {} + const msg = resp.status === 401 || resp.status === 403 + ? '身份验证失败,请重新登陆' + : resp.status === 404 + ? '评论或父评论不存在' + : resp.status === 400 + ? '缺少必填字段' + : `修改评论失败: ${resp.status}${detail ? ` - ${detail}` : ''}`; + throw new Error(msg); + } + return resp.json(); +}; \ No newline at end of file diff --git a/src/api.ts b/src/api.ts new file mode 100644 index 0000000..628d5f7 --- /dev/null +++ b/src/api.ts @@ -0,0 +1,234 @@ +import { API_CONFIG } from './config'; +import { toast } from 'react-hot-toast'; + +export interface Article { + id: number; + content: string; + upvotes: number; + downvotes: number; +} + +export const fetchArticles = async (page: number, signal?: AbortSignal): Promise => { + try { + const response = await fetch(`${API_CONFIG.BASE_URL}/get/10_info?page=${page}`, { signal }); + if (!response.ok) { + throw new Error(`HTTP error! status: ${response.status}`); + } + return await response.json(); + } catch (error) { + if (error instanceof Error && error.name !== 'AbortError') { + console.error('Error fetching articles:', error); + } + throw error; + } +}; + +export const voteArticle = async ( + id: number, + type: 'up' | 'down' +): Promise => { + try { + const response = await fetch(`${API_CONFIG.BASE_URL}/${type}`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ id }), + }); + + const data = await response.json(); + if (data.status !== 'OK') { + throw new Error(`Vote ${type} failed`); + } + } catch (error) { + toast.error(`点赞${type === 'up' ? '赞' : '踩'}失败`); + throw error; + } +}; + +interface SubmitPostResponse { + id: string; + status: "Pass" | "Pending" | "Deny"; + message?: string; +} + +export const submitPost = async (postData: { content: string }): Promise => { + try { + const response = await fetch(`${API_CONFIG.BASE_URL}/post`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ content: postData.content }), + }); + + if (response.status === 403) { + return { status: 'Deny', message: '投稿中包含违禁词', id: 'null'}; + } + + if (!response.ok) { + throw new Error(`HTTP error! status: ${response.status}`); + } + + return await response.json() as SubmitPostResponse; + } catch (error) { + console.error('Error submitting post:', error); + throw error; + } +}; + +export const uploadImage = async (formData: FormData): Promise<{ status: 'OK' | 'Error'; url?: string; message?: string }> => { + try { + const response = await fetch(`${API_CONFIG.BASE_URL}/upload_pic`, { + method: 'POST', + body: formData, + }); + + if (!response.ok) { + throw new Error(`HTTP error! status: ${response.status}`); + } + + const result = await response.json(); + if (result.url) { + result.url = `${API_CONFIG.BASE_URL}${result.url}`; + } + + return result; + } catch (error) { + console.error('Error uploading image:', error); + throw error; + } +}; + +interface ReportPostResponse { + id: number; + status: string; +} + +export const reportPost = async (reportData: { id: number; title: string; content: string }): Promise => { + const response = await fetch(`${API_CONFIG.BASE_URL}/report`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify(reportData), + }); + + if (!response.ok) { + throw new Error(`HTTP error! status: ${response.status}`); + } + + return (await response.json()) as ReportPostResponse; +}; + +export async function getPostState(id: string): Promise<{ status: string }> { + const response = await fetch(`${API_CONFIG.BASE_URL}/get/post_state?id=${id}`); + if (!response.ok) { + throw new Error('Failed to fetch post state'); + } + return response.json(); +} + +export async function getReportState(id: string): Promise<{ status: string }> { + const response = await fetch(`${API_CONFIG.BASE_URL}/get/report_state?id=${id}`); + if (!response.ok) { + throw new Error('Failed to fetch report state'); + } + return response.json(); +} + + +export interface Comment { + id: number; + nickname: string; + content: string; + parent_comment_id: number; +} + +export const getComments = async (id: string | number): Promise => { + try { + const response = await fetch(`${API_CONFIG.BASE_URL}/get/comment?id=${id}`); + if (!response.ok) { + throw new Error(`HTTP error! status: ${response.status}`); + } + return await response.json(); + } catch (error) { + console.error('Error fetching comments:', error); + throw error; + } +}; + +export interface PostCommentRequest { + content: string; + submission_id: number; + parent_comment_id: number; + nickname: string; +} + +export interface PostCommentResponse { + id: number; + status: string; +} + +export const postComment = async (commentData: PostCommentRequest): Promise => { + try { + const response = await fetch(`${API_CONFIG.BASE_URL}/comment`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify(commentData), + }); + + if (response.status === 403) { + throw new Error('评论包含违禁词'); + } + + if (!response.ok) { + throw new Error(`HTTP error! status: ${response.status}`); + } + + return await response.json(); + } catch (error) { + console.error('Error posting comment:', error); + throw error; + } +}; + +// === Backend Initialization === +export interface InitPayload { + adminToken: string; + uploadFolder: string; + allowedExtensions: string[]; + maxFileSize: number; + bannedKeywords?: string[]; +} + +export const initBackend = async (payload: InitPayload): Promise<{ status: string; reason?: string }> => { + const body = { + ADMIN_TOKEN: payload.adminToken, + UPLOAD_FOLDER: payload.uploadFolder, + ALLOWED_EXTENSIONS: payload.allowedExtensions, + MAX_FILE_SIZE: payload.maxFileSize, + ...(payload.bannedKeywords ? { BANNED_KEYWORDS: payload.bannedKeywords } : {}), + }; + + const response = await fetch(`${API_CONFIG.BASE_URL}/init`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify(body), + }); + + const data = await response.json().catch(() => ({ status: 'Fail', reason: 'Invalid response' })); + + if (response.status === 403) { + throw new Error(data?.reason || '后端已初始化'); + } + if (!response.ok) { + throw new Error(data?.reason || `初始化失败,状态码 ${response.status}`); + } + + return data as { status: string; reason?: string }; +}; \ No newline at end of file diff --git a/src/assets/react.svg b/src/assets/react.svg new file mode 100644 index 0000000..6c87de9 --- /dev/null +++ b/src/assets/react.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/components/AboutPage.tsx b/src/components/AboutPage.tsx new file mode 100644 index 0000000..127f718 --- /dev/null +++ b/src/components/AboutPage.tsx @@ -0,0 +1,99 @@ +import React, { useState, useEffect } from 'react'; +import ReactMarkdown from 'react-markdown'; +import remarkGfm from 'remark-gfm'; +import remarkIns from 'remark-ins'; +import { toast } from 'react-toastify'; +import 'react-toastify/dist/ReactToastify.css'; +import { makeStyles, tokens } from '@fluentui/react-components'; + +const useStyles = makeStyles({ + markdownContent: { + // Markdown样式优化 + '& h1, & h2, & h3, & h4, & h5, & h6': { + marginTop: '1em', + marginBottom: '0.5em', + fontWeight: 'bold', + }, + '& p': { + marginTop: '0.5em', + marginBottom: '0.5em', + lineHeight: '1.6', + }, + '& ul, & ol': { + marginTop: '0.5em', + marginBottom: '0.5em', + paddingLeft: '2em', + }, + '& li': { + marginTop: '0.25em', + marginBottom: '0.25em', + }, + '& blockquote': { + margin: '1em 0', + paddingLeft: '1em', + borderLeft: `3px solid ${tokens.colorNeutralStroke1}`, + color: tokens.colorNeutralForeground2, + }, + '& code': { + backgroundColor: tokens.colorNeutralBackground1, + padding: '2px 4px', + borderRadius: '3px', + fontFamily: 'monospace', + }, + '& pre': { + backgroundColor: tokens.colorNeutralBackground1, + padding: '1em', + borderRadius: '5px', + overflowX: 'auto', + marginTop: '1em', + marginBottom: '1em', + }, + '& table': { + borderCollapse: 'collapse', + width: '100%', + marginTop: '1em', + marginBottom: '1em', + }, + '& th, & td': { + border: `1px solid ${tokens.colorNeutralStroke1}`, + padding: '8px', + textAlign: 'left', + }, + '& th': { + backgroundColor: tokens.colorNeutralBackground1, + fontWeight: 'bold', + }, + '& ins': { + textDecoration: 'underline', + backgroundColor: 'transparent', + }, + }, +}); + +const AboutPage: React.FC = () => { + const [markdown, setMarkdown] = useState(''); + const styles = useStyles(); + + useEffect(() => { + fetch('/about.md') + .then(response => { + if (!response.ok) { + throw new Error('找不到about.md,请检查文件是否存在。'); + } + return response.text(); + }) + .then(text => setMarkdown(text)) + .catch(error => { + console.error('Error fetching about.md:', error); + toast.error(error.message); + }); + }, []); + + return ( +
+ {markdown} +
+ ); +}; + +export default AboutPage; \ No newline at end of file diff --git a/src/components/AdminDashboard.tsx b/src/components/AdminDashboard.tsx new file mode 100644 index 0000000..8247259 --- /dev/null +++ b/src/components/AdminDashboard.tsx @@ -0,0 +1,886 @@ +import React from 'react'; +import { + makeStyles, + Button, + Text, + tokens, + Tab, + TabList, + Dialog, + DialogSurface, + DialogBody, + DialogTitle, + DialogContent, + DialogActions, +} from '@fluentui/react-components'; +import type { TabValue } from '@fluentui/react-components'; +import { getAuditMode, setAuditMode, getBackupZip, recoverBackup, getPicLinks, deletePic, type PicLink, getPendingReports, approveReport, rejectReport, type PendingReport, getAdminPostInfo, getPendingPosts, getRejectedPosts, type AdminPostListItem, approvePost, disapprovePost, reauditPost, deletePost } from '../admin_api'; +import { Switch } from '@fluentui/react-components'; +import { toast } from 'react-hot-toast'; +import { + SignOut24Regular, + WeatherSunny24Regular, + WeatherMoon24Regular +} from '@fluentui/react-icons'; +import { adminLogout } from '../admin_api'; +import { SITE_TITLE } from '../config'; + +import icon from '/icon.png'; +import AdminPostCard from './AdminPostCard'; +import AdminModifyPost from './AdminModifyPost'; +import AdminManageComments from './AdminManageComments'; +import { fetchArticles, type Article } from '../api'; + +const useStyles = makeStyles({ + root: { + position: 'fixed', + top: 0, + left: 0, + right: 0, + bottom: 0, + display: 'flex', + flexDirection: 'column', + backgroundColor: tokens.colorNeutralBackground2, + overflow: 'hidden', + height: '100vh', + }, + header: { + display: 'flex', + alignItems: 'center', + justifyContent: 'space-between', + height: '30px', + backgroundColor: tokens.colorNeutralBackground1, + boxShadow: tokens.shadow4, + padding: tokens.spacingHorizontalL, + }, + title: { + marginLeft: tokens.spacingHorizontalM, + display: 'flex', + alignItems: 'center', + gap: tokens.spacingHorizontalS, + }, + icon: { + height: '32px', + width: '32px', + }, + themeToggle: { + cursor: 'pointer', + }, + content: { + flex: '1 1 auto', + backgroundColor: tokens.colorNeutralBackground2, + overflowY: 'auto', + }, + tabs: { + padding: `${tokens.spacingVerticalS} ${tokens.spacingHorizontalL}`, + borderBottom: `1px solid ${tokens.colorNeutralStroke1}`, + backgroundColor: tokens.colorNeutralBackground2, + }, + contentPanel: { + padding: tokens.spacingHorizontalL, + }, + footer: { + display: 'flex', + justifyContent: 'center', + alignItems: 'center', + height: '50px', + backgroundColor: tokens.colorNeutralBackground1, + borderTop: `1px solid ${tokens.colorNeutralStroke1}`, + }, + logoutButton: { + display: 'flex', + alignItems: 'center', + gap: tokens.spacingHorizontalS, + }, + modalOverlay: { + position: 'fixed', + top: 0, + left: 0, + width: '100%', + height: '100%', + backgroundColor: 'rgba(0, 0, 0, 0.5)', + backdropFilter: 'blur(5px)', + display: 'flex', + justifyContent: 'center', + alignItems: 'center', + zIndex: 999, + }, +}); + +interface AdminDashboardProps { + onLogout: () => void; + isDarkMode?: boolean; + onToggleTheme?: () => void; +} + +const AdminDashboard: React.FC = ({ + onLogout, + isDarkMode = false, + onToggleTheme +}) => { + const styles = useStyles(); + const [activeTab, setActiveTab] = React.useState('systemSettings'); + const [postReviewSubTab, setPostReviewSubTab] = React.useState('pending'); + const [needAudit, setNeedAudit] = React.useState(null); + const [loadingAudit, setLoadingAudit] = React.useState(false); + const [recovering, setRecovering] = React.useState(false); + const fileInputRef = React.useRef(null); + const [selectedBackupFile, setSelectedBackupFile] = React.useState(null); + const [confirmOpen, setConfirmOpen] = React.useState(false); + // 图片管理状态 + const [picPage, setPicPage] = React.useState(1); + const [picLoading, setPicLoading] = React.useState(false); + const [picList, setPicList] = React.useState([]); + const [deleteConfirm, setDeleteConfirm] = React.useState<{ open: boolean; filename?: string }>({ open: false }); + // 举报管理状态 + const [reportsLoading, setReportsLoading] = React.useState(false); + const [pendingReports, setPendingReports] = React.useState([]); + const [postContents, setPostContents] = React.useState>({}); + // 投稿审核数据状态 + const [approvedArticles, setApprovedArticles] = React.useState([]); + const [approvedLoading, setApprovedLoading] = React.useState(false); + const [approvedPage, setApprovedPage] = React.useState(1); + const [approvedHasMore, setApprovedHasMore] = React.useState(true); + const approvedObserver = React.useRef(null); + const lastApprovedRef = React.useCallback((node: HTMLDivElement | null) => { + if (approvedLoading) return; + if (approvedObserver.current) approvedObserver.current.disconnect(); + approvedObserver.current = new IntersectionObserver(entries => { + if (entries[0].isIntersecting && approvedHasMore) { + setApprovedPage(prev => prev + 1); + } + }); + if (node) approvedObserver.current.observe(node); + }, [approvedLoading, approvedHasMore]); + const [pendingPosts, setPendingPosts] = React.useState([]); + const [pendingPostsLoading, setPendingPostsLoading] = React.useState(false); + const [rejectedPosts, setRejectedPosts] = React.useState([]); + const [rejectedPostsLoading, setRejectedPostsLoading] = React.useState(false); + // 帖子删除二次确认 + const [deletePostConfirm, setDeletePostConfirm] = React.useState<{ open: boolean; id?: number; list?: 'approved' | 'pending' | 'rejected' }>({ open: false }); + // 修改帖子弹窗 + const [modifyPostModal, setModifyPostModal] = React.useState<{ open: boolean; id?: number; initialContent?: string; list?: 'approved' | 'pending' }>({ open: false }); + // 评论管理弹窗 + const [manageCommentsModal, setManageCommentsModal] = React.useState<{ open: boolean; id?: number }>({ open: false }); + + React.useEffect(() => { + if (activeTab === 'systemSettings') { + setLoadingAudit(true); + getAuditMode() + .then(data => { + setNeedAudit(!!data.status); + }) + .catch((err: any) => { + console.error(err); + const msg = String(err?.message || ''); + if (msg.includes('401') || msg.includes('403') || msg.includes('登录已过期')) { + toast.error('身份验证失败,请重新登陆'); + } else { + toast.error('获取审核模式失败'); + } + }) + .finally(() => setLoadingAudit(false)); + } else if (activeTab === 'imageManage') { + setPicLoading(true); + getPicLinks(picPage) + .then(list => setPicList(list)) + .catch((err: any) => { + console.error(err); + const msg = String(err?.message || '获取图片链接失败'); + if (msg.includes('401') || msg.includes('403') || msg.includes('登录已过期')) { + toast.error('身份验证失败,请重新登陆'); + } else { + toast.error('获取图片链接失败'); + } + }) + .finally(() => setPicLoading(false)); + } else if (activeTab === 'complaintReview') { + setReportsLoading(true); + getPendingReports() + .then(list => setPendingReports(list)) + .catch((err: any) => { + console.error(err); + const msg = String(err?.message || '获取待处理举报失败'); + if (msg.includes('401') || msg.includes('403') || msg.includes('登录已过期')) { + toast.error('身份验证失败,请重新登陆'); + } else { + toast.error('获取待处理举报失败'); + } + }) + .finally(() => setReportsLoading(false)); + } + }, [activeTab, picPage]); + + // 当待处理举报列表更新时,基于 submission_id 拉取帖子内容 + React.useEffect(() => { + if (activeTab !== 'complaintReview') return; + const ids = Array.from(new Set(pendingReports.map(r => r.submission_id).filter(id => typeof id === 'number' && id > 0))); + if (ids.length === 0) return; + const needFetch = ids.filter(id => !(id in postContents)); + if (needFetch.length === 0) return; + Promise.all(needFetch.map(id => + getAdminPostInfo(id) + .then(info => ({ id, content: info.content })) + .catch((e: any) => { + const msg = String(e?.message || '获取帖子详情失败'); + if (msg.includes('401') || msg.includes('403') || msg.includes('登录已过期')) { + toast.error('身份验证失败,请重新登陆'); + } else if (msg.includes('404')) { + toast.error('帖子不存在'); + } else if (msg.includes('400')) { + toast.error('缺少帖子 ID'); + } else { + toast.error('获取帖子详情失败'); + } + return { id, content: '' }; + }) + )).then(results => { + setPostContents(prev => { + const next = { ...prev }; + for (const r of results) { + next[r.id] = r.content; + } + return next; + }); + }); + }, [activeTab, pendingReports]); + + // 进入“已过审”子选项卡时重置无限滚动状态 + React.useEffect(() => { + if (activeTab === 'postReview' && postReviewSubTab === 'approved') { + setApprovedArticles([]); + setApprovedPage(1); + setApprovedHasMore(true); + } + }, [activeTab, postReviewSubTab]); + + // 投稿审核:根据子选项卡加载对应列表 + React.useEffect(() => { + if (activeTab !== 'postReview') return; + if (postReviewSubTab === 'approved') { + const ac = new AbortController(); + const signal = ac.signal; + const loadApproved = async () => { + if (!approvedHasMore) return; + setApprovedLoading(true); + try { + const newArticles = await fetchArticles(approvedPage, signal); + if (newArticles.length === 0) { + setApprovedHasMore(false); + } else { + setApprovedArticles(prev => [...prev, ...newArticles]); + } + } catch (err) { + if (err instanceof Error && err.name !== 'AbortError') { + console.error(err); + toast.error('获取已过审帖子失败'); + } + } finally { + setApprovedLoading(false); + } + }; + loadApproved(); + return () => ac.abort(); + } else if (postReviewSubTab === 'pending') { + setPendingPostsLoading(true); + getPendingPosts() + .then(list => setPendingPosts(list)) + .catch((err: any) => { + console.error(err); + const msg = String(err?.message || '获取待审核帖子失败'); + if (msg.includes('401') || msg.includes('403') || msg.includes('登录已过期')) { + toast.error('身份验证失败,请重新登陆'); + } else { + toast.error('获取待审核帖子失败'); + } + }) + .finally(() => setPendingPostsLoading(false)); + } else if (postReviewSubTab === 'rejected') { + setRejectedPostsLoading(true); + getRejectedPosts() + .then(list => setRejectedPosts(list)) + .catch((err: any) => { + console.error(err); + const msg = String(err?.message || '获取已拒绝帖子失败'); + if (msg.includes('401') || msg.includes('403') || msg.includes('登录已过期')) { + toast.error('身份验证失败,请重新登陆'); + } else { + toast.error('获取已拒绝帖子失败'); + } + }) + .finally(() => setRejectedPostsLoading(false)); + } + }, [activeTab, postReviewSubTab, approvedPage]); + + // 确认删除帖子 + const handleConfirmDeletePost = async () => { + const id = deletePostConfirm.id; + const list = deletePostConfirm.list; + if (!id) { + setDeletePostConfirm({ open: false }); + return; + } + try { + await deletePost(id); + toast.success(`已删除帖子 #${id}`); + if (list === 'approved') { + setApprovedArticles(prev => prev.filter(x => x.id !== id)); + } else if (list === 'pending') { + setPendingPosts(prev => prev.filter(x => x.id !== id)); + } else if (list === 'rejected') { + setRejectedPosts(prev => prev.filter(x => x.id !== id)); + } + } catch (e: any) { + const msg = String(e?.message || '删除帖子失败'); + toast.error(msg); + } finally { + setDeletePostConfirm({ open: false }); + } + }; + + const handleToggleAudit = async (checked: boolean) => { + try { + await setAuditMode(checked); + setNeedAudit(checked); + toast.success(checked ? '已开启审核模式' : '已关闭审核模式'); + } catch (e: any) { + const msg = String(e?.message || '切换审核模式失败'); + if (msg.includes('401') || msg.includes('403') || msg.includes('登录已过期')) { + toast.error('身份验证失败,请重新登陆'); + } else { + toast.error('切换审核模式失败'); + } + } + }; + + const handleCreateBackup = async () => { + try { + const { blob, filename } = await getBackupZip(); + const url = URL.createObjectURL(blob); + const a = document.createElement('a'); + a.href = url; + a.download = filename || 'backup.zip'; + document.body.appendChild(a); + a.click(); + a.remove(); + URL.revokeObjectURL(url); + toast.success('备份已生成并开始下载'); + } catch (e: any) { + const msg = String(e?.message || '创建备份失败'); + if (msg.includes('401') || msg.includes('403') || msg.includes('登录已过期')) { + toast.error('身份验证失败,请重新登陆'); + } else { + toast.error('创建备份失败'); + } + } + }; + + const handleRecoverBackup = async (file: File | null) => { + if (!file) return; + setRecovering(true); + try { + await recoverBackup(file); + toast.success('恢复成功'); + } catch (e: any) { + const msg = String(e?.message || '恢复失败'); + if (msg.includes('401') || msg.includes('403') || msg.includes('登录已过期')) { + toast.error('身份验证失败,请重新登陆'); + } else if (msg.includes('400')) { + toast.error('请求错误:请检查文件是否为有效 ZIP 备份'); + } else { + toast.error('服务器错误或恢复失败'); + } + } finally { + setRecovering(false); + if (fileInputRef.current) fileInputRef.current.value = ''; + setSelectedBackupFile(null); + } + }; + + const handleConfirmRecover = () => { + if (!selectedBackupFile) return; + const lower = selectedBackupFile.name.toLowerCase(); + if (!lower.endsWith('.zip')) { + toast.error('请选择 ZIP 格式的备份文件'); + return; + } + setConfirmOpen(false); + void handleRecoverBackup(selectedBackupFile); + }; + + const handleLogout = () => { + try { + adminLogout(); + toast.success('已退出登录'); + onLogout(); + } catch (error) { + toast.error('退出登录失败'); + console.error('Logout error:', error); + } + }; + + // 图片删除触发与确认 + const requestDeletePic = (filename: string) => { + setDeleteConfirm({ open: true, filename }); + }; + + // 举报审批操作 + const handleApproveReport = async (id: number) => { + try { + await approveReport(id); + toast.success('已批准举报并删除违规帖子'); + // 刷新列表 + setReportsLoading(true); + const list = await getPendingReports(); + setPendingReports(list); + } catch (e: any) { + const msg = String(e?.message || '批准举报失败'); + if (msg.includes('401') || msg.includes('403') || msg.includes('登录已过期')) { + toast.error('身份验证失败,请重新登陆'); + } else if (msg.includes('404')) { + toast.error('举报记录不存在或已处理'); + } else if (msg.includes('400')) { + toast.error('缺少举报 ID'); + } else { + toast.error('批准举报失败'); + } + } finally { + setReportsLoading(false); + } + }; + + const handleRejectReport = async (id: number) => { + try { + await rejectReport(id); + toast.success('已拒绝举报,帖子保持原状'); + // 刷新列表 + setReportsLoading(true); + const list = await getPendingReports(); + setPendingReports(list); + } catch (e: any) { + const msg = String(e?.message || '拒绝举报失败'); + if (msg.includes('401') || msg.includes('403') || msg.includes('登录已过期')) { + toast.error('身份验证失败,请重新登陆'); + } else if (msg.includes('404')) { + toast.error('举报记录不存在或已处理'); + } else if (msg.includes('400')) { + toast.error('缺少举报 ID'); + } else { + toast.error('拒绝举报失败'); + } + } finally { + setReportsLoading(false); + } + }; + + const handleConfirmDeletePic = async () => { + const filename = deleteConfirm.filename; + if (!filename) { + setDeleteConfirm({ open: false }); + return; + } + try { + await deletePic(filename); + toast.success('图片已删除'); + // 刷新当前页 + setPicLoading(true); + const list = await getPicLinks(picPage); + setPicList(list); + } catch (e: any) { + const msg = String(e?.message || '删除图片失败'); + if (msg.includes('401') || msg.includes('403') || msg.includes('登录已过期')) { + toast.error('身份验证失败,请重新登陆'); + } else if (msg.includes('404')) { + toast.error('图片不存在或已被删除'); + } else if (msg.includes('400')) { + toast.error('缺少图片文件名'); + } else { + toast.error('删除图片失败'); + } + } finally { + setDeleteConfirm({ open: false }); + setPicLoading(false); + } + }; + + return ( +
+ {/* 顶栏 - 采用 MainLayout 的 Header 样式 */} +
+ + logo + {`${SITE_TITLE} | 管理面板`} + +
+ {onToggleTheme && ( + +
+
+ + {/* 主内容区域 - 占据剩余空间 */} +
+ {/* 选项卡 */} +
+ setActiveTab(data.value)} + > + 投稿审核 + 投诉审核 + 图片管理 + 系统设置 + +
+ + {/* 内容面板 */} +
+ {activeTab === 'systemSettings' ? ( +
+ 系统设置 +
+ 新文章是否需要审核 +
+ handleToggleAudit(!!data.checked)} + /> + + {needAudit ? '开' : '关'} + +
+
+ + {/* 备份 */} +
+ 备份 +
+ +
+
+ + {/* 恢复 */} +
+ 恢复 +
+ setSelectedBackupFile(e.target.files?.[0] || null)} + disabled={recovering} + /> + + {selectedBackupFile && ( + 已选择:{selectedBackupFile.name} + )} +
+ + 恢复会覆盖现有数据和图片,操作不可逆,建议提前二次备份。 + +
+ + {/* 确认对话框 */} + setConfirmOpen(!!data.open)}> + + + 确认恢复 + + 恢复备份后,现有内容会被清除,要继续吗? + + + + + + + + +
+ ) : activeTab === 'postReview' ? ( +
+ 投稿审核 +
+ setPostReviewSubTab(data.value)} + > + 已过审 + 待处理 + 未过审 + +
+
+ {postReviewSubTab === 'approved' ? ( + approvedLoading && approvedArticles.length === 0 ? ( + 加载中... + ) : approvedArticles.length === 0 ? ( + 暂无已过审帖子 + ) : ( +
+ {approvedArticles.map((a, idx) => { + const isLast = approvedArticles.length === idx + 1 && approvedHasMore; + const card = ( + { + try { + await reauditPost(id); + toast.success(`已重新审核,帖子 #${id} 回到待审核`); + setApprovedArticles(prev => prev.filter(x => x.id !== id)); + } catch (e: any) { + const msg = String(e?.message || '重新审核失败'); + toast.error(msg); + } + }} + onEdit={(id) => setModifyPostModal({ open: true, id, initialContent: a.content, list: 'approved' })} + onManageComments={(id) => setManageCommentsModal({ open: true, id })} + onDelete={(id) => setDeletePostConfirm({ open: true, id, list: 'approved' })} + /> + ); + return isLast ? ( +
{card}
+ ) : card; + })} + {approvedLoading && approvedArticles.length > 0 && ( + 加载中... + )} +
+ ) + ) : postReviewSubTab === 'pending' ? ( + pendingPostsLoading ? ( + 加载中... + ) : pendingPosts.length === 0 ? ( + 暂无待审核帖子 + ) : ( +
+ {pendingPosts.map(p => ( + { + try { + await approvePost(id); + toast.success(`已通过帖子 #${id}`); + setPendingPosts(prev => prev.filter(x => x.id !== id)); + } catch (e: any) { + const msg = String(e?.message || '审核通过失败'); + toast.error(msg); + } + }} + onReject={async (id) => { + try { + await disapprovePost(id); + toast.success(`已拒绝帖子 #${id}`); + setPendingPosts(prev => prev.filter(x => x.id !== id)); + } catch (e: any) { + const msg = String(e?.message || '拒绝帖子失败'); + toast.error(msg); + } + }} + onEdit={(id) => setModifyPostModal({ open: true, id, initialContent: p.content, list: 'pending' })} + onManageComments={(id) => setManageCommentsModal({ open: true, id })} + onDelete={(id) => setDeletePostConfirm({ open: true, id, list: 'pending' })} + /> + ))} +
+ ) + ) : ( + rejectedPostsLoading ? ( + 加载中... + ) : rejectedPosts.length === 0 ? ( + 暂无已拒绝帖子 + ) : ( +
+ {rejectedPosts.map(p => ( + setDeletePostConfirm({ open: true, id, list: 'rejected' })} + /> + ))} +
+ ) + )} +
+
+ + + ) : activeTab === 'imageManage' ? ( +
+ 图片管理 +
+ {picLoading ? ( + 加载中... + ) : picList.length === 0 ? ( + 暂无图片 + ) : ( +
+ {picList.map((item, idx) => ( +
+ {item.url && item.url.trim() !== '' ? ( + {item.filename + ) : ( +
+ 无图片链接 +
+ )} +
+
+ {item.filename} + {item.upload_time} +
+ +
+
+ ))} +
+ )} +
+
+ + 第 {picPage} 页 + +
+ + {/* 删除确认对话框 */} + setDeleteConfirm({ open: !!data.open, filename: deleteConfirm.filename })}> + + + 确认删除图片 + + 将永久删除服务器上的此图片:{deleteConfirm.filename} + + + + + + + + +
+ ) : activeTab === 'complaintReview' ? ( +
+ 投诉审核 +
+ {reportsLoading ? ( + 加载中... + ) : pendingReports.length === 0 ? ( + 暂无待处理举报 + ) : ( +
+ {pendingReports.map((r) => ( +
+
+ {r.title || `举报 #${r.id}`} + {r.created_at} +
+
+ 帖子内容 + + {postContents[r.submission_id] !== undefined + ? (postContents[r.submission_id] || '(帖子内容为空)') + : '加载中...'} + +
+
+ 举报内容 + + {r.content || '(无举报内容)'} + +
+
+ + +
+
+ ))} +
+ )} +
+
+ ) : ( + TODO: {String(activeTab)} + )} + {/* 删除帖子二次确认弹窗(放在内容面板末尾,避免打断三元表达式) */} + setDeletePostConfirm(prev => ({ ...prev, open: !!data.open }))}> + + + 确认删除帖子 + + 该操作不可恢复,确定要永久删除帖子 #{deletePostConfirm.id} 吗? + + + + + + + + + {/* 修改帖子弹窗 */} + {modifyPostModal.open && modifyPostModal.id !== undefined && ( +
+ setModifyPostModal({ open: false })} + onSubmitSuccess={(newContent) => { + if (modifyPostModal.list === 'approved') { + setApprovedArticles(prev => prev.map(a => a.id === modifyPostModal.id ? { ...a, content: newContent } : a)); + } else if (modifyPostModal.list === 'pending') { + setPendingPosts(prev => prev.map(p => p.id === modifyPostModal.id ? { ...p, content: newContent } : p)); + } + }} + /> +
+ )} + {manageCommentsModal.open && manageCommentsModal.id !== undefined && ( +
+ setManageCommentsModal({ open: false })} + /> +
+ )} +
+
+ + {/* 页脚 - 采用 MainLayout 的 Footer 样式 */} +
+ + Powered By Sycamore_Whisper + +
+
+ ); +}; + +export default AdminDashboard; \ No newline at end of file diff --git a/src/components/AdminLogin.tsx b/src/components/AdminLogin.tsx new file mode 100644 index 0000000..462b373 --- /dev/null +++ b/src/components/AdminLogin.tsx @@ -0,0 +1,179 @@ +import React, { useState } from 'react'; +import { + makeStyles, + Button, + Input, + Text, + Card, + CardHeader, + CardPreview, + tokens, + Spinner, + Field, +} from '@fluentui/react-components'; +import { LockClosed24Regular, Shield24Regular, ShieldLock24Regular} from '@fluentui/react-icons'; +import { verifyAdminPassword } from '../admin_api'; +import { toast } from 'react-hot-toast'; + +const useStyles = makeStyles({ + container: { + display: 'flex', + justifyContent: 'center', + alignItems: 'center', + minHeight: '100vh', + backgroundColor: tokens.colorNeutralBackground1, + padding: tokens.spacingVerticalXL, + }, + loginCard: { + width: '400px', + maxWidth: '90vw', + padding: tokens.spacingVerticalXL, + }, + cardHeader: { + textAlign: 'center', + marginBottom: tokens.spacingVerticalL, + }, + title: { + fontSize: tokens.fontSizeHero700, + fontWeight: tokens.fontWeightSemibold, + color: tokens.colorNeutralForeground1, + marginBottom: tokens.spacingVerticalS, + }, + subtitle: { + fontSize: tokens.fontSizeBase300, + color: tokens.colorNeutralForeground2, + }, + iconContainer: { + display: 'flex', + justifyContent: 'center', + marginBottom: tokens.spacingVerticalM, + }, + icon: { + fontSize: '48px', + color: tokens.colorBrandForeground1, + }, + form: { + display: 'flex', + flexDirection: 'column', + gap: tokens.spacingVerticalM, + }, + passwordField: { + width: '100%', + }, + passwordIconContainer: { + display: 'flex', + justifyContent: 'center', + marginBottom: tokens.spacingVerticalM, + }, + passwordIcon: { + fontSize: '48px', + color: tokens.colorBrandForeground1, + }, + loginButton: { + width: '100%', + marginTop: tokens.spacingVerticalS, + }, + loadingContainer: { + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + gap: tokens.spacingHorizontalS, + }, +}); + +interface AdminLoginProps { + onLoginSuccess: () => void; +} + +const AdminLogin: React.FC = ({ onLoginSuccess }) => { + const styles = useStyles(); + const [password, setPassword] = useState(''); + const [loading, setLoading] = useState(false); + + const handleLogin = async () => { + if (!password.trim()) { + toast.error('请输入管理员密码'); + return; + } + + setLoading(true); + try { + const result = await verifyAdminPassword(password); + + if (result.success) { + toast.success(result.message || '登录成功'); + onLoginSuccess(); + } else { + toast.error(result.message || '登录失败'); + setPassword(''); // 清空密码输入 + } + } catch (error) { + toast.error('登录过程中发生错误'); + console.error('Login error:', error); + } finally { + setLoading(false); + } + }; + + const handleKeyPress = (event: React.KeyboardEvent) => { + if (event.key === 'Enter' && !loading) { + handleLogin(); + } + }; + + return ( +
+ + +
+ +
+ 管理员登录 + 请输入管理员密码以访问后台 +
+ + +
+
+ +
+ + setPassword(e.target.value)} + onKeyPress={handleKeyPress} + placeholder="请输入管理员密码" + disabled={loading} + contentBefore={} + /> + + + +
+
+
+
+ ); +}; + +export default AdminLogin; \ No newline at end of file diff --git a/src/components/AdminManageComments.tsx b/src/components/AdminManageComments.tsx new file mode 100644 index 0000000..954081c --- /dev/null +++ b/src/components/AdminManageComments.tsx @@ -0,0 +1,259 @@ +import React from 'react'; +import { makeStyles, shorthands, tokens, Button, Input, Textarea, Dropdown, Option, Card, Text } from '@fluentui/react-components'; +import { getComments, type Comment as CommentType } from '../api'; +import { deleteComment, modifyComment } from '../admin_api'; +import { toast } from 'react-toastify'; + +const useStyles = makeStyles({ + modalContent: { + position: 'absolute', + top: '50%', + left: '50%', + transform: 'translate(-50%, -50%)', + width: 'min(860px, 96vw)', + backgroundColor: tokens.colorNeutralBackground1, + boxShadow: tokens.shadow64, + ...shorthands.borderRadius(tokens.borderRadiusXLarge), + ...shorthands.padding(tokens.spacingVerticalL, tokens.spacingHorizontalXL), + zIndex: 1001, + display: 'flex', + flexDirection: 'column', + gap: tokens.spacingVerticalM, + maxHeight: '80vh', + }, + titleRow: { + display: 'flex', + alignItems: 'center', + justifyContent: 'space-between', + }, + title: { + fontSize: tokens.fontSizeBase600, + fontWeight: tokens.fontWeightBold, + }, + closeButton: { + position: 'absolute', + right: tokens.spacingHorizontalM, + top: tokens.spacingVerticalM, + }, + commentsList: { + overflowY: 'auto', + flex: 1, + display: 'flex', + flexDirection: 'column', + gap: tokens.spacingVerticalM, + ...shorthands.padding(tokens.spacingVerticalM), + }, + commentCard: { + backgroundColor: tokens.colorNeutralBackground1, + ...shorthands.borderRadius(tokens.borderRadiusLarge), + ...shorthands.border('1px', 'solid', tokens.colorNeutralStroke1), + boxShadow: tokens.shadow8, + marginBottom: tokens.spacingVerticalS, + padding: tokens.spacingHorizontalM, + width: '100%', + }, + commentHeader: { + display: 'flex', + alignItems: 'baseline', + justifyContent: 'space-between', + color: tokens.colorNeutralForeground1, + }, + nickname: { + fontWeight: tokens.fontWeightSemibold, + }, + commentMeta: { + color: tokens.colorNeutralForeground3, + fontSize: tokens.fontSizeBase300, + }, + childComment: { + marginLeft: tokens.spacingHorizontalL, + borderLeft: `2px solid ${tokens.colorNeutralStroke2}`, + paddingLeft: tokens.spacingHorizontalM, + }, + actionsRow: { + display: 'flex', + gap: tokens.spacingHorizontalS, + marginTop: tokens.spacingVerticalS, + }, + editor: { + display: 'flex', + flexDirection: 'column', + gap: tokens.spacingVerticalS, + }, + fieldRow: { + display: 'flex', + gap: tokens.spacingHorizontalS, + }, + fieldControl: { + flex: 1, + }, +}); + +type AdminManageCommentsProps = { + postId: number; + onClose: () => void; +}; + +const AdminManageComments: React.FC = ({ postId, onClose }) => { + const styles = useStyles(); + const [loading, setLoading] = React.useState(false); + const [comments, setComments] = React.useState([]); + const [editingId, setEditingId] = React.useState(null); + const [nickname, setNickname] = React.useState(''); + const [content, setContent] = React.useState(''); + const [parentId, setParentId] = React.useState(0); + const depthMap = React.useMemo(() => { + const map = new Map(); + const idToParent = new Map(); + comments.forEach(c => idToParent.set(c.id, (c.parent_comment_id as any) ?? 0)); + const calcDepth = (id: number) => { + if (map.has(id)) return map.get(id)!; + let d = 0; + let current = id; + const seen = new Set(); + while (true) { + seen.add(current); + const p = idToParent.get(current) ?? 0; + if (p === 0 || !idToParent.has(p) || seen.has(p)) break; + d += 1; + current = p; + } + map.set(id, d); + return d; + }; + comments.forEach(c => calcDepth(c.id)); + return map; + }, [comments]); + + const loadComments = React.useCallback(async () => { + setLoading(true); + try { + const list = await getComments(postId); + setComments(list); + } catch (e: any) { + toast.error(`加载评论失败:${e?.message || e}`); + } finally { + setLoading(false); + } + }, [postId]); + + React.useEffect(() => { + loadComments(); + }, [loadComments]); + + const startEdit = (c: CommentType) => { + setEditingId(c.id); + setNickname(c.nickname || ''); + setContent(c.content || ''); + setParentId((c.parent_comment_id as any) ?? 0); + }; + + const cancelEdit = () => { + setEditingId(null); + setNickname(''); + setContent(''); + setParentId(0); + }; + + const submitEdit = async () => { + if (editingId === null) return; + if (parentId === editingId) { + toast.error('父评论不能设置为自己'); + return; + } + try { + await modifyComment(editingId, content, Number(parentId), nickname); + toast.success('修改评论成功'); + setComments(prev => prev.map(c => c.id === editingId ? { ...c, content, nickname, parent_comment_id: Number(parentId) } : c)); + cancelEdit(); + } catch (e: any) { + toast.error(e?.message || '修改评论失败'); + } + }; + + const handleDelete = async (id: number) => { + if (!id && id !== 0) return; + try { + await deleteComment(id); + toast.success('删除评论成功'); + setComments(prev => prev.filter(c => c.id !== id)); + } catch (e: any) { + toast.error(e?.message || '删除评论失败'); + } + }; + + // 递归渲染函数工厂(用于显示树形结构) + const renderComments = React.useMemo(() => { + return renderCommentsFactory(comments, styles, startEdit, handleDelete); + }, [comments, styles]); + + return ( +
+
+
评论管理
+ +
+
帖子 #{postId}
+ + {editingId !== null && ( +
+ 修改评论 #{editingId} +
+ setNickname(d.value)} placeholder="用户名" /> + setParentId(Number(data.optionValue))} + > + + {comments.filter(c => c.id !== editingId).map(c => { + const depth = depthMap.get(c.id) ?? 0; + const indent = ' '.repeat(Math.max(0, depth * 2)); + return ( + + ); + })} + +
+