diff --git a/.markdownlint.json b/.markdownlint.json
new file mode 100644
index 00000000..4c98f54e
--- /dev/null
+++ b/.markdownlint.json
@@ -0,0 +1,5 @@
+{
+ "MD013": false,
+ "MD033": false,
+ "MD041": false
+}
diff --git a/CNAME b/CNAME
deleted file mode 100644
index b35b671c..00000000
--- a/CNAME
+++ /dev/null
@@ -1 +0,0 @@
-dropout.hydroroll.team
diff --git a/README.CN.md b/README.CN.md
new file mode 100644
index 00000000..69773c64
--- /dev/null
+++ b/README.CN.md
@@ -0,0 +1,147 @@
+# Drop*O*ut
+
+[English](README.md) | 中文
+
+[](https://app.fossa.com/projects/git%2Bgithub.com%2FHsiangNianian%2FDropOut?ref=badge_small)
+[](https://github.com/pre-commit/pre-commit)
+[](https://results.pre-commit.ci/latest/github/HsiangNianian/DropOut/main)
+[](https://github.com/astral-sh/ruff)
+[](https://github.com/HydroRoll-Team/DropOut/actions/workflows/codeql.yml)
+[](https://github.com/HydroRoll-Team/DropOut/actions/workflows/dependabot/dependabot-updates)
+[](https://github.com/HydroRoll-Team/DropOut/actions/workflows/release.yml)
+[](https://github.com/HydroRoll-Team/DropOut/actions/workflows/test.yml)
+
+DropOut 是一个现代的、可复现的、开发者级别的 Minecraft 启动器。
+它不仅仅是为了启动 Minecraft 而设计的,而是将 Minecraft 环境作为确定性的、版本化的工作空间进行管理。
+
+使用 Tauri v2 和 Rust 构建,DropOut 提供原生性能和最小资源使用,并配有现代响应式 Web UI(目前使用 Svelte 5,正在迁移到 React)。
+
+> Minecraft 环境是一个复杂的系统。
+> DropOut 将它们视为软件项目。
+
+
+

+
+
+## 为什么选择 DropOut?
+
+大多数 Minecraft 启动器专注于让你进入游戏。
+DropOut 专注于保持你的游戏稳定、可调试和可重现。
+
+- 整合包昨天还能游玩,今天却坏了?
+→ DropOut 让它可追溯。
+
+- 分享模组包意味着压缩数 GB 的文件?
+→ DropOut 分享精确的依赖清单。
+
+- Java、加载器、模组、配置不同步?
+→ DropOut 将它们锁定在一起。
+
+这个启动器是为重视控制、透明度和长期稳定性的玩家构建的。
+
+## 功能特性
+
+- **高性能**:使用 Rust 和 Tauri 构建,实现最小资源使用和快速启动时间。
+- **现代工业 UI**:使用 **Svelte 5** 和 **Tailwind CSS 4** 设计的干净、无干扰界面。
+- **Microsoft 认证**:通过官方 Xbox Live 和 Microsoft OAuth 流程(设备代码流程)提供安全登录支持。
+- **模组加载器支持**:
+ - **Fabric**:内置安装程序和版本管理。
+ - **Forge**:支持安装和启动 Forge 版本。
+- **Java 管理**:
+ - 自动检测已安装的 Java 版本。
+ - 内置 Adoptium JDK/JRE 下载器。
+- **GitHub 集成**:直接从启动器主页查看最新的项目更新和变更日志。
+- **游戏管理**:
+ - 完整的版本隔离。
+ - 高效的并发资产和库下载。
+ - 可自定义的内存分配和分辨率设置。
+
+## 路线图
+
+- [X] **账户持久化** — 在会话之间保存登录状态
+- [X] **令牌刷新** — 自动刷新过期的 Microsoft 令牌
+- [X] **JVM 参数解析** — 完全支持 `arguments.jvm` 和 `arguments.game` 解析
+- [X] **Java 自动检测和下载** — 扫描系统并下载 Java 运行时
+- [X] **Fabric 加载器支持** — 使用 Fabric 安装和启动
+- [X] **Forge 加载器支持** — 使用 Forge 安装和启动
+- [X] **GitHub 发布集成** — 在应用内查看变更日志
+- [ ] **实例/配置文件系统** — 多个隔离的游戏目录,具有不同的版本/模组
+- [ ] **多账户支持** — 在多个账户之间无缝切换
+- [ ] **自定义游戏目录** — 允许用户选择游戏文件位置
+- [ ] **启动器自动更新** — 通过 Tauri 更新插件的自更新机制
+- [ ] **模组管理器** — 直接在启动器中启用/禁用模组
+- [ ] **从其他启动器导入** — MultiMC/Prism 配置的迁移工具
+
+## 安装
+
+从 [Releases](https://github.com/HsiangNianian/DropOut/releases) 页面下载适用于您平台的最新版本。
+
+| 平台 | 文件 |
+| -------------- | ----------------------- |
+| Linux x86_64 | `.deb`, `.AppImage` |
+| Linux ARM64 | `.deb`, `.AppImage` |
+| macOS ARM64 | `.dmg` |
+| Windows x86_64 | `.msi`, `.exe` |
+| Windows ARM64 | `.msi`, `.exe` |
+
+## 从源码构建
+
+### 先决条件
+
+1. **Rust**:从 [rustup.rs](https://rustup.rs/) 安装。
+2. **Node.js** 和 **pnpm**:用于前端依赖。
+3. **系统依赖**:按照您的操作系统遵循 [Tauri 先决条件](https://v2.tauri.app/start/prerequisites/)。
+
+### 步骤
+
+1. **克隆仓库**
+
+ ```bash
+ git clone https://github.com/HsiangNianian/DropOut.git
+ cd DropOut
+ ```
+
+2. **安装前端依赖**
+
+ ```bash
+ cd ui
+ pnpm install
+ cd ..
+ ```
+
+3. **运行开发模式**
+
+ ```bash
+ # 这将启动前端服务器和 Tauri 应用窗口
+ cargo tauri dev
+ ```
+
+4. **构建发布版本**
+
+ ```bash
+ cargo tauri build
+ ```
+
+ 可执行文件将位于 `src-tauri/target/release/`。
+
+## 贡献
+
+DropOut 以长期可维护性为目标构建。
+欢迎贡献,尤其在这些领域:
+
+- 实例系统设计
+- 模组兼容性工具
+- UI/UX 改进
+- 跨启动器迁移工具
+
+标准的 GitHub 工作流程适用:
+fork → 功能分支 → 拉取请求。
+
+## 许可证
+
+根据 MIT 许可证分发。有关更多信息,请参见 `LICENSE`。
+
+[](https://app.fossa.com/projects/git%2Bgithub.com%2FHsiangNianian%2FDropOut?ref=badge_shield&issueType=license)
+[](https://app.fossa.com/projects/git%2Bgithub.com%2FHsiangNianian%2FDropOut?ref=badge_shield&issueType=security)
+
+[](https://app.fossa.com/projects/git%2Bgithub.com%2FHsiangNianian%2FDropOut?ref=badge_large)
diff --git a/README.md b/README.md
index cf076b7c..6d0eac0f 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,7 @@
# Drop*O*ut
+English | [中文](README.CN.md)
+
[](https://app.fossa.com/projects/git%2Bgithub.com%2FHsiangNianian%2FDropOut?ref=badge_small)
[](https://github.com/pre-commit/pre-commit)
[](https://results.pre-commit.ci/latest/github/HsiangNianian/DropOut/main)
@@ -56,6 +58,8 @@ This launcher is built for players who value control, transparency, and long-ter
## Roadmap
+Check our full roadmap at:
+
- [X] **Account Persistence** — Save login state between sessions
- [X] **Token Refresh** — Auto-refresh expired Microsoft tokens
- [X] **JVM Arguments Parsing** — Full support for `arguments.jvm` and `arguments.game` parsing
@@ -98,6 +102,7 @@ Download the latest release for your platform from the [Releases](https://github
git clone https://github.com/HsiangNianian/DropOut.git
cd DropOut
```
+
2. **Install Frontend Dependencies**
```bash
@@ -105,12 +110,14 @@ Download the latest release for your platform from the [Releases](https://github
pnpm install
cd ..
```
+
3. **Run in Development Mode**
```bash
# This will start the frontend server and the Tauri app window
cargo tauri dev
```
+
4. **Build Release Version**
```bash
@@ -123,6 +130,7 @@ Download the latest release for your platform from the [Releases](https://github
DropOut is built with long-term maintainability in mind.
Contributions are welcome, especially in these areas:
+
- Instance system design
- Mod compatibility tooling
- UI/UX improvements
@@ -131,12 +139,11 @@ Contributions are welcome, especially in these areas:
Standard GitHub workflow applies:
fork → feature branch → pull request.
-
## License
+Distributed under the MIT License. See `LICENSE` for more information.
+
[](https://app.fossa.com/projects/git%2Bgithub.com%2FHsiangNianian%2FDropOut?ref=badge_shield&issueType=license)
[](https://app.fossa.com/projects/git%2Bgithub.com%2FHsiangNianian%2FDropOut?ref=badge_shield&issueType=security)
[](https://app.fossa.com/projects/git%2Bgithub.com%2FHsiangNianian%2FDropOut?ref=badge_large)
-
-Distributed under the MIT License. See `LICENSE` for more information.
diff --git a/packages/docs/.gitignore b/packages/docs/.gitignore
new file mode 100644
index 00000000..8fa7200c
--- /dev/null
+++ b/packages/docs/.gitignore
@@ -0,0 +1,7 @@
+.DS_Store
+/node_modules/
+
+# React Router
+/.react-router/
+/build/
+.source
diff --git a/packages/docs/README.md b/packages/docs/README.md
new file mode 100644
index 00000000..f4e75636
--- /dev/null
+++ b/packages/docs/README.md
@@ -0,0 +1,213 @@
+# DropOut Documentation
+
+This is the official documentation site for DropOut Minecraft Launcher, built with [Fumadocs](https://fumadocs.dev) and React Router v7.
+
+## Overview
+
+The documentation covers:
+
+- **Getting Started**: Installation and first-time setup
+- **Features**: Detailed guides for all launcher features
+- **Architecture**: Technical design and implementation details
+- **Development**: Building and contributing to DropOut
+- **Troubleshooting**: Common issues and solutions
+
+### Multi-language Support
+
+The documentation is available in:
+
+- **English** (default) - `content/docs/en/`
+- **简体中文** (Simplified Chinese) - `content/docs/zh/`
+
+## Development
+
+### Prerequisites
+
+- Node.js 22+
+- pnpm 9+
+
+### Setup
+
+Install dependencies:
+
+```bash
+pnpm install
+```
+
+### Run Development Server
+
+```bash
+pnpm dev
+```
+
+This starts the development server at `http://localhost:5173` with hot reload enabled.
+
+The documentation automatically supports language switching between English and Chinese.
+
+### Build for Production
+
+```bash
+pnpm build
+```
+
+The production build will be output to the `build/` directory.
+
+### Type Checking
+
+```bash
+pnpm types:check
+```
+
+### Linting and Formatting
+
+```bash
+# Check code
+pnpm lint
+
+# Format code
+pnpm format
+```
+
+## Project Structure
+
+```bash
+packages/docs/
+├── content/
+│ └── docs/ # Documentation content (MDX)
+│ ├── en/ # English documentation
+│ │ ├── index.mdx
+│ │ ├── getting-started.mdx
+│ │ ├── architecture.mdx
+│ │ ├── development.mdx
+│ │ ├── troubleshooting.mdx
+│ │ └── features/
+│ └── zh/ # Chinese documentation
+│ ├── index.mdx
+│ ├── getting-started.mdx
+│ ├── architecture.mdx
+│ ├── development.mdx
+│ ├── troubleshooting.mdx
+│ └── features/
+├── app/ # React Router app
+├── public/ # Static assets
+├── source.config.ts # Fumadocs configuration (i18n enabled)
+└── react-router.config.ts # React Router configuration
+```
+
+## Internationalization (i18n)
+
+### Structure
+
+Documentation is organized by locale:
+
+- English: `content/docs/en/`
+- Chinese: `content/docs/zh/`
+
+Each locale has the same structure with translated content.
+
+### Configuration
+
+i18n is configured in:
+
+- `source.config.ts`: Enables i18n support
+- `app/lib/source.ts`: Defines available languages and default
+
+### Adding a New Language
+
+1. Create a new directory: `content/docs/{locale}/`
+2. Copy the structure from `en/` or `zh/`
+3. Translate all `.mdx` files
+4. Update `meta.json` files with translated titles
+5. Add the language to `app/lib/source.ts`
+
+## Writing Documentation
+
+### MDX Format
+
+All documentation is written in MDX (Markdown with JSX):
+
+```mdx
+---
+title: Page Title
+description: Page description for SEO
+---
+
+# Page Title
+
+Content goes here...
+
+
+
+
+```
+
+### Available Components
+
+Fumadocs provides several components:
+
+- `` - Link cards
+- `` - Card container
+- `` - Info/warning boxes
+- `` - Tabbed content
+- `` - Numbered steps
+- Code blocks with syntax highlighting
+
+### Adding New Pages
+
+1. Create new `.mdx` file in `content/docs/{locale}/`
+2. Add frontmatter with title and description
+3. Write content using MDX
+4. Update `meta.json` to include the page
+5. Repeat for all supported languages
+6. Test locally with `pnpm dev`
+
+### Translation Guidelines
+
+When translating content:
+
+- Keep all code blocks in English
+- Translate frontmatter (title, description)
+- Keep technical terms (Tauri, Rust, Svelte, etc.) in English
+- Translate UI elements and descriptions
+- Keep all links and URLs unchanged
+- Maintain the same structure and formatting
+
+### Organizing Content
+
+Use `meta.json` files to organize navigation:
+
+```json
+{
+ "title": "Section Title",
+ "pages": [
+ "page1",
+ "page2",
+ {
+ "title": "Subsection",
+ "pages": ["sub1", "sub2"]
+ }
+ ]
+}
+```
+
+## Deployment
+
+The documentation is automatically deployed when changes are merged to the main branch.
+
+## Contributing
+
+1. Fork the repository
+2. Create a feature branch
+3. Make your changes (in all supported languages)
+4. Test locally
+5. Submit a pull request
+
+## Links
+
+- [DropOut Repository](https://github.com/HydroRoll-Team/DropOut)
+- [Fumadocs](https://fumadocs.dev)
+- [React Router](https://reactrouter.com)
+
+## License
+
+MIT License - see the main repository for details.
diff --git a/packages/docs/app/app.css b/packages/docs/app/app.css
new file mode 100644
index 00000000..50b3bc29
--- /dev/null
+++ b/packages/docs/app/app.css
@@ -0,0 +1,3 @@
+@import 'tailwindcss';
+@import 'fumadocs-ui/css/neutral.css';
+@import 'fumadocs-ui/css/preset.css';
diff --git a/packages/docs/app/docs/page.tsx b/packages/docs/app/docs/page.tsx
new file mode 100644
index 00000000..a9e34332
--- /dev/null
+++ b/packages/docs/app/docs/page.tsx
@@ -0,0 +1,58 @@
+import type { Route } from './+types/page';
+import defaultMdxComponents from 'fumadocs-ui/mdx';
+import { DocsLayout } from 'fumadocs-ui/layouts/docs';
+import { DocsPage, DocsBody, DocsDescription, DocsTitle } from 'fumadocs-ui/page';
+import { Card, Cards } from 'fumadocs-ui/components/card';
+import { source } from '@/lib/source';
+import { i18n } from '@/lib/i18n';
+import { baseOptions } from '@/lib/layout.shared';
+import { useFumadocsLoader } from 'fumadocs-core/source/client';
+import browserCollections from 'fumadocs-mdx:collections/browser';
+
+export async function loader({ params }: Route.LoaderArgs) {
+ // 从路由参数获取语言,如果没有则使用默认语言
+ // URL 格式: /docs/getting-started (默认语言 zh)
+ // URL 格式: /en/docs/getting-started (英语)
+ const lang = (params.lang && i18n.languages.includes(params.lang as any))
+ ? (params.lang as 'zh' | 'en')
+ : (i18n.defaultLanguage as 'zh' | 'en');
+
+ // 获取文档路径 slugs
+ const slugs = params['*']?.split('/').filter((v) => v.length > 0) || [];
+
+ const page = source.getPage(slugs, lang);
+
+ if (!page) {
+ throw new Response('Not found', { status: 404 });
+ }
+
+ return {
+ path: page.path,
+ pageTree: await source.serializePageTree(source.getPageTree(lang)),
+ lang,
+ };
+}
+
+const clientLoader = browserCollections.docs.createClientLoader({
+ component({ toc, frontmatter, default: Mdx }) {
+ return (
+
+ {frontmatter.title}
+ {frontmatter.description}
+
+
+
+
+ );
+ },
+});
+
+export default function Page({ loaderData, params }: Route.ComponentProps) {
+ const { pageTree, lang } = useFumadocsLoader(loaderData);
+
+ return (
+
+ {clientLoader.useContent(loaderData.path)}
+
+ );
+}
diff --git a/packages/docs/app/docs/search.ts b/packages/docs/app/docs/search.ts
new file mode 100644
index 00000000..a98edd53
--- /dev/null
+++ b/packages/docs/app/docs/search.ts
@@ -0,0 +1,15 @@
+import type { Route } from './+types/search';
+import { createFromSource } from 'fumadocs-core/search/server';
+import { source } from '@/lib/source';
+
+const server = createFromSource(source, {
+ localeMap: {
+ zh: {
+ language: 'english',
+ },
+ },
+});
+
+export async function loader({ request }: Route.LoaderArgs) {
+ return server.GET(request);
+}
diff --git a/packages/docs/app/lib/i18n.ts b/packages/docs/app/lib/i18n.ts
new file mode 100644
index 00000000..a9f18b1e
--- /dev/null
+++ b/packages/docs/app/lib/i18n.ts
@@ -0,0 +1,8 @@
+import { defineI18n } from 'fumadocs-core/i18n';
+
+export const i18n = defineI18n({
+ defaultLanguage: 'zh',
+ languages: ['zh', 'en'],
+ hideLocale: 'default-locale',
+ parser: 'dir', // 使用目录结构 (content/zh/*, content/en/*)
+});
diff --git a/packages/docs/app/lib/layout.shared.tsx b/packages/docs/app/lib/layout.shared.tsx
new file mode 100644
index 00000000..6e90ba08
--- /dev/null
+++ b/packages/docs/app/lib/layout.shared.tsx
@@ -0,0 +1,24 @@
+import type { BaseLayoutProps } from 'fumadocs-ui/layouts/shared';
+import { i18n } from './i18n';
+
+export function baseOptions(locale: string): BaseLayoutProps {
+ // 默认语言(zh)不显示前缀,其他语言显示前缀
+ const isDefaultLocale = locale === i18n.defaultLanguage;
+ const localePrefix = isDefaultLocale ? '' : `/${locale}`;
+
+ return {
+ i18n,
+ nav: {
+ title: 'DropOut',
+ url: localePrefix || '/',
+ },
+ githubUrl: 'https://github.com/HydroRoll-Team/DropOut',
+ links: [
+ {
+ type: 'main',
+ text: locale === 'zh' ? '文档' : 'Documentation',
+ url: `${localePrefix}/docs`,
+ },
+ ],
+ };
+}
diff --git a/packages/docs/app/lib/source.ts b/packages/docs/app/lib/source.ts
new file mode 100644
index 00000000..bce9bf91
--- /dev/null
+++ b/packages/docs/app/lib/source.ts
@@ -0,0 +1,12 @@
+import { loader } from 'fumadocs-core/source';
+import { docs } from 'fumadocs-mdx:collections/server';
+import { i18n } from './i18n';
+
+export const source = loader({
+ source: docs.toFumadocsSource(),
+ baseUrl: '/docs',
+ i18n,
+ // hideLocale: 'default-locale' 会自动生成正确的 URL:
+ // - 默认语言 (zh): /docs/getting-started
+ // - 其他语言 (en): /en/docs/getting-started
+});
diff --git a/packages/docs/app/root.tsx b/packages/docs/app/root.tsx
new file mode 100644
index 00000000..9032c80c
--- /dev/null
+++ b/packages/docs/app/root.tsx
@@ -0,0 +1,104 @@
+import {
+ isRouteErrorResponse,
+ Link,
+ Links,
+ Meta,
+ Outlet,
+ Scripts,
+ ScrollRestoration,
+ useParams,
+} from 'react-router';
+import { RootProvider } from 'fumadocs-ui/provider/react-router';
+import type { Route } from './+types/root';
+import './app.css';
+import { defineI18nUI } from 'fumadocs-ui/i18n';
+import { i18n } from './lib/i18n';
+
+const { provider } = defineI18nUI(i18n, {
+ translations: {
+ en: {
+ displayName: 'English',
+ },
+ zh: {
+ displayName: '中文',
+ search: '查找文档',
+ },
+ },
+});
+export const links: Route.LinksFunction = () => [
+ { rel: 'preconnect', href: 'https://fonts.googleapis.com' },
+ {
+ rel: 'preconnect',
+ href: 'https://fonts.gstatic.com',
+ crossOrigin: 'anonymous',
+ },
+ {
+ rel: 'stylesheet',
+ href: 'https://fonts.googleapis.com/css2?family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&display=swap',
+ },
+];
+
+export function Layout({ children }: { children: React.ReactNode }) {
+ const { lang = i18n.defaultLanguage } = useParams();
+
+ return (
+
+
+
+
+
+
+
+
+ {children}
+
+
+
+
+ );
+}
+
+export default function App() {
+ return ;
+}
+
+export function ErrorBoundary({ error }: Route.ErrorBoundaryProps) {
+ let message = 'Oops!';
+ let details = 'An unexpected error occurred.';
+ let stack: string | undefined;
+
+ if (isRouteErrorResponse(error)) {
+ message = error.status === 404 ? '404' : 'Error';
+ details =
+ error.status === 404 ? 'The requested page could not be found.' : error.statusText || details;
+ } else if (import.meta.env.DEV && error && error instanceof Error) {
+ details = error.message;
+ stack = error.stack;
+ }
+
+ return (
+
+
+ {message}
+
+ {details}
+
+ Sorry, we couldn't find the page you're looking for. It might have been moved or deleted.
+
+
+ Return Home / 返回首页
+
+ {stack && (
+
+
Error Stack
+
+ {stack}
+
+
+ )}
+
+ );
+}
diff --git a/packages/docs/app/routes.ts b/packages/docs/app/routes.ts
new file mode 100644
index 00000000..2997ecf5
--- /dev/null
+++ b/packages/docs/app/routes.ts
@@ -0,0 +1,16 @@
+import { route, type RouteConfig } from '@react-router/dev/routes';
+
+export default [
+ // Home routes: / and /:lang
+ route(':lang?', 'routes/home.tsx', { id: 'home' }),
+
+ // Docs routes: /docs/* and /:lang/docs/*
+ route(':lang?/docs', 'routes/docs.tsx', { id: 'docs' }),
+ route(':lang?/docs/*', 'docs/page.tsx', { id: 'docs-page' }),
+
+ // API routes
+ route('api/search', 'docs/search.ts', { id: 'api-search' }),
+
+ // Catch-all 404
+ route('*', 'routes/not-found.tsx', { id: 'not-found' }),
+] satisfies RouteConfig;
diff --git a/packages/docs/app/routes/docs.tsx b/packages/docs/app/routes/docs.tsx
new file mode 100644
index 00000000..5154d27f
--- /dev/null
+++ b/packages/docs/app/routes/docs.tsx
@@ -0,0 +1,16 @@
+import type { Route } from './+types/docs';
+import { redirect } from 'react-router';
+
+import { i18n } from '@/lib/i18n';
+
+export function loader({ params }: Route.LoaderArgs) {
+ const lang = params.lang as string | undefined;
+
+ // 如果没有语言参数或是默认语言,重定向到 /docs/getting-started
+ if (!lang || lang === i18n.defaultLanguage) {
+ return redirect('/docs/getting-started');
+ }
+
+ // 其他语言重定向到 /:lang/docs/getting-started
+ return redirect(`/${lang}/docs/getting-started`);
+}
diff --git a/packages/docs/app/routes/home.tsx b/packages/docs/app/routes/home.tsx
new file mode 100644
index 00000000..66b53335
--- /dev/null
+++ b/packages/docs/app/routes/home.tsx
@@ -0,0 +1,173 @@
+import type { Route } from './+types/home';
+import { HomeLayout } from 'fumadocs-ui/layouts/home';
+import { baseOptions } from '@/lib/layout.shared';
+import { i18n } from '@/lib/i18n';
+
+const texts = {
+ en: {
+ hero: {
+ title: 'DropOut Minecraft Launcher',
+ subtitle: 'Modern. Reproducible. Developer-Grade.',
+ description: 'Built with Tauri v2 and Rust for native performance and minimal resource usage',
+ start: 'Get Started',
+ features: 'Features',
+ },
+ features: {
+ items: [
+ { title: 'High Performance', desc: 'Built with Rust and Tauri for minimal resource usage and fast startup times' },
+ { title: 'Modern UI', desc: 'Clean, distraction-free interface with Svelte 5 and Tailwind CSS 4' },
+ { title: 'Secure Auth', desc: 'Microsoft OAuth 2.0 with device code flow and offline mode support' },
+ { title: 'Mod Loaders', desc: 'Built-in support for Fabric and Forge with automatic version management' },
+ { title: 'Java Management', desc: 'Auto-detection and integrated downloader for Adoptium JDK/JRE' },
+ { title: 'Instance System', desc: 'Isolated game environments with independent configs and mods' },
+ ]
+ },
+ why: {
+ title: 'Why DropOut?',
+ items: [
+ { q: 'Your instance worked yesterday but broke today?', a: '→ DropOut makes it traceable.' },
+ { q: 'Sharing a modpack means zipping gigabytes?', a: '→ DropOut shares exact dependency manifests.' },
+ { q: 'Java, loader, mods, configs drift out of sync?', a: '→ DropOut locks them together.' },
+ ]
+ },
+ cta: {
+ title: 'Ready to get started?',
+ desc: 'Check out the documentation to learn more about DropOut',
+ button: 'Read the Docs',
+ }
+ },
+ zh: {
+ hero: {
+ title: 'DropOut Minecraft 启动器',
+ subtitle: '现代、可复现、开发者级',
+ description: '基于 Tauri v2 和 Rust 构建,拥有原生性能和极低的资源占用',
+ start: '开始使用',
+ features: '功能特性',
+ },
+ features: {
+ items: [
+ { title: '高性能', desc: '使用 Rust 和 Tauri 构建,资源占用最小,启动速度极快' },
+ { title: '现代化界面', desc: '简洁、无干扰的界面,使用 Svelte 5 和 Tailwind CSS 4' },
+ { title: '安全认证', desc: '支持微软 OAuth 2.0 设备代码流和离线模式' },
+ { title: '模组支持', desc: '内置 Fabric 和 Forge 支持,自动管理版本' },
+ { title: 'Java 管理', desc: '自动检测并集成 Adoptium JDK/JRE 下载器' },
+ { title: '实例系统', desc: '独立的游戏环境,独立的配置和模组' },
+ ]
+ },
+ why: {
+ title: '为什么选择 DropOut?',
+ items: [
+ { q: '你的实例昨天还能用,今天就坏了?', a: '→ DropOut 让它可追溯。' },
+ { q: '分享模组包意味着打包数GB的文件?', a: '→ DropOut 分享精确的依赖清单。' },
+ { q: 'Java、加载器、模组、配置不同步?', a: '→ DropOut 将它们锁定在一起。' },
+ ]
+ },
+ cta: {
+ title: '准备好开始了?',
+ desc: '查看文档以了解更多关于 DropOut 的信息',
+ button: '阅读文档',
+ }
+ }
+};
+
+export function meta({ params }: Route.MetaArgs) {
+ return [
+ { title: 'DropOut - Modern Minecraft Launcher' },
+ { name: 'description', content: 'A modern, reproducible, and developer-grade Minecraft launcher built with Tauri v2 and Rust.' },
+ ];
+}
+
+export default function Home({ params }: Route.ComponentProps) {
+ const lang = (params.lang as 'en' | 'zh') || i18n.defaultLanguage;
+ const t = texts[lang];
+
+ // 默认语言(zh)不显示前缀,其他语言显示前缀
+ const isDefaultLocale = lang === i18n.defaultLanguage;
+ const localePrefix = isDefaultLocale ? '' : `/${lang}`;
+
+ return (
+
+
+ {/* Hero Section */}
+
+
+ {t.hero.title}
+
+
+ {t.hero.subtitle}
+
+
+ {t.hero.description}
+
+
+
+
+ {/* Launcher Showcase */}
+
+
+

+
+
+
+ {/* Features Grid */}
+
+ {t.features.items.map((item, i) => (
+
+
{item.title}
+
+ {item.desc}
+
+
+ ))}
+
+
+ {/* Why DropOut Section */}
+
+
{t.why.title}
+
+ {t.why.items.map((item, i) => (
+
+
+ {item.q}
+
+ {item.a}
+
+
+ ))}
+
+
+
+ {/* CTA Section */}
+
+
+
+ );
+}
diff --git a/packages/docs/app/routes/not-found.tsx b/packages/docs/app/routes/not-found.tsx
new file mode 100644
index 00000000..1d9e041f
--- /dev/null
+++ b/packages/docs/app/routes/not-found.tsx
@@ -0,0 +1,7 @@
+export function loader() {
+ throw new Response('Not Found', { status: 404 });
+}
+
+export default function NotFound() {
+ return null;
+}
diff --git a/packages/docs/biome.json b/packages/docs/biome.json
new file mode 100644
index 00000000..a637e58b
--- /dev/null
+++ b/packages/docs/biome.json
@@ -0,0 +1,37 @@
+{
+ "$schema": "https://biomejs.dev/schemas/2.2.0/schema.json",
+ "vcs": {
+ "enabled": true,
+ "clientKind": "git",
+ "useIgnoreFile": true
+ },
+ "files": {
+ "ignoreUnknown": true,
+ "includes": [
+ "**",
+ "!node_modules",
+ "!.source"
+ ]
+ },
+ "formatter": {
+ "enabled": true,
+ "indentStyle": "space",
+ "indentWidth": 2
+ },
+ "linter": {
+ "enabled": true,
+ "rules": {
+ "recommended": true
+ },
+ "domains": {
+ "react": "recommended"
+ }
+ },
+ "assist": {
+ "actions": {
+ "source": {
+ "organizeImports": "on"
+ }
+ }
+ }
+}
diff --git a/packages/docs/content/en/architecture.mdx b/packages/docs/content/en/architecture.mdx
new file mode 100644
index 00000000..5f55c5e9
--- /dev/null
+++ b/packages/docs/content/en/architecture.mdx
@@ -0,0 +1,281 @@
+---
+title: Architecture
+description: Technical architecture and design of DropOut Minecraft Launcher
+---
+
+# Architecture
+
+DropOut is built with a modern tech stack designed for performance, security, and cross-platform compatibility.
+
+## Technology Stack
+
+### Backend (Rust)
+- **Framework**: Tauri v2
+- **Language**: Rust (Edition 2021)
+- **Async Runtime**: Tokio
+- **HTTP Client**: reqwest with native-tls
+
+### Frontend (Svelte)
+- **Framework**: Svelte 5 (with runes)
+- **Styling**: Tailwind CSS 4
+- **Build Tool**: Vite with Rolldown
+- **Package Manager**: pnpm
+
+### Documentation
+- **Framework**: Fumadocs with React Router v7
+- **Content**: MDX files
+- **Styling**: Tailwind CSS 4
+
+## System Architecture
+
+```
+┌─────────────────────────────────────────────────────────┐
+│ Frontend (Svelte 5) │
+│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌─────────┐ │
+│ │ Stores │ │Components│ │ UI Views │ │Particles│ │
+│ └────┬─────┘ └────┬─────┘ └────┬─────┘ └────┬────┘ │
+│ │ │ │ │ │
+│ └─────────────┴─────────────┴──────────────┘ │
+│ │ │
+│ Tauri Commands │
+│ Events/Emitters │
+└──────────────────────────┬──────────────────────────────┘
+ │
+┌──────────────────────────┴──────────────────────────────┐
+│ Backend (Rust/Tauri) │
+│ ┌─────────────────────────────────────────────────┐ │
+│ │ main.rs (Commands) │ │
+│ └──────────────┬──────────────────────────────────┘ │
+│ │ │
+│ ┌──────────────┴───────────────────────────────┐ │
+│ │ Core Modules │ │
+│ │ ┌──────┐ ┌────────┐ ┌──────┐ ┌──────────┐ │ │
+│ │ │ Auth │ │Download│ │ Java │ │ Instance │ │ │
+│ │ └──────┘ └────────┘ └──────┘ └──────────┘ │ │
+│ │ ┌──────┐ ┌────────┐ ┌──────┐ ┌──────────┐ │ │
+│ │ │Fabric│ │ Forge │ │Config│ │Manifest │ │ │
+│ │ └──────┘ └────────┘ └──────┘ └──────────┘ │ │
+│ └──────────────────────────────────────────────┘ │
+│ │
+│ ┌─────────────────────────────────────────────────┐ │
+│ │ Utils & Helpers │ │
+│ │ • ZIP extraction • Path utilities │ │
+│ └─────────────────────────────────────────────────┘ │
+└──────────────────────────┬──────────────────────────────┘
+ │
+ External APIs
+ │
+ ┌──────────────────┼──────────────────┐
+ │ │ │
+ ┌─────┴────┐ ┌──────┴─────┐ ┌──────┴─────┐
+ │ Mojang │ │ Fabric │ │ Forge │
+ │ APIs │ │ Meta │ │ Maven │
+ └──────────┘ └────────────┘ └────────────┘
+```
+
+## Core Components
+
+### Frontend State Management
+
+DropOut uses **Svelte 5 runes** for reactive state management:
+
+```typescript
+// stores/auth.svelte.ts
+export class AuthState {
+ currentAccount = $state(null); // Reactive
+ isLoginModalOpen = $state(false);
+
+ $effect(() => { // Side effects
+ // Auto-runs when dependencies change
+ });
+}
+```
+
+**Key Stores:**
+- `auth.svelte.ts`: Authentication state and login flow
+- `settings.svelte.ts`: Launcher settings and Java detection
+- `game.svelte.ts`: Game running state and logs
+- `instances.svelte.ts`: Instance management
+- `ui.svelte.ts`: UI state (toasts, modals, active view)
+
+### Backend Architecture
+
+#### Command Pattern
+All Tauri commands follow this structure:
+
+```rust
+#[tauri::command]
+async fn command_name(
+ window: Window,
+ state: State<'_, SomeState>,
+ param: Type,
+) -> Result {
+ emit_log!(window, "Status message");
+ // Async logic
+ Ok(result)
+}
+```
+
+#### Event Communication
+
+**Rust → Frontend (Progress Updates):**
+```rust
+window.emit("launcher-log", "Downloading...")?;
+window.emit("download-progress", progress_struct)?;
+```
+
+**Frontend → Rust (Commands):**
+```typescript
+import { invoke } from "@tauri-apps/api/core";
+const result = await invoke("start_game", { versionId: "1.20.4" });
+```
+
+### Core Modules
+
+#### Authentication (`core/auth.rs`)
+- **Microsoft OAuth 2.0**: Device Code Flow
+- **Offline Authentication**: Local UUID generation
+- **Token Management**: Refresh token storage and auto-refresh
+- **Xbox Live Integration**: Full authentication chain
+
+**Authentication Flow:**
+1. Device Code Request → MS Token
+2. Xbox Live Authentication
+3. XSTS Authorization
+4. Minecraft Token Exchange
+5. Profile Fetching
+
+#### Downloader (`core/downloader.rs`)
+- **Concurrent Downloads**: Configurable thread pool
+- **Resume Support**: `.part` and `.part.meta` files
+- **Multi-segment Downloads**: Large files split into chunks
+- **Checksum Verification**: SHA1/SHA256 validation
+- **Progress Tracking**: Real-time events to frontend
+
+#### Java Management (`core/java.rs`)
+- **Auto-detection**: Scans system paths
+- **Adoptium Integration**: Download JDK/JRE on-demand
+- **Catalog Caching**: 24-hour cache for version lists
+- **Installation**: Extracts to app data directory
+- **Cancellation**: Atomic flag for download cancellation
+
+#### Fabric Support (`core/fabric.rs`)
+- **Meta API Integration**: Fetch loader versions
+- **Profile Generation**: Creates version JSON
+- **Library Resolution**: Maven artifact handling
+
+#### Forge Support (`core/forge.rs`)
+- **Installer Execution**: Runs Forge installer
+- **Profile Parsing**: Extracts install profile
+- **Library Management**: Handles Forge-specific libraries
+
+#### Instance System (`core/instance.rs`)
+- **Isolation**: Separate directories per instance
+- **Configuration**: Per-instance settings
+- **Mod Management**: Instance-specific mods
+- **Version Locking**: Reproducible environments
+
+#### Version Management
+- **Manifest Parsing** (`manifest.rs`): Mojang version manifest
+- **Inheritance System** (`version_merge.rs`): Parent version merging
+- **Game Version** (`game_version.rs`): JSON parsing and validation
+- **Rules Engine** (`rules.rs`): OS/feature conditional logic
+
+### File Structure
+
+```
+~/.local/share/com.dropout.launcher/ (Linux)
+~/Library/Application Support/com.dropout.launcher/ (macOS)
+%APPDATA%/com.dropout.launcher/ (Windows)
+├── versions/
+│ └── /
+│ ├── .json
+│ ├── .jar
+│ └── natives/
+├── libraries/
+│ └── /
+├── assets/
+│ ├── indexes/
+│ └── objects/
+├── instances/
+│ └── /
+│ ├── mods/
+│ ├── config/
+│ └── saves/
+├── java/
+│ └── /
+├── config.json
+└── accounts.json
+```
+
+## Data Flow
+
+### Game Launch Sequence
+
+1. **Frontend**: User clicks "Launch Game"
+2. **Command**: `start_game(version_id)` invoked
+3. **Backend Processing**:
+ - Load version JSON (with inheritance)
+ - Resolve all libraries
+ - Download missing assets
+ - Extract native libraries
+ - Build classpath
+ - Construct JVM arguments
+ - Replace placeholders
+4. **Process Spawn**: Launch Java with arguments
+5. **Stream Logs**: Emit stdout/stderr to frontend
+6. **Monitor**: Track game process status
+
+### Download Flow
+
+1. **Queue Creation**: List of files to download
+2. **Concurrent Processing**: Semaphore-limited threads
+3. **Resume Check**: Verify existing `.part` files
+4. **Download**: Multi-segment for large files
+5. **Verification**: Checksum validation
+6. **Progress Events**: Real-time updates to UI
+7. **Completion**: Move from `.part` to final location
+
+### Authentication Flow
+
+1. **Device Code Request**: Get user code + device code
+2. **User Authorization**: User visits URL and enters code
+3. **Token Polling**: Frontend polls for completion
+4. **Token Exchange**: MS token → Xbox → XSTS → Minecraft
+5. **Profile Fetch**: Get username and UUID
+6. **Storage**: Save account with refresh token
+7. **Auto-refresh**: Background token refresh on expiry
+
+## Platform-Specific Considerations
+
+### Linux
+- Uses GTK WebView (`webkit2gtk`)
+- System Java detection from `/usr/lib/jvm`
+- Desktop file integration
+
+### macOS
+- Uses system WebKit
+- App bundle structure
+- Keychain integration for secure storage
+
+### Windows
+- Uses WebView2 runtime
+- Registry Java detection
+- MSI installer support
+- No console window in release builds
+
+## Performance Optimizations
+
+- **Concurrent Downloads**: Parallel asset/library downloads
+- **Lazy Loading**: Load version manifests on-demand
+- **Caching**: Java catalog, version manifests
+- **Native Code**: Rust for CPU-intensive operations
+- **Async I/O**: Tokio for non-blocking operations
+
+## Security Features
+
+- **Token Encryption**: Secure storage of auth tokens
+- **HTTPS Only**: All external API calls
+- **Checksum Validation**: File integrity verification
+- **Sandboxed Execution**: Tauri security model
+- **No Arbitrary Code**: No eval or dynamic code execution
diff --git a/packages/docs/content/en/development.mdx b/packages/docs/content/en/development.mdx
new file mode 100644
index 00000000..8ff2906b
--- /dev/null
+++ b/packages/docs/content/en/development.mdx
@@ -0,0 +1,546 @@
+---
+title: Development Guide
+description: Build, test, and contribute to DropOut
+---
+
+# Development Guide
+
+This guide will help you set up a development environment, build DropOut from source, and contribute to the project.
+
+## Prerequisites
+
+### Required Software
+
+1. **Rust** (latest stable)
+ ```bash
+ # Install via rustup
+ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
+ ```
+
+2. **Node.js** (v22+) and **pnpm** (v9+)
+ ```bash
+ # Install Node.js from https://nodejs.org/
+ # Install pnpm
+ npm install -g pnpm@9
+ ```
+
+3. **System Dependencies**
+
+ Follow the [Tauri Prerequisites](https://v2.tauri.app/start/prerequisites/) for your platform:
+
+ **Linux (Debian/Ubuntu):**
+ ```bash
+ sudo apt update
+ sudo apt install libwebkit2gtk-4.1-dev \
+ build-essential \
+ curl \
+ wget \
+ file \
+ libssl-dev \
+ libayatana-appindicator3-dev \
+ librsvg2-dev
+ ```
+
+ **macOS:**
+ ```bash
+ xcode-select --install
+ ```
+
+ **Windows:**
+ - Install [Microsoft Visual C++ Build Tools](https://visualstudio.microsoft.com/visual-cpp-build-tools/)
+ - Install [WebView2](https://developer.microsoft.com/microsoft-edge/webview2/)
+
+## Getting Started
+
+### Clone the Repository
+
+```bash
+git clone https://github.com/HydroRoll-Team/DropOut.git
+cd DropOut
+```
+
+### Install Dependencies
+
+**Frontend dependencies:**
+```bash
+cd packages/ui
+pnpm install
+cd ../..
+```
+
+**Documentation dependencies:**
+```bash
+cd packages/docs
+pnpm install
+cd ../..
+```
+
+### Development Mode
+
+Run DropOut in development mode with hot reload:
+
+```bash
+cargo tauri dev
+```
+
+This will:
+1. Start the frontend dev server (Vite on port 5173)
+2. Compile the Rust backend
+3. Open the Tauri window
+4. Enable hot reload for frontend changes
+5. Recompile on Rust file changes
+
+**Terminal output:**
+- Frontend logs from Vite
+- Rust stdout/stderr
+- Compilation status
+
+### Building for Production
+
+Build release binaries:
+
+```bash
+cargo tauri build
+```
+
+**Output locations:**
+- **Linux**: `src-tauri/target/release/bundle/`
+ - `.deb` package
+ - `.AppImage` bundle
+- **macOS**: `src-tauri/target/release/bundle/`
+ - `.dmg` installer
+ - `.app` bundle
+- **Windows**: `src-tauri/target/release/bundle/`
+ - `.msi` installer
+ - `.exe` executable
+
+## Project Structure
+
+```
+DropOut/
+├── src-tauri/ # Rust backend
+│ ├── src/
+│ │ ├── main.rs # Tauri commands & entry point
+│ │ ├── core/ # Core modules
+│ │ │ ├── auth.rs # Authentication
+│ │ │ ├── downloader.rs # Download manager
+│ │ │ ├── fabric.rs # Fabric support
+│ │ │ ├── forge.rs # Forge support
+│ │ │ ├── java.rs # Java management
+│ │ │ ├── instance.rs # Instance system
+│ │ │ └── ...
+│ │ └── utils/ # Utilities
+│ └── Cargo.toml
+├── packages/
+│ ├── ui/ # Svelte 5 frontend
+│ │ ├── src/
+│ │ │ ├── App.svelte
+│ │ │ ├── components/
+│ │ │ ├── stores/ # State management
+│ │ │ └── lib/
+│ │ └── package.json
+│ └── docs/ # Documentation site
+│ ├── content/docs/
+│ └── package.json
+├── .github/
+│ └── workflows/ # CI/CD pipelines
+└── scripts/ # Build scripts
+```
+
+## Development Workflows
+
+### Frontend Development
+
+**Start dev server:**
+```bash
+cd packages/ui
+pnpm dev
+```
+
+**Type checking:**
+```bash
+pnpm check
+```
+
+**Linting:**
+```bash
+pnpm lint
+```
+
+**Formatting:**
+```bash
+pnpm format
+```
+
+### Backend Development
+
+**Run Rust tests:**
+```bash
+cargo test
+```
+
+**Check code:**
+```bash
+cargo check
+```
+
+**Format code:**
+```bash
+cargo fmt
+```
+
+**Lint code:**
+```bash
+cargo clippy
+```
+
+### Documentation Development
+
+**Start docs dev server:**
+```bash
+cd packages/docs
+pnpm dev
+```
+
+**Build docs:**
+```bash
+pnpm build
+```
+
+**Type check:**
+```bash
+pnpm types:check
+```
+
+## Code Style
+
+### Rust
+
+Follow standard Rust conventions:
+- Use `cargo fmt` for formatting
+- Use `cargo clippy` for linting
+- Write documentation comments (`///`)
+- Handle errors properly
+- Use async/await for I/O
+
+**Example:**
+```rust
+/// Starts the Microsoft authentication device flow
+#[tauri::command]
+async fn start_microsoft_login(
+ window: Window,
+) -> Result {
+ emit_log!(window, "Starting Microsoft login...");
+
+ start_device_flow()
+ .await
+ .map_err(|e| e.to_string())
+}
+```
+
+### TypeScript/Svelte
+
+Follow the project's conventions:
+- Use Svelte 5 runes (`$state`, `$effect`)
+- Prefer TypeScript over JavaScript
+- Use Biome for formatting and linting
+- Follow component structure
+
+**Example:**
+```typescript
+// stores/auth.svelte.ts
+export class AuthState {
+ currentAccount = $state(null);
+ isLoginModalOpen = $state(false);
+
+ async login(username: string) {
+ const account = await invoke('offline_login', { username });
+ this.currentAccount = account;
+ }
+}
+```
+
+## Testing
+
+### Unit Tests
+
+**Rust:**
+```rust
+#[cfg(test)]
+mod tests {
+ use super::*;
+
+ #[test]
+ fn test_generate_offline_uuid() {
+ let uuid = generate_offline_uuid("Player");
+ assert!(uuid.len() > 0);
+ }
+}
+```
+
+**Run:**
+```bash
+cargo test
+```
+
+### Integration Tests
+
+Test the full application:
+1. Build in dev mode: `cargo tauri dev`
+2. Manually test features
+3. Check console for errors
+4. Verify UI behavior
+
+### CI Tests
+
+GitHub Actions runs tests on:
+- Ubuntu (latest)
+- Arch Linux (Wayland)
+- Windows (latest)
+- macOS (ARM64)
+
+View workflow: `.github/workflows/test.yml`
+
+## Debugging
+
+### Frontend Debugging
+
+1. Open DevTools in Tauri window: `Ctrl+Shift+I` (Windows/Linux) or `Cmd+Option+I` (macOS)
+2. Check Console for errors
+3. Use React DevTools or Svelte DevTools
+4. Monitor Network tab for API calls
+
+### Backend Debugging
+
+**Print debugging:**
+```rust
+emit_log!(window, format!("Debug: {}", value));
+println!("Debug: {}", value);
+```
+
+**Rust debugger:**
+```bash
+# Install rust-lldb or rust-gdb
+cargo install rust-gdb
+
+# Debug
+rust-gdb target/debug/dropout
+```
+
+### Logging
+
+**Frontend:**
+```typescript
+console.log("Info message");
+console.error("Error message");
+```
+
+**Backend:**
+```rust
+emit_log!(window, "Status update");
+eprintln!("Error: {}", error);
+```
+
+## Contributing
+
+### Contribution Workflow
+
+1. **Fork** the repository
+2. **Create** a feature branch:
+ ```bash
+ git checkout -b feature/my-feature
+ ```
+3. **Make** your changes
+4. **Test** thoroughly
+5. **Commit** with conventional commits:
+ ```bash
+ git commit -m "feat: add new feature"
+ ```
+6. **Push** to your fork:
+ ```bash
+ git push origin feature/my-feature
+ ```
+7. **Create** a pull request
+
+### Commit Messages
+
+Follow [Conventional Commits](https://www.conventionalcommits.org/):
+
+**Format:**
+```
+[scope]:
+
+[optional body]
+
+[optional footer]
+```
+
+**Types:**
+- `feat`: New feature
+- `fix`: Bug fix
+- `docs`: Documentation
+- `style`: Formatting
+- `refactor`: Code restructuring
+- `perf`: Performance improvement
+- `test`: Adding tests
+- `chore`: Maintenance
+
+**Examples:**
+```bash
+feat(auth): add offline authentication support
+fix(java): resolve detection on Windows
+docs: update installation guide
+refactor(download): simplify progress tracking
+```
+
+### Pull Request Guidelines
+
+**Before submitting:**
+- [ ] Code follows style guidelines
+- [ ] Tests pass locally
+- [ ] Documentation updated if needed
+- [ ] No unnecessary files committed
+- [ ] Commit messages are clear
+
+**PR Description:**
+- Explain what and why
+- Link related issues
+- List breaking changes
+- Add screenshots for UI changes
+
+### Code Review
+
+Maintainers will review your PR for:
+- Code quality and style
+- Test coverage
+- Documentation
+- Performance impact
+- Security implications
+
+Be responsive to feedback and make requested changes.
+
+## Common Tasks
+
+### Adding a Tauri Command
+
+1. **Define command in `main.rs`:**
+ ```rust
+ #[tauri::command]
+ async fn my_command(param: String) -> Result {
+ Ok(format!("Received: {}", param))
+ }
+ ```
+
+2. **Register in builder:**
+ ```rust
+ .invoke_handler(tauri::generate_handler![
+ my_command,
+ // ... other commands
+ ])
+ ```
+
+3. **Call from frontend:**
+ ```typescript
+ const result = await invoke('my_command', { param: 'value' });
+ ```
+
+### Adding a UI Component
+
+1. **Create component file:**
+ ```svelte
+
+
+
+
+ ```
+
+2. **Import and use:**
+ ```svelte
+
+
+
+ ```
+
+### Adding a Store
+
+1. **Create store file:**
+ ```typescript
+ // packages/ui/src/stores/mystore.svelte.ts
+ export class MyState {
+ value = $state(0);
+
+ increment() {
+ this.value++;
+ }
+ }
+
+ export const myState = new MyState();
+ ```
+
+2. **Use in components:**
+ ```svelte
+
+
+
+ ```
+
+## Troubleshooting Development Issues
+
+### Build Failures
+
+**"cannot find -lwebkit2gtk"**
+```bash
+# Install WebKit dependencies
+sudo apt install libwebkit2gtk-4.1-dev
+```
+
+**"pnpm not found"**
+```bash
+# Install pnpm
+npm install -g pnpm@9
+```
+
+**"Rust version too old"**
+```bash
+# Update Rust
+rustup update
+```
+
+### Runtime Issues
+
+**"Failed to load dynamic library"**
+- Rebuild: `cargo clean && cargo tauri dev`
+- Check library paths
+- Verify dependencies installed
+
+**"CORS error"**
+- Normal in dev mode
+- Tauri handles CORS automatically
+
+**"Hot reload not working"**
+- Check Vite config
+- Restart dev server
+- Clear browser cache
+
+## Resources
+
+- [Tauri Documentation](https://v2.tauri.app/)
+- [Svelte 5 Documentation](https://svelte.dev/docs)
+- [Rust Book](https://doc.rust-lang.org/book/)
+- [DropOut Repository](https://github.com/HydroRoll-Team/DropOut)
+
+## Getting Help
+
+- **Issues**: [GitHub Issues](https://github.com/HydroRoll-Team/DropOut/issues)
+- **Discussions**: [GitHub Discussions](https://github.com/HydroRoll-Team/DropOut/discussions)
+- **Documentation**: This site
diff --git a/packages/docs/content/en/features/authentication.mdx b/packages/docs/content/en/features/authentication.mdx
new file mode 100644
index 00000000..b6fc4ba5
--- /dev/null
+++ b/packages/docs/content/en/features/authentication.mdx
@@ -0,0 +1,266 @@
+---
+title: Authentication
+description: Microsoft OAuth and offline authentication in DropOut
+---
+
+# Authentication
+
+DropOut supports two authentication methods: Microsoft Account (for official Minecraft) and Offline Mode (for testing and offline play).
+
+## Microsoft Authentication
+
+### Overview
+
+DropOut uses the **Device Code Flow** for Microsoft authentication, which:
+- Doesn't require a redirect URL (no browser integration)
+- Works on any device with a browser
+- Provides a simple code-based authentication
+- Fully compliant with Microsoft OAuth 2.0
+
+### Authentication Process
+
+The authentication chain consists of multiple steps:
+
+1. **Device Code** → User authorization
+2. **MS Token** → Access + refresh tokens
+3. **Xbox Live** → Xbox token + UHS
+4. **XSTS** → Security token
+5. **Minecraft** → Game access token
+6. **Profile** → Username + UUID
+
+#### Step 1: Device Code Request
+1. Click "Login with Microsoft"
+2. DropOut requests a device code from Microsoft
+3. You receive:
+ - User code (e.g., `A1B2-C3D4`)
+ - Verification URL (usually `https://microsoft.com/link`)
+ - Device code (used internally)
+
+#### Step 2: User Authorization
+1. Visit the verification URL in any browser
+2. Enter the user code
+3. Sign in with your Microsoft account
+4. Authorize DropOut to access your Minecraft profile
+
+#### Step 3: Token Exchange
+- DropOut polls Microsoft for authorization completion
+- Once authorized, receives an access token and refresh token
+- Refresh token is stored for future logins
+
+#### Step 4: Xbox Live Authentication
+- Microsoft token is exchanged for Xbox Live token
+- Retrieves User Hash (UHS) for next step
+
+#### Step 5: XSTS Authorization
+- Xbox Live token is used to get XSTS token
+- This token is specific to Minecraft services
+
+#### Step 6: Minecraft Login
+- XSTS token is exchanged for Minecraft access token
+- Uses endpoint: `/launcher/login`
+
+#### Step 7: Profile Fetching
+- Retrieves your Minecraft username
+- Fetches your UUID
+- Checks if you own Minecraft
+
+### Token Management
+
+**Access Token:**
+- Short-lived (typically 1 hour)
+- Used for game authentication
+- Automatically refreshed when expired
+
+**Refresh Token:**
+- Long-lived (typically 90 days)
+- Stored securely in `accounts.json`
+- Used to obtain new access tokens
+
+**Auto-refresh:**
+```rust
+// Automatic refresh when token expires
+if account.expires_at < current_time {
+ refresh_full_auth(&account).await?;
+}
+```
+
+### Security Considerations
+
+- Tokens are stored in platform-specific app data directory
+- HTTPS only for all API calls
+- No credentials stored (only tokens)
+- User-Agent header required (bypasses MS WAF)
+
+### Troubleshooting Microsoft Login
+
+**"Device code expired"**
+- Codes expire after 15 minutes
+- Start the login process again
+
+**"Authorization pending"**
+- Normal during the waiting phase
+- Complete authorization in the browser
+
+**"Invalid token"**
+- Token may have expired
+- Log out and log back in
+
+**"You don't own Minecraft"**
+- Verify your Microsoft account owns Minecraft Java Edition
+- Check at https://www.minecraft.net/profile
+
+## Offline Authentication
+
+### Overview
+
+Offline mode creates a local account that doesn't require internet connectivity or a Microsoft account. This is useful for:
+- Testing and development
+- Playing without internet
+- LAN multiplayer
+- Mod development
+
+### Creating an Offline Account
+
+1. Click "Offline Mode" in the login screen
+2. Enter a username (3-16 characters)
+3. Click "Create Account"
+
+### How It Works
+
+**UUID Generation:**
+```rust
+// Deterministic UUID v3 from username
+let uuid = generate_offline_uuid(&username);
+```
+
+- Uses UUID v3 (namespace-based)
+- Deterministic: same username = same UUID
+- No network requests
+
+**Authentication:**
+- Returns `"null"` as access token
+- Minecraft accepts null token in offline mode
+- Username and UUID stored locally
+
+### Limitations
+
+- Cannot join online servers
+- No skin support
+- No cape support
+- No Microsoft account features
+
+### Use Cases
+
+**Development:**
+```bash
+# Testing mod development
+cargo tauri dev
+# Use offline mode to test quickly
+```
+
+**LAN Play:**
+- Join LAN worlds without authentication
+- Host LAN worlds
+
+**Offline Play:**
+- Singleplayer without internet
+- No authentication required
+
+## Account Management
+
+### Switching Accounts
+
+Currently, DropOut supports one active account at a time. Multi-account support is planned.
+
+**To switch accounts:**
+1. Log out of current account
+2. Log in with new account
+
+### Account Storage
+
+Accounts are stored in `accounts.json`:
+
+```json
+{
+ "current_account_id": "uuid-here",
+ "accounts": [
+ {
+ "id": "uuid",
+ "type": "Microsoft",
+ "username": "PlayerName",
+ "access_token": "...",
+ "refresh_token": "...",
+ "expires_at": 1234567890
+ }
+ ]
+}
+```
+
+### Deleting Accounts
+
+To remove an account:
+1. Open Settings
+2. Navigate to Accounts
+3. Click "Log Out"
+4. Or manually delete `accounts.json`
+
+## API Reference
+
+### Tauri Commands
+
+**Start Microsoft Login:**
+```typescript
+const { user_code, verification_uri } = await invoke('start_microsoft_login');
+```
+
+**Complete Microsoft Login:**
+```typescript
+const account = await invoke('complete_microsoft_login', { deviceCode });
+```
+
+**Offline Login:**
+```typescript
+const account = await invoke('offline_login', { username: 'Player' });
+```
+
+**Logout:**
+```typescript
+await invoke('logout');
+```
+
+**Get Current Account:**
+```typescript
+const account = await invoke('get_current_account');
+```
+
+### Events
+
+**Authentication Status:**
+```typescript
+listen('auth-status', (event) => {
+ console.log(event.payload); // "logged_in" | "logged_out"
+});
+```
+
+## Best Practices
+
+### For Players
+
+1. **Use Microsoft Account** for official servers
+2. **Keep tokens secure** - don't share accounts.json
+3. **Refresh tokens regularly** by logging in
+4. **Use offline mode** only for testing
+
+### For Developers
+
+1. **Handle token expiration** gracefully
+2. **Implement retry logic** for network failures
+3. **Cache account data** to reduce API calls
+4. **Validate tokens** before game launch
+
+## Future Enhancements
+
+- **Multi-account support**: Switch between accounts easily
+- **Account profiles**: Save per-account settings
+- **Auto-login**: Remember last account
+- **Token encryption**: Enhanced security for stored tokens
diff --git a/packages/docs/content/en/features/index.mdx b/packages/docs/content/en/features/index.mdx
new file mode 100644
index 00000000..3a463d0b
--- /dev/null
+++ b/packages/docs/content/en/features/index.mdx
@@ -0,0 +1,176 @@
+---
+title: Features Overview
+description: Comprehensive guide to all DropOut features
+---
+
+# Features Overview
+
+DropOut is packed with features designed for both casual players and power users. This guide covers all major capabilities.
+
+## Core Features
+
+
+
+
+
+
+
+
+
+
+## Quick Feature Matrix
+
+| Feature | Status | Description |
+|---------|--------|-------------|
+| Microsoft Authentication | Complete | OAuth 2.0 with device code flow |
+| Offline Authentication | Complete | Local accounts for offline play |
+| Token Auto-refresh | Complete | Automatic refresh of expired tokens |
+| Java Auto-detection | Complete | Scans system for Java installations |
+| Java Download | Complete | Download Adoptium JDK/JRE versions |
+| Fabric Support | Complete | Install and launch Fabric loader |
+| Forge Support | Complete | Install and launch Forge loader |
+| Instance System | Complete | Isolated game environments |
+| GitHub Integration | Complete | View releases and changelogs |
+| Concurrent Downloads | Complete | Multi-threaded asset downloads |
+| Resume Downloads | Complete | Resume interrupted downloads |
+| AI Assistant | Complete | Built-in troubleshooting helper |
+| Config Editor | Complete | JSON/TOML configuration editor |
+| Custom Resolution | Complete | Set game window dimensions |
+| Memory Allocation | Complete | Customize JVM memory settings |
+| Multi-account | In Progress | Switch between multiple accounts |
+| Mods Manager | Planned | Enable/disable mods in launcher |
+| Launcher Auto-update | Planned | Self-updating mechanism |
+| Custom Game Directory | Planned | Choose game files location |
+| Import Profiles | Planned | Import from MultiMC/Prism |
+
+## Performance Features
+
+### Concurrent Downloads
+- Configurable thread count (default: 10)
+- Parallel asset and library downloads
+- Progress tracking per file
+- ETA calculation
+
+### Resume Support
+- Interrupted downloads auto-resume
+- `.part` files track progress
+- Multi-segment downloads for large files
+- Metadata files for state tracking
+
+### Caching
+- Java catalog cached for 24 hours
+- Version manifests cached locally
+- Asset index caching
+- Library deduplication
+
+## User Interface Features
+
+### Modern Design
+- Dark mode enforced for eye comfort
+- Particle background effects
+- Clean, distraction-free layout
+- Responsive design
+
+### Real-time Feedback
+- Live download progress
+- Game console output
+- Log streaming
+- Toast notifications
+
+### Settings Management
+- Memory allocation slider
+- Resolution customization
+- Java path selection
+- Thread count configuration
+- Custom JVM arguments
+
+## Advanced Features
+
+### Version Inheritance
+Modded versions (Fabric/Forge) automatically inherit from parent vanilla versions:
+- Libraries merged from parent + mod loader
+- Arguments combined and deduplicated
+- Assets inherited from vanilla version
+
+### Native Library Extraction
+- Platform-specific native extraction
+- Automatic cleanup
+- Proper library path configuration
+
+### Rules Engine
+- OS-specific library filtering
+- Feature flag support
+- Architecture detection
+
+### Download Queue Persistence
+- Save incomplete downloads
+- Resume after launcher restart
+- Queue priority management
+
+## Developer Features
+
+### Config Editor
+Built-in JSON/TOML editor with:
+- Syntax highlighting
+- Validation
+- Quick access to all configs
+
+### Log Access
+- Real-time game logs
+- Launcher debug logs
+- Copy/export functionality
+
+### AI Assistant
+- Troubleshooting guidance
+- Error analysis
+- Configuration help
+- Documentation search
+
+## Coming Soon
+
+### Multi-account Management
+- Switch between accounts easily
+- Account profiles
+- Quick switching
+
+### Mods Manager
+- Browse and install mods
+- Enable/disable mods
+- Mod compatibility checking
+- Version management
+
+### Profile Import
+- Import from MultiMC
+- Import from Prism Launcher
+- Import from other launchers
+- Preserve settings and saves
+
+### Launcher Auto-update
+- Background update checks
+- One-click updates
+- Version history
+- Rollback support
diff --git a/packages/docs/content/en/features/java.mdx b/packages/docs/content/en/features/java.mdx
new file mode 100644
index 00000000..21b95a9f
--- /dev/null
+++ b/packages/docs/content/en/features/java.mdx
@@ -0,0 +1,394 @@
+---
+title: Java Management
+description: Automatic Java detection, download, and installation
+---
+
+# Java Management
+
+DropOut provides comprehensive Java management, automatically detecting installed versions and downloading new ones as needed.
+
+## Auto-detection
+
+### System Scan
+
+DropOut scans multiple locations for Java installations:
+
+**Linux:**
+- `/usr/lib/jvm/`
+- `/usr/java/`
+- `$JAVA_HOME`
+- `PATH` environment variable
+
+**macOS:**
+- `/Library/Java/JavaVirtualMachines/`
+- `/System/Library/Java/JavaVirtualMachines/`
+- `$JAVA_HOME`
+- `PATH` environment variable
+
+**Windows:**
+- `C:\Program Files\Java\`
+- `C:\Program Files (x86)\Java\`
+- `%JAVA_HOME%`
+- `PATH` environment variable
+- Windows Registry
+
+### Version Detection
+
+For each Java installation found, DropOut:
+1. Runs `java -version` to get version info
+2. Parses major version (8, 11, 17, 21, etc.)
+3. Detects architecture (x64, ARM64)
+4. Identifies vendor (Oracle, Adoptium, etc.)
+
+### Results
+
+All detected Java installations appear in Settings → Java:
+- Version number
+- Installation path
+- Architecture
+- Current selection status
+
+## Java Download
+
+### Adoptium Integration
+
+DropOut integrates with the Eclipse Adoptium API to download high-quality, free JDK/JRE builds.
+
+**Supported Versions:**
+- Java 8 (LTS)
+- Java 11 (LTS)
+- Java 17 (LTS)
+- Java 21 (LTS)
+- Java 23+ (Latest)
+
+**Features:**
+- Automatic platform detection
+- Architecture-specific builds
+- JDK or JRE selection
+- Checksum verification
+
+### Download Process
+
+1. Navigate to Settings → Java
+2. Click "Download Java"
+3. Select version (e.g., Java 17)
+4. Choose JDK or JRE
+5. Click Download
+6. Wait for download and extraction
+
+**Progress Tracking:**
+- Real-time download speed
+- ETA calculation
+- Extraction progress
+- Installation confirmation
+
+### Catalog Management
+
+The Java catalog is cached for 24 hours to improve performance:
+
+```rust
+// Catalog structure
+{
+ "versions": [
+ {
+ "version": "17.0.9+9",
+ "major": 17,
+ "url": "https://api.adoptium.net/...",
+ "sha256": "...",
+ "size": 123456789
+ }
+ ],
+ "last_updated": 1234567890
+}
+```
+
+**Refresh:**
+- Automatic after 24 hours
+- Manual refresh in settings
+- Forced refresh on download failure
+
+## Installation
+
+### Download Directory
+
+Downloaded Java runtimes are installed to:
+
+```
+~/.local/share/com.dropout.launcher/java/ (Linux)
+~/Library/Application Support/com.dropout.launcher/java/ (macOS)
+%APPDATA%/com.dropout.launcher/java/ (Windows)
+```
+
+### Directory Structure
+
+```
+java/
+├── jdk-17.0.9+9/
+│ ├── bin/
+│ │ └── java (or java.exe)
+│ └── lib/
+├── jdk-21.0.1+12/
+│ ├── bin/
+│ └── lib/
+└── download_queue.json
+```
+
+### Extraction
+
+1. Download to `.part` file
+2. Verify checksum
+3. Extract archive:
+ - `.tar.gz` on Linux/macOS
+ - `.zip` on Windows
+4. Move to `java//` directory
+5. Set executable permissions (Unix)
+
+## Configuration
+
+### Memory Allocation
+
+Configure JVM memory in Settings:
+
+**Minimum Memory:**
+- Default: 1024 MB
+- Recommended: 2048 MB for vanilla
+- Recommended: 4096+ MB for modded
+
+**Maximum Memory:**
+- Default: 4096 MB
+- Adjust based on your system RAM
+- Leave 4GB for OS and other apps
+
+**Format:**
+```bash
+-Xms1024M -Xmx4096M
+```
+
+### Custom JVM Arguments
+
+Add custom JVM arguments for advanced configuration:
+
+**Common Arguments:**
+```bash
+# Garbage collection
+-XX:+UseG1GC
+-XX:+UnlockExperimentalVMOptions
+
+# Performance
+-XX:G1NewSizePercent=20
+-XX:G1ReservePercent=20
+-XX:MaxGCPauseMillis=50
+
+# Memory
+-XX:G1HeapRegionSize=32M
+```
+
+### Java Path Selection
+
+**Auto-select:**
+- DropOut recommends the best Java version for each Minecraft version
+- Java 8 for Minecraft 1.12.2 and older
+- Java 17 for Minecraft 1.18-1.20.4
+- Java 21 for Minecraft 1.20.5+
+
+**Manual selection:**
+1. Go to Settings → Java
+2. Choose from detected installations
+3. Or specify custom path
+
+## Version Recommendations
+
+### Minecraft Version → Java Version
+
+| Minecraft Version | Recommended Java | Minimum Java |
+|-------------------|------------------|--------------|
+| 1.7.10 and older | Java 8 | Java 8 |
+| 1.8 - 1.12.2 | Java 8 | Java 8 |
+| 1.13 - 1.16.5 | Java 8 or 11 | Java 8 |
+| 1.17 - 1.17.1 | Java 16 | Java 16 |
+| 1.18 - 1.20.4 | Java 17 | Java 17 |
+| 1.20.5+ | Java 21 | Java 21 |
+
+### Modded Minecraft
+
+**Fabric:**
+- Usually matches vanilla requirements
+- Some mods may require newer Java
+
+**Forge:**
+- May require specific Java versions
+- Check mod loader documentation
+- Often requires exact version match
+
+## Troubleshooting
+
+### Java Not Detected
+
+**Issue:** Installed Java not showing up
+
+**Solutions:**
+1. Verify Java is in standard location
+2. Check `JAVA_HOME` environment variable
+3. Add Java `bin` directory to `PATH`
+4. Restart DropOut
+5. Manual path selection
+
+### Download Fails
+
+**Issue:** Java download doesn't complete
+
+**Solutions:**
+1. Check internet connection
+2. Verify disk space
+3. Try different version
+4. Clear download queue
+5. Manual download from Adoptium
+
+### Wrong Java Version
+
+**Issue:** Game crashes due to Java version
+
+**Solutions:**
+1. Check Minecraft version requirements
+2. Download correct Java version
+3. Select appropriate Java in settings
+4. Verify Java path is correct
+
+### OutOfMemoryError
+
+**Issue:** Game crashes with memory error
+
+**Solutions:**
+1. Increase maximum memory allocation
+2. Close other applications
+3. Upgrade system RAM
+4. Use 64-bit Java
+5. Optimize JVM arguments
+
+### Performance Issues
+
+**Issue:** Low FPS or stuttering
+
+**Solutions:**
+1. Adjust memory allocation (not too high!)
+2. Enable G1GC garbage collector
+3. Add performance JVM arguments
+4. Use newer Java version if compatible
+5. Allocate 4-8GB for modpacks
+
+## API Reference
+
+### Tauri Commands
+
+**Detect Java Installations:**
+```typescript
+const javas = await invoke('detect_java_installations');
+// Returns: Array<{ path: string, version: string, major: number }>
+```
+
+**Get Java Catalog:**
+```typescript
+const catalog = await invoke('get_java_catalog');
+// Returns: { versions: Array, last_updated: number }
+```
+
+**Download Java:**
+```typescript
+await invoke('download_java', {
+ version: '17.0.9+9',
+ variant: 'jdk' // or 'jre'
+});
+```
+
+**Cancel Java Download:**
+```typescript
+await invoke('cancel_java_download');
+```
+
+**Set Java Path:**
+```typescript
+await invoke('set_java_path', { path: '/path/to/java' });
+```
+
+### Events
+
+**Download Progress:**
+```typescript
+listen('java-download-progress', (event) => {
+ const { percent, speed, eta } = event.payload;
+});
+```
+
+**Download Complete:**
+```typescript
+listen('java-download-complete', (event) => {
+ const { path, version } = event.payload;
+});
+```
+
+## Best Practices
+
+### For Players
+
+1. **Use Adoptium builds** - Free, high-quality, maintained
+2. **Match Java to Minecraft** - Check version requirements
+3. **Don't over-allocate memory** - Leave RAM for OS
+4. **Keep Java updated** - Security and performance
+5. **Use 64-bit Java** - Required for large memory
+
+### For Developers
+
+1. **Test multiple Java versions** - Ensure compatibility
+2. **Document Java requirements** - Help users
+3. **Handle missing Java** - Graceful fallbacks
+4. **Validate Java path** - Before launching
+5. **Provide clear errors** - When Java is wrong
+
+## Advanced Topics
+
+### Custom Java Installation
+
+To use a custom Java installation:
+
+1. Install Java manually
+2. Note the installation path
+3. In DropOut Settings → Java
+4. Click "Custom Path"
+5. Browse to Java executable
+6. Verify version is correct
+
+### Java for Servers
+
+When running a Minecraft server:
+
+```bash
+# Recommended server JVM arguments
+-Xms4G -Xmx4G \
+-XX:+UseG1GC \
+-XX:+ParallelRefProcEnabled \
+-XX:MaxGCPauseMillis=200 \
+-XX:+UnlockExperimentalVMOptions \
+-XX:+DisableExplicitGC \
+-XX:G1NewSizePercent=30 \
+-XX:G1MaxNewSizePercent=40 \
+-XX:G1HeapRegionSize=8M \
+-XX:G1ReservePercent=20 \
+-XX:G1HeapWastePercent=5 \
+-XX:G1MixedGCCountTarget=4 \
+-XX:InitiatingHeapOccupancyPercent=15 \
+-XX:G1MixedGCLiveThresholdPercent=90 \
+-XX:G1RSetUpdatingPauseTimePercent=5 \
+-XX:SurvivorRatio=32 \
+-XX:+PerfDisableSharedMem \
+-XX:MaxTenuringThreshold=1
+```
+
+### GraalVM
+
+GraalVM is supported for advanced users:
+
+1. Download GraalVM from graalvm.org
+2. Install manually
+3. Add to DropOut as custom Java
+4. May improve performance
+5. Test thoroughly before use
diff --git a/packages/docs/content/en/features/meta.json b/packages/docs/content/en/features/meta.json
new file mode 100644
index 00000000..47253211
--- /dev/null
+++ b/packages/docs/content/en/features/meta.json
@@ -0,0 +1,9 @@
+{
+ "title": "Features",
+ "pages": [
+ "index",
+ "authentication",
+ "java",
+ "mod-loaders"
+ ]
+}
diff --git a/packages/docs/content/en/features/mod-loaders.mdx b/packages/docs/content/en/features/mod-loaders.mdx
new file mode 100644
index 00000000..d6fdf4f0
--- /dev/null
+++ b/packages/docs/content/en/features/mod-loaders.mdx
@@ -0,0 +1,409 @@
+---
+title: Mod Loaders
+description: Fabric and Forge installation and management
+---
+
+# Mod Loaders
+
+DropOut supports the two most popular Minecraft mod loaders: Fabric and Forge. Both can be easily installed and managed directly from the launcher.
+
+## Fabric Support
+
+### Overview
+
+Fabric is a lightweight, modular modding toolchain focused on:
+- Fast updates to new Minecraft versions
+- Clean, minimal API
+- Strong developer community
+- Excellent performance
+
+### Installation
+
+1. Navigate to **Versions** tab
+2. Click **"Install Fabric"**
+3. Select Minecraft version
+4. Choose Fabric loader version
+5. Click **"Install"**
+6. Wait for installation to complete
+
+### How It Works
+
+**Meta API Integration:**
+```rust
+// Fetch available Fabric versions
+let url = format!(
+ "https://meta.fabricmc.net/v2/versions/loader/{}",
+ minecraft_version
+);
+```
+
+**Profile Generation:**
+1. Fetch Fabric loader metadata
+2. Download Fabric libraries
+3. Generate version JSON with `inheritsFrom`
+4. Merge with parent Minecraft version
+5. Add to versions list
+
+**Version Format:**
+```json
+{
+ "id": "fabric-loader-0.15.0-1.20.4",
+ "inheritsFrom": "1.20.4",
+ "mainClass": "net.fabricmc.loader.impl.launch.knot.KnotClient",
+ "libraries": [...]
+}
+```
+
+### Fabric Versions
+
+**Loader Versions:**
+- Latest stable (recommended)
+- Specific versions for compatibility
+- Beta/snapshot versions
+
+**Game Versions:**
+- All Minecraft versions from 1.14+
+- Snapshots supported
+- Combat Test versions
+
+### Library Management
+
+Fabric libraries are resolved from Maven:
+
+**Main Library:**
+```
+net.fabricmc:fabric-loader:0.15.0
+```
+
+**Dependencies:**
+- `net.fabricmc:tiny-mappings-parser`
+- `net.fabricmc:sponge-mixin`
+- `net.fabricmc:access-widener`
+
+**Download:**
+```rust
+// Maven resolution
+let url = format!(
+ "https://maven.fabricmc.net/{}/{}",
+ artifact_path, filename
+);
+```
+
+### Fabric API
+
+Fabric Loader ≠ Fabric API:
+- **Fabric Loader**: Mod loader (installed by DropOut)
+- **Fabric API**: Library mod (download separately)
+
+Many mods require Fabric API:
+1. Download from [Modrinth](https://modrinth.com/mod/fabric-api) or [CurseForge](https://www.curseforge.com/minecraft/mc-mods/fabric-api)
+2. Place in instance's `mods/` folder
+
+## Forge Support
+
+### Overview
+
+Forge is the original and most popular Minecraft mod loader:
+- Extensive mod ecosystem
+- Mature API
+- Wide version support
+- Large community
+
+### Installation
+
+1. Navigate to **Versions** tab
+2. Click **"Install Forge"**
+3. Select Minecraft version
+4. Choose Forge version
+5. Click **"Install"**
+6. Wait for installer to run
+7. Installation complete
+
+### How It Works
+
+**Forge Installer:**
+```rust
+// Download Forge installer
+let installer_url = format!(
+ "https://maven.minecraftforge.net/net/minecraftforge/forge/{}/forge-{}-installer.jar",
+ full_version, full_version
+);
+
+// Run installer
+java -jar forge-installer.jar --installClient
+```
+
+**Profile Parsing:**
+1. Forge installer creates version JSON
+2. DropOut parses install profile
+3. Extracts library dependencies
+4. Processes processors (if any)
+5. Generates launcher profile
+
+**Version Format:**
+```json
+{
+ "id": "1.20.4-forge-49.0.26",
+ "inheritsFrom": "1.20.4",
+ "mainClass": "cpw.mods.bootstraplauncher.BootstrapLauncher",
+ "libraries": [...]
+}
+```
+
+### Forge Versions
+
+**Release Types:**
+- **Latest**: Most recent stable
+- **Recommended**: Most stable for production
+- **Specific**: Version-locked for compatibility
+
+**Minecraft Version Support:**
+- Legacy versions (1.6.4+)
+- Modern versions (1.13+)
+- Latest versions (1.20+)
+
+### Library Management
+
+Forge has many libraries:
+
+**Core Libraries:**
+- `net.minecraftforge:forge:`
+- `net.minecraftforge:fmlloader:`
+- `org.ow2.asm:asm:`
+
+**Resolution:**
+```rust
+// Forge Maven
+"https://maven.minecraftforge.net/"
+
+// Dependencies may use:
+// - Maven Central
+// - Minecraft Libraries
+```
+
+### Forge Processors
+
+Some Forge versions run "processors" during installation:
+- Bytecode manipulation
+- Library patching
+- Mapping generation
+
+DropOut handles these automatically.
+
+## Version Inheritance
+
+Both Fabric and Forge use Minecraft's inheritance system:
+
+### Parent Version
+
+```json
+{
+ "id": "fabric-loader-0.15.0-1.20.4",
+ "inheritsFrom": "1.20.4" // Parent vanilla version
+}
+```
+
+### Merging Process
+
+**Libraries:**
+```rust
+// Merged from both
+parent_libraries + modded_libraries
+// Duplicates removed
+```
+
+**Arguments:**
+```rust
+// Combined
+parent_jvm_args + modded_jvm_args
+parent_game_args + modded_game_args
+```
+
+**Assets:**
+```rust
+// Inherited from parent
+assets = parent.assets
+```
+
+**Main Class:**
+```rust
+// Overridden by modded
+main_class = modded.mainClass
+```
+
+## Comparison
+
+| Feature | Fabric | Forge |
+|---------|--------|-------|
+| **Performance** | Excellent | Good |
+| **Update Speed** | Very Fast | Moderate |
+| **Mod Selection** | Growing | Extensive |
+| **API Simplicity** | Simple | Complex |
+| **Version Support** | 1.14+ | 1.6.4+ |
+| **Developer Friendly** | Very | Moderate |
+| **Stability** | Excellent | Excellent |
+
+## Installing Mods
+
+### Fabric Mods
+
+1. Create/select instance
+2. Ensure Fabric is installed
+3. Download mods from:
+ - [Modrinth](https://modrinth.com/)
+ - [CurseForge](https://www.curseforge.com/)
+ - [GitHub Releases](https://github.com/)
+4. Place `.jar` files in `instances//mods/`
+5. Launch game
+
+**Compatibility:**
+- Check Minecraft version
+- Check Fabric Loader version
+- Check for Fabric API requirement
+- Read mod dependencies
+
+### Forge Mods
+
+1. Create/select instance
+2. Ensure Forge is installed
+3. Download mods from:
+ - [CurseForge](https://www.curseforge.com/)
+ - [Modrinth](https://modrinth.com/)
+4. Place `.jar` files in `instances//mods/`
+5. Launch game
+
+**Compatibility:**
+- Check Minecraft version exactly
+- Check Forge version range
+- Read mod dependencies
+- Check for conflicts
+
+## Troubleshooting
+
+### Fabric Issues
+
+**"Fabric Loader not found"**
+- Reinstall Fabric
+- Check version JSON exists
+- Verify libraries downloaded
+
+**"Mixin apply failed"**
+- Mod incompatibility
+- Remove conflicting mods
+- Update Fabric Loader
+
+**"Fabric API required"**
+- Download Fabric API
+- Match Minecraft version
+- Place in mods folder
+
+### Forge Issues
+
+**"Forge installer failed"**
+- Verify Java installation
+- Check disk space
+- Try older Forge version
+- Check logs for details
+
+**"Missing dependencies"**
+- Install required mods
+- Check mod version compatibility
+- Read error message carefully
+
+**"Class not found"**
+- Forge version mismatch
+- Reinstall Forge
+- Verify libraries downloaded
+
+### General Mod Issues
+
+**Crash on Launch:**
+1. Check crash report
+2. Identify problematic mod
+3. Remove or update mod
+4. Test with minimal mods
+5. Add mods back incrementally
+
+**Performance Problems:**
+1. Too many mods installed
+2. Increase memory allocation
+3. Install performance mods:
+ - Fabric: Sodium, Lithium
+ - Forge: OptiFine, Magnesium
+4. Remove resource-heavy mods
+
+## API Reference
+
+### Tauri Commands
+
+**Install Fabric:**
+```typescript
+await invoke('install_fabric', {
+ minecraftVersion: '1.20.4',
+ loaderVersion: '0.15.0'
+});
+```
+
+**Install Forge:**
+```typescript
+await invoke('install_forge', {
+ minecraftVersion: '1.20.4',
+ forgeVersion: '49.0.26'
+});
+```
+
+**List Fabric Versions:**
+```typescript
+const versions = await invoke('get_fabric_versions', {
+ minecraftVersion: '1.20.4'
+});
+```
+
+**List Forge Versions:**
+```typescript
+const versions = await invoke('get_forge_versions', {
+ minecraftVersion: '1.20.4'
+});
+```
+
+### Events
+
+**Installation Progress:**
+```typescript
+listen('mod-loader-progress', (event) => {
+ const { stage, percent } = event.payload;
+ // Stages: "downloading", "installing", "processing", "complete"
+});
+```
+
+## Best Practices
+
+### For Players
+
+1. **Choose one mod loader** per instance
+2. **Match versions exactly** - Minecraft and loader
+3. **Read mod requirements** before installing
+4. **Start small** - Add mods incrementally
+5. **Backup worlds** before adding mods
+6. **Check compatibility** lists
+7. **Update cautiously** - Test in separate instance
+
+### For Modpack Creators
+
+1. **Document versions** - MC, loader, all mods
+2. **Test thoroughly** - All features
+3. **List dependencies** - Including API
+4. **Provide changelog** - For updates
+5. **Version lock** - For stability
+6. **Include configs** - Pre-configured
+7. **Test updates** - Before release
+
+## Future Features
+
+- **Mod browser** - Install mods from launcher
+- **Automatic updates** - Keep mods current
+- **Dependency resolution** - Auto-install requirements
+- **Conflict detection** - Warn about incompatibilities
+- **Profile export** - Share modpack configurations
+- **CurseForge integration** - Direct modpack import
+- **Modrinth integration** - Mod search and install
diff --git a/packages/docs/content/en/getting-started.mdx b/packages/docs/content/en/getting-started.mdx
new file mode 100644
index 00000000..5219f409
--- /dev/null
+++ b/packages/docs/content/en/getting-started.mdx
@@ -0,0 +1,161 @@
+---
+title: Getting Started
+description: Quick start guide to using DropOut Minecraft Launcher
+---
+
+# Getting Started
+
+DropOut is a modern, reproducible, and developer-grade Minecraft launcher built with Tauri v2 and Rust. This guide will help you get started with installing and using DropOut.
+
+## Installation
+
+### Download Pre-built Binaries
+
+Download the latest release for your platform from the [Releases](https://github.com/HsiangNianian/DropOut/releases) page.
+
+| Platform | Files |
+| -------------- | ----------------------- |
+| Linux x86_64 | `.deb`, `.AppImage` |
+| Linux ARM64 | `.deb`, `.AppImage` |
+| macOS ARM64 | `.dmg` |
+| Windows x86_64 | `.msi`, `.exe` |
+| Windows ARM64 | `.msi`, `.exe` |
+
+### Linux Installation
+
+#### Using .deb Package
+```bash
+sudo dpkg -i dropout_*.deb
+# Fix dependencies if needed
+sudo apt-get install -f
+```
+
+#### Using AppImage
+```bash
+chmod +x dropout_*.AppImage
+./dropout_*.AppImage
+```
+
+### macOS Installation
+
+1. Open the downloaded `.dmg` file
+2. Drag DropOut to your Applications folder
+3. If you see a security warning, go to System Preferences → Security & Privacy and allow the app
+
+### Windows Installation
+
+#### Using .msi Installer
+1. Double-click the `.msi` file
+2. Follow the installation wizard
+3. Launch DropOut from the Start Menu
+
+#### Using .exe Portable
+1. Double-click the `.exe` file
+2. DropOut will run directly without installation
+
+## First Launch
+
+When you first launch DropOut, you'll need to:
+
+1. **Choose Authentication Method**
+ - **Microsoft Account**: Recommended for official Minecraft
+ - **Offline Mode**: For testing or offline play
+
+2. **Configure Java Runtime**
+ - DropOut will automatically detect installed Java versions
+ - You can download Java directly from the launcher if needed
+
+3. **Select Minecraft Version**
+ - Browse available Minecraft versions
+ - Choose vanilla or modded versions (Fabric/Forge)
+
+## Quick Start Tutorial
+
+### 1. Login
+
+
+
+
+
+
+**Microsoft Login:**
+1. Click "Login with Microsoft"
+2. A device code will be displayed
+3. Visit the URL shown and enter the code
+4. Authorize the application
+5. Return to DropOut - you'll be logged in automatically
+
+**Offline Login:**
+1. Click "Offline Mode"
+2. Enter a username
+3. Click "Create Account"
+
+### 2. Install Minecraft
+
+1. Navigate to the **Versions** tab
+2. Browse available Minecraft versions
+3. Click on a version to install it
+4. Wait for the download to complete
+
+### 3. Launch the Game
+
+1. Go to the **Home** tab
+2. Select your desired version from the dropdown
+3. Adjust settings if needed:
+ - Memory allocation (RAM)
+ - Window resolution
+ - Java path
+4. Click **"Launch Game"**
+5. Monitor the launch process in the console
+
+## Next Steps
+
+
+
+
+
+
+
+
+## System Requirements
+
+### Minimum Requirements
+- **OS**: Windows 10+, macOS 11+, or Linux (Debian-based)
+- **RAM**: 4GB (8GB recommended for modded Minecraft)
+- **Storage**: 2GB for launcher + game files
+- **Java**: Auto-installed by DropOut if not found
+
+### Recommended Requirements
+- **OS**: Latest stable version of your OS
+- **RAM**: 16GB for optimal performance with mods
+- **Storage**: 10GB+ for multiple versions and mods
+- **Java**: Java 17 or 21 (managed by DropOut)
+
+## Getting Help
+
+If you encounter issues:
+- Check the [Troubleshooting Guide](/docs/troubleshooting)
+- Report bugs on [GitHub Issues](https://github.com/HsiangNianian/DropOut/issues)
+- Join our community discussions
diff --git a/packages/docs/content/en/index.mdx b/packages/docs/content/en/index.mdx
new file mode 100644
index 00000000..9dee19f8
--- /dev/null
+++ b/packages/docs/content/en/index.mdx
@@ -0,0 +1,95 @@
+---
+title: Welcome to DropOut
+description: Modern, reproducible, and developer-grade Minecraft launcher
+---
+
+# Welcome to DropOut
+
+DropOut is a modern Minecraft launcher built with Tauri v2 and Rust, designed for players who value control, transparency, and long-term stability.
+
+
+

+
+
+## Why DropOut?
+
+Most Minecraft launchers focus on getting you into the game. DropOut focuses on keeping your game **stable**, **debuggable**, and **reproducible**.
+
+- Your instance worked yesterday but broke today? → **DropOut makes it traceable.**
+- Sharing a modpack means zipping gigabytes? → **DropOut shares exact dependency manifests.**
+- Java, loader, mods, configs drift out of sync? → **DropOut locks them together.**
+
+This launcher is built for players who value control, transparency, and long-term stability.
+
+## Quick Links
+
+
+
+
+
+
+
+
+## Key Features
+
+### High Performance
+Built with Rust and Tauri for minimal resource usage and fast startup times.
+
+### Modern UI
+Clean, distraction-free interface with Svelte 5, Tailwind CSS 4, and particle effects.
+
+### Secure Authentication
+Microsoft OAuth 2.0 with device code flow and offline authentication support.
+
+### Mod Loader Support
+Built-in installation for Fabric and Forge with automatic version management.
+
+### Java Management
+Automatic detection of installed Java versions and integrated downloader for Adoptium JDK/JRE.
+
+### Instance System
+Isolated game environments with independent configurations, mods, and saves.
+
+### AI Assistant
+Built-in AI helper for troubleshooting, configuration, and guidance.
+
+### Fast Downloads
+Concurrent asset and library downloads with resume support and progress tracking.
+
+## Technology Stack
+
+- **Backend**: Rust with Tauri v2
+- **Frontend**: Svelte 5 with runes
+- **Styling**: Tailwind CSS 4
+- **Build Tool**: Vite with Rolldown
+- **Documentation**: Fumadocs with React Router
+
+## Community
+
+- **GitHub**: [HydroRoll-Team/DropOut](https://github.com/HydroRoll-Team/DropOut)
+- **Issues**: [Report bugs](https://github.com/HydroRoll-Team/DropOut/issues)
+- **Roadmap**: [View development roadmap](https://roadmap.sh/r/minecraft-launcher-dev)
+
+## License
+
+DropOut is open source software licensed under the MIT License.
+
+---
+
+Ready to get started? Check out the [Getting Started Guide](getting-started)!
diff --git a/packages/docs/content/en/meta.json b/packages/docs/content/en/meta.json
new file mode 100644
index 00000000..75bf27a3
--- /dev/null
+++ b/packages/docs/content/en/meta.json
@@ -0,0 +1,11 @@
+{
+ "title": "Documentation",
+ "pages": [
+ "index",
+ "getting-started",
+ "architecture",
+ "features",
+ "development",
+ "troubleshooting"
+ ]
+}
diff --git a/packages/docs/content/en/troubleshooting.mdx b/packages/docs/content/en/troubleshooting.mdx
new file mode 100644
index 00000000..6d978194
--- /dev/null
+++ b/packages/docs/content/en/troubleshooting.mdx
@@ -0,0 +1,525 @@
+---
+title: Troubleshooting
+description: Common issues and solutions for DropOut launcher
+---
+
+# Troubleshooting
+
+This guide covers common issues and their solutions. If you don't find your issue here, please [open an issue](https://github.com/HydroRoll-Team/DropOut/issues) on GitHub.
+
+## Installation Issues
+
+### Linux: Missing Dependencies
+
+**Issue:** Error about missing libraries during installation
+
+**Solution:**
+```bash
+# Ubuntu/Debian
+sudo apt update
+sudo apt install libwebkit2gtk-4.1-0 libgtk-3-0
+
+# Fedora
+sudo dnf install webkit2gtk4.1 gtk3
+
+# Arch
+sudo pacman -S webkit2gtk gtk3
+```
+
+### macOS: "App is damaged"
+
+**Issue:** macOS says DropOut is damaged and can't be opened
+
+**Solution:**
+1. Open Terminal
+2. Run: `xattr -cr /Applications/DropOut.app`
+3. Try opening again
+4. Or: System Preferences → Security → Allow anyway
+
+### Windows: SmartScreen Warning
+
+**Issue:** Windows SmartScreen blocks the installer
+
+**Solution:**
+1. Click "More info"
+2. Click "Run anyway"
+3. This is normal for new apps without extended validation certificates
+
+## Authentication Issues
+
+### Microsoft Login Fails
+
+**Issue:** Can't complete Microsoft login
+
+**Possible causes and solutions:**
+
+**1. Device code expired:**
+- Codes expire after 15 minutes
+- Start the login process again
+- Complete authorization faster
+
+**2. Network issues:**
+- Check internet connection
+- Disable VPN temporarily
+- Check firewall settings
+- Try different network
+
+**3. Microsoft account issues:**
+- Verify account owns Minecraft Java Edition
+- Check at https://www.minecraft.net/profile
+- Ensure account is not suspended
+
+**4. Browser problems:**
+- Try different browser
+- Clear browser cache
+- Disable ad blockers
+- Use incognito/private mode
+
+### Token Refresh Fails
+
+**Issue:** Token refresh fails, must re-login frequently
+
+**Solution:**
+1. Log out completely
+2. Delete `accounts.json` from app data directory
+3. Log in again
+4. If persists, check Microsoft account status
+
+### Offline Login Not Working
+
+**Issue:** Can't create offline account
+
+**Solution:**
+- Username must be 3-16 characters
+- Use only letters, numbers, underscore
+- No special characters
+- No spaces
+
+## Game Launch Issues
+
+### Java Not Found
+
+**Issue:** "No Java installation found"
+
+**Solutions:**
+
+**1. Auto-detect existing Java:**
+- Settings → Java → Detect Installations
+- If found, select it
+- If not found, proceed to step 2
+
+**2. Download Java via DropOut:**
+- Settings → Java → Download Java
+- Select appropriate version:
+ - Java 8 for Minecraft 1.12.2 and older
+ - Java 17 for Minecraft 1.18-1.20.4
+ - Java 21 for Minecraft 1.20.5+
+
+**3. Manual Java installation:**
+- Download from [Adoptium](https://adoptium.net/)
+- Install to system
+- Restart DropOut
+- Detect again
+
+### Wrong Java Version
+
+**Issue:** Game crashes with "Unsupported class file version"
+
+**Solution:**
+Match Java version to Minecraft version:
+
+| Minecraft Version | Java Version |
+|-------------------|--------------|
+| 1.7.10 and older | Java 8 |
+| 1.8 - 1.12.2 | Java 8 |
+| 1.13 - 1.16.5 | Java 8 or 11 |
+| 1.17 - 1.17.1 | Java 16 |
+| 1.18 - 1.20.4 | Java 17 |
+| 1.20.5+ | Java 21 |
+
+### OutOfMemoryError
+
+**Issue:** Game crashes with `java.lang.OutOfMemoryError`
+
+**Solutions:**
+
+**1. Increase memory allocation:**
+- Settings → Memory
+- Increase Maximum Memory:
+ - Vanilla: 4GB minimum
+ - Light mods: 6GB
+ - Heavy modpacks: 8-12GB
+- Don't exceed 80% of system RAM
+
+**2. Use 64-bit Java:**
+- Check current Java architecture
+- Download 64-bit Java if needed
+- 32-bit Java limited to ~2GB
+
+**3. Reduce render distance:**
+- In-game Video Settings
+- Lower render distance to 8-12 chunks
+
+**4. Optimize JVM arguments:**
+```bash
+-Xms4G -Xmx8G -XX:+UseG1GC -XX:+UnlockExperimentalVMOptions
+```
+
+### Game Won't Start
+
+**Issue:** Game doesn't launch, no error message
+
+**Check:**
+
+**1. Log output:**
+- Check game console in DropOut
+- Look for error messages
+- Common issues:
+ - Missing files
+ - Corrupted downloads
+ - Mod conflicts
+
+**2. Verify files:**
+- Delete version folder
+- Re-download version
+- Try vanilla first before modded
+
+**3. Check permissions:**
+- Ensure DropOut can write to game directory
+- Check folder permissions
+- On Linux: ensure the launcher directory is only accessible by your user, e.g. `chmod 700 ~/.local/share/com.dropout.launcher`
+
+## Download Issues
+
+### Downloads Fail
+
+**Issue:** Asset or library downloads fail
+
+**Solutions:**
+
+**1. Network issues:**
+- Check internet connection
+- Disable VPN
+- Try different network
+- Check firewall/antivirus
+
+**2. Resume downloads:**
+- DropOut auto-resumes interrupted downloads
+- Close and reopen DropOut
+- Downloads should continue
+
+**3. Clear download cache:**
+- Delete `.part` files in libraries/assets
+- Restart download
+
+**4. Manually download:**
+- Check logs for failing URL
+- Download file manually
+- Place in correct location
+
+### Slow Downloads
+
+**Issue:** Downloads are very slow
+
+**Solutions:**
+
+**1. Adjust thread count:**
+- Settings → Downloads
+- Try different thread counts:
+ - Too low: slow overall
+ - Too high: connection throttling
+ - Recommended: 5-10 threads
+
+**2. Network optimization:**
+- Close bandwidth-heavy apps
+- Use wired connection if possible
+- Check for ISP throttling
+
+**3. Alternative CDN:**
+- Mojang mirrors may be slow
+- Try at different time of day
+
+## Mod Loader Issues
+
+### Fabric Installation Fails
+
+**Issue:** Can't install Fabric loader
+
+**Solutions:**
+
+**1. Check Minecraft version:**
+- Fabric supports 1.14+
+- Older versions not supported
+- Try newer Minecraft version
+
+**2. Network issues:**
+- Check internet connection
+- Fabric Meta API may be down
+- Try again later
+
+**3. Manual installation:**
+- Download Fabric from [fabricmc.net](https://fabricmc.net/)
+- Use official installer
+- Import profile to DropOut
+
+### Forge Installation Fails
+
+**Issue:** Forge installer fails or hangs
+
+**Solutions:**
+
+**1. Java version:**
+- Ensure correct Java version
+- Forge 1.17+ requires Java 16+
+- Older Forge may need Java 8
+
+**2. Installer timeout:**
+- Forge installer can be slow
+- Wait up to 10 minutes
+- Check logs for progress
+
+**3. Disk space:**
+- Ensure sufficient free space
+- Forge needs ~1GB temporarily
+- Check `/tmp` on Linux
+
+**4. Manual installation:**
+- Download Forge installer from [minecraftforge.net](https://files.minecraftforge.net/)
+- Run installer manually
+- Select install client
+- Import profile
+
+### Mod Crashes
+
+**Issue:** Game crashes with mods installed
+
+**Solutions:**
+
+**1. Check compatibility:**
+- Verify mod is for correct Minecraft version
+- Check mod loader version requirements
+- Read mod description for dependencies
+
+**2. Install dependencies:**
+- Fabric mods often need Fabric API
+- Some mods require libraries
+- Check crash log for "missing" errors
+
+**3. Remove conflicting mods:**
+- Disable mods one by one
+- Identify problematic mod
+- Check for known conflicts
+- Update or replace mod
+
+**4. Update mods:**
+- Use latest mod versions
+- Check mod update notes
+- Some updates fix crashes
+
+## Performance Issues
+
+### Low FPS
+
+**Issue:** Game runs slowly or stutters
+
+**Solutions:**
+
+**1. Allocate more memory:**
+- Increase max memory to 6-8GB
+- Don't over-allocate (causes GC pauses)
+
+**2. Install performance mods:**
+- **Fabric**: Sodium, Lithium, Phosphor
+- **Forge**: OptiFine, Magnesium, Rubidium
+
+**3. Optimize settings:**
+- Lower render distance
+- Disable fancy graphics
+- Turn off particles
+- Disable VSync if fps < 60
+
+**4. Update graphics drivers:**
+- Download latest from manufacturer
+- NVIDIA: GeForce Experience
+- AMD: Adrenalin
+- Intel: Graphics Command Center
+
+**5. Close background apps:**
+- Free up system resources
+- Disable overlays (Discord, etc.)
+- Check Task Manager for CPU/RAM hogs
+
+### Launcher Slow to Start
+
+**Issue:** DropOut takes long time to launch
+
+**Solutions:**
+
+**1. Check system resources:**
+- Close unnecessary programs
+- Ensure sufficient RAM available
+- Check CPU usage
+
+**2. Antivirus interference:**
+- Add DropOut to exceptions
+- Temporarily disable to test
+- Some AVs slow down significantly
+
+**3. Corrupted data:**
+- Delete `cache` folder in app data
+- Restart DropOut
+- Will rebuild cache
+
+## UI Issues
+
+### Window Won't Open
+
+**Issue:** DropOut window doesn't appear
+
+**Solutions:**
+
+**1. Check if running:**
+```bash
+# Linux/macOS
+ps aux | grep dropout
+
+# Windows
+tasklist | findstr dropout
+```
+
+**2. Kill and restart:**
+```bash
+# Linux/macOS
+pkill dropout
+
+# Windows
+taskkill /F /IM dropout.exe
+```
+
+**3. Reset window position:**
+- Delete window state config
+- Restart DropOut
+
+### Graphics Glitches
+
+**Issue:** UI looks wrong or has visual artifacts
+
+**Solutions:**
+
+**1. Update graphics drivers:**
+- Install latest drivers
+- Restart system
+
+**2. Disable hardware acceleration:**
+- Check if option exists in settings
+- May reduce performance but fix glitches
+
+**3. Try different monitor:**
+- Multi-monitor setups can cause issues
+- Try on different display
+
+## File System Issues
+
+### Can't Access Game Directory
+
+**Issue:** Errors accessing game files
+
+**Solutions:**
+
+**1. Check permissions:**
+```bash
+# Linux (set secure owner-only permissions)
+sudo chown -R "$USER":"$USER" ~/.local/share/com.dropout.launcher
+chmod -R u+rwX,go-rwx ~/.local/share/com.dropout.launcher
+
+# macOS (set secure owner-only permissions)
+sudo chown -R "$USER":"$USER" ~/Library/Application\ Support/com.dropout.launcher
+chmod -R u+rwX,go-rwx ~/Library/Application\ Support/com.dropout.launcher
+```
+
+**2. Check disk space:**
+- Ensure sufficient free space
+- Minecraft needs 2-10GB depending on mods
+- Clean up old versions
+
+**3. Antivirus blocking:**
+- Add game directory to exceptions
+- Some AVs block file access
+
+### Corrupted Files
+
+**Issue:** Files appear corrupted or invalid
+
+**Solutions:**
+
+**1. Verify checksums:**
+- DropOut verifies SHA1/SHA256
+- Failed verification triggers re-download
+
+**2. Re-download:**
+- Delete corrupted file
+- Launch version again
+- DropOut will re-download
+
+**3. Clear cache:**
+- Delete version folder entirely
+- Re-install from scratch
+
+## Getting More Help
+
+### Collect Debug Information
+
+When reporting issues, include:
+
+**1. System information:**
+- OS and version
+- DropOut version
+- Java version
+
+**2. Logs:**
+- Launcher logs from console
+- Game logs if applicable
+- Error messages (full text)
+
+**3. Steps to reproduce:**
+- What you did
+- What you expected
+- What actually happened
+
+**4. Screenshots:**
+- Error messages
+- UI issues
+- Settings screens
+
+### Report Issues
+
+1. Search [existing issues](https://github.com/HydroRoll-Team/DropOut/issues)
+2. If not found, [create new issue](https://github.com/HydroRoll-Team/DropOut/issues/new)
+3. Use issue template
+4. Provide all requested information
+5. Be patient and responsive
+
+### Community Support
+
+- **GitHub Discussions**: Ask questions
+- **Discord**: Real-time help (if available)
+- **Documentation**: Check all guides
+
+## Known Issues
+
+### Currently Being Worked On
+
+- Multi-account switching (in progress)
+- Custom game directory selection (planned)
+- Launcher auto-update (planned)
+
+### Workarounds Available
+
+**Issue**: Can't switch between accounts easily
+**Workaround**: Log out and log in with different account
+
+**Issue**: No built-in mod manager
+**Workaround**: Manually manage mods in instance folder
+
+**Issue**: Can't import from other launchers
+**Workaround**: Manually copy instance files
diff --git a/packages/docs/content/zh/architecture.mdx b/packages/docs/content/zh/architecture.mdx
new file mode 100644
index 00000000..6a2a2dfc
--- /dev/null
+++ b/packages/docs/content/zh/architecture.mdx
@@ -0,0 +1,281 @@
+---
+title: 架构设计
+description: DropOut Minecraft 启动器的技术架构和设计
+---
+
+# 架构设计
+
+DropOut 采用现代技术栈构建,旨在实现高性能、安全性和跨平台兼容性。
+
+## 技术栈
+
+### 后端(Rust)
+- **框架**: Tauri v2
+- **语言**: Rust(Edition 2021)
+- **异步运行时**: Tokio
+- **HTTP 客户端**: reqwest with native-tls
+
+### 前端(Svelte)
+- **框架**: Svelte 5(with runes)
+- **样式**: Tailwind CSS 4
+- **构建工具**: Vite with Rolldown
+- **包管理器**: pnpm
+
+### 文档
+- **框架**: Fumadocs with React Router v7
+- **内容**: MDX 文件
+- **样式**: Tailwind CSS 4
+
+## 系统架构
+
+```
+┌─────────────────────────────────────────────────────────┐
+│ 前端(Svelte 5) │
+│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌─────────┐ │
+│ │ Stores │ │Components│ │ UI Views │ │Particles│ │
+│ └────┬─────┘ └────┬─────┘ └────┬─────┘ └────┬────┘ │
+│ │ │ │ │ │
+│ └─────────────┴─────────────┴──────────────┘ │
+│ │ │
+│ Tauri 命令 │
+│ 事件/发射器 │
+└──────────────────────────┬──────────────────────────────┘
+ │
+┌──────────────────────────┴──────────────────────────────┐
+│ 后端(Rust/Tauri) │
+│ ┌─────────────────────────────────────────────────┐ │
+│ │ main.rs(命令) │ │
+│ └──────────────┬──────────────────────────────────┘ │
+│ │ │
+│ ┌──────────────┴───────────────────────────────┐ │
+│ │ 核心模块 │ │
+│ │ ┌──────┐ ┌────────┐ ┌──────┐ ┌──────────┐ │ │
+│ │ │ Auth │ │Download│ │ Java │ │ Instance │ │ │
+│ │ └──────┘ └────────┘ └──────┘ └──────────┘ │ │
+│ │ ┌──────┐ ┌────────┐ ┌──────┐ ┌──────────┐ │ │
+│ │ │Fabric│ │ Forge │ │Config│ │Manifest │ │ │
+│ │ └──────┘ └────────┘ └──────┘ └──────────┘ │ │
+│ └──────────────────────────────────────────────┘ │
+│ │
+│ ┌─────────────────────────────────────────────────┐ │
+│ │ 工具和辅助函数 │ │
+│ │ • ZIP 提取 • 路径工具 │ │
+│ └─────────────────────────────────────────────────┘ │
+└──────────────────────────┬──────────────────────────────┘
+ │
+ 外部 API
+ │
+ ┌──────────────────┼──────────────────┐
+ │ │ │
+ ┌─────┴────┐ ┌──────┴─────┐ ┌──────┴─────┐
+ │ Mojang │ │ Fabric │ │ Forge │
+ │ APIs │ │ Meta │ │ Maven │
+ └──────────┘ └────────────┘ └────────────┘
+```
+
+## 核心组件
+
+### 前端状态管理
+
+DropOut 使用 **Svelte 5 runes** 进行响应式状态管理:
+
+```typescript
+// stores/auth.svelte.ts
+export class AuthState {
+ currentAccount = $state(null); // 响应式
+ isLoginModalOpen = $state(false);
+
+ $effect(() => { // 副作用
+ // 依赖变化时自动运行
+ });
+}
+```
+
+**关键 Stores:**
+- `auth.svelte.ts`: 认证状态和登录流程
+- `settings.svelte.ts`: 启动器设置和 Java 检测
+- `game.svelte.ts`: 游戏运行状态和日志
+- `instances.svelte.ts`: 实例管理
+- `ui.svelte.ts`: UI 状态(提示、模态框、活动视图)
+
+### 后端架构
+
+#### 命令模式
+所有 Tauri 命令遵循此结构:
+
+```rust
+#[tauri::command]
+async fn command_name(
+ window: Window,
+ state: State<'_, SomeState>,
+ param: Type,
+) -> Result {
+ emit_log!(window, "状态消息");
+ // 异步逻辑
+ Ok(result)
+}
+```
+
+#### 事件通信
+
+**Rust → 前端(进度更新):**
+```rust
+window.emit("launcher-log", "正在下载...")?;
+window.emit("download-progress", progress_struct)?;
+```
+
+**前端 → Rust(命令):**
+```typescript
+import { invoke } from "@tauri-apps/api/core";
+const result = await invoke("start_game", { versionId: "1.20.4" });
+```
+
+### 核心模块
+
+#### 认证(`core/auth.rs`)
+- **微软 OAuth 2.0**: 设备代码流
+- **离线认证**: 本地 UUID 生成
+- **令牌管理**: 刷新令牌存储和自动刷新
+- **Xbox Live 集成**: 完整认证链
+
+**认证流程:**
+1. 设备代码请求 → MS 令牌
+2. Xbox Live 认证
+3. XSTS 授权
+4. Minecraft 令牌交换
+5. 配置文件获取
+
+#### 下载器(`core/downloader.rs`)
+- **并发下载**: 可配置线程池
+- **断点续传**: `.part` 和 `.part.meta` 文件
+- **多段下载**: 大文件分割成块
+- **校验和验证**: SHA1/SHA256 验证
+- **进度跟踪**: 实时事件到前端
+
+#### Java 管理(`core/java.rs`)
+- **自动检测**: 扫描系统路径
+- **Adoptium 集成**: 按需下载 JDK/JRE
+- **目录缓存**: 版本列表 24 小时缓存
+- **安装**: 提取到应用数据目录
+- **取消**: 下载取消的原子标志
+
+#### Fabric 支持(`core/fabric.rs`)
+- **Meta API 集成**: 获取加载器版本
+- **配置文件生成**: 创建版本 JSON
+- **库解析**: Maven 构件处理
+
+#### Forge 支持(`core/forge.rs`)
+- **安装程序执行**: 运行 Forge 安装程序
+- **配置文件解析**: 提取安装配置文件
+- **库管理**: 处理 Forge 特定库
+
+#### 实例系统(`core/instance.rs`)
+- **隔离**: 每个实例独立目录
+- **配置**: 每个实例的设置
+- **模组管理**: 实例特定模组
+- **版本锁定**: 可复现环境
+
+#### 版本管理
+- **清单解析**(`manifest.rs`): Mojang 版本清单
+- **继承系统**(`version_merge.rs`): 父版本合并
+- **游戏版本**(`game_version.rs`): JSON 解析和验证
+- **规则引擎**(`rules.rs`): 操作系统/功能条件逻辑
+
+### 文件结构
+
+```
+~/.local/share/com.dropout.launcher/ (Linux)
+~/Library/Application Support/com.dropout.launcher/ (macOS)
+%APPDATA%/com.dropout.launcher/ (Windows)
+├── versions/
+│ └── /
+│ ├── .json
+│ ├── .jar
+│ └── natives/
+├── libraries/
+│ └── /
+├── assets/
+│ ├── indexes/
+│ └── objects/
+├── instances/
+│ └── /
+│ ├── mods/
+│ ├── config/
+│ └── saves/
+├── java/
+│ └── /
+├── config.json
+└── accounts.json
+```
+
+## 数据流
+
+### 游戏启动序列
+
+1. **前端**: 用户点击"启动游戏"
+2. **命令**: 调用 `start_game(version_id)`
+3. **后端处理**:
+ - 加载版本 JSON(带继承)
+ - 解析所有库
+ - 下载缺少的资源
+ - 提取原生库
+ - 构建类路径
+ - 构造 JVM 参数
+ - 替换占位符
+4. **进程生成**: 使用参数启动 Java
+5. **流日志**: 向前端发送 stdout/stderr
+6. **监视**: 跟踪游戏进程状态
+
+### 下载流程
+
+1. **队列创建**: 要下载的文件列表
+2. **并发处理**: 信号量限制线程
+3. **恢复检查**: 验证现有 `.part` 文件
+4. **下载**: 大文件多段
+5. **验证**: 校验和验证
+6. **进度事件**: 实时更新到 UI
+7. **完成**: 从 `.part` 移动到最终位置
+
+### 认证流程
+
+1. **设备代码请求**: 获取用户代码 + 设备代码
+2. **用户授权**: 用户访问 URL 并输入代码
+3. **令牌轮询**: 前端轮询完成
+4. **令牌交换**: MS 令牌 → Xbox → XSTS → Minecraft
+5. **配置文件获取**: 获取用户名和 UUID
+6. **存储**: 使用刷新令牌保存账户
+7. **自动刷新**: 过期时后台令牌刷新
+
+## 平台特定考虑
+
+### Linux
+- 使用 GTK WebView(`webkit2gtk`)
+- 从 `/usr/lib/jvm` 系统 Java 检测
+- 桌面文件集成
+
+### macOS
+- 使用系统 WebKit
+- 应用程序包结构
+- 钥匙串集成用于安全存储
+
+### Windows
+- 使用 WebView2 运行时
+- 注册表 Java 检测
+- MSI 安装程序支持
+- 发布版本中无控制台窗口
+
+## 性能优化
+
+- **并发下载**: 并行资源/库下载
+- **延迟加载**: 按需加载版本清单
+- **缓存**: Java 目录、版本清单
+- **原生代码**: 用于 CPU 密集型操作的 Rust
+- **异步 I/O**: 用于非阻塞操作的 Tokio
+
+## 安全功能
+
+- **令牌加密**: 安全存储认证令牌
+- **仅 HTTPS**: 所有外部 API 调用
+- **校验和验证**: 文件完整性验证
+- **沙箱执行**: Tauri 安全模型
+- **无任意代码**: 无 eval 或动态代码执行
diff --git a/packages/docs/content/zh/development.mdx b/packages/docs/content/zh/development.mdx
new file mode 100644
index 00000000..6ba5b1d1
--- /dev/null
+++ b/packages/docs/content/zh/development.mdx
@@ -0,0 +1,546 @@
+---
+title: 开发指南
+description: 从源代码构建、测试和贡献 DropOut
+---
+
+# 开发指南
+
+本指南将帮助你设置开发环境、从源代码构建 DropOut,以及为项目做出贡献。
+
+## 前置要求
+
+### 必需软件
+
+1. **Rust** (最新稳定版)
+ ```bash
+ # 通过 rustup 安装
+ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
+ ```
+
+2. **Node.js** (v22+) 和 **pnpm** (v9+)
+ ```bash
+ # 从 https://nodejs.org/ 安装 Node.js
+ # 安装 pnpm
+ npm install -g pnpm@9
+ ```
+
+3. **系统依赖**
+
+ 按照你的平台参考 [Tauri 前置要求](https://v2.tauri.app/start/prerequisites/):
+
+ **Linux (Debian/Ubuntu):**
+ ```bash
+ sudo apt update
+ sudo apt install libwebkit2gtk-4.1-dev \
+ build-essential \
+ curl \
+ wget \
+ file \
+ libssl-dev \
+ libayatana-appindicator3-dev \
+ librsvg2-dev
+ ```
+
+ **macOS:**
+ ```bash
+ xcode-select --install
+ ```
+
+ **Windows:**
+ - 安装 [Microsoft Visual C++ Build Tools](https://visualstudio.microsoft.com/visual-cpp-build-tools/)
+ - 安装 [WebView2](https://developer.microsoft.com/microsoft-edge/webview2/)
+
+## 快速开始
+
+### 克隆仓库
+
+```bash
+git clone https://github.com/HydroRoll-Team/DropOut.git
+cd DropOut
+```
+
+### 安装依赖
+
+**前端依赖:**
+```bash
+cd packages/ui
+pnpm install
+cd ../..
+```
+
+**文档依赖:**
+```bash
+cd packages/docs
+pnpm install
+cd ../..
+```
+
+### 开发模式
+
+以开发模式运行 DropOut,支持热重载:
+
+```bash
+cargo tauri dev
+```
+
+这将:
+1. 启动前端开发服务器(Vite 在 5173 端口)
+2. 编译 Rust 后端
+3. 打开 Tauri 窗口
+4. 为前端更改启用热重载
+5. 在 Rust 文件更改时重新编译
+
+**终端输出:**
+- 来自 Vite 的前端日志
+- Rust 标准输出/标准错误
+- 编译状态
+
+### 构建生产版本
+
+构建发布二进制文件:
+
+```bash
+cargo tauri build
+```
+
+**输出位置:**
+- **Linux**: `src-tauri/target/release/bundle/`
+ - `.deb` 软件包
+ - `.AppImage` 包
+- **macOS**: `src-tauri/target/release/bundle/`
+ - `.dmg` 安装器
+ - `.app` 包
+- **Windows**: `src-tauri/target/release/bundle/`
+ - `.msi` 安装器
+ - `.exe` 可执行文件
+
+## 项目结构
+
+```
+DropOut/
+├── src-tauri/ # Rust 后端
+│ ├── src/
+│ │ ├── main.rs # Tauri 命令和入口点
+│ │ ├── core/ # 核心模块
+│ │ │ ├── auth.rs # 身份验证
+│ │ │ ├── downloader.rs # 下载管理器
+│ │ │ ├── fabric.rs # Fabric 支持
+│ │ │ ├── forge.rs # Forge 支持
+│ │ │ ├── java.rs # Java 管理
+│ │ │ ├── instance.rs # 实例系统
+│ │ │ └── ...
+│ │ └── utils/ # 工具类
+│ └── Cargo.toml
+├── packages/
+│ ├── ui/ # Svelte 5 前端
+│ │ ├── src/
+│ │ │ ├── App.svelte
+│ │ │ ├── components/
+│ │ │ ├── stores/ # 状态管理
+│ │ │ └── lib/
+│ │ └── package.json
+│ └── docs/ # 文档站点
+│ ├── content/docs/
+│ └── package.json
+├── .github/
+│ └── workflows/ # CI/CD 流水线
+└── scripts/ # 构建脚本
+```
+
+## 开发工作流
+
+### 前端开发
+
+**启动开发服务器:**
+```bash
+cd packages/ui
+pnpm dev
+```
+
+**类型检查:**
+```bash
+pnpm check
+```
+
+**代码检查:**
+```bash
+pnpm lint
+```
+
+**格式化代码:**
+```bash
+pnpm format
+```
+
+### 后端开发
+
+**运行 Rust 测试:**
+```bash
+cargo test
+```
+
+**检查代码:**
+```bash
+cargo check
+```
+
+**格式化代码:**
+```bash
+cargo fmt
+```
+
+**代码检查:**
+```bash
+cargo clippy
+```
+
+### 文档开发
+
+**启动文档开发服务器:**
+```bash
+cd packages/docs
+pnpm dev
+```
+
+**构建文档:**
+```bash
+pnpm build
+```
+
+**类型检查:**
+```bash
+pnpm types:check
+```
+
+## 代码风格
+
+### Rust
+
+遵循标准 Rust 约定:
+- 使用 `cargo fmt` 格式化
+- 使用 `cargo clippy` 检查
+- 编写文档注释 (`///`)
+- 正确处理错误
+- 对 I/O 使用 async/await
+
+**示例:**
+```rust
+/// Starts the Microsoft authentication device flow
+#[tauri::command]
+async fn start_microsoft_login(
+ window: Window,
+) -> Result {
+ emit_log!(window, "Starting Microsoft login...");
+
+ start_device_flow()
+ .await
+ .map_err(|e| e.to_string())
+}
+```
+
+### TypeScript/Svelte
+
+遵循项目约定:
+- 使用 Svelte 5 runes (`$state`, `$effect`)
+- 优先使用 TypeScript 而非 JavaScript
+- 使用 Biome 进行格式化和检查
+- 遵循组件结构
+
+**示例:**
+```typescript
+// stores/auth.svelte.ts
+export class AuthState {
+ currentAccount = $state(null);
+ isLoginModalOpen = $state(false);
+
+ async login(username: string) {
+ const account = await invoke('offline_login', { username });
+ this.currentAccount = account;
+ }
+}
+```
+
+## 测试
+
+### 单元测试
+
+**Rust:**
+```rust
+#[cfg(test)]
+mod tests {
+ use super::*;
+
+ #[test]
+ fn test_generate_offline_uuid() {
+ let uuid = generate_offline_uuid("Player");
+ assert!(uuid.len() > 0);
+ }
+}
+```
+
+**运行:**
+```bash
+cargo test
+```
+
+### 集成测试
+
+测试完整应用程序:
+1. 以开发模式构建:`cargo tauri dev`
+2. 手动测试功能
+3. 检查控制台错误
+4. 验证 UI 行为
+
+### CI 测试
+
+GitHub Actions 在以下平台运行测试:
+- Ubuntu(最新版)
+- Arch Linux(Wayland)
+- Windows(最新版)
+- macOS(ARM64)
+
+查看工作流:`.github/workflows/test.yml`
+
+## 调试
+
+### 前端调试
+
+1. 在 Tauri 窗口中打开开发工具:`Ctrl+Shift+I`(Windows/Linux)或 `Cmd+Option+I`(macOS)
+2. 检查控制台错误
+3. 使用 React DevTools 或 Svelte DevTools
+4. 监控网络标签页查看 API 调用
+
+### 后端调试
+
+**打印调试:**
+```rust
+emit_log!(window, format!("Debug: {}", value));
+println!("Debug: {}", value);
+```
+
+**Rust 调试器:**
+```bash
+# 安装 rust-lldb 或 rust-gdb
+cargo install rust-gdb
+
+# 调试
+rust-gdb target/debug/dropout
+```
+
+### 日志
+
+**前端:**
+```typescript
+console.log("Info message");
+console.error("Error message");
+```
+
+**后端:**
+```rust
+emit_log!(window, "Status update");
+eprintln!("Error: {}", error);
+```
+
+## 贡献
+
+### 贡献工作流
+
+1. **Fork** 仓库
+2. **创建**功能分支:
+ ```bash
+ git checkout -b feature/my-feature
+ ```
+3. **进行**更改
+4. **彻底测试**
+5. **提交**时使用约定式提交:
+ ```bash
+ git commit -m "feat: add new feature"
+ ```
+6. **推送**到你的 fork:
+ ```bash
+ git push origin feature/my-feature
+ ```
+7. **创建** Pull Request
+
+### 提交消息
+
+遵循 [约定式提交](https://www.conventionalcommits.org/):
+
+**格式:**
+```
+[scope]:
+
+[optional body]
+
+[optional footer]
+```
+
+**类型:**
+- `feat`: 新功能
+- `fix`: 错误修复
+- `docs`: 文档
+- `style`: 格式化
+- `refactor`: 代码重构
+- `perf`: 性能改进
+- `test`: 添加测试
+- `chore`: 维护
+
+**示例:**
+```bash
+feat(auth): add offline authentication support
+fix(java): resolve detection on Windows
+docs: update installation guide
+refactor(download): simplify progress tracking
+```
+
+### Pull Request 指南
+
+**提交前:**
+- [ ] 代码遵循风格指南
+- [ ] 测试在本地通过
+- [ ] 必要时更新文档
+- [ ] 没有提交不必要的文件
+- [ ] 提交消息清晰
+
+**PR 描述:**
+- 解释做了什么以及为什么
+- 链接相关 issue
+- 列出破坏性更改
+- 为 UI 更改添加截图
+
+### 代码审查
+
+维护者将审查你的 PR:
+- 代码质量和风格
+- 测试覆盖率
+- 文档
+- 性能影响
+- 安全影响
+
+对反馈保持响应并进行要求的更改。
+
+## 常见任务
+
+### 添加 Tauri 命令
+
+1. **在 `main.rs` 中定义命令:**
+ ```rust
+ #[tauri::command]
+ async fn my_command(param: String) -> Result {
+ Ok(format!("Received: {}", param))
+ }
+ ```
+
+2. **在构建器中注册:**
+ ```rust
+ .invoke_handler(tauri::generate_handler![
+ my_command,
+ // ... 其他命令
+ ])
+ ```
+
+3. **从前端调用:**
+ ```typescript
+ const result = await invoke('my_command', { param: 'value' });
+ ```
+
+### 添加 UI 组件
+
+1. **创建组件文件:**
+ ```svelte
+
+
+
+
+ ```
+
+2. **导入并使用:**
+ ```svelte
+
+
+
+ ```
+
+### 添加 Store
+
+1. **创建 store 文件:**
+ ```typescript
+ // packages/ui/src/stores/mystore.svelte.ts
+ export class MyState {
+ value = $state(0);
+
+ increment() {
+ this.value++;
+ }
+ }
+
+ export const myState = new MyState();
+ ```
+
+2. **在组件中使用:**
+ ```svelte
+
+
+
+ ```
+
+## 开发问题故障排除
+
+### 构建失败
+
+**"cannot find -lwebkit2gtk"**
+```bash
+# 安装 WebKit 依赖
+sudo apt install libwebkit2gtk-4.1-dev
+```
+
+**"pnpm not found"**
+```bash
+# 安装 pnpm
+npm install -g pnpm@9
+```
+
+**"Rust version too old"**
+```bash
+# 更新 Rust
+rustup update
+```
+
+### 运行时问题
+
+**"Failed to load dynamic library"**
+- 重新构建:`cargo clean && cargo tauri dev`
+- 检查库路径
+- 验证已安装依赖
+
+**"CORS error"**
+- 开发模式下正常
+- Tauri 自动处理 CORS
+
+**"Hot reload not working"**
+- 检查 Vite 配置
+- 重启开发服务器
+- 清除浏览器缓存
+
+## 资源
+
+- [Tauri 文档](https://v2.tauri.app/)
+- [Svelte 5 文档](https://svelte.dev/docs)
+- [Rust 程序设计语言](https://doc.rust-lang.org/book/)
+- [DropOut 仓库](https://github.com/HydroRoll-Team/DropOut)
+
+## 获取帮助
+
+- **Issues**: [GitHub Issues](https://github.com/HydroRoll-Team/DropOut/issues)
+- **讨论**: [GitHub Discussions](https://github.com/HydroRoll-Team/DropOut/discussions)
+- **文档**: 本站点
diff --git a/packages/docs/content/zh/features/authentication.mdx b/packages/docs/content/zh/features/authentication.mdx
new file mode 100644
index 00000000..e83cc357
--- /dev/null
+++ b/packages/docs/content/zh/features/authentication.mdx
@@ -0,0 +1,266 @@
+---
+title: 身份验证
+description: DropOut 中的 Microsoft OAuth 和离线身份验证
+---
+
+# 身份验证
+
+DropOut 支持两种身份验证方法:Microsoft 账户(用于官方 Minecraft)和离线模式(用于测试和离线游玩)。
+
+## Microsoft 身份验证
+
+### 概述
+
+DropOut 使用 **Device Code Flow** 进行 Microsoft 身份验证,具有以下特点:
+- 无需重定向 URL(无需浏览器集成)
+- 适用于任何拥有浏览器的设备
+- 提供简单的基于代码的身份验证
+- 完全符合 Microsoft OAuth 2.0 标准
+
+### 身份验证流程
+
+身份验证链包含多个步骤:
+
+1. **Device Code** → 用户授权
+2. **MS Token** → 访问令牌 + 刷新令牌
+3. **Xbox Live** → Xbox 令牌 + UHS
+4. **XSTS** → 安全令牌
+5. **Minecraft** → 游戏访问令牌
+6. **Profile** → 用户名 + UUID
+
+#### 第 1 步:设备代码请求
+1. 单击"使用 Microsoft 登录"
+2. DropOut 从 Microsoft 请求设备代码
+3. 您会收到:
+ - 用户代码(例如 `A1B2-C3D4`)
+ - 验证 URL(通常为 `https://microsoft.com/link`)
+ - 设备代码(内部使用)
+
+#### 第 2 步:用户授权
+1. 在任何浏览器中访问验证 URL
+2. 输入用户代码
+3. 使用 Microsoft 账户登录
+4. 授权 DropOut 访问您的 Minecraft 个人资料
+
+#### 第 3 步:令牌交换
+- DropOut 轮询 Microsoft 检查授权完成
+- 授权后接收访问令牌和刷新令牌
+- 刷新令牌被存储以备将来登录使用
+
+#### 第 4 步:Xbox Live 身份验证
+- Microsoft 令牌被交换为 Xbox Live 令牌
+- 检索用户哈希 (UHS) 用于下一步
+
+#### 第 5 步:XSTS 授权
+- Xbox Live 令牌被用来获取 XSTS 令牌
+- 此令牌特定于 Minecraft 服务
+
+#### 第 6 步:Minecraft 登录
+- XSTS 令牌被交换为 Minecraft 访问令牌
+- 使用端点:`/launcher/login`
+
+#### 第 7 步:个人资料获取
+- 检索您的 Minecraft 用户名
+- 获取您的 UUID
+- 检查您是否拥有 Minecraft
+
+### 令牌管理
+
+**访问令牌:**
+- 短期有效(通常为 1 小时)
+- 用于游戏身份验证
+- 过期时自动刷新
+
+**刷新令牌:**
+- 长期有效(通常为 90 天)
+- 安全存储在 `accounts.json` 中
+- 用于获取新的访问令牌
+
+**自动刷新:**
+```rust
+// Automatic refresh when token expires
+if account.expires_at < current_time {
+ refresh_full_auth(&account).await?;
+}
+```
+
+### 安全考虑
+
+- 令牌存储在平台特定的应用数据目录中
+- 所有 API 调用仅使用 HTTPS
+- 不存储凭据(仅存储令牌)
+- 需要 User-Agent 标头(绕过 MS WAF)
+
+### Microsoft 登录故障排除
+
+**"Device code expired"(设备代码已过期)**
+- 代码在 15 分钟后过期
+- 重新开始登录流程
+
+**"Authorization pending"(授权待处理)**
+- 在等待阶段很正常
+- 在浏览器中完成授权
+
+**"Invalid token"(无效令牌)**
+- 令牌可能已过期
+- 登出后重新登录
+
+**"You don't own Minecraft"(您不拥有 Minecraft)**
+- 验证您的 Microsoft 账户拥有 Minecraft Java Edition
+- 在 https://www.minecraft.net/profile 检查
+
+## 离线身份验证
+
+### 概述
+
+离线模式创建一个不需要互联网连接或 Microsoft 账户的本地账户。这对以下情况很有用:
+- 测试和开发
+- 无网络游玩
+- LAN 多人游戏
+- Mod 开发
+
+### 创建离线账户
+
+1. 在登录屏幕单击"离线模式"
+2. 输入用户名(3-16 个字符)
+3. 单击"创建账户"
+
+### 工作原理
+
+**UUID 生成:**
+```rust
+// Deterministic UUID v3 from username
+let uuid = generate_offline_uuid(&username);
+```
+
+- 使用 UUID v3(基于命名空间)
+- 确定性:相同的用户名 = 相同的 UUID
+- 无需网络请求
+
+**身份验证:**
+- 返回 `"null"` 作为访问令牌
+- Minecraft 在离线模式下接受空令牌
+- 用户名和 UUID 本地存储
+
+### 限制
+
+- 无法加入在线服务器
+- 不支持皮肤
+- 不支持披风
+- 无法使用 Microsoft 账户功能
+
+### 用例
+
+**开发:**
+```bash
+# Testing mod development
+cargo tauri dev
+# Use offline mode to test quickly
+```
+
+**LAN 游玩:**
+- 无需身份验证即可加入 LAN 世界
+- 托管 LAN 世界
+
+**离线游玩:**
+- 单人游戏无需网络
+- 无需身份验证
+
+## 账户管理
+
+### 切换账户
+
+目前 DropOut 一次只支持一个活跃账户。多账户支持正在规划中。
+
+**切换账户的步骤:**
+1. 登出当前账户
+2. 使用新账户登录
+
+### 账户存储
+
+账户存储在 `accounts.json` 中:
+
+```json
+{
+ "current_account_id": "uuid-here",
+ "accounts": [
+ {
+ "id": "uuid",
+ "type": "Microsoft",
+ "username": "PlayerName",
+ "access_token": "...",
+ "refresh_token": "...",
+ "expires_at": 1234567890
+ }
+ ]
+}
+```
+
+### 删除账户
+
+删除账户的步骤:
+1. 打开设置
+2. 导航到账户
+3. 单击"登出"
+4. 或手动删除 `accounts.json`
+
+## API 参考
+
+### Tauri 命令
+
+**启动 Microsoft 登录:**
+```typescript
+const { user_code, verification_uri } = await invoke('start_microsoft_login');
+```
+
+**完成 Microsoft 登录:**
+```typescript
+const account = await invoke('complete_microsoft_login', { deviceCode });
+```
+
+**离线登录:**
+```typescript
+const account = await invoke('offline_login', { username: 'Player' });
+```
+
+**登出:**
+```typescript
+await invoke('logout');
+```
+
+**获取当前账户:**
+```typescript
+const account = await invoke('get_current_account');
+```
+
+### 事件
+
+**身份验证状态:**
+```typescript
+listen('auth-status', (event) => {
+ console.log(event.payload); // "logged_in" | "logged_out"
+});
+```
+
+## 最佳实践
+
+### 对于玩家
+
+1. **对官方服务器使用 Microsoft 账户**
+2. **保护令牌安全** - 不要分享 accounts.json
+3. **定期刷新令牌** - 通过登录来刷新
+4. **仅在测试时使用离线模式**
+
+### 对于开发者
+
+1. **优雅地处理令牌过期**
+2. **为网络故障实现重试逻辑**
+3. **缓存账户数据** 以减少 API 调用
+4. **在游戏启动前验证令牌**
+
+## 未来增强
+
+- **多账户支持**:轻松在账户之间切换
+- **账户配置文件**:保存每个账户的设置
+- **自动登录**:记住最后一个账户
+- **令牌加密**:为存储的令牌增强安全性
diff --git a/packages/docs/content/zh/features/index.mdx b/packages/docs/content/zh/features/index.mdx
new file mode 100644
index 00000000..bb53ce22
--- /dev/null
+++ b/packages/docs/content/zh/features/index.mdx
@@ -0,0 +1,176 @@
+---
+title: 功能概览
+description: DropOut 所有功能的综合指南
+---
+
+# 功能概览
+
+DropOut 功能丰富,既适合休闲玩家也适合高级用户。本指南涵盖所有主要功能。
+
+## 核心功能
+
+
+
+
+
+
+
+
+
+
+## 快速功能矩阵
+
+| 功能 | 状态 | 描述 |
+|---------|--------|-------------|
+| Microsoft 身份验证 | 完成 | 使用设备代码流的 OAuth 2.0 |
+| 离线身份验证 | 完成 | 用于离线游玩的本地账户 |
+| 令牌自动刷新 | 完成 | 自动刷新过期的令牌 |
+| Java 自动检测 | 完成 | 扫描系统中的 Java 安装 |
+| Java 下载 | 完成 | 下载 Adoptium JDK/JRE 版本 |
+| Fabric 支持 | 完成 | 安装和启动 Fabric 加载器 |
+| Forge 支持 | 完成 | 安装和启动 Forge 加载器 |
+| 实例系统 | 完成 | 隔离的游戏环境 |
+| GitHub 集成 | 完成 | 查看发布和更新日志 |
+| 并发下载 | 完成 | 多线程资源下载 |
+| 断点续传 | 完成 | 恢复中断的下载 |
+| AI 助手 | 完成 | 内置故障排除助手 |
+| 配置编辑器 | 完成 | JSON/TOML 配置编辑器 |
+| 自定义分辨率 | 完成 | 设置游戏窗口尺寸 |
+| 内存分配 | 完成 | 自定义 JVM 内存设置 |
+| 多账户 | 进行中 | 在多个账户之间切换 |
+| 模组管理器 | 计划中 | 在启动器中启用/禁用模组 |
+| 启动器自动更新 | 计划中 | 自我更新机制 |
+| 自定义游戏目录 | 计划中 | 选择游戏文件位置 |
+| 导入配置文件 | 计划中 | 从 MultiMC/Prism 导入 |
+
+## 性能功能
+
+### 并发下载
+- 可配置的线程数(默认:10)
+- 并行资源和库下载
+- 每个文件的进度跟踪
+- ETA 计算
+
+### 断点续传支持
+- 中断的下载自动恢复
+- `.part` 文件跟踪进度
+- 大文件的多段下载
+- 用于状态跟踪的元数据文件
+
+### 缓存
+- Java 目录缓存 24 小时
+- 本地缓存版本清单
+- 资源索引缓存
+- 库去重
+
+## 用户界面功能
+
+### 现代设计
+- 强制暗色模式保护眼睛
+- 粒子背景效果
+- 简洁、无干扰的布局
+- 响应式设计
+
+### 实时反馈
+- 实时下载进度
+- 游戏控制台输出
+- 日志流
+- Toast 通知
+
+### 设置管理
+- 内存分配滑块
+- 分辨率自定义
+- Java 路径选择
+- 线程数配置
+- 自定义 JVM 参数
+
+## 高级功能
+
+### 版本继承
+模组版本(Fabric/Forge)自动从父原版版本继承:
+- 从父版本 + 模组加载器合并库
+- 组合并去重参数
+- 从原版版本继承资源
+
+### 原生库提取
+- 特定平台的原生提取
+- 自动清理
+- 正确的库路径配置
+
+### 规则引擎
+- 特定操作系统的库过滤
+- 功能标志支持
+- 架构检测
+
+### 下载队列持久化
+- 保存未完成的下载
+- 启动器重启后恢复
+- 队列优先级管理
+
+## 开发者功能
+
+### 配置编辑器
+内置 JSON/TOML 编辑器,具有:
+- 语法高亮
+- 验证
+- 快速访问所有配置
+
+### 日志访问
+- 实时游戏日志
+- 启动器调试日志
+- 复制/导出功能
+
+### AI 助手
+- 故障排除指导
+- 错误分析
+- 配置帮助
+- 文档搜索
+
+## 即将推出
+
+### 多账户管理
+- 轻松切换账户
+- 账户配置文件
+- 快速切换
+
+### 模组管理器
+- 浏览和安装模组
+- 启用/禁用模组
+- 模组兼容性检查
+- 版本管理
+
+### 配置文件导入
+- 从 MultiMC 导入
+- 从 Prism Launcher 导入
+- 从其他启动器导入
+- 保留设置和存档
+
+### 启动器自动更新
+- 后台更新检查
+- 一键更新
+- 版本历史
+- 回滚支持
diff --git a/packages/docs/content/zh/features/java.mdx b/packages/docs/content/zh/features/java.mdx
new file mode 100644
index 00000000..bdc3c151
--- /dev/null
+++ b/packages/docs/content/zh/features/java.mdx
@@ -0,0 +1,394 @@
+---
+title: Java 管理
+description: 自动 Java 检测、下载和安装
+---
+
+# Java 管理
+
+DropOut 提供全面的 Java 管理,自动检测已安装的版本并根据需要下载新版本。
+
+## 自动检测
+
+### 系统扫描
+
+DropOut 扫描多个位置查找 Java 安装:
+
+**Linux:**
+- `/usr/lib/jvm/`
+- `/usr/java/`
+- `$JAVA_HOME`
+- `PATH` 环境变量
+
+**macOS:**
+- `/Library/Java/JavaVirtualMachines/`
+- `/System/Library/Java/JavaVirtualMachines/`
+- `$JAVA_HOME`
+- `PATH` 环境变量
+
+**Windows:**
+- `C:\Program Files\Java\`
+- `C:\Program Files (x86)\Java\`
+- `%JAVA_HOME%`
+- `PATH` 环境变量
+- Windows 注册表
+
+### 版本检测
+
+对于找到的每个 Java 安装,DropOut 会:
+1. 运行 `java -version` 获取版本信息
+2. 解析主要版本(8、11、17、21 等)
+3. 检测架构(x64、ARM64)
+4. 识别供应商(Oracle、Adoptium 等)
+
+### 结果
+
+所有检测到的 Java 安装都显示在设置 → Java 中:
+- 版本号
+- 安装路径
+- 架构
+- 当前选择状态
+
+## Java 下载
+
+### Adoptium 集成
+
+DropOut 集成了 Eclipse Adoptium API 以下载高质量的免费 JDK/JRE 构建版本。
+
+**支持的版本:**
+- Java 8(LTS)
+- Java 11(LTS)
+- Java 17(LTS)
+- Java 21(LTS)
+- Java 23+(最新版)
+
+**功能:**
+- 自动平台检测
+- 特定架构的构建版本
+- JDK 或 JRE 选择
+- 校验和验证
+
+### 下载过程
+
+1. 导航到设置 → Java
+2. 点击"下载 Java"
+3. 选择版本(例如 Java 17)
+4. 选择 JDK 或 JRE
+5. 点击下载
+6. 等待下载和解压
+
+**进度跟踪:**
+- 实时下载速度
+- ETA 计算
+- 解压进度
+- 安装确认
+
+### 目录管理
+
+Java 目录缓存 24 小时以提高性能:
+
+```rust
+// 目录结构
+{
+ "versions": [
+ {
+ "version": "17.0.9+9",
+ "major": 17,
+ "url": "https://api.adoptium.net/...",
+ "sha256": "...",
+ "size": 123456789
+ }
+ ],
+ "last_updated": 1234567890
+}
+```
+
+**刷新:**
+- 24 小时后自动刷新
+- 设置中手动刷新
+- 下载失败时强制刷新
+
+## 安装
+
+### 下载目录
+
+下载的 Java 运行时安装到:
+
+```
+~/.local/share/com.dropout.launcher/java/ (Linux)
+~/Library/Application Support/com.dropout.launcher/java/ (macOS)
+%APPDATA%/com.dropout.launcher/java/ (Windows)
+```
+
+### 目录结构
+
+```
+java/
+├── jdk-17.0.9+9/
+│ ├── bin/
+│ │ └── java (或 java.exe)
+│ └── lib/
+├── jdk-21.0.1+12/
+│ ├── bin/
+│ └── lib/
+└── download_queue.json
+```
+
+### 解压
+
+1. 下载到 `.part` 文件
+2. 验证校验和
+3. 解压存档:
+ - Linux/macOS 上的 `.tar.gz`
+ - Windows 上的 `.zip`
+4. 移动到 `java//` 目录
+5. 设置可执行权限(Unix)
+
+## 配置
+
+### 内存分配
+
+在设置中配置 JVM 内存:
+
+**最小内存:**
+- 默认:1024 MB
+- 推荐:原版 2048 MB
+- 推荐:模组 4096+ MB
+
+**最大内存:**
+- 默认:4096 MB
+- 根据系统 RAM 调整
+- 为操作系统和其他应用留出 4GB
+
+**格式:**
+```bash
+-Xms1024M -Xmx4096M
+```
+
+### 自定义 JVM 参数
+
+为高级配置添加自定义 JVM 参数:
+
+**常用参数:**
+```bash
+# 垃圾回收
+-XX:+UseG1GC
+-XX:+UnlockExperimentalVMOptions
+
+# 性能
+-XX:G1NewSizePercent=20
+-XX:G1ReservePercent=20
+-XX:MaxGCPauseMillis=50
+
+# 内存
+-XX:G1HeapRegionSize=32M
+```
+
+### Java 路径选择
+
+**自动选择:**
+- DropOut 为每个 Minecraft 版本推荐最佳 Java 版本
+- Java 8 用于 Minecraft 1.12.2 及更早版本
+- Java 17 用于 Minecraft 1.18-1.20.4
+- Java 21 用于 Minecraft 1.20.5+
+
+**手动选择:**
+1. 前往设置 → Java
+2. 从检测到的安装中选择
+3. 或指定自定义路径
+
+## 版本推荐
+
+### Minecraft 版本 → Java 版本
+
+| Minecraft 版本 | 推荐 Java | 最低 Java |
+|-------------------|------------------|--------------|
+| 1.7.10 及更早 | Java 8 | Java 8 |
+| 1.8 - 1.12.2 | Java 8 | Java 8 |
+| 1.13 - 1.16.5 | Java 8 或 11 | Java 8 |
+| 1.17 - 1.17.1 | Java 16 | Java 16 |
+| 1.18 - 1.20.4 | Java 17 | Java 17 |
+| 1.20.5+ | Java 21 | Java 21 |
+
+### 模组 Minecraft
+
+**Fabric:**
+- 通常与原版要求匹配
+- 一些模组可能需要更新的 Java
+
+**Forge:**
+- 可能需要特定的 Java 版本
+- 检查模组加载器文档
+- 通常需要完全匹配版本
+
+## 故障排除
+
+### 未检测到 Java
+
+**问题:** 已安装的 Java 未显示
+
+**解决方案:**
+1. 验证 Java 在标准位置
+2. 检查 `JAVA_HOME` 环境变量
+3. 将 Java `bin` 目录添加到 `PATH`
+4. 重启 DropOut
+5. 手动选择路径
+
+### 下载失败
+
+**问题:** Java 下载未完成
+
+**解决方案:**
+1. 检查互联网连接
+2. 验证磁盘空间
+3. 尝试不同版本
+4. 清除下载队列
+5. 从 Adoptium 手动下载
+
+### Java 版本错误
+
+**问题:** 由于 Java 版本导致游戏崩溃
+
+**解决方案:**
+1. 检查 Minecraft 版本要求
+2. 下载正确的 Java 版本
+3. 在设置中选择适当的 Java
+4. 验证 Java 路径正确
+
+### 内存不足错误
+
+**问题:** 游戏因内存错误崩溃
+
+**解决方案:**
+1. 增加最大内存分配
+2. 关闭其他应用程序
+3. 升级系统 RAM
+4. 使用 64 位 Java
+5. 优化 JVM 参数
+
+### 性能问题
+
+**问题:** 低 FPS 或卡顿
+
+**解决方案:**
+1. 调整内存分配(不要太高!)
+2. 启用 G1GC 垃圾收集器
+3. 添加性能 JVM 参数
+4. 如兼容使用更新的 Java 版本
+5. 为整合包分配 4-8GB
+
+## API 参考
+
+### Tauri 命令
+
+**检测 Java 安装:**
+```typescript
+const javas = await invoke('detect_java_installations');
+// 返回: Array<{ path: string, version: string, major: number }>
+```
+
+**获取 Java 目录:**
+```typescript
+const catalog = await invoke('get_java_catalog');
+// 返回: { versions: Array, last_updated: number }
+```
+
+**下载 Java:**
+```typescript
+await invoke('download_java', {
+ version: '17.0.9+9',
+ variant: 'jdk' // 或 'jre'
+});
+```
+
+**取消 Java 下载:**
+```typescript
+await invoke('cancel_java_download');
+```
+
+**设置 Java 路径:**
+```typescript
+await invoke('set_java_path', { path: '/path/to/java' });
+```
+
+### 事件
+
+**下载进度:**
+```typescript
+listen('java-download-progress', (event) => {
+ const { percent, speed, eta } = event.payload;
+});
+```
+
+**下载完成:**
+```typescript
+listen('java-download-complete', (event) => {
+ const { path, version } = event.payload;
+});
+```
+
+## 最佳实践
+
+### 对于玩家
+
+1. **使用 Adoptium 构建版本** - 免费、高质量、维护良好
+2. **Java 与 Minecraft 版本匹配** - 检查版本要求
+3. **不要过度分配内存** - 为操作系统留出 RAM
+4. **保持 Java 更新** - 安全性和性能
+5. **使用 64 位 Java** - 大内存所需
+
+### 对于开发者
+
+1. **测试多个 Java 版本** - 确保兼容性
+2. **记录 Java 要求** - 帮助用户
+3. **处理缺少的 Java** - 优雅的后备方案
+4. **启动前验证 Java 路径**
+5. **提供清晰的错误** - 当 Java 错误时
+
+## 高级主题
+
+### 自定义 Java 安装
+
+使用自定义 Java 安装:
+
+1. 手动安装 Java
+2. 记录安装路径
+3. 在 DropOut 设置 → Java 中
+4. 点击"自定义路径"
+5. 浏览到 Java 可执行文件
+6. 验证版本正确
+
+### 服务器用 Java
+
+运行 Minecraft 服务器时:
+
+```bash
+# 推荐的服务器 JVM 参数
+-Xms4G -Xmx4G \
+-XX:+UseG1GC \
+-XX:+ParallelRefProcEnabled \
+-XX:MaxGCPauseMillis=200 \
+-XX:+UnlockExperimentalVMOptions \
+-XX:+DisableExplicitGC \
+-XX:G1NewSizePercent=30 \
+-XX:G1MaxNewSizePercent=40 \
+-XX:G1HeapRegionSize=8M \
+-XX:G1ReservePercent=20 \
+-XX:G1HeapWastePercent=5 \
+-XX:G1MixedGCCountTarget=4 \
+-XX:InitiatingHeapOccupancyPercent=15 \
+-XX:G1MixedGCLiveThresholdPercent=90 \
+-XX:G1RSetUpdatingPauseTimePercent=5 \
+-XX:SurvivorRatio=32 \
+-XX:+PerfDisableSharedMem \
+-XX:MaxTenuringThreshold=1
+```
+
+### GraalVM
+
+GraalVM 支持高级用户:
+
+1. 从 graalvm.org 下载 GraalVM
+2. 手动安装
+3. 作为自定义 Java 添加到 DropOut
+4. 可能提高性能
+5. 使用前彻底测试
diff --git a/packages/docs/content/zh/features/meta.json b/packages/docs/content/zh/features/meta.json
new file mode 100644
index 00000000..2fb2deda
--- /dev/null
+++ b/packages/docs/content/zh/features/meta.json
@@ -0,0 +1,9 @@
+{
+ "title": "功能特性",
+ "pages": [
+ "index",
+ "authentication",
+ "java",
+ "mod-loaders"
+ ]
+}
diff --git a/packages/docs/content/zh/features/mod-loaders.mdx b/packages/docs/content/zh/features/mod-loaders.mdx
new file mode 100644
index 00000000..36872303
--- /dev/null
+++ b/packages/docs/content/zh/features/mod-loaders.mdx
@@ -0,0 +1,409 @@
+---
+title: 模组加载器
+description: Fabric 和 Forge 安装和管理
+---
+
+# 模组加载器
+
+DropOut 支持两个最流行的 Minecraft 模组加载器:Fabric 和 Forge。两者都可以直接从启动器中轻松安装和管理。
+
+## Fabric 支持
+
+### 概述
+
+Fabric 是一个轻量级、模块化的模组工具链,专注于:
+- 快速更新至新的 Minecraft 版本
+- 干净、极简的 API
+- 强大的开发者社区
+- 优异的性能
+
+### 安装
+
+1. 导航至 **Versions** 选项卡
+2. 点击 **"Install Fabric"**
+3. 选择 Minecraft 版本
+4. 选择 Fabric 加载器版本
+5. 点击 **"Install"**
+6. 等待安装完成
+
+### 工作原理
+
+**Meta API 集成:**
+```rust
+// Fetch available Fabric versions
+let url = format!(
+ "https://meta.fabricmc.net/v2/versions/loader/{}",
+ minecraft_version
+);
+```
+
+**配置文件生成:**
+1. 获取 Fabric 加载器元数据
+2. 下载 Fabric 库
+3. 使用 `inheritsFrom` 生成版本 JSON
+4. 与父级 Minecraft 版本合并
+5. 添加至版本列表
+
+**版本格式:**
+```json
+{
+ "id": "fabric-loader-0.15.0-1.20.4",
+ "inheritsFrom": "1.20.4",
+ "mainClass": "net.fabricmc.loader.impl.launch.knot.KnotClient",
+ "libraries": [...]
+}
+```
+
+### Fabric 版本
+
+**加载器版本:**
+- 最新稳定版(推荐)
+- 用于兼容性的特定版本
+- Beta/快照版本
+
+**游戏版本:**
+- 所有 1.14+ 的 Minecraft 版本
+- 支持快照版本
+- 支持战斗测试版本
+
+### 库管理
+
+Fabric 库从 Maven 解析:
+
+**主库:**
+```
+net.fabricmc:fabric-loader:0.15.0
+```
+
+**依赖项:**
+- `net.fabricmc:tiny-mappings-parser`
+- `net.fabricmc:sponge-mixin`
+- `net.fabricmc:access-widener`
+
+**下载:**
+```rust
+// Maven resolution
+let url = format!(
+ "https://maven.fabricmc.net/{}/{}",
+ artifact_path, filename
+);
+```
+
+### Fabric API
+
+Fabric Loader ≠ Fabric API:
+- **Fabric Loader**: 模组加载器(由 DropOut 安装)
+- **Fabric API**: 库模组(单独下载)
+
+许多模组需要 Fabric API:
+1. 从 [Modrinth](https://modrinth.com/mod/fabric-api) 或 [CurseForge](https://www.curseforge.com/minecraft/mc-mods/fabric-api) 下载
+2. 放置在实例的 `mods/` 文件夹中
+
+## Forge 支持
+
+### 概述
+
+Forge 是原始的、最流行的 Minecraft 模组加载器:
+- 广泛的模组生态系统
+- 成熟的 API
+- 广泛的版本支持
+- 庞大的社区
+
+### 安装
+
+1. 导航至 **Versions** 选项卡
+2. 点击 **"Install Forge"**
+3. 选择 Minecraft 版本
+4. 选择 Forge 版本
+5. 点击 **"Install"**
+6. 等待安装程序运行
+7. 安装完成
+
+### 工作原理
+
+**Forge 安装程序:**
+```rust
+// Download Forge installer
+let installer_url = format!(
+ "https://maven.minecraftforge.net/net/minecraftforge/forge/{}/forge-{}-installer.jar",
+ full_version, full_version
+);
+
+// Run installer
+java -jar forge-installer.jar --installClient
+```
+
+**配置文件解析:**
+1. Forge 安装程序创建版本 JSON
+2. DropOut 解析安装配置文件
+3. 提取库依赖项
+4. 处理处理器(如果有)
+5. 生成启动器配置文件
+
+**版本格式:**
+```json
+{
+ "id": "1.20.4-forge-49.0.26",
+ "inheritsFrom": "1.20.4",
+ "mainClass": "cpw.mods.bootstraplauncher.BootstrapLauncher",
+ "libraries": [...]
+}
+```
+
+### Forge 版本
+
+**发布类型:**
+- **Latest**: 最新的稳定版本
+- **Recommended**: 生产环境中最稳定的版本
+- **Specific**: 版本锁定以确保兼容性
+
+**Minecraft 版本支持:**
+- 旧版本 (1.6.4+)
+- 现代版本 (1.13+)
+- 最新版本 (1.20+)
+
+### 库管理
+
+Forge 有许多库:
+
+**核心库:**
+- `net.minecraftforge:forge:`
+- `net.minecraftforge:fmlloader:`
+- `org.ow2.asm:asm:`
+
+**解析:**
+```rust
+// Forge Maven
+"https://maven.minecraftforge.net/"
+
+// Dependencies may use:
+// - Maven Central
+// - Minecraft Libraries
+```
+
+### Forge 处理器
+
+某些 Forge 版本在安装期间运行"处理器":
+- 字节码操纵
+- 库修补
+- 映射生成
+
+DropOut 自动处理这些操作。
+
+## 版本继承
+
+Fabric 和 Forge 都使用 Minecraft 的继承系统:
+
+### 父版本
+
+```json
+{
+ "id": "fabric-loader-0.15.0-1.20.4",
+ "inheritsFrom": "1.20.4" // Parent vanilla version
+}
+```
+
+### 合并过程
+
+**库:**
+```rust
+// Merged from both
+parent_libraries + modded_libraries
+// Duplicates removed
+```
+
+**参数:**
+```rust
+// Combined
+parent_jvm_args + modded_jvm_args
+parent_game_args + modded_game_args
+```
+
+**资源:**
+```rust
+// Inherited from parent
+assets = parent.assets
+```
+
+**主类:**
+```rust
+// Overridden by modded
+main_class = modded.mainClass
+```
+
+## 对比
+
+| 功能 | Fabric | Forge |
+|---------|--------|-------|
+| **性能** | 优异 | 良好 |
+| **更新速度** | 非常快 | 中等 |
+| **模组选择** | 增长中 | 广泛 |
+| **API 简洁性** | 简洁 | 复杂 |
+| **版本支持** | 1.14+ | 1.6.4+ |
+| **开发者友好** | 非常友好 | 中等 |
+| **稳定性** | 优异 | 优异 |
+
+## 安装模组
+
+### Fabric 模组
+
+1. 创建/选择实例
+2. 确保 Fabric 已安装
+3. 从以下位置下载模组:
+ - [Modrinth](https://modrinth.com/)
+ - [CurseForge](https://www.curseforge.com/)
+ - [GitHub Releases](https://github.com/)
+4. 将 `.jar` 文件放置在 `instances//mods/`
+5. 启动游戏
+
+**兼容性:**
+- 检查 Minecraft 版本
+- 检查 Fabric Loader 版本
+- 检查 Fabric API 需求
+- 阅读模组依赖项
+
+### Forge 模组
+
+1. 创建/选择实例
+2. 确保 Forge 已安装
+3. 从以下位置下载模组:
+ - [CurseForge](https://www.curseforge.com/)
+ - [Modrinth](https://modrinth.com/)
+4. 将 `.jar` 文件放置在 `instances//mods/`
+5. 启动游戏
+
+**兼容性:**
+- 精确检查 Minecraft 版本
+- 检查 Forge 版本范围
+- 阅读模组依赖项
+- 检查冲突
+
+## 故障排除
+
+### Fabric 问题
+
+**"Fabric Loader not found"**
+- 重新安装 Fabric
+- 检查版本 JSON 是否存在
+- 验证库是否已下载
+
+**"Mixin apply failed"**
+- 模组不兼容
+- 删除冲突的模组
+- 更新 Fabric Loader
+
+**"Fabric API required"**
+- 下载 Fabric API
+- 匹配 Minecraft 版本
+- 放置在 mods 文件夹中
+
+### Forge 问题
+
+**"Forge installer failed"**
+- 验证 Java 安装
+- 检查磁盘空间
+- 尝试旧版本的 Forge
+- 检查日志获取详细信息
+
+**"Missing dependencies"**
+- 安装所需的模组
+- 检查模组版本兼容性
+- 仔细阅读错误消息
+
+**"Class not found"**
+- Forge 版本不匹配
+- 重新安装 Forge
+- 验证库是否已下载
+
+### 常见模组问题
+
+**启动时崩溃:**
+1. 检查崩溃报告
+2. 识别有问题的模组
+3. 删除或更新模组
+4. 使用最少的模组测试
+5. 逐步添加模组回来
+
+**性能问题:**
+1. 安装了太多模组
+2. 增加内存分配
+3. 安装性能模组:
+ - Fabric: Sodium, Lithium
+ - Forge: OptiFine, Magnesium
+4. 删除资源密集型模组
+
+## API 参考
+
+### Tauri 命令
+
+**安装 Fabric:**
+```typescript
+await invoke('install_fabric', {
+ minecraftVersion: '1.20.4',
+ loaderVersion: '0.15.0'
+});
+```
+
+**安装 Forge:**
+```typescript
+await invoke('install_forge', {
+ minecraftVersion: '1.20.4',
+ forgeVersion: '49.0.26'
+});
+```
+
+**列出 Fabric 版本:**
+```typescript
+const versions = await invoke('get_fabric_versions', {
+ minecraftVersion: '1.20.4'
+});
+```
+
+**列出 Forge 版本:**
+```typescript
+const versions = await invoke('get_forge_versions', {
+ minecraftVersion: '1.20.4'
+});
+```
+
+### 事件
+
+**安装进度:**
+```typescript
+listen('mod-loader-progress', (event) => {
+ const { stage, percent } = event.payload;
+ // Stages: "downloading", "installing", "processing", "complete"
+});
+```
+
+## 最佳实践
+
+### 对于玩家
+
+1. **每个实例选择一个模组加载器**
+2. **精确匹配版本** - Minecraft 和加载器
+3. **安装前阅读模组要求**
+4. **循序渐进** - 逐步添加模组
+5. **备份世界** - 添加模组前备份
+6. **检查兼容性** 列表
+7. **谨慎更新** - 在单独的实例中测试
+
+### 对于模组包创建者
+
+1. **记录版本** - MC、加载器、所有模组
+2. **彻底测试** - 所有功能
+3. **列出依赖项** - 包括 API
+4. **提供更新日志** - 用于更新
+5. **版本锁定** - 为了稳定性
+6. **包含配置** - 预配置
+7. **测试更新** - 发布前测试
+
+## 未来功能
+
+- **模组浏览器** - 从启动器安装模组
+- **自动更新** - 保持模组最新
+- **依赖项解析** - 自动安装需求
+- **冲突检测** - 警告不兼容性
+- **配置文件导出** - 共享模组包配置
+- **CurseForge 集成** - 直接模组包导入
+- **Modrinth 集成** - 模组搜索和安装
diff --git a/packages/docs/content/zh/getting-started.mdx b/packages/docs/content/zh/getting-started.mdx
new file mode 100644
index 00000000..d36eaf5f
--- /dev/null
+++ b/packages/docs/content/zh/getting-started.mdx
@@ -0,0 +1,161 @@
+---
+title: 快速开始
+description: 使用 DropOut Minecraft 启动器的快速入门指南
+---
+
+# 快速开始
+
+DropOut 是一个使用 Tauri v2 和 Rust 构建的现代化、可复现、开发者级别的 Minecraft 启动器。本指南将帮助你开始安装和使用 DropOut。
+
+## 安装
+
+### 下载预编译二进制文件
+
+从[发布页面](https://github.com/HsiangNianian/DropOut/releases)下载适合你平台的最新版本。
+
+| 平台 | 文件 |
+| -------------- | ----------------------- |
+| Linux x86_64 | `.deb`, `.AppImage` |
+| Linux ARM64 | `.deb`, `.AppImage` |
+| macOS ARM64 | `.dmg` |
+| Windows x86_64 | `.msi`, `.exe` |
+| Windows ARM64 | `.msi`, `.exe` |
+
+### Linux 安装
+
+#### 使用 .deb 包
+```bash
+sudo dpkg -i dropout_*.deb
+# 如果需要,修复依赖
+sudo apt-get install -f
+```
+
+#### 使用 AppImage
+```bash
+chmod +x dropout_*.AppImage
+./dropout_*.AppImage
+```
+
+### macOS 安装
+
+1. 打开下载的 `.dmg` 文件
+2. 将 DropOut 拖到应用程序文件夹
+3. 如果看到安全警告,转到系统偏好设置 → 安全性与隐私并允许该应用
+
+### Windows 安装
+
+#### 使用 .msi 安装程序
+1. 双击 `.msi` 文件
+2. 按照安装向导操作
+3. 从开始菜单启动 DropOut
+
+#### 使用 .exe 便携版
+1. 双击 `.exe` 文件
+2. DropOut 将直接运行,无需安装
+
+## 首次启动
+
+首次启动 DropOut 时,你需要:
+
+1. **选择认证方式**
+ - **微软账户**: 推荐用于官方 Minecraft
+ - **离线模式**: 用于测试或离线游戏
+
+2. **配置 Java 运行时**
+ - DropOut 将自动检测已安装的 Java 版本
+ - 如果需要,你可以直接从启动器下载 Java
+
+3. **选择 Minecraft 版本**
+ - 浏览可用的 Minecraft 版本
+ - 选择原版或模组版本(Fabric/Forge)
+
+## 快速入门教程
+
+### 1. 登录
+
+
+
+
+
+
+**微软登录:**
+1. 点击"使用微软登录"
+2. 将显示设备代码
+3. 访问显示的 URL 并输入代码
+4. 授权应用程序
+5. 返回 DropOut - 你将自动登录
+
+**离线登录:**
+1. 点击"离线模式"
+2. 输入用户名
+3. 点击"创建账户"
+
+### 2. 安装 Minecraft
+
+1. 导航到**版本**标签
+2. 浏览可用的 Minecraft 版本
+3. 点击一个版本进行安装
+4. 等待下载完成
+
+### 3. 启动游戏
+
+1. 转到**主页**标签
+2. 从下拉菜单中选择你想要的版本
+3. 如果需要,调整设置:
+ - 内存分配(RAM)
+ - 窗口分辨率
+ - Java 路径
+4. 点击**启动游戏**
+5. 在控制台中监视启动过程
+
+## 下一步
+
+
+
+
+
+
+
+
+## 系统要求
+
+### 最低要求
+- **操作系统**: Windows 10+、macOS 11+ 或 Linux(基于 Debian)
+- **内存**: 4GB(推荐 8GB 用于模组 Minecraft)
+- **存储**: 启动器 + 游戏文件需要 2GB
+- **Java**: 如果找不到,DropOut 会自动安装
+
+### 推荐配置
+- **操作系统**: 你操作系统的最新稳定版本
+- **内存**: 16GB 以获得带模组的最佳性能
+- **存储**: 10GB+ 用于多个版本和模组
+- **Java**: Java 17 或 21(由 DropOut 管理)
+
+## 获取帮助
+
+如果遇到问题:
+- 查看[故障排除指南](/docs/troubleshooting)
+- 在 [GitHub Issues](https://github.com/HsiangNianian/DropOut/issues) 上报告 bug
+- 加入我们的社区讨论
diff --git a/packages/docs/content/zh/index.mdx b/packages/docs/content/zh/index.mdx
new file mode 100644
index 00000000..b554cca6
--- /dev/null
+++ b/packages/docs/content/zh/index.mdx
@@ -0,0 +1,95 @@
+---
+title: 欢迎使用 DropOut
+description: 现代化、可复现、开发者级别的 Minecraft 启动器
+---
+
+# 欢迎使用 DropOut
+
+DropOut 是一个使用 Tauri v2 和 Rust 构建的现代 Minecraft 启动器,专为重视控制、透明度和长期稳定性的玩家设计。
+
+
+

+
+
+## 为什么选择 DropOut?
+
+大多数 Minecraft 启动器专注于让你进入游戏。DropOut 专注于保持你的游戏**稳定**、**可调试**和**可复现**。
+
+- 你的实例昨天还能用,今天就坏了?→ **DropOut 让它可追溯。**
+- 分享模组包意味着打包数GB的文件?→ **DropOut 分享精确的依赖清单。**
+- Java、加载器、模组、配置不同步?→ **DropOut 将它们锁定在一起。**
+
+这个启动器是为重视控制、透明度和长期稳定性的玩家构建的。
+
+## 快速链接
+
+
+
+
+
+
+
+
+## 核心特性
+
+### 高性能
+使用 Rust 和 Tauri 构建,资源占用最小,启动速度极快。
+
+### 现代化界面
+简洁、无干扰的界面,使用 Svelte 5、Tailwind CSS 4 和粒子效果。
+
+### 安全认证
+微软 OAuth 2.0 设备代码流和离线认证支持。
+
+### 模组加载器支持
+内置 Fabric 和 Forge 安装,自动版本管理。
+
+### Java 管理
+自动检测已安装的 Java 版本,集成 Adoptium JDK/JRE 下载器。
+
+### 实例系统
+独立的游戏环境,具有独立的配置、模组和存档。
+
+### AI 助手
+内置 AI 帮助,用于故障排除、配置和指导。
+
+### 快速下载
+并发资源和库下载,支持断点续传和进度跟踪。
+
+## 技术栈
+
+- **后端**: Rust + Tauri v2
+- **前端**: Svelte 5 with runes
+- **样式**: Tailwind CSS 4
+- **构建工具**: Vite with Rolldown
+- **文档**: Fumadocs with React Router
+
+## 社区
+
+- **GitHub**: [HydroRoll-Team/DropOut](https://github.com/HydroRoll-Team/DropOut)
+- **问题反馈**: [报告 bug](https://github.com/HydroRoll-Team/DropOut/issues)
+- **开发路线图**: [查看开发路线图](https://roadmap.sh/r/minecraft-launcher-dev)
+
+## 许可证
+
+DropOut 是在 MIT 许可证下的开源软件。
+
+---
+
+准备好开始了吗?查看[快速开始指南](getting-started)!
diff --git a/packages/docs/content/zh/meta.json b/packages/docs/content/zh/meta.json
new file mode 100644
index 00000000..4fd7ad16
--- /dev/null
+++ b/packages/docs/content/zh/meta.json
@@ -0,0 +1,11 @@
+{
+ "title": "文档",
+ "pages": [
+ "index",
+ "getting-started",
+ "architecture",
+ "features",
+ "development",
+ "troubleshooting"
+ ]
+}
diff --git a/packages/docs/content/zh/troubleshooting.mdx b/packages/docs/content/zh/troubleshooting.mdx
new file mode 100644
index 00000000..c077528a
--- /dev/null
+++ b/packages/docs/content/zh/troubleshooting.mdx
@@ -0,0 +1,523 @@
+---
+title: 故障排除
+description: DropOut 启动器常见问题和解决方案
+---
+
+# 故障排除
+
+本指南涵盖常见问题及其解决方案。如果在这里找不到你的问题,请在 GitHub 上[提交 issue](https://github.com/HydroRoll-Team/DropOut/issues)。
+
+## 安装问题
+
+### Linux:缺少依赖
+
+**问题:** 安装时提示缺少库
+
+**解决方案:**
+```bash
+# Ubuntu/Debian
+sudo apt update
+sudo apt install libwebkit2gtk-4.1-0 libgtk-3-0
+
+# Fedora
+sudo dnf install webkit2gtk4.1 gtk3
+
+# Arch
+sudo pacman -S webkit2gtk gtk3
+```
+
+### macOS:"应用程序已损坏"
+
+**问题:** macOS 提示 DropOut 已损坏无法打开
+
+**解决方案:**
+1. 打开终端
+2. 运行:`xattr -cr /Applications/DropOut.app`
+3. 再次尝试打开
+4. 或者:系统偏好设置 → 安全性 → 仍要打开
+
+### Windows:SmartScreen 警告
+
+**问题:** Windows SmartScreen 阻止安装程序
+
+**解决方案:**
+1. 点击"更多信息"
+2. 点击"仍要运行"
+3. 这对于没有扩展验证证书的新应用是正常的
+
+## 身份验证问题
+
+### Microsoft 登录失败
+
+**问题:** 无法完成 Microsoft 登录
+
+**可能原因和解决方案:**
+
+**1. 设备代码过期:**
+- 代码在 15 分钟后过期
+- 重新开始登录过程
+- 更快地完成授权
+
+**2. 网络问题:**
+- 检查互联网连接
+- 暂时禁用 VPN
+- 检查防火墙设置
+- 尝试不同的网络
+
+**3. Microsoft 账户问题:**
+- 验证账户拥有 Minecraft Java 版
+- 在 https://www.minecraft.net/profile 检查
+- 确保账户未被封禁
+
+**4. 浏览器问题:**
+- 尝试不同的浏览器
+- 清除浏览器缓存
+- 禁用广告拦截器
+- 使用无痕/隐私模式
+
+### 令牌刷新失败
+
+**问题:** 令牌刷新失败,必须频繁重新登录
+
+**解决方案:**
+1. 完全退出登录
+2. 从应用数据目录删除 `accounts.json`
+3. 重新登录
+4. 如果持续存在,检查 Microsoft 账户状态
+
+### 离线登录不工作
+
+**问题:** 无法创建离线账户
+
+**解决方案:**
+- 用户名必须是 3-16 个字符
+- 仅使用字母、数字、下划线
+- 不使用特殊字符
+- 不使用空格
+
+## 游戏启动问题
+
+### 找不到 Java
+
+**问题:** "未找到 Java 安装"
+
+**解决方案:**
+
+**1. 自动检测现有 Java:**
+- 设置 → Java → 检测安装
+- 如果找到,选择它
+- 如果未找到,进行步骤 2
+
+**2. 通过 DropOut 下载 Java:**
+- 设置 → Java → 下载 Java
+- 选择适当的版本:
+ - Java 8 用于 Minecraft 1.12.2 及更早版本
+ - Java 17 用于 Minecraft 1.18-1.20.4
+ - Java 21 用于 Minecraft 1.20.5+
+
+**3. 手动安装 Java:**
+- 从 [Adoptium](https://adoptium.net/) 下载
+- 安装到系统
+- 重启 DropOut
+- 再次检测
+
+### Java 版本错误
+
+**问题:** 游戏崩溃并提示"不支持的类文件版本"
+
+**解决方案:**
+将 Java 版本与 Minecraft 版本匹配:
+
+| Minecraft 版本 | Java 版本 |
+|-------------------|--------------|
+| 1.7.10 及更早 | Java 8 |
+| 1.8 - 1.12.2 | Java 8 |
+| 1.13 - 1.16.5 | Java 8 或 11 |
+| 1.17 - 1.17.1 | Java 16 |
+| 1.18 - 1.20.4 | Java 17 |
+| 1.20.5+ | Java 21 |
+
+### 内存不足错误
+
+**问题:** 游戏崩溃并显示 `java.lang.OutOfMemoryError`
+
+**解决方案:**
+
+**1. 增加内存分配:**
+- 设置 → 内存
+- 增加最大内存:
+ - 原版:最少 4GB
+ - 轻度模组:6GB
+ - 重度整合包:8-12GB
+- 不要超过系统 RAM 的 80%
+
+**2. 使用 64 位 Java:**
+- 检查当前 Java 架构
+- 如需要下载 64 位 Java
+- 32 位 Java 限制在约 2GB
+
+**3. 降低渲染距离:**
+- 游戏内视频设置
+- 将渲染距离降低到 8-12 区块
+
+**4. 优化 JVM 参数:**
+```bash
+-Xms4G -Xmx8G -XX:+UseG1GC -XX:+UnlockExperimentalVMOptions
+```
+
+### 游戏无法启动
+
+**问题:** 游戏不启动,没有错误消息
+
+**检查:**
+
+**1. 日志输出:**
+- 检查 DropOut 中的游戏控制台
+- 查找错误消息
+- 常见问题:
+ - 文件缺失
+ - 下载损坏
+ - 模组冲突
+
+**2. 验证文件:**
+- 删除版本文件夹
+- 重新下载版本
+- 在模组版本之前先尝试原版
+
+**3. 检查权限:**
+- 确保 DropOut 可以写入游戏目录
+- 检查文件夹权限
+- 在 Linux 上:`chmod -R 700 ~/.local/share/com.dropout.launcher`(仅当前用户可访问)
+
+## 下载问题
+
+### 下载失败
+
+**问题:** 资源或库下载失败
+
+**解决方案:**
+
+**1. 网络问题:**
+- 检查互联网连接
+- 禁用 VPN
+- 尝试不同的网络
+- 检查防火墙/杀毒软件
+
+**2. 恢复下载:**
+- DropOut 自动恢复中断的下载
+- 关闭并重新打开 DropOut
+- 下载应该继续
+
+**3. 清除下载缓存:**
+- 删除 libraries/assets 中的 `.part` 文件
+- 重新开始下载
+
+**4. 手动下载:**
+- 检查日志中失败的 URL
+- 手动下载文件
+- 放置在正确位置
+
+### 下载缓慢
+
+**问题:** 下载非常慢
+
+**解决方案:**
+
+**1. 调整线程数:**
+- 设置 → 下载
+- 尝试不同的线程数:
+ - 太低:整体较慢
+ - 太高:连接限流
+ - 推荐:5-10 个线程
+
+**2. 网络优化:**
+- 关闭占用大量带宽的应用
+- 如可能使用有线连接
+- 检查 ISP 限速
+
+**3. 备用 CDN:**
+- Mojang 镜像可能很慢
+- 尝试在一天中的不同时间
+
+## 模组加载器问题
+
+### Fabric 安装失败
+
+**问题:** 无法安装 Fabric 加载器
+
+**解决方案:**
+
+**1. 检查 Minecraft 版本:**
+- Fabric 支持 1.14+
+- 不支持更早版本
+- 尝试更新的 Minecraft 版本
+
+**2. 网络问题:**
+- 检查互联网连接
+- Fabric Meta API 可能宕机
+- 稍后再试
+
+**3. 手动安装:**
+- 从 [fabricmc.net](https://fabricmc.net/) 下载 Fabric
+- 使用官方安装器
+- 将配置文件导入 DropOut
+
+### Forge 安装失败
+
+**问题:** Forge 安装器失败或挂起
+
+**解决方案:**
+
+**1. Java 版本:**
+- 确保 Java 版本正确
+- Forge 1.17+ 需要 Java 16+
+- 更早的 Forge 可能需要 Java 8
+
+**2. 安装器超时:**
+- Forge 安装器可能很慢
+- 等待最多 10 分钟
+- 检查日志查看进度
+
+**3. 磁盘空间:**
+- 确保有足够的可用空间
+- Forge 临时需要约 1GB
+- 检查 Linux 上的 `/tmp`
+
+**4. 手动安装:**
+- 从 [minecraftforge.net](https://files.minecraftforge.net/) 下载 Forge 安装器
+- 手动运行安装器
+- 选择安装客户端
+- 导入配置文件
+
+### 模组崩溃
+
+**问题:** 安装模组后游戏崩溃
+
+**解决方案:**
+
+**1. 检查兼容性:**
+- 验证模组适用于正确的 Minecraft 版本
+- 检查模组加载器版本要求
+- 阅读模组说明了解依赖项
+
+**2. 安装依赖项:**
+- Fabric 模组通常需要 Fabric API
+- 一些模组需要库
+- 检查崩溃日志中的"缺失"错误
+
+**3. 移除冲突的模组:**
+- 逐一禁用模组
+- 识别有问题的模组
+- 检查已知冲突
+- 更新或替换模组
+
+**4. 更新模组:**
+- 使用最新的模组版本
+- 检查模组更新说明
+- 一些更新修复崩溃
+
+## 性能问题
+
+### 低 FPS
+
+**问题:** 游戏运行缓慢或卡顿
+
+**解决方案:**
+
+**1. 分配更多内存:**
+- 将最大内存增加到 6-8GB
+- 不要过度分配(导致 GC 暂停)
+
+**2. 安装性能模组:**
+- **Fabric**: Sodium、Lithium、Phosphor
+- **Forge**: OptiFine、Magnesium、Rubidium
+
+**3. 优化设置:**
+- 降低渲染距离
+- 禁用精美图形
+- 关闭粒子
+- 如果 fps < 60 禁用垂直同步
+
+**4. 更新显卡驱动:**
+- 从制造商下载最新版本
+- NVIDIA: GeForce Experience
+- AMD: Adrenalin
+- Intel: Graphics Command Center
+
+**5. 关闭后台应用:**
+- 释放系统资源
+- 禁用覆盖层(Discord 等)
+- 检查任务管理器中的 CPU/RAM 占用
+
+### 启动器启动缓慢
+
+**问题:** DropOut 启动时间很长
+
+**解决方案:**
+
+**1. 检查系统资源:**
+- 关闭不必要的程序
+- 确保有足够的 RAM 可用
+- 检查 CPU 使用率
+
+**2. 杀毒软件干扰:**
+- 将 DropOut 添加到例外
+- 暂时禁用以测试
+- 一些杀毒软件会显著减慢速度
+
+**3. 损坏的数据:**
+- 删除应用数据中的 `cache` 文件夹
+- 重启 DropOut
+- 将重建缓存
+
+## UI 问题
+
+### 窗口不打开
+
+**问题:** DropOut 窗口不出现
+
+**解决方案:**
+
+**1. 检查是否在运行:**
+```bash
+# Linux/macOS
+ps aux | grep dropout
+
+# Windows
+tasklist | findstr dropout
+```
+
+**2. 终止并重启:**
+```bash
+# Linux/macOS
+pkill dropout
+
+# Windows
+taskkill /F /IM dropout.exe
+```
+
+**3. 重置窗口位置:**
+- 删除窗口状态配置
+- 重启 DropOut
+
+### 图形故障
+
+**问题:** UI 看起来不对或有视觉伪影
+
+**解决方案:**
+
+**1. 更新显卡驱动:**
+- 安装最新驱动
+- 重启系统
+
+**2. 禁用硬件加速:**
+- 检查设置中是否存在选项
+- 可能会降低性能但修复故障
+
+**3. 尝试不同的显示器:**
+- 多显示器设置可能导致问题
+- 在不同显示器上尝试
+
+## 文件系统问题
+
+### 无法访问游戏目录
+
+**问题:** 访问游戏文件时出错
+
+**解决方案:**
+
+**1. 检查权限:**
+```bash
+# Linux
+chmod -R 700 ~/.local/share/com.dropout.launcher
+
+# macOS
+chmod -R 700 ~/Library/Application\ Support/com.dropout.launcher
+```
+
+**2. 检查磁盘空间:**
+- 确保有足够的可用空间
+- Minecraft 需要 2-10GB,取决于模组
+- 清理旧版本
+
+**3. 杀毒软件阻止:**
+- 将游戏目录添加到例外
+- 一些杀毒软件会阻止文件访问
+
+### 文件损坏
+
+**问题:** 文件似乎损坏或无效
+
+**解决方案:**
+
+**1. 验证校验和:**
+- DropOut 验证 SHA1/SHA256
+- 验证失败会触发重新下载
+
+**2. 重新下载:**
+- 删除损坏的文件
+- 再次启动版本
+- DropOut 将重新下载
+
+**3. 清除缓存:**
+- 完全删除版本文件夹
+- 从头重新安装
+
+## 获取更多帮助
+
+### 收集调试信息
+
+报告问题时,包括:
+
+**1. 系统信息:**
+- 操作系统和版本
+- DropOut 版本
+- Java 版本
+
+**2. 日志:**
+- 控制台的启动器日志
+- 如适用的游戏日志
+- 错误消息(完整文本)
+
+**3. 重现步骤:**
+- 你做了什么
+- 你期望什么
+- 实际发生了什么
+
+**4. 截图:**
+- 错误消息
+- UI 问题
+- 设置屏幕
+
+### 报告问题
+
+1. 搜索[现有 issues](https://github.com/HydroRoll-Team/DropOut/issues)
+2. 如果未找到,[创建新 issue](https://github.com/HydroRoll-Team/DropOut/issues/new)
+3. 使用 issue 模板
+4. 提供所有要求的信息
+5. 保持耐心和响应
+
+### 社区支持
+
+- **GitHub 讨论**:提问
+- **Discord**:实时帮助(如果可用)
+- **文档**:查看所有指南
+
+## 已知问题
+
+### 目前正在处理
+
+- 多账户切换(进行中)
+- 自定义游戏目录选择(计划中)
+- 启动器自动更新(计划中)
+
+### 可用的变通方法
+
+**问题**:无法轻松切换账户
+**变通方法**:退出登录并使用不同账户登录
+
+**问题**:没有内置模组管理器
+**变通方法**:在实例文件夹中手动管理模组
+
+**问题**:无法从其他启动器导入
+**变通方法**:手动复制实例文件
diff --git a/packages/docs/package.json b/packages/docs/package.json
new file mode 100644
index 00000000..18a5bf32
--- /dev/null
+++ b/packages/docs/package.json
@@ -0,0 +1,39 @@
+{
+ "name": "@dropout/docs",
+ "private": true,
+ "type": "module",
+ "scripts": {
+ "build": "react-router build",
+ "dev": "react-router dev",
+ "start": "react-router-serve ./build/server/index.js",
+ "types:check": "react-router typegen && fumadocs-mdx && tsc --noEmit",
+ "postinstall": "fumadocs-mdx",
+ "lint": "biome check",
+ "format": "biome format --write"
+ },
+ "dependencies": {
+ "@react-router/node": "^7.12.0",
+ "@react-router/serve": "^7.12.0",
+ "fumadocs-core": "16.4.7",
+ "fumadocs-mdx": "14.2.6",
+ "fumadocs-ui": "16.4.7",
+ "isbot": "^5.1.32",
+ "react": "^19.2.3",
+ "react-dom": "^19.2.3",
+ "react-router": "^7.12.0"
+ },
+ "devDependencies": {
+ "@react-router/dev": "^7.12.0",
+ "@tailwindcss/vite": "^4.1.18",
+ "@types/mdx": "^2.0.13",
+ "@types/node": "^25.0.5",
+ "@types/react": "^19.2.8",
+ "@types/react-dom": "^19.2.3",
+ "react-router-devtools": "^6.1.0",
+ "tailwindcss": "^4.1.18",
+ "typescript": "^5.9.3",
+ "vite": "^7.3.1",
+ "vite-tsconfig-paths": "^6.0.4",
+ "@biomejs/biome": "^2.3.11"
+ }
+}
diff --git a/packages/docs/public/favicon.ico b/packages/docs/public/favicon.ico
new file mode 100644
index 00000000..be3c2851
Binary files /dev/null and b/packages/docs/public/favicon.ico differ
diff --git a/packages/docs/public/image.png b/packages/docs/public/image.png
new file mode 100644
index 00000000..5bd52e13
Binary files /dev/null and b/packages/docs/public/image.png differ
diff --git a/packages/docs/react-router.config.ts b/packages/docs/react-router.config.ts
new file mode 100644
index 00000000..51e89677
--- /dev/null
+++ b/packages/docs/react-router.config.ts
@@ -0,0 +1,5 @@
+import type { Config } from '@react-router/dev/config';
+
+export default {
+ ssr: true,
+} satisfies Config;
diff --git a/packages/docs/source.config.ts b/packages/docs/source.config.ts
new file mode 100644
index 00000000..d67a91b0
--- /dev/null
+++ b/packages/docs/source.config.ts
@@ -0,0 +1,7 @@
+import { defineConfig, defineDocs } from 'fumadocs-mdx/config';
+
+export const docs = defineDocs({
+ dir: 'content',
+});
+
+export default defineConfig();
diff --git a/packages/docs/tsconfig.json b/packages/docs/tsconfig.json
new file mode 100644
index 00000000..717253df
--- /dev/null
+++ b/packages/docs/tsconfig.json
@@ -0,0 +1,23 @@
+{
+ "include": ["**/*", "**/.server/**/*", "**/.client/**/*", ".react-router/types/**/*"],
+ "compilerOptions": {
+ "lib": ["DOM", "DOM.Iterable", "ES2022"],
+ "types": ["node", "vite/client"],
+ "target": "esnext",
+ "module": "esnext",
+ "moduleResolution": "bundler",
+ "jsx": "react-jsx",
+ "rootDirs": [".", "./.react-router/types"],
+ "baseUrl": ".",
+ "paths": {
+ "@/*": ["./app/*"],
+ "fumadocs-mdx:collections/*": [".source/*"]
+ },
+ "esModuleInterop": true,
+ "verbatimModuleSyntax": true,
+ "noEmit": true,
+ "resolveJsonModule": true,
+ "skipLibCheck": true,
+ "strict": true
+ }
+}
diff --git a/packages/docs/vite.config.ts b/packages/docs/vite.config.ts
new file mode 100644
index 00000000..f408dc5f
--- /dev/null
+++ b/packages/docs/vite.config.ts
@@ -0,0 +1,17 @@
+import { reactRouter } from '@react-router/dev/vite';
+import tailwindcss from '@tailwindcss/vite';
+import { defineConfig } from 'vite';
+import tsconfigPaths from 'vite-tsconfig-paths';
+import mdx from 'fumadocs-mdx/vite';
+import * as MdxConfig from './source.config';
+
+export default defineConfig({
+ plugins: [
+ mdx(MdxConfig),
+ tailwindcss(),
+ reactRouter(),
+ tsconfigPaths({
+ root: __dirname,
+ }),
+ ],
+});
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 91232c91..d6ff4896 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -34,6 +34,73 @@ importers:
specifier: ^4.21.0
version: 4.21.0
+ packages/docs:
+ dependencies:
+ '@react-router/node':
+ specifier: ^7.12.0
+ version: 7.12.0(react-router@7.12.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(typescript@5.9.3)
+ '@react-router/serve':
+ specifier: ^7.12.0
+ version: 7.12.0(react-router@7.12.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(typescript@5.9.3)
+ fumadocs-core:
+ specifier: 16.4.7
+ version: 16.4.7(@types/react@19.2.8)(lucide-react@0.562.0(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react-router@7.12.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react@19.2.3)(zod@4.3.5)
+ fumadocs-mdx:
+ specifier: 14.2.6
+ version: 14.2.6(@types/react@19.2.8)(fumadocs-core@16.4.7(@types/react@19.2.8)(lucide-react@0.562.0(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react-router@7.12.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react@19.2.3)(zod@4.3.5))(react@19.2.3)(rolldown-vite@7.2.5(@types/node@25.0.9)(jiti@2.6.1)(tsx@4.21.0))
+ fumadocs-ui:
+ specifier: 16.4.7
+ version: 16.4.7(@types/react-dom@19.2.3(@types/react@19.2.8))(@types/react@19.2.8)(fumadocs-core@16.4.7(@types/react@19.2.8)(lucide-react@0.562.0(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react-router@7.12.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react@19.2.3)(zod@4.3.5))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(tailwindcss@4.1.18)
+ isbot:
+ specifier: ^5.1.32
+ version: 5.1.33
+ react:
+ specifier: ^19.2.3
+ version: 19.2.3
+ react-dom:
+ specifier: ^19.2.3
+ version: 19.2.3(react@19.2.3)
+ react-router:
+ specifier: ^7.12.0
+ version: 7.12.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ devDependencies:
+ '@biomejs/biome':
+ specifier: ^2.3.11
+ version: 2.3.11
+ '@react-router/dev':
+ specifier: ^7.12.0
+ version: 7.12.0(@react-router/serve@7.12.0(react-router@7.12.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(typescript@5.9.3))(@types/node@25.0.9)(jiti@2.6.1)(react-router@7.12.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(rolldown-vite@7.2.5(@types/node@25.0.9)(jiti@2.6.1)(tsx@4.21.0))(tsx@4.21.0)(typescript@5.9.3)
+ '@tailwindcss/vite':
+ specifier: ^4.1.18
+ version: 4.1.18(rolldown-vite@7.2.5(@types/node@25.0.9)(jiti@2.6.1)(tsx@4.21.0))
+ '@types/mdx':
+ specifier: ^2.0.13
+ version: 2.0.13
+ '@types/node':
+ specifier: ^25.0.5
+ version: 25.0.9
+ '@types/react':
+ specifier: ^19.2.8
+ version: 19.2.8
+ '@types/react-dom':
+ specifier: ^19.2.3
+ version: 19.2.3(@types/react@19.2.8)
+ react-router-devtools:
+ specifier: ^6.1.0
+ version: 6.2.0(@types/react-dom@19.2.3(@types/react@19.2.8))(@types/react@19.2.8)(csstype@3.2.3)(react-dom@19.2.3(react@19.2.3))(react-router@7.12.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react@19.2.3)(rolldown-vite@7.2.5(@types/node@25.0.9)(jiti@2.6.1)(tsx@4.21.0))(solid-js@1.9.10)
+ tailwindcss:
+ specifier: ^4.1.18
+ version: 4.1.18
+ typescript:
+ specifier: ^5.9.3
+ version: 5.9.3
+ vite:
+ specifier: npm:rolldown-vite@^7
+ version: rolldown-vite@7.2.5(@types/node@25.0.9)(jiti@2.6.1)(tsx@4.21.0)
+ vite-tsconfig-paths:
+ specifier: ^6.0.4
+ version: 6.0.4(rolldown-vite@7.2.5(@types/node@25.0.9)(jiti@2.6.1)(tsx@4.21.0))(typescript@5.9.3)
+
packages/ui:
dependencies:
'@tauri-apps/api':
@@ -106,6 +173,139 @@ importers:
packages:
+ '@babel/code-frame@7.28.6':
+ resolution: {integrity: sha512-JYgintcMjRiCvS8mMECzaEn+m3PfoQiyqukOMCCVQtoJGYJw8j/8LBJEiqkHLkfwCcs74E3pbAUFNg7d9VNJ+Q==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/compat-data@7.28.6':
+ resolution: {integrity: sha512-2lfu57JtzctfIrcGMz992hyLlByuzgIk58+hhGCxjKZ3rWI82NnVLjXcaTqkI2NvlcvOskZaiZ5kjUALo3Lpxg==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/core@7.28.6':
+ resolution: {integrity: sha512-H3mcG6ZDLTlYfaSNi0iOKkigqMFvkTKlGUYlD8GW7nNOYRrevuA46iTypPyv+06V3fEmvvazfntkBU34L0azAw==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/generator@7.28.6':
+ resolution: {integrity: sha512-lOoVRwADj8hjf7al89tvQ2a1lf53Z+7tiXMgpZJL3maQPDxh0DgLMN62B2MKUOFcoodBHLMbDM6WAbKgNy5Suw==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-annotate-as-pure@7.27.3':
+ resolution: {integrity: sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-compilation-targets@7.28.6':
+ resolution: {integrity: sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-create-class-features-plugin@7.28.6':
+ resolution: {integrity: sha512-dTOdvsjnG3xNT9Y0AUg1wAl38y+4Rl4sf9caSQZOXdNqVn+H+HbbJ4IyyHaIqNR6SW9oJpA/RuRjsjCw2IdIow==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+
+ '@babel/helper-globals@7.28.0':
+ resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-member-expression-to-functions@7.28.5':
+ resolution: {integrity: sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-module-imports@7.28.6':
+ resolution: {integrity: sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-module-transforms@7.28.6':
+ resolution: {integrity: sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+
+ '@babel/helper-optimise-call-expression@7.27.1':
+ resolution: {integrity: sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-plugin-utils@7.28.6':
+ resolution: {integrity: sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-replace-supers@7.28.6':
+ resolution: {integrity: sha512-mq8e+laIk94/yFec3DxSjCRD2Z0TAjhVbEJY3UQrlwVo15Lmt7C2wAUbK4bjnTs4APkwsYLTahXRraQXhb1WCg==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+
+ '@babel/helper-skip-transparent-expression-wrappers@7.27.1':
+ resolution: {integrity: sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==}
+ 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.6':
+ resolution: {integrity: sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/parser@7.28.6':
+ resolution: {integrity: sha512-TeR9zWR18BvbfPmGbLampPMW+uW1NZnJlRuuHso8i87QZNq2JRF9i6RgxRqtEq+wQGsS19NNTWr2duhnE49mfQ==}
+ engines: {node: '>=6.0.0'}
+ hasBin: true
+
+ '@babel/plugin-syntax-jsx@7.28.6':
+ resolution: {integrity: sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-syntax-typescript@7.28.6':
+ resolution: {integrity: sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-transform-modules-commonjs@7.28.6':
+ resolution: {integrity: sha512-jppVbf8IV9iWWwWTQIxJMAJCWBuuKx71475wHwYytrRGQ2CWiDvYlADQno3tcYpS/T2UUWFQp3nVtYfK/YBQrA==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-transform-typescript@7.28.6':
+ resolution: {integrity: sha512-0YWL2RFxOqEm9Efk5PvreamxPME8OyY0wM5wh5lHjF+VtVhdneCWGzZeSqzOfiobVqQaNCd2z0tQvnI9DaPWPw==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/preset-typescript@7.28.5':
+ resolution: {integrity: sha512-+bQy5WOI2V6LJZpPVxY+yp66XdZ2yifu0Mc1aP5CQKgjn4QM5IN2i5fAZ4xKop47pr8rpVhiAeu+nDQa12C8+g==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/runtime@7.28.6':
+ resolution: {integrity: sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/template@7.28.6':
+ resolution: {integrity: sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/traverse@7.28.6':
+ resolution: {integrity: sha512-fgWX62k02qtjqdSNTAGxmKYY/7FSL9WAS1o2Hu5+I5m9T0yxZzr4cnrfXQ/MX0rIifthCSs6FKTlzYbJcPtMNg==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/types@7.28.6':
+ resolution: {integrity: sha512-0ZrskXVEHSWIqZM/sQZ4EV3jZJXRkio/WCxaqKZP1g//CEWEPSfeZFcms4XeKBCHU0ZKnIkdJeU/kF+eRp5lBg==}
+ engines: {node: '>=6.9.0'}
+
'@biomejs/biome@2.3.11':
resolution: {integrity: sha512-/zt+6qazBWguPG6+eWmiELqO+9jRsMZ/DBU3lfuU2ngtIQYzymocHhKiZRyrbra4aCOoyTg/BmY+6WH5mv9xmQ==}
engines: {node: '>=14.21.3'}
@@ -159,6 +359,12 @@ packages:
cpu: [x64]
os: [win32]
+ '@bkrem/react-transition-group@1.3.5':
+ resolution: {integrity: sha512-lbBYhC42sxAeFEopxzd9oWdkkV0zirO5E9WyeOBxOrpXsf7m30Aj8vnbayZxFOwD9pvUQ2Pheb1gO79s0Qap3Q==}
+ peerDependencies:
+ react: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
+ react-dom: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
+
'@emnapi/core@1.8.1':
resolution: {integrity: sha512-AvT9QFpxK0Zd8J0jopedNm+w/2fIzvtPKPjqyw9jwvBaReTTqPBk9Hixaz7KbjimP+QNz605/XnjFcDAL2pqBg==}
@@ -324,6 +530,44 @@ packages:
cpu: [x64]
os: [win32]
+ '@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==}
+
+ '@formatjs/fast-memoize@3.0.3':
+ resolution: {integrity: sha512-CArYtQKGLAOruCMeq5/RxCg6vUXFx3OuKBdTm30Wn/+gCefehmZ8Y2xSMxMrO2iel7hRyE3HKfV56t3vAU6D4Q==}
+
+ '@formatjs/intl-localematcher@0.7.5':
+ resolution: {integrity: sha512-7/nd90cn5CT7SVF71/ybUKAcnvBlr9nZlJJp8O8xIZHXFgYOC4SXExZlSdgHv2l6utjw1byidL06QzChvQMHwA==}
+
+ '@fumadocs/ui@16.4.7':
+ resolution: {integrity: sha512-NnkMIN5BzBRh2OzA9rp2SgbGEkEwfCfq0sE4vq2n+GkIDIggicGYUNgSl2gtIBQsKYKP/a4/0wrkQKdq4eUJlw==}
+ peerDependencies:
+ '@types/react': '*'
+ fumadocs-core: 16.4.7
+ next: 16.x.x
+ react: ^19.2.0
+ react-dom: ^19.2.0
+ tailwindcss: ^4.0.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ next:
+ optional: true
+ tailwindcss:
+ optional: true
+
'@isaacs/balanced-match@4.0.1':
resolution: {integrity: sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==}
engines: {node: 20 || >=22}
@@ -353,9 +597,19 @@ packages:
'@jridgewell/trace-mapping@0.3.31':
resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==}
+ '@mdx-js/mdx@3.1.1':
+ resolution: {integrity: sha512-f6ZO2ifpwAQIpzGWaBQT2TXxPv6z3RBzQKpVftEWN78Vl/YweF1uwussDx8ECAXVtr3Rs89fKyG9YlzUs9DyGQ==}
+
+ '@mjackson/node-fetch-server@0.2.0':
+ resolution: {integrity: sha512-EMlH1e30yzmTpGLQjlFmaDAjyOeZhng1/XCd7DExR8PNAnG/G1tyruZxEoUe11ClnwGhGrtsdnyyUx1frSzjng==}
+
'@napi-rs/wasm-runtime@1.1.1':
resolution: {integrity: sha512-p64ah1M1ld8xjWv3qbvFwHiFVWrq1yFvV4f7w+mzaqiR4IlSgkqhcRdHwsGgomwzBH51sRY4NEowLxnaBjcW/A==}
+ '@orama/orama@3.1.18':
+ resolution: {integrity: sha512-a61ljmRVVyG5MC/698C8/FfFDw5a8LOIvyOLW5fztgUXqUpc1jOfQzOitSCbge657OgXXThmY3Tk8fpiDb4UcA==}
+ engines: {node: '>= 20.0.0'}
+
'@oxc-project/runtime@0.97.0':
resolution: {integrity: sha512-yH0zw7z+jEws4dZ4IUKoix5Lh3yhqIJWF9Dc8PWvhpo7U7O+lJrv7ZZL4BeRO0la8LBQFwcCewtLBnVV7hPe/w==}
engines: {node: ^20.19.0 || >=22.12.0}
@@ -443,6 +697,426 @@ packages:
cpu: [x64]
os: [win32]
+ '@radix-ui/number@1.1.1':
+ resolution: {integrity: sha512-MkKCwxlXTgz6CFoJx3pCwn07GKp36+aZyu/u2Ln2VrA5DcdyCZkASEDBTd8x5whTQQL5CiYf4prXKLcgQdv29g==}
+
+ '@radix-ui/primitive@1.1.3':
+ resolution: {integrity: sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg==}
+
+ '@radix-ui/react-accordion@1.2.12':
+ resolution: {integrity: sha512-T4nygeh9YE9dLRPhAHSeOZi7HBXo+0kYIPJXayZfvWOWA0+n3dESrZbjfDPUABkUNym6Hd+f2IR113To8D2GPA==}
+ 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-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
+
+ '@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
+
+ '@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
+
+ '@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
+
+ '@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
+
+ '@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-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-navigation-menu@1.2.14':
+ resolution: {integrity: sha512-YB9mTFQvCOAQMHU+C/jVl96WmuWeltyUEpRJJky51huhds5W2FQr1J8D/16sQlf0ozxkPK8uF3niQMdUwZPv5w==}
+ 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-popover@1.1.15':
+ resolution: {integrity: sha512-kr0X2+6Yy/vJzLYJUPCZEc8SfQcf+1COFoAqauJm74umQhta9M7lNJHP7QQS3vkvcGLQUbWpMzwrXYwrYztHKA==}
+ 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-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-scroll-area@1.2.10':
+ resolution: {integrity: sha512-tAXIa1g3sM5CGpVT0uIbUx/U3Gs5N8T52IICuCtObaos1S8fzsrPXG5WObkQN3S6NVl6wKgPhAIiBGbWnvc97A==}
+ 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
+
+ '@radix-ui/react-tabs@1.1.13':
+ resolution: {integrity: sha512-7xdcatg7/U+7+Udyoj2zodtI9H/IIopqo+YOIcZOq1nJwXWBZ9p8xiu5llXlekDbZkca79a/fozEYQXIA4sW6A==}
+ 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-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
+
+ '@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
+
+ '@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
+
+ '@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
+
+ '@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
+
+ '@radix-ui/react-use-previous@1.1.1':
+ resolution: {integrity: sha512-2dHfToCj/pzca2Ck724OZ5L0EVrr3eHRNsG/b3xQJLA2hZpVCS99bLAX+hm1IHXDEnzU6by5z/5MIY794/a8NQ==}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+
+ '@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
+
+ '@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
+
+ '@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
+
+ '@radix-ui/rect@1.1.1':
+ resolution: {integrity: sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==}
+
+ '@react-router/dev@7.12.0':
+ resolution: {integrity: sha512-5GpwXgq4pnOVeG7l6ADkCHA1rthJus1q/A3NRYJAIypclUQDYAzg1/fDNjvaKuTSrq+Nr3u6aj2v+oC+47MX6g==}
+ engines: {node: '>=20.0.0'}
+ hasBin: true
+ peerDependencies:
+ '@react-router/serve': ^7.12.0
+ '@vitejs/plugin-rsc': ~0.5.7
+ react-router: ^7.12.0
+ react-server-dom-webpack: ^19.2.3
+ typescript: ^5.1.0
+ vite: ^5.1.0 || ^6.0.0 || ^7.0.0
+ wrangler: ^3.28.2 || ^4.0.0
+ peerDependenciesMeta:
+ '@react-router/serve':
+ optional: true
+ '@vitejs/plugin-rsc':
+ optional: true
+ react-server-dom-webpack:
+ optional: true
+ typescript:
+ optional: true
+ wrangler:
+ optional: true
+
+ '@react-router/express@7.12.0':
+ resolution: {integrity: sha512-uAK+zF93M6XauGeXLh/UBh+3HrwiA/9lUS+eChjQ0a5FzjLpsc6ciUqF5oHh3lwWzLU7u7tj4qoeucUn6SInTw==}
+ engines: {node: '>=20.0.0'}
+ peerDependencies:
+ express: ^4.17.1 || ^5
+ react-router: 7.12.0
+ typescript: ^5.1.0
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ '@react-router/node@7.12.0':
+ resolution: {integrity: sha512-o/t10Cse4LK8kFefqJ8JjC6Ng6YuKD2I87S2AiJs17YAYtXU5W731ZqB73AWyCDd2G14R0dSuqXiASRNK/xLjg==}
+ engines: {node: '>=20.0.0'}
+ peerDependencies:
+ react-router: 7.12.0
+ typescript: ^5.1.0
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ '@react-router/serve@7.12.0':
+ resolution: {integrity: sha512-j1ltgU7s3wAwOosZ5oxgHSsmVyK706gY/yIs8qVmC239wQ3zr3eqaXk3TVVLMeRy+eDgPNmgc6oNJv2o328VgA==}
+ engines: {node: '>=20.0.0'}
+ hasBin: true
+ peerDependencies:
+ react-router: 7.12.0
+
+ '@remix-run/node-fetch-server@0.9.0':
+ resolution: {integrity: sha512-SoLMv7dbH+njWzXnOY6fI08dFMI5+/dQ+vY3n8RnnbdG7MdJEgiP28Xj/xWlnRnED/aB6SFw56Zop+LbmaaKqA==}
+
'@rolldown/binding-android-arm64@1.0.0-beta.50':
resolution: {integrity: sha512-XlEkrOIHLyGT3avOgzfTFSjG+f+dZMw+/qd+Y3HLN86wlndrB/gSimrJCk4gOhr1XtRtEKfszpadI3Md4Z4/Ag==}
engines: {node: ^20.19.0 || >=22.12.0}
@@ -529,14 +1203,84 @@ packages:
'@rolldown/pluginutils@1.0.0-beta.50':
resolution: {integrity: sha512-5e76wQiQVeL1ICOZVUg4LSOVYg9jyhGCin+icYozhsUzM+fHE7kddi1bdiE0jwVqTfkjba3jUFbEkoC9WkdvyA==}
- '@sindresorhus/is@4.6.0':
- resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==}
- engines: {node: '>=10'}
-
- '@sveltejs/acorn-typescript@1.0.8':
- resolution: {integrity: sha512-esgN+54+q0NjB0Y/4BomT9samII7jGwNy/2a3wNZbT2A2RpmXsXwUt24LvLhx6jUq2gVk4cWEvcRO6MFQbOfNA==}
- peerDependencies:
- acorn: ^8.9.0
+ '@rollup/rollup-darwin-arm64@4.55.2':
+ resolution: {integrity: sha512-UCbaTklREjrc5U47ypLulAgg4njaqfOVLU18VrCrI+6E5MQjuG0lSWaqLlAJwsD7NpFV249XgB0Bi37Zh5Sz4g==}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@rollup/rollup-linux-x64-gnu@4.55.2':
+ resolution: {integrity: sha512-1e30XAuaBP1MAizaOBApsgeGZge2/Byd6wV4a8oa6jPdHELbRHBiw7wvo4dp7Ie2PE8TZT4pj9RLGZv9N4qwlw==}
+ cpu: [x64]
+ os: [linux]
+
+ '@shikijs/core@3.21.0':
+ resolution: {integrity: sha512-AXSQu/2n1UIQekY8euBJlvFYZIw0PHY63jUzGbrOma4wPxzznJXTXkri+QcHeBNaFxiiOljKxxJkVSoB3PjbyA==}
+
+ '@shikijs/engine-javascript@3.21.0':
+ resolution: {integrity: sha512-ATwv86xlbmfD9n9gKRiwuPpWgPENAWCLwYCGz9ugTJlsO2kOzhOkvoyV/UD+tJ0uT7YRyD530x6ugNSffmvIiQ==}
+
+ '@shikijs/engine-oniguruma@3.21.0':
+ resolution: {integrity: sha512-OYknTCct6qiwpQDqDdf3iedRdzj6hFlOPv5hMvI+hkWfCKs5mlJ4TXziBG9nyabLwGulrUjHiCq3xCspSzErYQ==}
+
+ '@shikijs/langs@3.21.0':
+ resolution: {integrity: sha512-g6mn5m+Y6GBJ4wxmBYqalK9Sp0CFkUqfNzUy2pJglUginz6ZpWbaWjDB4fbQ/8SHzFjYbtU6Ddlp1pc+PPNDVA==}
+
+ '@shikijs/rehype@3.21.0':
+ resolution: {integrity: sha512-fTQvwsZL67QdosMFdTgQ5SNjW3nxaPplRy//312hqOctRbIwviTV0nAbhv3NfnztHXvFli2zLYNKsTz/f9tbpQ==}
+
+ '@shikijs/themes@3.21.0':
+ resolution: {integrity: sha512-BAE4cr9EDiZyYzwIHEk7JTBJ9CzlPuM4PchfcA5ao1dWXb25nv6hYsoDiBq2aZK9E3dlt3WB78uI96UESD+8Mw==}
+
+ '@shikijs/transformers@3.21.0':
+ resolution: {integrity: sha512-CZwvCWWIiRRiFk9/JKzdEooakAP8mQDtBOQ1TKiCaS2E1bYtyBCOkUzS8akO34/7ufICQ29oeSfkb3tT5KtrhA==}
+
+ '@shikijs/types@3.21.0':
+ resolution: {integrity: sha512-zGrWOxZ0/+0ovPY7PvBU2gIS9tmhSUUt30jAcNV0Bq0gb2S98gwfjIs1vxlmH5zM7/4YxLamT6ChlqqAJmPPjA==}
+
+ '@shikijs/vscode-textmate@10.0.2':
+ resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==}
+
+ '@sindresorhus/is@4.6.0':
+ resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==}
+ engines: {node: '>=10'}
+
+ '@solid-primitives/event-listener@2.4.3':
+ resolution: {integrity: sha512-h4VqkYFv6Gf+L7SQj+Y6puigL/5DIi7x5q07VZET7AWcS+9/G3WfIE9WheniHWJs51OEkRB43w6lDys5YeFceg==}
+ peerDependencies:
+ solid-js: ^1.6.12
+
+ '@solid-primitives/keyboard@1.3.3':
+ resolution: {integrity: sha512-9dQHTTgLBqyAI7aavtO+HnpTVJgWQA1ghBSrmLtMu1SMxLPDuLfuNr+Tk5udb4AL4Ojg7h9JrKOGEEDqsJXWJA==}
+ peerDependencies:
+ solid-js: ^1.6.12
+
+ '@solid-primitives/resize-observer@2.1.3':
+ resolution: {integrity: sha512-zBLje5E06TgOg93S7rGPldmhDnouNGhvfZVKOp+oG2XU8snA+GoCSSCz1M+jpNAg5Ek2EakU5UVQqL152WmdXQ==}
+ peerDependencies:
+ solid-js: ^1.6.12
+
+ '@solid-primitives/rootless@1.5.2':
+ resolution: {integrity: sha512-9HULb0QAzL2r47CCad0M+NKFtQ+LrGGNHZfteX/ThdGvKIg2o2GYhBooZubTCd/RTu2l2+Nw4s+dEfiDGvdrrQ==}
+ peerDependencies:
+ solid-js: ^1.6.12
+
+ '@solid-primitives/static-store@0.1.2':
+ resolution: {integrity: sha512-ReK+5O38lJ7fT+L6mUFvUr6igFwHBESZF+2Ug842s7fvlVeBdIVEdTCErygff6w7uR6+jrr7J8jQo+cYrEq4Iw==}
+ peerDependencies:
+ solid-js: ^1.6.12
+
+ '@solid-primitives/utils@6.3.2':
+ resolution: {integrity: sha512-hZ/M/qr25QOCcwDPOHtGjxTD8w2mNyVAYvcfgwzBHq2RwNqHNdDNsMZYap20+ruRwW4A3Cdkczyoz0TSxLCAPQ==}
+ peerDependencies:
+ solid-js: ^1.6.12
+
+ '@standard-schema/spec@1.1.0':
+ resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==}
+
+ '@sveltejs/acorn-typescript@1.0.8':
+ resolution: {integrity: sha512-esgN+54+q0NjB0Y/4BomT9samII7jGwNy/2a3wNZbT2A2RpmXsXwUt24LvLhx6jUq2gVk4cWEvcRO6MFQbOfNA==}
+ peerDependencies:
+ acorn: ^8.9.0
'@sveltejs/vite-plugin-svelte-inspector@5.0.2':
resolution: {integrity: sha512-TZzRTcEtZffICSAoZGkPSl6Etsj2torOVrx6Uw0KpXxrec9Gg6jFWQ60Q3+LmNGfZSxHRCZL7vXVZIWmuV50Ig==}
@@ -643,6 +1387,45 @@ packages:
peerDependencies:
vite: ^5.2.0 || ^6 || ^7
+ '@tanstack/devtools-client@0.0.5':
+ resolution: {integrity: sha512-hsNDE3iu4frt9cC2ppn1mNRnLKo2uc1/1hXAyY9z4UYb+o40M2clFAhiFoo4HngjfGJDV3x18KVVIq7W4Un+zA==}
+ engines: {node: '>=18'}
+
+ '@tanstack/devtools-event-bus@0.4.0':
+ resolution: {integrity: sha512-1t+/csFuDzi+miDxAOh6Xv7VDE80gJEItkTcAZLjV5MRulbO/W8ocjHLI2Do/p2r2/FBU0eKCRTpdqvXaYoHpQ==}
+ engines: {node: '>=18'}
+
+ '@tanstack/devtools-event-client@0.4.0':
+ resolution: {integrity: sha512-RPfGuk2bDZgcu9bAJodvO2lnZeHuz4/71HjZ0bGb/SPg8+lyTA+RLSKQvo7fSmPSi8/vcH3aKQ8EM9ywf1olaw==}
+ engines: {node: '>=18'}
+
+ '@tanstack/devtools-ui@0.4.4':
+ resolution: {integrity: sha512-5xHXFyX3nom0UaNfiOM92o6ziaHjGo3mcSGe2HD5Xs8dWRZNpdZ0Smd0B9ddEhy0oB+gXyMzZgUJb9DmrZV0Mg==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ solid-js: '>=1.9.7'
+
+ '@tanstack/devtools-vite@0.4.1':
+ resolution: {integrity: sha512-PkMOomcWnl/pUkCqIjqL/csjPHtkMVBirDpJVOZR7XJZDxo5CuD7B+3KsujFCF4Dsn6QYlae97gCZvxi/CB76Q==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ vite: ^6.0.0 || ^7.0.0
+
+ '@tanstack/devtools@0.10.3':
+ resolution: {integrity: sha512-M2HnKtaNf3Z8JDTNDq+X7/1gwOqSwTnCyC0GR+TYiRZM9mkY9GpvTqp6p6bx3DT8onu2URJiVxgHD9WK2e3MNQ==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ solid-js: '>=1.9.7'
+
+ '@tanstack/react-devtools@0.9.2':
+ resolution: {integrity: sha512-JNXvBO3jgq16GzTVm7p65n5zHNfMhnqF6Bm7CawjoqZrjEakxbM6Yvy63aKSIpbrdf+Wun2Xn8P0qD+vp56e1g==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ '@types/react': '>=16.8'
+ '@types/react-dom': '>=16.8'
+ react: '>=16.8'
+ react-dom: '>=16.8'
+
'@tauri-apps/api@2.9.1':
resolution: {integrity: sha512-IGlhP6EivjXHepbBic618GOmiWe4URJiIeZFlB7x3czM0yDHHYviH1Xvoiv4FefdkQtn6v7TuwWCRfOGdnVUGw==}
@@ -732,24 +1515,91 @@ packages:
'@tybys/wasm-util@0.10.1':
resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==}
+ '@types/d3-hierarchy@1.1.11':
+ resolution: {integrity: sha512-lnQiU7jV+Gyk9oQYk0GGYccuexmQPTp08E0+4BidgFdiJivjEvf+esPSdZqCZ2C7UwTWejWpqetVaU8A+eX3FA==}
+
+ '@types/debug@4.1.12':
+ resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==}
+
+ '@types/estree-jsx@1.0.5':
+ resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==}
+
'@types/estree@1.0.8':
resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==}
+ '@types/hast@3.0.4':
+ resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==}
+
+ '@types/mdast@4.0.4':
+ resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==}
+
+ '@types/mdx@2.0.13':
+ resolution: {integrity: sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==}
+
+ '@types/ms@2.1.0':
+ resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==}
+
'@types/node@24.10.9':
resolution: {integrity: sha512-ne4A0IpG3+2ETuREInjPNhUGis1SFjv1d5asp8MzEAGtOZeTeHVDOYqOgqfhvseqg/iXty2hjBf1zAOb7RNiNw==}
+ '@types/node@25.0.9':
+ resolution: {integrity: sha512-/rpCXHlCWeqClNBwUhDcusJxXYDjZTyE8v5oTO7WbL8eij2nKhUeU89/6xgjU7N4/Vh3He0BtyhJdQbDyhiXAw==}
+
'@types/prismjs@1.26.5':
resolution: {integrity: sha512-AUZTa7hQ2KY5L7AmtSiqxlhWxb4ina0yd8hNbl4TWuqnv/pFP0nDMb3YrfSBf4hJVGLh2YEIBfKaBW/9UEl6IQ==}
+ '@types/react-dom@19.2.3':
+ resolution: {integrity: sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==}
+ peerDependencies:
+ '@types/react': ^19.2.0
+
+ '@types/react@19.2.8':
+ resolution: {integrity: sha512-3MbSL37jEchWZz2p2mjntRZtPt837ij10ApxKfgmXCTuHWagYg7iA5bqPw6C8BMPfwidlvfPI/fxOc42HLhcyg==}
+
+ '@types/unist@2.0.11':
+ resolution: {integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==}
+
+ '@types/unist@3.0.3':
+ resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==}
+
+ '@ungap/structured-clone@1.3.0':
+ resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==}
+
+ accepts@1.3.8:
+ resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==}
+ engines: {node: '>= 0.6'}
+
+ acorn-jsx@5.3.2:
+ resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
+ peerDependencies:
+ acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
+
acorn@8.15.0:
resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==}
engines: {node: '>=0.4.0'}
hasBin: true
+ arg@5.0.2:
+ resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==}
+
+ argparse@2.0.1:
+ resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
+
+ aria-hidden@1.2.6:
+ resolution: {integrity: sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA==}
+ engines: {node: '>=10'}
+
aria-query@5.3.2:
resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==}
engines: {node: '>= 0.4'}
+ array-flatten@1.1.1:
+ resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==}
+
+ astring@1.9.0:
+ resolution: {integrity: sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==}
+ hasBin: true
+
asynckit@0.4.0:
resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==}
@@ -770,42 +1620,127 @@ packages:
resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==}
engines: {node: '>= 0.4'}
+ babel-dead-code-elimination@1.0.12:
+ resolution: {integrity: sha512-GERT7L2TiYcYDtYk1IpD+ASAYXjKbLTDPhBtYj7X1NuRMDTMtAx9kyBenub1Ev41lo91OHCKdmP+egTDmfQ7Ig==}
+
+ bail@2.0.2:
+ resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==}
+
baseline-browser-mapping@2.9.15:
resolution: {integrity: sha512-kX8h7K2srmDyYnXRIppo4AH/wYgzWVCs+eKr3RusRSQ5PvRYoEFmR/I0PbdTjKFAoKqp5+kbxnNTFO9jOfSVJg==}
hasBin: true
+ basic-auth@2.0.1:
+ resolution: {integrity: sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==}
+ engines: {node: '>= 0.8'}
+
+ body-parser@1.20.4:
+ resolution: {integrity: sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==}
+ engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16}
+
browserslist@4.28.1:
resolution: {integrity: sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==}
engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
hasBin: true
+ buffer-from@1.1.2:
+ resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==}
+
+ bytes@3.1.2:
+ resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==}
+ engines: {node: '>= 0.8'}
+
+ cac@6.7.14:
+ resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==}
+ engines: {node: '>=8'}
+
call-bind-apply-helpers@1.0.2:
resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==}
engines: {node: '>= 0.4'}
+ call-bound@1.0.4:
+ resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==}
+ engines: {node: '>= 0.4'}
+
caniuse-lite@1.0.30001764:
resolution: {integrity: sha512-9JGuzl2M+vPL+pz70gtMF9sHdMFbY9FJaQBi186cHKH3pSzDvzoUJUPV6fqiKIMyXbud9ZLg4F3Yza1vJ1+93g==}
+ ccount@2.0.1:
+ resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==}
+
+ chain-function@1.0.1:
+ resolution: {integrity: sha512-SxltgMwL9uCko5/ZCLiyG2B7R9fY4pDZUw7hJ4MhirdjBLosoDqkWABi3XMucddHdLiFJMb7PD2MZifZriuMTg==}
+
+ chalk@5.6.2:
+ resolution: {integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==}
+ engines: {node: ^12.17.0 || ^14.13 || >=16.0.0}
+
char-regex@1.0.2:
resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==}
engines: {node: '>=10'}
+ character-entities-html4@2.1.0:
+ resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==}
+
+ character-entities-legacy@3.0.0:
+ resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==}
+
+ character-entities@2.0.2:
+ resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==}
+
+ character-reference-invalid@2.0.1:
+ resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==}
+
chokidar@4.0.3:
resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==}
engines: {node: '>= 14.16.0'}
+ chokidar@5.0.0:
+ resolution: {integrity: sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==}
+ engines: {node: '>= 20.19.0'}
+
+ class-variance-authority@0.7.1:
+ resolution: {integrity: sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==}
+
+ classnames@2.5.1:
+ resolution: {integrity: sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==}
+
clone@1.0.4:
resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==}
engines: {node: '>=0.8'}
+ clone@2.1.2:
+ resolution: {integrity: sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==}
+ engines: {node: '>=0.8'}
+
clsx@2.1.1:
resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==}
engines: {node: '>=6'}
+ collapse-white-space@2.1.0:
+ resolution: {integrity: sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==}
+
combined-stream@1.0.8:
resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==}
engines: {node: '>= 0.8'}
+ comma-separated-tokens@2.0.3:
+ resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==}
+
+ compressible@2.0.18:
+ resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==}
+ engines: {node: '>= 0.6'}
+
+ compression@1.8.1:
+ resolution: {integrity: sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==}
+ engines: {node: '>= 0.8.0'}
+
+ compute-scroll-into-view@3.1.1:
+ resolution: {integrity: sha512-VRhuHOLoKYOy4UbilLbUzbYg93XLjv2PncJC50EuTWPA3gaja1UjBsUP/D/9/juV3vQFr6XBEzn9KCAHdUvOHw==}
+
+ confbox@0.2.2:
+ resolution: {integrity: sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==}
+
consola@3.4.2:
resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==}
engines: {node: ^14.18.0 || >=16.10.0}
@@ -814,6 +1749,111 @@ packages:
resolution: {integrity: sha512-dPyZofqggxuvSf7WXvNjuRfnsOk1YazkVP8FdxH4tcH2c37wc79/Yl6Bhr7Lsu00KMgy2ql/qCMuNu8xctZM8g==}
engines: {node: '> 0.10'}
+ content-disposition@0.5.4:
+ resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==}
+ engines: {node: '>= 0.6'}
+
+ content-type@1.0.5:
+ resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==}
+ engines: {node: '>= 0.6'}
+
+ convert-source-map@2.0.0:
+ resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==}
+
+ cookie-signature@1.0.7:
+ resolution: {integrity: sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==}
+
+ cookie@0.7.2:
+ resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==}
+ engines: {node: '>= 0.6'}
+
+ cookie@1.1.1:
+ resolution: {integrity: sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==}
+ engines: {node: '>=18'}
+
+ cssesc@3.0.0:
+ resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==}
+ engines: {node: '>=4'}
+ hasBin: true
+
+ csstype@3.2.3:
+ resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==}
+
+ d3-color@3.1.0:
+ resolution: {integrity: sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==}
+ engines: {node: '>=12'}
+
+ d3-dispatch@3.0.1:
+ resolution: {integrity: sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==}
+ engines: {node: '>=12'}
+
+ d3-drag@3.0.0:
+ resolution: {integrity: sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==}
+ engines: {node: '>=12'}
+
+ d3-ease@3.0.1:
+ resolution: {integrity: sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==}
+ engines: {node: '>=12'}
+
+ d3-hierarchy@1.1.9:
+ resolution: {integrity: sha512-j8tPxlqh1srJHAtxfvOUwKNYJkQuBFdM1+JAUfq6xqH5eAqf93L7oG1NVqDa4CpFZNvnNKtCYEUC8KY9yEn9lQ==}
+
+ d3-interpolate@3.0.1:
+ resolution: {integrity: sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==}
+ engines: {node: '>=12'}
+
+ d3-path@1.0.9:
+ resolution: {integrity: sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==}
+
+ d3-selection@3.0.0:
+ resolution: {integrity: sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==}
+ engines: {node: '>=12'}
+
+ d3-shape@1.3.7:
+ resolution: {integrity: sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==}
+
+ d3-timer@3.0.1:
+ resolution: {integrity: sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==}
+ engines: {node: '>=12'}
+
+ d3-transition@3.0.1:
+ resolution: {integrity: sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==}
+ engines: {node: '>=12'}
+ peerDependencies:
+ d3-selection: 2 - 3
+
+ d3-zoom@3.0.0:
+ resolution: {integrity: sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==}
+ engines: {node: '>=12'}
+
+ debug@2.6.9:
+ resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==}
+ peerDependencies:
+ supports-color: '*'
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+
+ debug@4.4.3:
+ resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==}
+ engines: {node: '>=6.0'}
+ peerDependencies:
+ supports-color: '*'
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+
+ decode-named-character-reference@1.3.0:
+ resolution: {integrity: sha512-GtpQYB283KrPp6nRw50q3U9/VfOutZOe103qlN7BPP6Ad27xYnOIWv4lPzo8HCAL+mMZofJ9KEy30fq6MfaK6Q==}
+
+ dedent@1.7.1:
+ resolution: {integrity: sha512-9JmrhGZpOlEgOLdQgSm0zxFaYoQon408V1v49aqTWuXENVlnCuY9JBZcXZiCsZQWDjTm5Qf/nIvAy77mXDAjEg==}
+ peerDependencies:
+ babel-plugin-macros: ^3.1.0
+ peerDependenciesMeta:
+ babel-plugin-macros:
+ optional: true
+
deepmerge@4.3.1:
resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==}
engines: {node: '>=0.10.0'}
@@ -825,13 +1865,34 @@ packages:
resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==}
engines: {node: '>=0.4.0'}
+ depd@2.0.0:
+ resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==}
+ engines: {node: '>= 0.8'}
+
+ dequal@2.0.3:
+ resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==}
+ engines: {node: '>=6'}
+
+ destroy@1.2.0:
+ resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==}
+ engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16}
+
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==}
+
devalue@5.6.2:
resolution: {integrity: sha512-nPRkjWzzDQlsejL1WVifk5rvcFi/y1onBRxjaFMjZeR9mFpqu2gmAZ9xUB9/IEanEP/vBtGeGganC/GO1fmufg==}
+ devlop@1.1.0:
+ resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==}
+
+ dom-helpers@3.4.0:
+ resolution: {integrity: sha512-LnuPJ+dwqKDIyotW1VzmOZ5TONUN7CwkCR5hrgawTUbkBGYdeoNLZo6nNfGkCrjtE1nXXaj7iMMpDa8/d9WoIA==}
+
dunder-proto@1.0.1:
resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==}
engines: {node: '>= 0.4'}
@@ -839,12 +1900,19 @@ packages:
easy-table@1.1.0:
resolution: {integrity: sha512-oq33hWOSSnl2Hoh00tZWaIPi1ievrD9aFG82/IgjlycAnW9hHx5PkJiXpxPsgEE+H7BsbVQXFVFST8TEXS6/pA==}
+ ee-first@1.1.1:
+ resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==}
+
electron-to-chromium@1.5.267:
resolution: {integrity: sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw==}
emojilib@2.4.0:
resolution: {integrity: sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw==}
+ encodeurl@2.0.0:
+ resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==}
+ engines: {node: '>= 0.8'}
+
enhanced-resolve@5.18.4:
resolution: {integrity: sha512-LgQMM4WXU3QI+SYgEc2liRgznaD5ojbmY3sb8LxyguVkIg5FxdpTkvk72te2R38/TGKxH634oLxXRGY6d7AP+Q==}
engines: {node: '>=10.13.0'}
@@ -857,6 +1925,9 @@ packages:
resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==}
engines: {node: '>= 0.4'}
+ es-module-lexer@1.7.0:
+ resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==}
+
es-object-atoms@1.1.1:
resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==}
engines: {node: '>= 0.4'}
@@ -865,6 +1936,12 @@ packages:
resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==}
engines: {node: '>= 0.4'}
+ esast-util-from-estree@2.0.0:
+ resolution: {integrity: sha512-4CyanoAudUSBAn5K13H4JhsMH6L9ZP7XbLVe/dKybkxMO7eDyLsT8UHl9TRNrU2Gr9nz+FovfSIjuXWJ81uVwQ==}
+
+ esast-util-from-js@2.0.1:
+ resolution: {integrity: sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw==}
+
esbuild@0.27.2:
resolution: {integrity: sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw==}
engines: {node: '>=18'}
@@ -874,12 +1951,61 @@ packages:
resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==}
engines: {node: '>=6'}
+ escape-html@1.0.3:
+ resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==}
+
+ escape-string-regexp@5.0.0:
+ resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==}
+ engines: {node: '>=12'}
+
esm-env@1.2.2:
resolution: {integrity: sha512-Epxrv+Nr/CaL4ZcFGPJIYLWFom+YeV1DqMLHJoEd9SYRxNbaFruBwfEX/kkHUJf55j2+TUbmDcmuilbP1TmXHA==}
esrap@2.2.1:
resolution: {integrity: sha512-GiYWG34AN/4CUyaWAgunGt0Rxvr1PTMlGC0vvEov/uOQYWne2bpN03Um+k8jT+q3op33mKouP2zeJ6OlM+qeUg==}
+ estree-util-attach-comments@3.0.0:
+ resolution: {integrity: sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==}
+
+ estree-util-build-jsx@3.0.1:
+ resolution: {integrity: sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==}
+
+ estree-util-is-identifier-name@3.0.0:
+ resolution: {integrity: sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==}
+
+ estree-util-scope@1.0.0:
+ resolution: {integrity: sha512-2CAASclonf+JFWBNJPndcOpA8EMJwa0Q8LUFJEKqXLW6+qBvbFZuF5gItbQOs/umBUkjviCSDCbBwU2cXbmrhQ==}
+
+ estree-util-to-js@2.0.0:
+ resolution: {integrity: sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==}
+
+ estree-util-value-to-estree@3.5.0:
+ resolution: {integrity: sha512-aMV56R27Gv3QmfmF1MY12GWkGzzeAezAX+UplqHVASfjc9wNzI/X6hC0S9oxq61WT4aQesLGslWP9tKk6ghRZQ==}
+
+ estree-util-visit@2.0.0:
+ resolution: {integrity: sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==}
+
+ estree-walker@3.0.3:
+ resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==}
+
+ etag@1.8.1:
+ resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==}
+ engines: {node: '>= 0.6'}
+
+ exit-hook@2.2.1:
+ resolution: {integrity: sha512-eNTPlAD67BmP31LDINZ3U7HSF8l57TxOY2PmBJ1shpCvpnxBF93mWCE8YHBnXs8qiUZJc9WDcWIeC3a2HIAMfw==}
+ engines: {node: '>=6'}
+
+ express@4.22.1:
+ resolution: {integrity: sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g==}
+ engines: {node: '>= 0.10.0'}
+
+ exsolve@1.0.8:
+ resolution: {integrity: sha512-LmDxfWXwcTArk8fUEnOfSZpHOJ6zOMUJKOtFLFqJLoKJetuQG874Uc7/Kki7zFLzYybmZhp1M7+98pfMqeX8yA==}
+
+ extend@3.0.2:
+ resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==}
+
fdir@6.5.0:
resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==}
engines: {node: '>=12.0.0'}
@@ -889,6 +2015,10 @@ packages:
picomatch:
optional: true
+ finalhandler@1.3.2:
+ resolution: {integrity: sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg==}
+ engines: {node: '>= 0.8'}
+
follow-redirects@1.15.11:
resolution: {integrity: sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==}
engines: {node: '>=4.0'}
@@ -902,21 +2032,138 @@ packages:
resolution: {integrity: sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==}
engines: {node: '>= 6'}
+ forwarded@0.2.0:
+ resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==}
+ engines: {node: '>= 0.6'}
+
fraction.js@5.3.4:
resolution: {integrity: sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==}
+ framer-motion@12.27.1:
+ resolution: {integrity: sha512-cEAqO69kcZt3gL0TGua8WTgRQfv4J57nqt1zxHtLKwYhAwA0x9kDS/JbMa1hJbwkGY74AGJKvZ9pX/IqWZtZWQ==}
+ 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
+
+ fresh@0.5.2:
+ resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==}
+ engines: {node: '>= 0.6'}
+
fsevents@2.3.3:
resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
os: [darwin]
+ fumadocs-core@16.4.7:
+ resolution: {integrity: sha512-oEsoha5EjyQnhRb6s5tNYEM+AiDA4BN80RyevRohsKPXGRQ2K3ddMaFAQq5kBaqA/Xxb+vqrElyRtzmdif7w2A==}
+ peerDependencies:
+ '@mixedbread/sdk': ^0.46.0
+ '@orama/core': 1.x.x
+ '@oramacloud/client': 2.x.x
+ '@tanstack/react-router': 1.x.x
+ '@types/react': '*'
+ algoliasearch: 5.x.x
+ lucide-react: '*'
+ next: 16.x.x
+ react: ^19.2.0
+ react-dom: ^19.2.0
+ react-router: 7.x.x
+ waku: ^0.26.0 || ^0.27.0
+ zod: 4.x.x
+ peerDependenciesMeta:
+ '@mixedbread/sdk':
+ optional: true
+ '@orama/core':
+ optional: true
+ '@oramacloud/client':
+ optional: true
+ '@tanstack/react-router':
+ optional: true
+ '@types/react':
+ optional: true
+ algoliasearch:
+ optional: true
+ lucide-react:
+ optional: true
+ next:
+ optional: true
+ react:
+ optional: true
+ react-dom:
+ optional: true
+ react-router:
+ optional: true
+ waku:
+ optional: true
+ zod:
+ optional: true
+
+ fumadocs-mdx@14.2.6:
+ resolution: {integrity: sha512-T8i5IllZ6OGaZ3/4Wwjl1zovvypSsr6Cco9ZACvoABLqpqTQ2TDfrW1nBt1o9YUKyfzkwDnjKdrnrq/nDexfcg==}
+ hasBin: true
+ peerDependencies:
+ '@fumadocs/mdx-remote': ^1.4.0
+ '@types/react': '*'
+ fumadocs-core: ^15.0.0 || ^16.0.0
+ next: ^15.3.0 || ^16.0.0
+ react: '*'
+ vite: 6.x.x || 7.x.x
+ peerDependenciesMeta:
+ '@fumadocs/mdx-remote':
+ optional: true
+ '@types/react':
+ optional: true
+ next:
+ optional: true
+ react:
+ optional: true
+ vite:
+ optional: true
+
+ fumadocs-ui@16.4.7:
+ resolution: {integrity: sha512-ShEftF54mj89EW7Wll2wwGcH6bNTmPrPtUUmO+ThakK13skJmY7GSBH3Ft51TzQNLhN3kBKEQipIlJWc7LT5NQ==}
+ peerDependencies:
+ '@types/react': '*'
+ fumadocs-core: 16.4.7
+ next: 16.x.x
+ react: ^19.2.0
+ react-dom: ^19.2.0
+ tailwindcss: ^4.0.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ next:
+ optional: true
+ tailwindcss:
+ optional: true
+
function-bind@1.1.2:
resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
+ gensync@1.0.0-beta.2:
+ resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==}
+ engines: {node: '>=6.9.0'}
+
get-intrinsic@1.3.0:
resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==}
engines: {node: '>= 0.4'}
+ get-nonce@1.0.1:
+ resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==}
+ engines: {node: '>=6'}
+
+ get-port@5.1.1:
+ resolution: {integrity: sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==}
+ engines: {node: '>=8'}
+
get-proto@1.0.1:
resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==}
engines: {node: '>= 0.4'}
@@ -924,10 +2171,21 @@ packages:
get-tsconfig@4.13.0:
resolution: {integrity: sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ==}
+ github-slugger@2.0.0:
+ resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==}
+
glob@13.0.0:
resolution: {integrity: sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA==}
engines: {node: 20 || >=22}
+ globrex@0.1.2:
+ resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==}
+
+ goober@2.1.18:
+ resolution: {integrity: sha512-2vFqsaDVIT9Gz7N6kAL++pLpp41l3PfDuusHcjnGLfR6+huZkl6ziX+zgVC3ZxpqWhzH6pyDdGrCeDhMIvwaxw==}
+ peerDependencies:
+ csstype: ^3.0.10
+
gopd@1.2.0:
resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==}
engines: {node: '>= 0.4'}
@@ -947,22 +2205,103 @@ packages:
resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
engines: {node: '>= 0.4'}
- is-reference@3.0.3:
- resolution: {integrity: sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==}
+ hast-util-to-estree@3.1.3:
+ resolution: {integrity: sha512-48+B/rJWAp0jamNbAAf9M7Uf//UVqAoMmgXhBdxTDJLGKY+LRnZ99qcG+Qjl5HfMpYNzS5v4EAwVEF34LeAj7w==}
- jiti@2.6.1:
- resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==}
- hasBin: true
+ hast-util-to-html@9.0.5:
+ resolution: {integrity: sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==}
- lightningcss-android-arm64@1.30.2:
- resolution: {integrity: sha512-BH9sEdOCahSgmkVhBLeU7Hc9DWeZ1Eb6wNS6Da8igvUwAe0sqROHddIlvU06q3WyXVEOYDZ6ykBZQnjTbmo4+A==}
- engines: {node: '>= 12.0.0'}
- cpu: [arm64]
- os: [android]
+ hast-util-to-jsx-runtime@2.3.6:
+ resolution: {integrity: sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg==}
- lightningcss-darwin-arm64@1.30.2:
- resolution: {integrity: sha512-ylTcDJBN3Hp21TdhRT5zBOIi73P6/W0qwvlFEk22fkdXchtNTOU4Qc37SkzV+EKYxLouZ6M4LG9NfZ1qkhhBWA==}
- engines: {node: '>= 12.0.0'}
+ hast-util-to-string@3.0.1:
+ resolution: {integrity: sha512-XelQVTDWvqcl3axRfI0xSeoVKzyIFPwsAGSLIsKdJKQMXDYJS4WYrBNF/8J7RdhIcFI2BOHgAifggsvsxp/3+A==}
+
+ hast-util-whitespace@3.0.0:
+ resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==}
+
+ html-void-elements@3.0.0:
+ resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==}
+
+ http-errors@2.0.1:
+ resolution: {integrity: sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==}
+ engines: {node: '>= 0.8'}
+
+ iconv-lite@0.4.24:
+ resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==}
+ engines: {node: '>=0.10.0'}
+
+ image-size@2.0.2:
+ resolution: {integrity: sha512-IRqXKlaXwgSMAMtpNzZa1ZAe8m+Sa1770Dhk8VkSsP9LS+iHD62Zd8FQKs8fbPiagBE7BzoFX23cxFnwshpV6w==}
+ engines: {node: '>=16.x'}
+ hasBin: true
+
+ inherits@2.0.4:
+ resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
+
+ inline-style-parser@0.2.7:
+ resolution: {integrity: sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA==}
+
+ ipaddr.js@1.9.1:
+ resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==}
+ engines: {node: '>= 0.10'}
+
+ is-alphabetical@2.0.1:
+ resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==}
+
+ is-alphanumerical@2.0.1:
+ resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==}
+
+ is-decimal@2.0.1:
+ resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==}
+
+ is-hexadecimal@2.0.1:
+ resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==}
+
+ is-plain-obj@4.1.0:
+ resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==}
+ engines: {node: '>=12'}
+
+ is-reference@3.0.3:
+ resolution: {integrity: sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==}
+
+ isbot@5.1.33:
+ resolution: {integrity: sha512-P4Hgb5NqswjkI0J1CM6XKXon/sxKY1SuowE7Qx2hrBhIwICFyXy54mfgB5eMHXsbe/eStzzpbIGNOvGmz+dlKg==}
+ engines: {node: '>=18'}
+
+ jiti@2.6.1:
+ resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==}
+ hasBin: true
+
+ js-tokens@4.0.0:
+ resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
+
+ js-yaml@4.1.1:
+ resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==}
+ hasBin: true
+
+ jsesc@3.0.2:
+ resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==}
+ engines: {node: '>=6'}
+ hasBin: true
+
+ json5@2.2.3:
+ resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==}
+ engines: {node: '>=6'}
+ hasBin: true
+
+ launch-editor@2.12.0:
+ resolution: {integrity: sha512-giOHXoOtifjdHqUamwKq6c49GzBdLjvxrd2D+Q4V6uOHopJv7p9VJxikDsQ/CBXZbEITgUqSVHXLTG3VhPP1Dg==}
+
+ 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]
@@ -1027,10 +2366,28 @@ packages:
locate-character@3.0.0:
resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==}
+ lodash@4.17.21:
+ resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
+
+ longest-streak@3.1.0:
+ resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==}
+
+ loose-envify@1.4.0:
+ resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
+ hasBin: true
+
lru-cache@11.2.4:
resolution: {integrity: sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg==}
engines: {node: 20 || >=22}
+ lru-cache@5.1.1:
+ resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
+
+ lucide-react@0.562.0:
+ resolution: {integrity: sha512-82hOAu7y0dbVuFfmO4bYF1XEwYk/mEbM5E+b1jgci/udUBEE/R7LF5Ip0CCEmXe8AybRM8L+04eP+LGZeDvkiw==}
+ peerDependencies:
+ react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0
+
lucide-svelte@0.562.0:
resolution: {integrity: sha512-kSJDH/55lf0mun/o4nqWBXOcq0fWYzPeIjbTD97ywoeumAB9kWxtM06gC7oynqjtK3XhAljWSz5RafIzPEYIQA==}
peerDependencies:
@@ -1039,6 +2396,13 @@ packages:
magic-string@0.30.21:
resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==}
+ markdown-extensions@2.0.0:
+ resolution: {integrity: sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==}
+ engines: {node: '>=16'}
+
+ markdown-table@3.0.4:
+ resolution: {integrity: sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==}
+
marked@17.0.1:
resolution: {integrity: sha512-boeBdiS0ghpWcSwoNm/jJBwdpFaMnZWRzjA6SkUMYb40SVaN1x7mmfGKp0jvexGcx+7y2La5zRZsYFZI6Qpypg==}
engines: {node: '>= 20'}
@@ -1048,6 +2412,170 @@ packages:
resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==}
engines: {node: '>= 0.4'}
+ mdast-util-find-and-replace@3.0.2:
+ resolution: {integrity: sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==}
+
+ mdast-util-from-markdown@2.0.2:
+ resolution: {integrity: sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==}
+
+ mdast-util-gfm-autolink-literal@2.0.1:
+ resolution: {integrity: sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==}
+
+ mdast-util-gfm-footnote@2.1.0:
+ resolution: {integrity: sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==}
+
+ mdast-util-gfm-strikethrough@2.0.0:
+ resolution: {integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==}
+
+ mdast-util-gfm-table@2.0.0:
+ resolution: {integrity: sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==}
+
+ mdast-util-gfm-task-list-item@2.0.0:
+ resolution: {integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==}
+
+ mdast-util-gfm@3.1.0:
+ resolution: {integrity: sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==}
+
+ mdast-util-mdx-expression@2.0.1:
+ resolution: {integrity: sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==}
+
+ mdast-util-mdx-jsx@3.2.0:
+ resolution: {integrity: sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==}
+
+ mdast-util-mdx@3.0.0:
+ resolution: {integrity: sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==}
+
+ mdast-util-mdxjs-esm@2.0.1:
+ resolution: {integrity: sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==}
+
+ mdast-util-phrasing@4.1.0:
+ resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==}
+
+ mdast-util-to-hast@13.2.1:
+ resolution: {integrity: sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA==}
+
+ mdast-util-to-markdown@2.1.2:
+ resolution: {integrity: sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==}
+
+ mdast-util-to-string@4.0.0:
+ resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==}
+
+ media-typer@0.3.0:
+ resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==}
+ engines: {node: '>= 0.6'}
+
+ merge-descriptors@1.0.3:
+ resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==}
+
+ methods@1.1.2:
+ resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==}
+ engines: {node: '>= 0.6'}
+
+ micromark-core-commonmark@2.0.3:
+ resolution: {integrity: sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==}
+
+ micromark-extension-gfm-autolink-literal@2.1.0:
+ resolution: {integrity: sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==}
+
+ micromark-extension-gfm-footnote@2.1.0:
+ resolution: {integrity: sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==}
+
+ micromark-extension-gfm-strikethrough@2.1.0:
+ resolution: {integrity: sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==}
+
+ micromark-extension-gfm-table@2.1.1:
+ resolution: {integrity: sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==}
+
+ micromark-extension-gfm-tagfilter@2.0.0:
+ resolution: {integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==}
+
+ micromark-extension-gfm-task-list-item@2.1.0:
+ resolution: {integrity: sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==}
+
+ micromark-extension-gfm@3.0.0:
+ resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==}
+
+ micromark-extension-mdx-expression@3.0.1:
+ resolution: {integrity: sha512-dD/ADLJ1AeMvSAKBwO22zG22N4ybhe7kFIZ3LsDI0GlsNr2A3KYxb0LdC1u5rj4Nw+CHKY0RVdnHX8vj8ejm4Q==}
+
+ micromark-extension-mdx-jsx@3.0.2:
+ resolution: {integrity: sha512-e5+q1DjMh62LZAJOnDraSSbDMvGJ8x3cbjygy2qFEi7HCeUT4BDKCvMozPozcD6WmOt6sVvYDNBKhFSz3kjOVQ==}
+
+ micromark-extension-mdx-md@2.0.0:
+ resolution: {integrity: sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==}
+
+ micromark-extension-mdxjs-esm@3.0.0:
+ resolution: {integrity: sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==}
+
+ micromark-extension-mdxjs@3.0.0:
+ resolution: {integrity: sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==}
+
+ micromark-factory-destination@2.0.1:
+ resolution: {integrity: sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==}
+
+ micromark-factory-label@2.0.1:
+ resolution: {integrity: sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==}
+
+ micromark-factory-mdx-expression@2.0.3:
+ resolution: {integrity: sha512-kQnEtA3vzucU2BkrIa8/VaSAsP+EJ3CKOvhMuJgOEGg9KDC6OAY6nSnNDVRiVNRqj7Y4SlSzcStaH/5jge8JdQ==}
+
+ micromark-factory-space@2.0.1:
+ resolution: {integrity: sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==}
+
+ micromark-factory-title@2.0.1:
+ resolution: {integrity: sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==}
+
+ micromark-factory-whitespace@2.0.1:
+ resolution: {integrity: sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==}
+
+ micromark-util-character@2.1.1:
+ resolution: {integrity: sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==}
+
+ micromark-util-chunked@2.0.1:
+ resolution: {integrity: sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==}
+
+ micromark-util-classify-character@2.0.1:
+ resolution: {integrity: sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==}
+
+ micromark-util-combine-extensions@2.0.1:
+ resolution: {integrity: sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==}
+
+ micromark-util-decode-numeric-character-reference@2.0.2:
+ resolution: {integrity: sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==}
+
+ micromark-util-decode-string@2.0.1:
+ resolution: {integrity: sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==}
+
+ micromark-util-encode@2.0.1:
+ resolution: {integrity: sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==}
+
+ micromark-util-events-to-acorn@2.0.3:
+ resolution: {integrity: sha512-jmsiEIiZ1n7X1Rr5k8wVExBQCg5jy4UXVADItHmNk1zkwEVhBuIUKRu3fqv+hs4nxLISi2DQGlqIOGiFxgbfHg==}
+
+ micromark-util-html-tag-name@2.0.1:
+ resolution: {integrity: sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==}
+
+ micromark-util-normalize-identifier@2.0.1:
+ resolution: {integrity: sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==}
+
+ micromark-util-resolve-all@2.0.1:
+ resolution: {integrity: sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==}
+
+ micromark-util-sanitize-uri@2.0.1:
+ resolution: {integrity: sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==}
+
+ micromark-util-subtokenize@2.1.0:
+ resolution: {integrity: sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==}
+
+ micromark-util-symbol@2.0.1:
+ resolution: {integrity: sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==}
+
+ micromark-util-types@2.0.2:
+ resolution: {integrity: sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==}
+
+ micromark@4.0.2:
+ resolution: {integrity: sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==}
+
mime-db@1.52.0:
resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==}
engines: {node: '>= 0.6'}
@@ -1056,6 +2584,11 @@ packages:
resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==}
engines: {node: '>= 0.6'}
+ mime@1.6.0:
+ resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==}
+ engines: {node: '>=4'}
+ hasBin: true
+
minimatch@10.1.1:
resolution: {integrity: sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==}
engines: {node: 20 || >=22}
@@ -1064,15 +2597,49 @@ packages:
resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==}
engines: {node: '>=16 || 14 >=14.17'}
+ morgan@1.10.1:
+ resolution: {integrity: sha512-223dMRJtI/l25dJKWpgij2cMtywuG/WiUKXdvwfbhGKBhy1puASqXwFzmWZ7+K73vUPoR7SS2Qz2cI/g9MKw0A==}
+ engines: {node: '>= 0.8.0'}
+
+ motion-dom@12.27.1:
+ resolution: {integrity: sha512-V/53DA2nBqKl9O2PMJleSUb/G0dsMMeZplZwgIQf5+X0bxIu7Q1cTv6DrjvTTGYRm3+7Y5wMlRZ1wT61boU/bQ==}
+
+ motion-utils@12.24.10:
+ resolution: {integrity: sha512-x5TFgkCIP4pPsRLpKoI86jv/q8t8FQOiM/0E8QKBzfMozWHfkKap2gA1hOki+B5g3IsBNpxbUnfOum1+dgvYww==}
+
mri@1.2.0:
resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==}
engines: {node: '>=4'}
+ ms@2.0.0:
+ resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==}
+
+ ms@2.1.3:
+ resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
+
nanoid@3.3.11:
resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==}
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
hasBin: true
+ negotiator@0.6.3:
+ resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==}
+ engines: {node: '>= 0.6'}
+
+ negotiator@0.6.4:
+ resolution: {integrity: sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==}
+ engines: {node: '>= 0.6'}
+
+ negotiator@1.0.0:
+ resolution: {integrity: sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==}
+ engines: {node: '>= 0.6'}
+
+ next-themes@0.4.6:
+ resolution: {integrity: sha512-pZvgD5L0IEvX5/9GWyHMf3m8BKiVQwsCMHfoFosXtXBMnaS0ZnIJ9ST4b4NqLVKDEm8QBxoNNGNaBv2JNF6XNA==}
+ peerDependencies:
+ react: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc
+
node-emoji@2.2.0:
resolution: {integrity: sha512-Z3lTE9pLaJF47NyMhd4ww1yFTAP8YhYI8SleJiHzM46Fgpm5cnNzSl9XfzFNqbaz+VlJrIj3fXQ4DeN1Rjm6cw==}
engines: {node: '>=18'}
@@ -1080,9 +2647,39 @@ packages:
node-releases@2.0.27:
resolution: {integrity: sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==}
+ npm-to-yarn@3.0.1:
+ resolution: {integrity: sha512-tt6PvKu4WyzPwWUzy/hvPFqn+uwXO0K1ZHka8az3NnrhWJDmSqI8ncWq0fkL0k/lmmi5tAC11FXwXuh0rFbt1A==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+
+ object-assign@4.1.1:
+ resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
+ engines: {node: '>=0.10.0'}
+
+ object-inspect@1.13.4:
+ resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==}
+ engines: {node: '>= 0.4'}
+
obug@2.1.1:
resolution: {integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==}
+ on-finished@2.3.0:
+ resolution: {integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==}
+ engines: {node: '>= 0.8'}
+
+ on-finished@2.4.1:
+ resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==}
+ engines: {node: '>= 0.8'}
+
+ on-headers@1.1.0:
+ resolution: {integrity: sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==}
+ engines: {node: '>= 0.8'}
+
+ oniguruma-parser@0.12.1:
+ resolution: {integrity: sha512-8Unqkvk1RYc6yq2WBYRj4hdnsAxVze8i7iPfQr8e4uSP3tRv0rpZcbGUDvxfQQcdwHt/e9PrMvGCsa8OqG9X3w==}
+
+ oniguruma-to-es@4.3.4:
+ resolution: {integrity: sha512-3VhUGN3w2eYxnTzHn+ikMI+fp/96KoRSVK9/kMTcFqj1NRDh2IhQCKvYxDnWePKRXY/AqH+Fuiyb7VHSzBjHfA==}
+
oxfmt@0.24.0:
resolution: {integrity: sha512-UjeM3Peez8Tl7IJ9s5UwAoZSiDRMww7BEc21gDYxLq3S3/KqJnM3mjNxsoSHgmBvSeX6RBhoVc2MfC/+96RdSw==}
engines: {node: ^20.19.0 || >=22.12.0}
@@ -1098,13 +2695,36 @@ packages:
oxlint-tsgolint:
optional: true
+ p-map@7.0.4:
+ resolution: {integrity: sha512-tkAQEw8ysMzmkhgw8k+1U/iPhWNhykKnSk4Rd5zLoPJCuJaGRPo6YposrZgaxHKzDHdDWWZvE/Sk7hsL2X/CpQ==}
+ engines: {node: '>=18'}
+
package-json-from-dist@1.0.1:
resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==}
+ parse-entities@4.0.2:
+ resolution: {integrity: sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==}
+
+ parseurl@1.3.3:
+ resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==}
+ engines: {node: '>= 0.8'}
+
path-scurry@2.0.1:
resolution: {integrity: sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==}
engines: {node: 20 || >=22}
+ path-to-regexp@0.1.12:
+ resolution: {integrity: sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==}
+
+ path-to-regexp@8.3.0:
+ resolution: {integrity: sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA==}
+
+ pathe@1.1.2:
+ resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==}
+
+ pathe@2.0.3:
+ resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==}
+
picocolors@1.1.1:
resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
@@ -1112,6 +2732,13 @@ packages:
resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==}
engines: {node: '>=12'}
+ pkg-types@2.3.0:
+ resolution: {integrity: sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig==}
+
+ postcss-selector-parser@7.1.1:
+ resolution: {integrity: sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==}
+ engines: {node: '>=4'}
+
postcss-value-parser@4.2.0:
resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==}
@@ -1119,17 +2746,185 @@ packages:
resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==}
engines: {node: ^10 || ^12 || >=14}
+ prettier@3.8.0:
+ resolution: {integrity: sha512-yEPsovQfpxYfgWNhCfECjG5AQaO+K3dp6XERmOepyPDVqcJm+bjyCVO3pmU+nAPe0N5dDvekfGezt/EIiRe1TA==}
+ engines: {node: '>=14'}
+ hasBin: true
+
prismjs@1.30.0:
resolution: {integrity: sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==}
engines: {node: '>=6'}
+ prop-types@15.8.1:
+ resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==}
+
+ property-information@7.1.0:
+ resolution: {integrity: sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==}
+
+ proxy-addr@2.0.7:
+ resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==}
+ engines: {node: '>= 0.10'}
+
proxy-from-env@1.1.0:
resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==}
+ qs@6.14.1:
+ resolution: {integrity: sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ==}
+ engines: {node: '>=0.6'}
+
+ range-parser@1.2.1:
+ resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==}
+ engines: {node: '>= 0.6'}
+
+ raw-body@2.5.3:
+ resolution: {integrity: sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==}
+ engines: {node: '>= 0.8'}
+
+ react-d3-tree@3.6.6:
+ resolution: {integrity: sha512-E9ByUdeqvlxLlF9BSL7KWQH3ikYHtHO+g1rAPcVgj6mu92tjRUCan2AWxoD4eTSzzAATf8BZtf+CXGSoSd6ioQ==}
+ peerDependencies:
+ react: 16.x || 17.x || 18.x || 19.x
+ react-dom: 16.x || 17.x || 18.x || 19.x
+
+ react-dom@19.2.3:
+ resolution: {integrity: sha512-yELu4WmLPw5Mr/lmeEpox5rw3RETacE++JgHqQzd2dg+YbJuat3jH4ingc+WPZhxaoFzdv9y33G+F7Nl5O0GBg==}
+ peerDependencies:
+ react: ^19.2.3
+
+ react-hotkeys-hook@5.2.3:
+ resolution: {integrity: sha512-Q27F8EuImYJOVSXAjSQrQPj9cx4GSNY+WdSdk5tSNN085H8/a00W6LZp0PrytEDwF6iT0pGTJeVEDKPRpEK2Bg==}
+ peerDependencies:
+ react: '>=16.8.0'
+ react-dom: '>=16.8.0'
+
+ react-is@16.13.1:
+ resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==}
+
+ react-lifecycles-compat@3.0.4:
+ resolution: {integrity: sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==}
+
+ react-medium-image-zoom@5.4.0:
+ resolution: {integrity: sha512-BsE+EnFVQzFIlyuuQrZ9iTwyKpKkqdFZV1ImEQN573QPqGrIUuNni7aF+sZwDcxlsuOMayCr6oO/PZR/yJnbRg==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
+ react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
+
+ react-refresh@0.14.2:
+ resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==}
+ 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.2:
+ resolution: {integrity: sha512-Iqb9NjCCTt6Hf+vOdNIZGdTiH1QSqr27H/Ek9sv/a97gfueI/5h1s3yRi1nngzMUaOOToin5dI1dXKdXiF+u0Q==}
+ 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-devtools@6.2.0:
+ resolution: {integrity: sha512-YzaFAyKZEtTmWzBF/moKuMtEa8Hd/xhTtUCKarrhAbZMyR8S0OpCpN0pyKrNGNz7ueOc4jvvKdE9S6Q3UTotDg==}
+ peerDependencies:
+ '@types/react': '>=17'
+ '@types/react-dom': '>=17'
+ react: '>=17'
+ react-dom: '>=17'
+ react-router: '>=7.0.0'
+ vite: '>=5.0.0 || >=6.0.0'
+
+ react-router@7.12.0:
+ resolution: {integrity: sha512-kTPDYPFzDVGIIGNLS5VJykK0HfHLY5MF3b+xj0/tTyNYL1gF1qs7u67Z9jEhQk2sQ98SUaHxlG31g1JtF7IfVw==}
+ 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-tooltip@5.30.0:
+ resolution: {integrity: sha512-Yn8PfbgQ/wmqnL7oBpz1QiDaLKrzZMdSUUdk7nVeGTwzbxCAJiJzR4VSYW+eIO42F1INt57sPUmpgKv0KwJKtg==}
+ peerDependencies:
+ react: '>=16.14.0'
+ react-dom: '>=16.14.0'
+
+ react@19.2.3:
+ resolution: {integrity: sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA==}
+ engines: {node: '>=0.10.0'}
+
readdirp@4.1.2:
resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==}
engines: {node: '>= 14.18.0'}
+ readdirp@5.0.0:
+ resolution: {integrity: sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ==}
+ engines: {node: '>= 20.19.0'}
+
+ recma-build-jsx@1.0.0:
+ resolution: {integrity: sha512-8GtdyqaBcDfva+GUKDr3nev3VpKAhup1+RvkMvUxURHpW7QyIvk9F5wz7Vzo06CEMSilw6uArgRqhpiUcWp8ew==}
+
+ recma-jsx@1.0.1:
+ resolution: {integrity: sha512-huSIy7VU2Z5OLv6oFLosQGGDqPqdO1iq6bWNAdhzMxSJP7RAso4fCZ1cKu8j9YHCZf3TPrq4dw3okhrylgcd7w==}
+ peerDependencies:
+ acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
+
+ recma-parse@1.0.0:
+ resolution: {integrity: sha512-OYLsIGBB5Y5wjnSnQW6t3Xg7q3fQ7FWbw/vcXtORTnyaSFscOtABg+7Pnz6YZ6c27fG1/aN8CjfwoUEUIdwqWQ==}
+
+ recma-stringify@1.0.0:
+ resolution: {integrity: sha512-cjwII1MdIIVloKvC9ErQ+OgAtwHBmcZ0Bg4ciz78FtbT8In39aAYbaA7zvxQ61xVMSPE8WxhLwLbhif4Js2C+g==}
+
+ regex-recursion@6.0.2:
+ resolution: {integrity: sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==}
+
+ regex-utilities@2.3.0:
+ resolution: {integrity: sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==}
+
+ regex@6.1.0:
+ resolution: {integrity: sha512-6VwtthbV4o/7+OaAF9I5L5V3llLEsoPyq9P1JVXkedTP33c7MfCG0/5NOPcSJn0TzXcG9YUrR0gQSWioew3LDg==}
+
+ rehype-recma@1.0.0:
+ resolution: {integrity: sha512-lqA4rGUf1JmacCNWWZx0Wv1dHqMwxzsDWYMTowuplHF3xH0N/MmrZ/G3BDZnzAkRmxDadujCjaKM2hqYdCBOGw==}
+
+ remark-gfm@4.0.1:
+ resolution: {integrity: sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==}
+
+ remark-mdx@3.1.1:
+ resolution: {integrity: sha512-Pjj2IYlUY3+D8x00UJsIOg5BEvfMyeI+2uLPn9VO9Wg4MEtN/VTIq2NEJQfde9PnX15KgtHyl9S0BcTnWrIuWg==}
+
+ remark-parse@11.0.0:
+ resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==}
+
+ remark-rehype@11.1.2:
+ resolution: {integrity: sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw==}
+
+ remark-stringify@11.0.0:
+ resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==}
+
+ remark@15.0.1:
+ resolution: {integrity: sha512-Eht5w30ruCXgFmxVUSlNWQ9iiimq07URKeFS3hNc8cUWy1llX4KDWfyEDZRycMc+znsN9Ux5/tJ/BFdgdOwA3A==}
+
resolve-pkg-maps@1.0.0:
resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==}
@@ -1187,14 +2982,115 @@ packages:
resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==}
engines: {node: '>=6'}
+ safe-buffer@5.1.2:
+ resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==}
+
+ safe-buffer@5.2.1:
+ resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
+
+ safer-buffer@2.1.2:
+ resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
+
+ scheduler@0.27.0:
+ resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==}
+
+ scroll-into-view-if-needed@3.1.0:
+ resolution: {integrity: sha512-49oNpRjWRvnU8NyGVmUaYG4jtTkNonFZI86MmGRDqBphEK2EXT9gdEUoQPZhuBM8yWHxCWbobltqYO5M4XrUvQ==}
+
+ semver@6.3.1:
+ resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
+ hasBin: true
+
+ semver@7.7.3:
+ resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==}
+ engines: {node: '>=10'}
+ hasBin: true
+
+ send@0.19.2:
+ resolution: {integrity: sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==}
+ engines: {node: '>= 0.8.0'}
+
+ seroval-plugins@1.3.3:
+ resolution: {integrity: sha512-16OL3NnUBw8JG1jBLUoZJsLnQq0n5Ua6aHalhJK4fMQkz1lqR7Osz1sA30trBtd9VUDc2NgkuRCn8+/pBwqZ+w==}
+ engines: {node: '>=10'}
+ peerDependencies:
+ seroval: ^1.0
+
+ seroval@1.3.2:
+ resolution: {integrity: sha512-RbcPH1n5cfwKrru7v7+zrZvjLurgHhGyso3HTyGtRivGWgYjbOmGuivCQaORNELjNONoK35nj28EoWul9sb1zQ==}
+ engines: {node: '>=10'}
+
+ serve-static@1.16.3:
+ resolution: {integrity: sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==}
+ engines: {node: '>= 0.8.0'}
+
+ set-cookie-parser@2.7.2:
+ resolution: {integrity: sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw==}
+
+ setprototypeof@1.2.0:
+ resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==}
+
+ shell-quote@1.8.3:
+ resolution: {integrity: sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==}
+ engines: {node: '>= 0.4'}
+
+ shiki@3.21.0:
+ resolution: {integrity: sha512-N65B/3bqL/TI2crrXr+4UivctrAGEjmsib5rPMMPpFp1xAx/w03v8WZ9RDDFYteXoEgY7qZ4HGgl5KBIu1153w==}
+
+ side-channel-list@1.0.0:
+ resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==}
+ engines: {node: '>= 0.4'}
+
+ side-channel-map@1.0.1:
+ resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==}
+ engines: {node: '>= 0.4'}
+
+ side-channel-weakmap@1.0.2:
+ resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==}
+ engines: {node: '>= 0.4'}
+
+ side-channel@1.1.0:
+ resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==}
+ engines: {node: '>= 0.4'}
+
skin-tone@2.0.0:
resolution: {integrity: sha512-kUMbT1oBJCpgrnKoSr0o6wPtvRWT9W9UKvGLwfJYO2WuahZRHOpEyL1ckyMGgMWh0UdpmaoFqKKD29WTomNEGA==}
engines: {node: '>=8'}
+ solid-js@1.9.10:
+ resolution: {integrity: sha512-Coz956cos/EPDlhs6+jsdTxKuJDPT7B5SVIWgABwROyxjY7Xbr8wkzD68Et+NxnV7DLJ3nJdAC2r9InuV/4Jew==}
+
source-map-js@1.2.1:
resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
engines: {node: '>=0.10.0'}
+ source-map-support@0.5.21:
+ resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==}
+
+ source-map@0.6.1:
+ resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
+ engines: {node: '>=0.10.0'}
+
+ source-map@0.7.6:
+ resolution: {integrity: sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==}
+ engines: {node: '>= 12'}
+
+ space-separated-tokens@2.0.2:
+ resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==}
+
+ statuses@2.0.2:
+ resolution: {integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==}
+ engines: {node: '>= 0.8'}
+
+ stringify-entities@4.0.4:
+ resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==}
+
+ style-to-js@1.1.21:
+ resolution: {integrity: sha512-RjQetxJrrUJLQPHbLku6U/ocGtzyjbJMP9lCNK7Ag0CNh690nSH8woqWH9u16nMjYBAok+i7JO1NP2pOy8IsPQ==}
+
+ style-to-object@1.0.14:
+ resolution: {integrity: sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw==}
+
svelte-check@4.3.5:
resolution: {integrity: sha512-e4VWZETyXaKGhpkxOXP+B/d0Fp/zKViZoJmneZWe/05Y2aqSKj3YN2nLfYPJBQ87WEiY4BQCQ9hWGu9mPT1a1Q==}
engines: {node: '>= 18.0.0'}
@@ -1207,6 +3103,9 @@ packages:
resolution: {integrity: sha512-VJwdXrmv9L8L7ZasJeWcCjoIuMRVbhuxbss0fpVnR8yorMmjNDwcjIH08vS6wmSzzzgAG5CADQ1JuXPS2nwt9w==}
engines: {node: '>=18'}
+ tailwind-merge@3.4.0:
+ resolution: {integrity: sha512-uSaO4gnW+b3Y2aWoWfFpX62vn2sR3skfhbjsEnaBI81WD1wBLlHZe5sWf0AqjksNdYTbGBEd0UasQMT3SNV15g==}
+
tailwindcss@4.1.18:
resolution: {integrity: sha512-4+Z+0yiYyEtUVCScyfHCxOYP06L5Ne+JiHhY2IjR2KWMIWhJOYZKLSGZaP5HkZ8+bY0cxfzwDE5uOmzFXyIwxw==}
@@ -1214,6 +3113,10 @@ packages:
resolution: {integrity: sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==}
engines: {node: '>=6'}
+ tinyexec@1.0.2:
+ resolution: {integrity: sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==}
+ engines: {node: '>=18'}
+
tinyglobby@0.2.15:
resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==}
engines: {node: '>=12.0.0'}
@@ -1222,9 +3125,29 @@ packages:
resolution: {integrity: sha512-/RX9RzeH2xU5ADE7n2Ykvmi9ED3FBGPAjw9u3zucrNNaEBIO0HPSYgL0NT7+3p147ojeSdaVu08F6hjpv31HJg==}
engines: {node: ^20.0.0 || >=22.0.0}
+ toidentifier@1.0.1:
+ resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==}
+ engines: {node: '>=0.6'}
+
toml@3.0.0:
resolution: {integrity: sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==}
+ trim-lines@3.0.1:
+ resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==}
+
+ trough@2.2.0:
+ resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==}
+
+ tsconfck@3.1.6:
+ resolution: {integrity: sha512-ks6Vjr/jEw0P1gmOVwutM3B7fWxoWBL2KRDb1JfqGVawBmO5UsvmWOQFGHBPl5yxYz4eERr19E6L7NMv+Fej4w==}
+ engines: {node: ^18 || >=20}
+ hasBin: true
+ peerDependencies:
+ typescript: ^5.0.0
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
tslib@2.8.1:
resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
@@ -1237,6 +3160,10 @@ packages:
resolution: {integrity: sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==}
engines: {node: '>=0.6.11 <=0.7.0 || >=0.7.3'}
+ type-is@1.6.18:
+ resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==}
+ engines: {node: '>= 0.6'}
+
typescript@5.9.3:
resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==}
engines: {node: '>=14.17'}
@@ -1249,12 +3176,102 @@ packages:
resolution: {integrity: sha512-yLSH4py7oFH3oG/9K+XWrz1pSi3dfUrWEnInbxMfArOfc1+33BlGPQtLsOYwvdMy11AwUBetYuaRxSPqgkq+8g==}
engines: {node: '>=4'}
+ unified@11.0.5:
+ resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==}
+
+ unist-util-is@6.0.1:
+ resolution: {integrity: sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==}
+
+ unist-util-position-from-estree@2.0.0:
+ resolution: {integrity: sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==}
+
+ unist-util-position@5.0.0:
+ resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==}
+
+ unist-util-remove-position@5.0.0:
+ resolution: {integrity: sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==}
+
+ unist-util-stringify-position@4.0.0:
+ resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==}
+
+ unist-util-visit-parents@6.0.2:
+ resolution: {integrity: sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ==}
+
+ unist-util-visit@5.0.0:
+ resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==}
+
+ unpipe@1.0.0:
+ resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==}
+ engines: {node: '>= 0.8'}
+
update-browserslist-db@1.2.3:
resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==}
hasBin: true
peerDependencies:
browserslist: '>= 4.21.0'
+ 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
+
+ util-deprecate@1.0.2:
+ resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
+
+ utils-merge@1.0.1:
+ resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==}
+ engines: {node: '>= 0.4.0'}
+
+ uuid@8.3.2:
+ resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==}
+ hasBin: true
+
+ valibot@1.2.0:
+ resolution: {integrity: sha512-mm1rxUsmOxzrwnX5arGS+U4T25RdvpPjPN4yR0u9pUBov9+zGVtO84tif1eY4r6zWxVxu3KzIyknJy3rxfRZZg==}
+ peerDependencies:
+ typescript: '>=5'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ vary@1.1.2:
+ resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==}
+ engines: {node: '>= 0.8'}
+
+ vfile-message@4.0.3:
+ resolution: {integrity: sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==}
+
+ vfile@6.0.3:
+ resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==}
+
+ vite-node@3.2.4:
+ resolution: {integrity: sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg==}
+ engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0}
+ hasBin: true
+
+ vite-tsconfig-paths@6.0.4:
+ resolution: {integrity: sha512-iIsEJ+ek5KqRTK17pmxtgIxXtqr3qDdE6OxrP9mVeGhVDNXRJTKN/l9oMbujTQNzMLe6XZ8qmpztfbkPu2TiFQ==}
+ peerDependencies:
+ vite: '*'
+ peerDependenciesMeta:
+ vite:
+ optional: true
+
vitefu@1.1.1:
resolution: {integrity: sha512-B/Fegf3i8zh0yFbpzZ21amWzHmuNlLlmJT6n7bu5e+pCHUKQIfXSYokrqOBGEMMe9UG2sostKQF9mml/vYaWJQ==}
peerDependencies:
@@ -1263,14 +3280,226 @@ packages:
vite:
optional: true
+ warning@3.0.0:
+ resolution: {integrity: sha512-jMBt6pUrKn5I+OGgtQ4YZLdhIeJmObddh6CsibPxyQ5yPZm1XExSyzC1LCNX7BzhxWgiHmizBWJTHJIjMjTQYQ==}
+
wcwidth@1.0.1:
resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==}
+ ws@8.19.0:
+ resolution: {integrity: sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==}
+ engines: {node: '>=10.0.0'}
+ peerDependencies:
+ bufferutil: ^4.0.1
+ utf-8-validate: '>=5.0.2'
+ peerDependenciesMeta:
+ bufferutil:
+ optional: true
+ utf-8-validate:
+ optional: true
+
+ yallist@3.1.1:
+ resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==}
+
zimmerframe@1.1.4:
resolution: {integrity: sha512-B58NGBEoc8Y9MWWCQGl/gq9xBCe4IiKM0a2x7GZdQKOW5Exr8S1W24J6OgM1njK8xCRGvAJIL/MxXHf6SkmQKQ==}
+ zod@4.3.5:
+ resolution: {integrity: sha512-k7Nwx6vuWx1IJ9Bjuf4Zt1PEllcwe7cls3VNzm4CQ1/hgtFUK2bRNG3rvnpPUhFjmqJKAKtjV576KnUkHocg/g==}
+
+ zwitch@2.0.4:
+ resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==}
+
snapshots:
+ '@babel/code-frame@7.28.6':
+ dependencies:
+ '@babel/helper-validator-identifier': 7.28.5
+ js-tokens: 4.0.0
+ picocolors: 1.1.1
+
+ '@babel/compat-data@7.28.6': {}
+
+ '@babel/core@7.28.6':
+ dependencies:
+ '@babel/code-frame': 7.28.6
+ '@babel/generator': 7.28.6
+ '@babel/helper-compilation-targets': 7.28.6
+ '@babel/helper-module-transforms': 7.28.6(@babel/core@7.28.6)
+ '@babel/helpers': 7.28.6
+ '@babel/parser': 7.28.6
+ '@babel/template': 7.28.6
+ '@babel/traverse': 7.28.6
+ '@babel/types': 7.28.6
+ '@jridgewell/remapping': 2.3.5
+ convert-source-map: 2.0.0
+ debug: 4.4.3
+ gensync: 1.0.0-beta.2
+ json5: 2.2.3
+ semver: 6.3.1
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/generator@7.28.6':
+ dependencies:
+ '@babel/parser': 7.28.6
+ '@babel/types': 7.28.6
+ '@jridgewell/gen-mapping': 0.3.13
+ '@jridgewell/trace-mapping': 0.3.31
+ jsesc: 3.0.2
+
+ '@babel/helper-annotate-as-pure@7.27.3':
+ dependencies:
+ '@babel/types': 7.28.6
+
+ '@babel/helper-compilation-targets@7.28.6':
+ dependencies:
+ '@babel/compat-data': 7.28.6
+ '@babel/helper-validator-option': 7.27.1
+ browserslist: 4.28.1
+ lru-cache: 5.1.1
+ semver: 6.3.1
+
+ '@babel/helper-create-class-features-plugin@7.28.6(@babel/core@7.28.6)':
+ dependencies:
+ '@babel/core': 7.28.6
+ '@babel/helper-annotate-as-pure': 7.27.3
+ '@babel/helper-member-expression-to-functions': 7.28.5
+ '@babel/helper-optimise-call-expression': 7.27.1
+ '@babel/helper-replace-supers': 7.28.6(@babel/core@7.28.6)
+ '@babel/helper-skip-transparent-expression-wrappers': 7.27.1
+ '@babel/traverse': 7.28.6
+ semver: 6.3.1
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/helper-globals@7.28.0': {}
+
+ '@babel/helper-member-expression-to-functions@7.28.5':
+ dependencies:
+ '@babel/traverse': 7.28.6
+ '@babel/types': 7.28.6
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/helper-module-imports@7.28.6':
+ dependencies:
+ '@babel/traverse': 7.28.6
+ '@babel/types': 7.28.6
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/helper-module-transforms@7.28.6(@babel/core@7.28.6)':
+ dependencies:
+ '@babel/core': 7.28.6
+ '@babel/helper-module-imports': 7.28.6
+ '@babel/helper-validator-identifier': 7.28.5
+ '@babel/traverse': 7.28.6
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/helper-optimise-call-expression@7.27.1':
+ dependencies:
+ '@babel/types': 7.28.6
+
+ '@babel/helper-plugin-utils@7.28.6': {}
+
+ '@babel/helper-replace-supers@7.28.6(@babel/core@7.28.6)':
+ dependencies:
+ '@babel/core': 7.28.6
+ '@babel/helper-member-expression-to-functions': 7.28.5
+ '@babel/helper-optimise-call-expression': 7.27.1
+ '@babel/traverse': 7.28.6
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/helper-skip-transparent-expression-wrappers@7.27.1':
+ dependencies:
+ '@babel/traverse': 7.28.6
+ '@babel/types': 7.28.6
+ transitivePeerDependencies:
+ - supports-color
+
+ '@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.6':
+ dependencies:
+ '@babel/template': 7.28.6
+ '@babel/types': 7.28.6
+
+ '@babel/parser@7.28.6':
+ dependencies:
+ '@babel/types': 7.28.6
+
+ '@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.28.6)':
+ dependencies:
+ '@babel/core': 7.28.6
+ '@babel/helper-plugin-utils': 7.28.6
+
+ '@babel/plugin-syntax-typescript@7.28.6(@babel/core@7.28.6)':
+ dependencies:
+ '@babel/core': 7.28.6
+ '@babel/helper-plugin-utils': 7.28.6
+
+ '@babel/plugin-transform-modules-commonjs@7.28.6(@babel/core@7.28.6)':
+ dependencies:
+ '@babel/core': 7.28.6
+ '@babel/helper-module-transforms': 7.28.6(@babel/core@7.28.6)
+ '@babel/helper-plugin-utils': 7.28.6
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/plugin-transform-typescript@7.28.6(@babel/core@7.28.6)':
+ dependencies:
+ '@babel/core': 7.28.6
+ '@babel/helper-annotate-as-pure': 7.27.3
+ '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.28.6)
+ '@babel/helper-plugin-utils': 7.28.6
+ '@babel/helper-skip-transparent-expression-wrappers': 7.27.1
+ '@babel/plugin-syntax-typescript': 7.28.6(@babel/core@7.28.6)
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/preset-typescript@7.28.5(@babel/core@7.28.6)':
+ dependencies:
+ '@babel/core': 7.28.6
+ '@babel/helper-plugin-utils': 7.28.6
+ '@babel/helper-validator-option': 7.27.1
+ '@babel/plugin-syntax-jsx': 7.28.6(@babel/core@7.28.6)
+ '@babel/plugin-transform-modules-commonjs': 7.28.6(@babel/core@7.28.6)
+ '@babel/plugin-transform-typescript': 7.28.6(@babel/core@7.28.6)
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/runtime@7.28.6': {}
+
+ '@babel/template@7.28.6':
+ dependencies:
+ '@babel/code-frame': 7.28.6
+ '@babel/parser': 7.28.6
+ '@babel/types': 7.28.6
+
+ '@babel/traverse@7.28.6':
+ dependencies:
+ '@babel/code-frame': 7.28.6
+ '@babel/generator': 7.28.6
+ '@babel/helper-globals': 7.28.0
+ '@babel/parser': 7.28.6
+ '@babel/template': 7.28.6
+ '@babel/types': 7.28.6
+ debug: 4.4.3
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/types@7.28.6':
+ dependencies:
+ '@babel/helper-string-parser': 7.27.1
+ '@babel/helper-validator-identifier': 7.28.5
+
'@biomejs/biome@2.3.11':
optionalDependencies:
'@biomejs/cli-darwin-arm64': 2.3.11
@@ -1306,6 +3535,17 @@ snapshots:
'@biomejs/cli-win32-x64@2.3.11':
optional: true
+ '@bkrem/react-transition-group@1.3.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
+ dependencies:
+ chain-function: 1.0.1
+ dom-helpers: 3.4.0
+ loose-envify: 1.4.0
+ prop-types: 15.8.1
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
+ react-lifecycles-compat: 3.0.4
+ warning: 3.0.0
+
'@emnapi/core@1.8.1':
dependencies:
'@emnapi/wasi-threads': 1.1.0
@@ -1400,6 +3640,44 @@ snapshots:
'@esbuild/win32-x64@0.27.2':
optional: true
+ '@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.3(react@19.2.3))(react@19.2.3)':
+ dependencies:
+ '@floating-ui/dom': 1.7.4
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
+
+ '@floating-ui/utils@0.2.10': {}
+
+ '@formatjs/fast-memoize@3.0.3':
+ dependencies:
+ tslib: 2.8.1
+
+ '@formatjs/intl-localematcher@0.7.5':
+ dependencies:
+ '@formatjs/fast-memoize': 3.0.3
+ tslib: 2.8.1
+
+ '@fumadocs/ui@16.4.7(@types/react@19.2.8)(fumadocs-core@16.4.7(@types/react@19.2.8)(lucide-react@0.562.0(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react-router@7.12.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react@19.2.3)(zod@4.3.5))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(tailwindcss@4.1.18)':
+ dependencies:
+ fumadocs-core: 16.4.7(@types/react@19.2.8)(lucide-react@0.562.0(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react-router@7.12.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react@19.2.3)(zod@4.3.5)
+ next-themes: 0.4.6(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ postcss-selector-parser: 7.1.1
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
+ tailwind-merge: 3.4.0
+ optionalDependencies:
+ '@types/react': 19.2.8
+ tailwindcss: 4.1.18
+
'@isaacs/balanced-match@4.0.1': {}
'@isaacs/brace-expansion@5.0.0':
@@ -1435,6 +3713,38 @@ snapshots:
'@jridgewell/resolve-uri': 3.1.2
'@jridgewell/sourcemap-codec': 1.5.5
+ '@mdx-js/mdx@3.1.1':
+ dependencies:
+ '@types/estree': 1.0.8
+ '@types/estree-jsx': 1.0.5
+ '@types/hast': 3.0.4
+ '@types/mdx': 2.0.13
+ acorn: 8.15.0
+ collapse-white-space: 2.1.0
+ devlop: 1.1.0
+ estree-util-is-identifier-name: 3.0.0
+ estree-util-scope: 1.0.0
+ estree-walker: 3.0.3
+ hast-util-to-jsx-runtime: 2.3.6
+ markdown-extensions: 2.0.0
+ recma-build-jsx: 1.0.0
+ recma-jsx: 1.0.1(acorn@8.15.0)
+ recma-stringify: 1.0.0
+ rehype-recma: 1.0.0
+ remark-mdx: 3.1.1
+ remark-parse: 11.0.0
+ remark-rehype: 11.1.2
+ source-map: 0.7.6
+ unified: 11.0.5
+ unist-util-position-from-estree: 2.0.0
+ unist-util-stringify-position: 4.0.0
+ unist-util-visit: 5.0.0
+ vfile: 6.0.3
+ transitivePeerDependencies:
+ - supports-color
+
+ '@mjackson/node-fetch-server@0.2.0': {}
+
'@napi-rs/wasm-runtime@1.1.1':
dependencies:
'@emnapi/core': 1.8.1
@@ -1442,6 +3752,8 @@ snapshots:
'@tybys/wasm-util': 0.10.1
optional: true
+ '@orama/orama@3.1.18': {}
+
'@oxc-project/runtime@0.97.0': {}
'@oxc-project/types@0.97.0': {}
@@ -1494,96 +3806,623 @@ snapshots:
'@oxlint/win32-x64@1.39.0':
optional: true
- '@rolldown/binding-android-arm64@1.0.0-beta.50':
- optional: true
+ '@radix-ui/number@1.1.1': {}
- '@rolldown/binding-darwin-arm64@1.0.0-beta.50':
- optional: true
+ '@radix-ui/primitive@1.1.3': {}
- '@rolldown/binding-darwin-x64@1.0.0-beta.50':
- optional: true
+ '@radix-ui/react-accordion@1.2.12(@types/react-dom@19.2.3(@types/react@19.2.8))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
+ dependencies:
+ '@radix-ui/primitive': 1.1.3
+ '@radix-ui/react-collapsible': 1.1.12(@types/react-dom@19.2.3(@types/react@19.2.8))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.8))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.8)(react@19.2.3)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.8)(react@19.2.3)
+ '@radix-ui/react-direction': 1.1.1(@types/react@19.2.8)(react@19.2.3)
+ '@radix-ui/react-id': 1.1.1(@types/react@19.2.8)(react@19.2.3)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.8))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.8)(react@19.2.3)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
+ optionalDependencies:
+ '@types/react': 19.2.8
+ '@types/react-dom': 19.2.3(@types/react@19.2.8)
- '@rolldown/binding-freebsd-x64@1.0.0-beta.50':
- optional: true
+ '@radix-ui/react-arrow@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.8))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
+ dependencies:
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.8))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
+ optionalDependencies:
+ '@types/react': 19.2.8
+ '@types/react-dom': 19.2.3(@types/react@19.2.8)
- '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.50':
- optional: true
+ '@radix-ui/react-collapsible@1.1.12(@types/react-dom@19.2.3(@types/react@19.2.8))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
+ dependencies:
+ '@radix-ui/primitive': 1.1.3
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.8)(react@19.2.3)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.8)(react@19.2.3)
+ '@radix-ui/react-id': 1.1.1(@types/react@19.2.8)(react@19.2.3)
+ '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.8))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.8))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.8)(react@19.2.3)
+ '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.8)(react@19.2.3)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
+ optionalDependencies:
+ '@types/react': 19.2.8
+ '@types/react-dom': 19.2.3(@types/react@19.2.8)
- '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.50':
- optional: true
+ '@radix-ui/react-collection@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.8))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
+ dependencies:
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.8)(react@19.2.3)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.8)(react@19.2.3)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.8))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-slot': 1.2.3(@types/react@19.2.8)(react@19.2.3)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
+ optionalDependencies:
+ '@types/react': 19.2.8
+ '@types/react-dom': 19.2.3(@types/react@19.2.8)
- '@rolldown/binding-linux-arm64-musl@1.0.0-beta.50':
- optional: true
+ '@radix-ui/react-compose-refs@1.1.2(@types/react@19.2.8)(react@19.2.3)':
+ dependencies:
+ react: 19.2.3
+ optionalDependencies:
+ '@types/react': 19.2.8
- '@rolldown/binding-linux-x64-gnu@1.0.0-beta.50':
- optional: true
+ '@radix-ui/react-context@1.1.2(@types/react@19.2.8)(react@19.2.3)':
+ dependencies:
+ react: 19.2.3
+ optionalDependencies:
+ '@types/react': 19.2.8
- '@rolldown/binding-linux-x64-musl@1.0.0-beta.50':
- optional: true
+ '@radix-ui/react-dialog@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.8))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
+ dependencies:
+ '@radix-ui/primitive': 1.1.3
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.8)(react@19.2.3)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.8)(react@19.2.3)
+ '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.8))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.8)(react@19.2.3)
+ '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.8))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-id': 1.1.1(@types/react@19.2.8)(react@19.2.3)
+ '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.8))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.8))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.8))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-slot': 1.2.3(@types/react@19.2.8)(react@19.2.3)
+ '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.8)(react@19.2.3)
+ aria-hidden: 1.2.6
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
+ react-remove-scroll: 2.7.2(@types/react@19.2.8)(react@19.2.3)
+ optionalDependencies:
+ '@types/react': 19.2.8
+ '@types/react-dom': 19.2.3(@types/react@19.2.8)
- '@rolldown/binding-openharmony-arm64@1.0.0-beta.50':
- optional: true
+ '@radix-ui/react-direction@1.1.1(@types/react@19.2.8)(react@19.2.3)':
+ dependencies:
+ react: 19.2.3
+ optionalDependencies:
+ '@types/react': 19.2.8
- '@rolldown/binding-wasm32-wasi@1.0.0-beta.50':
+ '@radix-ui/react-dismissable-layer@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.8))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
dependencies:
- '@napi-rs/wasm-runtime': 1.1.1
- optional: true
+ '@radix-ui/primitive': 1.1.3
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.8)(react@19.2.3)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.8))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.8)(react@19.2.3)
+ '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@19.2.8)(react@19.2.3)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
+ optionalDependencies:
+ '@types/react': 19.2.8
+ '@types/react-dom': 19.2.3(@types/react@19.2.8)
- '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.50':
- optional: true
+ '@radix-ui/react-focus-guards@1.1.3(@types/react@19.2.8)(react@19.2.3)':
+ dependencies:
+ react: 19.2.3
+ optionalDependencies:
+ '@types/react': 19.2.8
- '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.50':
- optional: true
+ '@radix-ui/react-focus-scope@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.8))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
+ dependencies:
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.8)(react@19.2.3)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.8))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.8)(react@19.2.3)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
+ optionalDependencies:
+ '@types/react': 19.2.8
+ '@types/react-dom': 19.2.3(@types/react@19.2.8)
- '@rolldown/binding-win32-x64-msvc@1.0.0-beta.50':
- optional: true
+ '@radix-ui/react-id@1.1.1(@types/react@19.2.8)(react@19.2.3)':
+ dependencies:
+ '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.8)(react@19.2.3)
+ react: 19.2.3
+ optionalDependencies:
+ '@types/react': 19.2.8
- '@rolldown/pluginutils@1.0.0-beta.50': {}
+ '@radix-ui/react-navigation-menu@1.2.14(@types/react-dom@19.2.3(@types/react@19.2.8))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
+ dependencies:
+ '@radix-ui/primitive': 1.1.3
+ '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.8))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.8)(react@19.2.3)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.8)(react@19.2.3)
+ '@radix-ui/react-direction': 1.1.1(@types/react@19.2.8)(react@19.2.3)
+ '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.8))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-id': 1.1.1(@types/react@19.2.8)(react@19.2.3)
+ '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.8))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.8))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.8)(react@19.2.3)
+ '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.8)(react@19.2.3)
+ '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.8)(react@19.2.3)
+ '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.8)(react@19.2.3)
+ '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.3(@types/react@19.2.8))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
+ optionalDependencies:
+ '@types/react': 19.2.8
+ '@types/react-dom': 19.2.3(@types/react@19.2.8)
- '@sindresorhus/is@4.6.0': {}
+ '@radix-ui/react-popover@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.8))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
+ dependencies:
+ '@radix-ui/primitive': 1.1.3
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.8)(react@19.2.3)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.8)(react@19.2.3)
+ '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.8))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.8)(react@19.2.3)
+ '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.8))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-id': 1.1.1(@types/react@19.2.8)(react@19.2.3)
+ '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.8))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.8))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.8))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.8))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-slot': 1.2.3(@types/react@19.2.8)(react@19.2.3)
+ '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.8)(react@19.2.3)
+ aria-hidden: 1.2.6
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
+ react-remove-scroll: 2.7.2(@types/react@19.2.8)(react@19.2.3)
+ optionalDependencies:
+ '@types/react': 19.2.8
+ '@types/react-dom': 19.2.3(@types/react@19.2.8)
- '@sveltejs/acorn-typescript@1.0.8(acorn@8.15.0)':
+ '@radix-ui/react-popper@1.2.8(@types/react-dom@19.2.3(@types/react@19.2.8))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
dependencies:
- acorn: 8.15.0
+ '@floating-ui/react-dom': 2.1.6(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-arrow': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.8))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.8)(react@19.2.3)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.8)(react@19.2.3)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.8))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.8)(react@19.2.3)
+ '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.8)(react@19.2.3)
+ '@radix-ui/react-use-rect': 1.1.1(@types/react@19.2.8)(react@19.2.3)
+ '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.8)(react@19.2.3)
+ '@radix-ui/rect': 1.1.1
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
+ optionalDependencies:
+ '@types/react': 19.2.8
+ '@types/react-dom': 19.2.3(@types/react@19.2.8)
- '@sveltejs/vite-plugin-svelte-inspector@5.0.2(@sveltejs/vite-plugin-svelte@6.2.4(rolldown-vite@7.2.5(@types/node@24.10.9)(jiti@2.6.1)(tsx@4.21.0))(svelte@5.46.4))(rolldown-vite@7.2.5(@types/node@24.10.9)(jiti@2.6.1)(tsx@4.21.0))(svelte@5.46.4)':
+ '@radix-ui/react-portal@1.1.9(@types/react-dom@19.2.3(@types/react@19.2.8))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
dependencies:
- '@sveltejs/vite-plugin-svelte': 6.2.4(rolldown-vite@7.2.5(@types/node@24.10.9)(jiti@2.6.1)(tsx@4.21.0))(svelte@5.46.4)
- obug: 2.1.1
- svelte: 5.46.4
- vite: rolldown-vite@7.2.5(@types/node@24.10.9)(jiti@2.6.1)(tsx@4.21.0)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.8))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.8)(react@19.2.3)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
+ optionalDependencies:
+ '@types/react': 19.2.8
+ '@types/react-dom': 19.2.3(@types/react@19.2.8)
- '@sveltejs/vite-plugin-svelte@6.2.4(rolldown-vite@7.2.5(@types/node@24.10.9)(jiti@2.6.1)(tsx@4.21.0))(svelte@5.46.4)':
+ '@radix-ui/react-presence@1.1.5(@types/react-dom@19.2.3(@types/react@19.2.8))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
dependencies:
- '@sveltejs/vite-plugin-svelte-inspector': 5.0.2(@sveltejs/vite-plugin-svelte@6.2.4(rolldown-vite@7.2.5(@types/node@24.10.9)(jiti@2.6.1)(tsx@4.21.0))(svelte@5.46.4))(rolldown-vite@7.2.5(@types/node@24.10.9)(jiti@2.6.1)(tsx@4.21.0))(svelte@5.46.4)
- deepmerge: 4.3.1
- magic-string: 0.30.21
- obug: 2.1.1
- svelte: 5.46.4
- vite: rolldown-vite@7.2.5(@types/node@24.10.9)(jiti@2.6.1)(tsx@4.21.0)
- vitefu: 1.1.1(rolldown-vite@7.2.5(@types/node@24.10.9)(jiti@2.6.1)(tsx@4.21.0))
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.8)(react@19.2.3)
+ '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.8)(react@19.2.3)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
+ optionalDependencies:
+ '@types/react': 19.2.8
+ '@types/react-dom': 19.2.3(@types/react@19.2.8)
- '@tailwindcss/node@4.1.18':
+ '@radix-ui/react-primitive@2.1.3(@types/react-dom@19.2.3(@types/react@19.2.8))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
dependencies:
- '@jridgewell/remapping': 2.3.5
- enhanced-resolve: 5.18.4
- jiti: 2.6.1
- lightningcss: 1.30.2
- magic-string: 0.30.21
- source-map-js: 1.2.1
- tailwindcss: 4.1.18
+ '@radix-ui/react-slot': 1.2.3(@types/react@19.2.8)(react@19.2.3)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
+ optionalDependencies:
+ '@types/react': 19.2.8
+ '@types/react-dom': 19.2.3(@types/react@19.2.8)
- '@tailwindcss/oxide-android-arm64@4.1.18':
- optional: true
+ '@radix-ui/react-roving-focus@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.8))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
+ dependencies:
+ '@radix-ui/primitive': 1.1.3
+ '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.8))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.8)(react@19.2.3)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.8)(react@19.2.3)
+ '@radix-ui/react-direction': 1.1.1(@types/react@19.2.8)(react@19.2.3)
+ '@radix-ui/react-id': 1.1.1(@types/react@19.2.8)(react@19.2.3)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.8))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.8)(react@19.2.3)
+ '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.8)(react@19.2.3)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
+ optionalDependencies:
+ '@types/react': 19.2.8
+ '@types/react-dom': 19.2.3(@types/react@19.2.8)
- '@tailwindcss/oxide-darwin-arm64@4.1.18':
- optional: true
+ '@radix-ui/react-scroll-area@1.2.10(@types/react-dom@19.2.3(@types/react@19.2.8))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
+ dependencies:
+ '@radix-ui/number': 1.1.1
+ '@radix-ui/primitive': 1.1.3
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.8)(react@19.2.3)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.8)(react@19.2.3)
+ '@radix-ui/react-direction': 1.1.1(@types/react@19.2.8)(react@19.2.3)
+ '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.8))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.8))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.8)(react@19.2.3)
+ '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.8)(react@19.2.3)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
+ optionalDependencies:
+ '@types/react': 19.2.8
+ '@types/react-dom': 19.2.3(@types/react@19.2.8)
- '@tailwindcss/oxide-darwin-x64@4.1.18':
- optional: true
+ '@radix-ui/react-slot@1.2.3(@types/react@19.2.8)(react@19.2.3)':
+ dependencies:
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.8)(react@19.2.3)
+ react: 19.2.3
+ optionalDependencies:
+ '@types/react': 19.2.8
- '@tailwindcss/oxide-freebsd-x64@4.1.18':
- optional: true
+ '@radix-ui/react-slot@1.2.4(@types/react@19.2.8)(react@19.2.3)':
+ dependencies:
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.8)(react@19.2.3)
+ react: 19.2.3
+ optionalDependencies:
+ '@types/react': 19.2.8
+
+ '@radix-ui/react-tabs@1.1.13(@types/react-dom@19.2.3(@types/react@19.2.8))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
+ dependencies:
+ '@radix-ui/primitive': 1.1.3
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.8)(react@19.2.3)
+ '@radix-ui/react-direction': 1.1.1(@types/react@19.2.8)(react@19.2.3)
+ '@radix-ui/react-id': 1.1.1(@types/react@19.2.8)(react@19.2.3)
+ '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.8))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.8))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.8))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.8)(react@19.2.3)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
+ optionalDependencies:
+ '@types/react': 19.2.8
+ '@types/react-dom': 19.2.3(@types/react@19.2.8)
+
+ '@radix-ui/react-use-callback-ref@1.1.1(@types/react@19.2.8)(react@19.2.3)':
+ dependencies:
+ react: 19.2.3
+ optionalDependencies:
+ '@types/react': 19.2.8
+
+ '@radix-ui/react-use-controllable-state@1.2.2(@types/react@19.2.8)(react@19.2.3)':
+ dependencies:
+ '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.2.8)(react@19.2.3)
+ '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.8)(react@19.2.3)
+ react: 19.2.3
+ optionalDependencies:
+ '@types/react': 19.2.8
+
+ '@radix-ui/react-use-effect-event@0.0.2(@types/react@19.2.8)(react@19.2.3)':
+ dependencies:
+ '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.8)(react@19.2.3)
+ react: 19.2.3
+ optionalDependencies:
+ '@types/react': 19.2.8
+
+ '@radix-ui/react-use-escape-keydown@1.1.1(@types/react@19.2.8)(react@19.2.3)':
+ dependencies:
+ '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.8)(react@19.2.3)
+ react: 19.2.3
+ optionalDependencies:
+ '@types/react': 19.2.8
+
+ '@radix-ui/react-use-layout-effect@1.1.1(@types/react@19.2.8)(react@19.2.3)':
+ dependencies:
+ react: 19.2.3
+ optionalDependencies:
+ '@types/react': 19.2.8
+
+ '@radix-ui/react-use-previous@1.1.1(@types/react@19.2.8)(react@19.2.3)':
+ dependencies:
+ react: 19.2.3
+ optionalDependencies:
+ '@types/react': 19.2.8
+
+ '@radix-ui/react-use-rect@1.1.1(@types/react@19.2.8)(react@19.2.3)':
+ dependencies:
+ '@radix-ui/rect': 1.1.1
+ react: 19.2.3
+ optionalDependencies:
+ '@types/react': 19.2.8
+
+ '@radix-ui/react-use-size@1.1.1(@types/react@19.2.8)(react@19.2.3)':
+ dependencies:
+ '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.8)(react@19.2.3)
+ react: 19.2.3
+ optionalDependencies:
+ '@types/react': 19.2.8
+
+ '@radix-ui/react-visually-hidden@1.2.3(@types/react-dom@19.2.3(@types/react@19.2.8))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
+ dependencies:
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.8))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
+ optionalDependencies:
+ '@types/react': 19.2.8
+ '@types/react-dom': 19.2.3(@types/react@19.2.8)
+
+ '@radix-ui/rect@1.1.1': {}
+
+ '@react-router/dev@7.12.0(@react-router/serve@7.12.0(react-router@7.12.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(typescript@5.9.3))(@types/node@25.0.9)(jiti@2.6.1)(react-router@7.12.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(rolldown-vite@7.2.5(@types/node@25.0.9)(jiti@2.6.1)(tsx@4.21.0))(tsx@4.21.0)(typescript@5.9.3)':
+ dependencies:
+ '@babel/core': 7.28.6
+ '@babel/generator': 7.28.6
+ '@babel/parser': 7.28.6
+ '@babel/plugin-syntax-jsx': 7.28.6(@babel/core@7.28.6)
+ '@babel/preset-typescript': 7.28.5(@babel/core@7.28.6)
+ '@babel/traverse': 7.28.6
+ '@babel/types': 7.28.6
+ '@react-router/node': 7.12.0(react-router@7.12.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(typescript@5.9.3)
+ '@remix-run/node-fetch-server': 0.9.0
+ arg: 5.0.2
+ babel-dead-code-elimination: 1.0.12
+ chokidar: 4.0.3
+ dedent: 1.7.1
+ es-module-lexer: 1.7.0
+ exit-hook: 2.2.1
+ isbot: 5.1.33
+ jsesc: 3.0.2
+ lodash: 4.17.21
+ p-map: 7.0.4
+ pathe: 1.1.2
+ picocolors: 1.1.1
+ pkg-types: 2.3.0
+ prettier: 3.8.0
+ react-refresh: 0.14.2
+ react-router: 7.12.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ semver: 7.7.3
+ tinyglobby: 0.2.15
+ valibot: 1.2.0(typescript@5.9.3)
+ vite: rolldown-vite@7.2.5(@types/node@25.0.9)(jiti@2.6.1)(tsx@4.21.0)
+ vite-node: 3.2.4(@types/node@25.0.9)(jiti@2.6.1)(tsx@4.21.0)
+ optionalDependencies:
+ '@react-router/serve': 7.12.0(react-router@7.12.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(typescript@5.9.3)
+ typescript: 5.9.3
+ transitivePeerDependencies:
+ - '@types/node'
+ - babel-plugin-macros
+ - esbuild
+ - jiti
+ - less
+ - sass
+ - sass-embedded
+ - stylus
+ - sugarss
+ - supports-color
+ - terser
+ - tsx
+ - yaml
+
+ '@react-router/express@7.12.0(express@4.22.1)(react-router@7.12.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(typescript@5.9.3)':
+ dependencies:
+ '@react-router/node': 7.12.0(react-router@7.12.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(typescript@5.9.3)
+ express: 4.22.1
+ react-router: 7.12.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ optionalDependencies:
+ typescript: 5.9.3
+
+ '@react-router/node@7.12.0(react-router@7.12.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(typescript@5.9.3)':
+ dependencies:
+ '@mjackson/node-fetch-server': 0.2.0
+ react-router: 7.12.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ optionalDependencies:
+ typescript: 5.9.3
+
+ '@react-router/serve@7.12.0(react-router@7.12.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(typescript@5.9.3)':
+ dependencies:
+ '@mjackson/node-fetch-server': 0.2.0
+ '@react-router/express': 7.12.0(express@4.22.1)(react-router@7.12.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(typescript@5.9.3)
+ '@react-router/node': 7.12.0(react-router@7.12.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(typescript@5.9.3)
+ compression: 1.8.1
+ express: 4.22.1
+ get-port: 5.1.1
+ morgan: 1.10.1
+ react-router: 7.12.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ source-map-support: 0.5.21
+ transitivePeerDependencies:
+ - supports-color
+ - typescript
+
+ '@remix-run/node-fetch-server@0.9.0': {}
+
+ '@rolldown/binding-android-arm64@1.0.0-beta.50':
+ optional: true
+
+ '@rolldown/binding-darwin-arm64@1.0.0-beta.50':
+ optional: true
+
+ '@rolldown/binding-darwin-x64@1.0.0-beta.50':
+ optional: true
+
+ '@rolldown/binding-freebsd-x64@1.0.0-beta.50':
+ optional: true
+
+ '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.50':
+ optional: true
+
+ '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.50':
+ optional: true
+
+ '@rolldown/binding-linux-arm64-musl@1.0.0-beta.50':
+ optional: true
+
+ '@rolldown/binding-linux-x64-gnu@1.0.0-beta.50':
+ optional: true
+
+ '@rolldown/binding-linux-x64-musl@1.0.0-beta.50':
+ optional: true
+
+ '@rolldown/binding-openharmony-arm64@1.0.0-beta.50':
+ optional: true
+
+ '@rolldown/binding-wasm32-wasi@1.0.0-beta.50':
+ dependencies:
+ '@napi-rs/wasm-runtime': 1.1.1
+ optional: true
+
+ '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.50':
+ optional: true
+
+ '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.50':
+ optional: true
+
+ '@rolldown/binding-win32-x64-msvc@1.0.0-beta.50':
+ optional: true
+
+ '@rolldown/pluginutils@1.0.0-beta.50': {}
+
+ '@rollup/rollup-darwin-arm64@4.55.2':
+ optional: true
+
+ '@rollup/rollup-linux-x64-gnu@4.55.2':
+ optional: true
+
+ '@shikijs/core@3.21.0':
+ dependencies:
+ '@shikijs/types': 3.21.0
+ '@shikijs/vscode-textmate': 10.0.2
+ '@types/hast': 3.0.4
+ hast-util-to-html: 9.0.5
+
+ '@shikijs/engine-javascript@3.21.0':
+ dependencies:
+ '@shikijs/types': 3.21.0
+ '@shikijs/vscode-textmate': 10.0.2
+ oniguruma-to-es: 4.3.4
+
+ '@shikijs/engine-oniguruma@3.21.0':
+ dependencies:
+ '@shikijs/types': 3.21.0
+ '@shikijs/vscode-textmate': 10.0.2
+
+ '@shikijs/langs@3.21.0':
+ dependencies:
+ '@shikijs/types': 3.21.0
+
+ '@shikijs/rehype@3.21.0':
+ dependencies:
+ '@shikijs/types': 3.21.0
+ '@types/hast': 3.0.4
+ hast-util-to-string: 3.0.1
+ shiki: 3.21.0
+ unified: 11.0.5
+ unist-util-visit: 5.0.0
+
+ '@shikijs/themes@3.21.0':
+ dependencies:
+ '@shikijs/types': 3.21.0
+
+ '@shikijs/transformers@3.21.0':
+ dependencies:
+ '@shikijs/core': 3.21.0
+ '@shikijs/types': 3.21.0
+
+ '@shikijs/types@3.21.0':
+ dependencies:
+ '@shikijs/vscode-textmate': 10.0.2
+ '@types/hast': 3.0.4
+
+ '@shikijs/vscode-textmate@10.0.2': {}
+
+ '@sindresorhus/is@4.6.0': {}
+
+ '@solid-primitives/event-listener@2.4.3(solid-js@1.9.10)':
+ dependencies:
+ '@solid-primitives/utils': 6.3.2(solid-js@1.9.10)
+ solid-js: 1.9.10
+
+ '@solid-primitives/keyboard@1.3.3(solid-js@1.9.10)':
+ dependencies:
+ '@solid-primitives/event-listener': 2.4.3(solid-js@1.9.10)
+ '@solid-primitives/rootless': 1.5.2(solid-js@1.9.10)
+ '@solid-primitives/utils': 6.3.2(solid-js@1.9.10)
+ solid-js: 1.9.10
+
+ '@solid-primitives/resize-observer@2.1.3(solid-js@1.9.10)':
+ dependencies:
+ '@solid-primitives/event-listener': 2.4.3(solid-js@1.9.10)
+ '@solid-primitives/rootless': 1.5.2(solid-js@1.9.10)
+ '@solid-primitives/static-store': 0.1.2(solid-js@1.9.10)
+ '@solid-primitives/utils': 6.3.2(solid-js@1.9.10)
+ solid-js: 1.9.10
+
+ '@solid-primitives/rootless@1.5.2(solid-js@1.9.10)':
+ dependencies:
+ '@solid-primitives/utils': 6.3.2(solid-js@1.9.10)
+ solid-js: 1.9.10
+
+ '@solid-primitives/static-store@0.1.2(solid-js@1.9.10)':
+ dependencies:
+ '@solid-primitives/utils': 6.3.2(solid-js@1.9.10)
+ solid-js: 1.9.10
+
+ '@solid-primitives/utils@6.3.2(solid-js@1.9.10)':
+ dependencies:
+ solid-js: 1.9.10
+
+ '@standard-schema/spec@1.1.0': {}
+
+ '@sveltejs/acorn-typescript@1.0.8(acorn@8.15.0)':
+ dependencies:
+ acorn: 8.15.0
+
+ '@sveltejs/vite-plugin-svelte-inspector@5.0.2(@sveltejs/vite-plugin-svelte@6.2.4(rolldown-vite@7.2.5(@types/node@24.10.9)(jiti@2.6.1)(tsx@4.21.0))(svelte@5.46.4))(rolldown-vite@7.2.5(@types/node@24.10.9)(jiti@2.6.1)(tsx@4.21.0))(svelte@5.46.4)':
+ dependencies:
+ '@sveltejs/vite-plugin-svelte': 6.2.4(rolldown-vite@7.2.5(@types/node@24.10.9)(jiti@2.6.1)(tsx@4.21.0))(svelte@5.46.4)
+ obug: 2.1.1
+ svelte: 5.46.4
+ vite: rolldown-vite@7.2.5(@types/node@24.10.9)(jiti@2.6.1)(tsx@4.21.0)
+
+ '@sveltejs/vite-plugin-svelte@6.2.4(rolldown-vite@7.2.5(@types/node@24.10.9)(jiti@2.6.1)(tsx@4.21.0))(svelte@5.46.4)':
+ dependencies:
+ '@sveltejs/vite-plugin-svelte-inspector': 5.0.2(@sveltejs/vite-plugin-svelte@6.2.4(rolldown-vite@7.2.5(@types/node@24.10.9)(jiti@2.6.1)(tsx@4.21.0))(svelte@5.46.4))(rolldown-vite@7.2.5(@types/node@24.10.9)(jiti@2.6.1)(tsx@4.21.0))(svelte@5.46.4)
+ deepmerge: 4.3.1
+ magic-string: 0.30.21
+ obug: 2.1.1
+ svelte: 5.46.4
+ vite: rolldown-vite@7.2.5(@types/node@24.10.9)(jiti@2.6.1)(tsx@4.21.0)
+ vitefu: 1.1.1(rolldown-vite@7.2.5(@types/node@24.10.9)(jiti@2.6.1)(tsx@4.21.0))
+
+ '@tailwindcss/node@4.1.18':
+ dependencies:
+ '@jridgewell/remapping': 2.3.5
+ enhanced-resolve: 5.18.4
+ jiti: 2.6.1
+ lightningcss: 1.30.2
+ magic-string: 0.30.21
+ source-map-js: 1.2.1
+ tailwindcss: 4.1.18
+
+ '@tailwindcss/oxide-android-arm64@4.1.18':
+ optional: true
+
+ '@tailwindcss/oxide-darwin-arm64@4.1.18':
+ optional: true
+
+ '@tailwindcss/oxide-darwin-x64@4.1.18':
+ optional: true
+
+ '@tailwindcss/oxide-freebsd-x64@4.1.18':
+ optional: true
'@tailwindcss/oxide-linux-arm-gnueabihf@4.1.18':
optional: true
@@ -1631,6 +4470,81 @@ snapshots:
tailwindcss: 4.1.18
vite: rolldown-vite@7.2.5(@types/node@24.10.9)(jiti@2.6.1)(tsx@4.21.0)
+ '@tailwindcss/vite@4.1.18(rolldown-vite@7.2.5(@types/node@25.0.9)(jiti@2.6.1)(tsx@4.21.0))':
+ dependencies:
+ '@tailwindcss/node': 4.1.18
+ '@tailwindcss/oxide': 4.1.18
+ tailwindcss: 4.1.18
+ vite: rolldown-vite@7.2.5(@types/node@25.0.9)(jiti@2.6.1)(tsx@4.21.0)
+
+ '@tanstack/devtools-client@0.0.5':
+ dependencies:
+ '@tanstack/devtools-event-client': 0.4.0
+
+ '@tanstack/devtools-event-bus@0.4.0':
+ dependencies:
+ ws: 8.19.0
+ transitivePeerDependencies:
+ - bufferutil
+ - utf-8-validate
+
+ '@tanstack/devtools-event-client@0.4.0': {}
+
+ '@tanstack/devtools-ui@0.4.4(csstype@3.2.3)(solid-js@1.9.10)':
+ dependencies:
+ clsx: 2.1.1
+ goober: 2.1.18(csstype@3.2.3)
+ solid-js: 1.9.10
+ transitivePeerDependencies:
+ - csstype
+
+ '@tanstack/devtools-vite@0.4.1(rolldown-vite@7.2.5(@types/node@25.0.9)(jiti@2.6.1)(tsx@4.21.0))':
+ dependencies:
+ '@babel/core': 7.28.6
+ '@babel/generator': 7.28.6
+ '@babel/parser': 7.28.6
+ '@babel/traverse': 7.28.6
+ '@babel/types': 7.28.6
+ '@tanstack/devtools-client': 0.0.5
+ '@tanstack/devtools-event-bus': 0.4.0
+ chalk: 5.6.2
+ launch-editor: 2.12.0
+ picomatch: 4.0.3
+ vite: rolldown-vite@7.2.5(@types/node@25.0.9)(jiti@2.6.1)(tsx@4.21.0)
+ transitivePeerDependencies:
+ - bufferutil
+ - supports-color
+ - utf-8-validate
+
+ '@tanstack/devtools@0.10.3(csstype@3.2.3)(solid-js@1.9.10)':
+ dependencies:
+ '@solid-primitives/event-listener': 2.4.3(solid-js@1.9.10)
+ '@solid-primitives/keyboard': 1.3.3(solid-js@1.9.10)
+ '@solid-primitives/resize-observer': 2.1.3(solid-js@1.9.10)
+ '@tanstack/devtools-client': 0.0.5
+ '@tanstack/devtools-event-bus': 0.4.0
+ '@tanstack/devtools-ui': 0.4.4(csstype@3.2.3)(solid-js@1.9.10)
+ clsx: 2.1.1
+ goober: 2.1.18(csstype@3.2.3)
+ solid-js: 1.9.10
+ transitivePeerDependencies:
+ - bufferutil
+ - csstype
+ - utf-8-validate
+
+ '@tanstack/react-devtools@0.9.2(@types/react-dom@19.2.3(@types/react@19.2.8))(@types/react@19.2.8)(csstype@3.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(solid-js@1.9.10)':
+ dependencies:
+ '@tanstack/devtools': 0.10.3(csstype@3.2.3)(solid-js@1.9.10)
+ '@types/react': 19.2.8
+ '@types/react-dom': 19.2.3(@types/react@19.2.8)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
+ transitivePeerDependencies:
+ - bufferutil
+ - csstype
+ - solid-js
+ - utf-8-validate
+
'@tauri-apps/api@2.9.1': {}
'@tauri-apps/cli-darwin-arm64@2.9.6':
@@ -1699,18 +4613,79 @@ snapshots:
tslib: 2.8.1
optional: true
+ '@types/d3-hierarchy@1.1.11': {}
+
+ '@types/debug@4.1.12':
+ dependencies:
+ '@types/ms': 2.1.0
+
+ '@types/estree-jsx@1.0.5':
+ dependencies:
+ '@types/estree': 1.0.8
+
'@types/estree@1.0.8': {}
+ '@types/hast@3.0.4':
+ dependencies:
+ '@types/unist': 3.0.3
+
+ '@types/mdast@4.0.4':
+ dependencies:
+ '@types/unist': 3.0.3
+
+ '@types/mdx@2.0.13': {}
+
+ '@types/ms@2.1.0': {}
+
'@types/node@24.10.9':
dependencies:
undici-types: 7.16.0
+ '@types/node@25.0.9':
+ dependencies:
+ undici-types: 7.16.0
+
'@types/prismjs@1.26.5': {}
+ '@types/react-dom@19.2.3(@types/react@19.2.8)':
+ dependencies:
+ '@types/react': 19.2.8
+
+ '@types/react@19.2.8':
+ dependencies:
+ csstype: 3.2.3
+
+ '@types/unist@2.0.11': {}
+
+ '@types/unist@3.0.3': {}
+
+ '@ungap/structured-clone@1.3.0': {}
+
+ accepts@1.3.8:
+ dependencies:
+ mime-types: 2.1.35
+ negotiator: 0.6.3
+
+ acorn-jsx@5.3.2(acorn@8.15.0):
+ dependencies:
+ acorn: 8.15.0
+
acorn@8.15.0: {}
+ arg@5.0.2: {}
+
+ argparse@2.0.1: {}
+
+ aria-hidden@1.2.6:
+ dependencies:
+ tslib: 2.8.1
+
aria-query@5.3.2: {}
+ array-flatten@1.1.1: {}
+
+ astring@1.9.0: {}
+
asynckit@0.4.0: {}
autoprefixer@10.4.23(postcss@8.5.6):
@@ -1736,8 +4711,40 @@ snapshots:
axobject-query@4.1.0: {}
+ babel-dead-code-elimination@1.0.12:
+ dependencies:
+ '@babel/core': 7.28.6
+ '@babel/parser': 7.28.6
+ '@babel/traverse': 7.28.6
+ '@babel/types': 7.28.6
+ transitivePeerDependencies:
+ - supports-color
+
+ bail@2.0.2: {}
+
baseline-browser-mapping@2.9.15: {}
+ basic-auth@2.0.1:
+ dependencies:
+ safe-buffer: 5.1.2
+
+ body-parser@1.20.4:
+ dependencies:
+ bytes: 3.1.2
+ content-type: 1.0.5
+ debug: 2.6.9
+ depd: 2.0.0
+ destroy: 1.2.0
+ http-errors: 2.0.1
+ iconv-lite: 0.4.24
+ on-finished: 2.4.1
+ qs: 6.14.1
+ raw-body: 2.5.3
+ type-is: 1.6.18
+ unpipe: 1.0.0
+ transitivePeerDependencies:
+ - supports-color
+
browserslist@4.28.1:
dependencies:
baseline-browser-mapping: 2.9.15
@@ -1746,33 +4753,170 @@ snapshots:
node-releases: 2.0.27
update-browserslist-db: 1.2.3(browserslist@4.28.1)
- call-bind-apply-helpers@1.0.2:
+ buffer-from@1.1.2: {}
+
+ bytes@3.1.2: {}
+
+ cac@6.7.14: {}
+
+ call-bind-apply-helpers@1.0.2:
+ dependencies:
+ es-errors: 1.3.0
+ function-bind: 1.1.2
+
+ call-bound@1.0.4:
+ dependencies:
+ call-bind-apply-helpers: 1.0.2
+ get-intrinsic: 1.3.0
+
+ caniuse-lite@1.0.30001764: {}
+
+ ccount@2.0.1: {}
+
+ chain-function@1.0.1: {}
+
+ chalk@5.6.2: {}
+
+ char-regex@1.0.2: {}
+
+ character-entities-html4@2.1.0: {}
+
+ character-entities-legacy@3.0.0: {}
+
+ character-entities@2.0.2: {}
+
+ character-reference-invalid@2.0.1: {}
+
+ chokidar@4.0.3:
+ dependencies:
+ readdirp: 4.1.2
+
+ chokidar@5.0.0:
+ dependencies:
+ readdirp: 5.0.0
+
+ class-variance-authority@0.7.1:
+ dependencies:
+ clsx: 2.1.1
+
+ classnames@2.5.1: {}
+
+ clone@1.0.4:
+ optional: true
+
+ clone@2.1.2: {}
+
+ clsx@2.1.1: {}
+
+ collapse-white-space@2.1.0: {}
+
+ combined-stream@1.0.8:
+ dependencies:
+ delayed-stream: 1.0.0
+
+ comma-separated-tokens@2.0.3: {}
+
+ compressible@2.0.18:
+ dependencies:
+ mime-db: 1.52.0
+
+ compression@1.8.1:
+ dependencies:
+ bytes: 3.1.2
+ compressible: 2.0.18
+ debug: 2.6.9
+ negotiator: 0.6.4
+ on-headers: 1.1.0
+ safe-buffer: 5.2.1
+ vary: 1.1.2
+ transitivePeerDependencies:
+ - supports-color
+
+ compute-scroll-into-view@3.1.1: {}
+
+ confbox@0.2.2: {}
+
+ consola@3.4.2: {}
+
+ console.table@0.10.0:
+ dependencies:
+ easy-table: 1.1.0
+
+ content-disposition@0.5.4:
+ dependencies:
+ safe-buffer: 5.2.1
+
+ content-type@1.0.5: {}
+
+ convert-source-map@2.0.0: {}
+
+ cookie-signature@1.0.7: {}
+
+ cookie@0.7.2: {}
+
+ cookie@1.1.1: {}
+
+ cssesc@3.0.0: {}
+
+ csstype@3.2.3: {}
+
+ d3-color@3.1.0: {}
+
+ d3-dispatch@3.0.1: {}
+
+ d3-drag@3.0.0:
dependencies:
- es-errors: 1.3.0
- function-bind: 1.1.2
+ d3-dispatch: 3.0.1
+ d3-selection: 3.0.0
- caniuse-lite@1.0.30001764: {}
+ d3-ease@3.0.1: {}
- char-regex@1.0.2: {}
+ d3-hierarchy@1.1.9: {}
- chokidar@4.0.3:
+ d3-interpolate@3.0.1:
dependencies:
- readdirp: 4.1.2
+ d3-color: 3.1.0
- clone@1.0.4:
- optional: true
+ d3-path@1.0.9: {}
- clsx@2.1.1: {}
+ d3-selection@3.0.0: {}
- combined-stream@1.0.8:
+ d3-shape@1.3.7:
dependencies:
- delayed-stream: 1.0.0
+ d3-path: 1.0.9
- consola@3.4.2: {}
+ d3-timer@3.0.1: {}
- console.table@0.10.0:
+ d3-transition@3.0.1(d3-selection@3.0.0):
dependencies:
- easy-table: 1.1.0
+ d3-color: 3.1.0
+ d3-dispatch: 3.0.1
+ d3-ease: 3.0.1
+ d3-interpolate: 3.0.1
+ d3-selection: 3.0.0
+ d3-timer: 3.0.1
+
+ d3-zoom@3.0.0:
+ dependencies:
+ d3-dispatch: 3.0.1
+ d3-drag: 3.0.0
+ d3-interpolate: 3.0.1
+ d3-selection: 3.0.0
+ d3-transition: 3.0.1(d3-selection@3.0.0)
+
+ debug@2.6.9:
+ dependencies:
+ ms: 2.0.0
+
+ debug@4.4.3:
+ dependencies:
+ ms: 2.1.3
+
+ decode-named-character-reference@1.3.0:
+ dependencies:
+ character-entities: 2.0.2
+
+ dedent@1.7.1: {}
deepmerge@4.3.1: {}
@@ -1783,10 +4927,26 @@ snapshots:
delayed-stream@1.0.0: {}
+ depd@2.0.0: {}
+
+ dequal@2.0.3: {}
+
+ destroy@1.2.0: {}
+
detect-libc@2.1.2: {}
+ detect-node-es@1.1.0: {}
+
devalue@5.6.2: {}
+ devlop@1.1.0:
+ dependencies:
+ dequal: 2.0.3
+
+ dom-helpers@3.4.0:
+ dependencies:
+ '@babel/runtime': 7.28.6
+
dunder-proto@1.0.1:
dependencies:
call-bind-apply-helpers: 1.0.2
@@ -1797,10 +4957,14 @@ snapshots:
optionalDependencies:
wcwidth: 1.0.1
+ ee-first@1.1.1: {}
+
electron-to-chromium@1.5.267: {}
emojilib@2.4.0: {}
+ encodeurl@2.0.0: {}
+
enhanced-resolve@5.18.4:
dependencies:
graceful-fs: 4.2.11
@@ -1810,6 +4974,8 @@ snapshots:
es-errors@1.3.0: {}
+ es-module-lexer@1.7.0: {}
+
es-object-atoms@1.1.1:
dependencies:
es-errors: 1.3.0
@@ -1821,6 +4987,20 @@ snapshots:
has-tostringtag: 1.0.2
hasown: 2.0.2
+ esast-util-from-estree@2.0.0:
+ dependencies:
+ '@types/estree-jsx': 1.0.5
+ devlop: 1.1.0
+ estree-util-visit: 2.0.0
+ unist-util-position-from-estree: 2.0.0
+
+ esast-util-from-js@2.0.1:
+ dependencies:
+ '@types/estree-jsx': 1.0.5
+ acorn: 8.15.0
+ esast-util-from-estree: 2.0.0
+ vfile-message: 4.0.3
+
esbuild@0.27.2:
optionalDependencies:
'@esbuild/aix-ppc64': 0.27.2
@@ -1852,16 +5032,113 @@ snapshots:
escalade@3.2.0: {}
+ escape-html@1.0.3: {}
+
+ escape-string-regexp@5.0.0: {}
+
esm-env@1.2.2: {}
esrap@2.2.1:
dependencies:
'@jridgewell/sourcemap-codec': 1.5.5
+ estree-util-attach-comments@3.0.0:
+ dependencies:
+ '@types/estree': 1.0.8
+
+ estree-util-build-jsx@3.0.1:
+ dependencies:
+ '@types/estree-jsx': 1.0.5
+ devlop: 1.1.0
+ estree-util-is-identifier-name: 3.0.0
+ estree-walker: 3.0.3
+
+ estree-util-is-identifier-name@3.0.0: {}
+
+ estree-util-scope@1.0.0:
+ dependencies:
+ '@types/estree': 1.0.8
+ devlop: 1.1.0
+
+ estree-util-to-js@2.0.0:
+ dependencies:
+ '@types/estree-jsx': 1.0.5
+ astring: 1.9.0
+ source-map: 0.7.6
+
+ estree-util-value-to-estree@3.5.0:
+ dependencies:
+ '@types/estree': 1.0.8
+
+ estree-util-visit@2.0.0:
+ dependencies:
+ '@types/estree-jsx': 1.0.5
+ '@types/unist': 3.0.3
+
+ estree-walker@3.0.3:
+ dependencies:
+ '@types/estree': 1.0.8
+
+ etag@1.8.1: {}
+
+ exit-hook@2.2.1: {}
+
+ express@4.22.1:
+ dependencies:
+ accepts: 1.3.8
+ array-flatten: 1.1.1
+ body-parser: 1.20.4
+ content-disposition: 0.5.4
+ content-type: 1.0.5
+ cookie: 0.7.2
+ cookie-signature: 1.0.7
+ debug: 2.6.9
+ depd: 2.0.0
+ encodeurl: 2.0.0
+ escape-html: 1.0.3
+ etag: 1.8.1
+ finalhandler: 1.3.2
+ fresh: 0.5.2
+ http-errors: 2.0.1
+ merge-descriptors: 1.0.3
+ methods: 1.1.2
+ on-finished: 2.4.1
+ parseurl: 1.3.3
+ path-to-regexp: 0.1.12
+ proxy-addr: 2.0.7
+ qs: 6.14.1
+ range-parser: 1.2.1
+ safe-buffer: 5.2.1
+ send: 0.19.2
+ serve-static: 1.16.3
+ setprototypeof: 1.2.0
+ statuses: 2.0.2
+ type-is: 1.6.18
+ utils-merge: 1.0.1
+ vary: 1.1.2
+ transitivePeerDependencies:
+ - supports-color
+
+ exsolve@1.0.8: {}
+
+ extend@3.0.2: {}
+
fdir@6.5.0(picomatch@4.0.3):
optionalDependencies:
picomatch: 4.0.3
+ finalhandler@1.3.2:
+ dependencies:
+ debug: 2.6.9
+ encodeurl: 2.0.0
+ escape-html: 1.0.3
+ on-finished: 2.4.1
+ parseurl: 1.3.3
+ statuses: 2.0.2
+ unpipe: 1.0.0
+ transitivePeerDependencies:
+ - supports-color
+
follow-redirects@1.15.11: {}
form-data@4.0.5:
@@ -1872,13 +5149,113 @@ snapshots:
hasown: 2.0.2
mime-types: 2.1.35
+ forwarded@0.2.0: {}
+
fraction.js@5.3.4: {}
+ framer-motion@12.27.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3):
+ dependencies:
+ motion-dom: 12.27.1
+ motion-utils: 12.24.10
+ tslib: 2.8.1
+ optionalDependencies:
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
+
+ fresh@0.5.2: {}
+
fsevents@2.3.3:
optional: true
+ fumadocs-core@16.4.7(@types/react@19.2.8)(lucide-react@0.562.0(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react-router@7.12.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react@19.2.3)(zod@4.3.5):
+ dependencies:
+ '@formatjs/intl-localematcher': 0.7.5
+ '@orama/orama': 3.1.18
+ '@shikijs/rehype': 3.21.0
+ '@shikijs/transformers': 3.21.0
+ estree-util-value-to-estree: 3.5.0
+ github-slugger: 2.0.0
+ hast-util-to-estree: 3.1.3
+ hast-util-to-jsx-runtime: 2.3.6
+ image-size: 2.0.2
+ negotiator: 1.0.0
+ npm-to-yarn: 3.0.1
+ path-to-regexp: 8.3.0
+ remark: 15.0.1
+ remark-gfm: 4.0.1
+ remark-rehype: 11.1.2
+ scroll-into-view-if-needed: 3.1.0
+ shiki: 3.21.0
+ tinyglobby: 0.2.15
+ unist-util-visit: 5.0.0
+ optionalDependencies:
+ '@types/react': 19.2.8
+ lucide-react: 0.562.0(react@19.2.3)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
+ react-router: 7.12.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ zod: 4.3.5
+ transitivePeerDependencies:
+ - supports-color
+
+ fumadocs-mdx@14.2.6(@types/react@19.2.8)(fumadocs-core@16.4.7(@types/react@19.2.8)(lucide-react@0.562.0(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react-router@7.12.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react@19.2.3)(zod@4.3.5))(react@19.2.3)(rolldown-vite@7.2.5(@types/node@25.0.9)(jiti@2.6.1)(tsx@4.21.0)):
+ dependencies:
+ '@mdx-js/mdx': 3.1.1
+ '@standard-schema/spec': 1.1.0
+ chokidar: 5.0.0
+ esbuild: 0.27.2
+ estree-util-value-to-estree: 3.5.0
+ fumadocs-core: 16.4.7(@types/react@19.2.8)(lucide-react@0.562.0(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react-router@7.12.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react@19.2.3)(zod@4.3.5)
+ js-yaml: 4.1.1
+ mdast-util-to-markdown: 2.1.2
+ picocolors: 1.1.1
+ picomatch: 4.0.3
+ remark-mdx: 3.1.1
+ tinyexec: 1.0.2
+ tinyglobby: 0.2.15
+ unified: 11.0.5
+ unist-util-remove-position: 5.0.0
+ unist-util-visit: 5.0.0
+ vfile: 6.0.3
+ zod: 4.3.5
+ optionalDependencies:
+ '@types/react': 19.2.8
+ react: 19.2.3
+ vite: rolldown-vite@7.2.5(@types/node@25.0.9)(jiti@2.6.1)(tsx@4.21.0)
+ transitivePeerDependencies:
+ - supports-color
+
+ fumadocs-ui@16.4.7(@types/react-dom@19.2.3(@types/react@19.2.8))(@types/react@19.2.8)(fumadocs-core@16.4.7(@types/react@19.2.8)(lucide-react@0.562.0(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react-router@7.12.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react@19.2.3)(zod@4.3.5))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(tailwindcss@4.1.18):
+ dependencies:
+ '@fumadocs/ui': 16.4.7(@types/react@19.2.8)(fumadocs-core@16.4.7(@types/react@19.2.8)(lucide-react@0.562.0(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react-router@7.12.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react@19.2.3)(zod@4.3.5))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(tailwindcss@4.1.18)
+ '@radix-ui/react-accordion': 1.2.12(@types/react-dom@19.2.3(@types/react@19.2.8))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-collapsible': 1.1.12(@types/react-dom@19.2.3(@types/react@19.2.8))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-dialog': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.8))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-direction': 1.1.1(@types/react@19.2.8)(react@19.2.3)
+ '@radix-ui/react-navigation-menu': 1.2.14(@types/react-dom@19.2.3(@types/react@19.2.8))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-popover': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.8))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.8))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-scroll-area': 1.2.10(@types/react-dom@19.2.3(@types/react@19.2.8))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-slot': 1.2.4(@types/react@19.2.8)(react@19.2.3)
+ '@radix-ui/react-tabs': 1.1.13(@types/react-dom@19.2.3(@types/react@19.2.8))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ class-variance-authority: 0.7.1
+ fumadocs-core: 16.4.7(@types/react@19.2.8)(lucide-react@0.562.0(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react-router@7.12.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react@19.2.3)(zod@4.3.5)
+ lucide-react: 0.562.0(react@19.2.3)
+ next-themes: 0.4.6(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
+ react-medium-image-zoom: 5.4.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ scroll-into-view-if-needed: 3.1.0
+ optionalDependencies:
+ '@types/react': 19.2.8
+ tailwindcss: 4.1.18
+ transitivePeerDependencies:
+ - '@types/react-dom'
+
function-bind@1.1.2: {}
+ gensync@1.0.0-beta.2: {}
+
get-intrinsic@1.3.0:
dependencies:
call-bind-apply-helpers: 1.0.2
@@ -1892,6 +5269,10 @@ snapshots:
hasown: 2.0.2
math-intrinsics: 1.1.0
+ get-nonce@1.0.1: {}
+
+ get-port@5.1.1: {}
+
get-proto@1.0.1:
dependencies:
dunder-proto: 1.0.1
@@ -1901,12 +5282,20 @@ snapshots:
dependencies:
resolve-pkg-maps: 1.0.0
+ github-slugger@2.0.0: {}
+
glob@13.0.0:
dependencies:
minimatch: 10.1.1
minipass: 7.1.2
path-scurry: 2.0.1
+ globrex@0.1.2: {}
+
+ goober@2.1.18(csstype@3.2.3):
+ dependencies:
+ csstype: 3.2.3
+
gopd@1.2.0: {}
graceful-fs@4.2.11: {}
@@ -1921,12 +5310,127 @@ snapshots:
dependencies:
function-bind: 1.1.2
+ hast-util-to-estree@3.1.3:
+ dependencies:
+ '@types/estree': 1.0.8
+ '@types/estree-jsx': 1.0.5
+ '@types/hast': 3.0.4
+ comma-separated-tokens: 2.0.3
+ devlop: 1.1.0
+ estree-util-attach-comments: 3.0.0
+ estree-util-is-identifier-name: 3.0.0
+ hast-util-whitespace: 3.0.0
+ mdast-util-mdx-expression: 2.0.1
+ mdast-util-mdx-jsx: 3.2.0
+ mdast-util-mdxjs-esm: 2.0.1
+ property-information: 7.1.0
+ space-separated-tokens: 2.0.2
+ style-to-js: 1.1.21
+ unist-util-position: 5.0.0
+ zwitch: 2.0.4
+ transitivePeerDependencies:
+ - supports-color
+
+ hast-util-to-html@9.0.5:
+ dependencies:
+ '@types/hast': 3.0.4
+ '@types/unist': 3.0.3
+ ccount: 2.0.1
+ comma-separated-tokens: 2.0.3
+ hast-util-whitespace: 3.0.0
+ html-void-elements: 3.0.0
+ mdast-util-to-hast: 13.2.1
+ property-information: 7.1.0
+ space-separated-tokens: 2.0.2
+ stringify-entities: 4.0.4
+ zwitch: 2.0.4
+
+ hast-util-to-jsx-runtime@2.3.6:
+ dependencies:
+ '@types/estree': 1.0.8
+ '@types/hast': 3.0.4
+ '@types/unist': 3.0.3
+ comma-separated-tokens: 2.0.3
+ devlop: 1.1.0
+ estree-util-is-identifier-name: 3.0.0
+ hast-util-whitespace: 3.0.0
+ mdast-util-mdx-expression: 2.0.1
+ mdast-util-mdx-jsx: 3.2.0
+ mdast-util-mdxjs-esm: 2.0.1
+ property-information: 7.1.0
+ space-separated-tokens: 2.0.2
+ style-to-js: 1.1.21
+ unist-util-position: 5.0.0
+ vfile-message: 4.0.3
+ transitivePeerDependencies:
+ - supports-color
+
+ hast-util-to-string@3.0.1:
+ dependencies:
+ '@types/hast': 3.0.4
+
+ hast-util-whitespace@3.0.0:
+ dependencies:
+ '@types/hast': 3.0.4
+
+ html-void-elements@3.0.0: {}
+
+ http-errors@2.0.1:
+ dependencies:
+ depd: 2.0.0
+ inherits: 2.0.4
+ setprototypeof: 1.2.0
+ statuses: 2.0.2
+ toidentifier: 1.0.1
+
+ iconv-lite@0.4.24:
+ dependencies:
+ safer-buffer: 2.1.2
+
+ image-size@2.0.2: {}
+
+ inherits@2.0.4: {}
+
+ inline-style-parser@0.2.7: {}
+
+ ipaddr.js@1.9.1: {}
+
+ is-alphabetical@2.0.1: {}
+
+ is-alphanumerical@2.0.1:
+ dependencies:
+ is-alphabetical: 2.0.1
+ is-decimal: 2.0.1
+
+ is-decimal@2.0.1: {}
+
+ is-hexadecimal@2.0.1: {}
+
+ is-plain-obj@4.1.0: {}
+
is-reference@3.0.3:
dependencies:
'@types/estree': 1.0.8
+ isbot@5.1.33: {}
+
jiti@2.6.1: {}
+ js-tokens@4.0.0: {}
+
+ js-yaml@4.1.1:
+ dependencies:
+ argparse: 2.0.1
+
+ jsesc@3.0.2: {}
+
+ json5@2.2.3: {}
+
+ launch-editor@2.12.0:
+ dependencies:
+ picocolors: 1.1.1
+ shell-quote: 1.8.3
+
lightningcss-android-arm64@1.30.2:
optional: true
@@ -1976,21 +5480,474 @@ snapshots:
lightningcss-win32-arm64-msvc: 1.30.2
lightningcss-win32-x64-msvc: 1.30.2
- locate-character@3.0.0: {}
+ locate-character@3.0.0: {}
+
+ lodash@4.17.21: {}
+
+ longest-streak@3.1.0: {}
+
+ loose-envify@1.4.0:
+ dependencies:
+ js-tokens: 4.0.0
+
+ lru-cache@11.2.4: {}
+
+ lru-cache@5.1.1:
+ dependencies:
+ yallist: 3.1.1
+
+ lucide-react@0.562.0(react@19.2.3):
+ dependencies:
+ react: 19.2.3
+
+ lucide-svelte@0.562.0(svelte@5.46.4):
+ dependencies:
+ svelte: 5.46.4
+
+ magic-string@0.30.21:
+ dependencies:
+ '@jridgewell/sourcemap-codec': 1.5.5
+
+ markdown-extensions@2.0.0: {}
+
+ markdown-table@3.0.4: {}
+
+ marked@17.0.1: {}
+
+ math-intrinsics@1.1.0: {}
+
+ mdast-util-find-and-replace@3.0.2:
+ dependencies:
+ '@types/mdast': 4.0.4
+ escape-string-regexp: 5.0.0
+ unist-util-is: 6.0.1
+ unist-util-visit-parents: 6.0.2
+
+ mdast-util-from-markdown@2.0.2:
+ dependencies:
+ '@types/mdast': 4.0.4
+ '@types/unist': 3.0.3
+ decode-named-character-reference: 1.3.0
+ devlop: 1.1.0
+ mdast-util-to-string: 4.0.0
+ micromark: 4.0.2
+ micromark-util-decode-numeric-character-reference: 2.0.2
+ micromark-util-decode-string: 2.0.1
+ micromark-util-normalize-identifier: 2.0.1
+ micromark-util-symbol: 2.0.1
+ micromark-util-types: 2.0.2
+ unist-util-stringify-position: 4.0.0
+ transitivePeerDependencies:
+ - supports-color
+
+ mdast-util-gfm-autolink-literal@2.0.1:
+ dependencies:
+ '@types/mdast': 4.0.4
+ ccount: 2.0.1
+ devlop: 1.1.0
+ mdast-util-find-and-replace: 3.0.2
+ micromark-util-character: 2.1.1
+
+ mdast-util-gfm-footnote@2.1.0:
+ dependencies:
+ '@types/mdast': 4.0.4
+ devlop: 1.1.0
+ mdast-util-from-markdown: 2.0.2
+ mdast-util-to-markdown: 2.1.2
+ micromark-util-normalize-identifier: 2.0.1
+ transitivePeerDependencies:
+ - supports-color
+
+ mdast-util-gfm-strikethrough@2.0.0:
+ dependencies:
+ '@types/mdast': 4.0.4
+ mdast-util-from-markdown: 2.0.2
+ mdast-util-to-markdown: 2.1.2
+ transitivePeerDependencies:
+ - supports-color
+
+ mdast-util-gfm-table@2.0.0:
+ dependencies:
+ '@types/mdast': 4.0.4
+ devlop: 1.1.0
+ markdown-table: 3.0.4
+ mdast-util-from-markdown: 2.0.2
+ mdast-util-to-markdown: 2.1.2
+ transitivePeerDependencies:
+ - supports-color
+
+ mdast-util-gfm-task-list-item@2.0.0:
+ dependencies:
+ '@types/mdast': 4.0.4
+ devlop: 1.1.0
+ mdast-util-from-markdown: 2.0.2
+ mdast-util-to-markdown: 2.1.2
+ transitivePeerDependencies:
+ - supports-color
+
+ mdast-util-gfm@3.1.0:
+ dependencies:
+ mdast-util-from-markdown: 2.0.2
+ mdast-util-gfm-autolink-literal: 2.0.1
+ mdast-util-gfm-footnote: 2.1.0
+ mdast-util-gfm-strikethrough: 2.0.0
+ mdast-util-gfm-table: 2.0.0
+ mdast-util-gfm-task-list-item: 2.0.0
+ mdast-util-to-markdown: 2.1.2
+ transitivePeerDependencies:
+ - supports-color
+
+ mdast-util-mdx-expression@2.0.1:
+ dependencies:
+ '@types/estree-jsx': 1.0.5
+ '@types/hast': 3.0.4
+ '@types/mdast': 4.0.4
+ devlop: 1.1.0
+ mdast-util-from-markdown: 2.0.2
+ mdast-util-to-markdown: 2.1.2
+ transitivePeerDependencies:
+ - supports-color
+
+ mdast-util-mdx-jsx@3.2.0:
+ dependencies:
+ '@types/estree-jsx': 1.0.5
+ '@types/hast': 3.0.4
+ '@types/mdast': 4.0.4
+ '@types/unist': 3.0.3
+ ccount: 2.0.1
+ devlop: 1.1.0
+ mdast-util-from-markdown: 2.0.2
+ mdast-util-to-markdown: 2.1.2
+ parse-entities: 4.0.2
+ stringify-entities: 4.0.4
+ unist-util-stringify-position: 4.0.0
+ vfile-message: 4.0.3
+ transitivePeerDependencies:
+ - supports-color
+
+ mdast-util-mdx@3.0.0:
+ dependencies:
+ mdast-util-from-markdown: 2.0.2
+ mdast-util-mdx-expression: 2.0.1
+ mdast-util-mdx-jsx: 3.2.0
+ mdast-util-mdxjs-esm: 2.0.1
+ mdast-util-to-markdown: 2.1.2
+ transitivePeerDependencies:
+ - supports-color
+
+ mdast-util-mdxjs-esm@2.0.1:
+ dependencies:
+ '@types/estree-jsx': 1.0.5
+ '@types/hast': 3.0.4
+ '@types/mdast': 4.0.4
+ devlop: 1.1.0
+ mdast-util-from-markdown: 2.0.2
+ mdast-util-to-markdown: 2.1.2
+ transitivePeerDependencies:
+ - supports-color
+
+ mdast-util-phrasing@4.1.0:
+ dependencies:
+ '@types/mdast': 4.0.4
+ unist-util-is: 6.0.1
+
+ mdast-util-to-hast@13.2.1:
+ dependencies:
+ '@types/hast': 3.0.4
+ '@types/mdast': 4.0.4
+ '@ungap/structured-clone': 1.3.0
+ devlop: 1.1.0
+ micromark-util-sanitize-uri: 2.0.1
+ trim-lines: 3.0.1
+ unist-util-position: 5.0.0
+ unist-util-visit: 5.0.0
+ vfile: 6.0.3
+
+ mdast-util-to-markdown@2.1.2:
+ dependencies:
+ '@types/mdast': 4.0.4
+ '@types/unist': 3.0.3
+ longest-streak: 3.1.0
+ mdast-util-phrasing: 4.1.0
+ mdast-util-to-string: 4.0.0
+ micromark-util-classify-character: 2.0.1
+ micromark-util-decode-string: 2.0.1
+ unist-util-visit: 5.0.0
+ zwitch: 2.0.4
+
+ mdast-util-to-string@4.0.0:
+ dependencies:
+ '@types/mdast': 4.0.4
+
+ media-typer@0.3.0: {}
+
+ merge-descriptors@1.0.3: {}
+
+ methods@1.1.2: {}
+
+ micromark-core-commonmark@2.0.3:
+ dependencies:
+ decode-named-character-reference: 1.3.0
+ devlop: 1.1.0
+ micromark-factory-destination: 2.0.1
+ micromark-factory-label: 2.0.1
+ micromark-factory-space: 2.0.1
+ micromark-factory-title: 2.0.1
+ micromark-factory-whitespace: 2.0.1
+ micromark-util-character: 2.1.1
+ micromark-util-chunked: 2.0.1
+ micromark-util-classify-character: 2.0.1
+ micromark-util-html-tag-name: 2.0.1
+ micromark-util-normalize-identifier: 2.0.1
+ micromark-util-resolve-all: 2.0.1
+ micromark-util-subtokenize: 2.1.0
+ micromark-util-symbol: 2.0.1
+ micromark-util-types: 2.0.2
+
+ micromark-extension-gfm-autolink-literal@2.1.0:
+ dependencies:
+ micromark-util-character: 2.1.1
+ micromark-util-sanitize-uri: 2.0.1
+ micromark-util-symbol: 2.0.1
+ micromark-util-types: 2.0.2
+
+ micromark-extension-gfm-footnote@2.1.0:
+ dependencies:
+ devlop: 1.1.0
+ micromark-core-commonmark: 2.0.3
+ micromark-factory-space: 2.0.1
+ micromark-util-character: 2.1.1
+ micromark-util-normalize-identifier: 2.0.1
+ micromark-util-sanitize-uri: 2.0.1
+ micromark-util-symbol: 2.0.1
+ micromark-util-types: 2.0.2
+
+ micromark-extension-gfm-strikethrough@2.1.0:
+ dependencies:
+ devlop: 1.1.0
+ micromark-util-chunked: 2.0.1
+ micromark-util-classify-character: 2.0.1
+ micromark-util-resolve-all: 2.0.1
+ micromark-util-symbol: 2.0.1
+ micromark-util-types: 2.0.2
+
+ micromark-extension-gfm-table@2.1.1:
+ dependencies:
+ devlop: 1.1.0
+ micromark-factory-space: 2.0.1
+ micromark-util-character: 2.1.1
+ micromark-util-symbol: 2.0.1
+ micromark-util-types: 2.0.2
+
+ micromark-extension-gfm-tagfilter@2.0.0:
+ dependencies:
+ micromark-util-types: 2.0.2
+
+ micromark-extension-gfm-task-list-item@2.1.0:
+ dependencies:
+ devlop: 1.1.0
+ micromark-factory-space: 2.0.1
+ micromark-util-character: 2.1.1
+ micromark-util-symbol: 2.0.1
+ micromark-util-types: 2.0.2
+
+ micromark-extension-gfm@3.0.0:
+ dependencies:
+ micromark-extension-gfm-autolink-literal: 2.1.0
+ micromark-extension-gfm-footnote: 2.1.0
+ micromark-extension-gfm-strikethrough: 2.1.0
+ micromark-extension-gfm-table: 2.1.1
+ micromark-extension-gfm-tagfilter: 2.0.0
+ micromark-extension-gfm-task-list-item: 2.1.0
+ micromark-util-combine-extensions: 2.0.1
+ micromark-util-types: 2.0.2
+
+ micromark-extension-mdx-expression@3.0.1:
+ dependencies:
+ '@types/estree': 1.0.8
+ devlop: 1.1.0
+ micromark-factory-mdx-expression: 2.0.3
+ micromark-factory-space: 2.0.1
+ micromark-util-character: 2.1.1
+ micromark-util-events-to-acorn: 2.0.3
+ micromark-util-symbol: 2.0.1
+ micromark-util-types: 2.0.2
+
+ micromark-extension-mdx-jsx@3.0.2:
+ dependencies:
+ '@types/estree': 1.0.8
+ devlop: 1.1.0
+ estree-util-is-identifier-name: 3.0.0
+ micromark-factory-mdx-expression: 2.0.3
+ micromark-factory-space: 2.0.1
+ micromark-util-character: 2.1.1
+ micromark-util-events-to-acorn: 2.0.3
+ micromark-util-symbol: 2.0.1
+ micromark-util-types: 2.0.2
+ vfile-message: 4.0.3
+
+ micromark-extension-mdx-md@2.0.0:
+ dependencies:
+ micromark-util-types: 2.0.2
+
+ micromark-extension-mdxjs-esm@3.0.0:
+ dependencies:
+ '@types/estree': 1.0.8
+ devlop: 1.1.0
+ micromark-core-commonmark: 2.0.3
+ micromark-util-character: 2.1.1
+ micromark-util-events-to-acorn: 2.0.3
+ micromark-util-symbol: 2.0.1
+ micromark-util-types: 2.0.2
+ unist-util-position-from-estree: 2.0.0
+ vfile-message: 4.0.3
+
+ micromark-extension-mdxjs@3.0.0:
+ dependencies:
+ acorn: 8.15.0
+ acorn-jsx: 5.3.2(acorn@8.15.0)
+ micromark-extension-mdx-expression: 3.0.1
+ micromark-extension-mdx-jsx: 3.0.2
+ micromark-extension-mdx-md: 2.0.0
+ micromark-extension-mdxjs-esm: 3.0.0
+ micromark-util-combine-extensions: 2.0.1
+ micromark-util-types: 2.0.2
+
+ micromark-factory-destination@2.0.1:
+ dependencies:
+ micromark-util-character: 2.1.1
+ micromark-util-symbol: 2.0.1
+ micromark-util-types: 2.0.2
+
+ micromark-factory-label@2.0.1:
+ dependencies:
+ devlop: 1.1.0
+ micromark-util-character: 2.1.1
+ micromark-util-symbol: 2.0.1
+ micromark-util-types: 2.0.2
+
+ micromark-factory-mdx-expression@2.0.3:
+ dependencies:
+ '@types/estree': 1.0.8
+ devlop: 1.1.0
+ micromark-factory-space: 2.0.1
+ micromark-util-character: 2.1.1
+ micromark-util-events-to-acorn: 2.0.3
+ micromark-util-symbol: 2.0.1
+ micromark-util-types: 2.0.2
+ unist-util-position-from-estree: 2.0.0
+ vfile-message: 4.0.3
+
+ micromark-factory-space@2.0.1:
+ dependencies:
+ micromark-util-character: 2.1.1
+ micromark-util-types: 2.0.2
+
+ micromark-factory-title@2.0.1:
+ dependencies:
+ micromark-factory-space: 2.0.1
+ micromark-util-character: 2.1.1
+ micromark-util-symbol: 2.0.1
+ micromark-util-types: 2.0.2
+
+ micromark-factory-whitespace@2.0.1:
+ dependencies:
+ micromark-factory-space: 2.0.1
+ micromark-util-character: 2.1.1
+ micromark-util-symbol: 2.0.1
+ micromark-util-types: 2.0.2
+
+ micromark-util-character@2.1.1:
+ dependencies:
+ micromark-util-symbol: 2.0.1
+ micromark-util-types: 2.0.2
+
+ micromark-util-chunked@2.0.1:
+ dependencies:
+ micromark-util-symbol: 2.0.1
+
+ micromark-util-classify-character@2.0.1:
+ dependencies:
+ micromark-util-character: 2.1.1
+ micromark-util-symbol: 2.0.1
+ micromark-util-types: 2.0.2
+
+ micromark-util-combine-extensions@2.0.1:
+ dependencies:
+ micromark-util-chunked: 2.0.1
+ micromark-util-types: 2.0.2
+
+ micromark-util-decode-numeric-character-reference@2.0.2:
+ dependencies:
+ micromark-util-symbol: 2.0.1
+
+ micromark-util-decode-string@2.0.1:
+ dependencies:
+ decode-named-character-reference: 1.3.0
+ micromark-util-character: 2.1.1
+ micromark-util-decode-numeric-character-reference: 2.0.2
+ micromark-util-symbol: 2.0.1
+
+ micromark-util-encode@2.0.1: {}
+
+ micromark-util-events-to-acorn@2.0.3:
+ dependencies:
+ '@types/estree': 1.0.8
+ '@types/unist': 3.0.3
+ devlop: 1.1.0
+ estree-util-visit: 2.0.0
+ micromark-util-symbol: 2.0.1
+ micromark-util-types: 2.0.2
+ vfile-message: 4.0.3
+
+ micromark-util-html-tag-name@2.0.1: {}
- lru-cache@11.2.4: {}
+ micromark-util-normalize-identifier@2.0.1:
+ dependencies:
+ micromark-util-symbol: 2.0.1
- lucide-svelte@0.562.0(svelte@5.46.4):
+ micromark-util-resolve-all@2.0.1:
dependencies:
- svelte: 5.46.4
+ micromark-util-types: 2.0.2
- magic-string@0.30.21:
+ micromark-util-sanitize-uri@2.0.1:
dependencies:
- '@jridgewell/sourcemap-codec': 1.5.5
+ micromark-util-character: 2.1.1
+ micromark-util-encode: 2.0.1
+ micromark-util-symbol: 2.0.1
- marked@17.0.1: {}
+ micromark-util-subtokenize@2.1.0:
+ dependencies:
+ devlop: 1.1.0
+ micromark-util-chunked: 2.0.1
+ micromark-util-symbol: 2.0.1
+ micromark-util-types: 2.0.2
- math-intrinsics@1.1.0: {}
+ micromark-util-symbol@2.0.1: {}
+
+ micromark-util-types@2.0.2: {}
+
+ micromark@4.0.2:
+ dependencies:
+ '@types/debug': 4.1.12
+ debug: 4.4.3
+ decode-named-character-reference: 1.3.0
+ devlop: 1.1.0
+ micromark-core-commonmark: 2.0.3
+ micromark-factory-space: 2.0.1
+ micromark-util-character: 2.1.1
+ micromark-util-chunked: 2.0.1
+ micromark-util-combine-extensions: 2.0.1
+ micromark-util-decode-numeric-character-reference: 2.0.2
+ micromark-util-encode: 2.0.1
+ micromark-util-normalize-identifier: 2.0.1
+ micromark-util-resolve-all: 2.0.1
+ micromark-util-sanitize-uri: 2.0.1
+ micromark-util-subtokenize: 2.1.0
+ micromark-util-symbol: 2.0.1
+ micromark-util-types: 2.0.2
+ transitivePeerDependencies:
+ - supports-color
mime-db@1.52.0: {}
@@ -1998,16 +5955,49 @@ snapshots:
dependencies:
mime-db: 1.52.0
+ mime@1.6.0: {}
+
minimatch@10.1.1:
dependencies:
'@isaacs/brace-expansion': 5.0.0
minipass@7.1.2: {}
+ morgan@1.10.1:
+ dependencies:
+ basic-auth: 2.0.1
+ debug: 2.6.9
+ depd: 2.0.0
+ on-finished: 2.3.0
+ on-headers: 1.1.0
+ transitivePeerDependencies:
+ - supports-color
+
+ motion-dom@12.27.1:
+ dependencies:
+ motion-utils: 12.24.10
+
+ motion-utils@12.24.10: {}
+
mri@1.2.0: {}
+ ms@2.0.0: {}
+
+ ms@2.1.3: {}
+
nanoid@3.3.11: {}
+ negotiator@0.6.3: {}
+
+ negotiator@0.6.4: {}
+
+ negotiator@1.0.0: {}
+
+ next-themes@0.4.6(react-dom@19.2.3(react@19.2.3))(react@19.2.3):
+ dependencies:
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
+
node-emoji@2.2.0:
dependencies:
'@sindresorhus/is': 4.6.0
@@ -2017,8 +6007,32 @@ snapshots:
node-releases@2.0.27: {}
+ npm-to-yarn@3.0.1: {}
+
+ object-assign@4.1.1: {}
+
+ object-inspect@1.13.4: {}
+
obug@2.1.1: {}
+ on-finished@2.3.0:
+ dependencies:
+ ee-first: 1.1.1
+
+ on-finished@2.4.1:
+ dependencies:
+ ee-first: 1.1.1
+
+ on-headers@1.1.0: {}
+
+ oniguruma-parser@0.12.1: {}
+
+ oniguruma-to-es@4.3.4:
+ dependencies:
+ oniguruma-parser: 0.12.1
+ regex: 6.1.0
+ regex-recursion: 6.0.2
+
oxfmt@0.24.0:
dependencies:
tinypool: 2.0.0
@@ -2043,17 +6057,50 @@ snapshots:
'@oxlint/win32-arm64': 1.39.0
'@oxlint/win32-x64': 1.39.0
+ p-map@7.0.4: {}
+
package-json-from-dist@1.0.1: {}
+ parse-entities@4.0.2:
+ dependencies:
+ '@types/unist': 2.0.11
+ character-entities-legacy: 3.0.0
+ character-reference-invalid: 2.0.1
+ decode-named-character-reference: 1.3.0
+ is-alphanumerical: 2.0.1
+ is-decimal: 2.0.1
+ is-hexadecimal: 2.0.1
+
+ parseurl@1.3.3: {}
+
path-scurry@2.0.1:
dependencies:
lru-cache: 11.2.4
minipass: 7.1.2
+ path-to-regexp@0.1.12: {}
+
+ path-to-regexp@8.3.0: {}
+
+ pathe@1.1.2: {}
+
+ pathe@2.0.3: {}
+
picocolors@1.1.1: {}
picomatch@4.0.3: {}
+ pkg-types@2.3.0:
+ dependencies:
+ confbox: 0.2.2
+ exsolve: 1.0.8
+ pathe: 2.0.3
+
+ postcss-selector-parser@7.1.1:
+ dependencies:
+ cssesc: 3.0.0
+ util-deprecate: 1.0.2
+
postcss-value-parser@4.2.0: {}
postcss@8.5.6:
@@ -2062,12 +6109,255 @@ snapshots:
picocolors: 1.1.1
source-map-js: 1.2.1
+ prettier@3.8.0: {}
+
prismjs@1.30.0: {}
+ prop-types@15.8.1:
+ dependencies:
+ loose-envify: 1.4.0
+ object-assign: 4.1.1
+ react-is: 16.13.1
+
+ property-information@7.1.0: {}
+
+ proxy-addr@2.0.7:
+ dependencies:
+ forwarded: 0.2.0
+ ipaddr.js: 1.9.1
+
proxy-from-env@1.1.0: {}
+ qs@6.14.1:
+ dependencies:
+ side-channel: 1.1.0
+
+ range-parser@1.2.1: {}
+
+ raw-body@2.5.3:
+ dependencies:
+ bytes: 3.1.2
+ http-errors: 2.0.1
+ iconv-lite: 0.4.24
+ unpipe: 1.0.0
+
+ react-d3-tree@3.6.6(react-dom@19.2.3(react@19.2.3))(react@19.2.3):
+ dependencies:
+ '@bkrem/react-transition-group': 1.3.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@types/d3-hierarchy': 1.1.11
+ clone: 2.1.2
+ d3-hierarchy: 1.1.9
+ d3-selection: 3.0.0
+ d3-shape: 1.3.7
+ d3-zoom: 3.0.0
+ dequal: 2.0.3
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
+ uuid: 8.3.2
+
+ react-dom@19.2.3(react@19.2.3):
+ dependencies:
+ react: 19.2.3
+ scheduler: 0.27.0
+
+ react-hotkeys-hook@5.2.3(react-dom@19.2.3(react@19.2.3))(react@19.2.3):
+ dependencies:
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
+
+ react-is@16.13.1: {}
+
+ react-lifecycles-compat@3.0.4: {}
+
+ react-medium-image-zoom@5.4.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3):
+ dependencies:
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
+
+ react-refresh@0.14.2: {}
+
+ react-remove-scroll-bar@2.3.8(@types/react@19.2.8)(react@19.2.3):
+ dependencies:
+ react: 19.2.3
+ react-style-singleton: 2.2.3(@types/react@19.2.8)(react@19.2.3)
+ tslib: 2.8.1
+ optionalDependencies:
+ '@types/react': 19.2.8
+
+ react-remove-scroll@2.7.2(@types/react@19.2.8)(react@19.2.3):
+ dependencies:
+ react: 19.2.3
+ react-remove-scroll-bar: 2.3.8(@types/react@19.2.8)(react@19.2.3)
+ react-style-singleton: 2.2.3(@types/react@19.2.8)(react@19.2.3)
+ tslib: 2.8.1
+ use-callback-ref: 1.3.3(@types/react@19.2.8)(react@19.2.3)
+ use-sidecar: 1.1.3(@types/react@19.2.8)(react@19.2.3)
+ optionalDependencies:
+ '@types/react': 19.2.8
+
+ react-router-devtools@6.2.0(@types/react-dom@19.2.3(@types/react@19.2.8))(@types/react@19.2.8)(csstype@3.2.3)(react-dom@19.2.3(react@19.2.3))(react-router@7.12.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react@19.2.3)(rolldown-vite@7.2.5(@types/node@25.0.9)(jiti@2.6.1)(tsx@4.21.0))(solid-js@1.9.10):
+ dependencies:
+ '@babel/core': 7.28.6
+ '@babel/generator': 7.28.6
+ '@babel/parser': 7.28.6
+ '@babel/traverse': 7.28.6
+ '@babel/types': 7.28.6
+ '@radix-ui/react-accordion': 1.2.12(@types/react-dom@19.2.3(@types/react@19.2.8))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@tanstack/devtools-client': 0.0.5
+ '@tanstack/devtools-event-client': 0.4.0
+ '@tanstack/devtools-vite': 0.4.1(rolldown-vite@7.2.5(@types/node@25.0.9)(jiti@2.6.1)(tsx@4.21.0))
+ '@tanstack/react-devtools': 0.9.2(@types/react-dom@19.2.3(@types/react@19.2.8))(@types/react@19.2.8)(csstype@3.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(solid-js@1.9.10)
+ '@types/react': 19.2.8
+ '@types/react-dom': 19.2.3(@types/react@19.2.8)
+ chalk: 5.6.2
+ clsx: 2.1.1
+ framer-motion: 12.27.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ goober: 2.1.18(csstype@3.2.3)
+ react: 19.2.3
+ react-d3-tree: 3.6.6(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ react-dom: 19.2.3(react@19.2.3)
+ react-hotkeys-hook: 5.2.3(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ react-router: 7.12.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ react-tooltip: 5.30.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ vite: rolldown-vite@7.2.5(@types/node@25.0.9)(jiti@2.6.1)(tsx@4.21.0)
+ optionalDependencies:
+ '@biomejs/cli-darwin-arm64': 2.3.11
+ '@rollup/rollup-darwin-arm64': 4.55.2
+ '@rollup/rollup-linux-x64-gnu': 4.55.2
+ transitivePeerDependencies:
+ - '@emotion/is-prop-valid'
+ - bufferutil
+ - csstype
+ - solid-js
+ - supports-color
+ - utf-8-validate
+
+ react-router@7.12.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3):
+ dependencies:
+ cookie: 1.1.1
+ react: 19.2.3
+ set-cookie-parser: 2.7.2
+ optionalDependencies:
+ react-dom: 19.2.3(react@19.2.3)
+
+ react-style-singleton@2.2.3(@types/react@19.2.8)(react@19.2.3):
+ dependencies:
+ get-nonce: 1.0.1
+ react: 19.2.3
+ tslib: 2.8.1
+ optionalDependencies:
+ '@types/react': 19.2.8
+
+ react-tooltip@5.30.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3):
+ dependencies:
+ '@floating-ui/dom': 1.7.4
+ classnames: 2.5.1
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
+
+ react@19.2.3: {}
+
readdirp@4.1.2: {}
+ readdirp@5.0.0: {}
+
+ recma-build-jsx@1.0.0:
+ dependencies:
+ '@types/estree': 1.0.8
+ estree-util-build-jsx: 3.0.1
+ vfile: 6.0.3
+
+ recma-jsx@1.0.1(acorn@8.15.0):
+ dependencies:
+ acorn: 8.15.0
+ acorn-jsx: 5.3.2(acorn@8.15.0)
+ estree-util-to-js: 2.0.0
+ recma-parse: 1.0.0
+ recma-stringify: 1.0.0
+ unified: 11.0.5
+
+ recma-parse@1.0.0:
+ dependencies:
+ '@types/estree': 1.0.8
+ esast-util-from-js: 2.0.1
+ unified: 11.0.5
+ vfile: 6.0.3
+
+ recma-stringify@1.0.0:
+ dependencies:
+ '@types/estree': 1.0.8
+ estree-util-to-js: 2.0.0
+ unified: 11.0.5
+ vfile: 6.0.3
+
+ regex-recursion@6.0.2:
+ dependencies:
+ regex-utilities: 2.3.0
+
+ regex-utilities@2.3.0: {}
+
+ regex@6.1.0:
+ dependencies:
+ regex-utilities: 2.3.0
+
+ rehype-recma@1.0.0:
+ dependencies:
+ '@types/estree': 1.0.8
+ '@types/hast': 3.0.4
+ hast-util-to-estree: 3.1.3
+ transitivePeerDependencies:
+ - supports-color
+
+ remark-gfm@4.0.1:
+ dependencies:
+ '@types/mdast': 4.0.4
+ mdast-util-gfm: 3.1.0
+ micromark-extension-gfm: 3.0.0
+ remark-parse: 11.0.0
+ remark-stringify: 11.0.0
+ unified: 11.0.5
+ transitivePeerDependencies:
+ - supports-color
+
+ remark-mdx@3.1.1:
+ dependencies:
+ mdast-util-mdx: 3.0.0
+ micromark-extension-mdxjs: 3.0.0
+ transitivePeerDependencies:
+ - supports-color
+
+ remark-parse@11.0.0:
+ dependencies:
+ '@types/mdast': 4.0.4
+ mdast-util-from-markdown: 2.0.2
+ micromark-util-types: 2.0.2
+ unified: 11.0.5
+ transitivePeerDependencies:
+ - supports-color
+
+ remark-rehype@11.1.2:
+ dependencies:
+ '@types/hast': 3.0.4
+ '@types/mdast': 4.0.4
+ mdast-util-to-hast: 13.2.1
+ unified: 11.0.5
+ vfile: 6.0.3
+
+ remark-stringify@11.0.0:
+ dependencies:
+ '@types/mdast': 4.0.4
+ mdast-util-to-markdown: 2.1.2
+ unified: 11.0.5
+
+ remark@15.0.1:
+ dependencies:
+ '@types/mdast': 4.0.4
+ remark-parse: 11.0.0
+ remark-stringify: 11.0.0
+ unified: 11.0.5
+ transitivePeerDependencies:
+ - supports-color
+
resolve-pkg-maps@1.0.0: {}
rimraf@6.1.2:
@@ -2090,6 +6380,21 @@ snapshots:
jiti: 2.6.1
tsx: 4.21.0
+ rolldown-vite@7.2.5(@types/node@25.0.9)(jiti@2.6.1)(tsx@4.21.0):
+ dependencies:
+ '@oxc-project/runtime': 0.97.0
+ fdir: 6.5.0(picomatch@4.0.3)
+ lightningcss: 1.30.2
+ picomatch: 4.0.3
+ postcss: 8.5.6
+ rolldown: 1.0.0-beta.50
+ tinyglobby: 0.2.15
+ optionalDependencies:
+ '@types/node': 25.0.9
+ fsevents: 2.3.3
+ jiti: 2.6.1
+ tsx: 4.21.0
+
rolldown@1.0.0-beta.50:
dependencies:
'@oxc-project/types': 0.97.0
@@ -2114,12 +6419,138 @@ snapshots:
dependencies:
mri: 1.2.0
+ safe-buffer@5.1.2: {}
+
+ safe-buffer@5.2.1: {}
+
+ safer-buffer@2.1.2: {}
+
+ scheduler@0.27.0: {}
+
+ scroll-into-view-if-needed@3.1.0:
+ dependencies:
+ compute-scroll-into-view: 3.1.1
+
+ semver@6.3.1: {}
+
+ semver@7.7.3: {}
+
+ send@0.19.2:
+ dependencies:
+ debug: 2.6.9
+ depd: 2.0.0
+ destroy: 1.2.0
+ encodeurl: 2.0.0
+ escape-html: 1.0.3
+ etag: 1.8.1
+ fresh: 0.5.2
+ http-errors: 2.0.1
+ mime: 1.6.0
+ ms: 2.1.3
+ on-finished: 2.4.1
+ range-parser: 1.2.1
+ statuses: 2.0.2
+ transitivePeerDependencies:
+ - supports-color
+
+ seroval-plugins@1.3.3(seroval@1.3.2):
+ dependencies:
+ seroval: 1.3.2
+
+ seroval@1.3.2: {}
+
+ serve-static@1.16.3:
+ dependencies:
+ encodeurl: 2.0.0
+ escape-html: 1.0.3
+ parseurl: 1.3.3
+ send: 0.19.2
+ transitivePeerDependencies:
+ - supports-color
+
+ set-cookie-parser@2.7.2: {}
+
+ setprototypeof@1.2.0: {}
+
+ shell-quote@1.8.3: {}
+
+ shiki@3.21.0:
+ dependencies:
+ '@shikijs/core': 3.21.0
+ '@shikijs/engine-javascript': 3.21.0
+ '@shikijs/engine-oniguruma': 3.21.0
+ '@shikijs/langs': 3.21.0
+ '@shikijs/themes': 3.21.0
+ '@shikijs/types': 3.21.0
+ '@shikijs/vscode-textmate': 10.0.2
+ '@types/hast': 3.0.4
+
+ side-channel-list@1.0.0:
+ dependencies:
+ es-errors: 1.3.0
+ object-inspect: 1.13.4
+
+ side-channel-map@1.0.1:
+ dependencies:
+ call-bound: 1.0.4
+ es-errors: 1.3.0
+ get-intrinsic: 1.3.0
+ object-inspect: 1.13.4
+
+ side-channel-weakmap@1.0.2:
+ dependencies:
+ call-bound: 1.0.4
+ es-errors: 1.3.0
+ get-intrinsic: 1.3.0
+ object-inspect: 1.13.4
+ side-channel-map: 1.0.1
+
+ side-channel@1.1.0:
+ dependencies:
+ es-errors: 1.3.0
+ object-inspect: 1.13.4
+ side-channel-list: 1.0.0
+ side-channel-map: 1.0.1
+ side-channel-weakmap: 1.0.2
+
skin-tone@2.0.0:
dependencies:
unicode-emoji-modifier-base: 1.0.0
+ solid-js@1.9.10:
+ dependencies:
+ csstype: 3.2.3
+ seroval: 1.3.2
+ seroval-plugins: 1.3.3(seroval@1.3.2)
+
source-map-js@1.2.1: {}
+ source-map-support@0.5.21:
+ dependencies:
+ buffer-from: 1.1.2
+ source-map: 0.6.1
+
+ source-map@0.6.1: {}
+
+ source-map@0.7.6: {}
+
+ space-separated-tokens@2.0.2: {}
+
+ statuses@2.0.2: {}
+
+ stringify-entities@4.0.4:
+ dependencies:
+ character-entities-html4: 2.1.0
+ character-entities-legacy: 3.0.0
+
+ style-to-js@1.1.21:
+ dependencies:
+ style-to-object: 1.0.14
+
+ style-to-object@1.0.14:
+ dependencies:
+ inline-style-parser: 0.2.7
+
svelte-check@4.3.5(picomatch@4.0.3)(svelte@5.46.4)(typescript@5.9.3):
dependencies:
'@jridgewell/trace-mapping': 0.3.31
@@ -2150,10 +6581,14 @@ snapshots:
magic-string: 0.30.21
zimmerframe: 1.1.4
+ tailwind-merge@3.4.0: {}
+
tailwindcss@4.1.18: {}
tapable@2.3.0: {}
+ tinyexec@1.0.2: {}
+
tinyglobby@0.2.15:
dependencies:
fdir: 6.5.0(picomatch@4.0.3)
@@ -2161,10 +6596,19 @@ snapshots:
tinypool@2.0.0: {}
+ toidentifier@1.0.1: {}
+
toml@3.0.0: {}
- tslib@2.8.1:
- optional: true
+ trim-lines@3.0.1: {}
+
+ trough@2.2.0: {}
+
+ tsconfck@3.1.6(typescript@5.9.3):
+ optionalDependencies:
+ typescript: 5.9.3
+
+ tslib@2.8.1: {}
tsx@4.21.0:
dependencies:
@@ -2175,25 +6619,155 @@ snapshots:
tunnel@0.0.6: {}
+ type-is@1.6.18:
+ dependencies:
+ media-typer: 0.3.0
+ mime-types: 2.1.35
+
typescript@5.9.3: {}
undici-types@7.16.0: {}
unicode-emoji-modifier-base@1.0.0: {}
+ unified@11.0.5:
+ dependencies:
+ '@types/unist': 3.0.3
+ bail: 2.0.2
+ devlop: 1.1.0
+ extend: 3.0.2
+ is-plain-obj: 4.1.0
+ trough: 2.2.0
+ vfile: 6.0.3
+
+ unist-util-is@6.0.1:
+ dependencies:
+ '@types/unist': 3.0.3
+
+ unist-util-position-from-estree@2.0.0:
+ dependencies:
+ '@types/unist': 3.0.3
+
+ unist-util-position@5.0.0:
+ dependencies:
+ '@types/unist': 3.0.3
+
+ unist-util-remove-position@5.0.0:
+ dependencies:
+ '@types/unist': 3.0.3
+ unist-util-visit: 5.0.0
+
+ unist-util-stringify-position@4.0.0:
+ dependencies:
+ '@types/unist': 3.0.3
+
+ unist-util-visit-parents@6.0.2:
+ dependencies:
+ '@types/unist': 3.0.3
+ unist-util-is: 6.0.1
+
+ unist-util-visit@5.0.0:
+ dependencies:
+ '@types/unist': 3.0.3
+ unist-util-is: 6.0.1
+ unist-util-visit-parents: 6.0.2
+
+ unpipe@1.0.0: {}
+
update-browserslist-db@1.2.3(browserslist@4.28.1):
dependencies:
browserslist: 4.28.1
escalade: 3.2.0
picocolors: 1.1.1
+ use-callback-ref@1.3.3(@types/react@19.2.8)(react@19.2.3):
+ dependencies:
+ react: 19.2.3
+ tslib: 2.8.1
+ optionalDependencies:
+ '@types/react': 19.2.8
+
+ use-sidecar@1.1.3(@types/react@19.2.8)(react@19.2.3):
+ dependencies:
+ detect-node-es: 1.1.0
+ react: 19.2.3
+ tslib: 2.8.1
+ optionalDependencies:
+ '@types/react': 19.2.8
+
+ util-deprecate@1.0.2: {}
+
+ utils-merge@1.0.1: {}
+
+ uuid@8.3.2: {}
+
+ valibot@1.2.0(typescript@5.9.3):
+ optionalDependencies:
+ typescript: 5.9.3
+
+ vary@1.1.2: {}
+
+ vfile-message@4.0.3:
+ dependencies:
+ '@types/unist': 3.0.3
+ unist-util-stringify-position: 4.0.0
+
+ vfile@6.0.3:
+ dependencies:
+ '@types/unist': 3.0.3
+ vfile-message: 4.0.3
+
+ vite-node@3.2.4(@types/node@25.0.9)(jiti@2.6.1)(tsx@4.21.0):
+ dependencies:
+ cac: 6.7.14
+ debug: 4.4.3
+ es-module-lexer: 1.7.0
+ pathe: 2.0.3
+ vite: rolldown-vite@7.2.5(@types/node@25.0.9)(jiti@2.6.1)(tsx@4.21.0)
+ transitivePeerDependencies:
+ - '@types/node'
+ - esbuild
+ - jiti
+ - less
+ - sass
+ - sass-embedded
+ - stylus
+ - sugarss
+ - supports-color
+ - terser
+ - tsx
+ - yaml
+
+ vite-tsconfig-paths@6.0.4(rolldown-vite@7.2.5(@types/node@25.0.9)(jiti@2.6.1)(tsx@4.21.0))(typescript@5.9.3):
+ dependencies:
+ debug: 4.4.3
+ globrex: 0.1.2
+ tsconfck: 3.1.6(typescript@5.9.3)
+ optionalDependencies:
+ vite: rolldown-vite@7.2.5(@types/node@25.0.9)(jiti@2.6.1)(tsx@4.21.0)
+ transitivePeerDependencies:
+ - supports-color
+ - typescript
+
vitefu@1.1.1(rolldown-vite@7.2.5(@types/node@24.10.9)(jiti@2.6.1)(tsx@4.21.0)):
optionalDependencies:
vite: rolldown-vite@7.2.5(@types/node@24.10.9)(jiti@2.6.1)(tsx@4.21.0)
+ warning@3.0.0:
+ dependencies:
+ loose-envify: 1.4.0
+
wcwidth@1.0.1:
dependencies:
defaults: 1.0.4
optional: true
+ ws@8.19.0: {}
+
+ yallist@3.1.1: {}
+
zimmerframe@1.1.4: {}
+
+ zod@4.3.5: {}
+
+ zwitch@2.0.4: {}