diff --git a/.agents/skills/grill-me/SKILL.md b/.agents/skills/grill-me/SKILL.md new file mode 100644 index 0000000..6b24a7c --- /dev/null +++ b/.agents/skills/grill-me/SKILL.md @@ -0,0 +1,26 @@ +--- +name: grill-me +description: >- + Relentlessly interview the user to stress-test a plan, requirement, or architectural + choice before writing code or selecting a solution. Activate this skill when the user + asks to "grill me", clarify requirements, align on a design, or choose between technical + approaches. +--- + +# Grill Me — Decision-Tree Architecture & Requirement Interview + +Instead of guessing requirements or dumping a massive, superficial plan, walk the decision tree of the user's idea **depth-first** through structured, high-leverage questions until every critical branch is resolved. + +## Core Protocol + +1. **Codebase-First Rule**: + - Never ask the user a question that the existing codebase or system state (`GEMINI.md`, repository files, running services) can already answer. Check the codebase first. +2. **Model the Decision Tree**: + - Break the problem into **Top-Level Branches** (core user workflow, primary goal, deployment boundary), **Sub-Branches** (trade-offs, UX expectations, integration points), and **Leaf Nodes** (implementation details). +3. **Depth-First & Frontier Questioning**: + - Ask **1 to 3 sharp, high-leverage questions per round** using the `ask_question` tool (when available) or structured multiple-choice options. + - Do not ask about downstream implementation details before upstream workflow decisions are settled. +4. **Always Provide a `(Recommended)` Option**: + - Every question MUST put a well-reasoned recommended answer first, prefixed with `(Recommended)`, explaining *why* it fits the user's architecture best. +5. **Converge to a Concrete Decision Record**: + - Once the critical branches of the decision tree are resolved, synthesize the locked-in decisions into a concise execution plan and ask for final confirmation to build/deploy. diff --git a/GEMINI.md b/GEMINI.md index a9478ce..6bc1b25 100644 --- a/GEMINI.md +++ b/GEMINI.md @@ -26,8 +26,10 @@ ### 通道 A:443 免端口标准 HTTPS(经新加坡 Azure Caddy -> Tailscale P2P 回源) - **导航中控台 (HomeLab Console V3)**: `https://nav.961504.xyz` -> `100.108.205.40:3002` +- **Agent 协同编排工作台 (Codeg Base + 自研大盘)**: `https://nav.961504.xyz/agents` & `https://codeg.961504.xyz` -> `100.108.205.40:3080` (SSO 免密 Proxy Auth) +- **Gitea 私有代码托管与冷备中枢**: `https://git.961504.xyz` -> `100.108.205.40:3005` (Mac SSD 热层 + 极空间 20TB 冷层) - **Storybook 设计系统工作台**: `https://nav.961504.xyz/storybook` -> `100.108.205.40:3002/storybook` -- **AGY 云端编程工作台 (`ttyd` + `tmux`)**: `https://agy.961504.xyz` -> `100.108.205.40:7681` (受 Basic Auth 保护) +- **AGY 云端编程工作台 (`ttyd` + `tmux`)**: `https://agy.961504.xyz` -> `100.108.205.40:7681` (受 HomeLab SSO 2.0 保护) - **Vaultwarden 密码保险箱**: `https://vw.961504.xyz` -> `100.108.205.40:8222` - **Uptime Kuma 外部监控哨兵**: `https://status.961504.xyz` -> `127.0.0.1:3001` (Azure 本地容器) @@ -35,6 +37,8 @@ - 在家连 Wi-Fi 时,小米路由器 Mihomo 将 `home.961504.xyz` 与 `*.home.961504.xyz` 直接解析为 `192.168.31.164`(并在 `fake_ip_filter` 中豁免 Fake-IP),实现 <1ms 局域网直连。 - 在外网时,Cloudflare DNS 将 `*.home.961504.xyz` 动态解析至家庭联通公网 IP (`124.90.142.21`),通过路由器 `10443` 端口转发直达 Mac mini Caddy: - `https://home.961504.xyz:10443` (HomeLab Console V3) + - `https://codeg.home.961504.xyz:10443` (Codeg 多智能体协同工作台) + - `https://git.home.961504.xyz:10443` (Gitea 私有代码托管中枢) - `https://agy.home.961504.xyz:10443` (AGY 云端工作台) - `https://vw.home.961504.xyz:10443` (Vaultwarden) - `https://nas.home.961504.xyz:10443` (极空间 Z4 Web `192.168.31.185:5055`) @@ -60,8 +64,10 @@ ## 5. Mac mini 后台常驻服务清单 (`LaunchAgents` & `LaunchDaemons`) - `/Library/LaunchDaemons/com.homelab.caddy.plist`: 系统级 Caddy 网关(监听 `10443`,提供 `*.home.961504.xyz` Let's Encrypt DNS-01 通配符证书反代) -- `~/Library/LaunchAgents/com.homelab.portal.plist`: HomeLab Console V3 后端与静态资源服务 (`stacks/portal/server.py`,监听 `3002`/`3004`,提供 `/api/telemetry` 与 `/api/action/*`) +- `~/Library/LaunchAgents/com.homelab.portal.plist`: HomeLab Console V3 后端与静态资源服务 (`stacks/portal/server.py`,监听 `3002`/`3004`,提供 `/api/telemetry`、`/api/agents/overview`、`/api/clawbot/*` 与 `/api/action/*`) +- `~/Library/LaunchAgents/com.homelab.codeg.plist`: Codeg 多智能体协同工作台底座 (`scripts/start-codeg.sh`,监听 `3080`,内置 4 大分工角色与 20+ CLI 协议适配) +- `~/Library/LaunchAgents/com.homelab.gitea.plist`: Gitea 私有代码托管中枢 (`scripts/start-gitea.sh`,监听 `3005`/SSH `2222`,Mac SSD 热层 + `scripts/sync-git-to-nas.sh` 极空间 20TB 冷层归档) - `~/Library/LaunchAgents/com.homelab.agy-web.plist`: AGY 网页终端 (`scripts/start-agy-web.sh`,通过 `ttyd` 暴露 `7681` 端口并附着到 `tmux` 会话 `agy`) - `~/Library/LaunchAgents/com.homelab.cf-ddns.plist`: 每 5 分钟检测家庭公网 IP 并更新 Cloudflare `home.961504.xyz` / `*.home.961504.xyz` - `~/Library/LaunchAgents/com.homelab.mount-zspace.plist`: 自动挂载极空间 SMB 至 `~/nas/共享文件` 与 `~/nas/个人空间` -- `~/Library/LaunchAgents/com.homelab.nas-backup.plist`: 每天凌晨 03:30 自动打包备份 Vaultwarden、Caddy 与基础设施配置至极空间 `~/nas/个人空间/MacMini_Backups/` +- `~/Library/LaunchAgents/com.homelab.nas-backup.plist`: 每天凌晨 03:30 自动打包备份 Vaultwarden、Caddy、Gitea 冷备与基础设施配置至极空间 `~/nas/个人空间/MacMini_Backups/` diff --git a/scripts/start-codeg.sh b/scripts/start-codeg.sh new file mode 100755 index 0000000..de42bf9 --- /dev/null +++ b/scripts/start-codeg.sh @@ -0,0 +1,20 @@ +#!/usr/bin/env bash +# ============================================================================== +# start-codeg.sh — 启动 Codeg 多智能体协同工作台服务端 (M6 Mac mini 原生无头底座) +# 监听端口: 3080 (Web UI + JSON/WebSocket API) +# ============================================================================== +set -euo pipefail + +export HOME="/Users/ixvii0iv" +export USER="ixvii0iv" +export LANG="en_US.UTF-8" +export LC_ALL="en_US.UTF-8" +export PATH="/Users/ixvii0iv/.local/bin:/Users/ixvii0iv/.antigravity-cli/bin:/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin" + +export CODEG_PORT="3080" +export CODEG_HOST="0.0.0.0" +export CODEG_TOKEN="homelab2026" +export CODEG_STATIC_DIR="/Users/ixvii0iv/.local/share/codeg/web" +export CODEG_MCP_BIN="/Users/ixvii0iv/.local/bin/codeg-mcp" + +exec /Users/ixvii0iv/.local/bin/codeg-server diff --git a/scripts/start-gitea.sh b/scripts/start-gitea.sh new file mode 100755 index 0000000..07605ce --- /dev/null +++ b/scripts/start-gitea.sh @@ -0,0 +1,103 @@ +#!/usr/bin/env bash +# ============================================================================== +# start-gitea.sh — 启动 Gitea 私有代码托管中枢 (Mac SSD 热层 + 极空间 NAS 冷层归档) +# HTTP 端口: 3005 | 内置 Git SSH 端口: 2222 +# ============================================================================== +set -euo pipefail + +export HOME="/Users/ixvii0iv" +export USER="ixvii0iv" +export USERNAME="ixvii0iv" +export LANG="en_US.UTF-8" +export LC_ALL="en_US.UTF-8" +export PATH="/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin" + +HOT_DIR="/Users/ixvii0iv/homelab/stacks/git" +mkdir -p "$HOT_DIR/data/repositories" \ + "$HOT_DIR/data/lfs" \ + "$HOT_DIR/data/attachments" \ + "$HOT_DIR/data/packages" \ + "$HOT_DIR/data/repo-archive" \ + "$HOT_DIR/custom/conf" \ + "$HOT_DIR/log" + +CONF_FILE="$HOT_DIR/custom/conf/app.ini" +if [ ! -f "$CONF_FILE" ]; then + SECRET_KEY=$(/opt/homebrew/opt/gitea/bin/gitea generate secret SECRET_KEY) + INTERNAL_TOKEN=$(/opt/homebrew/opt/gitea/bin/gitea generate secret INTERNAL_TOKEN) + JWT_SECRET=$(/opt/homebrew/opt/gitea/bin/gitea generate secret JWT_SECRET) + LFS_JWT_SECRET=$(/opt/homebrew/opt/gitea/bin/gitea generate secret LFS_JWT_SECRET) + + cat > "$CONF_FILE" </dev/null 2>&1 || true + done +fi + +# 3. 备份 Gitea SQLite 元数据快照 +if [ -f "$HOT_DIR/gitea.db" ]; then + /usr/bin/sqlite3 "$HOT_DIR/gitea.db" ".backup '$COLD_DIR/db/gitea-latest.db'" 2>/dev/null || cp "$HOT_DIR/gitea.db" "$COLD_DIR/db/gitea-latest.db" +fi + +echo "[$(date '+%Y-%m-%d %H:%M:%S')] OK: Git 热层仓库与 LFS 大文件已同步归档至极空间 ($COLD_DIR)" diff --git a/stacks/azure-edge/Caddyfile b/stacks/azure-edge/Caddyfile index 53f8f10..d85304e 100644 --- a/stacks/azure-edge/Caddyfile +++ b/stacks/azure-edge/Caddyfile @@ -38,3 +38,28 @@ vw.961504.xyz:443 { header_up X-Real-IP {remote_host} } } + +# 6. Codeg 多智能体协同工作台底座 (443 免端口访问) -> https://codeg.961504.xyz +codeg.961504.xyz:443 { + encode zstd gzip + forward_auth 100.108.205.40:3002 { + uri /api/auth/verify + } + reverse_proxy 100.108.205.40:3080 { + header_up Authorization "Bearer homelab2026" + } +} + +# 7. Gitea 私有代码托管中枢 (443 免端口访问) -> https://git.961504.xyz +git.961504.xyz:443 { + encode zstd gzip + @browser { + header Accept *text/html* + } + forward_auth @browser 100.108.205.40:3002 { + uri /api/auth/verify + } + reverse_proxy 100.108.205.40:3005 { + header_up X-Webauth-User admin + } +} diff --git a/stacks/gateway/Caddyfile b/stacks/gateway/Caddyfile index 641c320..0337064 100644 --- a/stacks/gateway/Caddyfile +++ b/stacks/gateway/Caddyfile @@ -68,3 +68,37 @@ vw.home.961504.xyz:10443 { header_up X-Real-IP {remote_host} } } + +# 7. Uptime Kuma 外部独立监控哨兵 (https://status.home.961504.xyz:10443) +status.home.961504.xyz:10443 { + tls /Users/ixvii0iv/homelab/stacks/gateway/certs/fullchain.pem /Users/ixvii0iv/homelab/stacks/gateway/certs/privkey.pem + encode zstd gzip + reverse_proxy 100.115.204.51:3001 +} + +# 8. Codeg 多智能体协同工作台底座 (https://codeg.home.961504.xyz:10443) +codeg.home.961504.xyz:10443 { + tls /Users/ixvii0iv/homelab/stacks/gateway/certs/fullchain.pem /Users/ixvii0iv/homelab/stacks/gateway/certs/privkey.pem + encode zstd gzip + forward_auth 127.0.0.1:3002 { + uri /api/auth/verify + } + reverse_proxy 127.0.0.1:3080 { + header_up Authorization "Bearer homelab2026" + } +} + +# 9. Gitea 私有代码托管中枢 (https://git.home.961504.xyz:10443) +git.home.961504.xyz:10443 { + tls /Users/ixvii0iv/homelab/stacks/gateway/certs/fullchain.pem /Users/ixvii0iv/homelab/stacks/gateway/certs/privkey.pem + encode zstd gzip + @browser { + header Accept *text/html* + } + forward_auth @browser 127.0.0.1:3002 { + uri /api/auth/verify + } + reverse_proxy 127.0.0.1:3005 { + header_up X-Webauth-User admin + } +} diff --git a/stacks/portal/dist/assets/index-BHNk_TrW.css b/stacks/portal/dist/assets/index-BHNk_TrW.css new file mode 100644 index 0000000..8d80c17 --- /dev/null +++ b/stacks/portal/dist/assets/index-BHNk_TrW.css @@ -0,0 +1 @@ +/*! tailwindcss v4.3.5 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:block))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-space-y-reverse:0;--tw-divide-x-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial}}}@layer theme{:root,:host{--font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-md:28rem;--container-lg:32rem;--container-xl:36rem;--container-6xl:72rem;--container-7xl:80rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height: 1.5 ;--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-tight:-.025em;--tracking-wider:.05em;--tracking-widest:.1em;--leading-relaxed:1.625;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--animate-spin:spin 1s linear infinite;--blur-sm:8px;--blur-md:12px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-none{pointer-events:none}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.fixed{position:fixed}.relative{position:relative}.sticky{position:sticky}.inset-0{top:0;right:0;bottom:0;left:0}.top-0{top:0}.top-\[22\%\]{top:22%}.top-\[50\%\]{top:50%}.right-5{right:calc(var(--spacing) * 5)}.bottom-5{bottom:calc(var(--spacing) * 5)}.left-\[50\%\]{left:50%}.z-30{z-index:30}.z-50{z-index:50}.mx-auto{margin-inline:auto}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:var(--spacing)}.mt-2{margin-top:calc(var(--spacing) * 2)}.ml-auto{margin-left:auto}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline-flex{display:inline-flex}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-2{height:calc(var(--spacing) * 2)}.h-2\.5{height:calc(var(--spacing) * 2.5)}.h-3\.5{height:calc(var(--spacing) * 3.5)}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-10{height:calc(var(--spacing) * 10)}.h-14{height:calc(var(--spacing) * 14)}.h-48{height:calc(var(--spacing) * 48)}.h-\[88vh\]{height:88vh}.h-full{height:100%}.max-h-80{max-height:calc(var(--spacing) * 80)}.min-h-screen{min-height:100vh}.w-1\.5{width:calc(var(--spacing) * 1.5)}.w-2{width:calc(var(--spacing) * 2)}.w-2\.5{width:calc(var(--spacing) * 2.5)}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-4{width:calc(var(--spacing) * 4)}.w-5{width:calc(var(--spacing) * 5)}.w-6{width:calc(var(--spacing) * 6)}.w-8{width:calc(var(--spacing) * 8)}.w-9{width:calc(var(--spacing) * 9)}.w-10{width:calc(var(--spacing) * 10)}.w-12{width:calc(var(--spacing) * 12)}.w-48{width:calc(var(--spacing) * 48)}.w-\[1px\]{width:1px}.w-\[95vw\]{width:95vw}.w-full{width:100%}.max-w-6xl{max-width:var(--container-6xl)}.max-w-7xl{max-width:var(--container-7xl)}.max-w-\[260px\]{max-width:260px}.max-w-full{max-width:100%}.max-w-lg{max-width:var(--container-lg)}.max-w-md{max-width:var(--container-md)}.max-w-xl{max-width:var(--container-xl)}.min-w-0{min-width:0}.flex-1{flex:1}.shrink-0{flex-shrink:0}.translate-x-\[-50\%\]{--tw-translate-x:-50%;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-0{--tw-translate-y:0px;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-\[-50\%\]{--tw-translate-y:-50%;translate:var(--tw-translate-x) var(--tw-translate-y)}.animate-spin{animation:var(--animate-spin)}.cursor-pointer{cursor:pointer}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-1{gap:var(--spacing)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-3\.5{gap:calc(var(--spacing) * 3.5)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-5{gap:calc(var(--spacing) * 5)}.gap-6{gap:calc(var(--spacing) * 6)}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(var(--spacing) * var(--tw-space-y-reverse));margin-block-end:calc(var(--spacing) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-7>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 7) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 7) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-10>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 10) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 10) * calc(1 - var(--tw-space-y-reverse)))}:where(.divide-x>:not(:last-child)){--tw-divide-x-reverse:0;border-inline-style:var(--tw-border-style);border-inline-start-width:calc(1px * var(--tw-divide-x-reverse));border-inline-end-width:calc(1px * calc(1 - var(--tw-divide-x-reverse)))}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-full{border-radius:2147483647px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-xl{border-radius:var(--radius-xl)}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-\[var\(--accent\)\]{border-color:var(--accent)}.bg-\[var\(--accent-soft\)\]{background-color:var(--accent-soft)}.bg-\[var\(--bg-card\)\]{background-color:var(--bg-card)}.bg-\[var\(--primary\)\]{background-color:var(--primary)}.bg-\[var\(--success-soft\)\]{background-color:var(--success-soft)}.bg-black{background-color:var(--color-black)}.bg-black\/70{background-color:#000000b3}@supports (color:color-mix(in lab,red,red)){.bg-black\/70{background-color:color-mix(in oklab,var(--color-black) 70%,transparent)}}.bg-black\/75{background-color:#000000bf}@supports (color:color-mix(in lab,red,red)){.bg-black\/75{background-color:color-mix(in oklab,var(--color-black) 75%,transparent)}}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.object-contain{object-fit:contain}.p-0{padding:0}.p-0\.5{padding:calc(var(--spacing) * .5)}.p-1{padding:var(--spacing)}.p-1\.5{padding:calc(var(--spacing) * 1.5)}.p-2{padding:calc(var(--spacing) * 2)}.p-2\.5{padding:calc(var(--spacing) * 2.5)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.p-6{padding:calc(var(--spacing) * 6)}.px-0\.5{padding-inline:calc(var(--spacing) * .5)}.px-1{padding-inline:var(--spacing)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:var(--spacing)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-6{padding-block:calc(var(--spacing) * 6)}.pt-0{padding-top:0}.pt-1{padding-top:var(--spacing)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pb-3{padding-bottom:calc(var(--spacing) * 3)}.pb-4{padding-bottom:calc(var(--spacing) * 4)}.pb-5{padding-bottom:calc(var(--spacing) * 5)}.text-center{text-align:center}.text-left{text-align:left}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.tracking-widest{--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest)}.whitespace-nowrap{white-space:nowrap}.text-\[var\(--accent\)\]{color:var(--accent)}.text-\[var\(--primary-fg\)\]{color:var(--primary-fg)}.text-\[var\(--success\)\]{color:var(--success)}.text-\[var\(--text-main\)\]{color:var(--text-main)}.text-\[var\(--text-muted\)\]{color:var(--text-muted)}.text-white{color:var(--color-white)}.uppercase{text-transform:uppercase}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal, ) var(--tw-slashed-zero, ) var(--tw-numeric-figure, ) var(--tw-numeric-spacing, ) var(--tw-numeric-fraction, )}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xs{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.backdrop-blur-md{--tw-backdrop-blur:blur(var(--blur-md));-webkit-backdrop-filter:var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );backdrop-filter:var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, )}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );backdrop-filter:var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, )}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-200{--tw-duration:.2s;transition-duration:.2s}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}@media(hover:hover){:is(:where(.group):hover .group-hover\:underline){text-decoration-line:underline}}.placeholder\:text-\[var\(--text-subtle\)\]::placeholder{color:var(--text-subtle)}@media(hover:hover){.hover\:bg-\[var\(--bg-muted\)\]:hover{background-color:var(--bg-muted)}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-80:hover{opacity:.8}.hover\:opacity-90:hover{opacity:.9}}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}.data-\[disabled\=true\]\:pointer-events-none[data-disabled=true]{pointer-events:none}.data-\[disabled\=true\]\:opacity-50[data-disabled=true]{opacity:.5}.data-\[selected\=true\]\:bg-\[var\(--bg-muted\)\][data-selected=true]{background-color:var(--bg-muted)}.data-\[selected\=true\]\:text-\[var\(--text-main\)\][data-selected=true]{color:var(--text-main)}.data-\[state\=active\]\:bg-\[var\(--bg-card\)\][data-state=active]{background-color:var(--bg-card)}.data-\[state\=active\]\:text-\[var\(--text-main\)\][data-state=active]{color:var(--text-main)}.data-\[state\=active\]\:shadow-xs[data-state=active]{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.data-\[state\=checked\]\:translate-x-4[data-state=checked]{--tw-translate-x:calc(var(--spacing) * 4);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[state\=checked\]\:border-\[var\(--accent\)\][data-state=checked]{border-color:var(--accent)}.data-\[state\=checked\]\:bg-\[var\(--accent\)\][data-state=checked]{background-color:var(--accent)}.data-\[state\=unchecked\]\:translate-x-0\.5[data-state=unchecked]{--tw-translate-x:calc(var(--spacing) * .5);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[state\=unchecked\]\:border-\[var\(--border-color\)\][data-state=unchecked]{border-color:var(--border-color)}.data-\[state\=unchecked\]\:bg-\[var\(--bg-muted\)\][data-state=unchecked]{background-color:var(--bg-muted)}@media(min-width:40rem){.sm\:col-span-2{grid-column:span 2/span 2}.sm\:inline{display:inline}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:items-center{align-items:center}.sm\:p-5{padding:calc(var(--spacing) * 5)}.sm\:p-8{padding:calc(var(--spacing) * 8)}.sm\:px-6{padding-inline:calc(var(--spacing) * 6)}}@media(min-width:48rem){.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:items-center{align-items:center}}@media(min-width:64rem){.lg\:sticky{position:sticky}.lg\:top-20{top:calc(var(--spacing) * 20)}.lg\:col-span-2{grid-column:span 2/span 2}.lg\:col-span-3{grid-column:span 3/span 3}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:px-8{padding-inline:calc(var(--spacing) * 8)}}.\[\&_\[cmdk-group-heading\]\]\:px-2\.5 [cmdk-group-heading]{padding-inline:calc(var(--spacing) * 2.5)}.\[\&_\[cmdk-group-heading\]\]\:py-1\.5 [cmdk-group-heading]{padding-block:calc(var(--spacing) * 1.5)}.\[\&_\[cmdk-group-heading\]\]\:text-\[10px\] [cmdk-group-heading]{font-size:10px}.\[\&_\[cmdk-group-heading\]\]\:font-semibold [cmdk-group-heading]{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.\[\&_\[cmdk-group-heading\]\]\:tracking-wider [cmdk-group-heading]{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.\[\&_\[cmdk-group-heading\]\]\:text-\[var\(--text-subtle\)\] [cmdk-group-heading]{color:var(--text-subtle)}.\[\&_\[cmdk-group-heading\]\]\:uppercase [cmdk-group-heading]{text-transform:uppercase}}:root,[data-theme=dark]{--bg-page:#09090b;--bg-card:#121215;--bg-widget:#16161a;--bg-muted:#18181b;--bg-hover:#1c1c21;--text-main:#f4f4f5;--text-muted:#a1a1aa;--text-subtle:#71717a;--border-color:#27272a;--border-subtle:#ffffff0f;--border-hover:#3f3f46;--primary:#fafafa;--primary-fg:#09090b;--accent:#3b82f6;--accent-soft:#3b82f629;--success:#10b981;--success-soft:#10b98124;--card-shadow:0 4px 16px -4px #0000008c}[data-theme=light]{--bg-page:#f8fafc;--bg-card:#fff;--bg-widget:#f8fafc;--bg-muted:#f1f5f9;--bg-hover:#fff;--text-main:#0f172a;--text-muted:#64748b;--text-subtle:#94a3b8;--border-color:#e2e8f0;--border-subtle:#f1f5f9;--border-hover:#cbd5e1;--primary:#0f172a;--primary-fg:#fff;--accent:#2563eb;--accent-soft:#2563eb1f;--success:#10b981;--success-soft:#10b9811a;--card-shadow:0 1px 3px 0 #0f172a0a, 0 1px 2px -1px #0f172a08}body{background-color:var(--bg-page);color:var(--text-main);-webkit-font-smoothing:antialiased;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Microsoft YaHei,sans-serif;transition:background-color .2s,color .2s}input,textarea,select,button{-webkit-appearance:none;-moz-appearance:none;appearance:none;outline:none;font-family:inherit}input:-webkit-autofill{transition:background-color 5000s ease-in-out;-webkit-text-fill-color:var(--text-main)!important;-webkit-box-shadow:0 0 0px 1000px var(--bg-muted) inset!important}input:-webkit-autofill:hover{transition:background-color 5000s ease-in-out;-webkit-text-fill-color:var(--text-main)!important;-webkit-box-shadow:0 0 0px 1000px var(--bg-muted) inset!important}input:-webkit-autofill:focus{transition:background-color 5000s ease-in-out;-webkit-text-fill-color:var(--text-main)!important;-webkit-box-shadow:0 0 0px 1000px var(--bg-muted) inset!important}textarea:-webkit-autofill{transition:background-color 5000s ease-in-out;-webkit-text-fill-color:var(--text-main)!important;-webkit-box-shadow:0 0 0px 1000px var(--bg-muted) inset!important}.hl-input{background-color:var(--bg-muted);width:100%;color:var(--text-main);border:1px solid var(--border-color);border-radius:.625rem;padding:.55rem .75rem;font-size:.8125rem;line-height:1.25rem;transition:border-color .15s,box-shadow .15s,background-color .15s}.hl-input::placeholder{color:var(--text-subtle)}.hl-input:hover{border-color:var(--border-hover)}.hl-input:focus,.hl-input:focus-visible{background-color:var(--bg-card);border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.hl-input-group{background-color:var(--bg-muted);width:100%;color:var(--text-main);border:1px solid var(--border-color);border-radius:.625rem;align-items:center;gap:.5rem;height:2.375rem;padding:0 .75rem;transition:border-color .15s,box-shadow .15s,background-color .15s;display:flex}.hl-input-group:hover{border-color:var(--border-hover)}.hl-input-group:focus-within{background-color:var(--bg-card);border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.hl-input-group input{min-width:0;height:100%;color:var(--text-main);background:0 0;border:0;flex:1;font-size:.8125rem}.hl-input-group input::placeholder{color:var(--text-subtle)}.font-mono-num{font-variant-numeric:tabular-nums;font-family:JetBrains Mono,SF Mono,Menlo,monospace}.hl-card{background-color:var(--bg-card);border:1px solid var(--border-color);box-shadow:var(--card-shadow);border-radius:.75rem;transition:border-color .16s,transform .16s,box-shadow .16s}.hl-card-interactive:hover{border-color:var(--border-hover);background-color:var(--bg-hover);transform:translateY(-1px)}.hl-widget-footer{background-color:var(--bg-widget);border-top:1px solid var(--border-color)}.hl-pill{background-color:var(--bg-card);border:1px solid var(--border-color);border-radius:.5rem}.hl-muted{background-color:var(--bg-muted)}.hl-border{border-color:var(--border-color)}.hl-btn-primary{background-color:var(--primary);color:var(--primary-fg);border-radius:.5rem;font-weight:500;transition:opacity .15s,transform .1s}.hl-btn-primary:hover{opacity:.9}.hl-btn-primary:active{transform:scale(.99)}.hl-btn-outline{background-color:var(--bg-card);color:var(--text-main);border:1px solid var(--border-color);border-radius:.5rem;transition:background-color .15s,border-color .15s}.hl-btn-outline:hover{background-color:var(--bg-muted);border-color:var(--border-hover)}.hl-bar-fill{background-color:var(--accent);transition:width .5s cubic-bezier(.22,1,.36,1)}.hl-bar-fill-green{background-color:var(--success);transition:width .5s cubic-bezier(.22,1,.36,1)}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}} diff --git a/stacks/portal/dist/assets/index-DiTh48KJ.js b/stacks/portal/dist/assets/index-DiTh48KJ.js deleted file mode 100644 index 08ef41b..0000000 --- a/stacks/portal/dist/assets/index-DiTh48KJ.js +++ /dev/null @@ -1,236 +0,0 @@ -var d0=i=>{throw TypeError(i)};var m0=(i,r,c)=>r.has(i)||d0("Cannot "+c);var xt=(i,r,c)=>(m0(i,r,"read from private field"),c?c.call(i):r.get(i)),h0=(i,r,c)=>r.has(i)?d0("Cannot add the same private member more than once"):r instanceof WeakSet?r.add(i):r.set(i,c),uf=(i,r,c,o)=>(m0(i,r,"write to private field"),o?o.call(i,c):r.set(i,c),c);function DS(i,r){for(var c=0;co[s]})}}}return Object.freeze(Object.defineProperty(i,Symbol.toStringTag,{value:"Module"}))}(function(){const r=document.createElement("link").relList;if(r&&r.supports&&r.supports("modulepreload"))return;for(const s of document.querySelectorAll('link[rel="modulepreload"]'))o(s);new MutationObserver(s=>{for(const f of s)if(f.type==="childList")for(const m of f.addedNodes)m.tagName==="LINK"&&m.rel==="modulepreload"&&o(m)}).observe(document,{childList:!0,subtree:!0});function c(s){const f={};return s.integrity&&(f.integrity=s.integrity),s.referrerPolicy&&(f.referrerPolicy=s.referrerPolicy),s.crossOrigin==="use-credentials"?f.credentials="include":s.crossOrigin==="anonymous"?f.credentials="omit":f.credentials="same-origin",f}function o(s){if(s.ep)return;s.ep=!0;const f=c(s);fetch(s.href,f)}})();function sd(i){return i&&i.__esModule&&Object.prototype.hasOwnProperty.call(i,"default")?i.default:i}var rf={exports:{}},fu={};/** - * @license React - * react-jsx-runtime.production.js - * - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var v0;function US(){if(v0)return fu;v0=1;var i=Symbol.for("react.transitional.element"),r=Symbol.for("react.fragment");function c(o,s,f){var m=null;if(f!==void 0&&(m=""+f),s.key!==void 0&&(m=""+s.key),"key"in s){f={};for(var v in s)v!=="key"&&(f[v]=s[v])}else f=s;return s=f.ref,{$$typeof:i,type:o,key:m,ref:s!==void 0?s:null,props:f}}return fu.Fragment=r,fu.jsx=c,fu.jsxs=c,fu}var g0;function BS(){return g0||(g0=1,rf.exports=US()),rf.exports}var h=BS(),of={exports:{}},be={};/** - * @license React - * react.production.js - * - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var y0;function kS(){if(y0)return be;y0=1;var i=Symbol.for("react.transitional.element"),r=Symbol.for("react.portal"),c=Symbol.for("react.fragment"),o=Symbol.for("react.strict_mode"),s=Symbol.for("react.profiler"),f=Symbol.for("react.consumer"),m=Symbol.for("react.context"),v=Symbol.for("react.forward_ref"),p=Symbol.for("react.suspense"),b=Symbol.for("react.memo"),S=Symbol.for("react.lazy"),y=Symbol.for("react.activity"),E=Symbol.for("react.view_transition"),A=Symbol.iterator;function j(N){return N===null||typeof N!="object"?null:(N=A&&N[A]||N["@@iterator"],typeof N=="function"?N:null)}var D={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},L=Object.assign,Y={};function G(N,U,$){this.props=N,this.context=U,this.refs=Y,this.updater=$||D}G.prototype.isReactComponent={},G.prototype.setState=function(N,U){if(typeof N!="object"&&typeof N!="function"&&N!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,N,U,"setState")},G.prototype.forceUpdate=function(N){this.updater.enqueueForceUpdate(this,N,"forceUpdate")};function k(){}k.prototype=G.prototype;function V(N,U,$){this.props=N,this.context=U,this.refs=Y,this.updater=$||D}var I=V.prototype=new k;I.constructor=V,L(I,G.prototype),I.isPureReactComponent=!0;var R=Array.isArray;function T(){}var z={H:null,A:null,T:null,S:null},Z=Object.prototype.hasOwnProperty;function te(N,U,$){var ee=$.ref;return{$$typeof:i,type:N,key:U,ref:ee!==void 0?ee:null,props:$}}function W(N,U){return te(N.type,U,N.props)}function P(N){return typeof N=="object"&&N!==null&&N.$$typeof===i}function ne(N){var U={"=":"=0",":":"=2"};return"$"+N.replace(/[=:]/g,function($){return U[$]})}var ue=/\/+/g;function ge(N,U){return typeof N=="object"&&N!==null&&N.key!=null?ne(""+N.key):U.toString(36)}function F(N){switch(N.status){case"fulfilled":return N.value;case"rejected":throw N.reason;default:switch(typeof N.status=="string"?N.then(T,T):(N.status="pending",N.then(function(U){N.status==="pending"&&(N.status="fulfilled",N.value=U)},function(U){N.status==="pending"&&(N.status="rejected",N.reason=U)})),N.status){case"fulfilled":return N.value;case"rejected":throw N.reason}}throw N}function ae(N,U,$,ee,he){var ie=typeof N;(ie==="undefined"||ie==="boolean")&&(N=null);var Ee=!1;if(N===null)Ee=!0;else switch(ie){case"bigint":case"string":case"number":Ee=!0;break;case"object":switch(N.$$typeof){case i:case r:Ee=!0;break;case S:return Ee=N._init,ae(Ee(N._payload),U,$,ee,he)}}if(Ee)return he=he(N),Ee=ee===""?"."+ge(N,0):ee,R(he)?($="",Ee!=null&&($=Ee.replace(ue,"$&/")+"/"),ae(he,U,$,"",function(Dt){return Dt})):he!=null&&(P(he)&&(he=W(he,$+(he.key==null||N&&N.key===he.key?"":(""+he.key).replace(ue,"$&/")+"/")+Ee)),U.push(he)),1;Ee=0;var fe=ee===""?".":ee+":";if(R(N))for(var ye=0;ye>>1,K=F[xe];if(0>>1;xes(me,ce))Ns(U,me)?(F[xe]=U,F[N]=ce,xe=N):(F[xe]=me,F[J]=ce,xe=J);else if(Ns(U,ce))F[xe]=U,F[N]=ce,xe=N;else break e}}return ae}function s(F,ae){var ce=F.sortIndex-ae.sortIndex;return ce!==0?ce:F.id-ae.id}if(i.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var f=performance;i.unstable_now=function(){return f.now()}}else{var m=Date,v=m.now();i.unstable_now=function(){return m.now()-v}}var p=[],b=[],S=1,y=null,E=3,A=!1,j=!1,D=!1,L=!1,Y=typeof setTimeout=="function"?setTimeout:null,G=typeof clearTimeout=="function"?clearTimeout:null,k=typeof setImmediate<"u"?setImmediate:null;function V(F){for(var ae=c(b);ae!==null;){if(ae.callback===null)o(b);else if(ae.startTime<=F)o(b),ae.sortIndex=ae.expirationTime,r(p,ae);else break;ae=c(b)}}function I(F){if(D=!1,V(F),!j)if(c(p)!==null)j=!0,R||(R=!0,P());else{var ae=c(b);ae!==null&&ge(I,ae.startTime-F)}}var R=!1,T=-1,z=5,Z=-1;function te(){return L?!0:!(i.unstable_now()-ZF&&te());){var xe=y.callback;if(typeof xe=="function"){y.callback=null,E=y.priorityLevel;var K=xe(y.expirationTime<=F);if(F=i.unstable_now(),typeof K=="function"){y.callback=K,V(F),ae=!0;break t}y===c(p)&&o(p),V(F)}else o(p);y=c(p)}if(y!==null)ae=!0;else{var Se=c(b);Se!==null&&ge(I,Se.startTime-F),ae=!1}}break e}finally{y=null,E=ce,A=!1}ae=void 0}}finally{ae?P():R=!1}}}var P;if(typeof k=="function")P=function(){k(W)};else if(typeof MessageChannel<"u"){var ne=new MessageChannel,ue=ne.port2;ne.port1.onmessage=W,P=function(){ue.postMessage(null)}}else P=function(){Y(W,0)};function ge(F,ae){T=Y(function(){F(i.unstable_now())},ae)}i.unstable_IdlePriority=5,i.unstable_ImmediatePriority=1,i.unstable_LowPriority=4,i.unstable_NormalPriority=3,i.unstable_Profiling=null,i.unstable_UserBlockingPriority=2,i.unstable_cancelCallback=function(F){F.callback=null},i.unstable_forceFrameRate=function(F){0>F||125xe?(F.sortIndex=ce,r(b,F),c(p)===null&&F===c(b)&&(D?(G(T),T=-1):D=!0,ge(I,ce-xe))):(F.sortIndex=K,r(p,F),j||A||(j=!0,R||(R=!0,P()))),F},i.unstable_shouldYield=te,i.unstable_wrapCallback=function(F){var ae=E;return function(){var ce=E;E=ae;try{return F.apply(this,arguments)}finally{E=ce}}}})(ff)),ff}var x0;function LS(){return x0||(x0=1,sf.exports=HS()),sf.exports}var df={exports:{}},St={};/** - * @license React - * react-dom.production.js - * - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var S0;function qS(){if(S0)return St;S0=1;var i=fd();function r(S){var y="https://react.dev/errors/"+S;if(1"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(i)}catch(r){console.error(r)}}return i(),df.exports=qS(),df.exports}/** - * @license React - * react-dom-client.production.js - * - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var C0;function GS(){if(C0)return du;C0=1;var i=LS(),r=fd(),c=_y();function o(e){var t="https://react.dev/errors/"+e;if(1ga||(e.current=Wn[ga],Wn[ga]=null,ga--)}function qe(e,t){ga++,Wn[ga]=e.current,e.current=t}var gn=vn(null),yi=vn(null),el=vn(null),Su=vn(null);function Eu(e,t){switch(qe(el,t),qe(yi,e),qe(gn,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?Sg(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)t=Sg(t),e=Eg(t,e);else switch(e){case"svg":e=1;break;case"math":e=2;break;default:e=0}}mt(gn),qe(gn,e)}function ya(){mt(gn),mt(yi),mt(el)}function wo(e){var t=e.memoizedState;t!==null&&(ai._currentValue=t.memoizedState,qe(Su,e)),t=gn.current;var n=Eg(t,e.type);t!==n&&(qe(yi,e),qe(gn,n))}function Cu(e){yi.current===e&&(mt(gn),mt(yi)),Su.current===e&&(mt(Su),ai._currentValue=Dt)}var To,Yd;function tl(e){if(To===void 0)try{throw Error()}catch(n){var t=n.stack.trim().match(/\n( *(at )?)/);To=t&&t[1]||"",Yd=-1)":-1a||C[l]!==M[a]){var q=` -`+C[l].replace(" at new "," at ");return e.displayName&&q.includes("")&&(q=q.replace("",e.displayName)),q}while(1<=l&&0<=a);break}}}finally{_o=!1,Error.prepareStackTrace=n}return(n=e?e.displayName||e.name:"")?tl(n):""}function Hp(e,t){switch(e.tag){case 26:case 27:case 5:return tl(e.type);case 16:return tl("Lazy");case 13:return e.child!==t&&t!==null?tl("Suspense Fallback"):tl("Suspense");case 19:return tl("SuspenseList");case 0:case 15:return Ao(e.type,!1);case 11:return Ao(e.type.render,!1);case 1:return Ao(e.type,!0);case 31:return tl("Activity");case 30:return tl("ViewTransition");default:return""}}function Vd(e){try{var t="",n=null;do t+=Hp(e,n),n=e,e=e.return;while(e);return t}catch(l){return` -Error generating stack: `+l.message+` -`+l.stack}}var Ro=Object.prototype.hasOwnProperty,jo=i.unstable_scheduleCallback,Oo=i.unstable_cancelCallback,Lp=i.unstable_shouldYield,qp=i.unstable_requestPaint,Ut=i.unstable_now,Gp=i.unstable_getCurrentPriorityLevel,Qd=i.unstable_ImmediatePriority,Xd=i.unstable_UserBlockingPriority,Nu=i.unstable_NormalPriority,Yp=i.unstable_LowPriority,Zd=i.unstable_IdlePriority,Vp=i.log,Qp=i.unstable_setDisableYieldValue,pi=null,Bt=null;function nl(e){if(typeof Vp=="function"&&Qp(e),Bt&&typeof Bt.setStrictMode=="function")try{Bt.setStrictMode(pi,e)}catch{}}var kt=Math.clz32?Math.clz32:Kp,Xp=Math.log,Zp=Math.LN2;function Kp(e){return e>>>=0,e===0?32:31-(Xp(e)/Zp|0)|0}var wu=256,Tu=262144,_u=4194304;function Bl(e){var t=e&42;if(t!==0)return t;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return e&-e;case 262144:case 524288:case 1048576:case 2097152:return e&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return e&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function Au(e,t,n){var l=e.pendingLanes;if(l===0)return 0;var a=0,u=e.suspendedLanes,d=e.pingedLanes;e=e.warmLanes;var g=l&134217727;return g!==0?(l=g&~u,l!==0?a=Bl(l):(d&=g,d!==0?a=Bl(d):n||(n=g&~e,n!==0&&(a=Bl(n))))):(g=l&~u,g!==0?a=Bl(g):d!==0?a=Bl(d):n||(n=l&~e,n!==0&&(a=Bl(n)))),a===0?0:t!==0&&t!==a&&(t&u)===0&&(u=a&-a,n=t&-t,u>=n||u===32&&(n&4194048)!==0)?t:a}function bi(e,t){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)===0}function Kd(e,t){(t&8)!==0&&(t|=t&32);var n=e.entangledLanes;if(n!==0)for(e=e.entanglements,n&=t;0n;n++)t.push(e);return t}function xi(e,t){e.pendingLanes|=t,t!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function Jp(e,t,n,l,a,u){var d=e.pendingLanes;e.pendingLanes=n,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=n,e.entangledLanes&=n,e.errorRecoveryDisabledLanes&=n,e.shellSuspendCounter=0;var g=e.entanglements,C=e.expirationTimes,M=e.hiddenUpdates;for(n=d&~n;0"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),Yo=!1;if(Dn)try{var Ni={};Object.defineProperty(Ni,"passive",{get:function(){Yo=!0}}),window.addEventListener("test",Ni,Ni),window.removeEventListener("test",Ni,Ni)}catch{Yo=!1}var ll=null,Vo=null,Du=null;function ym(){if(Du)return Du;var e,t=Vo,n=t.length,l,a="value"in ll?ll.value:ll.textContent,u=a.length;for(e=0;e=_i),Cm=" ",Nm=!1;function wm(e,t){switch(e){case"keyup":return Ob.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Tm(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var Ta=!1;function zb(e,t){switch(e){case"compositionend":return Tm(t);case"keypress":return t.which!==32?null:(Nm=!0,Cm);case"textInput":return e=t.data,e===Cm&&Nm?null:e;default:return null}}function Db(e,t){if(Ta)return e==="compositionend"||!Io&&wm(e,t)?(e=ym(),Du=Vo=ll=null,Ta=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1"u")return null;try{return e.activeElement||e.body}catch{return e.body}}function Dm(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function Um(e,t){var n=Dm(e);e=0;for(var l;n;){if(n.nodeType===3){if(l=e+n.textContent.length,e<=t&&l>=t)return{node:n,offset:t-e};e=l}e:{for(;n;){if(n.nextSibling){n=n.nextSibling;break e}n=n.parentNode}n=void 0}n=Dm(n)}}function Bm(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?Bm(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function km(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var t=Po(e.document);t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href=="string"}catch{n=!1}if(n)e=t.contentWindow;else break;t=Po(e.document)}return t}function $o(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}var Yb=Dn&&"documentMode"in document&&11>=document.documentMode,_a=null,Wo=null,Oi=null,ec=!1;function Hm(e,t,n){var l=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;ec||_a==null||_a!==Po(l)||(l=_a,"selectionStart"in l&&$o(l)?l={start:l.selectionStart,end:l.selectionEnd}:(l=(l.ownerDocument&&l.ownerDocument.defaultView||window).getSelection(),l={anchorNode:l.anchorNode,anchorOffset:l.anchorOffset,focusNode:l.focusNode,focusOffset:l.focusOffset}),Oi&&ji(Oi,l)||(Oi=l,l=Lr(Wo,"onSelect"),0>=d,a-=d,pn=1<<32-kt(t)+a|n<pe?(tt=ve,ve=null):tt=ve.sibling;var Oe=_(O,ve,B[pe],Q);if(Oe===null){ve===null&&(ve=tt);break}e&&ve&&Oe.alternate===null&&t(O,ve),w=u(Oe,w,pe),je===null?re=Oe:je.sibling=Oe,je=Oe,ve=tt}if(pe===B.length)return n(O,ve),we&&Hn(O,pe),re;if(ve===null){for(;pepe?(tt=ve,ve=null):tt=ve.sibling;var Al=_(O,ve,Oe.value,Q);if(Al===null){ve===null&&(ve=tt);break}e&&ve&&Al.alternate===null&&t(O,ve),w=u(Al,w,pe),je===null?re=Al:je.sibling=Al,je=Al,ve=tt}if(Oe.done)return n(O,ve),we&&Hn(O,pe),re;if(ve===null){for(;!Oe.done;pe++,Oe=B.next())Oe=X(O,Oe.value,Q),Oe!==null&&(w=u(Oe,w,pe),je===null?re=Oe:je.sibling=Oe,je=Oe);return we&&Hn(O,pe),re}for(ve=l(ve);!Oe.done;pe++,Oe=B.next())Oe=H(ve,O,pe,Oe.value,Q),Oe!==null&&(e&&(tt=Oe.alternate,tt!==null&&ve.delete(tt.key===null?pe:tt.key)),w=u(Oe,w,pe),je===null?re=Oe:je.sibling=Oe,je=Oe);return e&&ve.forEach(function(zS){return t(O,zS)}),we&&Hn(O,pe),re}function Ne(O,w,B,Q){if(typeof B=="object"&&B!==null&&B.type===W&&B.key===null&&B.props.ref===void 0&&(B=B.props.children),typeof B=="object"&&B!==null){switch(B.$$typeof){case Z:e:{for(var re=B.key;w!==null;){if(w.key===re){if(re=B.type,re===W){if(w.tag===7){n(O,w.sibling),Q=a(w,B.props.children),cl(Q,B),Q.return=O,O=Q;break e}}else if(w.elementType===re||typeof re=="object"&&re!==null&&re.$$typeof===K&&Jl(re)===w.type){n(O,w.sibling),Q=a(w,B.props),cl(Q,B),Q.return=O,O=Q;break e}n(O,w);break}else t(O,w);w=w.sibling}B.type===W?(Q=Yl(B.props.children,O.mode,Q,B.key),cl(Q,B),Q.return=O,O=Q):(Q=Qu(B.type,B.key,B.props,null,O.mode,Q),cl(Q,B),Q.return=O,O=Q)}return d(O);case te:e:{for(re=B.key;w!==null;){if(w.key===re)if(w.tag===4&&w.stateNode.containerInfo===B.containerInfo&&w.stateNode.implementation===B.implementation){n(O,w.sibling),Q=a(w,B.children||[]),Q.return=O,O=Q;break e}else{n(O,w);break}else t(O,w);w=w.sibling}Q=rc(B,O.mode,Q),Q.return=O,O=Q}return d(O);case K:return B=Jl(B),Ne(O,w,B,Q)}if(Ee(B))return le(O,w,B,Q);if(ee(B)){if(re=ee(B),typeof re!="function")throw Error(o(150));return B=re.call(B),de(O,w,B,Q)}if(typeof B.then=="function")return Ne(O,w,er(B),Q);if(B.$$typeof===ge)return Ne(O,w,Fu(O,B),Q);tr(O,B)}return typeof B=="string"&&B!==""||typeof B=="number"||typeof B=="bigint"?(B=""+B,w!==null&&w.tag===6?(n(O,w.sibling),Q=a(w,B),Q.return=O,O=Q):(n(O,w),Q=uc(B,O.mode,Q),Q.return=O,O=Q),d(O)):n(O,w)}return function(O,w,B,Q){try{ki=0;var re=Ne(O,w,B,Q);return Ba=null,re}catch(ve){if(ve===Ua||ve===$u)throw ve;var je=At(29,ve,null,O.mode);return je.lanes=Q,je.return=O,je}finally{}}}var Pl=oh(!0),ch=oh(!1),sl=!1;function yc(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function pc(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function fl(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function dl(e,t,n){var l=e.updateQueue;if(l===null)return null;if(l=l.shared,(ze&2)!==0){var a=l.pending;return a===null?t.next=t:(t.next=a.next,a.next=t),l.pending=t,t=Vu(e),Zm(e,null,n),t}return Yu(e,l,t,n),Vu(e)}function Hi(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shared,(n&4194048)!==0)){var l=t.lanes;l&=e.pendingLanes,n|=l,t.lanes=n,Fd(e,n)}}function bc(e,t){var n=e.updateQueue,l=e.alternate;if(l!==null&&(l=l.updateQueue,n===l)){var a=null,u=null;if(n=n.firstBaseUpdate,n!==null){do{var d={lane:n.lane,tag:n.tag,payload:n.payload,callback:null,next:null};u===null?a=u=d:u=u.next=d,n=n.next}while(n!==null);u===null?a=u=t:u=u.next=t}else a=u=t;n={baseState:l.baseState,firstBaseUpdate:a,lastBaseUpdate:u,shared:l.shared,callbacks:l.callbacks},e.updateQueue=n;return}e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}var xc=!1;function Li(){if(xc){var e=Da;if(e!==null)throw e}}function qi(e,t,n,l){xc=!1;var a=e.updateQueue;sl=!1;var u=a.firstBaseUpdate,d=a.lastBaseUpdate,g=a.shared.pending;if(g!==null){a.shared.pending=null;var C=g,M=C.next;C.next=null,d===null?u=M:d.next=M,d=C;var q=e.alternate;q!==null&&(q=q.updateQueue,g=q.lastBaseUpdate,g!==d&&(g===null?q.firstBaseUpdate=M:g.next=M,q.lastBaseUpdate=C))}if(u!==null){var X=a.baseState;d=0,q=M=C=null,g=u;do{var _=g.lane&-536870913,H=_!==g.lane;if(H?(Re&_)===_:(l&_)===_){_!==0&&_===Kl&&(xc=!0),q!==null&&(q=q.next={lane:0,tag:g.tag,payload:g.payload,callback:null,next:null});e:{var le=e,de=g;_=t;var Ne=n;switch(de.tag){case 1:if(le=de.payload,typeof le=="function"){X=le.call(Ne,X,_);break e}X=le;break e;case 3:le.flags=le.flags&-65537|128;case 0:if(le=de.payload,_=typeof le=="function"?le.call(Ne,X,_):le,_==null)break e;X=T({},X,_);break e;case 2:sl=!0}}_=g.callback,_!==null&&(e.flags|=64,H&&(e.flags|=8192),H=a.callbacks,H===null?a.callbacks=[_]:H.push(_))}else H={lane:_,tag:g.tag,payload:g.payload,callback:g.callback,next:null},q===null?(M=q=H,C=X):q=q.next=H,d|=_;if(g=g.next,g===null){if(g=a.shared.pending,g===null)break;H=g,g=H.next,H.next=null,a.lastBaseUpdate=H,a.shared.pending=null}}while(!0);q===null&&(C=X),a.baseState=C,a.firstBaseUpdate=M,a.lastBaseUpdate=q,u===null&&(a.shared.lanes=0),bl|=d,e.lanes=d,e.memoizedState=X}}function sh(e,t){if(typeof e!="function")throw Error(o(191,e));e.call(t)}function fh(e,t){var n=e.callbacks;if(n!==null)for(e.callbacks=null,e=0;eu?u:8;var d=fe.T,g={};g.types=d!==null?d.types:null,fe.T=g,qc(e,!1,t,n);try{var C=a(),M=fe.S;if(M!==null&&M(g,C),C!==null&&typeof C=="object"&&typeof C.then=="function"){var q=Wb(C,l);Qi(e,t,q,Qt(e))}else Qi(e,t,l,Qt(e))}catch(X){Qi(e,t,{then:function(){},status:"rejected",reason:X},Qt())}finally{ye.p=u,d!==null&&g.types!==null&&(d.types=g.types),fe.T=d}}function ix(){}function Hc(e,t,n,l){if(e.tag!==5)throw Error(o(476));var a=Vh(e).queue;Yh(e,a,t,Dt,n===null?ix:function(){return Qh(e),n(l)})}function Vh(e){var t=e.memoizedState;if(t!==null)return t;t={memoizedState:Dt,baseState:Dt,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Yn,lastRenderedState:Dt},next:null};var n={};return t.next={memoizedState:n,baseState:n,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Yn,lastRenderedState:n},next:null},e.memoizedState=t,e=e.alternate,e!==null&&(e.memoizedState=t),t}function Qh(e){var t=Vh(e);t.next===null&&(t=e.alternate.memoizedState),Qi(e,t.next.queue,{},Qt())}function Lc(){return vt(ai)}function Xh(){return Fe().memoizedState}function Zh(){return Fe().memoizedState}function ux(e){for(var t=e.return;t!==null;){switch(t.tag){case 24:case 3:var n=Qt();e=fl(n);var l=dl(t,e,n);l!==null&&(Mt(l,t,n),Hi(l,t,n)),t={cache:mc()},e.payload=t;return}t=t.return}}function rx(e,t,n){var l=Qt();n={lane:l,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null},fr(e)?Ih(t,n):(n=ac(e,t,n,l),n!==null&&(Mt(n,e,l),Jh(n,t,l)))}function Kh(e,t,n){var l=Qt();Qi(e,t,n,l)}function Qi(e,t,n,l){var a={lane:l,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null};if(fr(e))Ih(t,a);else{var u=e.alternate;if(e.lanes===0&&(u===null||u.lanes===0)&&(u=t.lastRenderedReducer,u!==null))try{var d=t.lastRenderedState,g=u(d,n);if(a.hasEagerState=!0,a.eagerState=g,Lt(g,d))return Yu(e,t,a,0),Le===null&&Gu(),!1}catch{}finally{}if(n=ac(e,t,a,l),n!==null)return Mt(n,e,l),Jh(n,t,l),!0}return!1}function qc(e,t,n,l){if(l={lane:2,revertLane:js(),gesture:null,action:l,hasEagerState:!1,eagerState:null,next:null},fr(e)){if(t)throw Error(o(479))}else t=ac(e,n,l,2),t!==null&&Mt(t,e,2)}function fr(e){var t=e.alternate;return e===Ce||t!==null&&t===Ce}function Ih(e,t){ka=ar=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function Jh(e,t,n){if((n&4194048)!==0){var l=t.lanes;l&=e.pendingLanes,n|=l,t.lanes=n,Fd(e,n)}}var dr={readContext:vt,use:rr,useCallback:Ie,useContext:Ie,useEffect:Ie,useImperativeHandle:Ie,useLayoutEffect:Ie,useInsertionEffect:Ie,useMemo:Ie,useReducer:Ie,useRef:Ie,useState:Ie,useDebugValue:Ie,useDeferredValue:Ie,useTransition:Ie,useSyncExternalStore:Ie,useId:Ie,useHostTransitionStatus:Ie,useFormState:Ie,useActionState:Ie,useOptimistic:Ie,useMemoCache:Ie,useCacheRefresh:Ie,useEffectEvent:Ie},Fh={readContext:vt,use:rr,useCallback:function(e,t){return Nt().memoizedState=[e,t===void 0?null:t],e},useContext:vt,useEffect:zh,useImperativeHandle:function(e,t,n){n=n!=null?n.concat([e]):null,cr(4194308,4,kh.bind(null,t,e),n)},useLayoutEffect:function(e,t){return cr(4194308,4,e,t)},useInsertionEffect:function(e,t){cr(4,2,e,t)},useMemo:function(e,t){var n=Nt();t=t===void 0?null:t;var l=e();if($l){nl(!0);try{e()}finally{nl(!1)}}return n.memoizedState=[l,t],l},useReducer:function(e,t,n){var l=Nt();if(n!==void 0){var a=n(t);if($l){nl(!0);try{n(t)}finally{nl(!1)}}}else a=t;return l.memoizedState=l.baseState=a,e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:a},l.queue=e,e=e.dispatch=rx.bind(null,Ce,e),[l.memoizedState,e]},useRef:function(e){var t=Nt();return e={current:e},t.memoizedState=e},useState:function(e){e=zc(e);var t=e.queue,n=Kh.bind(null,Ce,t);return t.dispatch=n,[e.memoizedState,n]},useDebugValue:Bc,useDeferredValue:function(e,t){var n=Nt();return kc(n,e,t)},useTransition:function(){var e=zc(!1);return e=Yh.bind(null,Ce,e.queue,!0,!1),Nt().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,t,n){var l=Ce,a=Nt();if(we){if(n===void 0)throw Error(o(407));n=n()}else{if(n=t(),Le===null)throw Error(o(349));(Re&127)!==0||yh(l,t,n)}a.memoizedState=n;var u={value:n,getSnapshot:t};return a.queue=u,zh(bh.bind(null,l,u,e),[e]),l.flags|=2048,La(9,{destroy:void 0},ph.bind(null,l,u,n,t),null),n},useId:function(){var e=Nt(),t=Le.identifierPrefix;if(we){var n=bn,l=pn;n=(l&~(1<<32-kt(l)-1)).toString(32)+n,t="_"+t+"R_"+n,n=ir++,0<\/script>",u=u.removeChild(u.firstChild);break;case"select":u=typeof l.is=="string"?d.createElement("select",{is:l.is}):d.createElement("select"),l.multiple?u.multiple=!0:l.size&&(u.size=l.size);break;default:u=typeof l.is=="string"?d.createElement(a,{is:l.is}):d.createElement(a)}}u[ht]=t,u[_t]=l;e:for(d=t.child;d!==null;){if(d.tag===5||d.tag===6)u.appendChild(d.stateNode);else if(d.tag!==4&&d.tag!==27&&d.child!==null){d.child.return=d,d=d.child;continue}if(d===t)break e;for(;d.sibling===null;){if(d.return===null||d.return===t)break e;d=d.return}d.sibling.return=d.return,d=d.sibling}t.stateNode=u;e:switch(bt(u,a,l),a){case"button":case"input":case"select":case"textarea":l=!!l.autoFocus;break e;case"img":l=!0;break e;default:l=!1}l&&Qn(t)}}return Ye(t),t.subtreeFlags&=-33554433,Wc(t,t.type,e===null?null:e.memoizedProps,t.pendingProps,n),null;case 6:if(e&&t.stateNode!=null)e.memoizedProps!==l&&Qn(t);else{if(typeof l!="string"&&t.stateNode===null)throw Error(o(166));if(e=el.current,za(t)){if(e=t.stateNode,n=t.memoizedProps,l=null,a=ot,a!==null)switch(a.tag){case 27:case 5:l=a.memoizedProps}e[ht]=t,e=!!(e.nodeValue===n||l!==null&&l.suppressHydrationWarning===!0||bg(e.nodeValue,n)),e||rl(t,!0)}else e=lu(e).createTextNode(l),e[ht]=t,t.stateNode=e}return Ye(t),null;case 31:if(n=t.memoizedState,e===null||e.memoizedState!==null){if(l=za(t),n!==null){if(e===null){if(!l)throw Error(o(318));if(e=t.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(o(557));e[ht]=t}else Vl(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;Ye(t),e=!1}else n=sc(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=n),e=!0;if(!e)return t.flags&256?(qt(t),t):(qt(t),null);if((t.flags&128)!==0)throw Error(o(558))}return Ye(t),null;case 13:if(l=t.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(a=za(t),l!==null&&l.dehydrated!==null){if(e===null){if(!a)throw Error(o(318));if(a=t.memoizedState,a=a!==null?a.dehydrated:null,!a)throw Error(o(317));a[ht]=t}else Vl(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;Ye(t),a=!1}else a=sc(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=a),a=!0;if(!a)return t.flags&256?(qt(t),t):(qt(t),null)}return qt(t),(t.flags&128)!==0?(t.lanes=n,t):(n=l!==null,e=e!==null&&e.memoizedState!==null,n&&(l=t.child,a=null,l.alternate!==null&&l.alternate.memoizedState!==null&&l.alternate.memoizedState.cachePool!==null&&(a=l.alternate.memoizedState.cachePool.pool),u=null,l.memoizedState!==null&&l.memoizedState.cachePool!==null&&(u=l.memoizedState.cachePool.pool),u!==a&&(l.flags|=2048)),n!==e&&n&&(t.child.flags|=8192),pr(t,t.updateQueue),Ye(t),null);case 4:return ya(),e===null&&Ds(t.stateNode.containerInfo),t.flags|=67108864,Ye(t),null;case 10:return qn(t.type),Ye(t),null;case 19:if(Nc(t),l=t.memoizedState,l===null)return Ye(t),null;if(a=(t.flags&128)!==0,u=l.rendering,u===null)if(a)Zi(l,!1);else{if(Je!==0||e!==null&&(e.flags&128)!==0)for(e=t.child;e!==null;){if(u=lr(e),u!==null){for(t.flags|=128,Zi(l,!1),e=u.updateQueue,t.updateQueue=e,pr(t,e),t.subtreeFlags=0,e=n,n=t.child;n!==null;)Km(n,e),n=n.sibling;return Gi(t,yt.current&1|2),we&&Hn(t,l.treeForkCount),t.child}e=e.sibling}l.tail!==null&&Ut()>jr&&(t.flags|=128,a=!0,Zi(l,!1),t.lanes=4194304)}else{if(!a)if(e=lr(u),e!==null){if(t.flags|=128,a=!0,e=e.updateQueue,t.updateQueue=e,pr(t,e),Zi(l,!0),l.tail===null&&l.tailMode!=="collapsed"&&l.tailMode!=="visible"&&!u.alternate&&!we)return Ye(t),null}else 2*Ut()-l.renderingStartTime>jr&&n!==536870912&&(t.flags|=128,a=!0,Zi(l,!1),t.lanes=4194304);l.isBackwards?(u.sibling=t.child,t.child=u):(e=l.last,e!==null?e.sibling=u:t.child=u,l.last=u)}if(l.tail!==null){e=l.tail;e:{for(n=e;n!==null;){if(n.alternate!==null){n=!1;break e}n=n.sibling}n=!0}return l.rendering=e,l.tail=e.sibling,l.renderingStartTime=Ut(),e.sibling=null,u=yt.current,u=a?u&1|2:u&1,l.tailMode==="visible"||l.tailMode==="collapsed"||!n||we?Gi(t,u):(n=u,qe(gt,t),qe(yt,n),Et===null&&(Et=t)),we&&Hn(t,l.treeForkCount),e}return Ye(t),null;case 22:case 23:return qt(t),Ec(),l=t.memoizedState!==null,e!==null?e.memoizedState!==null!==l&&(t.flags|=8192):l&&(t.flags|=8192),l?(n&536870912)!==0&&(t.flags&128)===0&&(Ye(t),t.subtreeFlags&6&&(t.flags|=8192)):Ye(t),n=t.updateQueue,n!==null&&pr(t,n.retryQueue),n=null,e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(n=e.memoizedState.cachePool.pool),l=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(l=t.memoizedState.cachePool.pool),l!==n&&(t.flags|=2048),e!==null&&mt(Il),null;case 24:return n=null,e!==null&&(n=e.memoizedState.cache),t.memoizedState.cache!==n&&(t.flags|=2048),qn($e),Ye(t),null;case 25:return null;case 30:return t.flags|=33554432,Ye(t),null}throw Error(o(156,t.tag))}function hx(e,t){switch(oc(t),t.tag){case 1:return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return qn($e),ya(),e=t.flags,(e&65536)!==0&&(e&128)===0?(t.flags=e&-65537|128,t):null;case 26:case 27:case 5:return Cu(t),null;case 31:if(t.memoizedState!==null){if(qt(t),t.alternate===null)throw Error(o(340));Vl()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 13:if(qt(t),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(o(340));Vl()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return Nc(t),e=t.flags,e&65536?(t.flags=e&-65537|128,e=t.memoizedState,e!==null&&(e.rendering=null,e.tail=null),t.flags|=4,t):null;case 4:return ya(),null;case 10:return qn(t.type),null;case 22:case 23:return qt(t),Ec(),e!==null&&mt(Il),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 24:return qn($e),null;case 25:return null;default:return null}}function Sv(e,t){switch(oc(t),t.tag){case 3:qn($e),ya();break;case 26:case 27:case 5:Cu(t);break;case 4:ya();break;case 31:t.memoizedState!==null&&qt(t);break;case 13:qt(t);break;case 19:Nc(t);break;case 10:qn(t.type);break;case 22:case 23:qt(t),Ec(),e!==null&&mt(Il);break;case 24:qn($e)}}function Ki(e,t){try{var n=t.updateQueue,l=n!==null?n.lastEffect:null;if(l!==null){var a=l.next;n=a;do{if((n.tag&e)===e){l=void 0;var u=n.create,d=n.inst;l=u(),d.destroy=l}n=n.next}while(n!==a)}}catch(g){Be(t,t.return,g)}}function gl(e,t,n){try{var l=t.updateQueue,a=l!==null?l.lastEffect:null;if(a!==null){var u=a.next;l=u;do{if((l.tag&e)===e){var d=l.inst,g=d.destroy;if(g!==void 0){d.destroy=void 0,a=t;var C=n,M=g;try{M()}catch(q){Be(a,C,q)}}}l=l.next}while(l!==u)}}catch(q){Be(t,t.return,q)}}function Ev(e){var t=e.updateQueue;if(t!==null){var n=e.stateNode;try{fh(t,n)}catch(l){Be(e,e.return,l)}}}function Cv(e,t,n){n.props=Wl(e.type,e.memoizedProps),n.state=e.memoizedState;try{n.componentWillUnmount()}catch(l){Be(e,t,l)}}function xn(e,t){try{var n=e.ref;if(n!==null){switch(e.tag){case 26:case 27:case 5:var l=e.stateNode;break;case 30:var a=e.stateNode,u=Un(e.memoizedProps,a);(a.ref===null||a.ref.name!==u)&&(a.ref=jg(u)),l=a.ref;break;case 7:if(e.stateNode===null){var d=new Xt(e);y(e.child,!1,aS,d,void 0,void 0),e.stateNode=d}l=e.stateNode;break;default:l=e.stateNode}typeof n=="function"?e.refCleanup=n(l):n.current=l}}catch(g){Be(e,t,g)}}function pt(e,t){var n=e.ref,l=e.refCleanup;if(n!==null)if(typeof l=="function")try{l()}catch(a){Be(e,t,a)}finally{e.refCleanup=null,e=e.alternate,e!=null&&(e.refCleanup=null)}else if(typeof n=="function")try{n(null)}catch(a){Be(e,t,a)}else n.current=null}function br(e,t){if((e.tag===5||e.tag===27||e.tag===6)&&e.alternate===null&&t!==null)for(var n=0;n title"))),bt(l,t,n),l[ht]=e,rt(l),t=l;break e;case"link":if(u=Kg("link","href",a).get(t+(n.href||""))){for(d=0;dNe&&(d=Ne,Ne=de,de=d);var O=Um(g,de),w=Um(g,Ne);if(O&&w&&(H.rangeCount!==1||H.anchorNode!==O.node||H.anchorOffset!==O.offset||H.focusNode!==w.node||H.focusOffset!==w.offset)){var B=X.createRange();B.setStart(O.node,O.offset),H.removeAllRanges(),de>Ne?(H.addRange(B),H.extend(w.node,w.offset)):(B.setEnd(w.node,w.offset),H.addRange(B))}}}}for(X=[],H=g;H=H.parentNode;)H.nodeType===1&&X.push({element:H,left:H.scrollLeft,top:H.scrollTop});for(typeof g.focus=="function"&&g.focus(),g=0;gn?32:n,fe.T=null,n=xs,xs=null;var u=mn,d=Tn;if(Ze=0,la=mn=null,Tn=0,(ze&6)!==0)throw Error(o(331));var g=ze;if(ze|=4,Zv(u.current),Vv(u,u.current,d,n),ze=g,eu(0,!1),Bt&&typeof Bt.onPostCommitFiberRoot=="function")try{Bt.onPostCommitFiberRoot(pi,u)}catch{}return!0}finally{ye.p=a,fe.T=l,rg(e,t)}}function og(e,t,n){t=Ft(n,t),t=Vc(e.stateNode,t,2),e=dl(e,t,2),e!==null&&(xi(e,2),_n(e))}function Be(e,t,n){if(e.tag===3)og(e,e,n);else for(;t!==null;){if(t.tag===3){og(t,e,n);break}else if(t.tag===1){var l=t.stateNode;if(typeof t.type.getDerivedStateFromError=="function"||typeof l.componentDidCatch=="function"&&(xl===null||!xl.has(l))){e=Ft(n,e),n=av(2),l=dl(t,n,2),l!==null&&(iv(n,l,t,e),xi(l,2),_n(l));break}}t=t.return}}function _s(e,t,n){var l=e.pingCache;if(l===null){l=e.pingCache=new px;var a=new Set;l.set(t,a)}else a=l.get(t),a===void 0&&(a=new Set,l.set(t,a));a.has(n)||(ys=!0,a.add(n),e=Tx.bind(null,e,t,n),t.then(e,e))}function Tx(e,t,n){var l=e.pingCache;l!==null&&l.delete(t),e.pingedLanes|=e.suspendedLanes&n,e.warmLanes&=~n,Le===e&&(Re&n)===n&&((Je===4||Je===3&&(Re&62914560)===Re&&300>Ut()-Rr)&&(ze&2)===0?Fa(e,0):Ar|=n,Xa===Re&&(Xa=0)),_n(e)}function cg(e,t){t===0&&(t=Id()),e=Gl(e,t),e!==null&&(xi(e,t),_n(e))}function _x(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),cg(e,n)}function Ax(e,t){var n=0;switch(e.tag){case 31:case 13:var l=e.stateNode,a=e.memoizedState;a!==null&&(n=a.retryLane);break;case 19:l=e.stateNode;break;case 22:l=e.stateNode._retryCache;break;default:throw Error(o(314))}l!==null&&l.delete(t),cg(e,n)}function Rx(e,t){return jo(e,t)}var $a=null,Wa=null,As=!1,kr=!1,Rs=!1,El=0;function _n(e){e!==Wa&&e.next===null&&(Wa===null?$a=Wa=e:Wa=Wa.next=e),kr=!0,As||(As=!0,Ox())}function eu(e,t){if(!Rs&&kr){Rs=!0;do for(var n=!1,l=$a;l!==null;){if(e!==0){var a=l.pendingLanes;if(a===0)var u=0;else{var d=l.suspendedLanes,g=l.pingedLanes;u=(1<<31-kt(42|e)+1)-1,u&=a&~(d&~g),u=u&201326741?u&201326741|1:u?u|2:0}u!==0&&(n=!0,mg(l,u))}else u=Re,u=Au(l,l===Le?u:0,l.cancelPendingCommit!==null||l.timeoutHandle!==-1),(u&3)===0||bi(l,u)||(n=!0,mg(l,u));l=l.next}while(n);Rs=!1}}function jx(){sg()}function sg(){kr=As=!1;var e=0;El!==0&&Yx()&&(e=El);for(var t=Ut(),n=null,l=$a;l!==null;){var a=l.next,u=fg(l,t);u===0?(l.next=null,n===null?$a=a:n.next=a,a===null&&(Wa=n)):(n=l,(e!==0||(u&3)!==0)&&(kr=!0)),l=a}Ze!==0&&Ze!==5||eu(e),El!==0&&(El=0)}function fg(e,t){for(var n=e.suspendedLanes,l=e.pingedLanes,a=e.expirationTimes,u=e.pendingLanes&-62914561;0g)break;var q=C.transferSize,X=C.initiatorType;q&&xg(X)&&(C=C.responseEnd,d+=q*(CYr){de.length=le;break}B=new Promise(Ix.bind(B)),de.push(B)}}}if(0"u"?null:document;function Vg(e,t,n){var l=ti;if(l&&typeof t=="string"&&t){var a=It(t);a='link[rel="'+e+'"][href="'+a+'"]',typeof n=="string"&&(a+='[crossorigin="'+n+'"]'),Yg.has(a)||(Yg.add(a),e={rel:e,crossOrigin:n,href:t},l.querySelector(a)===null&&(t=l.createElement("link"),bt(t,"link",e),rt(t),l.head.appendChild(t)))}}function mS(e){Zn.D(e),Vg("dns-prefetch",e,null)}function hS(e,t){Zn.C(e,t),Vg("preconnect",e,t)}function vS(e,t,n){Zn.L(e,t,n);var l=ti;if(l&&e&&t){var a='link[rel="preload"][as="'+It(t)+'"]';t==="image"&&n&&n.imageSrcSet?(a+='[imagesrcset="'+It(n.imageSrcSet)+'"]',typeof n.imageSizes=="string"&&(a+='[imagesizes="'+It(n.imageSizes)+'"]')):a+='[href="'+It(e)+'"]';var u=a;switch(t){case"style":u=ni(e);break;case"script":u=li(e)}if(!(nn.has(u)||(e=T({rel:"preload",href:t==="image"&&n&&n.imageSrcSet?void 0:e,as:t},n),nn.set(u,e),l.querySelector(a)!==null||t==="style"&&l.querySelector(iu(u))||t==="script"&&l.querySelector(uu(u))))){var d=l.createElement("link");bt(d,"link",e),t==="style"&&(d[Ru]=!0,d.onload=d.onerror=function(){nm(d)}),rt(d),l.head.appendChild(d)}}}function gS(e,t){Zn.m(e,t);var n=ti;if(n&&e){var l=t&&typeof t.as=="string"?t.as:"script",a='link[rel="modulepreload"][as="'+It(l)+'"][href="'+It(e)+'"]',u=a;switch(l){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":u=li(e)}if(!nn.has(u)&&(e=T({rel:"modulepreload",href:e},t),nn.set(u,e),n.querySelector(a)===null)){switch(l){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(n.querySelector(uu(u)))return}l=n.createElement("link"),bt(l,"link",e),rt(l),n.head.appendChild(l)}}}function yS(e,t,n){Zn.S(e,t,n);var l=ti;if(l&&e){var a=xa(l).hoistableStyles,u=ni(e);t=t||"default";var d=a.get(u);if(!d){var g={loading:0,preload:null};if(d=l.querySelector(iu(u)))g.loading=5;else{e=T({rel:"stylesheet",href:e,"data-precedence":t},n),(n=nn.get(u))&&Fs(e,n);var C=d=l.createElement("link");rt(C),bt(C,"link",e),C._p=new Promise(function(M,q){C.onload=M,C.onerror=q}),C.addEventListener("load",function(){g.loading|=1}),C.addEventListener("error",function(){g.loading|=2}),g.loading|=4,qr(d,t,l)}d={type:"stylesheet",instance:d,count:1,state:g},a.set(u,d)}}}function pS(e,t){Zn.X(e,t);var n=ti;if(n&&e){var l=xa(n).hoistableScripts,a=li(e),u=l.get(a);u||(u=n.querySelector(uu(a)),u||(e=T({src:e,async:!0},t),(t=nn.get(a))&&Ps(e,t),u=n.createElement("script"),rt(u),bt(u,"link",e),n.head.appendChild(u)),u={type:"script",instance:u,count:1,state:null},l.set(a,u))}}function bS(e,t){Zn.M(e,t);var n=ti;if(n&&e){var l=xa(n).hoistableScripts,a=li(e),u=l.get(a);u||(u=n.querySelector(uu(a)),u||(e=T({src:e,async:!0,type:"module"},t),(t=nn.get(a))&&Ps(e,t),u=n.createElement("script"),rt(u),bt(u,"link",e),n.head.appendChild(u)),u={type:"script",instance:u,count:1,state:null},l.set(a,u))}}function Qg(e,t,n,l){var a=(a=el.current)?au(a):null;if(!a)throw Error(o(446));switch(e){case"meta":case"title":return null;case"style":return typeof n.precedence=="string"&&typeof n.href=="string"?(n=ni(n.href),t=xa(a).hoistableStyles,l=t.get(n),l||(l={type:"style",instance:null,count:0,state:null},t.set(n,l)),l):{type:"void",instance:null,count:0,state:null};case"link":if(n.rel==="stylesheet"&&typeof n.href=="string"&&typeof n.precedence=="string"){e=ni(n.href);var u=xa(a).hoistableStyles,d=u.get(e);if(d||(a=a.ownerDocument||a,d={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},u.set(e,d),(u=a.querySelector(iu(e)))?u._p||(d.instance=u,d.state.loading=5):(u=nn.get(e),u||(u={rel:"preload",as:"style",href:n.href,crossOrigin:n.crossOrigin,integrity:n.integrity,media:n.media,hrefLang:n.hrefLang,referrerPolicy:n.referrerPolicy},nn.set(e,u)),xS(a,e,u,d.state))),t&&l===null)throw Error(o(528,""));return d}if(t&&l!==null)throw Error(o(529,""));return null;case"script":return t=n.async,n=n.src,typeof n=="string"&&t&&typeof t!="function"&&typeof t!="symbol"?(n=li(n),t=xa(a).hoistableScripts,l=t.get(n),l||(l={type:"script",instance:null,count:0,state:null},t.set(n,l)),l):{type:"void",instance:null,count:0,state:null};default:throw Error(o(444,e))}}function ni(e){return'href="'+It(e)+'"'}function iu(e){return'link[rel="stylesheet"]['+e+"]"}function Xg(e){return T({},e,{"data-precedence":e.precedence,precedence:null})}function xS(e,t,n,l){if(t=e.querySelector('link[rel="preload"][as="style"]['+t+"]")){if(t[Ru]!==!0){l.loading=1;return}}else t=e.createElement("link"),t[Ru]=!0,t.onload=t.onerror=nm.bind(null,t),bt(t,"link",n),rt(t),e.head.appendChild(t);l.preload=t,t.addEventListener("load",function(){return l.loading|=1}),t.addEventListener("error",function(){return l.loading|=2})}function li(e){return'[src="'+It(e)+'"]'}function uu(e){return"script[async]"+e}function Zg(e,t,n){if(t.count++,t.instance===null)switch(t.type){case"style":var l=e.querySelector('style[data-href~="'+It(n.href)+'"]');if(l)return t.instance=l,rt(l),l;var a=T({},n,{"data-href":n.href,"data-precedence":n.precedence,href:null,precedence:null});return l=(e.ownerDocument||e).createElement("style"),rt(l),bt(l,"style",a),qr(l,n.precedence,e),t.instance=l;case"stylesheet":a=ni(n.href);var u=e.querySelector(iu(a));if(u)return t.state.loading|=4,t.instance=u,rt(u),u;l=Xg(n),(a=nn.get(a))&&Fs(l,a),u=(e.ownerDocument||e).createElement("link"),rt(u);var d=u;return d._p=new Promise(function(g,C){d.onload=g,d.onerror=C}),bt(u,"link",l),t.state.loading|=4,qr(u,n.precedence,e),t.instance=u;case"script":return u=li(n.src),(a=e.querySelector(uu(u)))?(t.instance=a,rt(a),a):(l=n,(a=nn.get(u))&&(l=T({},n),Ps(l,a)),e=e.ownerDocument||e,a=e.createElement("script"),rt(a),bt(a,"link",l),e.head.appendChild(a),t.instance=a);case"void":return null;default:throw Error(o(443,t.type))}else t.type==="stylesheet"&&(t.state.loading&4)===0&&(l=t.instance,t.state.loading|=4,qr(l,n.precedence,e));return t.instance}function qr(e,t,n){for(var l=n.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),a=l.length?l[l.length-1]:null,u=a,d=0;d title"):null)}function SS(e,t,n){if(n===1||t.itemProp!=null)return!1;switch(e){case"meta":case"title":return!0;case"style":if(typeof t.precedence!="string"||typeof t.href!="string"||t.href==="")break;return!0;case"link":if(typeof t.rel!="string"||typeof t.href!="string"||t.href===""||t.onLoad||t.onError)break;switch(t.rel){case"stylesheet":return e=t.disabled,typeof t.precedence=="string"&&e==null;default:return!0}case"script":if(t.async&&typeof t.async!="function"&&typeof t.async!="symbol"&&!t.onLoad&&!t.onError&&t.src&&typeof t.src=="string")return!0}return!1}function Ig(e,t){return e==="img"&&t.src!=null&&t.src!==""&&t.onLoad==null&&t.loading!=="lazy"}function Jg(e){return!(e.type==="stylesheet"&&(e.state.loading&3)===0)}function Fg(e){return(e.width||100)*(e.height||100)*(typeof devicePixelRatio=="number"?devicePixelRatio:1)*.25}function Pg(e,t){typeof t.decode=="function"&&(e.imgCount++,t.complete||(e.imgBytes+=Fg(t),e.suspenseyImages.push(t)),e=NS.bind(e),t.decode().then(e,e))}function ES(e,t,n,l){if(n.type==="stylesheet"&&(typeof l.media!="string"||matchMedia(l.media).matches!==!1)&&(n.state.loading&4)===0){if(n.instance===null){var a=ni(l.href),u=t.querySelector(iu(a));if(u){t=u._p,t!==null&&typeof t=="object"&&typeof t.then=="function"&&(e.count++,e=ru.bind(e),t.then(e,e)),n.state.loading|=4,n.instance=u,rt(u);return}u=t.ownerDocument||t,l=Xg(l),(a=nn.get(a))&&Fs(l,a),u=u.createElement("link"),rt(u);var d=u;d._p=new Promise(function(g,C){d.onload=g,d.onerror=C}),bt(u,"link",l),n.instance=u}e.stylesheets===null&&(e.stylesheets=new Map),e.stylesheets.set(n,t),(t=n.state.preload)&&(n.state.loading&3)===0&&(e.count++,n=ru.bind(e),t.addEventListener("load",n),t.addEventListener("error",n))}}var Yr=0;function CS(e,t){return e.stylesheets&&e.count===0&&Qr(e,e.stylesheets),0Yr?50:800)+t);return e.unsuspend=n,function(){e.unsuspend=null,clearTimeout(l),clearTimeout(a)}}:null}function $g(e){if(e.count===0&&(e.imgCount===0||!e.waitingForImages)){if(e.stylesheets)Qr(e,e.stylesheets);else if(e.unsuspend){var t=e.unsuspend;e.unsuspend=null,t()}}}function ru(){this.count--,$g(this)}function NS(){this.imgCount--,$g(this)}var Vr=null;function Qr(e,t){e.stylesheets=null,e.unsuspend!==null&&(e.count++,Vr=new Map,t.forEach(wS,e),Vr=null,ru.call(e))}function wS(e,t){if(!(t.state.loading&4)){var n=Vr.get(e);if(n)var l=n.get(null);else{n=new Map,Vr.set(e,n);for(var a=e.querySelectorAll("link[data-precedence],style[data-precedence]"),u=0;u"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(i)}catch(r){console.error(r)}}return i(),cf.exports=GS(),cf.exports}var VS=YS();const QS=sd(VS),w0=i=>{let r;const c=new Set,o=(b,S)=>{const y=typeof b=="function"?b(r):b;if(!Object.is(y,r)){const E=r;r=S??(typeof y!="object"||y===null)?y:Object.assign({},r,y),c.forEach(A=>A(r,E))}},s=()=>r,v={setState:o,getState:s,getInitialState:()=>p,subscribe:b=>(c.add(b),()=>c.delete(b))},p=r=i(o,s,v);return v},XS=(i=>i?w0(i):w0),ZS=i=>i;function KS(i,r=ZS){const c=gu.useSyncExternalStore(i.subscribe,gu.useCallback(()=>r(i.getState()),[i,r]),()=>r(i.getInitialState()));return gu.useDebugValue(c),c}const T0=i=>{const r=XS(i),c=o=>KS(r,o);return Object.assign(c,r),c},IS=(i=>i?T0(i):T0),JS=()=>typeof window<"u"&&window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches,Ay=i=>{const c=(i==="system"?JS():i==="dark")?"dark":"light";return typeof document<"u"&&document.documentElement.setAttribute("data-theme",c),c},Pr=localStorage.getItem("hl_theme_v2"),Ry=Pr==="light"||Pr==="dark"||Pr==="system"?Pr:"system",FS=Ay(Ry),PS=localStorage.getItem("hl_route_mode")||"auto",$S=localStorage.getItem("hl_layout_preset")||"homepage-3col",WS=typeof window<"u"&&window.location.pathname.startsWith("/storybook")?"storybook":"dashboard",Pn=IS((i,r)=>({theme:Ry,resolvedTheme:FS,routeMode:PS,layoutPreset:$S,viewMode:WS,showAgyModal:!1,showWechatModal:!1,showCmdPalette:!1,toast:"",actionLoading:!1,telemetry:{mini:{chip:"Apple M6 (12核)",ip:"192.168.31.164",tailscale_ip:"100.108.205.40",cpu_pct:6.5,load_1m:.85,mem_used_gb:11.8,mem_total_gb:24,mem_pct:49.2,disk_used_gb:59.9,disk_total_gb:460.4,disk_pct:13,uptime:"运行中",agy_tmux:!0},nas:{ip:"192.168.31.185",online:!0,mounted:!0,total_tb:19.94,used_tb:3.36,free_tb:16.58,pct:16.8,latest_backup:"11-06 23:17"},network:{home_wan_ip:"124.90.142.21",ai_policy:"Ai平台 → 狮城节点",sg_node:"233boy-sea",sg_egress_ip:"104.43.105.243",sg_delay_ms:68},services:{agy:!0,vaultwarden:!0,nas:!0,clash:!0,router:!0,uptime:!0,clawbot:!1}},setTheme:c=>{localStorage.setItem("hl_theme_v2",c);const o=Ay(c);i({theme:c,resolvedTheme:o})},toggleTheme:()=>{const{resolvedTheme:c,setTheme:o}=r();o(c==="dark"?"light":"dark")},setRouteMode:c=>{localStorage.setItem("hl_route_mode",c),i({routeMode:c})},setLayoutPreset:c=>{localStorage.setItem("hl_layout_preset",c),i({layoutPreset:c})},setViewMode:c=>{if(typeof window<"u"){const o=c==="storybook"?"/storybook":"/";window.history.pushState({},"",o)}i({viewMode:c})},setShowAgyModal:c=>i({showAgyModal:c}),setShowWechatModal:c=>i({showWechatModal:c}),setShowCmdPalette:c=>i({showCmdPalette:c}),showToast:c=>{i({toast:c}),setTimeout(()=>{r().toast===c&&i({toast:""})},3e3)},fetchTelemetry:async()=>{try{const c=await fetch("/api/telemetry");if(c.ok){const o=await c.json();i({telemetry:o})}}catch{}},triggerAction:async(c,o)=>{const{showToast:s,fetchTelemetry:f}=r();i({actionLoading:!0}),s(o);try{const v=await(await fetch(`/api/action/${c}`,{method:"POST"})).json();s(v.message||"操作已完成"),await f()}catch{s("请求失败,请稍后重试")}finally{i({actionLoading:!1})}},copyCmd:async(c,o)=>{const{showToast:s}=r();try{await navigator.clipboard.writeText(c),s(`已复制「${o}」: ${c}`)}catch{s(c)}},getEffectiveMode:()=>{const{routeMode:c}=r();if(c!=="auto")return c;const o=window.location.hostname;return o.startsWith("192.168.")||o.startsWith("100.")||o==="localhost"?"lan":o.includes(".home.961504.xyz")||window.location.port==="10443"?"home10443":"edge443"}}));typeof window<"u"&&window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",()=>{const i=Pn.getState();i.theme==="system"&&i.setTheme("system")});/** - * @license lucide-react v0.475.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const e2=i=>i.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),jy=(...i)=>i.filter((r,c,o)=>!!r&&r.trim()!==""&&o.indexOf(r)===c).join(" ").trim();/** - * @license lucide-react v0.475.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */var t2={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};/** - * @license lucide-react v0.475.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const n2=x.forwardRef(({color:i="currentColor",size:r=24,strokeWidth:c=2,absoluteStrokeWidth:o,className:s="",children:f,iconNode:m,...v},p)=>x.createElement("svg",{ref:p,...t2,width:r,height:r,stroke:i,strokeWidth:o?Number(c)*24/Number(r):c,className:jy("lucide",s),...v},[...m.map(([b,S])=>x.createElement(b,S)),...Array.isArray(f)?f:[f]]));/** - * @license lucide-react v0.475.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Xe=(i,r)=>{const c=x.forwardRef(({className:o,...s},f)=>x.createElement(n2,{ref:f,iconNode:r,className:jy(`lucide-${e2(i)}`,o),...s}));return c.displayName=`${i}`,c};/** - * @license lucide-react v0.475.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const l2=[["path",{d:"M12 7v14",key:"1akyts"}],["path",{d:"M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z",key:"ruj8y"}]],Oy=Xe("BookOpen",l2);/** - * @license lucide-react v0.475.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const a2=[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]],i2=Xe("Check",a2);/** - * @license lucide-react v0.475.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const u2=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]],r2=Xe("CircleCheck",u2);/** - * @license lucide-react v0.475.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const o2=[["path",{d:"M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49",key:"ct8e1f"}],["path",{d:"M14.084 14.158a3 3 0 0 1-4.242-4.242",key:"151rxh"}],["path",{d:"M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143",key:"13bj9a"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]],c2=Xe("EyeOff",o2);/** - * @license lucide-react v0.475.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const s2=[["path",{d:"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0",key:"1nclc0"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]],f2=Xe("Eye",s2);/** - * @license lucide-react v0.475.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const d2=[["path",{d:"M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z",key:"1s6t7t"}],["circle",{cx:"16.5",cy:"7.5",r:".5",fill:"currentColor",key:"w0ekpg"}]],_0=Xe("KeyRound",d2);/** - * @license lucide-react v0.475.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const m2=[["path",{d:"M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z",key:"zw3jo"}],["path",{d:"M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12",key:"1wduqc"}],["path",{d:"M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17",key:"kqbvx6"}]],h2=Xe("Layers",m2);/** - * @license lucide-react v0.475.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const v2=[["rect",{width:"7",height:"7",x:"3",y:"3",rx:"1",key:"1g98yp"}],["rect",{width:"7",height:"7",x:"14",y:"3",rx:"1",key:"6d4xhi"}],["rect",{width:"7",height:"7",x:"14",y:"14",rx:"1",key:"nxv5o0"}],["rect",{width:"7",height:"7",x:"3",y:"14",rx:"1",key:"1bb6yr"}]],g2=Xe("LayoutGrid",v2);/** - * @license lucide-react v0.475.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const y2=[["rect",{width:"18",height:"11",x:"3",y:"11",rx:"2",ry:"2",key:"1w4ew1"}],["path",{d:"M7 11V7a5 5 0 0 1 10 0v4",key:"fwvmzm"}]],p2=Xe("Lock",y2);/** - * @license lucide-react v0.475.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const b2=[["path",{d:"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z",key:"1lielz"}]],My=Xe("MessageSquare",b2);/** - * @license lucide-react v0.475.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const x2=[["path",{d:"M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z",key:"a7tn18"}]],S2=Xe("Moon",x2);/** - * @license lucide-react v0.475.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const E2=[["circle",{cx:"13.5",cy:"6.5",r:".5",fill:"currentColor",key:"1okk4w"}],["circle",{cx:"17.5",cy:"10.5",r:".5",fill:"currentColor",key:"f64h9f"}],["circle",{cx:"8.5",cy:"7.5",r:".5",fill:"currentColor",key:"fotxhn"}],["circle",{cx:"6.5",cy:"12.5",r:".5",fill:"currentColor",key:"qy21gx"}],["path",{d:"M12 2C6.5 2 2 6.5 2 12s4.5 10 10 10c.926 0 1.648-.746 1.648-1.688 0-.437-.18-.835-.437-1.125-.29-.289-.438-.652-.438-1.125a1.64 1.64 0 0 1 1.668-1.668h1.996c3.051 0 5.555-2.503 5.555-5.554C21.965 6.012 17.461 2 12 2z",key:"12rzf8"}]],C2=Xe("Palette",E2);/** - * @license lucide-react v0.475.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const N2=[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M3 9h18",key:"1pudct"}],["path",{d:"M9 21V9",key:"1oto5p"}]],w2=Xe("PanelsTopLeft",N2);/** - * @license lucide-react v0.475.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const T2=[["rect",{width:"5",height:"5",x:"3",y:"3",rx:"1",key:"1tu5fj"}],["rect",{width:"5",height:"5",x:"16",y:"3",rx:"1",key:"1v8r4q"}],["rect",{width:"5",height:"5",x:"3",y:"16",rx:"1",key:"1x03jg"}],["path",{d:"M21 16h-3a2 2 0 0 0-2 2v3",key:"177gqh"}],["path",{d:"M21 21v.01",key:"ents32"}],["path",{d:"M12 7v3a2 2 0 0 1-2 2H7",key:"8crl2c"}],["path",{d:"M3 12h.01",key:"nlz23k"}],["path",{d:"M12 3h.01",key:"n36tog"}],["path",{d:"M12 16v.01",key:"133mhm"}],["path",{d:"M16 12h1",key:"1slzba"}],["path",{d:"M21 12v.01",key:"1lwtk9"}],["path",{d:"M12 21v-1",key:"1880an"}]],_2=Xe("QrCode",T2);/** - * @license lucide-react v0.475.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const A2=[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]],R2=Xe("RefreshCw",A2);/** - * @license lucide-react v0.475.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const j2=[["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}],["path",{d:"m21 21-4.3-4.3",key:"1qie3q"}]],dd=Xe("Search",j2);/** - * @license lucide-react v0.475.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const O2=[["path",{d:"M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z",key:"1ffxy3"}],["path",{d:"m21.854 2.147-10.94 10.939",key:"12cjpa"}]],M2=Xe("Send",O2);/** - * @license lucide-react v0.475.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const z2=[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]],D2=Xe("ShieldCheck",z2);/** - * @license lucide-react v0.475.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const U2=[["rect",{width:"14",height:"20",x:"5",y:"2",rx:"2",ry:"2",key:"1yt0o3"}],["path",{d:"M12 18h.01",key:"mhygvu"}]],B2=Xe("Smartphone",U2);/** - * @license lucide-react v0.475.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const k2=[["path",{d:"M9.937 15.5A2 2 0 0 0 8.5 14.063l-6.135-1.582a.5.5 0 0 1 0-.962L8.5 9.936A2 2 0 0 0 9.937 8.5l1.582-6.135a.5.5 0 0 1 .963 0L14.063 8.5A2 2 0 0 0 15.5 9.937l6.135 1.581a.5.5 0 0 1 0 .964L15.5 14.063a2 2 0 0 0-1.437 1.437l-1.582 6.135a.5.5 0 0 1-.963 0z",key:"4pj2yx"}],["path",{d:"M20 3v4",key:"1olli1"}],["path",{d:"M22 5h-4",key:"1gvqau"}],["path",{d:"M4 17v2",key:"vumght"}],["path",{d:"M5 18H3",key:"zchphs"}]],H2=Xe("Sparkles",k2);/** - * @license lucide-react v0.475.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const L2=[["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"m4.93 4.93 1.41 1.41",key:"149t6j"}],["path",{d:"m17.66 17.66 1.41 1.41",key:"ptbguv"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"m6.34 17.66-1.41 1.41",key:"1m8zz5"}],["path",{d:"m19.07 4.93-1.41 1.41",key:"1shlcs"}]],q2=Xe("Sun",L2);/** - * @license lucide-react v0.475.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const G2=[["polyline",{points:"4 17 10 11 4 5",key:"akl6gq"}],["line",{x1:"12",x2:"20",y1:"19",y2:"19",key:"q2wloq"}]],md=Xe("Terminal",G2);/** - * @license lucide-react v0.475.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Y2=[["path",{d:"m19 5 3-3",key:"yk6iyv"}],["path",{d:"m2 22 3-3",key:"19mgm9"}],["path",{d:"M6.3 20.3a2.4 2.4 0 0 0 3.4 0L12 18l-6-6-2.3 2.3a2.4 2.4 0 0 0 0 3.4Z",key:"goz73y"}],["path",{d:"M7.5 13.5 10 11",key:"7xgeeb"}],["path",{d:"M10.5 16.5 13 14",key:"10btkg"}],["path",{d:"m12 6 6 6 2.3-2.3a2.4 2.4 0 0 0 0-3.4l-2.6-2.6a2.4 2.4 0 0 0-3.4 0Z",key:"1snsnr"}]],V2=Xe("Unplug",Y2);/** - * @license lucide-react v0.475.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Q2=[["path",{d:"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2",key:"975kel"}],["circle",{cx:"12",cy:"7",r:"4",key:"17ys0d"}]],X2=Xe("User",Q2);var Z2=Object.defineProperty,hd=(i,r)=>Z2(i,"name",{value:r,configurable:!0});function Jf(i,r){if(typeof i=="function")return i(r);i!=null&&(i.current=r)}hd(Jf,"setRef");function ra(...i){return r=>{let c=!1;const o=i.map(s=>{const f=Jf(s,r);return!c&&typeof f=="function"&&(c=!0),f});if(c)return()=>{for(let s=0;sK2(i,"name",{value:r,configurable:!0});function Ml(i){const r=x.forwardRef((c,o)=>{let{children:s,...f}=c,m=null,v=!1;const p=[];s=Hy(s),x.Children.forEach(s,E=>{var A;if(By(E)){v=!0;const j=E;let D="child"in j.props?j.props.child:j.props.children;for(;vd(D)&&typeof fo=="function";)D=fo(D._payload);m=F2(j,D),p.push((A=m==null?void 0:m.props)==null?void 0:A.children)}else p.push(E)}),m?m=x.cloneElement(m,void 0,p):!v&&x.Children.count(s)===1&&x.isValidElement(s)&&(m=s);const b=m?Uy(m):void 0,S=zt(o,b);if(!m){if(s||s===0)throw new Error(v?W2(i):$2(i));return s}const y=Dy(f,m.props??{});return m.type!==x.Fragment&&(y.ref=o?S:b),x.cloneElement(m,y)});return r.displayName=`${i}.Slot`,r}Kt(Ml,"createSlot");var I2=Ml("Slot"),zy=Symbol.for("radix.slottable");function J2(i){const r=Kt(c=>"child"in c?c.children(c.child):c.children,"Slottable");return r.displayName=`${i}.Slottable`,r.__radixId=zy,r}Kt(J2,"createSlottable");var F2=Kt((i,r)=>"child"in i.props?x.isValidElement(r)?x.cloneElement(r,void 0,i.props.children(r.props.children)):null:x.isValidElement(r)?r:null,"getSlottableElementFromSlottable");function Dy(i,r){const c={...r};for(const o in r){const s=i[o],f=r[o];/^on[A-Z]/.test(o)?s&&f?c[o]=(...v)=>{const p=f(...v);return s(...v),p}:s&&(c[o]=s):o==="style"?c[o]={...s,...f}:o==="className"?c[o]=[s,f].filter(Boolean).join(" "):o==="aria-describedby"&&(c[o]=Ly(f,s))}return{...i,...c}}Kt(Dy,"mergeProps");function Uy(i){var o,s;let r=(o=Object.getOwnPropertyDescriptor(i.props,"ref"))==null?void 0:o.get,c=r&&"isReactWarning"in r&&r.isReactWarning;return c?i.ref:(r=(s=Object.getOwnPropertyDescriptor(i,"ref"))==null?void 0:s.get,c=r&&"isReactWarning"in r&&r.isReactWarning,c?i.props.ref:i.props.ref||i.ref)}Kt(Uy,"getElementRef");function By(i){return x.isValidElement(i)&&typeof i.type=="function"&&"__radixId"in i.type&&i.type.__radixId===zy}Kt(By,"isSlottable");var P2=Symbol.for("react.lazy");function vd(i){return i!=null&&typeof i=="object"&&"$$typeof"in i&&i.$$typeof===P2&&"_payload"in i&&ky(i._payload)}Kt(vd,"isLazyComponent");function ky(i){return typeof i=="object"&&i!==null&&"then"in i}Kt(ky,"isPromiseLike");function Hy(i){let r=i;for(;vd(r)&&typeof fo=="function";)r=fo(r._payload);return r}Kt(Hy,"useUnwrappedLazy");function Ly(...i){const r=new Set;for(const c of i)if(typeof c=="string")for(const o of String(c).trim().split(/\s+/))o&&r.add(o);return r.size>0?Array.from(r).join(" "):void 0}Kt(Ly,"concatAriaDescribedby");var $2=Kt(i=>`${i} failed to slot onto its children. Expected a single React element child or \`Slottable\`.`,"createSlotError"),W2=Kt(i=>`${i} failed to slot onto its \`Slottable\`. Expected \`Slottable\` to receive a single React element child.`,"createSlottableError"),fo=sa[" use ".trim().toString()];function qy(i){var r,c,o="";if(typeof i=="string"||typeof i=="number")o+=i;else if(typeof i=="object")if(Array.isArray(i)){var s=i.length;for(r=0;rtypeof i=="boolean"?`${i}`:i===0?"0":i,R0=Gy,Yy=(i,r)=>c=>{var o;if((r==null?void 0:r.variants)==null)return R0(i,c==null?void 0:c.class,c==null?void 0:c.className);const{variants:s,defaultVariants:f}=r,m=Object.keys(s).map(b=>{const S=c==null?void 0:c[b],y=f==null?void 0:f[b];if(S===null)return null;const E=A0(S)||A0(y);return s[b][E]}),v=c&&Object.entries(c).reduce((b,S)=>{let[y,E]=S;return E===void 0||(b[y]=E),b},{}),p=r==null||(o=r.compoundVariants)===null||o===void 0?void 0:o.reduce((b,S)=>{let{class:y,className:E,...A}=S;return Object.entries(A).every(j=>{let[D,L]=j;return Array.isArray(L)?L.includes({...f,...v}[D]):{...f,...v}[D]===L})?[...b,y,E]:b},[]);return R0(i,m,p,c==null?void 0:c.class,c==null?void 0:c.className)},eE=(i,r)=>{const c=new Array(i.length+r.length);for(let o=0;o({classGroupId:i,validator:r}),Vy=(i=new Map,r=null,c)=>({nextPart:i,validators:r,classGroupId:c}),mo="-",j0=[],nE="arbitrary..",lE=i=>{const r=iE(i),{conflictingClassGroups:c,conflictingClassGroupModifiers:o}=i;return{getClassGroupId:m=>{if(m.startsWith("[")&&m.endsWith("]"))return aE(m);const v=m.split(mo),p=v[0]===""&&v.length>1?1:0;return Qy(v,p,r)},getConflictingClassGroupIds:(m,v)=>{if(v){const p=o[m],b=c[m];return p?b?eE(b,p):p:b||j0}return c[m]||j0}}},Qy=(i,r,c)=>{if(i.length-r===0)return c.classGroupId;const s=i[r],f=c.nextPart.get(s);if(f){const b=Qy(i,r+1,f);if(b)return b}const m=c.validators;if(m===null)return;const v=r===0?i.join(mo):i.slice(r).join(mo),p=m.length;for(let b=0;bi.slice(1,-1).indexOf(":")===-1?void 0:(()=>{const r=i.slice(1,-1),c=r.indexOf(":"),o=r.slice(0,c);return o?nE+o:void 0})(),iE=i=>{const{theme:r,classGroups:c}=i;return uE(c,r)},uE=(i,r)=>{const c=Vy();for(const o in i){const s=i[o];gd(s,c,o,r)}return c},gd=(i,r,c,o)=>{const s=i.length;for(let f=0;f{if(typeof i=="string"){oE(i,r,c);return}if(typeof i=="function"){cE(i,r,c,o);return}sE(i,r,c,o)},oE=(i,r,c)=>{const o=i===""?r:Xy(r,i);o.classGroupId=c},cE=(i,r,c,o)=>{if(fE(i)){gd(i(o),r,c,o);return}r.validators===null&&(r.validators=[]),r.validators.push(tE(c,i))},sE=(i,r,c,o)=>{const s=Object.entries(i),f=s.length;for(let m=0;m{let c=i;const o=r.split(mo),s=o.length;for(let f=0;f"isThemeGetter"in i&&i.isThemeGetter===!0,dE=i=>{if(i<1)return{get:()=>{},set:()=>{}};let r=0,c=Object.create(null),o=Object.create(null);const s=(f,m)=>{c[f]=m,r++,r>i&&(r=0,o=c,c=Object.create(null))};return{get(f){let m=c[f];if(m!==void 0)return m;if((m=o[f])!==void 0)return s(f,m),m},set(f,m){f in c?c[f]=m:s(f,m)}}},Ff="!",O0=":",mE=[],M0=(i,r,c,o,s)=>({modifiers:i,hasImportantModifier:r,baseClassName:c,maybePostfixModifierPosition:o,isExternal:s}),hE=i=>{const{prefix:r,experimentalParseClassName:c}=i;let o=s=>{const f=[];let m=0,v=0,p=0,b;const S=s.length;for(let D=0;Dp?b-p:void 0;return M0(f,A,E,j)};if(r){const s=r+O0,f=o;o=m=>m.startsWith(s)?f(m.slice(s.length)):M0(mE,!1,m,void 0,!0)}if(c){const s=o;o=f=>c({className:f,parseClassName:s})}return o},vE=i=>{const r=new Map;return i.orderSensitiveModifiers.forEach((c,o)=>{r.set(c,1e6+o)}),c=>{const o=[];let s=[];for(let f=0;f0&&(s.sort(),o.push(...s),s=[]),o.push(m)):s.push(m)}return s.length>0&&(s.sort(),o.push(...s)),o}},gE=i=>({cache:dE(i.cacheSize),parseClassName:hE(i),sortModifiers:vE(i),postfixLookupClassGroupIds:yE(i),...lE(i)}),yE=i=>{const r=Object.create(null),c=i.postfixLookupClassGroups;if(c)for(let o=0;o{const{parseClassName:c,getClassGroupId:o,getConflictingClassGroupIds:s,sortModifiers:f,postfixLookupClassGroupIds:m}=r,v=[],p=i.trim().split(pE);let b="";for(let S=p.length-1;S>=0;S-=1){const y=p[S],{isExternal:E,modifiers:A,hasImportantModifier:j,baseClassName:D,maybePostfixModifierPosition:L}=c(y);if(E){b=y+(b.length>0?" "+b:b);continue}let Y=!!L,G;if(Y){const T=D.substring(0,L);G=o(T);const z=G&&m[G]?o(D):void 0;z&&z!==G&&(G=z,Y=!1)}else G=o(D);if(!G){if(!Y){b=y+(b.length>0?" "+b:b);continue}if(G=o(D),!G){b=y+(b.length>0?" "+b:b);continue}Y=!1}const k=A.length===0?"":A.length===1?A[0]:f(A).join(":"),V=j?k+Ff:k,I=V+G;if(v.indexOf(I)>-1)continue;v.push(I);const R=s(G,Y);for(let T=0;T0?" "+b:b)}return b},xE=(...i)=>{let r=0,c,o,s="";for(;r{if(typeof i=="string")return i;let r,c="";for(let o=0;o{let c,o,s,f;const m=p=>{const b=r.reduce((S,y)=>y(S),i());return c=gE(b),o=c.cache.get,s=c.cache.set,f=v,v(p)},v=p=>{const b=o(p);if(b)return b;const S=bE(p,c);return s(p,S),S};return f=m,(...p)=>f(xE(...p))},EE=[],it=i=>{const r=c=>c[i]||EE;return r.isThemeGetter=!0,r.themeKey=i,r},Ky=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,Iy=/^\((?:(\w[\w-]*):)?(.+)\)$/i,CE=/^\d+(?:\.\d+)?\/\d+(?:\.\d+)?$/,NE=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,wE=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,TE=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix|color|light-dark)\(.+\)$/,_E=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,AE=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,Rl=i=>CE.test(i),Te=i=>!!i&&!Number.isNaN(Number(i)),An=i=>!!i&&Number.isInteger(Number(i)),mf=i=>i.endsWith("%")&&Te(i.slice(0,-1)),Kn=i=>NE.test(i),Jy=()=>!0,RE=i=>wE.test(i)&&!TE.test(i),yd=()=>!1,jE=i=>_E.test(i),OE=i=>AE.test(i),ME=i=>!oe(i)&&!se(i),zE=i=>i.startsWith("@container")&&(i[10]==="/"&&i[11]!==void 0||i[11]==="s"&&i[16]!==void 0&&i.startsWith("-size/",10)||i[11]==="n"&&i[18]!==void 0&&i.startsWith("-normal/",10)),DE=i=>Ul(i,$y,yd),oe=i=>Ky.test(i),ia=i=>Ul(i,Wy,RE),z0=i=>Ul(i,YE,Te),UE=i=>Ul(i,t1,Jy),BE=i=>Ul(i,e1,yd),D0=i=>Ul(i,Fy,yd),kE=i=>Ul(i,Py,OE),$r=i=>Ul(i,n1,jE),se=i=>Iy.test(i),mu=i=>fa(i,Wy),HE=i=>fa(i,e1),U0=i=>fa(i,Fy),LE=i=>fa(i,$y),qE=i=>fa(i,Py),Wr=i=>fa(i,n1,!0),GE=i=>fa(i,t1,!0),Ul=(i,r,c)=>{const o=Ky.exec(i);return o?o[1]?r(o[1]):c(o[2]):!1},fa=(i,r,c=!1)=>{const o=Iy.exec(i);return o?o[1]?r(o[1]):c:!1},Fy=i=>i==="position"||i==="percentage",Py=i=>i==="image"||i==="url",$y=i=>i==="length"||i==="size"||i==="bg-size",Wy=i=>i==="length",YE=i=>i==="number",e1=i=>i==="family-name",t1=i=>i==="number"||i==="weight",n1=i=>i==="shadow",VE=()=>{const i=it("color"),r=it("font"),c=it("text"),o=it("font-weight"),s=it("tracking"),f=it("leading"),m=it("breakpoint"),v=it("container"),p=it("spacing"),b=it("radius"),S=it("shadow"),y=it("inset-shadow"),E=it("text-shadow"),A=it("drop-shadow"),j=it("blur"),D=it("perspective"),L=it("aspect"),Y=it("ease"),G=it("animate"),k=()=>["auto","avoid","all","avoid-page","page","left","right","column"],V=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],I=()=>[...V(),se,oe],R=()=>["auto","hidden","clip","visible","scroll"],T=()=>["auto","contain","none"],z=()=>[se,oe,p],Z=()=>[Rl,"full","auto",...z()],te=()=>[An,"none","subgrid",se,oe],W=()=>["auto",{span:["full",An,se,oe]},An,se,oe],P=()=>[An,"auto",se,oe],ne=()=>["auto","min","max","fr",se,oe],ue=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],ge=()=>["start","end","center","stretch","center-safe","end-safe"],F=()=>["auto",...z()],ae=()=>[Rl,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...z()],ce=()=>[v,Rl,"screen","full","dvw","lvw","svw","min","max","fit",...z()],xe=()=>[Rl,"screen","full","lh","dvh","lvh","svh","min","max","fit",...z()],K=()=>[i,se,oe],Se=()=>[...V(),U0,D0,{position:[se,oe]}],J=()=>["no-repeat",{repeat:["","x","y","space","round"]}],me=()=>["auto","cover","contain",LE,DE,{size:[se,oe]}],N=()=>[mf,mu,ia],U=()=>["","none","full",b,se,oe],$=()=>["",Te,mu,ia],ee=()=>["solid","dashed","dotted","double"],he=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],ie=()=>[Te,mf,U0,D0],Ee=()=>["","none",j,se,oe],fe=()=>["none",Te,se,oe],ye=()=>["none",Te,se,oe],Dt=()=>[Te,se,oe],Wn=()=>[Rl,"full",...z()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[Kn],breakpoint:[Kn],color:[Jy],container:[Kn],"drop-shadow":[Kn],ease:["in","out","in-out"],font:[ME],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[Kn],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[Kn],shadow:[Kn],spacing:["px",Te],text:[Kn],"text-shadow":[Kn],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",Rl,oe,se,L]}],container:["container"],"container-type":[{"@container":["","normal","size",se,oe]}],"container-named":[zE],columns:[{columns:[Te,"auto",oe,se,v]}],"break-after":[{"break-after":k()}],"break-before":[{"break-before":k()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],sr:["sr-only","not-sr-only"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:I()}],overflow:[{overflow:R()}],"overflow-x":[{"overflow-x":R()}],"overflow-y":[{"overflow-y":R()}],overscroll:[{overscroll:T()}],"overscroll-x":[{"overscroll-x":T()}],"overscroll-y":[{"overscroll-y":T()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:Z()}],"inset-x":[{"inset-x":Z()}],"inset-y":[{"inset-y":Z()}],start:[{"inset-s":Z(),start:Z()}],end:[{"inset-e":Z(),end:Z()}],"inset-bs":[{"inset-bs":Z()}],"inset-be":[{"inset-be":Z()}],top:[{top:Z()}],right:[{right:Z()}],bottom:[{bottom:Z()}],left:[{left:Z()}],visibility:["visible","invisible","collapse"],z:[{z:[An,"auto",se,oe]}],basis:[{basis:[Rl,"full","auto",v,...z()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[Te,Rl,"auto","initial","none",oe]}],grow:[{grow:["",Te,se,oe]}],shrink:[{shrink:["",Te,se,oe]}],order:[{order:[An,"first","last","none",se,oe]}],"grid-cols":[{"grid-cols":te()}],"col-start-end":[{col:W()}],"col-start":[{"col-start":P()}],"col-end":[{"col-end":P()}],"grid-rows":[{"grid-rows":te()}],"row-start-end":[{row:W()}],"row-start":[{"row-start":P()}],"row-end":[{"row-end":P()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":ne()}],"auto-rows":[{"auto-rows":ne()}],gap:[{gap:z()}],"gap-x":[{"gap-x":z()}],"gap-y":[{"gap-y":z()}],"justify-content":[{justify:[...ue(),"normal"]}],"justify-items":[{"justify-items":[...ge(),"normal"]}],"justify-self":[{"justify-self":["auto",...ge()]}],"align-content":[{content:["normal",...ue()]}],"align-items":[{items:[...ge(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...ge(),{baseline:["","last"]}]}],"place-content":[{"place-content":ue()}],"place-items":[{"place-items":[...ge(),"baseline"]}],"place-self":[{"place-self":["auto",...ge()]}],p:[{p:z()}],px:[{px:z()}],py:[{py:z()}],ps:[{ps:z()}],pe:[{pe:z()}],pbs:[{pbs:z()}],pbe:[{pbe:z()}],pt:[{pt:z()}],pr:[{pr:z()}],pb:[{pb:z()}],pl:[{pl:z()}],m:[{m:F()}],mx:[{mx:F()}],my:[{my:F()}],ms:[{ms:F()}],me:[{me:F()}],mbs:[{mbs:F()}],mbe:[{mbe:F()}],mt:[{mt:F()}],mr:[{mr:F()}],mb:[{mb:F()}],ml:[{ml:F()}],"space-x":[{"space-x":z()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":z()}],"space-y-reverse":["space-y-reverse"],size:[{size:ae()}],"inline-size":[{inline:["auto",...ce()]}],"min-inline-size":[{"min-inline":["auto",...ce()]}],"max-inline-size":[{"max-inline":["none",...ce()]}],"block-size":[{block:["auto",...xe()]}],"min-block-size":[{"min-block":["auto",...xe()]}],"max-block-size":[{"max-block":["none",...xe()]}],w:[{w:[v,"screen",...ae()]}],"min-w":[{"min-w":[v,"screen","none",...ae()]}],"max-w":[{"max-w":[v,"screen","none","prose",{screen:[m]},...ae()]}],h:[{h:["screen","lh",...ae()]}],"min-h":[{"min-h":["screen","lh","none",...ae()]}],"max-h":[{"max-h":["screen","lh","none",...ae()]}],"font-size":[{text:["base",c,mu,ia]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[o,GE,UE]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",mf,oe]}],"font-family":[{font:[HE,BE,r]}],"font-features":[{"font-features":[oe]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:[s,se,oe]}],"line-clamp":[{"line-clamp":[Te,"none",se,z0]}],leading:[{leading:["none",f,...z()]}],"list-image":[{"list-image":["none",se,oe]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",se,oe]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"placeholder-color":[{placeholder:K()}],"text-color":[{text:K()}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...ee(),"wavy"]}],"text-decoration-thickness":[{decoration:[Te,"from-font","auto",se,ia]}],"text-decoration-color":[{decoration:K()}],"underline-offset":[{"underline-offset":[Te,"auto",se,oe]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:z()}],"tab-size":[{tab:[An,se,oe]}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",se,oe]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],wrap:[{wrap:["break-word","anywhere","normal"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",se,oe]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:Se()}],"bg-repeat":[{bg:J()}],"bg-size":[{bg:me()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},An,se,oe],radial:["",se,oe],conic:["",An,se,oe]},qE,kE]}],"bg-color":[{bg:K()}],"gradient-from-pos":[{from:N()}],"gradient-via-pos":[{via:N()}],"gradient-to-pos":[{to:N()}],"gradient-from":[{from:K()}],"gradient-via":[{via:K()}],"gradient-to":[{to:K()}],rounded:[{rounded:U()}],"rounded-s":[{"rounded-s":U()}],"rounded-e":[{"rounded-e":U()}],"rounded-t":[{"rounded-t":U()}],"rounded-r":[{"rounded-r":U()}],"rounded-b":[{"rounded-b":U()}],"rounded-l":[{"rounded-l":U()}],"rounded-ss":[{"rounded-ss":U()}],"rounded-se":[{"rounded-se":U()}],"rounded-ee":[{"rounded-ee":U()}],"rounded-es":[{"rounded-es":U()}],"rounded-tl":[{"rounded-tl":U()}],"rounded-tr":[{"rounded-tr":U()}],"rounded-br":[{"rounded-br":U()}],"rounded-bl":[{"rounded-bl":U()}],"border-w":[{border:$()}],"border-w-x":[{"border-x":$()}],"border-w-y":[{"border-y":$()}],"border-w-s":[{"border-s":$()}],"border-w-e":[{"border-e":$()}],"border-w-bs":[{"border-bs":$()}],"border-w-be":[{"border-be":$()}],"border-w-t":[{"border-t":$()}],"border-w-r":[{"border-r":$()}],"border-w-b":[{"border-b":$()}],"border-w-l":[{"border-l":$()}],"divide-x":[{"divide-x":$()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":$()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...ee(),"hidden","none"]}],"divide-style":[{divide:[...ee(),"hidden","none"]}],"border-color":[{border:K()}],"border-color-x":[{"border-x":K()}],"border-color-y":[{"border-y":K()}],"border-color-s":[{"border-s":K()}],"border-color-e":[{"border-e":K()}],"border-color-bs":[{"border-bs":K()}],"border-color-be":[{"border-be":K()}],"border-color-t":[{"border-t":K()}],"border-color-r":[{"border-r":K()}],"border-color-b":[{"border-b":K()}],"border-color-l":[{"border-l":K()}],"divide-color":[{divide:K()}],"outline-style":[{outline:[...ee(),"none","hidden"]}],"outline-offset":[{"outline-offset":[Te,se,oe]}],"outline-w":[{outline:["",Te,mu,ia]}],"outline-color":[{outline:K()}],shadow:[{shadow:["","inner","none",S,Wr,$r]}],"shadow-color":[{shadow:K()}],"inset-shadow":[{"inset-shadow":["none",y,Wr,$r]}],"inset-shadow-color":[{"inset-shadow":K()}],"ring-w":[{ring:$()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:K()}],"ring-offset-w":[{"ring-offset":[Te,ia]}],"ring-offset-color":[{"ring-offset":K()}],"inset-ring-w":[{"inset-ring":$()}],"inset-ring-color":[{"inset-ring":K()}],"text-shadow":[{"text-shadow":["none",E,Wr,$r]}],"text-shadow-color":[{"text-shadow":K()}],opacity:[{opacity:[Te,se,oe]}],"mix-blend":[{"mix-blend":[...he(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":he()}],"mask-clip":[{"mask-clip":["border","padding","content","fill","stroke","view"]},"mask-no-clip"],"mask-composite":[{mask:["add","subtract","intersect","exclude"]}],"mask-image-linear-pos":[{"mask-linear":[Te]}],"mask-image-linear-from-pos":[{"mask-linear-from":ie()}],"mask-image-linear-to-pos":[{"mask-linear-to":ie()}],"mask-image-linear-from-color":[{"mask-linear-from":K()}],"mask-image-linear-to-color":[{"mask-linear-to":K()}],"mask-image-t-from-pos":[{"mask-t-from":ie()}],"mask-image-t-to-pos":[{"mask-t-to":ie()}],"mask-image-t-from-color":[{"mask-t-from":K()}],"mask-image-t-to-color":[{"mask-t-to":K()}],"mask-image-r-from-pos":[{"mask-r-from":ie()}],"mask-image-r-to-pos":[{"mask-r-to":ie()}],"mask-image-r-from-color":[{"mask-r-from":K()}],"mask-image-r-to-color":[{"mask-r-to":K()}],"mask-image-b-from-pos":[{"mask-b-from":ie()}],"mask-image-b-to-pos":[{"mask-b-to":ie()}],"mask-image-b-from-color":[{"mask-b-from":K()}],"mask-image-b-to-color":[{"mask-b-to":K()}],"mask-image-l-from-pos":[{"mask-l-from":ie()}],"mask-image-l-to-pos":[{"mask-l-to":ie()}],"mask-image-l-from-color":[{"mask-l-from":K()}],"mask-image-l-to-color":[{"mask-l-to":K()}],"mask-image-x-from-pos":[{"mask-x-from":ie()}],"mask-image-x-to-pos":[{"mask-x-to":ie()}],"mask-image-x-from-color":[{"mask-x-from":K()}],"mask-image-x-to-color":[{"mask-x-to":K()}],"mask-image-y-from-pos":[{"mask-y-from":ie()}],"mask-image-y-to-pos":[{"mask-y-to":ie()}],"mask-image-y-from-color":[{"mask-y-from":K()}],"mask-image-y-to-color":[{"mask-y-to":K()}],"mask-image-radial":[{"mask-radial":[se,oe]}],"mask-image-radial-from-pos":[{"mask-radial-from":ie()}],"mask-image-radial-to-pos":[{"mask-radial-to":ie()}],"mask-image-radial-from-color":[{"mask-radial-from":K()}],"mask-image-radial-to-color":[{"mask-radial-to":K()}],"mask-image-radial-shape":[{"mask-radial":["circle","ellipse"]}],"mask-image-radial-size":[{"mask-radial":[{closest:["side","corner"],farthest:["side","corner"]}]}],"mask-image-radial-pos":[{"mask-radial-at":V()}],"mask-image-conic-pos":[{"mask-conic":[Te]}],"mask-image-conic-from-pos":[{"mask-conic-from":ie()}],"mask-image-conic-to-pos":[{"mask-conic-to":ie()}],"mask-image-conic-from-color":[{"mask-conic-from":K()}],"mask-image-conic-to-color":[{"mask-conic-to":K()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:Se()}],"mask-repeat":[{mask:J()}],"mask-size":[{mask:me()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",se,oe]}],filter:[{filter:["","none",se,oe]}],blur:[{blur:Ee()}],brightness:[{brightness:[Te,se,oe]}],contrast:[{contrast:[Te,se,oe]}],"drop-shadow":[{"drop-shadow":["","none",A,Wr,$r]}],"drop-shadow-color":[{"drop-shadow":K()}],grayscale:[{grayscale:["",Te,se,oe]}],"hue-rotate":[{"hue-rotate":[Te,se,oe]}],invert:[{invert:["",Te,se,oe]}],saturate:[{saturate:[Te,se,oe]}],sepia:[{sepia:["",Te,se,oe]}],"backdrop-filter":[{"backdrop-filter":["","none",se,oe]}],"backdrop-blur":[{"backdrop-blur":Ee()}],"backdrop-brightness":[{"backdrop-brightness":[Te,se,oe]}],"backdrop-contrast":[{"backdrop-contrast":[Te,se,oe]}],"backdrop-grayscale":[{"backdrop-grayscale":["",Te,se,oe]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[Te,se,oe]}],"backdrop-invert":[{"backdrop-invert":["",Te,se,oe]}],"backdrop-opacity":[{"backdrop-opacity":[Te,se,oe]}],"backdrop-saturate":[{"backdrop-saturate":[Te,se,oe]}],"backdrop-sepia":[{"backdrop-sepia":["",Te,se,oe]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":z()}],"border-spacing-x":[{"border-spacing-x":z()}],"border-spacing-y":[{"border-spacing-y":z()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",se,oe]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[Te,"initial",se,oe]}],ease:[{ease:["linear","initial",Y,se,oe]}],delay:[{delay:[Te,se,oe]}],animate:[{animate:["none",G,se,oe]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[D,se,oe]}],"perspective-origin":[{"perspective-origin":I()}],rotate:[{rotate:fe()}],"rotate-x":[{"rotate-x":fe()}],"rotate-y":[{"rotate-y":fe()}],"rotate-z":[{"rotate-z":fe()}],scale:[{scale:ye()}],"scale-x":[{"scale-x":ye()}],"scale-y":[{"scale-y":ye()}],"scale-z":[{"scale-z":ye()}],"scale-3d":["scale-3d"],skew:[{skew:Dt()}],"skew-x":[{"skew-x":Dt()}],"skew-y":[{"skew-y":Dt()}],transform:[{transform:[se,oe,"","none","gpu","cpu"]}],"transform-origin":[{origin:I()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:Wn()}],"translate-x":[{"translate-x":Wn()}],"translate-y":[{"translate-y":Wn()}],"translate-z":[{"translate-z":Wn()}],"translate-none":["translate-none"],zoom:[{zoom:[An,se,oe]}],accent:[{accent:K()}],appearance:[{appearance:["none","auto"]}],"caret-color":[{caret:K()}],"color-scheme":[{scheme:["normal","dark","light","light-dark","only-dark","only-light"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",se,oe]}],"field-sizing":[{"field-sizing":["fixed","content"]}],"pointer-events":[{"pointer-events":["auto","none"]}],resize:[{resize:["none","","y","x"]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scrollbar-thumb-color":[{"scrollbar-thumb":K()}],"scrollbar-track-color":[{"scrollbar-track":K()}],"scrollbar-gutter":[{"scrollbar-gutter":["auto","stable","both"]}],"scrollbar-w":[{scrollbar:["auto","thin","none"]}],"scroll-m":[{"scroll-m":z()}],"scroll-mx":[{"scroll-mx":z()}],"scroll-my":[{"scroll-my":z()}],"scroll-ms":[{"scroll-ms":z()}],"scroll-me":[{"scroll-me":z()}],"scroll-mbs":[{"scroll-mbs":z()}],"scroll-mbe":[{"scroll-mbe":z()}],"scroll-mt":[{"scroll-mt":z()}],"scroll-mr":[{"scroll-mr":z()}],"scroll-mb":[{"scroll-mb":z()}],"scroll-ml":[{"scroll-ml":z()}],"scroll-p":[{"scroll-p":z()}],"scroll-px":[{"scroll-px":z()}],"scroll-py":[{"scroll-py":z()}],"scroll-ps":[{"scroll-ps":z()}],"scroll-pe":[{"scroll-pe":z()}],"scroll-pbs":[{"scroll-pbs":z()}],"scroll-pbe":[{"scroll-pbe":z()}],"scroll-pt":[{"scroll-pt":z()}],"scroll-pr":[{"scroll-pr":z()}],"scroll-pb":[{"scroll-pb":z()}],"scroll-pl":[{"scroll-pl":z()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",se,oe]}],fill:[{fill:["none",...K()]}],"stroke-w":[{stroke:[Te,mu,ia,z0]}],stroke:[{stroke:["none",...K()]}],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{"container-named":["container-type"],overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","inset-bs","inset-be","start","end","top","right","bottom","left"],"inset-x":["start","end","right","left"],"inset-y":["inset-bs","inset-be","top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pbs","pbe","pt","pr","pb","pl"],px:["ps","pe","pr","pl"],py:["pbs","pbe","pt","pb"],m:["mx","my","ms","me","mbs","mbe","mt","mr","mb","ml"],mx:["ms","me","mr","ml"],my:["mbs","mbe","mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-x","border-w-y","border-w-s","border-w-e","border-w-bs","border-w-be","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-s","border-w-e","border-w-r","border-w-l"],"border-w-y":["border-w-bs","border-w-be","border-w-t","border-w-b"],"border-color":["border-color-x","border-color-y","border-color-s","border-color-e","border-color-bs","border-color-be","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-s","border-color-e","border-color-r","border-color-l"],"border-color-y":["border-color-bs","border-color-be","border-color-t","border-color-b"],translate:["translate-x","translate-y","translate-none"],"translate-none":["translate","translate-x","translate-y","translate-z"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mbs","scroll-mbe","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-ms","scroll-me","scroll-mr","scroll-ml"],"scroll-my":["scroll-mbs","scroll-mbe","scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pbs","scroll-pbe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-ps","scroll-pe","scroll-pr","scroll-pl"],"scroll-py":["scroll-pbs","scroll-pbe","scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]},postfixLookupClassGroups:["container-type"],orderSensitiveModifiers:["*","**","after","backdrop","before","details-content","file","first-letter","first-line","marker","placeholder","selection"]}},QE=SE(VE);function Qe(...i){return QE(Gy(i))}const XE=Yy("inline-flex items-center justify-center gap-1.5 whitespace-nowrap rounded-lg text-xs font-medium transition-all cursor-pointer select-none disabled:pointer-events-none disabled:opacity-50 shrink-0",{variants:{variant:{default:"hl-btn-primary shadow-xs",outline:"hl-btn-outline",secondary:"hl-muted border hl-border hover:opacity-90",ghost:"hover:bg-[var(--bg-muted)]",accent:"border border-[var(--accent)] bg-[var(--accent-soft)] text-[var(--accent)] font-semibold hover:opacity-90"},size:{default:"h-8 px-3 py-1.5",sm:"h-7 px-2.5 text-[11px] rounded-md",lg:"h-9 px-4 text-xs",icon:"h-8 w-8 p-0"}},defaultVariants:{variant:"default",size:"default"}}),nt=x.forwardRef(({className:i,variant:r,size:c,asChild:o=!1,...s},f)=>{const m=o?I2:"button";return h.jsx(m,{className:Qe(XE({variant:r,size:c,className:i})),ref:f,...s})});nt.displayName="Button";var ZE=Object.defineProperty,vi=(i,r)=>ZE(i,"name",{value:r,configurable:!0}),l1=!!(typeof window<"u"&&window.document&&window.document.createElement);function dt(i,r,{checkForDefaultPrevented:c=!0}={}){return vi(function(s){if(i==null||i(s),c===!1||!s||!s.defaultPrevented)return r==null?void 0:r(s)},"handleEvent")}vi(dt,"composeEventHandlers");function KE(i){var r;if(!l1)throw new Error("Cannot access window outside of the DOM");return((r=i==null?void 0:i.ownerDocument)==null?void 0:r.defaultView)??window}vi(KE,"getOwnerWindow");function Pf(i){if(!l1)throw new Error("Cannot access document outside of the DOM");return(i==null?void 0:i.ownerDocument)??document}vi(Pf,"getOwnerDocument");function a1(i,r=!1){const{activeElement:c}=Pf(i);if(!(c!=null&&c.nodeName))return null;if(i1(c)&&c.contentDocument)return a1(c.contentDocument.body,r);if(r){const o=c.getAttribute("aria-activedescendant");if(o){const s=Pf(c).getElementById(o);if(s)return s}}return c}vi(a1,"getActiveElement");function i1(i){return i.tagName==="IFRAME"}vi(i1,"isFrame");var IE=Object.defineProperty,ln=(i,r)=>IE(i,"name",{value:r,configurable:!0});function JE(i,r){const c=x.createContext(r);c.displayName=i+"Context";const o=ln(f=>{const{children:m,...v}=f,p=x.useMemo(()=>v,Object.values(v));return h.jsx(c.Provider,{value:p,children:m})},"Provider");o.displayName=i+"Provider";function s(f,m={}){const{optional:v=!1}=m,p=x.useContext(c);if(p)return p;if(r!==void 0)return r;if(!v)throw new Error(`\`${f}\` must be used within \`${i}\``)}return ln(s,"useContext"),[o,s]}ln(JE,"createContext");function da(i,r=[]){let c=[];function o(f,m){const v=x.createContext(m);v.displayName=f+"Context";const p=c.length;c=[...c,m];const b=ln(y=>{var Y;const{scope:E,children:A,...j}=y,D=((Y=E==null?void 0:E[i])==null?void 0:Y[p])||v,L=x.useMemo(()=>j,Object.values(j));return h.jsx(D.Provider,{value:L,children:A})},"Provider");b.displayName=f+"Provider";function S(y,E,A={}){var Y;const{optional:j=!1}=A,D=((Y=E==null?void 0:E[i])==null?void 0:Y[p])||v,L=x.useContext(D);if(L)return L;if(m!==void 0)return m;if(!j)throw new Error(`\`${y}\` must be used within \`${f}\``)}return ln(S,"useContext"),[b,S]}ln(o,"createContext");const s=ln(()=>{const f=c.map(m=>x.createContext(m));return ln(function(v){const p=(v==null?void 0:v[i])||f;return x.useMemo(()=>({[`__scope${i}`]:{...v,[i]:p}}),[v,p])},"useScope")},"createScope");return s.scopeName=i,[o,u1(s,...r)]}ln(da,"createContextScope");function u1(...i){const r=i[0];if(i.length===1)return r;const c=ln(()=>{const o=i.map(s=>({useScope:s(),scopeName:s.scopeName}));return ln(function(f){const m=o.reduce((v,{useScope:p,scopeName:b})=>{const y=p(f)[`__scope${b}`];return{...v,...y}},{});return x.useMemo(()=>({[`__scope${r.scopeName}`]:m}),[m])},"useComposedScopes")},"createScope");return c.scopeName=r.scopeName,c}ln(u1,"composeContextScopes");var un=globalThis!=null&&globalThis.document?x.useLayoutEffect:()=>{},FE=Object.defineProperty,ut=(i,r)=>FE(i,"name",{value:r,configurable:!0});function r1(i){const r=i+"CollectionProvider",[c,o]=da(r),[s,f]=c(r,{collectionRef:{current:null},itemMap:new Map}),m=ut(D=>{const{scope:L,children:Y}=D,G=x.useRef(null),k=x.useRef(new Map).current;return h.jsx(s,{scope:L,itemMap:k,collectionRef:G,children:Y})},"CollectionProvider");m.displayName=r;const v=i+"CollectionSlot",p=Ml(v),b=x.forwardRef((D,L)=>{const{scope:Y,children:G}=D,k=f(v,Y),V=zt(L,k.collectionRef);return h.jsx(p,{ref:V,children:G})});b.displayName=v;const S=i+"CollectionItemSlot",y="data-radix-collection-item",E=Ml(S),A=x.forwardRef((D,L)=>{const{scope:Y,children:G,...k}=D,V=x.useRef(null),I=zt(L,V),R=f(S,Y);return x.useEffect(()=>(R.itemMap.set(V,{ref:V,...k}),()=>void R.itemMap.delete(V))),h.jsx(E,{[y]:"",ref:I,children:G})});A.displayName=S;function j(D){const L=f(i+"CollectionConsumer",D);return x.useCallback(()=>{const G=L.collectionRef.current;if(!G)return[];const k=Array.from(G.querySelectorAll(`[${y}]`));return Array.from(L.itemMap.values()).sort((R,T)=>k.indexOf(R.ref.current)-k.indexOf(T.ref.current))},[L.collectionRef,L.itemMap])}return ut(j,"useCollection"),[{Provider:m,Slot:b,ItemSlot:A},j,o]}ut(r1,"createCollection");var B0=new WeakMap,Pe,Zt,eo=(Zt=class extends Map{constructor(c){super(c);h0(this,Pe);uf(this,Pe,[...super.keys()]),B0.set(this,!0)}set(c,o){return B0.get(this)&&!this.has(c)&&xt(this,Pe).push(c),super.set(c,o),this}insert(c,o,s){const f=this.has(o),m=f?this.size:this.size+1,v=pd(c),p=v>=0?Math.min(v,m-1):Math.max(m+v,0);if(f?xt(this,Pe).indexOf(o)===p:p===this.size)return this.set(o,s),this;const b=xt(this,Pe).filter(y=>y!==o);b.splice(p,0,o);const S=b.map(y=>[y,y===o?s:this.get(y)]);this.clear();for(const[y,E]of S)this.set(y,E);return this}with(c,o,s){const f=new Zt(this);return f.insert(c,o,s),f}before(c){const o=xt(this,Pe).indexOf(c)-1;if(!(o<0))return this.entryAt(o)}setBefore(c,o,s){const f=xt(this,Pe).indexOf(c);if(f===-1)return this;const m=xt(this,Pe).indexOf(o),v=m!==-1&&m=this.size&&(f=this.size-1),this.at(f)}keyFrom(c,o){const s=this.indexOf(c);if(s===-1)return;let f=s+o;return f<0&&(f=0),f>=this.size&&(f=this.size-1),this.keyAt(f)}find(c,o){let s=0;for(const f of this){if(Reflect.apply(c,o,[f,s,this]))return f;s++}}findIndex(c,o){let s=0;for(const f of this){if(Reflect.apply(c,o,[f,s,this]))return s;s++}return-1}filter(c,o){const s=[];let f=0;for(const m of this)Reflect.apply(c,o,[m,f,this])&&s.push(m),f++;return new Zt(s)}map(c,o){const s=[];let f=0;for(const m of this)s.push([m[0],Reflect.apply(c,o,[m,f,this])]),f++;return new Zt(s)}reduce(...c){const[o,s]=c,f=c.length>1;if(!f&&this.size===0)throw new TypeError("Reduce of empty OrderedDict with no initial value");let m=0,v=s;for(const p of this)m===0&&!f?v=p:v=Reflect.apply(o,this,[v,p,m,this]),m++;return v}reduceRight(...c){const[o,s]=c,f=c.length>1;if(!f&&this.size===0)throw new TypeError("Reduce of empty OrderedDict with no initial value");let m=s;for(let v=this.size-1;v>=0;v--){const p=this.entryAt(v);v===this.size-1&&!f?m=p:m=Reflect.apply(o,this,[m,p,v,this])}return m}sort(c){if(typeof c!="function")throw new TypeError("OrderedDict.sort requires a compare function");const o=[...this.entries()].sort(c);this.clear();for(const[s,f]of o)this.set(s,f);return this}toSorted(c){if(typeof c!="function")throw new TypeError("OrderedDict.toSorted requires a compare function");const o=[...this.entries()].sort(c);return new Zt(o)}toReversed(){const c=new Zt;for(let o=this.size-1;o>=0;o--){const s=this.keyAt(o),f=this.get(s);c.set(s,f)}return c}toSpliced(...c){const o=[...this.entries()];return o.splice(...c),new Zt(o)}slice(c,o){const s=new Zt;for(const f of xt(this,Pe).slice(c,o))s.set(f,this.get(f));return s}every(c,o){let s=0;for(const f of this){if(!Reflect.apply(c,o,[f,s,this]))return!1;s++}return!0}some(c,o){let s=0;for(const f of this){if(Reflect.apply(c,o,[f,s,this]))return!0;s++}return!1}},Pe=new WeakMap,ut(Zt,"OrderedDict"),Zt);function ro(i,r){if("at"in Array.prototype)return Array.prototype.at.call(i,r);const c=o1(i,r);return c===-1?void 0:i[c]}ut(ro,"at");function o1(i,r){const c=i.length,o=pd(r),s=o>=0?o:c+o;return s<0||s>=c?-1:s}ut(o1,"toSafeIndex");function pd(i){return i!==i||i===0?0:Math.trunc(i)}ut(pd,"toSafeInteger");function PE(i){const r=i+"CollectionProvider",[c,o]=da(r),[s,f]=c(r);s.displayName=i+"CollectionStableContextProvider";const[m,v]=c(r);m.displayName=i+"CollectionStatefulContextProvider";const p=ut(({state:R,...T})=>R?h.jsx(S,{...T,state:R}):h.jsx(b,{...T}),"CollectionProvider");p.displayName=r;const b=ut(R=>{const T=G();return h.jsx(S,{...R,state:T})},"CollectionInit");b.displayName=i+"CollectionInit";const S=ut(R=>{const{scope:T,children:z,state:Z}=R,te=x.useRef(null),[W,P]=x.useState(null),ne=zt(te,P),[ue,ge]=Z,F=x.useRef(new eo),ae=x.useCallback(()=>{const ce=F.current;return f1(ce)||ce.sort(oo),ce},[]);return x.useEffect(()=>{if(!W)return;const ce=d1(()=>{ge(xe=>{const K=xe.toSorted(oo);return K.some(([J],me)=>xe.keyAt(me)!==J)?K:xe})});return ce.observe(W,{childList:!0,subtree:!0}),()=>{ce.disconnect()}},[W,ge]),h.jsx(s,{scope:T,collectionElementRef:ne,collectionElementRefObject:te,getCollection:ae,setCollection:ge,registryRef:F,children:h.jsx(m,{scope:T,collectionElement:W,collection:ue,children:z})})},"CollectionProviderImpl");S.displayName=i+"CollectionProviderImpl";const y=i+"CollectionSlot",E=Ml(y),A=x.forwardRef((R,T)=>{const{scope:z,children:Z}=R,te=f(y,z),W=zt(T,te.collectionElementRef);return h.jsx(E,{ref:W,children:Z})});A.displayName=y;const j=i+"CollectionItemSlot",D="data-radix-collection-item",L=Ml(j),Y=x.forwardRef((R,T)=>{const{scope:z,children:Z,...te}=R,W=x.useRef(null),P=f(j,z),{setCollection:ne,registryRef:ue}=P,ge=x.useRef(te);c1(ge.current,te)||(ge.current=te);const F=ge.current,ae=x.useCallback(K=>{const Se=ue.current;K?Se.set(K,{...ge.current,element:K}):W.current&&Se.delete(W.current)},[ue]),ce=zt(T,ae,W);un(()=>{const K=W.current,Se=ue.current;K&&Se.has(K)&&Se.set(K,{...F,element:K})},[F,ue]);const xe=x.useRef(null);return x.useEffect(()=>{const K=W.current,Se=xe.current;((Se==null?void 0:Se.element)??null)===K&&(!K||(Se==null?void 0:Se.itemData)===F)||(xe.current=K?{element:K,itemData:F}:null,ne(J=>{const me=new eo(J);return Se&&Se.element!==K&&me.delete(Se.element),K&&me.set(K,{...F,element:K}),me.sort(oo)}))}),x.useEffect(()=>()=>{const K=xe.current;xe.current=null,K&&ne(Se=>{if(!Se.has(K.element))return Se;const J=new eo(Se);return J.delete(K.element),J})},[ne]),h.jsx(L,{[D]:"",ref:ce,children:Z})});Y.displayName=j;function G(){return x.useState(new eo)}ut(G,"useInitCollection");function k(R){const{collection:T}=v(i+"CollectionConsumer",R);return T}ut(k,"useCollection");function V(R){const{getCollection:T}=f(i+"CollectionConsumer",R);return T}return ut(V,"useGetCollection"),[{Provider:p,Slot:A,ItemSlot:Y},{createCollectionScope:o,useCollection:k,useGetCollection:V,useInitCollection:G}]}ut(PE,"createCollection");function c1(i,r){if(i===r)return!0;if(typeof i!="object"||typeof r!="object"||i==null||r==null)return!1;const c=Object.keys(i),o=Object.keys(r);if(c.length!==o.length)return!1;for(const s of c)if(!Object.prototype.hasOwnProperty.call(r,s)||i[s]!==r[s])return!1;return!0}ut(c1,"shallowEqual");function s1(i,r){return!!(r.compareDocumentPosition(i)&Node.DOCUMENT_POSITION_PRECEDING)}ut(s1,"isElementPreceding");function f1(i){let r;for(const c of i.keys()){if(r){const o=r.compareDocumentPosition(c);if(!(o&Node.DOCUMENT_POSITION_DISCONNECTED)&&o&Node.DOCUMENT_POSITION_PRECEDING)return!1}r=c}return!0}ut(f1,"isInDocumentOrder");function oo(i,r){return!i[1].element||!r[1].element?0:s1(i[1].element,r[1].element)?-1:1}ut(oo,"sortByDocumentPosition");function d1(i){return new MutationObserver(c=>{for(const o of c)if(o.type==="childList"){i();return}})}ut(d1,"getChildListObserver");var $E=Object.defineProperty,WE=(i,r)=>$E(i,"name",{value:r,configurable:!0}),eC=sa[" useId ".trim().toString()]||(()=>{}),tC=0;function an(i){const[r,c]=x.useState(eC());return un(()=>{i||c(o=>o??String(tC++))},[i]),i||(r?`radix-${r}`:"")}WE(an,"useId");var m1=_y(),nC=Object.defineProperty,lC=(i,r)=>nC(i,"name",{value:r,configurable:!0}),aC=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],Ke=aC.reduce((i,r)=>{const c=Ml(`Primitive.${r}`),o=x.forwardRef((s,f)=>{const{asChild:m,...v}=s,p=m?c:r;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),h.jsx(p,{...v,ref:f})});return o.displayName=`Primitive.${r}`,{...i,[r]:o}},{});function h1(i,r){i&&m1.flushSync(()=>i.dispatchEvent(r))}lC(h1,"dispatchDiscreteCustomEvent");var iC=Object.defineProperty,uC=(i,r)=>iC(i,"name",{value:r,configurable:!0}),k0=sa[" useInsertionEffect ".trim().toString()];function oa(i){const r=x.useRef(i);return typeof k0=="function"?k0(()=>{r.current=i}):un(()=>{r.current=i}),x.useMemo(()=>((...c)=>{var o;return(o=r.current)==null?void 0:o.call(r,...c)}),[])}uC(oa,"useCallbackRef");var rC=Object.defineProperty,oC=(i,r)=>rC(i,"name",{value:r,configurable:!0}),H0=sa[" useEffectEvent ".trim().toString()],L0=sa[" useInsertionEffect ".trim().toString()];function v1(i){if(typeof H0=="function")return H0(i);const r=x.useRef(()=>{throw new Error("Cannot call an event handler while rendering.")});return typeof L0=="function"?L0(()=>{r.current=i}):un(()=>{r.current=i}),x.useMemo(()=>((...c)=>{var o;return(o=r.current)==null?void 0:o.call(r,...c)}),[])}oC(v1,"useEffectEvent");var cC=Object.defineProperty,pu=(i,r)=>cC(i,"name",{value:r,configurable:!0}),sC=sa[" useInsertionEffect ".trim().toString()]||un;function bu({prop:i,defaultProp:r,onChange:c=pu(()=>{},"onChange"),caller:o}){const[s,f,m]=g1({defaultProp:r,onChange:c}),v=i!==void 0,p=v?i:s,b=x.useCallback(S=>{var y;if(v){const E=y1(S)?S(i):S;E!==i&&((y=m.current)==null||y.call(m,E))}else f(S)},[v,i,f,m]);return[p,b]}pu(bu,"useControllableState");function g1({defaultProp:i,onChange:r}){const[c,o]=x.useState(i),s=x.useRef(c),f=x.useRef(r);return sC(()=>{f.current=r},[r]),x.useEffect(()=>{var m;s.current!==c&&((m=f.current)==null||m.call(f,c),s.current=c)},[c,s]),[c,o,f]}pu(g1,"useUncontrolledState");function y1(i){return typeof i=="function"}pu(y1,"isFunction");var q0=Symbol("RADIX:SYNC_STATE");function fC(i,r,c,o){const{prop:s,defaultProp:f,onChange:m,caller:v}=r,p=s!==void 0,b=v1(m),S=[{...c,state:f}];o&&S.push(o);const[y,E]=x.useReducer((L,Y)=>{if(Y.type===q0)return{...L,state:Y.state};const G=i(L,Y);return p&&!Object.is(G.state,L.state)&&b(G.state),G},...S),A=y.state,j=x.useRef(A);x.useEffect(()=>{j.current!==A&&(j.current=A,p||b(A))},[A,j,p]);const D=x.useMemo(()=>s!==void 0?{...y,state:s}:y,[y,s]);return x.useEffect(()=>{p&&!Object.is(s,y.state)&&E({type:q0,state:s})},[s,y.state,p]),[D,E]}pu(fC,"useControllableStateReducer");var dC=Object.defineProperty,mC=(i,r)=>dC(i,"name",{value:r,configurable:!0}),hC={LTR:"ltr"},vC=x.createContext(void 0);function bd(i){const r=x.useContext(vC);return i||r||hC.LTR}mC(bd,"useDirection");var gC=Object.defineProperty,xd=(i,r)=>gC(i,"name",{value:r,configurable:!0}),hf=!1;function p1(){const[i,r]=x.useState(hf);return x.useEffect(()=>{hf||(hf=!0,r(!0))},[]),i}xd(p1,"useIsHydrated");var b1=sa[" useSyncExternalStore ".trim().toString()];function x1(){return()=>{}}xd(x1,"subscribe");function S1(){return b1(x1,()=>!0,()=>!1)}xd(S1,"useIsHydratedModern");var yC=typeof b1=="function"?S1:p1,pC=Object.defineProperty,ma=(i,r)=>pC(i,"name",{value:r,configurable:!0}),vf="rovingFocusGroup.onEntryFocus",bC={bubbles:!1,cancelable:!0},po="RovingFocusGroup",[$f,E1,xC]=r1(po),[SC,C1]=da(po,[xC]),G0={Vertical:"vertical",Horizontal:"horizontal"},EC={RTL:"rtl"},[CC,NC]=SC(po),wC=x.forwardRef(ma(function(r,c){return h.jsx($f.Provider,{scope:r.__scopeRovingFocusGroup,children:h.jsx($f.Slot,{scope:r.__scopeRovingFocusGroup,children:h.jsx(TC,{...r,ref:c})})})},"RovingFocusGroup")),TC=x.forwardRef(ma(function(r,c){const{__scopeRovingFocusGroup:o,orientation:s,loop:f=!1,dir:m,currentTabStopId:v,defaultCurrentTabStopId:p,onCurrentTabStopIdChange:b,onEntryFocus:S,preventScrollOnEntryFocus:y=!1,...E}=r,A=x.useRef(null),j=zt(c,A),D=bd(m),[L,Y]=bu({prop:v,defaultProp:p??null,onChange:b,caller:po}),[G,k]=x.useState(!1),V=oa(S),I=E1(o),R=x.useRef(!1),[T,z]=x.useState(0);return x.useEffect(()=>{const Z=A.current;if(Z)return Z.addEventListener(vf,V),()=>Z.removeEventListener(vf,V)},[V]),h.jsx(CC,{scope:o,orientation:s,dir:D,loop:f,currentTabStopId:L,onItemFocus:x.useCallback(Z=>Y(Z),[Y]),onItemShiftTab:x.useCallback(()=>k(!0),[]),onFocusableItemAdd:x.useCallback(()=>z(Z=>Z+1),[]),onFocusableItemRemove:x.useCallback(()=>z(Z=>Z-1),[]),children:h.jsx(Ke.div,{tabIndex:G||T===0?-1:0,"data-orientation":s,...E,ref:j,style:{outline:"none",...r.style},onMouseDown:dt(r.onMouseDown,()=>{R.current=!0}),onFocus:dt(r.onFocus,Z=>{const te=!R.current;if(Z.target===Z.currentTarget&&te&&!G){const W=new CustomEvent(vf,bC);if(Z.currentTarget.dispatchEvent(W),!W.defaultPrevented){const P=I().filter(ae=>ae.focusable),ne=P.find(ae=>ae.active),ue=P.find(ae=>ae.id===L),F=[ne,ue,...P].filter(Boolean).map(ae=>ae.ref.current);Sd(F,y)}}R.current=!1}),onBlur:dt(r.onBlur,()=>k(!1))})})},"RovingFocusGroupImpl")),_C="RovingFocusGroupItem",AC=x.forwardRef(ma(function(r,c){const{__scopeRovingFocusGroup:o,focusable:s=!0,active:f=!1,tabStopId:m,children:v,...p}=r,b=an(),S=m||b,y=NC(_C,o),E=y.currentTabStopId===S,A=E1(o),{onFocusableItemAdd:j,onFocusableItemRemove:D,currentTabStopId:L}=y,Y=yC();return un(()=>{if(!(!Y||!s))return j(),()=>D()},[Y,s,j,D]),x.useEffect(()=>{if(!(Y||!s))return j(),()=>D()},[Y,s,j,D]),h.jsx($f.ItemSlot,{scope:o,id:S,focusable:s,active:f,children:h.jsx(Ke.span,{tabIndex:E?0:-1,"data-orientation":y.orientation,...p,ref:c,onMouseDown:dt(r.onMouseDown,G=>{s?y.onItemFocus(S):G.preventDefault()}),onFocus:dt(r.onFocus,()=>y.onItemFocus(S)),onKeyDown:dt(r.onKeyDown,G=>{if(G.key==="Tab"&&G.shiftKey){y.onItemShiftTab();return}if(G.target!==G.currentTarget)return;const k=w1(G,y.orientation,y.dir);if(k!==void 0){if(G.metaKey||G.ctrlKey||G.altKey||G.shiftKey)return;G.preventDefault();let I=A().filter(R=>R.focusable).map(R=>R.ref.current);if(k==="last")I.reverse();else if(k==="prev"||k==="next"){k==="prev"&&I.reverse();const R=I.indexOf(G.currentTarget);I=y.loop?T1(I,R+1):I.slice(R+1)}setTimeout(()=>Sd(I))}}),children:typeof v=="function"?v({isCurrentTabStop:E,hasTabStop:L!=null}):v})})},"RovingFocusGroupItem")),RC={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function N1(i,r){return r!==EC.RTL?i:i==="ArrowLeft"?"ArrowRight":i==="ArrowRight"?"ArrowLeft":i}ma(N1,"getDirectionAwareKey");function w1(i,r,c){const o=N1(i.key,c);if(!(r===G0.Vertical&&["ArrowLeft","ArrowRight"].includes(o))&&!(r===G0.Horizontal&&["ArrowUp","ArrowDown"].includes(o)))return RC[o]}ma(w1,"getFocusIntent");function Sd(i,r=!1){const c=document.activeElement;for(const o of i)if(o===c||(o.focus({preventScroll:r}),document.activeElement!==c))return}ma(Sd,"focusFirst");function T1(i,r){return i.map((c,o)=>i[(r+o)%i.length])}ma(T1,"wrapArray");var jC=Object.defineProperty,Fn=(i,r)=>jC(i,"name",{value:r,configurable:!0});function _1(i,r){return x.useReducer((c,o)=>r[c][o]??c,i)}Fn(_1,"useStateMachine");var bo=Fn(i=>{const{present:r,children:c}=i,o=A1(r),s=typeof c=="function"?c({present:o.isPresent}):x.Children.only(c),f=R1(o.ref,j1(s));return typeof c=="function"||o.isPresent?x.cloneElement(s,{ref:f}):null},"Presence");function A1(i){const[r,c]=x.useState(),o=x.useRef(null),s=x.useRef(i),f=x.useRef("none"),m=x.useRef(void 0),v=i?"mounted":"unmounted",[p,b]=_1(v,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return x.useEffect(()=>{p==="mounted"?(f.current=m.current??fi(o.current),m.current=void 0):f.current="none"},[p]),un(()=>{const S=o.current,y=s.current;if(y!==i){const A=f.current,j=fi(S);i?(m.current=j,b("MOUNT")):j==="none"||(S==null?void 0:S.display)==="none"?b("UNMOUNT"):b(y&&A!==j?"ANIMATION_OUT":"UNMOUNT"),s.current=i}},[i,b]),un(()=>{if(r){let S;const y=r.ownerDocument.defaultView??window,E=Fn(j=>{const L=fi(o.current).includes(CSS.escape(j.animationName));if(j.target===r&&L&&(b("ANIMATION_END"),!s.current)){const Y=r.style.animationFillMode;r.style.animationFillMode="forwards",S=y.setTimeout(()=>{r.style.animationFillMode==="forwards"&&(r.style.animationFillMode=Y)})}},"handleAnimationEnd"),A=Fn(j=>{j.target===r&&(f.current=fi(o.current))},"handleAnimationStart");return r.addEventListener("animationstart",A),r.addEventListener("animationcancel",E),r.addEventListener("animationend",E),()=>{y.clearTimeout(S),r.removeEventListener("animationstart",A),r.removeEventListener("animationcancel",E),r.removeEventListener("animationend",E)}}else b("ANIMATION_END")},[r,b]),{isPresent:["mounted","unmountSuspended"].includes(p),ref:x.useCallback(S=>{if(S){const y=getComputedStyle(S);o.current=y,m.current=fi(y)}else o.current=null;c(S)},[])}}Fn(A1,"usePresence");function Wf(i,r){if(typeof i=="function")return i(r);i!=null&&(i.current=r)}Fn(Wf,"setRef");function R1(...i){const r=x.useRef(i);return r.current=i,x.useCallback(c=>{const o=r.current;let s=!1;const f=o.map(m=>{const v=Wf(m,c);return!s&&typeof v=="function"&&(s=!0),v});if(s)return()=>{for(let m=0;mOC(i,"name",{value:r,configurable:!0}),O1={Automatic:"automatic",Manual:"manual"},Ed="Tabs",[MC,dN]=da(Ed,[C1]),M1=C1(),[zC,Cd]=MC(Ed),DC=x.forwardRef(gi(function(r,c){const{__scopeTabs:o,value:s,onValueChange:f,defaultValue:m,orientation:v="horizontal",dir:p,activationMode:b=O1.Automatic,...S}=r,y=bd(p),[E,A]=bu({prop:s,onChange:f,defaultProp:m??"",caller:Ed});return h.jsx(zC,{scope:o,baseId:an(),value:E,onValueChange:A,orientation:v,dir:y,activationMode:b,children:h.jsx(Ke.div,{dir:y,"data-orientation":v,...S,ref:c})})},"Tabs")),UC="TabsList",z1=x.forwardRef(gi(function(r,c){const{__scopeTabs:o,loop:s=!0,...f}=r,m=Cd(UC,o),v=M1(o);return h.jsx(wC,{asChild:!0,...v,orientation:m.orientation,dir:m.dir,loop:s,children:h.jsx(Ke.div,{role:"tablist","aria-orientation":m.orientation,...f,ref:c})})},"TabsList")),BC="TabsTrigger",D1=x.forwardRef(gi(function(r,c){const{__scopeTabs:o,value:s,disabled:f=!1,...m}=r,v=Cd(BC,o),p=M1(o),b=Nd(v.baseId,s),S=wd(v.baseId,s),y=s===v.value;return h.jsx(AC,{asChild:!0,...p,focusable:!f,active:y,children:h.jsx(Ke.button,{type:"button",role:"tab","aria-selected":y,"aria-controls":S,"data-state":y?"active":"inactive","data-disabled":f?"":void 0,disabled:f,id:b,...m,ref:c,onMouseDown:dt(r.onMouseDown,E=>{!f&&E.button===0&&E.ctrlKey===!1?(E.currentTarget.focus(),v.onValueChange(s)):E.preventDefault()}),onKeyDown:dt(r.onKeyDown,E=>{f||E.target!==E.currentTarget||[" ","Enter"].includes(E.key)&&v.onValueChange(s)}),onFocus:dt(r.onFocus,()=>{const E=v.activationMode!==O1.Manual;!y&&!f&&E&&v.onValueChange(s)})})})},"TabsTrigger")),kC="TabsContent",U1=x.forwardRef(gi(function(r,c){const{__scopeTabs:o,value:s,forceMount:f,children:m,...v}=r,p=Cd(kC,o),b=Nd(p.baseId,s),S=wd(p.baseId,s),y=s===p.value,E=x.useRef(y);return x.useEffect(()=>{const A=requestAnimationFrame(()=>E.current=!1);return()=>cancelAnimationFrame(A)},[]),h.jsx(bo,{present:f||y,children:({present:A})=>h.jsx(Ke.div,{"data-state":y?"active":"inactive","data-orientation":p.orientation,role:"tabpanel","aria-labelledby":b,hidden:!A,id:S,tabIndex:0,...v,ref:c,style:{...r.style,animationDuration:E.current?"0s":void 0},children:A&&m})})},"TabsContent"));function Nd(i,r){return`${i}-trigger-${r}`}gi(Nd,"makeTriggerId");function wd(i,r){return`${i}-content-${r}`}gi(wd,"makeContentId");const ed=DC,ho=x.forwardRef(({className:i,...r},c)=>h.jsx(z1,{ref:c,className:Qe("inline-flex items-center justify-center rounded-lg hl-muted p-1 border hl-border text-[var(--text-muted)]",i),...r}));ho.displayName=z1.displayName;const ua=x.forwardRef(({className:i,...r},c)=>h.jsx(D1,{ref:c,className:Qe("inline-flex items-center justify-center gap-1.5 whitespace-nowrap rounded-md px-2.5 py-1 text-xs font-medium transition-all cursor-pointer select-none disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-[var(--bg-card)] data-[state=active]:text-[var(--text-main)] data-[state=active]:shadow-xs",i),...r}));ua.displayName=D1.displayName;const HC=x.forwardRef(({className:i,...r},c)=>h.jsx(U1,{ref:c,className:Qe("mt-2 outline-none",i),...r}));HC.displayName=U1.displayName;const LC=[{id:"auto",label:"智能路由"},{id:"edge443",label:"443 免端口"},{id:"home10443",label:"10443 家宽"},{id:"lan",label:"LAN 局域网"}],qC=()=>{const{theme:i,resolvedTheme:r,routeMode:c,viewMode:o,telemetry:s,setTheme:f,toggleTheme:m,setRouteMode:v,setViewMode:p,setShowAgyModal:b,setShowWechatModal:S,setShowCmdPalette:y}=Pn();return h.jsxs(h.Fragment,{children:[h.jsx("header",{className:"border-b hl-border sticky top-0 z-30 backdrop-blur-md",style:{backgroundColor:"color-mix(in srgb, var(--bg-card) 88%, transparent)"},children:h.jsxs("div",{className:"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 h-14 flex items-center justify-between gap-4",children:[h.jsxs("div",{className:"flex items-center gap-4 shrink-0",children:[h.jsxs("div",{onClick:()=>p("dashboard"),className:"flex items-center gap-2.5 cursor-pointer",children:[h.jsx("img",{src:"https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons/png/apple.png",alt:"Mac mini",className:"w-6 h-6 rounded"}),h.jsx("span",{className:"font-semibold text-sm tracking-tight",children:"HomeLab"}),h.jsx("span",{className:"w-2 h-2 rounded-full",style:{backgroundColor:"var(--success)"},title:"全屋 4 节点在线"})]}),h.jsx("div",{className:"h-4 w-[1px] hl-muted"}),h.jsx(ed,{value:o,onValueChange:E=>p(E),children:h.jsxs(ho,{children:[h.jsxs(ua,{value:"dashboard",children:[h.jsx(g2,{className:"w-3.5 h-3.5"}),h.jsx("span",{children:"中控台"})]}),h.jsxs(ua,{value:"storybook",children:[h.jsx(Oy,{className:"w-3.5 h-3.5"}),h.jsx("span",{children:"Storybook 设计规范"})]})]})})]}),h.jsxs("div",{className:"flex items-center gap-2.5 shrink-0 ml-auto",children:[h.jsxs(nt,{variant:"outline",onClick:()=>y(!0),className:"gap-3",title:"按 Cmd+K 唤起全局命令面板",children:[h.jsxs("span",{className:"flex items-center gap-1.5",style:{color:"var(--text-muted)"},children:[h.jsx(dd,{className:"w-3.5 h-3.5"}),h.jsx("span",{className:"hidden sm:inline",children:"搜索服务或指令..."})]}),h.jsx("kbd",{className:"px-1.5 py-0.5 text-[10px] font-mono-num rounded hl-muted",style:{color:"var(--text-muted)"},children:"⌘K"})]}),h.jsxs(nt,{variant:"outline",onClick:()=>S(!0),title:"连接微信 ClawBot,在微信内直接收发消息与控制 Mac mini",children:[h.jsx("span",{className:"w-2 h-2 rounded-full",style:{backgroundColor:s.services.clawbot?"var(--success)":"var(--accent)"}}),h.jsx(My,{className:"w-3.5 h-3.5"}),h.jsx("span",{children:"微信 ClawBot"})]}),h.jsxs(nt,{onClick:()=>b(!0),children:[h.jsx(md,{className:"w-3.5 h-3.5"}),h.jsx("span",{children:"AGY 终端"})]}),h.jsxs("div",{className:"flex items-center p-0.5 rounded-lg hl-muted border hl-border text-xs",children:[h.jsx("button",{onClick:m,className:"px-2.5 py-1 rounded-md font-medium transition-all flex items-center gap-1.5 cursor-pointer",style:{backgroundColor:"var(--bg-card)",color:"var(--text-main)",boxShadow:"0 1px 2px rgba(0,0,0,0.08)"},title:"点击切换深色 / 浅色主题(默认跟随系统)",children:r==="dark"?h.jsxs(h.Fragment,{children:[h.jsx(S2,{className:"w-3.5 h-3.5"}),h.jsx("span",{children:"深色"})]}):h.jsxs(h.Fragment,{children:[h.jsx(q2,{className:"w-3.5 h-3.5"}),h.jsx("span",{children:"浅色"})]})}),i!=="system"&&h.jsx("button",{onClick:()=>f("system"),className:"px-2 py-1 rounded-md text-[11px] transition-all cursor-pointer",style:{color:"var(--text-muted)"},title:"恢复跟随设备系统深浅色自动切换",children:"自动"})]})]})]})}),o==="dashboard"&&h.jsx("div",{className:"border-b hl-border",style:{backgroundColor:"var(--bg-card)"},children:h.jsxs("div",{className:"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-2.5 flex flex-wrap items-center justify-between gap-3",children:[h.jsxs("div",{className:"flex flex-wrap items-center gap-2 text-xs font-mono-num",children:[h.jsxs("div",{className:"hl-pill px-2.5 py-1 flex items-center gap-2",children:[h.jsx("span",{style:{color:"var(--text-muted)"},children:"M6 CPU"}),h.jsx("div",{className:"w-12 h-1.5 rounded-full hl-muted overflow-hidden",children:h.jsx("div",{className:"h-full hl-bar-fill",style:{width:`${Math.max(5,s.mini.cpu_pct)}%`}})}),h.jsxs("span",{className:"font-medium",children:[s.mini.cpu_pct,"%"]})]}),h.jsxs("div",{className:"hl-pill px-2.5 py-1 flex items-center gap-2",children:[h.jsx("span",{style:{color:"var(--text-muted)"},children:"RAM"}),h.jsx("div",{className:"w-12 h-1.5 rounded-full hl-muted overflow-hidden",children:h.jsx("div",{className:"h-full hl-bar-fill",style:{width:`${Math.max(5,s.mini.mem_pct)}%`}})}),h.jsxs("span",{className:"font-medium",children:[s.mini.mem_used_gb,"G"]})]}),h.jsxs("div",{className:"hl-pill px-2.5 py-1 flex items-center gap-2",children:[h.jsx("span",{style:{color:"var(--text-muted)"},children:"NAS 余量"}),h.jsx("div",{className:"w-12 h-1.5 rounded-full hl-muted overflow-hidden",children:h.jsx("div",{className:"h-full hl-bar-fill-green",style:{width:`${Math.max(5,s.nas.pct)}%`}})}),h.jsxs("span",{className:"font-medium",style:{color:"var(--success)"},children:[s.nas.free_tb," TB"]})]}),h.jsxs("div",{className:"hl-pill px-2.5 py-1 flex items-center gap-1.5",children:[h.jsx("span",{className:"w-1.5 h-1.5 rounded-full",style:{backgroundColor:"var(--success)"}}),h.jsx("span",{style:{color:"var(--text-muted)"},children:"SG 专线"}),h.jsx("span",{className:"font-medium",children:s.network.sg_delay_ms>0?`${s.network.sg_delay_ms}ms`:"直连"})]})]}),h.jsx(ed,{value:c,onValueChange:E=>v(E),className:"ml-auto",children:h.jsx(ho,{children:LC.map(E=>h.jsx(ua,{value:E.id,children:E.label},E.id))})})]})})]})},B1=({card:i})=>{const{getEffectiveMode:r,setShowAgyModal:c,triggerAction:o}=Pn(),s=r(),f=s==="lan"?i.lanUrl:s==="home10443"?i.homeUrl:i.edgeUrl,m=s==="lan"?"LAN 直连":s==="home10443"?"10443":"443 免端口";return h.jsxs("a",{href:f,target:"_blank",rel:"noopener noreferrer",className:"hl-card hl-card-interactive flex flex-col justify-between overflow-hidden group cursor-pointer",children:[h.jsxs("div",{className:"p-4 sm:p-5 space-y-3",children:[h.jsxs("div",{className:"flex items-start justify-between gap-3",children:[h.jsxs("div",{className:"flex items-center gap-3.5 min-w-0",children:[h.jsx("div",{className:"w-10 h-10 rounded-xl hl-muted border hl-border p-1.5 flex items-center justify-center shrink-0",children:h.jsx("img",{src:i.iconUrl,alt:i.title,className:"w-full h-full object-contain"})}),h.jsxs("div",{className:"min-w-0",children:[h.jsxs("div",{className:"flex items-center gap-2",children:[h.jsx("h3",{className:"text-sm font-semibold truncate group-hover:underline",children:i.title}),h.jsx("span",{className:"w-2 h-2 rounded-full shrink-0",style:{backgroundColor:i.online!==!1?"var(--success)":"#ef4444"}})]}),h.jsx("p",{className:"text-[11px] font-mono-num truncate mt-0.5",style:{color:"var(--text-muted)"},children:i.subtitle})]})]}),i.actionType==="drawer"?h.jsx("button",{onClick:v=>{v.preventDefault(),c(!0)},className:"px-2 py-1 rounded-md text-[11px] font-medium shrink-0 transition-opacity hover:opacity-80 cursor-pointer",style:{backgroundColor:"var(--accent-soft)",color:"var(--accent)"},children:"页内终端"}):i.actionType==="backup"?h.jsx("button",{onClick:v=>{v.preventDefault(),o("backup_nas","正在打包备份至极空间 Z4...")},className:"px-2 py-1 rounded-md text-[11px] font-medium shrink-0 transition-opacity hover:opacity-80 cursor-pointer",style:{backgroundColor:"var(--success-soft)",color:"var(--success)"},children:"立即备份"}):h.jsx("span",{className:"text-xs font-mono-num px-2 py-0.5 rounded hl-muted shrink-0",style:{color:"var(--text-muted)"},children:m})]}),h.jsx("p",{className:"text-xs leading-relaxed line-clamp-2",style:{color:"var(--text-muted)"},children:i.desc})]}),h.jsx("div",{className:"hl-widget-footer grid grid-cols-3 divide-x hl-border text-center",children:i.stats.map((v,p)=>h.jsxs("div",{className:"py-2.5 px-2 flex flex-col items-center justify-center",children:[h.jsx("span",{className:"text-[10px] uppercase tracking-wider truncate max-w-full",style:{color:"var(--text-subtle)"},children:v.label}),h.jsx("span",{className:"text-xs font-semibold font-mono-num mt-0.5 truncate max-w-full",style:{color:v.highlight?"var(--success)":"var(--text-main)"},children:v.value})]},p))})]})},GC=[{label:"SSH 连接 Mac mini",cmd:"ssh mini"},{label:"终端接力 AGY 会话",cmd:'ssh mini -t "tmux attach -t agy"'},{label:"SSH 连接新加坡 Azure",cmd:"ssh azure"},{label:"SSH 连接小米主路由",cmd:"ssh root@192.168.31.1"}],k1=()=>{const{copyCmd:i,triggerAction:r}=Pn();return h.jsxs("section",{className:"space-y-3 pt-1",children:[h.jsxs("div",{className:"flex items-center justify-between px-0.5",children:[h.jsxs("div",{className:"flex items-center gap-2",children:[h.jsx("h2",{className:"text-xs font-semibold uppercase tracking-wider",style:{color:"var(--text-muted)"},children:"终端快捷指令与备用直连书签"}),h.jsx("span",{className:"text-[11px] font-mono-num",style:{color:"var(--text-subtle)"},children:"· 点击指令即复制"})]}),h.jsxs("div",{className:"flex items-center gap-3 text-xs",children:[h.jsx("button",{onClick:()=>r("refresh_ddns","正在同步 Cloudflare DDNS..."),className:"hover:underline font-medium cursor-pointer",style:{color:"var(--accent)"},children:"刷新 DDNS 解析"}),h.jsx("button",{onClick:()=>r("mount_nas","正在巡检极空间 20TB SMB 挂载..."),className:"hover:underline font-medium cursor-pointer",style:{color:"var(--accent)"},children:"巡检极空间挂载"})]})]}),h.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-3",children:GC.map(c=>h.jsxs("button",{onClick:()=>i(c.cmd,c.label),className:"hl-card hl-card-interactive px-4 py-3 text-left flex items-center justify-between gap-2 cursor-pointer",children:[h.jsxs("div",{className:"min-w-0",children:[h.jsx("div",{className:"text-xs font-semibold",children:c.label}),h.jsx("div",{className:"text-[11px] font-mono-num truncate mt-0.5",style:{color:"var(--accent)"},children:c.cmd})]}),h.jsx("span",{className:"text-[10px] font-mono-num px-1.5 py-0.5 rounded hl-muted shrink-0",style:{color:"var(--text-muted)"},children:"COPY"})]},c.cmd))})]})},YC=Yy("inline-flex items-center gap-1 rounded-md px-2 py-0.5 text-[11px] font-mono-num font-medium transition-colors shrink-0",{variants:{variant:{default:"bg-[var(--primary)] text-[var(--primary-fg)]",secondary:"hl-muted text-[var(--text-muted)] border hl-border",outline:"border hl-border text-[var(--text-muted)] bg-[var(--bg-card)]",accent:"bg-[var(--accent-soft)] text-[var(--accent)] font-semibold",success:"bg-[var(--success-soft)] text-[var(--success)] font-semibold"}},defaultVariants:{variant:"secondary"}});function Jn({className:i,variant:r,...c}){return h.jsx("div",{className:Qe(YC({variant:r}),i),...c})}var Y0=1,VC=.9,QC=.8,XC=.17,gf=.1,yf=.999,ZC=.9999,KC=.99,IC=/[\\\/_+.#"@\[\(\{&]/,JC=/[\\\/_+.#"@\[\(\{&]/g,FC=/[\s-]/,H1=/[\s-]/g;function td(i,r,c,o,s,f,m){if(f===r.length)return s===i.length?Y0:KC;var v=`${s},${f}`;if(m[v]!==void 0)return m[v];for(var p=o.charAt(f),b=c.indexOf(p,s),S=0,y,E,A,j;b>=0;)y=td(i,r,c,o,b+1,f+1,m),y>S&&(b===s?y*=Y0:IC.test(i.charAt(b-1))?(y*=QC,A=i.slice(s,b-1).match(JC),A&&s>0&&(y*=Math.pow(yf,A.length))):FC.test(i.charAt(b-1))?(y*=VC,j=i.slice(s,b-1).match(H1),j&&s>0&&(y*=Math.pow(yf,j.length))):(y*=XC,s>0&&(y*=Math.pow(yf,b-s))),i.charAt(b)!==r.charAt(f)&&(y*=ZC)),(yy&&(y=E*gf)),y>S&&(S=y),b=c.indexOf(p,b+1);return m[v]=S,S}function V0(i){return i.toLowerCase().replace(H1," ")}function PC(i,r,c){return i=c&&c.length>0?`${i+" "+c.join(" ")}`:i,td(i,r,V0(i),V0(r),0,0,{})}var $C=Object.defineProperty,ft=(i,r)=>$C(i,"name",{value:r,configurable:!0}),nd="dismissableLayer.update",WC="dismissableLayer.pointerDownOutside",e4="dismissableLayer.focusOutside",Q0,L1=x.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set,dismissableSurfaces:new Set}),t4=x.forwardRef(ft(function(r,c){const{disableOutsidePointerEvents:o=!1,deferPointerDownOutside:s=!1,onEscapeKeyDown:f,onPointerDownOutside:m,onFocusOutside:v,onInteractOutside:p,onDismiss:b,...S}=r,y=x.useContext(L1),[E,A]=x.useState(null),j=(E==null?void 0:E.ownerDocument)??(globalThis==null?void 0:globalThis.document),[,D]=x.useState({}),L=zt(c,A),Y=Array.from(y.layers),[G]=[...y.layersWithOutsidePointerEventsDisabled].slice(-1),k=G?Y.indexOf(G):-1,V=E?Y.indexOf(E):-1,I=y.layersWithOutsidePointerEventsDisabled.size>0,R=V>=k,T=x.useRef(!1),z=G1(P=>{m==null||m(P),p==null||p(P),P.defaultPrevented||b==null||b()},{ownerDocument:j,deferPointerDownOutside:s,isDeferredPointerDownOutsideRef:T,dismissableSurfaces:y.dismissableSurfaces,shouldHandlePointerDownOutside:x.useCallback(P=>{if(!(P instanceof Node))return!1;const ne=[...y.branches].some(ue=>ue.contains(P));return R&&!ne},[y.branches,R])}),Z=Y1(P=>{if(s&&T.current)return;const ne=P.target;[...y.branches].some(ge=>ge.contains(ne))||(v==null||v(P),p==null||p(P),P.defaultPrevented||b==null||b())},j),te=E?V===Y.length-1:!1,W=oa(P=>{P.key==="Escape"&&(f==null||f(P),!P.defaultPrevented&&b&&(P.preventDefault(),b()))});return x.useEffect(()=>{if(te)return j.addEventListener("keydown",W,{capture:!0}),()=>j.removeEventListener("keydown",W,{capture:!0})},[j,te,W]),x.useEffect(()=>{if(E)return o&&(y.layersWithOutsidePointerEventsDisabled.size===0&&(Q0=j.body.style.pointerEvents,j.body.style.pointerEvents="none"),y.layersWithOutsidePointerEventsDisabled.add(E)),y.layers.add(E),ld(),()=>{o&&(y.layersWithOutsidePointerEventsDisabled.delete(E),y.layersWithOutsidePointerEventsDisabled.size===0&&(j.body.style.pointerEvents=Q0))}},[E,j,o,y]),x.useEffect(()=>()=>{E&&(y.layers.delete(E),y.layersWithOutsidePointerEventsDisabled.delete(E),ld())},[E,y]),x.useEffect(()=>{const P=ft(()=>D({}),"handleUpdate");return document.addEventListener(nd,P),()=>document.removeEventListener(nd,P)},[]),h.jsx(Ke.div,{...S,ref:L,style:{pointerEvents:I?R?"auto":"none":void 0,...r.style},onFocusCapture:dt(r.onFocusCapture,Z.onFocusCapture),onBlurCapture:dt(r.onBlurCapture,Z.onBlurCapture),onPointerDownCapture:dt(r.onPointerDownCapture,z.onPointerDownCapture)})},"DismissableLayer"));function q1(){const i=x.useContext(L1),[r,c]=x.useState(null);return x.useEffect(()=>{if(r)return i.dismissableSurfaces.add(r),()=>{i.dismissableSurfaces.delete(r)}},[r,i.dismissableSurfaces]),c}ft(q1,"useDismissableLayerSurface");var n4=ft(()=>!0,"IS_TRUE");function G1(i,r){const{ownerDocument:c=globalThis==null?void 0:globalThis.document,deferPointerDownOutside:o=!1,isDeferredPointerDownOutsideRef:s,dismissableSurfaces:f,shouldHandlePointerDownOutside:m=n4}=r,v=oa(i),p=x.useRef(!1),b=x.useRef(!1),S=x.useRef(new Map),y=x.useRef(()=>{});return x.useEffect(()=>{function E(){b.current=!1,s.current=!1,S.current.clear()}ft(E,"resetOutsideInteraction");function A(){return Array.from(S.current.values()).some(Boolean)}ft(A,"isOutsideInteractionIntercepted");function j(k){if(!b.current)return;const V=k.target;V instanceof Node&&[...f].some(R=>R.contains(V))||S.current.set(k.type,!0),k.type==="click"&&window.setTimeout(()=>{b.current&&y.current()},0)}ft(j,"handleInteractionCapture");function D(k){b.current&&S.current.set(k.type,!1)}ft(D,"handleInteractionBubble");const L=ft(k=>{if(k.target&&!p.current){let V=function(){c.removeEventListener("click",y.current);const R=A();E(),R||Td(WC,v,I,{discrete:!0})};if(ft(V,"handleAndDispatchPointerDownOutsideEvent"),!m(k.target)){c.removeEventListener("click",y.current),E(),p.current=!1;return}const I={originalEvent:k};b.current=!0,s.current=o&&k.button===0,S.current.clear(),!o||k.button!==0?V():(c.removeEventListener("click",y.current),y.current=V,c.addEventListener("click",y.current,{once:!0}))}else c.removeEventListener("click",y.current),E();p.current=!1},"handlePointerDown"),Y=["pointerup","mousedown","mouseup","touchstart","touchend","click"];for(const k of Y)c.addEventListener(k,j,!0),c.addEventListener(k,D);const G=window.setTimeout(()=>{c.addEventListener("pointerdown",L)},0);return()=>{window.clearTimeout(G),c.removeEventListener("pointerdown",L),c.removeEventListener("click",y.current);for(const k of Y)c.removeEventListener(k,j,!0),c.removeEventListener(k,D)}},[c,v,o,s,f,m]),{onPointerDownCapture:ft(()=>p.current=!0,"onPointerDownCapture")}}ft(G1,"usePointerDownOutside");function Y1(i,r=globalThis==null?void 0:globalThis.document){const c=oa(i),o=x.useRef(!1);return x.useEffect(()=>{const s=ft(f=>{f.target&&!o.current&&Td(e4,c,{originalEvent:f},{discrete:!1})},"handleFocus");return r.addEventListener("focusin",s),()=>r.removeEventListener("focusin",s)},[r,c]),{onFocusCapture:ft(()=>o.current=!0,"onFocusCapture"),onBlurCapture:ft(()=>o.current=!1,"onBlurCapture")}}ft(Y1,"useFocusOutside");function ld(){const i=new CustomEvent(nd);document.dispatchEvent(i)}ft(ld,"dispatchUpdate");function Td(i,r,c,{discrete:o}){const s=c.originalEvent.target,f=new CustomEvent(i,{bubbles:!1,cancelable:!0,detail:c});r&&s.addEventListener(i,r,{once:!0}),o?h1(s,f):s.dispatchEvent(f)}ft(Td,"handleAndDispatchCustomEvent");var l4=Object.defineProperty,lt=(i,r)=>l4(i,"name",{value:r,configurable:!0}),pf="focusScope.autoFocusOnMount",bf="focusScope.autoFocusOnUnmount",X0={bubbles:!1,cancelable:!0},a4=x.forwardRef(lt(function(r,c){const{loop:o=!1,trapped:s=!1,branches:f,onMountAutoFocus:m,onUnmountAutoFocus:v,...p}=r,[b,S]=x.useState(null),y=oa(m),E=oa(v),A=x.useRef(null),j=zt(c,S),D=x.useRef(f);x.useEffect(()=>{D.current=f});const L=x.useCallback(k=>{var V;return k?b!=null&&b.contains(k)?!0:!!((V=D.current)!=null&&V.some(I=>I.contains(k))):!1},[b]),Y=x.useRef({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;x.useEffect(()=>{if(s){let k=function(T){if(Y.paused||!b)return;const z=T.target;L(z)?A.current=z:In(A.current,{select:!0})},V=function(T){if(Y.paused||!b)return;const z=T.relatedTarget;z!==null&&(L(z)||In(A.current,{select:!0}))},I=function(T){if(document.activeElement===document.body)for(const Z of T)Z.removedNodes.length>0&&In(b)};lt(k,"handleFocusIn"),lt(V,"handleFocusOut"),lt(I,"handleMutations"),document.addEventListener("focusin",k),document.addEventListener("focusout",V);const R=new MutationObserver(I);return b&&R.observe(b,{childList:!0,subtree:!0}),()=>{document.removeEventListener("focusin",k),document.removeEventListener("focusout",V),R.disconnect()}}},[s,b,Y.paused,L]),x.useEffect(()=>{if(b){Z0.add(Y);const k=document.activeElement;if(!b.contains(k)){const I=new CustomEvent(pf,X0);b.addEventListener(pf,y),b.dispatchEvent(I),I.defaultPrevented||(Z1(P1(_d(b)),{select:!0}),document.activeElement===k&&In(b))}return()=>{b.removeEventListener(pf,y);const I=b.ownerDocument,R=CustomEvent;setTimeout(()=>{const T=new R(bf,X0);b.addEventListener(bf,E),b.dispatchEvent(T),T.defaultPrevented||In(k??I.body,{select:!0}),b.removeEventListener(bf,E),Z0.remove(Y)},0)}}},[b,y,E,Y]);const G=x.useCallback(k=>{if(!o&&!s||Y.paused)return;const V=k.key==="Tab"&&!k.altKey&&!k.ctrlKey&&!k.metaKey,I=document.activeElement;if(V&&I){const R=k.currentTarget,[T,z]=K1(R);T&&z?!k.shiftKey&&I===z?(k.preventDefault(),o&&In(T,{select:!0})):k.shiftKey&&I===T&&(k.preventDefault(),o&&In(z,{select:!0})):I===R&&k.preventDefault()}},[o,s,Y.paused]);return h.jsx(Ke.div,{tabIndex:-1,...p,ref:j,onKeyDown:G})},"FocusScope")),V1=x.createContext(null);function Q1({registry:i,children:r}){return i?h.jsx(V1.Provider,{value:i,children:r}):r}lt(Q1,"FocusScopeBranchProvider");function X1(){const[i,r]=x.useState([]),c=x.useMemo(()=>({add:lt(o=>r(s=>s.includes(o)?s:[...s,o]),"add"),remove:lt(o=>r(s=>s.filter(f=>f!==o)),"remove")}),[]);return{nodes:i,registry:c}}lt(X1,"useFocusScopeBranchRegistry");function i4(i){const r=x.useContext(V1);x.useEffect(()=>{if(!(!i||!r))return r.add(i),()=>r.remove(i)},[i,r])}lt(i4,"useFocusScopeBranch");function Z1(i,{select:r=!1}={}){const c=document.activeElement;for(const o of i)if(In(o,{select:r}),document.activeElement!==c)return}lt(Z1,"focusFirst");function K1(i){const r=_d(i),c=ad(r,i),o=ad(r.reverse(),i);return[c,o]}lt(K1,"getTabbableEdges");function _d(i){const r=[],o=i.ownerDocument.createTreeWalker(i,NodeFilter.SHOW_ELEMENT,{acceptNode:lt(s=>{const f=s.tagName==="INPUT"&&s.type==="hidden";return s.disabled||s.hidden||f?NodeFilter.FILTER_SKIP:s.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP},"acceptNode")});for(;o.nextNode();)r.push(o.currentNode);return r}lt(_d,"getTabbableCandidates");function ad(i,r){const c=typeof r.checkVisibility=="function"&&r.checkVisibility({checkVisibilityCSS:!0});for(const o of i)if(!(c?!o.checkVisibility({checkVisibilityCSS:!0}):I1(o,{upTo:r})))return o}lt(ad,"findVisible");function I1(i,{upTo:r}){if(getComputedStyle(i).visibility==="hidden")return!0;for(;i;){if(r!==void 0&&i===r)return!1;if(getComputedStyle(i).display==="none")return!0;i=i.parentElement}return!1}lt(I1,"isHidden");function J1(i){return i.tagName==="INPUT"&&typeof i.select=="function"}lt(J1,"isSelectableInput");function In(i,{select:r=!1}={}){if(i&&i.focus){const o=(i.ownerDocument??document).activeElement;i.focus({preventScroll:!0}),i!==o&&J1(i)&&r&&i.select()}}lt(In,"focus");var Z0=F1();function F1(){let i=[];return{add(r){const c=i[0];r!==c&&(c==null||c.pause()),i=id(i,r),i.unshift(r)},remove(r){var c;i=id(i,r),(c=i[0])==null||c.resume()}}}lt(F1,"createFocusScopesStack");function id(i,r){const c=[...i],o=c.indexOf(r);return o!==-1&&c.splice(o,1),c}lt(id,"arrayRemove");function P1(i){return i.filter(r=>r.tagName!=="A")}lt(P1,"removeLinks");var u4=Object.defineProperty,r4=(i,r)=>u4(i,"name",{value:r,configurable:!0}),o4=x.forwardRef(r4(function(r,c){var p;const{container:o,...s}=r,[f,m]=x.useState(!1);un(()=>m(!0),[]);const v=o||f&&((p=globalThis==null?void 0:globalThis.document)==null?void 0:p.body);return v?m1.createPortal(h.jsx(Ke.div,{...s,ref:c}),v):null},"Portal")),c4=Object.defineProperty,Ad=(i,r)=>c4(i,"name",{value:r,configurable:!0}),to=0,Rn=null;function s4(i){return Rd(),i.children}Ad(s4,"FocusGuards");function Rd(){x.useEffect(()=>{Rn||(Rn={start:ud(),end:ud()});const{start:i,end:r}=Rn;return document.body.firstElementChild!==i&&document.body.insertAdjacentElement("afterbegin",i),document.body.lastElementChild!==r&&document.body.insertAdjacentElement("beforeend",r),to++,()=>{to===1&&(Rn==null||Rn.start.remove(),Rn==null||Rn.end.remove(),Rn=null),to=Math.max(0,to-1)}},[])}Ad(Rd,"useFocusGuards");function ud(){const i=document.createElement("span");return i.setAttribute("data-radix-focus-guard",""),i.tabIndex=0,i.style.outline="none",i.style.opacity="0",i.style.position="fixed",i.style.pointerEvents="none",i}Ad(ud,"createFocusGuard");var On=function(){return On=Object.assign||function(r){for(var c,o=1,s=arguments.length;o"u")return _4;var r=A4(i),c=document.documentElement.clientWidth,o=window.innerWidth;return{left:r[0],top:r[1],right:r[2],gap:Math.max(0,o-c+r[2]-r[0])}},j4=tp(),hi="data-scroll-locked",O4=function(i,r,c,o){var s=i.left,f=i.top,m=i.right,v=i.gap;return c===void 0&&(c="margin"),` - .`.concat(d4,` { - overflow: hidden `).concat(o,`; - padding-right: `).concat(v,"px ").concat(o,`; - } - body[`).concat(hi,`] { - overflow: hidden `).concat(o,`; - overscroll-behavior: contain; - `).concat([r&&"position: relative ".concat(o,";"),c==="margin"&&` - padding-left: `.concat(s,`px; - padding-top: `).concat(f,`px; - padding-right: `).concat(m,`px; - margin-left:0; - margin-top:0; - margin-right: `).concat(v,"px ").concat(o,`; - `),c==="padding"&&"padding-right: ".concat(v,"px ").concat(o,";")].filter(Boolean).join(""),` - } - - .`).concat(co,` { - right: `).concat(v,"px ").concat(o,`; - } - - .`).concat(so,` { - margin-right: `).concat(v,"px ").concat(o,`; - } - - .`).concat(co," .").concat(co,` { - right: 0 `).concat(o,`; - } - - .`).concat(so," .").concat(so,` { - margin-right: 0 `).concat(o,`; - } - - body[`).concat(hi,`] { - `).concat(m4,": ").concat(v,`px; - } -`)},I0=function(){var i=parseInt(document.body.getAttribute(hi)||"0",10);return isFinite(i)?i:0},M4=function(){x.useEffect(function(){return document.body.setAttribute(hi,(I0()+1).toString()),function(){var i=I0()-1;i<=0?document.body.removeAttribute(hi):document.body.setAttribute(hi,i.toString())}},[])},z4=function(i){var r=i.noRelative,c=i.noImportant,o=i.gapMode,s=o===void 0?"margin":o;M4();var f=x.useMemo(function(){return R4(s)},[s]);return x.createElement(j4,{styles:O4(f,!r,s,c?"":"!important")})},rd=!1;if(typeof window<"u")try{var no=Object.defineProperty({},"passive",{get:function(){return rd=!0,!0}});window.addEventListener("test",no,no),window.removeEventListener("test",no,no)}catch{rd=!1}var ri=rd?{passive:!1}:!1,D4=function(i){return i.tagName==="TEXTAREA"},np=function(i,r){if(!(i instanceof Element))return!1;var c=window.getComputedStyle(i);return c[r]!=="hidden"&&!(c.overflowY===c.overflowX&&!D4(i)&&c[r]==="visible")},U4=function(i){return np(i,"overflowY")},B4=function(i){return np(i,"overflowX")},J0=function(i,r){var c=r.ownerDocument,o=r;do{typeof ShadowRoot<"u"&&o instanceof ShadowRoot&&(o=o.host);var s=lp(i,o);if(s){var f=ap(i,o),m=f[1],v=f[2];if(m>v)return!0}o=o.parentNode}while(o&&o!==c.body);return!1},k4=function(i){var r=i.scrollTop,c=i.scrollHeight,o=i.clientHeight;return[r,c,o]},H4=function(i){var r=i.scrollLeft,c=i.scrollWidth,o=i.clientWidth;return[r,c,o]},lp=function(i,r){return i==="v"?U4(r):B4(r)},ap=function(i,r){return i==="v"?k4(r):H4(r)},L4=function(i,r){return i==="h"&&r==="rtl"?-1:1},q4=function(i,r,c,o,s){var f=L4(i,window.getComputedStyle(r).direction),m=f*o,v=c.target,p=r.contains(v),b=!1,S=m>0,y=0,E=0;do{if(!v)break;var A=ap(i,v),j=A[0],D=A[1],L=A[2],Y=D-L-f*j;(j||Y)&&lp(i,v)&&(y+=Y,E+=j);var G=v.parentNode;v=G&&G.nodeType===Node.DOCUMENT_FRAGMENT_NODE?G.host:G}while(!p&&v!==document.body||p&&(r.contains(v)||r===v));return(S&&Math.abs(y)<1||!S&&Math.abs(E)<1)&&(b=!0),b},lo=function(i){return"changedTouches"in i?[i.changedTouches[0].clientX,i.changedTouches[0].clientY]:[0,0]},F0=function(i){return[i.deltaX,i.deltaY]},P0=function(i){return i&&"current"in i?i.current:i},G4=function(i,r){return i[0]===r[0]&&i[1]===r[1]},Y4=function(i){return` - .block-interactivity-`.concat(i,` {pointer-events: none;} - .allow-interactivity-`).concat(i,` {pointer-events: all;} -`)},V4=0,oi=[];function Q4(i){var r=x.useRef([]),c=x.useRef([0,0]),o=x.useRef(),s=x.useState(V4++)[0],f=x.useState(tp)[0],m=x.useRef(i);x.useEffect(function(){m.current=i},[i]),x.useEffect(function(){if(i.inert){document.body.classList.add("block-interactivity-".concat(s));var D=f4([i.lockRef.current],(i.shards||[]).map(P0),!0).filter(Boolean);return D.forEach(function(L){return L.classList.add("allow-interactivity-".concat(s))}),function(){document.body.classList.remove("block-interactivity-".concat(s)),D.forEach(function(L){return L.classList.remove("allow-interactivity-".concat(s))})}}},[i.inert,i.lockRef.current,i.shards]);var v=x.useCallback(function(D,L){if("touches"in D&&D.touches.length===2||D.type==="wheel"&&D.ctrlKey)return!m.current.allowPinchZoom;var Y=lo(D),G=c.current,k="deltaX"in D?D.deltaX:G[0]-Y[0],V="deltaY"in D?D.deltaY:G[1]-Y[1],I,R=D.target,T=Math.abs(k)>Math.abs(V)?"h":"v";if("touches"in D&&T==="h"&&R.type==="range")return!1;var z=window.getSelection(),Z=z&&z.anchorNode,te=Z?Z===R||Z.contains(R):!1;if(te)return!1;var W=J0(T,R);if(!W)return!0;if(W?I=T:(I=T==="v"?"h":"v",W=J0(T,R)),!W)return!1;if(!o.current&&"changedTouches"in D&&(k||V)&&(o.current=I),!I)return!0;var P=o.current||I;return q4(P,L,D,P==="h"?k:V)},[]),p=x.useCallback(function(D){var L=D;if(!(!oi.length||oi[oi.length-1]!==f)){var Y="deltaY"in L?F0(L):lo(L),G=r.current.filter(function(I){return I.name===L.type&&(I.target===L.target||L.target===I.shadowParent)&&G4(I.delta,Y)})[0];if(G&&G.should){L.cancelable&&L.preventDefault();return}if(!G){var k=(m.current.shards||[]).map(P0).filter(Boolean).filter(function(I){return I.contains(L.target)}),V=k.length>0?v(L,k[0]):!m.current.noIsolation;V&&L.cancelable&&L.preventDefault()}}},[]),b=x.useCallback(function(D,L,Y,G){var k={name:D,delta:L,target:Y,should:G,shadowParent:X4(Y)};r.current.push(k),setTimeout(function(){r.current=r.current.filter(function(V){return V!==k})},1)},[]),S=x.useCallback(function(D){c.current=lo(D),o.current=void 0},[]),y=x.useCallback(function(D){b(D.type,F0(D),D.target,v(D,i.lockRef.current))},[]),E=x.useCallback(function(D){b(D.type,lo(D),D.target,v(D,i.lockRef.current))},[]);x.useEffect(function(){return oi.push(f),i.setCallbacks({onScrollCapture:y,onWheelCapture:y,onTouchMoveCapture:E}),document.addEventListener("wheel",p,ri),document.addEventListener("touchmove",p,ri),document.addEventListener("touchstart",S,ri),function(){oi=oi.filter(function(D){return D!==f}),document.removeEventListener("wheel",p,ri),document.removeEventListener("touchmove",p,ri),document.removeEventListener("touchstart",S,ri)}},[]);var A=i.removeScrollBar,j=i.inert;return x.createElement(x.Fragment,null,j?x.createElement(f,{styles:Y4(s)}):null,A?x.createElement(z4,{noRelative:i.noRelative,gapMode:i.gapMode}):null)}function X4(i){for(var r=null;i!==null;)i instanceof ShadowRoot&&(r=i.host,i=i.host),i=i.parentNode;return r}const Z4=x4(ep,Q4);var ip=x.forwardRef(function(i,r){return x.createElement(xo,On({},i,{ref:r,sideCar:Z4}))});ip.classNames=xo.classNames;var K4=function(i){if(typeof document>"u")return null;var r=Array.isArray(i)?i[0]:i;return r.ownerDocument.body},ci=new WeakMap,ao=new WeakMap,io={},Cf=0,up=function(i){return i&&(i.host||up(i.parentNode))},I4=function(i,r){return r.map(function(c){if(i.contains(c))return c;var o=up(c);return o&&i.contains(o)?o:(console.error("aria-hidden",c,"in not contained inside",i,". Doing nothing"),null)}).filter(function(c){return!!c})},J4=function(i,r,c,o){var s=I4(r,Array.isArray(i)?i:[i]);io[c]||(io[c]=new WeakMap);var f=io[c],m=[],v=new Set,p=new Set(s),b=function(y){!y||v.has(y)||(v.add(y),b(y.parentNode))};s.forEach(b);var S=function(y){!y||p.has(y)||Array.prototype.forEach.call(y.children,function(E){if(v.has(E))S(E);else try{var A=E.getAttribute(o),j=A!==null&&A!=="false",D=(ci.get(E)||0)+1,L=(f.get(E)||0)+1;ci.set(E,D),f.set(E,L),m.push(E),D===1&&j&&ao.set(E,!0),L===1&&E.setAttribute(c,"true"),j||E.setAttribute(o,"true")}catch(Y){console.error("aria-hidden: cannot operate on ",E,Y)}})};return S(r),v.clear(),Cf++,function(){m.forEach(function(y){var E=ci.get(y)-1,A=f.get(y)-1;ci.set(y,E),f.set(y,A),E||(ao.has(y)||y.removeAttribute(o),ao.delete(y)),A||y.removeAttribute(c)}),Cf--,Cf||(ci=new WeakMap,ci=new WeakMap,ao=new WeakMap,io={})}},F4=function(i,r,c){c===void 0&&(c="data-aria-hidden");var o=Array.from(Array.isArray(i)?i:[i]),s=K4(i);return s?(o.push.apply(o,Array.from(s.querySelectorAll("[aria-live], script"))),J4(o,s,c,"aria-hidden")):function(){return null}},P4=Object.defineProperty,rn=(i,r)=>P4(i,"name",{value:r,configurable:!0}),jd="Dialog",[rp,mN]=da(jd),[$4,$n]=rp(jd),op=rn(i=>{const{__scopeDialog:r,children:c,open:o,defaultOpen:s,onOpenChange:f,modal:m=!0}=i,v=x.useRef(null),p=x.useRef(null),{nodes:b,registry:S}=X1(),[y,E]=bu({prop:o,defaultProp:s??!1,onChange:f,caller:jd}),[A,j]=x.useState(0),[D,L]=x.useState(0);return h.jsx($4,{scope:r,triggerRef:v,contentRef:p,contentId:an(),titleId:an(),descriptionId:an(),titlePresent:A>0,descriptionPresent:D>0,setTitleCount:j,setDescriptionCount:L,open:y,onOpenChange:E,onOpenToggle:x.useCallback(()=>E(Y=>!Y),[E]),modal:m,branchNodes:b,branchRegistry:S,children:c})},"Dialog"),cp="DialogPortal",[W4,sp]=rp(cp,{forceMount:void 0}),fp=rn(i=>{const{__scopeDialog:r,forceMount:c,children:o,container:s}=i,f=$n(cp,r);return h.jsx(W4,{scope:r,forceMount:c,children:x.Children.map(o,m=>h.jsx(bo,{present:c||f.open,children:h.jsx(o4,{asChild:!0,container:s,children:m})}))})},"DialogPortal"),od="DialogOverlay",Od=x.forwardRef(rn(function(r,c){const o=sp(od,r.__scopeDialog),{forceMount:s=o.forceMount,...f}=r,m=$n(od,r.__scopeDialog);return m.modal?h.jsx(bo,{present:s||m.open,children:h.jsx(t3,{...f,ref:c})}):null},"DialogOverlay")),e3=Ml("DialogOverlay.RemoveScroll"),t3=x.forwardRef(rn(function(r,c){const{__scopeDialog:o,...s}=r,f=$n(od,o),m=q1(),v=zt(c,m);return h.jsx(ip,{as:e3,allowPinchZoom:!0,shards:x.useMemo(()=>[f.contentRef,...f.branchNodes.map(p=>({current:p}))],[f.contentRef,f.branchNodes]),children:h.jsx(Ke.div,{"data-state":zd(f.open),...s,ref:v,style:{pointerEvents:"auto",...s.style}})})},"DialogOverlayImpl")),yu="DialogContent",Md=x.forwardRef(rn(function(r,c){const o=sp(yu,r.__scopeDialog),{forceMount:s=o.forceMount,...f}=r,m=$n(yu,r.__scopeDialog);return h.jsx(bo,{present:s||m.open,children:m.modal?h.jsx(n3,{...f,ref:c}):h.jsx(l3,{...f,ref:c})})},"DialogContent")),n3=x.forwardRef(rn(function(r,c){const o=$n(yu,r.__scopeDialog),s=x.useRef(null),f=zt(c,o.contentRef,s);return x.useEffect(()=>{const m=s.current;if(m)return F4(m)},[]),h.jsx(dp,{...r,ref:f,trapFocus:o.open,disableOutsidePointerEvents:o.open,onCloseAutoFocus:dt(r.onCloseAutoFocus,m=>{var v;m.preventDefault(),(v=o.triggerRef.current)==null||v.focus()}),onPointerDownOutside:dt(r.onPointerDownOutside,m=>{const v=m.detail.originalEvent,p=v.button===0&&v.ctrlKey===!0;(v.button===2||p)&&m.preventDefault()}),onFocusOutside:dt(r.onFocusOutside,m=>m.preventDefault())})},"DialogContentModal")),l3=x.forwardRef(rn(function(r,c){const o=$n(yu,r.__scopeDialog),s=x.useRef(!1),f=x.useRef(!1);return h.jsx(dp,{...r,ref:c,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:m=>{var v,p;(v=r.onCloseAutoFocus)==null||v.call(r,m),m.defaultPrevented||(s.current||(p=o.triggerRef.current)==null||p.focus(),m.preventDefault()),s.current=!1,f.current=!1},onInteractOutside:m=>{var b,S;(b=r.onInteractOutside)==null||b.call(r,m),m.defaultPrevented||(s.current=!0,m.detail.originalEvent.type==="pointerdown"&&(f.current=!0));const v=m.target;((S=o.triggerRef.current)==null?void 0:S.contains(v))&&m.preventDefault(),m.detail.originalEvent.type==="focusin"&&f.current&&m.preventDefault()}})},"DialogContentNonModal")),dp=x.forwardRef(rn(function(r,c){const{__scopeDialog:o,trapFocus:s,onOpenAutoFocus:f,onCloseAutoFocus:m,"aria-describedby":v,children:p,...b}=r,S=$n(yu,o);return Rd(),h.jsx(Q1,{registry:S.branchRegistry,children:h.jsx(a4,{asChild:!0,loop:!0,trapped:s,branches:S.branchNodes,onMountAutoFocus:f,onUnmountAutoFocus:m,children:h.jsx(t4,{role:"dialog",id:S.contentId,"aria-labelledby":S.titlePresent?S.titleId:void 0,"aria-describedby":S.descriptionPresent?vp(v,S.descriptionId):v,"data-state":zd(S.open),...b,ref:c,deferPointerDownOutside:!0,onDismiss:()=>S.onOpenChange(!1),children:p})})})},"DialogContentImpl")),mp=x.forwardRef(rn(function(r,c){const{__scopeDialog:o,...s}=r,f=$n("DialogTitle",o),{setTitleCount:m}=f;return un(()=>(m(v=>v+1),()=>m(v=>v-1)),[m]),h.jsx(Ke.h2,{id:f.titleId,...s,ref:c})},"DialogTitle")),hp=x.forwardRef(rn(function(r,c){const{__scopeDialog:o,...s}=r,f=$n("DialogDescription",o),{setDescriptionCount:m}=f;return un(()=>(m(v=>v+1),()=>m(v=>v-1)),[m]),h.jsx(Ke.p,{id:f.descriptionId,...s,ref:c})},"DialogDescription"));function vp(...i){const r=new Set;for(const c of i)if(typeof c=="string")for(const o of String(c).trim().split(/\s+/))o&&r.add(o);return r.size>0?Array.from(r).join(" "):void 0}rn(vp,"concatAriaDescribedby");function zd(i){return i?"open":"closed"}rn(zd,"getState");var hu='[cmdk-group=""]',Nf='[cmdk-group-items=""]',a3='[cmdk-group-heading=""]',gp='[cmdk-item=""]',$0=`${gp}:not([aria-disabled="true"])`,cd="cmdk-item-select",di="data-value",i3=(i,r,c)=>PC(i,r,c),yp=x.createContext(void 0),xu=()=>x.useContext(yp),pp=x.createContext(void 0),Dd=()=>x.useContext(pp),bp=x.createContext(void 0),xp=x.forwardRef((i,r)=>{let c=mi(()=>{var J,me;return{search:"",value:(me=(J=i.value)!=null?J:i.defaultValue)!=null?me:"",selectedItemId:void 0,filtered:{count:0,items:new Map,groups:new Set}}}),o=mi(()=>new Set),s=mi(()=>new Map),f=mi(()=>new Map),m=mi(()=>new Set),v=Sp(i),{label:p,children:b,value:S,onValueChange:y,filter:E,shouldFilter:A,loop:j,disablePointerSelection:D=!1,vimBindings:L=!0,...Y}=i,G=an(),k=an(),V=an(),I=x.useRef(null),R=g3();ca(()=>{if(S!==void 0){let J=S.trim();c.current.value=J,T.emit()}},[S]),ca(()=>{R(6,ne)},[]);let T=x.useMemo(()=>({subscribe:J=>(m.current.add(J),()=>m.current.delete(J)),snapshot:()=>c.current,setState:(J,me,N)=>{var U,$,ee,he;if(!Object.is(c.current[J],me)){if(c.current[J]=me,J==="search")P(),te(),R(1,W);else if(J==="value"){if(document.activeElement.hasAttribute("cmdk-input")||document.activeElement.hasAttribute("cmdk-root")){let ie=document.getElementById(V);ie?ie.focus():(U=document.getElementById(G))==null||U.focus()}if(R(7,()=>{var ie;c.current.selectedItemId=(ie=ue())==null?void 0:ie.id,T.emit()}),N||R(5,ne),(($=v.current)==null?void 0:$.value)!==void 0){let ie=me??"";(he=(ee=v.current).onValueChange)==null||he.call(ee,ie);return}}T.emit()}},emit:()=>{m.current.forEach(J=>J())}}),[]),z=x.useMemo(()=>({value:(J,me,N)=>{var U;me!==((U=f.current.get(J))==null?void 0:U.value)&&(f.current.set(J,{value:me,keywords:N}),c.current.filtered.items.set(J,Z(me,N)),R(2,()=>{te(),T.emit()}))},item:(J,me)=>(o.current.add(J),me&&(s.current.has(me)?s.current.get(me).add(J):s.current.set(me,new Set([J]))),R(3,()=>{P(),te(),c.current.value||W(),T.emit()}),()=>{f.current.delete(J),o.current.delete(J),c.current.filtered.items.delete(J);let N=ue();R(4,()=>{P(),(N==null?void 0:N.getAttribute("id"))===J&&W(),T.emit()})}),group:J=>(s.current.has(J)||s.current.set(J,new Set),()=>{f.current.delete(J),s.current.delete(J)}),filter:()=>v.current.shouldFilter,label:p||i["aria-label"],getDisablePointerSelection:()=>v.current.disablePointerSelection,listId:G,inputId:V,labelId:k,listInnerRef:I}),[]);function Z(J,me){var N,U;let $=(U=(N=v.current)==null?void 0:N.filter)!=null?U:i3;return J?$(J,c.current.search,me):0}function te(){if(!c.current.search||v.current.shouldFilter===!1)return;let J=c.current.filtered.items,me=[];c.current.filtered.groups.forEach(U=>{let $=s.current.get(U),ee=0;$.forEach(he=>{let ie=J.get(he);ee=Math.max(ie,ee)}),me.push([U,ee])});let N=I.current;ge().sort((U,$)=>{var ee,he;let ie=U.getAttribute("id"),Ee=$.getAttribute("id");return((ee=J.get(Ee))!=null?ee:0)-((he=J.get(ie))!=null?he:0)}).forEach(U=>{let $=U.closest(Nf);$?$.appendChild(U.parentElement===$?U:U.closest(`${Nf} > *`)):N.appendChild(U.parentElement===N?U:U.closest(`${Nf} > *`))}),me.sort((U,$)=>$[1]-U[1]).forEach(U=>{var $;let ee=($=I.current)==null?void 0:$.querySelector(`${hu}[${di}="${encodeURIComponent(U[0])}"]`);ee==null||ee.parentElement.appendChild(ee)})}function W(){let J=ge().find(N=>N.getAttribute("aria-disabled")!=="true"),me=J==null?void 0:J.getAttribute(di);T.setState("value",me||void 0)}function P(){var J,me,N,U;if(!c.current.search||v.current.shouldFilter===!1){c.current.filtered.count=o.current.size;return}c.current.filtered.groups=new Set;let $=0;for(let ee of o.current){let he=(me=(J=f.current.get(ee))==null?void 0:J.value)!=null?me:"",ie=(U=(N=f.current.get(ee))==null?void 0:N.keywords)!=null?U:[],Ee=Z(he,ie);c.current.filtered.items.set(ee,Ee),Ee>0&&$++}for(let[ee,he]of s.current)for(let ie of he)if(c.current.filtered.items.get(ie)>0){c.current.filtered.groups.add(ee);break}c.current.filtered.count=$}function ne(){var J,me,N;let U=ue();U&&(((J=U.parentElement)==null?void 0:J.firstChild)===U&&((N=(me=U.closest(hu))==null?void 0:me.querySelector(a3))==null||N.scrollIntoView({block:"nearest"})),U.scrollIntoView({block:"nearest"}))}function ue(){var J;return(J=I.current)==null?void 0:J.querySelector(`${gp}[aria-selected="true"]`)}function ge(){var J;return Array.from(((J=I.current)==null?void 0:J.querySelectorAll($0))||[])}function F(J){let me=ge()[J];me&&T.setState("value",me.getAttribute(di))}function ae(J){var me;let N=ue(),U=ge(),$=U.findIndex(he=>he===N),ee=U[$+J];(me=v.current)!=null&&me.loop&&(ee=$+J<0?U[U.length-1]:$+J===U.length?U[0]:U[$+J]),ee&&T.setState("value",ee.getAttribute(di))}function ce(J){let me=ue(),N=me==null?void 0:me.closest(hu),U;for(;N&&!U;)N=J>0?h3(N,hu):v3(N,hu),U=N==null?void 0:N.querySelector($0);U?T.setState("value",U.getAttribute(di)):ae(J)}let xe=()=>F(ge().length-1),K=J=>{J.preventDefault(),J.metaKey?xe():J.altKey?ce(1):ae(1)},Se=J=>{J.preventDefault(),J.metaKey?F(0):J.altKey?ce(-1):ae(-1)};return x.createElement(Ke.div,{ref:r,tabIndex:-1,...Y,"cmdk-root":"",onKeyDown:J=>{var me;(me=Y.onKeyDown)==null||me.call(Y,J);let N=J.nativeEvent.isComposing||J.keyCode===229;if(!(J.defaultPrevented||N))switch(J.key){case"n":case"j":{L&&J.ctrlKey&&K(J);break}case"ArrowDown":{K(J);break}case"p":case"k":{L&&J.ctrlKey&&Se(J);break}case"ArrowUp":{Se(J);break}case"Home":{J.preventDefault(),F(0);break}case"End":{J.preventDefault(),xe();break}case"Enter":{J.preventDefault();let U=ue();if(U){let $=new Event(cd);U.dispatchEvent($)}}}}},x.createElement("label",{"cmdk-label":"",htmlFor:z.inputId,id:z.labelId,style:p3},p),So(i,J=>x.createElement(pp.Provider,{value:T},x.createElement(yp.Provider,{value:z},J))))}),u3=x.forwardRef((i,r)=>{var c,o;let s=an(),f=x.useRef(null),m=x.useContext(bp),v=xu(),p=Sp(i),b=(o=(c=p.current)==null?void 0:c.forceMount)!=null?o:m==null?void 0:m.forceMount;ca(()=>{if(!b)return v.item(s,m==null?void 0:m.id)},[b]);let S=Ep(s,f,[i.value,i.children,f],i.keywords),y=Dd(),E=zl(R=>R.value&&R.value===S.current),A=zl(R=>b||v.filter()===!1?!0:R.search?R.filtered.items.get(s)>0:!0);x.useEffect(()=>{let R=f.current;if(!(!R||i.disabled))return R.addEventListener(cd,j),()=>R.removeEventListener(cd,j)},[A,i.onSelect,i.disabled]);function j(){var R,T;D(),(T=(R=p.current).onSelect)==null||T.call(R,S.current)}function D(){y.setState("value",S.current,!0)}if(!A)return null;let{disabled:L,value:Y,onSelect:G,forceMount:k,keywords:V,...I}=i;return x.createElement(Ke.div,{ref:ra(f,r),...I,id:s,"cmdk-item":"",role:"option","aria-disabled":!!L,"aria-selected":!!E,"data-disabled":!!L,"data-selected":!!E,onPointerMove:L||v.getDisablePointerSelection()?void 0:D,onClick:L?void 0:j},i.children)}),r3=x.forwardRef((i,r)=>{let{heading:c,children:o,forceMount:s,...f}=i,m=an(),v=x.useRef(null),p=x.useRef(null),b=an(),S=xu(),y=zl(A=>s||S.filter()===!1?!0:A.search?A.filtered.groups.has(m):!0);ca(()=>S.group(m),[]),Ep(m,v,[i.value,i.heading,p]);let E=x.useMemo(()=>({id:m,forceMount:s}),[s]);return x.createElement(Ke.div,{ref:ra(v,r),...f,"cmdk-group":"",role:"presentation",hidden:y?void 0:!0},c&&x.createElement("div",{ref:p,"cmdk-group-heading":"","aria-hidden":!0,id:b},c),So(i,A=>x.createElement("div",{"cmdk-group-items":"",role:"group","aria-labelledby":c?b:void 0},x.createElement(bp.Provider,{value:E},A))))}),o3=x.forwardRef((i,r)=>{let{alwaysRender:c,...o}=i,s=x.useRef(null),f=zl(m=>!m.search);return!c&&!f?null:x.createElement(Ke.div,{ref:ra(s,r),...o,"cmdk-separator":"",role:"separator"})}),c3=x.forwardRef((i,r)=>{let{onValueChange:c,...o}=i,s=i.value!=null,f=Dd(),m=zl(b=>b.search),v=zl(b=>b.selectedItemId),p=xu();return x.useEffect(()=>{i.value!=null&&f.setState("search",i.value)},[i.value]),x.createElement(Ke.input,{ref:r,...o,"cmdk-input":"",autoComplete:"off",autoCorrect:"off",spellCheck:!1,"aria-autocomplete":"list",role:"combobox","aria-expanded":!0,"aria-controls":p.listId,"aria-labelledby":p.labelId,"aria-activedescendant":v,id:p.inputId,type:"text",value:s?i.value:m,onChange:b=>{s||f.setState("search",b.target.value),c==null||c(b.target.value)}})}),s3=x.forwardRef((i,r)=>{let{children:c,label:o="Suggestions",...s}=i,f=x.useRef(null),m=x.useRef(null),v=zl(b=>b.selectedItemId),p=xu();return x.useEffect(()=>{if(m.current&&f.current){let b=m.current,S=f.current,y,E=new ResizeObserver(()=>{y=requestAnimationFrame(()=>{let A=b.offsetHeight;S.style.setProperty("--cmdk-list-height",A.toFixed(1)+"px")})});return E.observe(b),()=>{cancelAnimationFrame(y),E.unobserve(b)}}},[]),x.createElement(Ke.div,{ref:ra(f,r),...s,"cmdk-list":"",role:"listbox",tabIndex:-1,"aria-activedescendant":v,"aria-label":o,id:p.listId},So(i,b=>x.createElement("div",{ref:ra(m,p.listInnerRef),"cmdk-list-sizer":""},b)))}),f3=x.forwardRef((i,r)=>{let{open:c,onOpenChange:o,overlayClassName:s,contentClassName:f,container:m,...v}=i;return x.createElement(op,{open:c,onOpenChange:o},x.createElement(fp,{container:m},x.createElement(Od,{"cmdk-overlay":"",className:s}),x.createElement(Md,{"aria-label":i.label,"cmdk-dialog":"",className:f},x.createElement(xp,{ref:r,...v}))))}),d3=x.forwardRef((i,r)=>zl(c=>c.filtered.count===0)?x.createElement(Ke.div,{ref:r,...i,"cmdk-empty":"",role:"presentation"}):null),m3=x.forwardRef((i,r)=>{let{progress:c,children:o,label:s="Loading...",...f}=i;return x.createElement(Ke.div,{ref:r,...f,"cmdk-loading":"",role:"progressbar","aria-valuenow":c,"aria-valuemin":0,"aria-valuemax":100,"aria-label":s},So(i,m=>x.createElement("div",{"aria-hidden":!0},m)))}),on=Object.assign(xp,{List:s3,Item:u3,Input:c3,Group:r3,Separator:o3,Dialog:f3,Empty:d3,Loading:m3});function h3(i,r){let c=i.nextElementSibling;for(;c;){if(c.matches(r))return c;c=c.nextElementSibling}}function v3(i,r){let c=i.previousElementSibling;for(;c;){if(c.matches(r))return c;c=c.previousElementSibling}}function Sp(i){let r=x.useRef(i);return ca(()=>{r.current=i}),r}var ca=typeof window>"u"?x.useEffect:x.useLayoutEffect;function mi(i){let r=x.useRef();return r.current===void 0&&(r.current=i()),r}function zl(i){let r=Dd(),c=()=>i(r.snapshot());return x.useSyncExternalStore(r.subscribe,c,c)}function Ep(i,r,c,o=[]){let s=x.useRef(),f=xu();return ca(()=>{var m;let v=(()=>{var b;for(let S of c){if(typeof S=="string")return S.trim();if(typeof S=="object"&&"current"in S)return S.current?(b=S.current.textContent)==null?void 0:b.trim():s.current}})(),p=o.map(b=>b.trim());f.value(i,v,p),(m=r.current)==null||m.setAttribute(di,v),s.current=v}),s}var g3=()=>{let[i,r]=x.useState(),c=mi(()=>new Map);return ca(()=>{c.current.forEach(o=>o()),c.current=new Map},[i]),(o,s)=>{c.current.set(o,s),r({})}};function y3(i){let r=i.type;return typeof r=="function"?r(i.props):"render"in r?r.render(i.props):i}function So({asChild:i,children:r},c){return i&&x.isValidElement(r)?x.cloneElement(y3(r),{ref:r.ref},c(r.props.children)):c(r)}var p3={position:"absolute",width:"1px",height:"1px",padding:"0",margin:"-1px",overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",borderWidth:"0"};const Ud=op,b3=fp,Cp=x.forwardRef(({className:i,...r},c)=>h.jsx(Od,{ref:c,className:Qe("fixed inset-0 z-50 bg-black/70 backdrop-blur-sm transition-opacity",i),...r}));Cp.displayName=Od.displayName;const Eo=x.forwardRef(({className:i,children:r,...c},o)=>h.jsxs(b3,{children:[h.jsx(Cp,{}),h.jsx(Md,{ref:o,className:Qe("fixed left-[50%] top-[50%] z-50 w-full max-w-lg translate-x-[-50%] translate-y-[-50%] hl-card shadow-2xl duration-200 outline-none",i),...c,children:r})]}));Eo.displayName=Md.displayName;const Co=x.forwardRef(({className:i,...r},c)=>h.jsx(mp,{ref:c,className:Qe("text-sm font-bold leading-none tracking-tight",i),...r}));Co.displayName=mp.displayName;const No=x.forwardRef(({className:i,...r},c)=>h.jsx(hp,{ref:c,className:Qe("text-xs text-[var(--text-muted)]",i),...r}));No.displayName=hp.displayName;const Np=x.forwardRef(({className:i,...r},c)=>h.jsx(on,{ref:c,className:Qe("flex h-full w-full flex-col overflow-hidden rounded-xl bg-[var(--bg-card)] text-[var(--text-main)]",i),...r}));Np.displayName=on.displayName;const x3=({children:i,...r})=>h.jsx(Ud,{...r,children:h.jsxs(Eo,{className:"max-w-xl overflow-hidden p-0 shadow-2xl top-[22%] translate-y-0",children:[h.jsx(Co,{className:"sr-only",children:"全局命令与服务搜索面板"}),h.jsx(No,{className:"sr-only",children:"使用键盘上下方向键选择服务或操作,回车立即执行"}),h.jsx(Np,{children:i})]})}),wp=x.forwardRef(({className:i,...r},c)=>h.jsxs("div",{className:"flex items-center border-b hl-border px-4 py-3 gap-3","cmdk-input-wrapper":"",children:[h.jsx(dd,{className:"h-4 w-4 shrink-0 text-[var(--text-muted)]"}),h.jsx(on.Input,{ref:c,className:Qe("flex w-full bg-transparent text-sm outline-none placeholder:text-[var(--text-subtle)] disabled:cursor-not-allowed disabled:opacity-50",i),...r}),h.jsx("kbd",{className:"px-1.5 py-0.5 text-[10px] font-mono-num rounded hl-muted text-[var(--text-muted)] shrink-0",children:"ESC"})]}));wp.displayName=on.Input.displayName;const Tp=x.forwardRef(({className:i,...r},c)=>h.jsx(on.List,{ref:c,className:Qe("max-h-80 overflow-y-auto overflow-x-hidden p-2",i),...r}));Tp.displayName=on.List.displayName;const _p=x.forwardRef((i,r)=>h.jsx(on.Empty,{ref:r,className:"py-6 text-center text-xs text-[var(--text-muted)]",...i}));_p.displayName=on.Empty.displayName;const Ap=x.forwardRef(({className:i,...r},c)=>h.jsx(on.Group,{ref:c,className:Qe("overflow-hidden p-1 text-[var(--text-main)] [&_[cmdk-group-heading]]:px-2.5 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-[10px] [&_[cmdk-group-heading]]:font-semibold [&_[cmdk-group-heading]]:uppercase [&_[cmdk-group-heading]]:tracking-wider [&_[cmdk-group-heading]]:text-[var(--text-subtle)]",i),...r}));Ap.displayName=on.Group.displayName;const Rp=x.forwardRef(({className:i,...r},c)=>h.jsx(on.Item,{ref:c,className:Qe("relative flex cursor-pointer select-none items-center justify-between rounded-lg px-3 py-2 text-xs outline-none transition-colors data-[selected=true]:bg-[var(--bg-muted)] data-[selected=true]:text-[var(--text-main)] data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50",i),...r}));Rp.displayName=on.Item.displayName;const S3=()=>{const{showCmdPalette:i,setShowCmdPalette:r,setShowAgyModal:c,setTheme:o,triggerAction:s,copyCmd:f,getEffectiveMode:m}=Pn(),v=x.useMemo(()=>{const p=m(),b=(S,y,E)=>p==="lan"?E:p==="home10443"?y:S;return[{id:"open-agy-drawer",title:"在页内唤起 AGY 云端终端",hint:"tmux attach -t agy",type:"终端",run:()=>c(!0)},{id:"open-agy",title:"新窗口打开 AGY 云端工作台",hint:"https://agy.961504.xyz",type:"跳转",run:()=>window.open(b("https://agy.961504.xyz","https://agy.home.961504.xyz:10443","http://192.168.31.164:7681"),"_blank")},{id:"open-z4",title:"打开 极空间 Z4 私有云 (20TB)",hint:"192.168.31.185:5055",type:"跳转",run:()=>window.open(b("https://z4.home.961504.xyz:10443","https://z4.home.961504.xyz:10443","http://192.168.31.185:5055"),"_blank")},{id:"open-vw",title:"打开 Vaultwarden 密码保险箱",hint:"https://vw.961504.xyz",type:"跳转",run:()=>window.open(b("https://vw.961504.xyz","https://vw.home.961504.xyz:10443","http://192.168.31.164:8222"),"_blank")},{id:"open-clash",title:"打开 Mihomo 路由分流面板",hint:"192.168.31.1:9999",type:"跳转",run:()=>window.open(b("https://clash.home.961504.xyz:10443/ui/","https://clash.home.961504.xyz:10443/ui/","http://192.168.31.1:9999/ui/"),"_blank")},{id:"act-backup",title:"立即打包备份核心数据至极空间 Z4",hint:"backup-to-nas.sh",type:"运维",run:()=>s("backup_nas","正在打包备份至极空间 Z4...")},{id:"act-ddns",title:"立即刷新 Cloudflare DDNS 解析",hint:"cloudflare-ddns.sh",type:"运维",run:()=>s("refresh_ddns","正在同步 Cloudflare DDNS...")},{id:"ssh-mini",title:"复制 SSH 连接 Mac mini 指令",hint:"ssh mini",type:"SSH",run:()=>f("ssh mini","SSH Mac mini")},{id:"ssh-agy",title:"复制 终端接力 AGY 会话指令",hint:'ssh mini -t "tmux attach -t agy"',type:"SSH",run:()=>f('ssh mini -t "tmux attach -t agy"',"接力 AGY")},{id:"theme-system",title:"主题模式: 跟随设备系统深浅色自动切换",hint:"system",type:"主题",run:()=>o("system")},{id:"theme-light",title:"切换主题: 浅色纯净 (Light)",hint:"light",type:"主题",run:()=>o("light")},{id:"theme-dark",title:"切换主题: 深色极客 (Dark)",hint:"dark",type:"主题",run:()=>o("dark")}]},[m,c,o,s,f]);return h.jsxs(x3,{open:i,onOpenChange:r,children:[h.jsx(wp,{placeholder:"输入服务名称、SSH 指令、路由模式或主题..."}),h.jsxs(Tp,{children:[h.jsx(_p,{children:"未找到匹配的指令或服务"}),h.jsx(Ap,{heading:"快速操作与服务直达 (cmdk + Radix Dialog)",children:v.map(p=>h.jsxs(Rp,{value:`${p.title} ${p.hint} ${p.type}`,onSelect:()=>{r(!1),p.run()},children:[h.jsxs("div",{className:"flex items-center gap-2.5",children:[h.jsx("span",{className:"font-medium",children:p.title}),h.jsx("span",{className:"font-mono-num text-[11px] text-[var(--text-muted)]",children:p.hint})]}),h.jsx(Jn,{variant:"secondary",children:p.type})]},p.id))})]})]})},Ol=x.forwardRef(({className:i,...r},c)=>h.jsx("div",{ref:c,className:Qe("hl-card",i),...r}));Ol.displayName="Card";const E3=x.forwardRef(({className:i,...r},c)=>h.jsx("div",{ref:c,className:Qe("flex flex-col space-y-1.5 p-5",i),...r}));E3.displayName="CardHeader";const C3=x.forwardRef(({className:i,...r},c)=>h.jsx("h3",{ref:c,className:Qe("text-sm font-bold leading-none tracking-tight",i),...r}));C3.displayName="CardTitle";const N3=x.forwardRef(({className:i,...r},c)=>h.jsx("p",{ref:c,className:Qe("text-xs text-[var(--text-muted)]",i),...r}));N3.displayName="CardDescription";const w3=x.forwardRef(({className:i,...r},c)=>h.jsx("div",{ref:c,className:Qe("p-5 pt-0",i),...r}));w3.displayName="CardContent";const T3=x.forwardRef(({className:i,...r},c)=>h.jsx("div",{ref:c,className:Qe("flex items-center p-5 pt-0",i),...r}));T3.displayName="CardFooter";const Bd=x.forwardRef(({className:i,type:r,...c},o)=>h.jsx("input",{type:r,className:Qe("hl-input",i),ref:o,...c}));Bd.displayName="Input";const vo=x.forwardRef(({className:i,...r},c)=>h.jsx("div",{ref:c,className:Qe("hl-input-group",i),...r}));vo.displayName="InputGroup";var _3=Object.defineProperty,A3=(i,r)=>_3(i,"name",{value:r,configurable:!0});function jp(i){const[r,c]=x.useState(void 0);return un(()=>{if(i){c({width:i.offsetWidth,height:i.offsetHeight});let o=0;const s=new ResizeObserver(f=>{if(!Array.isArray(f)||!f.length)return;const m=f[0];window.cancelAnimationFrame(o),o=window.requestAnimationFrame(()=>{let v,p;if("borderBoxSize"in m){const b=m.borderBoxSize,S=Array.isArray(b)?b[0]:b;v=S.inlineSize,p=S.blockSize}else v=i.offsetWidth,p=i.offsetHeight;c({width:v,height:p})})});return s.observe(i,{box:"border-box"}),()=>{window.cancelAnimationFrame(o),s.unobserve(i)}}else c(void 0)},[i]),r}A3(jp,"useSize");var R3=Object.defineProperty,Dl=(i,r)=>R3(i,"name",{value:r,configurable:!0}),kd="Switch",[j3,hN]=da(kd),[O3,Hd]=j3(kd);function Op(i){const{__scopeSwitch:r,checked:c,children:o,defaultChecked:s,disabled:f,form:m,name:v,onCheckedChange:p,required:b,value:S="on",internal_do_not_use_render:y}=i,[E,A]=bu({prop:c,defaultProp:s??!1,onChange:p,caller:kd}),[j,D]=x.useState(null),[L,Y]=x.useState(null),[G,k]=x.useState(null),V=j?!!m||!!j.closest("form"):!0,I={checked:E,setChecked:A,disabled:f,control:j,setControl:D,name:v,form:m,value:S,userClick:G,onUserClick:k,required:b,defaultChecked:s,isFormControl:V,bubbleInput:L,setBubbleInput:Y};return h.jsx(O3,{scope:r,...I,children:zp(y)?y(I):o})}Dl(Op,"SwitchProvider");var M3="SwitchTrigger",z3=x.forwardRef(Dl(function({__scopeSwitch:r,onClick:c,...o},s){const{control:f,form:m,value:v,disabled:p,checked:b,required:S,setControl:y,setChecked:E,onUserClick:A,isFormControl:j,bubbleInput:D}=Hd(M3,r),L=zt(s,y),Y=x.useRef(b);return x.useEffect(()=>{const G=m?f==null?void 0:f.ownerDocument.getElementById(m):f==null?void 0:f.form;if(G instanceof HTMLFormElement){const k=Dl(()=>E(Y.current),"reset");return G.addEventListener("reset",k),()=>G.removeEventListener("reset",k)}},[f,m,E]),h.jsx(Ke.button,{type:"button",role:"switch","aria-checked":b,"aria-required":S,"data-state":Ld(b),"data-disabled":p?"":void 0,disabled:p,value:v,...o,ref:L,onClick:dt(c,G=>{const k=G.isPropagationStopped();A({requestedChecked:!b,hasConsumerStoppedPropagation:k}),E(V=>!V),D&&j&&(k||G.stopPropagation())})})},"SwitchTrigger")),Mp=x.forwardRef(Dl(function(r,c){const{__scopeSwitch:o,name:s,checked:f,defaultChecked:m,required:v,disabled:p,value:b,onCheckedChange:S,form:y,...E}=r;return h.jsx(Op,{__scopeSwitch:o,checked:f,defaultChecked:m,disabled:p,required:v,onCheckedChange:S,name:s,form:y,value:b,internal_do_not_use_render:({isFormControl:A})=>h.jsxs(h.Fragment,{children:[h.jsx(z3,{...E,ref:c,__scopeSwitch:o}),A&&h.jsx(k3,{__scopeSwitch:o})]})})},"Switch")),D3="SwitchThumb",U3=x.forwardRef(Dl(function(r,c){const{__scopeSwitch:o,...s}=r,f=Hd(D3,o);return h.jsx(Ke.span,{"data-state":Ld(f.checked),"data-disabled":f.disabled?"":void 0,...s,ref:c})},"SwitchThumb")),B3="SwitchBubbleInput",k3=x.forwardRef(Dl(function({__scopeSwitch:r,onClick:c,...o},s){const{control:f,userClick:m,checked:v,defaultChecked:p,required:b,disabled:S,name:y,value:E,form:A,bubbleInput:j,setBubbleInput:D}=Hd(B3,r),L=zt(s,D),Y=jp(f),G=x.useRef(!1),k=x.useRef(v),V=x.useRef(m),I=x.useRef(null);x.useEffect(()=>{const T=j;if(!T)return;const z=window.HTMLInputElement.prototype,te=Object.getOwnPropertyDescriptor(z,"checked").set;if(!te)return;const W=k.current!==v;k.current=v;const P=m!==null&&m!==V.current;if(V.current=m,P)I.current=W?null:m,W&&te.call(T,v),T.dispatchEvent(new Event("click",{bubbles:!m.hasConsumerStoppedPropagation}));else if(W){const ne=I.current;I.current=null;const ue=(ne==null?void 0:ne.requestedChecked)===v;G.current=!0,te.call(T,v),T.dispatchEvent(new Event("click",{bubbles:!(ue&&ne.hasConsumerStoppedPropagation)})),G.current=!1}},[j,v,m]);const R=x.useRef(v);return h.jsx(Ke.input,{type:"checkbox","aria-hidden":!0,defaultChecked:p??R.current,required:b,disabled:S,name:y,value:E,form:A,...o,tabIndex:-1,ref:L,onClick:dt(c,T=>{G.current&&T.stopPropagation()}),style:{...o.style,...Y,position:"absolute",pointerEvents:"none",opacity:0,margin:0,transform:"translateX(-100%)"}})},"SwitchBubbleInput"));function zp(i){return typeof i=="function"}Dl(zp,"isFunction");function Ld(i){return i?"checked":"unchecked"}Dl(Ld,"getState");const go=x.forwardRef(({className:i,...r},c)=>h.jsx(Mp,{className:Qe("peer inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full border transition-colors disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-[var(--accent)] data-[state=checked]:border-[var(--accent)] data-[state=unchecked]:bg-[var(--bg-muted)] data-[state=unchecked]:border-[var(--border-color)]",i),...r,ref:c,children:h.jsx(U3,{className:Qe("pointer-events-none block h-3.5 w-3.5 rounded-full bg-white shadow-sm transition-transform data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0.5")})}));go.displayName=Mp.displayName;const qd=({targetUrl:i="https://agy.961504.xyz",onSuccess:r,onCancel:c,embedded:o=!1})=>{const[s,f]=x.useState("ixvii0iv"),[m,v]=x.useState(""),[p,b]=x.useState(!1),[S,y]=x.useState(!0),[E,A]=x.useState(!1),[j,D]=x.useState(null),L=async Y=>{if(Y.preventDefault(),!s.trim()||!m){D("请输入用户名与访问密钥");return}A(!0),D(null);try{const G=await fetch("/api/auth/login",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({username:s.trim(),password:m,remember:S})}),k=await G.json();G.ok&&k.ok?r==null||r():D(k.message||"认证未通过,请检查密码")}catch{D("网络请求异常,请稍后重试")}finally{A(!1)}};return h.jsxs(Ol,{className:`w-full max-w-md p-6 space-y-5 ${o?"":"shadow-2xl"}`,children:[h.jsx("div",{className:"flex items-start justify-between gap-3 border-b hl-border pb-4",children:h.jsxs("div",{className:"flex items-center gap-3",children:[h.jsx("div",{className:"w-10 h-10 rounded-xl flex items-center justify-center border hl-border shrink-0",style:{backgroundColor:"var(--accent-soft)",color:"var(--accent)"},children:h.jsx(D2,{className:"w-5 h-5"})}),h.jsxs("div",{children:[h.jsxs("div",{className:"flex items-center gap-2",children:[h.jsx("h3",{className:"text-sm font-bold tracking-tight",children:"HomeLab 统一安全通行证"}),h.jsx(Jn,{variant:"success",children:"SSO 2.0"})]}),h.jsx("p",{className:"text-xs font-mono-num mt-0.5 truncate max-w-[260px]",style:{color:"var(--text-muted)"},children:i})]})]})}),h.jsxs("form",{onSubmit:L,className:"space-y-4",children:[h.jsxs("div",{className:"space-y-1.5",children:[h.jsx("label",{className:"block text-xs font-semibold",style:{color:"var(--text-muted)"},children:"管理员账号 (Username)"}),h.jsxs(vo,{children:[h.jsx(X2,{className:"w-4 h-4 shrink-0",style:{color:"var(--text-subtle)"}}),h.jsx("input",{type:"text",autoComplete:"username",value:s,onChange:Y=>f(Y.target.value),placeholder:"输入管理员账号 (如 ixvii0iv)",className:"font-mono-num"})]})]}),h.jsxs("div",{className:"space-y-1.5",children:[h.jsxs("div",{className:"flex items-center justify-between",children:[h.jsx("label",{className:"block text-xs font-semibold",style:{color:"var(--text-muted)"},children:"访问通行密钥 (Access Key)"}),h.jsx("span",{className:"text-[10px] font-mono-num",style:{color:"var(--text-subtle)"},children:"与 Mac mini 密码一致"})]}),h.jsxs(vo,{children:[h.jsx(p2,{className:"w-4 h-4 shrink-0",style:{color:"var(--text-subtle)"}}),h.jsx("input",{type:p?"text":"password",autoComplete:"current-password",autoFocus:!0,value:m,onChange:Y=>v(Y.target.value),placeholder:"输入访问密钥...",className:"font-mono-num"}),h.jsx("button",{type:"button",onClick:()=>b(!p),className:"p-1 rounded hover:opacity-80 cursor-pointer",style:{color:"var(--text-muted)"},title:p?"隐藏密码":"显示密码",children:p?h.jsx(c2,{className:"w-3.5 h-3.5"}):h.jsx(f2,{className:"w-3.5 h-3.5"})})]})]}),h.jsxs("div",{className:"flex items-center justify-between pt-1",children:[h.jsx("span",{className:"text-xs select-none",style:{color:"var(--text-muted)"},children:"在此设备保持 30 天免密通行 (*.961504.xyz)"}),h.jsx(go,{checked:S,onCheckedChange:y})]}),j&&h.jsx("div",{className:"px-3 py-2 rounded-lg text-xs font-medium border",style:{backgroundColor:"rgba(239, 68, 68, 0.1)",borderColor:"rgba(239, 68, 68, 0.3)",color:"#ef4444"},children:j}),h.jsxs("div",{className:"flex items-center justify-end gap-2.5 pt-2",children:[c&&h.jsx(nt,{type:"button",variant:"outline",onClick:c,children:"取消"}),h.jsxs(nt,{type:"submit",disabled:E,className:"px-4",children:[h.jsx(md,{className:"w-3.5 h-3.5"}),h.jsx("span",{children:E?"正在验证签名...":"解锁并进入工作台"})]})]})]})]})},H3=()=>{const{showAgyModal:i,setShowAgyModal:r,getEffectiveMode:c}=Pn(),[o,s]=x.useState(!1),[f,m]=x.useState(!1),v=c(),p=v==="lan"?"http://192.168.31.164:7681":v==="home10443"?"https://agy.home.961504.xyz:10443":"https://agy.961504.xyz";return x.useEffect(()=>{if(i){if(v==="lan"){m(!0),s(!0);return}s(!1),fetch("/api/auth/status",{credentials:"include"}).then(b=>b.json()).then(b=>{m(!!b.authenticated),s(!0)}).catch(()=>{m(!1),s(!0)})}},[i,v]),h.jsx(Ud,{open:i,onOpenChange:r,children:h.jsxs(Eo,{className:"w-[95vw] max-w-6xl h-[88vh] flex flex-col overflow-hidden p-0",children:[h.jsx(Co,{className:"sr-only",children:"AGY 云端工作台"}),h.jsx(No,{className:"sr-only",children:"M6 Mac mini 上的 24 小时 tmux 常驻 AI 编程终端"}),h.jsxs("div",{className:"px-4 py-2.5 border-b hl-border flex items-center justify-between hl-muted shrink-0",children:[h.jsxs("div",{className:"flex items-center gap-2.5",children:[h.jsx("img",{src:"https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons/png/google-gemini.png",alt:"AGY",className:"w-4 h-4"}),h.jsx("span",{className:"text-xs font-mono-num font-medium",children:"AGY 云端工作台 · tmux 持久会话 (关窗不断连)"})]}),h.jsxs("div",{className:"flex items-center gap-2",children:[h.jsx(nt,{variant:"outline",size:"sm",asChild:!0,children:h.jsx("a",{href:p,target:"_blank",rel:"noopener noreferrer",className:"font-mono-num",children:"新标签页全屏 ↗"})}),h.jsx(nt,{size:"sm",onClick:()=>r(!1),children:"收起终端"})]})]}),o?f?h.jsx("iframe",{src:p,title:"AGY Cloud Workbench",className:"w-full flex-1 bg-black border-0"}):h.jsx("div",{className:"flex-1 flex items-center justify-center p-4",style:{backgroundColor:"var(--bg-page)"},children:h.jsx(qd,{targetUrl:p,onSuccess:()=>m(!0),onCancel:()=>r(!1)})}):h.jsx("div",{className:"flex-1 flex items-center justify-center text-xs font-mono-num",style:{color:"var(--text-muted)"},children:"正在校验 HomeLab SSO 通行证..."})]})})};var si={},wf,W0;function L3(){return W0||(W0=1,wf=function(){return typeof Promise=="function"&&Promise.prototype&&Promise.prototype.then}),wf}var Tf={},jl={},ey;function ha(){if(ey)return jl;ey=1;let i;const r=[0,26,44,70,100,134,172,196,242,292,346,404,466,532,581,655,733,815,901,991,1085,1156,1258,1364,1474,1588,1706,1828,1921,2051,2185,2323,2465,2611,2761,2876,3034,3196,3362,3532,3706];return jl.getSymbolSize=function(o){if(!o)throw new Error('"version" cannot be null or undefined');if(o<1||o>40)throw new Error('"version" should be in range from 1 to 40');return o*4+17},jl.getSymbolTotalCodewords=function(o){return r[o]},jl.getBCHDigit=function(c){let o=0;for(;c!==0;)o++,c>>>=1;return o},jl.setToSJISFunction=function(o){if(typeof o!="function")throw new Error('"toSJISFunc" is not a valid function.');i=o},jl.isKanjiModeEnabled=function(){return typeof i<"u"},jl.toSJIS=function(o){return i(o)},jl}var _f={},ty;function Gd(){return ty||(ty=1,(function(i){i.L={bit:1},i.M={bit:0},i.Q={bit:3},i.H={bit:2};function r(c){if(typeof c!="string")throw new Error("Param is not a string");switch(c.toLowerCase()){case"l":case"low":return i.L;case"m":case"medium":return i.M;case"q":case"quartile":return i.Q;case"h":case"high":return i.H;default:throw new Error("Unknown EC Level: "+c)}}i.isValid=function(o){return o&&typeof o.bit<"u"&&o.bit>=0&&o.bit<4},i.from=function(o,s){if(i.isValid(o))return o;try{return r(o)}catch{return s}}})(_f)),_f}var Af,ny;function q3(){if(ny)return Af;ny=1;function i(){this.buffer=[],this.length=0}return i.prototype={get:function(r){const c=Math.floor(r/8);return(this.buffer[c]>>>7-r%8&1)===1},put:function(r,c){for(let o=0;o>>c-o-1&1)===1)},getLengthInBits:function(){return this.length},putBit:function(r){const c=Math.floor(this.length/8);this.buffer.length<=c&&this.buffer.push(0),r&&(this.buffer[c]|=128>>>this.length%8),this.length++}},Af=i,Af}var Rf,ly;function G3(){if(ly)return Rf;ly=1;function i(r){if(!r||r<1)throw new Error("BitMatrix size must be defined and greater than 0");this.size=r,this.data=new Uint8Array(r*r),this.reservedBit=new Uint8Array(r*r)}return i.prototype.set=function(r,c,o,s){const f=r*this.size+c;this.data[f]=o,s&&(this.reservedBit[f]=!0)},i.prototype.get=function(r,c){return this.data[r*this.size+c]},i.prototype.xor=function(r,c,o){this.data[r*this.size+c]^=o},i.prototype.isReserved=function(r,c){return this.reservedBit[r*this.size+c]},Rf=i,Rf}var jf={},ay;function Y3(){return ay||(ay=1,(function(i){const r=ha().getSymbolSize;i.getRowColCoords=function(o){if(o===1)return[];const s=Math.floor(o/7)+2,f=r(o),m=f===145?26:Math.ceil((f-13)/(2*s-2))*2,v=[f-7];for(let p=1;p=0&&s<=7},i.from=function(s){return i.isValid(s)?parseInt(s,10):void 0},i.getPenaltyN1=function(s){const f=s.size;let m=0,v=0,p=0,b=null,S=null;for(let y=0;y=5&&(m+=r.N1+(v-5)),b=A,v=1),A=s.get(E,y),A===S?p++:(p>=5&&(m+=r.N1+(p-5)),S=A,p=1)}v>=5&&(m+=r.N1+(v-5)),p>=5&&(m+=r.N1+(p-5))}return m},i.getPenaltyN2=function(s){const f=s.size;let m=0;for(let v=0;v=10&&(v===1488||v===93)&&m++,p=p<<1&2047|s.get(S,b),S>=10&&(p===1488||p===93)&&m++}return m*r.N3},i.getPenaltyN4=function(s){let f=0;const m=s.data.length;for(let p=0;p=0;){const m=f[0];for(let p=0;p0){const v=new Uint8Array(this.degree);return v.set(f,m),v}return f},Df=r,Df}var Uf={},Bf={},kf={},fy;function Up(){return fy||(fy=1,kf.isValid=function(r){return!isNaN(r)&&r>=1&&r<=40}),kf}var jn={},dy;function Bp(){if(dy)return jn;dy=1;const i="[0-9]+",r="[A-Z $%*+\\-./:]+";let c="(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+";c=c.replace(/u/g,"\\u");const o="(?:(?![A-Z0-9 $%*+\\-./:]|"+c+`)(?:.|[\r -]))+`;jn.KANJI=new RegExp(c,"g"),jn.BYTE_KANJI=new RegExp("[^A-Z0-9 $%*+\\-./:]+","g"),jn.BYTE=new RegExp(o,"g"),jn.NUMERIC=new RegExp(i,"g"),jn.ALPHANUMERIC=new RegExp(r,"g");const s=new RegExp("^"+c+"$"),f=new RegExp("^"+i+"$"),m=new RegExp("^[A-Z0-9 $%*+\\-./:]+$");return jn.testKanji=function(p){return s.test(p)},jn.testNumeric=function(p){return f.test(p)},jn.testAlphanumeric=function(p){return m.test(p)},jn}var my;function va(){return my||(my=1,(function(i){const r=Up(),c=Bp();i.NUMERIC={id:"Numeric",bit:1,ccBits:[10,12,14]},i.ALPHANUMERIC={id:"Alphanumeric",bit:2,ccBits:[9,11,13]},i.BYTE={id:"Byte",bit:4,ccBits:[8,16,16]},i.KANJI={id:"Kanji",bit:8,ccBits:[8,10,12]},i.MIXED={bit:-1},i.getCharCountIndicator=function(f,m){if(!f.ccBits)throw new Error("Invalid mode: "+f);if(!r.isValid(m))throw new Error("Invalid version: "+m);return m>=1&&m<10?f.ccBits[0]:m<27?f.ccBits[1]:f.ccBits[2]},i.getBestModeForData=function(f){return c.testNumeric(f)?i.NUMERIC:c.testAlphanumeric(f)?i.ALPHANUMERIC:c.testKanji(f)?i.KANJI:i.BYTE},i.toString=function(f){if(f&&f.id)return f.id;throw new Error("Invalid mode")},i.isValid=function(f){return f&&f.bit&&f.ccBits};function o(s){if(typeof s!="string")throw new Error("Param is not a string");switch(s.toLowerCase()){case"numeric":return i.NUMERIC;case"alphanumeric":return i.ALPHANUMERIC;case"kanji":return i.KANJI;case"byte":return i.BYTE;default:throw new Error("Unknown mode: "+s)}}i.from=function(f,m){if(i.isValid(f))return f;try{return o(f)}catch{return m}}})(Bf)),Bf}var hy;function I3(){return hy||(hy=1,(function(i){const r=ha(),c=Dp(),o=Gd(),s=va(),f=Up(),m=7973,v=r.getBCHDigit(m);function p(E,A,j){for(let D=1;D<=40;D++)if(A<=i.getCapacity(D,j,E))return D}function b(E,A){return s.getCharCountIndicator(E,A)+4}function S(E,A){let j=0;return E.forEach(function(D){const L=b(D.mode,A);j+=L+D.getBitsLength()}),j}function y(E,A){for(let j=1;j<=40;j++)if(S(E,j)<=i.getCapacity(j,A,s.MIXED))return j}i.from=function(A,j){return f.isValid(A)?parseInt(A,10):j},i.getCapacity=function(A,j,D){if(!f.isValid(A))throw new Error("Invalid QR Code version");typeof D>"u"&&(D=s.BYTE);const L=r.getSymbolTotalCodewords(A),Y=c.getTotalCodewordsCount(A,j),G=(L-Y)*8;if(D===s.MIXED)return G;const k=G-b(D,A);switch(D){case s.NUMERIC:return Math.floor(k/10*3);case s.ALPHANUMERIC:return Math.floor(k/11*2);case s.KANJI:return Math.floor(k/13);case s.BYTE:default:return Math.floor(k/8)}},i.getBestVersionForData=function(A,j){let D;const L=o.from(j,o.M);if(Array.isArray(A)){if(A.length>1)return y(A,L);if(A.length===0)return 1;D=A[0]}else D=A;return p(D.mode,D.getLength(),L)},i.getEncodedBits=function(A){if(!f.isValid(A)||A<7)throw new Error("Invalid QR Code version");let j=A<<12;for(;r.getBCHDigit(j)-v>=0;)j^=m<=0;)p^=r<0&&(f=this.data.substr(s),m=parseInt(f,10),o.put(m,v*3+1))},qf=r,qf}var Gf,yy;function P3(){if(yy)return Gf;yy=1;const i=va(),r=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"," ","$","%","*","+","-",".","/",":"];function c(o){this.mode=i.ALPHANUMERIC,this.data=o}return c.getBitsLength=function(s){return 11*Math.floor(s/2)+6*(s%2)},c.prototype.getLength=function(){return this.data.length},c.prototype.getBitsLength=function(){return c.getBitsLength(this.data.length)},c.prototype.write=function(s){let f;for(f=0;f+2<=this.data.length;f+=2){let m=r.indexOf(this.data[f])*45;m+=r.indexOf(this.data[f+1]),s.put(m,11)}this.data.length%2&&s.put(r.indexOf(this.data[f]),6)},Gf=c,Gf}var Yf,py;function $3(){if(py)return Yf;py=1;const i=va();function r(c){this.mode=i.BYTE,typeof c=="string"?this.data=new TextEncoder().encode(c):this.data=new Uint8Array(c)}return r.getBitsLength=function(o){return o*8},r.prototype.getLength=function(){return this.data.length},r.prototype.getBitsLength=function(){return r.getBitsLength(this.data.length)},r.prototype.write=function(c){for(let o=0,s=this.data.length;o=33088&&f<=40956)f-=33088;else if(f>=57408&&f<=60351)f-=49472;else throw new Error("Invalid SJIS character: "+this.data[s]+` -Make sure your charset is UTF-8`);f=(f>>>8&255)*192+(f&255),o.put(f,13)}},Vf=c,Vf}var Qf={exports:{}},xy;function eN(){return xy||(xy=1,(function(i){var r={single_source_shortest_paths:function(c,o,s){var f={},m={};m[o]=0;var v=r.PriorityQueue.make();v.push(o,0);for(var p,b,S,y,E,A,j,D,L;!v.empty();){p=v.pop(),b=p.value,y=p.cost,E=c[b]||{};for(S in E)E.hasOwnProperty(S)&&(A=E[S],j=y+A,D=m[S],L=typeof m[S]>"u",(L||D>j)&&(m[S]=j,v.push(S,j),f[S]=b))}if(typeof s<"u"&&typeof m[s]>"u"){var Y=["Could not find a path from ",o," to ",s,"."].join("");throw new Error(Y)}return f},extract_shortest_path_from_predecessor_list:function(c,o){for(var s=[],f=o;f;)s.push(f),c[f],f=c[f];return s.reverse(),s},find_path:function(c,o,s){var f=r.single_source_shortest_paths(c,o,s);return r.extract_shortest_path_from_predecessor_list(f,s)},PriorityQueue:{make:function(c){var o=r.PriorityQueue,s={},f;c=c||{};for(f in o)o.hasOwnProperty(f)&&(s[f]=o[f]);return s.queue=[],s.sorter=c.sorter||o.default_sorter,s},default_sorter:function(c,o){return c.cost-o.cost},push:function(c,o){var s={value:c,cost:o};this.queue.push(s),this.queue.sort(this.sorter)},pop:function(){return this.queue.shift()},empty:function(){return this.queue.length===0}}};i.exports=r})(Qf)),Qf.exports}var Sy;function tN(){return Sy||(Sy=1,(function(i){const r=va(),c=F3(),o=P3(),s=$3(),f=W3(),m=Bp(),v=ha(),p=eN();function b(Y){return unescape(encodeURIComponent(Y)).length}function S(Y,G,k){const V=[];let I;for(;(I=Y.exec(k))!==null;)V.push({data:I[0],index:I.index,mode:G,length:I[0].length});return V}function y(Y){const G=S(m.NUMERIC,r.NUMERIC,Y),k=S(m.ALPHANUMERIC,r.ALPHANUMERIC,Y);let V,I;return v.isKanjiModeEnabled()?(V=S(m.BYTE,r.BYTE,Y),I=S(m.KANJI,r.KANJI,Y)):(V=S(m.BYTE_KANJI,r.BYTE,Y),I=[]),G.concat(k,V,I).sort(function(T,z){return T.index-z.index}).map(function(T){return{data:T.data,mode:T.mode,length:T.length}})}function E(Y,G){switch(G){case r.NUMERIC:return c.getBitsLength(Y);case r.ALPHANUMERIC:return o.getBitsLength(Y);case r.KANJI:return f.getBitsLength(Y);case r.BYTE:return s.getBitsLength(Y)}}function A(Y){return Y.reduce(function(G,k){const V=G.length-1>=0?G[G.length-1]:null;return V&&V.mode===k.mode?(G[G.length-1].data+=k.data,G):(G.push(k),G)},[])}function j(Y){const G=[];for(let k=0;k=0&&ne<=6&&(ue===0||ue===6)||ue>=0&&ue<=6&&(ne===0||ne===6)||ne>=2&&ne<=4&&ue>=2&&ue<=4?R.set(W+ne,P+ue,!0,!0):R.set(W+ne,P+ue,!1,!0))}}function j(R){const T=R.size;for(let z=8;z>ne&1)===1,R.set(te,W,P,!0),R.set(W,te,P,!0)}function Y(R,T,z){const Z=R.size,te=S.getEncodedBits(T,z);let W,P;for(W=0;W<15;W++)P=(te>>W&1)===1,W<6?R.set(W,8,P,!0):W<8?R.set(W+1,8,P,!0):R.set(Z-15+W,8,P,!0),W<8?R.set(8,Z-W-1,P,!0):W<9?R.set(8,15-W-1+1,P,!0):R.set(8,15-W-1,P,!0);R.set(Z-8,8,1,!0)}function G(R,T){const z=R.size;let Z=-1,te=z-1,W=7,P=0;for(let ne=z-1;ne>0;ne-=2)for(ne===6&&ne--;;){for(let ue=0;ue<2;ue++)if(!R.isReserved(te,ne-ue)){let ge=!1;P>>W&1)===1),R.set(te,ne-ue,ge),W--,W===-1&&(P++,W=7)}if(te+=Z,te<0||z<=te){te-=Z,Z=-Z;break}}}function k(R,T,z){const Z=new c;z.forEach(function(ue){Z.put(ue.mode.bit,4),Z.put(ue.getLength(),y.getCharCountIndicator(ue.mode,R)),ue.write(Z)});const te=i.getSymbolTotalCodewords(R),W=v.getTotalCodewordsCount(R,T),P=(te-W)*8;for(Z.getLengthInBits()+4<=P&&Z.put(0,4);Z.getLengthInBits()%8!==0;)Z.putBit(0);const ne=(P-Z.getLengthInBits())/8;for(let ue=0;ue=7&&L(ue,T),G(ue,P),isNaN(Z)&&(Z=m.getBestMask(ue,Y.bind(null,ue,z))),m.applyMask(Z,ue),Y(ue,z,Z),{modules:ue,version:T,errorCorrectionLevel:z,maskPattern:Z,segments:te}}return Tf.create=function(T,z){if(typeof T>"u"||T==="")throw new Error("No input text");let Z=r.M,te,W;return typeof z<"u"&&(Z=r.from(z.errorCorrectionLevel,r.M),te=b.from(z.version),W=m.from(z.maskPattern),z.toSJISFunc&&i.setToSJISFunction(z.toSJISFunc)),I(T,te,Z,W)},Tf}var Xf={},Zf={},Cy;function kp(){return Cy||(Cy=1,(function(i){function r(c){if(typeof c=="number"&&(c=c.toString()),typeof c!="string")throw new Error("Color should be defined as hex string");let o=c.slice().replace("#","").split("");if(o.length<3||o.length===5||o.length>8)throw new Error("Invalid hex color: "+c);(o.length===3||o.length===4)&&(o=Array.prototype.concat.apply([],o.map(function(f){return[f,f]}))),o.length===6&&o.push("F","F");const s=parseInt(o.join(""),16);return{r:s>>24&255,g:s>>16&255,b:s>>8&255,a:s&255,hex:"#"+o.slice(0,6).join("")}}i.getOptions=function(o){o||(o={}),o.color||(o.color={});const s=typeof o.margin>"u"||o.margin===null||o.margin<0?4:o.margin,f=o.width&&o.width>=21?o.width:void 0,m=o.scale||4;return{width:f,scale:f?4:m,margin:s,color:{dark:r(o.color.dark||"#000000ff"),light:r(o.color.light||"#ffffffff")},type:o.type,rendererOpts:o.rendererOpts||{}}},i.getScale=function(o,s){return s.width&&s.width>=o+s.margin*2?s.width/(o+s.margin*2):s.scale},i.getImageWidth=function(o,s){const f=i.getScale(o,s);return Math.floor((o+s.margin*2)*f)},i.qrToImageData=function(o,s,f){const m=s.modules.size,v=s.modules.data,p=i.getScale(m,f),b=Math.floor((m+f.margin*2)*p),S=f.margin*p,y=[f.color.light,f.color.dark];for(let E=0;E=S&&A>=S&&E"u"&&(!m||!m.getContext)&&(p=m,m=void 0),m||(b=o()),p=r.getOptions(p);const S=r.getImageWidth(f.modules.size,p),y=b.getContext("2d"),E=y.createImageData(S,S);return r.qrToImageData(E.data,f,p),c(y,b,S),y.putImageData(E,0,0),b},i.renderToDataURL=function(f,m,v){let p=v;typeof p>"u"&&(!m||!m.getContext)&&(p=m,m=void 0),p||(p={});const b=i.render(f,m,p),S=p.type||"image/png",y=p.rendererOpts||{};return b.toDataURL(S,y.quality)}})(Xf)),Xf}var Kf={},wy;function aN(){if(wy)return Kf;wy=1;const i=kp();function r(s,f){const m=s.a/255,v=f+'="'+s.hex+'"';return m<1?v+" "+f+'-opacity="'+m.toFixed(2).slice(1)+'"':v}function c(s,f,m){let v=s+f;return typeof m<"u"&&(v+=" "+m),v}function o(s,f,m){let v="",p=0,b=!1,S=0;for(let y=0;y0&&E>0&&s[y-1]||(v+=b?c("M",E+m,.5+A+m):c("m",p,0),p=0,b=!1),E+1':"",A="',j='viewBox="0 0 '+y+" "+y+'"',L=''+E+A+` -`;return typeof v=="function"&&v(null,L),L},Kf}var Ty;function iN(){if(Ty)return si;Ty=1;const i=L3(),r=nN(),c=lN(),o=aN();function s(f,m,v,p,b){const S=[].slice.call(arguments,1),y=S.length,E=typeof S[y-1]=="function";if(!E&&!i())throw new Error("Callback required as last argument");if(E){if(y<2)throw new Error("Too few arguments provided");y===2?(b=v,v=m,m=p=void 0):y===3&&(m.getContext&&typeof b>"u"?(b=p,p=void 0):(b=p,p=v,v=m,m=void 0))}else{if(y<1)throw new Error("Too few arguments provided");return y===1?(v=m,m=p=void 0):y===2&&!m.getContext&&(p=v,v=m,m=void 0),new Promise(function(A,j){try{const D=r.create(v,p);A(f(D,m,p))}catch(D){j(D)}})}try{const A=r.create(v,p);b(null,f(A,m,p))}catch(A){b(A)}}return si.create=r.create,si.toCanvas=s.bind(null,c.render),si.toDataURL=s.bind(null,c.renderToDataURL),si.toString=s.bind(null,function(f,m,v){return o.render(f,v)}),si}var uN=iN();const If=sd(uN),rN=()=>{const{showWechatModal:i,setShowWechatModal:r,showToast:c,fetchTelemetry:o}=Pn(),[s,f]=x.useState(null),[m,v]=x.useState(""),[p,b]=x.useState(!1),[S,y]=x.useState(""),[E,A]=x.useState(!1),j=async()=>{var k;b(!0);try{const I=await(await fetch("/api/clawbot/qrcode",{method:"POST"})).json();f(I);const R=(k=I==null?void 0:I.login)==null?void 0:k.qrcode_url;if(R){const T=await If.toDataURL(R,{width:240,margin:2,color:{dark:"#09090b",light:"#ffffff"}});v(T)}}catch{c("获取微信 ClawBot 二维码失败")}finally{b(!1)}};x.useEffect(()=>{if(!i)return;let k=!1;(async()=>{var R,T,z;try{const te=await(await fetch("/api/clawbot/status")).json();if(k)return;if(f(te),!te.connected&&(!((R=te.login)!=null&&R.active)||!((T=te.login)!=null&&T.qrcode_url)))await j();else if((z=te.login)!=null&&z.qrcode_url){const W=await If.toDataURL(te.login.qrcode_url,{width:240,margin:2,color:{dark:"#09090b",light:"#ffffff"}});k||v(W)}}catch{}})();const I=setInterval(async()=>{var R;try{const T=await fetch("/api/clawbot/status");if(!T.ok)return;const z=await T.json();if(k)return;if(f(z),(R=z.login)!=null&&R.qrcode_url){const Z=await If.toDataURL(z.login.qrcode_url,{width:240,margin:2,color:{dark:"#09090b",light:"#ffffff"}});k||v(Z)}}catch{}},1500);return()=>{k=!0,clearInterval(I)}},[i]);const D=async k=>{if(k.preventDefault(),!!S.trim()){A(!0);try{const I=await(await fetch("/api/clawbot/verify",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({code:S.trim()})})).json();f(I),y(""),c("配对码已提交,正在等待微信验证...")}catch{c("配对码提交失败")}finally{A(!1)}}},L=async()=>{try{const V=await(await fetch("/api/clawbot/disconnect",{method:"POST"})).json();f(V),v(""),o(),c("已断开微信 ClawBot 连接")}catch{c("断开失败")}},Y=!!(s!=null&&s.connected),G=s==null?void 0:s.login;return h.jsx(Ud,{open:i,onOpenChange:r,children:h.jsxs(Eo,{className:"max-w-lg p-6 space-y-5",children:[h.jsx("div",{className:"flex items-start justify-between gap-3 border-b hl-border pb-4",children:h.jsxs("div",{className:"flex items-center gap-3",children:[h.jsx("div",{className:"w-10 h-10 rounded-xl flex items-center justify-center border hl-border shrink-0",style:{backgroundColor:"rgba(16, 185, 129, 0.14)",color:"var(--success)"},children:h.jsx(My,{className:"w-5 h-5"})}),h.jsxs("div",{children:[h.jsxs("div",{className:"flex items-center gap-2",children:[h.jsx(Co,{className:"text-sm font-bold",children:"微信 ClawBot · M6 Mac mini 直连通道"}),h.jsx(Jn,{variant:Y?"success":"accent",children:Y?"已连接在线":"扫码绑定"})]}),h.jsx(No,{className:"text-xs font-mono-num mt-0.5",children:"@tencent-weixin/openclaw-weixin · ilinkai.weixin.qq.com"})]})]})}),Y?h.jsxs("div",{className:"space-y-4",children:[h.jsxs("div",{className:"p-4 rounded-xl border flex items-center justify-between",style:{backgroundColor:"var(--success-soft)",borderColor:"rgba(16, 185, 129, 0.3)"},children:[h.jsxs("div",{className:"flex items-center gap-3",children:[h.jsx(r2,{className:"w-5 h-5 shrink-0",style:{color:"var(--success)"}}),h.jsxs("div",{children:[h.jsx("div",{className:"text-xs font-bold",children:"微信 ClawBot 长轮询守护线程运行中"}),h.jsxs("div",{className:"text-[11px] font-mono-num mt-0.5",style:{color:"var(--text-muted)"},children:["Bot ID: ",s==null?void 0:s.bot_id," · 累计收发: ",(s==null?void 0:s.msg_count)??0," 条"]})]})]}),h.jsxs(nt,{variant:"outline",size:"sm",onClick:L,children:[h.jsx(V2,{className:"w-3.5 h-3.5"}),h.jsx("span",{children:"重新绑定"})]})]}),h.jsxs("div",{className:"p-4 rounded-xl hl-muted border hl-border space-y-2.5 text-xs",children:[h.jsx("div",{className:"font-semibold",children:"📱 现在打开手机微信「微信 ClawBot」可直接发送:"}),h.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-2 font-mono-num text-[11px]",children:[h.jsxs("div",{className:"p-2 rounded hl-card",children:[h.jsx("span",{style:{color:"var(--accent)"},children:"状态"})," · 查看 M6 & 极空间遥测"]}),h.jsxs("div",{className:"p-2 rounded hl-card",children:[h.jsx("span",{style:{color:"var(--accent)"},children:"备份"})," · 立即打包备份至 20TB NAS"]}),h.jsxs("div",{className:"p-2 rounded hl-card",children:[h.jsx("span",{style:{color:"var(--accent)"},children:"屏幕"})," · 截取 AGY 终端实时画面"]}),h.jsxs("div",{className:"p-2 rounded hl-card",children:[h.jsx("span",{style:{color:"var(--accent)"},children:"$ df -h"})," · 执行任意 Mac mini 命令"]}),h.jsxs("div",{className:"p-2 rounded hl-card sm:col-span-2",children:[h.jsx("span",{style:{color:"var(--accent)"},children:"> 你好"})," 或直接发任意问题 · 注入 AGY 终端或调用 AI 回答"]})]})]})]}):h.jsxs("div",{className:"space-y-4",children:[h.jsxs("div",{className:"flex flex-col items-center justify-center p-5 rounded-xl hl-muted border hl-border space-y-3",children:[m?h.jsx("div",{className:"p-3 bg-white rounded-xl shadow-md border",children:h.jsx("img",{src:m,alt:"WeChat ClawBot QR Code",className:"w-48 h-48 block"})}):h.jsx("div",{className:"w-48 h-48 rounded-xl hl-card flex items-center justify-center text-xs font-mono-num",children:p?"正在向微信申请二维码...":"点击下方按钮生成二维码"}),h.jsxs("div",{className:"flex items-center gap-2 text-xs font-medium text-center",children:[h.jsx(B2,{className:"w-4 h-4 shrink-0",style:{color:"var(--accent)"}}),h.jsx("span",{children:(G==null?void 0:G.message)||"请使用手机微信扫描上方二维码启用 ClawBot"})]}),h.jsxs("div",{className:"flex items-center gap-2",children:[h.jsxs(nt,{variant:"outline",size:"sm",onClick:j,disabled:p,children:[h.jsx(R2,{className:"w-3.5 h-3.5"}),h.jsx("span",{children:p?"刷新中...":"刷新二维码"})]}),(G==null?void 0:G.qrcode_url)&&h.jsx(nt,{variant:"ghost",size:"sm",asChild:!0,children:h.jsxs("a",{href:G.qrcode_url,target:"_blank",rel:"noopener noreferrer",className:"font-mono-num",children:[h.jsx(_2,{className:"w-3.5 h-3.5"}),h.jsx("span",{children:"打开备用链接 ↗"})]})})]})]}),(G==null?void 0:G.status)==="need_verifycode"&&h.jsxs("form",{onSubmit:D,className:"p-4 rounded-xl border space-y-2.5",style:{backgroundColor:"var(--accent-soft)",borderColor:"var(--accent)"},children:[h.jsx("label",{className:"block text-xs font-bold",children:"🔢 手机微信上显示了配对数字,请在下方输入:"}),h.jsxs("div",{className:"flex items-center gap-2",children:[h.jsx(Bd,{type:"text",value:S,onChange:k=>y(k.target.value),placeholder:"输入手机微信显示的 6 位数字...",className:"font-mono-num",autoFocus:!0}),h.jsxs(nt,{type:"submit",disabled:E,children:[h.jsx(M2,{className:"w-3.5 h-3.5"}),h.jsx("span",{children:"验证"})]})]})]})]}),h.jsx("div",{className:"flex items-center justify-end pt-1",children:h.jsx(nt,{variant:"outline",onClick:()=>r(!1),children:"关闭窗口"})})]})})},oN={light:{id:"light",name:"Shadcn Clean Light (浅色纯净)",description:"对标 Apple / Stripe / Linear 浅色日光模式,高对比深灰文字配纯净白卡片与冷灰微边框。",tokens:{"--bg-page":"#f8fafc","--bg-card":"#ffffff","--bg-widget":"#f8fafc","--bg-muted":"#f1f5f9","--bg-hover":"#ffffff","--text-main":"#0f172a","--text-muted":"#64748b","--text-subtle":"#94a3b8","--border-color":"#e2e8f0","--border-hover":"#cbd5e1","--primary":"#0f172a","--primary-fg":"#ffffff","--accent":"#2563eb","--accent-soft":"rgba(37, 99, 235, 0.08)","--success":"#10b981","--success-soft":"rgba(16, 185, 129, 0.10)"}},dark:{id:"dark",name:"Catppuccin / Linear Dark (深色极客)",description:"融合 Catppuccin Mocha 与 Linear 暗黑规范,柔和护眼的深邃蓝黑基底配高辨识度状态色。",tokens:{"--bg-page":"#11111b","--bg-card":"#1e1e2e","--bg-widget":"#181825","--bg-muted":"#313244","--bg-hover":"#242438","--text-main":"#cdd6f4","--text-muted":"#a6adc8","--text-subtle":"#6c7086","--border-color":"#313244","--border-hover":"#45475a","--primary":"#cba6f7","--primary-fg":"#11111b","--accent":"#89b4fa","--accent-soft":"rgba(137, 180, 250, 0.15)","--success":"#a6e3a1","--success-soft":"rgba(166, 227, 161, 0.15)"}}},yo={"homepage-3col":{id:"homepage-3col",name:"Homepage 经典三列矩阵 (3-Column Grid)",description:"gethomepage.dev 标志性对称 3 列分组卡片,底部内嵌 3 格实时遥测单元。",gridClass:"grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4"},"bento-split":{id:"bento-split",name:"Shadcn 双列宽屏卡片 (2-Column Wide Bento)",description:"适合大字号阅读的 2 列宽体卡片布局,留白更充裕。",gridClass:"grid-cols-1 lg:grid-cols-2 gap-5"},"compact-2col":{id:"compact-2col",name:"高密度四列紧凑矩阵 (4-Column Dense)",description:"适合超宽显示器的一屏高密度 4 列布局。",gridClass:"grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-3.5"}},cN=()=>{const[i,r]=x.useState("form-inputs"),{theme:c,resolvedTheme:o,layoutPreset:s,setTheme:f,setLayoutPreset:m,setViewMode:v,setShowCmdPalette:p,telemetry:b,showToast:S}=Pn(),[y,E]=x.useState(!0),[A,j]=x.useState("drawer"),[D,L]=x.useState(""),[Y,G]=x.useState("192.168.31.164"),[k,V]=x.useState(!0),I=[{id:"layout-architecture",group:"FOUNDATIONS / 架构与布局",title:"01. AppShell 双层顶栏与网格布局",icon:h.jsx(w2,{className:"w-3.5 h-3.5"})},{id:"theme-tokens",group:"FOUNDATIONS / 架构与布局",title:"02. 双主题色板与自动切换规范",icon:h.jsx(C2,{className:"w-3.5 h-3.5"})},{id:"form-inputs",group:"SHADCN / RADIX UI 组件",title:"03. shadcn/ui + Radix 原语与认证弹窗",icon:h.jsx(_0,{className:"w-3.5 h-3.5"})},{id:"service-card",group:"SHADCN / RADIX UI 组件",title:"04. ServiceCard 内联遥测卡片",icon:h.jsx(h2,{className:"w-3.5 h-3.5"})},{id:"ssh-shelf",group:"SHADCN / RADIX UI 组件",title:"05. SshShelf 快捷指令栏",icon:h.jsx(md,{className:"w-3.5 h-3.5"})}];return h.jsx("div",{className:"flex-1 max-w-7xl w-full mx-auto px-4 sm:px-6 lg:px-8 py-6",children:h.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-4 gap-6 items-start",children:[h.jsxs(Ol,{className:"p-4 space-y-4 lg:sticky lg:top-20",children:[h.jsxs("div",{className:"flex items-center justify-between border-b hl-border pb-3",children:[h.jsxs("div",{className:"flex items-center gap-2",children:[h.jsx(Oy,{className:"w-4 h-4",style:{color:"var(--accent)"}}),h.jsx("span",{className:"text-xs font-bold uppercase tracking-wider",children:"shadcn/ui 组件库"})]}),h.jsx(Jn,{variant:"accent",children:"Radix + cmdk"})]}),h.jsx("div",{className:"space-y-1",children:I.map(R=>h.jsxs("button",{onClick:()=>r(R.id),className:"w-full px-3 py-2 rounded-lg text-left text-xs font-medium flex items-center gap-2.5 transition-all cursor-pointer",style:i===R.id?{backgroundColor:"var(--accent-soft)",color:"var(--accent)"}:{color:"var(--text-muted)"},children:[R.icon,h.jsx("span",{className:"truncate",children:R.title})]},R.id))}),h.jsxs("div",{className:"pt-3 border-t hl-border space-y-2 text-xs",children:[h.jsx("div",{className:"text-[11px] font-semibold",style:{color:"var(--text-muted)"},children:"全局外观状态预览 (@radix-ui/react-tabs)"}),h.jsx(ed,{value:c,onValueChange:R=>f(R),children:h.jsxs(ho,{className:"w-full grid grid-cols-3",children:[h.jsx(ua,{value:"system",children:"自动"}),h.jsx(ua,{value:"light",children:"浅色"}),h.jsx(ua,{value:"dark",children:"深色"})]})}),h.jsx(nt,{onClick:()=>v("dashboard"),className:"w-full mt-2",children:"返回中控台主页"})]})]}),h.jsxs("div",{className:"lg:col-span-3 space-y-6",children:[i==="layout-architecture"&&h.jsx("div",{className:"space-y-6",children:h.jsxs(Ol,{className:"p-6 space-y-4",children:[h.jsx("div",{className:"flex items-center justify-between border-b hl-border pb-4",children:h.jsxs("div",{children:[h.jsx("span",{className:"text-[11px] font-mono-num uppercase tracking-wider",style:{color:"var(--accent)"},children:"Foundations / AppShell Layout"}),h.jsx("h2",{className:"text-lg font-bold mt-0.5",children:"标准双层顶栏架构 (Two-Tier AppShell) & 响应式网格切换"})]})}),h.jsxs("p",{className:"text-xs leading-relaxed",style:{color:"var(--text-muted)"},children:["参考 ",h.jsx("strong",{children:"Vercel Geist / shadcn/ui Dashboard-01 / GitHub AppShell"})," ","标准规范,将原本容易挤压折行的单层顶栏拆分为职责清晰的双层结构:"]}),h.jsxs("div",{className:"p-4 rounded-xl hl-muted border hl-border space-y-2.5 font-mono-num text-xs",children:[h.jsxs("div",{className:"p-3 rounded-lg hl-card flex items-center justify-between",children:[h.jsx("span",{children:"[左] 🍎 HomeLab · Radix Tabs 切换 (中控台 / Storybook)"}),h.jsx("span",{style:{color:"var(--accent)"},children:"[最右固定] 🔍 搜索 ⌘K · >_ AGY 终端 · ☀️/🌙 主题切换"})]}),h.jsxs("div",{className:"p-3 rounded-lg hl-card flex items-center justify-between",children:[h.jsx("span",{style:{color:"var(--success)"},children:"[左] 实时硬件遥测条 (M6 CPU · RAM · Z4 20TB · SG 专线)"}),h.jsx("span",{children:"[右对齐] Radix Tabs 路由切换器 (智能路由 / 443 / 10443 / LAN)"})]})]}),h.jsxs("div",{className:"pt-2 space-y-3",children:[h.jsx("div",{className:"text-xs font-semibold",children:"选择主页卡片网格布局预设(点击立即应用到主页):"}),h.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-3.5",children:Object.keys(yo).map(R=>{const T=yo[R],z=s===R;return h.jsxs("div",{onClick:()=>m(R),className:"hl-card hl-card-interactive p-4 cursor-pointer space-y-2",style:z?{borderColor:"var(--accent)"}:{},children:[h.jsxs("div",{className:"flex items-center justify-between",children:[h.jsx("span",{className:"text-xs font-bold",children:T.name}),z&&h.jsx("span",{className:"w-4 h-4 rounded-full flex items-center justify-center",style:{backgroundColor:"var(--accent)",color:"#fff"},children:h.jsx(i2,{className:"w-2.5 h-2.5"})})]}),h.jsx("p",{className:"text-[11px]",style:{color:"var(--text-muted)"},children:T.description}),h.jsx("code",{className:"text-[10px] font-mono-num block pt-1",style:{color:"var(--accent)"},children:T.gridClass})]},R)})})]})]})}),i==="theme-tokens"&&h.jsxs(Ol,{className:"p-6 space-y-6",children:[h.jsxs("div",{className:"border-b hl-border pb-4 flex items-center justify-between",children:[h.jsxs("div",{children:[h.jsx("span",{className:"text-[11px] font-mono-num uppercase tracking-wider",style:{color:"var(--accent)"},children:"Foundations / Color System"}),h.jsxs("h2",{className:"text-lg font-bold mt-0.5",children:["主流双主题色板规范(当前生效:",o==="dark"?"深色极客":"浅色纯净",")"]})]}),h.jsxs(Jn,{variant:"secondary",children:["模式: ",c==="system"?"跟随设备自动切换":"手动锁定"]})]}),h.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-5",children:["light","dark"].map(R=>{const T=oN[R];return h.jsxs("div",{className:"rounded-xl p-5 space-y-4 border",style:{backgroundColor:T.tokens["--bg-page"],color:T.tokens["--text-main"],borderColor:T.tokens["--border-color"]},children:[h.jsxs("div",{className:"flex items-center justify-between border-b pb-3",style:{borderColor:T.tokens["--border-color"]},children:[h.jsxs("div",{children:[h.jsx("div",{className:"text-sm font-bold",children:T.name}),h.jsx("div",{className:"text-xs mt-0.5",style:{color:T.tokens["--text-muted"]},children:T.description})]}),h.jsx("button",{onClick:()=>f(R),className:"px-2.5 py-1 rounded-md text-xs font-mono-num font-semibold cursor-pointer",style:{backgroundColor:T.tokens["--primary"],color:T.tokens["--primary-fg"]},children:"预览此主题"})]}),h.jsx("div",{className:"grid grid-cols-2 gap-2",children:Object.entries(T.tokens).map(([z,Z])=>h.jsxs("div",{className:"p-2 rounded-lg border flex items-center gap-2",style:{backgroundColor:T.tokens["--bg-card"],borderColor:T.tokens["--border-color"]},children:[h.jsx("span",{className:"w-5 h-5 rounded border shrink-0",style:{backgroundColor:Z,borderColor:T.tokens["--border-hover"]}}),h.jsxs("div",{className:"min-w-0",children:[h.jsx("div",{className:"text-[10px] font-mono-num font-semibold truncate",children:z}),h.jsx("div",{className:"text-[10px] font-mono-num truncate",style:{color:T.tokens["--text-muted"]},children:Z})]})]},z))})]},T.id)})})]}),i==="form-inputs"&&h.jsxs(Ol,{className:"p-6 space-y-6",children:[h.jsxs("div",{className:"border-b hl-border pb-4 flex items-center justify-between",children:[h.jsxs("div",{children:[h.jsx("span",{className:"text-[11px] font-mono-num uppercase tracking-wider",style:{color:"var(--accent)"},children:"src/components/ui/* · Official shadcn/ui + Radix Primitives + cmdk"}),h.jsx("h2",{className:"text-lg font-bold mt-0.5",children:"开源 `shadcn/ui` 组件库(`Input` / `Button` / `Switch` / `Badge` / `CommandDialog` / `AuthGateCard`)"})]}),h.jsx(_0,{className:"w-4 h-4",style:{color:"var(--accent)"}})]}),h.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-6 items-start",children:[h.jsxs("div",{className:"p-5 rounded-xl hl-muted border hl-border space-y-4",children:[h.jsx("div",{className:"text-xs font-bold uppercase tracking-wider",style:{color:"var(--text-muted)"},children:"1. `src/components/ui/*` 标准原语展示"}),h.jsxs("div",{className:"space-y-1.5",children:[h.jsx("label",{className:"block text-xs font-medium",style:{color:"var(--text-muted)"},children:"Button 变体 (`cva` + `@radix-ui/react-slot`)"}),h.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[h.jsx(nt,{variant:"default",children:"Primary 主按钮"}),h.jsx(nt,{variant:"outline",children:"Outline 描边"}),h.jsx(nt,{variant:"secondary",children:"Secondary 次级"}),h.jsx(nt,{variant:"accent",children:"Accent 高亮"}),h.jsx(nt,{variant:"ghost",onClick:()=>p(!0),children:"唤起 cmdk 面板 ⌘K"})]})]}),h.jsxs("div",{className:"space-y-1.5",children:[h.jsx("label",{className:"block text-xs font-medium",style:{color:"var(--text-muted)"},children:"Badge 标签与 `@radix-ui/react-switch` 开关"}),h.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-2 p-2.5 rounded-lg hl-card",children:[h.jsxs("div",{className:"flex items-center gap-1.5",children:[h.jsx(Jn,{variant:"default",children:"Default"}),h.jsx(Jn,{variant:"accent",children:"Radix UI"}),h.jsx(Jn,{variant:"success",children:"Online"}),h.jsx(Jn,{variant:"outline",children:"v3.2"})]}),h.jsx(go,{checked:k,onCheckedChange:V})]})]}),h.jsxs("div",{className:"space-y-1.5",children:[h.jsx("label",{className:"block text-xs font-medium",style:{color:"var(--text-muted)"},children:"`InputGroup` 组合输入框"}),h.jsxs(vo,{children:[h.jsx(dd,{className:"w-4 h-4 shrink-0",style:{color:"var(--text-subtle)"}}),h.jsx("input",{type:"text",value:D,onChange:R=>L(R.target.value),placeholder:"搜索服务、SSH 指令或节点..."}),h.jsx("kbd",{className:"px-1.5 py-0.5 text-[10px] font-mono-num rounded hl-card border hl-border",style:{color:"var(--text-muted)"},children:"⌘K"})]})]}),h.jsxs("div",{className:"space-y-1.5",children:[h.jsx("label",{className:"block text-xs font-medium",style:{color:"var(--text-muted)"},children:"`Input` 等宽字体输入框"}),h.jsx(Bd,{type:"text",value:Y,onChange:R=>G(R.target.value),className:"font-mono-num",placeholder:"192.168.31.164"})]})]}),h.jsx("div",{className:"flex flex-col items-center",children:h.jsx(qd,{embedded:!0,targetUrl:"https://agy.961504.xyz",onSuccess:()=>S("SSO 认证成功!已签发 30 天全域名通行 Cookie")})})]})]}),i==="service-card"&&h.jsxs(Ol,{className:"p-6 space-y-6",children:[h.jsxs("div",{className:"border-b hl-border pb-4 flex items-center justify-between",children:[h.jsxs("div",{children:[h.jsx("span",{className:"text-[11px] font-mono-num uppercase tracking-wider",style:{color:"var(--accent)"},children:"Components / ServiceCard"}),h.jsx("h2",{className:"text-lg font-bold mt-0.5",children:"三段式内联遥测卡片 (ServiceCard Interactive Story)"})]}),h.jsx(H2,{className:"w-4 h-4",style:{color:"var(--accent)"}})]}),h.jsxs("div",{className:"p-4 rounded-xl hl-muted border hl-border flex flex-wrap items-center gap-6 text-xs",children:[h.jsxs("div",{className:"flex items-center gap-2.5",children:[h.jsx("span",{className:"font-semibold",children:"在线状态 (online):"}),h.jsx(go,{checked:y,onCheckedChange:E}),h.jsx("span",{className:"font-mono-num",children:y?"true":"false"})]}),h.jsxs("div",{className:"flex items-center gap-2",children:[h.jsx("span",{className:"font-semibold",children:"右上角动作按钮 (actionType):"}),["drawer","backup",void 0].map((R,T)=>h.jsx(nt,{variant:A===R?"accent":"outline",size:"sm",onClick:()=>j(R),className:"font-mono-num",children:R||"route-badge"},T))]})]}),h.jsx("div",{className:"max-w-md mx-auto py-4",children:h.jsx(B1,{card:{id:"agy",title:"AGY 云端工作台",subtitle:"agy.961504.xyz · ttyd + tmux",iconUrl:"https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons/png/google-gemini.png",online:y,actionType:A,desc:"M6 Mac mini 上的 24 小时常驻 AI 编程终端,已同步 Google 登录态并锁定新加坡出口,关掉网页后台继续运行。",edgeUrl:"https://agy.961504.xyz",homeUrl:"https://agy.home.961504.xyz:10443",lanUrl:"http://192.168.31.164:7681",stats:[{label:"M6 CPU 负载",value:`${b.mini.cpu_pct}%`},{label:"已用内存",value:`${b.mini.mem_used_gb} / 24 GB`},{label:"tmux 会话",value:"常驻运行中",highlight:!0}]}})})]}),i==="ssh-shelf"&&h.jsxs(Ol,{className:"p-6 space-y-6",children:[h.jsxs("div",{className:"border-b hl-border pb-4",children:[h.jsx("span",{className:"text-[11px] font-mono-num uppercase tracking-wider",style:{color:"var(--accent)"},children:"Components / SshShelf"}),h.jsx("h2",{className:"text-lg font-bold mt-0.5",children:"底部 SSH 快捷复制与运维操作栏"})]}),h.jsx(k1,{})]})]})]})})},sN=()=>{var A;const{telemetry:i,toast:r,viewMode:c,layoutPreset:o,fetchTelemetry:s,setShowCmdPalette:f,getEffectiveMode:m,routeMode:v}=Pn(),[p,b]=x.useState(()=>typeof window>"u"?null:new URLSearchParams(window.location.search).get("auth_redirect"));x.useEffect(()=>{s();const j=setInterval(s,3e3),D=L=>{(L.metaKey||L.ctrlKey)&&L.key.toLowerCase()==="k"&&(L.preventDefault(),f(!0))};return window.addEventListener("keydown",D),()=>{clearInterval(j),window.removeEventListener("keydown",D)}},[s,f]);const S=x.useMemo(()=>{const j=m();return j==="lan"?"LAN 局域网极速直连 (192.168.31.x)":j==="home10443"?"10443 家宽公网 HTTPS 直连":"443 免端口 HTTPS 直达 (*.961504.xyz)"},[m,v]),y=((A=yo[o])==null?void 0:A.gridClass)||yo["homepage-3col"].gridClass,E=x.useMemo(()=>{const j=i;return[{title:"核心工作台与私有云存储",subtitle:"Core Workbench & Storage",showRouteHint:!0,items:[{id:"agy",title:"AGY 云端工作台",subtitle:"agy.961504.xyz · ttyd + tmux",iconUrl:"https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons/png/google-gemini.png",online:j.services.agy,actionType:"drawer",desc:"M6 Mac mini 上的 24 小时常驻 AI 编程终端,已同步 Google 登录态并锁定新加坡出口,关掉网页后台继续运行。",edgeUrl:"https://agy.961504.xyz",homeUrl:"https://agy.home.961504.xyz:10443",lanUrl:"http://192.168.31.164:7681",stats:[{label:"M6 CPU 负载",value:`${j.mini.cpu_pct}%`},{label:"已用内存",value:`${j.mini.mem_used_gb} / 24 GB`},{label:"tmux 会话",value:j.mini.agy_tmux?"常驻运行中":"待机",highlight:!0}]},{id:"zspace",title:"极空间 Z4 私有云",subtitle:"192.168.31.185 · 20TB RAID 存储池",iconUrl:"https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons/png/synology-drive.png",online:j.services.nas,desc:"家庭 20TB 大容量存储中心、极影视蓝光影院与手机相册备份,已自动 SMB 挂载至 Mac mini ~/nas。",edgeUrl:"https://z4.home.961504.xyz:10443",homeUrl:"https://z4.home.961504.xyz:10443",lanUrl:"http://192.168.31.185:5055",stats:[{label:"剩余可用",value:`${j.nas.free_tb} TB`,highlight:!0},{label:"已用容量",value:`${j.nas.used_tb} TB (${j.nas.pct}%)`},{label:"SMB 挂载",value:j.nas.mounted?"~/nas 已挂载":"重连中"}]},{id:"vaultwarden",title:"Vaultwarden 密码保险箱",subtitle:"vw.961504.xyz · Bitwarden 兼容",iconUrl:"https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons/png/vaultwarden.png",online:j.services.vaultwarden,actionType:"backup",desc:"自托管全平台加密密码库,支持 iOS / Android / 浏览器插件自动填充,每天凌晨 03:30 自动打包灾备至极空间。",edgeUrl:"https://vw.961504.xyz",homeUrl:"https://vw.home.961504.xyz:10443",lanUrl:"http://192.168.31.164:8222",stats:[{label:"容器状态",value:"Healthy",highlight:!0},{label:"最近极空间灾备",value:j.nas.latest_backup},{label:"Mac SSD 占用",value:`${j.mini.disk_pct}%`}]}]},{title:"网络网关、AI 专线与外部哨兵",subtitle:"Network Gateway & Cloud Edge",showRouteHint:!1,items:[{id:"clash",title:"Mihomo 路由分流面板",subtitle:"192.168.31.1:9999 · ShellCrash",iconUrl:"https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons/png/clash.png",online:j.services.clash,desc:"小米主路由器透明网关控制台,实时监控全屋设备流量、分流规则与狮城 AI 算力专线锁定状态。",edgeUrl:"https://clash.home.961504.xyz:10443/ui/",homeUrl:"https://clash.home.961504.xyz:10443/ui/",lanUrl:"http://192.168.31.1:9999/ui/",stats:[{label:"AI 锁定策略",value:"狮城节点",highlight:!0},{label:"新加坡延迟",value:j.network.sg_delay_ms>0?`${j.network.sg_delay_ms} ms`:"直连"},{label:"固定出口 IP",value:j.network.sg_egress_ip}]},{id:"router",title:"小米主路由器后台",subtitle:"192.168.31.1 · PPPoE 公网网关",iconUrl:"https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons/png/openwrt.png",online:j.services.router,desc:"管理家庭联通公网宽带拨号、DHCP 静态 IP 绑定、10443 与 41641 端口转发及全屋内网 Split-DNS。",edgeUrl:"https://router.home.961504.xyz:10443",homeUrl:"https://router.home.961504.xyz:10443",lanUrl:"http://192.168.31.1",stats:[{label:"联通公网 IPv4",value:j.network.home_wan_ip,highlight:!0},{label:"泛域名 DDNS",value:"*.home.961504.xyz"},{label:"内网网关",value:"192.168.31.1"}]},{id:"uptime",title:"Uptime Kuma 外部哨兵",subtitle:"status.961504.xyz · SG Azure",iconUrl:"https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons/png/uptime-kuma.png",online:j.services.uptime,desc:"独立部署在新加坡 Azure 公有云上的 24 小时外部监控哨兵,通过 Tailscale P2P 专线实时探测家庭服务。",edgeUrl:"https://status.961504.xyz",homeUrl:"https://status.961504.xyz",lanUrl:"https://status.961504.xyz",stats:[{label:"云端公网 IP",value:"104.43.105.243"},{label:"Tailscale 专线",value:"100.115.204.51"},{label:"外部探测状态",value:"100% 在线",highlight:!0}]}]}]},[i]);return h.jsxs("div",{className:"min-h-screen flex flex-col",children:[r&&h.jsxs("div",{className:"fixed bottom-5 right-5 z-50 hl-card px-4 py-3 flex items-center gap-2.5 shadow-2xl",children:[h.jsx("span",{className:"w-2 h-2 rounded-full",style:{backgroundColor:"var(--success)"}}),h.jsx("span",{className:"text-xs font-medium",children:r})]}),h.jsx(qC,{}),c==="storybook"?h.jsx(cN,{}):h.jsxs("main",{className:"flex-1 max-w-7xl w-full mx-auto px-4 sm:px-6 lg:px-8 py-6 space-y-7",children:[E.map(j=>h.jsxs("section",{className:"space-y-3",children:[h.jsxs("div",{className:"flex items-center justify-between px-0.5",children:[h.jsxs("div",{className:"flex items-center gap-2",children:[h.jsx("h2",{className:"text-xs font-semibold uppercase tracking-wider",style:{color:"var(--text-muted)"},children:j.title}),h.jsxs("span",{className:"text-[11px] font-mono-num",style:{color:"var(--text-subtle)"},children:["· ",j.subtitle]})]}),j.showRouteHint&&h.jsxs("span",{className:"text-[11px] font-mono-num hidden sm:inline",style:{color:"var(--text-subtle)"},children:["当前路由模式: ",S]})]}),h.jsx("div",{className:`grid ${y}`,children:j.items.map(D=>h.jsx(B1,{card:D},D.id))})]},j.title)),h.jsx(k1,{})]}),h.jsx(S3,{}),h.jsx(H3,{}),h.jsx(rN,{}),p&&h.jsx("div",{className:"fixed inset-0 z-50 bg-black/75 backdrop-blur-sm flex items-center justify-center p-4",children:h.jsx(qd,{targetUrl:p,onSuccess:()=>{window.location.href=p},onCancel:()=>{b(null),window.history.replaceState({},"","/")}})})]})};QS.createRoot(document.getElementById("root")).render(h.jsx(gu.StrictMode,{children:h.jsx(sN,{})})); diff --git a/stacks/portal/dist/assets/index-DnLoh9Rp.js b/stacks/portal/dist/assets/index-DnLoh9Rp.js new file mode 100644 index 0000000..cc01818 --- /dev/null +++ b/stacks/portal/dist/assets/index-DnLoh9Rp.js @@ -0,0 +1,276 @@ +var p0=i=>{throw TypeError(i)};var b0=(i,u,c)=>u.has(i)||p0("Cannot "+c);var St=(i,u,c)=>(b0(i,u,"read from private field"),c?c.call(i):u.get(i)),x0=(i,u,c)=>u.has(i)?p0("Cannot add the same private member more than once"):u instanceof WeakSet?u.add(i):u.set(i,c),cf=(i,u,c,o)=>(b0(i,u,"write to private field"),o?o.call(i,c):u.set(i,c),c);function X2(i,u){for(var c=0;co[s]})}}}return Object.freeze(Object.defineProperty(i,Symbol.toStringTag,{value:"Module"}))}(function(){const u=document.createElement("link").relList;if(u&&u.supports&&u.supports("modulepreload"))return;for(const s of document.querySelectorAll('link[rel="modulepreload"]'))o(s);new MutationObserver(s=>{for(const d of s)if(d.type==="childList")for(const h of d.addedNodes)h.tagName==="LINK"&&h.rel==="modulepreload"&&o(h)}).observe(document,{childList:!0,subtree:!0});function c(s){const d={};return s.integrity&&(d.integrity=s.integrity),s.referrerPolicy&&(d.referrerPolicy=s.referrerPolicy),s.crossOrigin==="use-credentials"?d.credentials="include":s.crossOrigin==="anonymous"?d.credentials="omit":d.credentials="same-origin",d}function o(s){if(s.ep)return;s.ep=!0;const d=c(s);fetch(s.href,d)}})();function gd(i){return i&&i.__esModule&&Object.prototype.hasOwnProperty.call(i,"default")?i.default:i}var sf={exports:{}},fr={};/** + * @license React + * react-jsx-runtime.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var S0;function Z2(){if(S0)return fr;S0=1;var i=Symbol.for("react.transitional.element"),u=Symbol.for("react.fragment");function c(o,s,d){var h=null;if(d!==void 0&&(h=""+d),s.key!==void 0&&(h=""+s.key),"key"in s){d={};for(var v in s)v!=="key"&&(d[v]=s[v])}else d=s;return s=d.ref,{$$typeof:i,type:o,key:h,ref:s!==void 0?s:null,props:d}}return fr.Fragment=u,fr.jsx=c,fr.jsxs=c,fr}var N0;function K2(){return N0||(N0=1,sf.exports=Z2()),sf.exports}var f=K2(),ff={exports:{}},be={};/** + * @license React + * react.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var C0;function I2(){if(C0)return be;C0=1;var i=Symbol.for("react.transitional.element"),u=Symbol.for("react.portal"),c=Symbol.for("react.fragment"),o=Symbol.for("react.strict_mode"),s=Symbol.for("react.profiler"),d=Symbol.for("react.consumer"),h=Symbol.for("react.context"),v=Symbol.for("react.forward_ref"),g=Symbol.for("react.suspense"),x=Symbol.for("react.memo"),S=Symbol.for("react.lazy"),p=Symbol.for("react.activity"),N=Symbol.for("react.view_transition"),A=Symbol.iterator;function j(w){return w===null||typeof w!="object"?null:(w=A&&w[A]||w["@@iterator"],typeof w=="function"?w:null)}var z={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},H=Object.assign,q={};function G(w,U,$){this.props=w,this.context=U,this.refs=q,this.updater=$||z}G.prototype.isReactComponent={},G.prototype.setState=function(w,U){if(typeof w!="object"&&typeof w!="function"&&w!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,w,U,"setState")},G.prototype.forceUpdate=function(w){this.updater.enqueueForceUpdate(this,w,"forceUpdate")};function k(){}k.prototype=G.prototype;function V(w,U,$){this.props=w,this.context=U,this.refs=q,this.updater=$||z}var K=V.prototype=new k;K.constructor=V,H(K,G.prototype),K.isPureReactComponent=!0;var _=Array.isArray;function E(){}var R={H:null,A:null,T:null,S:null},Q=Object.prototype.hasOwnProperty;function te(w,U,$){var ee=$.ref;return{$$typeof:i,type:w,key:U,ref:ee!==void 0?ee:null,props:$}}function W(w,U){return te(w.type,U,w.props)}function P(w){return typeof w=="object"&&w!==null&&w.$$typeof===i}function ne(w){var U={"=":"=0",":":"=2"};return"$"+w.replace(/[=:]/g,function($){return U[$]})}var re=/\/+/g;function ge(w,U){return typeof w=="object"&&w!==null&&w.key!=null?ne(""+w.key):U.toString(36)}function F(w){switch(w.status){case"fulfilled":return w.value;case"rejected":throw w.reason;default:switch(typeof w.status=="string"?w.then(E,E):(w.status="pending",w.then(function(U){w.status==="pending"&&(w.status="fulfilled",w.value=U)},function(U){w.status==="pending"&&(w.status="rejected",w.reason=U)})),w.status){case"fulfilled":return w.value;case"rejected":throw w.reason}}throw w}function ae(w,U,$,ee,he){var ie=typeof w;(ie==="undefined"||ie==="boolean")&&(w=null);var Ne=!1;if(w===null)Ne=!0;else switch(ie){case"bigint":case"string":case"number":Ne=!0;break;case"object":switch(w.$$typeof){case i:case u:Ne=!0;break;case S:return Ne=w._init,ae(Ne(w._payload),U,$,ee,he)}}if(Ne)return he=he(w),Ne=ee===""?"."+ge(w,0):ee,_(he)?($="",Ne!=null&&($=Ne.replace(re,"$&/")+"/"),ae(he,U,$,"",function(Ut){return Ut})):he!=null&&(P(he)&&(he=W(he,$+(he.key==null||w&&w.key===he.key?"":(""+he.key).replace(re,"$&/")+"/")+Ne)),U.push(he)),1;Ne=0;var fe=ee===""?".":ee+":";if(_(w))for(var ye=0;ye>>1,I=F[xe];if(0>>1;xes(me,ce))ws(U,me)?(F[xe]=U,F[w]=ce,xe=w):(F[xe]=me,F[J]=ce,xe=J);else if(ws(U,ce))F[xe]=U,F[w]=ce,xe=w;else break e}}return ae}function s(F,ae){var ce=F.sortIndex-ae.sortIndex;return ce!==0?ce:F.id-ae.id}if(i.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var d=performance;i.unstable_now=function(){return d.now()}}else{var h=Date,v=h.now();i.unstable_now=function(){return h.now()-v}}var g=[],x=[],S=1,p=null,N=3,A=!1,j=!1,z=!1,H=!1,q=typeof setTimeout=="function"?setTimeout:null,G=typeof clearTimeout=="function"?clearTimeout:null,k=typeof setImmediate<"u"?setImmediate:null;function V(F){for(var ae=c(x);ae!==null;){if(ae.callback===null)o(x);else if(ae.startTime<=F)o(x),ae.sortIndex=ae.expirationTime,u(g,ae);else break;ae=c(x)}}function K(F){if(z=!1,V(F),!j)if(c(g)!==null)j=!0,_||(_=!0,P());else{var ae=c(x);ae!==null&&ge(K,ae.startTime-F)}}var _=!1,E=-1,R=5,Q=-1;function te(){return H?!0:!(i.unstable_now()-QF&&te());){var xe=p.callback;if(typeof xe=="function"){p.callback=null,N=p.priorityLevel;var I=xe(p.expirationTime<=F);if(F=i.unstable_now(),typeof I=="function"){p.callback=I,V(F),ae=!0;break t}p===c(g)&&o(g),V(F)}else o(g);p=c(g)}if(p!==null)ae=!0;else{var Se=c(x);Se!==null&&ge(K,Se.startTime-F),ae=!1}}break e}finally{p=null,N=ce,A=!1}ae=void 0}}finally{ae?P():_=!1}}}var P;if(typeof k=="function")P=function(){k(W)};else if(typeof MessageChannel<"u"){var ne=new MessageChannel,re=ne.port2;ne.port1.onmessage=W,P=function(){re.postMessage(null)}}else P=function(){q(W,0)};function ge(F,ae){E=q(function(){F(i.unstable_now())},ae)}i.unstable_IdlePriority=5,i.unstable_ImmediatePriority=1,i.unstable_LowPriority=4,i.unstable_NormalPriority=3,i.unstable_Profiling=null,i.unstable_UserBlockingPriority=2,i.unstable_cancelCallback=function(F){F.callback=null},i.unstable_forceFrameRate=function(F){0>F||125xe?(F.sortIndex=ce,u(x,F),c(g)===null&&F===c(x)&&(z?(G(E),E=-1):z=!0,ge(K,ce-xe))):(F.sortIndex=I,u(g,F),j||A||(j=!0,_||(_=!0,P()))),F},i.unstable_shouldYield=te,i.unstable_wrapCallback=function(F){var ae=N;return function(){var ce=N;N=ae;try{return F.apply(this,arguments)}finally{N=ce}}}})(hf)),hf}var T0;function F2(){return T0||(T0=1,mf.exports=J2()),mf.exports}var vf={exports:{}},Nt={};/** + * @license React + * react-dom.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var j0;function P2(){if(j0)return Nt;j0=1;var i=yd();function u(S){var p="https://react.dev/errors/"+S;if(1"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(i)}catch(u){console.error(u)}}return i(),vf.exports=P2(),vf.exports}/** + * @license React + * react-dom-client.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var A0;function $2(){if(A0)return dr;A0=1;var i=F2(),u=yd(),c=Uy();function o(e){var t="https://react.dev/errors/"+e;if(1ga||(e.current=tl[ga],tl[ga]=null,ga--)}function Ye(e,t){ga++,tl[ga]=e.current,e.current=t}var pn=yn(null),yi=yn(null),nl=yn(null),Cr=yn(null);function Er(e,t){switch(Ye(nl,t),Ye(yi,e),Ye(pn,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?jg(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)t=jg(t),e=_g(t,e);else switch(e){case"svg":e=1;break;case"math":e=2;break;default:e=0}}ht(pn),Ye(pn,e)}function ya(){ht(pn),ht(yi),ht(nl)}function _o(e){var t=e.memoizedState;t!==null&&(ai._currentValue=t.memoizedState,Ye(Cr,e)),t=pn.current;var n=_g(t,e.type);t!==n&&(Ye(yi,e),Ye(pn,n))}function wr(e){yi.current===e&&(ht(pn),ht(yi)),Cr.current===e&&(ht(Cr),ai._currentValue=Ut)}var Ao,Id;function ll(e){if(Ao===void 0)try{throw Error()}catch(n){var t=n.stack.trim().match(/\n( *(at )?)/);Ao=t&&t[1]||"",Id=-1)":-1a||C[l]!==D[a]){var Y=` +`+C[l].replace(" at new "," at ");return e.displayName&&Y.includes("")&&(Y=Y.replace("",e.displayName)),Y}while(1<=l&&0<=a);break}}}finally{Ro=!1,Error.prepareStackTrace=n}return(n=e?e.displayName||e.name:"")?ll(n):""}function Jp(e,t){switch(e.tag){case 26:case 27:case 5:return ll(e.type);case 16:return ll("Lazy");case 13:return e.child!==t&&t!==null?ll("Suspense Fallback"):ll("Suspense");case 19:return ll("SuspenseList");case 0:case 15:return Mo(e.type,!1);case 11:return Mo(e.type.render,!1);case 1:return Mo(e.type,!0);case 31:return ll("Activity");case 30:return ll("ViewTransition");default:return""}}function Jd(e){try{var t="",n=null;do t+=Jp(e,n),n=e,e=e.return;while(e);return t}catch(l){return` +Error generating stack: `+l.message+` +`+l.stack}}var Oo=Object.prototype.hasOwnProperty,zo=i.unstable_scheduleCallback,Do=i.unstable_cancelCallback,Fp=i.unstable_shouldYield,Pp=i.unstable_requestPaint,Bt=i.unstable_now,$p=i.unstable_getCurrentPriorityLevel,Fd=i.unstable_ImmediatePriority,Pd=i.unstable_UserBlockingPriority,Tr=i.unstable_NormalPriority,Wp=i.unstable_LowPriority,$d=i.unstable_IdlePriority,eb=i.log,tb=i.unstable_setDisableYieldValue,pi=null,kt=null;function al(e){if(typeof eb=="function"&&tb(e),kt&&typeof kt.setStrictMode=="function")try{kt.setStrictMode(pi,e)}catch{}}var Lt=Math.clz32?Math.clz32:ab,nb=Math.log,lb=Math.LN2;function ab(e){return e>>>=0,e===0?32:31-(nb(e)/lb|0)|0}var jr=256,_r=262144,Ar=4194304;function kl(e){var t=e&42;if(t!==0)return t;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return e&-e;case 262144:case 524288:case 1048576:case 2097152:return e&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return e&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function Rr(e,t,n){var l=e.pendingLanes;if(l===0)return 0;var a=0,r=e.suspendedLanes,m=e.pingedLanes;e=e.warmLanes;var y=l&134217727;return y!==0?(l=y&~r,l!==0?a=kl(l):(m&=y,m!==0?a=kl(m):n||(n=y&~e,n!==0&&(a=kl(n))))):(y=l&~r,y!==0?a=kl(y):m!==0?a=kl(m):n||(n=l&~e,n!==0&&(a=kl(n)))),a===0?0:t!==0&&t!==a&&(t&r)===0&&(r=a&-a,n=t&-t,r>=n||r===32&&(n&4194048)!==0)?t:a}function bi(e,t){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)===0}function Wd(e,t){(t&8)!==0&&(t|=t&32);var n=e.entangledLanes;if(n!==0)for(e=e.entanglements,n&=t;0n;n++)t.push(e);return t}function xi(e,t){e.pendingLanes|=t,t!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function rb(e,t,n,l,a,r){var m=e.pendingLanes;e.pendingLanes=n,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=n,e.entangledLanes&=n,e.errorRecoveryDisabledLanes&=n,e.shellSuspendCounter=0;var y=e.entanglements,C=e.expirationTimes,D=e.hiddenUpdates;for(n=m&~n;0"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),Xo=!1;if(Ln)try{var Ei={};Object.defineProperty(Ei,"passive",{get:function(){Xo=!0}}),window.addEventListener("test",Ei,Ei),window.removeEventListener("test",Ei,Ei)}catch{Xo=!1}var il=null,Zo=null,Br=null;function Cm(){if(Br)return Br;var e,t=Zo,n=t.length,l,a="value"in il?il.value:il.textContent,r=a.length;for(e=0;e=ji),Am=" ",Rm=!1;function Mm(e,t){switch(e){case"keyup":return Yb.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Om(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var Ta=!1;function Qb(e,t){switch(e){case"compositionend":return Om(t);case"keypress":return t.which!==32?null:(Rm=!0,Am);case"textInput":return e=t.data,e===Am&&Rm?null:e;default:return null}}function Xb(e,t){if(Ta)return e==="compositionend"||!Po&&Mm(e,t)?(e=Cm(),Br=Zo=il=null,Ta=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1"u")return null;try{return e.activeElement||e.body}catch{return e.body}}function qm(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function Gm(e,t){var n=qm(e);e=0;for(var l;n;){if(n.nodeType===3){if(l=e+n.textContent.length,e<=t&&l>=t)return{node:n,offset:t-e};e=l}e:{for(;n;){if(n.nextSibling){n=n.nextSibling;break e}n=n.parentNode}n=void 0}n=qm(n)}}function Ym(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?Ym(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function Vm(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var t=ec(e.document);t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href=="string"}catch{n=!1}if(n)e=t.contentWindow;else break;t=ec(e.document)}return t}function tc(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}var Wb=Ln&&"documentMode"in document&&11>=document.documentMode,ja=null,nc=null,Mi=null,lc=!1;function Qm(e,t,n){var l=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;lc||ja==null||ja!==ec(l)||(l=ja,"selectionStart"in l&&tc(l)?l={start:l.selectionStart,end:l.selectionEnd}:(l=(l.ownerDocument&&l.ownerDocument.defaultView||window).getSelection(),l={anchorNode:l.anchorNode,anchorOffset:l.anchorOffset,focusNode:l.focusNode,focusOffset:l.focusOffset}),Mi&&Ri(Mi,l)||(Mi=l,l=Gu(nc,"onSelect"),0>=m,a-=m,xn=1<<32-Lt(t)+a|n<pe?(nt=ve,ve=null):nt=ve.sibling;var Me=M(O,ve,B[pe],X);if(Me===null){ve===null&&(ve=nt);break}e&&ve&&Me.alternate===null&&t(O,ve),T=r(Me,T,pe),Re===null?ue=Me:Re.sibling=Me,Re=Me,ve=nt}if(pe===B.length)return n(O,ve),we&&Yn(O,pe),ue;if(ve===null){for(;pepe?(nt=ve,ve=null):nt=ve.sibling;var Rl=M(O,ve,Me.value,X);if(Rl===null){ve===null&&(ve=nt);break}e&&ve&&Rl.alternate===null&&t(O,ve),T=r(Rl,T,pe),Re===null?ue=Rl:Re.sibling=Rl,Re=Rl,ve=nt}if(Me.done)return n(O,ve),we&&Yn(O,pe),ue;if(ve===null){for(;!Me.done;pe++,Me=B.next())Me=Z(O,Me.value,X),Me!==null&&(T=r(Me,T,pe),Re===null?ue=Me:Re.sibling=Me,Re=Me);return we&&Yn(O,pe),ue}for(ve=l(ve);!Me.done;pe++,Me=B.next())Me=L(ve,O,pe,Me.value,X),Me!==null&&(e&&(nt=Me.alternate,nt!==null&&ve.delete(nt.key===null?pe:nt.key)),T=r(Me,T,pe),Re===null?ue=Me:Re.sibling=Me,Re=Me);return e&&ve.forEach(function(Q2){return t(O,Q2)}),we&&Yn(O,pe),ue}function Ee(O,T,B,X){if(typeof B=="object"&&B!==null&&B.type===W&&B.key===null&&B.props.ref===void 0&&(B=B.props.children),typeof B=="object"&&B!==null){switch(B.$$typeof){case Q:e:{for(var ue=B.key;T!==null;){if(T.key===ue){if(ue=B.type,ue===W){if(T.tag===7){n(O,T.sibling),X=a(T,B.props.children),fl(X,B),X.return=O,O=X;break e}}else if(T.elementType===ue||typeof ue=="object"&&ue!==null&&ue.$$typeof===I&&Fl(ue)===T.type){n(O,T.sibling),X=a(T,B.props),fl(X,B),X.return=O,O=X;break e}n(O,T);break}else t(O,T);T=T.sibling}B.type===W?(X=Vl(B.props.children,O.mode,X,B.key),fl(X,B),X.return=O,O=X):(X=Zr(B.type,B.key,B.props,null,O.mode,X),fl(X,B),X.return=O,O=X)}return m(O);case te:e:{for(ue=B.key;T!==null;){if(T.key===ue)if(T.tag===4&&T.stateNode.containerInfo===B.containerInfo&&T.stateNode.implementation===B.implementation){n(O,T.sibling),X=a(T,B.children||[]),X.return=O,O=X;break e}else{n(O,T);break}else t(O,T);T=T.sibling}X=sc(B,O.mode,X),X.return=O,O=X}return m(O);case I:return B=Fl(B),Ee(O,T,B,X)}if(Ne(B))return le(O,T,B,X);if(ee(B)){if(ue=ee(B),typeof ue!="function")throw Error(o(150));return B=ue.call(B),de(O,T,B,X)}if(typeof B.then=="function")return Ee(O,T,nu(B),X);if(B.$$typeof===ge)return Ee(O,T,$r(O,B),X);lu(O,B)}return typeof B=="string"&&B!==""||typeof B=="number"||typeof B=="bigint"?(B=""+B,T!==null&&T.tag===6?(n(O,T.sibling),X=a(T,B),X.return=O,O=X):(n(O,T),X=cc(B,O.mode,X),X.return=O,O=X),m(O)):n(O,T)}return function(O,T,B,X){try{ki=0;var ue=Ee(O,T,B,X);return Ba=null,ue}catch(ve){if(ve===Ua||ve===eu)throw ve;var Re=At(29,ve,null,O.mode);return Re.lanes=X,Re.return=O,Re}finally{}}}var $l=hh(!0),vh=hh(!1),dl=!1;function xc(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function Sc(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function ml(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function hl(e,t,n){var l=e.updateQueue;if(l===null)return null;if(l=l.shared,(Ue&2)!==0){var a=l.pending;return a===null?t.next=t:(t.next=a.next,a.next=t),l.pending=t,t=Xr(e),$m(e,null,n),t}return Qr(e,l,t,n),Xr(e)}function Li(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shared,(n&4194048)!==0)){var l=t.lanes;l&=e.pendingLanes,n|=l,t.lanes=n,nm(e,n)}}function Nc(e,t){var n=e.updateQueue,l=e.alternate;if(l!==null&&(l=l.updateQueue,n===l)){var a=null,r=null;if(n=n.firstBaseUpdate,n!==null){do{var m={lane:n.lane,tag:n.tag,payload:n.payload,callback:null,next:null};r===null?a=r=m:r=r.next=m,n=n.next}while(n!==null);r===null?a=r=t:r=r.next=t}else a=r=t;n={baseState:l.baseState,firstBaseUpdate:a,lastBaseUpdate:r,shared:l.shared,callbacks:l.callbacks},e.updateQueue=n;return}e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}var Cc=!1;function Hi(){if(Cc){var e=Da;if(e!==null)throw e}}function qi(e,t,n,l){Cc=!1;var a=e.updateQueue;dl=!1;var r=a.firstBaseUpdate,m=a.lastBaseUpdate,y=a.shared.pending;if(y!==null){a.shared.pending=null;var C=y,D=C.next;C.next=null,m===null?r=D:m.next=D,m=C;var Y=e.alternate;Y!==null&&(Y=Y.updateQueue,y=Y.lastBaseUpdate,y!==m&&(y===null?Y.firstBaseUpdate=D:y.next=D,Y.lastBaseUpdate=C))}if(r!==null){var Z=a.baseState;m=0,Y=D=C=null,y=r;do{var M=y.lane&-536870913,L=M!==y.lane;if(L?(Ae&M)===M:(l&M)===M){M!==0&&M===Il&&(Cc=!0),Y!==null&&(Y=Y.next={lane:0,tag:y.tag,payload:y.payload,callback:null,next:null});e:{var le=e,de=y;M=t;var Ee=n;switch(de.tag){case 1:if(le=de.payload,typeof le=="function"){Z=le.call(Ee,Z,M);break e}Z=le;break e;case 3:le.flags=le.flags&-65537|128;case 0:if(le=de.payload,M=typeof le=="function"?le.call(Ee,Z,M):le,M==null)break e;Z=E({},Z,M);break e;case 2:dl=!0}}M=y.callback,M!==null&&(e.flags|=64,L&&(e.flags|=8192),L=a.callbacks,L===null?a.callbacks=[M]:L.push(M))}else L={lane:M,tag:y.tag,payload:y.payload,callback:y.callback,next:null},Y===null?(D=Y=L,C=Z):Y=Y.next=L,m|=M;if(y=y.next,y===null){if(y=a.shared.pending,y===null)break;L=y,y=L.next,L.next=null,a.lastBaseUpdate=L,a.shared.pending=null}}while(!0);Y===null&&(C=Z),a.baseState=C,a.firstBaseUpdate=D,a.lastBaseUpdate=Y,r===null&&(a.shared.lanes=0),Sl|=m,e.lanes=m,e.memoizedState=Z}}function gh(e,t){if(typeof e!="function")throw Error(o(191,e));e.call(t)}function yh(e,t){var n=e.callbacks;if(n!==null)for(e.callbacks=null,e=0;er?r:8;var m=fe.T,y={};y.types=m!==null?m.types:null,fe.T=y,Vc(e,!1,t,n);try{var C=a(),D=fe.S;if(D!==null&&D(y,C),C!==null&&typeof C=="object"&&typeof C.then=="function"){var Y=sx(C,l);Qi(e,t,Y,Xt(e))}else Qi(e,t,l,Xt(e))}catch(Z){Qi(e,t,{then:function(){},status:"rejected",reason:Z},Xt())}finally{ye.p=r,m!==null&&y.types!==null&&(m.types=y.types),fe.T=m}}function gx(){}function Gc(e,t,n,l){if(e.tag!==5)throw Error(o(476));var a=Jh(e).queue;Ih(e,a,t,Ut,n===null?gx:function(){return Fh(e),n(l)})}function Jh(e){var t=e.memoizedState;if(t!==null)return t;t={memoizedState:Ut,baseState:Ut,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Zn,lastRenderedState:Ut},next:null};var n={};return t.next={memoizedState:n,baseState:n,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Zn,lastRenderedState:n},next:null},e.memoizedState=t,e=e.alternate,e!==null&&(e.memoizedState=t),t}function Fh(e){var t=Jh(e);t.next===null&&(t=e.alternate.memoizedState),Qi(e,t.next.queue,{},Xt())}function Yc(){return gt(ai)}function Ph(){return Pe().memoizedState}function $h(){return Pe().memoizedState}function yx(e){for(var t=e.return;t!==null;){switch(t.tag){case 24:case 3:var n=Xt();e=ml(n);var l=hl(t,e,n);l!==null&&(zt(l,t,n),Li(l,t,n)),t={cache:gc()},e.payload=t;return}t=t.return}}function px(e,t,n){var l=Xt();n={lane:l,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null},mu(e)?ev(t,n):(n=uc(e,t,n,l),n!==null&&(zt(n,e,l),tv(n,t,l)))}function Wh(e,t,n){var l=Xt();Qi(e,t,n,l)}function Qi(e,t,n,l){var a={lane:l,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null};if(mu(e))ev(t,a);else{var r=e.alternate;if(e.lanes===0&&(r===null||r.lanes===0)&&(r=t.lastRenderedReducer,r!==null))try{var m=t.lastRenderedState,y=r(m,n);if(a.hasEagerState=!0,a.eagerState=y,qt(y,m))return Qr(e,t,a,0),Ge===null&&Vr(),!1}catch{}finally{}if(n=uc(e,t,a,l),n!==null)return zt(n,e,l),tv(n,t,l),!0}return!1}function Vc(e,t,n,l){if(l={lane:2,revertLane:zs(),gesture:null,action:l,hasEagerState:!1,eagerState:null,next:null},mu(e)){if(t)throw Error(o(479))}else t=uc(e,n,l,2),t!==null&&zt(t,e,2)}function mu(e){var t=e.alternate;return e===Ce||t!==null&&t===Ce}function ev(e,t){ka=ru=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function tv(e,t,n){if((n&4194048)!==0){var l=t.lanes;l&=e.pendingLanes,n|=l,t.lanes=n,nm(e,n)}}var hu={readContext:gt,use:cu,useCallback:Je,useContext:Je,useEffect:Je,useImperativeHandle:Je,useLayoutEffect:Je,useInsertionEffect:Je,useMemo:Je,useReducer:Je,useRef:Je,useState:Je,useDebugValue:Je,useDeferredValue:Je,useTransition:Je,useSyncExternalStore:Je,useId:Je,useHostTransitionStatus:Je,useFormState:Je,useActionState:Je,useOptimistic:Je,useMemoCache:Je,useCacheRefresh:Je,useEffectEvent:Je},nv={readContext:gt,use:cu,useCallback:function(e,t){return wt().memoizedState=[e,t===void 0?null:t],e},useContext:gt,useEffect:Hh,useImperativeHandle:function(e,t,n){n=n!=null?n.concat([e]):null,fu(4194308,4,Vh.bind(null,t,e),n)},useLayoutEffect:function(e,t){return fu(4194308,4,e,t)},useInsertionEffect:function(e,t){fu(4,2,e,t)},useMemo:function(e,t){var n=wt();t=t===void 0?null:t;var l=e();if(Wl){al(!0);try{e()}finally{al(!1)}}return n.memoizedState=[l,t],l},useReducer:function(e,t,n){var l=wt();if(n!==void 0){var a=n(t);if(Wl){al(!0);try{n(t)}finally{al(!1)}}}else a=t;return l.memoizedState=l.baseState=a,e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:a},l.queue=e,e=e.dispatch=px.bind(null,Ce,e),[l.memoizedState,e]},useRef:function(e){var t=wt();return e={current:e},t.memoizedState=e},useState:function(e){e=Bc(e);var t=e.queue,n=Wh.bind(null,Ce,t);return t.dispatch=n,[e.memoizedState,n]},useDebugValue:Hc,useDeferredValue:function(e,t){var n=wt();return qc(n,e,t)},useTransition:function(){var e=Bc(!1);return e=Ih.bind(null,Ce,e.queue,!0,!1),wt().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,t,n){var l=Ce,a=wt();if(we){if(n===void 0)throw Error(o(407));n=n()}else{if(n=t(),Ge===null)throw Error(o(349));(Ae&127)!==0||Ch(l,t,n)}a.memoizedState=n;var r={value:n,getSnapshot:t};return a.queue=r,Hh(wh.bind(null,l,r,e),[e]),l.flags|=2048,Ha(9,{destroy:void 0},Eh.bind(null,l,r,n,t),null),n},useId:function(){var e=wt(),t=Ge.identifierPrefix;if(we){var n=Sn,l=xn;n=(l&~(1<<32-Lt(l)-1)).toString(32)+n,t="_"+t+"R_"+n,n=uu++,0<\/script>",r=r.removeChild(r.firstChild);break;case"select":r=typeof l.is=="string"?m.createElement("select",{is:l.is}):m.createElement("select"),l.multiple?r.multiple=!0:l.size&&(r.size=l.size);break;default:r=typeof l.is=="string"?m.createElement(a,{is:l.is}):m.createElement(a)}}r[vt]=t,r[_t]=l;e:for(m=t.child;m!==null;){if(m.tag===5||m.tag===6)r.appendChild(m.stateNode);else if(m.tag!==4&&m.tag!==27&&m.child!==null){m.child.return=m,m=m.child;continue}if(m===t)break e;for(;m.sibling===null;){if(m.return===null||m.return===t)break e;m=m.return}m.sibling.return=m.return,m=m.sibling}t.stateNode=r;e:switch(xt(r,a,l),a){case"button":case"input":case"select":case"textarea":l=!!l.autoFocus;break e;case"img":l=!0;break e;default:l=!1}l&&In(t)}}return Qe(t),t.subtreeFlags&=-33554433,ns(t,t.type,e===null?null:e.memoizedProps,t.pendingProps,n),null;case 6:if(e&&t.stateNode!=null)e.memoizedProps!==l&&In(t);else{if(typeof l!="string"&&t.stateNode===null)throw Error(o(166));if(e=nl.current,za(t)){if(e=t.stateNode,n=t.memoizedProps,l=null,a=ct,a!==null)switch(a.tag){case 27:case 5:l=a.memoizedProps}e[vt]=t,e=!!(e.nodeValue===n||l!==null&&l.suppressHydrationWarning===!0||wg(e.nodeValue,n)),e||cl(t,!0)}else e=lr(e).createTextNode(l),e[vt]=t,t.stateNode=e}return Qe(t),null;case 31:if(n=t.memoizedState,e===null||e.memoizedState!==null){if(l=za(t),n!==null){if(e===null){if(!l)throw Error(o(318));if(e=t.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(o(557));e[vt]=t}else Ql(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;Qe(t),e=!1}else n=mc(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=n),e=!0;if(!e)return t.flags&256?(Gt(t),t):(Gt(t),null);if((t.flags&128)!==0)throw Error(o(558))}return Qe(t),null;case 13:if(l=t.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(a=za(t),l!==null&&l.dehydrated!==null){if(e===null){if(!a)throw Error(o(318));if(a=t.memoizedState,a=a!==null?a.dehydrated:null,!a)throw Error(o(317));a[vt]=t}else Ql(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;Qe(t),a=!1}else a=mc(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=a),a=!0;if(!a)return t.flags&256?(Gt(t),t):(Gt(t),null)}return Gt(t),(t.flags&128)!==0?(t.lanes=n,t):(n=l!==null,e=e!==null&&e.memoizedState!==null,n&&(l=t.child,a=null,l.alternate!==null&&l.alternate.memoizedState!==null&&l.alternate.memoizedState.cachePool!==null&&(a=l.alternate.memoizedState.cachePool.pool),r=null,l.memoizedState!==null&&l.memoizedState.cachePool!==null&&(r=l.memoizedState.cachePool.pool),r!==a&&(l.flags|=2048)),n!==e&&n&&(t.child.flags|=8192),xu(t,t.updateQueue),Qe(t),null);case 4:return ya(),e===null&&ks(t.stateNode.containerInfo),t.flags|=67108864,Qe(t),null;case 10:return Qn(t.type),Qe(t),null;case 19:if(jc(t),l=t.memoizedState,l===null)return Qe(t),null;if(a=(t.flags&128)!==0,r=l.rendering,r===null)if(a)Zi(l,!1);else{if(Fe!==0||e!==null&&(e.flags&128)!==0)for(e=t.child;e!==null;){if(r=iu(e),r!==null){for(t.flags|=128,Zi(l,!1),e=r.updateQueue,t.updateQueue=e,xu(t,e),t.subtreeFlags=0,e=n,n=t.child;n!==null;)Wm(n,e),n=n.sibling;return Gi(t,pt.current&1|2),we&&Yn(t,l.treeForkCount),t.child}e=e.sibling}l.tail!==null&&Bt()>Ou&&(t.flags|=128,a=!0,Zi(l,!1),t.lanes=4194304)}else{if(!a)if(e=iu(r),e!==null){if(t.flags|=128,a=!0,e=e.updateQueue,t.updateQueue=e,xu(t,e),Zi(l,!0),l.tail===null&&l.tailMode!=="collapsed"&&l.tailMode!=="visible"&&!r.alternate&&!we)return Qe(t),null}else 2*Bt()-l.renderingStartTime>Ou&&n!==536870912&&(t.flags|=128,a=!0,Zi(l,!1),t.lanes=4194304);l.isBackwards?(r.sibling=t.child,t.child=r):(e=l.last,e!==null?e.sibling=r:t.child=r,l.last=r)}if(l.tail!==null){e=l.tail;e:{for(n=e;n!==null;){if(n.alternate!==null){n=!1;break e}n=n.sibling}n=!0}return l.rendering=e,l.tail=e.sibling,l.renderingStartTime=Bt(),e.sibling=null,r=pt.current,r=a?r&1|2:r&1,l.tailMode==="visible"||l.tailMode==="collapsed"||!n||we?Gi(t,r):(n=r,Ye(yt,t),Ye(pt,n),Ct===null&&(Ct=t)),we&&Yn(t,l.treeForkCount),e}return Qe(t),null;case 22:case 23:return Gt(t),wc(),l=t.memoizedState!==null,e!==null?e.memoizedState!==null!==l&&(t.flags|=8192):l&&(t.flags|=8192),l?(n&536870912)!==0&&(t.flags&128)===0&&(Qe(t),t.subtreeFlags&6&&(t.flags|=8192)):Qe(t),n=t.updateQueue,n!==null&&xu(t,n.retryQueue),n=null,e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(n=e.memoizedState.cachePool.pool),l=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(l=t.memoizedState.cachePool.pool),l!==n&&(t.flags|=2048),e!==null&&ht(Jl),null;case 24:return n=null,e!==null&&(n=e.memoizedState.cache),t.memoizedState.cache!==n&&(t.flags|=2048),Qn(We),Qe(t),null;case 25:return null;case 30:return t.flags|=33554432,Qe(t),null}throw Error(o(156,t.tag))}function wx(e,t){switch(fc(t),t.tag){case 1:return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return Qn(We),ya(),e=t.flags,(e&65536)!==0&&(e&128)===0?(t.flags=e&-65537|128,t):null;case 26:case 27:case 5:return wr(t),null;case 31:if(t.memoizedState!==null){if(Gt(t),t.alternate===null)throw Error(o(340));Ql()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 13:if(Gt(t),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(o(340));Ql()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return jc(t),e=t.flags,e&65536?(t.flags=e&-65537|128,e=t.memoizedState,e!==null&&(e.rendering=null,e.tail=null),t.flags|=4,t):null;case 4:return ya(),null;case 10:return Qn(t.type),null;case 22:case 23:return Gt(t),wc(),e!==null&&ht(Jl),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 24:return Qn(We),null;case 25:return null;default:return null}}function jv(e,t){switch(fc(t),t.tag){case 3:Qn(We),ya();break;case 26:case 27:case 5:wr(t);break;case 4:ya();break;case 31:t.memoizedState!==null&&Gt(t);break;case 13:Gt(t);break;case 19:jc(t);break;case 10:Qn(t.type);break;case 22:case 23:Gt(t),wc(),e!==null&&ht(Jl);break;case 24:Qn(We)}}function Ki(e,t){try{var n=t.updateQueue,l=n!==null?n.lastEffect:null;if(l!==null){var a=l.next;n=a;do{if((n.tag&e)===e){l=void 0;var r=n.create,m=n.inst;l=r(),m.destroy=l}n=n.next}while(n!==a)}}catch(y){Le(t,t.return,y)}}function pl(e,t,n){try{var l=t.updateQueue,a=l!==null?l.lastEffect:null;if(a!==null){var r=a.next;l=r;do{if((l.tag&e)===e){var m=l.inst,y=m.destroy;if(y!==void 0){m.destroy=void 0,a=t;var C=n,D=y;try{D()}catch(Y){Le(a,C,Y)}}}l=l.next}while(l!==r)}}catch(Y){Le(t,t.return,Y)}}function _v(e){var t=e.updateQueue;if(t!==null){var n=e.stateNode;try{yh(t,n)}catch(l){Le(e,e.return,l)}}}function Av(e,t,n){n.props=ea(e.type,e.memoizedProps),n.state=e.memoizedState;try{n.componentWillUnmount()}catch(l){Le(e,t,l)}}function Nn(e,t){try{var n=e.ref;if(n!==null){switch(e.tag){case 26:case 27:case 5:var l=e.stateNode;break;case 30:var a=e.stateNode,r=Hn(e.memoizedProps,a);(a.ref===null||a.ref.name!==r)&&(a.ref=Bg(r)),l=a.ref;break;case 7:if(e.stateNode===null){var m=new Zt(e);p(e.child,!1,v2,m,void 0,void 0),e.stateNode=m}l=e.stateNode;break;default:l=e.stateNode}typeof n=="function"?e.refCleanup=n(l):n.current=l}}catch(y){Le(e,t,y)}}function bt(e,t){var n=e.ref,l=e.refCleanup;if(n!==null)if(typeof l=="function")try{l()}catch(a){Le(e,t,a)}finally{e.refCleanup=null,e=e.alternate,e!=null&&(e.refCleanup=null)}else if(typeof n=="function")try{n(null)}catch(a){Le(e,t,a)}else n.current=null}function Su(e,t){if((e.tag===5||e.tag===27||e.tag===6)&&e.alternate===null&&t!==null)for(var n=0;n title"))),xt(l,t,n),l[vt]=e,ot(l),t=l;break e;case"link":if(r=Wg("link","href",a).get(t+(n.href||""))){for(m=0;mEe&&(m=Ee,Ee=de,de=m);var O=Gm(y,de),T=Gm(y,Ee);if(O&&T&&(L.rangeCount!==1||L.anchorNode!==O.node||L.anchorOffset!==O.offset||L.focusNode!==T.node||L.focusOffset!==T.offset)){var B=Z.createRange();B.setStart(O.node,O.offset),L.removeAllRanges(),de>Ee?(L.addRange(B),L.extend(T.node,T.offset)):(B.setEnd(T.node,T.offset),L.addRange(B))}}}}for(Z=[],L=y;L=L.parentNode;)L.nodeType===1&&Z.push({element:L,left:L.scrollLeft,top:L.scrollTop});for(typeof y.focus=="function"&&y.focus(),y=0;yn?32:n,fe.T=null,n=Cs,Cs=null;var r=vn,m=_n;if(Ke=0,aa=vn=null,_n=0,(Ue&6)!==0)throw Error(o(331));var y=Ue;if(Ue|=4,$v(r.current),Jv(r,r.current,m,n),Ue=y,er(0,!1),kt&&typeof kt.onPostCommitFiberRoot=="function")try{kt.onPostCommitFiberRoot(pi,r)}catch{}return!0}finally{ye.p=a,fe.T=l,mg(e,t)}}function hg(e,t,n){t=Pt(n,t),t=Zc(e.stateNode,t,2),e=hl(e,t,2),e!==null&&(xi(e,2),An(e))}function Le(e,t,n){if(e.tag===3)hg(e,e,n);else for(;t!==null;){if(t.tag===3){hg(t,e,n);break}else if(t.tag===1){var l=t.stateNode;if(typeof t.type.getDerivedStateFromError=="function"||typeof l.componentDidCatch=="function"&&(Nl===null||!Nl.has(l))){e=Pt(n,e),n=sv(2),l=hl(t,n,2),l!==null&&(fv(n,l,t,e),xi(l,2),An(l));break}}t=t.return}}function Rs(e,t,n){var l=e.pingCache;if(l===null){l=e.pingCache=new Ax;var a=new Set;l.set(t,a)}else a=l.get(t),a===void 0&&(a=new Set,l.set(t,a));a.has(n)||(xs=!0,a.add(n),e=kx.bind(null,e,t,n),t.then(e,e))}function kx(e,t,n){var l=e.pingCache;l!==null&&l.delete(t),e.pingedLanes|=e.suspendedLanes&n,e.warmLanes&=~n,Ge===e&&(Ae&n)===n&&((Fe===4||Fe===3&&(Ae&62914560)===Ae&&300>Bt()-Mu)&&(Ue&2)===0?Fa(e,0):Ru|=n,Xa===Ae&&(Xa=0)),An(e)}function vg(e,t){t===0&&(t=em()),e=Yl(e,t),e!==null&&(xi(e,t),An(e))}function Lx(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),vg(e,n)}function Hx(e,t){var n=0;switch(e.tag){case 31:case 13:var l=e.stateNode,a=e.memoizedState;a!==null&&(n=a.retryLane);break;case 19:l=e.stateNode;break;case 22:l=e.stateNode._retryCache;break;default:throw Error(o(314))}l!==null&&l.delete(t),vg(e,n)}function qx(e,t){return zo(e,t)}var $a=null,Wa=null,Ms=!1,Hu=!1,Os=!1,El=0;function An(e){e!==Wa&&e.next===null&&(Wa===null?$a=Wa=e:Wa=Wa.next=e),Hu=!0,Ms||(Ms=!0,Yx())}function er(e,t){if(!Os&&Hu){Os=!0;do for(var n=!1,l=$a;l!==null;){if(e!==0){var a=l.pendingLanes;if(a===0)var r=0;else{var m=l.suspendedLanes,y=l.pingedLanes;r=(1<<31-Lt(42|e)+1)-1,r&=a&~(m&~y),r=r&201326741?r&201326741|1:r?r|2:0}r!==0&&(n=!0,bg(l,r))}else r=Ae,r=Rr(l,l===Ge?r:0,l.cancelPendingCommit!==null||l.timeoutHandle!==-1),(r&3)===0||bi(l,r)||(n=!0,bg(l,r));l=l.next}while(n);Os=!1}}function Gx(){gg()}function gg(){Hu=Ms=!1;var e=0;El!==0&&Wx()&&(e=El);for(var t=Bt(),n=null,l=$a;l!==null;){var a=l.next,r=yg(l,t);r===0?(l.next=null,n===null?$a=a:n.next=a,a===null&&(Wa=n)):(n=l,(e!==0||(r&3)!==0)&&(Hu=!0)),l=a}Ke!==0&&Ke!==5||er(e),El!==0&&(El=0)}function yg(e,t){for(var n=e.suspendedLanes,l=e.pingedLanes,a=e.expirationTimes,r=e.pendingLanes&-62914561;0y)break;var Y=C.transferSize,Z=C.initiatorType;Y&&Tg(Z)&&(C=C.responseEnd,m+=Y*(CQu){de.length=le;break}B=new Promise(i2.bind(B)),de.push(B)}}}if(0"u"?null:document;function Jg(e,t,n){var l=ti;if(l&&typeof t=="string"&&t){var a=Jt(t);a='link[rel="'+e+'"][href="'+a+'"]',typeof n=="string"&&(a+='[crossorigin="'+n+'"]'),Ig.has(a)||(Ig.add(a),e={rel:e,crossOrigin:n,href:t},l.querySelector(a)===null&&(t=l.createElement("link"),xt(t,"link",e),ot(t),l.head.appendChild(t)))}}function E2(e){Fn.D(e),Jg("dns-prefetch",e,null)}function w2(e,t){Fn.C(e,t),Jg("preconnect",e,t)}function T2(e,t,n){Fn.L(e,t,n);var l=ti;if(l&&e&&t){var a='link[rel="preload"][as="'+Jt(t)+'"]';t==="image"&&n&&n.imageSrcSet?(a+='[imagesrcset="'+Jt(n.imageSrcSet)+'"]',typeof n.imageSizes=="string"&&(a+='[imagesizes="'+Jt(n.imageSizes)+'"]')):a+='[href="'+Jt(e)+'"]';var r=a;switch(t){case"style":r=ni(e);break;case"script":r=li(e)}if(!(ln.has(r)||(e=E({rel:"preload",href:t==="image"&&n&&n.imageSrcSet?void 0:e,as:t},n),ln.set(r,e),l.querySelector(a)!==null||t==="style"&&l.querySelector(ir(r))||t==="script"&&l.querySelector(rr(r))))){var m=l.createElement("link");xt(m,"link",e),t==="style"&&(m[Mr]=!0,m.onload=m.onerror=function(){om(m)}),ot(m),l.head.appendChild(m)}}}function j2(e,t){Fn.m(e,t);var n=ti;if(n&&e){var l=t&&typeof t.as=="string"?t.as:"script",a='link[rel="modulepreload"][as="'+Jt(l)+'"][href="'+Jt(e)+'"]',r=a;switch(l){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":r=li(e)}if(!ln.has(r)&&(e=E({rel:"modulepreload",href:e},t),ln.set(r,e),n.querySelector(a)===null)){switch(l){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(n.querySelector(rr(r)))return}l=n.createElement("link"),xt(l,"link",e),ot(l),n.head.appendChild(l)}}}function _2(e,t,n){Fn.S(e,t,n);var l=ti;if(l&&e){var a=xa(l).hoistableStyles,r=ni(e);t=t||"default";var m=a.get(r);if(!m){var y={loading:0,preload:null};if(m=l.querySelector(ir(r)))y.loading=5;else{e=E({rel:"stylesheet",href:e,"data-precedence":t},n),(n=ln.get(r))&&Ws(e,n);var C=m=l.createElement("link");ot(C),xt(C,"link",e),C._p=new Promise(function(D,Y){C.onload=D,C.onerror=Y}),C.addEventListener("load",function(){y.loading|=1}),C.addEventListener("error",function(){y.loading|=2}),y.loading|=4,Yu(m,t,l)}m={type:"stylesheet",instance:m,count:1,state:y},a.set(r,m)}}}function A2(e,t){Fn.X(e,t);var n=ti;if(n&&e){var l=xa(n).hoistableScripts,a=li(e),r=l.get(a);r||(r=n.querySelector(rr(a)),r||(e=E({src:e,async:!0},t),(t=ln.get(a))&&ef(e,t),r=n.createElement("script"),ot(r),xt(r,"link",e),n.head.appendChild(r)),r={type:"script",instance:r,count:1,state:null},l.set(a,r))}}function R2(e,t){Fn.M(e,t);var n=ti;if(n&&e){var l=xa(n).hoistableScripts,a=li(e),r=l.get(a);r||(r=n.querySelector(rr(a)),r||(e=E({src:e,async:!0,type:"module"},t),(t=ln.get(a))&&ef(e,t),r=n.createElement("script"),ot(r),xt(r,"link",e),n.head.appendChild(r)),r={type:"script",instance:r,count:1,state:null},l.set(a,r))}}function Fg(e,t,n,l){var a=(a=nl.current)?ar(a):null;if(!a)throw Error(o(446));switch(e){case"meta":case"title":return null;case"style":return typeof n.precedence=="string"&&typeof n.href=="string"?(n=ni(n.href),t=xa(a).hoistableStyles,l=t.get(n),l||(l={type:"style",instance:null,count:0,state:null},t.set(n,l)),l):{type:"void",instance:null,count:0,state:null};case"link":if(n.rel==="stylesheet"&&typeof n.href=="string"&&typeof n.precedence=="string"){e=ni(n.href);var r=xa(a).hoistableStyles,m=r.get(e);if(m||(a=a.ownerDocument||a,m={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},r.set(e,m),(r=a.querySelector(ir(e)))?r._p||(m.instance=r,m.state.loading=5):(r=ln.get(e),r||(r={rel:"preload",as:"style",href:n.href,crossOrigin:n.crossOrigin,integrity:n.integrity,media:n.media,hrefLang:n.hrefLang,referrerPolicy:n.referrerPolicy},ln.set(e,r)),M2(a,e,r,m.state))),t&&l===null)throw Error(o(528,""));return m}if(t&&l!==null)throw Error(o(529,""));return null;case"script":return t=n.async,n=n.src,typeof n=="string"&&t&&typeof t!="function"&&typeof t!="symbol"?(n=li(n),t=xa(a).hoistableScripts,l=t.get(n),l||(l={type:"script",instance:null,count:0,state:null},t.set(n,l)),l):{type:"void",instance:null,count:0,state:null};default:throw Error(o(444,e))}}function ni(e){return'href="'+Jt(e)+'"'}function ir(e){return'link[rel="stylesheet"]['+e+"]"}function Pg(e){return E({},e,{"data-precedence":e.precedence,precedence:null})}function M2(e,t,n,l){if(t=e.querySelector('link[rel="preload"][as="style"]['+t+"]")){if(t[Mr]!==!0){l.loading=1;return}}else t=e.createElement("link"),t[Mr]=!0,t.onload=t.onerror=om.bind(null,t),xt(t,"link",n),ot(t),e.head.appendChild(t);l.preload=t,t.addEventListener("load",function(){return l.loading|=1}),t.addEventListener("error",function(){return l.loading|=2})}function li(e){return'[src="'+Jt(e)+'"]'}function rr(e){return"script[async]"+e}function $g(e,t,n){if(t.count++,t.instance===null)switch(t.type){case"style":var l=e.querySelector('style[data-href~="'+Jt(n.href)+'"]');if(l)return t.instance=l,ot(l),l;var a=E({},n,{"data-href":n.href,"data-precedence":n.precedence,href:null,precedence:null});return l=(e.ownerDocument||e).createElement("style"),ot(l),xt(l,"style",a),Yu(l,n.precedence,e),t.instance=l;case"stylesheet":a=ni(n.href);var r=e.querySelector(ir(a));if(r)return t.state.loading|=4,t.instance=r,ot(r),r;l=Pg(n),(a=ln.get(a))&&Ws(l,a),r=(e.ownerDocument||e).createElement("link"),ot(r);var m=r;return m._p=new Promise(function(y,C){m.onload=y,m.onerror=C}),xt(r,"link",l),t.state.loading|=4,Yu(r,n.precedence,e),t.instance=r;case"script":return r=li(n.src),(a=e.querySelector(rr(r)))?(t.instance=a,ot(a),a):(l=n,(a=ln.get(r))&&(l=E({},n),ef(l,a)),e=e.ownerDocument||e,a=e.createElement("script"),ot(a),xt(a,"link",l),e.head.appendChild(a),t.instance=a);case"void":return null;default:throw Error(o(443,t.type))}else t.type==="stylesheet"&&(t.state.loading&4)===0&&(l=t.instance,t.state.loading|=4,Yu(l,n.precedence,e));return t.instance}function Yu(e,t,n){for(var l=n.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),a=l.length?l[l.length-1]:null,r=a,m=0;m title"):null)}function O2(e,t,n){if(n===1||t.itemProp!=null)return!1;switch(e){case"meta":case"title":return!0;case"style":if(typeof t.precedence!="string"||typeof t.href!="string"||t.href==="")break;return!0;case"link":if(typeof t.rel!="string"||typeof t.href!="string"||t.href===""||t.onLoad||t.onError)break;switch(t.rel){case"stylesheet":return e=t.disabled,typeof t.precedence=="string"&&e==null;default:return!0}case"script":if(t.async&&typeof t.async!="function"&&typeof t.async!="symbol"&&!t.onLoad&&!t.onError&&t.src&&typeof t.src=="string")return!0}return!1}function e0(e,t){return e==="img"&&t.src!=null&&t.src!==""&&t.onLoad==null&&t.loading!=="lazy"}function t0(e){return!(e.type==="stylesheet"&&(e.state.loading&3)===0)}function n0(e){return(e.width||100)*(e.height||100)*(typeof devicePixelRatio=="number"?devicePixelRatio:1)*.25}function l0(e,t){typeof t.decode=="function"&&(e.imgCount++,t.complete||(e.imgBytes+=n0(t),e.suspenseyImages.push(t)),e=U2.bind(e),t.decode().then(e,e))}function z2(e,t,n,l){if(n.type==="stylesheet"&&(typeof l.media!="string"||matchMedia(l.media).matches!==!1)&&(n.state.loading&4)===0){if(n.instance===null){var a=ni(l.href),r=t.querySelector(ir(a));if(r){t=r._p,t!==null&&typeof t=="object"&&typeof t.then=="function"&&(e.count++,e=ur.bind(e),t.then(e,e)),n.state.loading|=4,n.instance=r,ot(r);return}r=t.ownerDocument||t,l=Pg(l),(a=ln.get(a))&&Ws(l,a),r=r.createElement("link"),ot(r);var m=r;m._p=new Promise(function(y,C){m.onload=y,m.onerror=C}),xt(r,"link",l),n.instance=r}e.stylesheets===null&&(e.stylesheets=new Map),e.stylesheets.set(n,t),(t=n.state.preload)&&(n.state.loading&3)===0&&(e.count++,n=ur.bind(e),t.addEventListener("load",n),t.addEventListener("error",n))}}var Qu=0;function D2(e,t){return e.stylesheets&&e.count===0&&Zu(e,e.stylesheets),0Qu?50:800)+t);return e.unsuspend=n,function(){e.unsuspend=null,clearTimeout(l),clearTimeout(a)}}:null}function a0(e){if(e.count===0&&(e.imgCount===0||!e.waitingForImages)){if(e.stylesheets)Zu(e,e.stylesheets);else if(e.unsuspend){var t=e.unsuspend;e.unsuspend=null,t()}}}function ur(){this.count--,a0(this)}function U2(){this.imgCount--,a0(this)}var Xu=null;function Zu(e,t){e.stylesheets=null,e.unsuspend!==null&&(e.count++,Xu=new Map,t.forEach(B2,e),Xu=null,ur.call(e))}function B2(e,t){if(!(t.state.loading&4)){var n=Xu.get(e);if(n)var l=n.get(null);else{n=new Map,Xu.set(e,n);for(var a=e.querySelectorAll("link[data-precedence],style[data-precedence]"),r=0;r"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(i)}catch(u){console.error(u)}}return i(),df.exports=$2(),df.exports}var eS=W2();const tS=gd(eS),M0=i=>{let u;const c=new Set,o=(x,S)=>{const p=typeof x=="function"?x(u):x;if(!Object.is(p,u)){const N=u;u=S??(typeof p!="object"||p===null)?p:Object.assign({},u,p),c.forEach(A=>A(u,N))}},s=()=>u,v={setState:o,getState:s,getInitialState:()=>g,subscribe:x=>(c.add(x),()=>c.delete(x))},g=u=i(o,s,v);return v},nS=(i=>i?M0(i):M0),lS=i=>i;function aS(i,u=lS){const c=gr.useSyncExternalStore(i.subscribe,gr.useCallback(()=>u(i.getState()),[i,u]),()=>u(i.getInitialState()));return gr.useDebugValue(c),c}const O0=i=>{const u=nS(i),c=o=>aS(u,o);return Object.assign(c,u),c},iS=(i=>i?O0(i):O0),rS=()=>typeof window<"u"&&window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches,By=i=>{const c=(i==="system"?rS():i==="dark")?"dark":"light";return typeof document<"u"&&document.documentElement.setAttribute("data-theme",c),c},Wu=localStorage.getItem("hl_theme_v2"),ky=Wu==="light"||Wu==="dark"||Wu==="system"?Wu:"system",uS=By(ky),oS=localStorage.getItem("hl_route_mode")||"auto",cS=localStorage.getItem("hl_layout_preset")||"homepage-3col",sS=typeof window<"u"&&window.location.pathname.startsWith("/storybook")?"storybook":typeof window<"u"&&window.location.pathname.startsWith("/agents")?"agents":"dashboard",Un=iS((i,u)=>({theme:ky,resolvedTheme:uS,routeMode:oS,layoutPreset:cS,viewMode:sS,showAgyModal:!1,showWechatModal:!1,showCmdPalette:!1,toast:"",actionLoading:!1,telemetry:{mini:{chip:"Apple M6 (12核)",ip:"192.168.31.164",tailscale_ip:"100.108.205.40",cpu_pct:6.5,load_1m:.85,mem_used_gb:11.8,mem_total_gb:24,mem_pct:49.2,disk_used_gb:59.9,disk_total_gb:460.4,disk_pct:13,uptime:"运行中",agy_tmux:!0},nas:{ip:"192.168.31.185",online:!0,mounted:!0,total_tb:19.94,used_tb:3.36,free_tb:16.58,pct:16.8,latest_backup:"11-06 23:17"},network:{home_wan_ip:"124.90.142.21",ai_policy:"Ai平台 → 狮城节点",sg_node:"233boy-sea",sg_egress_ip:"104.43.105.243",sg_delay_ms:68},services:{agy:!0,vaultwarden:!0,nas:!0,clash:!0,router:!0,uptime:!0,clawbot:!1}},setTheme:c=>{localStorage.setItem("hl_theme_v2",c);const o=By(c);i({theme:c,resolvedTheme:o})},toggleTheme:()=>{const{resolvedTheme:c,setTheme:o}=u();o(c==="dark"?"light":"dark")},setRouteMode:c=>{localStorage.setItem("hl_route_mode",c),i({routeMode:c})},setLayoutPreset:c=>{localStorage.setItem("hl_layout_preset",c),i({layoutPreset:c})},setViewMode:c=>{if(typeof window<"u"){const o=c==="storybook"?"/storybook":c==="agents"?"/agents":"/";window.history.pushState({},"",o)}i({viewMode:c})},setShowAgyModal:c=>i({showAgyModal:c}),setShowWechatModal:c=>i({showWechatModal:c}),setShowCmdPalette:c=>i({showCmdPalette:c}),showToast:c=>{i({toast:c}),setTimeout(()=>{u().toast===c&&i({toast:""})},3e3)},fetchTelemetry:async()=>{try{const c=await fetch("/api/telemetry");if(c.ok){const o=await c.json();i({telemetry:o})}}catch{}},triggerAction:async(c,o)=>{const{showToast:s,fetchTelemetry:d}=u();i({actionLoading:!0}),s(o);try{const v=await(await fetch(`/api/action/${c}`,{method:"POST"})).json();s(v.message||"操作已完成"),await d()}catch{s("请求失败,请稍后重试")}finally{i({actionLoading:!1})}},copyCmd:async(c,o)=>{const{showToast:s}=u();try{await navigator.clipboard.writeText(c),s(`已复制「${o}」: ${c}`)}catch{s(c)}},getEffectiveMode:()=>{const{routeMode:c}=u();if(c!=="auto")return c;const o=window.location.hostname;return o.startsWith("192.168.")||o.startsWith("100.")||o==="localhost"?"lan":o.includes(".home.961504.xyz")||window.location.port==="10443"?"home10443":"edge443"}}));typeof window<"u"&&window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",()=>{const i=Un.getState();i.theme==="system"&&i.setTheme("system")});/** + * @license lucide-react v0.475.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const fS=i=>i.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),Ly=(...i)=>i.filter((u,c,o)=>!!u&&u.trim()!==""&&o.indexOf(u)===c).join(" ").trim();/** + * @license lucide-react v0.475.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */var dS={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};/** + * @license lucide-react v0.475.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const mS=b.forwardRef(({color:i="currentColor",size:u=24,strokeWidth:c=2,absoluteStrokeWidth:o,className:s="",children:d,iconNode:h,...v},g)=>b.createElement("svg",{ref:g,...dS,width:u,height:u,stroke:i,strokeWidth:o?Number(c)*24/Number(u):c,className:Ly("lucide",s),...v},[...h.map(([x,S])=>b.createElement(x,S)),...Array.isArray(d)?d:[d]]));/** + * @license lucide-react v0.475.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const De=(i,u)=>{const c=b.forwardRef(({className:o,...s},d)=>b.createElement(mS,{ref:d,iconNode:u,className:Ly(`lucide-${fS(i)}`,o),...s}));return c.displayName=`${i}`,c};/** + * @license lucide-react v0.475.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const hS=[["rect",{width:"20",height:"5",x:"2",y:"3",rx:"1",key:"1wp1u1"}],["path",{d:"M4 8v11a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8",key:"1s80jp"}],["path",{d:"M10 12h4",key:"a56b0p"}]],vS=De("Archive",hS);/** + * @license lucide-react v0.475.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const gS=[["path",{d:"M12 7v14",key:"1akyts"}],["path",{d:"M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z",key:"ruj8y"}]],Hy=De("BookOpen",gS);/** + * @license lucide-react v0.475.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const yS=[["path",{d:"M12 8V4H8",key:"hb8ula"}],["rect",{width:"16",height:"12",x:"4",y:"8",rx:"2",key:"enze0r"}],["path",{d:"M2 14h2",key:"vft8re"}],["path",{d:"M20 14h2",key:"4cs60a"}],["path",{d:"M15 13v2",key:"1xurst"}],["path",{d:"M9 13v2",key:"rq6x2g"}]],qy=De("Bot",yS);/** + * @license lucide-react v0.475.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const pS=[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]],bS=De("Check",pS);/** + * @license lucide-react v0.475.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const xS=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]],SS=De("CircleCheck",xS);/** + * @license lucide-react v0.475.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const NS=[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]],z0=De("Copy",NS);/** + * @license lucide-react v0.475.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const CS=[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]],eo=De("ExternalLink",CS);/** + * @license lucide-react v0.475.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const ES=[["path",{d:"M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49",key:"ct8e1f"}],["path",{d:"M14.084 14.158a3 3 0 0 1-4.242-4.242",key:"151rxh"}],["path",{d:"M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143",key:"13bj9a"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]],wS=De("EyeOff",ES);/** + * @license lucide-react v0.475.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const TS=[["path",{d:"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0",key:"1nclc0"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]],jS=De("Eye",TS);/** + * @license lucide-react v0.475.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const _S=[["path",{d:"M9 20H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2v5",key:"1w6njk"}],["circle",{cx:"13",cy:"12",r:"2",key:"1j92g6"}],["path",{d:"M18 19c-2.8 0-5-2.2-5-5v8",key:"pkpw2h"}],["circle",{cx:"20",cy:"19",r:"2",key:"1obnsp"}]],D0=De("FolderGit2",_S);/** + * @license lucide-react v0.475.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const AS=[["line",{x1:"6",x2:"6",y1:"3",y2:"15",key:"17qcm7"}],["circle",{cx:"18",cy:"6",r:"3",key:"1h7g24"}],["circle",{cx:"6",cy:"18",r:"3",key:"fqmcym"}],["path",{d:"M18 9a9 9 0 0 1-9 9",key:"n2h4wq"}]],RS=De("GitBranch",AS);/** + * @license lucide-react v0.475.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const MS=[["line",{x1:"22",x2:"2",y1:"12",y2:"12",key:"1y58io"}],["path",{d:"M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z",key:"oot6mr"}],["line",{x1:"6",x2:"6.01",y1:"16",y2:"16",key:"sgf278"}],["line",{x1:"10",x2:"10.01",y1:"16",y2:"16",key:"1l4acy"}]],OS=De("HardDrive",MS);/** + * @license lucide-react v0.475.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const zS=[["path",{d:"M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z",key:"1s6t7t"}],["circle",{cx:"16.5",cy:"7.5",r:".5",fill:"currentColor",key:"w0ekpg"}]],U0=De("KeyRound",zS);/** + * @license lucide-react v0.475.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const DS=[["path",{d:"M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z",key:"zw3jo"}],["path",{d:"M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12",key:"1wduqc"}],["path",{d:"M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17",key:"kqbvx6"}]],Gy=De("Layers",DS);/** + * @license lucide-react v0.475.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const US=[["rect",{width:"7",height:"7",x:"3",y:"3",rx:"1",key:"1g98yp"}],["rect",{width:"7",height:"7",x:"14",y:"3",rx:"1",key:"6d4xhi"}],["rect",{width:"7",height:"7",x:"14",y:"14",rx:"1",key:"nxv5o0"}],["rect",{width:"7",height:"7",x:"3",y:"14",rx:"1",key:"1bb6yr"}]],BS=De("LayoutGrid",US);/** + * @license lucide-react v0.475.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const kS=[["rect",{width:"18",height:"11",x:"3",y:"11",rx:"2",ry:"2",key:"1w4ew1"}],["path",{d:"M7 11V7a5 5 0 0 1 10 0v4",key:"fwvmzm"}]],LS=De("Lock",kS);/** + * @license lucide-react v0.475.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const HS=[["path",{d:"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z",key:"1lielz"}]],pd=De("MessageSquare",HS);/** + * @license lucide-react v0.475.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const qS=[["path",{d:"M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z",key:"a7tn18"}]],GS=De("Moon",qS);/** + * @license lucide-react v0.475.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const YS=[["circle",{cx:"13.5",cy:"6.5",r:".5",fill:"currentColor",key:"1okk4w"}],["circle",{cx:"17.5",cy:"10.5",r:".5",fill:"currentColor",key:"f64h9f"}],["circle",{cx:"8.5",cy:"7.5",r:".5",fill:"currentColor",key:"fotxhn"}],["circle",{cx:"6.5",cy:"12.5",r:".5",fill:"currentColor",key:"qy21gx"}],["path",{d:"M12 2C6.5 2 2 6.5 2 12s4.5 10 10 10c.926 0 1.648-.746 1.648-1.688 0-.437-.18-.835-.437-1.125-.29-.289-.438-.652-.438-1.125a1.64 1.64 0 0 1 1.668-1.668h1.996c3.051 0 5.555-2.503 5.555-5.554C21.965 6.012 17.461 2 12 2z",key:"12rzf8"}]],VS=De("Palette",YS);/** + * @license lucide-react v0.475.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const QS=[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M3 9h18",key:"1pudct"}],["path",{d:"M9 21V9",key:"1oto5p"}]],XS=De("PanelsTopLeft",QS);/** + * @license lucide-react v0.475.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const ZS=[["rect",{width:"5",height:"5",x:"3",y:"3",rx:"1",key:"1tu5fj"}],["rect",{width:"5",height:"5",x:"16",y:"3",rx:"1",key:"1v8r4q"}],["rect",{width:"5",height:"5",x:"3",y:"16",rx:"1",key:"1x03jg"}],["path",{d:"M21 16h-3a2 2 0 0 0-2 2v3",key:"177gqh"}],["path",{d:"M21 21v.01",key:"ents32"}],["path",{d:"M12 7v3a2 2 0 0 1-2 2H7",key:"8crl2c"}],["path",{d:"M3 12h.01",key:"nlz23k"}],["path",{d:"M12 3h.01",key:"n36tog"}],["path",{d:"M12 16v.01",key:"133mhm"}],["path",{d:"M16 12h1",key:"1slzba"}],["path",{d:"M21 12v.01",key:"1lwtk9"}],["path",{d:"M12 21v-1",key:"1880an"}]],KS=De("QrCode",ZS);/** + * @license lucide-react v0.475.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const IS=[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]],Yy=De("RefreshCw",IS);/** + * @license lucide-react v0.475.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const JS=[["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}],["path",{d:"m21 21-4.3-4.3",key:"1qie3q"}]],bd=De("Search",JS);/** + * @license lucide-react v0.475.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const FS=[["path",{d:"M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z",key:"1ffxy3"}],["path",{d:"m21.854 2.147-10.94 10.939",key:"12cjpa"}]],PS=De("Send",FS);/** + * @license lucide-react v0.475.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const $S=[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]],WS=De("ShieldCheck",$S);/** + * @license lucide-react v0.475.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const eN=[["rect",{width:"14",height:"20",x:"5",y:"2",rx:"2",ry:"2",key:"1yt0o3"}],["path",{d:"M12 18h.01",key:"mhygvu"}]],tN=De("Smartphone",eN);/** + * @license lucide-react v0.475.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const nN=[["path",{d:"M9.937 15.5A2 2 0 0 0 8.5 14.063l-6.135-1.582a.5.5 0 0 1 0-.962L8.5 9.936A2 2 0 0 0 9.937 8.5l1.582-6.135a.5.5 0 0 1 .963 0L14.063 8.5A2 2 0 0 0 15.5 9.937l6.135 1.581a.5.5 0 0 1 0 .964L15.5 14.063a2 2 0 0 0-1.437 1.437l-1.582 6.135a.5.5 0 0 1-.963 0z",key:"4pj2yx"}],["path",{d:"M20 3v4",key:"1olli1"}],["path",{d:"M22 5h-4",key:"1gvqau"}],["path",{d:"M4 17v2",key:"vumght"}],["path",{d:"M5 18H3",key:"zchphs"}]],$f=De("Sparkles",nN);/** + * @license lucide-react v0.475.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const lN=[["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"m4.93 4.93 1.41 1.41",key:"149t6j"}],["path",{d:"m17.66 17.66 1.41 1.41",key:"ptbguv"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"m6.34 17.66-1.41 1.41",key:"1m8zz5"}],["path",{d:"m19.07 4.93-1.41 1.41",key:"1shlcs"}]],aN=De("Sun",lN);/** + * @license lucide-react v0.475.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const iN=[["polyline",{points:"4 17 10 11 4 5",key:"akl6gq"}],["line",{x1:"12",x2:"20",y1:"19",y2:"19",key:"q2wloq"}]],yr=De("Terminal",iN);/** + * @license lucide-react v0.475.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const rN=[["path",{d:"m19 5 3-3",key:"yk6iyv"}],["path",{d:"m2 22 3-3",key:"19mgm9"}],["path",{d:"M6.3 20.3a2.4 2.4 0 0 0 3.4 0L12 18l-6-6-2.3 2.3a2.4 2.4 0 0 0 0 3.4Z",key:"goz73y"}],["path",{d:"M7.5 13.5 10 11",key:"7xgeeb"}],["path",{d:"M10.5 16.5 13 14",key:"10btkg"}],["path",{d:"m12 6 6 6 2.3-2.3a2.4 2.4 0 0 0 0-3.4l-2.6-2.6a2.4 2.4 0 0 0-3.4 0Z",key:"1snsnr"}]],uN=De("Unplug",rN);/** + * @license lucide-react v0.475.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const oN=[["path",{d:"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2",key:"975kel"}],["circle",{cx:"12",cy:"7",r:"4",key:"17ys0d"}]],cN=De("User",oN);/** + * @license lucide-react v0.475.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const sN=[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}],["path",{d:"M22 21v-2a4 4 0 0 0-3-3.87",key:"kshegd"}],["path",{d:"M16 3.13a4 4 0 0 1 0 7.75",key:"1da9ce"}]],fN=De("Users",sN);var dN=Object.defineProperty,xd=(i,u)=>dN(i,"name",{value:u,configurable:!0});function Wf(i,u){if(typeof i=="function")return i(u);i!=null&&(i.current=u)}xd(Wf,"setRef");function ua(...i){return u=>{let c=!1;const o=i.map(s=>{const d=Wf(s,u);return!c&&typeof d=="function"&&(c=!0),d});if(c)return()=>{for(let s=0;smN(i,"name",{value:u,configurable:!0});function zl(i){const u=b.forwardRef((c,o)=>{let{children:s,...d}=c,h=null,v=!1;const g=[];s=Iy(s),b.Children.forEach(s,N=>{var A;if(Zy(N)){v=!0;const j=N;let z="child"in j.props?j.props.child:j.props.children;for(;Sd(z)&&typeof vo=="function";)z=vo(z._payload);h=gN(j,z),g.push((A=h==null?void 0:h.props)==null?void 0:A.children)}else g.push(N)}),h?h=b.cloneElement(h,void 0,g):!v&&b.Children.count(s)===1&&b.isValidElement(s)&&(h=s);const x=h?Xy(h):void 0,S=Dt(o,x);if(!h){if(s||s===0)throw new Error(v?bN(i):pN(i));return s}const p=Qy(d,h.props??{});return h.type!==b.Fragment&&(p.ref=o?S:x),b.cloneElement(h,p)});return u.displayName=`${i}.Slot`,u}It(zl,"createSlot");var hN=zl("Slot"),Vy=Symbol.for("radix.slottable");function vN(i){const u=It(c=>"child"in c?c.children(c.child):c.children,"Slottable");return u.displayName=`${i}.Slottable`,u.__radixId=Vy,u}It(vN,"createSlottable");var gN=It((i,u)=>"child"in i.props?b.isValidElement(u)?b.cloneElement(u,void 0,i.props.children(u.props.children)):null:b.isValidElement(u)?u:null,"getSlottableElementFromSlottable");function Qy(i,u){const c={...u};for(const o in u){const s=i[o],d=u[o];/^on[A-Z]/.test(o)?s&&d?c[o]=(...v)=>{const g=d(...v);return s(...v),g}:s&&(c[o]=s):o==="style"?c[o]={...s,...d}:o==="className"?c[o]=[s,d].filter(Boolean).join(" "):o==="aria-describedby"&&(c[o]=Jy(d,s))}return{...i,...c}}It(Qy,"mergeProps");function Xy(i){var o,s;let u=(o=Object.getOwnPropertyDescriptor(i.props,"ref"))==null?void 0:o.get,c=u&&"isReactWarning"in u&&u.isReactWarning;return c?i.ref:(u=(s=Object.getOwnPropertyDescriptor(i,"ref"))==null?void 0:s.get,c=u&&"isReactWarning"in u&&u.isReactWarning,c?i.props.ref:i.props.ref||i.ref)}It(Xy,"getElementRef");function Zy(i){return b.isValidElement(i)&&typeof i.type=="function"&&"__radixId"in i.type&&i.type.__radixId===Vy}It(Zy,"isSlottable");var yN=Symbol.for("react.lazy");function Sd(i){return i!=null&&typeof i=="object"&&"$$typeof"in i&&i.$$typeof===yN&&"_payload"in i&&Ky(i._payload)}It(Sd,"isLazyComponent");function Ky(i){return typeof i=="object"&&i!==null&&"then"in i}It(Ky,"isPromiseLike");function Iy(i){let u=i;for(;Sd(u)&&typeof vo=="function";)u=vo(u._payload);return u}It(Iy,"useUnwrappedLazy");function Jy(...i){const u=new Set;for(const c of i)if(typeof c=="string")for(const o of String(c).trim().split(/\s+/))o&&u.add(o);return u.size>0?Array.from(u).join(" "):void 0}It(Jy,"concatAriaDescribedby");var pN=It(i=>`${i} failed to slot onto its children. Expected a single React element child or \`Slottable\`.`,"createSlotError"),bN=It(i=>`${i} failed to slot onto its \`Slottable\`. Expected \`Slottable\` to receive a single React element child.`,"createSlottableError"),vo=sa[" use ".trim().toString()];function Fy(i){var u,c,o="";if(typeof i=="string"||typeof i=="number")o+=i;else if(typeof i=="object")if(Array.isArray(i)){var s=i.length;for(u=0;utypeof i=="boolean"?`${i}`:i===0?"0":i,k0=Py,$y=(i,u)=>c=>{var o;if((u==null?void 0:u.variants)==null)return k0(i,c==null?void 0:c.class,c==null?void 0:c.className);const{variants:s,defaultVariants:d}=u,h=Object.keys(s).map(x=>{const S=c==null?void 0:c[x],p=d==null?void 0:d[x];if(S===null)return null;const N=B0(S)||B0(p);return s[x][N]}),v=c&&Object.entries(c).reduce((x,S)=>{let[p,N]=S;return N===void 0||(x[p]=N),x},{}),g=u==null||(o=u.compoundVariants)===null||o===void 0?void 0:o.reduce((x,S)=>{let{class:p,className:N,...A}=S;return Object.entries(A).every(j=>{let[z,H]=j;return Array.isArray(H)?H.includes({...d,...v}[z]):{...d,...v}[z]===H})?[...x,p,N]:x},[]);return k0(i,h,g,c==null?void 0:c.class,c==null?void 0:c.className)},xN=(i,u)=>{const c=new Array(i.length+u.length);for(let o=0;o({classGroupId:i,validator:u}),Wy=(i=new Map,u=null,c)=>({nextPart:i,validators:u,classGroupId:c}),go="-",L0=[],NN="arbitrary..",CN=i=>{const u=wN(i),{conflictingClassGroups:c,conflictingClassGroupModifiers:o}=i;return{getClassGroupId:h=>{if(h.startsWith("[")&&h.endsWith("]"))return EN(h);const v=h.split(go),g=v[0]===""&&v.length>1?1:0;return e1(v,g,u)},getConflictingClassGroupIds:(h,v)=>{if(v){const g=o[h],x=c[h];return g?x?xN(x,g):g:x||L0}return c[h]||L0}}},e1=(i,u,c)=>{if(i.length-u===0)return c.classGroupId;const s=i[u],d=c.nextPart.get(s);if(d){const x=e1(i,u+1,d);if(x)return x}const h=c.validators;if(h===null)return;const v=u===0?i.join(go):i.slice(u).join(go),g=h.length;for(let x=0;xi.slice(1,-1).indexOf(":")===-1?void 0:(()=>{const u=i.slice(1,-1),c=u.indexOf(":"),o=u.slice(0,c);return o?NN+o:void 0})(),wN=i=>{const{theme:u,classGroups:c}=i;return TN(c,u)},TN=(i,u)=>{const c=Wy();for(const o in i){const s=i[o];Nd(s,c,o,u)}return c},Nd=(i,u,c,o)=>{const s=i.length;for(let d=0;d{if(typeof i=="string"){_N(i,u,c);return}if(typeof i=="function"){AN(i,u,c,o);return}RN(i,u,c,o)},_N=(i,u,c)=>{const o=i===""?u:t1(u,i);o.classGroupId=c},AN=(i,u,c,o)=>{if(MN(i)){Nd(i(o),u,c,o);return}u.validators===null&&(u.validators=[]),u.validators.push(SN(c,i))},RN=(i,u,c,o)=>{const s=Object.entries(i),d=s.length;for(let h=0;h{let c=i;const o=u.split(go),s=o.length;for(let d=0;d"isThemeGetter"in i&&i.isThemeGetter===!0,ON=i=>{if(i<1)return{get:()=>{},set:()=>{}};let u=0,c=Object.create(null),o=Object.create(null);const s=(d,h)=>{c[d]=h,u++,u>i&&(u=0,o=c,c=Object.create(null))};return{get(d){let h=c[d];if(h!==void 0)return h;if((h=o[d])!==void 0)return s(d,h),h},set(d,h){d in c?c[d]=h:s(d,h)}}},ed="!",H0=":",zN=[],q0=(i,u,c,o,s)=>({modifiers:i,hasImportantModifier:u,baseClassName:c,maybePostfixModifierPosition:o,isExternal:s}),DN=i=>{const{prefix:u,experimentalParseClassName:c}=i;let o=s=>{const d=[];let h=0,v=0,g=0,x;const S=s.length;for(let z=0;zg?x-g:void 0;return q0(d,A,N,j)};if(u){const s=u+H0,d=o;o=h=>h.startsWith(s)?d(h.slice(s.length)):q0(zN,!1,h,void 0,!0)}if(c){const s=o;o=d=>c({className:d,parseClassName:s})}return o},UN=i=>{const u=new Map;return i.orderSensitiveModifiers.forEach((c,o)=>{u.set(c,1e6+o)}),c=>{const o=[];let s=[];for(let d=0;d0&&(s.sort(),o.push(...s),s=[]),o.push(h)):s.push(h)}return s.length>0&&(s.sort(),o.push(...s)),o}},BN=i=>({cache:ON(i.cacheSize),parseClassName:DN(i),sortModifiers:UN(i),postfixLookupClassGroupIds:kN(i),...CN(i)}),kN=i=>{const u=Object.create(null),c=i.postfixLookupClassGroups;if(c)for(let o=0;o{const{parseClassName:c,getClassGroupId:o,getConflictingClassGroupIds:s,sortModifiers:d,postfixLookupClassGroupIds:h}=u,v=[],g=i.trim().split(LN);let x="";for(let S=g.length-1;S>=0;S-=1){const p=g[S],{isExternal:N,modifiers:A,hasImportantModifier:j,baseClassName:z,maybePostfixModifierPosition:H}=c(p);if(N){x=p+(x.length>0?" "+x:x);continue}let q=!!H,G;if(q){const E=z.substring(0,H);G=o(E);const R=G&&h[G]?o(z):void 0;R&&R!==G&&(G=R,q=!1)}else G=o(z);if(!G){if(!q){x=p+(x.length>0?" "+x:x);continue}if(G=o(z),!G){x=p+(x.length>0?" "+x:x);continue}q=!1}const k=A.length===0?"":A.length===1?A[0]:d(A).join(":"),V=j?k+ed:k,K=V+G;if(v.indexOf(K)>-1)continue;v.push(K);const _=s(G,q);for(let E=0;E<_.length;++E){const R=_[E];v.push(V+R)}x=p+(x.length>0?" "+x:x)}return x},qN=(...i)=>{let u=0,c,o,s="";for(;u{if(typeof i=="string")return i;let u,c="";for(let o=0;o{let c,o,s,d;const h=g=>{const x=u.reduce((S,p)=>p(S),i());return c=BN(x),o=c.cache.get,s=c.cache.set,d=v,v(g)},v=g=>{const x=o(g);if(x)return x;const S=HN(g,c);return s(g,S),S};return d=h,(...g)=>d(qN(...g))},YN=[],it=i=>{const u=c=>c[i]||YN;return u.isThemeGetter=!0,u.themeKey=i,u},l1=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,a1=/^\((?:(\w[\w-]*):)?(.+)\)$/i,VN=/^\d+(?:\.\d+)?\/\d+(?:\.\d+)?$/,QN=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,XN=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,ZN=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix|color|light-dark)\(.+\)$/,KN=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,IN=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,Ml=i=>VN.test(i),Te=i=>!!i&&!Number.isNaN(Number(i)),Rn=i=>!!i&&Number.isInteger(Number(i)),gf=i=>i.endsWith("%")&&Te(i.slice(0,-1)),Pn=i=>QN.test(i),i1=()=>!0,JN=i=>XN.test(i)&&!ZN.test(i),Cd=()=>!1,FN=i=>KN.test(i),PN=i=>IN.test(i),$N=i=>!oe(i)&&!se(i),WN=i=>i.startsWith("@container")&&(i[10]==="/"&&i[11]!==void 0||i[11]==="s"&&i[16]!==void 0&&i.startsWith("-size/",10)||i[11]==="n"&&i[18]!==void 0&&i.startsWith("-normal/",10)),e4=i=>Bl(i,o1,Cd),oe=i=>l1.test(i),ra=i=>Bl(i,c1,JN),G0=i=>Bl(i,o4,Te),t4=i=>Bl(i,f1,i1),n4=i=>Bl(i,s1,Cd),Y0=i=>Bl(i,r1,Cd),l4=i=>Bl(i,u1,PN),to=i=>Bl(i,d1,FN),se=i=>a1.test(i),mr=i=>fa(i,c1),a4=i=>fa(i,s1),V0=i=>fa(i,r1),i4=i=>fa(i,o1),r4=i=>fa(i,u1),no=i=>fa(i,d1,!0),u4=i=>fa(i,f1,!0),Bl=(i,u,c)=>{const o=l1.exec(i);return o?o[1]?u(o[1]):c(o[2]):!1},fa=(i,u,c=!1)=>{const o=a1.exec(i);return o?o[1]?u(o[1]):c:!1},r1=i=>i==="position"||i==="percentage",u1=i=>i==="image"||i==="url",o1=i=>i==="length"||i==="size"||i==="bg-size",c1=i=>i==="length",o4=i=>i==="number",s1=i=>i==="family-name",f1=i=>i==="number"||i==="weight",d1=i=>i==="shadow",c4=()=>{const i=it("color"),u=it("font"),c=it("text"),o=it("font-weight"),s=it("tracking"),d=it("leading"),h=it("breakpoint"),v=it("container"),g=it("spacing"),x=it("radius"),S=it("shadow"),p=it("inset-shadow"),N=it("text-shadow"),A=it("drop-shadow"),j=it("blur"),z=it("perspective"),H=it("aspect"),q=it("ease"),G=it("animate"),k=()=>["auto","avoid","all","avoid-page","page","left","right","column"],V=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],K=()=>[...V(),se,oe],_=()=>["auto","hidden","clip","visible","scroll"],E=()=>["auto","contain","none"],R=()=>[se,oe,g],Q=()=>[Ml,"full","auto",...R()],te=()=>[Rn,"none","subgrid",se,oe],W=()=>["auto",{span:["full",Rn,se,oe]},Rn,se,oe],P=()=>[Rn,"auto",se,oe],ne=()=>["auto","min","max","fr",se,oe],re=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],ge=()=>["start","end","center","stretch","center-safe","end-safe"],F=()=>["auto",...R()],ae=()=>[Ml,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...R()],ce=()=>[v,Ml,"screen","full","dvw","lvw","svw","min","max","fit",...R()],xe=()=>[Ml,"screen","full","lh","dvh","lvh","svh","min","max","fit",...R()],I=()=>[i,se,oe],Se=()=>[...V(),V0,Y0,{position:[se,oe]}],J=()=>["no-repeat",{repeat:["","x","y","space","round"]}],me=()=>["auto","cover","contain",i4,e4,{size:[se,oe]}],w=()=>[gf,mr,ra],U=()=>["","none","full",x,se,oe],$=()=>["",Te,mr,ra],ee=()=>["solid","dashed","dotted","double"],he=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],ie=()=>[Te,gf,V0,Y0],Ne=()=>["","none",j,se,oe],fe=()=>["none",Te,se,oe],ye=()=>["none",Te,se,oe],Ut=()=>[Te,se,oe],tl=()=>[Ml,"full",...R()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[Pn],breakpoint:[Pn],color:[i1],container:[Pn],"drop-shadow":[Pn],ease:["in","out","in-out"],font:[$N],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[Pn],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[Pn],shadow:[Pn],spacing:["px",Te],text:[Pn],"text-shadow":[Pn],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",Ml,oe,se,H]}],container:["container"],"container-type":[{"@container":["","normal","size",se,oe]}],"container-named":[WN],columns:[{columns:[Te,"auto",oe,se,v]}],"break-after":[{"break-after":k()}],"break-before":[{"break-before":k()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],sr:["sr-only","not-sr-only"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:K()}],overflow:[{overflow:_()}],"overflow-x":[{"overflow-x":_()}],"overflow-y":[{"overflow-y":_()}],overscroll:[{overscroll:E()}],"overscroll-x":[{"overscroll-x":E()}],"overscroll-y":[{"overscroll-y":E()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:Q()}],"inset-x":[{"inset-x":Q()}],"inset-y":[{"inset-y":Q()}],start:[{"inset-s":Q(),start:Q()}],end:[{"inset-e":Q(),end:Q()}],"inset-bs":[{"inset-bs":Q()}],"inset-be":[{"inset-be":Q()}],top:[{top:Q()}],right:[{right:Q()}],bottom:[{bottom:Q()}],left:[{left:Q()}],visibility:["visible","invisible","collapse"],z:[{z:[Rn,"auto",se,oe]}],basis:[{basis:[Ml,"full","auto",v,...R()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[Te,Ml,"auto","initial","none",oe]}],grow:[{grow:["",Te,se,oe]}],shrink:[{shrink:["",Te,se,oe]}],order:[{order:[Rn,"first","last","none",se,oe]}],"grid-cols":[{"grid-cols":te()}],"col-start-end":[{col:W()}],"col-start":[{"col-start":P()}],"col-end":[{"col-end":P()}],"grid-rows":[{"grid-rows":te()}],"row-start-end":[{row:W()}],"row-start":[{"row-start":P()}],"row-end":[{"row-end":P()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":ne()}],"auto-rows":[{"auto-rows":ne()}],gap:[{gap:R()}],"gap-x":[{"gap-x":R()}],"gap-y":[{"gap-y":R()}],"justify-content":[{justify:[...re(),"normal"]}],"justify-items":[{"justify-items":[...ge(),"normal"]}],"justify-self":[{"justify-self":["auto",...ge()]}],"align-content":[{content:["normal",...re()]}],"align-items":[{items:[...ge(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...ge(),{baseline:["","last"]}]}],"place-content":[{"place-content":re()}],"place-items":[{"place-items":[...ge(),"baseline"]}],"place-self":[{"place-self":["auto",...ge()]}],p:[{p:R()}],px:[{px:R()}],py:[{py:R()}],ps:[{ps:R()}],pe:[{pe:R()}],pbs:[{pbs:R()}],pbe:[{pbe:R()}],pt:[{pt:R()}],pr:[{pr:R()}],pb:[{pb:R()}],pl:[{pl:R()}],m:[{m:F()}],mx:[{mx:F()}],my:[{my:F()}],ms:[{ms:F()}],me:[{me:F()}],mbs:[{mbs:F()}],mbe:[{mbe:F()}],mt:[{mt:F()}],mr:[{mr:F()}],mb:[{mb:F()}],ml:[{ml:F()}],"space-x":[{"space-x":R()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":R()}],"space-y-reverse":["space-y-reverse"],size:[{size:ae()}],"inline-size":[{inline:["auto",...ce()]}],"min-inline-size":[{"min-inline":["auto",...ce()]}],"max-inline-size":[{"max-inline":["none",...ce()]}],"block-size":[{block:["auto",...xe()]}],"min-block-size":[{"min-block":["auto",...xe()]}],"max-block-size":[{"max-block":["none",...xe()]}],w:[{w:[v,"screen",...ae()]}],"min-w":[{"min-w":[v,"screen","none",...ae()]}],"max-w":[{"max-w":[v,"screen","none","prose",{screen:[h]},...ae()]}],h:[{h:["screen","lh",...ae()]}],"min-h":[{"min-h":["screen","lh","none",...ae()]}],"max-h":[{"max-h":["screen","lh","none",...ae()]}],"font-size":[{text:["base",c,mr,ra]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[o,u4,t4]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",gf,oe]}],"font-family":[{font:[a4,n4,u]}],"font-features":[{"font-features":[oe]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:[s,se,oe]}],"line-clamp":[{"line-clamp":[Te,"none",se,G0]}],leading:[{leading:["none",d,...R()]}],"list-image":[{"list-image":["none",se,oe]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",se,oe]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"placeholder-color":[{placeholder:I()}],"text-color":[{text:I()}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...ee(),"wavy"]}],"text-decoration-thickness":[{decoration:[Te,"from-font","auto",se,ra]}],"text-decoration-color":[{decoration:I()}],"underline-offset":[{"underline-offset":[Te,"auto",se,oe]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:R()}],"tab-size":[{tab:[Rn,se,oe]}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",se,oe]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],wrap:[{wrap:["break-word","anywhere","normal"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",se,oe]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:Se()}],"bg-repeat":[{bg:J()}],"bg-size":[{bg:me()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},Rn,se,oe],radial:["",se,oe],conic:["",Rn,se,oe]},r4,l4]}],"bg-color":[{bg:I()}],"gradient-from-pos":[{from:w()}],"gradient-via-pos":[{via:w()}],"gradient-to-pos":[{to:w()}],"gradient-from":[{from:I()}],"gradient-via":[{via:I()}],"gradient-to":[{to:I()}],rounded:[{rounded:U()}],"rounded-s":[{"rounded-s":U()}],"rounded-e":[{"rounded-e":U()}],"rounded-t":[{"rounded-t":U()}],"rounded-r":[{"rounded-r":U()}],"rounded-b":[{"rounded-b":U()}],"rounded-l":[{"rounded-l":U()}],"rounded-ss":[{"rounded-ss":U()}],"rounded-se":[{"rounded-se":U()}],"rounded-ee":[{"rounded-ee":U()}],"rounded-es":[{"rounded-es":U()}],"rounded-tl":[{"rounded-tl":U()}],"rounded-tr":[{"rounded-tr":U()}],"rounded-br":[{"rounded-br":U()}],"rounded-bl":[{"rounded-bl":U()}],"border-w":[{border:$()}],"border-w-x":[{"border-x":$()}],"border-w-y":[{"border-y":$()}],"border-w-s":[{"border-s":$()}],"border-w-e":[{"border-e":$()}],"border-w-bs":[{"border-bs":$()}],"border-w-be":[{"border-be":$()}],"border-w-t":[{"border-t":$()}],"border-w-r":[{"border-r":$()}],"border-w-b":[{"border-b":$()}],"border-w-l":[{"border-l":$()}],"divide-x":[{"divide-x":$()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":$()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...ee(),"hidden","none"]}],"divide-style":[{divide:[...ee(),"hidden","none"]}],"border-color":[{border:I()}],"border-color-x":[{"border-x":I()}],"border-color-y":[{"border-y":I()}],"border-color-s":[{"border-s":I()}],"border-color-e":[{"border-e":I()}],"border-color-bs":[{"border-bs":I()}],"border-color-be":[{"border-be":I()}],"border-color-t":[{"border-t":I()}],"border-color-r":[{"border-r":I()}],"border-color-b":[{"border-b":I()}],"border-color-l":[{"border-l":I()}],"divide-color":[{divide:I()}],"outline-style":[{outline:[...ee(),"none","hidden"]}],"outline-offset":[{"outline-offset":[Te,se,oe]}],"outline-w":[{outline:["",Te,mr,ra]}],"outline-color":[{outline:I()}],shadow:[{shadow:["","inner","none",S,no,to]}],"shadow-color":[{shadow:I()}],"inset-shadow":[{"inset-shadow":["none",p,no,to]}],"inset-shadow-color":[{"inset-shadow":I()}],"ring-w":[{ring:$()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:I()}],"ring-offset-w":[{"ring-offset":[Te,ra]}],"ring-offset-color":[{"ring-offset":I()}],"inset-ring-w":[{"inset-ring":$()}],"inset-ring-color":[{"inset-ring":I()}],"text-shadow":[{"text-shadow":["none",N,no,to]}],"text-shadow-color":[{"text-shadow":I()}],opacity:[{opacity:[Te,se,oe]}],"mix-blend":[{"mix-blend":[...he(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":he()}],"mask-clip":[{"mask-clip":["border","padding","content","fill","stroke","view"]},"mask-no-clip"],"mask-composite":[{mask:["add","subtract","intersect","exclude"]}],"mask-image-linear-pos":[{"mask-linear":[Te]}],"mask-image-linear-from-pos":[{"mask-linear-from":ie()}],"mask-image-linear-to-pos":[{"mask-linear-to":ie()}],"mask-image-linear-from-color":[{"mask-linear-from":I()}],"mask-image-linear-to-color":[{"mask-linear-to":I()}],"mask-image-t-from-pos":[{"mask-t-from":ie()}],"mask-image-t-to-pos":[{"mask-t-to":ie()}],"mask-image-t-from-color":[{"mask-t-from":I()}],"mask-image-t-to-color":[{"mask-t-to":I()}],"mask-image-r-from-pos":[{"mask-r-from":ie()}],"mask-image-r-to-pos":[{"mask-r-to":ie()}],"mask-image-r-from-color":[{"mask-r-from":I()}],"mask-image-r-to-color":[{"mask-r-to":I()}],"mask-image-b-from-pos":[{"mask-b-from":ie()}],"mask-image-b-to-pos":[{"mask-b-to":ie()}],"mask-image-b-from-color":[{"mask-b-from":I()}],"mask-image-b-to-color":[{"mask-b-to":I()}],"mask-image-l-from-pos":[{"mask-l-from":ie()}],"mask-image-l-to-pos":[{"mask-l-to":ie()}],"mask-image-l-from-color":[{"mask-l-from":I()}],"mask-image-l-to-color":[{"mask-l-to":I()}],"mask-image-x-from-pos":[{"mask-x-from":ie()}],"mask-image-x-to-pos":[{"mask-x-to":ie()}],"mask-image-x-from-color":[{"mask-x-from":I()}],"mask-image-x-to-color":[{"mask-x-to":I()}],"mask-image-y-from-pos":[{"mask-y-from":ie()}],"mask-image-y-to-pos":[{"mask-y-to":ie()}],"mask-image-y-from-color":[{"mask-y-from":I()}],"mask-image-y-to-color":[{"mask-y-to":I()}],"mask-image-radial":[{"mask-radial":[se,oe]}],"mask-image-radial-from-pos":[{"mask-radial-from":ie()}],"mask-image-radial-to-pos":[{"mask-radial-to":ie()}],"mask-image-radial-from-color":[{"mask-radial-from":I()}],"mask-image-radial-to-color":[{"mask-radial-to":I()}],"mask-image-radial-shape":[{"mask-radial":["circle","ellipse"]}],"mask-image-radial-size":[{"mask-radial":[{closest:["side","corner"],farthest:["side","corner"]}]}],"mask-image-radial-pos":[{"mask-radial-at":V()}],"mask-image-conic-pos":[{"mask-conic":[Te]}],"mask-image-conic-from-pos":[{"mask-conic-from":ie()}],"mask-image-conic-to-pos":[{"mask-conic-to":ie()}],"mask-image-conic-from-color":[{"mask-conic-from":I()}],"mask-image-conic-to-color":[{"mask-conic-to":I()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:Se()}],"mask-repeat":[{mask:J()}],"mask-size":[{mask:me()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",se,oe]}],filter:[{filter:["","none",se,oe]}],blur:[{blur:Ne()}],brightness:[{brightness:[Te,se,oe]}],contrast:[{contrast:[Te,se,oe]}],"drop-shadow":[{"drop-shadow":["","none",A,no,to]}],"drop-shadow-color":[{"drop-shadow":I()}],grayscale:[{grayscale:["",Te,se,oe]}],"hue-rotate":[{"hue-rotate":[Te,se,oe]}],invert:[{invert:["",Te,se,oe]}],saturate:[{saturate:[Te,se,oe]}],sepia:[{sepia:["",Te,se,oe]}],"backdrop-filter":[{"backdrop-filter":["","none",se,oe]}],"backdrop-blur":[{"backdrop-blur":Ne()}],"backdrop-brightness":[{"backdrop-brightness":[Te,se,oe]}],"backdrop-contrast":[{"backdrop-contrast":[Te,se,oe]}],"backdrop-grayscale":[{"backdrop-grayscale":["",Te,se,oe]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[Te,se,oe]}],"backdrop-invert":[{"backdrop-invert":["",Te,se,oe]}],"backdrop-opacity":[{"backdrop-opacity":[Te,se,oe]}],"backdrop-saturate":[{"backdrop-saturate":[Te,se,oe]}],"backdrop-sepia":[{"backdrop-sepia":["",Te,se,oe]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":R()}],"border-spacing-x":[{"border-spacing-x":R()}],"border-spacing-y":[{"border-spacing-y":R()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",se,oe]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[Te,"initial",se,oe]}],ease:[{ease:["linear","initial",q,se,oe]}],delay:[{delay:[Te,se,oe]}],animate:[{animate:["none",G,se,oe]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[z,se,oe]}],"perspective-origin":[{"perspective-origin":K()}],rotate:[{rotate:fe()}],"rotate-x":[{"rotate-x":fe()}],"rotate-y":[{"rotate-y":fe()}],"rotate-z":[{"rotate-z":fe()}],scale:[{scale:ye()}],"scale-x":[{"scale-x":ye()}],"scale-y":[{"scale-y":ye()}],"scale-z":[{"scale-z":ye()}],"scale-3d":["scale-3d"],skew:[{skew:Ut()}],"skew-x":[{"skew-x":Ut()}],"skew-y":[{"skew-y":Ut()}],transform:[{transform:[se,oe,"","none","gpu","cpu"]}],"transform-origin":[{origin:K()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:tl()}],"translate-x":[{"translate-x":tl()}],"translate-y":[{"translate-y":tl()}],"translate-z":[{"translate-z":tl()}],"translate-none":["translate-none"],zoom:[{zoom:[Rn,se,oe]}],accent:[{accent:I()}],appearance:[{appearance:["none","auto"]}],"caret-color":[{caret:I()}],"color-scheme":[{scheme:["normal","dark","light","light-dark","only-dark","only-light"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",se,oe]}],"field-sizing":[{"field-sizing":["fixed","content"]}],"pointer-events":[{"pointer-events":["auto","none"]}],resize:[{resize:["none","","y","x"]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scrollbar-thumb-color":[{"scrollbar-thumb":I()}],"scrollbar-track-color":[{"scrollbar-track":I()}],"scrollbar-gutter":[{"scrollbar-gutter":["auto","stable","both"]}],"scrollbar-w":[{scrollbar:["auto","thin","none"]}],"scroll-m":[{"scroll-m":R()}],"scroll-mx":[{"scroll-mx":R()}],"scroll-my":[{"scroll-my":R()}],"scroll-ms":[{"scroll-ms":R()}],"scroll-me":[{"scroll-me":R()}],"scroll-mbs":[{"scroll-mbs":R()}],"scroll-mbe":[{"scroll-mbe":R()}],"scroll-mt":[{"scroll-mt":R()}],"scroll-mr":[{"scroll-mr":R()}],"scroll-mb":[{"scroll-mb":R()}],"scroll-ml":[{"scroll-ml":R()}],"scroll-p":[{"scroll-p":R()}],"scroll-px":[{"scroll-px":R()}],"scroll-py":[{"scroll-py":R()}],"scroll-ps":[{"scroll-ps":R()}],"scroll-pe":[{"scroll-pe":R()}],"scroll-pbs":[{"scroll-pbs":R()}],"scroll-pbe":[{"scroll-pbe":R()}],"scroll-pt":[{"scroll-pt":R()}],"scroll-pr":[{"scroll-pr":R()}],"scroll-pb":[{"scroll-pb":R()}],"scroll-pl":[{"scroll-pl":R()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",se,oe]}],fill:[{fill:["none",...I()]}],"stroke-w":[{stroke:[Te,mr,ra,G0]}],stroke:[{stroke:["none",...I()]}],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{"container-named":["container-type"],overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","inset-bs","inset-be","start","end","top","right","bottom","left"],"inset-x":["start","end","right","left"],"inset-y":["inset-bs","inset-be","top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pbs","pbe","pt","pr","pb","pl"],px:["ps","pe","pr","pl"],py:["pbs","pbe","pt","pb"],m:["mx","my","ms","me","mbs","mbe","mt","mr","mb","ml"],mx:["ms","me","mr","ml"],my:["mbs","mbe","mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-x","border-w-y","border-w-s","border-w-e","border-w-bs","border-w-be","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-s","border-w-e","border-w-r","border-w-l"],"border-w-y":["border-w-bs","border-w-be","border-w-t","border-w-b"],"border-color":["border-color-x","border-color-y","border-color-s","border-color-e","border-color-bs","border-color-be","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-s","border-color-e","border-color-r","border-color-l"],"border-color-y":["border-color-bs","border-color-be","border-color-t","border-color-b"],translate:["translate-x","translate-y","translate-none"],"translate-none":["translate","translate-x","translate-y","translate-z"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mbs","scroll-mbe","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-ms","scroll-me","scroll-mr","scroll-ml"],"scroll-my":["scroll-mbs","scroll-mbe","scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pbs","scroll-pbe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-ps","scroll-pe","scroll-pr","scroll-pl"],"scroll-py":["scroll-pbs","scroll-pbe","scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]},postfixLookupClassGroups:["container-type"],orderSensitiveModifiers:["*","**","after","backdrop","before","details-content","file","first-letter","first-line","marker","placeholder","selection"]}},s4=GN(c4);function Ze(...i){return s4(Py(i))}const f4=$y("inline-flex items-center justify-center gap-1.5 whitespace-nowrap rounded-lg text-xs font-medium transition-all cursor-pointer select-none disabled:pointer-events-none disabled:opacity-50 shrink-0",{variants:{variant:{default:"hl-btn-primary shadow-xs",outline:"hl-btn-outline",secondary:"hl-muted border hl-border hover:opacity-90",ghost:"hover:bg-[var(--bg-muted)]",accent:"border border-[var(--accent)] bg-[var(--accent-soft)] text-[var(--accent)] font-semibold hover:opacity-90"},size:{default:"h-8 px-3 py-1.5",sm:"h-7 px-2.5 text-[11px] rounded-md",lg:"h-9 px-4 text-xs",icon:"h-8 w-8 p-0"}},defaultVariants:{variant:"default",size:"default"}}),Oe=b.forwardRef(({className:i,variant:u,size:c,asChild:o=!1,...s},d)=>{const h=o?hN:"button";return f.jsx(h,{className:Ze(f4({variant:u,size:c,className:i})),ref:d,...s})});Oe.displayName="Button";var d4=Object.defineProperty,vi=(i,u)=>d4(i,"name",{value:u,configurable:!0}),m1=!!(typeof window<"u"&&window.document&&window.document.createElement);function mt(i,u,{checkForDefaultPrevented:c=!0}={}){return vi(function(s){if(i==null||i(s),c===!1||!s||!s.defaultPrevented)return u==null?void 0:u(s)},"handleEvent")}vi(mt,"composeEventHandlers");function m4(i){var u;if(!m1)throw new Error("Cannot access window outside of the DOM");return((u=i==null?void 0:i.ownerDocument)==null?void 0:u.defaultView)??window}vi(m4,"getOwnerWindow");function td(i){if(!m1)throw new Error("Cannot access document outside of the DOM");return(i==null?void 0:i.ownerDocument)??document}vi(td,"getOwnerDocument");function h1(i,u=!1){const{activeElement:c}=td(i);if(!(c!=null&&c.nodeName))return null;if(v1(c)&&c.contentDocument)return h1(c.contentDocument.body,u);if(u){const o=c.getAttribute("aria-activedescendant");if(o){const s=td(c).getElementById(o);if(s)return s}}return c}vi(h1,"getActiveElement");function v1(i){return i.tagName==="IFRAME"}vi(v1,"isFrame");var h4=Object.defineProperty,rn=(i,u)=>h4(i,"name",{value:u,configurable:!0});function v4(i,u){const c=b.createContext(u);c.displayName=i+"Context";const o=rn(d=>{const{children:h,...v}=d,g=b.useMemo(()=>v,Object.values(v));return f.jsx(c.Provider,{value:g,children:h})},"Provider");o.displayName=i+"Provider";function s(d,h={}){const{optional:v=!1}=h,g=b.useContext(c);if(g)return g;if(u!==void 0)return u;if(!v)throw new Error(`\`${d}\` must be used within \`${i}\``)}return rn(s,"useContext"),[o,s]}rn(v4,"createContext");function da(i,u=[]){let c=[];function o(d,h){const v=b.createContext(h);v.displayName=d+"Context";const g=c.length;c=[...c,h];const x=rn(p=>{var q;const{scope:N,children:A,...j}=p,z=((q=N==null?void 0:N[i])==null?void 0:q[g])||v,H=b.useMemo(()=>j,Object.values(j));return f.jsx(z.Provider,{value:H,children:A})},"Provider");x.displayName=d+"Provider";function S(p,N,A={}){var q;const{optional:j=!1}=A,z=((q=N==null?void 0:N[i])==null?void 0:q[g])||v,H=b.useContext(z);if(H)return H;if(h!==void 0)return h;if(!j)throw new Error(`\`${p}\` must be used within \`${d}\``)}return rn(S,"useContext"),[x,S]}rn(o,"createContext");const s=rn(()=>{const d=c.map(h=>b.createContext(h));return rn(function(v){const g=(v==null?void 0:v[i])||d;return b.useMemo(()=>({[`__scope${i}`]:{...v,[i]:g}}),[v,g])},"useScope")},"createScope");return s.scopeName=i,[o,g1(s,...u)]}rn(da,"createContextScope");function g1(...i){const u=i[0];if(i.length===1)return u;const c=rn(()=>{const o=i.map(s=>({useScope:s(),scopeName:s.scopeName}));return rn(function(d){const h=o.reduce((v,{useScope:g,scopeName:x})=>{const p=g(d)[`__scope${x}`];return{...v,...p}},{});return b.useMemo(()=>({[`__scope${u.scopeName}`]:h}),[h])},"useComposedScopes")},"createScope");return c.scopeName=u.scopeName,c}rn(g1,"composeContextScopes");var on=globalThis!=null&&globalThis.document?b.useLayoutEffect:()=>{},g4=Object.defineProperty,ut=(i,u)=>g4(i,"name",{value:u,configurable:!0});function y1(i){const u=i+"CollectionProvider",[c,o]=da(u),[s,d]=c(u,{collectionRef:{current:null},itemMap:new Map}),h=ut(z=>{const{scope:H,children:q}=z,G=b.useRef(null),k=b.useRef(new Map).current;return f.jsx(s,{scope:H,itemMap:k,collectionRef:G,children:q})},"CollectionProvider");h.displayName=u;const v=i+"CollectionSlot",g=zl(v),x=b.forwardRef((z,H)=>{const{scope:q,children:G}=z,k=d(v,q),V=Dt(H,k.collectionRef);return f.jsx(g,{ref:V,children:G})});x.displayName=v;const S=i+"CollectionItemSlot",p="data-radix-collection-item",N=zl(S),A=b.forwardRef((z,H)=>{const{scope:q,children:G,...k}=z,V=b.useRef(null),K=Dt(H,V),_=d(S,q);return b.useEffect(()=>(_.itemMap.set(V,{ref:V,...k}),()=>void _.itemMap.delete(V))),f.jsx(N,{[p]:"",ref:K,children:G})});A.displayName=S;function j(z){const H=d(i+"CollectionConsumer",z);return b.useCallback(()=>{const G=H.collectionRef.current;if(!G)return[];const k=Array.from(G.querySelectorAll(`[${p}]`));return Array.from(H.itemMap.values()).sort((_,E)=>k.indexOf(_.ref.current)-k.indexOf(E.ref.current))},[H.collectionRef,H.itemMap])}return ut(j,"useCollection"),[{Provider:h,Slot:x,ItemSlot:A},j,o]}ut(y1,"createCollection");var Q0=new WeakMap,$e,Kt,lo=(Kt=class extends Map{constructor(c){super(c);x0(this,$e);cf(this,$e,[...super.keys()]),Q0.set(this,!0)}set(c,o){return Q0.get(this)&&!this.has(c)&&St(this,$e).push(c),super.set(c,o),this}insert(c,o,s){const d=this.has(o),h=d?this.size:this.size+1,v=Ed(c),g=v>=0?Math.min(v,h-1):Math.max(h+v,0);if(d?St(this,$e).indexOf(o)===g:g===this.size)return this.set(o,s),this;const x=St(this,$e).filter(p=>p!==o);x.splice(g,0,o);const S=x.map(p=>[p,p===o?s:this.get(p)]);this.clear();for(const[p,N]of S)this.set(p,N);return this}with(c,o,s){const d=new Kt(this);return d.insert(c,o,s),d}before(c){const o=St(this,$e).indexOf(c)-1;if(!(o<0))return this.entryAt(o)}setBefore(c,o,s){const d=St(this,$e).indexOf(c);if(d===-1)return this;const h=St(this,$e).indexOf(o),v=h!==-1&&h=this.size&&(d=this.size-1),this.at(d)}keyFrom(c,o){const s=this.indexOf(c);if(s===-1)return;let d=s+o;return d<0&&(d=0),d>=this.size&&(d=this.size-1),this.keyAt(d)}find(c,o){let s=0;for(const d of this){if(Reflect.apply(c,o,[d,s,this]))return d;s++}}findIndex(c,o){let s=0;for(const d of this){if(Reflect.apply(c,o,[d,s,this]))return s;s++}return-1}filter(c,o){const s=[];let d=0;for(const h of this)Reflect.apply(c,o,[h,d,this])&&s.push(h),d++;return new Kt(s)}map(c,o){const s=[];let d=0;for(const h of this)s.push([h[0],Reflect.apply(c,o,[h,d,this])]),d++;return new Kt(s)}reduce(...c){const[o,s]=c,d=c.length>1;if(!d&&this.size===0)throw new TypeError("Reduce of empty OrderedDict with no initial value");let h=0,v=s;for(const g of this)h===0&&!d?v=g:v=Reflect.apply(o,this,[v,g,h,this]),h++;return v}reduceRight(...c){const[o,s]=c,d=c.length>1;if(!d&&this.size===0)throw new TypeError("Reduce of empty OrderedDict with no initial value");let h=s;for(let v=this.size-1;v>=0;v--){const g=this.entryAt(v);v===this.size-1&&!d?h=g:h=Reflect.apply(o,this,[h,g,v,this])}return h}sort(c){if(typeof c!="function")throw new TypeError("OrderedDict.sort requires a compare function");const o=[...this.entries()].sort(c);this.clear();for(const[s,d]of o)this.set(s,d);return this}toSorted(c){if(typeof c!="function")throw new TypeError("OrderedDict.toSorted requires a compare function");const o=[...this.entries()].sort(c);return new Kt(o)}toReversed(){const c=new Kt;for(let o=this.size-1;o>=0;o--){const s=this.keyAt(o),d=this.get(s);c.set(s,d)}return c}toSpliced(...c){const o=[...this.entries()];return o.splice(...c),new Kt(o)}slice(c,o){const s=new Kt;for(const d of St(this,$e).slice(c,o))s.set(d,this.get(d));return s}every(c,o){let s=0;for(const d of this){if(!Reflect.apply(c,o,[d,s,this]))return!1;s++}return!0}some(c,o){let s=0;for(const d of this){if(Reflect.apply(c,o,[d,s,this]))return!0;s++}return!1}},$e=new WeakMap,ut(Kt,"OrderedDict"),Kt);function so(i,u){if("at"in Array.prototype)return Array.prototype.at.call(i,u);const c=p1(i,u);return c===-1?void 0:i[c]}ut(so,"at");function p1(i,u){const c=i.length,o=Ed(u),s=o>=0?o:c+o;return s<0||s>=c?-1:s}ut(p1,"toSafeIndex");function Ed(i){return i!==i||i===0?0:Math.trunc(i)}ut(Ed,"toSafeInteger");function y4(i){const u=i+"CollectionProvider",[c,o]=da(u),[s,d]=c(u);s.displayName=i+"CollectionStableContextProvider";const[h,v]=c(u);h.displayName=i+"CollectionStatefulContextProvider";const g=ut(({state:_,...E})=>_?f.jsx(S,{...E,state:_}):f.jsx(x,{...E}),"CollectionProvider");g.displayName=u;const x=ut(_=>{const E=G();return f.jsx(S,{..._,state:E})},"CollectionInit");x.displayName=i+"CollectionInit";const S=ut(_=>{const{scope:E,children:R,state:Q}=_,te=b.useRef(null),[W,P]=b.useState(null),ne=Dt(te,P),[re,ge]=Q,F=b.useRef(new lo),ae=b.useCallback(()=>{const ce=F.current;return S1(ce)||ce.sort(fo),ce},[]);return b.useEffect(()=>{if(!W)return;const ce=N1(()=>{ge(xe=>{const I=xe.toSorted(fo);return I.some(([J],me)=>xe.keyAt(me)!==J)?I:xe})});return ce.observe(W,{childList:!0,subtree:!0}),()=>{ce.disconnect()}},[W,ge]),f.jsx(s,{scope:E,collectionElementRef:ne,collectionElementRefObject:te,getCollection:ae,setCollection:ge,registryRef:F,children:f.jsx(h,{scope:E,collectionElement:W,collection:re,children:R})})},"CollectionProviderImpl");S.displayName=i+"CollectionProviderImpl";const p=i+"CollectionSlot",N=zl(p),A=b.forwardRef((_,E)=>{const{scope:R,children:Q}=_,te=d(p,R),W=Dt(E,te.collectionElementRef);return f.jsx(N,{ref:W,children:Q})});A.displayName=p;const j=i+"CollectionItemSlot",z="data-radix-collection-item",H=zl(j),q=b.forwardRef((_,E)=>{const{scope:R,children:Q,...te}=_,W=b.useRef(null),P=d(j,R),{setCollection:ne,registryRef:re}=P,ge=b.useRef(te);b1(ge.current,te)||(ge.current=te);const F=ge.current,ae=b.useCallback(I=>{const Se=re.current;I?Se.set(I,{...ge.current,element:I}):W.current&&Se.delete(W.current)},[re]),ce=Dt(E,ae,W);on(()=>{const I=W.current,Se=re.current;I&&Se.has(I)&&Se.set(I,{...F,element:I})},[F,re]);const xe=b.useRef(null);return b.useEffect(()=>{const I=W.current,Se=xe.current;((Se==null?void 0:Se.element)??null)===I&&(!I||(Se==null?void 0:Se.itemData)===F)||(xe.current=I?{element:I,itemData:F}:null,ne(J=>{const me=new lo(J);return Se&&Se.element!==I&&me.delete(Se.element),I&&me.set(I,{...F,element:I}),me.sort(fo)}))}),b.useEffect(()=>()=>{const I=xe.current;xe.current=null,I&&ne(Se=>{if(!Se.has(I.element))return Se;const J=new lo(Se);return J.delete(I.element),J})},[ne]),f.jsx(H,{[z]:"",ref:ce,children:Q})});q.displayName=j;function G(){return b.useState(new lo)}ut(G,"useInitCollection");function k(_){const{collection:E}=v(i+"CollectionConsumer",_);return E}ut(k,"useCollection");function V(_){const{getCollection:E}=d(i+"CollectionConsumer",_);return E}return ut(V,"useGetCollection"),[{Provider:g,Slot:A,ItemSlot:q},{createCollectionScope:o,useCollection:k,useGetCollection:V,useInitCollection:G}]}ut(y4,"createCollection");function b1(i,u){if(i===u)return!0;if(typeof i!="object"||typeof u!="object"||i==null||u==null)return!1;const c=Object.keys(i),o=Object.keys(u);if(c.length!==o.length)return!1;for(const s of c)if(!Object.prototype.hasOwnProperty.call(u,s)||i[s]!==u[s])return!1;return!0}ut(b1,"shallowEqual");function x1(i,u){return!!(u.compareDocumentPosition(i)&Node.DOCUMENT_POSITION_PRECEDING)}ut(x1,"isElementPreceding");function S1(i){let u;for(const c of i.keys()){if(u){const o=u.compareDocumentPosition(c);if(!(o&Node.DOCUMENT_POSITION_DISCONNECTED)&&o&Node.DOCUMENT_POSITION_PRECEDING)return!1}u=c}return!0}ut(S1,"isInDocumentOrder");function fo(i,u){return!i[1].element||!u[1].element?0:x1(i[1].element,u[1].element)?-1:1}ut(fo,"sortByDocumentPosition");function N1(i){return new MutationObserver(c=>{for(const o of c)if(o.type==="childList"){i();return}})}ut(N1,"getChildListObserver");var p4=Object.defineProperty,b4=(i,u)=>p4(i,"name",{value:u,configurable:!0}),x4=sa[" useId ".trim().toString()]||(()=>{}),S4=0;function un(i){const[u,c]=b.useState(x4());return on(()=>{i||c(o=>o??String(S4++))},[i]),i||(u?`radix-${u}`:"")}b4(un,"useId");var C1=Uy(),N4=Object.defineProperty,C4=(i,u)=>N4(i,"name",{value:u,configurable:!0}),E4=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],Ie=E4.reduce((i,u)=>{const c=zl(`Primitive.${u}`),o=b.forwardRef((s,d)=>{const{asChild:h,...v}=s,g=h?c:u;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),f.jsx(g,{...v,ref:d})});return o.displayName=`Primitive.${u}`,{...i,[u]:o}},{});function E1(i,u){i&&C1.flushSync(()=>i.dispatchEvent(u))}C4(E1,"dispatchDiscreteCustomEvent");var w4=Object.defineProperty,T4=(i,u)=>w4(i,"name",{value:u,configurable:!0}),X0=sa[" useInsertionEffect ".trim().toString()];function oa(i){const u=b.useRef(i);return typeof X0=="function"?X0(()=>{u.current=i}):on(()=>{u.current=i}),b.useMemo(()=>((...c)=>{var o;return(o=u.current)==null?void 0:o.call(u,...c)}),[])}T4(oa,"useCallbackRef");var j4=Object.defineProperty,_4=(i,u)=>j4(i,"name",{value:u,configurable:!0}),Z0=sa[" useEffectEvent ".trim().toString()],K0=sa[" useInsertionEffect ".trim().toString()];function w1(i){if(typeof Z0=="function")return Z0(i);const u=b.useRef(()=>{throw new Error("Cannot call an event handler while rendering.")});return typeof K0=="function"?K0(()=>{u.current=i}):on(()=>{u.current=i}),b.useMemo(()=>((...c)=>{var o;return(o=u.current)==null?void 0:o.call(u,...c)}),[])}_4(w1,"useEffectEvent");var A4=Object.defineProperty,xr=(i,u)=>A4(i,"name",{value:u,configurable:!0}),R4=sa[" useInsertionEffect ".trim().toString()]||on;function Sr({prop:i,defaultProp:u,onChange:c=xr(()=>{},"onChange"),caller:o}){const[s,d,h]=T1({defaultProp:u,onChange:c}),v=i!==void 0,g=v?i:s,x=b.useCallback(S=>{var p;if(v){const N=j1(S)?S(i):S;N!==i&&((p=h.current)==null||p.call(h,N))}else d(S)},[v,i,d,h]);return[g,x]}xr(Sr,"useControllableState");function T1({defaultProp:i,onChange:u}){const[c,o]=b.useState(i),s=b.useRef(c),d=b.useRef(u);return R4(()=>{d.current=u},[u]),b.useEffect(()=>{var h;s.current!==c&&((h=d.current)==null||h.call(d,c),s.current=c)},[c,s]),[c,o,d]}xr(T1,"useUncontrolledState");function j1(i){return typeof i=="function"}xr(j1,"isFunction");var I0=Symbol("RADIX:SYNC_STATE");function M4(i,u,c,o){const{prop:s,defaultProp:d,onChange:h,caller:v}=u,g=s!==void 0,x=w1(h),S=[{...c,state:d}];o&&S.push(o);const[p,N]=b.useReducer((H,q)=>{if(q.type===I0)return{...H,state:q.state};const G=i(H,q);return g&&!Object.is(G.state,H.state)&&x(G.state),G},...S),A=p.state,j=b.useRef(A);b.useEffect(()=>{j.current!==A&&(j.current=A,g||x(A))},[A,j,g]);const z=b.useMemo(()=>s!==void 0?{...p,state:s}:p,[p,s]);return b.useEffect(()=>{g&&!Object.is(s,p.state)&&N({type:I0,state:s})},[s,p.state,g]),[z,N]}xr(M4,"useControllableStateReducer");var O4=Object.defineProperty,z4=(i,u)=>O4(i,"name",{value:u,configurable:!0}),D4={LTR:"ltr"},U4=b.createContext(void 0);function wd(i){const u=b.useContext(U4);return i||u||D4.LTR}z4(wd,"useDirection");var B4=Object.defineProperty,Td=(i,u)=>B4(i,"name",{value:u,configurable:!0}),yf=!1;function _1(){const[i,u]=b.useState(yf);return b.useEffect(()=>{yf||(yf=!0,u(!0))},[]),i}Td(_1,"useIsHydrated");var A1=sa[" useSyncExternalStore ".trim().toString()];function R1(){return()=>{}}Td(R1,"subscribe");function M1(){return A1(R1,()=>!0,()=>!1)}Td(M1,"useIsHydratedModern");var k4=typeof A1=="function"?M1:_1,L4=Object.defineProperty,ma=(i,u)=>L4(i,"name",{value:u,configurable:!0}),pf="rovingFocusGroup.onEntryFocus",H4={bubbles:!1,cancelable:!0},So="RovingFocusGroup",[nd,O1,q4]=y1(So),[G4,z1]=da(So,[q4]),J0={Vertical:"vertical",Horizontal:"horizontal"},Y4={RTL:"rtl"},[V4,Q4]=G4(So),X4=b.forwardRef(ma(function(u,c){return f.jsx(nd.Provider,{scope:u.__scopeRovingFocusGroup,children:f.jsx(nd.Slot,{scope:u.__scopeRovingFocusGroup,children:f.jsx(Z4,{...u,ref:c})})})},"RovingFocusGroup")),Z4=b.forwardRef(ma(function(u,c){const{__scopeRovingFocusGroup:o,orientation:s,loop:d=!1,dir:h,currentTabStopId:v,defaultCurrentTabStopId:g,onCurrentTabStopIdChange:x,onEntryFocus:S,preventScrollOnEntryFocus:p=!1,...N}=u,A=b.useRef(null),j=Dt(c,A),z=wd(h),[H,q]=Sr({prop:v,defaultProp:g??null,onChange:x,caller:So}),[G,k]=b.useState(!1),V=oa(S),K=O1(o),_=b.useRef(!1),[E,R]=b.useState(0);return b.useEffect(()=>{const Q=A.current;if(Q)return Q.addEventListener(pf,V),()=>Q.removeEventListener(pf,V)},[V]),f.jsx(V4,{scope:o,orientation:s,dir:z,loop:d,currentTabStopId:H,onItemFocus:b.useCallback(Q=>q(Q),[q]),onItemShiftTab:b.useCallback(()=>k(!0),[]),onFocusableItemAdd:b.useCallback(()=>R(Q=>Q+1),[]),onFocusableItemRemove:b.useCallback(()=>R(Q=>Q-1),[]),children:f.jsx(Ie.div,{tabIndex:G||E===0?-1:0,"data-orientation":s,...N,ref:j,style:{outline:"none",...u.style},onMouseDown:mt(u.onMouseDown,()=>{_.current=!0}),onFocus:mt(u.onFocus,Q=>{const te=!_.current;if(Q.target===Q.currentTarget&&te&&!G){const W=new CustomEvent(pf,H4);if(Q.currentTarget.dispatchEvent(W),!W.defaultPrevented){const P=K().filter(ae=>ae.focusable),ne=P.find(ae=>ae.active),re=P.find(ae=>ae.id===H),F=[ne,re,...P].filter(Boolean).map(ae=>ae.ref.current);jd(F,p)}}_.current=!1}),onBlur:mt(u.onBlur,()=>k(!1))})})},"RovingFocusGroupImpl")),K4="RovingFocusGroupItem",I4=b.forwardRef(ma(function(u,c){const{__scopeRovingFocusGroup:o,focusable:s=!0,active:d=!1,tabStopId:h,children:v,...g}=u,x=un(),S=h||x,p=Q4(K4,o),N=p.currentTabStopId===S,A=O1(o),{onFocusableItemAdd:j,onFocusableItemRemove:z,currentTabStopId:H}=p,q=k4();return on(()=>{if(!(!q||!s))return j(),()=>z()},[q,s,j,z]),b.useEffect(()=>{if(!(q||!s))return j(),()=>z()},[q,s,j,z]),f.jsx(nd.ItemSlot,{scope:o,id:S,focusable:s,active:d,children:f.jsx(Ie.span,{tabIndex:N?0:-1,"data-orientation":p.orientation,...g,ref:c,onMouseDown:mt(u.onMouseDown,G=>{s?p.onItemFocus(S):G.preventDefault()}),onFocus:mt(u.onFocus,()=>p.onItemFocus(S)),onKeyDown:mt(u.onKeyDown,G=>{if(G.key==="Tab"&&G.shiftKey){p.onItemShiftTab();return}if(G.target!==G.currentTarget)return;const k=U1(G,p.orientation,p.dir);if(k!==void 0){if(G.metaKey||G.ctrlKey||G.altKey||G.shiftKey)return;G.preventDefault();let K=A().filter(_=>_.focusable).map(_=>_.ref.current);if(k==="last")K.reverse();else if(k==="prev"||k==="next"){k==="prev"&&K.reverse();const _=K.indexOf(G.currentTarget);K=p.loop?B1(K,_+1):K.slice(_+1)}setTimeout(()=>jd(K))}}),children:typeof v=="function"?v({isCurrentTabStop:N,hasTabStop:H!=null}):v})})},"RovingFocusGroupItem")),J4={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function D1(i,u){return u!==Y4.RTL?i:i==="ArrowLeft"?"ArrowRight":i==="ArrowRight"?"ArrowLeft":i}ma(D1,"getDirectionAwareKey");function U1(i,u,c){const o=D1(i.key,c);if(!(u===J0.Vertical&&["ArrowLeft","ArrowRight"].includes(o))&&!(u===J0.Horizontal&&["ArrowUp","ArrowDown"].includes(o)))return J4[o]}ma(U1,"getFocusIntent");function jd(i,u=!1){const c=document.activeElement;for(const o of i)if(o===c||(o.focus({preventScroll:u}),document.activeElement!==c))return}ma(jd,"focusFirst");function B1(i,u){return i.map((c,o)=>i[(u+o)%i.length])}ma(B1,"wrapArray");var F4=Object.defineProperty,Wn=(i,u)=>F4(i,"name",{value:u,configurable:!0});function k1(i,u){return b.useReducer((c,o)=>u[c][o]??c,i)}Wn(k1,"useStateMachine");var No=Wn(i=>{const{present:u,children:c}=i,o=L1(u),s=typeof c=="function"?c({present:o.isPresent}):b.Children.only(c),d=H1(o.ref,q1(s));return typeof c=="function"||o.isPresent?b.cloneElement(s,{ref:d}):null},"Presence");function L1(i){const[u,c]=b.useState(),o=b.useRef(null),s=b.useRef(i),d=b.useRef("none"),h=b.useRef(void 0),v=i?"mounted":"unmounted",[g,x]=k1(v,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return b.useEffect(()=>{g==="mounted"?(d.current=h.current??fi(o.current),h.current=void 0):d.current="none"},[g]),on(()=>{const S=o.current,p=s.current;if(p!==i){const A=d.current,j=fi(S);i?(h.current=j,x("MOUNT")):j==="none"||(S==null?void 0:S.display)==="none"?x("UNMOUNT"):x(p&&A!==j?"ANIMATION_OUT":"UNMOUNT"),s.current=i}},[i,x]),on(()=>{if(u){let S;const p=u.ownerDocument.defaultView??window,N=Wn(j=>{const H=fi(o.current).includes(CSS.escape(j.animationName));if(j.target===u&&H&&(x("ANIMATION_END"),!s.current)){const q=u.style.animationFillMode;u.style.animationFillMode="forwards",S=p.setTimeout(()=>{u.style.animationFillMode==="forwards"&&(u.style.animationFillMode=q)})}},"handleAnimationEnd"),A=Wn(j=>{j.target===u&&(d.current=fi(o.current))},"handleAnimationStart");return u.addEventListener("animationstart",A),u.addEventListener("animationcancel",N),u.addEventListener("animationend",N),()=>{p.clearTimeout(S),u.removeEventListener("animationstart",A),u.removeEventListener("animationcancel",N),u.removeEventListener("animationend",N)}}else x("ANIMATION_END")},[u,x]),{isPresent:["mounted","unmountSuspended"].includes(g),ref:b.useCallback(S=>{if(S){const p=getComputedStyle(S);o.current=p,h.current=fi(p)}else o.current=null;c(S)},[])}}Wn(L1,"usePresence");function ld(i,u){if(typeof i=="function")return i(u);i!=null&&(i.current=u)}Wn(ld,"setRef");function H1(...i){const u=b.useRef(i);return u.current=i,b.useCallback(c=>{const o=u.current;let s=!1;const d=o.map(h=>{const v=ld(h,c);return!s&&typeof v=="function"&&(s=!0),v});if(s)return()=>{for(let h=0;hP4(i,"name",{value:u,configurable:!0}),G1={Automatic:"automatic",Manual:"manual"},_d="Tabs",[$4,RE]=da(_d,[z1]),Y1=z1(),[W4,Ad]=$4(_d),eC=b.forwardRef(gi(function(u,c){const{__scopeTabs:o,value:s,onValueChange:d,defaultValue:h,orientation:v="horizontal",dir:g,activationMode:x=G1.Automatic,...S}=u,p=wd(g),[N,A]=Sr({prop:s,onChange:d,defaultProp:h??"",caller:_d});return f.jsx(W4,{scope:o,baseId:un(),value:N,onValueChange:A,orientation:v,dir:p,activationMode:x,children:f.jsx(Ie.div,{dir:p,"data-orientation":v,...S,ref:c})})},"Tabs")),tC="TabsList",V1=b.forwardRef(gi(function(u,c){const{__scopeTabs:o,loop:s=!0,...d}=u,h=Ad(tC,o),v=Y1(o);return f.jsx(X4,{asChild:!0,...v,orientation:h.orientation,dir:h.dir,loop:s,children:f.jsx(Ie.div,{role:"tablist","aria-orientation":h.orientation,...d,ref:c})})},"TabsList")),nC="TabsTrigger",Q1=b.forwardRef(gi(function(u,c){const{__scopeTabs:o,value:s,disabled:d=!1,...h}=u,v=Ad(nC,o),g=Y1(o),x=Rd(v.baseId,s),S=Md(v.baseId,s),p=s===v.value;return f.jsx(I4,{asChild:!0,...g,focusable:!d,active:p,children:f.jsx(Ie.button,{type:"button",role:"tab","aria-selected":p,"aria-controls":S,"data-state":p?"active":"inactive","data-disabled":d?"":void 0,disabled:d,id:x,...h,ref:c,onMouseDown:mt(u.onMouseDown,N=>{!d&&N.button===0&&N.ctrlKey===!1?(N.currentTarget.focus(),v.onValueChange(s)):N.preventDefault()}),onKeyDown:mt(u.onKeyDown,N=>{d||N.target!==N.currentTarget||[" ","Enter"].includes(N.key)&&v.onValueChange(s)}),onFocus:mt(u.onFocus,()=>{const N=v.activationMode!==G1.Manual;!p&&!d&&N&&v.onValueChange(s)})})})},"TabsTrigger")),lC="TabsContent",X1=b.forwardRef(gi(function(u,c){const{__scopeTabs:o,value:s,forceMount:d,children:h,...v}=u,g=Ad(lC,o),x=Rd(g.baseId,s),S=Md(g.baseId,s),p=s===g.value,N=b.useRef(p);return b.useEffect(()=>{const A=requestAnimationFrame(()=>N.current=!1);return()=>cancelAnimationFrame(A)},[]),f.jsx(No,{present:d||p,children:({present:A})=>f.jsx(Ie.div,{"data-state":p?"active":"inactive","data-orientation":g.orientation,role:"tabpanel","aria-labelledby":x,hidden:!A,id:S,tabIndex:0,...v,ref:c,style:{...u.style,animationDuration:N.current?"0s":void 0},children:A&&h})})},"TabsContent"));function Rd(i,u){return`${i}-trigger-${u}`}gi(Rd,"makeTriggerId");function Md(i,u){return`${i}-content-${u}`}gi(Md,"makeContentId");const yo=eC,pr=b.forwardRef(({className:i,...u},c)=>f.jsx(V1,{ref:c,className:Ze("inline-flex items-center justify-center rounded-lg hl-muted p-1 border hl-border text-[var(--text-muted)]",i),...u}));pr.displayName=V1.displayName;const Dn=b.forwardRef(({className:i,...u},c)=>f.jsx(Q1,{ref:c,className:Ze("inline-flex items-center justify-center gap-1.5 whitespace-nowrap rounded-md px-2.5 py-1 text-xs font-medium transition-all cursor-pointer select-none disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-[var(--bg-card)] data-[state=active]:text-[var(--text-main)] data-[state=active]:shadow-xs",i),...u}));Dn.displayName=Q1.displayName;const aC=b.forwardRef(({className:i,...u},c)=>f.jsx(X1,{ref:c,className:Ze("mt-2 outline-none",i),...u}));aC.displayName=X1.displayName;const iC=[{id:"auto",label:"智能路由"},{id:"edge443",label:"443 免端口"},{id:"home10443",label:"10443 家宽"},{id:"lan",label:"LAN 局域网"}],rC=()=>{const{theme:i,resolvedTheme:u,routeMode:c,viewMode:o,telemetry:s,setTheme:d,toggleTheme:h,setRouteMode:v,setViewMode:g,setShowAgyModal:x,setShowWechatModal:S,setShowCmdPalette:p}=Un();return f.jsxs(f.Fragment,{children:[f.jsx("header",{className:"border-b hl-border sticky top-0 z-30 backdrop-blur-md",style:{backgroundColor:"color-mix(in srgb, var(--bg-card) 88%, transparent)"},children:f.jsxs("div",{className:"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 h-14 flex items-center justify-between gap-4",children:[f.jsxs("div",{className:"flex items-center gap-4 shrink-0",children:[f.jsxs("div",{onClick:()=>g("dashboard"),className:"flex items-center gap-2.5 cursor-pointer",children:[f.jsx("img",{src:"https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons/png/apple.png",alt:"Mac mini",className:"w-6 h-6 rounded"}),f.jsx("span",{className:"font-semibold text-sm tracking-tight",children:"HomeLab"}),f.jsx("span",{className:"w-2 h-2 rounded-full",style:{backgroundColor:"var(--success)"},title:"全屋 4 节点在线"})]}),f.jsx("div",{className:"h-4 w-[1px] hl-muted"}),f.jsx(yo,{value:o,onValueChange:N=>g(N),children:f.jsxs(pr,{children:[f.jsxs(Dn,{value:"dashboard",children:[f.jsx(BS,{className:"w-3.5 h-3.5"}),f.jsx("span",{children:"中控台"})]}),f.jsxs(Dn,{value:"agents",children:[f.jsx(qy,{className:"w-3.5 h-3.5"}),f.jsx("span",{children:"Agent 编排"})]}),f.jsxs(Dn,{value:"storybook",children:[f.jsx(Hy,{className:"w-3.5 h-3.5"}),f.jsx("span",{children:"Storybook 设计规范"})]})]})})]}),f.jsxs("div",{className:"flex items-center gap-2.5 shrink-0 ml-auto",children:[f.jsxs(Oe,{variant:"outline",onClick:()=>p(!0),className:"gap-3",title:"按 Cmd+K 唤起全局命令面板",children:[f.jsxs("span",{className:"flex items-center gap-1.5",style:{color:"var(--text-muted)"},children:[f.jsx(bd,{className:"w-3.5 h-3.5"}),f.jsx("span",{className:"hidden sm:inline",children:"搜索服务或指令..."})]}),f.jsx("kbd",{className:"px-1.5 py-0.5 text-[10px] font-mono-num rounded hl-muted",style:{color:"var(--text-muted)"},children:"⌘K"})]}),f.jsxs(Oe,{variant:"outline",onClick:()=>S(!0),title:"连接微信 ClawBot,在微信内直接收发消息与控制 Mac mini",children:[f.jsx("span",{className:"w-2 h-2 rounded-full",style:{backgroundColor:s.services.clawbot?"var(--success)":"var(--accent)"}}),f.jsx(pd,{className:"w-3.5 h-3.5"}),f.jsx("span",{children:"微信 ClawBot"})]}),f.jsxs(Oe,{onClick:()=>x(!0),children:[f.jsx(yr,{className:"w-3.5 h-3.5"}),f.jsx("span",{children:"AGY 终端"})]}),f.jsxs("div",{className:"flex items-center p-0.5 rounded-lg hl-muted border hl-border text-xs",children:[f.jsx("button",{onClick:h,className:"px-2.5 py-1 rounded-md font-medium transition-all flex items-center gap-1.5 cursor-pointer",style:{backgroundColor:"var(--bg-card)",color:"var(--text-main)",boxShadow:"0 1px 2px rgba(0,0,0,0.08)"},title:"点击切换深色 / 浅色主题(默认跟随系统)",children:u==="dark"?f.jsxs(f.Fragment,{children:[f.jsx(GS,{className:"w-3.5 h-3.5"}),f.jsx("span",{children:"深色"})]}):f.jsxs(f.Fragment,{children:[f.jsx(aN,{className:"w-3.5 h-3.5"}),f.jsx("span",{children:"浅色"})]})}),i!=="system"&&f.jsx("button",{onClick:()=>d("system"),className:"px-2 py-1 rounded-md text-[11px] transition-all cursor-pointer",style:{color:"var(--text-muted)"},title:"恢复跟随设备系统深浅色自动切换",children:"自动"})]})]})]})}),o==="dashboard"&&f.jsx("div",{className:"border-b hl-border",style:{backgroundColor:"var(--bg-card)"},children:f.jsxs("div",{className:"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-2.5 flex flex-wrap items-center justify-between gap-3",children:[f.jsxs("div",{className:"flex flex-wrap items-center gap-2 text-xs font-mono-num",children:[f.jsxs("div",{className:"hl-pill px-2.5 py-1 flex items-center gap-2",children:[f.jsx("span",{style:{color:"var(--text-muted)"},children:"M6 CPU"}),f.jsx("div",{className:"w-12 h-1.5 rounded-full hl-muted overflow-hidden",children:f.jsx("div",{className:"h-full hl-bar-fill",style:{width:`${Math.max(5,s.mini.cpu_pct)}%`}})}),f.jsxs("span",{className:"font-medium",children:[s.mini.cpu_pct,"%"]})]}),f.jsxs("div",{className:"hl-pill px-2.5 py-1 flex items-center gap-2",children:[f.jsx("span",{style:{color:"var(--text-muted)"},children:"RAM"}),f.jsx("div",{className:"w-12 h-1.5 rounded-full hl-muted overflow-hidden",children:f.jsx("div",{className:"h-full hl-bar-fill",style:{width:`${Math.max(5,s.mini.mem_pct)}%`}})}),f.jsxs("span",{className:"font-medium",children:[s.mini.mem_used_gb,"G"]})]}),f.jsxs("div",{className:"hl-pill px-2.5 py-1 flex items-center gap-2",children:[f.jsx("span",{style:{color:"var(--text-muted)"},children:"NAS 余量"}),f.jsx("div",{className:"w-12 h-1.5 rounded-full hl-muted overflow-hidden",children:f.jsx("div",{className:"h-full hl-bar-fill-green",style:{width:`${Math.max(5,s.nas.pct)}%`}})}),f.jsxs("span",{className:"font-medium",style:{color:"var(--success)"},children:[s.nas.free_tb," TB"]})]}),f.jsxs("div",{className:"hl-pill px-2.5 py-1 flex items-center gap-1.5",children:[f.jsx("span",{className:"w-1.5 h-1.5 rounded-full",style:{backgroundColor:"var(--success)"}}),f.jsx("span",{style:{color:"var(--text-muted)"},children:"SG 专线"}),f.jsx("span",{className:"font-medium",children:s.network.sg_delay_ms>0?`${s.network.sg_delay_ms}ms`:"直连"})]})]}),f.jsx(yo,{value:c,onValueChange:N=>v(N),className:"ml-auto",children:f.jsx(pr,{children:iC.map(N=>f.jsx(Dn,{value:N.id,children:N.label},N.id))})})]})})]})},Z1=({card:i})=>{const{getEffectiveMode:u,setShowAgyModal:c,triggerAction:o}=Un(),s=u(),d=s==="lan"?i.lanUrl:s==="home10443"?i.homeUrl:i.edgeUrl,h=s==="lan"?"LAN 直连":s==="home10443"?"10443":"443 免端口";return f.jsxs("a",{href:d,target:"_blank",rel:"noopener noreferrer",className:"hl-card hl-card-interactive flex flex-col justify-between overflow-hidden group cursor-pointer",children:[f.jsxs("div",{className:"p-4 sm:p-5 space-y-3",children:[f.jsxs("div",{className:"flex items-start justify-between gap-3",children:[f.jsxs("div",{className:"flex items-center gap-3.5 min-w-0",children:[f.jsx("div",{className:"w-10 h-10 rounded-xl hl-muted border hl-border p-1.5 flex items-center justify-center shrink-0",children:f.jsx("img",{src:i.iconUrl,alt:i.title,className:"w-full h-full object-contain"})}),f.jsxs("div",{className:"min-w-0",children:[f.jsxs("div",{className:"flex items-center gap-2",children:[f.jsx("h3",{className:"text-sm font-semibold truncate group-hover:underline",children:i.title}),f.jsx("span",{className:"w-2 h-2 rounded-full shrink-0",style:{backgroundColor:i.online!==!1?"var(--success)":"#ef4444"}})]}),f.jsx("p",{className:"text-[11px] font-mono-num truncate mt-0.5",style:{color:"var(--text-muted)"},children:i.subtitle})]})]}),i.actionType==="drawer"?f.jsx("button",{onClick:v=>{v.preventDefault(),c(!0)},className:"px-2 py-1 rounded-md text-[11px] font-medium shrink-0 transition-opacity hover:opacity-80 cursor-pointer",style:{backgroundColor:"var(--accent-soft)",color:"var(--accent)"},children:"页内终端"}):i.actionType==="backup"?f.jsx("button",{onClick:v=>{v.preventDefault(),o("backup_nas","正在打包备份至极空间 Z4...")},className:"px-2 py-1 rounded-md text-[11px] font-medium shrink-0 transition-opacity hover:opacity-80 cursor-pointer",style:{backgroundColor:"var(--success-soft)",color:"var(--success)"},children:"立即备份"}):f.jsx("span",{className:"text-xs font-mono-num px-2 py-0.5 rounded hl-muted shrink-0",style:{color:"var(--text-muted)"},children:h})]}),f.jsx("p",{className:"text-xs leading-relaxed line-clamp-2",style:{color:"var(--text-muted)"},children:i.desc})]}),f.jsx("div",{className:"hl-widget-footer grid grid-cols-3 divide-x hl-border text-center",children:i.stats.map((v,g)=>f.jsxs("div",{className:"py-2.5 px-2 flex flex-col items-center justify-center",children:[f.jsx("span",{className:"text-[10px] uppercase tracking-wider truncate max-w-full",style:{color:"var(--text-subtle)"},children:v.label}),f.jsx("span",{className:"text-xs font-semibold font-mono-num mt-0.5 truncate max-w-full",style:{color:v.highlight?"var(--success)":"var(--text-main)"},children:v.value})]},g))})]})},uC=[{label:"SSH 连接 Mac mini",cmd:"ssh mini"},{label:"终端接力 AGY 会话",cmd:'ssh mini -t "tmux attach -t agy"'},{label:"SSH 连接新加坡 Azure",cmd:"ssh azure"},{label:"SSH 连接小米主路由",cmd:"ssh root@192.168.31.1"}],K1=()=>{const{copyCmd:i,triggerAction:u}=Un();return f.jsxs("section",{className:"space-y-3 pt-1",children:[f.jsxs("div",{className:"flex items-center justify-between px-0.5",children:[f.jsxs("div",{className:"flex items-center gap-2",children:[f.jsx("h2",{className:"text-xs font-semibold uppercase tracking-wider",style:{color:"var(--text-muted)"},children:"终端快捷指令与备用直连书签"}),f.jsx("span",{className:"text-[11px] font-mono-num",style:{color:"var(--text-subtle)"},children:"· 点击指令即复制"})]}),f.jsxs("div",{className:"flex items-center gap-3 text-xs",children:[f.jsx("button",{onClick:()=>u("refresh_ddns","正在同步 Cloudflare DDNS..."),className:"hover:underline font-medium cursor-pointer",style:{color:"var(--accent)"},children:"刷新 DDNS 解析"}),f.jsx("button",{onClick:()=>u("mount_nas","正在巡检极空间 20TB SMB 挂载..."),className:"hover:underline font-medium cursor-pointer",style:{color:"var(--accent)"},children:"巡检极空间挂载"})]})]}),f.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-3",children:uC.map(c=>f.jsxs("button",{onClick:()=>i(c.cmd,c.label),className:"hl-card hl-card-interactive px-4 py-3 text-left flex items-center justify-between gap-2 cursor-pointer",children:[f.jsxs("div",{className:"min-w-0",children:[f.jsx("div",{className:"text-xs font-semibold",children:c.label}),f.jsx("div",{className:"text-[11px] font-mono-num truncate mt-0.5",style:{color:"var(--accent)"},children:c.cmd})]}),f.jsx("span",{className:"text-[10px] font-mono-num px-1.5 py-0.5 rounded hl-muted shrink-0",style:{color:"var(--text-muted)"},children:"COPY"})]},c.cmd))})]})},oC=$y("inline-flex items-center gap-1 rounded-md px-2 py-0.5 text-[11px] font-mono-num font-medium transition-colors shrink-0",{variants:{variant:{default:"bg-[var(--primary)] text-[var(--primary-fg)]",secondary:"hl-muted text-[var(--text-muted)] border hl-border",outline:"border hl-border text-[var(--text-muted)] bg-[var(--bg-card)]",accent:"bg-[var(--accent-soft)] text-[var(--accent)] font-semibold",success:"bg-[var(--success-soft)] text-[var(--success)] font-semibold"}},defaultVariants:{variant:"secondary"}});function rt({className:i,variant:u,...c}){return f.jsx("div",{className:Ze(oC({variant:u}),i),...c})}var F0=1,cC=.9,sC=.8,fC=.17,bf=.1,xf=.999,dC=.9999,mC=.99,hC=/[\\\/_+.#"@\[\(\{&]/,vC=/[\\\/_+.#"@\[\(\{&]/g,gC=/[\s-]/,I1=/[\s-]/g;function ad(i,u,c,o,s,d,h){if(d===u.length)return s===i.length?F0:mC;var v=`${s},${d}`;if(h[v]!==void 0)return h[v];for(var g=o.charAt(d),x=c.indexOf(g,s),S=0,p,N,A,j;x>=0;)p=ad(i,u,c,o,x+1,d+1,h),p>S&&(x===s?p*=F0:hC.test(i.charAt(x-1))?(p*=sC,A=i.slice(s,x-1).match(vC),A&&s>0&&(p*=Math.pow(xf,A.length))):gC.test(i.charAt(x-1))?(p*=cC,j=i.slice(s,x-1).match(I1),j&&s>0&&(p*=Math.pow(xf,j.length))):(p*=fC,s>0&&(p*=Math.pow(xf,x-s))),i.charAt(x)!==u.charAt(d)&&(p*=dC)),(pp&&(p=N*bf)),p>S&&(S=p),x=c.indexOf(g,x+1);return h[v]=S,S}function P0(i){return i.toLowerCase().replace(I1," ")}function yC(i,u,c){return i=c&&c.length>0?`${i+" "+c.join(" ")}`:i,ad(i,u,P0(i),P0(u),0,0,{})}var pC=Object.defineProperty,dt=(i,u)=>pC(i,"name",{value:u,configurable:!0}),id="dismissableLayer.update",bC="dismissableLayer.pointerDownOutside",xC="dismissableLayer.focusOutside",$0,J1=b.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set,dismissableSurfaces:new Set}),SC=b.forwardRef(dt(function(u,c){const{disableOutsidePointerEvents:o=!1,deferPointerDownOutside:s=!1,onEscapeKeyDown:d,onPointerDownOutside:h,onFocusOutside:v,onInteractOutside:g,onDismiss:x,...S}=u,p=b.useContext(J1),[N,A]=b.useState(null),j=(N==null?void 0:N.ownerDocument)??(globalThis==null?void 0:globalThis.document),[,z]=b.useState({}),H=Dt(c,A),q=Array.from(p.layers),[G]=[...p.layersWithOutsidePointerEventsDisabled].slice(-1),k=G?q.indexOf(G):-1,V=N?q.indexOf(N):-1,K=p.layersWithOutsidePointerEventsDisabled.size>0,_=V>=k,E=b.useRef(!1),R=P1(P=>{h==null||h(P),g==null||g(P),P.defaultPrevented||x==null||x()},{ownerDocument:j,deferPointerDownOutside:s,isDeferredPointerDownOutsideRef:E,dismissableSurfaces:p.dismissableSurfaces,shouldHandlePointerDownOutside:b.useCallback(P=>{if(!(P instanceof Node))return!1;const ne=[...p.branches].some(re=>re.contains(P));return _&&!ne},[p.branches,_])}),Q=$1(P=>{if(s&&E.current)return;const ne=P.target;[...p.branches].some(ge=>ge.contains(ne))||(v==null||v(P),g==null||g(P),P.defaultPrevented||x==null||x())},j),te=N?V===q.length-1:!1,W=oa(P=>{P.key==="Escape"&&(d==null||d(P),!P.defaultPrevented&&x&&(P.preventDefault(),x()))});return b.useEffect(()=>{if(te)return j.addEventListener("keydown",W,{capture:!0}),()=>j.removeEventListener("keydown",W,{capture:!0})},[j,te,W]),b.useEffect(()=>{if(N)return o&&(p.layersWithOutsidePointerEventsDisabled.size===0&&($0=j.body.style.pointerEvents,j.body.style.pointerEvents="none"),p.layersWithOutsidePointerEventsDisabled.add(N)),p.layers.add(N),rd(),()=>{o&&(p.layersWithOutsidePointerEventsDisabled.delete(N),p.layersWithOutsidePointerEventsDisabled.size===0&&(j.body.style.pointerEvents=$0))}},[N,j,o,p]),b.useEffect(()=>()=>{N&&(p.layers.delete(N),p.layersWithOutsidePointerEventsDisabled.delete(N),rd())},[N,p]),b.useEffect(()=>{const P=dt(()=>z({}),"handleUpdate");return document.addEventListener(id,P),()=>document.removeEventListener(id,P)},[]),f.jsx(Ie.div,{...S,ref:H,style:{pointerEvents:K?_?"auto":"none":void 0,...u.style},onFocusCapture:mt(u.onFocusCapture,Q.onFocusCapture),onBlurCapture:mt(u.onBlurCapture,Q.onBlurCapture),onPointerDownCapture:mt(u.onPointerDownCapture,R.onPointerDownCapture)})},"DismissableLayer"));function F1(){const i=b.useContext(J1),[u,c]=b.useState(null);return b.useEffect(()=>{if(u)return i.dismissableSurfaces.add(u),()=>{i.dismissableSurfaces.delete(u)}},[u,i.dismissableSurfaces]),c}dt(F1,"useDismissableLayerSurface");var NC=dt(()=>!0,"IS_TRUE");function P1(i,u){const{ownerDocument:c=globalThis==null?void 0:globalThis.document,deferPointerDownOutside:o=!1,isDeferredPointerDownOutsideRef:s,dismissableSurfaces:d,shouldHandlePointerDownOutside:h=NC}=u,v=oa(i),g=b.useRef(!1),x=b.useRef(!1),S=b.useRef(new Map),p=b.useRef(()=>{});return b.useEffect(()=>{function N(){x.current=!1,s.current=!1,S.current.clear()}dt(N,"resetOutsideInteraction");function A(){return Array.from(S.current.values()).some(Boolean)}dt(A,"isOutsideInteractionIntercepted");function j(k){if(!x.current)return;const V=k.target;V instanceof Node&&[...d].some(_=>_.contains(V))||S.current.set(k.type,!0),k.type==="click"&&window.setTimeout(()=>{x.current&&p.current()},0)}dt(j,"handleInteractionCapture");function z(k){x.current&&S.current.set(k.type,!1)}dt(z,"handleInteractionBubble");const H=dt(k=>{if(k.target&&!g.current){let V=function(){c.removeEventListener("click",p.current);const _=A();N(),_||Od(bC,v,K,{discrete:!0})};if(dt(V,"handleAndDispatchPointerDownOutsideEvent"),!h(k.target)){c.removeEventListener("click",p.current),N(),g.current=!1;return}const K={originalEvent:k};x.current=!0,s.current=o&&k.button===0,S.current.clear(),!o||k.button!==0?V():(c.removeEventListener("click",p.current),p.current=V,c.addEventListener("click",p.current,{once:!0}))}else c.removeEventListener("click",p.current),N();g.current=!1},"handlePointerDown"),q=["pointerup","mousedown","mouseup","touchstart","touchend","click"];for(const k of q)c.addEventListener(k,j,!0),c.addEventListener(k,z);const G=window.setTimeout(()=>{c.addEventListener("pointerdown",H)},0);return()=>{window.clearTimeout(G),c.removeEventListener("pointerdown",H),c.removeEventListener("click",p.current);for(const k of q)c.removeEventListener(k,j,!0),c.removeEventListener(k,z)}},[c,v,o,s,d,h]),{onPointerDownCapture:dt(()=>g.current=!0,"onPointerDownCapture")}}dt(P1,"usePointerDownOutside");function $1(i,u=globalThis==null?void 0:globalThis.document){const c=oa(i),o=b.useRef(!1);return b.useEffect(()=>{const s=dt(d=>{d.target&&!o.current&&Od(xC,c,{originalEvent:d},{discrete:!1})},"handleFocus");return u.addEventListener("focusin",s),()=>u.removeEventListener("focusin",s)},[u,c]),{onFocusCapture:dt(()=>o.current=!0,"onFocusCapture"),onBlurCapture:dt(()=>o.current=!1,"onBlurCapture")}}dt($1,"useFocusOutside");function rd(){const i=new CustomEvent(id);document.dispatchEvent(i)}dt(rd,"dispatchUpdate");function Od(i,u,c,{discrete:o}){const s=c.originalEvent.target,d=new CustomEvent(i,{bubbles:!1,cancelable:!0,detail:c});u&&s.addEventListener(i,u,{once:!0}),o?E1(s,d):s.dispatchEvent(d)}dt(Od,"handleAndDispatchCustomEvent");var CC=Object.defineProperty,lt=(i,u)=>CC(i,"name",{value:u,configurable:!0}),Sf="focusScope.autoFocusOnMount",Nf="focusScope.autoFocusOnUnmount",W0={bubbles:!1,cancelable:!0},EC=b.forwardRef(lt(function(u,c){const{loop:o=!1,trapped:s=!1,branches:d,onMountAutoFocus:h,onUnmountAutoFocus:v,...g}=u,[x,S]=b.useState(null),p=oa(h),N=oa(v),A=b.useRef(null),j=Dt(c,S),z=b.useRef(d);b.useEffect(()=>{z.current=d});const H=b.useCallback(k=>{var V;return k?x!=null&&x.contains(k)?!0:!!((V=z.current)!=null&&V.some(K=>K.contains(k))):!1},[x]),q=b.useRef({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;b.useEffect(()=>{if(s){let k=function(E){if(q.paused||!x)return;const R=E.target;H(R)?A.current=R:$n(A.current,{select:!0})},V=function(E){if(q.paused||!x)return;const R=E.relatedTarget;R!==null&&(H(R)||$n(A.current,{select:!0}))},K=function(E){if(document.activeElement===document.body)for(const Q of E)Q.removedNodes.length>0&&$n(x)};lt(k,"handleFocusIn"),lt(V,"handleFocusOut"),lt(K,"handleMutations"),document.addEventListener("focusin",k),document.addEventListener("focusout",V);const _=new MutationObserver(K);return x&&_.observe(x,{childList:!0,subtree:!0}),()=>{document.removeEventListener("focusin",k),document.removeEventListener("focusout",V),_.disconnect()}}},[s,x,q.paused,H]),b.useEffect(()=>{if(x){ey.add(q);const k=document.activeElement;if(!x.contains(k)){const K=new CustomEvent(Sf,W0);x.addEventListener(Sf,p),x.dispatchEvent(K),K.defaultPrevented||(np(up(zd(x)),{select:!0}),document.activeElement===k&&$n(x))}return()=>{x.removeEventListener(Sf,p);const K=x.ownerDocument,_=CustomEvent;setTimeout(()=>{const E=new _(Nf,W0);x.addEventListener(Nf,N),x.dispatchEvent(E),E.defaultPrevented||$n(k??K.body,{select:!0}),x.removeEventListener(Nf,N),ey.remove(q)},0)}}},[x,p,N,q]);const G=b.useCallback(k=>{if(!o&&!s||q.paused)return;const V=k.key==="Tab"&&!k.altKey&&!k.ctrlKey&&!k.metaKey,K=document.activeElement;if(V&&K){const _=k.currentTarget,[E,R]=lp(_);E&&R?!k.shiftKey&&K===R?(k.preventDefault(),o&&$n(E,{select:!0})):k.shiftKey&&K===E&&(k.preventDefault(),o&&$n(R,{select:!0})):K===_&&k.preventDefault()}},[o,s,q.paused]);return f.jsx(Ie.div,{tabIndex:-1,...g,ref:j,onKeyDown:G})},"FocusScope")),W1=b.createContext(null);function ep({registry:i,children:u}){return i?f.jsx(W1.Provider,{value:i,children:u}):u}lt(ep,"FocusScopeBranchProvider");function tp(){const[i,u]=b.useState([]),c=b.useMemo(()=>({add:lt(o=>u(s=>s.includes(o)?s:[...s,o]),"add"),remove:lt(o=>u(s=>s.filter(d=>d!==o)),"remove")}),[]);return{nodes:i,registry:c}}lt(tp,"useFocusScopeBranchRegistry");function wC(i){const u=b.useContext(W1);b.useEffect(()=>{if(!(!i||!u))return u.add(i),()=>u.remove(i)},[i,u])}lt(wC,"useFocusScopeBranch");function np(i,{select:u=!1}={}){const c=document.activeElement;for(const o of i)if($n(o,{select:u}),document.activeElement!==c)return}lt(np,"focusFirst");function lp(i){const u=zd(i),c=ud(u,i),o=ud(u.reverse(),i);return[c,o]}lt(lp,"getTabbableEdges");function zd(i){const u=[],o=i.ownerDocument.createTreeWalker(i,NodeFilter.SHOW_ELEMENT,{acceptNode:lt(s=>{const d=s.tagName==="INPUT"&&s.type==="hidden";return s.disabled||s.hidden||d?NodeFilter.FILTER_SKIP:s.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP},"acceptNode")});for(;o.nextNode();)u.push(o.currentNode);return u}lt(zd,"getTabbableCandidates");function ud(i,u){const c=typeof u.checkVisibility=="function"&&u.checkVisibility({checkVisibilityCSS:!0});for(const o of i)if(!(c?!o.checkVisibility({checkVisibilityCSS:!0}):ap(o,{upTo:u})))return o}lt(ud,"findVisible");function ap(i,{upTo:u}){if(getComputedStyle(i).visibility==="hidden")return!0;for(;i;){if(u!==void 0&&i===u)return!1;if(getComputedStyle(i).display==="none")return!0;i=i.parentElement}return!1}lt(ap,"isHidden");function ip(i){return i.tagName==="INPUT"&&typeof i.select=="function"}lt(ip,"isSelectableInput");function $n(i,{select:u=!1}={}){if(i&&i.focus){const o=(i.ownerDocument??document).activeElement;i.focus({preventScroll:!0}),i!==o&&ip(i)&&u&&i.select()}}lt($n,"focus");var ey=rp();function rp(){let i=[];return{add(u){const c=i[0];u!==c&&(c==null||c.pause()),i=od(i,u),i.unshift(u)},remove(u){var c;i=od(i,u),(c=i[0])==null||c.resume()}}}lt(rp,"createFocusScopesStack");function od(i,u){const c=[...i],o=c.indexOf(u);return o!==-1&&c.splice(o,1),c}lt(od,"arrayRemove");function up(i){return i.filter(u=>u.tagName!=="A")}lt(up,"removeLinks");var TC=Object.defineProperty,jC=(i,u)=>TC(i,"name",{value:u,configurable:!0}),_C=b.forwardRef(jC(function(u,c){var g;const{container:o,...s}=u,[d,h]=b.useState(!1);on(()=>h(!0),[]);const v=o||d&&((g=globalThis==null?void 0:globalThis.document)==null?void 0:g.body);return v?C1.createPortal(f.jsx(Ie.div,{...s,ref:c}),v):null},"Portal")),AC=Object.defineProperty,Dd=(i,u)=>AC(i,"name",{value:u,configurable:!0}),ao=0,Mn=null;function RC(i){return Ud(),i.children}Dd(RC,"FocusGuards");function Ud(){b.useEffect(()=>{Mn||(Mn={start:cd(),end:cd()});const{start:i,end:u}=Mn;return document.body.firstElementChild!==i&&document.body.insertAdjacentElement("afterbegin",i),document.body.lastElementChild!==u&&document.body.insertAdjacentElement("beforeend",u),ao++,()=>{ao===1&&(Mn==null||Mn.start.remove(),Mn==null||Mn.end.remove(),Mn=null),ao=Math.max(0,ao-1)}},[])}Dd(Ud,"useFocusGuards");function cd(){const i=document.createElement("span");return i.setAttribute("data-radix-focus-guard",""),i.tabIndex=0,i.style.outline="none",i.style.opacity="0",i.style.position="fixed",i.style.pointerEvents="none",i}Dd(cd,"createFocusGuard");var zn=function(){return zn=Object.assign||function(u){for(var c,o=1,s=arguments.length;o"u")return KC;var u=IC(i),c=document.documentElement.clientWidth,o=window.innerWidth;return{left:u[0],top:u[1],right:u[2],gap:Math.max(0,o-c+u[2]-u[0])}},FC=fp(),hi="data-scroll-locked",PC=function(i,u,c,o){var s=i.left,d=i.top,h=i.right,v=i.gap;return c===void 0&&(c="margin"),` + .`.concat(OC,` { + overflow: hidden `).concat(o,`; + padding-right: `).concat(v,"px ").concat(o,`; + } + body[`).concat(hi,`] { + overflow: hidden `).concat(o,`; + overscroll-behavior: contain; + `).concat([u&&"position: relative ".concat(o,";"),c==="margin"&&` + padding-left: `.concat(s,`px; + padding-top: `).concat(d,`px; + padding-right: `).concat(h,`px; + margin-left:0; + margin-top:0; + margin-right: `).concat(v,"px ").concat(o,`; + `),c==="padding"&&"padding-right: ".concat(v,"px ").concat(o,";")].filter(Boolean).join(""),` + } + + .`).concat(mo,` { + right: `).concat(v,"px ").concat(o,`; + } + + .`).concat(ho,` { + margin-right: `).concat(v,"px ").concat(o,`; + } + + .`).concat(mo," .").concat(mo,` { + right: 0 `).concat(o,`; + } + + .`).concat(ho," .").concat(ho,` { + margin-right: 0 `).concat(o,`; + } + + body[`).concat(hi,`] { + `).concat(zC,": ").concat(v,`px; + } +`)},ny=function(){var i=parseInt(document.body.getAttribute(hi)||"0",10);return isFinite(i)?i:0},$C=function(){b.useEffect(function(){return document.body.setAttribute(hi,(ny()+1).toString()),function(){var i=ny()-1;i<=0?document.body.removeAttribute(hi):document.body.setAttribute(hi,i.toString())}},[])},WC=function(i){var u=i.noRelative,c=i.noImportant,o=i.gapMode,s=o===void 0?"margin":o;$C();var d=b.useMemo(function(){return JC(s)},[s]);return b.createElement(FC,{styles:PC(d,!u,s,c?"":"!important")})},sd=!1;if(typeof window<"u")try{var io=Object.defineProperty({},"passive",{get:function(){return sd=!0,!0}});window.addEventListener("test",io,io),window.removeEventListener("test",io,io)}catch{sd=!1}var ui=sd?{passive:!1}:!1,e3=function(i){return i.tagName==="TEXTAREA"},dp=function(i,u){if(!(i instanceof Element))return!1;var c=window.getComputedStyle(i);return c[u]!=="hidden"&&!(c.overflowY===c.overflowX&&!e3(i)&&c[u]==="visible")},t3=function(i){return dp(i,"overflowY")},n3=function(i){return dp(i,"overflowX")},ly=function(i,u){var c=u.ownerDocument,o=u;do{typeof ShadowRoot<"u"&&o instanceof ShadowRoot&&(o=o.host);var s=mp(i,o);if(s){var d=hp(i,o),h=d[1],v=d[2];if(h>v)return!0}o=o.parentNode}while(o&&o!==c.body);return!1},l3=function(i){var u=i.scrollTop,c=i.scrollHeight,o=i.clientHeight;return[u,c,o]},a3=function(i){var u=i.scrollLeft,c=i.scrollWidth,o=i.clientWidth;return[u,c,o]},mp=function(i,u){return i==="v"?t3(u):n3(u)},hp=function(i,u){return i==="v"?l3(u):a3(u)},i3=function(i,u){return i==="h"&&u==="rtl"?-1:1},r3=function(i,u,c,o,s){var d=i3(i,window.getComputedStyle(u).direction),h=d*o,v=c.target,g=u.contains(v),x=!1,S=h>0,p=0,N=0;do{if(!v)break;var A=hp(i,v),j=A[0],z=A[1],H=A[2],q=z-H-d*j;(j||q)&&mp(i,v)&&(p+=q,N+=j);var G=v.parentNode;v=G&&G.nodeType===Node.DOCUMENT_FRAGMENT_NODE?G.host:G}while(!g&&v!==document.body||g&&(u.contains(v)||u===v));return(S&&Math.abs(p)<1||!S&&Math.abs(N)<1)&&(x=!0),x},ro=function(i){return"changedTouches"in i?[i.changedTouches[0].clientX,i.changedTouches[0].clientY]:[0,0]},ay=function(i){return[i.deltaX,i.deltaY]},iy=function(i){return i&&"current"in i?i.current:i},u3=function(i,u){return i[0]===u[0]&&i[1]===u[1]},o3=function(i){return` + .block-interactivity-`.concat(i,` {pointer-events: none;} + .allow-interactivity-`).concat(i,` {pointer-events: all;} +`)},c3=0,oi=[];function s3(i){var u=b.useRef([]),c=b.useRef([0,0]),o=b.useRef(),s=b.useState(c3++)[0],d=b.useState(fp)[0],h=b.useRef(i);b.useEffect(function(){h.current=i},[i]),b.useEffect(function(){if(i.inert){document.body.classList.add("block-interactivity-".concat(s));var z=MC([i.lockRef.current],(i.shards||[]).map(iy),!0).filter(Boolean);return z.forEach(function(H){return H.classList.add("allow-interactivity-".concat(s))}),function(){document.body.classList.remove("block-interactivity-".concat(s)),z.forEach(function(H){return H.classList.remove("allow-interactivity-".concat(s))})}}},[i.inert,i.lockRef.current,i.shards]);var v=b.useCallback(function(z,H){if("touches"in z&&z.touches.length===2||z.type==="wheel"&&z.ctrlKey)return!h.current.allowPinchZoom;var q=ro(z),G=c.current,k="deltaX"in z?z.deltaX:G[0]-q[0],V="deltaY"in z?z.deltaY:G[1]-q[1],K,_=z.target,E=Math.abs(k)>Math.abs(V)?"h":"v";if("touches"in z&&E==="h"&&_.type==="range")return!1;var R=window.getSelection(),Q=R&&R.anchorNode,te=Q?Q===_||Q.contains(_):!1;if(te)return!1;var W=ly(E,_);if(!W)return!0;if(W?K=E:(K=E==="v"?"h":"v",W=ly(E,_)),!W)return!1;if(!o.current&&"changedTouches"in z&&(k||V)&&(o.current=K),!K)return!0;var P=o.current||K;return r3(P,H,z,P==="h"?k:V)},[]),g=b.useCallback(function(z){var H=z;if(!(!oi.length||oi[oi.length-1]!==d)){var q="deltaY"in H?ay(H):ro(H),G=u.current.filter(function(K){return K.name===H.type&&(K.target===H.target||H.target===K.shadowParent)&&u3(K.delta,q)})[0];if(G&&G.should){H.cancelable&&H.preventDefault();return}if(!G){var k=(h.current.shards||[]).map(iy).filter(Boolean).filter(function(K){return K.contains(H.target)}),V=k.length>0?v(H,k[0]):!h.current.noIsolation;V&&H.cancelable&&H.preventDefault()}}},[]),x=b.useCallback(function(z,H,q,G){var k={name:z,delta:H,target:q,should:G,shadowParent:f3(q)};u.current.push(k),setTimeout(function(){u.current=u.current.filter(function(V){return V!==k})},1)},[]),S=b.useCallback(function(z){c.current=ro(z),o.current=void 0},[]),p=b.useCallback(function(z){x(z.type,ay(z),z.target,v(z,i.lockRef.current))},[]),N=b.useCallback(function(z){x(z.type,ro(z),z.target,v(z,i.lockRef.current))},[]);b.useEffect(function(){return oi.push(d),i.setCallbacks({onScrollCapture:p,onWheelCapture:p,onTouchMoveCapture:N}),document.addEventListener("wheel",g,ui),document.addEventListener("touchmove",g,ui),document.addEventListener("touchstart",S,ui),function(){oi=oi.filter(function(z){return z!==d}),document.removeEventListener("wheel",g,ui),document.removeEventListener("touchmove",g,ui),document.removeEventListener("touchstart",S,ui)}},[]);var A=i.removeScrollBar,j=i.inert;return b.createElement(b.Fragment,null,j?b.createElement(d,{styles:o3(s)}):null,A?b.createElement(WC,{noRelative:i.noRelative,gapMode:i.gapMode}):null)}function f3(i){for(var u=null;i!==null;)i instanceof ShadowRoot&&(u=i.host,i=i.host),i=i.parentNode;return u}const d3=qC(sp,s3);var vp=b.forwardRef(function(i,u){return b.createElement(Co,zn({},i,{ref:u,sideCar:d3}))});vp.classNames=Co.classNames;var m3=function(i){if(typeof document>"u")return null;var u=Array.isArray(i)?i[0]:i;return u.ownerDocument.body},ci=new WeakMap,uo=new WeakMap,oo={},Tf=0,gp=function(i){return i&&(i.host||gp(i.parentNode))},h3=function(i,u){return u.map(function(c){if(i.contains(c))return c;var o=gp(c);return o&&i.contains(o)?o:(console.error("aria-hidden",c,"in not contained inside",i,". Doing nothing"),null)}).filter(function(c){return!!c})},v3=function(i,u,c,o){var s=h3(u,Array.isArray(i)?i:[i]);oo[c]||(oo[c]=new WeakMap);var d=oo[c],h=[],v=new Set,g=new Set(s),x=function(p){!p||v.has(p)||(v.add(p),x(p.parentNode))};s.forEach(x);var S=function(p){!p||g.has(p)||Array.prototype.forEach.call(p.children,function(N){if(v.has(N))S(N);else try{var A=N.getAttribute(o),j=A!==null&&A!=="false",z=(ci.get(N)||0)+1,H=(d.get(N)||0)+1;ci.set(N,z),d.set(N,H),h.push(N),z===1&&j&&uo.set(N,!0),H===1&&N.setAttribute(c,"true"),j||N.setAttribute(o,"true")}catch(q){console.error("aria-hidden: cannot operate on ",N,q)}})};return S(u),v.clear(),Tf++,function(){h.forEach(function(p){var N=ci.get(p)-1,A=d.get(p)-1;ci.set(p,N),d.set(p,A),N||(uo.has(p)||p.removeAttribute(o),uo.delete(p)),A||p.removeAttribute(c)}),Tf--,Tf||(ci=new WeakMap,ci=new WeakMap,uo=new WeakMap,oo={})}},g3=function(i,u,c){c===void 0&&(c="data-aria-hidden");var o=Array.from(Array.isArray(i)?i:[i]),s=m3(i);return s?(o.push.apply(o,Array.from(s.querySelectorAll("[aria-live], script"))),v3(o,s,c,"aria-hidden")):function(){return null}},y3=Object.defineProperty,cn=(i,u)=>y3(i,"name",{value:u,configurable:!0}),Bd="Dialog",[yp,ME]=da(Bd),[p3,el]=yp(Bd),pp=cn(i=>{const{__scopeDialog:u,children:c,open:o,defaultOpen:s,onOpenChange:d,modal:h=!0}=i,v=b.useRef(null),g=b.useRef(null),{nodes:x,registry:S}=tp(),[p,N]=Sr({prop:o,defaultProp:s??!1,onChange:d,caller:Bd}),[A,j]=b.useState(0),[z,H]=b.useState(0);return f.jsx(p3,{scope:u,triggerRef:v,contentRef:g,contentId:un(),titleId:un(),descriptionId:un(),titlePresent:A>0,descriptionPresent:z>0,setTitleCount:j,setDescriptionCount:H,open:p,onOpenChange:N,onOpenToggle:b.useCallback(()=>N(q=>!q),[N]),modal:h,branchNodes:x,branchRegistry:S,children:c})},"Dialog"),bp="DialogPortal",[b3,xp]=yp(bp,{forceMount:void 0}),Sp=cn(i=>{const{__scopeDialog:u,forceMount:c,children:o,container:s}=i,d=el(bp,u);return f.jsx(b3,{scope:u,forceMount:c,children:b.Children.map(o,h=>f.jsx(No,{present:c||d.open,children:f.jsx(_C,{asChild:!0,container:s,children:h})}))})},"DialogPortal"),fd="DialogOverlay",kd=b.forwardRef(cn(function(u,c){const o=xp(fd,u.__scopeDialog),{forceMount:s=o.forceMount,...d}=u,h=el(fd,u.__scopeDialog);return h.modal?f.jsx(No,{present:s||h.open,children:f.jsx(S3,{...d,ref:c})}):null},"DialogOverlay")),x3=zl("DialogOverlay.RemoveScroll"),S3=b.forwardRef(cn(function(u,c){const{__scopeDialog:o,...s}=u,d=el(fd,o),h=F1(),v=Dt(c,h);return f.jsx(vp,{as:x3,allowPinchZoom:!0,shards:b.useMemo(()=>[d.contentRef,...d.branchNodes.map(g=>({current:g}))],[d.contentRef,d.branchNodes]),children:f.jsx(Ie.div,{"data-state":Hd(d.open),...s,ref:v,style:{pointerEvents:"auto",...s.style}})})},"DialogOverlayImpl")),br="DialogContent",Ld=b.forwardRef(cn(function(u,c){const o=xp(br,u.__scopeDialog),{forceMount:s=o.forceMount,...d}=u,h=el(br,u.__scopeDialog);return f.jsx(No,{present:s||h.open,children:h.modal?f.jsx(N3,{...d,ref:c}):f.jsx(C3,{...d,ref:c})})},"DialogContent")),N3=b.forwardRef(cn(function(u,c){const o=el(br,u.__scopeDialog),s=b.useRef(null),d=Dt(c,o.contentRef,s);return b.useEffect(()=>{const h=s.current;if(h)return g3(h)},[]),f.jsx(Np,{...u,ref:d,trapFocus:o.open,disableOutsidePointerEvents:o.open,onCloseAutoFocus:mt(u.onCloseAutoFocus,h=>{var v;h.preventDefault(),(v=o.triggerRef.current)==null||v.focus()}),onPointerDownOutside:mt(u.onPointerDownOutside,h=>{const v=h.detail.originalEvent,g=v.button===0&&v.ctrlKey===!0;(v.button===2||g)&&h.preventDefault()}),onFocusOutside:mt(u.onFocusOutside,h=>h.preventDefault())})},"DialogContentModal")),C3=b.forwardRef(cn(function(u,c){const o=el(br,u.__scopeDialog),s=b.useRef(!1),d=b.useRef(!1);return f.jsx(Np,{...u,ref:c,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:h=>{var v,g;(v=u.onCloseAutoFocus)==null||v.call(u,h),h.defaultPrevented||(s.current||(g=o.triggerRef.current)==null||g.focus(),h.preventDefault()),s.current=!1,d.current=!1},onInteractOutside:h=>{var x,S;(x=u.onInteractOutside)==null||x.call(u,h),h.defaultPrevented||(s.current=!0,h.detail.originalEvent.type==="pointerdown"&&(d.current=!0));const v=h.target;((S=o.triggerRef.current)==null?void 0:S.contains(v))&&h.preventDefault(),h.detail.originalEvent.type==="focusin"&&d.current&&h.preventDefault()}})},"DialogContentNonModal")),Np=b.forwardRef(cn(function(u,c){const{__scopeDialog:o,trapFocus:s,onOpenAutoFocus:d,onCloseAutoFocus:h,"aria-describedby":v,children:g,...x}=u,S=el(br,o);return Ud(),f.jsx(ep,{registry:S.branchRegistry,children:f.jsx(EC,{asChild:!0,loop:!0,trapped:s,branches:S.branchNodes,onMountAutoFocus:d,onUnmountAutoFocus:h,children:f.jsx(SC,{role:"dialog",id:S.contentId,"aria-labelledby":S.titlePresent?S.titleId:void 0,"aria-describedby":S.descriptionPresent?wp(v,S.descriptionId):v,"data-state":Hd(S.open),...x,ref:c,deferPointerDownOutside:!0,onDismiss:()=>S.onOpenChange(!1),children:g})})})},"DialogContentImpl")),Cp=b.forwardRef(cn(function(u,c){const{__scopeDialog:o,...s}=u,d=el("DialogTitle",o),{setTitleCount:h}=d;return on(()=>(h(v=>v+1),()=>h(v=>v-1)),[h]),f.jsx(Ie.h2,{id:d.titleId,...s,ref:c})},"DialogTitle")),Ep=b.forwardRef(cn(function(u,c){const{__scopeDialog:o,...s}=u,d=el("DialogDescription",o),{setDescriptionCount:h}=d;return on(()=>(h(v=>v+1),()=>h(v=>v-1)),[h]),f.jsx(Ie.p,{id:d.descriptionId,...s,ref:c})},"DialogDescription"));function wp(...i){const u=new Set;for(const c of i)if(typeof c=="string")for(const o of String(c).trim().split(/\s+/))o&&u.add(o);return u.size>0?Array.from(u).join(" "):void 0}cn(wp,"concatAriaDescribedby");function Hd(i){return i?"open":"closed"}cn(Hd,"getState");var hr='[cmdk-group=""]',jf='[cmdk-group-items=""]',E3='[cmdk-group-heading=""]',Tp='[cmdk-item=""]',ry=`${Tp}:not([aria-disabled="true"])`,dd="cmdk-item-select",di="data-value",w3=(i,u,c)=>yC(i,u,c),jp=b.createContext(void 0),Nr=()=>b.useContext(jp),_p=b.createContext(void 0),qd=()=>b.useContext(_p),Ap=b.createContext(void 0),Rp=b.forwardRef((i,u)=>{let c=mi(()=>{var J,me;return{search:"",value:(me=(J=i.value)!=null?J:i.defaultValue)!=null?me:"",selectedItemId:void 0,filtered:{count:0,items:new Map,groups:new Set}}}),o=mi(()=>new Set),s=mi(()=>new Map),d=mi(()=>new Map),h=mi(()=>new Set),v=Mp(i),{label:g,children:x,value:S,onValueChange:p,filter:N,shouldFilter:A,loop:j,disablePointerSelection:z=!1,vimBindings:H=!0,...q}=i,G=un(),k=un(),V=un(),K=b.useRef(null),_=B3();ca(()=>{if(S!==void 0){let J=S.trim();c.current.value=J,E.emit()}},[S]),ca(()=>{_(6,ne)},[]);let E=b.useMemo(()=>({subscribe:J=>(h.current.add(J),()=>h.current.delete(J)),snapshot:()=>c.current,setState:(J,me,w)=>{var U,$,ee,he;if(!Object.is(c.current[J],me)){if(c.current[J]=me,J==="search")P(),te(),_(1,W);else if(J==="value"){if(document.activeElement.hasAttribute("cmdk-input")||document.activeElement.hasAttribute("cmdk-root")){let ie=document.getElementById(V);ie?ie.focus():(U=document.getElementById(G))==null||U.focus()}if(_(7,()=>{var ie;c.current.selectedItemId=(ie=re())==null?void 0:ie.id,E.emit()}),w||_(5,ne),(($=v.current)==null?void 0:$.value)!==void 0){let ie=me??"";(he=(ee=v.current).onValueChange)==null||he.call(ee,ie);return}}E.emit()}},emit:()=>{h.current.forEach(J=>J())}}),[]),R=b.useMemo(()=>({value:(J,me,w)=>{var U;me!==((U=d.current.get(J))==null?void 0:U.value)&&(d.current.set(J,{value:me,keywords:w}),c.current.filtered.items.set(J,Q(me,w)),_(2,()=>{te(),E.emit()}))},item:(J,me)=>(o.current.add(J),me&&(s.current.has(me)?s.current.get(me).add(J):s.current.set(me,new Set([J]))),_(3,()=>{P(),te(),c.current.value||W(),E.emit()}),()=>{d.current.delete(J),o.current.delete(J),c.current.filtered.items.delete(J);let w=re();_(4,()=>{P(),(w==null?void 0:w.getAttribute("id"))===J&&W(),E.emit()})}),group:J=>(s.current.has(J)||s.current.set(J,new Set),()=>{d.current.delete(J),s.current.delete(J)}),filter:()=>v.current.shouldFilter,label:g||i["aria-label"],getDisablePointerSelection:()=>v.current.disablePointerSelection,listId:G,inputId:V,labelId:k,listInnerRef:K}),[]);function Q(J,me){var w,U;let $=(U=(w=v.current)==null?void 0:w.filter)!=null?U:w3;return J?$(J,c.current.search,me):0}function te(){if(!c.current.search||v.current.shouldFilter===!1)return;let J=c.current.filtered.items,me=[];c.current.filtered.groups.forEach(U=>{let $=s.current.get(U),ee=0;$.forEach(he=>{let ie=J.get(he);ee=Math.max(ie,ee)}),me.push([U,ee])});let w=K.current;ge().sort((U,$)=>{var ee,he;let ie=U.getAttribute("id"),Ne=$.getAttribute("id");return((ee=J.get(Ne))!=null?ee:0)-((he=J.get(ie))!=null?he:0)}).forEach(U=>{let $=U.closest(jf);$?$.appendChild(U.parentElement===$?U:U.closest(`${jf} > *`)):w.appendChild(U.parentElement===w?U:U.closest(`${jf} > *`))}),me.sort((U,$)=>$[1]-U[1]).forEach(U=>{var $;let ee=($=K.current)==null?void 0:$.querySelector(`${hr}[${di}="${encodeURIComponent(U[0])}"]`);ee==null||ee.parentElement.appendChild(ee)})}function W(){let J=ge().find(w=>w.getAttribute("aria-disabled")!=="true"),me=J==null?void 0:J.getAttribute(di);E.setState("value",me||void 0)}function P(){var J,me,w,U;if(!c.current.search||v.current.shouldFilter===!1){c.current.filtered.count=o.current.size;return}c.current.filtered.groups=new Set;let $=0;for(let ee of o.current){let he=(me=(J=d.current.get(ee))==null?void 0:J.value)!=null?me:"",ie=(U=(w=d.current.get(ee))==null?void 0:w.keywords)!=null?U:[],Ne=Q(he,ie);c.current.filtered.items.set(ee,Ne),Ne>0&&$++}for(let[ee,he]of s.current)for(let ie of he)if(c.current.filtered.items.get(ie)>0){c.current.filtered.groups.add(ee);break}c.current.filtered.count=$}function ne(){var J,me,w;let U=re();U&&(((J=U.parentElement)==null?void 0:J.firstChild)===U&&((w=(me=U.closest(hr))==null?void 0:me.querySelector(E3))==null||w.scrollIntoView({block:"nearest"})),U.scrollIntoView({block:"nearest"}))}function re(){var J;return(J=K.current)==null?void 0:J.querySelector(`${Tp}[aria-selected="true"]`)}function ge(){var J;return Array.from(((J=K.current)==null?void 0:J.querySelectorAll(ry))||[])}function F(J){let me=ge()[J];me&&E.setState("value",me.getAttribute(di))}function ae(J){var me;let w=re(),U=ge(),$=U.findIndex(he=>he===w),ee=U[$+J];(me=v.current)!=null&&me.loop&&(ee=$+J<0?U[U.length-1]:$+J===U.length?U[0]:U[$+J]),ee&&E.setState("value",ee.getAttribute(di))}function ce(J){let me=re(),w=me==null?void 0:me.closest(hr),U;for(;w&&!U;)w=J>0?D3(w,hr):U3(w,hr),U=w==null?void 0:w.querySelector(ry);U?E.setState("value",U.getAttribute(di)):ae(J)}let xe=()=>F(ge().length-1),I=J=>{J.preventDefault(),J.metaKey?xe():J.altKey?ce(1):ae(1)},Se=J=>{J.preventDefault(),J.metaKey?F(0):J.altKey?ce(-1):ae(-1)};return b.createElement(Ie.div,{ref:u,tabIndex:-1,...q,"cmdk-root":"",onKeyDown:J=>{var me;(me=q.onKeyDown)==null||me.call(q,J);let w=J.nativeEvent.isComposing||J.keyCode===229;if(!(J.defaultPrevented||w))switch(J.key){case"n":case"j":{H&&J.ctrlKey&&I(J);break}case"ArrowDown":{I(J);break}case"p":case"k":{H&&J.ctrlKey&&Se(J);break}case"ArrowUp":{Se(J);break}case"Home":{J.preventDefault(),F(0);break}case"End":{J.preventDefault(),xe();break}case"Enter":{J.preventDefault();let U=re();if(U){let $=new Event(dd);U.dispatchEvent($)}}}}},b.createElement("label",{"cmdk-label":"",htmlFor:R.inputId,id:R.labelId,style:L3},g),Eo(i,J=>b.createElement(_p.Provider,{value:E},b.createElement(jp.Provider,{value:R},J))))}),T3=b.forwardRef((i,u)=>{var c,o;let s=un(),d=b.useRef(null),h=b.useContext(Ap),v=Nr(),g=Mp(i),x=(o=(c=g.current)==null?void 0:c.forceMount)!=null?o:h==null?void 0:h.forceMount;ca(()=>{if(!x)return v.item(s,h==null?void 0:h.id)},[x]);let S=Op(s,d,[i.value,i.children,d],i.keywords),p=qd(),N=Dl(_=>_.value&&_.value===S.current),A=Dl(_=>x||v.filter()===!1?!0:_.search?_.filtered.items.get(s)>0:!0);b.useEffect(()=>{let _=d.current;if(!(!_||i.disabled))return _.addEventListener(dd,j),()=>_.removeEventListener(dd,j)},[A,i.onSelect,i.disabled]);function j(){var _,E;z(),(E=(_=g.current).onSelect)==null||E.call(_,S.current)}function z(){p.setState("value",S.current,!0)}if(!A)return null;let{disabled:H,value:q,onSelect:G,forceMount:k,keywords:V,...K}=i;return b.createElement(Ie.div,{ref:ua(d,u),...K,id:s,"cmdk-item":"",role:"option","aria-disabled":!!H,"aria-selected":!!N,"data-disabled":!!H,"data-selected":!!N,onPointerMove:H||v.getDisablePointerSelection()?void 0:z,onClick:H?void 0:j},i.children)}),j3=b.forwardRef((i,u)=>{let{heading:c,children:o,forceMount:s,...d}=i,h=un(),v=b.useRef(null),g=b.useRef(null),x=un(),S=Nr(),p=Dl(A=>s||S.filter()===!1?!0:A.search?A.filtered.groups.has(h):!0);ca(()=>S.group(h),[]),Op(h,v,[i.value,i.heading,g]);let N=b.useMemo(()=>({id:h,forceMount:s}),[s]);return b.createElement(Ie.div,{ref:ua(v,u),...d,"cmdk-group":"",role:"presentation",hidden:p?void 0:!0},c&&b.createElement("div",{ref:g,"cmdk-group-heading":"","aria-hidden":!0,id:x},c),Eo(i,A=>b.createElement("div",{"cmdk-group-items":"",role:"group","aria-labelledby":c?x:void 0},b.createElement(Ap.Provider,{value:N},A))))}),_3=b.forwardRef((i,u)=>{let{alwaysRender:c,...o}=i,s=b.useRef(null),d=Dl(h=>!h.search);return!c&&!d?null:b.createElement(Ie.div,{ref:ua(s,u),...o,"cmdk-separator":"",role:"separator"})}),A3=b.forwardRef((i,u)=>{let{onValueChange:c,...o}=i,s=i.value!=null,d=qd(),h=Dl(x=>x.search),v=Dl(x=>x.selectedItemId),g=Nr();return b.useEffect(()=>{i.value!=null&&d.setState("search",i.value)},[i.value]),b.createElement(Ie.input,{ref:u,...o,"cmdk-input":"",autoComplete:"off",autoCorrect:"off",spellCheck:!1,"aria-autocomplete":"list",role:"combobox","aria-expanded":!0,"aria-controls":g.listId,"aria-labelledby":g.labelId,"aria-activedescendant":v,id:g.inputId,type:"text",value:s?i.value:h,onChange:x=>{s||d.setState("search",x.target.value),c==null||c(x.target.value)}})}),R3=b.forwardRef((i,u)=>{let{children:c,label:o="Suggestions",...s}=i,d=b.useRef(null),h=b.useRef(null),v=Dl(x=>x.selectedItemId),g=Nr();return b.useEffect(()=>{if(h.current&&d.current){let x=h.current,S=d.current,p,N=new ResizeObserver(()=>{p=requestAnimationFrame(()=>{let A=x.offsetHeight;S.style.setProperty("--cmdk-list-height",A.toFixed(1)+"px")})});return N.observe(x),()=>{cancelAnimationFrame(p),N.unobserve(x)}}},[]),b.createElement(Ie.div,{ref:ua(d,u),...s,"cmdk-list":"",role:"listbox",tabIndex:-1,"aria-activedescendant":v,"aria-label":o,id:g.listId},Eo(i,x=>b.createElement("div",{ref:ua(h,g.listInnerRef),"cmdk-list-sizer":""},x)))}),M3=b.forwardRef((i,u)=>{let{open:c,onOpenChange:o,overlayClassName:s,contentClassName:d,container:h,...v}=i;return b.createElement(pp,{open:c,onOpenChange:o},b.createElement(Sp,{container:h},b.createElement(kd,{"cmdk-overlay":"",className:s}),b.createElement(Ld,{"aria-label":i.label,"cmdk-dialog":"",className:d},b.createElement(Rp,{ref:u,...v}))))}),O3=b.forwardRef((i,u)=>Dl(c=>c.filtered.count===0)?b.createElement(Ie.div,{ref:u,...i,"cmdk-empty":"",role:"presentation"}):null),z3=b.forwardRef((i,u)=>{let{progress:c,children:o,label:s="Loading...",...d}=i;return b.createElement(Ie.div,{ref:u,...d,"cmdk-loading":"",role:"progressbar","aria-valuenow":c,"aria-valuemin":0,"aria-valuemax":100,"aria-label":s},Eo(i,h=>b.createElement("div",{"aria-hidden":!0},h)))}),sn=Object.assign(Rp,{List:R3,Item:T3,Input:A3,Group:j3,Separator:_3,Dialog:M3,Empty:O3,Loading:z3});function D3(i,u){let c=i.nextElementSibling;for(;c;){if(c.matches(u))return c;c=c.nextElementSibling}}function U3(i,u){let c=i.previousElementSibling;for(;c;){if(c.matches(u))return c;c=c.previousElementSibling}}function Mp(i){let u=b.useRef(i);return ca(()=>{u.current=i}),u}var ca=typeof window>"u"?b.useEffect:b.useLayoutEffect;function mi(i){let u=b.useRef();return u.current===void 0&&(u.current=i()),u}function Dl(i){let u=qd(),c=()=>i(u.snapshot());return b.useSyncExternalStore(u.subscribe,c,c)}function Op(i,u,c,o=[]){let s=b.useRef(),d=Nr();return ca(()=>{var h;let v=(()=>{var x;for(let S of c){if(typeof S=="string")return S.trim();if(typeof S=="object"&&"current"in S)return S.current?(x=S.current.textContent)==null?void 0:x.trim():s.current}})(),g=o.map(x=>x.trim());d.value(i,v,g),(h=u.current)==null||h.setAttribute(di,v),s.current=v}),s}var B3=()=>{let[i,u]=b.useState(),c=mi(()=>new Map);return ca(()=>{c.current.forEach(o=>o()),c.current=new Map},[i]),(o,s)=>{c.current.set(o,s),u({})}};function k3(i){let u=i.type;return typeof u=="function"?u(i.props):"render"in u?u.render(i.props):i}function Eo({asChild:i,children:u},c){return i&&b.isValidElement(u)?b.cloneElement(k3(u),{ref:u.ref},c(u.props.children)):c(u)}var L3={position:"absolute",width:"1px",height:"1px",padding:"0",margin:"-1px",overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",borderWidth:"0"};const Gd=pp,H3=Sp,zp=b.forwardRef(({className:i,...u},c)=>f.jsx(kd,{ref:c,className:Ze("fixed inset-0 z-50 bg-black/70 backdrop-blur-sm transition-opacity",i),...u}));zp.displayName=kd.displayName;const wo=b.forwardRef(({className:i,children:u,...c},o)=>f.jsxs(H3,{children:[f.jsx(zp,{}),f.jsx(Ld,{ref:o,className:Ze("fixed left-[50%] top-[50%] z-50 w-full max-w-lg translate-x-[-50%] translate-y-[-50%] hl-card shadow-2xl duration-200 outline-none",i),...c,children:u})]}));wo.displayName=Ld.displayName;const To=b.forwardRef(({className:i,...u},c)=>f.jsx(Cp,{ref:c,className:Ze("text-sm font-bold leading-none tracking-tight",i),...u}));To.displayName=Cp.displayName;const jo=b.forwardRef(({className:i,...u},c)=>f.jsx(Ep,{ref:c,className:Ze("text-xs text-[var(--text-muted)]",i),...u}));jo.displayName=Ep.displayName;const Dp=b.forwardRef(({className:i,...u},c)=>f.jsx(sn,{ref:c,className:Ze("flex h-full w-full flex-col overflow-hidden rounded-xl bg-[var(--bg-card)] text-[var(--text-main)]",i),...u}));Dp.displayName=sn.displayName;const q3=({children:i,...u})=>f.jsx(Gd,{...u,children:f.jsxs(wo,{className:"max-w-xl overflow-hidden p-0 shadow-2xl top-[22%] translate-y-0",children:[f.jsx(To,{className:"sr-only",children:"全局命令与服务搜索面板"}),f.jsx(jo,{className:"sr-only",children:"使用键盘上下方向键选择服务或操作,回车立即执行"}),f.jsx(Dp,{children:i})]})}),Up=b.forwardRef(({className:i,...u},c)=>f.jsxs("div",{className:"flex items-center border-b hl-border px-4 py-3 gap-3","cmdk-input-wrapper":"",children:[f.jsx(bd,{className:"h-4 w-4 shrink-0 text-[var(--text-muted)]"}),f.jsx(sn.Input,{ref:c,className:Ze("flex w-full bg-transparent text-sm outline-none placeholder:text-[var(--text-subtle)] disabled:cursor-not-allowed disabled:opacity-50",i),...u}),f.jsx("kbd",{className:"px-1.5 py-0.5 text-[10px] font-mono-num rounded hl-muted text-[var(--text-muted)] shrink-0",children:"ESC"})]}));Up.displayName=sn.Input.displayName;const Bp=b.forwardRef(({className:i,...u},c)=>f.jsx(sn.List,{ref:c,className:Ze("max-h-80 overflow-y-auto overflow-x-hidden p-2",i),...u}));Bp.displayName=sn.List.displayName;const kp=b.forwardRef((i,u)=>f.jsx(sn.Empty,{ref:u,className:"py-6 text-center text-xs text-[var(--text-muted)]",...i}));kp.displayName=sn.Empty.displayName;const Lp=b.forwardRef(({className:i,...u},c)=>f.jsx(sn.Group,{ref:c,className:Ze("overflow-hidden p-1 text-[var(--text-main)] [&_[cmdk-group-heading]]:px-2.5 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-[10px] [&_[cmdk-group-heading]]:font-semibold [&_[cmdk-group-heading]]:uppercase [&_[cmdk-group-heading]]:tracking-wider [&_[cmdk-group-heading]]:text-[var(--text-subtle)]",i),...u}));Lp.displayName=sn.Group.displayName;const Hp=b.forwardRef(({className:i,...u},c)=>f.jsx(sn.Item,{ref:c,className:Ze("relative flex cursor-pointer select-none items-center justify-between rounded-lg px-3 py-2 text-xs outline-none transition-colors data-[selected=true]:bg-[var(--bg-muted)] data-[selected=true]:text-[var(--text-main)] data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50",i),...u}));Hp.displayName=sn.Item.displayName;const G3=()=>{const{showCmdPalette:i,setShowCmdPalette:u,setShowAgyModal:c,setTheme:o,triggerAction:s,copyCmd:d,getEffectiveMode:h}=Un(),v=b.useMemo(()=>{const g=h(),x=(S,p,N)=>g==="lan"?N:g==="home10443"?p:S;return[{id:"open-agy-drawer",title:"在页内唤起 AGY 云端终端",hint:"tmux attach -t agy",type:"终端",run:()=>c(!0)},{id:"open-agy",title:"新窗口打开 AGY 云端工作台",hint:"https://agy.961504.xyz",type:"跳转",run:()=>window.open(x("https://agy.961504.xyz","https://agy.home.961504.xyz:10443","http://192.168.31.164:7681"),"_blank")},{id:"open-z4",title:"打开 极空间 Z4 私有云 (20TB)",hint:"192.168.31.185:5055",type:"跳转",run:()=>window.open(x("https://z4.home.961504.xyz:10443","https://z4.home.961504.xyz:10443","http://192.168.31.185:5055"),"_blank")},{id:"open-vw",title:"打开 Vaultwarden 密码保险箱",hint:"https://vw.961504.xyz",type:"跳转",run:()=>window.open(x("https://vw.961504.xyz","https://vw.home.961504.xyz:10443","http://192.168.31.164:8222"),"_blank")},{id:"open-clash",title:"打开 Mihomo 路由分流面板",hint:"192.168.31.1:9999",type:"跳转",run:()=>window.open(x("https://clash.home.961504.xyz:10443/ui/","https://clash.home.961504.xyz:10443/ui/","http://192.168.31.1:9999/ui/"),"_blank")},{id:"act-backup",title:"立即打包备份核心数据至极空间 Z4",hint:"backup-to-nas.sh",type:"运维",run:()=>s("backup_nas","正在打包备份至极空间 Z4...")},{id:"act-ddns",title:"立即刷新 Cloudflare DDNS 解析",hint:"cloudflare-ddns.sh",type:"运维",run:()=>s("refresh_ddns","正在同步 Cloudflare DDNS...")},{id:"ssh-mini",title:"复制 SSH 连接 Mac mini 指令",hint:"ssh mini",type:"SSH",run:()=>d("ssh mini","SSH Mac mini")},{id:"ssh-agy",title:"复制 终端接力 AGY 会话指令",hint:'ssh mini -t "tmux attach -t agy"',type:"SSH",run:()=>d('ssh mini -t "tmux attach -t agy"',"接力 AGY")},{id:"theme-system",title:"主题模式: 跟随设备系统深浅色自动切换",hint:"system",type:"主题",run:()=>o("system")},{id:"theme-light",title:"切换主题: 浅色纯净 (Light)",hint:"light",type:"主题",run:()=>o("light")},{id:"theme-dark",title:"切换主题: 深色极客 (Dark)",hint:"dark",type:"主题",run:()=>o("dark")}]},[h,c,o,s,d]);return f.jsxs(q3,{open:i,onOpenChange:u,children:[f.jsx(Up,{placeholder:"输入服务名称、SSH 指令、路由模式或主题..."}),f.jsxs(Bp,{children:[f.jsx(kp,{children:"未找到匹配的指令或服务"}),f.jsx(Lp,{heading:"快速操作与服务直达 (cmdk + Radix Dialog)",children:v.map(g=>f.jsxs(Hp,{value:`${g.title} ${g.hint} ${g.type}`,onSelect:()=>{u(!1),g.run()},children:[f.jsxs("div",{className:"flex items-center gap-2.5",children:[f.jsx("span",{className:"font-medium",children:g.title}),f.jsx("span",{className:"font-mono-num text-[11px] text-[var(--text-muted)]",children:g.hint})]}),f.jsx(rt,{variant:"secondary",children:g.type})]},g.id))})]})]})},an=b.forwardRef(({className:i,...u},c)=>f.jsx("div",{ref:c,className:Ze("hl-card",i),...u}));an.displayName="Card";const md=b.forwardRef(({className:i,...u},c)=>f.jsx("div",{ref:c,className:Ze("flex flex-col space-y-1.5 p-5",i),...u}));md.displayName="CardHeader";const hd=b.forwardRef(({className:i,...u},c)=>f.jsx("h3",{ref:c,className:Ze("text-sm font-bold leading-none tracking-tight",i),...u}));hd.displayName="CardTitle";const vd=b.forwardRef(({className:i,...u},c)=>f.jsx("p",{ref:c,className:Ze("text-xs text-[var(--text-muted)]",i),...u}));vd.displayName="CardDescription";const qp=b.forwardRef(({className:i,...u},c)=>f.jsx("div",{ref:c,className:Ze("p-5 pt-0",i),...u}));qp.displayName="CardContent";const Y3=b.forwardRef(({className:i,...u},c)=>f.jsx("div",{ref:c,className:Ze("flex items-center p-5 pt-0",i),...u}));Y3.displayName="CardFooter";const Yd=b.forwardRef(({className:i,type:u,...c},o)=>f.jsx("input",{type:u,className:Ze("hl-input",i),ref:o,...c}));Yd.displayName="Input";const po=b.forwardRef(({className:i,...u},c)=>f.jsx("div",{ref:c,className:Ze("hl-input-group",i),...u}));po.displayName="InputGroup";var V3=Object.defineProperty,Q3=(i,u)=>V3(i,"name",{value:u,configurable:!0});function Gp(i){const[u,c]=b.useState(void 0);return on(()=>{if(i){c({width:i.offsetWidth,height:i.offsetHeight});let o=0;const s=new ResizeObserver(d=>{if(!Array.isArray(d)||!d.length)return;const h=d[0];window.cancelAnimationFrame(o),o=window.requestAnimationFrame(()=>{let v,g;if("borderBoxSize"in h){const x=h.borderBoxSize,S=Array.isArray(x)?x[0]:x;v=S.inlineSize,g=S.blockSize}else v=i.offsetWidth,g=i.offsetHeight;c({width:v,height:g})})});return s.observe(i,{box:"border-box"}),()=>{window.cancelAnimationFrame(o),s.unobserve(i)}}else c(void 0)},[i]),u}Q3(Gp,"useSize");var X3=Object.defineProperty,Ul=(i,u)=>X3(i,"name",{value:u,configurable:!0}),Vd="Switch",[Z3,OE]=da(Vd),[K3,Qd]=Z3(Vd);function Yp(i){const{__scopeSwitch:u,checked:c,children:o,defaultChecked:s,disabled:d,form:h,name:v,onCheckedChange:g,required:x,value:S="on",internal_do_not_use_render:p}=i,[N,A]=Sr({prop:c,defaultProp:s??!1,onChange:g,caller:Vd}),[j,z]=b.useState(null),[H,q]=b.useState(null),[G,k]=b.useState(null),V=j?!!h||!!j.closest("form"):!0,K={checked:N,setChecked:A,disabled:d,control:j,setControl:z,name:v,form:h,value:S,userClick:G,onUserClick:k,required:x,defaultChecked:s,isFormControl:V,bubbleInput:H,setBubbleInput:q};return f.jsx(K3,{scope:u,...K,children:Qp(p)?p(K):o})}Ul(Yp,"SwitchProvider");var I3="SwitchTrigger",J3=b.forwardRef(Ul(function({__scopeSwitch:u,onClick:c,...o},s){const{control:d,form:h,value:v,disabled:g,checked:x,required:S,setControl:p,setChecked:N,onUserClick:A,isFormControl:j,bubbleInput:z}=Qd(I3,u),H=Dt(s,p),q=b.useRef(x);return b.useEffect(()=>{const G=h?d==null?void 0:d.ownerDocument.getElementById(h):d==null?void 0:d.form;if(G instanceof HTMLFormElement){const k=Ul(()=>N(q.current),"reset");return G.addEventListener("reset",k),()=>G.removeEventListener("reset",k)}},[d,h,N]),f.jsx(Ie.button,{type:"button",role:"switch","aria-checked":x,"aria-required":S,"data-state":Xd(x),"data-disabled":g?"":void 0,disabled:g,value:v,...o,ref:H,onClick:mt(c,G=>{const k=G.isPropagationStopped();A({requestedChecked:!x,hasConsumerStoppedPropagation:k}),N(V=>!V),z&&j&&(k||G.stopPropagation())})})},"SwitchTrigger")),Vp=b.forwardRef(Ul(function(u,c){const{__scopeSwitch:o,name:s,checked:d,defaultChecked:h,required:v,disabled:g,value:x,onCheckedChange:S,form:p,...N}=u;return f.jsx(Yp,{__scopeSwitch:o,checked:d,defaultChecked:h,disabled:g,required:v,onCheckedChange:S,name:s,form:p,value:x,internal_do_not_use_render:({isFormControl:A})=>f.jsxs(f.Fragment,{children:[f.jsx(J3,{...N,ref:c,__scopeSwitch:o}),A&&f.jsx(W3,{__scopeSwitch:o})]})})},"Switch")),F3="SwitchThumb",P3=b.forwardRef(Ul(function(u,c){const{__scopeSwitch:o,...s}=u,d=Qd(F3,o);return f.jsx(Ie.span,{"data-state":Xd(d.checked),"data-disabled":d.disabled?"":void 0,...s,ref:c})},"SwitchThumb")),$3="SwitchBubbleInput",W3=b.forwardRef(Ul(function({__scopeSwitch:u,onClick:c,...o},s){const{control:d,userClick:h,checked:v,defaultChecked:g,required:x,disabled:S,name:p,value:N,form:A,bubbleInput:j,setBubbleInput:z}=Qd($3,u),H=Dt(s,z),q=Gp(d),G=b.useRef(!1),k=b.useRef(v),V=b.useRef(h),K=b.useRef(null);b.useEffect(()=>{const E=j;if(!E)return;const R=window.HTMLInputElement.prototype,te=Object.getOwnPropertyDescriptor(R,"checked").set;if(!te)return;const W=k.current!==v;k.current=v;const P=h!==null&&h!==V.current;if(V.current=h,P)K.current=W?null:h,W&&te.call(E,v),E.dispatchEvent(new Event("click",{bubbles:!h.hasConsumerStoppedPropagation}));else if(W){const ne=K.current;K.current=null;const re=(ne==null?void 0:ne.requestedChecked)===v;G.current=!0,te.call(E,v),E.dispatchEvent(new Event("click",{bubbles:!(re&&ne.hasConsumerStoppedPropagation)})),G.current=!1}},[j,v,h]);const _=b.useRef(v);return f.jsx(Ie.input,{type:"checkbox","aria-hidden":!0,defaultChecked:g??_.current,required:x,disabled:S,name:p,value:N,form:A,...o,tabIndex:-1,ref:H,onClick:mt(c,E=>{G.current&&E.stopPropagation()}),style:{...o.style,...q,position:"absolute",pointerEvents:"none",opacity:0,margin:0,transform:"translateX(-100%)"}})},"SwitchBubbleInput"));function Qp(i){return typeof i=="function"}Ul(Qp,"isFunction");function Xd(i){return i?"checked":"unchecked"}Ul(Xd,"getState");const bo=b.forwardRef(({className:i,...u},c)=>f.jsx(Vp,{className:Ze("peer inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full border transition-colors disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-[var(--accent)] data-[state=checked]:border-[var(--accent)] data-[state=unchecked]:bg-[var(--bg-muted)] data-[state=unchecked]:border-[var(--border-color)]",i),...u,ref:c,children:f.jsx(P3,{className:Ze("pointer-events-none block h-3.5 w-3.5 rounded-full bg-white shadow-sm transition-transform data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0.5")})}));bo.displayName=Vp.displayName;const Zd=({targetUrl:i="https://agy.961504.xyz",onSuccess:u,onCancel:c,embedded:o=!1})=>{const[s,d]=b.useState("ixvii0iv"),[h,v]=b.useState(""),[g,x]=b.useState(!1),[S,p]=b.useState(!0),[N,A]=b.useState(!1),[j,z]=b.useState(null),H=async q=>{if(q.preventDefault(),!s.trim()||!h){z("请输入用户名与访问密钥");return}A(!0),z(null);try{const G=await fetch("/api/auth/login",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({username:s.trim(),password:h,remember:S})}),k=await G.json();G.ok&&k.ok?u==null||u():z(k.message||"认证未通过,请检查密码")}catch{z("网络请求异常,请稍后重试")}finally{A(!1)}};return f.jsxs(an,{className:`w-full max-w-md p-6 space-y-5 ${o?"":"shadow-2xl"}`,children:[f.jsx("div",{className:"flex items-start justify-between gap-3 border-b hl-border pb-4",children:f.jsxs("div",{className:"flex items-center gap-3",children:[f.jsx("div",{className:"w-10 h-10 rounded-xl flex items-center justify-center border hl-border shrink-0",style:{backgroundColor:"var(--accent-soft)",color:"var(--accent)"},children:f.jsx(WS,{className:"w-5 h-5"})}),f.jsxs("div",{children:[f.jsxs("div",{className:"flex items-center gap-2",children:[f.jsx("h3",{className:"text-sm font-bold tracking-tight",children:"HomeLab 统一安全通行证"}),f.jsx(rt,{variant:"success",children:"SSO 2.0"})]}),f.jsx("p",{className:"text-xs font-mono-num mt-0.5 truncate max-w-[260px]",style:{color:"var(--text-muted)"},children:i})]})]})}),f.jsxs("form",{onSubmit:H,className:"space-y-4",children:[f.jsxs("div",{className:"space-y-1.5",children:[f.jsx("label",{className:"block text-xs font-semibold",style:{color:"var(--text-muted)"},children:"管理员账号 (Username)"}),f.jsxs(po,{children:[f.jsx(cN,{className:"w-4 h-4 shrink-0",style:{color:"var(--text-subtle)"}}),f.jsx("input",{type:"text",autoComplete:"username",value:s,onChange:q=>d(q.target.value),placeholder:"输入管理员账号 (如 ixvii0iv)",className:"font-mono-num"})]})]}),f.jsxs("div",{className:"space-y-1.5",children:[f.jsxs("div",{className:"flex items-center justify-between",children:[f.jsx("label",{className:"block text-xs font-semibold",style:{color:"var(--text-muted)"},children:"访问通行密钥 (Access Key)"}),f.jsx("span",{className:"text-[10px] font-mono-num",style:{color:"var(--text-subtle)"},children:"与 Mac mini 密码一致"})]}),f.jsxs(po,{children:[f.jsx(LS,{className:"w-4 h-4 shrink-0",style:{color:"var(--text-subtle)"}}),f.jsx("input",{type:g?"text":"password",autoComplete:"current-password",autoFocus:!0,value:h,onChange:q=>v(q.target.value),placeholder:"输入访问密钥...",className:"font-mono-num"}),f.jsx("button",{type:"button",onClick:()=>x(!g),className:"p-1 rounded hover:opacity-80 cursor-pointer",style:{color:"var(--text-muted)"},title:g?"隐藏密码":"显示密码",children:g?f.jsx(wS,{className:"w-3.5 h-3.5"}):f.jsx(jS,{className:"w-3.5 h-3.5"})})]})]}),f.jsxs("div",{className:"flex items-center justify-between pt-1",children:[f.jsx("span",{className:"text-xs select-none",style:{color:"var(--text-muted)"},children:"在此设备保持 30 天免密通行 (*.961504.xyz)"}),f.jsx(bo,{checked:S,onCheckedChange:p})]}),j&&f.jsx("div",{className:"px-3 py-2 rounded-lg text-xs font-medium border",style:{backgroundColor:"rgba(239, 68, 68, 0.1)",borderColor:"rgba(239, 68, 68, 0.3)",color:"#ef4444"},children:j}),f.jsxs("div",{className:"flex items-center justify-end gap-2.5 pt-2",children:[c&&f.jsx(Oe,{type:"button",variant:"outline",onClick:c,children:"取消"}),f.jsxs(Oe,{type:"submit",disabled:N,className:"px-4",children:[f.jsx(yr,{className:"w-3.5 h-3.5"}),f.jsx("span",{children:N?"正在验证签名...":"解锁并进入工作台"})]})]})]})]})},eE=()=>{const{showAgyModal:i,setShowAgyModal:u,getEffectiveMode:c}=Un(),[o,s]=b.useState(!1),[d,h]=b.useState(!1),v=c(),g=v==="lan"?"http://192.168.31.164:7681":v==="home10443"?"https://agy.home.961504.xyz:10443":"https://agy.961504.xyz";return b.useEffect(()=>{if(i){if(v==="lan"){h(!0),s(!0);return}s(!1),fetch("/api/auth/status",{credentials:"include"}).then(x=>x.json()).then(x=>{h(!!x.authenticated),s(!0)}).catch(()=>{h(!1),s(!0)})}},[i,v]),f.jsx(Gd,{open:i,onOpenChange:u,children:f.jsxs(wo,{className:"w-[95vw] max-w-6xl h-[88vh] flex flex-col overflow-hidden p-0",children:[f.jsx(To,{className:"sr-only",children:"AGY 云端工作台"}),f.jsx(jo,{className:"sr-only",children:"M6 Mac mini 上的 24 小时 tmux 常驻 AI 编程终端"}),f.jsxs("div",{className:"px-4 py-2.5 border-b hl-border flex items-center justify-between hl-muted shrink-0",children:[f.jsxs("div",{className:"flex items-center gap-2.5",children:[f.jsx("img",{src:"https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons/png/google-gemini.png",alt:"AGY",className:"w-4 h-4"}),f.jsx("span",{className:"text-xs font-mono-num font-medium",children:"AGY 云端工作台 · tmux 持久会话 (关窗不断连)"})]}),f.jsxs("div",{className:"flex items-center gap-2",children:[f.jsx(Oe,{variant:"outline",size:"sm",asChild:!0,children:f.jsx("a",{href:g,target:"_blank",rel:"noopener noreferrer",className:"font-mono-num",children:"新标签页全屏 ↗"})}),f.jsx(Oe,{size:"sm",onClick:()=>u(!1),children:"收起终端"})]})]}),o?d?f.jsx("iframe",{src:g,title:"AGY Cloud Workbench",className:"w-full flex-1 bg-black border-0"}):f.jsx("div",{className:"flex-1 flex items-center justify-center p-4",style:{backgroundColor:"var(--bg-page)"},children:f.jsx(Zd,{targetUrl:g,onSuccess:()=>h(!0),onCancel:()=>u(!1)})}):f.jsx("div",{className:"flex-1 flex items-center justify-center text-xs font-mono-num",style:{color:"var(--text-muted)"},children:"正在校验 HomeLab SSO 通行证..."})]})})};var si={},_f,uy;function tE(){return uy||(uy=1,_f=function(){return typeof Promise=="function"&&Promise.prototype&&Promise.prototype.then}),_f}var Af={},Ol={},oy;function ha(){if(oy)return Ol;oy=1;let i;const u=[0,26,44,70,100,134,172,196,242,292,346,404,466,532,581,655,733,815,901,991,1085,1156,1258,1364,1474,1588,1706,1828,1921,2051,2185,2323,2465,2611,2761,2876,3034,3196,3362,3532,3706];return Ol.getSymbolSize=function(o){if(!o)throw new Error('"version" cannot be null or undefined');if(o<1||o>40)throw new Error('"version" should be in range from 1 to 40');return o*4+17},Ol.getSymbolTotalCodewords=function(o){return u[o]},Ol.getBCHDigit=function(c){let o=0;for(;c!==0;)o++,c>>>=1;return o},Ol.setToSJISFunction=function(o){if(typeof o!="function")throw new Error('"toSJISFunc" is not a valid function.');i=o},Ol.isKanjiModeEnabled=function(){return typeof i<"u"},Ol.toSJIS=function(o){return i(o)},Ol}var Rf={},cy;function Kd(){return cy||(cy=1,(function(i){i.L={bit:1},i.M={bit:0},i.Q={bit:3},i.H={bit:2};function u(c){if(typeof c!="string")throw new Error("Param is not a string");switch(c.toLowerCase()){case"l":case"low":return i.L;case"m":case"medium":return i.M;case"q":case"quartile":return i.Q;case"h":case"high":return i.H;default:throw new Error("Unknown EC Level: "+c)}}i.isValid=function(o){return o&&typeof o.bit<"u"&&o.bit>=0&&o.bit<4},i.from=function(o,s){if(i.isValid(o))return o;try{return u(o)}catch{return s}}})(Rf)),Rf}var Mf,sy;function nE(){if(sy)return Mf;sy=1;function i(){this.buffer=[],this.length=0}return i.prototype={get:function(u){const c=Math.floor(u/8);return(this.buffer[c]>>>7-u%8&1)===1},put:function(u,c){for(let o=0;o>>c-o-1&1)===1)},getLengthInBits:function(){return this.length},putBit:function(u){const c=Math.floor(this.length/8);this.buffer.length<=c&&this.buffer.push(0),u&&(this.buffer[c]|=128>>>this.length%8),this.length++}},Mf=i,Mf}var Of,fy;function lE(){if(fy)return Of;fy=1;function i(u){if(!u||u<1)throw new Error("BitMatrix size must be defined and greater than 0");this.size=u,this.data=new Uint8Array(u*u),this.reservedBit=new Uint8Array(u*u)}return i.prototype.set=function(u,c,o,s){const d=u*this.size+c;this.data[d]=o,s&&(this.reservedBit[d]=!0)},i.prototype.get=function(u,c){return this.data[u*this.size+c]},i.prototype.xor=function(u,c,o){this.data[u*this.size+c]^=o},i.prototype.isReserved=function(u,c){return this.reservedBit[u*this.size+c]},Of=i,Of}var zf={},dy;function aE(){return dy||(dy=1,(function(i){const u=ha().getSymbolSize;i.getRowColCoords=function(o){if(o===1)return[];const s=Math.floor(o/7)+2,d=u(o),h=d===145?26:Math.ceil((d-13)/(2*s-2))*2,v=[d-7];for(let g=1;g=0&&s<=7},i.from=function(s){return i.isValid(s)?parseInt(s,10):void 0},i.getPenaltyN1=function(s){const d=s.size;let h=0,v=0,g=0,x=null,S=null;for(let p=0;p=5&&(h+=u.N1+(v-5)),x=A,v=1),A=s.get(N,p),A===S?g++:(g>=5&&(h+=u.N1+(g-5)),S=A,g=1)}v>=5&&(h+=u.N1+(v-5)),g>=5&&(h+=u.N1+(g-5))}return h},i.getPenaltyN2=function(s){const d=s.size;let h=0;for(let v=0;v=10&&(v===1488||v===93)&&h++,g=g<<1&2047|s.get(S,x),S>=10&&(g===1488||g===93)&&h++}return h*u.N3},i.getPenaltyN4=function(s){let d=0;const h=s.data.length;for(let g=0;g=0;){const h=d[0];for(let g=0;g0){const v=new Uint8Array(this.degree);return v.set(d,h),v}return d},kf=u,kf}var Lf={},Hf={},qf={},by;function Zp(){return by||(by=1,qf.isValid=function(u){return!isNaN(u)&&u>=1&&u<=40}),qf}var On={},xy;function Kp(){if(xy)return On;xy=1;const i="[0-9]+",u="[A-Z $%*+\\-./:]+";let c="(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+";c=c.replace(/u/g,"\\u");const o="(?:(?![A-Z0-9 $%*+\\-./:]|"+c+`)(?:.|[\r +]))+`;On.KANJI=new RegExp(c,"g"),On.BYTE_KANJI=new RegExp("[^A-Z0-9 $%*+\\-./:]+","g"),On.BYTE=new RegExp(o,"g"),On.NUMERIC=new RegExp(i,"g"),On.ALPHANUMERIC=new RegExp(u,"g");const s=new RegExp("^"+c+"$"),d=new RegExp("^"+i+"$"),h=new RegExp("^[A-Z0-9 $%*+\\-./:]+$");return On.testKanji=function(g){return s.test(g)},On.testNumeric=function(g){return d.test(g)},On.testAlphanumeric=function(g){return h.test(g)},On}var Sy;function va(){return Sy||(Sy=1,(function(i){const u=Zp(),c=Kp();i.NUMERIC={id:"Numeric",bit:1,ccBits:[10,12,14]},i.ALPHANUMERIC={id:"Alphanumeric",bit:2,ccBits:[9,11,13]},i.BYTE={id:"Byte",bit:4,ccBits:[8,16,16]},i.KANJI={id:"Kanji",bit:8,ccBits:[8,10,12]},i.MIXED={bit:-1},i.getCharCountIndicator=function(d,h){if(!d.ccBits)throw new Error("Invalid mode: "+d);if(!u.isValid(h))throw new Error("Invalid version: "+h);return h>=1&&h<10?d.ccBits[0]:h<27?d.ccBits[1]:d.ccBits[2]},i.getBestModeForData=function(d){return c.testNumeric(d)?i.NUMERIC:c.testAlphanumeric(d)?i.ALPHANUMERIC:c.testKanji(d)?i.KANJI:i.BYTE},i.toString=function(d){if(d&&d.id)return d.id;throw new Error("Invalid mode")},i.isValid=function(d){return d&&d.bit&&d.ccBits};function o(s){if(typeof s!="string")throw new Error("Param is not a string");switch(s.toLowerCase()){case"numeric":return i.NUMERIC;case"alphanumeric":return i.ALPHANUMERIC;case"kanji":return i.KANJI;case"byte":return i.BYTE;default:throw new Error("Unknown mode: "+s)}}i.from=function(d,h){if(i.isValid(d))return d;try{return o(d)}catch{return h}}})(Hf)),Hf}var Ny;function sE(){return Ny||(Ny=1,(function(i){const u=ha(),c=Xp(),o=Kd(),s=va(),d=Zp(),h=7973,v=u.getBCHDigit(h);function g(N,A,j){for(let z=1;z<=40;z++)if(A<=i.getCapacity(z,j,N))return z}function x(N,A){return s.getCharCountIndicator(N,A)+4}function S(N,A){let j=0;return N.forEach(function(z){const H=x(z.mode,A);j+=H+z.getBitsLength()}),j}function p(N,A){for(let j=1;j<=40;j++)if(S(N,j)<=i.getCapacity(j,A,s.MIXED))return j}i.from=function(A,j){return d.isValid(A)?parseInt(A,10):j},i.getCapacity=function(A,j,z){if(!d.isValid(A))throw new Error("Invalid QR Code version");typeof z>"u"&&(z=s.BYTE);const H=u.getSymbolTotalCodewords(A),q=c.getTotalCodewordsCount(A,j),G=(H-q)*8;if(z===s.MIXED)return G;const k=G-x(z,A);switch(z){case s.NUMERIC:return Math.floor(k/10*3);case s.ALPHANUMERIC:return Math.floor(k/11*2);case s.KANJI:return Math.floor(k/13);case s.BYTE:default:return Math.floor(k/8)}},i.getBestVersionForData=function(A,j){let z;const H=o.from(j,o.M);if(Array.isArray(A)){if(A.length>1)return p(A,H);if(A.length===0)return 1;z=A[0]}else z=A;return g(z.mode,z.getLength(),H)},i.getEncodedBits=function(A){if(!d.isValid(A)||A<7)throw new Error("Invalid QR Code version");let j=A<<12;for(;u.getBCHDigit(j)-v>=0;)j^=h<=0;)g^=u<0&&(d=this.data.substr(s),h=parseInt(d,10),o.put(h,v*3+1))},Vf=u,Vf}var Qf,wy;function mE(){if(wy)return Qf;wy=1;const i=va(),u=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"," ","$","%","*","+","-",".","/",":"];function c(o){this.mode=i.ALPHANUMERIC,this.data=o}return c.getBitsLength=function(s){return 11*Math.floor(s/2)+6*(s%2)},c.prototype.getLength=function(){return this.data.length},c.prototype.getBitsLength=function(){return c.getBitsLength(this.data.length)},c.prototype.write=function(s){let d;for(d=0;d+2<=this.data.length;d+=2){let h=u.indexOf(this.data[d])*45;h+=u.indexOf(this.data[d+1]),s.put(h,11)}this.data.length%2&&s.put(u.indexOf(this.data[d]),6)},Qf=c,Qf}var Xf,Ty;function hE(){if(Ty)return Xf;Ty=1;const i=va();function u(c){this.mode=i.BYTE,typeof c=="string"?this.data=new TextEncoder().encode(c):this.data=new Uint8Array(c)}return u.getBitsLength=function(o){return o*8},u.prototype.getLength=function(){return this.data.length},u.prototype.getBitsLength=function(){return u.getBitsLength(this.data.length)},u.prototype.write=function(c){for(let o=0,s=this.data.length;o=33088&&d<=40956)d-=33088;else if(d>=57408&&d<=60351)d-=49472;else throw new Error("Invalid SJIS character: "+this.data[s]+` +Make sure your charset is UTF-8`);d=(d>>>8&255)*192+(d&255),o.put(d,13)}},Zf=c,Zf}var Kf={exports:{}},_y;function gE(){return _y||(_y=1,(function(i){var u={single_source_shortest_paths:function(c,o,s){var d={},h={};h[o]=0;var v=u.PriorityQueue.make();v.push(o,0);for(var g,x,S,p,N,A,j,z,H;!v.empty();){g=v.pop(),x=g.value,p=g.cost,N=c[x]||{};for(S in N)N.hasOwnProperty(S)&&(A=N[S],j=p+A,z=h[S],H=typeof h[S]>"u",(H||z>j)&&(h[S]=j,v.push(S,j),d[S]=x))}if(typeof s<"u"&&typeof h[s]>"u"){var q=["Could not find a path from ",o," to ",s,"."].join("");throw new Error(q)}return d},extract_shortest_path_from_predecessor_list:function(c,o){for(var s=[],d=o;d;)s.push(d),c[d],d=c[d];return s.reverse(),s},find_path:function(c,o,s){var d=u.single_source_shortest_paths(c,o,s);return u.extract_shortest_path_from_predecessor_list(d,s)},PriorityQueue:{make:function(c){var o=u.PriorityQueue,s={},d;c=c||{};for(d in o)o.hasOwnProperty(d)&&(s[d]=o[d]);return s.queue=[],s.sorter=c.sorter||o.default_sorter,s},default_sorter:function(c,o){return c.cost-o.cost},push:function(c,o){var s={value:c,cost:o};this.queue.push(s),this.queue.sort(this.sorter)},pop:function(){return this.queue.shift()},empty:function(){return this.queue.length===0}}};i.exports=u})(Kf)),Kf.exports}var Ay;function yE(){return Ay||(Ay=1,(function(i){const u=va(),c=dE(),o=mE(),s=hE(),d=vE(),h=Kp(),v=ha(),g=gE();function x(q){return unescape(encodeURIComponent(q)).length}function S(q,G,k){const V=[];let K;for(;(K=q.exec(k))!==null;)V.push({data:K[0],index:K.index,mode:G,length:K[0].length});return V}function p(q){const G=S(h.NUMERIC,u.NUMERIC,q),k=S(h.ALPHANUMERIC,u.ALPHANUMERIC,q);let V,K;return v.isKanjiModeEnabled()?(V=S(h.BYTE,u.BYTE,q),K=S(h.KANJI,u.KANJI,q)):(V=S(h.BYTE_KANJI,u.BYTE,q),K=[]),G.concat(k,V,K).sort(function(E,R){return E.index-R.index}).map(function(E){return{data:E.data,mode:E.mode,length:E.length}})}function N(q,G){switch(G){case u.NUMERIC:return c.getBitsLength(q);case u.ALPHANUMERIC:return o.getBitsLength(q);case u.KANJI:return d.getBitsLength(q);case u.BYTE:return s.getBitsLength(q)}}function A(q){return q.reduce(function(G,k){const V=G.length-1>=0?G[G.length-1]:null;return V&&V.mode===k.mode?(G[G.length-1].data+=k.data,G):(G.push(k),G)},[])}function j(q){const G=[];for(let k=0;k=0&&ne<=6&&(re===0||re===6)||re>=0&&re<=6&&(ne===0||ne===6)||ne>=2&&ne<=4&&re>=2&&re<=4?_.set(W+ne,P+re,!0,!0):_.set(W+ne,P+re,!1,!0))}}function j(_){const E=_.size;for(let R=8;R>ne&1)===1,_.set(te,W,P,!0),_.set(W,te,P,!0)}function q(_,E,R){const Q=_.size,te=S.getEncodedBits(E,R);let W,P;for(W=0;W<15;W++)P=(te>>W&1)===1,W<6?_.set(W,8,P,!0):W<8?_.set(W+1,8,P,!0):_.set(Q-15+W,8,P,!0),W<8?_.set(8,Q-W-1,P,!0):W<9?_.set(8,15-W-1+1,P,!0):_.set(8,15-W-1,P,!0);_.set(Q-8,8,1,!0)}function G(_,E){const R=_.size;let Q=-1,te=R-1,W=7,P=0;for(let ne=R-1;ne>0;ne-=2)for(ne===6&&ne--;;){for(let re=0;re<2;re++)if(!_.isReserved(te,ne-re)){let ge=!1;P>>W&1)===1),_.set(te,ne-re,ge),W--,W===-1&&(P++,W=7)}if(te+=Q,te<0||R<=te){te-=Q,Q=-Q;break}}}function k(_,E,R){const Q=new c;R.forEach(function(re){Q.put(re.mode.bit,4),Q.put(re.getLength(),p.getCharCountIndicator(re.mode,_)),re.write(Q)});const te=i.getSymbolTotalCodewords(_),W=v.getTotalCodewordsCount(_,E),P=(te-W)*8;for(Q.getLengthInBits()+4<=P&&Q.put(0,4);Q.getLengthInBits()%8!==0;)Q.putBit(0);const ne=(P-Q.getLengthInBits())/8;for(let re=0;re=7&&H(re,E),G(re,P),isNaN(Q)&&(Q=h.getBestMask(re,q.bind(null,re,R))),h.applyMask(Q,re),q(re,R,Q),{modules:re,version:E,errorCorrectionLevel:R,maskPattern:Q,segments:te}}return Af.create=function(E,R){if(typeof E>"u"||E==="")throw new Error("No input text");let Q=u.M,te,W;return typeof R<"u"&&(Q=u.from(R.errorCorrectionLevel,u.M),te=x.from(R.version),W=h.from(R.maskPattern),R.toSJISFunc&&i.setToSJISFunction(R.toSJISFunc)),K(E,te,Q,W)},Af}var If={},Jf={},My;function Ip(){return My||(My=1,(function(i){function u(c){if(typeof c=="number"&&(c=c.toString()),typeof c!="string")throw new Error("Color should be defined as hex string");let o=c.slice().replace("#","").split("");if(o.length<3||o.length===5||o.length>8)throw new Error("Invalid hex color: "+c);(o.length===3||o.length===4)&&(o=Array.prototype.concat.apply([],o.map(function(d){return[d,d]}))),o.length===6&&o.push("F","F");const s=parseInt(o.join(""),16);return{r:s>>24&255,g:s>>16&255,b:s>>8&255,a:s&255,hex:"#"+o.slice(0,6).join("")}}i.getOptions=function(o){o||(o={}),o.color||(o.color={});const s=typeof o.margin>"u"||o.margin===null||o.margin<0?4:o.margin,d=o.width&&o.width>=21?o.width:void 0,h=o.scale||4;return{width:d,scale:d?4:h,margin:s,color:{dark:u(o.color.dark||"#000000ff"),light:u(o.color.light||"#ffffffff")},type:o.type,rendererOpts:o.rendererOpts||{}}},i.getScale=function(o,s){return s.width&&s.width>=o+s.margin*2?s.width/(o+s.margin*2):s.scale},i.getImageWidth=function(o,s){const d=i.getScale(o,s);return Math.floor((o+s.margin*2)*d)},i.qrToImageData=function(o,s,d){const h=s.modules.size,v=s.modules.data,g=i.getScale(h,d),x=Math.floor((h+d.margin*2)*g),S=d.margin*g,p=[d.color.light,d.color.dark];for(let N=0;N=S&&A>=S&&N"u"&&(!h||!h.getContext)&&(g=h,h=void 0),h||(x=o()),g=u.getOptions(g);const S=u.getImageWidth(d.modules.size,g),p=x.getContext("2d"),N=p.createImageData(S,S);return u.qrToImageData(N.data,d,g),c(p,x,S),p.putImageData(N,0,0),x},i.renderToDataURL=function(d,h,v){let g=v;typeof g>"u"&&(!h||!h.getContext)&&(g=h,h=void 0),g||(g={});const x=i.render(d,h,g),S=g.type||"image/png",p=g.rendererOpts||{};return x.toDataURL(S,p.quality)}})(If)),If}var Ff={},zy;function xE(){if(zy)return Ff;zy=1;const i=Ip();function u(s,d){const h=s.a/255,v=d+'="'+s.hex+'"';return h<1?v+" "+d+'-opacity="'+h.toFixed(2).slice(1)+'"':v}function c(s,d,h){let v=s+d;return typeof h<"u"&&(v+=" "+h),v}function o(s,d,h){let v="",g=0,x=!1,S=0;for(let p=0;p0&&N>0&&s[p-1]||(v+=x?c("M",N+h,.5+A+h):c("m",g,0),g=0,x=!1),N+1':"",A="',j='viewBox="0 0 '+p+" "+p+'"',H=''+N+A+` +`;return typeof v=="function"&&v(null,H),H},Ff}var Dy;function SE(){if(Dy)return si;Dy=1;const i=tE(),u=pE(),c=bE(),o=xE();function s(d,h,v,g,x){const S=[].slice.call(arguments,1),p=S.length,N=typeof S[p-1]=="function";if(!N&&!i())throw new Error("Callback required as last argument");if(N){if(p<2)throw new Error("Too few arguments provided");p===2?(x=v,v=h,h=g=void 0):p===3&&(h.getContext&&typeof x>"u"?(x=g,g=void 0):(x=g,g=v,v=h,h=void 0))}else{if(p<1)throw new Error("Too few arguments provided");return p===1?(v=h,h=g=void 0):p===2&&!h.getContext&&(g=v,v=h,h=void 0),new Promise(function(A,j){try{const z=u.create(v,g);A(d(z,h,g))}catch(z){j(z)}})}try{const A=u.create(v,g);x(null,d(A,h,g))}catch(A){x(A)}}return si.create=u.create,si.toCanvas=s.bind(null,c.render),si.toDataURL=s.bind(null,c.renderToDataURL),si.toString=s.bind(null,function(d,h,v){return o.render(d,v)}),si}var NE=SE();const Pf=gd(NE),CE=()=>{const{showWechatModal:i,setShowWechatModal:u,showToast:c,fetchTelemetry:o}=Un(),[s,d]=b.useState(null),[h,v]=b.useState(""),[g,x]=b.useState(!1),[S,p]=b.useState(""),[N,A]=b.useState(!1),j=async()=>{var k;x(!0);try{const K=await(await fetch("/api/clawbot/qrcode",{method:"POST"})).json();d(K);const _=(k=K==null?void 0:K.login)==null?void 0:k.qrcode_url;if(_){const E=await Pf.toDataURL(_,{width:240,margin:2,color:{dark:"#09090b",light:"#ffffff"}});v(E)}}catch{c("获取微信 ClawBot 二维码失败")}finally{x(!1)}};b.useEffect(()=>{if(!i)return;let k=!1;(async()=>{var _,E,R;try{const te=await(await fetch("/api/clawbot/status")).json();if(k)return;if(d(te),!te.connected&&(!((_=te.login)!=null&&_.active)||!((E=te.login)!=null&&E.qrcode_url)))await j();else if((R=te.login)!=null&&R.qrcode_url){const W=await Pf.toDataURL(te.login.qrcode_url,{width:240,margin:2,color:{dark:"#09090b",light:"#ffffff"}});k||v(W)}}catch{}})();const K=setInterval(async()=>{var _;try{const E=await fetch("/api/clawbot/status");if(!E.ok)return;const R=await E.json();if(k)return;if(d(R),(_=R.login)!=null&&_.qrcode_url){const Q=await Pf.toDataURL(R.login.qrcode_url,{width:240,margin:2,color:{dark:"#09090b",light:"#ffffff"}});k||v(Q)}}catch{}},1500);return()=>{k=!0,clearInterval(K)}},[i]);const z=async k=>{if(k.preventDefault(),!!S.trim()){A(!0);try{const K=await(await fetch("/api/clawbot/verify",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({code:S.trim()})})).json();d(K),p(""),c("配对码已提交,正在等待微信验证...")}catch{c("配对码提交失败")}finally{A(!1)}}},H=async()=>{try{const V=await(await fetch("/api/clawbot/disconnect",{method:"POST"})).json();d(V),v(""),o(),c("已断开微信 ClawBot 连接")}catch{c("断开失败")}},q=!!(s!=null&&s.connected),G=s==null?void 0:s.login;return f.jsx(Gd,{open:i,onOpenChange:u,children:f.jsxs(wo,{className:"max-w-lg p-6 space-y-5",children:[f.jsx("div",{className:"flex items-start justify-between gap-3 border-b hl-border pb-4",children:f.jsxs("div",{className:"flex items-center gap-3",children:[f.jsx("div",{className:"w-10 h-10 rounded-xl flex items-center justify-center border hl-border shrink-0",style:{backgroundColor:"rgba(16, 185, 129, 0.14)",color:"var(--success)"},children:f.jsx(pd,{className:"w-5 h-5"})}),f.jsxs("div",{children:[f.jsxs("div",{className:"flex items-center gap-2",children:[f.jsx(To,{className:"text-sm font-bold",children:"微信 ClawBot · M6 Mac mini 直连通道"}),f.jsx(rt,{variant:q?"success":"accent",children:q?"已连接在线":"扫码绑定"})]}),f.jsx(jo,{className:"text-xs font-mono-num mt-0.5",children:"@tencent-weixin/openclaw-weixin · ilinkai.weixin.qq.com"})]})]})}),q?f.jsxs("div",{className:"space-y-4",children:[f.jsxs("div",{className:"p-4 rounded-xl border flex items-center justify-between",style:{backgroundColor:"var(--success-soft)",borderColor:"rgba(16, 185, 129, 0.3)"},children:[f.jsxs("div",{className:"flex items-center gap-3",children:[f.jsx(SS,{className:"w-5 h-5 shrink-0",style:{color:"var(--success)"}}),f.jsxs("div",{children:[f.jsx("div",{className:"text-xs font-bold",children:"微信 ClawBot 长轮询守护线程运行中"}),f.jsxs("div",{className:"text-[11px] font-mono-num mt-0.5",style:{color:"var(--text-muted)"},children:["Bot ID: ",s==null?void 0:s.bot_id," · 累计收发: ",(s==null?void 0:s.msg_count)??0," 条"]})]})]}),f.jsxs(Oe,{variant:"outline",size:"sm",onClick:H,children:[f.jsx(uN,{className:"w-3.5 h-3.5"}),f.jsx("span",{children:"重新绑定"})]})]}),f.jsxs("div",{className:"p-4 rounded-xl hl-muted border hl-border space-y-2.5 text-xs",children:[f.jsx("div",{className:"font-semibold",children:"📱 现在打开手机微信「微信 ClawBot」可直接发送:"}),f.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-2 font-mono-num text-[11px]",children:[f.jsxs("div",{className:"p-2 rounded hl-card",children:[f.jsx("span",{style:{color:"var(--accent)"},children:"状态"})," · 查看 M6 & 极空间遥测"]}),f.jsxs("div",{className:"p-2 rounded hl-card",children:[f.jsx("span",{style:{color:"var(--accent)"},children:"备份"})," · 立即打包备份至 20TB NAS"]}),f.jsxs("div",{className:"p-2 rounded hl-card",children:[f.jsx("span",{style:{color:"var(--accent)"},children:"屏幕"})," · 截取 AGY 终端实时画面"]}),f.jsxs("div",{className:"p-2 rounded hl-card",children:[f.jsx("span",{style:{color:"var(--accent)"},children:"$ df -h"})," · 执行任意 Mac mini 命令"]}),f.jsxs("div",{className:"p-2 rounded hl-card sm:col-span-2",children:[f.jsx("span",{style:{color:"var(--accent)"},children:"> 你好"})," 或直接发任意问题 · 注入 AGY 终端或调用 AI 回答"]})]})]})]}):f.jsxs("div",{className:"space-y-4",children:[f.jsxs("div",{className:"flex flex-col items-center justify-center p-5 rounded-xl hl-muted border hl-border space-y-3",children:[h?f.jsx("div",{className:"p-3 bg-white rounded-xl shadow-md border",children:f.jsx("img",{src:h,alt:"WeChat ClawBot QR Code",className:"w-48 h-48 block"})}):f.jsx("div",{className:"w-48 h-48 rounded-xl hl-card flex items-center justify-center text-xs font-mono-num",children:g?"正在向微信申请二维码...":"点击下方按钮生成二维码"}),f.jsxs("div",{className:"flex items-center gap-2 text-xs font-medium text-center",children:[f.jsx(tN,{className:"w-4 h-4 shrink-0",style:{color:"var(--accent)"}}),f.jsx("span",{children:(G==null?void 0:G.message)||"请使用手机微信扫描上方二维码启用 ClawBot"})]}),f.jsxs("div",{className:"flex items-center gap-2",children:[f.jsxs(Oe,{variant:"outline",size:"sm",onClick:j,disabled:g,children:[f.jsx(Yy,{className:"w-3.5 h-3.5"}),f.jsx("span",{children:g?"刷新中...":"刷新二维码"})]}),(G==null?void 0:G.qrcode_url)&&f.jsx(Oe,{variant:"ghost",size:"sm",asChild:!0,children:f.jsxs("a",{href:G.qrcode_url,target:"_blank",rel:"noopener noreferrer",className:"font-mono-num",children:[f.jsx(KS,{className:"w-3.5 h-3.5"}),f.jsx("span",{children:"打开备用链接 ↗"})]})})]})]}),(G==null?void 0:G.status)==="need_verifycode"&&f.jsxs("form",{onSubmit:z,className:"p-4 rounded-xl border space-y-2.5",style:{backgroundColor:"var(--accent-soft)",borderColor:"var(--accent)"},children:[f.jsx("label",{className:"block text-xs font-bold",children:"🔢 手机微信上显示了配对数字,请在下方输入:"}),f.jsxs("div",{className:"flex items-center gap-2",children:[f.jsx(Yd,{type:"text",value:S,onChange:k=>p(k.target.value),placeholder:"输入手机微信显示的 6 位数字...",className:"font-mono-num",autoFocus:!0}),f.jsxs(Oe,{type:"submit",disabled:N,children:[f.jsx(PS,{className:"w-3.5 h-3.5"}),f.jsx("span",{children:"验证"})]})]})]})]}),f.jsx("div",{className:"flex items-center justify-end pt-1",children:f.jsx(Oe,{variant:"outline",onClick:()=>u(!1),children:"关闭窗口"})})]})})},EE={light:{id:"light",name:"Shadcn Clean Light (浅色纯净)",description:"对标 Apple / Stripe / Linear 浅色日光模式,高对比深灰文字配纯净白卡片与冷灰微边框。",tokens:{"--bg-page":"#f8fafc","--bg-card":"#ffffff","--bg-widget":"#f8fafc","--bg-muted":"#f1f5f9","--bg-hover":"#ffffff","--text-main":"#0f172a","--text-muted":"#64748b","--text-subtle":"#94a3b8","--border-color":"#e2e8f0","--border-hover":"#cbd5e1","--primary":"#0f172a","--primary-fg":"#ffffff","--accent":"#2563eb","--accent-soft":"rgba(37, 99, 235, 0.08)","--success":"#10b981","--success-soft":"rgba(16, 185, 129, 0.10)"}},dark:{id:"dark",name:"Catppuccin / Linear Dark (深色极客)",description:"融合 Catppuccin Mocha 与 Linear 暗黑规范,柔和护眼的深邃蓝黑基底配高辨识度状态色。",tokens:{"--bg-page":"#11111b","--bg-card":"#1e1e2e","--bg-widget":"#181825","--bg-muted":"#313244","--bg-hover":"#242438","--text-main":"#cdd6f4","--text-muted":"#a6adc8","--text-subtle":"#6c7086","--border-color":"#313244","--border-hover":"#45475a","--primary":"#cba6f7","--primary-fg":"#11111b","--accent":"#89b4fa","--accent-soft":"rgba(137, 180, 250, 0.15)","--success":"#a6e3a1","--success-soft":"rgba(166, 227, 161, 0.15)"}}},xo={"homepage-3col":{id:"homepage-3col",name:"Homepage 经典三列矩阵 (3-Column Grid)",description:"gethomepage.dev 标志性对称 3 列分组卡片,底部内嵌 3 格实时遥测单元。",gridClass:"grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4"},"bento-split":{id:"bento-split",name:"Shadcn 双列宽屏卡片 (2-Column Wide Bento)",description:"适合大字号阅读的 2 列宽体卡片布局,留白更充裕。",gridClass:"grid-cols-1 lg:grid-cols-2 gap-5"},"compact-2col":{id:"compact-2col",name:"高密度四列紧凑矩阵 (4-Column Dense)",description:"适合超宽显示器的一屏高密度 4 列布局。",gridClass:"grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-3.5"}},wE=()=>{const[i,u]=b.useState("form-inputs"),{theme:c,resolvedTheme:o,layoutPreset:s,setTheme:d,setLayoutPreset:h,setViewMode:v,setShowCmdPalette:g,telemetry:x,showToast:S}=Un(),[p,N]=b.useState(!0),[A,j]=b.useState("drawer"),[z,H]=b.useState(""),[q,G]=b.useState("192.168.31.164"),[k,V]=b.useState(!0),K=[{id:"layout-architecture",group:"FOUNDATIONS / 架构与布局",title:"01. AppShell 双层顶栏与网格布局",icon:f.jsx(XS,{className:"w-3.5 h-3.5"})},{id:"theme-tokens",group:"FOUNDATIONS / 架构与布局",title:"02. 双主题色板与自动切换规范",icon:f.jsx(VS,{className:"w-3.5 h-3.5"})},{id:"form-inputs",group:"SHADCN / RADIX UI 组件",title:"03. shadcn/ui + Radix 原语与认证弹窗",icon:f.jsx(U0,{className:"w-3.5 h-3.5"})},{id:"service-card",group:"SHADCN / RADIX UI 组件",title:"04. ServiceCard 内联遥测卡片",icon:f.jsx(Gy,{className:"w-3.5 h-3.5"})},{id:"ssh-shelf",group:"SHADCN / RADIX UI 组件",title:"05. SshShelf 快捷指令栏",icon:f.jsx(yr,{className:"w-3.5 h-3.5"})}];return f.jsx("div",{className:"flex-1 max-w-7xl w-full mx-auto px-4 sm:px-6 lg:px-8 py-6",children:f.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-4 gap-6 items-start",children:[f.jsxs(an,{className:"p-4 space-y-4 lg:sticky lg:top-20",children:[f.jsxs("div",{className:"flex items-center justify-between border-b hl-border pb-3",children:[f.jsxs("div",{className:"flex items-center gap-2",children:[f.jsx(Hy,{className:"w-4 h-4",style:{color:"var(--accent)"}}),f.jsx("span",{className:"text-xs font-bold uppercase tracking-wider",children:"shadcn/ui 组件库"})]}),f.jsx(rt,{variant:"accent",children:"Radix + cmdk"})]}),f.jsx("div",{className:"space-y-1",children:K.map(_=>f.jsxs("button",{onClick:()=>u(_.id),className:"w-full px-3 py-2 rounded-lg text-left text-xs font-medium flex items-center gap-2.5 transition-all cursor-pointer",style:i===_.id?{backgroundColor:"var(--accent-soft)",color:"var(--accent)"}:{color:"var(--text-muted)"},children:[_.icon,f.jsx("span",{className:"truncate",children:_.title})]},_.id))}),f.jsxs("div",{className:"pt-3 border-t hl-border space-y-2 text-xs",children:[f.jsx("div",{className:"text-[11px] font-semibold",style:{color:"var(--text-muted)"},children:"全局外观状态预览 (@radix-ui/react-tabs)"}),f.jsx(yo,{value:c,onValueChange:_=>d(_),children:f.jsxs(pr,{className:"w-full grid grid-cols-3",children:[f.jsx(Dn,{value:"system",children:"自动"}),f.jsx(Dn,{value:"light",children:"浅色"}),f.jsx(Dn,{value:"dark",children:"深色"})]})}),f.jsx(Oe,{onClick:()=>v("dashboard"),className:"w-full mt-2",children:"返回中控台主页"})]})]}),f.jsxs("div",{className:"lg:col-span-3 space-y-6",children:[i==="layout-architecture"&&f.jsx("div",{className:"space-y-6",children:f.jsxs(an,{className:"p-6 space-y-4",children:[f.jsx("div",{className:"flex items-center justify-between border-b hl-border pb-4",children:f.jsxs("div",{children:[f.jsx("span",{className:"text-[11px] font-mono-num uppercase tracking-wider",style:{color:"var(--accent)"},children:"Foundations / AppShell Layout"}),f.jsx("h2",{className:"text-lg font-bold mt-0.5",children:"标准双层顶栏架构 (Two-Tier AppShell) & 响应式网格切换"})]})}),f.jsxs("p",{className:"text-xs leading-relaxed",style:{color:"var(--text-muted)"},children:["参考 ",f.jsx("strong",{children:"Vercel Geist / shadcn/ui Dashboard-01 / GitHub AppShell"})," ","标准规范,将原本容易挤压折行的单层顶栏拆分为职责清晰的双层结构:"]}),f.jsxs("div",{className:"p-4 rounded-xl hl-muted border hl-border space-y-2.5 font-mono-num text-xs",children:[f.jsxs("div",{className:"p-3 rounded-lg hl-card flex items-center justify-between",children:[f.jsx("span",{children:"[左] 🍎 HomeLab · Radix Tabs 切换 (中控台 / Storybook)"}),f.jsx("span",{style:{color:"var(--accent)"},children:"[最右固定] 🔍 搜索 ⌘K · >_ AGY 终端 · ☀️/🌙 主题切换"})]}),f.jsxs("div",{className:"p-3 rounded-lg hl-card flex items-center justify-between",children:[f.jsx("span",{style:{color:"var(--success)"},children:"[左] 实时硬件遥测条 (M6 CPU · RAM · Z4 20TB · SG 专线)"}),f.jsx("span",{children:"[右对齐] Radix Tabs 路由切换器 (智能路由 / 443 / 10443 / LAN)"})]})]}),f.jsxs("div",{className:"pt-2 space-y-3",children:[f.jsx("div",{className:"text-xs font-semibold",children:"选择主页卡片网格布局预设(点击立即应用到主页):"}),f.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-3.5",children:Object.keys(xo).map(_=>{const E=xo[_],R=s===_;return f.jsxs("div",{onClick:()=>h(_),className:"hl-card hl-card-interactive p-4 cursor-pointer space-y-2",style:R?{borderColor:"var(--accent)"}:{},children:[f.jsxs("div",{className:"flex items-center justify-between",children:[f.jsx("span",{className:"text-xs font-bold",children:E.name}),R&&f.jsx("span",{className:"w-4 h-4 rounded-full flex items-center justify-center",style:{backgroundColor:"var(--accent)",color:"#fff"},children:f.jsx(bS,{className:"w-2.5 h-2.5"})})]}),f.jsx("p",{className:"text-[11px]",style:{color:"var(--text-muted)"},children:E.description}),f.jsx("code",{className:"text-[10px] font-mono-num block pt-1",style:{color:"var(--accent)"},children:E.gridClass})]},_)})})]})]})}),i==="theme-tokens"&&f.jsxs(an,{className:"p-6 space-y-6",children:[f.jsxs("div",{className:"border-b hl-border pb-4 flex items-center justify-between",children:[f.jsxs("div",{children:[f.jsx("span",{className:"text-[11px] font-mono-num uppercase tracking-wider",style:{color:"var(--accent)"},children:"Foundations / Color System"}),f.jsxs("h2",{className:"text-lg font-bold mt-0.5",children:["主流双主题色板规范(当前生效:",o==="dark"?"深色极客":"浅色纯净",")"]})]}),f.jsxs(rt,{variant:"secondary",children:["模式: ",c==="system"?"跟随设备自动切换":"手动锁定"]})]}),f.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-5",children:["light","dark"].map(_=>{const E=EE[_];return f.jsxs("div",{className:"rounded-xl p-5 space-y-4 border",style:{backgroundColor:E.tokens["--bg-page"],color:E.tokens["--text-main"],borderColor:E.tokens["--border-color"]},children:[f.jsxs("div",{className:"flex items-center justify-between border-b pb-3",style:{borderColor:E.tokens["--border-color"]},children:[f.jsxs("div",{children:[f.jsx("div",{className:"text-sm font-bold",children:E.name}),f.jsx("div",{className:"text-xs mt-0.5",style:{color:E.tokens["--text-muted"]},children:E.description})]}),f.jsx("button",{onClick:()=>d(_),className:"px-2.5 py-1 rounded-md text-xs font-mono-num font-semibold cursor-pointer",style:{backgroundColor:E.tokens["--primary"],color:E.tokens["--primary-fg"]},children:"预览此主题"})]}),f.jsx("div",{className:"grid grid-cols-2 gap-2",children:Object.entries(E.tokens).map(([R,Q])=>f.jsxs("div",{className:"p-2 rounded-lg border flex items-center gap-2",style:{backgroundColor:E.tokens["--bg-card"],borderColor:E.tokens["--border-color"]},children:[f.jsx("span",{className:"w-5 h-5 rounded border shrink-0",style:{backgroundColor:Q,borderColor:E.tokens["--border-hover"]}}),f.jsxs("div",{className:"min-w-0",children:[f.jsx("div",{className:"text-[10px] font-mono-num font-semibold truncate",children:R}),f.jsx("div",{className:"text-[10px] font-mono-num truncate",style:{color:E.tokens["--text-muted"]},children:Q})]})]},R))})]},E.id)})})]}),i==="form-inputs"&&f.jsxs(an,{className:"p-6 space-y-6",children:[f.jsxs("div",{className:"border-b hl-border pb-4 flex items-center justify-between",children:[f.jsxs("div",{children:[f.jsx("span",{className:"text-[11px] font-mono-num uppercase tracking-wider",style:{color:"var(--accent)"},children:"src/components/ui/* · Official shadcn/ui + Radix Primitives + cmdk"}),f.jsx("h2",{className:"text-lg font-bold mt-0.5",children:"开源 `shadcn/ui` 组件库(`Input` / `Button` / `Switch` / `Badge` / `CommandDialog` / `AuthGateCard`)"})]}),f.jsx(U0,{className:"w-4 h-4",style:{color:"var(--accent)"}})]}),f.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-6 items-start",children:[f.jsxs("div",{className:"p-5 rounded-xl hl-muted border hl-border space-y-4",children:[f.jsx("div",{className:"text-xs font-bold uppercase tracking-wider",style:{color:"var(--text-muted)"},children:"1. `src/components/ui/*` 标准原语展示"}),f.jsxs("div",{className:"space-y-1.5",children:[f.jsx("label",{className:"block text-xs font-medium",style:{color:"var(--text-muted)"},children:"Button 变体 (`cva` + `@radix-ui/react-slot`)"}),f.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[f.jsx(Oe,{variant:"default",children:"Primary 主按钮"}),f.jsx(Oe,{variant:"outline",children:"Outline 描边"}),f.jsx(Oe,{variant:"secondary",children:"Secondary 次级"}),f.jsx(Oe,{variant:"accent",children:"Accent 高亮"}),f.jsx(Oe,{variant:"ghost",onClick:()=>g(!0),children:"唤起 cmdk 面板 ⌘K"})]})]}),f.jsxs("div",{className:"space-y-1.5",children:[f.jsx("label",{className:"block text-xs font-medium",style:{color:"var(--text-muted)"},children:"Badge 标签与 `@radix-ui/react-switch` 开关"}),f.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-2 p-2.5 rounded-lg hl-card",children:[f.jsxs("div",{className:"flex items-center gap-1.5",children:[f.jsx(rt,{variant:"default",children:"Default"}),f.jsx(rt,{variant:"accent",children:"Radix UI"}),f.jsx(rt,{variant:"success",children:"Online"}),f.jsx(rt,{variant:"outline",children:"v3.2"})]}),f.jsx(bo,{checked:k,onCheckedChange:V})]})]}),f.jsxs("div",{className:"space-y-1.5",children:[f.jsx("label",{className:"block text-xs font-medium",style:{color:"var(--text-muted)"},children:"`InputGroup` 组合输入框"}),f.jsxs(po,{children:[f.jsx(bd,{className:"w-4 h-4 shrink-0",style:{color:"var(--text-subtle)"}}),f.jsx("input",{type:"text",value:z,onChange:_=>H(_.target.value),placeholder:"搜索服务、SSH 指令或节点..."}),f.jsx("kbd",{className:"px-1.5 py-0.5 text-[10px] font-mono-num rounded hl-card border hl-border",style:{color:"var(--text-muted)"},children:"⌘K"})]})]}),f.jsxs("div",{className:"space-y-1.5",children:[f.jsx("label",{className:"block text-xs font-medium",style:{color:"var(--text-muted)"},children:"`Input` 等宽字体输入框"}),f.jsx(Yd,{type:"text",value:q,onChange:_=>G(_.target.value),className:"font-mono-num",placeholder:"192.168.31.164"})]})]}),f.jsx("div",{className:"flex flex-col items-center",children:f.jsx(Zd,{embedded:!0,targetUrl:"https://agy.961504.xyz",onSuccess:()=>S("SSO 认证成功!已签发 30 天全域名通行 Cookie")})})]})]}),i==="service-card"&&f.jsxs(an,{className:"p-6 space-y-6",children:[f.jsxs("div",{className:"border-b hl-border pb-4 flex items-center justify-between",children:[f.jsxs("div",{children:[f.jsx("span",{className:"text-[11px] font-mono-num uppercase tracking-wider",style:{color:"var(--accent)"},children:"Components / ServiceCard"}),f.jsx("h2",{className:"text-lg font-bold mt-0.5",children:"三段式内联遥测卡片 (ServiceCard Interactive Story)"})]}),f.jsx($f,{className:"w-4 h-4",style:{color:"var(--accent)"}})]}),f.jsxs("div",{className:"p-4 rounded-xl hl-muted border hl-border flex flex-wrap items-center gap-6 text-xs",children:[f.jsxs("div",{className:"flex items-center gap-2.5",children:[f.jsx("span",{className:"font-semibold",children:"在线状态 (online):"}),f.jsx(bo,{checked:p,onCheckedChange:N}),f.jsx("span",{className:"font-mono-num",children:p?"true":"false"})]}),f.jsxs("div",{className:"flex items-center gap-2",children:[f.jsx("span",{className:"font-semibold",children:"右上角动作按钮 (actionType):"}),["drawer","backup",void 0].map((_,E)=>f.jsx(Oe,{variant:A===_?"accent":"outline",size:"sm",onClick:()=>j(_),className:"font-mono-num",children:_||"route-badge"},E))]})]}),f.jsx("div",{className:"max-w-md mx-auto py-4",children:f.jsx(Z1,{card:{id:"agy",title:"AGY 云端工作台",subtitle:"agy.961504.xyz · ttyd + tmux",iconUrl:"https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons/png/google-gemini.png",online:p,actionType:A,desc:"M6 Mac mini 上的 24 小时常驻 AI 编程终端,已同步 Google 登录态并锁定新加坡出口,关掉网页后台继续运行。",edgeUrl:"https://agy.961504.xyz",homeUrl:"https://agy.home.961504.xyz:10443",lanUrl:"http://192.168.31.164:7681",stats:[{label:"M6 CPU 负载",value:`${x.mini.cpu_pct}%`},{label:"已用内存",value:`${x.mini.mem_used_gb} / 24 GB`},{label:"tmux 会话",value:"常驻运行中",highlight:!0}]}})})]}),i==="ssh-shelf"&&f.jsxs(an,{className:"p-6 space-y-6",children:[f.jsxs("div",{className:"border-b hl-border pb-4",children:[f.jsx("span",{className:"text-[11px] font-mono-num uppercase tracking-wider",style:{color:"var(--accent)"},children:"Components / SshShelf"}),f.jsx("h2",{className:"text-lg font-bold mt-0.5",children:"底部 SSH 快捷复制与运维操作栏"})]}),f.jsx(K1,{})]})]})]})})},TE={blue:"#3b82f6",violet:"#8b5cf6",teal:"#14b8a6",amber:"#f59e0b"},jE=()=>{const{getEffectiveMode:i,routeMode:u,copyCmd:c,showToast:o,setShowAgyModal:s,setShowWechatModal:d}=Un(),[h,v]=b.useState("native"),[g,x]=b.useState(null),[S,p]=b.useState(!1),[N,A]=b.useState(!1),j=b.useMemo(()=>i(),[i,u]),z=b.useMemo(()=>j==="lan"?"http://192.168.31.164:3080":j==="home10443"?"https://codeg.home.961504.xyz:10443":"https://codeg.961504.xyz",[j]),H=b.useMemo(()=>j==="lan"?"http://192.168.31.164:3005":j==="home10443"?"https://git.home.961504.xyz:10443":"https://git.961504.xyz",[j]),q=b.useCallback(async()=>{p(!0);try{const E=await fetch("/api/agents/overview");if(E.ok){const R=await E.json();x(R)}}catch{}finally{p(!1)}},[]);b.useEffect(()=>{q();const E=setInterval(q,6e3);return()=>clearInterval(E)},[q]);const G=async()=>{A(!0),o("正在将 Gitea 热层仓库与 LFS 大文件归档至极空间 20TB NAS...");try{const R=await(await fetch("/api/action/sync_git_nas",{method:"POST"})).json();o(R.message||"极空间 Git 冷备同步完成"),await q()}catch{o("冷备同步请求失败")}finally{A(!1)}},k=(g==null?void 0:g.codeg.assistants)||[],V=(g==null?void 0:g.gitea.repos)||[],K=(g==null?void 0:g.gitea.cold_bundles)||[],_=(g==null?void 0:g.tmux_windows)||[];return f.jsxs("main",{className:"flex-1 max-w-7xl w-full mx-auto px-4 sm:px-6 lg:px-8 py-6 space-y-6",children:[f.jsxs("div",{className:"flex flex-col md:flex-row md:items-center justify-between gap-4 pb-2 border-b hl-border",children:[f.jsxs("div",{className:"space-y-1",children:[f.jsxs("div",{className:"flex items-center gap-2.5",children:[f.jsxs("h1",{className:"text-lg font-semibold tracking-tight flex items-center gap-2",children:[f.jsx(qy,{className:"w-5 h-5",style:{color:"var(--accent)"}}),f.jsx("span",{children:"Multi-Agent 协同编排与私有 Git 中枢"})]}),f.jsx(rt,{variant:"success",children:"Codeg v0.42 + Gitea v28.3"})]}),f.jsxs("p",{className:"text-xs",style:{color:"var(--text-muted)"},children:["以开源 Codeg (ACP 协议) 为底座、Gitea (Mac SSD 热层 + 极空间 20TB 冷层) 为代码仓库,支持单聊分工角色与"," ",f.jsx("code",{className:"font-mono-num px-1 py-0.5 rounded hl-muted",children:"@点名"})," 跨智能体群聊协作。"]})]}),f.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[f.jsx(yo,{value:h,onValueChange:E=>v(E),children:f.jsxs(pr,{children:[f.jsxs(Dn,{value:"native",children:[f.jsx(Gy,{className:"w-3.5 h-3.5"}),f.jsx("span",{children:"自研编排 & Git 大盘"})]}),f.jsxs(Dn,{value:"embedded",children:[f.jsx($f,{className:"w-3.5 h-3.5"}),f.jsx("span",{children:"内嵌 Codeg 完整画布"})]})]})}),f.jsxs(Oe,{variant:"outline",size:"sm",onClick:()=>window.open(z,"_blank","noopener,noreferrer"),children:[f.jsx(eo,{className:"w-3.5 h-3.5"}),f.jsx("span",{children:"全屏打开 Codeg"})]}),f.jsxs(Oe,{variant:"outline",size:"sm",onClick:()=>window.open(H,"_blank","noopener,noreferrer"),children:[f.jsx(D0,{className:"w-3.5 h-3.5"}),f.jsx("span",{children:"打开 Gitea"})]})]})]}),h==="embedded"?f.jsxs(an,{className:"overflow-hidden",children:[f.jsxs("div",{className:"px-4 py-2.5 border-b hl-border flex items-center justify-between text-xs",style:{backgroundColor:"var(--bg-muted)"},children:[f.jsxs("div",{className:"flex items-center gap-2",children:[f.jsx("span",{className:"w-2 h-2 rounded-full",style:{backgroundColor:"var(--success)"}}),f.jsx("span",{className:"font-medium",children:"Codeg 原生多智能体工作台 (已注入 SSO 免密凭证)"}),f.jsx("span",{className:"font-mono-num",style:{color:"var(--text-muted)"},children:z})]}),f.jsx("div",{className:"flex items-center gap-2",children:f.jsxs(Oe,{variant:"ghost",size:"sm",onClick:()=>window.open(z,"_blank","noopener,noreferrer"),children:[f.jsx(eo,{className:"w-3.5 h-3.5"}),f.jsx("span",{children:"新标签页全屏"})]})})]}),f.jsx("iframe",{src:z,title:"Codeg Multi-Agent Workspace",className:"w-full border-0",style:{height:"calc(100vh - 220px)",minHeight:"640px"}})]}):f.jsxs("div",{className:"space-y-6",children:[f.jsxs("section",{className:"space-y-3",children:[f.jsxs("div",{className:"flex items-center justify-between",children:[f.jsxs("div",{className:"flex items-center gap-2",children:[f.jsx(fN,{className:"w-4 h-4",style:{color:"var(--accent)"}}),f.jsx("h2",{className:"text-xs font-semibold uppercase tracking-wider",style:{color:"var(--text-muted)"},children:"分工角色会话与 @群聊战队 · Specialist Role Squad (`Google Antigravity` 底座)"})]}),f.jsxs("div",{className:"flex items-center gap-2",children:[f.jsxs(Oe,{variant:"ghost",size:"sm",onClick:q,disabled:S,children:[f.jsx(Yy,{className:`w-3.5 h-3.5 ${S?"animate-spin":""}`}),f.jsx("span",{children:"刷新状态"})]}),f.jsxs(Oe,{variant:"outline",size:"sm",onClick:()=>d(!0),children:[f.jsx(pd,{className:"w-3.5 h-3.5"}),f.jsx("span",{children:"微信入口绑定"})]})]})]}),f.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4",children:k.map(E=>{var Q;const R=TE[((Q=E.avatar)==null?void 0:Q.color)||"blue"]||"#3b82f6";return f.jsxs(an,{className:"p-4 flex flex-col justify-between gap-3",children:[f.jsxs("div",{className:"space-y-2",children:[f.jsxs("div",{className:"flex items-start justify-between gap-2",children:[f.jsxs("div",{className:"flex items-center gap-2.5",children:[f.jsx("div",{className:"w-8 h-8 rounded-lg flex items-center justify-center text-white font-semibold text-sm shrink-0",style:{backgroundColor:R},children:E.name.slice(0,1)}),f.jsxs("div",{children:[f.jsx("div",{className:"font-semibold text-sm flex items-center gap-1.5",children:f.jsxs("span",{children:["@",E.name]})}),f.jsxs("div",{className:"text-[11px] font-mono-num",style:{color:"var(--text-muted)"},children:["CLI: ",E.agent_type==="antigravity"?"Google Antigravity (agy)":E.agent_type]})]})]}),f.jsx(rt,{variant:"success",children:"就绪"})]}),f.jsx("p",{className:"text-xs leading-relaxed",style:{color:"var(--text-muted)"},children:E.description}),f.jsxs("div",{className:"p-2 rounded-md text-[11px] font-mono-num line-clamp-2 hl-muted",style:{color:"var(--text-subtle)"},title:E.instructions,children:["Prompt: ",E.instructions]})]}),f.jsxs("div",{className:"pt-2 border-t hl-border flex items-center gap-2",children:[f.jsx(Oe,{variant:"default",size:"sm",className:"flex-1",onClick:()=>v("embedded"),children:f.jsx("span",{children:"发起单聊"})}),f.jsxs(Oe,{variant:"outline",size:"sm",onClick:()=>c(`@${E.name} `,`群聊点名 @${E.name}`),title:"复制 @点名 指令,可在主会话或群聊中直接委派该角色",children:[f.jsx(z0,{className:"w-3.5 h-3.5"}),f.jsx("span",{children:"@点名"})]})]})]},E.id)})})]}),f.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-3 gap-5",children:[f.jsxs(an,{className:"lg:col-span-2 p-5 space-y-4",children:[f.jsxs(md,{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-2 pb-3 border-b hl-border",children:[f.jsxs("div",{children:[f.jsxs(hd,{className:"flex items-center gap-2",children:[f.jsx(D0,{className:"w-4 h-4",style:{color:"var(--accent)"}}),f.jsx("span",{children:"私有 Git 代码中枢 (Gitea 热冷分层存储架构)"}),f.jsx(rt,{variant:g!=null&&g.gitea.online?"success":"warning",children:g!=null&&g.gitea.online?`在线 · ${g.gitea.latency_ms}ms`:"检测中"})]}),f.jsxs(vd,{className:"mt-1",children:["服务端与活跃索引常驻 M6 Mac mini NVMe SSD,LFS 大文件与全量 ",f.jsx("code",{className:"font-mono-num",children:".bundle"})," 镜像实时归档至极空间 Z4 20TB RAID。"]})]}),f.jsxs("div",{className:"flex items-center gap-2 shrink-0",children:[f.jsxs(Oe,{variant:"outline",size:"sm",onClick:G,disabled:N,children:[f.jsx(vS,{className:`w-3.5 h-3.5 ${N?"animate-spin":""}`}),f.jsx("span",{children:N?"归档中...":"立即同步至极空间冷存"})]}),f.jsxs(Oe,{variant:"default",size:"sm",onClick:()=>window.open(H,"_blank","noopener,noreferrer"),children:[f.jsx(eo,{className:"w-3.5 h-3.5"}),f.jsx("span",{children:"Gitea 控制台"})]})]})]}),f.jsxs(qp,{className:"space-y-4",children:[f.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-3",children:[f.jsxs("div",{className:"p-3 rounded-lg border hl-border hl-muted space-y-1",children:[f.jsxs("div",{className:"flex items-center justify-between text-xs",children:[f.jsx("span",{className:"font-semibold flex items-center gap-1.5",children:"🔥 Mac mini 热存储层 (NVMe SSD)"}),f.jsx(rt,{variant:"default",children:"毫秒级读写"})]}),f.jsx("div",{className:"text-[11px] font-mono-num truncate",style:{color:"var(--text-muted)"},children:(g==null?void 0:g.gitea.hot_path)||"/Users/ixvii0iv/homelab/stacks/git/data"}),f.jsx("div",{className:"text-[11px]",style:{color:"var(--text-subtle)"},children:"承载 SQLite 元数据、活跃 Git 裸仓库与 Agent Worktree 并发合并"})]}),f.jsxs("div",{className:"p-3 rounded-lg border hl-border hl-muted space-y-1",children:[f.jsxs("div",{className:"flex items-center justify-between text-xs",children:[f.jsxs("span",{className:"font-semibold flex items-center gap-1.5",children:[f.jsx(OS,{className:"w-3.5 h-3.5",style:{color:"var(--success)"}}),"🧊 极空间 Z4 冷存储层 (20TB RAID)"]}),f.jsxs(rt,{variant:"success",children:[K.length," 个全量冷备包"]})]}),f.jsx("div",{className:"text-[11px] font-mono-num truncate",style:{color:"var(--text-muted)"},children:(g==null?void 0:g.gitea.cold_path)||"/Users/ixvii0iv/nas/个人空间/Git_Cold_Storage"}),f.jsx("div",{className:"text-[11px]",style:{color:"var(--text-subtle)"},children:"承载 Git LFS 大文件、Release 制品包与自包含 .bundle 离线灾备包"})]})]}),f.jsxs("div",{className:"space-y-2",children:[f.jsxs("div",{className:"text-xs font-medium",style:{color:"var(--text-muted)"},children:["当前托管仓库 (",V.length,")"]}),V.map(E=>f.jsxs("div",{className:"p-3 rounded-lg border hl-border flex flex-col sm:flex-row sm:items-center justify-between gap-3",children:[f.jsxs("div",{className:"space-y-1",children:[f.jsxs("div",{className:"flex items-center gap-2",children:[f.jsx(RS,{className:"w-3.5 h-3.5",style:{color:"var(--accent)"}}),f.jsx("span",{className:"font-semibold text-sm font-mono-num",children:E.name}),f.jsx(rt,{variant:"default",children:E.default_branch}),K.some(R=>R.name.includes(E.name.replace("/","_")))&&f.jsx(rt,{variant:"success",children:"已冷备至 NAS"})]}),f.jsx("p",{className:"text-xs",style:{color:"var(--text-muted)"},children:E.description||"HomeLab 核心基础设施与前端工程仓库"})]}),f.jsxs("div",{className:"flex items-center gap-2 shrink-0",children:[f.jsxs(Oe,{variant:"outline",size:"sm",onClick:()=>c(`git clone ${H}/${E.name}.git`,`克隆 ${E.name}`),children:[f.jsx(z0,{className:"w-3.5 h-3.5"}),f.jsx("span",{children:"复制 Clone"})]}),f.jsxs(Oe,{variant:"outline",size:"sm",onClick:()=>window.open(`${H}/${E.name}`,"_blank","noopener,noreferrer"),children:[f.jsx(eo,{className:"w-3.5 h-3.5"}),f.jsx("span",{children:"查看代码"})]})]})]},E.name))]})]})]}),f.jsxs(an,{className:"p-5 flex flex-col justify-between space-y-4",children:[f.jsxs("div",{className:"space-y-4",children:[f.jsxs(md,{className:"pb-3 border-b hl-border",children:[f.jsxs(hd,{className:"flex items-center justify-between",children:[f.jsxs("span",{className:"flex items-center gap-2",children:[f.jsx(yr,{className:"w-4 h-4",style:{color:"var(--accent)"}}),f.jsx("span",{children:"AGY 原生常驻会话流"})]}),f.jsxs(rt,{variant:"success",children:[_.length||1," 窗口活跃"]})]}),f.jsxs(vd,{className:"mt-1",children:["M6 Mac mini 本机 ",f.jsx("code",{className:"font-mono-num",children:"tmux (agy)"})," 与 Codeg 工作区实时状态。"]})]}),f.jsxs("div",{className:"space-y-2.5",children:[f.jsx("div",{className:"text-xs font-medium",style:{color:"var(--text-muted)"},children:"已挂载 Codeg 工作区目录"}),((g==null?void 0:g.codeg.folders)||[]).map(E=>f.jsxs("div",{className:"p-2.5 rounded-lg border hl-border hl-muted flex items-center justify-between text-xs font-mono-num",children:[f.jsx("span",{className:"truncate",children:E.path}),f.jsx(rt,{variant:"success",children:"已绑定"})]},E.id)),f.jsx("div",{className:"text-xs font-medium pt-2",style:{color:"var(--text-muted)"},children:"Mac mini Tmux 会话窗格"}),_.length>0?_.map(E=>f.jsxs("div",{className:"p-2.5 rounded-lg border hl-border flex items-center justify-between text-xs",children:[f.jsxs("div",{className:"flex items-center gap-2 font-mono-num",children:[f.jsx("span",{className:"w-2 h-2 rounded-full",style:{backgroundColor:E.active?"var(--success)":"var(--text-muted)"}}),f.jsxs("span",{className:"font-medium",children:["#",E.index," ",E.name]})]}),f.jsx(rt,{variant:"default",children:E.command})]},E.index)):f.jsx("div",{className:"p-2.5 rounded-lg border hl-border text-xs font-mono-num",children:"#0 agy (Google Antigravity 常驻守护)"}),K.length>0&&f.jsxs("div",{className:"pt-2 space-y-1.5",children:[f.jsx("div",{className:"text-xs font-medium",style:{color:"var(--text-muted)"},children:"最近极空间 NAS 冷备快照"}),K.map(E=>f.jsxs("div",{className:"p-2 rounded-md hl-muted flex items-center justify-between text-[11px] font-mono-num",children:[f.jsx("span",{className:"truncate",children:E.name}),f.jsxs("span",{style:{color:"var(--success)"},children:[E.size_mb," MB · ",E.mtime.slice(5,16)]})]},E.name))]})]})]}),f.jsxs("div",{className:"pt-3 border-t hl-border flex items-center gap-2",children:[f.jsxs(Oe,{className:"flex-1",onClick:()=>s(!0),children:[f.jsx(yr,{className:"w-3.5 h-3.5"}),f.jsx("span",{children:"唤起 AGY 终端"})]}),f.jsxs(Oe,{variant:"outline",onClick:()=>v("embedded"),children:[f.jsx($f,{className:"w-3.5 h-3.5"}),f.jsx("span",{children:"进入画布"})]})]})]})]})]})]})},_E=()=>{var A;const{telemetry:i,toast:u,viewMode:c,layoutPreset:o,fetchTelemetry:s,setShowCmdPalette:d,getEffectiveMode:h,routeMode:v}=Un(),[g,x]=b.useState(()=>typeof window>"u"?null:new URLSearchParams(window.location.search).get("auth_redirect"));b.useEffect(()=>{s();const j=setInterval(s,3e3),z=H=>{(H.metaKey||H.ctrlKey)&&H.key.toLowerCase()==="k"&&(H.preventDefault(),d(!0))};return window.addEventListener("keydown",z),()=>{clearInterval(j),window.removeEventListener("keydown",z)}},[s,d]);const S=b.useMemo(()=>{const j=h();return j==="lan"?"LAN 局域网极速直连 (192.168.31.x)":j==="home10443"?"10443 家宽公网 HTTPS 直连":"443 免端口 HTTPS 直达 (*.961504.xyz)"},[h,v]),p=((A=xo[o])==null?void 0:A.gridClass)||xo["homepage-3col"].gridClass,N=b.useMemo(()=>{const j=i;return[{title:"核心工作台、多智能体编排与私有代码库",subtitle:"AI Agent Orchestration, Code Hub & Storage",showRouteHint:!0,items:[{id:"codeg",title:"Codeg 多智能体协同工作台",subtitle:"codeg.961504.xyz · ACP 20+ CLI 底座",iconUrl:"https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons/png/github-copilot.png",online:j.services.codeg??!0,desc:"原生聚合 Google Antigravity (agy)、Claude Code、Codex 等 20 种 CLI,支持 4 大分工角色单聊、@点名群聊委派、Git Worktree 待办与无限画布。",edgeUrl:"https://codeg.961504.xyz",homeUrl:"https://codeg.home.961504.xyz:10443",lanUrl:"http://192.168.31.164:3080",stats:[{label:"预设分工角色",value:"4 角色就绪",highlight:!0},{label:"底座引擎",value:"Codeg v0.42.0"},{label:"SSO 免密",value:"Proxy Auth 已注入"}]},{id:"gitea",title:"Gitea 私有代码与冷备中枢",subtitle:"git.961504.xyz · Mac SSD 热层 + NAS 冷层",iconUrl:"https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons/png/gitea.png",online:j.services.gitea??!0,desc:"自托管私有 Git 代码仓库,数据库与活跃索引跑在 M6 Mac mini 本地 SSD,Git LFS 大文件与 .bundle 全量冷备归档于极空间 20TB RAID。",edgeUrl:"https://git.961504.xyz",homeUrl:"https://git.home.961504.xyz:10443",lanUrl:"http://192.168.31.164:3005",stats:[{label:"主仓库",value:"admin/homelab",highlight:!0},{label:"热层介质",value:"M6 NVMe SSD"},{label:"冷存储池",value:"极空间 20TB NAS"}]},{id:"agy",title:"AGY 云端工作台",subtitle:"agy.961504.xyz · ttyd + tmux",iconUrl:"https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons/png/google-gemini.png",online:j.services.agy,actionType:"drawer",desc:"M6 Mac mini 上的 24 小时常驻 AI 编程终端,已同步 Google 登录态并锁定新加坡出口,关掉网页后台继续运行。",edgeUrl:"https://agy.961504.xyz",homeUrl:"https://agy.home.961504.xyz:10443",lanUrl:"http://192.168.31.164:7681",stats:[{label:"M6 CPU 负载",value:`${j.mini.cpu_pct}%`},{label:"已用内存",value:`${j.mini.mem_used_gb} / 24 GB`},{label:"tmux 会话",value:j.mini.agy_tmux?"常驻运行中":"待机",highlight:!0}]},{id:"zspace",title:"极空间 Z4 私有云",subtitle:"192.168.31.185 · 20TB RAID 存储池",iconUrl:"https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons/png/synology-drive.png",online:j.services.nas,desc:"家庭 20TB 大容量存储中心、极影视蓝光影院与手机相册备份,已自动 SMB 挂载至 Mac mini ~/nas。",edgeUrl:"https://z4.home.961504.xyz:10443",homeUrl:"https://z4.home.961504.xyz:10443",lanUrl:"http://192.168.31.185:5055",stats:[{label:"剩余可用",value:`${j.nas.free_tb} TB`,highlight:!0},{label:"已用容量",value:`${j.nas.used_tb} TB (${j.nas.pct}%)`},{label:"SMB 挂载",value:j.nas.mounted?"~/nas 已挂载":"重连中"}]},{id:"vaultwarden",title:"Vaultwarden 密码保险箱",subtitle:"vw.961504.xyz · Bitwarden 兼容",iconUrl:"https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons/png/vaultwarden.png",online:j.services.vaultwarden,actionType:"backup",desc:"自托管全平台加密密码库,支持 iOS / Android / 浏览器插件自动填充,每天凌晨 03:30 自动打包灾备至极空间。",edgeUrl:"https://vw.961504.xyz",homeUrl:"https://vw.home.961504.xyz:10443",lanUrl:"http://192.168.31.164:8222",stats:[{label:"容器状态",value:"Healthy",highlight:!0},{label:"最近极空间灾备",value:j.nas.latest_backup},{label:"Mac SSD 占用",value:`${j.mini.disk_pct}%`}]}]},{title:"网络网关、AI 专线与外部哨兵",subtitle:"Network Gateway & Cloud Edge",showRouteHint:!1,items:[{id:"clash",title:"Mihomo 路由分流面板",subtitle:"192.168.31.1:9999 · ShellCrash",iconUrl:"https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons/png/clash.png",online:j.services.clash,desc:"小米主路由器透明网关控制台,实时监控全屋设备流量、分流规则与狮城 AI 算力专线锁定状态。",edgeUrl:"https://clash.home.961504.xyz:10443/ui/",homeUrl:"https://clash.home.961504.xyz:10443/ui/",lanUrl:"http://192.168.31.1:9999/ui/",stats:[{label:"AI 锁定策略",value:"狮城节点",highlight:!0},{label:"新加坡延迟",value:j.network.sg_delay_ms>0?`${j.network.sg_delay_ms} ms`:"直连"},{label:"固定出口 IP",value:j.network.sg_egress_ip}]},{id:"router",title:"小米主路由器后台",subtitle:"192.168.31.1 · PPPoE 公网网关",iconUrl:"https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons/png/openwrt.png",online:j.services.router,desc:"管理家庭联通公网宽带拨号、DHCP 静态 IP 绑定、10443 与 41641 端口转发及全屋内网 Split-DNS。",edgeUrl:"https://router.home.961504.xyz:10443",homeUrl:"https://router.home.961504.xyz:10443",lanUrl:"http://192.168.31.1",stats:[{label:"联通公网 IPv4",value:j.network.home_wan_ip,highlight:!0},{label:"泛域名 DDNS",value:"*.home.961504.xyz"},{label:"内网网关",value:"192.168.31.1"}]},{id:"uptime",title:"Uptime Kuma 外部哨兵",subtitle:"status.961504.xyz · SG Azure",iconUrl:"https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons/png/uptime-kuma.png",online:j.services.uptime,desc:"独立部署在新加坡 Azure 公有云上的 24 小时外部监控哨兵,通过 Tailscale P2P 专线实时探测家庭服务。",edgeUrl:"https://status.961504.xyz",homeUrl:"https://status.961504.xyz",lanUrl:"https://status.961504.xyz",stats:[{label:"云端公网 IP",value:"104.43.105.243"},{label:"Tailscale 专线",value:"100.115.204.51"},{label:"外部探测状态",value:"100% 在线",highlight:!0}]}]}]},[i]);return f.jsxs("div",{className:"min-h-screen flex flex-col",children:[u&&f.jsxs("div",{className:"fixed bottom-5 right-5 z-50 hl-card px-4 py-3 flex items-center gap-2.5 shadow-2xl",children:[f.jsx("span",{className:"w-2 h-2 rounded-full",style:{backgroundColor:"var(--success)"}}),f.jsx("span",{className:"text-xs font-medium",children:u})]}),f.jsx(rC,{}),c==="storybook"?f.jsx(wE,{}):c==="agents"?f.jsx(jE,{}):f.jsxs("main",{className:"flex-1 max-w-7xl w-full mx-auto px-4 sm:px-6 lg:px-8 py-6 space-y-7",children:[N.map(j=>f.jsxs("section",{className:"space-y-3",children:[f.jsxs("div",{className:"flex items-center justify-between px-0.5",children:[f.jsxs("div",{className:"flex items-center gap-2",children:[f.jsx("h2",{className:"text-xs font-semibold uppercase tracking-wider",style:{color:"var(--text-muted)"},children:j.title}),f.jsxs("span",{className:"text-[11px] font-mono-num",style:{color:"var(--text-subtle)"},children:["· ",j.subtitle]})]}),j.showRouteHint&&f.jsxs("span",{className:"text-[11px] font-mono-num hidden sm:inline",style:{color:"var(--text-subtle)"},children:["当前路由模式: ",S]})]}),f.jsx("div",{className:`grid ${p}`,children:j.items.map(z=>f.jsx(Z1,{card:z},z.id))})]},j.title)),f.jsx(K1,{})]}),f.jsx(G3,{}),f.jsx(eE,{}),f.jsx(CE,{}),g&&f.jsx("div",{className:"fixed inset-0 z-50 bg-black/75 backdrop-blur-sm flex items-center justify-center p-4",children:f.jsx(Zd,{targetUrl:g,onSuccess:()=>{window.location.href=g},onCancel:()=>{x(null),window.history.replaceState({},"","/")}})})]})};tS.createRoot(document.getElementById("root")).render(f.jsx(gr.StrictMode,{children:f.jsx(_E,{})})); diff --git a/stacks/portal/dist/assets/index-YkrrDNrk.css b/stacks/portal/dist/assets/index-YkrrDNrk.css deleted file mode 100644 index 73e2e3e..0000000 --- a/stacks/portal/dist/assets/index-YkrrDNrk.css +++ /dev/null @@ -1 +0,0 @@ -/*! tailwindcss v4.3.5 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:block))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-space-y-reverse:0;--tw-divide-x-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial}}}@layer theme{:root,:host{--font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-md:28rem;--container-lg:32rem;--container-xl:36rem;--container-6xl:72rem;--container-7xl:80rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height: 1.5 ;--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-tight:-.025em;--tracking-wider:.05em;--tracking-widest:.1em;--leading-relaxed:1.625;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--blur-sm:8px;--blur-md:12px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-none{pointer-events:none}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.fixed{position:fixed}.relative{position:relative}.sticky{position:sticky}.inset-0{top:0;right:0;bottom:0;left:0}.top-0{top:0}.top-\[22\%\]{top:22%}.top-\[50\%\]{top:50%}.right-5{right:calc(var(--spacing) * 5)}.bottom-5{bottom:calc(var(--spacing) * 5)}.left-\[50\%\]{left:50%}.z-30{z-index:30}.z-50{z-index:50}.mx-auto{margin-inline:auto}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-2{margin-top:calc(var(--spacing) * 2)}.ml-auto{margin-left:auto}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline-flex{display:inline-flex}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-2{height:calc(var(--spacing) * 2)}.h-2\.5{height:calc(var(--spacing) * 2.5)}.h-3\.5{height:calc(var(--spacing) * 3.5)}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-10{height:calc(var(--spacing) * 10)}.h-14{height:calc(var(--spacing) * 14)}.h-48{height:calc(var(--spacing) * 48)}.h-\[88vh\]{height:88vh}.h-full{height:100%}.max-h-80{max-height:calc(var(--spacing) * 80)}.min-h-screen{min-height:100vh}.w-1\.5{width:calc(var(--spacing) * 1.5)}.w-2{width:calc(var(--spacing) * 2)}.w-2\.5{width:calc(var(--spacing) * 2.5)}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-4{width:calc(var(--spacing) * 4)}.w-5{width:calc(var(--spacing) * 5)}.w-6{width:calc(var(--spacing) * 6)}.w-8{width:calc(var(--spacing) * 8)}.w-9{width:calc(var(--spacing) * 9)}.w-10{width:calc(var(--spacing) * 10)}.w-12{width:calc(var(--spacing) * 12)}.w-48{width:calc(var(--spacing) * 48)}.w-\[1px\]{width:1px}.w-\[95vw\]{width:95vw}.w-full{width:100%}.max-w-6xl{max-width:var(--container-6xl)}.max-w-7xl{max-width:var(--container-7xl)}.max-w-\[260px\]{max-width:260px}.max-w-full{max-width:100%}.max-w-lg{max-width:var(--container-lg)}.max-w-md{max-width:var(--container-md)}.max-w-xl{max-width:var(--container-xl)}.min-w-0{min-width:0}.flex-1{flex:1}.shrink-0{flex-shrink:0}.translate-x-\[-50\%\]{--tw-translate-x:-50%;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-0{--tw-translate-y:0px;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-\[-50\%\]{--tw-translate-y:-50%;translate:var(--tw-translate-x) var(--tw-translate-y)}.cursor-pointer{cursor:pointer}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-1{gap:var(--spacing)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-3\.5{gap:calc(var(--spacing) * 3.5)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-5{gap:calc(var(--spacing) * 5)}.gap-6{gap:calc(var(--spacing) * 6)}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(var(--spacing) * var(--tw-space-y-reverse));margin-block-end:calc(var(--spacing) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-7>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 7) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 7) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-10>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 10) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 10) * calc(1 - var(--tw-space-y-reverse)))}:where(.divide-x>:not(:last-child)){--tw-divide-x-reverse:0;border-inline-style:var(--tw-border-style);border-inline-start-width:calc(1px * var(--tw-divide-x-reverse));border-inline-end-width:calc(1px * calc(1 - var(--tw-divide-x-reverse)))}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-full{border-radius:2147483647px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-xl{border-radius:var(--radius-xl)}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-\[var\(--accent\)\]{border-color:var(--accent)}.bg-\[var\(--accent-soft\)\]{background-color:var(--accent-soft)}.bg-\[var\(--bg-card\)\]{background-color:var(--bg-card)}.bg-\[var\(--primary\)\]{background-color:var(--primary)}.bg-\[var\(--success-soft\)\]{background-color:var(--success-soft)}.bg-black{background-color:var(--color-black)}.bg-black\/70{background-color:#000000b3}@supports (color:color-mix(in lab,red,red)){.bg-black\/70{background-color:color-mix(in oklab,var(--color-black) 70%,transparent)}}.bg-black\/75{background-color:#000000bf}@supports (color:color-mix(in lab,red,red)){.bg-black\/75{background-color:color-mix(in oklab,var(--color-black) 75%,transparent)}}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.object-contain{object-fit:contain}.p-0{padding:0}.p-0\.5{padding:calc(var(--spacing) * .5)}.p-1{padding:var(--spacing)}.p-1\.5{padding:calc(var(--spacing) * 1.5)}.p-2{padding:calc(var(--spacing) * 2)}.p-2\.5{padding:calc(var(--spacing) * 2.5)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.p-6{padding:calc(var(--spacing) * 6)}.px-0\.5{padding-inline:calc(var(--spacing) * .5)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:var(--spacing)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-6{padding-block:calc(var(--spacing) * 6)}.pt-0{padding-top:0}.pt-1{padding-top:var(--spacing)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pb-3{padding-bottom:calc(var(--spacing) * 3)}.pb-4{padding-bottom:calc(var(--spacing) * 4)}.pb-5{padding-bottom:calc(var(--spacing) * 5)}.text-center{text-align:center}.text-left{text-align:left}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.tracking-widest{--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest)}.whitespace-nowrap{white-space:nowrap}.text-\[var\(--accent\)\]{color:var(--accent)}.text-\[var\(--primary-fg\)\]{color:var(--primary-fg)}.text-\[var\(--success\)\]{color:var(--success)}.text-\[var\(--text-main\)\]{color:var(--text-main)}.text-\[var\(--text-muted\)\]{color:var(--text-muted)}.uppercase{text-transform:uppercase}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal, ) var(--tw-slashed-zero, ) var(--tw-numeric-figure, ) var(--tw-numeric-spacing, ) var(--tw-numeric-fraction, )}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xs{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.backdrop-blur-md{--tw-backdrop-blur:blur(var(--blur-md));-webkit-backdrop-filter:var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );backdrop-filter:var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, )}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );backdrop-filter:var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, )}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-200{--tw-duration:.2s;transition-duration:.2s}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}@media(hover:hover){:is(:where(.group):hover .group-hover\:underline){text-decoration-line:underline}}.placeholder\:text-\[var\(--text-subtle\)\]::placeholder{color:var(--text-subtle)}@media(hover:hover){.hover\:bg-\[var\(--bg-muted\)\]:hover{background-color:var(--bg-muted)}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-80:hover{opacity:.8}.hover\:opacity-90:hover{opacity:.9}}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}.data-\[disabled\=true\]\:pointer-events-none[data-disabled=true]{pointer-events:none}.data-\[disabled\=true\]\:opacity-50[data-disabled=true]{opacity:.5}.data-\[selected\=true\]\:bg-\[var\(--bg-muted\)\][data-selected=true]{background-color:var(--bg-muted)}.data-\[selected\=true\]\:text-\[var\(--text-main\)\][data-selected=true]{color:var(--text-main)}.data-\[state\=active\]\:bg-\[var\(--bg-card\)\][data-state=active]{background-color:var(--bg-card)}.data-\[state\=active\]\:text-\[var\(--text-main\)\][data-state=active]{color:var(--text-main)}.data-\[state\=active\]\:shadow-xs[data-state=active]{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.data-\[state\=checked\]\:translate-x-4[data-state=checked]{--tw-translate-x:calc(var(--spacing) * 4);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[state\=checked\]\:border-\[var\(--accent\)\][data-state=checked]{border-color:var(--accent)}.data-\[state\=checked\]\:bg-\[var\(--accent\)\][data-state=checked]{background-color:var(--accent)}.data-\[state\=unchecked\]\:translate-x-0\.5[data-state=unchecked]{--tw-translate-x:calc(var(--spacing) * .5);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[state\=unchecked\]\:border-\[var\(--border-color\)\][data-state=unchecked]{border-color:var(--border-color)}.data-\[state\=unchecked\]\:bg-\[var\(--bg-muted\)\][data-state=unchecked]{background-color:var(--bg-muted)}@media(min-width:40rem){.sm\:col-span-2{grid-column:span 2/span 2}.sm\:inline{display:inline}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:p-5{padding:calc(var(--spacing) * 5)}.sm\:p-8{padding:calc(var(--spacing) * 8)}.sm\:px-6{padding-inline:calc(var(--spacing) * 6)}}@media(min-width:48rem){.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(min-width:64rem){.lg\:sticky{position:sticky}.lg\:top-20{top:calc(var(--spacing) * 20)}.lg\:col-span-3{grid-column:span 3/span 3}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:px-8{padding-inline:calc(var(--spacing) * 8)}}.\[\&_\[cmdk-group-heading\]\]\:px-2\.5 [cmdk-group-heading]{padding-inline:calc(var(--spacing) * 2.5)}.\[\&_\[cmdk-group-heading\]\]\:py-1\.5 [cmdk-group-heading]{padding-block:calc(var(--spacing) * 1.5)}.\[\&_\[cmdk-group-heading\]\]\:text-\[10px\] [cmdk-group-heading]{font-size:10px}.\[\&_\[cmdk-group-heading\]\]\:font-semibold [cmdk-group-heading]{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.\[\&_\[cmdk-group-heading\]\]\:tracking-wider [cmdk-group-heading]{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.\[\&_\[cmdk-group-heading\]\]\:text-\[var\(--text-subtle\)\] [cmdk-group-heading]{color:var(--text-subtle)}.\[\&_\[cmdk-group-heading\]\]\:uppercase [cmdk-group-heading]{text-transform:uppercase}}:root,[data-theme=dark]{--bg-page:#09090b;--bg-card:#121215;--bg-widget:#16161a;--bg-muted:#18181b;--bg-hover:#1c1c21;--text-main:#f4f4f5;--text-muted:#a1a1aa;--text-subtle:#71717a;--border-color:#27272a;--border-subtle:#ffffff0f;--border-hover:#3f3f46;--primary:#fafafa;--primary-fg:#09090b;--accent:#3b82f6;--accent-soft:#3b82f629;--success:#10b981;--success-soft:#10b98124;--card-shadow:0 4px 16px -4px #0000008c}[data-theme=light]{--bg-page:#f8fafc;--bg-card:#fff;--bg-widget:#f8fafc;--bg-muted:#f1f5f9;--bg-hover:#fff;--text-main:#0f172a;--text-muted:#64748b;--text-subtle:#94a3b8;--border-color:#e2e8f0;--border-subtle:#f1f5f9;--border-hover:#cbd5e1;--primary:#0f172a;--primary-fg:#fff;--accent:#2563eb;--accent-soft:#2563eb1f;--success:#10b981;--success-soft:#10b9811a;--card-shadow:0 1px 3px 0 #0f172a0a, 0 1px 2px -1px #0f172a08}body{background-color:var(--bg-page);color:var(--text-main);-webkit-font-smoothing:antialiased;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Microsoft YaHei,sans-serif;transition:background-color .2s,color .2s}input,textarea,select,button{-webkit-appearance:none;-moz-appearance:none;appearance:none;outline:none;font-family:inherit}input:-webkit-autofill{transition:background-color 5000s ease-in-out;-webkit-text-fill-color:var(--text-main)!important;-webkit-box-shadow:0 0 0px 1000px var(--bg-muted) inset!important}input:-webkit-autofill:hover{transition:background-color 5000s ease-in-out;-webkit-text-fill-color:var(--text-main)!important;-webkit-box-shadow:0 0 0px 1000px var(--bg-muted) inset!important}input:-webkit-autofill:focus{transition:background-color 5000s ease-in-out;-webkit-text-fill-color:var(--text-main)!important;-webkit-box-shadow:0 0 0px 1000px var(--bg-muted) inset!important}textarea:-webkit-autofill{transition:background-color 5000s ease-in-out;-webkit-text-fill-color:var(--text-main)!important;-webkit-box-shadow:0 0 0px 1000px var(--bg-muted) inset!important}.hl-input{background-color:var(--bg-muted);width:100%;color:var(--text-main);border:1px solid var(--border-color);border-radius:.625rem;padding:.55rem .75rem;font-size:.8125rem;line-height:1.25rem;transition:border-color .15s,box-shadow .15s,background-color .15s}.hl-input::placeholder{color:var(--text-subtle)}.hl-input:hover{border-color:var(--border-hover)}.hl-input:focus,.hl-input:focus-visible{background-color:var(--bg-card);border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.hl-input-group{background-color:var(--bg-muted);width:100%;color:var(--text-main);border:1px solid var(--border-color);border-radius:.625rem;align-items:center;gap:.5rem;height:2.375rem;padding:0 .75rem;transition:border-color .15s,box-shadow .15s,background-color .15s;display:flex}.hl-input-group:hover{border-color:var(--border-hover)}.hl-input-group:focus-within{background-color:var(--bg-card);border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.hl-input-group input{min-width:0;height:100%;color:var(--text-main);background:0 0;border:0;flex:1;font-size:.8125rem}.hl-input-group input::placeholder{color:var(--text-subtle)}.font-mono-num{font-variant-numeric:tabular-nums;font-family:JetBrains Mono,SF Mono,Menlo,monospace}.hl-card{background-color:var(--bg-card);border:1px solid var(--border-color);box-shadow:var(--card-shadow);border-radius:.75rem;transition:border-color .16s,transform .16s,box-shadow .16s}.hl-card-interactive:hover{border-color:var(--border-hover);background-color:var(--bg-hover);transform:translateY(-1px)}.hl-widget-footer{background-color:var(--bg-widget);border-top:1px solid var(--border-color)}.hl-pill{background-color:var(--bg-card);border:1px solid var(--border-color);border-radius:.5rem}.hl-muted{background-color:var(--bg-muted)}.hl-border{border-color:var(--border-color)}.hl-btn-primary{background-color:var(--primary);color:var(--primary-fg);border-radius:.5rem;font-weight:500;transition:opacity .15s,transform .1s}.hl-btn-primary:hover{opacity:.9}.hl-btn-primary:active{transform:scale(.99)}.hl-btn-outline{background-color:var(--bg-card);color:var(--text-main);border:1px solid var(--border-color);border-radius:.5rem;transition:background-color .15s,border-color .15s}.hl-btn-outline:hover{background-color:var(--bg-muted);border-color:var(--border-hover)}.hl-bar-fill{background-color:var(--accent);transition:width .5s cubic-bezier(.22,1,.36,1)}.hl-bar-fill-green{background-color:var(--success);transition:width .5s cubic-bezier(.22,1,.36,1)}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false} diff --git a/stacks/portal/dist/index.html b/stacks/portal/dist/index.html index 0abf4bc..f199d8a 100644 --- a/stacks/portal/dist/index.html +++ b/stacks/portal/dist/index.html @@ -11,8 +11,8 @@ href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;600&display=swap" rel="stylesheet" /> - - + +
diff --git a/stacks/portal/server.py b/stacks/portal/server.py index 7f80bff..a7e246f 100755 --- a/stacks/portal/server.py +++ b/stacks/portal/server.py @@ -268,24 +268,134 @@ def get_network_and_edge_stats() -> dict: } +def _codeg_call(endpoint: str, payload=None) -> object: + try: + req = urllib.request.Request( + f"http://127.0.0.1:3080/api/{endpoint}", + data=json.dumps(payload or {}).encode("utf-8"), + headers={ + "Authorization": "Bearer homelab2026", + "Content-Type": "application/json", + }, + method="POST", + ) + with urllib.request.urlopen(req, timeout=2.0) as r: + return json.loads(r.read().decode("utf-8")) + except Exception: + return None + + +def get_agents_and_git_overview() -> dict: + codeg_ok, codeg_ms = check_tcp("127.0.0.1", 3080) + gitea_ok, gitea_ms = check_tcp("127.0.0.1", 3005) + + assistants = _codeg_call("assistant_list") if codeg_ok else [] + folders = _codeg_call("list_folders") if codeg_ok else [] + conversations = _codeg_call("list_conversations") if codeg_ok else [] + stats = _codeg_call("get_stats") if codeg_ok else {} + + # Query local Gitea repositories + repos = [] + if gitea_ok: + try: + with urllib.request.urlopen("http://127.0.0.1:3005/api/v1/repos/search?limit=10", timeout=2.0) as r: + rdata = json.loads(r.read().decode("utf-8")) + for item in rdata.get("data", []): + repos.append( + { + "name": item.get("full_name"), + "description": item.get("description", ""), + "default_branch": item.get("default_branch", "main"), + "updated_at": item.get("updated_at", ""), + "size_kb": item.get("size", 0), + "html_url": item.get("html_url", ""), + "clone_url": item.get("clone_url", ""), + "ssh_url": item.get("ssh_url", ""), + } + ) + except Exception: + pass + + # Query active tmux windows in 'agy' session + tmux_windows = [] + try: + out = run_cmd("/opt/homebrew/bin/tmux list-windows -t agy -F '#{window_index}|#{window_name}|#{window_active}|#{pane_current_command}'", timeout=1.5) + for line in out.splitlines(): + parts = line.split("|") + if len(parts) >= 4: + tmux_windows.append( + { + "index": parts[0], + "name": parts[1], + "active": parts[2] == "1", + "command": parts[3], + } + ) + except Exception: + pass + + # Check ZSpace NAS Git Cold Storage bundles + cold_dir = Path("/Users/ixvii0iv/nas/个人空间/Git_Cold_Storage/bundles") + cold_bundles = [] + try: + if cold_dir.exists(): + for f in sorted(cold_dir.glob("*.bundle")): + st = f.stat() + cold_bundles.append( + { + "name": f.name, + "size_mb": round(st.st_size / (1024 * 1024), 2), + "mtime": time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(st.st_mtime)), + } + ) + except Exception: + pass + + return { + "codeg": { + "online": codeg_ok, + "latency_ms": codeg_ms, + "version": "0.42.0", + "assistants": assistants if isinstance(assistants, list) else [], + "folders": folders if isinstance(folders, list) else [], + "conversations": conversations if isinstance(conversations, list) else [], + "stats": stats if isinstance(stats, dict) else {}, + }, + "gitea": { + "online": gitea_ok, + "latency_ms": gitea_ms, + "version": "28.3.0", + "hot_path": "/Users/ixvii0iv/homelab/stacks/git/data", + "cold_path": "/Users/ixvii0iv/nas/个人空间/Git_Cold_Storage", + "repos": repos, + "cold_bundles": cold_bundles, + }, + "tmux_windows": tmux_windows, + } + + def collect_telemetry() -> dict: now = time.time() with _cache_lock: if _cache["data"] and (now - _cache["ts"] < 2.0): return _cache["data"] - with ThreadPoolExecutor(max_workers=4) as pool: + with ThreadPoolExecutor(max_workers=6) as pool: f_mini = pool.submit(get_mac_mini_stats) f_nas = pool.submit(get_nas_stats) f_net = pool.submit(get_network_and_edge_stats) f_agy = pool.submit(check_tcp, "127.0.0.1", 7681) f_vw = pool.submit(check_tcp, "127.0.0.1", 8222) + f_codeg = pool.submit(check_tcp, "127.0.0.1", 3080) + f_gitea = pool.submit(check_tcp, "127.0.0.1", 3005) mini = f_mini.result() nas = f_nas.result() net = f_net.result() agy_ok, _ = f_agy.result() vw_ok, _ = f_vw.result() + codeg_ok, _ = f_codeg.result() + gitea_ok, _ = f_gitea.result() data = { "timestamp": time.strftime("%Y-%m-%d %H:%M:%S"), @@ -294,6 +404,8 @@ def collect_telemetry() -> dict: "network": net, "services": { "agy": agy_ok, + "codeg": codeg_ok, + "gitea": gitea_ok, "vaultwarden": vw_ok, "nas": nas["online"], "clash": net["router_online"], @@ -394,6 +506,11 @@ class PortalHandler(BaseHTTPRequestHandler): self._send_json(clawbot_mgr.get_public_status()) return + # 3c. Agent Orchestrator & Gitea Cold/Hot Storage overview (/api/agents/overview) + if self.path.startswith("/api/agents/overview"): + self._send_json(get_agents_and_git_overview()) + return + # 4. Serve static assets from Vite build output (dist/) if available clean_path = self.path.split("?", 1)[0].lstrip("/") if clean_path and DIST_DIR.exists(): @@ -506,6 +623,10 @@ class PortalHandler(BaseHTTPRequestHandler): _cache["ts"] = 0.0 self._send_json({"ok": True, "message": out or "Cloudflare DDNS 已刷新"}) return + if self.path == "/api/action/sync_git_nas": + out = run_cmd("/Users/ixvii0iv/homelab/scripts/sync-git-to-nas.sh", timeout=20.0) + self._send_json({"ok": True, "message": out or "Git 热层与极空间 20TB 冷备归档已同步"}) + return self._send_json({"ok": False, "message": "Unknown action"}, status=404) diff --git a/stacks/portal/web/src/App.tsx b/stacks/portal/web/src/App.tsx index 711f1c7..94c194b 100644 --- a/stacks/portal/web/src/App.tsx +++ b/stacks/portal/web/src/App.tsx @@ -8,6 +8,7 @@ import { AgyTerminalModal } from './components/AgyTerminalModal'; import { AuthGateCard } from './components/AuthGateModal'; import { WechatClawModal } from './components/WechatClawModal'; import { StorybookWorkbench } from './components/StorybookWorkbench'; +import { AgentOrchestratorWorkbench } from './components/AgentOrchestratorWorkbench'; import { LAYOUT_PRESETS } from './design-system/tokens'; import type { ServiceGroup } from './types/telemetry'; @@ -60,10 +61,42 @@ export const App: React.FC = () => { const t = telemetry; return [ { - title: '核心工作台与私有云存储', - subtitle: 'Core Workbench & Storage', + title: '核心工作台、多智能体编排与私有代码库', + subtitle: 'AI Agent Orchestration, Code Hub & Storage', showRouteHint: true, items: [ + { + id: 'codeg', + title: 'Codeg 多智能体协同工作台', + subtitle: 'codeg.961504.xyz · ACP 20+ CLI 底座', + iconUrl: 'https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons/png/github-copilot.png', + online: t.services.codeg ?? true, + desc: '原生聚合 Google Antigravity (agy)、Claude Code、Codex 等 20 种 CLI,支持 4 大分工角色单聊、@点名群聊委派、Git Worktree 待办与无限画布。', + edgeUrl: 'https://codeg.961504.xyz', + homeUrl: 'https://codeg.home.961504.xyz:10443', + lanUrl: 'http://192.168.31.164:3080', + stats: [ + { label: '预设分工角色', value: '4 角色就绪', highlight: true }, + { label: '底座引擎', value: 'Codeg v0.42.0' }, + { label: 'SSO 免密', value: 'Proxy Auth 已注入' }, + ], + }, + { + id: 'gitea', + title: 'Gitea 私有代码与冷备中枢', + subtitle: 'git.961504.xyz · Mac SSD 热层 + NAS 冷层', + iconUrl: 'https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons/png/gitea.png', + online: t.services.gitea ?? true, + desc: '自托管私有 Git 代码仓库,数据库与活跃索引跑在 M6 Mac mini 本地 SSD,Git LFS 大文件与 .bundle 全量冷备归档于极空间 20TB RAID。', + edgeUrl: 'https://git.961504.xyz', + homeUrl: 'https://git.home.961504.xyz:10443', + lanUrl: 'http://192.168.31.164:3005', + stats: [ + { label: '主仓库', value: 'admin/homelab', highlight: true }, + { label: '热层介质', value: 'M6 NVMe SSD' }, + { label: '冷存储池', value: '极空间 20TB NAS' }, + ], + }, { id: 'agy', title: 'AGY 云端工作台', @@ -194,9 +227,11 @@ export const App: React.FC = () => { {/* 1. Standard Two-Tier AppShell Header & Telemetry Subheader */} - {/* 2. View Switch: Dashboard vs Storybook Workbench */} + {/* 2. View Switch: Dashboard vs Agent Orchestrator vs Storybook Workbench */} {viewMode === 'storybook' ? ( + ) : viewMode === 'agents' ? ( + ) : (
{serviceGroups.map((group) => ( diff --git a/stacks/portal/web/src/components/AgentOrchestratorWorkbench.tsx b/stacks/portal/web/src/components/AgentOrchestratorWorkbench.tsx new file mode 100644 index 0000000..5151633 --- /dev/null +++ b/stacks/portal/web/src/components/AgentOrchestratorWorkbench.tsx @@ -0,0 +1,531 @@ +import React, { useCallback, useEffect, useMemo, useState } from 'react'; +import { + Archive, + Bot, + Copy, + ExternalLink, + FolderGit2, + GitBranch, + HardDrive, + Layers, + MessageSquare, + RefreshCw, + Sparkles, + Terminal, + Users, +} from 'lucide-react'; +import { usePortalStore } from '../store/usePortalStore'; +import { Badge } from './ui/badge'; +import { Button } from './ui/button'; +import { Card, CardContent, CardDescription, CardHeader, CardTitle } from './ui/card'; +import { Tabs, TabsList, TabsTrigger } from './ui/tabs'; + +interface AssistantItem { + id: number; + name: string; + description: string; + agent_type: string; + instructions: string; + avatar?: { kind: string; color?: string }; +} + +interface RepoItem { + name: string; + description: string; + default_branch: string; + updated_at: string; + size_kb: number; + html_url: string; + clone_url: string; + ssh_url: string; +} + +interface ColdBundleItem { + name: string; + size_mb: number; + mtime: string; +} + +interface OverviewData { + codeg: { + online: boolean; + latency_ms: number; + version: string; + assistants: AssistantItem[]; + folders: Array<{ id: number; name: string; path: string }>; + conversations: Array<{ id: number; title: string; agent_type: string; status: string }>; + }; + gitea: { + online: boolean; + latency_ms: number; + version: string; + hot_path: string; + cold_path: string; + repos: RepoItem[]; + cold_bundles: ColdBundleItem[]; + }; + tmux_windows: Array<{ index: string; name: string; active: boolean; command: string }>; +} + +const COLOR_MAP: Record = { + blue: '#3b82f6', + violet: '#8b5cf6', + teal: '#14b8a6', + amber: '#f59e0b', +}; + +export const AgentOrchestratorWorkbench: React.FC = () => { + const { getEffectiveMode, routeMode, copyCmd, showToast, setShowAgyModal, setShowWechatModal } = + usePortalStore(); + const [subTab, setSubTab] = useState<'native' | 'embedded'>('native'); + const [data, setData] = useState(null); + const [loading, setLoading] = useState(false); + const [syncingCold, setSyncingCold] = useState(false); + + const effectiveMode = useMemo(() => getEffectiveMode(), [getEffectiveMode, routeMode]); + + const codegUrl = useMemo(() => { + if (effectiveMode === 'lan') return 'http://192.168.31.164:3080'; + if (effectiveMode === 'home10443') return 'https://codeg.home.961504.xyz:10443'; + return 'https://codeg.961504.xyz'; + }, [effectiveMode]); + + const giteaUrl = useMemo(() => { + if (effectiveMode === 'lan') return 'http://192.168.31.164:3005'; + if (effectiveMode === 'home10443') return 'https://git.home.961504.xyz:10443'; + return 'https://git.961504.xyz'; + }, [effectiveMode]); + + const fetchOverview = useCallback(async () => { + setLoading(true); + try { + const res = await fetch('/api/agents/overview'); + if (res.ok) { + const json = await res.json(); + setData(json); + } + } catch { + // ignore transient network errors + } finally { + setLoading(false); + } + }, []); + + useEffect(() => { + fetchOverview(); + const timer = setInterval(fetchOverview, 6000); + return () => clearInterval(timer); + }, [fetchOverview]); + + const handleSyncCold = async () => { + setSyncingCold(true); + showToast('正在将 Gitea 热层仓库与 LFS 大文件归档至极空间 20TB NAS...'); + try { + const res = await fetch('/api/action/sync_git_nas', { method: 'POST' }); + const d = await res.json(); + showToast(d.message || '极空间 Git 冷备同步完成'); + await fetchOverview(); + } catch { + showToast('冷备同步请求失败'); + } finally { + setSyncingCold(false); + } + }; + + const assistants = data?.codeg.assistants || []; + const repos = data?.gitea.repos || []; + const bundles = data?.gitea.cold_bundles || []; + const tmuxWindows = data?.tmux_windows || []; + + return ( +
+ {/* Top Banner: Architecture Philosophy & Quick Switcher */} +
+
+
+

+ + Multi-Agent 协同编排与私有 Git 中枢 +

+ Codeg v0.42 + Gitea v28.3 +
+

+ 以开源 Codeg (ACP 协议) 为底座、Gitea (Mac SSD 热层 + 极空间 20TB 冷层) 为代码仓库,支持单聊分工角色与{' '} + @点名 跨智能体群聊协作。 +

+
+ +
+ setSubTab(v as 'native' | 'embedded')}> + + + + 自研编排 & Git 大盘 + + + + 内嵌 Codeg 完整画布 + + + + + + +
+
+ + {subTab === 'embedded' ? ( + +
+
+ + Codeg 原生多智能体工作台 (已注入 SSO 免密凭证) + + {codegUrl} + +
+
+ +
+
+