diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 0000000..d6bf767
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1,13 @@
+# 모든 텍스트 파일 LF로 통일
+* text=auto eol=lf
+*.ts text
+*.tsx text
+*.js text
+*.jsx text
+*.css text
+*.png binary
+*.jpg binary
+*.jpeg binary
+*.gif binary
+*.woff binary
+*.woff2 binary
\ No newline at end of file
diff --git a/.github/ISSUE_TEMPLATE/style.md b/.github/ISSUE_TEMPLATE/style.md
index e879c1e..401a1a6 100644
--- a/.github/ISSUE_TEMPLATE/style.md
+++ b/.github/ISSUE_TEMPLATE/style.md
@@ -1,36 +1,36 @@
----
-name: 🎨 Style
-about: UI/UX 또는 스타일 관련 작업 시 작성하는 템플릿
-title: "🎨 "
-labels: style
-assignees: ""
----
-
-## 🛠️ 스타일 구현(변경) 내용
-
-
-
-
-
-## ✅ 구현(변경) 필요성
-
-
-
-
-
-## ✅ 작업 목록
-
-- [ ] 스타일 구현(변경) 1
-- [ ] 스타일 구현(변경) 2
-
-
-
-## ⏳ 예상 완료일
-
-
-
-
-
-## 📌 참고 사항
-
-
+---
+name: 💄 Style
+about: UI/UX 또는 스타일 관련 작업 시 작성하는 템플릿
+title: "💄 "
+labels: style
+assignees: ""
+---
+
+## 🛠️ 스타일 구현(변경) 내용
+
+
+
+
+
+## ✅ 구현(변경) 필요성
+
+
+
+
+
+## ✅ 작업 목록
+
+- [ ] 스타일 구현(변경) 1
+- [ ] 스타일 구현(변경) 2
+
+
+
+## ⏳ 예상 완료일
+
+
+
+
+
+## 📌 참고 사항
+
+
diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md
index c06cef6..b5006b0 100644
--- a/.github/PULL_REQUEST_TEMPLATE.md
+++ b/.github/PULL_REQUEST_TEMPLATE.md
@@ -1,29 +1,21 @@
----
-name: 🚀 Pull Request
-about: 기능, 리팩토링, 스타일 등 작업 후 PR 작성 시 사용하는 템플릿
-title: "🚀 "
-labels: ""
-assignees: ""
----
-
-## 🔍 한 줄 요약
-
-
-
-
-
-## ✨ 작업 내용
-
-
-
-
-
-## ❗ 참고 사항 (선택)
-
-
-
-
-
-## #️⃣ 연관 이슈
-
-
+## 🔍 한 줄 요약
+
+
+
+
+
+## ✨ 작업 내용
+
+
+
+
+
+## ❗ 참고 사항 (선택)
+
+
+
+
+
+## #️⃣ 연관 이슈
+
+
diff --git a/.github/workflows/ci-cd.yml b/.github/workflows/ci-cd.yml
index 3c2617b..905cfbd 100644
--- a/.github/workflows/ci-cd.yml
+++ b/.github/workflows/ci-cd.yml
@@ -9,6 +9,7 @@ on:
- "fix/**"
- "refactor/**"
- "style/**"
+ - "release/**"
pull_request:
branches:
- develop
diff --git a/.gitignore b/.gitignore
index a547bf3..74a3485 100644
--- a/.gitignore
+++ b/.gitignore
@@ -22,3 +22,5 @@ dist-ssr
*.njsproj
*.sln
*.sw?
+
+.eslintcache
diff --git a/README.md b/README.md
index a99f4be..932eaf4 100644
--- a/README.md
+++ b/README.md
@@ -1,2 +1,5 @@
-# boost-docs
-대학생을 위한 팀 프로젝트 매니저 Boost 개발 문서 사이트
\ No newline at end of file
+
+
⚒️ 작업 중 .. ⚒️
+
+

