@zhin.js/console 1.0.50 → 1.0.51
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/dist/{index.js → assets/index-DS4RbHWX.js} +1 -1
- package/dist/assets/style-DS-m6WEr.css +3 -0
- package/dist/client.js +4244 -1
- package/dist/index.html +2 -2
- package/dist/radix-ui.js +1261 -1262
- package/dist/react-dom-client.js +2243 -2240
- package/dist/react-dom.js +15 -15
- package/dist/style.css +0 -2
- package/package.json +3 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import*as e from"./react.js";import{PureComponent as t,StrictMode as n,useCallback as r,useEffect as i,useMemo as a,useRef as o,useState as s}from"./react.js";import{createRoot as c}from"./react-dom-client.js";import{Activity as l,AlertCircle as u,AlertTriangle as d,ArrowLeft as f,Bot as p,Box as m,Brain as h,Calendar as g,Check as _,CheckCircle as v,ChevronDown as y,ChevronLeft as b,ChevronRight as x,ChevronUp as S,Circle as C,Clock as w,Code as T,Cpu as E,Database as ee,Eye as te,EyeOff as D,File as ne,FileCode as re,FileText as ie,FileWarning as ae,FolderOpen as oe,FormInput as se,GitBranch as ce,Home as le,Info as ue,Key as de,KeyRound as fe,Layers as pe,List as me,Loader2 as O,Lock as he,LogIn as ge,LogOut as _e,MemoryStick as ve,Menu as ye,MessageSquare as be,Moon as xe,MousePointer as Se,Package as Ce,Pencil as we,Plug as Te,Plus as Ee,QrCode as De,RefreshCw as Oe,Save as ke,Search as Ae,Server as je,Settings as Me,Shield as Ne,Smartphone as Pe,Sun as Fe,Table2 as Ie,Terminal as Le,Trash2 as Re,TrendingUp as ze,Wifi as Be,WifiOff as Ve,Wrench as He,X as Ue,XCircle as We,Zap as Ge}from"./lucide-react.js";import{DynamicRouter as Ke,Link as qe,Outlet as Je,addPage as Ye,cn as k,persistor as Xe,setActiveMenu as Ze,store as Qe,toggleSidebar as $e,useConfig as et,useConfigYaml as tt,useDatabase as nt,useDispatch as rt,useEnvFiles as it,useFiles as at,useSelector as ot,useWebSocket as st}from"./client.js";import{Fragment as A,jsx as j,jsxs as M}from"./react-jsx-runtime.js";import{cva as ct}from"./cva.js";import{Accordion as lt,Checkbox as ut,Dialog as dt,ScrollArea as ft,Select as N,Separator as pt,Switch as mt,Tabs as ht,Tooltip as gt}from"./radix-ui.js";import{useNavigate as _t,useParams as vt}from"./react-router.js";var yt=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),bt=(e=>typeof require<`u`?require:typeof Proxy<`u`?new Proxy(e,{get:(e,t)=>(typeof require<`u`?require:e)[t]}):e)(function(e){if(typeof require<`u`)return require.apply(this,arguments);throw Error('Calling `require` for "'+e+"\" in an environment that doesn't expose the `require` function. See https://rolldown.rs/in-depth/bundling-cjs#require-external-modules for more details.")});(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin===`use-credentials`?t.credentials=`include`:e.crossOrigin===`anonymous`?t.credentials=`omit`:t.credentials=`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var xt=yt((e=>{var t=bt(`./react.js`);typeof Object.is==`function`&&Object.is,t.useSyncExternalStore,t.useRef,t.useEffect,t.useMemo,t.useDebugValue}));yt(((e,t)=>{t.exports=xt()}))();function St(e){e()}function Ct(){let e=null,t=null;return{clear(){e=null,t=null},notify(){St(()=>{let t=e;for(;t;)t.callback(),t=t.next})},get(){let t=[],n=e;for(;n;)t.push(n),n=n.next;return t},subscribe(n){let r=!0,i=t={callback:n,next:null,prev:t};return i.prev?i.prev.next=i:e=i,function(){!r||e===null||(r=!1,i.next?i.next.prev=i.prev:t=i.prev,i.prev?i.prev.next=i.next:e=i.next)}}}}var wt={notify(){},get:()=>[]};function Tt(e,t){let n,r=wt,i=0,a=!1;function o(e){u();let t=r.subscribe(e),n=!1;return()=>{n||(n=!0,t(),d())}}function s(){r.notify()}function c(){m.onStateChange&&m.onStateChange()}function l(){return a}function u(){i++,n||(n=t?t.addNestedSub(c):e.subscribe(c),r=Ct())}function d(){i--,n&&i===0&&(n(),n=void 0,r.clear(),r=wt)}function f(){a||(a=!0,u())}function p(){a&&(a=!1,d())}let m={addNestedSub:o,notifyNestedSubs:s,handleChangeWrapper:c,isSubscribed:l,trySubscribe:f,tryUnsubscribe:p,getListeners:()=>r};return m}var Et=typeof window<`u`&&window.document!==void 0&&window.document.createElement!==void 0,Dt=typeof navigator<`u`&&navigator.product===`ReactNative`,Ot=Et||Dt?e.useLayoutEffect:e.useEffect;Object.prototype;var kt=Symbol.for(`react-redux-context`),At=typeof globalThis<`u`?globalThis:{};function jt(){if(!e.createContext)return{};let t=At[kt]??=new Map,n=t.get(e.createContext);return n||(n=e.createContext(null),t.set(e.createContext,n)),n}var Mt=jt();function Nt(t){let{children:n,context:r,serverState:i,store:a}=t,o=e.useMemo(()=>({store:a,subscription:Tt(a),getServerState:i?()=>i:void 0}),[a,i]),s=e.useMemo(()=>a.getState(),[a]);Ot(()=>{let{subscription:e}=o;return e.onStateChange=e.notifyNestedSubs,e.trySubscribe(),s!==a.getState()&&e.notifyNestedSubs(),()=>{e.tryUnsubscribe(),e.onStateChange=void 0}},[o,s]);let c=r||Mt;return e.createElement(c.Provider,{value:o},n)}var Pt=Nt,Ft={light:{background:`0 0% 100%`,foreground:`240 10% 3.9%`,card:`0 0% 100%`,"card-foreground":`240 10% 3.9%`,popover:`0 0% 100%`,"popover-foreground":`240 10% 3.9%`,primary:`240 5.9% 10%`,"primary-foreground":`0 0% 98%`,secondary:`240 4.8% 95.9%`,"secondary-foreground":`240 5.9% 10%`,muted:`240 4.8% 95.9%`,"muted-foreground":`240 3.8% 46.1%`,accent:`240 4.8% 95.9%`,"accent-foreground":`240 5.9% 10%`,destructive:`0 84.2% 60.2%`,"destructive-foreground":`0 0% 98%`,border:`240 5.9% 90%`,input:`240 5.9% 90%`,ring:`240 5.9% 10%`,radius:`0.5rem`,"chart-1":`240 5.9% 10%`,"chart-2":`240 3.8% 46.1%`,"chart-3":`240 5.9% 90%`,"chart-4":`240 4.8% 95.9%`,"chart-5":`0 0% 100%`,sidebar:`0 0% 98%`,"sidebar-foreground":`240 5.3% 26.1%`,"sidebar-primary":`240 5.9% 10%`,"sidebar-primary-foreground":`0 0% 98%`,"sidebar-accent":`240 4.8% 95.9%`,"sidebar-accent-foreground":`240 5.9% 10%`,"sidebar-border":`220 13% 91%`,"sidebar-ring":`240 5.9% 10%`},dark:{background:`240 10% 3.9%`,foreground:`0 0% 98%`,card:`240 10% 3.9%`,"card-foreground":`0 0% 98%`,popover:`240 10% 3.9%`,"popover-foreground":`0 0% 98%`,primary:`0 0% 98%`,"primary-foreground":`240 5.9% 10%`,secondary:`240 3.7% 15.9%`,"secondary-foreground":`0 0% 98%`,muted:`240 3.7% 15.9%`,"muted-foreground":`240 5% 64.9%`,accent:`240 3.7% 15.9%`,"accent-foreground":`0 0% 98%`,destructive:`0 62.8% 30.6%`,"destructive-foreground":`0 0% 98%`,border:`240 3.7% 15.9%`,input:`240 3.7% 15.9%`,ring:`240 4.9% 83.9%`,radius:`0.5rem`,"chart-1":`0 0% 98%`,"chart-2":`240 5% 64.9%`,"chart-3":`240 3.7% 15.9%`,"chart-4":`240 10% 3.9%`,"chart-5":`240 5.9% 10%`,sidebar:`240 5.9% 10%`,"sidebar-foreground":`240 4.8% 95.9%`,"sidebar-primary":`0 0% 98%`,"sidebar-primary-foreground":`240 5.9% 10%`,"sidebar-accent":`240 3.7% 15.9%`,"sidebar-accent-foreground":`240 4.8% 95.9%`,"sidebar-border":`240 3.7% 15.9%`,"sidebar-ring":`240 4.9% 83.9%`}};function It(e){let t=document.documentElement,n=Ft[e];t.classList.remove(`light`,`dark`),t.classList.add(e),Object.entries(n).forEach(([e,n])=>{t.style.setProperty(`--${e}`,n)}),localStorage.setItem(`theme`,e)}function Lt(){let e=localStorage.getItem(`theme`);return e&&(e===`light`||e===`dark`)?e:window.matchMedia&&window.matchMedia(`(prefers-color-scheme: dark)`).matches?`dark`:`light`}function Rt(){let e=Lt();return It(e),e}function zt(){let[e,t]=s(Lt);return i(()=>{It(e)},[e]),{theme:e,setTheme:t,toggleTheme:()=>{t(e=>e===`light`?`dark`:`light`)}}}function Bt(){let{theme:e,toggleTheme:t}=zt();return j(`button`,{onClick:t,className:`p-2 hover:bg-accent rounded-lg transition-colors text-foreground`,title:e===`light`?`切换到暗色模式`:`切换到亮色模式`,children:j(e===`light`?xe:Fe,{className:`w-5 h-5`})})}var Vt=ct(`inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0`,{variants:{variant:{default:`bg-primary text-primary-foreground shadow hover:bg-primary/90`,destructive:`bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90`,outline:`border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground`,secondary:`bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80`,ghost:`hover:bg-accent hover:text-accent-foreground`,link:`text-primary underline-offset-4 hover:underline`},size:{default:`h-9 px-4 py-2`,sm:`h-8 rounded-md px-3 text-xs`,lg:`h-10 rounded-md px-8`,icon:`h-9 w-9`}},defaultVariants:{variant:`default`,size:`default`}}),P=e.forwardRef(({className:e,variant:t,size:n,...r},i)=>j(`button`,{className:k(Vt({variant:t,size:n,className:e})),ref:i,...r}));P.displayName=`Button`;var F=e.forwardRef(({className:e,type:t,...n},r)=>j(`input`,{type:t,className:k(`flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50`,e),ref:r,...n}));F.displayName=`Input`;var Ht=e.forwardRef(({className:e,children:t,...n},r)=>M(ft.Root,{ref:r,className:k(`relative overflow-hidden`,e),...n,children:[j(ft.Viewport,{className:`h-full w-full rounded-[inherit]`,children:t}),j(Ut,{}),j(ft.Corner,{})]}));Ht.displayName=`ScrollArea`;var Ut=e.forwardRef(({className:e,orientation:t=`vertical`,...n},r)=>j(ft.Scrollbar,{ref:r,orientation:t,className:k(`flex touch-none select-none transition-colors`,t===`vertical`&&`h-full w-2.5 border-l border-l-transparent p-[1px]`,t===`horizontal`&&`h-2.5 flex-col border-t border-t-transparent p-[1px]`,e),...n,children:j(ft.Thumb,{className:`relative flex-1 rounded-full bg-border`})}));Ut.displayName=`ScrollBar`;var Wt=`zhin_api_token`;function Gt(){return localStorage.getItem(Wt)}function Kt(e){localStorage.setItem(Wt,e)}function qt(){localStorage.removeItem(Wt)}function Jt(){return!!localStorage.getItem(Wt)}async function Yt(e,t){let n=Gt(),r=new Headers(t?.headers);n&&r.set(`Authorization`,`Bearer ${n}`);let i=await fetch(e,{...t,headers:r});return i.status===401&&(qt(),window.dispatchEvent(new CustomEvent(`zhin:auth-required`))),i}function Xt(){let e=rt(),t=ot(e=>e.ui.sidebarOpen),n=ot(e=>e.ui.activeMenu),r=ot(e=>e.route.routes),i=a(()=>{let e=r.find(e=>e.key===`dashboard-layout`);return!e||!e.children?[]:e.children.filter(e=>!e.meta?.hideInMenu&&e.key!==`dashboard-layout`).map((e,t)=>({key:e.key||`menu-item-${t}`,title:e.title,index:e.index,icon:e.icon,href:e.path}))},[r]);return M(`div`,{className:`flex h-screen bg-background`,children:[M(`div`,{className:k(`flex flex-col border-r bg-sidebar transition-all duration-300`,t?`w-64`:`w-16`),children:[j(`div`,{className:`p-4 border-b`,children:M(`div`,{className:k(`flex items-center transition-all duration-300`,t?`gap-3`:`justify-center`),children:[j(`div`,{className:`flex items-center justify-center w-9 h-9 min-w-9 rounded-lg bg-foreground text-background font-bold text-lg`,children:`Z`}),t&&M(`div`,{className:`flex flex-col`,children:[j(`span`,{className:`text-base font-semibold`,children:`Zhin.js`}),j(`span`,{className:`text-xs text-muted-foreground`,children:`管理控制台`})]})]})}),j(Ht,{className:`flex-1`,children:j(`div`,{className:`p-2 space-y-1`,children:i.map(r=>{let i=n===r.key;return M(qe,{to:r.href,onClick:()=>e(Ze(r.key)),className:k(`menu-item`,i&&`active`,!t&&`justify-center px-2`),children:[j(`span`,{className:`shrink-0`,children:r.icon}),t&&j(`span`,{className:`truncate`,children:r.title})]},r.key)})})})]}),M(`div`,{className:`flex flex-col flex-1 overflow-hidden`,children:[M(`header`,{className:`flex items-center justify-between h-14 px-4 border-b bg-background/95 backdrop-blur supports-[backdrop-filter]:bg-background/60`,children:[M(`div`,{className:`flex items-center gap-3`,children:[j(P,{variant:`ghost`,size:`icon`,onClick:()=>e($e()),children:j(ye,{className:`h-5 w-5`})}),M(`div`,{className:`flex flex-col`,children:[j(`h2`,{className:`text-sm font-semibold`,children:`控制台`}),j(`span`,{className:`text-xs text-muted-foreground`,children:`欢迎回来`})]})]}),j(`div`,{className:`hidden md:flex flex-1 max-w-md mx-6`,children:M(`div`,{className:`relative w-full`,children:[j(Ae,{className:`absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground`}),j(F,{placeholder:`搜索功能、插件、设置...`,className:`pl-9 bg-muted/50`})]})}),M(`div`,{className:`flex items-center gap-1`,children:[j(Bt,{}),j(P,{variant:`ghost`,size:`icon`,title:`退出登录`,onClick:()=>{qt(),window.dispatchEvent(new CustomEvent(`zhin:auth-required`))},children:j(_e,{className:`h-4 w-4`})})]})]}),j(`main`,{className:`flex-1 overflow-auto`,children:j(`div`,{className:`max-w-7xl mx-auto p-6`,children:j(Je,{})})})]})]})}var I=e.forwardRef(({className:e,...t},n)=>j(`div`,{ref:n,className:k(`rounded-lg border bg-card text-card-foreground shadow-sm`,e),...t}));I.displayName=`Card`;var L=e.forwardRef(({className:e,...t},n)=>j(`div`,{ref:n,className:k(`flex flex-col space-y-1.5 p-6`,e),...t}));L.displayName=`CardHeader`;var R=e.forwardRef(({className:e,...t},n)=>j(`div`,{ref:n,className:k(`text-lg font-semibold leading-none tracking-tight`,e),...t}));R.displayName=`CardTitle`;var Zt=e.forwardRef(({className:e,...t},n)=>j(`div`,{ref:n,className:k(`text-sm text-muted-foreground`,e),...t}));Zt.displayName=`CardDescription`;var z=e.forwardRef(({className:e,...t},n)=>j(`div`,{ref:n,className:k(`p-6 pt-0`,e),...t}));z.displayName=`CardContent`;var Qt=e.forwardRef(({className:e,...t},n)=>j(`div`,{ref:n,className:k(`flex items-center p-6 pt-0`,e),...t}));Qt.displayName=`CardFooter`;var $t=ct(`inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2`,{variants:{variant:{default:`border-transparent bg-primary text-primary-foreground shadow`,secondary:`border-transparent bg-secondary text-secondary-foreground`,destructive:`border-transparent bg-destructive text-destructive-foreground shadow`,outline:`text-foreground`,success:`border-transparent bg-emerald-100 text-emerald-800 dark:bg-emerald-900/30 dark:text-emerald-400`,warning:`border-transparent bg-amber-100 text-amber-800 dark:bg-amber-900/30 dark:text-amber-400`}},defaultVariants:{variant:`default`}});function B({className:e,variant:t,...n}){return j(`div`,{className:k($t({variant:t}),e),...n})}var en=ct(`relative w-full rounded-lg border px-4 py-3 text-sm [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground [&>svg~*]:pl-7`,{variants:{variant:{default:`bg-background text-foreground`,destructive:`border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive`,success:`border-emerald-200 bg-emerald-50 text-emerald-800 dark:border-emerald-800 dark:bg-emerald-950/50 dark:text-emerald-400 [&>svg]:text-emerald-600 dark:[&>svg]:text-emerald-400`,warning:`border-amber-200 bg-amber-50 text-amber-800 dark:border-amber-800 dark:bg-amber-950/50 dark:text-amber-400 [&>svg]:text-amber-600 dark:[&>svg]:text-amber-400`}},defaultVariants:{variant:`default`}}),V=e.forwardRef(({className:e,variant:t,...n},r)=>j(`div`,{ref:r,role:`alert`,className:k(en({variant:t}),e),...n}));V.displayName=`Alert`;var tn=e.forwardRef(({className:e,...t},n)=>j(`h5`,{ref:n,className:k(`mb-1 font-medium leading-none tracking-tight`,e),...t}));tn.displayName=`AlertTitle`;var H=e.forwardRef(({className:e,...t},n)=>j(`div`,{ref:n,className:k(`text-sm [&_p]:leading-relaxed`,e),...t}));H.displayName=`AlertDescription`;function U({className:e,...t}){return j(`div`,{className:k(`animate-pulse rounded-md bg-primary/10`,e),...t})}function nn(){let e=_t(),[t,n]=s(null),[r,a]=s(null),[o,c]=s(!0),[d,f]=s(null);i(()=>{m();let e=setInterval(m,5e3);return()=>clearInterval(e)},[]);let m=async()=>{try{let[e,t]=await Promise.all([Yt(`/api/stats`),Yt(`/api/system/status`)]);if(!e.ok||!t.ok)throw Error(`API 请求失败`);let r=await e.json(),i=await t.json();r.success&&i.success&&(n(r.data),a(i.data),f(null))}catch(e){f(e.message)}finally{c(!1)}},h=e=>`${Math.floor(e/86400)}天 ${Math.floor(e%86400/3600)}小时 ${Math.floor(e%3600/60)}分钟`,g=e=>`${(e/1024/1024).toFixed(2)} MB`;return o?M(`div`,{className:`space-y-6`,children:[M(`div`,{children:[j(U,{className:`h-8 w-48`}),j(U,{className:`h-4 w-64 mt-2`})]}),j(`div`,{className:`grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4`,children:[...[,,,,]].map((e,t)=>j(U,{className:`h-32`},t))})]}):d?j(`div`,{className:`flex items-center justify-center h-full`,children:M(V,{variant:`destructive`,className:`max-w-md`,children:[j(u,{className:`h-4 w-4`}),M(H,{children:[`加载失败: `,d]})]})}):M(`div`,{className:`space-y-6`,children:[M(`div`,{children:[j(`h1`,{className:`text-2xl font-bold tracking-tight`,children:`系统概览`}),j(`p`,{className:`text-muted-foreground`,children:`实时监控您的机器人框架运行状态`})]}),M(`div`,{className:`grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4`,children:[M(I,{children:[M(L,{className:`flex flex-row items-center justify-between pb-2`,children:[j(R,{className:`text-sm font-medium text-muted-foreground`,children:`插件总数`}),j(Ce,{className:`h-4 w-4 text-muted-foreground`})]}),M(z,{children:[j(`div`,{className:`text-3xl font-bold`,children:t?.plugins.total||0}),M(`p`,{className:`text-xs text-muted-foreground mt-1`,children:[j(B,{variant:`secondary`,className:`mr-1`,children:t?.plugins.active||0}),`个活跃`]})]})]}),M(I,{children:[M(L,{className:`flex flex-row items-center justify-between pb-2`,children:[j(R,{className:`text-sm font-medium text-muted-foreground`,children:`机器人`}),j(p,{className:`h-4 w-4 text-muted-foreground`})]}),M(z,{children:[j(`div`,{className:`text-3xl font-bold`,children:t?.bots.total||0}),M(`p`,{className:`text-xs text-muted-foreground mt-1`,children:[j(B,{variant:`success`,className:`mr-1`,children:t?.bots.online||0}),`个在线`]})]})]}),M(I,{children:[M(L,{className:`flex flex-row items-center justify-between pb-2`,children:[j(R,{className:`text-sm font-medium text-muted-foreground`,children:`命令数量`}),j(l,{className:`h-4 w-4 text-muted-foreground`})]}),M(z,{children:[j(`div`,{className:`text-3xl font-bold`,children:t?.commands||0}),j(`p`,{className:`text-xs text-muted-foreground mt-1`,children:`可用命令`})]})]}),M(I,{children:[M(L,{className:`flex flex-row items-center justify-between pb-2`,children:[j(R,{className:`text-sm font-medium text-muted-foreground`,children:`组件数量`}),j(ze,{className:`h-4 w-4 text-muted-foreground`})]}),M(z,{children:[j(`div`,{className:`text-3xl font-bold`,children:t?.components||0}),j(`p`,{className:`text-xs text-muted-foreground mt-1`,children:`已注册组件`})]})]})]}),M(`div`,{className:`grid grid-cols-1 md:grid-cols-2 gap-4`,children:[M(I,{children:[M(L,{children:[j(R,{children:`系统信息`}),j(Zt,{children:`服务器运行状态`})]}),M(z,{className:`space-y-3`,children:[M(`div`,{className:`flex justify-between items-center`,children:[M(`div`,{className:`flex items-center gap-2 text-sm`,children:[j(w,{className:`h-4 w-4 text-muted-foreground`}),`运行时间`]}),j(B,{variant:`secondary`,children:r?h(r.uptime):`-`})]}),M(`div`,{className:`flex justify-between items-center`,children:[M(`div`,{className:`flex items-center gap-2 text-sm`,children:[j(E,{className:`h-4 w-4 text-muted-foreground`}),`平台`]}),j(B,{variant:`secondary`,children:r?.platform||`-`})]}),M(`div`,{className:`flex justify-between items-center`,children:[M(`div`,{className:`flex items-center gap-2 text-sm`,children:[j(l,{className:`h-4 w-4 text-muted-foreground`}),`Node 版本`]}),j(B,{variant:`secondary`,children:r?.nodeVersion||`-`})]})]})]}),M(I,{children:[M(L,{children:[j(R,{children:`资源使用`}),j(Zt,{children:`内存使用情况`})]}),M(z,{className:`space-y-3`,children:[M(`div`,{className:`flex justify-between items-center`,children:[M(`div`,{className:`flex items-center gap-2 text-sm`,children:[j(ve,{className:`h-4 w-4 text-muted-foreground`}),`堆内存使用`]}),j(B,{variant:`secondary`,children:t?`${t.memory.toFixed(2)} MB`:`-`})]}),M(`div`,{className:`flex justify-between items-center`,children:[M(`div`,{className:`flex items-center gap-2 text-sm`,children:[j(ve,{className:`h-4 w-4 text-muted-foreground`}),`总堆内存`]}),j(B,{variant:`secondary`,children:r?g(r.memory.heapTotal):`-`})]}),M(`div`,{className:`flex justify-between items-center`,children:[M(`div`,{className:`flex items-center gap-2 text-sm`,children:[j(ve,{className:`h-4 w-4 text-muted-foreground`}),`RSS`]}),j(B,{variant:`secondary`,children:r?g(r.memory.rss):`-`})]})]})]})]}),M(I,{children:[M(L,{children:[j(R,{children:`快速操作`}),j(Zt,{children:`常用功能快捷入口`})]}),j(z,{children:M(`div`,{className:`grid grid-cols-1 md:grid-cols-3 gap-3`,children:[j(P,{variant:`outline`,className:`h-auto p-4 justify-start`,onClick:()=>e(`/plugins`),children:M(`div`,{className:`flex flex-col items-start gap-1`,children:[j(Ce,{className:`h-5 w-5 mb-1`}),j(`span`,{className:`font-medium`,children:`插件管理`}),j(`span`,{className:`text-xs text-muted-foreground`,children:`查看和管理插件`})]})}),j(P,{variant:`outline`,className:`h-auto p-4 justify-start`,onClick:()=>e(`/bots`),children:M(`div`,{className:`flex flex-col items-start gap-1`,children:[j(p,{className:`h-5 w-5 mb-1`}),j(`span`,{className:`font-medium`,children:`机器人状态`}),j(`span`,{className:`text-xs text-muted-foreground`,children:`监控机器人运行`})]})}),j(P,{variant:`outline`,className:`h-auto p-4 justify-start`,onClick:()=>e(`/logs`),children:M(`div`,{className:`flex flex-col items-start gap-1`,children:[j(ie,{className:`h-5 w-5 mb-1`}),j(`span`,{className:`font-medium`,children:`系统日志`}),j(`span`,{className:`text-xs text-muted-foreground`,children:`查看运行日志`})]})})]})})]})]})}var rn=e.forwardRef(({className:e,orientation:t=`horizontal`,decorative:n=!0,...r},i)=>j(pt.Root,{ref:i,decorative:n,orientation:t,className:k(`shrink-0 bg-border`,t===`horizontal`?`h-[1px] w-full`:`h-full w-[1px]`,e),...r}));rn.displayName=`Separator`;var an={Terminal:Le,Box:m,Layers:pe,Clock:w,Brain:h,Wrench:He,Database:ee,Shield:Ne,Settings:Me,Plug:Te,Server:je};function on(e){return an[e]||Ce}function sn(){let e=_t(),[t,n]=s([]),[r,a]=s(!0),[o,c]=s(null);i(()=>{l();let e=setInterval(l,1e4);return()=>clearInterval(e)},[]);let l=async()=>{try{let e=await Yt(`/api/plugins`);if(!e.ok)throw Error(`API 请求失败`);let t=await e.json();if(t.success)n(t.data),c(null);else throw Error(`数据格式错误`)}catch(e){c(e.message)}finally{a(!1)}};return r?M(`div`,{className:`space-y-4`,children:[j(U,{className:`h-8 w-48`}),j(`div`,{className:`grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-3`,children:[...[,,,,,,]].map((e,t)=>j(U,{className:`h-40`},t))})]}):o?j(`div`,{className:`flex items-center justify-center h-full`,children:M(V,{variant:`destructive`,className:`max-w-md`,children:[j(u,{className:`h-4 w-4`}),M(H,{children:[`加载失败: `,o]})]})}):M(`div`,{className:`space-y-4`,children:[M(`div`,{children:[j(`h1`,{className:`text-2xl font-bold tracking-tight`,children:`插件管理`}),M(`div`,{className:`flex items-center gap-2 mt-1`,children:[M(`span`,{className:`text-sm text-muted-foreground`,children:[`共 `,t.length,` 个插件`]}),j(B,{variant:`success`,children:t.filter(e=>e.status===`active`).length}),j(`span`,{className:`text-sm text-muted-foreground`,children:`个运行中`})]})]}),j(`div`,{className:`grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-3`,children:t.map((t,n)=>j(I,{className:`cursor-pointer transition-all hover:shadow-md hover:-translate-y-0.5`,onClick:()=>e(`/plugins/${encodeURIComponent(t.name)}`),children:M(z,{className:`p-4 space-y-3`,children:[M(`div`,{className:`flex justify-between items-center`,children:[M(`div`,{className:`flex items-center gap-2`,children:[j(`div`,{className:`flex items-center justify-center w-8 h-8 rounded-md bg-secondary`,children:j(Ce,{className:`w-4 h-4`})}),j(`span`,{className:`font-semibold text-sm`,children:t.name})]}),j(B,{variant:t.status===`active`?`success`:`secondary`,children:t.status===`active`?`运行中`:`已停止`})]}),j(`p`,{className:`text-xs text-muted-foreground line-clamp-2`,children:t.description||`暂无描述`}),j(rn,{}),t.features.length>0?j(`div`,{className:`grid gap-1`,style:{gridTemplateColumns:`repeat(${Math.min(t.features.length,4)}, 1fr)`},children:t.features.map(e=>M(`div`,{className:`flex flex-col items-center gap-0.5 rounded-md bg-secondary/50 p-1.5`,children:[j(on(e.icon),{className:`w-3 h-3 text-muted-foreground`}),j(`span`,{className:`text-sm font-bold`,children:e.count}),j(`span`,{className:`text-[10px] text-muted-foreground`,children:e.desc})]},e.name))}):j(`p`,{className:`text-xs text-muted-foreground text-center py-1`,children:`无注册功能`})]})},`${t.name}-${n}`))}),t.length===0&&j(I,{className:`mt-6`,children:M(z,{className:`flex flex-col items-center gap-3 py-12`,children:[j(`div`,{className:`flex items-center justify-center w-16 h-16 rounded-full bg-muted`,children:j(Ce,{className:`w-8 h-8 text-muted-foreground`})}),j(`h3`,{className:`text-lg font-semibold`,children:`暂无插件`}),j(`p`,{className:`text-sm text-muted-foreground`,children:`请先安装并启用插件`})]})})]})}var W=e.forwardRef(({className:e,...t},n)=>j(`textarea`,{className:k(`flex min-h-[60px] w-full rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50`,e),ref:n,...t}));W.displayName=`Textarea`;var cn=e.forwardRef(({className:e,...t},n)=>j(mt.Root,{className:k(`peer inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent shadow-sm transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input`,e),...t,ref:n,children:j(mt.Thumb,{className:k(`pointer-events-none block h-4 w-4 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0`)})}));cn.displayName=`Switch`;var ln=N.Root;N.Group;var un=N.Value,dn=e.forwardRef(({className:e,children:t,...n},r)=>M(N.Trigger,{ref:r,className:k(`flex h-9 w-full items-center justify-between whitespace-nowrap rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1`,e),...n,children:[t,j(N.Icon,{asChild:!0,children:j(y,{className:`h-4 w-4 opacity-50`})})]}));dn.displayName=`SelectTrigger`;var fn=e.forwardRef(({className:e,...t},n)=>j(N.ScrollUpButton,{ref:n,className:k(`flex cursor-default items-center justify-center py-1`,e),...t,children:j(S,{className:`h-4 w-4`})}));fn.displayName=`SelectScrollUpButton`;var pn=e.forwardRef(({className:e,...t},n)=>j(N.ScrollDownButton,{ref:n,className:k(`flex cursor-default items-center justify-center py-1`,e),...t,children:j(y,{className:`h-4 w-4`})}));pn.displayName=`SelectScrollDownButton`;var mn=e.forwardRef(({className:e,children:t,position:n=`popper`,...r},i)=>j(N.Portal,{children:M(N.Content,{ref:i,className:k(`relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2`,n===`popper`&&`data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1`,e),position:n,...r,children:[j(fn,{}),j(N.Viewport,{className:k(`p-1`,n===`popper`&&`h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]`),children:t}),j(pn,{})]})}));mn.displayName=`SelectContent`;var hn=e.forwardRef(({className:e,children:t,...n},r)=>M(N.Item,{ref:r,className:k(`relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-2 pr-8 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50`,e),...n,children:[j(`span`,{className:`absolute right-2 flex h-3.5 w-3.5 items-center justify-center`,children:j(N.ItemIndicator,{children:j(_,{className:`h-4 w-4`})})}),j(N.ItemText,{children:t})]}));hn.displayName=`SelectItem`;var gn=e.forwardRef(({className:e,...t},n)=>j(N.Separator,{ref:n,className:k(`-mx-1 my-1 h-px bg-muted`,e),...t}));gn.displayName=`SelectSeparator`;function _n({field:e,value:t,onChange:n}){return e.enum?M(ln,{value:t?.toString()||``,onValueChange:n,children:[j(dn,{children:j(un,{placeholder:`请选择`})}),j(mn,{children:e.enum.map(e=>j(hn,{value:e.toString(),children:e.toString()},e))})]}):e.description?.includes(`多行`)||e.key?.includes(`description`)?j(W,{value:t||``,onChange:e=>n(e.target.value),placeholder:e.description||`请输入`,rows:3}):j(F,{value:t||``,onChange:e=>n(e.target.value),placeholder:e.description||`请输入`})}function vn({field:e,value:t,onChange:n}){return j(F,{type:`number`,value:t?.toString()||``,onChange:e=>n(parseFloat(e.target.value)||0),placeholder:e.description||`请输入数字`,min:e.min,max:e.max})}function yn({value:e,onChange:t}){return M(`div`,{className:`flex items-center gap-3 p-3 rounded-lg bg-muted/50 border`,children:[j(cn,{checked:e===!0,onCheckedChange:t}),M(`div`,{className:`flex flex-col gap-0.5`,children:[j(`span`,{className:`text-sm font-medium ${e?`text-emerald-600 dark:text-emerald-400`:`text-muted-foreground`}`,children:e?`已启用`:`已禁用`}),j(`span`,{className:`text-xs text-muted-foreground`,children:e?`功能当前处于开启状态`:`功能当前处于关闭状态`})]})]})}function bn({field:e,value:t,onChange:n}){let r=typeof t==`number`?t:e.default||0;return M(`div`,{className:`p-3 rounded-lg bg-muted/50 border space-y-3`,children:[M(`div`,{className:`flex items-center gap-3`,children:[j(`input`,{type:`range`,min:e.min||0,max:e.max||1,step:e.step||.01,value:r,onChange:e=>n(parseFloat(e.target.value)),className:`flex-1 h-2 rounded-lg appearance-none cursor-pointer bg-secondary`}),M(`div`,{className:`flex items-center gap-1`,children:[j(F,{type:`number`,className:`w-20 h-8 text-xs`,value:(r*100).toFixed(0),onChange:e=>n(parseFloat(e.target.value)/100),min:(e.min||0)*100,max:(e.max||1)*100}),j(`span`,{className:`text-xs font-bold text-muted-foreground`,children:`%`})]})]}),M(`div`,{className:`flex items-center justify-between`,children:[j(`span`,{className:`text-xs text-muted-foreground`,children:`当前值`}),M(B,{variant:`secondary`,className:`font-mono`,children:[(r*100).toFixed(1),`%`]})]})]})}function xn({field:e,value:t,onChange:n}){let r=t instanceof Date?t.toISOString().split(`T`)[0]:t||``;return M(`div`,{className:`relative`,children:[j(g,{className:`absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-muted-foreground pointer-events-none`}),j(F,{type:`date`,value:r,onChange:e=>n(new Date(e.target.value)),placeholder:e.description||`选择日期`,className:`pl-9`})]})}function Sn({field:e,value:t,onChange:n}){let r=t instanceof RegExp?t.source:typeof t==`string`?t:``;return M(`div`,{className:`p-3 rounded-lg bg-amber-50 dark:bg-amber-950/20 border border-amber-200 dark:border-amber-800 space-y-2`,children:[M(`div`,{className:`flex items-center gap-1`,children:[j(`span`,{className:`text-sm font-bold text-amber-600 dark:text-amber-400`,children:`/`}),j(F,{value:r,className:`font-mono text-sm`,onChange:e=>{try{n(new RegExp(e.target.value))}catch{n(e.target.value)}},placeholder:e.description||`请输入正则表达式`}),j(`span`,{className:`text-sm font-bold text-amber-600 dark:text-amber-400`,children:`/`})]}),M(`p`,{className:`flex items-center gap-1 text-xs text-amber-700 dark:text-amber-300`,children:[j(ue,{className:`w-3 h-3`}),` 输入正则表达式模式 (省略斜杠)`]})]})}function Cn({field:e,value:t}){let n=e.default||t;return M(`div`,{className:`flex items-center gap-3 p-3 rounded-lg bg-muted border`,children:[j(he,{className:`w-4 h-4 text-muted-foreground`}),j(B,{variant:`secondary`,className:`font-mono`,children:String(n)}),j(`span`,{className:`text-xs text-muted-foreground ml-auto`,children:`(常量,不可修改)`})]})}function wn({field:e,value:t,onChange:n}){return M(`div`,{className:`p-3 rounded-lg bg-muted/50 border space-y-2`,children:[M(`p`,{className:`flex items-center gap-1 text-xs font-semibold text-muted-foreground`,children:[j(T,{className:`w-3 h-3`}),` JSON 格式输入`]}),j(W,{value:typeof t==`object`?JSON.stringify(t,null,2):String(t||``),onChange:e=>{try{n(JSON.parse(e.target.value))}catch{n(e.target.value)}},placeholder:e.description||`支持任意类型 (JSON 格式)`,rows:4,className:`font-mono text-sm`}),M(`p`,{className:`flex items-center gap-1 text-xs text-muted-foreground`,children:[j(ue,{className:`w-3 h-3`}),` 支持: 字符串、数字、布尔值、对象、数组`]})]})}function Tn({fieldName:e,field:t,value:n,onChange:r,onArrayItemChange:i,renderNestedField:a}){let o=Array.isArray(n)?n:[],s=t.inner||t.items;return s&&[`string`,`number`].includes(s.type)?M(`div`,{className:`p-3 rounded-lg bg-muted/50 border space-y-2`,children:[M(`p`,{className:`flex items-center gap-1 text-xs font-semibold text-muted-foreground`,children:[j(me,{className:`w-3 h-3`}),` 列表输入 (每行一个值)`]}),j(W,{value:o.join(`
|
|
1
|
+
import*as e from"react";import{PureComponent as t,StrictMode as n,useCallback as r,useEffect as i,useMemo as a,useRef as o,useState as s}from"react";import{createRoot as c}from"react-dom/client";import{Activity as l,AlertCircle as u,AlertTriangle as d,ArrowLeft as f,Bot as p,Box as m,Brain as h,Calendar as g,Check as _,CheckCircle as v,ChevronDown as y,ChevronLeft as b,ChevronRight as x,ChevronUp as S,Circle as C,Clock as w,Code as T,Cpu as E,Database as ee,Eye as te,EyeOff as D,File as ne,FileCode as re,FileText as ie,FileWarning as ae,FolderOpen as oe,FormInput as se,GitBranch as ce,Home as le,Info as ue,Key as de,KeyRound as fe,Layers as pe,List as me,Loader2 as O,Lock as he,LogIn as ge,LogOut as _e,MemoryStick as ve,Menu as ye,MessageSquare as be,Moon as xe,MousePointer as Se,Package as Ce,Pencil as we,Plug as Te,Plus as Ee,QrCode as De,RefreshCw as Oe,Save as ke,Search as Ae,Server as je,Settings as Me,Shield as Ne,Smartphone as Pe,Sun as Fe,Table2 as Ie,Terminal as Le,Trash2 as Re,TrendingUp as ze,Wifi as Be,WifiOff as Ve,Wrench as He,X as Ue,XCircle as We,Zap as Ge}from"lucide-react";import{DynamicRouter as Ke,Link as qe,Outlet as Je,addPage as Ye,cn as k,persistor as Xe,setActiveMenu as Ze,store as Qe,toggleSidebar as $e,useConfig as et,useConfigYaml as tt,useDatabase as nt,useDispatch as rt,useEnvFiles as it,useFiles as at,useSelector as ot,useWebSocket as st}from"@zhin.js/client";import{Fragment as A,jsx as j,jsxs as M}from"react/jsx-runtime";import{cva as ct}from"class-variance-authority";import{Accordion as lt,Checkbox as ut,Dialog as dt,ScrollArea as ft,Select as N,Separator as pt,Switch as mt,Tabs as ht,Tooltip as gt}from"radix-ui";import{useNavigate as _t,useParams as vt}from"react-router";var yt=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin===`use-credentials`?t.credentials=`include`:e.crossOrigin===`anonymous`?t.credentials=`omit`:t.credentials=`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var bt=yt(((t,n)=>{n.exports={...e}})),xt=yt((e=>{var t=bt();typeof Object.is==`function`&&Object.is,t.useSyncExternalStore,t.useRef,t.useEffect,t.useMemo,t.useDebugValue}));yt(((e,t)=>{t.exports=xt()}))();function St(e){e()}function Ct(){let e=null,t=null;return{clear(){e=null,t=null},notify(){St(()=>{let t=e;for(;t;)t.callback(),t=t.next})},get(){let t=[],n=e;for(;n;)t.push(n),n=n.next;return t},subscribe(n){let r=!0,i=t={callback:n,next:null,prev:t};return i.prev?i.prev.next=i:e=i,function(){!r||e===null||(r=!1,i.next?i.next.prev=i.prev:t=i.prev,i.prev?i.prev.next=i.next:e=i.next)}}}}var wt={notify(){},get:()=>[]};function Tt(e,t){let n,r=wt,i=0,a=!1;function o(e){u();let t=r.subscribe(e),n=!1;return()=>{n||(n=!0,t(),d())}}function s(){r.notify()}function c(){m.onStateChange&&m.onStateChange()}function l(){return a}function u(){i++,n||(n=t?t.addNestedSub(c):e.subscribe(c),r=Ct())}function d(){i--,n&&i===0&&(n(),n=void 0,r.clear(),r=wt)}function f(){a||(a=!0,u())}function p(){a&&(a=!1,d())}let m={addNestedSub:o,notifyNestedSubs:s,handleChangeWrapper:c,isSubscribed:l,trySubscribe:f,tryUnsubscribe:p,getListeners:()=>r};return m}var Et=typeof window<`u`&&window.document!==void 0&&window.document.createElement!==void 0,Dt=typeof navigator<`u`&&navigator.product===`ReactNative`,Ot=Et||Dt?e.useLayoutEffect:e.useEffect;Object.prototype;var kt=Symbol.for(`react-redux-context`),At=typeof globalThis<`u`?globalThis:{};function jt(){if(!e.createContext)return{};let t=At[kt]??=new Map,n=t.get(e.createContext);return n||(n=e.createContext(null),t.set(e.createContext,n)),n}var Mt=jt();function Nt(t){let{children:n,context:r,serverState:i,store:a}=t,o=e.useMemo(()=>({store:a,subscription:Tt(a),getServerState:i?()=>i:void 0}),[a,i]),s=e.useMemo(()=>a.getState(),[a]);Ot(()=>{let{subscription:e}=o;return e.onStateChange=e.notifyNestedSubs,e.trySubscribe(),s!==a.getState()&&e.notifyNestedSubs(),()=>{e.tryUnsubscribe(),e.onStateChange=void 0}},[o,s]);let c=r||Mt;return e.createElement(c.Provider,{value:o},n)}var Pt=Nt,Ft={light:{background:`0 0% 100%`,foreground:`240 10% 3.9%`,card:`0 0% 100%`,"card-foreground":`240 10% 3.9%`,popover:`0 0% 100%`,"popover-foreground":`240 10% 3.9%`,primary:`240 5.9% 10%`,"primary-foreground":`0 0% 98%`,secondary:`240 4.8% 95.9%`,"secondary-foreground":`240 5.9% 10%`,muted:`240 4.8% 95.9%`,"muted-foreground":`240 3.8% 46.1%`,accent:`240 4.8% 95.9%`,"accent-foreground":`240 5.9% 10%`,destructive:`0 84.2% 60.2%`,"destructive-foreground":`0 0% 98%`,border:`240 5.9% 90%`,input:`240 5.9% 90%`,ring:`240 5.9% 10%`,radius:`0.5rem`,"chart-1":`240 5.9% 10%`,"chart-2":`240 3.8% 46.1%`,"chart-3":`240 5.9% 90%`,"chart-4":`240 4.8% 95.9%`,"chart-5":`0 0% 100%`,sidebar:`0 0% 98%`,"sidebar-foreground":`240 5.3% 26.1%`,"sidebar-primary":`240 5.9% 10%`,"sidebar-primary-foreground":`0 0% 98%`,"sidebar-accent":`240 4.8% 95.9%`,"sidebar-accent-foreground":`240 5.9% 10%`,"sidebar-border":`220 13% 91%`,"sidebar-ring":`240 5.9% 10%`},dark:{background:`240 10% 3.9%`,foreground:`0 0% 98%`,card:`240 10% 3.9%`,"card-foreground":`0 0% 98%`,popover:`240 10% 3.9%`,"popover-foreground":`0 0% 98%`,primary:`0 0% 98%`,"primary-foreground":`240 5.9% 10%`,secondary:`240 3.7% 15.9%`,"secondary-foreground":`0 0% 98%`,muted:`240 3.7% 15.9%`,"muted-foreground":`240 5% 64.9%`,accent:`240 3.7% 15.9%`,"accent-foreground":`0 0% 98%`,destructive:`0 62.8% 30.6%`,"destructive-foreground":`0 0% 98%`,border:`240 3.7% 15.9%`,input:`240 3.7% 15.9%`,ring:`240 4.9% 83.9%`,radius:`0.5rem`,"chart-1":`0 0% 98%`,"chart-2":`240 5% 64.9%`,"chart-3":`240 3.7% 15.9%`,"chart-4":`240 10% 3.9%`,"chart-5":`240 5.9% 10%`,sidebar:`240 5.9% 10%`,"sidebar-foreground":`240 4.8% 95.9%`,"sidebar-primary":`0 0% 98%`,"sidebar-primary-foreground":`240 5.9% 10%`,"sidebar-accent":`240 3.7% 15.9%`,"sidebar-accent-foreground":`240 4.8% 95.9%`,"sidebar-border":`240 3.7% 15.9%`,"sidebar-ring":`240 4.9% 83.9%`}};function It(e){let t=document.documentElement,n=Ft[e];t.classList.remove(`light`,`dark`),t.classList.add(e),Object.entries(n).forEach(([e,n])=>{t.style.setProperty(`--${e}`,n)}),localStorage.setItem(`theme`,e)}function Lt(){let e=localStorage.getItem(`theme`);return e&&(e===`light`||e===`dark`)?e:window.matchMedia&&window.matchMedia(`(prefers-color-scheme: dark)`).matches?`dark`:`light`}function Rt(){let e=Lt();return It(e),e}function zt(){let[e,t]=s(Lt);return i(()=>{It(e)},[e]),{theme:e,setTheme:t,toggleTheme:()=>{t(e=>e===`light`?`dark`:`light`)}}}function Bt(){let{theme:e,toggleTheme:t}=zt();return j(`button`,{onClick:t,className:`p-2 hover:bg-accent rounded-lg transition-colors text-foreground`,title:e===`light`?`切换到暗色模式`:`切换到亮色模式`,children:j(e===`light`?xe:Fe,{className:`w-5 h-5`})})}var Vt=ct(`inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0`,{variants:{variant:{default:`bg-primary text-primary-foreground shadow hover:bg-primary/90`,destructive:`bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90`,outline:`border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground`,secondary:`bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80`,ghost:`hover:bg-accent hover:text-accent-foreground`,link:`text-primary underline-offset-4 hover:underline`},size:{default:`h-9 px-4 py-2`,sm:`h-8 rounded-md px-3 text-xs`,lg:`h-10 rounded-md px-8`,icon:`h-9 w-9`}},defaultVariants:{variant:`default`,size:`default`}}),P=e.forwardRef(({className:e,variant:t,size:n,...r},i)=>j(`button`,{className:k(Vt({variant:t,size:n,className:e})),ref:i,...r}));P.displayName=`Button`;var F=e.forwardRef(({className:e,type:t,...n},r)=>j(`input`,{type:t,className:k(`flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50`,e),ref:r,...n}));F.displayName=`Input`;var Ht=e.forwardRef(({className:e,children:t,...n},r)=>M(ft.Root,{ref:r,className:k(`relative overflow-hidden`,e),...n,children:[j(ft.Viewport,{className:`h-full w-full rounded-[inherit]`,children:t}),j(Ut,{}),j(ft.Corner,{})]}));Ht.displayName=`ScrollArea`;var Ut=e.forwardRef(({className:e,orientation:t=`vertical`,...n},r)=>j(ft.Scrollbar,{ref:r,orientation:t,className:k(`flex touch-none select-none transition-colors`,t===`vertical`&&`h-full w-2.5 border-l border-l-transparent p-[1px]`,t===`horizontal`&&`h-2.5 flex-col border-t border-t-transparent p-[1px]`,e),...n,children:j(ft.Thumb,{className:`relative flex-1 rounded-full bg-border`})}));Ut.displayName=`ScrollBar`;var Wt=`zhin_api_token`;function Gt(){return localStorage.getItem(Wt)}function Kt(e){localStorage.setItem(Wt,e)}function qt(){localStorage.removeItem(Wt)}function Jt(){return!!localStorage.getItem(Wt)}async function Yt(e,t){let n=Gt(),r=new Headers(t?.headers);n&&r.set(`Authorization`,`Bearer ${n}`);let i=await fetch(e,{...t,headers:r});return i.status===401&&(qt(),window.dispatchEvent(new CustomEvent(`zhin:auth-required`))),i}function Xt(){let e=rt(),t=ot(e=>e.ui.sidebarOpen),n=ot(e=>e.ui.activeMenu),r=ot(e=>e.route.routes),i=a(()=>{let e=r.find(e=>e.key===`dashboard-layout`);return!e||!e.children?[]:e.children.filter(e=>!e.meta?.hideInMenu&&e.key!==`dashboard-layout`).map((e,t)=>({key:e.key||`menu-item-${t}`,title:e.title,index:e.index,icon:e.icon,href:e.path}))},[r]);return M(`div`,{className:`flex h-screen bg-background`,children:[M(`div`,{className:k(`flex flex-col border-r bg-sidebar transition-all duration-300`,t?`w-64`:`w-16`),children:[j(`div`,{className:`p-4 border-b`,children:M(`div`,{className:k(`flex items-center transition-all duration-300`,t?`gap-3`:`justify-center`),children:[j(`div`,{className:`flex items-center justify-center w-9 h-9 min-w-9 rounded-lg bg-foreground text-background font-bold text-lg`,children:`Z`}),t&&M(`div`,{className:`flex flex-col`,children:[j(`span`,{className:`text-base font-semibold`,children:`Zhin.js`}),j(`span`,{className:`text-xs text-muted-foreground`,children:`管理控制台`})]})]})}),j(Ht,{className:`flex-1`,children:j(`div`,{className:`p-2 space-y-1`,children:i.map(r=>{let i=n===r.key;return M(qe,{to:r.href,onClick:()=>e(Ze(r.key)),className:k(`menu-item`,i&&`active`,!t&&`justify-center px-2`),children:[j(`span`,{className:`shrink-0`,children:r.icon}),t&&j(`span`,{className:`truncate`,children:r.title})]},r.key)})})})]}),M(`div`,{className:`flex flex-col flex-1 overflow-hidden`,children:[M(`header`,{className:`flex items-center justify-between h-14 px-4 border-b bg-background/95 backdrop-blur supports-[backdrop-filter]:bg-background/60`,children:[M(`div`,{className:`flex items-center gap-3`,children:[j(P,{variant:`ghost`,size:`icon`,onClick:()=>e($e()),children:j(ye,{className:`h-5 w-5`})}),M(`div`,{className:`flex flex-col`,children:[j(`h2`,{className:`text-sm font-semibold`,children:`控制台`}),j(`span`,{className:`text-xs text-muted-foreground`,children:`欢迎回来`})]})]}),j(`div`,{className:`hidden md:flex flex-1 max-w-md mx-6`,children:M(`div`,{className:`relative w-full`,children:[j(Ae,{className:`absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground`}),j(F,{placeholder:`搜索功能、插件、设置...`,className:`pl-9 bg-muted/50`})]})}),M(`div`,{className:`flex items-center gap-1`,children:[j(Bt,{}),j(P,{variant:`ghost`,size:`icon`,title:`退出登录`,onClick:()=>{qt(),window.dispatchEvent(new CustomEvent(`zhin:auth-required`))},children:j(_e,{className:`h-4 w-4`})})]})]}),j(`main`,{className:`flex-1 overflow-auto`,children:j(`div`,{className:`max-w-7xl mx-auto p-6`,children:j(Je,{})})})]})]})}var I=e.forwardRef(({className:e,...t},n)=>j(`div`,{ref:n,className:k(`rounded-lg border bg-card text-card-foreground shadow-sm`,e),...t}));I.displayName=`Card`;var L=e.forwardRef(({className:e,...t},n)=>j(`div`,{ref:n,className:k(`flex flex-col space-y-1.5 p-6`,e),...t}));L.displayName=`CardHeader`;var R=e.forwardRef(({className:e,...t},n)=>j(`div`,{ref:n,className:k(`text-lg font-semibold leading-none tracking-tight`,e),...t}));R.displayName=`CardTitle`;var Zt=e.forwardRef(({className:e,...t},n)=>j(`div`,{ref:n,className:k(`text-sm text-muted-foreground`,e),...t}));Zt.displayName=`CardDescription`;var z=e.forwardRef(({className:e,...t},n)=>j(`div`,{ref:n,className:k(`p-6 pt-0`,e),...t}));z.displayName=`CardContent`;var Qt=e.forwardRef(({className:e,...t},n)=>j(`div`,{ref:n,className:k(`flex items-center p-6 pt-0`,e),...t}));Qt.displayName=`CardFooter`;var $t=ct(`inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2`,{variants:{variant:{default:`border-transparent bg-primary text-primary-foreground shadow`,secondary:`border-transparent bg-secondary text-secondary-foreground`,destructive:`border-transparent bg-destructive text-destructive-foreground shadow`,outline:`text-foreground`,success:`border-transparent bg-emerald-100 text-emerald-800 dark:bg-emerald-900/30 dark:text-emerald-400`,warning:`border-transparent bg-amber-100 text-amber-800 dark:bg-amber-900/30 dark:text-amber-400`}},defaultVariants:{variant:`default`}});function B({className:e,variant:t,...n}){return j(`div`,{className:k($t({variant:t}),e),...n})}var en=ct(`relative w-full rounded-lg border px-4 py-3 text-sm [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground [&>svg~*]:pl-7`,{variants:{variant:{default:`bg-background text-foreground`,destructive:`border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive`,success:`border-emerald-200 bg-emerald-50 text-emerald-800 dark:border-emerald-800 dark:bg-emerald-950/50 dark:text-emerald-400 [&>svg]:text-emerald-600 dark:[&>svg]:text-emerald-400`,warning:`border-amber-200 bg-amber-50 text-amber-800 dark:border-amber-800 dark:bg-amber-950/50 dark:text-amber-400 [&>svg]:text-amber-600 dark:[&>svg]:text-amber-400`}},defaultVariants:{variant:`default`}}),V=e.forwardRef(({className:e,variant:t,...n},r)=>j(`div`,{ref:r,role:`alert`,className:k(en({variant:t}),e),...n}));V.displayName=`Alert`;var tn=e.forwardRef(({className:e,...t},n)=>j(`h5`,{ref:n,className:k(`mb-1 font-medium leading-none tracking-tight`,e),...t}));tn.displayName=`AlertTitle`;var H=e.forwardRef(({className:e,...t},n)=>j(`div`,{ref:n,className:k(`text-sm [&_p]:leading-relaxed`,e),...t}));H.displayName=`AlertDescription`;function U({className:e,...t}){return j(`div`,{className:k(`animate-pulse rounded-md bg-primary/10`,e),...t})}function nn(){let e=_t(),[t,n]=s(null),[r,a]=s(null),[o,c]=s(!0),[d,f]=s(null);i(()=>{m();let e=setInterval(m,5e3);return()=>clearInterval(e)},[]);let m=async()=>{try{let[e,t]=await Promise.all([Yt(`/api/stats`),Yt(`/api/system/status`)]);if(!e.ok||!t.ok)throw Error(`API 请求失败`);let r=await e.json(),i=await t.json();r.success&&i.success&&(n(r.data),a(i.data),f(null))}catch(e){f(e.message)}finally{c(!1)}},h=e=>`${Math.floor(e/86400)}天 ${Math.floor(e%86400/3600)}小时 ${Math.floor(e%3600/60)}分钟`,g=e=>`${(e/1024/1024).toFixed(2)} MB`;return o?M(`div`,{className:`space-y-6`,children:[M(`div`,{children:[j(U,{className:`h-8 w-48`}),j(U,{className:`h-4 w-64 mt-2`})]}),j(`div`,{className:`grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4`,children:[...[,,,,]].map((e,t)=>j(U,{className:`h-32`},t))})]}):d?j(`div`,{className:`flex items-center justify-center h-full`,children:M(V,{variant:`destructive`,className:`max-w-md`,children:[j(u,{className:`h-4 w-4`}),M(H,{children:[`加载失败: `,d]})]})}):M(`div`,{className:`space-y-6`,children:[M(`div`,{children:[j(`h1`,{className:`text-2xl font-bold tracking-tight`,children:`系统概览`}),j(`p`,{className:`text-muted-foreground`,children:`实时监控您的机器人框架运行状态`})]}),M(`div`,{className:`grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4`,children:[M(I,{children:[M(L,{className:`flex flex-row items-center justify-between pb-2`,children:[j(R,{className:`text-sm font-medium text-muted-foreground`,children:`插件总数`}),j(Ce,{className:`h-4 w-4 text-muted-foreground`})]}),M(z,{children:[j(`div`,{className:`text-3xl font-bold`,children:t?.plugins.total||0}),M(`p`,{className:`text-xs text-muted-foreground mt-1`,children:[j(B,{variant:`secondary`,className:`mr-1`,children:t?.plugins.active||0}),`个活跃`]})]})]}),M(I,{children:[M(L,{className:`flex flex-row items-center justify-between pb-2`,children:[j(R,{className:`text-sm font-medium text-muted-foreground`,children:`机器人`}),j(p,{className:`h-4 w-4 text-muted-foreground`})]}),M(z,{children:[j(`div`,{className:`text-3xl font-bold`,children:t?.bots.total||0}),M(`p`,{className:`text-xs text-muted-foreground mt-1`,children:[j(B,{variant:`success`,className:`mr-1`,children:t?.bots.online||0}),`个在线`]})]})]}),M(I,{children:[M(L,{className:`flex flex-row items-center justify-between pb-2`,children:[j(R,{className:`text-sm font-medium text-muted-foreground`,children:`命令数量`}),j(l,{className:`h-4 w-4 text-muted-foreground`})]}),M(z,{children:[j(`div`,{className:`text-3xl font-bold`,children:t?.commands||0}),j(`p`,{className:`text-xs text-muted-foreground mt-1`,children:`可用命令`})]})]}),M(I,{children:[M(L,{className:`flex flex-row items-center justify-between pb-2`,children:[j(R,{className:`text-sm font-medium text-muted-foreground`,children:`组件数量`}),j(ze,{className:`h-4 w-4 text-muted-foreground`})]}),M(z,{children:[j(`div`,{className:`text-3xl font-bold`,children:t?.components||0}),j(`p`,{className:`text-xs text-muted-foreground mt-1`,children:`已注册组件`})]})]})]}),M(`div`,{className:`grid grid-cols-1 md:grid-cols-2 gap-4`,children:[M(I,{children:[M(L,{children:[j(R,{children:`系统信息`}),j(Zt,{children:`服务器运行状态`})]}),M(z,{className:`space-y-3`,children:[M(`div`,{className:`flex justify-between items-center`,children:[M(`div`,{className:`flex items-center gap-2 text-sm`,children:[j(w,{className:`h-4 w-4 text-muted-foreground`}),`运行时间`]}),j(B,{variant:`secondary`,children:r?h(r.uptime):`-`})]}),M(`div`,{className:`flex justify-between items-center`,children:[M(`div`,{className:`flex items-center gap-2 text-sm`,children:[j(E,{className:`h-4 w-4 text-muted-foreground`}),`平台`]}),j(B,{variant:`secondary`,children:r?.platform||`-`})]}),M(`div`,{className:`flex justify-between items-center`,children:[M(`div`,{className:`flex items-center gap-2 text-sm`,children:[j(l,{className:`h-4 w-4 text-muted-foreground`}),`Node 版本`]}),j(B,{variant:`secondary`,children:r?.nodeVersion||`-`})]})]})]}),M(I,{children:[M(L,{children:[j(R,{children:`资源使用`}),j(Zt,{children:`内存使用情况`})]}),M(z,{className:`space-y-3`,children:[M(`div`,{className:`flex justify-between items-center`,children:[M(`div`,{className:`flex items-center gap-2 text-sm`,children:[j(ve,{className:`h-4 w-4 text-muted-foreground`}),`堆内存使用`]}),j(B,{variant:`secondary`,children:t?`${t.memory.toFixed(2)} MB`:`-`})]}),M(`div`,{className:`flex justify-between items-center`,children:[M(`div`,{className:`flex items-center gap-2 text-sm`,children:[j(ve,{className:`h-4 w-4 text-muted-foreground`}),`总堆内存`]}),j(B,{variant:`secondary`,children:r?g(r.memory.heapTotal):`-`})]}),M(`div`,{className:`flex justify-between items-center`,children:[M(`div`,{className:`flex items-center gap-2 text-sm`,children:[j(ve,{className:`h-4 w-4 text-muted-foreground`}),`RSS`]}),j(B,{variant:`secondary`,children:r?g(r.memory.rss):`-`})]})]})]})]}),M(I,{children:[M(L,{children:[j(R,{children:`快速操作`}),j(Zt,{children:`常用功能快捷入口`})]}),j(z,{children:M(`div`,{className:`grid grid-cols-1 md:grid-cols-3 gap-3`,children:[j(P,{variant:`outline`,className:`h-auto p-4 justify-start`,onClick:()=>e(`/plugins`),children:M(`div`,{className:`flex flex-col items-start gap-1`,children:[j(Ce,{className:`h-5 w-5 mb-1`}),j(`span`,{className:`font-medium`,children:`插件管理`}),j(`span`,{className:`text-xs text-muted-foreground`,children:`查看和管理插件`})]})}),j(P,{variant:`outline`,className:`h-auto p-4 justify-start`,onClick:()=>e(`/bots`),children:M(`div`,{className:`flex flex-col items-start gap-1`,children:[j(p,{className:`h-5 w-5 mb-1`}),j(`span`,{className:`font-medium`,children:`机器人状态`}),j(`span`,{className:`text-xs text-muted-foreground`,children:`监控机器人运行`})]})}),j(P,{variant:`outline`,className:`h-auto p-4 justify-start`,onClick:()=>e(`/logs`),children:M(`div`,{className:`flex flex-col items-start gap-1`,children:[j(ie,{className:`h-5 w-5 mb-1`}),j(`span`,{className:`font-medium`,children:`系统日志`}),j(`span`,{className:`text-xs text-muted-foreground`,children:`查看运行日志`})]})})]})})]})]})}var rn=e.forwardRef(({className:e,orientation:t=`horizontal`,decorative:n=!0,...r},i)=>j(pt.Root,{ref:i,decorative:n,orientation:t,className:k(`shrink-0 bg-border`,t===`horizontal`?`h-[1px] w-full`:`h-full w-[1px]`,e),...r}));rn.displayName=`Separator`;var an={Terminal:Le,Box:m,Layers:pe,Clock:w,Brain:h,Wrench:He,Database:ee,Shield:Ne,Settings:Me,Plug:Te,Server:je};function on(e){return an[e]||Ce}function sn(){let e=_t(),[t,n]=s([]),[r,a]=s(!0),[o,c]=s(null);i(()=>{l();let e=setInterval(l,1e4);return()=>clearInterval(e)},[]);let l=async()=>{try{let e=await Yt(`/api/plugins`);if(!e.ok)throw Error(`API 请求失败`);let t=await e.json();if(t.success)n(t.data),c(null);else throw Error(`数据格式错误`)}catch(e){c(e.message)}finally{a(!1)}};return r?M(`div`,{className:`space-y-4`,children:[j(U,{className:`h-8 w-48`}),j(`div`,{className:`grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-3`,children:[...[,,,,,,]].map((e,t)=>j(U,{className:`h-40`},t))})]}):o?j(`div`,{className:`flex items-center justify-center h-full`,children:M(V,{variant:`destructive`,className:`max-w-md`,children:[j(u,{className:`h-4 w-4`}),M(H,{children:[`加载失败: `,o]})]})}):M(`div`,{className:`space-y-4`,children:[M(`div`,{children:[j(`h1`,{className:`text-2xl font-bold tracking-tight`,children:`插件管理`}),M(`div`,{className:`flex items-center gap-2 mt-1`,children:[M(`span`,{className:`text-sm text-muted-foreground`,children:[`共 `,t.length,` 个插件`]}),j(B,{variant:`success`,children:t.filter(e=>e.status===`active`).length}),j(`span`,{className:`text-sm text-muted-foreground`,children:`个运行中`})]})]}),j(`div`,{className:`grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-3`,children:t.map((t,n)=>j(I,{className:`cursor-pointer transition-all hover:shadow-md hover:-translate-y-0.5`,onClick:()=>e(`/plugins/${encodeURIComponent(t.name)}`),children:M(z,{className:`p-4 space-y-3`,children:[M(`div`,{className:`flex justify-between items-center`,children:[M(`div`,{className:`flex items-center gap-2`,children:[j(`div`,{className:`flex items-center justify-center w-8 h-8 rounded-md bg-secondary`,children:j(Ce,{className:`w-4 h-4`})}),j(`span`,{className:`font-semibold text-sm`,children:t.name})]}),j(B,{variant:t.status===`active`?`success`:`secondary`,children:t.status===`active`?`运行中`:`已停止`})]}),j(`p`,{className:`text-xs text-muted-foreground line-clamp-2`,children:t.description||`暂无描述`}),j(rn,{}),t.features.length>0?j(`div`,{className:`grid gap-1`,style:{gridTemplateColumns:`repeat(${Math.min(t.features.length,4)}, 1fr)`},children:t.features.map(e=>M(`div`,{className:`flex flex-col items-center gap-0.5 rounded-md bg-secondary/50 p-1.5`,children:[j(on(e.icon),{className:`w-3 h-3 text-muted-foreground`}),j(`span`,{className:`text-sm font-bold`,children:e.count}),j(`span`,{className:`text-[10px] text-muted-foreground`,children:e.desc})]},e.name))}):j(`p`,{className:`text-xs text-muted-foreground text-center py-1`,children:`无注册功能`})]})},`${t.name}-${n}`))}),t.length===0&&j(I,{className:`mt-6`,children:M(z,{className:`flex flex-col items-center gap-3 py-12`,children:[j(`div`,{className:`flex items-center justify-center w-16 h-16 rounded-full bg-muted`,children:j(Ce,{className:`w-8 h-8 text-muted-foreground`})}),j(`h3`,{className:`text-lg font-semibold`,children:`暂无插件`}),j(`p`,{className:`text-sm text-muted-foreground`,children:`请先安装并启用插件`})]})})]})}var W=e.forwardRef(({className:e,...t},n)=>j(`textarea`,{className:k(`flex min-h-[60px] w-full rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50`,e),ref:n,...t}));W.displayName=`Textarea`;var cn=e.forwardRef(({className:e,...t},n)=>j(mt.Root,{className:k(`peer inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent shadow-sm transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input`,e),...t,ref:n,children:j(mt.Thumb,{className:k(`pointer-events-none block h-4 w-4 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0`)})}));cn.displayName=`Switch`;var ln=N.Root;N.Group;var un=N.Value,dn=e.forwardRef(({className:e,children:t,...n},r)=>M(N.Trigger,{ref:r,className:k(`flex h-9 w-full items-center justify-between whitespace-nowrap rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1`,e),...n,children:[t,j(N.Icon,{asChild:!0,children:j(y,{className:`h-4 w-4 opacity-50`})})]}));dn.displayName=`SelectTrigger`;var fn=e.forwardRef(({className:e,...t},n)=>j(N.ScrollUpButton,{ref:n,className:k(`flex cursor-default items-center justify-center py-1`,e),...t,children:j(S,{className:`h-4 w-4`})}));fn.displayName=`SelectScrollUpButton`;var pn=e.forwardRef(({className:e,...t},n)=>j(N.ScrollDownButton,{ref:n,className:k(`flex cursor-default items-center justify-center py-1`,e),...t,children:j(y,{className:`h-4 w-4`})}));pn.displayName=`SelectScrollDownButton`;var mn=e.forwardRef(({className:e,children:t,position:n=`popper`,...r},i)=>j(N.Portal,{children:M(N.Content,{ref:i,className:k(`relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2`,n===`popper`&&`data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1`,e),position:n,...r,children:[j(fn,{}),j(N.Viewport,{className:k(`p-1`,n===`popper`&&`h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]`),children:t}),j(pn,{})]})}));mn.displayName=`SelectContent`;var hn=e.forwardRef(({className:e,children:t,...n},r)=>M(N.Item,{ref:r,className:k(`relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-2 pr-8 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50`,e),...n,children:[j(`span`,{className:`absolute right-2 flex h-3.5 w-3.5 items-center justify-center`,children:j(N.ItemIndicator,{children:j(_,{className:`h-4 w-4`})})}),j(N.ItemText,{children:t})]}));hn.displayName=`SelectItem`;var gn=e.forwardRef(({className:e,...t},n)=>j(N.Separator,{ref:n,className:k(`-mx-1 my-1 h-px bg-muted`,e),...t}));gn.displayName=`SelectSeparator`;function _n({field:e,value:t,onChange:n}){return e.enum?M(ln,{value:t?.toString()||``,onValueChange:n,children:[j(dn,{children:j(un,{placeholder:`请选择`})}),j(mn,{children:e.enum.map(e=>j(hn,{value:e.toString(),children:e.toString()},e))})]}):e.description?.includes(`多行`)||e.key?.includes(`description`)?j(W,{value:t||``,onChange:e=>n(e.target.value),placeholder:e.description||`请输入`,rows:3}):j(F,{value:t||``,onChange:e=>n(e.target.value),placeholder:e.description||`请输入`})}function vn({field:e,value:t,onChange:n}){return j(F,{type:`number`,value:t?.toString()||``,onChange:e=>n(parseFloat(e.target.value)||0),placeholder:e.description||`请输入数字`,min:e.min,max:e.max})}function yn({value:e,onChange:t}){return M(`div`,{className:`flex items-center gap-3 p-3 rounded-lg bg-muted/50 border`,children:[j(cn,{checked:e===!0,onCheckedChange:t}),M(`div`,{className:`flex flex-col gap-0.5`,children:[j(`span`,{className:`text-sm font-medium ${e?`text-emerald-600 dark:text-emerald-400`:`text-muted-foreground`}`,children:e?`已启用`:`已禁用`}),j(`span`,{className:`text-xs text-muted-foreground`,children:e?`功能当前处于开启状态`:`功能当前处于关闭状态`})]})]})}function bn({field:e,value:t,onChange:n}){let r=typeof t==`number`?t:e.default||0;return M(`div`,{className:`p-3 rounded-lg bg-muted/50 border space-y-3`,children:[M(`div`,{className:`flex items-center gap-3`,children:[j(`input`,{type:`range`,min:e.min||0,max:e.max||1,step:e.step||.01,value:r,onChange:e=>n(parseFloat(e.target.value)),className:`flex-1 h-2 rounded-lg appearance-none cursor-pointer bg-secondary`}),M(`div`,{className:`flex items-center gap-1`,children:[j(F,{type:`number`,className:`w-20 h-8 text-xs`,value:(r*100).toFixed(0),onChange:e=>n(parseFloat(e.target.value)/100),min:(e.min||0)*100,max:(e.max||1)*100}),j(`span`,{className:`text-xs font-bold text-muted-foreground`,children:`%`})]})]}),M(`div`,{className:`flex items-center justify-between`,children:[j(`span`,{className:`text-xs text-muted-foreground`,children:`当前值`}),M(B,{variant:`secondary`,className:`font-mono`,children:[(r*100).toFixed(1),`%`]})]})]})}function xn({field:e,value:t,onChange:n}){let r=t instanceof Date?t.toISOString().split(`T`)[0]:t||``;return M(`div`,{className:`relative`,children:[j(g,{className:`absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-muted-foreground pointer-events-none`}),j(F,{type:`date`,value:r,onChange:e=>n(new Date(e.target.value)),placeholder:e.description||`选择日期`,className:`pl-9`})]})}function Sn({field:e,value:t,onChange:n}){let r=t instanceof RegExp?t.source:typeof t==`string`?t:``;return M(`div`,{className:`p-3 rounded-lg bg-amber-50 dark:bg-amber-950/20 border border-amber-200 dark:border-amber-800 space-y-2`,children:[M(`div`,{className:`flex items-center gap-1`,children:[j(`span`,{className:`text-sm font-bold text-amber-600 dark:text-amber-400`,children:`/`}),j(F,{value:r,className:`font-mono text-sm`,onChange:e=>{try{n(new RegExp(e.target.value))}catch{n(e.target.value)}},placeholder:e.description||`请输入正则表达式`}),j(`span`,{className:`text-sm font-bold text-amber-600 dark:text-amber-400`,children:`/`})]}),M(`p`,{className:`flex items-center gap-1 text-xs text-amber-700 dark:text-amber-300`,children:[j(ue,{className:`w-3 h-3`}),` 输入正则表达式模式 (省略斜杠)`]})]})}function Cn({field:e,value:t}){let n=e.default||t;return M(`div`,{className:`flex items-center gap-3 p-3 rounded-lg bg-muted border`,children:[j(he,{className:`w-4 h-4 text-muted-foreground`}),j(B,{variant:`secondary`,className:`font-mono`,children:String(n)}),j(`span`,{className:`text-xs text-muted-foreground ml-auto`,children:`(常量,不可修改)`})]})}function wn({field:e,value:t,onChange:n}){return M(`div`,{className:`p-3 rounded-lg bg-muted/50 border space-y-2`,children:[M(`p`,{className:`flex items-center gap-1 text-xs font-semibold text-muted-foreground`,children:[j(T,{className:`w-3 h-3`}),` JSON 格式输入`]}),j(W,{value:typeof t==`object`?JSON.stringify(t,null,2):String(t||``),onChange:e=>{try{n(JSON.parse(e.target.value))}catch{n(e.target.value)}},placeholder:e.description||`支持任意类型 (JSON 格式)`,rows:4,className:`font-mono text-sm`}),M(`p`,{className:`flex items-center gap-1 text-xs text-muted-foreground`,children:[j(ue,{className:`w-3 h-3`}),` 支持: 字符串、数字、布尔值、对象、数组`]})]})}function Tn({fieldName:e,field:t,value:n,onChange:r,onArrayItemChange:i,renderNestedField:a}){let o=Array.isArray(n)?n:[],s=t.inner||t.items;return s&&[`string`,`number`].includes(s.type)?M(`div`,{className:`p-3 rounded-lg bg-muted/50 border space-y-2`,children:[M(`p`,{className:`flex items-center gap-1 text-xs font-semibold text-muted-foreground`,children:[j(me,{className:`w-3 h-3`}),` 列表输入 (每行一个值)`]}),j(W,{value:o.join(`
|
|
2
2
|
`),onChange:e=>{let t=e.target.value.split(`
|
|
3
3
|
`).filter(Boolean);r(s.type===`number`?t.map(e=>parseFloat(e)||0):t)},placeholder:`每行一个值\n${t.description||``}`,rows:4,className:`font-mono text-sm`})]}):M(`div`,{className:`space-y-2`,children:[o.map((t,n)=>j(I,{className:`group`,children:M(`div`,{className:`p-3 space-y-2`,children:[M(`div`,{className:`flex justify-between items-center`,children:[j(B,{variant:`secondary`,className:`font-mono`,children:n+1}),j(P,{variant:`ghost`,size:`sm`,className:`opacity-0 group-hover:opacity-100 transition-opacity text-destructive`,onClick:()=>r(o.filter((e,t)=>t!==n)),children:j(Re,{className:`w-3 h-3`})})]}),j(`div`,{className:`pl-2 border-l-2`,children:s&&a(`${e}[${n}]`,s,t,t=>{i?.(e,n,t)})})]})},n)),M(P,{variant:`outline`,size:`sm`,className:`w-full border-dashed`,onClick:()=>r([...o,s?.default||(s?.type===`object`?{}:``)]),children:[j(Ee,{className:`w-4 h-4 mr-1`}),` 添加项`]})]})}function En({field:e,value:t,onChange:n}){return M(`div`,{className:`p-3 rounded-lg bg-muted/50 border space-y-2`,children:[M(`p`,{className:`flex items-center gap-1 text-xs font-semibold text-muted-foreground`,children:[j(me,{className:`w-3 h-3`}),` 数组输入 (每行一个值)`]}),j(W,{value:Array.isArray(t)?t.join(`
|
|
4
4
|
`):``,onChange:e=>n(e.target.value.split(`
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
/*! tailwindcss v4.1.14 | MIT License | https://tailwindcss.com */
|
|
2
|
+
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) 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-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-space-x-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking: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;--tw-ease:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,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-red-400:oklch(70.4% .191 22.216);--color-red-500:oklch(63.7% .237 25.331);--color-red-600:oklch(57.7% .245 27.325);--color-orange-500:oklch(70.5% .213 47.604);--color-amber-50:oklch(98.7% .022 95.277);--color-amber-100:oklch(96.2% .059 95.617);--color-amber-200:oklch(92.4% .12 95.746);--color-amber-300:oklch(87.9% .169 91.605);--color-amber-400:oklch(82.8% .189 84.429);--color-amber-500:oklch(76.9% .188 70.08);--color-amber-600:oklch(66.6% .179 58.318);--color-amber-700:oklch(55.5% .163 48.998);--color-amber-800:oklch(47.3% .137 46.201);--color-amber-900:oklch(41.4% .112 45.904);--color-amber-950:oklch(27.9% .077 45.635);--color-yellow-400:oklch(85.2% .199 91.936);--color-yellow-500:oklch(79.5% .184 86.047);--color-yellow-700:oklch(55.4% .135 66.442);--color-green-500:oklch(72.3% .219 149.579);--color-emerald-50:oklch(97.9% .021 166.113);--color-emerald-100:oklch(95% .052 163.051);--color-emerald-200:oklch(90.5% .093 164.15);--color-emerald-400:oklch(76.5% .177 163.223);--color-emerald-500:oklch(69.6% .17 162.48);--color-emerald-600:oklch(59.6% .145 163.225);--color-emerald-800:oklch(43.2% .095 166.913);--color-emerald-900:oklch(37.8% .077 168.94);--color-emerald-950:oklch(26.2% .051 172.552);--color-blue-400:oklch(70.7% .165 254.624);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-600:oklch(54.6% .245 262.881);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-500:oklch(55.1% .027 264.364);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-xs:20rem;--container-md:28rem;--container-lg:32rem;--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:calc(1.5/1);--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);--text-3xl:1.875rem;--text-3xl--line-height:calc(2.25/1.875);--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-tight:-.025em;--tracking-wider:.05em;--leading-relaxed:1.625;--radius-xl:.75rem;--ease-out:cubic-bezier(0,0,.2,1);--animate-pulse:pulse 2s cubic-bezier(.4,0,.6,1)infinite;--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%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,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;-webkit-text-decoration:inherit;-webkit-text-decoration: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{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]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}:root{--background:0 0% 100%;--foreground:240 10% 3.9%;--card:0 0% 100%;--card-foreground:240 10% 3.9%;--popover:0 0% 100%;--popover-foreground:240 10% 3.9%;--primary:240 5.9% 10%;--primary-foreground:0 0% 98%;--secondary:240 4.8% 95.9%;--secondary-foreground:240 5.9% 10%;--muted:240 4.8% 95.9%;--muted-foreground:240 3.8% 46.1%;--accent:240 4.8% 95.9%;--accent-foreground:240 5.9% 10%;--destructive:0 84.2% 60.2%;--destructive-foreground:0 0% 98%;--border:240 5.9% 90%;--input:240 5.9% 90%;--ring:240 5.9% 10%;--radius:.5rem;--sidebar:0 0% 98%;--sidebar-foreground:240 5.3% 26.1%;--sidebar-primary:240 5.9% 10%;--sidebar-primary-foreground:0 0% 98%;--sidebar-accent:240 4.8% 95.9%;--sidebar-accent-foreground:240 5.9% 10%;--sidebar-border:220 13% 91%;--sidebar-ring:240 5.9% 10%}.dark{--background:240 10% 3.9%;--foreground:0 0% 98%;--card:240 10% 3.9%;--card-foreground:0 0% 98%;--popover:240 10% 3.9%;--popover-foreground:0 0% 98%;--primary:0 0% 98%;--primary-foreground:240 5.9% 10%;--secondary:240 3.7% 15.9%;--secondary-foreground:0 0% 98%;--muted:240 3.7% 15.9%;--muted-foreground:240 5% 64.9%;--accent:240 3.7% 15.9%;--accent-foreground:0 0% 98%;--destructive:0 62.8% 30.6%;--destructive-foreground:0 0% 98%;--border:240 3.7% 15.9%;--input:240 3.7% 15.9%;--ring:240 4.9% 83.9%;--sidebar:240 5.9% 10%;--sidebar-foreground:240 4.8% 95.9%;--sidebar-primary:0 0% 98%;--sidebar-primary-foreground:240 5.9% 10%;--sidebar-accent:240 3.7% 15.9%;--sidebar-accent-foreground:240 4.8% 95.9%;--sidebar-border:240 3.7% 15.9%;--sidebar-ring:240 4.9% 83.9%}*{border-color:hsl(var(--border));-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}html{scroll-behavior:smooth}body{background-color:hsl(var(--background));color:hsl(var(--foreground));font-feature-settings:"cv02","cv03","cv04","cv11"}}@layer components;@layer utilities{.pointer-events-none{pointer-events:none}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.inset-0{inset:calc(var(--spacing)*0)}.top-1\/2{top:50%}.top-4{top:calc(var(--spacing)*4)}.top-\[50\%\]{top:50%}.right-2{right:calc(var(--spacing)*2)}.right-4{right:calc(var(--spacing)*4)}.left-2{left:calc(var(--spacing)*2)}.left-3{left:calc(var(--spacing)*3)}.left-\[50\%\]{left:50%}.z-50{z-index:50}.m-0{margin:calc(var(--spacing)*0)}.-mx-1{margin-inline:calc(var(--spacing)*-1)}.mx-4{margin-inline:calc(var(--spacing)*4)}.mx-6{margin-inline:calc(var(--spacing)*6)}.mx-auto{margin-inline:auto}.my-1{margin-block:calc(var(--spacing)*1)}.my-2{margin-block:calc(var(--spacing)*2)}.mt-0\.5{margin-top:calc(var(--spacing)*.5)}.mt-1{margin-top:calc(var(--spacing)*1)}.mt-2{margin-top:calc(var(--spacing)*2)}.mt-3{margin-top:calc(var(--spacing)*3)}.mt-4{margin-top:calc(var(--spacing)*4)}.mt-6{margin-top:calc(var(--spacing)*6)}.mr-1{margin-right:calc(var(--spacing)*1)}.mb-1{margin-bottom:calc(var(--spacing)*1)}.mb-3{margin-bottom:calc(var(--spacing)*3)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.ml-1{margin-left:calc(var(--spacing)*1)}.ml-2{margin-left: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-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.aspect-square{aspect-ratio:1}.h-2{height:calc(var(--spacing)*2)}.h-2\.5{height:calc(var(--spacing)*2.5)}.h-3{height:calc(var(--spacing)*3)}.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-8{height:calc(var(--spacing)*8)}.h-9{height:calc(var(--spacing)*9)}.h-10{height:calc(var(--spacing)*10)}.h-12{height:calc(var(--spacing)*12)}.h-14{height:calc(var(--spacing)*14)}.h-16{height:calc(var(--spacing)*16)}.h-20{height:calc(var(--spacing)*20)}.h-32{height:calc(var(--spacing)*32)}.h-40{height:calc(var(--spacing)*40)}.h-48{height:calc(var(--spacing)*48)}.h-60{height:calc(var(--spacing)*60)}.h-96{height:calc(var(--spacing)*96)}.h-\[1px\]{height:1px}.h-\[var\(--radix-select-trigger-height\)\]{height:var(--radix-select-trigger-height)}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.max-h-60{max-height:calc(var(--spacing)*60)}.max-h-96{max-height:calc(var(--spacing)*96)}.max-h-\[80vh\]{max-height:80vh}.max-h-\[600px\]{max-height:600px}.min-h-0{min-height:calc(var(--spacing)*0)}.min-h-\[60px\]{min-height:60px}.min-h-\[80px\]{min-height:80px}.min-h-\[100px\]{min-height:100px}.min-h-\[350px\]{min-height:350px}.min-h-\[400px\]{min-height:400px}.min-h-screen{min-height:100vh}.w-1\/3{width:33.3333%}.w-2\.5{width:calc(var(--spacing)*2.5)}.w-3{width:calc(var(--spacing)*3)}.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-16{width:calc(var(--spacing)*16)}.w-20{width:calc(var(--spacing)*20)}.w-24{width:calc(var(--spacing)*24)}.w-32{width:calc(var(--spacing)*32)}.w-48{width:calc(var(--spacing)*48)}.w-56{width:calc(var(--spacing)*56)}.w-64{width:calc(var(--spacing)*64)}.w-\[1px\]{width:1px}.w-full{width:100%}.max-w-7xl{max-width:var(--container-7xl)}.max-w-\[200px\]{max-width:200px}.max-w-\[300px\]{max-width:300px}.max-w-\[400px\]{max-width:400px}.max-w-lg{max-width:var(--container-lg)}.max-w-md{max-width:var(--container-md)}.max-w-xs{max-width:var(--container-xs)}.min-w-0{min-width:calc(var(--spacing)*0)}.min-w-9{min-width:calc(var(--spacing)*9)}.min-w-\[8rem\]{min-width:8rem}.min-w-\[var\(--radix-select-trigger-width\)\]{min-width:var(--radix-select-trigger-width)}.flex-1{flex:1}.shrink-0{flex-shrink:0}.translate-x-0\.5{--tw-translate-x:calc(var(--spacing)*.5);translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-x-4\.5{--tw-translate-x:calc(var(--spacing)*4.5);translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-x-\[-50\%\]{--tw-translate-x:-50%;translate:var(--tw-translate-x)var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y:calc(calc(1/2*100%)*-1);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)}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:1s linear infinite spin}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.resize-none{resize:none}.resize-y{resize:vertical}.appearance-none{appearance:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-row{flex-direction:row}.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}.justify-start{justify-content:flex-start}.gap-0\.5{gap:calc(var(--spacing)*.5)}.gap-1{gap:calc(var(--spacing)*1)}.gap-1\.5{gap:calc(var(--spacing)*1.5)}.gap-2{gap:calc(var(--spacing)*2)}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1)*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-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-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-x-1>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*1)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*1)*calc(1 - var(--tw-space-x-reverse)))}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-\[inherit\]{border-radius:inherit}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-sm{border-radius:calc(var(--radius) - 4px)}.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-2{border-style:var(--tw-border-style);border-width:2px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-l-\[3px\]{border-left-style:var(--tw-border-style);border-left-width:3px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-none{--tw-border-style:none;border-style:none}.border-amber-200{border-color:var(--color-amber-200)}.border-destructive\/50{border-color:hsl(var(--destructive))}@supports (color:color-mix(in lab, red, red)){.border-destructive\/50{border-color:color-mix(in oklab,hsl(var(--destructive))50%,transparent)}}.border-emerald-200{border-color:var(--color-emerald-200)}.border-input{border-color:hsl(var(--input))}.border-muted-foreground{border-color:hsl(var(--muted-foreground))}.border-primary{border-color:hsl(var(--primary))}.border-transparent{border-color:#0000}.border-yellow-500\/50{border-color:#edb20080}@supports (color:color-mix(in lab, red, red)){.border-yellow-500\/50{border-color:color-mix(in oklab,var(--color-yellow-500)50%,transparent)}}.border-t-foreground{border-top-color:hsl(var(--foreground))}.border-t-transparent{border-top-color:#0000}.border-l-amber-500{border-left-color:var(--color-amber-500)}.border-l-blue-500{border-left-color:var(--color-blue-500)}.border-l-gray-500{border-left-color:var(--color-gray-500)}.border-l-red-500{border-left-color:var(--color-red-500)}.border-l-transparent{border-left-color:#0000}.bg-accent{background-color:hsl(var(--accent))}.bg-amber-50{background-color:var(--color-amber-50)}.bg-amber-100{background-color:var(--color-amber-100)}.bg-background,.bg-background\/95{background-color:hsl(var(--background))}@supports (color:color-mix(in lab, red, red)){.bg-background\/95{background-color:color-mix(in oklab,hsl(var(--background))95%,transparent)}}.bg-black\/80{background-color:#000c}@supports (color:color-mix(in lab, red, red)){.bg-black\/80{background-color:color-mix(in oklab,var(--color-black)80%,transparent)}}.bg-border{background-color:hsl(var(--border))}.bg-card{background-color:hsl(var(--card))}.bg-destructive{background-color:hsl(var(--destructive))}.bg-emerald-50{background-color:var(--color-emerald-50)}.bg-emerald-100{background-color:var(--color-emerald-100)}.bg-foreground{background-color:hsl(var(--foreground))}.bg-muted{background-color:hsl(var(--muted))}.bg-muted-foreground\/30{background-color:hsl(var(--muted-foreground))}@supports (color:color-mix(in lab, red, red)){.bg-muted-foreground\/30{background-color:color-mix(in oklab,hsl(var(--muted-foreground))30%,transparent)}}.bg-muted\/30{background-color:hsl(var(--muted))}@supports (color:color-mix(in lab, red, red)){.bg-muted\/30{background-color:color-mix(in oklab,hsl(var(--muted))30%,transparent)}}.bg-muted\/50{background-color:hsl(var(--muted))}@supports (color:color-mix(in lab, red, red)){.bg-muted\/50{background-color:color-mix(in oklab,hsl(var(--muted))50%,transparent)}}.bg-popover{background-color:hsl(var(--popover))}.bg-primary,.bg-primary\/10{background-color:hsl(var(--primary))}@supports (color:color-mix(in lab, red, red)){.bg-primary\/10{background-color:color-mix(in oklab,hsl(var(--primary))10%,transparent)}}.bg-secondary,.bg-secondary\/50{background-color:hsl(var(--secondary))}@supports (color:color-mix(in lab, red, red)){.bg-secondary\/50{background-color:color-mix(in oklab,hsl(var(--secondary))50%,transparent)}}.bg-sidebar{background-color:hsl(var(--sidebar))}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.p-0{padding:calc(var(--spacing)*0)}.p-1{padding:calc(var(--spacing)*1)}.p-1\.5{padding:calc(var(--spacing)*1.5)}.p-2{padding:calc(var(--spacing)*2)}.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)}.p-\[1px\]{padding:1px}.px-1{padding-inline:calc(var(--spacing)*1)}.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)}.px-8{padding-inline:calc(var(--spacing)*8)}.py-0{padding-block:calc(var(--spacing)*0)}.py-0\.5{padding-block:calc(var(--spacing)*.5)}.py-1{padding-block:calc(var(--spacing)*1)}.py-1\.5{padding-block:calc(var(--spacing)*1.5)}.py-2{padding-block:calc(var(--spacing)*2)}.py-3{padding-block:calc(var(--spacing)*3)}.py-4{padding-block:calc(var(--spacing)*4)}.py-8{padding-block:calc(var(--spacing)*8)}.py-12{padding-block:calc(var(--spacing)*12)}.pt-0{padding-top:calc(var(--spacing)*0)}.pt-2{padding-top:calc(var(--spacing)*2)}.pt-3{padding-top:calc(var(--spacing)*3)}.pr-1{padding-right:calc(var(--spacing)*1)}.pr-2{padding-right:calc(var(--spacing)*2)}.pr-8{padding-right:calc(var(--spacing)*8)}.pb-2{padding-bottom:calc(var(--spacing)*2)}.pb-4{padding-bottom:calc(var(--spacing)*4)}.pl-2{padding-left:calc(var(--spacing)*2)}.pl-8{padding-left:calc(var(--spacing)*8)}.pl-9{padding-left:calc(var(--spacing)*9)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.font-mono{font-family:var(--font-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--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}.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)}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.text-accent-foreground{color:hsl(var(--accent-foreground))}.text-amber-500{color:var(--color-amber-500)}.text-amber-600{color:var(--color-amber-600)}.text-amber-700{color:var(--color-amber-700)}.text-amber-800{color:var(--color-amber-800)}.text-background{color:hsl(var(--background))}.text-blue-500{color:var(--color-blue-500)}.text-blue-600{color:var(--color-blue-600)}.text-card-foreground{color:hsl(var(--card-foreground))}.text-current{color:currentColor}.text-destructive{color:hsl(var(--destructive))}.text-destructive-foreground{color:hsl(var(--destructive-foreground))}.text-emerald-500{color:var(--color-emerald-500)}.text-emerald-600{color:var(--color-emerald-600)}.text-emerald-800{color:var(--color-emerald-800)}.text-foreground{color:hsl(var(--foreground))}.text-gray-400{color:var(--color-gray-400)}.text-green-500{color:var(--color-green-500)}.text-muted-foreground,.text-muted-foreground\/30{color:hsl(var(--muted-foreground))}@supports (color:color-mix(in lab, red, red)){.text-muted-foreground\/30{color:color-mix(in oklab,hsl(var(--muted-foreground))30%,transparent)}}.text-orange-500{color:var(--color-orange-500)}.text-popover-foreground{color:hsl(var(--popover-foreground))}.text-primary{color:hsl(var(--primary))}.text-primary-foreground{color:hsl(var(--primary-foreground))}.text-red-400{color:var(--color-red-400)}.text-red-600{color:var(--color-red-600)}.text-secondary-foreground{color:hsl(var(--secondary-foreground))}.text-yellow-500{color:var(--color-yellow-500)}.text-yellow-700{color:var(--color-yellow-700)}.uppercase{text-transform:uppercase}.underline{text-decoration-line:underline}.underline-offset-4{text-underline-offset:4px}.accent-foreground{accent-color:hsl(var(--foreground))}.opacity-0{opacity:0}.opacity-30{opacity:.3}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.shadow{--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-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px 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-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)}.ring{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-0{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(0px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-offset-background{--tw-ring-offset-color:hsl(var(--background))}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.backdrop-blur{--tw-backdrop-blur:blur(8px);-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}.duration-300{--tw-duration:.3s;transition-duration:.3s}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}@media (hover:hover){.group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}}.file\:border-0::file-selector-button{border-style:var(--tw-border-style);border-width:0}.file\:bg-transparent::file-selector-button{background-color:#0000}.file\:text-sm::file-selector-button{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.file\:font-medium::file-selector-button{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.file\:text-foreground::file-selector-button{color:hsl(var(--foreground))}.placeholder\:text-muted-foreground::placeholder{color:hsl(var(--muted-foreground))}@media (hover:hover){.hover\:-translate-y-0\.5:hover{--tw-translate-y:calc(var(--spacing)*-.5);translate:var(--tw-translate-x)var(--tw-translate-y)}.hover\:bg-accent:hover{background-color:hsl(var(--accent))}.hover\:bg-destructive\/90:hover{background-color:hsl(var(--destructive))}@supports (color:color-mix(in lab, red, red)){.hover\:bg-destructive\/90:hover{background-color:color-mix(in oklab,hsl(var(--destructive))90%,transparent)}}.hover\:bg-muted\/30:hover{background-color:hsl(var(--muted))}@supports (color:color-mix(in lab, red, red)){.hover\:bg-muted\/30:hover{background-color:color-mix(in oklab,hsl(var(--muted))30%,transparent)}}.hover\:bg-primary\/90:hover{background-color:hsl(var(--primary))}@supports (color:color-mix(in lab, red, red)){.hover\:bg-primary\/90:hover{background-color:color-mix(in oklab,hsl(var(--primary))90%,transparent)}}.hover\:bg-secondary\/80:hover{background-color:hsl(var(--secondary))}@supports (color:color-mix(in lab, red, red)){.hover\:bg-secondary\/80:hover{background-color:color-mix(in oklab,hsl(var(--secondary))80%,transparent)}}.hover\:text-accent-foreground:hover{color:hsl(var(--accent-foreground))}.hover\:no-underline:hover{text-decoration-line:none}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}.hover\:shadow-md:hover{--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)}}.focus\:bg-accent:focus{background-color:hsl(var(--accent))}.focus\:text-accent-foreground:focus{color:hsl(var(--accent-foreground))}.focus\:ring-1:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-ring:focus{--tw-ring-color:hsl(var(--ring))}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus-visible\:ring-1:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-ring:focus-visible{--tw-ring-color:hsl(var(--ring))}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.focus-visible\:ring-offset-background:focus-visible{--tw-ring-offset-color:hsl(var(--background))}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[side\=bottom\]\:translate-y-1[data-side=bottom]{--tw-translate-y:calc(var(--spacing)*1);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[side\=left\]\:-translate-x-1[data-side=left]{--tw-translate-x:calc(var(--spacing)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[side\=right\]\:translate-x-1[data-side=right]{--tw-translate-x:calc(var(--spacing)*1);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[side\=top\]\:-translate-y-1[data-side=top]{--tw-translate-y:calc(var(--spacing)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[state\=active\]\:bg-background[data-state=active]{background-color:hsl(var(--background))}.data-\[state\=active\]\:text-foreground[data-state=active]{color:hsl(var(--foreground))}.data-\[state\=active\]\:shadow[data-state=active]{--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)}.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\]\:bg-primary[data-state=checked]{background-color:hsl(var(--primary))}.data-\[state\=checked\]\:text-primary-foreground[data-state=checked]{color:hsl(var(--primary-foreground))}.data-\[state\=closed\]\:animate-accordion-up[data-state=closed]{animation:.2s ease-out accordion-up}.data-\[state\=open\]\:animate-accordion-down[data-state=open]{animation:.2s ease-out accordion-down}.data-\[state\=open\]\:bg-accent[data-state=open]{background-color:hsl(var(--accent))}.data-\[state\=open\]\:text-muted-foreground[data-state=open]{color:hsl(var(--muted-foreground))}.data-\[state\=unchecked\]\:translate-x-0[data-state=unchecked]{--tw-translate-x:calc(var(--spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[state\=unchecked\]\:bg-input[data-state=unchecked]{background-color:hsl(var(--input))}@supports ((-webkit-backdrop-filter:var(--tw)) or (backdrop-filter:var(--tw))){.supports-\[backdrop-filter\]\:bg-background\/60{background-color:hsl(var(--background))}@supports (color:color-mix(in lab, red, red)){.supports-\[backdrop-filter\]\:bg-background\/60{background-color:color-mix(in oklab,hsl(var(--background))60%,transparent)}}}@media (width>=40rem){.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\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:justify-end{justify-content:flex-end}:where(.sm\:space-x-2>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*2)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-x-reverse)))}.sm\:rounded-lg{border-radius:var(--radius)}.sm\:text-left{text-align:left}}@media (width>=48rem){.md\:flex{display:flex}.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\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}}@media (width>=64rem){.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}.dark\:border-amber-800:is(.dark *){border-color:var(--color-amber-800)}.dark\:border-destructive:is(.dark *){border-color:hsl(var(--destructive))}.dark\:border-emerald-800:is(.dark *){border-color:var(--color-emerald-800)}.dark\:bg-amber-900\/30:is(.dark *){background-color:#7b33064d}@supports (color:color-mix(in lab, red, red)){.dark\:bg-amber-900\/30:is(.dark *){background-color:color-mix(in oklab,var(--color-amber-900)30%,transparent)}}.dark\:bg-amber-950\/20:is(.dark *){background-color:#46190133}@supports (color:color-mix(in lab, red, red)){.dark\:bg-amber-950\/20:is(.dark *){background-color:color-mix(in oklab,var(--color-amber-950)20%,transparent)}}.dark\:bg-amber-950\/50:is(.dark *){background-color:#46190180}@supports (color:color-mix(in lab, red, red)){.dark\:bg-amber-950\/50:is(.dark *){background-color:color-mix(in oklab,var(--color-amber-950)50%,transparent)}}.dark\:bg-emerald-900\/30:is(.dark *){background-color:#004e3b4d}@supports (color:color-mix(in lab, red, red)){.dark\:bg-emerald-900\/30:is(.dark *){background-color:color-mix(in oklab,var(--color-emerald-900)30%,transparent)}}.dark\:bg-emerald-950\/50:is(.dark *){background-color:#002c2280}@supports (color:color-mix(in lab, red, red)){.dark\:bg-emerald-950\/50:is(.dark *){background-color:color-mix(in oklab,var(--color-emerald-950)50%,transparent)}}.dark\:text-amber-300:is(.dark *){color:var(--color-amber-300)}.dark\:text-amber-400:is(.dark *){color:var(--color-amber-400)}.dark\:text-blue-400:is(.dark *){color:var(--color-blue-400)}.dark\:text-emerald-400:is(.dark *){color:var(--color-emerald-400)}.dark\:text-red-400:is(.dark *){color:var(--color-red-400)}.dark\:text-yellow-400:is(.dark *){color:var(--color-yellow-400)}.\[\&_p\]\:leading-relaxed p{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:size-4 svg{width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&\>span\]\:line-clamp-1>span{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.\[\&\>svg\]\:absolute>svg{position:absolute}.\[\&\>svg\]\:top-4>svg{top:calc(var(--spacing)*4)}.\[\&\>svg\]\:left-4>svg{left:calc(var(--spacing)*4)}.\[\&\>svg\]\:size-4>svg{width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}.\[\&\>svg\]\:shrink-0>svg{flex-shrink:0}.\[\&\>svg\]\:text-amber-600>svg{color:var(--color-amber-600)}.\[\&\>svg\]\:text-destructive>svg{color:hsl(var(--destructive))}.\[\&\>svg\]\:text-emerald-600>svg{color:var(--color-emerald-600)}.\[\&\>svg\]\:text-foreground>svg{color:hsl(var(--foreground))}.dark\:\[\&\>svg\]\:text-amber-400:is(.dark *)>svg{color:var(--color-amber-400)}.dark\:\[\&\>svg\]\:text-emerald-400:is(.dark *)>svg{color:var(--color-emerald-400)}.\[\&\>svg\+div\]\:translate-y-\[-3px\]>svg+div{--tw-translate-y:-3px;translate:var(--tw-translate-x)var(--tw-translate-y)}.\[\&\>svg\~\*\]\:pl-7>svg~*{padding-left:calc(var(--spacing)*7)}.\[\&\[data-state\=open\]\>svg\]\:rotate-180[data-state=open]>svg{rotate:180deg}}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:hsl(var(--muted-foreground)/.3);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:hsl(var(--muted-foreground)/.5)}@keyframes slideDownAndFade{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}@keyframes slideUpAndFade{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@keyframes contentShow{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes pulse-soft{0%,to{opacity:1}50%{opacity:.5}}@keyframes spin{to{transform:rotate(360deg)}}:focus-visible{outline:2px solid hsl(var(--ring));outline-offset:2px;border-radius:calc(var(--radius) - 2px)}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.menu-item{border-radius:calc(var(--radius) + 2px);cursor:pointer;color:hsl(var(--muted-foreground));align-items:center;gap:.75rem;padding:.5rem .75rem;font-size:.875rem;text-decoration:none;transition:all .2s cubic-bezier(.4,0,.2,1);display:flex}.menu-item:hover:not(.active){background-color:hsl(var(--accent));color:hsl(var(--accent-foreground))}.menu-item.active{background-color:hsl(var(--primary));color:hsl(var(--primary-foreground))}.sandbox-container{gap:1rem;width:100%;max-width:100vw;height:calc(100vh - 42px - 3rem);padding:1rem;display:flex;position:relative;overflow:hidden}.channel-sidebar{flex-direction:column;flex-shrink:0;width:256px;transition:transform .2s cubic-bezier(.4,0,.2,1);display:flex}.chat-area{flex-direction:column;flex:1;gap:.75rem;min-width:0;height:100%;display:flex;overflow:hidden}.rich-text-editor{font-family:inherit;transition:border-color .2s cubic-bezier(.4,0,.2,1)}.rich-text-editor:focus{box-shadow:0 0 0 1px hsl(var(--ring));border-color:hsl(var(--ring))!important}.rich-text-editor:empty:before{content:attr(data-placeholder);color:hsl(var(--muted-foreground));pointer-events:none}.rich-text-editor .editor-face{vertical-align:middle;width:24px;height:24px;margin:0 2px;display:inline-block}.rich-text-editor .editor-image{border-radius:8px;max-width:200px;margin:4px 0;display:block}.rich-text-editor .editor-at{background-color:hsl(var(--accent));color:hsl(var(--accent-foreground));-webkit-user-select:none;user-select:none;cursor:pointer;border-radius:4px;align-items:center;margin:0 2px;padding:2px 6px;font-size:.9em;transition:background-color .2s;display:inline-flex}.rich-text-editor .editor-at:hover{background-color:hsl(var(--muted))}.rich-text-editor .editor-at-symbol{margin-right:2px;font-weight:600}.rich-text-editor .editor-at-name{font-weight:500}.rich-text-editor::-webkit-scrollbar{width:6px}.rich-text-editor::-webkit-scrollbar-thumb{background:hsl(var(--muted-foreground)/.3);border-radius:4px}.rich-text-editor::-webkit-scrollbar-thumb:hover{background:hsl(var(--muted-foreground)/.5)}.mobile-channel-toggle,.channel-overlay{display:none}@media print{*{box-shadow:none!important;transition:none!important;animation:none!important}.no-print{display:none}}@media (width<=768px){.sandbox-container{flex-direction:column;gap:0;height:calc(100vh - 42px - 3rem);padding:0}.mobile-channel-toggle{background:hsl(var(--primary));color:hsl(var(--primary-foreground));border-radius:var(--radius);cursor:pointer;border:none;justify-content:center;align-items:center;gap:.5rem;margin:.5rem;padding:.75rem 1rem;font-size:.875rem;font-weight:500;display:flex}.channel-sidebar{z-index:1000;background:hsl(var(--background));width:280px;max-width:80vw;position:fixed;top:0;bottom:0;left:0;transform:translate(-100%);box-shadow:4px 0 16px #0000001a}.channel-sidebar.show{transform:translate(0)}.channel-overlay{z-index:999;background-color:#00000080;animation:.2s ease-out fadeIn;display:block;position:fixed;inset:0}.chat-area{flex:1;gap:.5rem;height:auto;padding:0 .5rem .5rem}}@media (width>=768px) and (width<=1024px){.sandbox-container{gap:.75rem;padding:.75rem}.channel-sidebar{width:200px}.chat-area{gap:.5rem}}@media (width>=1400px){.sandbox-container{gap:1.5rem;padding:1.5rem}.channel-sidebar{width:280px}}@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-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-space-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-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";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:"<percentage>";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:"<length>";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}@property --tw-ease{syntax:"*";inherits:false}@keyframes pulse{50%{opacity:.5}}@keyframes accordion-down{0%{height:0}to{height:var(--radix-accordion-content-height)}}@keyframes accordion-up{0%{height:var(--radix-accordion-content-height)}to{height:0}}
|
|
3
|
+
/*$vite$:1*/
|