+
diff --git a/components.json b/components.json
new file mode 100644
index 0000000..ecb12e3
--- /dev/null
+++ b/components.json
@@ -0,0 +1,22 @@
+{
+ "$schema": "https://ui.shadcn.com/schema.json",
+ "style": "new-york",
+ "rsc": false,
+ "tsx": true,
+ "tailwind": {
+ "config": "",
+ "css": "src/index.css",
+ "baseColor": "neutral",
+ "cssVariables": true,
+ "prefix": ""
+ },
+ "iconLibrary": "lucide",
+ "aliases": {
+ "components": "@/shared/components",
+ "utils": "@/shared/lib/utils",
+ "ui": "@/shared/components/shadcn",
+ "lib": "@/shared/lib",
+ "hooks": "@/shared/hooks"
+ },
+ "registries": {}
+}
diff --git a/index.html b/index.html
index 76facc7..a9c3fcd 100644
--- a/index.html
+++ b/index.html
@@ -1,10 +1,10 @@
-
-
+
+
-
+
- boost-docs
+ Boost 개발 문서
diff --git a/package.json b/package.json
index cd1942a..f0f6996 100644
--- a/package.json
+++ b/package.json
@@ -7,25 +7,60 @@
"dev": "vite",
"build": "tsc -b && vite build",
"lint": "eslint .",
- "preview": "vite preview"
+ "preview": "vite preview",
+ "prepare": "husky install"
},
"dependencies": {
+ "@radix-ui/react-avatar": "^1.1.11",
+ "@radix-ui/react-collapsible": "^1.1.12",
+ "@radix-ui/react-dialog": "^1.1.15",
+ "@radix-ui/react-dropdown-menu": "^2.1.16",
+ "@radix-ui/react-separator": "^1.1.8",
+ "@radix-ui/react-slot": "^1.2.4",
+ "@radix-ui/react-tooltip": "^1.2.8",
+ "@tailwindcss/vite": "^4.1.17",
+ "class-variance-authority": "^0.7.1",
+ "clsx": "^2.1.1",
+ "lucide-react": "^0.555.0",
+ "motion": "^12.23.25",
"react": "^19.2.0",
- "react-dom": "^19.2.0"
+ "react-dom": "^19.2.0",
+ "react-router-dom": "^7.9.6",
+ "tailwind-merge": "^3.4.0"
},
"devDependencies": {
"@eslint/js": "^9.39.1",
"@types/node": "^24.10.1",
"@types/react": "^19.2.5",
"@types/react-dom": "^19.2.3",
+ "@types/react-router-dom": "^5.3.3",
"@vitejs/plugin-react": "^5.1.1",
+ "autoprefixer": "^10.4.22",
"babel-plugin-react-compiler": "^1.0.0",
"eslint": "^9.39.1",
"eslint-plugin-react-hooks": "^7.0.1",
"eslint-plugin-react-refresh": "^0.4.24",
"globals": "^16.5.0",
+ "husky": "^9.1.7",
+ "lint-staged": "^16.2.7",
+ "postcss": "^8.5.6",
+ "tailwindcss": "^4.1.17",
+ "tw-animate-css": "^1.4.0",
"typescript": "~5.9.3",
"typescript-eslint": "^8.46.4",
"vite": "^7.2.4"
+ },
+ "lint-staged": {
+ "*.{ts,tsx}": [
+ "eslint --fix",
+ "prettier --write"
+ ],
+ "*.{js,jsx}": [
+ "eslint --fix",
+ "prettier --write"
+ ],
+ "*.{css,scss,md,json}": [
+ "prettier --write"
+ ]
}
}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 152d4b5..8c5f64d 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -1,743 +1,2048 @@
-lockfileVersion: '9.0'
+lockfileVersion: "9.0"
settings:
autoInstallPeers: true
excludeLinksFromLockfile: false
importers:
-
.:
dependencies:
+ "@radix-ui/react-avatar":
+ specifier: ^1.1.11
+ version: 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ "@radix-ui/react-collapsible":
+ specifier: ^1.1.12
+ version: 1.1.12(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ "@radix-ui/react-dialog":
+ specifier: ^1.1.15
+ version: 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ "@radix-ui/react-dropdown-menu":
+ specifier: ^2.1.16
+ version: 2.1.16(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ "@radix-ui/react-separator":
+ specifier: ^1.1.8
+ version: 1.1.8(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ "@radix-ui/react-slot":
+ specifier: ^1.2.4
+ version: 1.2.4(@types/react@19.2.7)(react@19.2.0)
+ "@radix-ui/react-tooltip":
+ specifier: ^1.2.8
+ version: 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ "@tailwindcss/vite":
+ specifier: ^4.1.17
+ version: 4.1.17(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.1))
+ class-variance-authority:
+ specifier: ^0.7.1
+ version: 0.7.1
+ clsx:
+ specifier: ^2.1.1
+ version: 2.1.1
+ lucide-react:
+ specifier: ^0.555.0
+ version: 0.555.0(react@19.2.0)
+ motion:
+ specifier: ^12.23.25
+ version: 12.23.25(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
react:
specifier: ^19.2.0
version: 19.2.0
react-dom:
specifier: ^19.2.0
version: 19.2.0(react@19.2.0)
+ react-router-dom:
+ specifier: ^7.9.6
+ version: 7.9.6(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ tailwind-merge:
+ specifier: ^3.4.0
+ version: 3.4.0
devDependencies:
- '@eslint/js':
+ "@eslint/js":
specifier: ^9.39.1
version: 9.39.1
- '@types/node':
+ "@types/node":
specifier: ^24.10.1
version: 24.10.1
- '@types/react':
+ "@types/react":
specifier: ^19.2.5
version: 19.2.7
- '@types/react-dom':
+ "@types/react-dom":
specifier: ^19.2.3
version: 19.2.3(@types/react@19.2.7)
- '@vitejs/plugin-react':
+ "@types/react-router-dom":
+ specifier: ^5.3.3
+ version: 5.3.3
+ "@vitejs/plugin-react":
specifier: ^5.1.1
- version: 5.1.1(vite@7.2.4(@types/node@24.10.1))
+ version: 5.1.1(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.1))
+ autoprefixer:
+ specifier: ^10.4.22
+ version: 10.4.22(postcss@8.5.6)
babel-plugin-react-compiler:
specifier: ^1.0.0
version: 1.0.0
eslint:
specifier: ^9.39.1
- version: 9.39.1
+ version: 9.39.1(jiti@2.6.1)
eslint-plugin-react-hooks:
specifier: ^7.0.1
- version: 7.0.1(eslint@9.39.1)
+ version: 7.0.1(eslint@9.39.1(jiti@2.6.1))
eslint-plugin-react-refresh:
specifier: ^0.4.24
- version: 0.4.24(eslint@9.39.1)
+ version: 0.4.24(eslint@9.39.1(jiti@2.6.1))
globals:
specifier: ^16.5.0
version: 16.5.0
+ husky:
+ specifier: ^9.1.7
+ version: 9.1.7
+ lint-staged:
+ specifier: ^16.2.7
+ version: 16.2.7
+ postcss:
+ specifier: ^8.5.6
+ version: 8.5.6
+ tailwindcss:
+ specifier: ^4.1.17
+ version: 4.1.17
+ tw-animate-css:
+ specifier: ^1.4.0
+ version: 1.4.0
typescript:
specifier: ~5.9.3
version: 5.9.3
typescript-eslint:
specifier: ^8.46.4
- version: 8.48.0(eslint@9.39.1)(typescript@5.9.3)
+ version: 8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
vite:
specifier: ^7.2.4
- version: 7.2.4(@types/node@24.10.1)
+ version: 7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.1)
packages:
-
- '@babel/code-frame@7.27.1':
- resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==}
- engines: {node: '>=6.9.0'}
-
- '@babel/compat-data@7.28.5':
- resolution: {integrity: sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA==}
- engines: {node: '>=6.9.0'}
-
- '@babel/core@7.28.5':
- resolution: {integrity: sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==}
- engines: {node: '>=6.9.0'}
-
- '@babel/generator@7.28.5':
- resolution: {integrity: sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==}
- 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'}
+ "@babel/code-frame@7.27.1":
+ resolution:
+ {
+ integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==,
+ }
+ engines: { node: ">=6.9.0" }
+
+ "@babel/compat-data@7.28.5":
+ resolution:
+ {
+ integrity: sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA==,
+ }
+ engines: { node: ">=6.9.0" }
+
+ "@babel/core@7.28.5":
+ resolution:
+ {
+ integrity: sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==,
+ }
+ engines: { node: ">=6.9.0" }
+
+ "@babel/generator@7.28.5":
+ resolution:
+ {
+ integrity: sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==,
+ }
+ 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.28.5':
- resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==}
- 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.5':
- resolution: {integrity: sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==}
- engines: {node: '>=6.0.0'}
+ "@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.28.5":
+ resolution:
+ {
+ integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==,
+ }
+ 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.5":
+ resolution:
+ {
+ integrity: sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==,
+ }
+ 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'}
+ "@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'}
+ "@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/template@7.27.2':
- resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==}
- engines: {node: '>=6.9.0'}
-
- '@babel/traverse@7.28.5':
- resolution: {integrity: sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==}
- engines: {node: '>=6.9.0'}
-
- '@babel/types@7.28.5':
- resolution: {integrity: sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==}
- engines: {node: '>=6.9.0'}
-
- '@esbuild/aix-ppc64@0.25.12':
- resolution: {integrity: sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==}
- engines: {node: '>=18'}
+ "@babel/core": ^7.0.0-0
+
+ "@babel/template@7.27.2":
+ resolution:
+ {
+ integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==,
+ }
+ engines: { node: ">=6.9.0" }
+
+ "@babel/traverse@7.28.5":
+ resolution:
+ {
+ integrity: sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==,
+ }
+ engines: { node: ">=6.9.0" }
+
+ "@babel/types@7.28.5":
+ resolution:
+ {
+ integrity: sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==,
+ }
+ engines: { node: ">=6.9.0" }
+
+ "@esbuild/aix-ppc64@0.25.12":
+ resolution:
+ {
+ integrity: sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==,
+ }
+ engines: { node: ">=18" }
cpu: [ppc64]
os: [aix]
- '@esbuild/android-arm64@0.25.12':
- resolution: {integrity: sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==}
- engines: {node: '>=18'}
+ "@esbuild/android-arm64@0.25.12":
+ resolution:
+ {
+ integrity: sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==,
+ }
+ engines: { node: ">=18" }
cpu: [arm64]
os: [android]
- '@esbuild/android-arm@0.25.12':
- resolution: {integrity: sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==}
- engines: {node: '>=18'}
+ "@esbuild/android-arm@0.25.12":
+ resolution:
+ {
+ integrity: sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==,
+ }
+ engines: { node: ">=18" }
cpu: [arm]
os: [android]
- '@esbuild/android-x64@0.25.12':
- resolution: {integrity: sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==}
- engines: {node: '>=18'}
+ "@esbuild/android-x64@0.25.12":
+ resolution:
+ {
+ integrity: sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==,
+ }
+ engines: { node: ">=18" }
cpu: [x64]
os: [android]
- '@esbuild/darwin-arm64@0.25.12':
- resolution: {integrity: sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==}
- engines: {node: '>=18'}
+ "@esbuild/darwin-arm64@0.25.12":
+ resolution:
+ {
+ integrity: sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==,
+ }
+ engines: { node: ">=18" }
cpu: [arm64]
os: [darwin]
- '@esbuild/darwin-x64@0.25.12':
- resolution: {integrity: sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==}
- engines: {node: '>=18'}
+ "@esbuild/darwin-x64@0.25.12":
+ resolution:
+ {
+ integrity: sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==,
+ }
+ engines: { node: ">=18" }
cpu: [x64]
os: [darwin]
- '@esbuild/freebsd-arm64@0.25.12':
- resolution: {integrity: sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==}
- engines: {node: '>=18'}
+ "@esbuild/freebsd-arm64@0.25.12":
+ resolution:
+ {
+ integrity: sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==,
+ }
+ engines: { node: ">=18" }
cpu: [arm64]
os: [freebsd]
- '@esbuild/freebsd-x64@0.25.12':
- resolution: {integrity: sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==}
- engines: {node: '>=18'}
+ "@esbuild/freebsd-x64@0.25.12":
+ resolution:
+ {
+ integrity: sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==,
+ }
+ engines: { node: ">=18" }
cpu: [x64]
os: [freebsd]
- '@esbuild/linux-arm64@0.25.12':
- resolution: {integrity: sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==}
- engines: {node: '>=18'}
+ "@esbuild/linux-arm64@0.25.12":
+ resolution:
+ {
+ integrity: sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==,
+ }
+ engines: { node: ">=18" }
cpu: [arm64]
os: [linux]
- '@esbuild/linux-arm@0.25.12':
- resolution: {integrity: sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==}
- engines: {node: '>=18'}
+ "@esbuild/linux-arm@0.25.12":
+ resolution:
+ {
+ integrity: sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==,
+ }
+ engines: { node: ">=18" }
cpu: [arm]
os: [linux]
- '@esbuild/linux-ia32@0.25.12':
- resolution: {integrity: sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==}
- engines: {node: '>=18'}
+ "@esbuild/linux-ia32@0.25.12":
+ resolution:
+ {
+ integrity: sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==,
+ }
+ engines: { node: ">=18" }
cpu: [ia32]
os: [linux]
- '@esbuild/linux-loong64@0.25.12':
- resolution: {integrity: sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==}
- engines: {node: '>=18'}
+ "@esbuild/linux-loong64@0.25.12":
+ resolution:
+ {
+ integrity: sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==,
+ }
+ engines: { node: ">=18" }
cpu: [loong64]
os: [linux]
- '@esbuild/linux-mips64el@0.25.12':
- resolution: {integrity: sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==}
- engines: {node: '>=18'}
+ "@esbuild/linux-mips64el@0.25.12":
+ resolution:
+ {
+ integrity: sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==,
+ }
+ engines: { node: ">=18" }
cpu: [mips64el]
os: [linux]
- '@esbuild/linux-ppc64@0.25.12':
- resolution: {integrity: sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==}
- engines: {node: '>=18'}
+ "@esbuild/linux-ppc64@0.25.12":
+ resolution:
+ {
+ integrity: sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==,
+ }
+ engines: { node: ">=18" }
cpu: [ppc64]
os: [linux]
- '@esbuild/linux-riscv64@0.25.12':
- resolution: {integrity: sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==}
- engines: {node: '>=18'}
+ "@esbuild/linux-riscv64@0.25.12":
+ resolution:
+ {
+ integrity: sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==,
+ }
+ engines: { node: ">=18" }
cpu: [riscv64]
os: [linux]
- '@esbuild/linux-s390x@0.25.12':
- resolution: {integrity: sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==}
- engines: {node: '>=18'}
+ "@esbuild/linux-s390x@0.25.12":
+ resolution:
+ {
+ integrity: sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==,
+ }
+ engines: { node: ">=18" }
cpu: [s390x]
os: [linux]
- '@esbuild/linux-x64@0.25.12':
- resolution: {integrity: sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==}
- engines: {node: '>=18'}
+ "@esbuild/linux-x64@0.25.12":
+ resolution:
+ {
+ integrity: sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==,
+ }
+ engines: { node: ">=18" }
cpu: [x64]
os: [linux]
- '@esbuild/netbsd-arm64@0.25.12':
- resolution: {integrity: sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==}
- engines: {node: '>=18'}
+ "@esbuild/netbsd-arm64@0.25.12":
+ resolution:
+ {
+ integrity: sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==,
+ }
+ engines: { node: ">=18" }
cpu: [arm64]
os: [netbsd]
- '@esbuild/netbsd-x64@0.25.12':
- resolution: {integrity: sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==}
- engines: {node: '>=18'}
+ "@esbuild/netbsd-x64@0.25.12":
+ resolution:
+ {
+ integrity: sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==,
+ }
+ engines: { node: ">=18" }
cpu: [x64]
os: [netbsd]
- '@esbuild/openbsd-arm64@0.25.12':
- resolution: {integrity: sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==}
- engines: {node: '>=18'}
+ "@esbuild/openbsd-arm64@0.25.12":
+ resolution:
+ {
+ integrity: sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==,
+ }
+ engines: { node: ">=18" }
cpu: [arm64]
os: [openbsd]
- '@esbuild/openbsd-x64@0.25.12':
- resolution: {integrity: sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==}
- engines: {node: '>=18'}
+ "@esbuild/openbsd-x64@0.25.12":
+ resolution:
+ {
+ integrity: sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==,
+ }
+ engines: { node: ">=18" }
cpu: [x64]
os: [openbsd]
- '@esbuild/openharmony-arm64@0.25.12':
- resolution: {integrity: sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==}
- engines: {node: '>=18'}
+ "@esbuild/openharmony-arm64@0.25.12":
+ resolution:
+ {
+ integrity: sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==,
+ }
+ engines: { node: ">=18" }
cpu: [arm64]
os: [openharmony]
- '@esbuild/sunos-x64@0.25.12':
- resolution: {integrity: sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==}
- engines: {node: '>=18'}
+ "@esbuild/sunos-x64@0.25.12":
+ resolution:
+ {
+ integrity: sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==,
+ }
+ engines: { node: ">=18" }
cpu: [x64]
os: [sunos]
- '@esbuild/win32-arm64@0.25.12':
- resolution: {integrity: sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==}
- engines: {node: '>=18'}
+ "@esbuild/win32-arm64@0.25.12":
+ resolution:
+ {
+ integrity: sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==,
+ }
+ engines: { node: ">=18" }
cpu: [arm64]
os: [win32]
- '@esbuild/win32-ia32@0.25.12':
- resolution: {integrity: sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==}
- engines: {node: '>=18'}
+ "@esbuild/win32-ia32@0.25.12":
+ resolution:
+ {
+ integrity: sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==,
+ }
+ engines: { node: ">=18" }
cpu: [ia32]
os: [win32]
- '@esbuild/win32-x64@0.25.12':
- resolution: {integrity: sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==}
- engines: {node: '>=18'}
+ "@esbuild/win32-x64@0.25.12":
+ resolution:
+ {
+ integrity: sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==,
+ }
+ 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}
+ "@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.2':
- resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==}
- engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
+ "@eslint-community/regexpp@4.12.2":
+ resolution:
+ {
+ integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==,
+ }
+ engines: { node: ^12.0.0 || ^14.0.0 || >=16.0.0 }
+
+ "@eslint/config-array@0.21.1":
+ resolution:
+ {
+ integrity: sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==,
+ }
+ engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
+
+ "@eslint/config-helpers@0.4.2":
+ resolution:
+ {
+ integrity: sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==,
+ }
+ engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
+
+ "@eslint/core@0.17.0":
+ resolution:
+ {
+ integrity: sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==,
+ }
+ 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.39.1":
+ resolution:
+ {
+ integrity: sha512-S26Stp4zCy88tH94QbBv3XCuzRQiZ9yXofEILmglYTh/Ug/a9/umqvgFtYBAo3Lp0nsI/5/qH1CCrbdK3AP1Tw==,
+ }
+ engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
+
+ "@eslint/object-schema@2.1.7":
+ resolution:
+ {
+ integrity: sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==,
+ }
+ engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
+
+ "@eslint/plugin-kit@0.4.1":
+ resolution:
+ {
+ integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==,
+ }
+ 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/dom@1.7.4":
+ resolution:
+ {
+ integrity: sha512-OOchDgh4F2CchOX94cRVqhvy7b3AFb+/rQXyswmzmGakRfkMgoWVjfnLWkRirfLEfuD4ysVW16eXzwt3jHIzKA==,
+ }
+
+ "@floating-ui/react-dom@2.1.6":
+ resolution:
+ {
+ integrity: sha512-4JX6rEatQEvlmgU80wZyq9RT96HZJa88q8hp0pBd+LrczeDI4o6uA2M+uvxngVHo4Ihr8uibXxH6+70zhAFrVw==,
+ }
+ peerDependencies:
+ react: ">=16.8.0"
+ react-dom: ">=16.8.0"
+
+ "@floating-ui/utils@0.2.10":
+ resolution:
+ {
+ integrity: sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==,
+ }
+
+ "@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==,
+ }
+
+ "@radix-ui/primitive@1.1.3":
+ resolution:
+ {
+ integrity: sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg==,
+ }
+
+ "@radix-ui/react-arrow@1.1.7":
+ resolution:
+ {
+ integrity: sha512-F+M1tLhO+mlQaOWspE8Wstg+z6PwxwRd8oQ8IXceWz92kfAmalTRf0EjrouQeo7QssEPfCn05B4Ihs1K9WQ/7w==,
+ }
+ peerDependencies:
+ "@types/react": "*"
+ "@types/react-dom": "*"
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ "@types/react-dom":
+ optional: true
- '@eslint/config-array@0.21.1':
- resolution: {integrity: sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ "@radix-ui/react-avatar@1.1.11":
+ resolution:
+ {
+ integrity: sha512-0Qk603AHGV28BOBO34p7IgD5m+V5Sg/YovfayABkoDDBM5d3NCx0Mp4gGrjzLGes1jV5eNOE1r3itqOR33VC6Q==,
+ }
+ peerDependencies:
+ "@types/react": "*"
+ "@types/react-dom": "*"
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ "@types/react-dom":
+ optional: true
- '@eslint/config-helpers@0.4.2':
- resolution: {integrity: sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ "@radix-ui/react-collapsible@1.1.12":
+ resolution:
+ {
+ integrity: sha512-Uu+mSh4agx2ib1uIGPP4/CKNULyajb3p92LsVXmH2EHVMTfZWpll88XJ0j4W0z3f8NK1eYl1+Mf/szHPmcHzyA==,
+ }
+ peerDependencies:
+ "@types/react": "*"
+ "@types/react-dom": "*"
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ "@types/react-dom":
+ optional: true
- '@eslint/core@0.17.0':
- resolution: {integrity: sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ "@radix-ui/react-collection@1.1.7":
+ resolution:
+ {
+ integrity: sha512-Fh9rGN0MoI4ZFUNyfFVNU4y9LUz93u9/0K+yLgA2bwRojxM8JU1DyvvMBabnZPBgMWREAJvU2jjVzq+LrFUglw==,
+ }
+ peerDependencies:
+ "@types/react": "*"
+ "@types/react-dom": "*"
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ "@types/react-dom":
+ optional: true
- '@eslint/eslintrc@3.3.1':
- resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ "@radix-ui/react-compose-refs@1.1.2":
+ resolution:
+ {
+ integrity: sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==,
+ }
+ peerDependencies:
+ "@types/react": "*"
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
- '@eslint/js@9.39.1':
- resolution: {integrity: sha512-S26Stp4zCy88tH94QbBv3XCuzRQiZ9yXofEILmglYTh/Ug/a9/umqvgFtYBAo3Lp0nsI/5/qH1CCrbdK3AP1Tw==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ "@radix-ui/react-context@1.1.2":
+ resolution:
+ {
+ integrity: sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==,
+ }
+ peerDependencies:
+ "@types/react": "*"
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
- '@eslint/object-schema@2.1.7':
- resolution: {integrity: sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ "@radix-ui/react-context@1.1.3":
+ resolution:
+ {
+ integrity: sha512-ieIFACdMpYfMEjF0rEf5KLvfVyIkOz6PDGyNnP+u+4xQ6jny3VCgA4OgXOwNx2aUkxn8zx9fiVcM8CfFYv9Lxw==,
+ }
+ peerDependencies:
+ "@types/react": "*"
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
- '@eslint/plugin-kit@0.4.1':
- resolution: {integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ "@radix-ui/react-dialog@1.1.15":
+ resolution:
+ {
+ integrity: sha512-TCglVRtzlffRNxRMEyR36DGBLJpeusFcgMVD9PZEzAKnUs1lKCgX5u9BmC2Yg+LL9MgZDugFFs1Vl+Jp4t/PGw==,
+ }
+ peerDependencies:
+ "@types/react": "*"
+ "@types/react-dom": "*"
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ "@types/react-dom":
+ optional: true
+
+ "@radix-ui/react-direction@1.1.1":
+ resolution:
+ {
+ integrity: sha512-1UEWRX6jnOA2y4H5WczZ44gOOjTEmlqv1uNW4GAJEO5+bauCBhv8snY65Iw5/VOS/ghKN9gr2KjnLKxrsvoMVw==,
+ }
+ peerDependencies:
+ "@types/react": "*"
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+
+ "@radix-ui/react-dismissable-layer@1.1.11":
+ resolution:
+ {
+ integrity: sha512-Nqcp+t5cTB8BinFkZgXiMJniQH0PsUt2k51FUhbdfeKvc4ACcG2uQniY/8+h1Yv6Kza4Q7lD7PQV0z0oicE0Mg==,
+ }
+ peerDependencies:
+ "@types/react": "*"
+ "@types/react-dom": "*"
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ "@types/react-dom":
+ optional: true
+
+ "@radix-ui/react-dropdown-menu@2.1.16":
+ resolution:
+ {
+ integrity: sha512-1PLGQEynI/3OX/ftV54COn+3Sud/Mn8vALg2rWnBLnRaGtJDduNW/22XjlGgPdpcIbiQxjKtb7BkcjP00nqfJw==,
+ }
+ peerDependencies:
+ "@types/react": "*"
+ "@types/react-dom": "*"
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ "@types/react-dom":
+ optional: true
+
+ "@radix-ui/react-focus-guards@1.1.3":
+ resolution:
+ {
+ integrity: sha512-0rFg/Rj2Q62NCm62jZw0QX7a3sz6QCQU0LpZdNrJX8byRGaGVTqbrW9jAoIAHyMQqsNpeZ81YgSizOt5WXq0Pw==,
+ }
+ peerDependencies:
+ "@types/react": "*"
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+
+ "@radix-ui/react-focus-scope@1.1.7":
+ resolution:
+ {
+ integrity: sha512-t2ODlkXBQyn7jkl6TNaw/MtVEVvIGelJDCG41Okq/KwUsJBwQ4XVZsHAVUkK4mBv3ewiAS3PGuUWuY2BoK4ZUw==,
+ }
+ peerDependencies:
+ "@types/react": "*"
+ "@types/react-dom": "*"
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ "@types/react-dom":
+ optional: true
+
+ "@radix-ui/react-id@1.1.1":
+ resolution:
+ {
+ integrity: sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg==,
+ }
+ peerDependencies:
+ "@types/react": "*"
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+
+ "@radix-ui/react-menu@2.1.16":
+ resolution:
+ {
+ integrity: sha512-72F2T+PLlphrqLcAotYPp0uJMr5SjP5SL01wfEspJbru5Zs5vQaSHb4VB3ZMJPimgHHCHG7gMOeOB9H3Hdmtxg==,
+ }
+ peerDependencies:
+ "@types/react": "*"
+ "@types/react-dom": "*"
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ "@types/react-dom":
+ optional: true
+
+ "@radix-ui/react-popper@1.2.8":
+ resolution:
+ {
+ integrity: sha512-0NJQ4LFFUuWkE7Oxf0htBKS6zLkkjBH+hM1uk7Ng705ReR8m/uelduy1DBo0PyBXPKVnBA6YBlU94MBGXrSBCw==,
+ }
+ peerDependencies:
+ "@types/react": "*"
+ "@types/react-dom": "*"
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ "@types/react-dom":
+ optional: true
+
+ "@radix-ui/react-portal@1.1.9":
+ resolution:
+ {
+ integrity: sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ==,
+ }
+ peerDependencies:
+ "@types/react": "*"
+ "@types/react-dom": "*"
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ "@types/react-dom":
+ optional: true
+
+ "@radix-ui/react-presence@1.1.5":
+ resolution:
+ {
+ integrity: sha512-/jfEwNDdQVBCNvjkGit4h6pMOzq8bHkopq458dPt2lMjx+eBQUohZNG9A7DtO/O5ukSbxuaNGXMjHicgwy6rQQ==,
+ }
+ peerDependencies:
+ "@types/react": "*"
+ "@types/react-dom": "*"
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ "@types/react-dom":
+ optional: true
+
+ "@radix-ui/react-primitive@2.1.3":
+ resolution:
+ {
+ integrity: sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==,
+ }
+ peerDependencies:
+ "@types/react": "*"
+ "@types/react-dom": "*"
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ "@types/react-dom":
+ optional: true
+
+ "@radix-ui/react-primitive@2.1.4":
+ resolution:
+ {
+ integrity: sha512-9hQc4+GNVtJAIEPEqlYqW5RiYdrr8ea5XQ0ZOnD6fgru+83kqT15mq2OCcbe8KnjRZl5vF3ks69AKz3kh1jrhg==,
+ }
+ peerDependencies:
+ "@types/react": "*"
+ "@types/react-dom": "*"
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ "@types/react-dom":
+ optional: true
+
+ "@radix-ui/react-roving-focus@1.1.11":
+ resolution:
+ {
+ integrity: sha512-7A6S9jSgm/S+7MdtNDSb+IU859vQqJ/QAtcYQcfFC6W8RS4IxIZDldLR0xqCFZ6DCyrQLjLPsxtTNch5jVA4lA==,
+ }
+ peerDependencies:
+ "@types/react": "*"
+ "@types/react-dom": "*"
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ "@types/react-dom":
+ optional: true
+
+ "@radix-ui/react-separator@1.1.8":
+ resolution:
+ {
+ integrity: sha512-sDvqVY4itsKwwSMEe0jtKgfTh+72Sy3gPmQpjqcQneqQ4PFmr/1I0YA+2/puilhggCe2gJcx5EBAYFkWkdpa5g==,
+ }
+ peerDependencies:
+ "@types/react": "*"
+ "@types/react-dom": "*"
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ "@types/react-dom":
+ optional: true
+
+ "@radix-ui/react-slot@1.2.3":
+ resolution:
+ {
+ integrity: sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==,
+ }
+ peerDependencies:
+ "@types/react": "*"
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+
+ "@radix-ui/react-slot@1.2.4":
+ resolution:
+ {
+ integrity: sha512-Jl+bCv8HxKnlTLVrcDE8zTMJ09R9/ukw4qBs/oZClOfoQk/cOTbDn+NceXfV7j09YPVQUryJPHurafcSg6EVKA==,
+ }
+ peerDependencies:
+ "@types/react": "*"
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
- '@humanfs/core@0.19.1':
- resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==}
- engines: {node: '>=18.18.0'}
+ "@radix-ui/react-tooltip@1.2.8":
+ resolution:
+ {
+ integrity: sha512-tY7sVt1yL9ozIxvmbtN5qtmH2krXcBCfjEiCgKGLqunJHvgvZG2Pcl2oQ3kbcZARb1BGEHdkLzcYGO8ynVlieg==,
+ }
+ peerDependencies:
+ "@types/react": "*"
+ "@types/react-dom": "*"
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ "@types/react-dom":
+ optional: true
- '@humanfs/node@0.16.7':
- resolution: {integrity: sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==}
- engines: {node: '>=18.18.0'}
+ "@radix-ui/react-use-callback-ref@1.1.1":
+ resolution:
+ {
+ integrity: sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg==,
+ }
+ peerDependencies:
+ "@types/react": "*"
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
- '@humanwhocodes/module-importer@1.0.1':
- resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==}
- engines: {node: '>=12.22'}
+ "@radix-ui/react-use-controllable-state@1.2.2":
+ resolution:
+ {
+ integrity: sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==,
+ }
+ peerDependencies:
+ "@types/react": "*"
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
- '@humanwhocodes/retry@0.4.3':
- resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==}
- engines: {node: '>=18.18'}
+ "@radix-ui/react-use-effect-event@0.0.2":
+ resolution:
+ {
+ integrity: sha512-Qp8WbZOBe+blgpuUT+lw2xheLP8q0oatc9UpmiemEICxGvFLYmHm9QowVZGHtJlGbS6A6yJ3iViad/2cVjnOiA==,
+ }
+ peerDependencies:
+ "@types/react": "*"
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
- '@jridgewell/gen-mapping@0.3.13':
- resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==}
+ "@radix-ui/react-use-escape-keydown@1.1.1":
+ resolution:
+ {
+ integrity: sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g==,
+ }
+ peerDependencies:
+ "@types/react": "*"
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
- '@jridgewell/remapping@2.3.5':
- resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==}
+ "@radix-ui/react-use-is-hydrated@0.1.0":
+ resolution:
+ {
+ integrity: sha512-U+UORVEq+cTnRIaostJv9AGdV3G6Y+zbVd+12e18jQ5A3c0xL03IhnHuiU4UV69wolOQp5GfR58NW/EgdQhwOA==,
+ }
+ peerDependencies:
+ "@types/react": "*"
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
- '@jridgewell/resolve-uri@3.1.2':
- resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
- engines: {node: '>=6.0.0'}
+ "@radix-ui/react-use-layout-effect@1.1.1":
+ resolution:
+ {
+ integrity: sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==,
+ }
+ peerDependencies:
+ "@types/react": "*"
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
- '@jridgewell/sourcemap-codec@1.5.5':
- resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==}
+ "@radix-ui/react-use-rect@1.1.1":
+ resolution:
+ {
+ integrity: sha512-QTYuDesS0VtuHNNvMh+CjlKJ4LJickCMUAqjlE3+j8w+RlRpwyX3apEQKGFzbZGdo7XNG1tXa+bQqIE7HIXT2w==,
+ }
+ peerDependencies:
+ "@types/react": "*"
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
- '@jridgewell/trace-mapping@0.3.31':
- resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==}
+ "@radix-ui/react-use-size@1.1.1":
+ resolution:
+ {
+ integrity: sha512-ewrXRDTAqAXlkl6t/fkXWNAhFX9I+CkKlw6zjEwk86RSPKwZr3xpBRso655aqYafwtnbpHLj6toFzmd6xdVptQ==,
+ }
+ peerDependencies:
+ "@types/react": "*"
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
- '@rolldown/pluginutils@1.0.0-beta.47':
- resolution: {integrity: sha512-8QagwMH3kNCuzD8EWL8R2YPW5e4OrHNSAHRFDdmFqEwEaD/KcNKjVoumo+gP2vW5eKB2UPbM6vTYiGZX0ixLnw==}
+ "@radix-ui/react-visually-hidden@1.2.3":
+ resolution:
+ {
+ integrity: sha512-pzJq12tEaaIhqjbzpCuv/OypJY/BPavOofm+dbab+MHLajy277+1lLm6JFcGgF5eskJ6mquGirhXY2GD/8u8Ug==,
+ }
+ peerDependencies:
+ "@types/react": "*"
+ "@types/react-dom": "*"
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ "@types/react-dom":
+ optional: true
- '@rollup/rollup-android-arm-eabi@4.53.3':
- resolution: {integrity: sha512-mRSi+4cBjrRLoaal2PnqH82Wqyb+d3HsPUN/W+WslCXsZsyHa9ZeQQX/pQsZaVIWDkPcpV6jJ+3KLbTbgnwv8w==}
+ "@radix-ui/rect@1.1.1":
+ resolution:
+ {
+ integrity: sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==,
+ }
+
+ "@rolldown/pluginutils@1.0.0-beta.47":
+ resolution:
+ {
+ integrity: sha512-8QagwMH3kNCuzD8EWL8R2YPW5e4OrHNSAHRFDdmFqEwEaD/KcNKjVoumo+gP2vW5eKB2UPbM6vTYiGZX0ixLnw==,
+ }
+
+ "@rollup/rollup-android-arm-eabi@4.53.3":
+ resolution:
+ {
+ integrity: sha512-mRSi+4cBjrRLoaal2PnqH82Wqyb+d3HsPUN/W+WslCXsZsyHa9ZeQQX/pQsZaVIWDkPcpV6jJ+3KLbTbgnwv8w==,
+ }
cpu: [arm]
os: [android]
- '@rollup/rollup-android-arm64@4.53.3':
- resolution: {integrity: sha512-CbDGaMpdE9sh7sCmTrTUyllhrg65t6SwhjlMJsLr+J8YjFuPmCEjbBSx4Z/e4SmDyH3aB5hGaJUP2ltV/vcs4w==}
+ "@rollup/rollup-android-arm64@4.53.3":
+ resolution:
+ {
+ integrity: sha512-CbDGaMpdE9sh7sCmTrTUyllhrg65t6SwhjlMJsLr+J8YjFuPmCEjbBSx4Z/e4SmDyH3aB5hGaJUP2ltV/vcs4w==,
+ }
cpu: [arm64]
os: [android]
- '@rollup/rollup-darwin-arm64@4.53.3':
- resolution: {integrity: sha512-Nr7SlQeqIBpOV6BHHGZgYBuSdanCXuw09hon14MGOLGmXAFYjx1wNvquVPmpZnl0tLjg25dEdr4IQ6GgyToCUA==}
+ "@rollup/rollup-darwin-arm64@4.53.3":
+ resolution:
+ {
+ integrity: sha512-Nr7SlQeqIBpOV6BHHGZgYBuSdanCXuw09hon14MGOLGmXAFYjx1wNvquVPmpZnl0tLjg25dEdr4IQ6GgyToCUA==,
+ }
cpu: [arm64]
os: [darwin]
- '@rollup/rollup-darwin-x64@4.53.3':
- resolution: {integrity: sha512-DZ8N4CSNfl965CmPktJ8oBnfYr3F8dTTNBQkRlffnUarJ2ohudQD17sZBa097J8xhQ26AwhHJ5mvUyQW8ddTsQ==}
+ "@rollup/rollup-darwin-x64@4.53.3":
+ resolution:
+ {
+ integrity: sha512-DZ8N4CSNfl965CmPktJ8oBnfYr3F8dTTNBQkRlffnUarJ2ohudQD17sZBa097J8xhQ26AwhHJ5mvUyQW8ddTsQ==,
+ }
cpu: [x64]
os: [darwin]
- '@rollup/rollup-freebsd-arm64@4.53.3':
- resolution: {integrity: sha512-yMTrCrK92aGyi7GuDNtGn2sNW+Gdb4vErx4t3Gv/Tr+1zRb8ax4z8GWVRfr3Jw8zJWvpGHNpss3vVlbF58DZ4w==}
+ "@rollup/rollup-freebsd-arm64@4.53.3":
+ resolution:
+ {
+ integrity: sha512-yMTrCrK92aGyi7GuDNtGn2sNW+Gdb4vErx4t3Gv/Tr+1zRb8ax4z8GWVRfr3Jw8zJWvpGHNpss3vVlbF58DZ4w==,
+ }
cpu: [arm64]
os: [freebsd]
- '@rollup/rollup-freebsd-x64@4.53.3':
- resolution: {integrity: sha512-lMfF8X7QhdQzseM6XaX0vbno2m3hlyZFhwcndRMw8fbAGUGL3WFMBdK0hbUBIUYcEcMhVLr1SIamDeuLBnXS+Q==}
+ "@rollup/rollup-freebsd-x64@4.53.3":
+ resolution:
+ {
+ integrity: sha512-lMfF8X7QhdQzseM6XaX0vbno2m3hlyZFhwcndRMw8fbAGUGL3WFMBdK0hbUBIUYcEcMhVLr1SIamDeuLBnXS+Q==,
+ }
cpu: [x64]
os: [freebsd]
- '@rollup/rollup-linux-arm-gnueabihf@4.53.3':
- resolution: {integrity: sha512-k9oD15soC/Ln6d2Wv/JOFPzZXIAIFLp6B+i14KhxAfnq76ajt0EhYc5YPeX6W1xJkAdItcVT+JhKl1QZh44/qw==}
+ "@rollup/rollup-linux-arm-gnueabihf@4.53.3":
+ resolution:
+ {
+ integrity: sha512-k9oD15soC/Ln6d2Wv/JOFPzZXIAIFLp6B+i14KhxAfnq76ajt0EhYc5YPeX6W1xJkAdItcVT+JhKl1QZh44/qw==,
+ }
cpu: [arm]
os: [linux]
- '@rollup/rollup-linux-arm-musleabihf@4.53.3':
- resolution: {integrity: sha512-vTNlKq+N6CK/8UktsrFuc+/7NlEYVxgaEgRXVUVK258Z5ymho29skzW1sutgYjqNnquGwVUObAaxae8rZ6YMhg==}
+ "@rollup/rollup-linux-arm-musleabihf@4.53.3":
+ resolution:
+ {
+ integrity: sha512-vTNlKq+N6CK/8UktsrFuc+/7NlEYVxgaEgRXVUVK258Z5ymho29skzW1sutgYjqNnquGwVUObAaxae8rZ6YMhg==,
+ }
cpu: [arm]
os: [linux]
- '@rollup/rollup-linux-arm64-gnu@4.53.3':
- resolution: {integrity: sha512-RGrFLWgMhSxRs/EWJMIFM1O5Mzuz3Xy3/mnxJp/5cVhZ2XoCAxJnmNsEyeMJtpK+wu0FJFWz+QF4mjCA7AUQ3w==}
+ "@rollup/rollup-linux-arm64-gnu@4.53.3":
+ resolution:
+ {
+ integrity: sha512-RGrFLWgMhSxRs/EWJMIFM1O5Mzuz3Xy3/mnxJp/5cVhZ2XoCAxJnmNsEyeMJtpK+wu0FJFWz+QF4mjCA7AUQ3w==,
+ }
cpu: [arm64]
os: [linux]
- '@rollup/rollup-linux-arm64-musl@4.53.3':
- resolution: {integrity: sha512-kASyvfBEWYPEwe0Qv4nfu6pNkITLTb32p4yTgzFCocHnJLAHs+9LjUu9ONIhvfT/5lv4YS5muBHyuV84epBo/A==}
+ "@rollup/rollup-linux-arm64-musl@4.53.3":
+ resolution:
+ {
+ integrity: sha512-kASyvfBEWYPEwe0Qv4nfu6pNkITLTb32p4yTgzFCocHnJLAHs+9LjUu9ONIhvfT/5lv4YS5muBHyuV84epBo/A==,
+ }
cpu: [arm64]
os: [linux]
- '@rollup/rollup-linux-loong64-gnu@4.53.3':
- resolution: {integrity: sha512-JiuKcp2teLJwQ7vkJ95EwESWkNRFJD7TQgYmCnrPtlu50b4XvT5MOmurWNrCj3IFdyjBQ5p9vnrX4JM6I8OE7g==}
+ "@rollup/rollup-linux-loong64-gnu@4.53.3":
+ resolution:
+ {
+ integrity: sha512-JiuKcp2teLJwQ7vkJ95EwESWkNRFJD7TQgYmCnrPtlu50b4XvT5MOmurWNrCj3IFdyjBQ5p9vnrX4JM6I8OE7g==,
+ }
cpu: [loong64]
os: [linux]
- '@rollup/rollup-linux-ppc64-gnu@4.53.3':
- resolution: {integrity: sha512-EoGSa8nd6d3T7zLuqdojxC20oBfNT8nexBbB/rkxgKj5T5vhpAQKKnD+h3UkoMuTyXkP5jTjK/ccNRmQrPNDuw==}
+ "@rollup/rollup-linux-ppc64-gnu@4.53.3":
+ resolution:
+ {
+ integrity: sha512-EoGSa8nd6d3T7zLuqdojxC20oBfNT8nexBbB/rkxgKj5T5vhpAQKKnD+h3UkoMuTyXkP5jTjK/ccNRmQrPNDuw==,
+ }
cpu: [ppc64]
os: [linux]
- '@rollup/rollup-linux-riscv64-gnu@4.53.3':
- resolution: {integrity: sha512-4s+Wped2IHXHPnAEbIB0YWBv7SDohqxobiiPA1FIWZpX+w9o2i4LezzH/NkFUl8LRci/8udci6cLq+jJQlh+0g==}
+ "@rollup/rollup-linux-riscv64-gnu@4.53.3":
+ resolution:
+ {
+ integrity: sha512-4s+Wped2IHXHPnAEbIB0YWBv7SDohqxobiiPA1FIWZpX+w9o2i4LezzH/NkFUl8LRci/8udci6cLq+jJQlh+0g==,
+ }
cpu: [riscv64]
os: [linux]
- '@rollup/rollup-linux-riscv64-musl@4.53.3':
- resolution: {integrity: sha512-68k2g7+0vs2u9CxDt5ktXTngsxOQkSEV/xBbwlqYcUrAVh6P9EgMZvFsnHy4SEiUl46Xf0IObWVbMvPrr2gw8A==}
+ "@rollup/rollup-linux-riscv64-musl@4.53.3":
+ resolution:
+ {
+ integrity: sha512-68k2g7+0vs2u9CxDt5ktXTngsxOQkSEV/xBbwlqYcUrAVh6P9EgMZvFsnHy4SEiUl46Xf0IObWVbMvPrr2gw8A==,
+ }
cpu: [riscv64]
os: [linux]
- '@rollup/rollup-linux-s390x-gnu@4.53.3':
- resolution: {integrity: sha512-VYsFMpULAz87ZW6BVYw3I6sWesGpsP9OPcyKe8ofdg9LHxSbRMd7zrVrr5xi/3kMZtpWL/wC+UIJWJYVX5uTKg==}
+ "@rollup/rollup-linux-s390x-gnu@4.53.3":
+ resolution:
+ {
+ integrity: sha512-VYsFMpULAz87ZW6BVYw3I6sWesGpsP9OPcyKe8ofdg9LHxSbRMd7zrVrr5xi/3kMZtpWL/wC+UIJWJYVX5uTKg==,
+ }
cpu: [s390x]
os: [linux]
- '@rollup/rollup-linux-x64-gnu@4.53.3':
- resolution: {integrity: sha512-3EhFi1FU6YL8HTUJZ51imGJWEX//ajQPfqWLI3BQq4TlvHy4X0MOr5q3D2Zof/ka0d5FNdPwZXm3Yyib/UEd+w==}
+ "@rollup/rollup-linux-x64-gnu@4.53.3":
+ resolution:
+ {
+ integrity: sha512-3EhFi1FU6YL8HTUJZ51imGJWEX//ajQPfqWLI3BQq4TlvHy4X0MOr5q3D2Zof/ka0d5FNdPwZXm3Yyib/UEd+w==,
+ }
cpu: [x64]
os: [linux]
- '@rollup/rollup-linux-x64-musl@4.53.3':
- resolution: {integrity: sha512-eoROhjcc6HbZCJr+tvVT8X4fW3/5g/WkGvvmwz/88sDtSJzO7r/blvoBDgISDiCjDRZmHpwud7h+6Q9JxFwq1Q==}
+ "@rollup/rollup-linux-x64-musl@4.53.3":
+ resolution:
+ {
+ integrity: sha512-eoROhjcc6HbZCJr+tvVT8X4fW3/5g/WkGvvmwz/88sDtSJzO7r/blvoBDgISDiCjDRZmHpwud7h+6Q9JxFwq1Q==,
+ }
cpu: [x64]
os: [linux]
- '@rollup/rollup-openharmony-arm64@4.53.3':
- resolution: {integrity: sha512-OueLAWgrNSPGAdUdIjSWXw+u/02BRTcnfw9PN41D2vq/JSEPnJnVuBgw18VkN8wcd4fjUs+jFHVM4t9+kBSNLw==}
+ "@rollup/rollup-openharmony-arm64@4.53.3":
+ resolution:
+ {
+ integrity: sha512-OueLAWgrNSPGAdUdIjSWXw+u/02BRTcnfw9PN41D2vq/JSEPnJnVuBgw18VkN8wcd4fjUs+jFHVM4t9+kBSNLw==,
+ }
cpu: [arm64]
os: [openharmony]
- '@rollup/rollup-win32-arm64-msvc@4.53.3':
- resolution: {integrity: sha512-GOFuKpsxR/whszbF/bzydebLiXIHSgsEUp6M0JI8dWvi+fFa1TD6YQa4aSZHtpmh2/uAlj/Dy+nmby3TJ3pkTw==}
+ "@rollup/rollup-win32-arm64-msvc@4.53.3":
+ resolution:
+ {
+ integrity: sha512-GOFuKpsxR/whszbF/bzydebLiXIHSgsEUp6M0JI8dWvi+fFa1TD6YQa4aSZHtpmh2/uAlj/Dy+nmby3TJ3pkTw==,
+ }
cpu: [arm64]
os: [win32]
- '@rollup/rollup-win32-ia32-msvc@4.53.3':
- resolution: {integrity: sha512-iah+THLcBJdpfZ1TstDFbKNznlzoxa8fmnFYK4V67HvmuNYkVdAywJSoteUszvBQ9/HqN2+9AZghbajMsFT+oA==}
+ "@rollup/rollup-win32-ia32-msvc@4.53.3":
+ resolution:
+ {
+ integrity: sha512-iah+THLcBJdpfZ1TstDFbKNznlzoxa8fmnFYK4V67HvmuNYkVdAywJSoteUszvBQ9/HqN2+9AZghbajMsFT+oA==,
+ }
cpu: [ia32]
os: [win32]
- '@rollup/rollup-win32-x64-gnu@4.53.3':
- resolution: {integrity: sha512-J9QDiOIZlZLdcot5NXEepDkstocktoVjkaKUtqzgzpt2yWjGlbYiKyp05rWwk4nypbYUNoFAztEgixoLaSETkg==}
+ "@rollup/rollup-win32-x64-gnu@4.53.3":
+ resolution:
+ {
+ integrity: sha512-J9QDiOIZlZLdcot5NXEepDkstocktoVjkaKUtqzgzpt2yWjGlbYiKyp05rWwk4nypbYUNoFAztEgixoLaSETkg==,
+ }
cpu: [x64]
os: [win32]
- '@rollup/rollup-win32-x64-msvc@4.53.3':
- resolution: {integrity: sha512-UhTd8u31dXadv0MopwGgNOBpUVROFKWVQgAg5N1ESyCz8AuBcMqm4AuTjrwgQKGDfoFuz02EuMRHQIw/frmYKQ==}
+ "@rollup/rollup-win32-x64-msvc@4.53.3":
+ resolution:
+ {
+ integrity: sha512-UhTd8u31dXadv0MopwGgNOBpUVROFKWVQgAg5N1ESyCz8AuBcMqm4AuTjrwgQKGDfoFuz02EuMRHQIw/frmYKQ==,
+ }
cpu: [x64]
os: [win32]
- '@types/babel__core@7.20.5':
- resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==}
+ "@tailwindcss/node@4.1.17":
+ resolution:
+ {
+ integrity: sha512-csIkHIgLb3JisEFQ0vxr2Y57GUNYh447C8xzwj89U/8fdW8LhProdxvnVH6U8M2Y73QKiTIH+LWbK3V2BBZsAg==,
+ }
+
+ "@tailwindcss/oxide-android-arm64@4.1.17":
+ resolution:
+ {
+ integrity: sha512-BMqpkJHgOZ5z78qqiGE6ZIRExyaHyuxjgrJ6eBO5+hfrfGkuya0lYfw8fRHG77gdTjWkNWEEm+qeG2cDMxArLQ==,
+ }
+ engines: { node: ">= 10" }
+ cpu: [arm64]
+ os: [android]
- '@types/babel__generator@7.27.0':
- resolution: {integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==}
+ "@tailwindcss/oxide-darwin-arm64@4.1.17":
+ resolution:
+ {
+ integrity: sha512-EquyumkQweUBNk1zGEU/wfZo2qkp/nQKRZM8bUYO0J+Lums5+wl2CcG1f9BgAjn/u9pJzdYddHWBiFXJTcxmOg==,
+ }
+ engines: { node: ">= 10" }
+ cpu: [arm64]
+ os: [darwin]
- '@types/babel__template@7.4.4':
- resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==}
+ "@tailwindcss/oxide-darwin-x64@4.1.17":
+ resolution:
+ {
+ integrity: sha512-gdhEPLzke2Pog8s12oADwYu0IAw04Y2tlmgVzIN0+046ytcgx8uZmCzEg4VcQh+AHKiS7xaL8kGo/QTiNEGRog==,
+ }
+ engines: { node: ">= 10" }
+ cpu: [x64]
+ os: [darwin]
- '@types/babel__traverse@7.28.0':
- resolution: {integrity: sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==}
+ "@tailwindcss/oxide-freebsd-x64@4.1.17":
+ resolution:
+ {
+ integrity: sha512-hxGS81KskMxML9DXsaXT1H0DyA+ZBIbyG/sSAjWNe2EDl7TkPOBI42GBV3u38itzGUOmFfCzk1iAjDXds8Oh0g==,
+ }
+ engines: { node: ">= 10" }
+ cpu: [x64]
+ os: [freebsd]
- '@types/estree@1.0.8':
- resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==}
+ "@tailwindcss/oxide-linux-arm-gnueabihf@4.1.17":
+ resolution:
+ {
+ integrity: sha512-k7jWk5E3ldAdw0cNglhjSgv501u7yrMf8oeZ0cElhxU6Y2o7f8yqelOp3fhf7evjIS6ujTI3U8pKUXV2I4iXHQ==,
+ }
+ engines: { node: ">= 10" }
+ cpu: [arm]
+ os: [linux]
- '@types/json-schema@7.0.15':
- resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==}
+ "@tailwindcss/oxide-linux-arm64-gnu@4.1.17":
+ resolution:
+ {
+ integrity: sha512-HVDOm/mxK6+TbARwdW17WrgDYEGzmoYayrCgmLEw7FxTPLcp/glBisuyWkFz/jb7ZfiAXAXUACfyItn+nTgsdQ==,
+ }
+ engines: { node: ">= 10" }
+ cpu: [arm64]
+ os: [linux]
- '@types/node@24.10.1':
- resolution: {integrity: sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ==}
+ "@tailwindcss/oxide-linux-arm64-musl@4.1.17":
+ resolution:
+ {
+ integrity: sha512-HvZLfGr42i5anKtIeQzxdkw/wPqIbpeZqe7vd3V9vI3RQxe3xU1fLjss0TjyhxWcBaipk7NYwSrwTwK1hJARMg==,
+ }
+ engines: { node: ">= 10" }
+ cpu: [arm64]
+ os: [linux]
- '@types/react-dom@19.2.3':
- resolution: {integrity: sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==}
- peerDependencies:
- '@types/react': ^19.2.0
+ "@tailwindcss/oxide-linux-x64-gnu@4.1.17":
+ resolution:
+ {
+ integrity: sha512-M3XZuORCGB7VPOEDH+nzpJ21XPvK5PyjlkSFkFziNHGLc5d6g3di2McAAblmaSUNl8IOmzYwLx9NsE7bplNkwQ==,
+ }
+ engines: { node: ">= 10" }
+ cpu: [x64]
+ os: [linux]
+
+ "@tailwindcss/oxide-linux-x64-musl@4.1.17":
+ resolution:
+ {
+ integrity: sha512-k7f+pf9eXLEey4pBlw+8dgfJHY4PZ5qOUFDyNf7SI6lHjQ9Zt7+NcscjpwdCEbYi6FI5c2KDTDWyf2iHcCSyyQ==,
+ }
+ engines: { node: ">= 10" }
+ cpu: [x64]
+ os: [linux]
- '@types/react@19.2.7':
- resolution: {integrity: sha512-MWtvHrGZLFttgeEj28VXHxpmwYbor/ATPYbBfSFZEIRK0ecCFLl2Qo55z52Hss+UV9CRN7trSeq1zbgx7YDWWg==}
+ "@tailwindcss/oxide-wasm32-wasi@4.1.17":
+ resolution:
+ {
+ integrity: sha512-cEytGqSSoy7zK4JRWiTCx43FsKP/zGr0CsuMawhH67ONlH+T79VteQeJQRO/X7L0juEUA8ZyuYikcRBf0vsxhg==,
+ }
+ engines: { node: ">=14.0.0" }
+ cpu: [wasm32]
+ bundledDependencies:
+ - "@napi-rs/wasm-runtime"
+ - "@emnapi/core"
+ - "@emnapi/runtime"
+ - "@tybys/wasm-util"
+ - "@emnapi/wasi-threads"
+ - tslib
+
+ "@tailwindcss/oxide-win32-arm64-msvc@4.1.17":
+ resolution:
+ {
+ integrity: sha512-JU5AHr7gKbZlOGvMdb4722/0aYbU+tN6lv1kONx0JK2cGsh7g148zVWLM0IKR3NeKLv+L90chBVYcJ8uJWbC9A==,
+ }
+ engines: { node: ">= 10" }
+ cpu: [arm64]
+ os: [win32]
- '@typescript-eslint/eslint-plugin@8.48.0':
- resolution: {integrity: sha512-XxXP5tL1txl13YFtrECECQYeZjBZad4fyd3cFV4a19LkAY/bIp9fev3US4S5fDVV2JaYFiKAZ/GRTOLer+mbyQ==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ "@tailwindcss/oxide-win32-x64-msvc@4.1.17":
+ resolution:
+ {
+ integrity: sha512-SKWM4waLuqx0IH+FMDUw6R66Hu4OuTALFgnleKbqhgGU30DY20NORZMZUKgLRjQXNN2TLzKvh48QXTig4h4bGw==,
+ }
+ engines: { node: ">= 10" }
+ cpu: [x64]
+ os: [win32]
+
+ "@tailwindcss/oxide@4.1.17":
+ resolution:
+ {
+ integrity: sha512-F0F7d01fmkQhsTjXezGBLdrl1KresJTcI3DB8EkScCldyKp3Msz4hub4uyYaVnk88BAS1g5DQjjF6F5qczheLA==,
+ }
+ engines: { node: ">= 10" }
+
+ "@tailwindcss/vite@4.1.17":
+ resolution:
+ {
+ integrity: sha512-4+9w8ZHOiGnpcGI6z1TVVfWaX/koK7fKeSYF3qlYg2xpBtbteP2ddBxiarL+HVgfSJGeK5RIxRQmKm4rTJJAwA==,
+ }
+ peerDependencies:
+ vite: ^5.2.0 || ^6 || ^7
+
+ "@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/estree@1.0.8":
+ resolution:
+ {
+ integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==,
+ }
+
+ "@types/history@4.7.11":
+ resolution:
+ {
+ integrity: sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA==,
+ }
+
+ "@types/json-schema@7.0.15":
+ resolution:
+ {
+ integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==,
+ }
+
+ "@types/node@24.10.1":
+ resolution:
+ {
+ integrity: sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ==,
+ }
+
+ "@types/react-dom@19.2.3":
+ resolution:
+ {
+ integrity: sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==,
+ }
+ peerDependencies:
+ "@types/react": ^19.2.0
+
+ "@types/react-router-dom@5.3.3":
+ resolution:
+ {
+ integrity: sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw==,
+ }
+
+ "@types/react-router@5.1.20":
+ resolution:
+ {
+ integrity: sha512-jGjmu/ZqS7FjSH6owMcD5qpq19+1RS9DeVRqfl1FeBMxTDQAGwlMWOcs52NDoXaNKyG3d1cYQFMs9rCrb88o9Q==,
+ }
+
+ "@types/react@19.2.7":
+ resolution:
+ {
+ integrity: sha512-MWtvHrGZLFttgeEj28VXHxpmwYbor/ATPYbBfSFZEIRK0ecCFLl2Qo55z52Hss+UV9CRN7trSeq1zbgx7YDWWg==,
+ }
+
+ "@typescript-eslint/eslint-plugin@8.48.0":
+ resolution:
+ {
+ integrity: sha512-XxXP5tL1txl13YFtrECECQYeZjBZad4fyd3cFV4a19LkAY/bIp9fev3US4S5fDVV2JaYFiKAZ/GRTOLer+mbyQ==,
+ }
+ engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
peerDependencies:
- '@typescript-eslint/parser': ^8.48.0
+ "@typescript-eslint/parser": ^8.48.0
eslint: ^8.57.0 || ^9.0.0
- typescript: '>=4.8.4 <6.0.0'
-
- '@typescript-eslint/parser@8.48.0':
- resolution: {integrity: sha512-jCzKdm/QK0Kg4V4IK/oMlRZlY+QOcdjv89U2NgKHZk1CYTj82/RVSx1mV/0gqCVMJ/DA+Zf/S4NBWNF8GQ+eqQ==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ typescript: ">=4.8.4 <6.0.0"
+
+ "@typescript-eslint/parser@8.48.0":
+ resolution:
+ {
+ integrity: sha512-jCzKdm/QK0Kg4V4IK/oMlRZlY+QOcdjv89U2NgKHZk1CYTj82/RVSx1mV/0gqCVMJ/DA+Zf/S4NBWNF8GQ+eqQ==,
+ }
+ 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.48.0':
- resolution: {integrity: sha512-Ne4CTZyRh1BecBf84siv42wv5vQvVmgtk8AuiEffKTUo3DrBaGYZueJSxxBZ8fjk/N3DrgChH4TOdIOwOwiqqw==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ typescript: ">=4.8.4 <6.0.0"
+
+ "@typescript-eslint/project-service@8.48.0":
+ resolution:
+ {
+ integrity: sha512-Ne4CTZyRh1BecBf84siv42wv5vQvVmgtk8AuiEffKTUo3DrBaGYZueJSxxBZ8fjk/N3DrgChH4TOdIOwOwiqqw==,
+ }
+ engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
peerDependencies:
- typescript: '>=4.8.4 <6.0.0'
-
- '@typescript-eslint/scope-manager@8.48.0':
- resolution: {integrity: sha512-uGSSsbrtJrLduti0Q1Q9+BF1/iFKaxGoQwjWOIVNJv0o6omrdyR8ct37m4xIl5Zzpkp69Kkmvom7QFTtue89YQ==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
-
- '@typescript-eslint/tsconfig-utils@8.48.0':
- resolution: {integrity: sha512-WNebjBdFdyu10sR1M4OXTt2OkMd5KWIL+LLfeH9KhgP+jzfDV/LI3eXzwJ1s9+Yc0Kzo2fQCdY/OpdusCMmh6w==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ typescript: ">=4.8.4 <6.0.0"
+
+ "@typescript-eslint/scope-manager@8.48.0":
+ resolution:
+ {
+ integrity: sha512-uGSSsbrtJrLduti0Q1Q9+BF1/iFKaxGoQwjWOIVNJv0o6omrdyR8ct37m4xIl5Zzpkp69Kkmvom7QFTtue89YQ==,
+ }
+ engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
+
+ "@typescript-eslint/tsconfig-utils@8.48.0":
+ resolution:
+ {
+ integrity: sha512-WNebjBdFdyu10sR1M4OXTt2OkMd5KWIL+LLfeH9KhgP+jzfDV/LI3eXzwJ1s9+Yc0Kzo2fQCdY/OpdusCMmh6w==,
+ }
+ engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
peerDependencies:
- typescript: '>=4.8.4 <6.0.0'
-
- '@typescript-eslint/type-utils@8.48.0':
- resolution: {integrity: sha512-zbeVaVqeXhhab6QNEKfK96Xyc7UQuoFWERhEnj3mLVnUWrQnv15cJNseUni7f3g557gm0e46LZ6IJ4NJVOgOpw==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ typescript: ">=4.8.4 <6.0.0"
+
+ "@typescript-eslint/type-utils@8.48.0":
+ resolution:
+ {
+ integrity: sha512-zbeVaVqeXhhab6QNEKfK96Xyc7UQuoFWERhEnj3mLVnUWrQnv15cJNseUni7f3g557gm0e46LZ6IJ4NJVOgOpw==,
+ }
+ 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.48.0':
- resolution: {integrity: sha512-cQMcGQQH7kwKoVswD1xdOytxQR60MWKM1di26xSUtxehaDs/32Zpqsu5WJlXTtTTqyAVK8R7hvsUnIXRS+bjvA==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
-
- '@typescript-eslint/typescript-estree@8.48.0':
- resolution: {integrity: sha512-ljHab1CSO4rGrQIAyizUS6UGHHCiAYhbfcIZ1zVJr5nMryxlXMVWS3duFPSKvSUbFPwkXMFk1k0EMIjub4sRRQ==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ typescript: ">=4.8.4 <6.0.0"
+
+ "@typescript-eslint/types@8.48.0":
+ resolution:
+ {
+ integrity: sha512-cQMcGQQH7kwKoVswD1xdOytxQR60MWKM1di26xSUtxehaDs/32Zpqsu5WJlXTtTTqyAVK8R7hvsUnIXRS+bjvA==,
+ }
+ engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
+
+ "@typescript-eslint/typescript-estree@8.48.0":
+ resolution:
+ {
+ integrity: sha512-ljHab1CSO4rGrQIAyizUS6UGHHCiAYhbfcIZ1zVJr5nMryxlXMVWS3duFPSKvSUbFPwkXMFk1k0EMIjub4sRRQ==,
+ }
+ engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
peerDependencies:
- typescript: '>=4.8.4 <6.0.0'
-
- '@typescript-eslint/utils@8.48.0':
- resolution: {integrity: sha512-yTJO1XuGxCsSfIVt1+1UrLHtue8xz16V8apzPYI06W0HbEbEWHxHXgZaAgavIkoh+GeV6hKKd5jm0sS6OYxWXQ==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ typescript: ">=4.8.4 <6.0.0"
+
+ "@typescript-eslint/utils@8.48.0":
+ resolution:
+ {
+ integrity: sha512-yTJO1XuGxCsSfIVt1+1UrLHtue8xz16V8apzPYI06W0HbEbEWHxHXgZaAgavIkoh+GeV6hKKd5jm0sS6OYxWXQ==,
+ }
+ 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.48.0':
- resolution: {integrity: sha512-T0XJMaRPOH3+LBbAfzR2jalckP1MSG/L9eUtY0DEzUyVaXJ/t6zN0nR7co5kz0Jko/nkSYCBRkz1djvjajVTTg==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
-
- '@vitejs/plugin-react@5.1.1':
- resolution: {integrity: sha512-WQfkSw0QbQ5aJ2CHYw23ZGkqnRwqKHD/KYsMeTkZzPT4Jcf0DcBxBtwMJxnu6E7oxw5+JC6ZAiePgh28uJ1HBA==}
- engines: {node: ^20.19.0 || >=22.12.0}
+ typescript: ">=4.8.4 <6.0.0"
+
+ "@typescript-eslint/visitor-keys@8.48.0":
+ resolution:
+ {
+ integrity: sha512-T0XJMaRPOH3+LBbAfzR2jalckP1MSG/L9eUtY0DEzUyVaXJ/t6zN0nR7co5kz0Jko/nkSYCBRkz1djvjajVTTg==,
+ }
+ engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
+
+ "@vitejs/plugin-react@5.1.1":
+ resolution:
+ {
+ integrity: sha512-WQfkSw0QbQ5aJ2CHYw23ZGkqnRwqKHD/KYsMeTkZzPT4Jcf0DcBxBtwMJxnu6E7oxw5+JC6ZAiePgh28uJ1HBA==,
+ }
+ 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==}
+ 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'}
+ 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==}
+ resolution:
+ {
+ integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==,
+ }
+
+ ansi-escapes@7.2.0:
+ resolution:
+ {
+ integrity: sha512-g6LhBsl+GBPRWGWsBtutpzBYuIIdBkLEvad5C/va/74Db018+5TZiyA26cZJAr3Rft5lprVqOIPxf5Vid6tqAw==,
+ }
+ engines: { node: ">=18" }
+
+ ansi-regex@6.2.2:
+ resolution:
+ {
+ integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==,
+ }
+ engines: { node: ">=12" }
ansi-styles@4.3.0:
- resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
- engines: {node: '>=8'}
+ resolution:
+ {
+ integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==,
+ }
+ engines: { node: ">=8" }
+
+ ansi-styles@6.2.3:
+ resolution:
+ {
+ integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==,
+ }
+ engines: { node: ">=12" }
argparse@2.0.1:
- resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
+ resolution:
+ {
+ integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==,
+ }
+
+ aria-hidden@1.2.6:
+ resolution:
+ {
+ integrity: sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA==,
+ }
+ engines: { node: ">=10" }
+
+ autoprefixer@10.4.22:
+ resolution:
+ {
+ integrity: sha512-ARe0v/t9gO28Bznv6GgqARmVqcWOV3mfgUPn9becPHMiD3o9BwlRgaeccZnwTpZ7Zwqrm+c1sUSsMxIzQzc8Xg==,
+ }
+ engines: { node: ^10 || ^12 || >=14 }
+ hasBin: true
+ peerDependencies:
+ postcss: ^8.1.0
babel-plugin-react-compiler@1.0.0:
- resolution: {integrity: sha512-Ixm8tFfoKKIPYdCCKYTsqv+Fd4IJ0DQqMyEimo+pxUOMUR9cVPlwTrFt9Avu+3cb6Zp3mAzl+t1MrG2fxxKsxw==}
+ resolution:
+ {
+ integrity: sha512-Ixm8tFfoKKIPYdCCKYTsqv+Fd4IJ0DQqMyEimo+pxUOMUR9cVPlwTrFt9Avu+3cb6Zp3mAzl+t1MrG2fxxKsxw==,
+ }
balanced-match@1.0.2:
- resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
+ resolution:
+ {
+ integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==,
+ }
baseline-browser-mapping@2.8.31:
- resolution: {integrity: sha512-a28v2eWrrRWPpJSzxc+mKwm0ZtVx/G8SepdQZDArnXYU/XS+IF6mp8aB/4E+hH1tyGCoDo3KlUCdlSxGDsRkAw==}
+ resolution:
+ {
+ integrity: sha512-a28v2eWrrRWPpJSzxc+mKwm0ZtVx/G8SepdQZDArnXYU/XS+IF6mp8aB/4E+hH1tyGCoDo3KlUCdlSxGDsRkAw==,
+ }
hasBin: true
brace-expansion@1.1.12:
- resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==}
+ resolution:
+ {
+ integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==,
+ }
brace-expansion@2.0.2:
- resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==}
+ resolution:
+ {
+ integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==,
+ }
+
+ braces@3.0.3:
+ resolution:
+ {
+ integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==,
+ }
+ engines: { node: ">=8" }
browserslist@4.28.0:
- resolution: {integrity: sha512-tbydkR/CxfMwelN0vwdP/pLkDwyAASZ+VfWm4EOwlB6SWhx1sYnWLqo8N5j0rAzPfzfRaxt0mM/4wPU/Su84RQ==}
- engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
+ resolution:
+ {
+ integrity: sha512-tbydkR/CxfMwelN0vwdP/pLkDwyAASZ+VfWm4EOwlB6SWhx1sYnWLqo8N5j0rAzPfzfRaxt0mM/4wPU/Su84RQ==,
+ }
+ engines: { node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7 }
hasBin: true
callsites@3.1.0:
- resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
- engines: {node: '>=6'}
+ resolution:
+ {
+ integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==,
+ }
+ engines: { node: ">=6" }
caniuse-lite@1.0.30001757:
- resolution: {integrity: sha512-r0nnL/I28Zi/yjk1el6ilj27tKcdjLsNqAOZr0yVjWPrSQyHgKI2INaEWw21bAQSv2LXRt1XuCS/GomNpWOxsQ==}
+ resolution:
+ {
+ integrity: sha512-r0nnL/I28Zi/yjk1el6ilj27tKcdjLsNqAOZr0yVjWPrSQyHgKI2INaEWw21bAQSv2LXRt1XuCS/GomNpWOxsQ==,
+ }
chalk@4.1.2:
- resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
- engines: {node: '>=10'}
+ resolution:
+ {
+ integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==,
+ }
+ engines: { node: ">=10" }
+
+ class-variance-authority@0.7.1:
+ resolution:
+ {
+ integrity: sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==,
+ }
+
+ cli-cursor@5.0.0:
+ resolution:
+ {
+ integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==,
+ }
+ engines: { node: ">=18" }
+
+ cli-truncate@5.1.1:
+ resolution:
+ {
+ integrity: sha512-SroPvNHxUnk+vIW/dOSfNqdy1sPEFkrTk6TUtqLCnBlo3N7TNYYkzzN7uSD6+jVjrdO4+p8nH7JzH6cIvUem6A==,
+ }
+ engines: { node: ">=20" }
+
+ clsx@2.1.1:
+ resolution:
+ {
+ integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==,
+ }
+ engines: { node: ">=6" }
color-convert@2.0.1:
- resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
- engines: {node: '>=7.0.0'}
+ resolution:
+ {
+ integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==,
+ }
+ engines: { node: ">=7.0.0" }
color-name@1.1.4:
- resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
+ resolution:
+ {
+ integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==,
+ }
+
+ colorette@2.0.20:
+ resolution:
+ {
+ integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==,
+ }
+
+ commander@14.0.2:
+ resolution:
+ {
+ integrity: sha512-TywoWNNRbhoD0BXs1P3ZEScW8W5iKrnbithIl0YH+uCmBd0QpPOA8yc82DS3BIE5Ma6FnBVUsJ7wVUDz4dvOWQ==,
+ }
+ engines: { node: ">=20" }
concat-map@0.0.1:
- resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
+ resolution:
+ {
+ integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==,
+ }
convert-source-map@2.0.0:
- resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==}
+ resolution:
+ {
+ integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==,
+ }
+
+ cookie@1.1.1:
+ resolution:
+ {
+ integrity: sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==,
+ }
+ engines: { node: ">=18" }
cross-spawn@7.0.6:
- resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==}
- engines: {node: '>= 8'}
+ resolution:
+ {
+ integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==,
+ }
+ engines: { node: ">= 8" }
csstype@3.2.3:
- resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==}
+ resolution:
+ {
+ integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==,
+ }
debug@4.4.3:
- resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==}
- engines: {node: '>=6.0'}
+ resolution:
+ {
+ integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==,
+ }
+ engines: { node: ">=6.0" }
peerDependencies:
- supports-color: '*'
+ supports-color: "*"
peerDependenciesMeta:
supports-color:
optional: true
deep-is@0.1.4:
- resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
+ resolution:
+ {
+ integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==,
+ }
+
+ detect-libc@2.1.2:
+ resolution:
+ {
+ integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==,
+ }
+ engines: { node: ">=8" }
+
+ detect-node-es@1.1.0:
+ resolution:
+ {
+ integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==,
+ }
electron-to-chromium@1.5.260:
- resolution: {integrity: sha512-ov8rBoOBhVawpzdre+Cmz4FB+y66Eqrk6Gwqd8NGxuhv99GQ8XqMAr351KEkOt7gukXWDg6gJWEMKgL2RLMPtA==}
+ resolution:
+ {
+ integrity: sha512-ov8rBoOBhVawpzdre+Cmz4FB+y66Eqrk6Gwqd8NGxuhv99GQ8XqMAr351KEkOt7gukXWDg6gJWEMKgL2RLMPtA==,
+ }
+
+ emoji-regex@10.6.0:
+ resolution:
+ {
+ integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==,
+ }
+
+ enhanced-resolve@5.18.3:
+ resolution:
+ {
+ integrity: sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==,
+ }
+ engines: { node: ">=10.13.0" }
+
+ environment@1.1.0:
+ resolution:
+ {
+ integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==,
+ }
+ engines: { node: ">=18" }
esbuild@0.25.12:
- resolution: {integrity: sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==}
- engines: {node: '>=18'}
+ resolution:
+ {
+ integrity: sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==,
+ }
+ engines: { node: ">=18" }
hasBin: true
escalade@3.2.0:
- resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==}
- engines: {node: '>=6'}
+ resolution:
+ {
+ integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==,
+ }
+ engines: { node: ">=6" }
escape-string-regexp@4.0.0:
- resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
- engines: {node: '>=10'}
+ resolution:
+ {
+ integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==,
+ }
+ engines: { node: ">=10" }
eslint-plugin-react-hooks@7.0.1:
- resolution: {integrity: sha512-O0d0m04evaNzEPoSW+59Mezf8Qt0InfgGIBJnpC0h3NH/WjUAR7BIKUfysC6todmtiZ/A0oUVS8Gce0WhBrHsA==}
- engines: {node: '>=18'}
+ resolution:
+ {
+ integrity: sha512-O0d0m04evaNzEPoSW+59Mezf8Qt0InfgGIBJnpC0h3NH/WjUAR7BIKUfysC6todmtiZ/A0oUVS8Gce0WhBrHsA==,
+ }
+ engines: { node: ">=18" }
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.24:
- resolution: {integrity: sha512-nLHIW7TEq3aLrEYWpVaJ1dRgFR+wLDPN8e8FpYAql/bMV2oBEfC37K0gLEGgv9fy66juNShSMV8OkTqzltcG/w==}
+ resolution:
+ {
+ integrity: sha512-nLHIW7TEq3aLrEYWpVaJ1dRgFR+wLDPN8e8FpYAql/bMV2oBEfC37K0gLEGgv9fy66juNShSMV8OkTqzltcG/w==,
+ }
peerDependencies:
- eslint: '>=8.40'
+ 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}
+ 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}
+ 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}
+ resolution:
+ {
+ integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==,
+ }
+ engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
eslint@9.39.1:
- resolution: {integrity: sha512-BhHmn2yNOFA9H9JmmIVKJmd288g9hrVRDkdoIgRCRuSySRUHH7r/DI6aAXW9T1WwUuY3DFgrcaqB+deURBLR5g==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ resolution:
+ {
+ integrity: sha512-BhHmn2yNOFA9H9JmmIVKJmd288g9hrVRDkdoIgRCRuSySRUHH7r/DI6aAXW9T1WwUuY3DFgrcaqB+deURBLR5g==,
+ }
+ engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
hasBin: true
peerDependencies:
- jiti: '*'
+ 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}
+ 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'}
+ 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'}
+ 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'}
+ resolution:
+ {
+ integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==,
+ }
+ engines: { node: ">=4.0" }
esutils@2.0.3:
- resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
- engines: {node: '>=0.10.0'}
+ resolution:
+ {
+ integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==,
+ }
+ engines: { node: ">=0.10.0" }
+
+ eventemitter3@5.0.1:
+ resolution:
+ {
+ integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==,
+ }
fast-deep-equal@3.1.3:
- resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
+ resolution:
+ {
+ integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==,
+ }
fast-json-stable-stringify@2.1.0:
- resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
+ resolution:
+ {
+ integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==,
+ }
fast-levenshtein@2.0.6:
- resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==}
+ resolution:
+ {
+ integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==,
+ }
fdir@6.5.0:
- resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==}
- engines: {node: '>=12.0.0'}
+ resolution:
+ {
+ integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==,
+ }
+ engines: { node: ">=12.0.0" }
peerDependencies:
picomatch: ^3 || ^4
peerDependenciesMeta:
@@ -745,298 +2050,1012 @@ packages:
optional: true
file-entry-cache@8.0.0:
- resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==}
- engines: {node: '>=16.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'}
+ resolution:
+ {
+ integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==,
+ }
+ engines: { node: ">=10" }
flat-cache@4.0.1:
- resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==}
- engines: {node: '>=16'}
+ resolution:
+ {
+ integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==,
+ }
+ engines: { node: ">=16" }
flatted@3.3.3:
- resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==}
+ resolution:
+ {
+ integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==,
+ }
+
+ fraction.js@5.3.4:
+ resolution:
+ {
+ integrity: sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==,
+ }
+
+ framer-motion@12.23.25:
+ resolution:
+ {
+ integrity: sha512-gUHGl2e4VG66jOcH0JHhuJQr6ZNwrET9g31ZG0xdXzT0CznP7fHX4P8Bcvuc4MiUB90ysNnWX2ukHRIggkl6hQ==,
+ }
+ peerDependencies:
+ "@emotion/is-prop-valid": "*"
+ react: ^18.0.0 || ^19.0.0
+ react-dom: ^18.0.0 || ^19.0.0
+ peerDependenciesMeta:
+ "@emotion/is-prop-valid":
+ optional: true
+ react:
+ optional: true
+ react-dom:
+ optional: true
fsevents@2.3.3:
- resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
- engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
+ resolution:
+ {
+ integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==,
+ }
+ engines: { node: ^8.16.0 || ^10.6.0 || >=11.0.0 }
os: [darwin]
gensync@1.0.0-beta.2:
- resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==}
- engines: {node: '>=6.9.0'}
+ resolution:
+ {
+ integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==,
+ }
+ engines: { node: ">=6.9.0" }
+
+ get-east-asian-width@1.4.0:
+ resolution:
+ {
+ integrity: sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==,
+ }
+ engines: { node: ">=18" }
+
+ get-nonce@1.0.1:
+ resolution:
+ {
+ integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==,
+ }
+ engines: { node: ">=6" }
glob-parent@6.0.2:
- resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
- engines: {node: '>=10.13.0'}
+ 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'}
+ resolution:
+ {
+ integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==,
+ }
+ engines: { node: ">=18" }
globals@16.5.0:
- resolution: {integrity: sha512-c/c15i26VrJ4IRt5Z89DnIzCGDn9EcebibhAOjw5ibqEHsE1wLUgkPn9RDmNcUKyU87GeaL633nyJ+pplFR2ZQ==}
- engines: {node: '>=18'}
+ resolution:
+ {
+ integrity: sha512-c/c15i26VrJ4IRt5Z89DnIzCGDn9EcebibhAOjw5ibqEHsE1wLUgkPn9RDmNcUKyU87GeaL633nyJ+pplFR2ZQ==,
+ }
+ engines: { node: ">=18" }
+
+ graceful-fs@4.2.11:
+ resolution:
+ {
+ integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==,
+ }
graphemer@1.4.0:
- resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==}
+ resolution:
+ {
+ integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==,
+ }
has-flag@4.0.0:
- resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
- engines: {node: '>=8'}
+ resolution:
+ {
+ integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==,
+ }
+ engines: { node: ">=8" }
hermes-estree@0.25.1:
- resolution: {integrity: sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==}
+ resolution:
+ {
+ integrity: sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==,
+ }
hermes-parser@0.25.1:
- resolution: {integrity: sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==}
+ resolution:
+ {
+ integrity: sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==,
+ }
+
+ husky@9.1.7:
+ resolution:
+ {
+ integrity: sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA==,
+ }
+ engines: { node: ">=18" }
+ hasBin: true
ignore@5.3.2:
- resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==}
- engines: {node: '>= 4'}
+ resolution:
+ {
+ integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==,
+ }
+ engines: { node: ">= 4" }
ignore@7.0.5:
- resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==}
- engines: {node: '>= 4'}
+ resolution:
+ {
+ integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==,
+ }
+ engines: { node: ">= 4" }
import-fresh@3.3.1:
- resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==}
- engines: {node: '>=6'}
+ resolution:
+ {
+ integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==,
+ }
+ engines: { node: ">=6" }
imurmurhash@0.1.4:
- resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
- engines: {node: '>=0.8.19'}
+ resolution:
+ {
+ integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==,
+ }
+ engines: { node: ">=0.8.19" }
is-extglob@2.1.1:
- resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
- engines: {node: '>=0.10.0'}
+ resolution:
+ {
+ integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==,
+ }
+ engines: { node: ">=0.10.0" }
+
+ is-fullwidth-code-point@5.1.0:
+ resolution:
+ {
+ integrity: sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ==,
+ }
+ engines: { node: ">=18" }
is-glob@4.0.3:
- resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
- engines: {node: '>=0.10.0'}
+ resolution:
+ {
+ integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==,
+ }
+ engines: { node: ">=0.10.0" }
+
+ is-number@7.0.0:
+ resolution:
+ {
+ integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==,
+ }
+ engines: { node: ">=0.12.0" }
isexe@2.0.0:
- resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
+ resolution:
+ {
+ integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==,
+ }
+
+ jiti@2.6.1:
+ resolution:
+ {
+ integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==,
+ }
+ hasBin: true
js-tokens@4.0.0:
- resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
+ resolution:
+ {
+ integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==,
+ }
js-yaml@4.1.1:
- resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==}
+ resolution:
+ {
+ integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==,
+ }
hasBin: true
jsesc@3.1.0:
- resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==}
- engines: {node: '>=6'}
+ resolution:
+ {
+ integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==,
+ }
+ engines: { node: ">=6" }
hasBin: true
json-buffer@3.0.1:
- resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==}
+ resolution:
+ {
+ integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==,
+ }
json-schema-traverse@0.4.1:
- resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
+ resolution:
+ {
+ integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==,
+ }
json-stable-stringify-without-jsonify@1.0.1:
- resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
+ resolution:
+ {
+ integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==,
+ }
json5@2.2.3:
- resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==}
- engines: {node: '>=6'}
+ resolution:
+ {
+ integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==,
+ }
+ engines: { node: ">=6" }
hasBin: true
keyv@4.5.4:
- resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==}
+ 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'}
+ resolution:
+ {
+ integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==,
+ }
+ engines: { node: ">= 0.8.0" }
+
+ lightningcss-android-arm64@1.30.2:
+ resolution:
+ {
+ integrity: sha512-BH9sEdOCahSgmkVhBLeU7Hc9DWeZ1Eb6wNS6Da8igvUwAe0sqROHddIlvU06q3WyXVEOYDZ6ykBZQnjTbmo4+A==,
+ }
+ engines: { node: ">= 12.0.0" }
+ cpu: [arm64]
+ os: [android]
+
+ lightningcss-darwin-arm64@1.30.2:
+ resolution:
+ {
+ integrity: sha512-ylTcDJBN3Hp21TdhRT5zBOIi73P6/W0qwvlFEk22fkdXchtNTOU4Qc37SkzV+EKYxLouZ6M4LG9NfZ1qkhhBWA==,
+ }
+ engines: { node: ">= 12.0.0" }
+ cpu: [arm64]
+ os: [darwin]
+
+ lightningcss-darwin-x64@1.30.2:
+ resolution:
+ {
+ integrity: sha512-oBZgKchomuDYxr7ilwLcyms6BCyLn0z8J0+ZZmfpjwg9fRVZIR5/GMXd7r9RH94iDhld3UmSjBM6nXWM2TfZTQ==,
+ }
+ engines: { node: ">= 12.0.0" }
+ cpu: [x64]
+ os: [darwin]
+
+ lightningcss-freebsd-x64@1.30.2:
+ resolution:
+ {
+ integrity: sha512-c2bH6xTrf4BDpK8MoGG4Bd6zAMZDAXS569UxCAGcA7IKbHNMlhGQ89eRmvpIUGfKWNVdbhSbkQaWhEoMGmGslA==,
+ }
+ engines: { node: ">= 12.0.0" }
+ cpu: [x64]
+ os: [freebsd]
+
+ lightningcss-linux-arm-gnueabihf@1.30.2:
+ resolution:
+ {
+ integrity: sha512-eVdpxh4wYcm0PofJIZVuYuLiqBIakQ9uFZmipf6LF/HRj5Bgm0eb3qL/mr1smyXIS1twwOxNWndd8z0E374hiA==,
+ }
+ engines: { node: ">= 12.0.0" }
+ cpu: [arm]
+ os: [linux]
+
+ lightningcss-linux-arm64-gnu@1.30.2:
+ resolution:
+ {
+ integrity: sha512-UK65WJAbwIJbiBFXpxrbTNArtfuznvxAJw4Q2ZGlU8kPeDIWEX1dg3rn2veBVUylA2Ezg89ktszWbaQnxD/e3A==,
+ }
+ engines: { node: ">= 12.0.0" }
+ cpu: [arm64]
+ os: [linux]
+
+ lightningcss-linux-arm64-musl@1.30.2:
+ resolution:
+ {
+ integrity: sha512-5Vh9dGeblpTxWHpOx8iauV02popZDsCYMPIgiuw97OJ5uaDsL86cnqSFs5LZkG3ghHoX5isLgWzMs+eD1YzrnA==,
+ }
+ engines: { node: ">= 12.0.0" }
+ cpu: [arm64]
+ os: [linux]
+
+ lightningcss-linux-x64-gnu@1.30.2:
+ resolution:
+ {
+ integrity: sha512-Cfd46gdmj1vQ+lR6VRTTadNHu6ALuw2pKR9lYq4FnhvgBc4zWY1EtZcAc6EffShbb1MFrIPfLDXD6Xprbnni4w==,
+ }
+ engines: { node: ">= 12.0.0" }
+ cpu: [x64]
+ os: [linux]
+
+ lightningcss-linux-x64-musl@1.30.2:
+ resolution:
+ {
+ integrity: sha512-XJaLUUFXb6/QG2lGIW6aIk6jKdtjtcffUT0NKvIqhSBY3hh9Ch+1LCeH80dR9q9LBjG3ewbDjnumefsLsP6aiA==,
+ }
+ engines: { node: ">= 12.0.0" }
+ cpu: [x64]
+ os: [linux]
+
+ lightningcss-win32-arm64-msvc@1.30.2:
+ resolution:
+ {
+ integrity: sha512-FZn+vaj7zLv//D/192WFFVA0RgHawIcHqLX9xuWiQt7P0PtdFEVaxgF9rjM/IRYHQXNnk61/H/gb2Ei+kUQ4xQ==,
+ }
+ engines: { node: ">= 12.0.0" }
+ cpu: [arm64]
+ os: [win32]
+
+ lightningcss-win32-x64-msvc@1.30.2:
+ resolution:
+ {
+ integrity: sha512-5g1yc73p+iAkid5phb4oVFMB45417DkRevRbt/El/gKXJk4jid+vPFF/AXbxn05Aky8PapwzZrdJShv5C0avjw==,
+ }
+ engines: { node: ">= 12.0.0" }
+ cpu: [x64]
+ os: [win32]
+
+ lightningcss@1.30.2:
+ resolution:
+ {
+ integrity: sha512-utfs7Pr5uJyyvDETitgsaqSyjCb2qNRAtuqUeWIAKztsOYdcACf2KtARYXg2pSvhkt+9NfoaNY7fxjl6nuMjIQ==,
+ }
+ engines: { node: ">= 12.0.0" }
+
+ lint-staged@16.2.7:
+ resolution:
+ {
+ integrity: sha512-lDIj4RnYmK7/kXMya+qJsmkRFkGolciXjrsZ6PC25GdTfWOAWetR0ZbsNXRAj1EHHImRSalc+whZFg56F5DVow==,
+ }
+ engines: { node: ">=20.17" }
+ hasBin: true
+
+ listr2@9.0.5:
+ resolution:
+ {
+ integrity: sha512-ME4Fb83LgEgwNw96RKNvKV4VTLuXfoKudAmm2lP8Kk87KaMK0/Xrx/aAkMWmT8mDb+3MlFDspfbCs7adjRxA2g==,
+ }
+ engines: { node: ">=20.0.0" }
locate-path@6.0.0:
- resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
- engines: {node: '>=10'}
+ resolution:
+ {
+ integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==,
+ }
+ engines: { node: ">=10" }
lodash.merge@4.6.2:
- resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
+ resolution:
+ {
+ integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==,
+ }
+
+ log-update@6.1.0:
+ resolution:
+ {
+ integrity: sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==,
+ }
+ engines: { node: ">=18" }
lru-cache@5.1.1:
- resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
+ resolution:
+ {
+ integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==,
+ }
+
+ lucide-react@0.555.0:
+ resolution:
+ {
+ integrity: sha512-D8FvHUGbxWBRQM90NZeIyhAvkFfsh3u9ekrMvJ30Z6gnpBHS6HC6ldLg7tL45hwiIz/u66eKDtdA23gwwGsAHA==,
+ }
+ peerDependencies:
+ react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0
+
+ magic-string@0.30.21:
+ resolution:
+ {
+ integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==,
+ }
+
+ micromatch@4.0.8:
+ resolution:
+ {
+ integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==,
+ }
+ engines: { node: ">=8.6" }
+
+ mimic-function@5.0.1:
+ resolution:
+ {
+ integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==,
+ }
+ engines: { node: ">=18" }
minimatch@3.1.2:
- resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
+ resolution:
+ {
+ integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==,
+ }
minimatch@9.0.5:
- resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==}
- engines: {node: '>=16 || 14 >=14.17'}
+ resolution:
+ {
+ integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==,
+ }
+ engines: { node: ">=16 || 14 >=14.17" }
+
+ motion-dom@12.23.23:
+ resolution:
+ {
+ integrity: sha512-n5yolOs0TQQBRUFImrRfs/+6X4p3Q4n1dUEqt/H58Vx7OW6RF+foWEgmTVDhIWJIMXOuNNL0apKH2S16en9eiA==,
+ }
+
+ motion-utils@12.23.6:
+ resolution:
+ {
+ integrity: sha512-eAWoPgr4eFEOFfg2WjIsMoqJTW6Z8MTUCgn/GZ3VRpClWBdnbjryiA3ZSNLyxCTmCQx4RmYX6jX1iWHbenUPNQ==,
+ }
+
+ motion@12.23.25:
+ resolution:
+ {
+ integrity: sha512-Fk5Y1kcgxYiTYOUjmwfXQAP7tP+iGqw/on1UID9WEL/6KpzxPr9jY2169OsjgZvXJdpraKXy0orkjaCVIl5fgQ==,
+ }
+ peerDependencies:
+ "@emotion/is-prop-valid": "*"
+ react: ^18.0.0 || ^19.0.0
+ react-dom: ^18.0.0 || ^19.0.0
+ peerDependenciesMeta:
+ "@emotion/is-prop-valid":
+ optional: true
+ react:
+ optional: true
+ react-dom:
+ optional: true
ms@2.1.3:
- resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
+ resolution:
+ {
+ integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==,
+ }
+
+ nano-spawn@2.0.0:
+ resolution:
+ {
+ integrity: sha512-tacvGzUY5o2D8CBh2rrwxyNojUsZNU2zjNTzKQrkgGJQTbGAfArVWXSKMBokBeeg6C7OLRGUEyoFlYbfeWQIqw==,
+ }
+ engines: { node: ">=20.17" }
nanoid@3.3.11:
- resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==}
- engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
+ 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==}
+ resolution:
+ {
+ integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==,
+ }
node-releases@2.0.27:
- resolution: {integrity: sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==}
+ resolution:
+ {
+ integrity: sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==,
+ }
+
+ normalize-range@0.1.2:
+ resolution:
+ {
+ integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==,
+ }
+ engines: { node: ">=0.10.0" }
+
+ onetime@7.0.0:
+ resolution:
+ {
+ integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==,
+ }
+ engines: { node: ">=18" }
optionator@0.9.4:
- resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==}
- engines: {node: '>= 0.8.0'}
+ resolution:
+ {
+ integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==,
+ }
+ engines: { node: ">= 0.8.0" }
p-limit@3.1.0:
- resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}
- engines: {node: '>=10'}
+ 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'}
+ 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'}
+ resolution:
+ {
+ integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==,
+ }
+ engines: { node: ">=6" }
path-exists@4.0.0:
- resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
- engines: {node: '>=8'}
+ resolution:
+ {
+ integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==,
+ }
+ engines: { node: ">=8" }
path-key@3.1.1:
- resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
- engines: {node: '>=8'}
+ resolution:
+ {
+ integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==,
+ }
+ engines: { node: ">=8" }
picocolors@1.1.1:
- resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
+ 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'}
+ resolution:
+ {
+ integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==,
+ }
+ engines: { node: ">=12" }
+
+ pidtree@0.6.0:
+ resolution:
+ {
+ integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==,
+ }
+ engines: { node: ">=0.10" }
+ hasBin: true
+
+ postcss-value-parser@4.2.0:
+ resolution:
+ {
+ integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==,
+ }
postcss@8.5.6:
- resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==}
- engines: {node: ^10 || ^12 || >=14}
+ 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'}
+ resolution:
+ {
+ integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==,
+ }
+ engines: { node: ">= 0.8.0" }
punycode@2.3.1:
- resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
- engines: {node: '>=6'}
+ resolution:
+ {
+ integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==,
+ }
+ engines: { node: ">=6" }
react-dom@19.2.0:
- resolution: {integrity: sha512-UlbRu4cAiGaIewkPyiRGJk0imDN2T3JjieT6spoL2UeSf5od4n5LB/mQ4ejmxhCFT1tYe8IvaFulzynWovsEFQ==}
+ resolution:
+ {
+ integrity: sha512-UlbRu4cAiGaIewkPyiRGJk0imDN2T3JjieT6spoL2UeSf5od4n5LB/mQ4ejmxhCFT1tYe8IvaFulzynWovsEFQ==,
+ }
peerDependencies:
react: ^19.2.0
react-refresh@0.18.0:
- resolution: {integrity: sha512-QgT5//D3jfjJb6Gsjxv0Slpj23ip+HtOpnNgnb2S5zU3CB26G/IDPGoy4RJB42wzFE46DRsstbW6tKHoKbhAxw==}
- engines: {node: '>=0.10.0'}
+ resolution:
+ {
+ integrity: sha512-QgT5//D3jfjJb6Gsjxv0Slpj23ip+HtOpnNgnb2S5zU3CB26G/IDPGoy4RJB42wzFE46DRsstbW6tKHoKbhAxw==,
+ }
+ engines: { node: ">=0.10.0" }
+
+ react-remove-scroll-bar@2.3.8:
+ resolution:
+ {
+ integrity: sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==,
+ }
+ engines: { node: ">=10" }
+ peerDependencies:
+ "@types/react": "*"
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+
+ react-remove-scroll@2.7.1:
+ resolution:
+ {
+ integrity: sha512-HpMh8+oahmIdOuS5aFKKY6Pyog+FNaZV/XyJOq7b4YFwsFHe5yYfdbIalI4k3vU2nSDql7YskmUseHsRrJqIPA==,
+ }
+ 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
+
+ react-router-dom@7.9.6:
+ resolution:
+ {
+ integrity: sha512-2MkC2XSXq6HjGcihnx1s0DBWQETI4mlis4Ux7YTLvP67xnGxCvq+BcCQSO81qQHVUTM1V53tl4iVVaY5sReCOA==,
+ }
+ engines: { node: ">=20.0.0" }
+ peerDependencies:
+ react: ">=18"
+ react-dom: ">=18"
+
+ react-router@7.9.6:
+ resolution:
+ {
+ integrity: sha512-Y1tUp8clYRXpfPITyuifmSoE2vncSME18uVLgaqyxh9H35JWpIfzHo+9y3Fzh5odk/jxPW29IgLgzcdwxGqyNA==,
+ }
+ engines: { node: ">=20.0.0" }
+ peerDependencies:
+ react: ">=18"
+ react-dom: ">=18"
+ peerDependenciesMeta:
+ react-dom:
+ optional: true
+
+ react-style-singleton@2.2.3:
+ resolution:
+ {
+ integrity: sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==,
+ }
+ 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
react@19.2.0:
- resolution: {integrity: sha512-tmbWg6W31tQLeB5cdIBOicJDJRR2KzXsV7uSK9iNfLWQ5bIZfxuPEHp7M8wiHyHnn0DD1i7w3Zmin0FtkrwoCQ==}
- engines: {node: '>=0.10.0'}
+ resolution:
+ {
+ integrity: sha512-tmbWg6W31tQLeB5cdIBOicJDJRR2KzXsV7uSK9iNfLWQ5bIZfxuPEHp7M8wiHyHnn0DD1i7w3Zmin0FtkrwoCQ==,
+ }
+ engines: { node: ">=0.10.0" }
resolve-from@4.0.0:
- resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
- engines: {node: '>=4'}
+ resolution:
+ {
+ integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==,
+ }
+ engines: { node: ">=4" }
+
+ restore-cursor@5.1.0:
+ resolution:
+ {
+ integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==,
+ }
+ engines: { node: ">=18" }
+
+ rfdc@1.4.1:
+ resolution:
+ {
+ integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==,
+ }
rollup@4.53.3:
- resolution: {integrity: sha512-w8GmOxZfBmKknvdXU1sdM9NHcoQejwF/4mNgj2JuEEdRaHwwF12K7e9eXn1nLZ07ad+du76mkVsyeb2rKGllsA==}
- engines: {node: '>=18.0.0', npm: '>=8.0.0'}
+ resolution:
+ {
+ integrity: sha512-w8GmOxZfBmKknvdXU1sdM9NHcoQejwF/4mNgj2JuEEdRaHwwF12K7e9eXn1nLZ07ad+du76mkVsyeb2rKGllsA==,
+ }
+ engines: { node: ">=18.0.0", npm: ">=8.0.0" }
hasBin: true
scheduler@0.27.0:
- resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==}
+ resolution:
+ {
+ integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==,
+ }
semver@6.3.1:
- resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
+ resolution:
+ {
+ integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==,
+ }
hasBin: true
semver@7.7.3:
- resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==}
- engines: {node: '>=10'}
+ resolution:
+ {
+ integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==,
+ }
+ engines: { node: ">=10" }
hasBin: true
+ set-cookie-parser@2.7.2:
+ resolution:
+ {
+ integrity: sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw==,
+ }
+
shebang-command@2.0.0:
- resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
- engines: {node: '>=8'}
+ resolution:
+ {
+ integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==,
+ }
+ engines: { node: ">=8" }
shebang-regex@3.0.0:
- resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
- engines: {node: '>=8'}
+ resolution:
+ {
+ integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==,
+ }
+ engines: { node: ">=8" }
+
+ signal-exit@4.1.0:
+ resolution:
+ {
+ integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==,
+ }
+ engines: { node: ">=14" }
+
+ slice-ansi@7.1.2:
+ resolution:
+ {
+ integrity: sha512-iOBWFgUX7caIZiuutICxVgX1SdxwAVFFKwt1EvMYYec/NWO5meOJ6K5uQxhrYBdQJne4KxiqZc+KptFOWFSI9w==,
+ }
+ engines: { node: ">=18" }
source-map-js@1.2.1:
- resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
- engines: {node: '>=0.10.0'}
+ resolution:
+ {
+ integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==,
+ }
+ engines: { node: ">=0.10.0" }
+
+ string-argv@0.3.2:
+ resolution:
+ {
+ integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==,
+ }
+ engines: { node: ">=0.6.19" }
+
+ string-width@7.2.0:
+ resolution:
+ {
+ integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==,
+ }
+ engines: { node: ">=18" }
+
+ string-width@8.1.0:
+ resolution:
+ {
+ integrity: sha512-Kxl3KJGb/gxkaUMOjRsQ8IrXiGW75O4E3RPjFIINOVH8AMl2SQ/yWdTzWwF3FevIX9LcMAjJW+GRwAlAbTSXdg==,
+ }
+ engines: { node: ">=20" }
+
+ strip-ansi@7.1.2:
+ resolution:
+ {
+ integrity: sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==,
+ }
+ engines: { node: ">=12" }
strip-json-comments@3.1.1:
- resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
- engines: {node: '>=8'}
+ resolution:
+ {
+ integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==,
+ }
+ engines: { node: ">=8" }
supports-color@7.2.0:
- resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
- engines: {node: '>=8'}
+ resolution:
+ {
+ integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==,
+ }
+ engines: { node: ">=8" }
+
+ tailwind-merge@3.4.0:
+ resolution:
+ {
+ integrity: sha512-uSaO4gnW+b3Y2aWoWfFpX62vn2sR3skfhbjsEnaBI81WD1wBLlHZe5sWf0AqjksNdYTbGBEd0UasQMT3SNV15g==,
+ }
+
+ tailwindcss@4.1.17:
+ resolution:
+ {
+ integrity: sha512-j9Ee2YjuQqYT9bbRTfTZht9W/ytp5H+jJpZKiYdP/bpnXARAuELt9ofP0lPnmHjbga7SNQIxdTAXCmtKVYjN+Q==,
+ }
+
+ tapable@2.3.0:
+ resolution:
+ {
+ integrity: sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==,
+ }
+ engines: { node: ">=6" }
tinyglobby@0.2.15:
- resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==}
- engines: {node: '>=12.0.0'}
+ 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" }
ts-api-utils@2.1.0:
- resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==}
- engines: {node: '>=18.12'}
+ resolution:
+ {
+ integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==,
+ }
+ engines: { node: ">=18.12" }
peerDependencies:
- typescript: '>=4.8.4'
+ typescript: ">=4.8.4"
+
+ tslib@2.8.1:
+ resolution:
+ {
+ integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==,
+ }
+
+ tw-animate-css@1.4.0:
+ resolution:
+ {
+ integrity: sha512-7bziOlRqH0hJx80h/3mbicLW7o8qLsH5+RaLR2t+OHM3D0JlWGODQKQ4cxbK7WlvmUxpcj6Kgu6EKqjrGFe3QQ==,
+ }
type-check@0.4.0:
- resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
- engines: {node: '>= 0.8.0'}
+ resolution:
+ {
+ integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==,
+ }
+ engines: { node: ">= 0.8.0" }
typescript-eslint@8.48.0:
- resolution: {integrity: sha512-fcKOvQD9GUn3Xw63EgiDqhvWJ5jsyZUaekl3KVpGsDJnN46WJTe3jWxtQP9lMZm1LJNkFLlTaWAxK2vUQR+cqw==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ resolution:
+ {
+ integrity: sha512-fcKOvQD9GUn3Xw63EgiDqhvWJ5jsyZUaekl3KVpGsDJnN46WJTe3jWxtQP9lMZm1LJNkFLlTaWAxK2vUQR+cqw==,
+ }
+ 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: ">=4.8.4 <6.0.0"
typescript@5.9.3:
- resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==}
- engines: {node: '>=14.17'}
+ resolution:
+ {
+ integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==,
+ }
+ engines: { node: ">=14.17" }
hasBin: true
undici-types@7.16.0:
- resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==}
+ resolution:
+ {
+ integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==,
+ }
update-browserslist-db@1.1.4:
- resolution: {integrity: sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A==}
+ resolution:
+ {
+ integrity: sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A==,
+ }
hasBin: true
peerDependencies:
- browserslist: '>= 4.21.0'
+ browserslist: ">= 4.21.0"
uri-js@4.4.1:
- resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
+ 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
vite@7.2.4:
- resolution: {integrity: sha512-NL8jTlbo0Tn4dUEXEsUg8KeyG/Lkmc4Fnzb8JXN/Ykm9G4HNImjtABMJgkQoVjOBN/j2WAwDTRytdqJbZsah7w==}
- engines: {node: ^20.19.0 || >=22.12.0}
+ resolution:
+ {
+ integrity: sha512-NL8jTlbo0Tn4dUEXEsUg8KeyG/Lkmc4Fnzb8JXN/Ykm9G4HNImjtABMJgkQoVjOBN/j2WAwDTRytdqJbZsah7w==,
+ }
+ engines: { node: ^20.19.0 || >=22.12.0 }
hasBin: true
peerDependencies:
- '@types/node': ^20.19.0 || >=22.12.0
- jiti: '>=1.21.0'
+ "@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'
+ stylus: ">=0.54.8"
sugarss: ^5.0.0
terser: ^5.16.0
tsx: ^4.8.1
yaml: ^2.4.2
peerDependenciesMeta:
- '@types/node':
+ "@types/node":
optional: true
jiti:
optional: true
@@ -1060,52 +3079,84 @@ packages:
optional: true
which@2.0.2:
- resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
- engines: {node: '>= 8'}
+ 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'}
+ resolution:
+ {
+ integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==,
+ }
+ engines: { node: ">=0.10.0" }
+
+ wrap-ansi@9.0.2:
+ resolution:
+ {
+ integrity: sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==,
+ }
+ engines: { node: ">=18" }
yallist@3.1.1:
- resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==}
+ resolution:
+ {
+ integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==,
+ }
+
+ yaml@2.8.1:
+ resolution:
+ {
+ integrity: sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw==,
+ }
+ engines: { node: ">= 14.6" }
+ hasBin: true
yocto-queue@0.1.0:
- resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
- engines: {node: '>=10'}
+ resolution:
+ {
+ integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==,
+ }
+ engines: { node: ">=10" }
zod-validation-error@4.0.2:
- resolution: {integrity: sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ==}
- engines: {node: '>=18.0.0'}
+ resolution:
+ {
+ integrity: sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ==,
+ }
+ engines: { node: ">=18.0.0" }
peerDependencies:
zod: ^3.25.0 || ^4.0.0
zod@4.1.13:
- resolution: {integrity: sha512-AvvthqfqrAhNH9dnfmrfKzX5upOdjUVJYFqNSlkmGf64gRaTzlPwz99IHYnVs28qYAybvAlBV+H7pn0saFY4Ig==}
+ resolution:
+ {
+ integrity: sha512-AvvthqfqrAhNH9dnfmrfKzX5upOdjUVJYFqNSlkmGf64gRaTzlPwz99IHYnVs28qYAybvAlBV+H7pn0saFY4Ig==,
+ }
snapshots:
-
- '@babel/code-frame@7.27.1':
+ "@babel/code-frame@7.27.1":
dependencies:
- '@babel/helper-validator-identifier': 7.28.5
+ "@babel/helper-validator-identifier": 7.28.5
js-tokens: 4.0.0
picocolors: 1.1.1
- '@babel/compat-data@7.28.5': {}
+ "@babel/compat-data@7.28.5": {}
- '@babel/core@7.28.5':
+ "@babel/core@7.28.5":
dependencies:
- '@babel/code-frame': 7.27.1
- '@babel/generator': 7.28.5
- '@babel/helper-compilation-targets': 7.27.2
- '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.5)
- '@babel/helpers': 7.28.4
- '@babel/parser': 7.28.5
- '@babel/template': 7.27.2
- '@babel/traverse': 7.28.5
- '@babel/types': 7.28.5
- '@jridgewell/remapping': 2.3.5
+ "@babel/code-frame": 7.27.1
+ "@babel/generator": 7.28.5
+ "@babel/helper-compilation-targets": 7.27.2
+ "@babel/helper-module-transforms": 7.28.3(@babel/core@7.28.5)
+ "@babel/helpers": 7.28.4
+ "@babel/parser": 7.28.5
+ "@babel/template": 7.27.2
+ "@babel/traverse": 7.28.5
+ "@babel/types": 7.28.5
+ "@jridgewell/remapping": 2.3.5
convert-source-map: 2.0.0
debug: 4.4.3
gensync: 1.0.0-beta.2
@@ -1114,358 +3165,814 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@babel/generator@7.28.5':
+ "@babel/generator@7.28.5":
dependencies:
- '@babel/parser': 7.28.5
- '@babel/types': 7.28.5
- '@jridgewell/gen-mapping': 0.3.13
- '@jridgewell/trace-mapping': 0.3.31
+ "@babel/parser": 7.28.5
+ "@babel/types": 7.28.5
+ "@jridgewell/gen-mapping": 0.3.13
+ "@jridgewell/trace-mapping": 0.3.31
jsesc: 3.1.0
- '@babel/helper-compilation-targets@7.27.2':
+ "@babel/helper-compilation-targets@7.27.2":
dependencies:
- '@babel/compat-data': 7.28.5
- '@babel/helper-validator-option': 7.27.1
+ "@babel/compat-data": 7.28.5
+ "@babel/helper-validator-option": 7.27.1
browserslist: 4.28.0
lru-cache: 5.1.1
semver: 6.3.1
- '@babel/helper-globals@7.28.0': {}
+ "@babel/helper-globals@7.28.0": {}
- '@babel/helper-module-imports@7.27.1':
+ "@babel/helper-module-imports@7.27.1":
dependencies:
- '@babel/traverse': 7.28.5
- '@babel/types': 7.28.5
+ "@babel/traverse": 7.28.5
+ "@babel/types": 7.28.5
transitivePeerDependencies:
- supports-color
- '@babel/helper-module-transforms@7.28.3(@babel/core@7.28.5)':
+ "@babel/helper-module-transforms@7.28.3(@babel/core@7.28.5)":
dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-module-imports': 7.27.1
- '@babel/helper-validator-identifier': 7.28.5
- '@babel/traverse': 7.28.5
+ "@babel/core": 7.28.5
+ "@babel/helper-module-imports": 7.27.1
+ "@babel/helper-validator-identifier": 7.28.5
+ "@babel/traverse": 7.28.5
+ transitivePeerDependencies:
+ - supports-color
+
+ "@babel/helper-plugin-utils@7.27.1": {}
+
+ "@babel/helper-string-parser@7.27.1": {}
+
+ "@babel/helper-validator-identifier@7.28.5": {}
+
+ "@babel/helper-validator-option@7.27.1": {}
+
+ "@babel/helpers@7.28.4":
+ dependencies:
+ "@babel/template": 7.27.2
+ "@babel/types": 7.28.5
+
+ "@babel/parser@7.28.5":
+ dependencies:
+ "@babel/types": 7.28.5
+
+ "@babel/plugin-transform-react-jsx-self@7.27.1(@babel/core@7.28.5)":
+ dependencies:
+ "@babel/core": 7.28.5
+ "@babel/helper-plugin-utils": 7.27.1
+
+ "@babel/plugin-transform-react-jsx-source@7.27.1(@babel/core@7.28.5)":
+ dependencies:
+ "@babel/core": 7.28.5
+ "@babel/helper-plugin-utils": 7.27.1
+
+ "@babel/template@7.27.2":
+ dependencies:
+ "@babel/code-frame": 7.27.1
+ "@babel/parser": 7.28.5
+ "@babel/types": 7.28.5
+
+ "@babel/traverse@7.28.5":
+ dependencies:
+ "@babel/code-frame": 7.27.1
+ "@babel/generator": 7.28.5
+ "@babel/helper-globals": 7.28.0
+ "@babel/parser": 7.28.5
+ "@babel/template": 7.27.2
+ "@babel/types": 7.28.5
+ debug: 4.4.3
+ transitivePeerDependencies:
+ - supports-color
+
+ "@babel/types@7.28.5":
+ dependencies:
+ "@babel/helper-string-parser": 7.27.1
+ "@babel/helper-validator-identifier": 7.28.5
+
+ "@esbuild/aix-ppc64@0.25.12":
+ optional: true
+
+ "@esbuild/android-arm64@0.25.12":
+ optional: true
+
+ "@esbuild/android-arm@0.25.12":
+ optional: true
+
+ "@esbuild/android-x64@0.25.12":
+ optional: true
+
+ "@esbuild/darwin-arm64@0.25.12":
+ optional: true
+
+ "@esbuild/darwin-x64@0.25.12":
+ optional: true
+
+ "@esbuild/freebsd-arm64@0.25.12":
+ optional: true
+
+ "@esbuild/freebsd-x64@0.25.12":
+ optional: true
+
+ "@esbuild/linux-arm64@0.25.12":
+ optional: true
+
+ "@esbuild/linux-arm@0.25.12":
+ optional: true
+
+ "@esbuild/linux-ia32@0.25.12":
+ optional: true
+
+ "@esbuild/linux-loong64@0.25.12":
+ optional: true
+
+ "@esbuild/linux-mips64el@0.25.12":
+ optional: true
+
+ "@esbuild/linux-ppc64@0.25.12":
+ optional: true
+
+ "@esbuild/linux-riscv64@0.25.12":
+ optional: true
+
+ "@esbuild/linux-s390x@0.25.12":
+ optional: true
+
+ "@esbuild/linux-x64@0.25.12":
+ optional: true
+
+ "@esbuild/netbsd-arm64@0.25.12":
+ optional: true
+
+ "@esbuild/netbsd-x64@0.25.12":
+ optional: true
+
+ "@esbuild/openbsd-arm64@0.25.12":
+ optional: true
+
+ "@esbuild/openbsd-x64@0.25.12":
+ optional: true
+
+ "@esbuild/openharmony-arm64@0.25.12":
+ optional: true
+
+ "@esbuild/sunos-x64@0.25.12":
+ optional: true
+
+ "@esbuild/win32-arm64@0.25.12":
+ optional: true
+
+ "@esbuild/win32-ia32@0.25.12":
+ optional: true
+
+ "@esbuild/win32-x64@0.25.12":
+ optional: true
+
+ "@eslint-community/eslint-utils@4.9.0(eslint@9.39.1(jiti@2.6.1))":
+ dependencies:
+ eslint: 9.39.1(jiti@2.6.1)
+ eslint-visitor-keys: 3.4.3
+
+ "@eslint-community/regexpp@4.12.2": {}
+
+ "@eslint/config-array@0.21.1":
+ dependencies:
+ "@eslint/object-schema": 2.1.7
+ debug: 4.4.3
+ minimatch: 3.1.2
+ transitivePeerDependencies:
+ - supports-color
+
+ "@eslint/config-helpers@0.4.2":
+ dependencies:
+ "@eslint/core": 0.17.0
+
+ "@eslint/core@0.17.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.1
+ minimatch: 3.1.2
+ strip-json-comments: 3.1.1
transitivePeerDependencies:
- supports-color
- '@babel/helper-plugin-utils@7.27.1': {}
+ "@eslint/js@9.39.1": {}
+
+ "@eslint/object-schema@2.1.7": {}
+
+ "@eslint/plugin-kit@0.4.1":
+ dependencies:
+ "@eslint/core": 0.17.0
+ levn: 0.4.1
+
+ "@floating-ui/core@1.7.3":
+ dependencies:
+ "@floating-ui/utils": 0.2.10
+
+ "@floating-ui/dom@1.7.4":
+ dependencies:
+ "@floating-ui/core": 1.7.3
+ "@floating-ui/utils": 0.2.10
+
+ "@floating-ui/react-dom@2.1.6(react-dom@19.2.0(react@19.2.0))(react@19.2.0)":
+ dependencies:
+ "@floating-ui/dom": 1.7.4
+ react: 19.2.0
+ react-dom: 19.2.0(react@19.2.0)
+
+ "@floating-ui/utils@0.2.10": {}
+
+ "@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
- '@babel/helper-string-parser@7.27.1': {}
+ "@radix-ui/primitive@1.1.3": {}
- '@babel/helper-validator-identifier@7.28.5': {}
+ "@radix-ui/react-arrow@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)":
+ dependencies:
+ "@radix-ui/react-primitive": 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(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)
+ optionalDependencies:
+ "@types/react": 19.2.7
+ "@types/react-dom": 19.2.3(@types/react@19.2.7)
+
+ "@radix-ui/react-avatar@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)":
+ dependencies:
+ "@radix-ui/react-context": 1.1.3(@types/react@19.2.7)(react@19.2.0)
+ "@radix-ui/react-primitive": 2.1.4(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ "@radix-ui/react-use-callback-ref": 1.1.1(@types/react@19.2.7)(react@19.2.0)
+ "@radix-ui/react-use-is-hydrated": 0.1.0(@types/react@19.2.7)(react@19.2.0)
+ "@radix-ui/react-use-layout-effect": 1.1.1(@types/react@19.2.7)(react@19.2.0)
+ react: 19.2.0
+ react-dom: 19.2.0(react@19.2.0)
+ optionalDependencies:
+ "@types/react": 19.2.7
+ "@types/react-dom": 19.2.3(@types/react@19.2.7)
+
+ "@radix-ui/react-collapsible@1.1.12(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)":
+ dependencies:
+ "@radix-ui/primitive": 1.1.3
+ "@radix-ui/react-compose-refs": 1.1.2(@types/react@19.2.7)(react@19.2.0)
+ "@radix-ui/react-context": 1.1.2(@types/react@19.2.7)(react@19.2.0)
+ "@radix-ui/react-id": 1.1.1(@types/react@19.2.7)(react@19.2.0)
+ "@radix-ui/react-presence": 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ "@radix-ui/react-primitive": 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ "@radix-ui/react-use-controllable-state": 1.2.2(@types/react@19.2.7)(react@19.2.0)
+ "@radix-ui/react-use-layout-effect": 1.1.1(@types/react@19.2.7)(react@19.2.0)
+ react: 19.2.0
+ react-dom: 19.2.0(react@19.2.0)
+ optionalDependencies:
+ "@types/react": 19.2.7
+ "@types/react-dom": 19.2.3(@types/react@19.2.7)
+
+ "@radix-ui/react-collection@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)":
+ dependencies:
+ "@radix-ui/react-compose-refs": 1.1.2(@types/react@19.2.7)(react@19.2.0)
+ "@radix-ui/react-context": 1.1.2(@types/react@19.2.7)(react@19.2.0)
+ "@radix-ui/react-primitive": 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ "@radix-ui/react-slot": 1.2.3(@types/react@19.2.7)(react@19.2.0)
+ react: 19.2.0
+ react-dom: 19.2.0(react@19.2.0)
+ optionalDependencies:
+ "@types/react": 19.2.7
+ "@types/react-dom": 19.2.3(@types/react@19.2.7)
+
+ "@radix-ui/react-compose-refs@1.1.2(@types/react@19.2.7)(react@19.2.0)":
+ dependencies:
+ react: 19.2.0
+ optionalDependencies:
+ "@types/react": 19.2.7
+
+ "@radix-ui/react-context@1.1.2(@types/react@19.2.7)(react@19.2.0)":
+ dependencies:
+ react: 19.2.0
+ optionalDependencies:
+ "@types/react": 19.2.7
+
+ "@radix-ui/react-context@1.1.3(@types/react@19.2.7)(react@19.2.0)":
+ dependencies:
+ react: 19.2.0
+ optionalDependencies:
+ "@types/react": 19.2.7
+
+ "@radix-ui/react-dialog@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)":
+ dependencies:
+ "@radix-ui/primitive": 1.1.3
+ "@radix-ui/react-compose-refs": 1.1.2(@types/react@19.2.7)(react@19.2.0)
+ "@radix-ui/react-context": 1.1.2(@types/react@19.2.7)(react@19.2.0)
+ "@radix-ui/react-dismissable-layer": 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ "@radix-ui/react-focus-guards": 1.1.3(@types/react@19.2.7)(react@19.2.0)
+ "@radix-ui/react-focus-scope": 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ "@radix-ui/react-id": 1.1.1(@types/react@19.2.7)(react@19.2.0)
+ "@radix-ui/react-portal": 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ "@radix-ui/react-presence": 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ "@radix-ui/react-primitive": 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ "@radix-ui/react-slot": 1.2.3(@types/react@19.2.7)(react@19.2.0)
+ "@radix-ui/react-use-controllable-state": 1.2.2(@types/react@19.2.7)(react@19.2.0)
+ aria-hidden: 1.2.6
+ react: 19.2.0
+ react-dom: 19.2.0(react@19.2.0)
+ react-remove-scroll: 2.7.1(@types/react@19.2.7)(react@19.2.0)
+ optionalDependencies:
+ "@types/react": 19.2.7
+ "@types/react-dom": 19.2.3(@types/react@19.2.7)
+
+ "@radix-ui/react-direction@1.1.1(@types/react@19.2.7)(react@19.2.0)":
+ dependencies:
+ react: 19.2.0
+ optionalDependencies:
+ "@types/react": 19.2.7
+
+ "@radix-ui/react-dismissable-layer@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)":
+ dependencies:
+ "@radix-ui/primitive": 1.1.3
+ "@radix-ui/react-compose-refs": 1.1.2(@types/react@19.2.7)(react@19.2.0)
+ "@radix-ui/react-primitive": 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ "@radix-ui/react-use-callback-ref": 1.1.1(@types/react@19.2.7)(react@19.2.0)
+ "@radix-ui/react-use-escape-keydown": 1.1.1(@types/react@19.2.7)(react@19.2.0)
+ react: 19.2.0
+ react-dom: 19.2.0(react@19.2.0)
+ optionalDependencies:
+ "@types/react": 19.2.7
+ "@types/react-dom": 19.2.3(@types/react@19.2.7)
+
+ "@radix-ui/react-dropdown-menu@2.1.16(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)":
+ dependencies:
+ "@radix-ui/primitive": 1.1.3
+ "@radix-ui/react-compose-refs": 1.1.2(@types/react@19.2.7)(react@19.2.0)
+ "@radix-ui/react-context": 1.1.2(@types/react@19.2.7)(react@19.2.0)
+ "@radix-ui/react-id": 1.1.1(@types/react@19.2.7)(react@19.2.0)
+ "@radix-ui/react-menu": 2.1.16(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ "@radix-ui/react-primitive": 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ "@radix-ui/react-use-controllable-state": 1.2.2(@types/react@19.2.7)(react@19.2.0)
+ react: 19.2.0
+ react-dom: 19.2.0(react@19.2.0)
+ optionalDependencies:
+ "@types/react": 19.2.7
+ "@types/react-dom": 19.2.3(@types/react@19.2.7)
+
+ "@radix-ui/react-focus-guards@1.1.3(@types/react@19.2.7)(react@19.2.0)":
+ dependencies:
+ react: 19.2.0
+ optionalDependencies:
+ "@types/react": 19.2.7
+
+ "@radix-ui/react-focus-scope@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)":
+ dependencies:
+ "@radix-ui/react-compose-refs": 1.1.2(@types/react@19.2.7)(react@19.2.0)
+ "@radix-ui/react-primitive": 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ "@radix-ui/react-use-callback-ref": 1.1.1(@types/react@19.2.7)(react@19.2.0)
+ react: 19.2.0
+ react-dom: 19.2.0(react@19.2.0)
+ optionalDependencies:
+ "@types/react": 19.2.7
+ "@types/react-dom": 19.2.3(@types/react@19.2.7)
+
+ "@radix-ui/react-id@1.1.1(@types/react@19.2.7)(react@19.2.0)":
+ dependencies:
+ "@radix-ui/react-use-layout-effect": 1.1.1(@types/react@19.2.7)(react@19.2.0)
+ react: 19.2.0
+ optionalDependencies:
+ "@types/react": 19.2.7
+
+ "@radix-ui/react-menu@2.1.16(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)":
+ dependencies:
+ "@radix-ui/primitive": 1.1.3
+ "@radix-ui/react-collection": 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ "@radix-ui/react-compose-refs": 1.1.2(@types/react@19.2.7)(react@19.2.0)
+ "@radix-ui/react-context": 1.1.2(@types/react@19.2.7)(react@19.2.0)
+ "@radix-ui/react-direction": 1.1.1(@types/react@19.2.7)(react@19.2.0)
+ "@radix-ui/react-dismissable-layer": 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ "@radix-ui/react-focus-guards": 1.1.3(@types/react@19.2.7)(react@19.2.0)
+ "@radix-ui/react-focus-scope": 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ "@radix-ui/react-id": 1.1.1(@types/react@19.2.7)(react@19.2.0)
+ "@radix-ui/react-popper": 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ "@radix-ui/react-portal": 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ "@radix-ui/react-presence": 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ "@radix-ui/react-primitive": 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ "@radix-ui/react-roving-focus": 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ "@radix-ui/react-slot": 1.2.3(@types/react@19.2.7)(react@19.2.0)
+ "@radix-ui/react-use-callback-ref": 1.1.1(@types/react@19.2.7)(react@19.2.0)
+ aria-hidden: 1.2.6
+ react: 19.2.0
+ react-dom: 19.2.0(react@19.2.0)
+ react-remove-scroll: 2.7.1(@types/react@19.2.7)(react@19.2.0)
+ optionalDependencies:
+ "@types/react": 19.2.7
+ "@types/react-dom": 19.2.3(@types/react@19.2.7)
+
+ "@radix-ui/react-popper@1.2.8(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)":
+ dependencies:
+ "@floating-ui/react-dom": 2.1.6(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ "@radix-ui/react-arrow": 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ "@radix-ui/react-compose-refs": 1.1.2(@types/react@19.2.7)(react@19.2.0)
+ "@radix-ui/react-context": 1.1.2(@types/react@19.2.7)(react@19.2.0)
+ "@radix-ui/react-primitive": 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ "@radix-ui/react-use-callback-ref": 1.1.1(@types/react@19.2.7)(react@19.2.0)
+ "@radix-ui/react-use-layout-effect": 1.1.1(@types/react@19.2.7)(react@19.2.0)
+ "@radix-ui/react-use-rect": 1.1.1(@types/react@19.2.7)(react@19.2.0)
+ "@radix-ui/react-use-size": 1.1.1(@types/react@19.2.7)(react@19.2.0)
+ "@radix-ui/rect": 1.1.1
+ react: 19.2.0
+ react-dom: 19.2.0(react@19.2.0)
+ optionalDependencies:
+ "@types/react": 19.2.7
+ "@types/react-dom": 19.2.3(@types/react@19.2.7)
+
+ "@radix-ui/react-portal@1.1.9(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)":
+ dependencies:
+ "@radix-ui/react-primitive": 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ "@radix-ui/react-use-layout-effect": 1.1.1(@types/react@19.2.7)(react@19.2.0)
+ react: 19.2.0
+ react-dom: 19.2.0(react@19.2.0)
+ optionalDependencies:
+ "@types/react": 19.2.7
+ "@types/react-dom": 19.2.3(@types/react@19.2.7)
+
+ "@radix-ui/react-presence@1.1.5(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)":
+ dependencies:
+ "@radix-ui/react-compose-refs": 1.1.2(@types/react@19.2.7)(react@19.2.0)
+ "@radix-ui/react-use-layout-effect": 1.1.1(@types/react@19.2.7)(react@19.2.0)
+ react: 19.2.0
+ react-dom: 19.2.0(react@19.2.0)
+ optionalDependencies:
+ "@types/react": 19.2.7
+ "@types/react-dom": 19.2.3(@types/react@19.2.7)
+
+ "@radix-ui/react-primitive@2.1.3(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)":
+ dependencies:
+ "@radix-ui/react-slot": 1.2.3(@types/react@19.2.7)(react@19.2.0)
+ react: 19.2.0
+ react-dom: 19.2.0(react@19.2.0)
+ optionalDependencies:
+ "@types/react": 19.2.7
+ "@types/react-dom": 19.2.3(@types/react@19.2.7)
+
+ "@radix-ui/react-primitive@2.1.4(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)":
+ dependencies:
+ "@radix-ui/react-slot": 1.2.4(@types/react@19.2.7)(react@19.2.0)
+ react: 19.2.0
+ react-dom: 19.2.0(react@19.2.0)
+ optionalDependencies:
+ "@types/react": 19.2.7
+ "@types/react-dom": 19.2.3(@types/react@19.2.7)
+
+ "@radix-ui/react-roving-focus@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)":
+ dependencies:
+ "@radix-ui/primitive": 1.1.3
+ "@radix-ui/react-collection": 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ "@radix-ui/react-compose-refs": 1.1.2(@types/react@19.2.7)(react@19.2.0)
+ "@radix-ui/react-context": 1.1.2(@types/react@19.2.7)(react@19.2.0)
+ "@radix-ui/react-direction": 1.1.1(@types/react@19.2.7)(react@19.2.0)
+ "@radix-ui/react-id": 1.1.1(@types/react@19.2.7)(react@19.2.0)
+ "@radix-ui/react-primitive": 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ "@radix-ui/react-use-callback-ref": 1.1.1(@types/react@19.2.7)(react@19.2.0)
+ "@radix-ui/react-use-controllable-state": 1.2.2(@types/react@19.2.7)(react@19.2.0)
+ react: 19.2.0
+ react-dom: 19.2.0(react@19.2.0)
+ optionalDependencies:
+ "@types/react": 19.2.7
+ "@types/react-dom": 19.2.3(@types/react@19.2.7)
+
+ "@radix-ui/react-separator@1.1.8(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)":
+ dependencies:
+ "@radix-ui/react-primitive": 2.1.4(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(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)
+ optionalDependencies:
+ "@types/react": 19.2.7
+ "@types/react-dom": 19.2.3(@types/react@19.2.7)
+
+ "@radix-ui/react-slot@1.2.3(@types/react@19.2.7)(react@19.2.0)":
+ dependencies:
+ "@radix-ui/react-compose-refs": 1.1.2(@types/react@19.2.7)(react@19.2.0)
+ react: 19.2.0
+ optionalDependencies:
+ "@types/react": 19.2.7
+
+ "@radix-ui/react-slot@1.2.4(@types/react@19.2.7)(react@19.2.0)":
+ dependencies:
+ "@radix-ui/react-compose-refs": 1.1.2(@types/react@19.2.7)(react@19.2.0)
+ react: 19.2.0
+ optionalDependencies:
+ "@types/react": 19.2.7
- '@babel/helper-validator-option@7.27.1': {}
+ "@radix-ui/react-tooltip@1.2.8(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)":
+ dependencies:
+ "@radix-ui/primitive": 1.1.3
+ "@radix-ui/react-compose-refs": 1.1.2(@types/react@19.2.7)(react@19.2.0)
+ "@radix-ui/react-context": 1.1.2(@types/react@19.2.7)(react@19.2.0)
+ "@radix-ui/react-dismissable-layer": 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ "@radix-ui/react-id": 1.1.1(@types/react@19.2.7)(react@19.2.0)
+ "@radix-ui/react-popper": 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ "@radix-ui/react-portal": 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ "@radix-ui/react-presence": 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ "@radix-ui/react-primitive": 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ "@radix-ui/react-slot": 1.2.3(@types/react@19.2.7)(react@19.2.0)
+ "@radix-ui/react-use-controllable-state": 1.2.2(@types/react@19.2.7)(react@19.2.0)
+ "@radix-ui/react-visually-hidden": 1.2.3(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(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)
+ optionalDependencies:
+ "@types/react": 19.2.7
+ "@types/react-dom": 19.2.3(@types/react@19.2.7)
- '@babel/helpers@7.28.4':
+ "@radix-ui/react-use-callback-ref@1.1.1(@types/react@19.2.7)(react@19.2.0)":
dependencies:
- '@babel/template': 7.27.2
- '@babel/types': 7.28.5
+ react: 19.2.0
+ optionalDependencies:
+ "@types/react": 19.2.7
- '@babel/parser@7.28.5':
+ "@radix-ui/react-use-controllable-state@1.2.2(@types/react@19.2.7)(react@19.2.0)":
dependencies:
- '@babel/types': 7.28.5
+ "@radix-ui/react-use-effect-event": 0.0.2(@types/react@19.2.7)(react@19.2.0)
+ "@radix-ui/react-use-layout-effect": 1.1.1(@types/react@19.2.7)(react@19.2.0)
+ react: 19.2.0
+ optionalDependencies:
+ "@types/react": 19.2.7
- '@babel/plugin-transform-react-jsx-self@7.27.1(@babel/core@7.28.5)':
+ "@radix-ui/react-use-effect-event@0.0.2(@types/react@19.2.7)(react@19.2.0)":
dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-plugin-utils': 7.27.1
+ "@radix-ui/react-use-layout-effect": 1.1.1(@types/react@19.2.7)(react@19.2.0)
+ react: 19.2.0
+ optionalDependencies:
+ "@types/react": 19.2.7
- '@babel/plugin-transform-react-jsx-source@7.27.1(@babel/core@7.28.5)':
+ "@radix-ui/react-use-escape-keydown@1.1.1(@types/react@19.2.7)(react@19.2.0)":
dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-plugin-utils': 7.27.1
+ "@radix-ui/react-use-callback-ref": 1.1.1(@types/react@19.2.7)(react@19.2.0)
+ react: 19.2.0
+ optionalDependencies:
+ "@types/react": 19.2.7
- '@babel/template@7.27.2':
+ "@radix-ui/react-use-is-hydrated@0.1.0(@types/react@19.2.7)(react@19.2.0)":
dependencies:
- '@babel/code-frame': 7.27.1
- '@babel/parser': 7.28.5
- '@babel/types': 7.28.5
+ react: 19.2.0
+ use-sync-external-store: 1.6.0(react@19.2.0)
+ optionalDependencies:
+ "@types/react": 19.2.7
- '@babel/traverse@7.28.5':
+ "@radix-ui/react-use-layout-effect@1.1.1(@types/react@19.2.7)(react@19.2.0)":
dependencies:
- '@babel/code-frame': 7.27.1
- '@babel/generator': 7.28.5
- '@babel/helper-globals': 7.28.0
- '@babel/parser': 7.28.5
- '@babel/template': 7.27.2
- '@babel/types': 7.28.5
- debug: 4.4.3
- transitivePeerDependencies:
- - supports-color
+ react: 19.2.0
+ optionalDependencies:
+ "@types/react": 19.2.7
- '@babel/types@7.28.5':
+ "@radix-ui/react-use-rect@1.1.1(@types/react@19.2.7)(react@19.2.0)":
dependencies:
- '@babel/helper-string-parser': 7.27.1
- '@babel/helper-validator-identifier': 7.28.5
+ "@radix-ui/rect": 1.1.1
+ react: 19.2.0
+ optionalDependencies:
+ "@types/react": 19.2.7
- '@esbuild/aix-ppc64@0.25.12':
- optional: true
+ "@radix-ui/react-use-size@1.1.1(@types/react@19.2.7)(react@19.2.0)":
+ dependencies:
+ "@radix-ui/react-use-layout-effect": 1.1.1(@types/react@19.2.7)(react@19.2.0)
+ react: 19.2.0
+ optionalDependencies:
+ "@types/react": 19.2.7
- '@esbuild/android-arm64@0.25.12':
- optional: true
+ "@radix-ui/react-visually-hidden@1.2.3(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)":
+ dependencies:
+ "@radix-ui/react-primitive": 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(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)
+ optionalDependencies:
+ "@types/react": 19.2.7
+ "@types/react-dom": 19.2.3(@types/react@19.2.7)
- '@esbuild/android-arm@0.25.12':
- optional: true
+ "@radix-ui/rect@1.1.1": {}
- '@esbuild/android-x64@0.25.12':
- optional: true
+ "@rolldown/pluginutils@1.0.0-beta.47": {}
- '@esbuild/darwin-arm64@0.25.12':
+ "@rollup/rollup-android-arm-eabi@4.53.3":
optional: true
- '@esbuild/darwin-x64@0.25.12':
+ "@rollup/rollup-android-arm64@4.53.3":
optional: true
- '@esbuild/freebsd-arm64@0.25.12':
+ "@rollup/rollup-darwin-arm64@4.53.3":
optional: true
- '@esbuild/freebsd-x64@0.25.12':
+ "@rollup/rollup-darwin-x64@4.53.3":
optional: true
- '@esbuild/linux-arm64@0.25.12':
+ "@rollup/rollup-freebsd-arm64@4.53.3":
optional: true
- '@esbuild/linux-arm@0.25.12':
+ "@rollup/rollup-freebsd-x64@4.53.3":
optional: true
- '@esbuild/linux-ia32@0.25.12':
+ "@rollup/rollup-linux-arm-gnueabihf@4.53.3":
optional: true
- '@esbuild/linux-loong64@0.25.12':
+ "@rollup/rollup-linux-arm-musleabihf@4.53.3":
optional: true
- '@esbuild/linux-mips64el@0.25.12':
+ "@rollup/rollup-linux-arm64-gnu@4.53.3":
optional: true
- '@esbuild/linux-ppc64@0.25.12':
+ "@rollup/rollup-linux-arm64-musl@4.53.3":
optional: true
- '@esbuild/linux-riscv64@0.25.12':
+ "@rollup/rollup-linux-loong64-gnu@4.53.3":
optional: true
- '@esbuild/linux-s390x@0.25.12':
+ "@rollup/rollup-linux-ppc64-gnu@4.53.3":
optional: true
- '@esbuild/linux-x64@0.25.12':
+ "@rollup/rollup-linux-riscv64-gnu@4.53.3":
optional: true
- '@esbuild/netbsd-arm64@0.25.12':
+ "@rollup/rollup-linux-riscv64-musl@4.53.3":
optional: true
- '@esbuild/netbsd-x64@0.25.12':
+ "@rollup/rollup-linux-s390x-gnu@4.53.3":
optional: true
- '@esbuild/openbsd-arm64@0.25.12':
+ "@rollup/rollup-linux-x64-gnu@4.53.3":
optional: true
- '@esbuild/openbsd-x64@0.25.12':
+ "@rollup/rollup-linux-x64-musl@4.53.3":
optional: true
- '@esbuild/openharmony-arm64@0.25.12':
+ "@rollup/rollup-openharmony-arm64@4.53.3":
optional: true
- '@esbuild/sunos-x64@0.25.12':
+ "@rollup/rollup-win32-arm64-msvc@4.53.3":
optional: true
- '@esbuild/win32-arm64@0.25.12':
+ "@rollup/rollup-win32-ia32-msvc@4.53.3":
optional: true
- '@esbuild/win32-ia32@0.25.12':
+ "@rollup/rollup-win32-x64-gnu@4.53.3":
optional: true
- '@esbuild/win32-x64@0.25.12':
+ "@rollup/rollup-win32-x64-msvc@4.53.3":
optional: true
- '@eslint-community/eslint-utils@4.9.0(eslint@9.39.1)':
- dependencies:
- eslint: 9.39.1
- eslint-visitor-keys: 3.4.3
-
- '@eslint-community/regexpp@4.12.2': {}
-
- '@eslint/config-array@0.21.1':
- dependencies:
- '@eslint/object-schema': 2.1.7
- debug: 4.4.3
- minimatch: 3.1.2
- transitivePeerDependencies:
- - supports-color
-
- '@eslint/config-helpers@0.4.2':
- dependencies:
- '@eslint/core': 0.17.0
-
- '@eslint/core@0.17.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.1
- minimatch: 3.1.2
- strip-json-comments: 3.1.1
- transitivePeerDependencies:
- - supports-color
-
- '@eslint/js@9.39.1': {}
-
- '@eslint/object-schema@2.1.7': {}
-
- '@eslint/plugin-kit@0.4.1':
- dependencies:
- '@eslint/core': 0.17.0
- levn: 0.4.1
-
- '@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':
+ "@tailwindcss/node@4.1.17":
dependencies:
- '@jridgewell/resolve-uri': 3.1.2
- '@jridgewell/sourcemap-codec': 1.5.5
-
- '@rolldown/pluginutils@1.0.0-beta.47': {}
-
- '@rollup/rollup-android-arm-eabi@4.53.3':
- optional: true
-
- '@rollup/rollup-android-arm64@4.53.3':
- optional: true
-
- '@rollup/rollup-darwin-arm64@4.53.3':
- optional: true
-
- '@rollup/rollup-darwin-x64@4.53.3':
- optional: true
-
- '@rollup/rollup-freebsd-arm64@4.53.3':
- optional: true
-
- '@rollup/rollup-freebsd-x64@4.53.3':
- optional: true
-
- '@rollup/rollup-linux-arm-gnueabihf@4.53.3':
- optional: true
-
- '@rollup/rollup-linux-arm-musleabihf@4.53.3':
- optional: true
-
- '@rollup/rollup-linux-arm64-gnu@4.53.3':
- optional: true
+ "@jridgewell/remapping": 2.3.5
+ enhanced-resolve: 5.18.3
+ jiti: 2.6.1
+ lightningcss: 1.30.2
+ magic-string: 0.30.21
+ source-map-js: 1.2.1
+ tailwindcss: 4.1.17
- '@rollup/rollup-linux-arm64-musl@4.53.3':
+ "@tailwindcss/oxide-android-arm64@4.1.17":
optional: true
- '@rollup/rollup-linux-loong64-gnu@4.53.3':
+ "@tailwindcss/oxide-darwin-arm64@4.1.17":
optional: true
- '@rollup/rollup-linux-ppc64-gnu@4.53.3':
+ "@tailwindcss/oxide-darwin-x64@4.1.17":
optional: true
- '@rollup/rollup-linux-riscv64-gnu@4.53.3':
+ "@tailwindcss/oxide-freebsd-x64@4.1.17":
optional: true
- '@rollup/rollup-linux-riscv64-musl@4.53.3':
+ "@tailwindcss/oxide-linux-arm-gnueabihf@4.1.17":
optional: true
- '@rollup/rollup-linux-s390x-gnu@4.53.3':
+ "@tailwindcss/oxide-linux-arm64-gnu@4.1.17":
optional: true
- '@rollup/rollup-linux-x64-gnu@4.53.3':
+ "@tailwindcss/oxide-linux-arm64-musl@4.1.17":
optional: true
- '@rollup/rollup-linux-x64-musl@4.53.3':
+ "@tailwindcss/oxide-linux-x64-gnu@4.1.17":
optional: true
- '@rollup/rollup-openharmony-arm64@4.53.3':
+ "@tailwindcss/oxide-linux-x64-musl@4.1.17":
optional: true
- '@rollup/rollup-win32-arm64-msvc@4.53.3':
+ "@tailwindcss/oxide-wasm32-wasi@4.1.17":
optional: true
- '@rollup/rollup-win32-ia32-msvc@4.53.3':
+ "@tailwindcss/oxide-win32-arm64-msvc@4.1.17":
optional: true
- '@rollup/rollup-win32-x64-gnu@4.53.3':
+ "@tailwindcss/oxide-win32-x64-msvc@4.1.17":
optional: true
- '@rollup/rollup-win32-x64-msvc@4.53.3':
- optional: true
+ "@tailwindcss/oxide@4.1.17":
+ optionalDependencies:
+ "@tailwindcss/oxide-android-arm64": 4.1.17
+ "@tailwindcss/oxide-darwin-arm64": 4.1.17
+ "@tailwindcss/oxide-darwin-x64": 4.1.17
+ "@tailwindcss/oxide-freebsd-x64": 4.1.17
+ "@tailwindcss/oxide-linux-arm-gnueabihf": 4.1.17
+ "@tailwindcss/oxide-linux-arm64-gnu": 4.1.17
+ "@tailwindcss/oxide-linux-arm64-musl": 4.1.17
+ "@tailwindcss/oxide-linux-x64-gnu": 4.1.17
+ "@tailwindcss/oxide-linux-x64-musl": 4.1.17
+ "@tailwindcss/oxide-wasm32-wasi": 4.1.17
+ "@tailwindcss/oxide-win32-arm64-msvc": 4.1.17
+ "@tailwindcss/oxide-win32-x64-msvc": 4.1.17
+
+ "@tailwindcss/vite@4.1.17(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.1))":
+ dependencies:
+ "@tailwindcss/node": 4.1.17
+ "@tailwindcss/oxide": 4.1.17
+ tailwindcss: 4.1.17
+ vite: 7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.1)
- '@types/babel__core@7.20.5':
+ "@types/babel__core@7.20.5":
dependencies:
- '@babel/parser': 7.28.5
- '@babel/types': 7.28.5
- '@types/babel__generator': 7.27.0
- '@types/babel__template': 7.4.4
- '@types/babel__traverse': 7.28.0
+ "@babel/parser": 7.28.5
+ "@babel/types": 7.28.5
+ "@types/babel__generator": 7.27.0
+ "@types/babel__template": 7.4.4
+ "@types/babel__traverse": 7.28.0
- '@types/babel__generator@7.27.0':
+ "@types/babel__generator@7.27.0":
dependencies:
- '@babel/types': 7.28.5
+ "@babel/types": 7.28.5
- '@types/babel__template@7.4.4':
+ "@types/babel__template@7.4.4":
dependencies:
- '@babel/parser': 7.28.5
- '@babel/types': 7.28.5
+ "@babel/parser": 7.28.5
+ "@babel/types": 7.28.5
- '@types/babel__traverse@7.28.0':
+ "@types/babel__traverse@7.28.0":
dependencies:
- '@babel/types': 7.28.5
+ "@babel/types": 7.28.5
- '@types/estree@1.0.8': {}
+ "@types/estree@1.0.8": {}
- '@types/json-schema@7.0.15': {}
+ "@types/history@4.7.11": {}
- '@types/node@24.10.1':
+ "@types/json-schema@7.0.15": {}
+
+ "@types/node@24.10.1":
dependencies:
undici-types: 7.16.0
- '@types/react-dom@19.2.3(@types/react@19.2.7)':
+ "@types/react-dom@19.2.3(@types/react@19.2.7)":
+ dependencies:
+ "@types/react": 19.2.7
+
+ "@types/react-router-dom@5.3.3":
+ dependencies:
+ "@types/history": 4.7.11
+ "@types/react": 19.2.7
+ "@types/react-router": 5.1.20
+
+ "@types/react-router@5.1.20":
dependencies:
- '@types/react': 19.2.7
+ "@types/history": 4.7.11
+ "@types/react": 19.2.7
- '@types/react@19.2.7':
+ "@types/react@19.2.7":
dependencies:
csstype: 3.2.3
- '@typescript-eslint/eslint-plugin@8.48.0(@typescript-eslint/parser@8.48.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1)(typescript@5.9.3)':
+ "@typescript-eslint/eslint-plugin@8.48.0(@typescript-eslint/parser@8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)":
dependencies:
- '@eslint-community/regexpp': 4.12.2
- '@typescript-eslint/parser': 8.48.0(eslint@9.39.1)(typescript@5.9.3)
- '@typescript-eslint/scope-manager': 8.48.0
- '@typescript-eslint/type-utils': 8.48.0(eslint@9.39.1)(typescript@5.9.3)
- '@typescript-eslint/utils': 8.48.0(eslint@9.39.1)(typescript@5.9.3)
- '@typescript-eslint/visitor-keys': 8.48.0
- eslint: 9.39.1
+ "@eslint-community/regexpp": 4.12.2
+ "@typescript-eslint/parser": 8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
+ "@typescript-eslint/scope-manager": 8.48.0
+ "@typescript-eslint/type-utils": 8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
+ "@typescript-eslint/utils": 8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
+ "@typescript-eslint/visitor-keys": 8.48.0
+ eslint: 9.39.1(jiti@2.6.1)
graphemer: 1.4.0
ignore: 7.0.5
natural-compare: 1.4.0
@@ -1474,56 +3981,56 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/parser@8.48.0(eslint@9.39.1)(typescript@5.9.3)':
+ "@typescript-eslint/parser@8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)":
dependencies:
- '@typescript-eslint/scope-manager': 8.48.0
- '@typescript-eslint/types': 8.48.0
- '@typescript-eslint/typescript-estree': 8.48.0(typescript@5.9.3)
- '@typescript-eslint/visitor-keys': 8.48.0
+ "@typescript-eslint/scope-manager": 8.48.0
+ "@typescript-eslint/types": 8.48.0
+ "@typescript-eslint/typescript-estree": 8.48.0(typescript@5.9.3)
+ "@typescript-eslint/visitor-keys": 8.48.0
debug: 4.4.3
- eslint: 9.39.1
+ eslint: 9.39.1(jiti@2.6.1)
typescript: 5.9.3
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/project-service@8.48.0(typescript@5.9.3)':
+ "@typescript-eslint/project-service@8.48.0(typescript@5.9.3)":
dependencies:
- '@typescript-eslint/tsconfig-utils': 8.48.0(typescript@5.9.3)
- '@typescript-eslint/types': 8.48.0
+ "@typescript-eslint/tsconfig-utils": 8.48.0(typescript@5.9.3)
+ "@typescript-eslint/types": 8.48.0
debug: 4.4.3
typescript: 5.9.3
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/scope-manager@8.48.0':
+ "@typescript-eslint/scope-manager@8.48.0":
dependencies:
- '@typescript-eslint/types': 8.48.0
- '@typescript-eslint/visitor-keys': 8.48.0
+ "@typescript-eslint/types": 8.48.0
+ "@typescript-eslint/visitor-keys": 8.48.0
- '@typescript-eslint/tsconfig-utils@8.48.0(typescript@5.9.3)':
+ "@typescript-eslint/tsconfig-utils@8.48.0(typescript@5.9.3)":
dependencies:
typescript: 5.9.3
- '@typescript-eslint/type-utils@8.48.0(eslint@9.39.1)(typescript@5.9.3)':
+ "@typescript-eslint/type-utils@8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)":
dependencies:
- '@typescript-eslint/types': 8.48.0
- '@typescript-eslint/typescript-estree': 8.48.0(typescript@5.9.3)
- '@typescript-eslint/utils': 8.48.0(eslint@9.39.1)(typescript@5.9.3)
+ "@typescript-eslint/types": 8.48.0
+ "@typescript-eslint/typescript-estree": 8.48.0(typescript@5.9.3)
+ "@typescript-eslint/utils": 8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
debug: 4.4.3
- eslint: 9.39.1
+ eslint: 9.39.1(jiti@2.6.1)
ts-api-utils: 2.1.0(typescript@5.9.3)
typescript: 5.9.3
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/types@8.48.0': {}
+ "@typescript-eslint/types@8.48.0": {}
- '@typescript-eslint/typescript-estree@8.48.0(typescript@5.9.3)':
+ "@typescript-eslint/typescript-estree@8.48.0(typescript@5.9.3)":
dependencies:
- '@typescript-eslint/project-service': 8.48.0(typescript@5.9.3)
- '@typescript-eslint/tsconfig-utils': 8.48.0(typescript@5.9.3)
- '@typescript-eslint/types': 8.48.0
- '@typescript-eslint/visitor-keys': 8.48.0
+ "@typescript-eslint/project-service": 8.48.0(typescript@5.9.3)
+ "@typescript-eslint/tsconfig-utils": 8.48.0(typescript@5.9.3)
+ "@typescript-eslint/types": 8.48.0
+ "@typescript-eslint/visitor-keys": 8.48.0
debug: 4.4.3
minimatch: 9.0.5
semver: 7.7.3
@@ -1533,31 +4040,31 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/utils@8.48.0(eslint@9.39.1)(typescript@5.9.3)':
+ "@typescript-eslint/utils@8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)":
dependencies:
- '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1)
- '@typescript-eslint/scope-manager': 8.48.0
- '@typescript-eslint/types': 8.48.0
- '@typescript-eslint/typescript-estree': 8.48.0(typescript@5.9.3)
- eslint: 9.39.1
+ "@eslint-community/eslint-utils": 4.9.0(eslint@9.39.1(jiti@2.6.1))
+ "@typescript-eslint/scope-manager": 8.48.0
+ "@typescript-eslint/types": 8.48.0
+ "@typescript-eslint/typescript-estree": 8.48.0(typescript@5.9.3)
+ eslint: 9.39.1(jiti@2.6.1)
typescript: 5.9.3
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/visitor-keys@8.48.0':
+ "@typescript-eslint/visitor-keys@8.48.0":
dependencies:
- '@typescript-eslint/types': 8.48.0
+ "@typescript-eslint/types": 8.48.0
eslint-visitor-keys: 4.2.1
- '@vitejs/plugin-react@5.1.1(vite@7.2.4(@types/node@24.10.1))':
+ "@vitejs/plugin-react@5.1.1(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.1))":
dependencies:
- '@babel/core': 7.28.5
- '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.5)
- '@babel/plugin-transform-react-jsx-source': 7.27.1(@babel/core@7.28.5)
- '@rolldown/pluginutils': 1.0.0-beta.47
- '@types/babel__core': 7.20.5
+ "@babel/core": 7.28.5
+ "@babel/plugin-transform-react-jsx-self": 7.27.1(@babel/core@7.28.5)
+ "@babel/plugin-transform-react-jsx-source": 7.27.1(@babel/core@7.28.5)
+ "@rolldown/pluginutils": 1.0.0-beta.47
+ "@types/babel__core": 7.20.5
react-refresh: 0.18.0
- vite: 7.2.4(@types/node@24.10.1)
+ vite: 7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.1)
transitivePeerDependencies:
- supports-color
@@ -1574,15 +4081,37 @@ snapshots:
json-schema-traverse: 0.4.1
uri-js: 4.4.1
+ ansi-escapes@7.2.0:
+ dependencies:
+ environment: 1.1.0
+
+ ansi-regex@6.2.2: {}
+
ansi-styles@4.3.0:
dependencies:
color-convert: 2.0.1
+ ansi-styles@6.2.3: {}
+
argparse@2.0.1: {}
+ aria-hidden@1.2.6:
+ dependencies:
+ tslib: 2.8.1
+
+ autoprefixer@10.4.22(postcss@8.5.6):
+ dependencies:
+ browserslist: 4.28.0
+ caniuse-lite: 1.0.30001757
+ fraction.js: 5.3.4
+ normalize-range: 0.1.2
+ picocolors: 1.1.1
+ postcss: 8.5.6
+ postcss-value-parser: 4.2.0
+
babel-plugin-react-compiler@1.0.0:
dependencies:
- '@babel/types': 7.28.5
+ "@babel/types": 7.28.5
balanced-match@1.0.2: {}
@@ -1597,6 +4126,10 @@ snapshots:
dependencies:
balanced-match: 1.0.2
+ braces@3.0.3:
+ dependencies:
+ fill-range: 7.1.1
+
browserslist@4.28.0:
dependencies:
baseline-browser-mapping: 2.8.31
@@ -1614,16 +4147,37 @@ snapshots:
ansi-styles: 4.3.0
supports-color: 7.2.0
+ class-variance-authority@0.7.1:
+ dependencies:
+ clsx: 2.1.1
+
+ cli-cursor@5.0.0:
+ dependencies:
+ restore-cursor: 5.1.0
+
+ cli-truncate@5.1.1:
+ dependencies:
+ slice-ansi: 7.1.2
+ string-width: 8.1.0
+
+ clsx@2.1.1: {}
+
color-convert@2.0.1:
dependencies:
color-name: 1.1.4
color-name@1.1.4: {}
+ colorette@2.0.20: {}
+
+ commander@14.0.2: {}
+
concat-map@0.0.1: {}
convert-source-map@2.0.0: {}
+ cookie@1.1.1: {}
+
cross-spawn@7.0.6:
dependencies:
path-key: 3.1.1
@@ -1638,55 +4192,68 @@ snapshots:
deep-is@0.1.4: {}
+ detect-libc@2.1.2: {}
+
+ detect-node-es@1.1.0: {}
+
electron-to-chromium@1.5.260: {}
+ emoji-regex@10.6.0: {}
+
+ enhanced-resolve@5.18.3:
+ dependencies:
+ graceful-fs: 4.2.11
+ tapable: 2.3.0
+
+ environment@1.1.0: {}
+
esbuild@0.25.12:
optionalDependencies:
- '@esbuild/aix-ppc64': 0.25.12
- '@esbuild/android-arm': 0.25.12
- '@esbuild/android-arm64': 0.25.12
- '@esbuild/android-x64': 0.25.12
- '@esbuild/darwin-arm64': 0.25.12
- '@esbuild/darwin-x64': 0.25.12
- '@esbuild/freebsd-arm64': 0.25.12
- '@esbuild/freebsd-x64': 0.25.12
- '@esbuild/linux-arm': 0.25.12
- '@esbuild/linux-arm64': 0.25.12
- '@esbuild/linux-ia32': 0.25.12
- '@esbuild/linux-loong64': 0.25.12
- '@esbuild/linux-mips64el': 0.25.12
- '@esbuild/linux-ppc64': 0.25.12
- '@esbuild/linux-riscv64': 0.25.12
- '@esbuild/linux-s390x': 0.25.12
- '@esbuild/linux-x64': 0.25.12
- '@esbuild/netbsd-arm64': 0.25.12
- '@esbuild/netbsd-x64': 0.25.12
- '@esbuild/openbsd-arm64': 0.25.12
- '@esbuild/openbsd-x64': 0.25.12
- '@esbuild/openharmony-arm64': 0.25.12
- '@esbuild/sunos-x64': 0.25.12
- '@esbuild/win32-arm64': 0.25.12
- '@esbuild/win32-ia32': 0.25.12
- '@esbuild/win32-x64': 0.25.12
+ "@esbuild/aix-ppc64": 0.25.12
+ "@esbuild/android-arm": 0.25.12
+ "@esbuild/android-arm64": 0.25.12
+ "@esbuild/android-x64": 0.25.12
+ "@esbuild/darwin-arm64": 0.25.12
+ "@esbuild/darwin-x64": 0.25.12
+ "@esbuild/freebsd-arm64": 0.25.12
+ "@esbuild/freebsd-x64": 0.25.12
+ "@esbuild/linux-arm": 0.25.12
+ "@esbuild/linux-arm64": 0.25.12
+ "@esbuild/linux-ia32": 0.25.12
+ "@esbuild/linux-loong64": 0.25.12
+ "@esbuild/linux-mips64el": 0.25.12
+ "@esbuild/linux-ppc64": 0.25.12
+ "@esbuild/linux-riscv64": 0.25.12
+ "@esbuild/linux-s390x": 0.25.12
+ "@esbuild/linux-x64": 0.25.12
+ "@esbuild/netbsd-arm64": 0.25.12
+ "@esbuild/netbsd-x64": 0.25.12
+ "@esbuild/openbsd-arm64": 0.25.12
+ "@esbuild/openbsd-x64": 0.25.12
+ "@esbuild/openharmony-arm64": 0.25.12
+ "@esbuild/sunos-x64": 0.25.12
+ "@esbuild/win32-arm64": 0.25.12
+ "@esbuild/win32-ia32": 0.25.12
+ "@esbuild/win32-x64": 0.25.12
escalade@3.2.0: {}
escape-string-regexp@4.0.0: {}
- eslint-plugin-react-hooks@7.0.1(eslint@9.39.1):
+ eslint-plugin-react-hooks@7.0.1(eslint@9.39.1(jiti@2.6.1)):
dependencies:
- '@babel/core': 7.28.5
- '@babel/parser': 7.28.5
- eslint: 9.39.1
+ "@babel/core": 7.28.5
+ "@babel/parser": 7.28.5
+ eslint: 9.39.1(jiti@2.6.1)
hermes-parser: 0.25.1
zod: 4.1.13
zod-validation-error: 4.0.2(zod@4.1.13)
transitivePeerDependencies:
- supports-color
- eslint-plugin-react-refresh@0.4.24(eslint@9.39.1):
+ eslint-plugin-react-refresh@0.4.24(eslint@9.39.1(jiti@2.6.1)):
dependencies:
- eslint: 9.39.1
+ eslint: 9.39.1(jiti@2.6.1)
eslint-scope@8.4.0:
dependencies:
@@ -1697,20 +4264,20 @@ snapshots:
eslint-visitor-keys@4.2.1: {}
- eslint@9.39.1:
+ eslint@9.39.1(jiti@2.6.1):
dependencies:
- '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1)
- '@eslint-community/regexpp': 4.12.2
- '@eslint/config-array': 0.21.1
- '@eslint/config-helpers': 0.4.2
- '@eslint/core': 0.17.0
- '@eslint/eslintrc': 3.3.1
- '@eslint/js': 9.39.1
- '@eslint/plugin-kit': 0.4.1
- '@humanfs/node': 0.16.7
- '@humanwhocodes/module-importer': 1.0.1
- '@humanwhocodes/retry': 0.4.3
- '@types/estree': 1.0.8
+ "@eslint-community/eslint-utils": 4.9.0(eslint@9.39.1(jiti@2.6.1))
+ "@eslint-community/regexpp": 4.12.2
+ "@eslint/config-array": 0.21.1
+ "@eslint/config-helpers": 0.4.2
+ "@eslint/core": 0.17.0
+ "@eslint/eslintrc": 3.3.1
+ "@eslint/js": 9.39.1
+ "@eslint/plugin-kit": 0.4.1
+ "@humanfs/node": 0.16.7
+ "@humanwhocodes/module-importer": 1.0.1
+ "@humanwhocodes/retry": 0.4.3
+ "@types/estree": 1.0.8
ajv: 6.12.6
chalk: 4.1.2
cross-spawn: 7.0.6
@@ -1733,6 +4300,8 @@ snapshots:
minimatch: 3.1.2
natural-compare: 1.4.0
optionator: 0.9.4
+ optionalDependencies:
+ jiti: 2.6.1
transitivePeerDependencies:
- supports-color
@@ -1754,6 +4323,8 @@ snapshots:
esutils@2.0.3: {}
+ eventemitter3@5.0.1: {}
+
fast-deep-equal@3.1.3: {}
fast-json-stable-stringify@2.1.0: {}
@@ -1768,6 +4339,10 @@ snapshots:
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
@@ -1780,11 +4355,26 @@ snapshots:
flatted@3.3.3: {}
+ fraction.js@5.3.4: {}
+
+ framer-motion@12.23.25(react-dom@19.2.0(react@19.2.0))(react@19.2.0):
+ dependencies:
+ motion-dom: 12.23.23
+ motion-utils: 12.23.6
+ tslib: 2.8.1
+ optionalDependencies:
+ react: 19.2.0
+ react-dom: 19.2.0(react@19.2.0)
+
fsevents@2.3.3:
optional: true
gensync@1.0.0-beta.2: {}
+ get-east-asian-width@1.4.0: {}
+
+ get-nonce@1.0.1: {}
+
glob-parent@6.0.2:
dependencies:
is-glob: 4.0.3
@@ -1793,6 +4383,8 @@ snapshots:
globals@16.5.0: {}
+ graceful-fs@4.2.11: {}
+
graphemer@1.4.0: {}
has-flag@4.0.0: {}
@@ -1803,6 +4395,8 @@ snapshots:
dependencies:
hermes-estree: 0.25.1
+ husky@9.1.7: {}
+
ignore@5.3.2: {}
ignore@7.0.5: {}
@@ -1816,12 +4410,20 @@ snapshots:
is-extglob@2.1.1: {}
+ is-fullwidth-code-point@5.1.0:
+ dependencies:
+ get-east-asian-width: 1.4.0
+
is-glob@4.0.3:
dependencies:
is-extglob: 2.1.1
+ is-number@7.0.0: {}
+
isexe@2.0.0: {}
+ jiti@2.6.1: {}
+
js-tokens@4.0.0: {}
js-yaml@4.1.1:
@@ -1847,16 +4449,107 @@ snapshots:
prelude-ls: 1.2.1
type-check: 0.4.0
+ lightningcss-android-arm64@1.30.2:
+ optional: true
+
+ lightningcss-darwin-arm64@1.30.2:
+ optional: true
+
+ lightningcss-darwin-x64@1.30.2:
+ optional: true
+
+ lightningcss-freebsd-x64@1.30.2:
+ optional: true
+
+ lightningcss-linux-arm-gnueabihf@1.30.2:
+ optional: true
+
+ lightningcss-linux-arm64-gnu@1.30.2:
+ optional: true
+
+ lightningcss-linux-arm64-musl@1.30.2:
+ optional: true
+
+ lightningcss-linux-x64-gnu@1.30.2:
+ optional: true
+
+ lightningcss-linux-x64-musl@1.30.2:
+ optional: true
+
+ lightningcss-win32-arm64-msvc@1.30.2:
+ optional: true
+
+ lightningcss-win32-x64-msvc@1.30.2:
+ optional: true
+
+ lightningcss@1.30.2:
+ dependencies:
+ detect-libc: 2.1.2
+ optionalDependencies:
+ lightningcss-android-arm64: 1.30.2
+ lightningcss-darwin-arm64: 1.30.2
+ lightningcss-darwin-x64: 1.30.2
+ lightningcss-freebsd-x64: 1.30.2
+ lightningcss-linux-arm-gnueabihf: 1.30.2
+ lightningcss-linux-arm64-gnu: 1.30.2
+ lightningcss-linux-arm64-musl: 1.30.2
+ lightningcss-linux-x64-gnu: 1.30.2
+ lightningcss-linux-x64-musl: 1.30.2
+ lightningcss-win32-arm64-msvc: 1.30.2
+ lightningcss-win32-x64-msvc: 1.30.2
+
+ lint-staged@16.2.7:
+ dependencies:
+ commander: 14.0.2
+ listr2: 9.0.5
+ micromatch: 4.0.8
+ nano-spawn: 2.0.0
+ pidtree: 0.6.0
+ string-argv: 0.3.2
+ yaml: 2.8.1
+
+ listr2@9.0.5:
+ dependencies:
+ cli-truncate: 5.1.1
+ colorette: 2.0.20
+ eventemitter3: 5.0.1
+ log-update: 6.1.0
+ rfdc: 1.4.1
+ wrap-ansi: 9.0.2
+
locate-path@6.0.0:
dependencies:
p-locate: 5.0.0
lodash.merge@4.6.2: {}
+ log-update@6.1.0:
+ dependencies:
+ ansi-escapes: 7.2.0
+ cli-cursor: 5.0.0
+ slice-ansi: 7.1.2
+ strip-ansi: 7.1.2
+ wrap-ansi: 9.0.2
+
lru-cache@5.1.1:
dependencies:
yallist: 3.1.1
+ lucide-react@0.555.0(react@19.2.0):
+ dependencies:
+ react: 19.2.0
+
+ magic-string@0.30.21:
+ dependencies:
+ "@jridgewell/sourcemap-codec": 1.5.5
+
+ micromatch@4.0.8:
+ dependencies:
+ braces: 3.0.3
+ picomatch: 2.3.1
+
+ mimic-function@5.0.1: {}
+
minimatch@3.1.2:
dependencies:
brace-expansion: 1.1.12
@@ -1865,14 +4558,36 @@ snapshots:
dependencies:
brace-expansion: 2.0.2
+ motion-dom@12.23.23:
+ dependencies:
+ motion-utils: 12.23.6
+
+ motion-utils@12.23.6: {}
+
+ motion@12.23.25(react-dom@19.2.0(react@19.2.0))(react@19.2.0):
+ dependencies:
+ framer-motion: 12.23.25(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ tslib: 2.8.1
+ optionalDependencies:
+ react: 19.2.0
+ react-dom: 19.2.0(react@19.2.0)
+
ms@2.1.3: {}
+ nano-spawn@2.0.0: {}
+
nanoid@3.3.11: {}
natural-compare@1.4.0: {}
node-releases@2.0.27: {}
+ normalize-range@0.1.2: {}
+
+ onetime@7.0.0:
+ dependencies:
+ mimic-function: 5.0.1
+
optionator@0.9.4:
dependencies:
deep-is: 0.1.4
@@ -1900,8 +4615,14 @@ snapshots:
picocolors@1.1.1: {}
+ picomatch@2.3.1: {}
+
picomatch@4.0.3: {}
+ pidtree@0.6.0: {}
+
+ postcss-value-parser@4.2.0: {}
+
postcss@8.5.6:
dependencies:
nanoid: 3.3.11
@@ -1919,36 +4640,84 @@ snapshots:
react-refresh@0.18.0: {}
+ react-remove-scroll-bar@2.3.8(@types/react@19.2.7)(react@19.2.0):
+ dependencies:
+ react: 19.2.0
+ react-style-singleton: 2.2.3(@types/react@19.2.7)(react@19.2.0)
+ tslib: 2.8.1
+ optionalDependencies:
+ "@types/react": 19.2.7
+
+ react-remove-scroll@2.7.1(@types/react@19.2.7)(react@19.2.0):
+ dependencies:
+ react: 19.2.0
+ react-remove-scroll-bar: 2.3.8(@types/react@19.2.7)(react@19.2.0)
+ react-style-singleton: 2.2.3(@types/react@19.2.7)(react@19.2.0)
+ tslib: 2.8.1
+ use-callback-ref: 1.3.3(@types/react@19.2.7)(react@19.2.0)
+ use-sidecar: 1.1.3(@types/react@19.2.7)(react@19.2.0)
+ optionalDependencies:
+ "@types/react": 19.2.7
+
+ react-router-dom@7.9.6(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.6(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+
+ react-router@7.9.6(react-dom@19.2.0(react@19.2.0))(react@19.2.0):
+ dependencies:
+ cookie: 1.1.1
+ react: 19.2.0
+ set-cookie-parser: 2.7.2
+ optionalDependencies:
+ react-dom: 19.2.0(react@19.2.0)
+
+ react-style-singleton@2.2.3(@types/react@19.2.7)(react@19.2.0):
+ dependencies:
+ get-nonce: 1.0.1
+ react: 19.2.0
+ tslib: 2.8.1
+ optionalDependencies:
+ "@types/react": 19.2.7
+
react@19.2.0: {}
resolve-from@4.0.0: {}
+ restore-cursor@5.1.0:
+ dependencies:
+ onetime: 7.0.0
+ signal-exit: 4.1.0
+
+ rfdc@1.4.1: {}
+
rollup@4.53.3:
dependencies:
- '@types/estree': 1.0.8
+ "@types/estree": 1.0.8
optionalDependencies:
- '@rollup/rollup-android-arm-eabi': 4.53.3
- '@rollup/rollup-android-arm64': 4.53.3
- '@rollup/rollup-darwin-arm64': 4.53.3
- '@rollup/rollup-darwin-x64': 4.53.3
- '@rollup/rollup-freebsd-arm64': 4.53.3
- '@rollup/rollup-freebsd-x64': 4.53.3
- '@rollup/rollup-linux-arm-gnueabihf': 4.53.3
- '@rollup/rollup-linux-arm-musleabihf': 4.53.3
- '@rollup/rollup-linux-arm64-gnu': 4.53.3
- '@rollup/rollup-linux-arm64-musl': 4.53.3
- '@rollup/rollup-linux-loong64-gnu': 4.53.3
- '@rollup/rollup-linux-ppc64-gnu': 4.53.3
- '@rollup/rollup-linux-riscv64-gnu': 4.53.3
- '@rollup/rollup-linux-riscv64-musl': 4.53.3
- '@rollup/rollup-linux-s390x-gnu': 4.53.3
- '@rollup/rollup-linux-x64-gnu': 4.53.3
- '@rollup/rollup-linux-x64-musl': 4.53.3
- '@rollup/rollup-openharmony-arm64': 4.53.3
- '@rollup/rollup-win32-arm64-msvc': 4.53.3
- '@rollup/rollup-win32-ia32-msvc': 4.53.3
- '@rollup/rollup-win32-x64-gnu': 4.53.3
- '@rollup/rollup-win32-x64-msvc': 4.53.3
+ "@rollup/rollup-android-arm-eabi": 4.53.3
+ "@rollup/rollup-android-arm64": 4.53.3
+ "@rollup/rollup-darwin-arm64": 4.53.3
+ "@rollup/rollup-darwin-x64": 4.53.3
+ "@rollup/rollup-freebsd-arm64": 4.53.3
+ "@rollup/rollup-freebsd-x64": 4.53.3
+ "@rollup/rollup-linux-arm-gnueabihf": 4.53.3
+ "@rollup/rollup-linux-arm-musleabihf": 4.53.3
+ "@rollup/rollup-linux-arm64-gnu": 4.53.3
+ "@rollup/rollup-linux-arm64-musl": 4.53.3
+ "@rollup/rollup-linux-loong64-gnu": 4.53.3
+ "@rollup/rollup-linux-ppc64-gnu": 4.53.3
+ "@rollup/rollup-linux-riscv64-gnu": 4.53.3
+ "@rollup/rollup-linux-riscv64-musl": 4.53.3
+ "@rollup/rollup-linux-s390x-gnu": 4.53.3
+ "@rollup/rollup-linux-x64-gnu": 4.53.3
+ "@rollup/rollup-linux-x64-musl": 4.53.3
+ "@rollup/rollup-openharmony-arm64": 4.53.3
+ "@rollup/rollup-win32-arm64-msvc": 4.53.3
+ "@rollup/rollup-win32-ia32-msvc": 4.53.3
+ "@rollup/rollup-win32-x64-gnu": 4.53.3
+ "@rollup/rollup-win32-x64-msvc": 4.53.3
fsevents: 2.3.3
scheduler@0.27.0: {}
@@ -1957,40 +4726,80 @@ snapshots:
semver@7.7.3: {}
+ set-cookie-parser@2.7.2: {}
+
shebang-command@2.0.0:
dependencies:
shebang-regex: 3.0.0
shebang-regex@3.0.0: {}
+ signal-exit@4.1.0: {}
+
+ slice-ansi@7.1.2:
+ dependencies:
+ ansi-styles: 6.2.3
+ is-fullwidth-code-point: 5.1.0
+
source-map-js@1.2.1: {}
+ string-argv@0.3.2: {}
+
+ string-width@7.2.0:
+ dependencies:
+ emoji-regex: 10.6.0
+ get-east-asian-width: 1.4.0
+ strip-ansi: 7.1.2
+
+ string-width@8.1.0:
+ dependencies:
+ get-east-asian-width: 1.4.0
+ strip-ansi: 7.1.2
+
+ strip-ansi@7.1.2:
+ dependencies:
+ ansi-regex: 6.2.2
+
strip-json-comments@3.1.1: {}
supports-color@7.2.0:
dependencies:
has-flag: 4.0.0
+ tailwind-merge@3.4.0: {}
+
+ tailwindcss@4.1.17: {}
+
+ tapable@2.3.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
+
ts-api-utils@2.1.0(typescript@5.9.3):
dependencies:
typescript: 5.9.3
+ tslib@2.8.1: {}
+
+ tw-animate-css@1.4.0: {}
+
type-check@0.4.0:
dependencies:
prelude-ls: 1.2.1
- typescript-eslint@8.48.0(eslint@9.39.1)(typescript@5.9.3):
+ typescript-eslint@8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3):
dependencies:
- '@typescript-eslint/eslint-plugin': 8.48.0(@typescript-eslint/parser@8.48.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1)(typescript@5.9.3)
- '@typescript-eslint/parser': 8.48.0(eslint@9.39.1)(typescript@5.9.3)
- '@typescript-eslint/typescript-estree': 8.48.0(typescript@5.9.3)
- '@typescript-eslint/utils': 8.48.0(eslint@9.39.1)(typescript@5.9.3)
- eslint: 9.39.1
+ "@typescript-eslint/eslint-plugin": 8.48.0(@typescript-eslint/parser@8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
+ "@typescript-eslint/parser": 8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
+ "@typescript-eslint/typescript-estree": 8.48.0(typescript@5.9.3)
+ "@typescript-eslint/utils": 8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
+ eslint: 9.39.1(jiti@2.6.1)
typescript: 5.9.3
transitivePeerDependencies:
- supports-color
@@ -2009,7 +4818,26 @@ snapshots:
dependencies:
punycode: 2.3.1
- vite@7.2.4(@types/node@24.10.1):
+ use-callback-ref@1.3.3(@types/react@19.2.7)(react@19.2.0):
+ dependencies:
+ react: 19.2.0
+ tslib: 2.8.1
+ optionalDependencies:
+ "@types/react": 19.2.7
+
+ use-sidecar@1.1.3(@types/react@19.2.7)(react@19.2.0):
+ dependencies:
+ detect-node-es: 1.1.0
+ react: 19.2.0
+ tslib: 2.8.1
+ optionalDependencies:
+ "@types/react": 19.2.7
+
+ use-sync-external-store@1.6.0(react@19.2.0):
+ dependencies:
+ react: 19.2.0
+
+ vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.1):
dependencies:
esbuild: 0.25.12
fdir: 6.5.0(picomatch@4.0.3)
@@ -2018,8 +4846,11 @@ snapshots:
rollup: 4.53.3
tinyglobby: 0.2.15
optionalDependencies:
- '@types/node': 24.10.1
+ "@types/node": 24.10.1
fsevents: 2.3.3
+ jiti: 2.6.1
+ lightningcss: 1.30.2
+ yaml: 2.8.1
which@2.0.2:
dependencies:
@@ -2027,8 +4858,16 @@ snapshots:
word-wrap@1.2.5: {}
+ wrap-ansi@9.0.2:
+ dependencies:
+ ansi-styles: 6.2.3
+ string-width: 7.2.0
+ strip-ansi: 7.1.2
+
yallist@3.1.1: {}
+ yaml@2.8.1: {}
+
yocto-queue@0.1.0: {}
zod-validation-error@4.0.2(zod@4.1.13):
diff --git a/public/fonts/Pretendard-Regular.woff2 b/public/fonts/Pretendard-Regular.woff2
new file mode 100644
index 0000000..a9f6231
Binary files /dev/null and b/public/fonts/Pretendard-Regular.woff2 differ
diff --git a/public/images/boost-app-icon.png b/public/images/boost-app-icon.png
new file mode 100644
index 0000000..b55dbb8
Binary files /dev/null and b/public/images/boost-app-icon.png differ
diff --git a/public/vite.svg b/public/vite.svg
deleted file mode 100644
index e7b8dfb..0000000
--- a/public/vite.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/App.tsx b/src/App.tsx
index ecf34c0..ae01f5b 100644
--- a/src/App.tsx
+++ b/src/App.tsx
@@ -1,9 +1,7 @@
+import { AppRouter } from "@/app/routes/AppRouter";
+
function App() {
- return (
- <>
- 테스트 중
- >
- );
+ return ;
}
export default App;
diff --git a/src/app/layout/AppLayout.tsx b/src/app/layout/AppLayout.tsx
new file mode 100644
index 0000000..6c17d4f
--- /dev/null
+++ b/src/app/layout/AppLayout.tsx
@@ -0,0 +1,74 @@
+import {
+ SidebarInset,
+ SidebarProvider,
+ SidebarTrigger,
+} from "@/shared/components/shadcn/sidebar";
+import {
+ Breadcrumb,
+ BreadcrumbItem,
+ BreadcrumbList,
+ BreadcrumbPage,
+ BreadcrumbSeparator,
+} from "@/shared/components/shadcn/breadcrumb";
+import { Separator } from "@/shared/components/shadcn/separator";
+import { Outlet, useLocation } from "react-router-dom";
+import AppSidebar from "@/features/sidebar/components/AppSidebar";
+import { sidebarItems } from "@/features/sidebar/constants/sidebarConstants";
+
+export const AppLayout = () => {
+ const location = useLocation();
+
+ const getBreadcrumb = (path: string) => {
+ const allGroups = [
+ ...sidebarItems.navProjectInfos,
+ ...sidebarItems.navProjectDocs,
+ ];
+
+ for (const group of allGroups) {
+ const foundItem = group.items.find((item) => item.path === path);
+ if (foundItem) {
+ return { groupTitle: group.title, itemTitle: foundItem.title };
+ }
+ }
+
+ const firstGroup = allGroups[0];
+ const firstItem = firstGroup.items[0];
+
+ return { groupTitle: firstGroup.title, itemTitle: firstItem.title };
+ };
+
+ const { groupTitle, itemTitle } = getBreadcrumb(location.pathname);
+
+ return (
+
+
+
+
+
+
+
+
+
+
+
+ {groupTitle}
+
+
+
+ {itemTitle}
+
+
+
+
+
+
+
+
+
+
+
+ );
+};
diff --git a/src/app/routes/AppRouter.tsx b/src/app/routes/AppRouter.tsx
new file mode 100644
index 0000000..135ad88
--- /dev/null
+++ b/src/app/routes/AppRouter.tsx
@@ -0,0 +1,76 @@
+import { createBrowserRouter, RouterProvider } from "react-router-dom";
+import { ROUTE_PATH } from "@/app/routes/routeConstants";
+
+import OverviewPage from "@/pages/overview/Overview";
+import ResourcesPage from "@/pages/overview/Resources";
+import MembersPage from "@/pages/overview/Members";
+
+import EnvironmentPage from "@/pages/onboarding/Environment";
+import SetupPage from "@/pages/onboarding/Setup";
+import RunPage from "@/pages/onboarding/Run";
+import StructurePage from "@/pages/onboarding/Structure";
+import OnboardingResourcesPage from "@/pages/onboarding/Resources";
+
+import WorkflowPage from "@/pages/dev-guide/Workflow";
+import GitPage from "@/pages/dev-guide/Git";
+import ReviewPage from "@/pages/dev-guide/Review";
+import TestPage from "@/pages/dev-guide/Test";
+
+import FrontendIntroPage from "@/pages/frontend/Intro";
+import DesignSystemPage from "@/pages/frontend/DesignSystem";
+import TechStackPage from "@/pages/frontend/TechStack";
+import FrontendIssuesPage from "@/pages/frontend/Issues";
+
+import BackendArchPage from "@/pages/backend/Architecture";
+import BackendERDPage from "@/pages/backend/Erd";
+import BackendIssuesPage from "@/pages/backend/Issues";
+
+import DeployCIPage from "@/pages/deployment/Ci";
+import DeployCDPage from "@/pages/deployment/Cd";
+
+import MainPage from "@/pages/MainPage";
+import { AppLayout } from "@/app/layout/AppLayout";
+
+const router = createBrowserRouter([
+ {
+ path: ROUTE_PATH.ROOT || "/",
+ element: ,
+ },
+ {
+ path: "/",
+ element: ,
+ children: [
+ { path: ROUTE_PATH.OVERVIEW_PROJECT_OVERVIEW, element: },
+ { path: ROUTE_PATH.OVERVIEW_RESOURCES, element: },
+ { path: ROUTE_PATH.OVERVIEW_MEMBERS, element: },
+
+ { path: ROUTE_PATH.ONBOARDING_ENV, element: },
+ { path: ROUTE_PATH.ONBOARDING_SETUP, element: },
+ { path: ROUTE_PATH.ONBOARDING_RUN, element: },
+ { path: ROUTE_PATH.ONBOARDING_STRUCTURE, element: },
+ {
+ path: ROUTE_PATH.ONBOARDING_RESOURCES,
+ element: ,
+ },
+
+ { path: ROUTE_PATH.PROCESS_WORKFLOW, element: },
+ { path: ROUTE_PATH.PROCESS_GIT, element: },
+ { path: ROUTE_PATH.PROCESS_REVIEW, element: },
+ { path: ROUTE_PATH.PROCESS_TEST, element: },
+
+ { path: ROUTE_PATH.FRONTEND_INTRO, element: },
+ { path: ROUTE_PATH.FRONTEND_DESIGN, element: },
+ { path: ROUTE_PATH.FRONTEND_TECHSTACK, element: },
+ { path: ROUTE_PATH.FRONTEND_ISSUES, element: },
+
+ { path: ROUTE_PATH.BACKEND_ARCH, element: },
+ { path: ROUTE_PATH.BACKEND_ERD, element: },
+ { path: ROUTE_PATH.BACKEND_ISSUES, element: },
+
+ { path: ROUTE_PATH.DEPLOY_CI, element: },
+ { path: ROUTE_PATH.DEPLOY_CD, element: },
+ ],
+ },
+]);
+
+export const AppRouter = () => ;
diff --git a/src/app/routes/routeConstants.ts b/src/app/routes/routeConstants.ts
new file mode 100644
index 0000000..9f3a8e0
--- /dev/null
+++ b/src/app/routes/routeConstants.ts
@@ -0,0 +1,59 @@
+export const ROUTE_PATH = {
+ ROOT: "/",
+
+ OVERVIEW_PROJECT_OVERVIEW: "/overview/project-overview",
+ OVERVIEW_RESOURCES: "/overview/resources",
+ OVERVIEW_MEMBERS: "/overview/members",
+
+ ONBOARDING_ENV: "/onboarding/environment",
+ ONBOARDING_SETUP: "/onboarding/setup",
+ ONBOARDING_RUN: "/onboarding/run",
+ ONBOARDING_STRUCTURE: "/onboarding/structure",
+ ONBOARDING_RESOURCES: "/onboarding/resources",
+
+ PROCESS_WORKFLOW: "/process/workflow",
+ PROCESS_GIT: "/process/git",
+ PROCESS_REVIEW: "/process/review",
+ PROCESS_TEST: "/process/test",
+
+ FRONTEND_INTRO: "/frontend/intro",
+ FRONTEND_DESIGN: "/frontend/design-system",
+ FRONTEND_TECHSTACK: "/frontend/tech-stack",
+ FRONTEND_ISSUES: "/frontend/issues",
+
+ BACKEND_ARCH: "/backend/architecture",
+ BACKEND_ERD: "/backend/erd",
+ BACKEND_ISSUES: "/backend/issues",
+
+ DEPLOY_CI: "/deployment/ci",
+ DEPLOY_CD: "/deployment/cd",
+};
+
+export const ROUTES = {
+ OVERVIEW: () => ROUTE_PATH.OVERVIEW_PROJECT_OVERVIEW,
+ OVERVIEW_RESOURCES: () => ROUTE_PATH.OVERVIEW_RESOURCES,
+ OVERVIEW_MEMBERS: () => ROUTE_PATH.OVERVIEW_MEMBERS,
+
+ ONBOARDING_ENV: () => ROUTE_PATH.ONBOARDING_ENV,
+ ONBOARDING_SETUP: () => ROUTE_PATH.ONBOARDING_SETUP,
+ ONBOARDING_RUN: () => ROUTE_PATH.ONBOARDING_RUN,
+ ONBOARDING_STRUCTURE: () => ROUTE_PATH.ONBOARDING_STRUCTURE,
+ ONBOARDING_RESOURCES: () => ROUTE_PATH.ONBOARDING_RESOURCES,
+
+ PROCESS_WORKFLOW: () => ROUTE_PATH.PROCESS_WORKFLOW,
+ PROCESS_GIT: () => ROUTE_PATH.PROCESS_GIT,
+ PROCESS_REVIEW: () => ROUTE_PATH.PROCESS_REVIEW,
+ PROCESS_TEST: () => ROUTE_PATH.PROCESS_TEST,
+
+ FRONTEND_INTRO: () => ROUTE_PATH.FRONTEND_INTRO,
+ FRONTEND_DESIGN: () => ROUTE_PATH.FRONTEND_DESIGN,
+ FRONTEND_TECHSTACK: () => ROUTE_PATH.FRONTEND_TECHSTACK,
+ FRONTEND_ISSUES: () => ROUTE_PATH.FRONTEND_ISSUES,
+
+ BACKEND_ARCH: () => ROUTE_PATH.BACKEND_ARCH,
+ BACKEND_ERD: () => ROUTE_PATH.BACKEND_ERD,
+ BACKEND_ISSUES: () => ROUTE_PATH.BACKEND_ISSUES,
+
+ DEPLOY_CI: () => ROUTE_PATH.DEPLOY_CI,
+ DEPLOY_CD: () => ROUTE_PATH.DEPLOY_CD,
+};
diff --git a/src/app/style/global.css b/src/app/style/global.css
new file mode 100644
index 0000000..cacd386
--- /dev/null
+++ b/src/app/style/global.css
@@ -0,0 +1,12 @@
+html,
+body,
+#root {
+ height: 100%;
+ margin: 0;
+ padding: 0;
+ box-sizing: border-box;
+ font-family: "Pretendard", -apple-system, BlinkMacSystemFont, system-ui,
+ Roboto, "Helvetica Neue", "Segoe UI", "Apple SD Gothic Neo", "Noto Sans KR",
+ "Malgun Gothic", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol",
+ sans-serif;
+}
diff --git a/src/assets/react.svg b/src/assets/react.svg
deleted file mode 100644
index 6c87de9..0000000
--- a/src/assets/react.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/features/main/components/MainAboutDocs.tsx b/src/features/main/components/MainAboutDocs.tsx
new file mode 100644
index 0000000..ba2f474
--- /dev/null
+++ b/src/features/main/components/MainAboutDocs.tsx
@@ -0,0 +1,69 @@
+import { motion } from "motion/react";
+import {
+ Card,
+ CardHeader,
+ CardTitle,
+ CardDescription,
+} from "@/shared/components/shadcn/card";
+import { contentSections } from "@/features/main/constants/mainConstants";
+
+const container = {
+ hidden: {},
+ show: {
+ transition: {
+ staggerChildren: 0.2,
+ },
+ },
+};
+
+const card = {
+ hidden: { opacity: 0, y: 20 },
+ show: { opacity: 1, y: 0, transition: { duration: 0.8 } },
+};
+
+const MainAboutDocs = () => {
+ return (
+
+
+
+ 이 문서가 담고 있는 내용
+
+
+
+ {contentSections.map((item) => {
+ const Icon = item.icon;
+ return (
+
+
+
+
+
+
+
+ {item.title}
+
+
+ {item.description}
+
+
+
+
+ );
+ })}
+
+
+
+ );
+};
+
+export default MainAboutDocs;
diff --git a/src/features/main/components/MainFooter.tsx b/src/features/main/components/MainFooter.tsx
new file mode 100644
index 0000000..ec8b35a
--- /dev/null
+++ b/src/features/main/components/MainFooter.tsx
@@ -0,0 +1,25 @@
+const MainFooter = () => {
+ return (
+
+ );
+};
+
+export default MainFooter;
diff --git a/src/features/main/components/MainHero.tsx b/src/features/main/components/MainHero.tsx
new file mode 100644
index 0000000..a696aca
--- /dev/null
+++ b/src/features/main/components/MainHero.tsx
@@ -0,0 +1,43 @@
+import { Button } from "@/shared/components/shadcn/button";
+import { useNavigate } from "react-router-dom";
+import { ROUTE_PATH } from "@/app/routes/routeConstants";
+
+const MainHero = () => {
+ const navigate = useNavigate();
+ const goToOverview = () => navigate(ROUTE_PATH.OVERVIEW_PROJECT_OVERVIEW);
+
+ return (
+
+
+
+ Boost Development Docs
+
+
+
+ Boost 프로젝트 개발 문서에 오신 것을 환영합니다.
+
현재 디자인은 임시이며, 더 예쁘고 완성도 있게 개선될
+ 예정입니다!
+
+
+
+
+ 시작하려면 아래 버튼을 클릭하세요.
+
+
+
+
+
+ );
+};
+
+export default MainHero;
diff --git a/src/features/main/components/MainNavigation.tsx b/src/features/main/components/MainNavigation.tsx
new file mode 100644
index 0000000..d3e11f7
--- /dev/null
+++ b/src/features/main/components/MainNavigation.tsx
@@ -0,0 +1,94 @@
+import { Button } from "@/shared/components/shadcn/button";
+import { Menu, X } from "lucide-react";
+import { useState } from "react";
+
+const navItems = [
+ { label: "Home", href: "#home" },
+ { label: "About Docs", href: "#about-docs" },
+ // { label: "Quick Search", href: "#quick-search" },
+ // { label: "Help", href: "#help" },
+];
+
+const MainNavigation = () => {
+ const [isOpen, setIsOpen] = useState(false);
+
+ const handleNavClick = (href: string) => {
+ const el = document.querySelector(href);
+ if (el) {
+ el.scrollIntoView({ behavior: "smooth" });
+ }
+ setIsOpen(false);
+ };
+
+ return (
+
+ );
+};
+
+export default MainNavigation;
diff --git a/src/features/main/constants/mainConstants.ts b/src/features/main/constants/mainConstants.ts
new file mode 100644
index 0000000..e8f005d
--- /dev/null
+++ b/src/features/main/constants/mainConstants.ts
@@ -0,0 +1,45 @@
+import {
+ Book,
+ BookOpen,
+ Settings,
+ LaptopMinimal,
+ Server,
+ CloudUpload,
+} from "lucide-react";
+
+export const contentSections = [
+ {
+ title: "프로젝트 개요",
+ icon: Book,
+ description: "프로젝트의 기본 목적, 구조, 팀 구성 및 리소스를 소개합니다.",
+ },
+ {
+ title: "온보딩 가이드",
+ icon: BookOpen,
+ description:
+ "환경 세팅부터 실행, 기본 구조까지 전체 온보딩 절차를 안내합니다.",
+ },
+ {
+ title: "개발 가이드",
+ icon: Settings,
+ description:
+ "작업 흐름, Git 규칙, 코드 리뷰 기준 등 개발팀 운영 기준을 담고 있습니다.",
+ },
+ {
+ title: "프론트엔드 문서",
+ icon: LaptopMinimal,
+ description:
+ "FE 설계, 기술 스택 선정, 디자인 시스템 및 주요 이슈 해결 과정을 제공합니다.",
+ },
+ {
+ title: "백엔드 문서",
+ icon: Server,
+ description:
+ "백엔드 아키텍처, ERD, 개발 중 발생한 주요 이슈 해결 과정을 제공합니다.",
+ },
+ {
+ title: "배포 프로세스",
+ icon: CloudUpload,
+ description: "CI/CD 기반의 자동 배포 구조 및 배포 환경 구성을 안내합니다.",
+ },
+];
diff --git a/src/features/sidebar/components/AppSidebar.tsx b/src/features/sidebar/components/AppSidebar.tsx
new file mode 100644
index 0000000..ad9cc7e
--- /dev/null
+++ b/src/features/sidebar/components/AppSidebar.tsx
@@ -0,0 +1,32 @@
+import {
+ Sidebar,
+ SidebarContent,
+ SidebarFooter,
+ SidebarHeader,
+ SidebarRail,
+} from "@/shared/components/shadcn/sidebar";
+import { sidebarItems } from "@/features/sidebar/constants/sidebarConstants";
+import SidebarHeaderInfo from "@/features/sidebar/components/SidebarHeaderInfo";
+import SidebarFooterOut from "@/features/sidebar/components/SiderbarFooterOut";
+import NavProjectInfos from "@/features/sidebar/components/NavProjectInfos";
+import NavProjectDocs from "@/features/sidebar/components/NavProjectDocs";
+
+const AppSidebar = () => {
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+};
+
+export default AppSidebar;
diff --git a/src/features/sidebar/components/NavProjectDocs.tsx b/src/features/sidebar/components/NavProjectDocs.tsx
new file mode 100644
index 0000000..6ba40b2
--- /dev/null
+++ b/src/features/sidebar/components/NavProjectDocs.tsx
@@ -0,0 +1,8 @@
+import type { NavProps } from "@/features/sidebar/types/sidebarTypes";
+import { SidebarGroupNav } from "@/shared/components/ui/SidebarGroupNav";
+
+const NavProjectDocs = ({ items }: NavProps) => {
+ return ;
+};
+
+export default NavProjectDocs;
diff --git a/src/features/sidebar/components/NavProjectInfos.tsx b/src/features/sidebar/components/NavProjectInfos.tsx
new file mode 100644
index 0000000..f4a9313
--- /dev/null
+++ b/src/features/sidebar/components/NavProjectInfos.tsx
@@ -0,0 +1,8 @@
+import type { NavProps } from "@/features/sidebar/types/sidebarTypes";
+import { SidebarGroupNav } from "@/shared/components/ui/SidebarGroupNav";
+
+const NavProjectInfos = ({ items }: NavProps) => {
+ return ;
+};
+
+export default NavProjectInfos;
diff --git a/src/features/sidebar/components/SidebarHeaderInfo.tsx b/src/features/sidebar/components/SidebarHeaderInfo.tsx
new file mode 100644
index 0000000..ec189e3
--- /dev/null
+++ b/src/features/sidebar/components/SidebarHeaderInfo.tsx
@@ -0,0 +1,40 @@
+import {
+ SidebarMenu,
+ SidebarMenuButton,
+ SidebarMenuItem,
+} from "@/shared/components/shadcn/sidebar";
+
+interface SidebarHeaderInfoProps {
+ headerItem: {
+ name: string;
+ logo: string;
+ plan: string;
+ };
+}
+
+const SidebarHeaderInfo = ({ headerItem }: SidebarHeaderInfoProps) => {
+ return (
+
+
+
+
+

+
+
+ {headerItem.name}
+ {headerItem.plan}
+
+
+
+
+ );
+};
+
+export default SidebarHeaderInfo;
diff --git a/src/features/sidebar/components/SiderbarFooterOut.tsx b/src/features/sidebar/components/SiderbarFooterOut.tsx
new file mode 100644
index 0000000..27a850a
--- /dev/null
+++ b/src/features/sidebar/components/SiderbarFooterOut.tsx
@@ -0,0 +1,36 @@
+import { ROUTE_PATH } from "@/app/routes/routeConstants";
+import {
+ SidebarMenu,
+ SidebarMenuButton,
+ SidebarMenuItem,
+} from "@/shared/components/shadcn/sidebar";
+import { LogOut } from "lucide-react";
+import { useNavigate } from "react-router-dom";
+
+const SidebarFooterOut = () => {
+ const navigate = useNavigate();
+
+ const handleOutClick = () => navigate(ROUTE_PATH.ROOT);
+ return (
+
+
+
+
+
+
+
+
+ 메인 화면으로
+
+
+
+
+
+ );
+};
+
+export default SidebarFooterOut;
diff --git a/src/features/sidebar/constants/sidebarConstants.ts b/src/features/sidebar/constants/sidebarConstants.ts
new file mode 100644
index 0000000..ee5c6d1
--- /dev/null
+++ b/src/features/sidebar/constants/sidebarConstants.ts
@@ -0,0 +1,80 @@
+import {
+ BookOpen,
+ Server,
+ LaptopMinimal,
+ Book,
+ Settings,
+ CloudUpload,
+} from "lucide-react";
+import BoostRocket from "@/shared/assets/boost/boost-rocket-2d.png";
+import { ROUTES } from "@/app/routes/routeConstants";
+
+export const sidebarItems = {
+ header: {
+ name: "Boost 개발 문서",
+ logo: BoostRocket,
+ plan: "Boost Development Docs",
+ },
+
+ navProjectInfos: [
+ {
+ title: "프로젝트 개요",
+ icon: Book,
+ items: [
+ { title: "문서/프로젝트 개요", path: ROUTES.OVERVIEW() },
+ { title: "팀 리소스", path: ROUTES.OVERVIEW_RESOURCES() },
+ { title: "팀원 정보", path: ROUTES.OVERVIEW_MEMBERS() },
+ ],
+ },
+ {
+ title: "온보딩 가이드",
+ icon: BookOpen,
+ items: [
+ { title: "환경 세팅", path: ROUTES.ONBOARDING_ENV() },
+ { title: "프로젝트 가져오기", path: ROUTES.ONBOARDING_SETUP() },
+ { title: "실행 방법", path: ROUTES.ONBOARDING_RUN() },
+ { title: "기본 구조 안내", path: ROUTES.ONBOARDING_STRUCTURE() },
+ { title: "참고 자료 / 지원 채널", path: ROUTES.ONBOARDING_RESOURCES() },
+ ],
+ },
+ {
+ title: "개발 가이드",
+ icon: Settings,
+ items: [
+ { title: "작업 흐름", path: ROUTES.PROCESS_WORKFLOW() },
+ { title: "Git/Commit 규칙", path: ROUTES.PROCESS_GIT() },
+ { title: "코드 리뷰 기준", path: ROUTES.PROCESS_REVIEW() },
+ { title: "테스트 및 QA 절차", path: ROUTES.PROCESS_TEST() },
+ ],
+ },
+ ],
+ navProjectDocs: [
+ {
+ title: "프론트엔드 문서",
+ icon: LaptopMinimal,
+ items: [
+ { title: "소개", path: ROUTES.FRONTEND_INTRO() },
+ { title: "디자인 시스템", path: ROUTES.FRONTEND_DESIGN() },
+ { title: "기술 스택 및 선정 근거", path: ROUTES.FRONTEND_TECHSTACK() },
+ { title: "이슈 및 해결 과정", path: ROUTES.FRONTEND_ISSUES() },
+ ],
+ },
+ {
+ title: "백엔드 문서",
+ icon: Server,
+ items: [
+ { title: "아키텍처", path: ROUTES.BACKEND_ARCH() },
+ { title: "ERD", path: ROUTES.BACKEND_ERD() },
+ { title: "이슈 및 해결 과정", path: ROUTES.BACKEND_ISSUES() },
+ ],
+ },
+ {
+ title: "배포 프로세스",
+ icon: CloudUpload,
+ items: [
+ { title: "CI", path: ROUTES.DEPLOY_CI() },
+ { title: "CD", path: ROUTES.DEPLOY_CD() },
+ ],
+ },
+ ],
+};
diff --git a/src/features/sidebar/types/sidebarTypes.ts b/src/features/sidebar/types/sidebarTypes.ts
new file mode 100644
index 0000000..4df57c9
--- /dev/null
+++ b/src/features/sidebar/types/sidebarTypes.ts
@@ -0,0 +1,18 @@
+import type { LucideIcon } from "lucide-react";
+
+export interface SidebarSubItem {
+ title: string;
+ path: string;
+}
+
+export interface SidebarItem {
+ title: string;
+ path?: string;
+ icon?: LucideIcon;
+ isActive?: boolean;
+ items?: SidebarSubItem[];
+}
+
+export interface NavProps {
+ items: SidebarItem[];
+}
diff --git a/src/index.css b/src/index.css
index 08a3ac9..6ff48af 100644
--- a/src/index.css
+++ b/src/index.css
@@ -1,68 +1,130 @@
-:root {
- font-family: system-ui, Avenir, Helvetica, Arial, sans-serif;
- line-height: 1.5;
- font-weight: 400;
+@import "tailwindcss";
+@import "tw-animate-css";
+@import "@/shared/design-token/color.css";
+@import "@/shared/design-token/typography.css";
- color-scheme: light dark;
- color: rgba(255, 255, 255, 0.87);
- background-color: #242424;
-
- font-synthesis: none;
- text-rendering: optimizeLegibility;
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
-}
-
-a {
- font-weight: 500;
- color: #646cff;
- text-decoration: inherit;
-}
-a:hover {
- color: #535bf2;
-}
+@custom-variant dark (&:is(.dark *));
-body {
- margin: 0;
- display: flex;
- place-items: center;
- min-width: 320px;
- min-height: 100vh;
+@theme inline {
+ --radius-sm: calc(var(--radius) - 4px);
+ --radius-md: calc(var(--radius) - 2px);
+ --radius-lg: var(--radius);
+ --radius-xl: calc(var(--radius) + 4px);
+ --color-background: var(--background);
+ --color-foreground: var(--foreground);
+ --color-card: var(--card);
+ --color-card-foreground: var(--card-foreground);
+ --color-popover: var(--popover);
+ --color-popover-foreground: var(--popover-foreground);
+ --color-primary: var(--primary);
+ --color-primary-foreground: var(--primary-foreground);
+ --color-secondary: var(--secondary);
+ --color-secondary-foreground: var(--secondary-foreground);
+ --color-muted: var(--muted);
+ --color-muted-foreground: var(--muted-foreground);
+ --color-accent: var(--accent);
+ --color-accent-foreground: var(--accent-foreground);
+ --color-destructive: var(--destructive);
+ --color-border: var(--border);
+ --color-input: var(--input);
+ --color-ring: var(--ring);
+ --color-chart-1: var(--chart-1);
+ --color-chart-2: var(--chart-2);
+ --color-chart-3: var(--chart-3);
+ --color-chart-4: var(--chart-4);
+ --color-chart-5: var(--chart-5);
+ --color-sidebar: var(--sidebar);
+ --color-sidebar-foreground: var(--sidebar-foreground);
+ --color-sidebar-primary: var(--sidebar-primary);
+ --color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
+ --color-sidebar-accent: var(--sidebar-accent);
+ --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
+ --color-sidebar-border: var(--sidebar-border);
+ --color-sidebar-ring: var(--sidebar-ring);
}
-h1 {
- font-size: 3.2em;
- line-height: 1.1;
+:root {
+ --radius: 0.625rem;
+ --background: oklch(1 0 0);
+ --foreground: oklch(0.145 0 0);
+ --card: oklch(1 0 0);
+ --card-foreground: oklch(0.145 0 0);
+ --popover: oklch(1 0 0);
+ --popover-foreground: oklch(0.145 0 0);
+ --primary: oklch(0.205 0 0);
+ --primary-foreground: oklch(0.985 0 0);
+ --secondary: oklch(0.97 0 0);
+ --secondary-foreground: oklch(0.205 0 0);
+ --muted: oklch(0.97 0 0);
+ --muted-foreground: oklch(0.556 0 0);
+ --accent: oklch(0.97 0 0);
+ --accent-foreground: oklch(0.205 0 0);
+ --destructive: oklch(0.577 0.245 27.325);
+ --border: oklch(0.922 0 0);
+ --input: oklch(0.922 0 0);
+ --ring: oklch(0.708 0 0);
+ --chart-1: oklch(0.646 0.222 41.116);
+ --chart-2: oklch(0.6 0.118 184.704);
+ --chart-3: oklch(0.398 0.07 227.392);
+ --chart-4: oklch(0.828 0.189 84.429);
+ --chart-5: oklch(0.769 0.188 70.08);
+ --sidebar: oklch(0.985 0 0);
+ --sidebar-foreground: oklch(0.145 0 0);
+ --sidebar-primary: oklch(0.205 0 0);
+ --sidebar-primary-foreground: oklch(0.985 0 0);
+ --sidebar-accent: oklch(0.97 0 0);
+ --sidebar-accent-foreground: oklch(0.205 0 0);
+ --sidebar-border: oklch(0.922 0 0);
+ --sidebar-ring: oklch(0.708 0 0);
}
-button {
- border-radius: 8px;
- border: 1px solid transparent;
- padding: 0.6em 1.2em;
- font-size: 1em;
- font-weight: 500;
- font-family: inherit;
- background-color: #1a1a1a;
- cursor: pointer;
- transition: border-color 0.25s;
-}
-button:hover {
- border-color: #646cff;
-}
-button:focus,
-button:focus-visible {
- outline: 4px auto -webkit-focus-ring-color;
+.dark {
+ --background: oklch(0.145 0 0);
+ --foreground: oklch(0.985 0 0);
+ --card: oklch(0.205 0 0);
+ --card-foreground: oklch(0.985 0 0);
+ --popover: oklch(0.205 0 0);
+ --popover-foreground: oklch(0.985 0 0);
+ --primary: oklch(0.922 0 0);
+ --primary-foreground: oklch(0.205 0 0);
+ --secondary: oklch(0.269 0 0);
+ --secondary-foreground: oklch(0.985 0 0);
+ --muted: oklch(0.269 0 0);
+ --muted-foreground: oklch(0.708 0 0);
+ --accent: oklch(0.269 0 0);
+ --accent-foreground: oklch(0.985 0 0);
+ --destructive: oklch(0.704 0.191 22.216);
+ --border: oklch(1 0 0 / 10%);
+ --input: oklch(1 0 0 / 15%);
+ --ring: oklch(0.556 0 0);
+ --chart-1: oklch(0.488 0.243 264.376);
+ --chart-2: oklch(0.696 0.17 162.48);
+ --chart-3: oklch(0.769 0.188 70.08);
+ --chart-4: oklch(0.627 0.265 303.9);
+ --chart-5: oklch(0.645 0.246 16.439);
+ --sidebar: oklch(0.205 0 0);
+ --sidebar-foreground: oklch(0.985 0 0);
+ --sidebar-primary: oklch(0.488 0.243 264.376);
+ --sidebar-primary-foreground: oklch(0.985 0 0);
+ --sidebar-accent: oklch(0.269 0 0);
+ --sidebar-accent-foreground: oklch(0.985 0 0);
+ --sidebar-border: oklch(1 0 0 / 10%);
+ --sidebar-ring: oklch(0.556 0 0);
}
-@media (prefers-color-scheme: light) {
- :root {
- color: #213547;
- background-color: #ffffff;
- }
- a:hover {
- color: #747bff;
+@layer base {
+ * {
+ @apply border-border outline-ring/50;
}
- button {
- background-color: #f9f9f9;
+ body {
+ @apply bg-background text-foreground;
}
}
+
+/* Pretendard Font Faces */
+@font-face {
+ font-family: "Pretendard";
+ font-style: normal;
+ font-weight: 400;
+ src: url("/fonts/Pretendard-Regular.woff2") format("woff2");
+}
diff --git a/src/main.tsx b/src/main.tsx
index bef5202..f37b998 100644
--- a/src/main.tsx
+++ b/src/main.tsx
@@ -1,10 +1,11 @@
-import { StrictMode } from 'react'
-import { createRoot } from 'react-dom/client'
-import './index.css'
-import App from './App.tsx'
+import { StrictMode } from "react";
+import { createRoot } from "react-dom/client";
+import "@/index.css";
+import "@/app/style/global.css";
+import App from "@/App.tsx";
-createRoot(document.getElementById('root')!).render(
+createRoot(document.getElementById("root")!).render(
- ,
-)
+
+);
diff --git a/src/pages/MainPage.tsx b/src/pages/MainPage.tsx
new file mode 100644
index 0000000..510752c
--- /dev/null
+++ b/src/pages/MainPage.tsx
@@ -0,0 +1,17 @@
+import MainNavigation from "@/features/main/components/MainNavigation";
+import MainHero from "@/features/main/components/MainHero";
+import MainAboutDocs from "@/features/main/components/MainAboutDocs";
+import MainFooter from "@/features/main/components/MainFooter";
+
+const MainPage = () => {
+ return (
+
+
+
+
+
+
+ );
+};
+
+export default MainPage;
diff --git a/src/pages/backend/Architecture.tsx b/src/pages/backend/Architecture.tsx
new file mode 100644
index 0000000..c6a720e
--- /dev/null
+++ b/src/pages/backend/Architecture.tsx
@@ -0,0 +1,5 @@
+const ArchitecturePage = () => {
+ return Backend - Architecture 페이지
;
+};
+
+export default ArchitecturePage;
diff --git a/src/pages/backend/Erd.tsx b/src/pages/backend/Erd.tsx
new file mode 100644
index 0000000..0c28fdf
--- /dev/null
+++ b/src/pages/backend/Erd.tsx
@@ -0,0 +1,5 @@
+const ErdPage = () => {
+ return Backend - Erd 페이지
;
+};
+
+export default ErdPage;
diff --git a/src/pages/backend/Issues.tsx b/src/pages/backend/Issues.tsx
new file mode 100644
index 0000000..9d6fa45
--- /dev/null
+++ b/src/pages/backend/Issues.tsx
@@ -0,0 +1,5 @@
+const BackendIssuesPage = () => {
+ return Backend - Issues 페이지
;
+};
+
+export default BackendIssuesPage;
diff --git a/src/pages/deployment/Cd.tsx b/src/pages/deployment/Cd.tsx
new file mode 100644
index 0000000..98d2e2c
--- /dev/null
+++ b/src/pages/deployment/Cd.tsx
@@ -0,0 +1,5 @@
+const DeployCDPage = () => {
+ return Deploy - Cd 페이지
;
+};
+
+export default DeployCDPage;
diff --git a/src/pages/deployment/Ci.tsx b/src/pages/deployment/Ci.tsx
new file mode 100644
index 0000000..2b90b3e
--- /dev/null
+++ b/src/pages/deployment/Ci.tsx
@@ -0,0 +1,5 @@
+const DeployCIPage = () => {
+ return Deploy - Ci 페이지
;
+};
+
+export default DeployCIPage;
diff --git a/src/pages/dev-guide/Git.tsx b/src/pages/dev-guide/Git.tsx
new file mode 100644
index 0000000..a02e458
--- /dev/null
+++ b/src/pages/dev-guide/Git.tsx
@@ -0,0 +1,5 @@
+const GitPage = () => {
+ return DevGuide - Git 페이지
;
+};
+
+export default GitPage;
diff --git a/src/pages/dev-guide/Review.tsx b/src/pages/dev-guide/Review.tsx
new file mode 100644
index 0000000..969c857
--- /dev/null
+++ b/src/pages/dev-guide/Review.tsx
@@ -0,0 +1,5 @@
+const ReviewPage = () => {
+ return DevGuide - Review 페이지
;
+};
+
+export default ReviewPage;
diff --git a/src/pages/dev-guide/Test.tsx b/src/pages/dev-guide/Test.tsx
new file mode 100644
index 0000000..3506875
--- /dev/null
+++ b/src/pages/dev-guide/Test.tsx
@@ -0,0 +1,5 @@
+const TestPage = () => {
+ return DevGuide - Test 페이지
;
+};
+
+export default TestPage;
diff --git a/src/pages/dev-guide/Workflow.tsx b/src/pages/dev-guide/Workflow.tsx
new file mode 100644
index 0000000..24b0a90
--- /dev/null
+++ b/src/pages/dev-guide/Workflow.tsx
@@ -0,0 +1,5 @@
+const WorkflowPage = () => {
+ return DevGuide - Workflow 페이지
;
+};
+
+export default WorkflowPage;
diff --git a/src/pages/frontend/DesignSystem.tsx b/src/pages/frontend/DesignSystem.tsx
new file mode 100644
index 0000000..26db50c
--- /dev/null
+++ b/src/pages/frontend/DesignSystem.tsx
@@ -0,0 +1,5 @@
+const DesignSystemPage = () => {
+ return Frontend - DesignSystem 페이지
;
+};
+
+export default DesignSystemPage;
diff --git a/src/pages/frontend/Intro.tsx b/src/pages/frontend/Intro.tsx
new file mode 100644
index 0000000..6aea798
--- /dev/null
+++ b/src/pages/frontend/Intro.tsx
@@ -0,0 +1,5 @@
+const FrontendIntroPage = () => {
+ return Frontend - Intro 페이지
;
+};
+
+export default FrontendIntroPage;
diff --git a/src/pages/frontend/Issues.tsx b/src/pages/frontend/Issues.tsx
new file mode 100644
index 0000000..46d9f76
--- /dev/null
+++ b/src/pages/frontend/Issues.tsx
@@ -0,0 +1,5 @@
+const FrontendIssuesPage = () => {
+ return Frontend - Issues 페이지
;
+};
+
+export default FrontendIssuesPage;
diff --git a/src/pages/frontend/TechStack.tsx b/src/pages/frontend/TechStack.tsx
new file mode 100644
index 0000000..41f0120
--- /dev/null
+++ b/src/pages/frontend/TechStack.tsx
@@ -0,0 +1,5 @@
+const FrontendTechStackPage = () => {
+ return Frontend - TechStackPage 페이지
;
+};
+
+export default FrontendTechStackPage;
diff --git a/src/pages/onboarding/Environment.tsx b/src/pages/onboarding/Environment.tsx
new file mode 100644
index 0000000..cbae9ce
--- /dev/null
+++ b/src/pages/onboarding/Environment.tsx
@@ -0,0 +1,5 @@
+const EnvironmentPage = () => {
+ return Onboarding - Environment 페이지
;
+};
+
+export default EnvironmentPage;
diff --git a/src/pages/onboarding/Resources.tsx b/src/pages/onboarding/Resources.tsx
new file mode 100644
index 0000000..a5af165
--- /dev/null
+++ b/src/pages/onboarding/Resources.tsx
@@ -0,0 +1,5 @@
+const ResourcesPage = () => {
+ return Onboarding - ResourcesPage 페이지
;
+};
+
+export default ResourcesPage;
diff --git a/src/pages/onboarding/Run.tsx b/src/pages/onboarding/Run.tsx
new file mode 100644
index 0000000..e8bf5c2
--- /dev/null
+++ b/src/pages/onboarding/Run.tsx
@@ -0,0 +1,5 @@
+const RunPage = () => {
+ return Onboarding - Run 페이지
;
+};
+
+export default RunPage;
diff --git a/src/pages/onboarding/Setup.tsx b/src/pages/onboarding/Setup.tsx
new file mode 100644
index 0000000..366fe05
--- /dev/null
+++ b/src/pages/onboarding/Setup.tsx
@@ -0,0 +1,5 @@
+const SetupPage = () => {
+ return Onboarding - Setup 페이지
;
+};
+
+export default SetupPage;
diff --git a/src/pages/onboarding/Structure.tsx b/src/pages/onboarding/Structure.tsx
new file mode 100644
index 0000000..1c0032e
--- /dev/null
+++ b/src/pages/onboarding/Structure.tsx
@@ -0,0 +1,5 @@
+const StructurePage = () => {
+ return Onboarding - Structure 페이지
;
+};
+
+export default StructurePage;
diff --git a/src/pages/overview/Members.tsx b/src/pages/overview/Members.tsx
new file mode 100644
index 0000000..772b7b4
--- /dev/null
+++ b/src/pages/overview/Members.tsx
@@ -0,0 +1,5 @@
+const MembersPage = () => {
+ return Overview - Members 페이지
;
+};
+
+export default MembersPage;
diff --git a/src/pages/overview/Overview.tsx b/src/pages/overview/Overview.tsx
new file mode 100644
index 0000000..ca3a17e
--- /dev/null
+++ b/src/pages/overview/Overview.tsx
@@ -0,0 +1,5 @@
+const OverviewPage = () => {
+ return Overview - Overview 페이지
;
+};
+
+export default OverviewPage;
diff --git a/src/pages/overview/Resources.tsx b/src/pages/overview/Resources.tsx
new file mode 100644
index 0000000..81d6a9b
--- /dev/null
+++ b/src/pages/overview/Resources.tsx
@@ -0,0 +1,5 @@
+const ResourcesPage = () => {
+ return Overview - Resources 페이지
;
+};
+
+export default ResourcesPage;
diff --git a/src/shared/assets/boost/boo-back.png b/src/shared/assets/boost/boo-back.png
new file mode 100644
index 0000000..b6547ff
Binary files /dev/null and b/src/shared/assets/boost/boo-back.png differ
diff --git a/src/shared/assets/boost/boo-front.png b/src/shared/assets/boost/boo-front.png
new file mode 100644
index 0000000..29c07f4
Binary files /dev/null and b/src/shared/assets/boost/boo-front.png differ
diff --git a/src/shared/assets/boost/boo-left.png b/src/shared/assets/boost/boo-left.png
new file mode 100644
index 0000000..3d9414e
Binary files /dev/null and b/src/shared/assets/boost/boo-left.png differ
diff --git a/src/shared/assets/boost/boo-right.png b/src/shared/assets/boost/boo-right.png
new file mode 100644
index 0000000..a41ef28
Binary files /dev/null and b/src/shared/assets/boost/boo-right.png differ
diff --git a/src/shared/assets/boost/boost-icon.png b/src/shared/assets/boost/boost-icon.png
new file mode 100644
index 0000000..b55dbb8
Binary files /dev/null and b/src/shared/assets/boost/boost-icon.png differ
diff --git a/src/shared/assets/boost/boost-logo-2d.png b/src/shared/assets/boost/boost-logo-2d.png
new file mode 100644
index 0000000..84f6c97
Binary files /dev/null and b/src/shared/assets/boost/boost-logo-2d.png differ
diff --git a/src/shared/assets/boost/boost-logo-3d.png b/src/shared/assets/boost/boost-logo-3d.png
new file mode 100644
index 0000000..e9bf8c5
Binary files /dev/null and b/src/shared/assets/boost/boost-logo-3d.png differ
diff --git a/src/shared/assets/boost/boost-logo-white.png b/src/shared/assets/boost/boost-logo-white.png
new file mode 100644
index 0000000..cb01c92
Binary files /dev/null and b/src/shared/assets/boost/boost-logo-white.png differ
diff --git a/src/shared/assets/boost/boost-rocket-2d.png b/src/shared/assets/boost/boost-rocket-2d.png
new file mode 100644
index 0000000..2dcf06a
Binary files /dev/null and b/src/shared/assets/boost/boost-rocket-2d.png differ
diff --git a/src/shared/assets/boost/boost-rocket-3d.png b/src/shared/assets/boost/boost-rocket-3d.png
new file mode 100644
index 0000000..7c88b08
Binary files /dev/null and b/src/shared/assets/boost/boost-rocket-3d.png differ
diff --git a/src/shared/assets/boost/boost-siren.png b/src/shared/assets/boost/boost-siren.png
new file mode 100644
index 0000000..55b46c8
Binary files /dev/null and b/src/shared/assets/boost/boost-siren.png differ
diff --git a/src/shared/components/shadcn/avatar.tsx b/src/shared/components/shadcn/avatar.tsx
new file mode 100644
index 0000000..0c9fb52
--- /dev/null
+++ b/src/shared/components/shadcn/avatar.tsx
@@ -0,0 +1,53 @@
+"use client";
+
+import * as React from "react";
+import * as AvatarPrimitive from "@radix-ui/react-avatar";
+
+import { cn } from "@/shared/lib/utils";
+
+function Avatar({
+ className,
+ ...props
+}: React.ComponentProps) {
+ return (
+
+ );
+}
+
+function AvatarImage({
+ className,
+ ...props
+}: React.ComponentProps) {
+ return (
+
+ );
+}
+
+function AvatarFallback({
+ className,
+ ...props
+}: React.ComponentProps) {
+ return (
+
+ );
+}
+
+export { Avatar, AvatarImage, AvatarFallback };
diff --git a/src/shared/components/shadcn/breadcrumb.tsx b/src/shared/components/shadcn/breadcrumb.tsx
new file mode 100644
index 0000000..33eb2a5
--- /dev/null
+++ b/src/shared/components/shadcn/breadcrumb.tsx
@@ -0,0 +1,109 @@
+import * as React from "react"
+import { Slot } from "@radix-ui/react-slot"
+import { ChevronRight, MoreHorizontal } from "lucide-react"
+
+import { cn } from "@/shared/lib/utils"
+
+function Breadcrumb({ ...props }: React.ComponentProps<"nav">) {
+ return
+}
+
+function BreadcrumbList({ className, ...props }: React.ComponentProps<"ol">) {
+ return (
+
+ )
+}
+
+function BreadcrumbItem({ className, ...props }: React.ComponentProps<"li">) {
+ return (
+
+ )
+}
+
+function BreadcrumbLink({
+ asChild,
+ className,
+ ...props
+}: React.ComponentProps<"a"> & {
+ asChild?: boolean
+}) {
+ const Comp = asChild ? Slot : "a"
+
+ return (
+
+ )
+}
+
+function BreadcrumbPage({ className, ...props }: React.ComponentProps<"span">) {
+ return (
+
+ )
+}
+
+function BreadcrumbSeparator({
+ children,
+ className,
+ ...props
+}: React.ComponentProps<"li">) {
+ return (
+ svg]:size-3.5", className)}
+ {...props}
+ >
+ {children ?? }
+
+ )
+}
+
+function BreadcrumbEllipsis({
+ className,
+ ...props
+}: React.ComponentProps<"span">) {
+ return (
+
+
+ More
+
+ )
+}
+
+export {
+ Breadcrumb,
+ BreadcrumbList,
+ BreadcrumbItem,
+ BreadcrumbLink,
+ BreadcrumbPage,
+ BreadcrumbSeparator,
+ BreadcrumbEllipsis,
+}
diff --git a/src/shared/components/shadcn/button-group.tsx b/src/shared/components/shadcn/button-group.tsx
new file mode 100644
index 0000000..6d8a9bd
--- /dev/null
+++ b/src/shared/components/shadcn/button-group.tsx
@@ -0,0 +1,84 @@
+/* eslint-disable react-refresh/only-export-components */
+
+import { Slot } from "@radix-ui/react-slot";
+import { cva, type VariantProps } from "class-variance-authority";
+import { cn } from "@/shared/lib/utils";
+import { Separator } from "@/shared/components/shadcn/separator";
+
+const buttonGroupVariants = cva(
+ "flex w-fit items-stretch [&>*]:focus-visible:z-10 [&>*]:focus-visible:relative [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-md has-[>[data-slot=button-group]]:gap-2",
+ {
+ variants: {
+ orientation: {
+ horizontal:
+ "[&>*:not(:first-child)]:rounded-l-none [&>*:not(:first-child)]:border-l-0 [&>*:not(:last-child)]:rounded-r-none",
+ vertical:
+ "flex-col [&>*:not(:first-child)]:rounded-t-none [&>*:not(:first-child)]:border-t-0 [&>*:not(:last-child)]:rounded-b-none",
+ },
+ },
+ defaultVariants: {
+ orientation: "horizontal",
+ },
+ }
+);
+
+function ButtonGroup({
+ className,
+ orientation,
+ ...props
+}: React.ComponentProps<"div"> & VariantProps) {
+ return (
+
+ );
+}
+
+function ButtonGroupText({
+ className,
+ asChild = false,
+ ...props
+}: React.ComponentProps<"div"> & {
+ asChild?: boolean;
+}) {
+ const Comp = asChild ? Slot : "div";
+
+ return (
+
+ );
+}
+
+function ButtonGroupSeparator({
+ className,
+ orientation = "vertical",
+ ...props
+}: React.ComponentProps) {
+ return (
+
+ );
+}
+
+export {
+ ButtonGroup,
+ ButtonGroupSeparator,
+ ButtonGroupText,
+ buttonGroupVariants,
+};
diff --git a/src/shared/components/shadcn/button.tsx b/src/shared/components/shadcn/button.tsx
new file mode 100644
index 0000000..d59fc7b
--- /dev/null
+++ b/src/shared/components/shadcn/button.tsx
@@ -0,0 +1,66 @@
+/* eslint-disable react-refresh/only-export-components */
+
+import * as React from "react";
+import { Slot } from "@radix-ui/react-slot";
+import { cva, type VariantProps } from "class-variance-authority";
+
+import { cn } from "@/shared/lib/utils";
+
+const buttonVariants = cva(
+ "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",
+ {
+ variants: {
+ variant: {
+ default: "bg-primary text-primary-foreground hover:bg-primary/90",
+ boostBlue:
+ "bg-boost-blue hover:bg-boost-blue-hover cursor-pointer text-primary-foreground duration-300",
+ boostOrange:
+ "bg-boost-orange hover:bg-boost-orange-hover cursor-pointer text-primary-foreground duration-300",
+ destructive:
+ "bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",
+ outline:
+ "border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50",
+ secondary:
+ "bg-secondary text-secondary-foreground hover:bg-secondary/80",
+ ghost:
+ "hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",
+ link: "text-primary underline-offset-4 hover:underline",
+ },
+ size: {
+ default: "h-9 px-4 py-2 has-[>svg]:px-3",
+ sm: "h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5",
+ lg: "h-10 rounded-md px-6 has-[>svg]:px-4",
+ icon: "size-9",
+ "icon-sm": "size-8",
+ "icon-lg": "size-10",
+ },
+ },
+ defaultVariants: {
+ variant: "default",
+ size: "default",
+ },
+ }
+);
+
+function Button({
+ className,
+ variant,
+ size,
+ asChild = false,
+ ...props
+}: React.ComponentProps<"button"> &
+ VariantProps & {
+ asChild?: boolean;
+ }) {
+ const Comp = asChild ? Slot : "button";
+
+ return (
+
+ );
+}
+
+export { Button, buttonVariants };
diff --git a/src/shared/components/shadcn/card.tsx b/src/shared/components/shadcn/card.tsx
new file mode 100644
index 0000000..7703fdc
--- /dev/null
+++ b/src/shared/components/shadcn/card.tsx
@@ -0,0 +1,92 @@
+import * as React from "react"
+
+import { cn } from "@/shared/lib/utils"
+
+function Card({ className, ...props }: React.ComponentProps<"div">) {
+ return (
+
+ )
+}
+
+function CardHeader({ className, ...props }: React.ComponentProps<"div">) {
+ return (
+
+ )
+}
+
+function CardTitle({ className, ...props }: React.ComponentProps<"div">) {
+ return (
+
+ )
+}
+
+function CardDescription({ className, ...props }: React.ComponentProps<"div">) {
+ return (
+
+ )
+}
+
+function CardAction({ className, ...props }: React.ComponentProps<"div">) {
+ return (
+
+ )
+}
+
+function CardContent({ className, ...props }: React.ComponentProps<"div">) {
+ return (
+
+ )
+}
+
+function CardFooter({ className, ...props }: React.ComponentProps<"div">) {
+ return (
+
+ )
+}
+
+export {
+ Card,
+ CardHeader,
+ CardFooter,
+ CardTitle,
+ CardAction,
+ CardDescription,
+ CardContent,
+}
diff --git a/src/shared/components/shadcn/collapsible.tsx b/src/shared/components/shadcn/collapsible.tsx
new file mode 100644
index 0000000..90935c6
--- /dev/null
+++ b/src/shared/components/shadcn/collapsible.tsx
@@ -0,0 +1,33 @@
+"use client";
+
+import * as CollapsiblePrimitive from "@radix-ui/react-collapsible";
+
+function Collapsible({
+ ...props
+}: React.ComponentProps) {
+ return ;
+}
+
+function CollapsibleTrigger({
+ ...props
+}: React.ComponentProps) {
+ return (
+
+ );
+}
+
+function CollapsibleContent({
+ ...props
+}: React.ComponentProps) {
+ return (
+
+ );
+}
+
+export { Collapsible, CollapsibleTrigger, CollapsibleContent };
diff --git a/src/shared/components/shadcn/dropdown-menu.tsx b/src/shared/components/shadcn/dropdown-menu.tsx
new file mode 100644
index 0000000..e6d32f0
--- /dev/null
+++ b/src/shared/components/shadcn/dropdown-menu.tsx
@@ -0,0 +1,255 @@
+import * as React from "react";
+import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu";
+import { CheckIcon, ChevronRightIcon, CircleIcon } from "lucide-react";
+
+import { cn } from "@/shared/lib/utils";
+
+function DropdownMenu({
+ ...props
+}: React.ComponentProps) {
+ return ;
+}
+
+function DropdownMenuPortal({
+ ...props
+}: React.ComponentProps) {
+ return (
+
+ );
+}
+
+function DropdownMenuTrigger({
+ ...props
+}: React.ComponentProps) {
+ return (
+
+ );
+}
+
+function DropdownMenuContent({
+ className,
+ sideOffset = 4,
+ ...props
+}: React.ComponentProps) {
+ return (
+
+
+
+ );
+}
+
+function DropdownMenuGroup({
+ ...props
+}: React.ComponentProps) {
+ return (
+
+ );
+}
+
+function DropdownMenuItem({
+ className,
+ inset,
+ variant = "default",
+ ...props
+}: React.ComponentProps & {
+ inset?: boolean;
+ variant?: "default" | "destructive";
+}) {
+ return (
+
+ );
+}
+
+function DropdownMenuCheckboxItem({
+ className,
+ children,
+ checked,
+ ...props
+}: React.ComponentProps) {
+ return (
+
+
+
+
+
+
+ {children}
+
+ );
+}
+
+function DropdownMenuRadioGroup({
+ ...props
+}: React.ComponentProps) {
+ return (
+
+ );
+}
+
+function DropdownMenuRadioItem({
+ className,
+ children,
+ ...props
+}: React.ComponentProps) {
+ return (
+
+
+
+
+
+
+ {children}
+
+ );
+}
+
+function DropdownMenuLabel({
+ className,
+ inset,
+ ...props
+}: React.ComponentProps & {
+ inset?: boolean;
+}) {
+ return (
+
+ );
+}
+
+function DropdownMenuSeparator({
+ className,
+ ...props
+}: React.ComponentProps) {
+ return (
+
+ );
+}
+
+function DropdownMenuShortcut({
+ className,
+ ...props
+}: React.ComponentProps<"span">) {
+ return (
+
+ );
+}
+
+function DropdownMenuSub({
+ ...props
+}: React.ComponentProps) {
+ return ;
+}
+
+function DropdownMenuSubTrigger({
+ className,
+ inset,
+ children,
+ ...props
+}: React.ComponentProps & {
+ inset?: boolean;
+}) {
+ return (
+
+ {children}
+
+
+ );
+}
+
+function DropdownMenuSubContent({
+ className,
+ ...props
+}: React.ComponentProps) {
+ return (
+
+ );
+}
+
+export {
+ DropdownMenu,
+ DropdownMenuPortal,
+ DropdownMenuTrigger,
+ DropdownMenuContent,
+ DropdownMenuGroup,
+ DropdownMenuLabel,
+ DropdownMenuItem,
+ DropdownMenuCheckboxItem,
+ DropdownMenuRadioGroup,
+ DropdownMenuRadioItem,
+ DropdownMenuSeparator,
+ DropdownMenuShortcut,
+ DropdownMenuSub,
+ DropdownMenuSubTrigger,
+ DropdownMenuSubContent,
+};
diff --git a/src/shared/components/shadcn/input.tsx b/src/shared/components/shadcn/input.tsx
new file mode 100644
index 0000000..ff9f7a7
--- /dev/null
+++ b/src/shared/components/shadcn/input.tsx
@@ -0,0 +1,21 @@
+import * as React from "react";
+
+import { cn } from "@/shared/lib/utils";
+
+function Input({ className, type, ...props }: React.ComponentProps<"input">) {
+ return (
+
+ );
+}
+
+export { Input };
diff --git a/src/shared/components/shadcn/separator.tsx b/src/shared/components/shadcn/separator.tsx
new file mode 100644
index 0000000..0d2cb89
--- /dev/null
+++ b/src/shared/components/shadcn/separator.tsx
@@ -0,0 +1,26 @@
+import * as React from "react";
+import * as SeparatorPrimitive from "@radix-ui/react-separator";
+
+import { cn } from "@/shared/lib/utils";
+
+function Separator({
+ className,
+ orientation = "horizontal",
+ decorative = true,
+ ...props
+}: React.ComponentProps) {
+ return (
+
+ );
+}
+
+export { Separator };
diff --git a/src/shared/components/shadcn/sheet.tsx b/src/shared/components/shadcn/sheet.tsx
new file mode 100644
index 0000000..e48ee1e
--- /dev/null
+++ b/src/shared/components/shadcn/sheet.tsx
@@ -0,0 +1,139 @@
+"use client"
+
+import * as React from "react"
+import * as SheetPrimitive from "@radix-ui/react-dialog"
+import { XIcon } from "lucide-react"
+
+import { cn } from "@/shared/lib/utils"
+
+function Sheet({ ...props }: React.ComponentProps) {
+ return
+}
+
+function SheetTrigger({
+ ...props
+}: React.ComponentProps) {
+ return
+}
+
+function SheetClose({
+ ...props
+}: React.ComponentProps) {
+ return
+}
+
+function SheetPortal({
+ ...props
+}: React.ComponentProps) {
+ return
+}
+
+function SheetOverlay({
+ className,
+ ...props
+}: React.ComponentProps) {
+ return (
+
+ )
+}
+
+function SheetContent({
+ className,
+ children,
+ side = "right",
+ ...props
+}: React.ComponentProps & {
+ side?: "top" | "right" | "bottom" | "left"
+}) {
+ return (
+
+
+
+ {children}
+
+
+ Close
+
+
+
+ )
+}
+
+function SheetHeader({ className, ...props }: React.ComponentProps<"div">) {
+ return (
+
+ )
+}
+
+function SheetFooter({ className, ...props }: React.ComponentProps<"div">) {
+ return (
+
+ )
+}
+
+function SheetTitle({
+ className,
+ ...props
+}: React.ComponentProps) {
+ return (
+
+ )
+}
+
+function SheetDescription({
+ className,
+ ...props
+}: React.ComponentProps) {
+ return (
+
+ )
+}
+
+export {
+ Sheet,
+ SheetTrigger,
+ SheetClose,
+ SheetContent,
+ SheetHeader,
+ SheetFooter,
+ SheetTitle,
+ SheetDescription,
+}
diff --git a/src/shared/components/shadcn/sidebar.tsx b/src/shared/components/shadcn/sidebar.tsx
new file mode 100644
index 0000000..4f69d3b
--- /dev/null
+++ b/src/shared/components/shadcn/sidebar.tsx
@@ -0,0 +1,733 @@
+/* eslint-disable react-hooks/purity */
+/* eslint-disable react-refresh/only-export-components */
+
+
+import * as React from "react";
+import { Slot } from "@radix-ui/react-slot";
+import { cva, type VariantProps } from "class-variance-authority";
+import { PanelLeftIcon } from "lucide-react";
+import { useIsMobile } from "@/shared/hooks/use-mobile";
+import { cn } from "@/shared/lib/utils";
+import { Button } from "@/shared/components/shadcn/button";
+import { Input } from "@/shared/components/shadcn/input";
+import { Separator } from "@/shared/components/shadcn/separator";
+import {
+ Sheet,
+ SheetContent,
+ SheetDescription,
+ SheetHeader,
+ SheetTitle,
+} from "@/shared/components/shadcn/sheet";
+import { Skeleton } from "@/shared/components/shadcn/skeleton";
+import {
+ Tooltip,
+ TooltipContent,
+ TooltipProvider,
+ TooltipTrigger,
+} from "@/shared/components/shadcn/tooltip";
+
+const SIDEBAR_COOKIE_NAME = "sidebar_state";
+const SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;
+const SIDEBAR_WIDTH = "16rem";
+const SIDEBAR_WIDTH_MOBILE = "18rem";
+const SIDEBAR_WIDTH_ICON = "3rem";
+const SIDEBAR_KEYBOARD_SHORTCUT = "b";
+
+type SidebarContextProps = {
+ state: "expanded" | "collapsed";
+ open: boolean;
+ setOpen: (open: boolean) => void;
+ openMobile: boolean;
+ setOpenMobile: (open: boolean) => void;
+ isMobile: boolean;
+ toggleSidebar: () => void;
+};
+
+const SidebarContext = React.createContext(null);
+
+function useSidebar() {
+ const context = React.useContext(SidebarContext);
+ if (!context) {
+ throw new Error("useSidebar must be used within a SidebarProvider.");
+ }
+
+ return context;
+}
+
+function SidebarProvider({
+ defaultOpen = true,
+ open: openProp,
+ onOpenChange: setOpenProp,
+ className,
+ style,
+ children,
+ ...props
+}: React.ComponentProps<"div"> & {
+ defaultOpen?: boolean;
+ open?: boolean;
+ onOpenChange?: (open: boolean) => void;
+}) {
+ const isMobile = useIsMobile();
+ const [openMobile, setOpenMobile] = React.useState(false);
+
+ // This is the internal state of the sidebar.
+ // We use openProp and setOpenProp for control from outside the component.
+ const [_open, _setOpen] = React.useState(defaultOpen);
+ const open = openProp ?? _open;
+ const setOpen = React.useCallback(
+ (value: boolean | ((value: boolean) => boolean)) => {
+ const openState = typeof value === "function" ? value(open) : value;
+ if (setOpenProp) {
+ setOpenProp(openState);
+ } else {
+ _setOpen(openState);
+ }
+
+ // This sets the cookie to keep the sidebar state.
+ document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`;
+ },
+ [setOpenProp, open]
+ );
+
+ // Helper to toggle the sidebar.
+ const toggleSidebar = React.useCallback(() => {
+ return isMobile ? setOpenMobile((open) => !open) : setOpen((open) => !open);
+ }, [isMobile, setOpen, setOpenMobile]);
+
+ // Adds a keyboard shortcut to toggle the sidebar.
+ React.useEffect(() => {
+ const handleKeyDown = (event: KeyboardEvent) => {
+ if (
+ event.key === SIDEBAR_KEYBOARD_SHORTCUT &&
+ (event.metaKey || event.ctrlKey)
+ ) {
+ event.preventDefault();
+ toggleSidebar();
+ }
+ };
+
+ window.addEventListener("keydown", handleKeyDown);
+ return () => window.removeEventListener("keydown", handleKeyDown);
+ }, [toggleSidebar]);
+
+ // We add a state so that we can do data-state="expanded" or "collapsed".
+ // This makes it easier to style the sidebar with Tailwind classes.
+ const state = open ? "expanded" : "collapsed";
+
+ const contextValue = React.useMemo(
+ () => ({
+ state,
+ open,
+ setOpen,
+ isMobile,
+ openMobile,
+ setOpenMobile,
+ toggleSidebar,
+ }),
+ [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]
+ );
+
+ return (
+
+
+
+ {children}
+
+
+
+ );
+}
+
+function Sidebar({
+ side = "left",
+ variant = "sidebar",
+ collapsible = "offcanvas",
+ className,
+ children,
+ ...props
+}: React.ComponentProps<"div"> & {
+ side?: "left" | "right";
+ variant?: "sidebar" | "floating" | "inset";
+ collapsible?: "offcanvas" | "icon" | "none";
+}) {
+ const { isMobile, state, openMobile, setOpenMobile } = useSidebar();
+
+ if (collapsible === "none") {
+ return (
+
+ {children}
+
+ );
+ }
+
+ if (isMobile) {
+ return (
+
+
+
+ Sidebar
+ Displays the mobile sidebar.
+
+ {children}
+
+
+ );
+ }
+
+ return (
+
+ {/* This is what handles the sidebar gap on desktop */}
+
+
+
+ );
+}
+
+function SidebarTrigger({
+ className,
+ onClick,
+ ...props
+}: React.ComponentProps) {
+ const { toggleSidebar } = useSidebar();
+
+ return (
+
+ );
+}
+
+function SidebarRail({ className, ...props }: React.ComponentProps<"button">) {
+ const { toggleSidebar } = useSidebar();
+
+ return (
+
+ );
+}
+
+function SidebarInset({ className, ...props }: React.ComponentProps<"main">) {
+ return (
+
+ );
+}
+
+function SidebarInput({
+ className,
+ ...props
+}: React.ComponentProps) {
+ return (
+
+ );
+}
+
+function SidebarHeader({ className, ...props }: React.ComponentProps<"div">) {
+ return (
+
+ );
+}
+
+function SidebarFooter({ className, ...props }: React.ComponentProps<"div">) {
+ return (
+
+ );
+}
+
+function SidebarSeparator({
+ className,
+ ...props
+}: React.ComponentProps) {
+ return (
+
+ );
+}
+
+function SidebarContent({ className, ...props }: React.ComponentProps<"div">) {
+ return (
+
+ );
+}
+
+function SidebarGroup({ className, ...props }: React.ComponentProps<"div">) {
+ return (
+
+ );
+}
+
+function SidebarGroupLabel({
+ className,
+ asChild = false,
+ ...props
+}: React.ComponentProps<"div"> & { asChild?: boolean }) {
+ const Comp = asChild ? Slot : "div";
+
+ return (
+ svg]:size-4 [&>svg]:shrink-0",
+ "group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0",
+ className
+ )}
+ {...props}
+ />
+ );
+}
+
+function SidebarGroupAction({
+ className,
+ asChild = false,
+ ...props
+}: React.ComponentProps<"button"> & { asChild?: boolean }) {
+ const Comp = asChild ? Slot : "button";
+
+ return (
+ svg]:size-4 [&>svg]:shrink-0",
+ // Increases the hit area of the button on mobile.
+ "after:absolute after:-inset-2 md:after:hidden",
+ "group-data-[collapsible=icon]:hidden",
+ className
+ )}
+ {...props}
+ />
+ );
+}
+
+function SidebarGroupContent({
+ className,
+ ...props
+}: React.ComponentProps<"div">) {
+ return (
+
+ );
+}
+
+function SidebarMenu({ className, ...props }: React.ComponentProps<"ul">) {
+ return (
+
+ );
+}
+
+function SidebarMenuItem({ className, ...props }: React.ComponentProps<"li">) {
+ return (
+
+ );
+}
+
+const sidebarMenuButtonVariants = cva(
+ "peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-hidden ring-sidebar-ring transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-data-[sidebar=menu-action]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0",
+ {
+ variants: {
+ variant: {
+ default: "hover:bg-sidebar-accent hover:text-sidebar-accent-foreground",
+ outline:
+ "bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]",
+ },
+ size: {
+ default: "h-8 text-sm",
+ sm: "h-7 text-xs",
+ lg: "h-12 text-sm group-data-[collapsible=icon]:p-0!",
+ },
+ },
+ defaultVariants: {
+ variant: "default",
+ size: "default",
+ },
+ }
+);
+
+function SidebarMenuButton({
+ asChild = false,
+ isActive = false,
+ variant = "default",
+ size = "default",
+ tooltip,
+ className,
+ ...props
+}: React.ComponentProps<"button"> & {
+ asChild?: boolean;
+ isActive?: boolean;
+ tooltip?: string | React.ComponentProps;
+} & VariantProps) {
+ const Comp = asChild ? Slot : "button";
+ const { isMobile, state } = useSidebar();
+
+ const button = (
+
+ );
+
+ if (!tooltip) {
+ return button;
+ }
+
+ if (typeof tooltip === "string") {
+ tooltip = {
+ children: tooltip,
+ };
+ }
+
+ return (
+
+ {button}
+
+
+ );
+}
+
+function SidebarMenuAction({
+ className,
+ asChild = false,
+ showOnHover = false,
+ ...props
+}: React.ComponentProps<"button"> & {
+ asChild?: boolean;
+ showOnHover?: boolean;
+}) {
+ const Comp = asChild ? Slot : "button";
+
+ return (
+ svg]:size-4 [&>svg]:shrink-0",
+ // Increases the hit area of the button on mobile.
+ "after:absolute after:-inset-2 md:after:hidden",
+ "peer-data-[size=sm]/menu-button:top-1",
+ "peer-data-[size=default]/menu-button:top-1.5",
+ "peer-data-[size=lg]/menu-button:top-2.5",
+ "group-data-[collapsible=icon]:hidden",
+ showOnHover &&
+ "peer-data-[active=true]/menu-button:text-sidebar-accent-foreground group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 md:opacity-0",
+ className
+ )}
+ {...props}
+ />
+ );
+}
+
+function SidebarMenuBadge({
+ className,
+ ...props
+}: React.ComponentProps<"div">) {
+ return (
+
+ );
+}
+
+function SidebarMenuSkeleton({
+ className,
+ showIcon = false,
+ ...props
+}: React.ComponentProps<"div"> & {
+ showIcon?: boolean;
+}) {
+ // Random width between 50 to 90%.
+ const width = React.useMemo(() => {
+ return `${Math.floor(Math.random() * 40) + 50}%`;
+ }, []);
+
+ return (
+
+ {showIcon && (
+
+ )}
+
+
+ );
+}
+
+function SidebarMenuSub({ className, ...props }: React.ComponentProps<"ul">) {
+ return (
+
+ );
+}
+
+function SidebarMenuSubItem({
+ className,
+ ...props
+}: React.ComponentProps<"li">) {
+ return (
+
+ );
+}
+
+function SidebarMenuSubButton({
+ asChild = false,
+ size = "md",
+ isActive = false,
+ className,
+ ...props
+}: React.ComponentProps<"a"> & {
+ asChild?: boolean;
+ size?: "sm" | "md";
+ isActive?: boolean;
+}) {
+ const Comp = asChild ? Slot : "a";
+
+ return (
+ svg]:text-sidebar-accent-foreground flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 outline-hidden focus-visible:ring-2 disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0",
+ "data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground",
+ size === "sm" && "text-xs",
+ size === "md" && "text-sm",
+ "group-data-[collapsible=icon]:hidden",
+ className
+ )}
+ {...props}
+ />
+ );
+}
+
+export {
+ Sidebar,
+ SidebarContent,
+ SidebarFooter,
+ SidebarGroup,
+ SidebarGroupAction,
+ SidebarGroupContent,
+ SidebarGroupLabel,
+ SidebarHeader,
+ SidebarInput,
+ SidebarInset,
+ SidebarMenu,
+ SidebarMenuAction,
+ SidebarMenuBadge,
+ SidebarMenuButton,
+ SidebarMenuItem,
+ SidebarMenuSkeleton,
+ SidebarMenuSub,
+ SidebarMenuSubButton,
+ SidebarMenuSubItem,
+ SidebarProvider,
+ SidebarRail,
+ SidebarSeparator,
+ SidebarTrigger,
+ useSidebar,
+};
diff --git a/src/shared/components/shadcn/skeleton.tsx b/src/shared/components/shadcn/skeleton.tsx
new file mode 100644
index 0000000..8ae73d5
--- /dev/null
+++ b/src/shared/components/shadcn/skeleton.tsx
@@ -0,0 +1,13 @@
+import { cn } from "@/shared/lib/utils"
+
+function Skeleton({ className, ...props }: React.ComponentProps<"div">) {
+ return (
+
+ )
+}
+
+export { Skeleton }
diff --git a/src/shared/components/shadcn/tooltip.tsx b/src/shared/components/shadcn/tooltip.tsx
new file mode 100644
index 0000000..10cd3f3
--- /dev/null
+++ b/src/shared/components/shadcn/tooltip.tsx
@@ -0,0 +1,65 @@
+import * as React from "react";
+import * as TooltipPrimitive from "@radix-ui/react-tooltip";
+
+import { cn } from "@/shared/lib/utils";
+
+function TooltipProvider({
+ delayDuration = 0,
+ ...props
+}: React.ComponentProps) {
+ return (
+
+ );
+}
+
+function Tooltip({
+ ...props
+}: React.ComponentProps) {
+ return (
+
+
+
+ );
+}
+
+function TooltipTrigger({
+ ...props
+}: React.ComponentProps) {
+ return (
+ e.preventDefault()}
+ />
+ );
+}
+
+function TooltipContent({
+ className,
+ sideOffset = 0,
+ children,
+ ...props
+}: React.ComponentProps) {
+ return (
+
+
+ {children}
+
+
+
+ );
+}
+
+export { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider };
diff --git a/src/shared/components/ui/SidebarGroupNav.tsx b/src/shared/components/ui/SidebarGroupNav.tsx
new file mode 100644
index 0000000..5357201
--- /dev/null
+++ b/src/shared/components/ui/SidebarGroupNav.tsx
@@ -0,0 +1,133 @@
+import {
+ Collapsible,
+ CollapsibleContent,
+ CollapsibleTrigger,
+} from "@/shared/components/shadcn/collapsible";
+import {
+ SidebarGroup,
+ SidebarGroupLabel,
+ SidebarMenu,
+ SidebarMenuButton,
+ SidebarMenuItem,
+ SidebarMenuSub,
+ SidebarMenuSubButton,
+ SidebarMenuSubItem,
+ useSidebar,
+} from "@/shared/components/shadcn/sidebar";
+import {
+ DropdownMenu,
+ DropdownMenuContent,
+ DropdownMenuItem,
+ DropdownMenuLabel,
+ DropdownMenuSeparator,
+ DropdownMenuTrigger,
+} from "@/shared/components/shadcn/dropdown-menu";
+import type { SidebarItem } from "@/features/sidebar/types/sidebarTypes";
+import { ChevronRight } from "lucide-react";
+import { useLocation, useNavigate } from "react-router-dom";
+import { cn } from "@/shared/lib/utils";
+
+interface NavProps {
+ title: string;
+ items: SidebarItem[];
+}
+
+export function SidebarGroupNav({ title, items }: NavProps) {
+ const location = useLocation();
+ const navigate = useNavigate();
+ const { isMobile } = useSidebar();
+
+ return (
+
+ {title}
+
+ {items.map((item) => {
+ const hasActiveSubItem = item.items?.some(
+ (sub) => sub.path === location.pathname
+ );
+
+ return (
+
+
+
+ {!isMobile && (
+
+
+
+
+ {item.icon && }
+
+
+
+
+
+ {item.title}
+
+
+ {item.items?.map((subItem) => (
+
+ navigate(subItem.path)}
+ >
+ {subItem.title}
+
+
+ ))}
+
+
+
+ )}
+
+
+
+ {item.icon && }
+ {item.title}
+
+
+
+
+
+ {item.items?.map((subItem) => (
+
+ navigate(subItem.path)}
+ >
+ {subItem.title}
+
+
+ ))}
+
+
+
+
+
+
+ );
+ })}
+
+
+ );
+}
diff --git a/src/shared/design-token/color.css b/src/shared/design-token/color.css
new file mode 100644
index 0000000..bab18fe
--- /dev/null
+++ b/src/shared/design-token/color.css
@@ -0,0 +1,75 @@
+@theme {
+ /* Boost Blue */
+ --color-boost-blue-light: #339eee;
+ --color-boost-blue-hover: #4a79dd;
+ --color-boost-blue: #1458dd;
+ --color-boost-blue-pressed: #0944c2;
+ --color-boost-blue-dark: #102f6c;
+
+ /* Boost Orange */
+ --color-boost-orange-light: #ffb074;
+ --color-boost-orange-hover: #ff9d51;
+ --color-boost-orange: #ff882e;
+ --color-boost-orange-pressed: #eb802e;
+ --color-boost-orange-dark: #cc6211;
+
+ /* Boost Yellow */
+ --color-boost-yellow-light: #ffde65;
+ --color-boost-yellow-hover: #f0c433;
+ --color-boost-yellow: #fec619;
+ --color-boost-yellow-pressed: #ffaf1b;
+ --color-boost-yellow-dark: #c59502;
+
+ /* Gray Scale */
+ --color-gray-100: #ffffff;
+ --color-gray-200: #f6f8fa;
+ --color-gray-300: #eff1f3;
+ --color-gray-400: #c2cad0;
+ --color-gray-500: #9ba1a9;
+ --color-gray-600: #666c73;
+ --color-gray-700: #434b56;
+ --color-gray-800: #292e37;
+ --color-gray-900: #1f2226;
+ --color-gray-1000: #000000;
+
+ /* Red Scale */
+ --color-red-50: #fff5f5;
+ --color-red-100: #fee2e2;
+ --color-red-200: #fecaca;
+ --color-red-300: #fca5a5;
+ --color-red-400: #f87171;
+ --color-red-500: #ef4444;
+ --color-red-600: #dc2626;
+
+ /* Status Colors */
+ --color-status-info: #17a2b8;
+ --color-status-success: #28a745;
+ --color-status-warning: #ffc107;
+ --color-status-error: #dc3545;
+
+ /* Avatar Colors */
+ --color-avatar-blue: #d5e3ff;
+ --color-avatar-orange: #fbe0cb;
+ --color-avatar-yellow: #fff5cf;
+ --color-avatar-red: #ffd1d1;
+ --color-avatar-pink: #ffe3fd;
+ --color-avatar-green: #dff5e6;
+ --color-avatar-purple: #e9dcff;
+ --color-avatar-gray: #dbdbdb;
+
+ /* Background Colors */
+ --color-background-default: var(--color-gray-100);
+ --color-background-secondary: var(--color-gray-200);
+ --color-background-tertiary: var(--color-gray-300);
+ --color-background-overlay: rgba(0, 0, 0, 0.5);
+
+ /* Text Colors */
+ --color-text-default: var(--color-gray-900);
+ --color-text-sub: var(--color-gray-700);
+ --color-text-disabled: var(--color-gray-500);
+ --color-text-placeholder: var(--color-gray-200);
+
+ /* Outline Colors */
+ --color-outline-default: var(--color-gray-400);
+ --color-outline-disabled: var(--color-gray-300);
+}
diff --git a/src/shared/design-token/typography.css b/src/shared/design-token/typography.css
new file mode 100644
index 0000000..5853e26
--- /dev/null
+++ b/src/shared/design-token/typography.css
@@ -0,0 +1,163 @@
+@theme {
+ /* 제목 (Title) */
+ --title1-bold-font-size: 1.25rem;
+ --title1-bold-line-height: 27px;
+ --title1-bold-font-weight: 700;
+
+ --title1-regular-font-size: 1.25rem;
+ --title1-regular-line-height: 27px;
+ --title1-regular-font-weight: 400;
+
+ --title2-bold-font-size: 1rem;
+ --title2-bold-line-height: 24px;
+ --title2-bold-font-weight: 700;
+
+ --title2-regular-font-size: 1rem;
+ --title2-regular-line-height: 24px;
+ --title2-regular-font-weight: 400;
+
+ /* 부제목 (Subtitle) */
+ --subtitle1-bold-font-size: 1rem;
+ --subtitle1-bold-line-height: 22px;
+ --subtitle1-bold-font-weight: 700;
+
+ --subtitle1-regular-font-size: 1rem;
+ --subtitle1-regular-line-height: 24px;
+ --subtitle1-regular-font-weight: 400;
+
+ --subtitle2-bold-font-size: 0.875rem;
+ --subtitle2-bold-line-height: 19px;
+ --subtitle2-bold-font-weight: 700;
+
+ --subtitle2-regular-font-size: 0.875rem;
+ --subtitle2-regular-line-height: 19px;
+ --subtitle2-regular-font-weight: 400;
+
+ /* 본문 (Body) */
+ --body1-bold-font-size: 1rem;
+ --body1-bold-line-height: 22px;
+ --body1-bold-font-weight: 700;
+
+ --body1-regular-font-size: 1rem;
+ --body1-regular-line-height: 22px;
+ --body1-regular-font-weight: 400;
+
+ --body2-bold-font-size: 0.875rem;
+ --body2-bold-line-height: 19px;
+ --body2-bold-font-weight: 700;
+
+ --body2-regular-font-size: 0.875rem;
+ --body2-regular-line-height: 19px;
+ --body2-regular-font-weight: 400;
+
+ /* 라벨 (Label) */
+ --label1-bold-font-size: 0.875rem;
+ --label1-bold-line-height: 19px;
+ --label1-bold-font-weight: 700;
+
+ --label1-regular-font-size: 0.875rem;
+ --label1-regular-line-height: 19px;
+ --label1-regular-font-weight: 400;
+
+ --label2-bold-font-size: 0.75rem;
+ --label2-bold-line-height: 16px;
+ --label2-bold-font-weight: 700;
+
+ --label2-regular-font-size: 0.75rem;
+ --label2-regular-line-height: 16px;
+ --label2-regular-font-weight: 400;
+}
+
+@layer utilities {
+ /* Title */
+ .title1-bold {
+ font-size: var(--title1-bold-font-size);
+ line-height: var(--title1-bold-line-height);
+ font-weight: var(--title1-bold-font-weight);
+ }
+ .title1-regular {
+ font-size: var(--title1-regular-font-size);
+ line-height: var(--title1-regular-line-height);
+ font-weight: var(--title1-regular-font-weight);
+ }
+
+ .title2-bold {
+ font-size: var(--title2-bold-font-size);
+ line-height: var(--title2-bold-line-height);
+ font-weight: var(--title2-bold-font-weight);
+ }
+ .title2-regular {
+ font-size: var(--title2-regular-font-size);
+ line-height: var(--title2-regular-line-height);
+ font-weight: var(--title2-regular-font-weight);
+ }
+
+ /* Subtitle */
+ .subtitle1-bold {
+ font-size: var(--subtitle1-bold-font-size);
+ line-height: var(--subtitle1-bold-line-height);
+ font-weight: var(--subtitle1-bold-font-weight);
+ }
+ .subtitle1-regular {
+ font-size: var(--subtitle1-regular-font-size);
+ line-height: var(--subtitle1-regular-line-height);
+ font-weight: var(--subtitle1-regular-font-weight);
+ }
+
+ .subtitle2-bold {
+ font-size: var(--subtitle2-bold-font-size);
+ line-height: var(--subtitle2-bold-line-height);
+ font-weight: var(--subtitle2-bold-font-weight);
+ }
+ .subtitle2-regular {
+ font-size: var(--subtitle2-regular-font-size);
+ line-height: var(--subtitle2-regular-line-height);
+ font-weight: var(--subtitle2-regular-font-weight);
+ }
+
+ /* Body */
+ .body1-bold {
+ font-size: var(--body1-bold-font-size);
+ line-height: var(--body1-bold-line-height);
+ font-weight: var(--body1-bold-font-weight);
+ }
+ .body1-regular {
+ font-size: var(--body1-regular-font-size);
+ line-height: var(--body1-regular-line-height);
+ font-weight: var(--body1-regular-font-weight);
+ }
+
+ .body2-bold {
+ font-size: var(--body2-bold-font-size);
+ line-height: var(--body2-bold-line-height);
+ font-weight: var(--body2-bold-font-weight);
+ }
+ .body2-regular {
+ font-size: var(--body2-regular-font-size);
+ line-height: var(--body2-regular-line-height);
+ font-weight: var(--body2-regular-font-weight);
+ }
+
+ /* Label */
+ .label1-bold {
+ font-size: var(--label1-bold-font-size);
+ line-height: var(--label1-bold-line-height);
+ font-weight: var(--label1-bold-font-weight);
+ }
+ .label1-regular {
+ font-size: var(--label1-regular-font-size);
+ line-height: var(--label1-regular-line-height);
+ font-weight: var(--label1-regular-font-weight);
+ }
+
+ .label2-bold {
+ font-size: var(--label2-bold-font-size);
+ line-height: var(--label2-bold-line-height);
+ font-weight: var(--label2-bold-font-weight);
+ }
+ .label2-regular {
+ font-size: var(--label2-regular-font-size);
+ line-height: var(--label2-regular-line-height);
+ font-weight: var(--label2-regular-font-weight);
+ }
+}
diff --git a/src/shared/hooks/use-mobile.ts b/src/shared/hooks/use-mobile.ts
new file mode 100644
index 0000000..2b0fe1d
--- /dev/null
+++ b/src/shared/hooks/use-mobile.ts
@@ -0,0 +1,19 @@
+import * as React from "react"
+
+const MOBILE_BREAKPOINT = 768
+
+export function useIsMobile() {
+ const [isMobile, setIsMobile] = React.useState(undefined)
+
+ React.useEffect(() => {
+ const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`)
+ const onChange = () => {
+ setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)
+ }
+ mql.addEventListener("change", onChange)
+ setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)
+ return () => mql.removeEventListener("change", onChange)
+ }, [])
+
+ return !!isMobile
+}
diff --git a/src/shared/lib/utils.ts b/src/shared/lib/utils.ts
new file mode 100644
index 0000000..bd0c391
--- /dev/null
+++ b/src/shared/lib/utils.ts
@@ -0,0 +1,6 @@
+import { clsx, type ClassValue } from "clsx"
+import { twMerge } from "tailwind-merge"
+
+export function cn(...inputs: ClassValue[]) {
+ return twMerge(clsx(inputs))
+}
diff --git a/tsconfig.app.json b/tsconfig.app.json
index a9b5a59..5fab448 100644
--- a/tsconfig.app.json
+++ b/tsconfig.app.json
@@ -22,7 +22,12 @@
"noUnusedParameters": true,
"erasableSyntaxOnly": true,
"noFallthroughCasesInSwitch": true,
- "noUncheckedSideEffectImports": true
+ "noUncheckedSideEffectImports": true,
+
+ "baseUrl": ".",
+ "paths": {
+ "@/*": ["./src/*"]
+ }
},
"include": ["src"]
}
diff --git a/tsconfig.json b/tsconfig.json
index 1ffef60..fec8c8e 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -3,5 +3,11 @@
"references": [
{ "path": "./tsconfig.app.json" },
{ "path": "./tsconfig.node.json" }
- ]
+ ],
+ "compilerOptions": {
+ "baseUrl": ".",
+ "paths": {
+ "@/*": ["./src/*"]
+ }
+ }
}
diff --git a/vercel.json b/vercel.json
new file mode 100644
index 0000000..0f32683
--- /dev/null
+++ b/vercel.json
@@ -0,0 +1,3 @@
+{
+ "rewrites": [{ "source": "/(.*)", "destination": "/index.html" }]
+}
diff --git a/vite.config.ts b/vite.config.ts
index 4efe189..e2ea4c3 100644
--- a/vite.config.ts
+++ b/vite.config.ts
@@ -1,13 +1,21 @@
-import { defineConfig } from 'vite'
-import react from '@vitejs/plugin-react'
+import { defineConfig } from "vite";
+import react from "@vitejs/plugin-react";
+import path from "path";
+import tailwindcss from "@tailwindcss/vite";
// https://vite.dev/config/
export default defineConfig({
plugins: [
react({
babel: {
- plugins: [['babel-plugin-react-compiler']],
+ plugins: [["babel-plugin-react-compiler"]],
},
}),
+ tailwindcss(),
],
-})
+ resolve: {
+ alias: {
+ "@": path.resolve(__dirname, "./src"),
+ },
+ },
+});