function Km(o,d){for(var a=0;ac[f]})}}}return Object.freeze(Object.defineProperty(o,Symbol.toStringTag,{value:"Module"}))}(function(){const d=document.createElement("link").relList;if(d&&d.supports&&d.supports("modulepreload"))return;for(const f of document.querySelectorAll('link[rel="modulepreload"]'))c(f);new MutationObserver(f=>{for(const m of f)if(m.type==="childList")for(const h of m.addedNodes)h.tagName==="LINK"&&h.rel==="modulepreload"&&c(h)}).observe(document,{childList:!0,subtree:!0});function a(f){const m={};return f.integrity&&(m.integrity=f.integrity),f.referrerPolicy&&(m.referrerPolicy=f.referrerPolicy),f.crossOrigin==="use-credentials"?m.credentials="include":f.crossOrigin==="anonymous"?m.credentials="omit":m.credentials="same-origin",m}function c(f){if(f.ep)return;f.ep=!0;const m=a(f);fetch(f.href,m)}})();function tf(o){return o&&o.__esModule&&Object.prototype.hasOwnProperty.call(o,"default")?o.default:o}var Ya={exports:{}},ws={},Ja={exports:{}},je={};/** * @license React * react.production.min.js * * Copyright (c) Facebook, Inc. and its affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */var yu;function Qm(){if(yu)return je;yu=1;var o=Symbol.for("react.element"),d=Symbol.for("react.portal"),a=Symbol.for("react.fragment"),c=Symbol.for("react.strict_mode"),f=Symbol.for("react.profiler"),m=Symbol.for("react.provider"),h=Symbol.for("react.context"),x=Symbol.for("react.forward_ref"),E=Symbol.for("react.suspense"),b=Symbol.for("react.memo"),k=Symbol.for("react.lazy"),P=Symbol.iterator;function A(j){return j===null||typeof j!="object"?null:(j=P&&j[P]||j["@@iterator"],typeof j=="function"?j:null)}var I={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},O=Object.assign,S={};function C(j,v,B){this.props=j,this.context=v,this.refs=S,this.updater=B||I}C.prototype.isReactComponent={},C.prototype.setState=function(j,v){if(typeof j!="object"&&typeof j!="function"&&j!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,j,v,"setState")},C.prototype.forceUpdate=function(j){this.updater.enqueueForceUpdate(this,j,"forceUpdate")};function _(){}_.prototype=C.prototype;function L(j,v,B){this.props=j,this.context=v,this.refs=S,this.updater=B||I}var q=L.prototype=new _;q.constructor=L,O(q,C.prototype),q.isPureReactComponent=!0;var Z=Array.isArray,H=Object.prototype.hasOwnProperty,T={current:null},F={key:!0,ref:!0,__self:!0,__source:!0};function ne(j,v,B){var Y,K={},oe=null,pe=null;if(v!=null)for(Y in v.ref!==void 0&&(pe=v.ref),v.key!==void 0&&(oe=""+v.key),v)H.call(v,Y)&&!F.hasOwnProperty(Y)&&(K[Y]=v[Y]);var me=arguments.length-2;if(me===1)K.children=B;else if(1>>1,v=W[j];if(0>>1;jf(K,G))oef(pe,K)?(W[j]=pe,W[oe]=G,j=oe):(W[j]=K,W[Y]=G,j=Y);else if(oef(pe,G))W[j]=pe,W[oe]=G,j=oe;else break e}}return ae}function f(W,ae){var G=W.sortIndex-ae.sortIndex;return G!==0?G:W.id-ae.id}if(typeof performance=="object"&&typeof performance.now=="function"){var m=performance;o.unstable_now=function(){return m.now()}}else{var h=Date,x=h.now();o.unstable_now=function(){return h.now()-x}}var E=[],b=[],k=1,P=null,A=3,I=!1,O=!1,S=!1,C=typeof setTimeout=="function"?setTimeout:null,_=typeof clearTimeout=="function"?clearTimeout:null,L=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function q(W){for(var ae=a(b);ae!==null;){if(ae.callback===null)c(b);else if(ae.startTime<=W)c(b),ae.sortIndex=ae.expirationTime,d(E,ae);else break;ae=a(b)}}function Z(W){if(S=!1,q(W),!O)if(a(E)!==null)O=!0,Ne(H);else{var ae=a(b);ae!==null&&ke(Z,ae.startTime-W)}}function H(W,ae){O=!1,S&&(S=!1,_(ne),ne=-1),I=!0;var G=A;try{for(q(ae),P=a(E);P!==null&&(!(P.expirationTime>ae)||W&&!ye());){var j=P.callback;if(typeof j=="function"){P.callback=null,A=P.priorityLevel;var v=j(P.expirationTime<=ae);ae=o.unstable_now(),typeof v=="function"?P.callback=v:P===a(E)&&c(E),q(ae)}else c(E);P=a(E)}if(P!==null)var B=!0;else{var Y=a(b);Y!==null&&ke(Z,Y.startTime-ae),B=!1}return B}finally{P=null,A=G,I=!1}}var T=!1,F=null,ne=-1,se=5,X=-1;function ye(){return!(o.unstable_now()-XW||125j?(W.sortIndex=G,d(b,W),a(E)===null&&W===a(b)&&(S?(_(ne),ne=-1):S=!0,ke(Z,G-j))):(W.sortIndex=v,d(E,W),O||I||(O=!0,Ne(H))),W},o.unstable_shouldYield=ye,o.unstable_wrapCallback=function(W){var ae=A;return function(){var G=A;A=ae;try{return W.apply(this,arguments)}finally{A=G}}}})(ti)),ti}var Nu;function Jm(){return Nu||(Nu=1,ei.exports=Ym()),ei.exports}/** * @license React * react-dom.production.min.js * * Copyright (c) Facebook, Inc. and its affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */var Su;function Xm(){if(Su)return ft;Su=1;var o=Ci(),d=Jm();function a(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,r=1;r"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),E=Object.prototype.hasOwnProperty,b=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,k={},P={};function A(e){return E.call(P,e)?!0:E.call(k,e)?!1:b.test(e)?P[e]=!0:(k[e]=!0,!1)}function I(e,t,r,s){if(r!==null&&r.type===0)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return s?!1:r!==null?!r.acceptsBooleans:(e=e.toLowerCase().slice(0,5),e!=="data-"&&e!=="aria-");default:return!1}}function O(e,t,r,s){if(t===null||typeof t>"u"||I(e,t,r,s))return!0;if(s)return!1;if(r!==null)switch(r.type){case 3:return!t;case 4:return t===!1;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}function S(e,t,r,s,l,i,u){this.acceptsBooleans=t===2||t===3||t===4,this.attributeName=s,this.attributeNamespace=l,this.mustUseProperty=r,this.propertyName=e,this.type=t,this.sanitizeURL=i,this.removeEmptyString=u}var C={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){C[e]=new S(e,0,!1,e,null,!1,!1)}),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];C[t]=new S(t,1,!1,e[1],null,!1,!1)}),["contentEditable","draggable","spellCheck","value"].forEach(function(e){C[e]=new S(e,2,!1,e.toLowerCase(),null,!1,!1)}),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){C[e]=new S(e,2,!1,e,null,!1,!1)}),"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){C[e]=new S(e,3,!1,e.toLowerCase(),null,!1,!1)}),["checked","multiple","muted","selected"].forEach(function(e){C[e]=new S(e,3,!0,e,null,!1,!1)}),["capture","download"].forEach(function(e){C[e]=new S(e,4,!1,e,null,!1,!1)}),["cols","rows","size","span"].forEach(function(e){C[e]=new S(e,6,!1,e,null,!1,!1)}),["rowSpan","start"].forEach(function(e){C[e]=new S(e,5,!1,e.toLowerCase(),null,!1,!1)});var _=/[\-:]([a-z])/g;function L(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(e){var t=e.replace(_,L);C[t]=new S(t,1,!1,e,null,!1,!1)}),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var t=e.replace(_,L);C[t]=new S(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)}),["xml:base","xml:lang","xml:space"].forEach(function(e){var t=e.replace(_,L);C[t]=new S(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)}),["tabIndex","crossOrigin"].forEach(function(e){C[e]=new S(e,1,!1,e.toLowerCase(),null,!1,!1)}),C.xlinkHref=new S("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach(function(e){C[e]=new S(e,1,!1,e.toLowerCase(),null,!0,!0)});function q(e,t,r,s){var l=C.hasOwnProperty(t)?C[t]:null;(l!==null?l.type!==0:s||!(2g||l[u]!==i[g]){var y=` `+l[u].replace(" at new "," at ");return e.displayName&&y.includes("")&&(y=y.replace("",e.displayName)),y}while(1<=u&&0<=g);break}}}finally{B=!1,Error.prepareStackTrace=r}return(e=e?e.displayName||e.name:"")?v(e):""}function K(e){switch(e.tag){case 5:return v(e.type);case 16:return v("Lazy");case 13:return v("Suspense");case 19:return v("SuspenseList");case 0:case 2:case 15:return e=Y(e.type,!1),e;case 11:return e=Y(e.type.render,!1),e;case 1:return e=Y(e.type,!0),e;default:return""}}function oe(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case F:return"Fragment";case T:return"Portal";case se:return"Profiler";case ne:return"StrictMode";case Me:return"Suspense";case _e:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case ye:return(e.displayName||"Context")+".Consumer";case X:return(e._context.displayName||"Context")+".Provider";case ce:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case Pe:return t=e.displayName||null,t!==null?t:oe(e.type)||"Memo";case Ne:t=e._payload,e=e._init;try{return oe(e(t))}catch{}}return null}function pe(e){var t=e.type;switch(e.tag){case 24:return"Cache";case 9:return(t.displayName||"Context")+".Consumer";case 10:return(t._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=t.render,e=e.displayName||e.name||"",t.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return t;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return oe(t);case 8:return t===ne?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof t=="function")return t.displayName||t.name||null;if(typeof t=="string")return t}return null}function me(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function w(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function J(e){var t=w(e)?"checked":"value",r=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),s=""+e[t];if(!e.hasOwnProperty(t)&&typeof r<"u"&&typeof r.get=="function"&&typeof r.set=="function"){var l=r.get,i=r.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return l.call(this)},set:function(u){s=""+u,i.call(this,u)}}),Object.defineProperty(e,t,{enumerable:r.enumerable}),{getValue:function(){return s},setValue:function(u){s=""+u},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function Le(e){e._valueTracker||(e._valueTracker=J(e))}function $t(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var r=t.getValue(),s="";return e&&(s=w(e)?e.checked?"true":"false":e.value),e=s,e!==r?(t.setValue(e),!0):!1}function lt(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}function nt(e,t){var r=t.checked;return G({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:r??e._wrapperState.initialChecked})}function On(e,t){var r=t.defaultValue==null?"":t.defaultValue,s=t.checked!=null?t.checked:t.defaultChecked;r=me(t.value!=null?t.value:r),e._wrapperState={initialChecked:s,initialValue:r,controlled:t.type==="checkbox"||t.type==="radio"?t.checked!=null:t.value!=null}}function Tn(e,t){t=t.checked,t!=null&&q(e,"checked",t,!1)}function qr(e,t){Tn(e,t);var r=me(t.value),s=t.type;if(r!=null)s==="number"?(r===0&&e.value===""||e.value!=r)&&(e.value=""+r):e.value!==""+r&&(e.value=""+r);else if(s==="submit"||s==="reset"){e.removeAttribute("value");return}t.hasOwnProperty("value")?Zr(e,t.type,r):t.hasOwnProperty("defaultValue")&&Zr(e,t.type,me(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function er(e,t,r){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var s=t.type;if(!(s!=="submit"&&s!=="reset"||t.value!==void 0&&t.value!==null))return;t=""+e._wrapperState.initialValue,r||t===e.value||(e.value=t),e.defaultValue=t}r=e.name,r!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,r!==""&&(e.name=r)}function Zr(e,t,r){(t!=="number"||lt(e.ownerDocument)!==e)&&(r==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+r&&(e.defaultValue=""+r))}var tr=Array.isArray;function Ut(e,t,r,s){if(e=e.options,t){t={};for(var l=0;l"+t.valueOf().toString()+"",t=ze.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function Bt(e,t){if(t){var r=e.firstChild;if(r&&r===e.lastChild&&r.nodeType===3){r.nodeValue=t;return}}e.textContent=t}var Vt={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},il=["Webkit","ms","Moz","O"];Object.keys(Vt).forEach(function(e){il.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),Vt[t]=Vt[e]})});function Li(e,t,r){return t==null||typeof t=="boolean"||t===""?"":r||typeof t!="number"||t===0||Vt.hasOwnProperty(e)&&Vt[e]?(""+t).trim():t+"px"}function Ai(e,t){e=e.style;for(var r in t)if(t.hasOwnProperty(r)){var s=r.indexOf("--")===0,l=Li(r,t[r],s);r==="float"&&(r="cssFloat"),s?e.setProperty(r,l):e[r]=l}}var Jf=G({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function dl(e,t){if(t){if(Jf[e]&&(t.children!=null||t.dangerouslySetInnerHTML!=null))throw Error(a(137,e));if(t.dangerouslySetInnerHTML!=null){if(t.children!=null)throw Error(a(60));if(typeof t.dangerouslySetInnerHTML!="object"||!("__html"in t.dangerouslySetInnerHTML))throw Error(a(61))}if(t.style!=null&&typeof t.style!="object")throw Error(a(62))}}function cl(e,t){if(e.indexOf("-")===-1)return typeof t.is=="string";switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var ul=null;function fl(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var pl=null,Jr=null,Xr=null;function Oi(e){if(e=ls(e)){if(typeof pl!="function")throw Error(a(280));var t=e.stateNode;t&&(t=eo(t),pl(e.stateNode,e.type,t))}}function Ti(e){Jr?Xr?Xr.push(e):Xr=[e]:Jr=e}function Ii(){if(Jr){var e=Jr,t=Xr;if(Xr=Jr=null,Oi(e),t)for(e=0;e>>=0,e===0?32:31-(dp(e)/cp|0)|0}var Os=64,Ts=4194304;function Bn(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return e&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function Is(e,t){var r=e.pendingLanes;if(r===0)return 0;var s=0,l=e.suspendedLanes,i=e.pingedLanes,u=r&268435455;if(u!==0){var g=u&~l;g!==0?s=Bn(g):(i&=u,i!==0&&(s=Bn(i)))}else u=r&~l,u!==0?s=Bn(u):i!==0&&(s=Bn(i));if(s===0)return 0;if(t!==0&&t!==s&&(t&l)===0&&(l=s&-s,i=t&-t,l>=i||l===16&&(i&4194240)!==0))return t;if((s&4)!==0&&(s|=r&16),t=e.entangledLanes,t!==0)for(e=e.entanglements,t&=s;0r;r++)t.push(e);return t}function Vn(e,t,r){e.pendingLanes|=t,t!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,t=31-St(t),e[t]=r}function mp(e,t){var r=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=t,e.mutableReadLanes&=t,e.entangledLanes&=t,t=e.entanglements;var s=e.eventTimes;for(e=e.expirationTimes;0=Yn),fd=" ",pd=!1;function md(e,t){switch(e){case"keyup":return Bp.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function hd(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var rn=!1;function Wp(e,t){switch(e){case"compositionend":return hd(t);case"keypress":return t.which!==32?null:(pd=!0,fd);case"textInput":return e=t.data,e===fd&&pd?null:e;default:return null}}function Hp(e,t){if(rn)return e==="compositionend"||!Rl&&md(e,t)?(e=ld(),Vs=Sl=lr=null,rn=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:r,offset:t-e};e=s}e:{for(;r;){if(r.nextSibling){r=r.nextSibling;break e}r=r.parentNode}r=void 0}r=jd(r)}}function Nd(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?Nd(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function Sd(){for(var e=window,t=lt();t instanceof e.HTMLIFrameElement;){try{var r=typeof t.contentWindow.location.href=="string"}catch{r=!1}if(r)e=t.contentWindow;else break;t=lt(e.document)}return t}function Ll(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}function em(e){var t=Sd(),r=e.focusedElem,s=e.selectionRange;if(t!==r&&r&&r.ownerDocument&&Nd(r.ownerDocument.documentElement,r)){if(s!==null&&Ll(r)){if(t=s.start,e=s.end,e===void 0&&(e=t),"selectionStart"in r)r.selectionStart=t,r.selectionEnd=Math.min(e,r.value.length);else if(e=(t=r.ownerDocument||document)&&t.defaultView||window,e.getSelection){e=e.getSelection();var l=r.textContent.length,i=Math.min(s.start,l);s=s.end===void 0?i:Math.min(s.end,l),!e.extend&&i>s&&(l=s,s=i,i=l),l=kd(r,i);var u=kd(r,s);l&&u&&(e.rangeCount!==1||e.anchorNode!==l.node||e.anchorOffset!==l.offset||e.focusNode!==u.node||e.focusOffset!==u.offset)&&(t=t.createRange(),t.setStart(l.node,l.offset),e.removeAllRanges(),i>s?(e.addRange(t),e.extend(u.node,u.offset)):(t.setEnd(u.node,u.offset),e.addRange(t)))}}for(t=[],e=r;e=e.parentNode;)e.nodeType===1&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof r.focus=="function"&&r.focus(),r=0;r=document.documentMode,nn=null,Al=null,ts=null,Ol=!1;function Cd(e,t,r){var s=r.window===r?r.document:r.nodeType===9?r:r.ownerDocument;Ol||nn==null||nn!==lt(s)||(s=nn,"selectionStart"in s&&Ll(s)?s={start:s.selectionStart,end:s.selectionEnd}:(s=(s.ownerDocument&&s.ownerDocument.defaultView||window).getSelection(),s={anchorNode:s.anchorNode,anchorOffset:s.anchorOffset,focusNode:s.focusNode,focusOffset:s.focusOffset}),ts&&es(ts,s)||(ts=s,s=Ys(Al,"onSelect"),0dn||(e.current=Ql[dn],Ql[dn]=null,dn--)}function De(e,t){dn++,Ql[dn]=e.current,e.current=t}var cr={},Xe=dr(cr),at=dr(!1),Mr=cr;function cn(e,t){var r=e.type.contextTypes;if(!r)return cr;var s=e.stateNode;if(s&&s.__reactInternalMemoizedUnmaskedChildContext===t)return s.__reactInternalMemoizedMaskedChildContext;var l={},i;for(i in r)l[i]=t[i];return s&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=l),l}function it(e){return e=e.childContextTypes,e!=null}function to(){Oe(at),Oe(Xe)}function Ud(e,t,r){if(Xe.current!==cr)throw Error(a(168));De(Xe,t),De(at,r)}function Bd(e,t,r){var s=e.stateNode;if(t=t.childContextTypes,typeof s.getChildContext!="function")return r;s=s.getChildContext();for(var l in s)if(!(l in t))throw Error(a(108,pe(e)||"Unknown",l));return G({},r,s)}function ro(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||cr,Mr=Xe.current,De(Xe,e),De(at,at.current),!0}function Vd(e,t,r){var s=e.stateNode;if(!s)throw Error(a(169));r?(e=Bd(e,t,Mr),s.__reactInternalMemoizedMergedChildContext=e,Oe(at),Oe(Xe),De(Xe,e)):Oe(at),De(at,r)}var Ht=null,no=!1,ql=!1;function Wd(e){Ht===null?Ht=[e]:Ht.push(e)}function fm(e){no=!0,Wd(e)}function ur(){if(!ql&&Ht!==null){ql=!0;var e=0,t=Re;try{var r=Ht;for(Re=1;e>=u,l-=u,Gt=1<<32-St(t)+l|r<be?(qe=xe,xe=null):qe=xe.sibling;var Ee=$(M,xe,R[be],Q);if(Ee===null){xe===null&&(xe=qe);break}e&&xe&&Ee.alternate===null&&t(M,xe),N=i(Ee,N,be),he===null?ue=Ee:he.sibling=Ee,he=Ee,xe=qe}if(be===R.length)return r(M,xe),Ie&&Rr(M,be),ue;if(xe===null){for(;bebe?(qe=xe,xe=null):qe=xe.sibling;var br=$(M,xe,Ee.value,Q);if(br===null){xe===null&&(xe=qe);break}e&&xe&&br.alternate===null&&t(M,xe),N=i(br,N,be),he===null?ue=br:he.sibling=br,he=br,xe=qe}if(Ee.done)return r(M,xe),Ie&&Rr(M,be),ue;if(xe===null){for(;!Ee.done;be++,Ee=R.next())Ee=V(M,Ee.value,Q),Ee!==null&&(N=i(Ee,N,be),he===null?ue=Ee:he.sibling=Ee,he=Ee);return Ie&&Rr(M,be),ue}for(xe=s(M,xe);!Ee.done;be++,Ee=R.next())Ee=te(xe,M,be,Ee.value,Q),Ee!==null&&(e&&Ee.alternate!==null&&xe.delete(Ee.key===null?be:Ee.key),N=i(Ee,N,be),he===null?ue=Ee:he.sibling=Ee,he=Ee);return e&&xe.forEach(function(Gm){return t(M,Gm)}),Ie&&Rr(M,be),ue}function Ve(M,N,R,Q){if(typeof R=="object"&&R!==null&&R.type===F&&R.key===null&&(R=R.props.children),typeof R=="object"&&R!==null){switch(R.$$typeof){case H:e:{for(var ue=R.key,he=N;he!==null;){if(he.key===ue){if(ue=R.type,ue===F){if(he.tag===7){r(M,he.sibling),N=l(he,R.props.children),N.return=M,M=N;break e}}else if(he.elementType===ue||typeof ue=="object"&&ue!==null&&ue.$$typeof===Ne&&Zd(ue)===he.type){r(M,he.sibling),N=l(he,R.props),N.ref=as(M,he,R),N.return=M,M=N;break e}r(M,he);break}else t(M,he);he=he.sibling}R.type===F?(N=Fr(R.props.children,M.mode,Q,R.key),N.return=M,M=N):(Q=zo(R.type,R.key,R.props,null,M.mode,Q),Q.ref=as(M,N,R),Q.return=M,M=Q)}return u(M);case T:e:{for(he=R.key;N!==null;){if(N.key===he)if(N.tag===4&&N.stateNode.containerInfo===R.containerInfo&&N.stateNode.implementation===R.implementation){r(M,N.sibling),N=l(N,R.children||[]),N.return=M,M=N;break e}else{r(M,N);break}else t(M,N);N=N.sibling}N=Ga(R,M.mode,Q),N.return=M,M=N}return u(M);case Ne:return he=R._init,Ve(M,N,he(R._payload),Q)}if(tr(R))return ie(M,N,R,Q);if(ae(R))return de(M,N,R,Q);ao(M,R)}return typeof R=="string"&&R!==""||typeof R=="number"?(R=""+R,N!==null&&N.tag===6?(r(M,N.sibling),N=l(N,R),N.return=M,M=N):(r(M,N),N=Ha(R,M.mode,Q),N.return=M,M=N),u(M)):r(M,N)}return Ve}var mn=Yd(!0),Jd=Yd(!1),io=dr(null),co=null,hn=null,ta=null;function ra(){ta=hn=co=null}function na(e){var t=io.current;Oe(io),e._currentValue=t}function sa(e,t,r){for(;e!==null;){var s=e.alternate;if((e.childLanes&t)!==t?(e.childLanes|=t,s!==null&&(s.childLanes|=t)):s!==null&&(s.childLanes&t)!==t&&(s.childLanes|=t),e===r)break;e=e.return}}function xn(e,t){co=e,ta=hn=null,e=e.dependencies,e!==null&&e.firstContext!==null&&((e.lanes&t)!==0&&(dt=!0),e.firstContext=null)}function bt(e){var t=e._currentValue;if(ta!==e)if(e={context:e,memoizedValue:t,next:null},hn===null){if(co===null)throw Error(a(308));hn=e,co.dependencies={lanes:0,firstContext:e}}else hn=hn.next=e;return t}var zr=null;function oa(e){zr===null?zr=[e]:zr.push(e)}function Xd(e,t,r,s){var l=t.interleaved;return l===null?(r.next=r,oa(t)):(r.next=l.next,l.next=r),t.interleaved=r,Qt(e,s)}function Qt(e,t){e.lanes|=t;var r=e.alternate;for(r!==null&&(r.lanes|=t),r=e,e=e.return;e!==null;)e.childLanes|=t,r=e.alternate,r!==null&&(r.childLanes|=t),r=e,e=e.return;return r.tag===3?r.stateNode:null}var fr=!1;function la(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function ec(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function qt(e,t){return{eventTime:e,lane:t,tag:0,payload:null,callback:null,next:null}}function pr(e,t,r){var s=e.updateQueue;if(s===null)return null;if(s=s.shared,(Ce&2)!==0){var l=s.pending;return l===null?t.next=t:(t.next=l.next,l.next=t),s.pending=t,Qt(e,r)}return l=s.interleaved,l===null?(t.next=t,oa(s)):(t.next=l.next,l.next=t),s.interleaved=t,Qt(e,r)}function uo(e,t,r){if(t=t.updateQueue,t!==null&&(t=t.shared,(r&4194240)!==0)){var s=t.lanes;s&=e.pendingLanes,r|=s,t.lanes=r,bl(e,r)}}function tc(e,t){var r=e.updateQueue,s=e.alternate;if(s!==null&&(s=s.updateQueue,r===s)){var l=null,i=null;if(r=r.firstBaseUpdate,r!==null){do{var u={eventTime:r.eventTime,lane:r.lane,tag:r.tag,payload:r.payload,callback:r.callback,next:null};i===null?l=i=u:i=i.next=u,r=r.next}while(r!==null);i===null?l=i=t:i=i.next=t}else l=i=t;r={baseState:s.baseState,firstBaseUpdate:l,lastBaseUpdate:i,shared:s.shared,effects:s.effects},e.updateQueue=r;return}e=r.lastBaseUpdate,e===null?r.firstBaseUpdate=t:e.next=t,r.lastBaseUpdate=t}function fo(e,t,r,s){var l=e.updateQueue;fr=!1;var i=l.firstBaseUpdate,u=l.lastBaseUpdate,g=l.shared.pending;if(g!==null){l.shared.pending=null;var y=g,z=y.next;y.next=null,u===null?i=z:u.next=z,u=y;var U=e.alternate;U!==null&&(U=U.updateQueue,g=U.lastBaseUpdate,g!==u&&(g===null?U.firstBaseUpdate=z:g.next=z,U.lastBaseUpdate=y))}if(i!==null){var V=l.baseState;u=0,U=z=y=null,g=i;do{var $=g.lane,te=g.eventTime;if((s&$)===$){U!==null&&(U=U.next={eventTime:te,lane:0,tag:g.tag,payload:g.payload,callback:g.callback,next:null});e:{var ie=e,de=g;switch($=t,te=r,de.tag){case 1:if(ie=de.payload,typeof ie=="function"){V=ie.call(te,V,$);break e}V=ie;break e;case 3:ie.flags=ie.flags&-65537|128;case 0:if(ie=de.payload,$=typeof ie=="function"?ie.call(te,V,$):ie,$==null)break e;V=G({},V,$);break e;case 2:fr=!0}}g.callback!==null&&g.lane!==0&&(e.flags|=64,$=l.effects,$===null?l.effects=[g]:$.push(g))}else te={eventTime:te,lane:$,tag:g.tag,payload:g.payload,callback:g.callback,next:null},U===null?(z=U=te,y=V):U=U.next=te,u|=$;if(g=g.next,g===null){if(g=l.shared.pending,g===null)break;$=g,g=$.next,$.next=null,l.lastBaseUpdate=$,l.shared.pending=null}}while(!0);if(U===null&&(y=V),l.baseState=y,l.firstBaseUpdate=z,l.lastBaseUpdate=U,t=l.shared.interleaved,t!==null){l=t;do u|=l.lane,l=l.next;while(l!==t)}else i===null&&(l.shared.lanes=0);Ar|=u,e.lanes=u,e.memoizedState=V}}function rc(e,t,r){if(e=t.effects,t.effects=null,e!==null)for(t=0;tr?r:4,e(!0);var s=ua.transition;ua.transition={};try{e(!1),t()}finally{Re=r,ua.transition=s}}function wc(){return wt().memoizedState}function xm(e,t,r){var s=gr(e);if(r={lane:s,action:r,hasEagerState:!1,eagerState:null,next:null},jc(e))kc(t,r);else if(r=Xd(e,t,r,s),r!==null){var l=ot();Rt(r,e,s,l),Nc(r,t,s)}}function gm(e,t,r){var s=gr(e),l={lane:s,action:r,hasEagerState:!1,eagerState:null,next:null};if(jc(e))kc(t,l);else{var i=e.alternate;if(e.lanes===0&&(i===null||i.lanes===0)&&(i=t.lastRenderedReducer,i!==null))try{var u=t.lastRenderedState,g=i(u,r);if(l.hasEagerState=!0,l.eagerState=g,Ct(g,u)){var y=t.interleaved;y===null?(l.next=l,oa(t)):(l.next=y.next,y.next=l),t.interleaved=l;return}}catch{}finally{}r=Xd(e,t,l,s),r!==null&&(l=ot(),Rt(r,e,s,l),Nc(r,t,s))}}function jc(e){var t=e.alternate;return e===$e||t!==null&&t===$e}function kc(e,t){us=ho=!0;var r=e.pending;r===null?t.next=t:(t.next=r.next,r.next=t),e.pending=t}function Nc(e,t,r){if((r&4194240)!==0){var s=t.lanes;s&=e.pendingLanes,r|=s,t.lanes=r,bl(e,r)}}var vo={readContext:bt,useCallback:et,useContext:et,useEffect:et,useImperativeHandle:et,useInsertionEffect:et,useLayoutEffect:et,useMemo:et,useReducer:et,useRef:et,useState:et,useDebugValue:et,useDeferredValue:et,useTransition:et,useMutableSource:et,useSyncExternalStore:et,useId:et,unstable_isNewReconciler:!1},vm={readContext:bt,useCallback:function(e,t){return Ot().memoizedState=[e,t===void 0?null:t],e},useContext:bt,useEffect:pc,useImperativeHandle:function(e,t,r){return r=r!=null?r.concat([e]):null,xo(4194308,4,xc.bind(null,t,e),r)},useLayoutEffect:function(e,t){return xo(4194308,4,e,t)},useInsertionEffect:function(e,t){return xo(4,2,e,t)},useMemo:function(e,t){var r=Ot();return t=t===void 0?null:t,e=e(),r.memoizedState=[e,t],e},useReducer:function(e,t,r){var s=Ot();return t=r!==void 0?r(t):t,s.memoizedState=s.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},s.queue=e,e=e.dispatch=xm.bind(null,$e,e),[s.memoizedState,e]},useRef:function(e){var t=Ot();return e={current:e},t.memoizedState=e},useState:uc,useDebugValue:va,useDeferredValue:function(e){return Ot().memoizedState=e},useTransition:function(){var e=uc(!1),t=e[0];return e=hm.bind(null,e[1]),Ot().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,r){var s=$e,l=Ot();if(Ie){if(r===void 0)throw Error(a(407));r=r()}else{if(r=t(),Qe===null)throw Error(a(349));(Lr&30)!==0||lc(s,t,r)}l.memoizedState=r;var i={value:r,getSnapshot:t};return l.queue=i,pc(ic.bind(null,s,i,e),[e]),s.flags|=2048,ms(9,ac.bind(null,s,i,r,t),void 0,null),r},useId:function(){var e=Ot(),t=Qe.identifierPrefix;if(Ie){var r=Kt,s=Gt;r=(s&~(1<<32-St(s)-1)).toString(32)+r,t=":"+t+"R"+r,r=fs++,0<\/script>",e=e.removeChild(e.firstChild)):typeof s.is=="string"?e=u.createElement(r,{is:s.is}):(e=u.createElement(r),r==="select"&&(u=e,s.multiple?u.multiple=!0:s.size&&(u.size=s.size))):e=u.createElementNS(e,r),e[Lt]=t,e[os]=s,Wc(e,t,!1,!1),t.stateNode=e;e:{switch(u=cl(r,s),r){case"dialog":Ae("cancel",e),Ae("close",e),l=s;break;case"iframe":case"object":case"embed":Ae("load",e),l=s;break;case"video":case"audio":for(l=0;lwn&&(t.flags|=128,s=!0,hs(i,!1),t.lanes=4194304)}else{if(!s)if(e=po(u),e!==null){if(t.flags|=128,s=!0,r=e.updateQueue,r!==null&&(t.updateQueue=r,t.flags|=4),hs(i,!0),i.tail===null&&i.tailMode==="hidden"&&!u.alternate&&!Ie)return tt(t),null}else 2*Be()-i.renderingStartTime>wn&&r!==1073741824&&(t.flags|=128,s=!0,hs(i,!1),t.lanes=4194304);i.isBackwards?(u.sibling=t.child,t.child=u):(r=i.last,r!==null?r.sibling=u:t.child=u,i.last=u)}return i.tail!==null?(t=i.tail,i.rendering=t,i.tail=t.sibling,i.renderingStartTime=Be(),t.sibling=null,r=Fe.current,De(Fe,s?r&1|2:r&1),t):(tt(t),null);case 22:case 23:return Ba(),s=t.memoizedState!==null,e!==null&&e.memoizedState!==null!==s&&(t.flags|=8192),s&&(t.mode&1)!==0?(xt&1073741824)!==0&&(tt(t),t.subtreeFlags&6&&(t.flags|=8192)):tt(t),null;case 24:return null;case 25:return null}throw Error(a(156,t.tag))}function Cm(e,t){switch(Yl(t),t.tag){case 1:return it(t.type)&&to(),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return gn(),Oe(at),Oe(Xe),ca(),e=t.flags,(e&65536)!==0&&(e&128)===0?(t.flags=e&-65537|128,t):null;case 5:return ia(t),null;case 13:if(Oe(Fe),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(a(340));pn()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return Oe(Fe),null;case 4:return gn(),null;case 10:return na(t.type._context),null;case 22:case 23:return Ba(),null;case 24:return null;default:return null}}var jo=!1,rt=!1,Em=typeof WeakSet=="function"?WeakSet:Set,le=null;function yn(e,t){var r=e.ref;if(r!==null)if(typeof r=="function")try{r(null)}catch(s){Ue(e,t,s)}else r.current=null}function Pa(e,t,r){try{r()}catch(s){Ue(e,t,s)}}var Kc=!1;function _m(e,t){if(Bl=Us,e=Sd(),Ll(e)){if("selectionStart"in e)var r={start:e.selectionStart,end:e.selectionEnd};else e:{r=(r=e.ownerDocument)&&r.defaultView||window;var s=r.getSelection&&r.getSelection();if(s&&s.rangeCount!==0){r=s.anchorNode;var l=s.anchorOffset,i=s.focusNode;s=s.focusOffset;try{r.nodeType,i.nodeType}catch{r=null;break e}var u=0,g=-1,y=-1,z=0,U=0,V=e,$=null;t:for(;;){for(var te;V!==r||l!==0&&V.nodeType!==3||(g=u+l),V!==i||s!==0&&V.nodeType!==3||(y=u+s),V.nodeType===3&&(u+=V.nodeValue.length),(te=V.firstChild)!==null;)$=V,V=te;for(;;){if(V===e)break t;if($===r&&++z===l&&(g=u),$===i&&++U===s&&(y=u),(te=V.nextSibling)!==null)break;V=$,$=V.parentNode}V=te}r=g===-1||y===-1?null:{start:g,end:y}}else r=null}r=r||{start:0,end:0}}else r=null;for(Vl={focusedElem:e,selectionRange:r},Us=!1,le=t;le!==null;)if(t=le,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,le=e;else for(;le!==null;){t=le;try{var ie=t.alternate;if((t.flags&1024)!==0)switch(t.tag){case 0:case 11:case 15:break;case 1:if(ie!==null){var de=ie.memoizedProps,Ve=ie.memoizedState,M=t.stateNode,N=M.getSnapshotBeforeUpdate(t.elementType===t.type?de:_t(t.type,de),Ve);M.__reactInternalSnapshotBeforeUpdate=N}break;case 3:var R=t.stateNode.containerInfo;R.nodeType===1?R.textContent="":R.nodeType===9&&R.documentElement&&R.removeChild(R.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(a(163))}}catch(Q){Ue(t,t.return,Q)}if(e=t.sibling,e!==null){e.return=t.return,le=e;break}le=t.return}return ie=Kc,Kc=!1,ie}function xs(e,t,r){var s=t.updateQueue;if(s=s!==null?s.lastEffect:null,s!==null){var l=s=s.next;do{if((l.tag&e)===e){var i=l.destroy;l.destroy=void 0,i!==void 0&&Pa(t,r,i)}l=l.next}while(l!==s)}}function ko(e,t){if(t=t.updateQueue,t=t!==null?t.lastEffect:null,t!==null){var r=t=t.next;do{if((r.tag&e)===e){var s=r.create;r.destroy=s()}r=r.next}while(r!==t)}}function Ra(e){var t=e.ref;if(t!==null){var r=e.stateNode;switch(e.tag){case 5:e=r;break;default:e=r}typeof t=="function"?t(e):t.current=e}}function Qc(e){var t=e.alternate;t!==null&&(e.alternate=null,Qc(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&(delete t[Lt],delete t[os],delete t[Kl],delete t[cm],delete t[um])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function qc(e){return e.tag===5||e.tag===3||e.tag===4}function Zc(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||qc(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function za(e,t,r){var s=e.tag;if(s===5||s===6)e=e.stateNode,t?r.nodeType===8?r.parentNode.insertBefore(e,t):r.insertBefore(e,t):(r.nodeType===8?(t=r.parentNode,t.insertBefore(e,r)):(t=r,t.appendChild(e)),r=r._reactRootContainer,r!=null||t.onclick!==null||(t.onclick=Xs));else if(s!==4&&(e=e.child,e!==null))for(za(e,t,r),e=e.sibling;e!==null;)za(e,t,r),e=e.sibling}function Da(e,t,r){var s=e.tag;if(s===5||s===6)e=e.stateNode,t?r.insertBefore(e,t):r.appendChild(e);else if(s!==4&&(e=e.child,e!==null))for(Da(e,t,r),e=e.sibling;e!==null;)Da(e,t,r),e=e.sibling}var Ze=null,Mt=!1;function mr(e,t,r){for(r=r.child;r!==null;)Yc(e,t,r),r=r.sibling}function Yc(e,t,r){if(Dt&&typeof Dt.onCommitFiberUnmount=="function")try{Dt.onCommitFiberUnmount(As,r)}catch{}switch(r.tag){case 5:rt||yn(r,t);case 6:var s=Ze,l=Mt;Ze=null,mr(e,t,r),Ze=s,Mt=l,Ze!==null&&(Mt?(e=Ze,r=r.stateNode,e.nodeType===8?e.parentNode.removeChild(r):e.removeChild(r)):Ze.removeChild(r.stateNode));break;case 18:Ze!==null&&(Mt?(e=Ze,r=r.stateNode,e.nodeType===8?Gl(e.parentNode,r):e.nodeType===1&&Gl(e,r),Qn(e)):Gl(Ze,r.stateNode));break;case 4:s=Ze,l=Mt,Ze=r.stateNode.containerInfo,Mt=!0,mr(e,t,r),Ze=s,Mt=l;break;case 0:case 11:case 14:case 15:if(!rt&&(s=r.updateQueue,s!==null&&(s=s.lastEffect,s!==null))){l=s=s.next;do{var i=l,u=i.destroy;i=i.tag,u!==void 0&&((i&2)!==0||(i&4)!==0)&&Pa(r,t,u),l=l.next}while(l!==s)}mr(e,t,r);break;case 1:if(!rt&&(yn(r,t),s=r.stateNode,typeof s.componentWillUnmount=="function"))try{s.props=r.memoizedProps,s.state=r.memoizedState,s.componentWillUnmount()}catch(g){Ue(r,t,g)}mr(e,t,r);break;case 21:mr(e,t,r);break;case 22:r.mode&1?(rt=(s=rt)||r.memoizedState!==null,mr(e,t,r),rt=s):mr(e,t,r);break;default:mr(e,t,r)}}function Jc(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var r=e.stateNode;r===null&&(r=e.stateNode=new Em),t.forEach(function(s){var l=Tm.bind(null,e,s);r.has(s)||(r.add(s),s.then(l,l))})}}function Pt(e,t){var r=t.deletions;if(r!==null)for(var s=0;sl&&(l=u),s&=~i}if(s=l,s=Be()-s,s=(120>s?120:480>s?480:1080>s?1080:1920>s?1920:3e3>s?3e3:4320>s?4320:1960*Pm(s/1960))-s,10e?16:e,xr===null)var s=!1;else{if(e=xr,xr=null,_o=0,(Ce&6)!==0)throw Error(a(331));var l=Ce;for(Ce|=4,le=e.current;le!==null;){var i=le,u=i.child;if((le.flags&16)!==0){var g=i.deletions;if(g!==null){for(var y=0;yBe()-Oa?Tr(e,0):Aa|=r),ut(e,t)}function uu(e,t){t===0&&((e.mode&1)===0?t=1:(t=Ts,Ts<<=1,(Ts&130023424)===0&&(Ts=4194304)));var r=ot();e=Qt(e,t),e!==null&&(Vn(e,t,r),ut(e,r))}function Om(e){var t=e.memoizedState,r=0;t!==null&&(r=t.retryLane),uu(e,r)}function Tm(e,t){var r=0;switch(e.tag){case 13:var s=e.stateNode,l=e.memoizedState;l!==null&&(r=l.retryLane);break;case 19:s=e.stateNode;break;default:throw Error(a(314))}s!==null&&s.delete(t),uu(e,r)}var fu;fu=function(e,t,r){if(e!==null)if(e.memoizedProps!==t.pendingProps||at.current)dt=!0;else{if((e.lanes&r)===0&&(t.flags&128)===0)return dt=!1,Nm(e,t,r);dt=(e.flags&131072)!==0}else dt=!1,Ie&&(t.flags&1048576)!==0&&Hd(t,oo,t.index);switch(t.lanes=0,t.tag){case 2:var s=t.type;wo(e,t),e=t.pendingProps;var l=cn(t,Xe.current);xn(t,r),l=pa(null,t,s,e,l,r);var i=ma();return t.flags|=1,typeof l=="object"&&l!==null&&typeof l.render=="function"&&l.$$typeof===void 0?(t.tag=1,t.memoizedState=null,t.updateQueue=null,it(s)?(i=!0,ro(t)):i=!1,t.memoizedState=l.state!==null&&l.state!==void 0?l.state:null,la(t),l.updater=yo,t.stateNode=l,l._reactInternals=t,ba(t,s,e,r),t=Na(null,t,s,!0,i,r)):(t.tag=0,Ie&&i&&Zl(t),st(null,t,l,r),t=t.child),t;case 16:s=t.elementType;e:{switch(wo(e,t),e=t.pendingProps,l=s._init,s=l(s._payload),t.type=s,l=t.tag=Fm(s),e=_t(s,e),l){case 0:t=ka(null,t,s,e,r);break e;case 1:t=Ic(null,t,s,e,r);break e;case 11:t=Dc(null,t,s,e,r);break e;case 14:t=Lc(null,t,s,_t(s.type,e),r);break e}throw Error(a(306,s,""))}return t;case 0:return s=t.type,l=t.pendingProps,l=t.elementType===s?l:_t(s,l),ka(e,t,s,l,r);case 1:return s=t.type,l=t.pendingProps,l=t.elementType===s?l:_t(s,l),Ic(e,t,s,l,r);case 3:e:{if(Fc(t),e===null)throw Error(a(387));s=t.pendingProps,i=t.memoizedState,l=i.element,ec(e,t),fo(t,s,null,r);var u=t.memoizedState;if(s=u.element,i.isDehydrated)if(i={element:s,isDehydrated:!1,cache:u.cache,pendingSuspenseBoundaries:u.pendingSuspenseBoundaries,transitions:u.transitions},t.updateQueue.baseState=i,t.memoizedState=i,t.flags&256){l=vn(Error(a(423)),t),t=$c(e,t,s,r,l);break e}else if(s!==l){l=vn(Error(a(424)),t),t=$c(e,t,s,r,l);break e}else for(ht=ir(t.stateNode.containerInfo.firstChild),mt=t,Ie=!0,Et=null,r=Jd(t,null,s,r),t.child=r;r;)r.flags=r.flags&-3|4096,r=r.sibling;else{if(pn(),s===l){t=Zt(e,t,r);break e}st(e,t,s,r)}t=t.child}return t;case 5:return nc(t),e===null&&Xl(t),s=t.type,l=t.pendingProps,i=e!==null?e.memoizedProps:null,u=l.children,Wl(s,l)?u=null:i!==null&&Wl(s,i)&&(t.flags|=32),Tc(e,t),st(e,t,u,r),t.child;case 6:return e===null&&Xl(t),null;case 13:return Uc(e,t,r);case 4:return aa(t,t.stateNode.containerInfo),s=t.pendingProps,e===null?t.child=mn(t,null,s,r):st(e,t,s,r),t.child;case 11:return s=t.type,l=t.pendingProps,l=t.elementType===s?l:_t(s,l),Dc(e,t,s,l,r);case 7:return st(e,t,t.pendingProps,r),t.child;case 8:return st(e,t,t.pendingProps.children,r),t.child;case 12:return st(e,t,t.pendingProps.children,r),t.child;case 10:e:{if(s=t.type._context,l=t.pendingProps,i=t.memoizedProps,u=l.value,De(io,s._currentValue),s._currentValue=u,i!==null)if(Ct(i.value,u)){if(i.children===l.children&&!at.current){t=Zt(e,t,r);break e}}else for(i=t.child,i!==null&&(i.return=t);i!==null;){var g=i.dependencies;if(g!==null){u=i.child;for(var y=g.firstContext;y!==null;){if(y.context===s){if(i.tag===1){y=qt(-1,r&-r),y.tag=2;var z=i.updateQueue;if(z!==null){z=z.shared;var U=z.pending;U===null?y.next=y:(y.next=U.next,U.next=y),z.pending=y}}i.lanes|=r,y=i.alternate,y!==null&&(y.lanes|=r),sa(i.return,r,t),g.lanes|=r;break}y=y.next}}else if(i.tag===10)u=i.type===t.type?null:i.child;else if(i.tag===18){if(u=i.return,u===null)throw Error(a(341));u.lanes|=r,g=u.alternate,g!==null&&(g.lanes|=r),sa(u,r,t),u=i.sibling}else u=i.child;if(u!==null)u.return=i;else for(u=i;u!==null;){if(u===t){u=null;break}if(i=u.sibling,i!==null){i.return=u.return,u=i;break}u=u.return}i=u}st(e,t,l.children,r),t=t.child}return t;case 9:return l=t.type,s=t.pendingProps.children,xn(t,r),l=bt(l),s=s(l),t.flags|=1,st(e,t,s,r),t.child;case 14:return s=t.type,l=_t(s,t.pendingProps),l=_t(s.type,l),Lc(e,t,s,l,r);case 15:return Ac(e,t,t.type,t.pendingProps,r);case 17:return s=t.type,l=t.pendingProps,l=t.elementType===s?l:_t(s,l),wo(e,t),t.tag=1,it(s)?(e=!0,ro(t)):e=!1,xn(t,r),Cc(t,s,l),ba(t,s,l,r),Na(null,t,s,!0,e,r);case 19:return Vc(e,t,r);case 22:return Oc(e,t,r)}throw Error(a(156,t.tag))};function pu(e,t){return Gi(e,t)}function Im(e,t,r,s){this.tag=e,this.key=r,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=s,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function kt(e,t,r,s){return new Im(e,t,r,s)}function Wa(e){return e=e.prototype,!(!e||!e.isReactComponent)}function Fm(e){if(typeof e=="function")return Wa(e)?1:0;if(e!=null){if(e=e.$$typeof,e===ce)return 11;if(e===Pe)return 14}return 2}function yr(e,t){var r=e.alternate;return r===null?(r=kt(e.tag,t,e.key,e.mode),r.elementType=e.elementType,r.type=e.type,r.stateNode=e.stateNode,r.alternate=e,e.alternate=r):(r.pendingProps=t,r.type=e.type,r.flags=0,r.subtreeFlags=0,r.deletions=null),r.flags=e.flags&14680064,r.childLanes=e.childLanes,r.lanes=e.lanes,r.child=e.child,r.memoizedProps=e.memoizedProps,r.memoizedState=e.memoizedState,r.updateQueue=e.updateQueue,t=e.dependencies,r.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},r.sibling=e.sibling,r.index=e.index,r.ref=e.ref,r}function zo(e,t,r,s,l,i){var u=2;if(s=e,typeof e=="function")Wa(e)&&(u=1);else if(typeof e=="string")u=5;else e:switch(e){case F:return Fr(r.children,l,i,t);case ne:u=8,l|=8;break;case se:return e=kt(12,r,t,l|2),e.elementType=se,e.lanes=i,e;case Me:return e=kt(13,r,t,l),e.elementType=Me,e.lanes=i,e;case _e:return e=kt(19,r,t,l),e.elementType=_e,e.lanes=i,e;case ke:return Do(r,l,i,t);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case X:u=10;break e;case ye:u=9;break e;case ce:u=11;break e;case Pe:u=14;break e;case Ne:u=16,s=null;break e}throw Error(a(130,e==null?e:typeof e,""))}return t=kt(u,r,t,l),t.elementType=e,t.type=s,t.lanes=i,t}function Fr(e,t,r,s){return e=kt(7,e,s,t),e.lanes=r,e}function Do(e,t,r,s){return e=kt(22,e,s,t),e.elementType=ke,e.lanes=r,e.stateNode={isHidden:!1},e}function Ha(e,t,r){return e=kt(6,e,null,t),e.lanes=r,e}function Ga(e,t,r){return t=kt(4,e.children!==null?e.children:[],e.key,t),t.lanes=r,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function $m(e,t,r,s,l){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=yl(0),this.expirationTimes=yl(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=yl(0),this.identifierPrefix=s,this.onRecoverableError=l,this.mutableSourceEagerHydrationData=null}function Ka(e,t,r,s,l,i,u,g,y){return e=new $m(e,t,r,g,y),t===1?(t=1,i===!0&&(t|=8)):t=0,i=kt(3,null,null,t),e.current=i,i.stateNode=e,i.memoizedState={element:s,isDehydrated:r,cache:null,transitions:null,pendingSuspenseBoundaries:null},la(i),e}function Um(e,t,r){var s=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(o)}catch(d){console.error(d)}}return o(),Xa.exports=Xm(),Xa.exports}var Eu;function eh(){if(Eu)return $o;Eu=1;var o=nf();return $o.createRoot=o.createRoot,$o.hydrateRoot=o.hydrateRoot,$o}var th=eh();const rh=tf(th);/** * @license lucide-react v0.460.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */const nh=o=>o.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),sf=(...o)=>o.filter((d,a,c)=>!!d&&d.trim()!==""&&c.indexOf(d)===a).join(" ").trim();/** * @license lucide-react v0.460.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */var sh={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};/** * @license lucide-react v0.460.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */const oh=p.forwardRef(({color:o="currentColor",size:d=24,strokeWidth:a=2,absoluteStrokeWidth:c,className:f="",children:m,iconNode:h,...x},E)=>p.createElement("svg",{ref:E,...sh,width:d,height:d,stroke:o,strokeWidth:c?Number(a)*24/Number(d):a,className:sf("lucide",f),...x},[...h.map(([b,k])=>p.createElement(b,k)),...Array.isArray(m)?m:[m]]));/** * @license lucide-react v0.460.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */const ge=(o,d)=>{const a=p.forwardRef(({className:c,...f},m)=>p.createElement(oh,{ref:m,iconNode:d,className:sf(`lucide-${nh(o)}`,c),...f}));return a.displayName=`${o}`,a};/** * @license lucide-react v0.460.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */const Xo=ge("Activity",[["path",{d:"M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2",key:"169zse"}]]);/** * @license lucide-react v0.460.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */const _u=ge("ArrowRight",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]]);/** * @license lucide-react v0.460.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */const of=ge("BookOpen",[["path",{d:"M12 7v14",key:"1akyts"}],["path",{d:"M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z",key:"ruj8y"}]]);/** * @license lucide-react v0.460.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */const Ss=ge("Bot",[["path",{d:"M12 8V4H8",key:"hb8ula"}],["rect",{width:"16",height:"12",x:"4",y:"8",rx:"2",key:"enze0r"}],["path",{d:"M2 14h2",key:"vft8re"}],["path",{d:"M20 14h2",key:"4cs60a"}],["path",{d:"M15 13v2",key:"1xurst"}],["path",{d:"M9 13v2",key:"rq6x2g"}]]);/** * @license lucide-react v0.460.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */const lh=ge("Boxes",[["path",{d:"M2.97 12.92A2 2 0 0 0 2 14.63v3.24a2 2 0 0 0 .97 1.71l3 1.8a2 2 0 0 0 2.06 0L12 19v-5.5l-5-3-4.03 2.42Z",key:"lc1i9w"}],["path",{d:"m7 16.5-4.74-2.85",key:"1o9zyk"}],["path",{d:"m7 16.5 5-3",key:"va8pkn"}],["path",{d:"M7 16.5v5.17",key:"jnp8gn"}],["path",{d:"M12 13.5V19l3.97 2.38a2 2 0 0 0 2.06 0l3-1.8a2 2 0 0 0 .97-1.71v-3.24a2 2 0 0 0-.97-1.71L17 10.5l-5 3Z",key:"8zsnat"}],["path",{d:"m17 16.5-5-3",key:"8arw3v"}],["path",{d:"m17 16.5 4.74-2.85",key:"8rfmw"}],["path",{d:"M17 16.5v5.17",key:"k6z78m"}],["path",{d:"M7.97 4.42A2 2 0 0 0 7 6.13v4.37l5 3 5-3V6.13a2 2 0 0 0-.97-1.71l-3-1.8a2 2 0 0 0-2.06 0l-3 1.8Z",key:"1xygjf"}],["path",{d:"M12 8 7.26 5.15",key:"1vbdud"}],["path",{d:"m12 8 4.74-2.85",key:"3rx089"}],["path",{d:"M12 13.5V8",key:"1io7kd"}]]);/** * @license lucide-react v0.460.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */const Cs=ge("Brain",[["path",{d:"M12 5a3 3 0 1 0-5.997.125 4 4 0 0 0-2.526 5.77 4 4 0 0 0 .556 6.588A4 4 0 1 0 12 18Z",key:"l5xja"}],["path",{d:"M12 5a3 3 0 1 1 5.997.125 4 4 0 0 1 2.526 5.77 4 4 0 0 1-.556 6.588A4 4 0 1 1 12 18Z",key:"ep3f8r"}],["path",{d:"M15 13a4.5 4.5 0 0 1-3-4 4.5 4.5 0 0 1-3 4",key:"1p4c4q"}],["path",{d:"M17.599 6.5a3 3 0 0 0 .399-1.375",key:"tmeiqw"}],["path",{d:"M6.003 5.125A3 3 0 0 0 6.401 6.5",key:"105sqy"}],["path",{d:"M3.477 10.896a4 4 0 0 1 .585-.396",key:"ql3yin"}],["path",{d:"M19.938 10.5a4 4 0 0 1 .585.396",key:"1qfode"}],["path",{d:"M6 18a4 4 0 0 1-1.967-.516",key:"2e4loj"}],["path",{d:"M19.967 17.484A4 4 0 0 1 18 18",key:"159ez6"}]]);/** * @license lucide-react v0.460.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */const zn=ge("Check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);/** * @license lucide-react v0.460.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */const ah=ge("ChevronDown",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]);/** * @license lucide-react v0.460.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */const ih=ge("ChevronLeft",[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]]);/** * @license lucide-react v0.460.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */const dh=ge("ChevronRight",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]);/** * @license lucide-react v0.460.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */const ch=ge("ChevronUp",[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]]);/** * @license lucide-react v0.460.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */const uh=ge("CircleHelp",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3",key:"1u773s"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);/** * @license lucide-react v0.460.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */const fh=ge("Clock",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["polyline",{points:"12 6 12 12 16 14",key:"68esgv"}]]);/** * @license lucide-react v0.460.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */const mi=ge("Code",[["polyline",{points:"16 18 22 12 16 6",key:"z7tu5w"}],["polyline",{points:"8 6 2 12 8 18",key:"1eg1df"}]]);/** * @license lucide-react v0.460.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */const ph=ge("Coins",[["circle",{cx:"8",cy:"8",r:"6",key:"3yglwk"}],["path",{d:"M18.09 10.37A6 6 0 1 1 10.34 18",key:"t5s6rm"}],["path",{d:"M7 6h1v4",key:"1obek4"}],["path",{d:"m16.71 13.88.7.71-2.82 2.82",key:"1rbuyh"}]]);/** * @license lucide-react v0.460.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */const mh=ge("Command",[["path",{d:"M15 6v12a3 3 0 1 0 3-3H6a3 3 0 1 0 3 3V6a3 3 0 1 0-3 3h12a3 3 0 1 0-3-3",key:"11bfej"}]]);/** * @license lucide-react v0.460.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */const hi=ge("Compass",[["path",{d:"m16.24 7.76-1.804 5.411a2 2 0 0 1-1.265 1.265L7.76 16.24l1.804-5.411a2 2 0 0 1 1.265-1.265z",key:"9ktpf1"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]);/** * @license lucide-react v0.460.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */const hh=ge("Construction",[["rect",{x:"2",y:"6",width:"20",height:"8",rx:"1",key:"1estib"}],["path",{d:"M17 14v7",key:"7m2elx"}],["path",{d:"M7 14v7",key:"1cm7wv"}],["path",{d:"M17 3v3",key:"1v4jwn"}],["path",{d:"M7 3v3",key:"7o6guu"}],["path",{d:"M10 14 2.3 6.3",key:"1023jk"}],["path",{d:"m14 6 7.7 7.7",key:"1s8pl2"}],["path",{d:"m8 6 8 8",key:"hl96qh"}]]);/** * @license lucide-react v0.460.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */const lf=ge("Copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]);/** * @license lucide-react v0.460.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */const gt=ge("Cpu",[["rect",{width:"16",height:"16",x:"4",y:"4",rx:"2",key:"14l7u7"}],["rect",{width:"6",height:"6",x:"9",y:"9",rx:"1",key:"5aljv4"}],["path",{d:"M15 2v2",key:"13l42r"}],["path",{d:"M15 20v2",key:"15mkzm"}],["path",{d:"M2 15h2",key:"1gxd5l"}],["path",{d:"M2 9h2",key:"1bbxkp"}],["path",{d:"M20 15h2",key:"19e6y8"}],["path",{d:"M20 9h2",key:"19tzq7"}],["path",{d:"M9 2v2",key:"165o2o"}],["path",{d:"M9 20v2",key:"i2bqo8"}]]);/** * @license lucide-react v0.460.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */const Vr=ge("Download",[["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["polyline",{points:"7 10 12 15 17 10",key:"2ggqvy"}],["line",{x1:"12",x2:"12",y1:"15",y2:"3",key:"1vk2je"}]]);/** * @license lucide-react v0.460.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */const el=ge("ExternalLink",[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]]);/** * @license lucide-react v0.460.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */const Mu=ge("EyeOff",[["path",{d:"M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49",key:"ct8e1f"}],["path",{d:"M14.084 14.158a3 3 0 0 1-4.242-4.242",key:"151rxh"}],["path",{d:"M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143",key:"13bj9a"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]]);/** * @license lucide-react v0.460.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */const xi=ge("Eye",[["path",{d:"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0",key:"1nclc0"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]);/** * @license lucide-react v0.460.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */const xh=ge("FolderOpen",[["path",{d:"m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2",key:"usdka0"}]]);/** * @license lucide-react v0.460.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */const gh=ge("Globe",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20",key:"13o1zl"}],["path",{d:"M2 12h20",key:"9i4pu4"}]]);/** * @license lucide-react v0.460.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */const gi=ge("HardDrive",[["line",{x1:"22",x2:"2",y1:"12",y2:"12",key:"1y58io"}],["path",{d:"M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z",key:"oot6mr"}],["line",{x1:"6",x2:"6.01",y1:"16",y2:"16",key:"sgf278"}],["line",{x1:"10",x2:"10.01",y1:"16",y2:"16",key:"1l4acy"}]]);/** * @license lucide-react v0.460.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */const vh=ge("Info",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 16v-4",key:"1dtifu"}],["path",{d:"M12 8h.01",key:"e9boi3"}]]);/** * @license lucide-react v0.460.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */const yh=ge("Key",[["path",{d:"m15.5 7.5 2.3 2.3a1 1 0 0 0 1.4 0l2.1-2.1a1 1 0 0 0 0-1.4L19 4",key:"g0fldk"}],["path",{d:"m21 2-9.6 9.6",key:"1j0ho8"}],["circle",{cx:"7.5",cy:"15.5",r:"5.5",key:"yqb3hr"}]]);/** * @license lucide-react v0.460.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */const Es=ge("Layers",[["path",{d:"m12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83Z",key:"8b97xw"}],["path",{d:"m22 17.65-9.17 4.16a2 2 0 0 1-1.66 0L2 17.65",key:"dd6zsq"}],["path",{d:"m22 12.65-9.17 4.16a2 2 0 0 1-1.66 0L2 12.65",key:"ep9fru"}]]);/** * @license lucide-react v0.460.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */const bh=ge("LayoutDashboard",[["rect",{width:"7",height:"9",x:"3",y:"3",rx:"1",key:"10lvy0"}],["rect",{width:"7",height:"5",x:"14",y:"3",rx:"1",key:"16une8"}],["rect",{width:"7",height:"9",x:"14",y:"12",rx:"1",key:"1hutg5"}],["rect",{width:"7",height:"5",x:"3",y:"16",rx:"1",key:"ldoo1y"}]]);/** * @license lucide-react v0.460.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */const wh=ge("PenLine",[["path",{d:"M12 20h9",key:"t2du7b"}],["path",{d:"M16.376 3.622a1 1 0 0 1 3.002 3.002L7.368 18.635a2 2 0 0 1-.855.506l-2.872.838a.5.5 0 0 1-.62-.62l.838-2.872a2 2 0 0 1 .506-.854z",key:"1ykcvy"}]]);/** * @license lucide-react v0.460.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */const jh=ge("Plug",[["path",{d:"M12 22v-5",key:"1ega77"}],["path",{d:"M9 8V2",key:"14iosj"}],["path",{d:"M15 8V2",key:"18g5xt"}],["path",{d:"M18 8v5a4 4 0 0 1-4 4h-4a4 4 0 0 1-4-4V8Z",key:"osxo6l"}]]);/** * @license lucide-react v0.460.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */const af=ge("Plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]);/** * @license lucide-react v0.460.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */const df=ge("Power",[["path",{d:"M12 2v10",key:"mnfbl"}],["path",{d:"M18.4 6.6a9 9 0 1 1-12.77.04",key:"obofu9"}]]);/** * @license lucide-react v0.460.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */const Br=ge("RefreshCw",[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]]);/** * @license lucide-react v0.460.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */const kh=ge("Save",[["path",{d:"M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z",key:"1c8476"}],["path",{d:"M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7",key:"1ydtos"}],["path",{d:"M7 3v4a1 1 0 0 0 1 1h7",key:"t51u73"}]]);/** * @license lucide-react v0.460.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */const Nh=ge("Scroll",[["path",{d:"M19 17V5a2 2 0 0 0-2-2H4",key:"zz82l3"}],["path",{d:"M8 21h12a2 2 0 0 0 2-2v-1a1 1 0 0 0-1-1H11a1 1 0 0 0-1 1v1a2 2 0 1 1-4 0V5a2 2 0 1 0-4 0v2a1 1 0 0 0 1 1h3",key:"1ph1d7"}]]);/** * @license lucide-react v0.460.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */const _i=ge("Search",[["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}],["path",{d:"m21 21-4.3-4.3",key:"1qie3q"}]]);/** * @license lucide-react v0.460.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */const Sh=ge("Server",[["rect",{width:"20",height:"8",x:"2",y:"2",rx:"2",ry:"2",key:"ngkwjq"}],["rect",{width:"20",height:"8",x:"2",y:"14",rx:"2",ry:"2",key:"iecqi9"}],["line",{x1:"6",x2:"6.01",y1:"6",y2:"6",key:"16zg32"}],["line",{x1:"6",x2:"6.01",y1:"18",y2:"18",key:"nzw8ys"}]]);/** * @license lucide-react v0.460.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */const Ch=ge("ShieldAlert",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}],["path",{d:"M12 8v4",key:"1got3b"}],["path",{d:"M12 16h.01",key:"1drbdi"}]]);/** * @license lucide-react v0.460.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */const Wr=ge("Shield",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}]]);/** * @license lucide-react v0.460.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */const Eh=ge("Sparkles",[["path",{d:"M9.937 15.5A2 2 0 0 0 8.5 14.063l-6.135-1.582a.5.5 0 0 1 0-.962L8.5 9.936A2 2 0 0 0 9.937 8.5l1.582-6.135a.5.5 0 0 1 .963 0L14.063 8.5A2 2 0 0 0 15.5 9.937l6.135 1.581a.5.5 0 0 1 0 .964L15.5 14.063a2 2 0 0 0-1.437 1.437l-1.582 6.135a.5.5 0 0 1-.963 0z",key:"4pj2yx"}],["path",{d:"M20 3v4",key:"1olli1"}],["path",{d:"M22 5h-4",key:"1gvqau"}],["path",{d:"M4 17v2",key:"vumght"}],["path",{d:"M5 18H3",key:"zchphs"}]]);/** * @license lucide-react v0.460.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */const cf=ge("Star",[["path",{d:"M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z",key:"r04s7s"}]]);/** * @license lucide-react v0.460.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */const _h=ge("Tag",[["path",{d:"M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z",key:"vktsd0"}],["circle",{cx:"7.5",cy:"7.5",r:".5",fill:"currentColor",key:"kqv944"}]]);/** * @license lucide-react v0.460.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */const tl=ge("Terminal",[["polyline",{points:"4 17 10 11 4 5",key:"akl6gq"}],["line",{x1:"12",x2:"20",y1:"19",y2:"19",key:"q2wloq"}]]);/** * @license lucide-react v0.460.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */const vi=ge("Trash2",[["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6",key:"4alrt4"}],["path",{d:"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2",key:"v07s0e"}],["line",{x1:"10",x2:"10",y1:"11",y2:"17",key:"1uufr5"}],["line",{x1:"14",x2:"14",y1:"11",y2:"17",key:"xtxkd"}]]);/** * @license lucide-react v0.460.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */const Mh=ge("TriangleAlert",[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);/** * @license lucide-react v0.460.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */const Ph=ge("User",[["path",{d:"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2",key:"975kel"}],["circle",{cx:"12",cy:"7",r:"4",key:"17ys0d"}]]);/** * @license lucide-react v0.460.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */const rl=ge("Wrench",[["path",{d:"M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z",key:"cbrjhi"}]]);/** * @license lucide-react v0.460.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */const Hr=ge("X",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]),yi=[{id:"dashboard",label:"Zentrale",hint:"System- & Stack-Status",icon:bh},{id:"models",label:"Modell-Manager",hint:"Verwalten, laden & Gateway-Routing",icon:lh},{id:"system",label:"Diagnose",hint:"Metriken, Dienste, Logs",icon:gt},{id:"memory",label:"Gedächtnis",hint:"Geteiltes Memory verwalten",icon:Cs},{id:"connect",label:"Verbinden",hint:"IDE-/Agent-Configs erzeugen",icon:jh},{id:"agent",label:"Hermes",hint:"Agent-Status & WebUI öffnen",icon:Ss},{id:"guide",label:"Anleitung",hint:"Einrichten & Vibe-Coding",icon:uh}];var Pu=1,Rh=.9,zh=.8,Dh=.17,ri=.1,ni=.999,Lh=.9999,Ah=.99,Oh=/[\\\/_+.#"@\[\(\{&]/,Th=/[\\\/_+.#"@\[\(\{&]/g,Ih=/[\s-]/,uf=/[\s-]/g;function bi(o,d,a,c,f,m,h){if(m===d.length)return f===o.length?Pu:Ah;var x=`${f},${m}`;if(h[x]!==void 0)return h[x];for(var E=c.charAt(m),b=a.indexOf(E,f),k=0,P,A,I,O;b>=0;)P=bi(o,d,a,c,b+1,m+1,h),P>k&&(b===f?P*=Pu:Oh.test(o.charAt(b-1))?(P*=zh,I=o.slice(f,b-1).match(Th),I&&f>0&&(P*=Math.pow(ni,I.length))):Ih.test(o.charAt(b-1))?(P*=Rh,O=o.slice(f,b-1).match(uf),O&&f>0&&(P*=Math.pow(ni,O.length))):(P*=Dh,f>0&&(P*=Math.pow(ni,b-f))),o.charAt(b)!==d.charAt(m)&&(P*=Lh)),(PP&&(P=A*ri)),P>k&&(k=P),b=a.indexOf(E,b+1);return h[x]=k,k}function Ru(o){return o.toLowerCase().replace(uf," ")}function Fh(o,d,a){return o=a&&a.length>0?`${o+" "+a.join(" ")}`:o,bi(o,d,Ru(o),Ru(d),0,0,{})}function Sr(o,d,{checkForDefaultPrevented:a=!0}={}){return function(f){if(o==null||o(f),a===!1||!f.defaultPrevented)return d==null?void 0:d(f)}}function zu(o,d){if(typeof o=="function")return o(d);o!=null&&(o.current=d)}function Dn(...o){return d=>{let a=!1;const c=o.map(f=>{const m=zu(f,d);return!a&&typeof m=="function"&&(a=!0),m});if(a)return()=>{for(let f=0;f{var _;const{scope:A,children:I,...O}=P,S=((_=A==null?void 0:A[o])==null?void 0:_[E])||x,C=p.useMemo(()=>O,Object.values(O));return n.jsx(S.Provider,{value:C,children:I})};b.displayName=m+"Provider";function k(P,A){var S;const I=((S=A==null?void 0:A[o])==null?void 0:S[E])||x,O=p.useContext(I);if(O)return O;if(h!==void 0)return h;throw new Error(`\`${P}\` must be used within \`${m}\``)}return[b,k]}const f=()=>{const m=a.map(h=>p.createContext(h));return function(x){const E=(x==null?void 0:x[o])||m;return p.useMemo(()=>({[`__scope${o}`]:{...x,[o]:E}}),[x,E])}};return f.scopeName=o,[c,Uh(f,...d)]}function Uh(...o){const d=o[0];if(o.length===1)return d;const a=()=>{const c=o.map(f=>({useScope:f(),scopeName:f.scopeName}));return function(m){const h=c.reduce((x,{useScope:E,scopeName:b})=>{const P=E(m)[`__scope${b}`];return{...x,...P}},{});return p.useMemo(()=>({[`__scope${d.scopeName}`]:h}),[h])}};return a.scopeName=d.scopeName,a}var _s=globalThis!=null&&globalThis.document?p.useLayoutEffect:()=>{},Bh=Ei[" useId ".trim().toString()]||(()=>{}),Vh=0;function Xt(o){const[d,a]=p.useState(Bh());return _s(()=>{a(c=>c??String(Vh++))},[o]),d?`radix-${d}`:""}var Wh=Ei[" useInsertionEffect ".trim().toString()]||_s;function Hh({prop:o,defaultProp:d,onChange:a=()=>{},caller:c}){const[f,m,h]=Gh({defaultProp:d,onChange:a}),x=o!==void 0,E=x?o:f;{const k=p.useRef(o!==void 0);p.useEffect(()=>{const P=k.current;P!==x&&console.warn(`${c} is changing from ${P?"controlled":"uncontrolled"} to ${x?"controlled":"uncontrolled"}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`),k.current=x},[x,c])}const b=p.useCallback(k=>{var P;if(x){const A=Kh(k)?k(o):k;A!==o&&((P=h.current)==null||P.call(h,A))}else m(k)},[x,o,m,h]);return[E,b]}function Gh({defaultProp:o,onChange:d}){const[a,c]=p.useState(o),f=p.useRef(a),m=p.useRef(d);return Wh(()=>{m.current=d},[d]),p.useEffect(()=>{var h;f.current!==a&&((h=m.current)==null||h.call(m,a),f.current=a)},[a,f]),[a,c,m]}function Kh(o){return typeof o=="function"}var ff=nf();function pf(o){const d=p.forwardRef((a,c)=>{let{children:f,...m}=a,h=null,x=!1;const E=[];Du(f)&&typeof Uo=="function"&&(f=Uo(f._payload)),p.Children.forEach(f,A=>{var I;if(Jh(A)){x=!0;const O=A;let S="child"in O.props?O.props.child:O.props.children;Du(S)&&typeof Uo=="function"&&(S=Uo(S._payload)),h=qh(O,S),E.push((I=h==null?void 0:h.props)==null?void 0:I.children)}else E.push(A)}),h?h=p.cloneElement(h,void 0,E):!x&&p.Children.count(f)===1&&p.isValidElement(f)&&(h=f);const b=h?Yh(h):void 0,k=Kr(c,b);if(!h){if(f||f===0)throw new Error(x?rx(o):tx(o));return f}const P=Zh(m,h.props??{});return h.type!==p.Fragment&&(P.ref=c?k:b),p.cloneElement(h,P)});return d.displayName=`${o}.Slot`,d}var Qh=Symbol.for("radix.slottable"),qh=(o,d)=>{if("child"in o.props){const a=o.props.child;return p.isValidElement(a)?p.cloneElement(a,void 0,o.props.children(a.props.children)):null}return p.isValidElement(d)?d:null};function Zh(o,d){const a={...d};for(const c in d){const f=o[c],m=d[c];/^on[A-Z]/.test(c)?f&&m?a[c]=(...x)=>{const E=m(...x);return f(...x),E}:f&&(a[c]=f):c==="style"?a[c]={...f,...m}:c==="className"&&(a[c]=[f,m].filter(Boolean).join(" "))}return{...o,...a}}function Yh(o){var c,f;let d=(c=Object.getOwnPropertyDescriptor(o.props,"ref"))==null?void 0:c.get,a=d&&"isReactWarning"in d&&d.isReactWarning;return a?o.ref:(d=(f=Object.getOwnPropertyDescriptor(o,"ref"))==null?void 0:f.get,a=d&&"isReactWarning"in d&&d.isReactWarning,a?o.props.ref:o.props.ref||o.ref)}function Jh(o){return p.isValidElement(o)&&typeof o.type=="function"&&"__radixId"in o.type&&o.type.__radixId===Qh}var Xh=Symbol.for("react.lazy");function Du(o){return o!=null&&typeof o=="object"&&"$$typeof"in o&&o.$$typeof===Xh&&"_payload"in o&&ex(o._payload)}function ex(o){return typeof o=="object"&&o!==null&&"then"in o}var tx=o=>`${o} failed to slot onto its children. Expected a single React element child or \`Slottable\`.`,rx=o=>`${o} failed to slot onto its \`Slottable\`. Expected \`Slottable\` to receive a single React element child.`,Uo=Ei[" use ".trim().toString()],nx=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],Je=nx.reduce((o,d)=>{const a=pf(`Primitive.${d}`),c=p.forwardRef((f,m)=>{const{asChild:h,...x}=f,E=h?a:d;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),n.jsx(E,{...x,ref:m})});return c.displayName=`Primitive.${d}`,{...o,[d]:c}},{});function sx(o,d){o&&ff.flushSync(()=>o.dispatchEvent(d))}function Ms(o){const d=p.useRef(o);return p.useEffect(()=>{d.current=o}),p.useMemo(()=>((...a)=>{var c;return(c=d.current)==null?void 0:c.call(d,...a)}),[])}function ox(o,d=globalThis==null?void 0:globalThis.document){const a=Ms(o);p.useEffect(()=>{const c=f=>{f.key==="Escape"&&a(f)};return d.addEventListener("keydown",c,{capture:!0}),()=>d.removeEventListener("keydown",c,{capture:!0})},[a,d])}var lx="DismissableLayer",wi="dismissableLayer.update",ax="dismissableLayer.pointerDownOutside",ix="dismissableLayer.focusOutside",Lu,Mi=p.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set,dismissableSurfaces:new Set}),mf=p.forwardRef((o,d)=>{const{disableOutsidePointerEvents:a=!1,deferPointerDownOutside:c=!1,onEscapeKeyDown:f,onPointerDownOutside:m,onFocusOutside:h,onInteractOutside:x,onDismiss:E,...b}=o,k=p.useContext(Mi),[P,A]=p.useState(null),I=(P==null?void 0:P.ownerDocument)??(globalThis==null?void 0:globalThis.document),[,O]=p.useState({}),S=Kr(d,se=>A(se)),C=Array.from(k.layers),[_]=[...k.layersWithOutsidePointerEventsDisabled].slice(-1),L=C.indexOf(_),q=P?C.indexOf(P):-1,Z=k.layersWithOutsidePointerEventsDisabled.size>0,H=q>=L,T=p.useRef(!1),F=fx(se=>{const X=se.target;if(!(X instanceof Node))return;const ye=[...k.branches].some(ce=>ce.contains(X));!H||ye||(m==null||m(se),x==null||x(se),se.defaultPrevented||E==null||E())},{ownerDocument:I,deferPointerDownOutside:c,isDeferredPointerDownOutsideRef:T,dismissableSurfaces:k.dismissableSurfaces}),ne=px(se=>{if(c&&T.current)return;const X=se.target;[...k.branches].some(ce=>ce.contains(X))||(h==null||h(se),x==null||x(se),se.defaultPrevented||E==null||E())},I);return ox(se=>{q===k.layers.size-1&&(f==null||f(se),!se.defaultPrevented&&E&&(se.preventDefault(),E()))},I),p.useEffect(()=>{if(P)return a&&(k.layersWithOutsidePointerEventsDisabled.size===0&&(Lu=I.body.style.pointerEvents,I.body.style.pointerEvents="none"),k.layersWithOutsidePointerEventsDisabled.add(P)),k.layers.add(P),Au(),()=>{a&&(k.layersWithOutsidePointerEventsDisabled.delete(P),k.layersWithOutsidePointerEventsDisabled.size===0&&(I.body.style.pointerEvents=Lu))}},[P,I,a,k]),p.useEffect(()=>()=>{P&&(k.layers.delete(P),k.layersWithOutsidePointerEventsDisabled.delete(P),Au())},[P,k]),p.useEffect(()=>{const se=()=>O({});return document.addEventListener(wi,se),()=>document.removeEventListener(wi,se)},[]),n.jsx(Je.div,{...b,ref:S,style:{pointerEvents:Z?H?"auto":"none":void 0,...o.style},onFocusCapture:Sr(o.onFocusCapture,ne.onFocusCapture),onBlurCapture:Sr(o.onBlurCapture,ne.onBlurCapture),onPointerDownCapture:Sr(o.onPointerDownCapture,F.onPointerDownCapture)})});mf.displayName=lx;var dx="DismissableLayerBranch",cx=p.forwardRef((o,d)=>{const a=p.useContext(Mi),c=p.useRef(null),f=Kr(d,c);return p.useEffect(()=>{const m=c.current;if(m)return a.branches.add(m),()=>{a.branches.delete(m)}},[a.branches]),n.jsx(Je.div,{...o,ref:f})});cx.displayName=dx;function ux(){const o=p.useContext(Mi),[d,a]=p.useState(null);return p.useEffect(()=>{if(d)return o.dismissableSurfaces.add(d),()=>{o.dismissableSurfaces.delete(d)}},[d,o.dismissableSurfaces]),a}function fx(o,d){const{ownerDocument:a=globalThis==null?void 0:globalThis.document,deferPointerDownOutside:c=!1,isDeferredPointerDownOutsideRef:f,dismissableSurfaces:m}=d,h=Ms(o),x=p.useRef(!1),E=p.useRef(!1),b=p.useRef(new Map),k=p.useRef(()=>{});return p.useEffect(()=>{function P(){E.current=!1,f.current=!1,b.current.clear()}function A(){return Array.from(b.current.values()).some(Boolean)}function I(L){if(!E.current)return;const q=L.target;q instanceof Node&&[...m].some(H=>H.contains(q))||b.current.set(L.type,!0),L.type==="click"&&window.setTimeout(()=>{E.current&&k.current()},0)}function O(L){E.current&&b.current.set(L.type,!1)}const S=L=>{if(L.target&&!x.current){let q=function(){a.removeEventListener("click",k.current);const H=A();P(),H||hf(ax,h,Z,{discrete:!0})};const Z={originalEvent:L};E.current=!0,f.current=c&&L.button===0,b.current.clear(),!c||L.button!==0?q():(a.removeEventListener("click",k.current),k.current=q,a.addEventListener("click",k.current,{once:!0}))}else a.removeEventListener("click",k.current),P();x.current=!1},C=["pointerup","mousedown","mouseup","touchstart","touchend","click"];for(const L of C)a.addEventListener(L,I,!0),a.addEventListener(L,O);const _=window.setTimeout(()=>{a.addEventListener("pointerdown",S)},0);return()=>{window.clearTimeout(_),a.removeEventListener("pointerdown",S),a.removeEventListener("click",k.current);for(const L of C)a.removeEventListener(L,I,!0),a.removeEventListener(L,O)}},[a,h,c,f,m]),{onPointerDownCapture:()=>x.current=!0}}function px(o,d=globalThis==null?void 0:globalThis.document){const a=Ms(o),c=p.useRef(!1);return p.useEffect(()=>{const f=m=>{m.target&&!c.current&&hf(ix,a,{originalEvent:m},{discrete:!1})};return d.addEventListener("focusin",f),()=>d.removeEventListener("focusin",f)},[d,a]),{onFocusCapture:()=>c.current=!0,onBlurCapture:()=>c.current=!1}}function Au(){const o=new CustomEvent(wi);document.dispatchEvent(o)}function hf(o,d,a,{discrete:c}){const f=a.originalEvent.target,m=new CustomEvent(o,{bubbles:!1,cancelable:!0,detail:a});d&&f.addEventListener(o,d,{once:!0}),c?sx(f,m):f.dispatchEvent(m)}var si="focusScope.autoFocusOnMount",oi="focusScope.autoFocusOnUnmount",Ou={bubbles:!1,cancelable:!0},mx="FocusScope",xf=p.forwardRef((o,d)=>{const{loop:a=!1,trapped:c=!1,onMountAutoFocus:f,onUnmountAutoFocus:m,...h}=o,[x,E]=p.useState(null),b=Ms(f),k=Ms(m),P=p.useRef(null),A=Kr(d,S=>E(S)),I=p.useRef({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;p.useEffect(()=>{if(c){let S=function(q){if(I.paused||!x)return;const Z=q.target;x.contains(Z)?P.current=Z:Nr(P.current,{select:!0})},C=function(q){if(I.paused||!x)return;const Z=q.relatedTarget;Z!==null&&(x.contains(Z)||Nr(P.current,{select:!0}))},_=function(q){if(document.activeElement===document.body)for(const H of q)H.removedNodes.length>0&&Nr(x)};document.addEventListener("focusin",S),document.addEventListener("focusout",C);const L=new MutationObserver(_);return x&&L.observe(x,{childList:!0,subtree:!0}),()=>{document.removeEventListener("focusin",S),document.removeEventListener("focusout",C),L.disconnect()}}},[c,x,I.paused]),p.useEffect(()=>{if(x){Iu.add(I);const S=document.activeElement;if(!x.contains(S)){const _=new CustomEvent(si,Ou);x.addEventListener(si,b),x.dispatchEvent(_),_.defaultPrevented||(hx(bx(gf(x)),{select:!0}),document.activeElement===S&&Nr(x))}return()=>{x.removeEventListener(si,b),setTimeout(()=>{const _=new CustomEvent(oi,Ou);x.addEventListener(oi,k),x.dispatchEvent(_),_.defaultPrevented||Nr(S??document.body,{select:!0}),x.removeEventListener(oi,k),Iu.remove(I)},0)}}},[x,b,k,I]);const O=p.useCallback(S=>{if(!a&&!c||I.paused)return;const C=S.key==="Tab"&&!S.altKey&&!S.ctrlKey&&!S.metaKey,_=document.activeElement;if(C&&_){const L=S.currentTarget,[q,Z]=xx(L);q&&Z?!S.shiftKey&&_===Z?(S.preventDefault(),a&&Nr(q,{select:!0})):S.shiftKey&&_===q&&(S.preventDefault(),a&&Nr(Z,{select:!0})):_===L&&S.preventDefault()}},[a,c,I.paused]);return n.jsx(Je.div,{tabIndex:-1,...h,ref:A,onKeyDown:O})});xf.displayName=mx;function hx(o,{select:d=!1}={}){const a=document.activeElement;for(const c of o)if(Nr(c,{select:d}),document.activeElement!==a)return}function xx(o){const d=gf(o),a=Tu(d,o),c=Tu(d.reverse(),o);return[a,c]}function gf(o){const d=[],a=document.createTreeWalker(o,NodeFilter.SHOW_ELEMENT,{acceptNode:c=>{const f=c.tagName==="INPUT"&&c.type==="hidden";return c.disabled||c.hidden||f?NodeFilter.FILTER_SKIP:c.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;a.nextNode();)d.push(a.currentNode);return d}function Tu(o,d){for(const a of o)if(!gx(a,{upTo:d}))return a}function gx(o,{upTo:d}){if(getComputedStyle(o).visibility==="hidden")return!0;for(;o;){if(d!==void 0&&o===d)return!1;if(getComputedStyle(o).display==="none")return!0;o=o.parentElement}return!1}function vx(o){return o instanceof HTMLInputElement&&"select"in o}function Nr(o,{select:d=!1}={}){if(o&&o.focus){const a=document.activeElement;o.focus({preventScroll:!0}),o!==a&&vx(o)&&d&&o.select()}}var Iu=yx();function yx(){let o=[];return{add(d){const a=o[0];d!==a&&(a==null||a.pause()),o=Fu(o,d),o.unshift(d)},remove(d){var a;o=Fu(o,d),(a=o[0])==null||a.resume()}}}function Fu(o,d){const a=[...o],c=a.indexOf(d);return c!==-1&&a.splice(c,1),a}function bx(o){return o.filter(d=>d.tagName!=="A")}var wx="Portal",vf=p.forwardRef((o,d)=>{var x;const{container:a,...c}=o,[f,m]=p.useState(!1);_s(()=>m(!0),[]);const h=a||f&&((x=globalThis==null?void 0:globalThis.document)==null?void 0:x.body);return h?ff.createPortal(n.jsx(Je.div,{...c,ref:d}),h):null});vf.displayName=wx;function jx(o,d){return p.useReducer((a,c)=>d[a][c]??a,o)}var sl=o=>{const{present:d,children:a}=o,c=kx(d),f=typeof a=="function"?a({present:c.isPresent}):p.Children.only(a),m=Nx(c.ref,Sx(f));return typeof a=="function"||c.isPresent?p.cloneElement(f,{ref:m}):null};sl.displayName="Presence";function kx(o){const[d,a]=p.useState(),c=p.useRef(null),f=p.useRef(o),m=p.useRef("none"),h=o?"mounted":"unmounted",[x,E]=jx(h,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return p.useEffect(()=>{const b=Bo(c.current);m.current=x==="mounted"?b:"none"},[x]),_s(()=>{const b=c.current,k=f.current;if(k!==o){const A=m.current,I=Bo(b);o?E("MOUNT"):I==="none"||(b==null?void 0:b.display)==="none"?E("UNMOUNT"):E(k&&A!==I?"ANIMATION_OUT":"UNMOUNT"),f.current=o}},[o,E]),_s(()=>{if(d){let b;const k=d.ownerDocument.defaultView??window,P=I=>{const S=Bo(c.current).includes(CSS.escape(I.animationName));if(I.target===d&&S&&(E("ANIMATION_END"),!f.current)){const C=d.style.animationFillMode;d.style.animationFillMode="forwards",b=k.setTimeout(()=>{d.style.animationFillMode==="forwards"&&(d.style.animationFillMode=C)})}},A=I=>{I.target===d&&(m.current=Bo(c.current))};return d.addEventListener("animationstart",A),d.addEventListener("animationcancel",P),d.addEventListener("animationend",P),()=>{k.clearTimeout(b),d.removeEventListener("animationstart",A),d.removeEventListener("animationcancel",P),d.removeEventListener("animationend",P)}}else E("ANIMATION_END")},[d,E]),{isPresent:["mounted","unmountSuspended"].includes(x),ref:p.useCallback(b=>{c.current=b?getComputedStyle(b):null,a(b)},[])}}function $u(o,d){if(typeof o=="function")return o(d);o!=null&&(o.current=d)}function Nx(...o){const d=p.useRef(o);return d.current=o,p.useCallback(a=>{const c=d.current;let f=!1;const m=c.map(h=>{const x=$u(h,a);return!f&&typeof x=="function"&&(f=!0),x});if(f)return()=>{for(let h=0;h{It||(It={start:Uu(),end:Uu()});const{start:o,end:d}=It;return document.body.firstElementChild!==o&&document.body.insertAdjacentElement("afterbegin",o),document.body.lastElementChild!==d&&document.body.insertAdjacentElement("beforeend",d),Vo++,()=>{Vo===1&&(It==null||It.start.remove(),It==null||It.end.remove(),It=null),Vo=Math.max(0,Vo-1)}},[])}function Uu(){const o=document.createElement("span");return o.setAttribute("data-radix-focus-guard",""),o.tabIndex=0,o.style.outline="none",o.style.opacity="0",o.style.position="fixed",o.style.pointerEvents="none",o}var Ft=function(){return Ft=Object.assign||function(d){for(var a,c=1,f=arguments.length;c"u")return Vx;var d=Wx(o),a=document.documentElement.clientWidth,c=window.innerWidth;return{left:d[0],top:d[1],right:d[2],gap:Math.max(0,c-a+d[2]-d[0])}},Gx=jf(),Pn="data-scroll-locked",Kx=function(o,d,a,c){var f=o.left,m=o.top,h=o.right,x=o.gap;return a===void 0&&(a="margin"),` .`.concat(_x,` { overflow: hidden `).concat(c,`; padding-right: `).concat(x,"px ").concat(c,`; } body[`).concat(Pn,`] { overflow: hidden `).concat(c,`; overscroll-behavior: contain; `).concat([d&&"position: relative ".concat(c,";"),a==="margin"&&` padding-left: `.concat(f,`px; padding-top: `).concat(m,`px; padding-right: `).concat(h,`px; margin-left:0; margin-top:0; margin-right: `).concat(x,"px ").concat(c,`; `),a==="padding"&&"padding-right: ".concat(x,"px ").concat(c,";")].filter(Boolean).join(""),` } .`).concat(Yo,` { right: `).concat(x,"px ").concat(c,`; } .`).concat(Jo,` { margin-right: `).concat(x,"px ").concat(c,`; } .`).concat(Yo," .").concat(Yo,` { right: 0 `).concat(c,`; } .`).concat(Jo," .").concat(Jo,` { margin-right: 0 `).concat(c,`; } body[`).concat(Pn,`] { `).concat(Mx,": ").concat(x,`px; } `)},Vu=function(){var o=parseInt(document.body.getAttribute(Pn)||"0",10);return isFinite(o)?o:0},Qx=function(){p.useEffect(function(){return document.body.setAttribute(Pn,(Vu()+1).toString()),function(){var o=Vu()-1;o<=0?document.body.removeAttribute(Pn):document.body.setAttribute(Pn,o.toString())}},[])},qx=function(o){var d=o.noRelative,a=o.noImportant,c=o.gapMode,f=c===void 0?"margin":c;Qx();var m=p.useMemo(function(){return Hx(f)},[f]);return p.createElement(Gx,{styles:Kx(m,!d,f,a?"":"!important")})},ji=!1;if(typeof window<"u")try{var Wo=Object.defineProperty({},"passive",{get:function(){return ji=!0,!0}});window.addEventListener("test",Wo,Wo),window.removeEventListener("test",Wo,Wo)}catch{ji=!1}var kn=ji?{passive:!1}:!1,Zx=function(o){return o.tagName==="TEXTAREA"},kf=function(o,d){if(!(o instanceof Element))return!1;var a=window.getComputedStyle(o);return a[d]!=="hidden"&&!(a.overflowY===a.overflowX&&!Zx(o)&&a[d]==="visible")},Yx=function(o){return kf(o,"overflowY")},Jx=function(o){return kf(o,"overflowX")},Wu=function(o,d){var a=d.ownerDocument,c=d;do{typeof ShadowRoot<"u"&&c instanceof ShadowRoot&&(c=c.host);var f=Nf(o,c);if(f){var m=Sf(o,c),h=m[1],x=m[2];if(h>x)return!0}c=c.parentNode}while(c&&c!==a.body);return!1},Xx=function(o){var d=o.scrollTop,a=o.scrollHeight,c=o.clientHeight;return[d,a,c]},eg=function(o){var d=o.scrollLeft,a=o.scrollWidth,c=o.clientWidth;return[d,a,c]},Nf=function(o,d){return o==="v"?Yx(d):Jx(d)},Sf=function(o,d){return o==="v"?Xx(d):eg(d)},tg=function(o,d){return o==="h"&&d==="rtl"?-1:1},rg=function(o,d,a,c,f){var m=tg(o,window.getComputedStyle(d).direction),h=m*c,x=a.target,E=d.contains(x),b=!1,k=h>0,P=0,A=0;do{if(!x)break;var I=Sf(o,x),O=I[0],S=I[1],C=I[2],_=S-C-m*O;(O||_)&&Nf(o,x)&&(P+=_,A+=O);var L=x.parentNode;x=L&&L.nodeType===Node.DOCUMENT_FRAGMENT_NODE?L.host:L}while(!E&&x!==document.body||E&&(d.contains(x)||d===x));return(k&&Math.abs(P)<1||!k&&Math.abs(A)<1)&&(b=!0),b},Ho=function(o){return"changedTouches"in o?[o.changedTouches[0].clientX,o.changedTouches[0].clientY]:[0,0]},Hu=function(o){return[o.deltaX,o.deltaY]},Gu=function(o){return o&&"current"in o?o.current:o},ng=function(o,d){return o[0]===d[0]&&o[1]===d[1]},sg=function(o){return` .block-interactivity-`.concat(o,` {pointer-events: none;} .allow-interactivity-`).concat(o,` {pointer-events: all;} `)},og=0,Nn=[];function lg(o){var d=p.useRef([]),a=p.useRef([0,0]),c=p.useRef(),f=p.useState(og++)[0],m=p.useState(jf)[0],h=p.useRef(o);p.useEffect(function(){h.current=o},[o]),p.useEffect(function(){if(o.inert){document.body.classList.add("block-interactivity-".concat(f));var S=Ex([o.lockRef.current],(o.shards||[]).map(Gu),!0).filter(Boolean);return S.forEach(function(C){return C.classList.add("allow-interactivity-".concat(f))}),function(){document.body.classList.remove("block-interactivity-".concat(f)),S.forEach(function(C){return C.classList.remove("allow-interactivity-".concat(f))})}}},[o.inert,o.lockRef.current,o.shards]);var x=p.useCallback(function(S,C){if("touches"in S&&S.touches.length===2||S.type==="wheel"&&S.ctrlKey)return!h.current.allowPinchZoom;var _=Ho(S),L=a.current,q="deltaX"in S?S.deltaX:L[0]-_[0],Z="deltaY"in S?S.deltaY:L[1]-_[1],H,T=S.target,F=Math.abs(q)>Math.abs(Z)?"h":"v";if("touches"in S&&F==="h"&&T.type==="range")return!1;var ne=window.getSelection(),se=ne&&ne.anchorNode,X=se?se===T||se.contains(T):!1;if(X)return!1;var ye=Wu(F,T);if(!ye)return!0;if(ye?H=F:(H=F==="v"?"h":"v",ye=Wu(F,T)),!ye)return!1;if(!c.current&&"changedTouches"in S&&(q||Z)&&(c.current=H),!H)return!0;var ce=c.current||H;return rg(ce,C,S,ce==="h"?q:Z)},[]),E=p.useCallback(function(S){var C=S;if(!(!Nn.length||Nn[Nn.length-1]!==m)){var _="deltaY"in C?Hu(C):Ho(C),L=d.current.filter(function(H){return H.name===C.type&&(H.target===C.target||C.target===H.shadowParent)&&ng(H.delta,_)})[0];if(L&&L.should){C.cancelable&&C.preventDefault();return}if(!L){var q=(h.current.shards||[]).map(Gu).filter(Boolean).filter(function(H){return H.contains(C.target)}),Z=q.length>0?x(C,q[0]):!h.current.noIsolation;Z&&C.cancelable&&C.preventDefault()}}},[]),b=p.useCallback(function(S,C,_,L){var q={name:S,delta:C,target:_,should:L,shadowParent:ag(_)};d.current.push(q),setTimeout(function(){d.current=d.current.filter(function(Z){return Z!==q})},1)},[]),k=p.useCallback(function(S){a.current=Ho(S),c.current=void 0},[]),P=p.useCallback(function(S){b(S.type,Hu(S),S.target,x(S,o.lockRef.current))},[]),A=p.useCallback(function(S){b(S.type,Ho(S),S.target,x(S,o.lockRef.current))},[]);p.useEffect(function(){return Nn.push(m),o.setCallbacks({onScrollCapture:P,onWheelCapture:P,onTouchMoveCapture:A}),document.addEventListener("wheel",E,kn),document.addEventListener("touchmove",E,kn),document.addEventListener("touchstart",k,kn),function(){Nn=Nn.filter(function(S){return S!==m}),document.removeEventListener("wheel",E,kn),document.removeEventListener("touchmove",E,kn),document.removeEventListener("touchstart",k,kn)}},[]);var I=o.removeScrollBar,O=o.inert;return p.createElement(p.Fragment,null,O?p.createElement(m,{styles:sg(f)}):null,I?p.createElement(qx,{noRelative:o.noRelative,gapMode:o.gapMode}):null)}function ag(o){for(var d=null;o!==null;)o instanceof ShadowRoot&&(d=o.host,o=o.host),o=o.parentNode;return d}const ig=Ox(wf,lg);var Cf=p.forwardRef(function(o,d){return p.createElement(ol,Ft({},o,{ref:d,sideCar:ig}))});Cf.classNames=ol.classNames;var dg=function(o){if(typeof document>"u")return null;var d=Array.isArray(o)?o[0]:o;return d.ownerDocument.body},Sn=new WeakMap,Go=new WeakMap,Ko={},di=0,Ef=function(o){return o&&(o.host||Ef(o.parentNode))},cg=function(o,d){return d.map(function(a){if(o.contains(a))return a;var c=Ef(a);return c&&o.contains(c)?c:(console.error("aria-hidden",a,"in not contained inside",o,". Doing nothing"),null)}).filter(function(a){return!!a})},ug=function(o,d,a,c){var f=cg(d,Array.isArray(o)?o:[o]);Ko[a]||(Ko[a]=new WeakMap);var m=Ko[a],h=[],x=new Set,E=new Set(f),b=function(P){!P||x.has(P)||(x.add(P),b(P.parentNode))};f.forEach(b);var k=function(P){!P||E.has(P)||Array.prototype.forEach.call(P.children,function(A){if(x.has(A))k(A);else try{var I=A.getAttribute(c),O=I!==null&&I!=="false",S=(Sn.get(A)||0)+1,C=(m.get(A)||0)+1;Sn.set(A,S),m.set(A,C),h.push(A),S===1&&O&&Go.set(A,!0),C===1&&A.setAttribute(a,"true"),O||A.setAttribute(c,"true")}catch(_){console.error("aria-hidden: cannot operate on ",A,_)}})};return k(d),x.clear(),di++,function(){h.forEach(function(P){var A=Sn.get(P)-1,I=m.get(P)-1;Sn.set(P,A),m.set(P,I),A||(Go.has(P)||P.removeAttribute(c),Go.delete(P)),I||P.removeAttribute(a)}),di--,di||(Sn=new WeakMap,Sn=new WeakMap,Go=new WeakMap,Ko={})}},fg=function(o,d,a){a===void 0&&(a="data-aria-hidden");var c=Array.from(Array.isArray(o)?o:[o]),f=dg(o);return f?(c.push.apply(c,Array.from(f.querySelectorAll("[aria-live], script"))),ug(c,f,a,"aria-hidden")):function(){return null}},ll="Dialog",[_f]=$h(ll),[pg,zt]=_f(ll),Mf=o=>{const{__scopeDialog:d,children:a,open:c,defaultOpen:f,onOpenChange:m,modal:h=!0}=o,x=p.useRef(null),E=p.useRef(null),[b,k]=Hh({prop:c,defaultProp:f??!1,onChange:m,caller:ll});return n.jsx(pg,{scope:d,triggerRef:x,contentRef:E,contentId:Xt(),titleId:Xt(),descriptionId:Xt(),open:b,onOpenChange:k,onOpenToggle:p.useCallback(()=>k(P=>!P),[k]),modal:h,children:a})};Mf.displayName=ll;var Pf="DialogTrigger",mg=p.forwardRef((o,d)=>{const{__scopeDialog:a,...c}=o,f=zt(Pf,a),m=Kr(d,f.triggerRef);return n.jsx(Je.button,{type:"button","aria-haspopup":"dialog","aria-expanded":f.open,"aria-controls":f.open?f.contentId:void 0,"data-state":Ri(f.open),...c,ref:m,onClick:Sr(o.onClick,f.onOpenToggle)})});mg.displayName=Pf;var Pi="DialogPortal",[hg,Rf]=_f(Pi,{forceMount:void 0}),zf=o=>{const{__scopeDialog:d,forceMount:a,children:c,container:f}=o,m=zt(Pi,d);return n.jsx(hg,{scope:d,forceMount:a,children:p.Children.map(c,h=>n.jsx(sl,{present:a||m.open,children:n.jsx(vf,{asChild:!0,container:f,children:h})}))})};zf.displayName=Pi;var nl="DialogOverlay",Df=p.forwardRef((o,d)=>{const a=Rf(nl,o.__scopeDialog),{forceMount:c=a.forceMount,...f}=o,m=zt(nl,o.__scopeDialog);return m.modal?n.jsx(sl,{present:c||m.open,children:n.jsx(gg,{...f,ref:d})}):null});Df.displayName=nl;var xg=pf("DialogOverlay.RemoveScroll"),gg=p.forwardRef((o,d)=>{const{__scopeDialog:a,...c}=o,f=zt(nl,a),m=ux(),h=Kr(d,m);return n.jsx(Cf,{as:xg,allowPinchZoom:!0,shards:[f.contentRef],children:n.jsx(Je.div,{"data-state":Ri(f.open),...c,ref:h,style:{pointerEvents:"auto",...c.style}})})}),Ln="DialogContent",Lf=p.forwardRef((o,d)=>{const a=Rf(Ln,o.__scopeDialog),{forceMount:c=a.forceMount,...f}=o,m=zt(Ln,o.__scopeDialog);return n.jsx(sl,{present:c||m.open,children:m.modal?n.jsx(vg,{...f,ref:d}):n.jsx(yg,{...f,ref:d})})});Lf.displayName=Ln;var vg=p.forwardRef((o,d)=>{const a=zt(Ln,o.__scopeDialog),c=p.useRef(null),f=Kr(d,a.contentRef,c);return p.useEffect(()=>{const m=c.current;if(m)return fg(m)},[]),n.jsx(Af,{...o,ref:f,trapFocus:a.open,disableOutsidePointerEvents:a.open,onCloseAutoFocus:Sr(o.onCloseAutoFocus,m=>{var h;m.preventDefault(),(h=a.triggerRef.current)==null||h.focus()}),onPointerDownOutside:Sr(o.onPointerDownOutside,m=>{const h=m.detail.originalEvent,x=h.button===0&&h.ctrlKey===!0;(h.button===2||x)&&m.preventDefault()}),onFocusOutside:Sr(o.onFocusOutside,m=>m.preventDefault())})}),yg=p.forwardRef((o,d)=>{const a=zt(Ln,o.__scopeDialog),c=p.useRef(!1),f=p.useRef(!1);return n.jsx(Af,{...o,ref:d,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:m=>{var h,x;(h=o.onCloseAutoFocus)==null||h.call(o,m),m.defaultPrevented||(c.current||(x=a.triggerRef.current)==null||x.focus(),m.preventDefault()),c.current=!1,f.current=!1},onInteractOutside:m=>{var E,b;(E=o.onInteractOutside)==null||E.call(o,m),m.defaultPrevented||(c.current=!0,m.detail.originalEvent.type==="pointerdown"&&(f.current=!0));const h=m.target;((b=a.triggerRef.current)==null?void 0:b.contains(h))&&m.preventDefault(),m.detail.originalEvent.type==="focusin"&&f.current&&m.preventDefault()}})}),Af=p.forwardRef((o,d)=>{const{__scopeDialog:a,trapFocus:c,onOpenAutoFocus:f,onCloseAutoFocus:m,...h}=o,x=zt(Ln,a);return Cx(),n.jsx(n.Fragment,{children:n.jsx(xf,{asChild:!0,loop:!0,trapped:c,onMountAutoFocus:f,onUnmountAutoFocus:m,children:n.jsx(mf,{role:"dialog",id:x.contentId,"aria-describedby":x.descriptionId,"aria-labelledby":x.titleId,"data-state":Ri(x.open),...h,ref:d,deferPointerDownOutside:!0,onDismiss:()=>x.onOpenChange(!1)})})})}),Of="DialogTitle",bg=p.forwardRef((o,d)=>{const{__scopeDialog:a,...c}=o,f=zt(Of,a);return n.jsx(Je.h2,{id:f.titleId,...c,ref:d})});bg.displayName=Of;var Tf="DialogDescription",wg=p.forwardRef((o,d)=>{const{__scopeDialog:a,...c}=o,f=zt(Tf,a);return n.jsx(Je.p,{id:f.descriptionId,...c,ref:d})});wg.displayName=Tf;var If="DialogClose",jg=p.forwardRef((o,d)=>{const{__scopeDialog:a,...c}=o,f=zt(If,a);return n.jsx(Je.button,{type:"button",...c,ref:d,onClick:Sr(o.onClick,()=>f.onOpenChange(!1))})});jg.displayName=If;function Ri(o){return o?"open":"closed"}var js='[cmdk-group=""]',ci='[cmdk-group-items=""]',kg='[cmdk-group-heading=""]',Ff='[cmdk-item=""]',Ku=`${Ff}:not([aria-disabled="true"])`,ki="cmdk-item-select",_n="data-value",Ng=(o,d,a)=>Fh(o,d,a),$f=p.createContext(void 0),Rs=()=>p.useContext($f),Uf=p.createContext(void 0),zi=()=>p.useContext(Uf),Bf=p.createContext(void 0),Vf=p.forwardRef((o,d)=>{let a=Mn(()=>{var v,B;return{search:"",value:(B=(v=o.value)!=null?v:o.defaultValue)!=null?B:"",selectedItemId:void 0,filtered:{count:0,items:new Map,groups:new Set}}}),c=Mn(()=>new Set),f=Mn(()=>new Map),m=Mn(()=>new Map),h=Mn(()=>new Set),x=Wf(o),{label:E,children:b,value:k,onValueChange:P,filter:A,shouldFilter:I,loop:O,disablePointerSelection:S=!1,vimBindings:C=!0,..._}=o,L=Xt(),q=Xt(),Z=Xt(),H=p.useRef(null),T=Ag();Gr(()=>{if(k!==void 0){let v=k.trim();a.current.value=v,F.emit()}},[k]),Gr(()=>{T(6,Me)},[]);let F=p.useMemo(()=>({subscribe:v=>(h.current.add(v),()=>h.current.delete(v)),snapshot:()=>a.current,setState:(v,B,Y)=>{var K,oe,pe,me;if(!Object.is(a.current[v],B)){if(a.current[v]=B,v==="search")ce(),X(),T(1,ye);else if(v==="value"){if(document.activeElement.hasAttribute("cmdk-input")||document.activeElement.hasAttribute("cmdk-root")){let w=document.getElementById(Z);w?w.focus():(K=document.getElementById(L))==null||K.focus()}if(T(7,()=>{var w;a.current.selectedItemId=(w=_e())==null?void 0:w.id,F.emit()}),Y||T(5,Me),((oe=x.current)==null?void 0:oe.value)!==void 0){let w=B??"";(me=(pe=x.current).onValueChange)==null||me.call(pe,w);return}}F.emit()}},emit:()=>{h.current.forEach(v=>v())}}),[]),ne=p.useMemo(()=>({value:(v,B,Y)=>{var K;B!==((K=m.current.get(v))==null?void 0:K.value)&&(m.current.set(v,{value:B,keywords:Y}),a.current.filtered.items.set(v,se(B,Y)),T(2,()=>{X(),F.emit()}))},item:(v,B)=>(c.current.add(v),B&&(f.current.has(B)?f.current.get(B).add(v):f.current.set(B,new Set([v]))),T(3,()=>{ce(),X(),a.current.value||ye(),F.emit()}),()=>{m.current.delete(v),c.current.delete(v),a.current.filtered.items.delete(v);let Y=_e();T(4,()=>{ce(),(Y==null?void 0:Y.getAttribute("id"))===v&&ye(),F.emit()})}),group:v=>(f.current.has(v)||f.current.set(v,new Set),()=>{m.current.delete(v),f.current.delete(v)}),filter:()=>x.current.shouldFilter,label:E||o["aria-label"],getDisablePointerSelection:()=>x.current.disablePointerSelection,listId:L,inputId:Z,labelId:q,listInnerRef:H}),[]);function se(v,B){var Y,K;let oe=(K=(Y=x.current)==null?void 0:Y.filter)!=null?K:Ng;return v?oe(v,a.current.search,B):0}function X(){if(!a.current.search||x.current.shouldFilter===!1)return;let v=a.current.filtered.items,B=[];a.current.filtered.groups.forEach(K=>{let oe=f.current.get(K),pe=0;oe.forEach(me=>{let w=v.get(me);pe=Math.max(w,pe)}),B.push([K,pe])});let Y=H.current;Pe().sort((K,oe)=>{var pe,me;let w=K.getAttribute("id"),J=oe.getAttribute("id");return((pe=v.get(J))!=null?pe:0)-((me=v.get(w))!=null?me:0)}).forEach(K=>{let oe=K.closest(ci);oe?oe.appendChild(K.parentElement===oe?K:K.closest(`${ci} > *`)):Y.appendChild(K.parentElement===Y?K:K.closest(`${ci} > *`))}),B.sort((K,oe)=>oe[1]-K[1]).forEach(K=>{var oe;let pe=(oe=H.current)==null?void 0:oe.querySelector(`${js}[${_n}="${encodeURIComponent(K[0])}"]`);pe==null||pe.parentElement.appendChild(pe)})}function ye(){let v=Pe().find(Y=>Y.getAttribute("aria-disabled")!=="true"),B=v==null?void 0:v.getAttribute(_n);F.setState("value",B||void 0)}function ce(){var v,B,Y,K;if(!a.current.search||x.current.shouldFilter===!1){a.current.filtered.count=c.current.size;return}a.current.filtered.groups=new Set;let oe=0;for(let pe of c.current){let me=(B=(v=m.current.get(pe))==null?void 0:v.value)!=null?B:"",w=(K=(Y=m.current.get(pe))==null?void 0:Y.keywords)!=null?K:[],J=se(me,w);a.current.filtered.items.set(pe,J),J>0&&oe++}for(let[pe,me]of f.current)for(let w of me)if(a.current.filtered.items.get(w)>0){a.current.filtered.groups.add(pe);break}a.current.filtered.count=oe}function Me(){var v,B,Y;let K=_e();K&&(((v=K.parentElement)==null?void 0:v.firstChild)===K&&((Y=(B=K.closest(js))==null?void 0:B.querySelector(kg))==null||Y.scrollIntoView({block:"nearest"})),K.scrollIntoView({block:"nearest"}))}function _e(){var v;return(v=H.current)==null?void 0:v.querySelector(`${Ff}[aria-selected="true"]`)}function Pe(){var v;return Array.from(((v=H.current)==null?void 0:v.querySelectorAll(Ku))||[])}function Ne(v){let B=Pe()[v];B&&F.setState("value",B.getAttribute(_n))}function ke(v){var B;let Y=_e(),K=Pe(),oe=K.findIndex(me=>me===Y),pe=K[oe+v];(B=x.current)!=null&&B.loop&&(pe=oe+v<0?K[K.length-1]:oe+v===K.length?K[0]:K[oe+v]),pe&&F.setState("value",pe.getAttribute(_n))}function W(v){let B=_e(),Y=B==null?void 0:B.closest(js),K;for(;Y&&!K;)Y=v>0?Dg(Y,js):Lg(Y,js),K=Y==null?void 0:Y.querySelector(Ku);K?F.setState("value",K.getAttribute(_n)):ke(v)}let ae=()=>Ne(Pe().length-1),G=v=>{v.preventDefault(),v.metaKey?ae():v.altKey?W(1):ke(1)},j=v=>{v.preventDefault(),v.metaKey?Ne(0):v.altKey?W(-1):ke(-1)};return p.createElement(Je.div,{ref:d,tabIndex:-1,..._,"cmdk-root":"",onKeyDown:v=>{var B;(B=_.onKeyDown)==null||B.call(_,v);let Y=v.nativeEvent.isComposing||v.keyCode===229;if(!(v.defaultPrevented||Y))switch(v.key){case"n":case"j":{C&&v.ctrlKey&&G(v);break}case"ArrowDown":{G(v);break}case"p":case"k":{C&&v.ctrlKey&&j(v);break}case"ArrowUp":{j(v);break}case"Home":{v.preventDefault(),Ne(0);break}case"End":{v.preventDefault(),ae();break}case"Enter":{v.preventDefault();let K=_e();if(K){let oe=new Event(ki);K.dispatchEvent(oe)}}}}},p.createElement("label",{"cmdk-label":"",htmlFor:ne.inputId,id:ne.labelId,style:Tg},E),al(o,v=>p.createElement(Uf.Provider,{value:F},p.createElement($f.Provider,{value:ne},v))))}),Sg=p.forwardRef((o,d)=>{var a,c;let f=Xt(),m=p.useRef(null),h=p.useContext(Bf),x=Rs(),E=Wf(o),b=(c=(a=E.current)==null?void 0:a.forceMount)!=null?c:h==null?void 0:h.forceMount;Gr(()=>{if(!b)return x.item(f,h==null?void 0:h.id)},[b]);let k=Hf(f,m,[o.value,o.children,m],o.keywords),P=zi(),A=Cr(T=>T.value&&T.value===k.current),I=Cr(T=>b||x.filter()===!1?!0:T.search?T.filtered.items.get(f)>0:!0);p.useEffect(()=>{let T=m.current;if(!(!T||o.disabled))return T.addEventListener(ki,O),()=>T.removeEventListener(ki,O)},[I,o.onSelect,o.disabled]);function O(){var T,F;S(),(F=(T=E.current).onSelect)==null||F.call(T,k.current)}function S(){P.setState("value",k.current,!0)}if(!I)return null;let{disabled:C,value:_,onSelect:L,forceMount:q,keywords:Z,...H}=o;return p.createElement(Je.div,{ref:Dn(m,d),...H,id:f,"cmdk-item":"",role:"option","aria-disabled":!!C,"aria-selected":!!A,"data-disabled":!!C,"data-selected":!!A,onPointerMove:C||x.getDisablePointerSelection()?void 0:S,onClick:C?void 0:O},o.children)}),Cg=p.forwardRef((o,d)=>{let{heading:a,children:c,forceMount:f,...m}=o,h=Xt(),x=p.useRef(null),E=p.useRef(null),b=Xt(),k=Rs(),P=Cr(I=>f||k.filter()===!1?!0:I.search?I.filtered.groups.has(h):!0);Gr(()=>k.group(h),[]),Hf(h,x,[o.value,o.heading,E]);let A=p.useMemo(()=>({id:h,forceMount:f}),[f]);return p.createElement(Je.div,{ref:Dn(x,d),...m,"cmdk-group":"",role:"presentation",hidden:P?void 0:!0},a&&p.createElement("div",{ref:E,"cmdk-group-heading":"","aria-hidden":!0,id:b},a),al(o,I=>p.createElement("div",{"cmdk-group-items":"",role:"group","aria-labelledby":a?b:void 0},p.createElement(Bf.Provider,{value:A},I))))}),Eg=p.forwardRef((o,d)=>{let{alwaysRender:a,...c}=o,f=p.useRef(null),m=Cr(h=>!h.search);return!a&&!m?null:p.createElement(Je.div,{ref:Dn(f,d),...c,"cmdk-separator":"",role:"separator"})}),_g=p.forwardRef((o,d)=>{let{onValueChange:a,...c}=o,f=o.value!=null,m=zi(),h=Cr(b=>b.search),x=Cr(b=>b.selectedItemId),E=Rs();return p.useEffect(()=>{o.value!=null&&m.setState("search",o.value)},[o.value]),p.createElement(Je.input,{ref:d,...c,"cmdk-input":"",autoComplete:"off",autoCorrect:"off",spellCheck:!1,"aria-autocomplete":"list",role:"combobox","aria-expanded":!0,"aria-controls":E.listId,"aria-labelledby":E.labelId,"aria-activedescendant":x,id:E.inputId,type:"text",value:f?o.value:h,onChange:b=>{f||m.setState("search",b.target.value),a==null||a(b.target.value)}})}),Mg=p.forwardRef((o,d)=>{let{children:a,label:c="Suggestions",...f}=o,m=p.useRef(null),h=p.useRef(null),x=Cr(b=>b.selectedItemId),E=Rs();return p.useEffect(()=>{if(h.current&&m.current){let b=h.current,k=m.current,P,A=new ResizeObserver(()=>{P=requestAnimationFrame(()=>{let I=b.offsetHeight;k.style.setProperty("--cmdk-list-height",I.toFixed(1)+"px")})});return A.observe(b),()=>{cancelAnimationFrame(P),A.unobserve(b)}}},[]),p.createElement(Je.div,{ref:Dn(m,d),...f,"cmdk-list":"",role:"listbox",tabIndex:-1,"aria-activedescendant":x,"aria-label":c,id:E.listId},al(o,b=>p.createElement("div",{ref:Dn(h,E.listInnerRef),"cmdk-list-sizer":""},b)))}),Pg=p.forwardRef((o,d)=>{let{open:a,onOpenChange:c,overlayClassName:f,contentClassName:m,container:h,...x}=o;return p.createElement(Mf,{open:a,onOpenChange:c},p.createElement(zf,{container:h},p.createElement(Df,{"cmdk-overlay":"",className:f}),p.createElement(Lf,{"aria-label":o.label,"cmdk-dialog":"",className:m},p.createElement(Vf,{ref:d,...x}))))}),Rg=p.forwardRef((o,d)=>Cr(a=>a.filtered.count===0)?p.createElement(Je.div,{ref:d,...o,"cmdk-empty":"",role:"presentation"}):null),zg=p.forwardRef((o,d)=>{let{progress:a,children:c,label:f="Loading...",...m}=o;return p.createElement(Je.div,{ref:d,...m,"cmdk-loading":"",role:"progressbar","aria-valuenow":a,"aria-valuemin":0,"aria-valuemax":100,"aria-label":f},al(o,h=>p.createElement("div",{"aria-hidden":!0},h)))}),Cn=Object.assign(Vf,{List:Mg,Item:Sg,Input:_g,Group:Cg,Separator:Eg,Dialog:Pg,Empty:Rg,Loading:zg});function Dg(o,d){let a=o.nextElementSibling;for(;a;){if(a.matches(d))return a;a=a.nextElementSibling}}function Lg(o,d){let a=o.previousElementSibling;for(;a;){if(a.matches(d))return a;a=a.previousElementSibling}}function Wf(o){let d=p.useRef(o);return Gr(()=>{d.current=o}),d}var Gr=typeof window>"u"?p.useEffect:p.useLayoutEffect;function Mn(o){let d=p.useRef();return d.current===void 0&&(d.current=o()),d}function Cr(o){let d=zi(),a=()=>o(d.snapshot());return p.useSyncExternalStore(d.subscribe,a,a)}function Hf(o,d,a,c=[]){let f=p.useRef(),m=Rs();return Gr(()=>{var h;let x=(()=>{var b;for(let k of a){if(typeof k=="string")return k.trim();if(typeof k=="object"&&"current"in k)return k.current?(b=k.current.textContent)==null?void 0:b.trim():f.current}})(),E=c.map(b=>b.trim());m.value(o,x,E),(h=d.current)==null||h.setAttribute(_n,x),f.current=x}),f}var Ag=()=>{let[o,d]=p.useState(),a=Mn(()=>new Map);return Gr(()=>{a.current.forEach(c=>c()),a.current=new Map},[o]),(c,f)=>{a.current.set(c,f),d({})}};function Og(o){let d=o.type;return typeof d=="function"?d(o.props):"render"in d?d.render(o.props):o}function al({asChild:o,children:d},a){return o&&p.isValidElement(d)?p.cloneElement(Og(d),{ref:d.ref},a(d.props.children)):a(d)}var Tg={position:"absolute",width:"1px",height:"1px",padding:"0",margin:"-1px",overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",borderWidth:"0"};function Ig({onNavigate:o}){const[d,a]=p.useState(!1);return p.useEffect(()=>{const c=f=>{(f.metaKey||f.ctrlKey)&&f.key.toLowerCase()==="k"&&(f.preventDefault(),a(m=>!m))};return document.addEventListener("keydown",c),()=>document.removeEventListener("keydown",c)},[]),n.jsx(Cn.Dialog,{open:d,onOpenChange:a,label:"Befehlspalette",className:"fixed inset-0 z-50 flex items-start justify-center bg-black/50 p-4 pt-[12vh]",onClick:()=>a(!1),children:n.jsxs("div",{className:"w-full max-w-lg overflow-hidden rounded-xl border border-border bg-popover text-popover-foreground shadow-2xl",onClick:c=>c.stopPropagation(),children:[n.jsx(Cn.Input,{autoFocus:!0,placeholder:"Springe zu… (Modelle, Routing, System …)",className:"w-full border-b border-border bg-transparent px-4 py-3 text-sm outline-none placeholder:text-muted-foreground"}),n.jsxs(Cn.List,{className:"max-h-80 overflow-y-auto p-2",children:[n.jsx(Cn.Empty,{className:"px-3 py-6 text-center text-sm text-muted-foreground",children:"Nichts gefunden."}),n.jsx(Cn.Group,{heading:"Bereiche",className:"px-1 py-1 text-xs text-muted-foreground",children:yi.map(c=>n.jsxs(Cn.Item,{value:`${c.label} ${c.hint}`,onSelect:()=>{o(c.id),a(!1)},className:"flex cursor-pointer items-center gap-3 rounded-md px-3 py-2 text-sm text-foreground aria-selected:bg-accent aria-selected:text-accent-foreground",children:[n.jsx(c.icon,{className:"h-4 w-4 text-primary"}),n.jsx("span",{children:c.label}),n.jsx("span",{className:"ml-auto truncate text-xs text-muted-foreground",children:c.hint})]},c.id))})]})]})})}async function fe(o,d){var E;const a={"Content-Type":"application/json",...d==null?void 0:d.headers},c=localStorage.getItem("mc_sudo_password"),f=localStorage.getItem("mc_hf_token");c&&(a["X-Sudo-Password"]=c);let m=d==null?void 0:d.body;if((((E=d==null?void 0:d.method)==null?void 0:E.toUpperCase())||"GET")==="POST"){if(typeof m=="string")try{const b=JSON.parse(m);let k=!1;c&&!("sudo_password"in b)&&(b.sudo_password=c,k=!0),f&&!("hf_token"in b)&&(b.hf_token=f,k=!0),k&&(m=JSON.stringify(b))}catch{}else if(!m){const b={};c&&(b.sudo_password=c),f&&(b.hf_token=f),Object.keys(b).length>0&&(m=JSON.stringify(b))}}const x=await fetch(o,{...d,headers:a,body:m});if(!x.ok)throw new Error(`${x.status} ${x.statusText}`);return x.json()}function Gf(o){var d,a,c="";if(typeof o=="string"||typeof o=="number")c+=o;else if(typeof o=="object")if(Array.isArray(o)){var f=o.length;for(d=0;d{const d=Bg(o),{conflictingClassGroups:a,conflictingClassGroupModifiers:c}=o;return{getClassGroupId:h=>{const x=h.split(Di);return x[0]===""&&x.length!==1&&x.shift(),Kf(x,d)||Ug(h)},getConflictingClassGroupIds:(h,x)=>{const E=a[h]||[];return x&&c[h]?[...E,...c[h]]:E}}},Kf=(o,d)=>{var h;if(o.length===0)return d.classGroupId;const a=o[0],c=d.nextPart.get(a),f=c?Kf(o.slice(1),c):void 0;if(f)return f;if(d.validators.length===0)return;const m=o.join(Di);return(h=d.validators.find(({validator:x})=>x(m)))==null?void 0:h.classGroupId},Qu=/^\[(.+)\]$/,Ug=o=>{if(Qu.test(o)){const d=Qu.exec(o)[1],a=d==null?void 0:d.substring(0,d.indexOf(":"));if(a)return"arbitrary.."+a}},Bg=o=>{const{theme:d,prefix:a}=o,c={nextPart:new Map,validators:[]};return Wg(Object.entries(o.classGroups),a).forEach(([m,h])=>{Ni(h,c,m,d)}),c},Ni=(o,d,a,c)=>{o.forEach(f=>{if(typeof f=="string"){const m=f===""?d:qu(d,f);m.classGroupId=a;return}if(typeof f=="function"){if(Vg(f)){Ni(f(c),d,a,c);return}d.validators.push({validator:f,classGroupId:a});return}Object.entries(f).forEach(([m,h])=>{Ni(h,qu(d,m),a,c)})})},qu=(o,d)=>{let a=o;return d.split(Di).forEach(c=>{a.nextPart.has(c)||a.nextPart.set(c,{nextPart:new Map,validators:[]}),a=a.nextPart.get(c)}),a},Vg=o=>o.isThemeGetter,Wg=(o,d)=>d?o.map(([a,c])=>{const f=c.map(m=>typeof m=="string"?d+m:typeof m=="object"?Object.fromEntries(Object.entries(m).map(([h,x])=>[d+h,x])):m);return[a,f]}):o,Hg=o=>{if(o<1)return{get:()=>{},set:()=>{}};let d=0,a=new Map,c=new Map;const f=(m,h)=>{a.set(m,h),d++,d>o&&(d=0,c=a,a=new Map)};return{get(m){let h=a.get(m);if(h!==void 0)return h;if((h=c.get(m))!==void 0)return f(m,h),h},set(m,h){a.has(m)?a.set(m,h):f(m,h)}}},Qf="!",Gg=o=>{const{separator:d,experimentalParseClassName:a}=o,c=d.length===1,f=d[0],m=d.length,h=x=>{const E=[];let b=0,k=0,P;for(let C=0;Ck?P-k:void 0;return{modifiers:E,hasImportantModifier:I,baseClassName:O,maybePostfixModifierPosition:S}};return a?x=>a({className:x,parseClassName:h}):h},Kg=o=>{if(o.length<=1)return o;const d=[];let a=[];return o.forEach(c=>{c[0]==="["?(d.push(...a.sort(),c),a=[]):a.push(c)}),d.push(...a.sort()),d},Qg=o=>({cache:Hg(o.cacheSize),parseClassName:Gg(o),...$g(o)}),qg=/\s+/,Zg=(o,d)=>{const{parseClassName:a,getClassGroupId:c,getConflictingClassGroupIds:f}=d,m=[],h=o.trim().split(qg);let x="";for(let E=h.length-1;E>=0;E-=1){const b=h[E],{modifiers:k,hasImportantModifier:P,baseClassName:A,maybePostfixModifierPosition:I}=a(b);let O=!!I,S=c(O?A.substring(0,I):A);if(!S){if(!O){x=b+(x.length>0?" "+x:x);continue}if(S=c(A),!S){x=b+(x.length>0?" "+x:x);continue}O=!1}const C=Kg(k).join(":"),_=P?C+Qf:C,L=_+S;if(m.includes(L))continue;m.push(L);const q=f(S,O);for(let Z=0;Z0?" "+x:x)}return x};function Yg(){let o=0,d,a,c="";for(;o{if(typeof o=="string")return o;let d,a="";for(let c=0;cP(k),o());return a=Qg(b),c=a.cache.get,f=a.cache.set,m=x,x(E)}function x(E){const b=c(E);if(b)return b;const k=Zg(E,a);return f(E,k),k}return function(){return m(Yg.apply(null,arguments))}}const Te=o=>{const d=a=>a[o]||[];return d.isThemeGetter=!0,d},Zf=/^\[(?:([a-z-]+):)?(.+)\]$/i,Xg=/^\d+\/\d+$/,e0=new Set(["px","full","screen"]),t0=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,r0=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,n0=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,s0=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,o0=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,Jt=o=>Rn(o)||e0.has(o)||Xg.test(o),wr=o=>An(o,"length",p0),Rn=o=>!!o&&!Number.isNaN(Number(o)),ui=o=>An(o,"number",Rn),ks=o=>!!o&&Number.isInteger(Number(o)),l0=o=>o.endsWith("%")&&Rn(o.slice(0,-1)),we=o=>Zf.test(o),jr=o=>t0.test(o),a0=new Set(["length","size","percentage"]),i0=o=>An(o,a0,Yf),d0=o=>An(o,"position",Yf),c0=new Set(["image","url"]),u0=o=>An(o,c0,h0),f0=o=>An(o,"",m0),Ns=()=>!0,An=(o,d,a)=>{const c=Zf.exec(o);return c?c[1]?typeof d=="string"?c[1]===d:d.has(c[1]):a(c[2]):!1},p0=o=>r0.test(o)&&!n0.test(o),Yf=()=>!1,m0=o=>s0.test(o),h0=o=>o0.test(o),x0=()=>{const o=Te("colors"),d=Te("spacing"),a=Te("blur"),c=Te("brightness"),f=Te("borderColor"),m=Te("borderRadius"),h=Te("borderSpacing"),x=Te("borderWidth"),E=Te("contrast"),b=Te("grayscale"),k=Te("hueRotate"),P=Te("invert"),A=Te("gap"),I=Te("gradientColorStops"),O=Te("gradientColorStopPositions"),S=Te("inset"),C=Te("margin"),_=Te("opacity"),L=Te("padding"),q=Te("saturate"),Z=Te("scale"),H=Te("sepia"),T=Te("skew"),F=Te("space"),ne=Te("translate"),se=()=>["auto","contain","none"],X=()=>["auto","hidden","clip","visible","scroll"],ye=()=>["auto",we,d],ce=()=>[we,d],Me=()=>["",Jt,wr],_e=()=>["auto",Rn,we],Pe=()=>["bottom","center","left","left-bottom","left-top","right","right-bottom","right-top","top"],Ne=()=>["solid","dashed","dotted","double","none"],ke=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],W=()=>["start","end","center","between","around","evenly","stretch"],ae=()=>["","0",we],G=()=>["auto","avoid","all","avoid-page","page","left","right","column"],j=()=>[Rn,we];return{cacheSize:500,separator:":",theme:{colors:[Ns],spacing:[Jt,wr],blur:["none","",jr,we],brightness:j(),borderColor:[o],borderRadius:["none","","full",jr,we],borderSpacing:ce(),borderWidth:Me(),contrast:j(),grayscale:ae(),hueRotate:j(),invert:ae(),gap:ce(),gradientColorStops:[o],gradientColorStopPositions:[l0,wr],inset:ye(),margin:ye(),opacity:j(),padding:ce(),saturate:j(),scale:j(),sepia:ae(),skew:j(),space:ce(),translate:ce()},classGroups:{aspect:[{aspect:["auto","square","video",we]}],container:["container"],columns:[{columns:[jr]}],"break-after":[{"break-after":G()}],"break-before":[{"break-before":G()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:[...Pe(),we]}],overflow:[{overflow:X()}],"overflow-x":[{"overflow-x":X()}],"overflow-y":[{"overflow-y":X()}],overscroll:[{overscroll:se()}],"overscroll-x":[{"overscroll-x":se()}],"overscroll-y":[{"overscroll-y":se()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:[S]}],"inset-x":[{"inset-x":[S]}],"inset-y":[{"inset-y":[S]}],start:[{start:[S]}],end:[{end:[S]}],top:[{top:[S]}],right:[{right:[S]}],bottom:[{bottom:[S]}],left:[{left:[S]}],visibility:["visible","invisible","collapse"],z:[{z:["auto",ks,we]}],basis:[{basis:ye()}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["wrap","wrap-reverse","nowrap"]}],flex:[{flex:["1","auto","initial","none",we]}],grow:[{grow:ae()}],shrink:[{shrink:ae()}],order:[{order:["first","last","none",ks,we]}],"grid-cols":[{"grid-cols":[Ns]}],"col-start-end":[{col:["auto",{span:["full",ks,we]},we]}],"col-start":[{"col-start":_e()}],"col-end":[{"col-end":_e()}],"grid-rows":[{"grid-rows":[Ns]}],"row-start-end":[{row:["auto",{span:[ks,we]},we]}],"row-start":[{"row-start":_e()}],"row-end":[{"row-end":_e()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":["auto","min","max","fr",we]}],"auto-rows":[{"auto-rows":["auto","min","max","fr",we]}],gap:[{gap:[A]}],"gap-x":[{"gap-x":[A]}],"gap-y":[{"gap-y":[A]}],"justify-content":[{justify:["normal",...W()]}],"justify-items":[{"justify-items":["start","end","center","stretch"]}],"justify-self":[{"justify-self":["auto","start","end","center","stretch"]}],"align-content":[{content:["normal",...W(),"baseline"]}],"align-items":[{items:["start","end","center","baseline","stretch"]}],"align-self":[{self:["auto","start","end","center","stretch","baseline"]}],"place-content":[{"place-content":[...W(),"baseline"]}],"place-items":[{"place-items":["start","end","center","baseline","stretch"]}],"place-self":[{"place-self":["auto","start","end","center","stretch"]}],p:[{p:[L]}],px:[{px:[L]}],py:[{py:[L]}],ps:[{ps:[L]}],pe:[{pe:[L]}],pt:[{pt:[L]}],pr:[{pr:[L]}],pb:[{pb:[L]}],pl:[{pl:[L]}],m:[{m:[C]}],mx:[{mx:[C]}],my:[{my:[C]}],ms:[{ms:[C]}],me:[{me:[C]}],mt:[{mt:[C]}],mr:[{mr:[C]}],mb:[{mb:[C]}],ml:[{ml:[C]}],"space-x":[{"space-x":[F]}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":[F]}],"space-y-reverse":["space-y-reverse"],w:[{w:["auto","min","max","fit","svw","lvw","dvw",we,d]}],"min-w":[{"min-w":[we,d,"min","max","fit"]}],"max-w":[{"max-w":[we,d,"none","full","min","max","fit","prose",{screen:[jr]},jr]}],h:[{h:[we,d,"auto","min","max","fit","svh","lvh","dvh"]}],"min-h":[{"min-h":[we,d,"min","max","fit","svh","lvh","dvh"]}],"max-h":[{"max-h":[we,d,"min","max","fit","svh","lvh","dvh"]}],size:[{size:[we,d,"auto","min","max","fit"]}],"font-size":[{text:["base",jr,wr]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:["thin","extralight","light","normal","medium","semibold","bold","extrabold","black",ui]}],"font-family":[{font:[Ns]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:["tighter","tight","normal","wide","wider","widest",we]}],"line-clamp":[{"line-clamp":["none",Rn,ui]}],leading:[{leading:["none","tight","snug","normal","relaxed","loose",Jt,we]}],"list-image":[{"list-image":["none",we]}],"list-style-type":[{list:["none","disc","decimal",we]}],"list-style-position":[{list:["inside","outside"]}],"placeholder-color":[{placeholder:[o]}],"placeholder-opacity":[{"placeholder-opacity":[_]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"text-color":[{text:[o]}],"text-opacity":[{"text-opacity":[_]}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...Ne(),"wavy"]}],"text-decoration-thickness":[{decoration:["auto","from-font",Jt,wr]}],"underline-offset":[{"underline-offset":["auto",Jt,we]}],"text-decoration-color":[{decoration:[o]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:ce()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",we]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",we]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-opacity":[{"bg-opacity":[_]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:[...Pe(),d0]}],"bg-repeat":[{bg:["no-repeat",{repeat:["","x","y","round","space"]}]}],"bg-size":[{bg:["auto","cover","contain",i0]}],"bg-image":[{bg:["none",{"gradient-to":["t","tr","r","br","b","bl","l","tl"]},u0]}],"bg-color":[{bg:[o]}],"gradient-from-pos":[{from:[O]}],"gradient-via-pos":[{via:[O]}],"gradient-to-pos":[{to:[O]}],"gradient-from":[{from:[I]}],"gradient-via":[{via:[I]}],"gradient-to":[{to:[I]}],rounded:[{rounded:[m]}],"rounded-s":[{"rounded-s":[m]}],"rounded-e":[{"rounded-e":[m]}],"rounded-t":[{"rounded-t":[m]}],"rounded-r":[{"rounded-r":[m]}],"rounded-b":[{"rounded-b":[m]}],"rounded-l":[{"rounded-l":[m]}],"rounded-ss":[{"rounded-ss":[m]}],"rounded-se":[{"rounded-se":[m]}],"rounded-ee":[{"rounded-ee":[m]}],"rounded-es":[{"rounded-es":[m]}],"rounded-tl":[{"rounded-tl":[m]}],"rounded-tr":[{"rounded-tr":[m]}],"rounded-br":[{"rounded-br":[m]}],"rounded-bl":[{"rounded-bl":[m]}],"border-w":[{border:[x]}],"border-w-x":[{"border-x":[x]}],"border-w-y":[{"border-y":[x]}],"border-w-s":[{"border-s":[x]}],"border-w-e":[{"border-e":[x]}],"border-w-t":[{"border-t":[x]}],"border-w-r":[{"border-r":[x]}],"border-w-b":[{"border-b":[x]}],"border-w-l":[{"border-l":[x]}],"border-opacity":[{"border-opacity":[_]}],"border-style":[{border:[...Ne(),"hidden"]}],"divide-x":[{"divide-x":[x]}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":[x]}],"divide-y-reverse":["divide-y-reverse"],"divide-opacity":[{"divide-opacity":[_]}],"divide-style":[{divide:Ne()}],"border-color":[{border:[f]}],"border-color-x":[{"border-x":[f]}],"border-color-y":[{"border-y":[f]}],"border-color-s":[{"border-s":[f]}],"border-color-e":[{"border-e":[f]}],"border-color-t":[{"border-t":[f]}],"border-color-r":[{"border-r":[f]}],"border-color-b":[{"border-b":[f]}],"border-color-l":[{"border-l":[f]}],"divide-color":[{divide:[f]}],"outline-style":[{outline:["",...Ne()]}],"outline-offset":[{"outline-offset":[Jt,we]}],"outline-w":[{outline:[Jt,wr]}],"outline-color":[{outline:[o]}],"ring-w":[{ring:Me()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:[o]}],"ring-opacity":[{"ring-opacity":[_]}],"ring-offset-w":[{"ring-offset":[Jt,wr]}],"ring-offset-color":[{"ring-offset":[o]}],shadow:[{shadow:["","inner","none",jr,f0]}],"shadow-color":[{shadow:[Ns]}],opacity:[{opacity:[_]}],"mix-blend":[{"mix-blend":[...ke(),"plus-lighter","plus-darker"]}],"bg-blend":[{"bg-blend":ke()}],filter:[{filter:["","none"]}],blur:[{blur:[a]}],brightness:[{brightness:[c]}],contrast:[{contrast:[E]}],"drop-shadow":[{"drop-shadow":["","none",jr,we]}],grayscale:[{grayscale:[b]}],"hue-rotate":[{"hue-rotate":[k]}],invert:[{invert:[P]}],saturate:[{saturate:[q]}],sepia:[{sepia:[H]}],"backdrop-filter":[{"backdrop-filter":["","none"]}],"backdrop-blur":[{"backdrop-blur":[a]}],"backdrop-brightness":[{"backdrop-brightness":[c]}],"backdrop-contrast":[{"backdrop-contrast":[E]}],"backdrop-grayscale":[{"backdrop-grayscale":[b]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[k]}],"backdrop-invert":[{"backdrop-invert":[P]}],"backdrop-opacity":[{"backdrop-opacity":[_]}],"backdrop-saturate":[{"backdrop-saturate":[q]}],"backdrop-sepia":[{"backdrop-sepia":[H]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":[h]}],"border-spacing-x":[{"border-spacing-x":[h]}],"border-spacing-y":[{"border-spacing-y":[h]}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["none","all","","colors","opacity","shadow","transform",we]}],duration:[{duration:j()}],ease:[{ease:["linear","in","out","in-out",we]}],delay:[{delay:j()}],animate:[{animate:["none","spin","ping","pulse","bounce",we]}],transform:[{transform:["","gpu","none"]}],scale:[{scale:[Z]}],"scale-x":[{"scale-x":[Z]}],"scale-y":[{"scale-y":[Z]}],rotate:[{rotate:[ks,we]}],"translate-x":[{"translate-x":[ne]}],"translate-y":[{"translate-y":[ne]}],"skew-x":[{"skew-x":[T]}],"skew-y":[{"skew-y":[T]}],"transform-origin":[{origin:["center","top","top-right","right","bottom-right","bottom","bottom-left","left","top-left",we]}],accent:[{accent:["auto",o]}],appearance:[{appearance:["none","auto"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",we]}],"caret-color":[{caret:[o]}],"pointer-events":[{"pointer-events":["none","auto"]}],resize:[{resize:["none","y","x",""]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":ce()}],"scroll-mx":[{"scroll-mx":ce()}],"scroll-my":[{"scroll-my":ce()}],"scroll-ms":[{"scroll-ms":ce()}],"scroll-me":[{"scroll-me":ce()}],"scroll-mt":[{"scroll-mt":ce()}],"scroll-mr":[{"scroll-mr":ce()}],"scroll-mb":[{"scroll-mb":ce()}],"scroll-ml":[{"scroll-ml":ce()}],"scroll-p":[{"scroll-p":ce()}],"scroll-px":[{"scroll-px":ce()}],"scroll-py":[{"scroll-py":ce()}],"scroll-ps":[{"scroll-ps":ce()}],"scroll-pe":[{"scroll-pe":ce()}],"scroll-pt":[{"scroll-pt":ce()}],"scroll-pr":[{"scroll-pr":ce()}],"scroll-pb":[{"scroll-pb":ce()}],"scroll-pl":[{"scroll-pl":ce()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",we]}],fill:[{fill:[o,"none"]}],"stroke-w":[{stroke:[Jt,wr,ui]}],stroke:[{stroke:[o,"none"]}],sr:["sr-only","not-sr-only"],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-s","border-w-e","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-s","border-color-e","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]}}},g0=Jg(x0);function ee(...o){return g0(Fg(o))}function Ps(o){return o?o.replace(/127\.0\.0\.1|localhost/g,"192.168.178.151"):""}function Qr({type:o,title:d,message:a,defaultValue:c,onConfirm:f,onCancel:m}){return n.jsx("div",{className:"fixed inset-0 z-[99] bg-black/60 backdrop-blur-sm flex items-center justify-center p-4",children:n.jsxs("div",{className:"w-full max-w-sm rounded-2xl border border-border/80 bg-card p-6 shadow-2xl space-y-4 animate-in fade-in zoom-in-95 duration-200",children:[n.jsxs("div",{className:"flex items-center justify-between border-b border-border/20 pb-2",children:[n.jsx("h3",{className:"text-xs font-bold uppercase tracking-wider text-primary",children:d}),n.jsx("button",{onClick:m||(()=>f()),className:"p-1 rounded hover:bg-accent text-muted-foreground hover:text-foreground cursor-pointer",children:n.jsx(Hr,{className:"h-4 w-4"})})]}),n.jsx("p",{className:"text-xs text-muted-foreground leading-relaxed",children:a}),o==="prompt"&&n.jsx("input",{type:"text",id:"custom-dialog-input",defaultValue:c,className:"w-full h-9 px-3 text-xs bg-background/40 border border-border/60 rounded-lg outline-none focus:border-primary transition-colors text-foreground",autoFocus:!0,onKeyDown:h=>{var x;if(h.key==="Enter"){const E=(x=document.getElementById("custom-dialog-input"))==null?void 0:x.value;f(E)}}}),n.jsxs("div",{className:"flex justify-end gap-3 pt-2",children:[(o==="confirm"||o==="prompt")&&n.jsx("button",{onClick:m,className:"h-8 px-4 flex items-center justify-center text-xs font-semibold text-muted-foreground border border-border/60 bg-background/20 hover:bg-accent rounded-lg transition-colors cursor-pointer",children:"Abbrechen"}),n.jsx("button",{onClick:()=>{var x;const h=o==="prompt"?(x=document.getElementById("custom-dialog-input"))==null?void 0:x.value:void 0;f(h)},className:"h-8 px-4 flex items-center justify-center text-xs font-semibold text-primary-foreground bg-primary hover:bg-primary/95 rounded-lg transition-colors cursor-pointer",children:o==="confirm"?"Ja, fortfahren":o==="prompt"?"Übernehmen":"OK"})]})]})})}function En(o){return(o/1024**3).toFixed(1)}function Qo({value:o,label:d,detail:a}){const f=2*Math.PI*24,m=f-Math.min(o,100)/100*f,h=o>90?"stroke-red-500":o>75?"stroke-amber-500":"stroke-primary";return n.jsxs("div",{className:"flex flex-col items-center gap-1.5 p-2 bg-background/20 rounded-xl border border-border/40",children:[n.jsxs("div",{className:"relative flex h-16 w-16 items-center justify-center",children:[n.jsxs("svg",{className:"absolute inset-0 h-full w-full -rotate-90",children:[n.jsx("circle",{cx:"32",cy:"32",r:24,className:"stroke-muted fill-none",strokeWidth:"4.5"}),n.jsx("circle",{cx:"32",cy:"32",r:24,className:ee("fill-none transition-all duration-700 ease-out",h),strokeWidth:"4.5",strokeDasharray:f,strokeDashoffset:m,strokeLinecap:"round"})]}),n.jsxs("span",{className:"text-xs font-mono font-bold tracking-tight text-foreground",children:[Math.round(o),"%"]})]}),n.jsx("span",{className:"text-[11px] font-semibold text-muted-foreground uppercase tracking-wider",children:d}),a&&n.jsx("span",{className:"text-[10px] font-mono text-muted-foreground/80",children:a})]})}function v0(){const[o,d]=p.useState(null),[a,c]=p.useState(null),[f,m]=p.useState([]),[h,x]=p.useState([]),[E,b]=p.useState([]),[k,P]=p.useState(null),[A,I]=p.useState([]),[O,S]=p.useState(null),[C,_]=p.useState(""),[L,q]=p.useState(!1),[Z,H]=p.useState(""),[T,F]=p.useState(!1),[ne,se]=p.useState({open:!1,actionPath:"",actionLabel:""}),[X,ye]=p.useState(null),[ce,Me]=p.useState(!1);async function _e(w){try{await fe("/api/agent/brain",{method:"POST",body:JSON.stringify({model:w})}),ye({type:"alert",title:"Erfolgreich",message:`Hermes-Gehirn wurde auf '${w}' geändert. Der Gateway-Dienst wurde neu gestartet.`,onConfirm:()=>ye(null)}),v(),Me(!1)}catch(J){ye({type:"alert",title:"Fehler",message:`Fehler beim Wechseln des Gehirns: ${J.message}`,onConfirm:()=>ye(null)})}}function Pe(w,J,Le){ye({type:"confirm",title:w,message:J,onConfirm:()=>{ye(null),Le()},onCancel:()=>ye(null)})}const[Ne,ke]=p.useState(""),[W,ae]=p.useState("stable"),[G,j]=p.useState(!1);function v(){fe("/api/system/status").then(d).catch(()=>{}),fe("/api/agent/status").then(c).catch(()=>{}),fe("/api/models").then(w=>{m(w.models||[]),x(w.running||[])}).catch(()=>{}),fe("/api/memory?category=").then(w=>b(w.slice(0,3))).catch(()=>{}),fe("/api/maintenance/updates").then(P).catch(()=>{}),fe("/api/jobs").then(w=>I(w.jobs||[])).catch(()=>{}),fe("/api/system/token-stats").then(S).catch(()=>{})}p.useEffect(()=>{v();const w=setInterval(v,3e3);return()=>clearInterval(w)},[]);async function B(w,J,Le,$t){_(`${J} wird ausgeführt...`),q(!0);try{const lt={...Le},nt=await fe(w,{method:"POST",body:JSON.stringify(lt)});if(nt.status==="password_required"||nt.status==="incorrect_password"){se({open:!0,actionPath:w,actionLabel:J,payload:Le,error:nt.status==="incorrect_password"?"Falsches Sudo-Passwort. Bitte erneut versuchen.":void 0}),_("");return}nt.job_id?_(`${J} gestartet (Job-ID: ${nt.job_id})`):nt.ok?_(`${J} erfolgreich ausgeführt.`):_(`Fehler: ${nt.err||"Unbekannter Fehler"}`),v()}catch(lt){_(`Fehler bei ${J}: ${lt.message}`)}finally{q(!1)}}async function Y(){F(!0);try{const w={...ne.payload,sudo_password:Z},J=await fe(ne.actionPath,{method:"POST",body:JSON.stringify(w)});if(J.status==="password_required"||J.status==="incorrect_password"){se(Le=>({...Le,error:"Falsches Sudo-Passwort. Bitte erneut versuchen."}));return}J.job_id?_(`${ne.actionLabel} gestartet (Job-ID: ${J.job_id})`):J.ok?_(`${ne.actionLabel} erfolgreich ausgeführt.`):_(`Fehler: ${J.err||"Unbekannter Fehler"}`),se({open:!1,actionPath:"",actionLabel:""}),H(""),v()}catch(w){_(`Fehler: ${w.message}`),se({open:!1,actionPath:"",actionLabel:""}),H("")}finally{F(!1)}}async function K(w,J){_(`Upgrade für ${w} wird gestartet...`);try{await fe("/api/models/install",{method:"POST",body:JSON.stringify({repo:w,role:J,quant:"Q4_K_M",jinja:!0})}),_("Upgrade-Download gestartet."),v()}catch(Le){_(`Upgrade fehlgeschlagen: ${Le.message}`)}}async function oe(){if(!(!Ne.trim()||G)){j(!0);try{await fe("/api/memory",{method:"POST",body:JSON.stringify({content:Ne,category:W,source:"dashboard"})}),ke(""),fe("/api/memory?category=").then(w=>b(w.slice(0,3))).catch(()=>{})}catch(w){console.error(w)}finally{j(!1)}}}const pe=A.find(w=>w.label.includes("OS-Update")&&(w.state==="running"||w.state==="queued")),me=A.find(w=>w.label.includes("Engine-Update")&&(w.state==="running"||w.state==="queued"));return n.jsxs("div",{className:"space-y-6",children:[ne.open&&n.jsx("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/60 backdrop-blur-sm p-4",children:n.jsxs("div",{className:"w-full max-w-sm rounded-2xl border border-border/60 bg-card/90 backdrop-blur-xl p-5 shadow-2xl space-y-4",children:[n.jsxs("div",{className:"flex items-center justify-between border-b border-border/20 pb-2",children:[n.jsx("span",{className:"text-xs font-bold uppercase tracking-wider text-primary font-space",children:"Sudo-Passwort erforderlich"}),n.jsx("button",{onClick:()=>{se({open:!1,actionPath:"",actionLabel:""}),H("")},className:"p-1 rounded hover:bg-accent text-muted-foreground hover:text-foreground cursor-pointer",children:n.jsx(Hr,{className:"h-4 w-4"})})]}),n.jsxs("p",{className:"text-[10px] text-muted-foreground leading-normal",children:["Für die Aktion ",n.jsx("strong",{children:ne.actionLabel})," wird das Administrator-Passwort (Sudo) auf der Box benötigt."]}),n.jsxs("div",{className:"space-y-2",children:[n.jsx("input",{type:"password",value:Z,onChange:w=>H(w.target.value),placeholder:"Sudo-Passwort eingeben...",className:"w-full h-9 rounded-lg border border-border/60 bg-background/40 px-3 text-xs outline-none focus:ring-1 focus:ring-primary/50 text-foreground",onKeyDown:w=>w.key==="Enter"&&Y(),autoFocus:!0}),ne.error&&n.jsx("div",{className:"text-[10px] font-semibold text-red-400",children:ne.error})]}),n.jsxs("div",{className:"flex gap-2 justify-end",children:[n.jsx("button",{onClick:()=>{se({open:!1,actionPath:"",actionLabel:""}),H("")},className:"h-8 px-3 rounded-lg border border-border/60 bg-background/25 text-[10px] font-bold uppercase hover:bg-accent transition-all cursor-pointer",children:"Abbrechen"}),n.jsx("button",{onClick:Y,disabled:!Z||T,className:"h-8 px-4 rounded-lg bg-primary text-primary-foreground text-[10px] font-bold uppercase hover:opacity-90 transition-all disabled:opacity-50 cursor-pointer flex items-center justify-center gap-1.5",children:T?"Prüfe...":"Ausführen"})]})]})}),n.jsxs("div",{children:[n.jsx("h1",{className:"text-2xl font-space font-bold tracking-tight bg-gradient-to-r from-foreground via-foreground to-primary bg-clip-text text-transparent",children:"Zentrale"}),n.jsx("p",{className:"text-sm text-muted-foreground",children:"Aktueller Status von System, Modellen und Agent."})]}),n.jsxs("div",{className:"grid gap-6 md:grid-cols-3",children:[n.jsxs("div",{className:"md:col-span-2 flex flex-col justify-between rounded-2xl border border-border/60 bg-card/45 backdrop-blur-md p-5 shadow-lg shadow-black/15",children:[n.jsxs("div",{children:[n.jsxs("div",{className:"flex items-center gap-2 mb-4",children:[n.jsx(gt,{className:"h-4.5 w-4.5 text-primary"}),n.jsx("h2",{className:"text-sm font-semibold tracking-wide uppercase text-foreground",children:"System-Status"})]}),o?n.jsxs("div",{className:"grid grid-cols-2 gap-3 sm:grid-cols-4",children:[n.jsx(Qo,{value:o.cpu.percent,label:"CPU",detail:o.cpu.cores?`${o.cpu.cores} Cores`:void 0}),n.jsx(Qo,{value:o.ram.percent,label:"RAM",detail:`${En(o.ram.used)} / ${En(o.ram.total)} GB`}),o.gpu&&o.gpu.busy_percent!=null&&o.gpu.gtt_used!=null&&o.gpu.gtt_total!=null&&n.jsx(Qo,{value:o.gpu.busy_percent,label:"GPU",detail:`${En(o.gpu.gtt_used)} / ${En(o.gpu.gtt_total)} GB`}),o.disk&&n.jsx(Qo,{value:o.disk.percent,label:"Disk",detail:`${En(o.disk.used)} / ${En(o.disk.total)} GB`})]}):n.jsx("div",{className:"h-28 flex items-center justify-center text-xs text-muted-foreground",children:"Lade Systemdaten…"})]}),(o==null?void 0:o.temp)&&(o.temp.cpu||o.temp.gpu)&&n.jsxs("div",{className:"mt-4 flex gap-4 text-xs font-mono text-muted-foreground/80 border-t border-border/30 pt-3",children:[o.temp.cpu!=null&&n.jsxs("span",{children:["CPU Temp: ",o.temp.cpu," °C"]}),o.temp.gpu!=null&&n.jsxs("span",{children:["GPU Temp: ",o.temp.gpu," °C"]})]})]}),n.jsxs("div",{className:"rounded-2xl border border-border/60 bg-card/45 backdrop-blur-md p-5 shadow-lg shadow-black/15 flex flex-col justify-between",children:[n.jsxs("div",{className:"space-y-4",children:[n.jsxs("div",{className:"flex items-center justify-between flex-wrap gap-2 border-b border-border/20 pb-2",children:[n.jsxs("div",{className:"flex items-center gap-2",children:[n.jsx(Ch,{className:"h-4.5 w-4.5 text-primary"}),n.jsx("h2",{className:"text-sm font-semibold tracking-wide uppercase text-foreground",children:"Updates & Pflege"})]}),(k==null?void 0:k.last_check)&&n.jsxs("span",{className:"text-[9px] text-muted-foreground/80 font-mono",children:["Zuletzt gesucht: ",new Date(k.last_check*1e3).toLocaleString("de-DE",{day:"2-digit",month:"2-digit",year:"numeric",hour:"2-digit",minute:"2-digit"})]})]}),k?n.jsxs("div",{className:"space-y-3",children:[n.jsxs("div",{className:"space-y-1.5",children:[n.jsxs("div",{className:ee("flex items-center justify-between px-3 py-1.5 rounded-lg border text-xs",k.os>0?"border-amber-500/30 bg-amber-500/5 text-amber-400 font-semibold":"border-border/30 bg-background/25 text-muted-foreground"),children:[n.jsx("span",{children:"OS-Pakete"}),n.jsx("span",{className:"font-mono",children:k.os>0?`${k.os} verfügbar`:"aktuell"})]}),n.jsxs("div",{className:ee("flex items-center justify-between px-3 py-1.5 rounded-lg border text-xs",k.engine>0?"border-amber-500/30 bg-amber-500/5 text-amber-400 font-semibold":"border-border/30 bg-background/25 text-muted-foreground"),children:[n.jsx("span",{children:"Engine (llama.cpp)"}),n.jsx("span",{className:"font-mono",children:k.engine>0?"Update verfügbar":"aktuell"})]}),n.jsxs("div",{className:ee("flex items-center justify-between px-3 py-1.5 rounded-lg border text-xs",k.models>0?"border-primary/30 bg-primary/5 text-primary font-semibold animate-pulse":"border-border/30 bg-background/25 text-muted-foreground"),children:[n.jsx("span",{children:"Modell-Upgrades"}),n.jsx("span",{className:"font-mono",children:k.models>0?`${k.models} verfügbar`:"aktuell"})]})]}),n.jsxs("div",{className:"grid grid-cols-2 gap-2 border-t border-border/20 pt-3",children:[n.jsx("button",{onClick:()=>B("/api/maintenance/os-update","OS-Update"),disabled:L||!!pe,className:"h-8 px-2 rounded-lg border border-border/60 bg-background/20 text-[10px] font-bold uppercase hover:border-primary/50 hover:bg-background/40 transition-all cursor-pointer disabled:opacity-50 flex items-center justify-center gap-1",children:pe?n.jsxs(n.Fragment,{children:[n.jsx(Br,{className:"h-3 w-3 animate-spin text-primary"}),n.jsxs("span",{children:["Aktiv (",pe.progress??0,"%)"]})]}):n.jsx("span",{children:"OS Update"})}),n.jsx("button",{onClick:()=>B("/api/maintenance/engine-update","Engine-Update"),disabled:L||!!me,className:"h-8 px-2 rounded-lg border border-border/60 bg-background/20 text-[10px] font-bold uppercase hover:border-primary/50 hover:bg-background/40 transition-all cursor-pointer disabled:opacity-50 flex items-center justify-center gap-1",children:me?n.jsxs(n.Fragment,{children:[n.jsx(Br,{className:"h-3 w-3 animate-spin text-primary"}),n.jsxs("span",{children:["Aktiv (",me.progress??0,"%)"]})]}):n.jsx("span",{children:"Engine Update"})})]}),n.jsxs("button",{onClick:()=>{Pe("Host-System neu starten?","Bist du sicher, dass du das Host-System neu starten willst?",()=>B("/api/maintenance/reboot","Reboot"))},disabled:L,className:"w-full h-8 flex items-center justify-center gap-1.5 rounded-lg border border-red-500/30 bg-red-500/5 text-red-400 text-[10px] font-bold uppercase hover:bg-red-500/10 transition-all cursor-pointer disabled:opacity-50",children:[n.jsx(df,{className:"h-3.5 w-3.5"}),n.jsx("span",{children:"Host Reboot"})]}),k.model_list.length>0&&n.jsxs("div",{className:"space-y-1.5 border-t border-border/20 pt-3",children:[n.jsx("div",{className:"text-[9px] uppercase font-bold text-muted-foreground/60 tracking-wider",children:"Verfügbare Modell-Upgrades:"}),n.jsx("div",{className:"max-h-24 overflow-y-auto space-y-1.5 pr-1 scrollbar-thin",children:k.model_list.map(w=>n.jsxs("div",{className:"flex items-center justify-between p-2 rounded bg-background/25 border border-border/30 text-[10px] font-mono text-muted-foreground",children:[n.jsxs("span",{className:"truncate flex-1 mr-1.5",title:`${w.role}: ${w.repo}`,children:[n.jsx("span",{className:"text-primary font-bold uppercase",children:w.role}),": ",w.repo.split("/").pop()]}),n.jsxs("button",{onClick:()=>K(w.repo,w.role),className:"px-2 py-0.5 text-[8px] font-bold uppercase rounded bg-primary text-primary-foreground hover:opacity-90 transition-all cursor-pointer flex items-center gap-0.5",children:[n.jsx(Vr,{className:"h-2.5 w-2.5"})," Laden"]})]},w.repo))})]})]}):n.jsx("div",{className:"h-24 flex items-center justify-center text-xs text-muted-foreground",children:"Lade Updates..."}),C&&n.jsx("div",{className:"text-[10px] font-mono text-primary font-medium bg-primary/5 p-2 rounded-lg border border-primary/20 break-all leading-normal",children:C}),n.jsxs("div",{className:"text-[9px] text-muted-foreground/60 leading-normal border-t border-border/10 pt-2.5 flex items-start gap-1",children:[n.jsx(Wr,{className:"h-3 w-3 shrink-0 text-muted-foreground/50 mt-0.5"}),n.jsxs("span",{children:["OS-Update & Reboot benötigen NOPASSWD in ",n.jsx("code",{children:"/etc/sudoers"})," (z.B. ",n.jsx("code",{children:"hitonabi ALL=(root) NOPASSWD:..."}),") oder ein gültiges Sudo-Passwort per Pop-up."]})]})]}),n.jsx("div",{className:"mt-4 border-t border-border/30 pt-3 shrink-0",children:n.jsx("button",{onClick:()=>window.dispatchEvent(new CustomEvent("open-system-drawer")),className:"w-full h-8 flex items-center justify-center gap-1.5 rounded-lg bg-primary text-primary-foreground text-xs font-semibold hover:opacity-90 transition-all cursor-pointer shadow-md shadow-primary/10",children:"System-Zentrale öffnen"})})]})]}),n.jsxs("div",{className:"grid gap-6 md:grid-cols-2 xl:grid-cols-4",children:[n.jsxs("div",{className:"rounded-2xl border border-border/60 bg-card/45 backdrop-blur-md p-5 shadow-lg shadow-black/15 flex flex-col justify-between",children:[n.jsxs("div",{children:[n.jsxs("div",{className:"flex items-center justify-between mb-4",children:[n.jsxs("div",{className:"flex items-center gap-2",children:[n.jsx(Ss,{className:"h-4.5 w-4.5 text-primary"}),n.jsx("h2",{className:"text-sm font-semibold tracking-wide uppercase text-foreground",children:"Hermes Agent"})]}),(a==null?void 0:a.webui_url)&&n.jsxs("a",{href:Ps(a.webui_url),target:"_blank",rel:"noopener",className:ee("flex items-center gap-1 px-3 py-1 rounded-lg text-xs font-medium transition-all",a.webui_reachable?"bg-primary text-primary-foreground hover:opacity-90 shadow-md shadow-primary/20":"border border-border text-muted-foreground"),children:[n.jsx(el,{className:"h-3 w-3"})," Hermes öffnen"]})]}),a?n.jsxs("div",{className:"space-y-3",children:[n.jsxs("div",{className:"grid grid-cols-2 gap-3",children:[n.jsxs("div",{className:"p-3 bg-background/20 rounded-xl border border-border/40",children:[n.jsx("div",{className:"text-[10px] text-muted-foreground uppercase font-semibold",children:"Gateway"}),n.jsxs("div",{className:"flex items-center gap-2 mt-1",children:[n.jsx("span",{className:ee("h-2 w-2 rounded-full",a.gateway_reachable?"bg-emerald-500 animate-pulse":"bg-amber-500")}),n.jsx("span",{className:"text-xs font-medium",children:a.gateway_reachable?"Online":"Offline"})]})]}),n.jsxs("div",{className:"p-3 bg-background/20 rounded-xl border border-border/40",children:[n.jsx("div",{className:"text-[10px] text-muted-foreground uppercase font-semibold",children:"WebUI"}),n.jsxs("div",{className:"flex items-center gap-2 mt-1",children:[n.jsx("span",{className:ee("h-2 w-2 rounded-full",a.webui_reachable?"bg-emerald-500 animate-pulse":"bg-amber-500")}),n.jsx("span",{className:"text-xs font-medium",children:a.webui_reachable?"Online":"Offline"})]})]})]}),n.jsxs("div",{onClick:()=>Me(!0),className:"p-3 bg-background/20 rounded-xl border border-border/40 hover:border-primary/45 hover:bg-background/30 transition-all duration-300 cursor-pointer group",children:[n.jsxs("div",{className:"flex justify-between items-center",children:[n.jsx("span",{className:"text-[10px] text-muted-foreground uppercase font-semibold",children:"Aktives Gehirn"}),n.jsxs("button",{className:"flex items-center gap-1 text-[9px] font-bold uppercase tracking-wider text-primary border border-primary/20 bg-primary/10 hover:bg-primary/20 px-1.5 py-0.5 rounded transition-all cursor-pointer font-space",children:[n.jsx(gt,{className:"h-3 w-3"})," Ändern"]})]}),n.jsxs("div",{className:"text-xs font-medium mt-1 font-mono text-primary flex items-center gap-1.5",children:[n.jsx(Es,{className:"h-3.5 w-3.5"}),a.brain_model?`model: ${a.brain_model}`:"model: auto"]})]})]}):n.jsx("div",{className:"h-28 flex items-center justify-center text-xs text-muted-foreground",children:"Lade Agenten-Status…"})]}),n.jsx("div",{className:"mt-3 text-[10px] text-muted-foreground/80 border-t border-border/30 pt-3",children:"Gedächtnis & Stack-Tools via MCP gekoppelt."})]}),n.jsxs("div",{className:"rounded-2xl border border-border/60 bg-card/45 backdrop-blur-md p-5 shadow-lg shadow-black/15 flex flex-col justify-between",children:[n.jsxs("div",{children:[n.jsxs("div",{className:"flex items-center gap-2 mb-4",children:[n.jsx(Es,{className:"h-4.5 w-4.5 text-primary"}),n.jsx("h2",{className:"text-sm font-semibold tracking-wide uppercase text-foreground",children:"Rollen-Belegung"})]}),n.jsx("div",{className:"space-y-2 max-h-48 overflow-y-auto pr-1 scrollbar-thin",children:["fast","heavy","coder","reasoning","vision","scout"].map(w=>{var $t;const J=f.find(lt=>lt.role===w),Le=J?h.includes(J.name):!1;return n.jsxs("div",{className:ee("flex items-center justify-between p-2 rounded-xl border transition-all duration-300",Le?"border-emerald-500/30 bg-emerald-500/5 shadow-sm shadow-emerald-500/5":J?"border-primary/20 bg-primary/5":"border-border/30 bg-background/10 opacity-60"),children:[n.jsx("div",{className:"min-w-0 flex-1 mr-2",children:n.jsxs("div",{className:"flex items-center gap-2",children:[n.jsx("span",{className:ee("text-[9px] font-semibold uppercase px-1.5 py-0.5 rounded font-mono border tracking-wider shrink-0",w==="fast"?"bg-cyan-500/15 text-cyan-400 border-cyan-500/25":w==="heavy"?"bg-amber-500/15 text-amber-400 border-amber-500/25":w==="coder"?"bg-violet-500/15 text-violet-400 border-violet-500/25":w==="reasoning"?"bg-emerald-500/15 text-emerald-400 border-emerald-500/25":w==="vision"?"bg-pink-500/15 text-pink-400 border-pink-500/25":"bg-teal-500/15 text-teal-400 border-teal-500/25"),children:w}),n.jsx("span",{className:"text-xs font-semibold truncate font-mono text-foreground",children:J?($t=J.name.split("/").pop())==null?void 0:$t.replace(/\.gguf$/i,""):"nicht zugewiesen"})]})}),n.jsx("div",{className:"flex items-center gap-1.5 shrink-0",children:J?Le?n.jsxs("span",{className:"flex items-center gap-1 text-[8px] font-semibold text-emerald-400 uppercase tracking-wider font-mono",children:[n.jsx("span",{className:"h-1.5 w-1.5 rounded-full bg-emerald-500 animate-pulse"})," warm"]}):n.jsx("span",{className:"text-[8px] font-semibold text-muted-foreground uppercase tracking-wider font-mono",children:"bereit"}):n.jsx("span",{className:"text-[8px] font-semibold text-muted-foreground/60 uppercase tracking-wider font-mono",children:"—"})})]},w)})})]}),n.jsx("div",{className:"mt-4 text-[10px] text-muted-foreground/80 border-t border-border/30 pt-3",children:"Laden erfolgt automatisch per Auto-Swap."})]}),n.jsxs("div",{className:"rounded-2xl border border-border/60 bg-card/45 backdrop-blur-md p-5 shadow-lg shadow-black/15 flex flex-col justify-between",children:[n.jsxs("div",{children:[n.jsxs("div",{className:"flex items-center gap-2 mb-4",children:[n.jsx(Cs,{className:"h-4.5 w-4.5 text-primary"}),n.jsx("h2",{className:"text-sm font-semibold tracking-wide uppercase text-foreground",children:"Gedächtnis"})]}),n.jsxs("div",{className:"space-y-3",children:[n.jsx("textarea",{value:Ne,onChange:w=>ke(w.target.value),placeholder:"Fakt / Regel im Pool speichern...",rows:2,className:"w-full resize-none rounded-xl border border-border/50 bg-background/30 p-2 text-[10px] outline-none focus:ring-1 focus:ring-primary transition-all leading-normal"}),n.jsxs("div",{className:"flex items-center gap-2 justify-between",children:[n.jsxs("select",{value:W,onChange:w=>ae(w.target.value),className:"h-7 rounded-lg border border-border/50 bg-background/50 px-2 text-[10px] outline-none cursor-pointer",children:[n.jsx("option",{value:"stable",children:"🔵 Fakt"}),n.jsx("option",{value:"instruction",children:"📋 Regel"}),n.jsx("option",{value:"user",children:"👤 User"}),n.jsx("option",{value:"versioned",children:"🟡 Version"})]}),n.jsxs("button",{onClick:oe,disabled:!Ne.trim()||G,className:"flex h-7 items-center gap-1 rounded-lg bg-primary px-3 text-[10px] font-semibold text-primary-foreground hover:opacity-90 disabled:opacity-50 transition-all cursor-pointer",children:[n.jsx(af,{className:"h-3.5 w-3.5"})," Speichern"]})]})]}),n.jsxs("div",{className:"mt-3.5 space-y-1.5",children:[n.jsx("div",{className:"text-[9px] text-muted-foreground uppercase font-bold tracking-wider",children:"Zuletzt gespeichert:"}),n.jsx("div",{className:"max-h-20 overflow-y-auto space-y-1 pr-1 scrollbar-thin",children:E.length===0?n.jsx("div",{className:"text-[10px] text-muted-foreground/75 py-1",children:"Keine Einträge vorhanden."}):E.map(w=>n.jsxs("div",{className:"text-[10px] bg-background/10 border border-border/30 rounded p-1.5 flex items-start gap-1.5",children:[n.jsx("span",{className:"shrink-0 text-[8px] font-mono text-muted-foreground/80 px-1 py-0.5 rounded bg-muted/20",children:w.category}),n.jsx("span",{className:"truncate flex-1 text-muted-foreground hover:text-foreground transition-colors",title:w.content,children:w.content})]},w.id))})]})]}),n.jsx("div",{className:"mt-4 text-[10px] text-muted-foreground/80 border-t border-border/30 pt-3",children:"Steht allen Clients per MCP zur Verfügung."})]}),n.jsxs("div",{className:"rounded-2xl border border-border/60 bg-card/45 backdrop-blur-md p-5 shadow-lg shadow-black/15 flex flex-col justify-between",children:[n.jsxs("div",{children:[n.jsxs("div",{className:"flex items-center gap-2 mb-4",children:[n.jsx(ph,{className:"h-4.5 w-4.5 text-primary animate-pulse"}),n.jsx("h2",{className:"text-sm font-semibold tracking-wide uppercase text-foreground",children:"Effizienz & Ersparnis"})]}),O?n.jsxs("div",{className:"space-y-4",children:[n.jsxs("div",{className:"grid grid-cols-2 gap-2.5",children:[n.jsxs("div",{className:"p-3 bg-background/20 rounded-xl border border-border/40 text-left",children:[n.jsx("div",{className:"text-[8px] uppercase tracking-wider font-semibold text-muted-foreground/60",children:"Geld gespart"}),n.jsxs("div",{className:"text-base font-bold text-emerald-400 mt-0.5 tracking-tight font-space",children:[O.saved_eur.toLocaleString("de-DE",{minimumFractionDigits:2})," €"]}),n.jsxs("div",{className:"text-[8px] text-muted-foreground/80 mt-0.5 font-mono",children:["(",O.saved_usd.toLocaleString("en-US",{minimumFractionDigits:2})," $)"]})]}),n.jsxs("div",{className:"p-3 bg-background/20 rounded-xl border border-border/40 text-left",children:[n.jsx("div",{className:"text-[8px] uppercase tracking-wider font-semibold text-muted-foreground/60",children:"Gesamt-Tokens"}),n.jsx("div",{className:"text-base font-bold text-primary mt-0.5 tracking-tight font-space",children:O.total_tokens.toLocaleString("de-DE")}),n.jsx("div",{className:"text-[8px] text-muted-foreground/80 mt-0.5 font-mono",children:"(Lokale Inferenz)"})]})]}),n.jsxs("div",{className:"space-y-2 border-t border-border/20 pt-3 text-[10px] text-muted-foreground",children:[n.jsxs("div",{className:"flex justify-between items-center font-mono",children:[n.jsx("span",{children:"Input (Prompts):"}),n.jsxs("span",{className:"font-semibold text-foreground",children:[O.prompt_tokens.toLocaleString("de-DE")," tkn"]})]}),n.jsxs("div",{className:"flex justify-between items-center font-mono",children:[n.jsx("span",{children:"Output (Antworten):"}),n.jsxs("span",{className:"font-semibold text-foreground",children:[O.completion_tokens.toLocaleString("de-DE")," tkn"]})]})]})]}):n.jsx("div",{className:"h-28 flex items-center justify-center text-xs text-muted-foreground",children:"Lade Statistiken…"})]}),n.jsx("div",{className:"mt-4 text-[9px] text-muted-foreground/70 border-t border-border/30 pt-2.5 leading-normal",children:"Berechnet im Vergleich zu Cloud-APIs (Ø 3,00 $ / 15,00 $ pro 1M tkn)."})]})]}),a&&ce&&n.jsx("div",{className:"fixed inset-0 z-50 bg-black/60 backdrop-blur-sm flex items-center justify-center p-4",children:n.jsxs("div",{className:"w-full max-w-md rounded-2xl border border-border/80 bg-card p-6 shadow-2xl space-y-4 animate-in fade-in zoom-in-95 duration-200",children:[n.jsxs("div",{className:"flex items-center justify-between border-b border-border/20 pb-2",children:[n.jsxs("h3",{className:"text-xs font-bold uppercase tracking-wider text-primary flex items-center gap-1.5",children:[n.jsx(gt,{className:"h-4 w-4"}),n.jsx("span",{children:"Hermes-Gehirn konfigurieren"})]}),n.jsx("button",{onClick:()=>Me(!1),className:"p-1 rounded hover:bg-accent text-muted-foreground hover:text-foreground cursor-pointer",children:n.jsx(Hr,{className:"h-4 w-4"})})]}),n.jsxs("p",{className:"text-xs text-muted-foreground leading-relaxed",children:['Das „Gehirn" ist das primäre LLM für Hermes. Wähle ein Modell aus deiner Bibliothek oder nutze ein Gateway-Alias (',n.jsx("code",{className:"text-primary font-semibold",children:"auto"})," / ",n.jsx("code",{className:"text-primary font-semibold",children:"fast"})," / ",n.jsx("code",{className:"text-primary font-semibold",children:"heavy"}),"):"]}),n.jsx("div",{className:"space-y-1.5 max-h-60 overflow-y-auto pr-1",children:["auto","fast","heavy",...f.map(w=>{var J;return((J=w.name.split("/").pop())==null?void 0:J.replace(".gguf",""))||w.name})].map(w=>{const J=["auto","fast","heavy"].includes(w);return n.jsxs("button",{onClick:()=>_e(w),className:ee("w-full text-left px-3 py-2.5 rounded-lg text-xs hover:bg-accent flex items-center justify-between font-mono cursor-pointer border border-border/30",a.brain_model===w||!a.brain_model&&w==="auto"?"text-primary font-bold bg-primary/10 border-primary/30":"text-foreground bg-background/20"),children:[n.jsxs("div",{className:"flex flex-col text-left",children:[n.jsx("span",{className:"font-semibold truncate max-w-[280px]",children:w}),n.jsx("span",{className:"text-[9px] text-muted-foreground mt-0.5",children:J?"Gateway Routing Alias":"Installiertes GGUF Modell"})]}),(a.brain_model===w||!a.brain_model&&w==="auto")&&n.jsx(zn,{className:"h-4 w-4 shrink-0 text-primary"})]},w)})})]})}),X&&n.jsx(Qr,{type:X.type,title:X.title,message:X.message,onConfirm:()=>X.onConfirm(),onCancel:X.onCancel})]})}function $r({children:o,tone:d="muted"}){const a={muted:"bg-muted text-muted-foreground",primary:"bg-primary/15 text-primary",warn:"bg-amber-500/15 text-amber-500"};return n.jsx("span",{className:`rounded px-1.5 py-0.5 text-[11px] font-medium ${a[d]}`,children:o})}function Zu({caps:o}){return o?n.jsxs("span",{className:"inline-flex flex-wrap gap-1",children:[o.coder&&n.jsx($r,{children:"💻 Code"}),o.vision&&n.jsx($r,{children:"👁 Bild"}),o.reasoning&&n.jsx($r,{children:"🧠 Reason"}),o.moe&&n.jsxs($r,{tone:"primary",children:["🧩 MoE",o.active_b?`·${o.active_b}b`:""]}),o.tools==="yes"&&n.jsx($r,{tone:"primary",children:"🛠 Tools"}),o.tools==="likely"&&n.jsx($r,{tone:"warn",children:"🛠 Tools?"}),o.embedding&&n.jsx($r,{children:"🔢 Embed"})]}):null}function Si(o){return o?o>1024**3?`${(o/1024**3).toFixed(1)} GB`:`${(o/1024**2).toFixed(0)} MB`:""}function y0(o){if(!o)return"";const d=Math.floor(o/60);return d>0?`${d} min`:`${o} s`}function b0({onError:o}){const[d,a]=p.useState([]),[c,f]=p.useState(null);function m(){fe("/api/jobs").then(b=>a(b.jobs||[])).catch(()=>{})}p.useEffect(()=>{m();const b=setInterval(m,2e3);return()=>clearInterval(b)},[]);async function h(b){try{await fe(`/api/jobs/${b}/cancel`,{method:"POST"}),m()}catch(k){o?o(k.message):f(k.message)}}const x=d.filter(b=>b.state==="running"||b.state==="queued"),E=d.filter(b=>b.state!=="running"&&b.state!=="queued").slice(-3);return x.length===0&&E.length===0?null:n.jsxs("div",{className:"space-y-3 rounded-2xl border border-border/60 bg-card/45 backdrop-blur-md p-4 shadow-lg shadow-black/10",children:[n.jsx("div",{className:"text-[11px] font-semibold text-muted-foreground uppercase tracking-wider",children:"Aktive Downloads"}),x.map(b=>n.jsxs("div",{className:"space-y-1.5 p-3 rounded-xl bg-background/20 border border-border/40",children:[n.jsxs("div",{className:"flex justify-between items-center text-xs",children:[n.jsx("span",{className:"font-semibold truncate max-w-[250px]",children:b.label}),n.jsxs("div",{className:"flex items-center gap-3",children:[n.jsxs("span",{className:"text-muted-foreground font-mono",children:[b.progress??0,"% • ",Si(b.done_bytes),"/",Si(b.total_bytes),b.eta_s?` • ETA ${y0(b.eta_s)}`:""]}),n.jsx("button",{onClick:()=>h(b.id),className:"text-[10px] text-red-400 hover:text-red-300 font-semibold border border-red-500/25 bg-red-500/5 px-2 py-0.5 rounded transition-all cursor-pointer",children:"Abbrechen"})]})]}),n.jsx("div",{className:"h-1.5 overflow-hidden rounded-full bg-muted",children:n.jsx("div",{className:"h-full rounded-full bg-primary transition-all duration-500",style:{width:`${b.progress??0}%`}})})]},b.id)),E.map(b=>n.jsxs("div",{className:"flex justify-between items-center text-xs text-muted-foreground px-1",children:[n.jsx("span",{className:"truncate",children:b.label}),n.jsx("span",{className:ee("font-semibold text-[10px] px-1.5 py-0.5 rounded uppercase font-mono",b.state==="done"?"bg-emerald-500/10 text-emerald-400":"bg-amber-500/10 text-amber-400"),children:b.state})]},b.id)),c&&n.jsx(Qr,{type:"alert",title:"Fehler",message:c,onConfirm:()=>f(null)})]})}function Ur(o){if(!o)return"—";const d=o/1024**3;return d>=1?`${d.toFixed(1)} GB`:`${(o/1024**2).toFixed(0)} MB`}function Yu(o){return o?`${Math.round(o/1024)}k`:"—"}function w0({fit:o}){const d={perfect:"bg-emerald-500/15 text-emerald-400 border border-emerald-500/20",marginal:"bg-amber-500/15 text-amber-400 border border-amber-500/20",too_tight:"bg-red-500/15 text-red-400 border border-red-500/20"}[o.level];return n.jsxs("span",{className:ee("rounded px-2 py-0.5 text-[10px] font-semibold uppercase tracking-wider font-mono",d),children:[o.text," • ",o.req_gb," GB RAM"]})}const j0=["fast","heavy","coder","reasoning","agent","vision","scout"];function Ju(o){const d=o.toLowerCase();return d.includes("qwen")?{name:"Qwen",color:"bg-purple-500/20 text-purple-300 border-purple-500/30",initial:"Q"}:d.includes("gemma")?{name:"Gemma",color:"bg-blue-500/20 text-blue-300 border-blue-500/30",initial:"G"}:d.includes("llama")?{name:"Llama",color:"bg-red-500/20 text-red-300 border-red-500/30",initial:"🦙"}:d.includes("mistral")||d.includes("mixtral")?{name:"Mistral",color:"bg-orange-500/20 text-orange-300 border-orange-500/30",initial:"M"}:d.includes("deepseek")?{name:"DeepSeek",color:"bg-cyan-500/20 text-cyan-300 border-cyan-500/30",initial:"D"}:d.includes("hermes")||d.includes("nous")?{name:"Hermes",color:"bg-amber-500/20 text-amber-300 border-amber-500/30",initial:"H"}:d.includes("phi")?{name:"Phi",color:"bg-emerald-500/20 text-emerald-300 border-emerald-500/30",initial:"Φ"}:{name:"Other",color:"bg-slate-500/20 text-slate-300 border-slate-500/30",initial:"AI"}}function k0(){var Zr,tr,Ut,Yr,In;const[o,d]=p.useState([]),[a,c]=p.useState([]),[f,m]=p.useState(null),[h,x]=p.useState(null),[E,b]=p.useState(null),[k,P]=p.useState(!0),[A,I]=p.useState(""),[O,S]=p.useState(null),[C,_]=p.useState(null),[L,q]=p.useState(!1),[Z,H]=p.useState(null),[T,F]=p.useState("grid"),[ne,se]=p.useState("all"),[X,ye]=p.useState(null);function ce(D,re,ve){ye({type:"alert",title:D,message:re,onConfirm:()=>{ye(null)}})}function Me(D,re,ve,Se){ye({type:"confirm",title:D,message:re,onConfirm:()=>{ye(null),ve()},onCancel:()=>{ye(null)}})}function _e(D,re,ve,Se,ze){ye({type:"prompt",title:D,message:re,defaultValue:ve,onConfirm:Nt=>{ye(null),Se(Nt)},onCancel:()=>{ye(null)}})}const Pe=o.filter(D=>ne==="in_use"?!!D.role||a.includes(D.name):!0),[Ne,ke]=p.useState({width:800,height:360}),W=p.useRef(null),ae=p.useCallback(D=>{if(W.current&&(W.current.disconnect(),W.current=null),D){const re=new ResizeObserver(ve=>{if(!ve||ve.length===0)return;const Se=ve[0].contentRect;ke({width:Se.width,height:Se.height})});re.observe(D),W.current=re}},[]),G=Ne.width,j=Ne.height,v=D=>{const re=G*.1,ve=j*D,Se=G*.5,ze=j*.5,Nt=G*.3,Bt=ve,Vt=G*.3;return`M ${re} ${ve} C ${Nt} ${Bt}, ${Vt} ${ze}, ${Se} ${ze}`},B=D=>{const re=G*.5,ve=j*.5,Se=G*.9,ze=j*D,Nt=G*.7,Bt=ve,Vt=G*.7;return`M ${re} ${ve} C ${Nt} ${Bt}, ${Vt} ${ze}, ${Se} ${ze}`};function Y(){Promise.all([fe("/api/models"),fe("/api/routing"),fe("/api/connect"),fe("/api/maintenance/updates")]).then(([D,re,ve,Se])=>{d(D.models||[]),c(D.running||[]),m(re),x(ve),b(Se)}).catch(D=>I(String(D))).finally(()=>P(!1))}p.useEffect(()=>{Y();const D=setInterval(Y,4e3);return()=>clearInterval(D)},[]);async function K(D){try{await fe(`/api/models/${encodeURIComponent(D)}/load`,{method:"POST"}),Y()}catch(re){ce("Fehler",`Fehler beim Laden des Modells: ${re.message}`)}}async function oe(D){try{await fe(`/api/models/${encodeURIComponent(D)}/unload`,{method:"POST"}),Y()}catch(re){ce("Fehler",`Fehler beim Entladen des Modells: ${re.message}`)}}async function pe(){try{await fe("/api/models/unload",{method:"POST"}),Y()}catch(D){ce("Fehler",`Fehler beim Entladen aller Modelle: ${D.message}`)}}async function me(D,re){try{await fe(`/api/models/${encodeURIComponent(re)}/role`,{method:"POST",body:JSON.stringify({role:D||null})}),Y()}catch(ve){ce("Fehler",`Fehler beim Zuweisen der Rolle: ${ve.message||ve}`)}}async function w(D,re){_e("Kontextlänge anpassen","Gib die gewünschte Kontextlänge in Tokens an:",String(re||32768),async ve=>{if(ve)try{await fe(`/api/models/${encodeURIComponent(D)}/ctx`,{method:"POST",body:JSON.stringify({ctx:parseInt(ve,10)})}),Y()}catch(Se){ce("Fehler",`Fehler beim Setzen des Kontexts: ${Se.message||Se}`)}})}async function J(D){Me("Modell löschen?",`Modell '${D}' und alle zugehörigen GGUF-Dateien unwiderruflich von der Box löschen?`,async()=>{try{await fe(`/api/models/${encodeURIComponent(D)}`,{method:"DELETE"}),Y()}catch(re){ce("Fehler",`Fehler beim Löschen: ${re.message||re}`)}})}async function Le(D,re,ve,Se){try{await fe("/api/models/install",{method:"POST",body:JSON.stringify({repo:D,role:re,quant:ve,jinja:Se})}),ce("Herunterladen gestartet",`Download für '${D}' gestartet! Der Fortschritt wird oben angezeigt.`)}catch(ze){ce("Fehler",`Fehler beim Starten des Upgrades: ${ze.message||ze}`)}}async function $t(D){D&&(await navigator.clipboard.writeText(D),q(!0),setTimeout(()=>q(!1),1500))}if(k)return n.jsx("div",{className:"text-xs text-muted-foreground py-12 text-center",children:"Initialisiere HUD Cockpit…"});if(A)return n.jsxs("div",{className:"rounded-xl border border-red-500/20 bg-red-500/5 p-4 text-xs text-red-400",children:["Gateway oder Engine nicht erreichbar (",A,")."]});const lt=o.filter(D=>a.includes(D.name)),nt=lt.reduce((D,re)=>D+(re.size_bytes||0),0),On=16*1024**3,Tn=nt>On?nt*1.2:On,qr=D=>o.find(re=>re.role===D),er=D=>{const re=qr(D);return re?a.includes(re.name):!1};return n.jsxs("div",{className:"space-y-8",children:[n.jsx("style",{children:` @keyframes flow-dash { to { stroke-dashoffset: -20; } } .svg-flow-path { stroke-dasharray: 4 6; animation: flow-dash 1s linear infinite; } `}),n.jsxs("div",{className:"rounded-2xl border border-border/60 bg-card/45 backdrop-blur-md p-5 shadow-lg shadow-black/10 space-y-3.5",children:[n.jsxs("div",{className:"flex justify-between items-center",children:[n.jsxs("div",{className:"flex items-center gap-2",children:[n.jsx(gi,{className:"h-4.5 w-4.5 text-primary"}),n.jsx("span",{className:"text-xs font-bold uppercase tracking-wider text-foreground",children:"VRAM / Memory Belegung"})]}),n.jsxs("div",{className:"flex items-center gap-3",children:[n.jsxs("span",{className:"text-[10px] font-mono text-muted-foreground",children:["Llama Swap VRAM-Pool: ",Ur(nt)," / ",Ur(Tn)," geladen"]}),a.length>0&&n.jsx("button",{onClick:pe,className:"h-6 px-2.5 rounded border border-amber-500/30 bg-amber-500/5 hover:bg-amber-500/10 text-amber-400 text-[9px] font-bold uppercase transition-all cursor-pointer",children:"Alle entladen"})]})]}),n.jsx("div",{className:"h-7 w-full rounded-xl bg-background/50 border border-border/40 overflow-hidden flex p-0.5 relative group",children:lt.length===0?n.jsx("div",{className:"w-full h-full flex items-center justify-center text-[10px] text-muted-foreground/60 italic font-mono select-none",children:"VRAM Leer — Auto-Swap lädt Modelle bei Anfrage"}):lt.map((D,re)=>{var ze;const ve=(D.size_bytes||0)/Tn*100,Se=["from-teal-500 to-emerald-500","from-indigo-500 to-blue-500","from-purple-500 to-pink-500","from-cyan-500 to-sky-500"][re%4];return n.jsxs("div",{style:{width:`${ve}%`},className:ee("h-full rounded bg-gradient-to-r flex items-center justify-between px-2.5 transition-all text-white/95 shrink-0 shadow-inner select-none",Se),title:`${D.name} (${Ur(D.size_bytes)})`,children:[n.jsxs("span",{className:"text-[9px] font-bold truncate max-w-[120px] font-space tracking-wide",children:[D.role?`[${D.role}] `:"",(ze=D.name.split("/").pop())==null?void 0:ze.replace(".gguf","")]}),n.jsx("span",{className:"text-[8px] font-mono opacity-80",children:Ur(D.size_bytes)})]},D.name)})})]}),n.jsxs("div",{className:"rounded-2xl border border-border/60 bg-card/45 backdrop-blur-md p-6 shadow-lg shadow-black/10 space-y-4",children:[n.jsxs("div",{children:[n.jsx("span",{className:"text-xs font-bold uppercase tracking-wider text-foreground",children:"Interactive Gateway Graph"}),n.jsx("p",{className:"text-[10px] text-muted-foreground mt-0.5 leading-relaxed",children:"Klicke links auf Editoren, um Configs zu kopieren. Klicke rechts auf Rollen, um GGUF-Zuweisungen live zu ändern."})]}),n.jsxs("div",{ref:ae,className:"relative w-full h-96 border border-border/30 rounded-xl bg-black/25 overflow-hidden flex",children:[n.jsxs("svg",{className:"absolute inset-0 pointer-events-none w-full h-full",children:[n.jsxs("defs",{children:[n.jsxs("linearGradient",{id:"cyan-to-teal",x1:"0%",y1:"0%",x2:"100%",y2:"0%",children:[n.jsx("stop",{offset:"0%",stopColor:"#06b6d4",stopOpacity:"0.45"}),n.jsx("stop",{offset:"100%",stopColor:"#0d9488",stopOpacity:"0.45"})]}),n.jsxs("linearGradient",{id:"active-glow",x1:"0%",y1:"0%",x2:"100%",y2:"0%",children:[n.jsx("stop",{offset:"0%",stopColor:"#3b82f6",stopOpacity:"0.8"}),n.jsx("stop",{offset:"100%",stopColor:"#10b981",stopOpacity:"0.8"})]})]}),n.jsx("path",{d:v(.1),stroke:"url(#cyan-to-teal)",strokeWidth:"1.5",fill:"none"}),(Z==="roocode"||O==="roocode")&&n.jsx("path",{d:v(.1),stroke:"#06b6d4",strokeWidth:"2.5",fill:"none",className:"svg-flow-path"}),n.jsx("path",{d:v(.3),stroke:"url(#cyan-to-teal)",strokeWidth:"1.5",fill:"none"}),(Z==="cursor"||O==="cursor")&&n.jsx("path",{d:v(.3),stroke:"#06b6d4",strokeWidth:"2.5",fill:"none",className:"svg-flow-path"}),n.jsx("path",{d:v(.5),stroke:"url(#cyan-to-teal)",strokeWidth:"1.5",fill:"none"}),(Z==="opencode"||O==="opencode")&&n.jsx("path",{d:v(.5),stroke:"#06b6d4",strokeWidth:"2.5",fill:"none",className:"svg-flow-path"}),n.jsx("path",{d:v(.7),stroke:"url(#cyan-to-teal)",strokeWidth:"1.5",fill:"none"}),(Z==="zed"||O==="zed")&&n.jsx("path",{d:v(.7),stroke:"#06b6d4",strokeWidth:"2.5",fill:"none",className:"svg-flow-path"}),n.jsx("path",{d:v(.9),stroke:"url(#cyan-to-teal)",strokeWidth:"1.5",fill:"none"}),(Z==="continue"||O==="continue")&&n.jsx("path",{d:v(.9),stroke:"#06b6d4",strokeWidth:"2.5",fill:"none",className:"svg-flow-path"}),n.jsx("path",{d:B(.12),stroke:"url(#cyan-to-teal)",strokeWidth:"1.5",fill:"none"}),er("fast")&&n.jsx("path",{d:B(.12),stroke:"url(#active-glow)",strokeWidth:"2.5",fill:"none",className:"svg-flow-path"}),n.jsx("path",{d:B(.31),stroke:"url(#cyan-to-teal)",strokeWidth:"1.5",fill:"none"}),er("heavy")&&n.jsx("path",{d:B(.31),stroke:"url(#active-glow)",strokeWidth:"2.5",fill:"none",className:"svg-flow-path"}),n.jsx("path",{d:B(.5),stroke:"url(#cyan-to-teal)",strokeWidth:"1.5",fill:"none"}),er("coder")&&n.jsx("path",{d:B(.5),stroke:"url(#active-glow)",strokeWidth:"2.5",fill:"none",className:"svg-flow-path"}),n.jsx("path",{d:B(.69),stroke:"url(#cyan-to-teal)",strokeWidth:"1.5",fill:"none"}),er("vision")&&n.jsx("path",{d:B(.69),stroke:"url(#active-glow)",strokeWidth:"2.5",fill:"none",className:"svg-flow-path"}),n.jsx("path",{d:B(.88),stroke:"url(#cyan-to-teal)",strokeWidth:"1.5",fill:"none"}),er("scout")&&n.jsx("path",{d:B(.88),stroke:"url(#active-glow)",strokeWidth:"2.5",fill:"none",className:"svg-flow-path"})]}),n.jsxs("div",{className:"absolute cursor-pointer select-none z-10 w-28 h-8 -translate-y-1/2 -translate-x-1/2 rounded-xl border border-border/60 bg-card/75 backdrop-blur-md flex items-center justify-center gap-1.5 px-2 hover:border-primary transition-all text-[10px] font-semibold text-foreground shadow shadow-black/20",style:{left:"10%",top:"10%"},onMouseEnter:()=>H("roocode"),onMouseLeave:()=>H(null),onClick:()=>S(D=>D==="roocode"?null:"roocode"),children:[n.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-cyan-400 animate-pulse"}),n.jsx("span",{children:"Roo Code"})]}),n.jsxs("div",{className:"absolute cursor-pointer select-none z-10 w-28 h-8 -translate-y-1/2 -translate-x-1/2 rounded-xl border border-border/60 bg-card/75 backdrop-blur-md flex items-center justify-center gap-1.5 px-2 hover:border-primary transition-all text-[10px] font-semibold text-foreground shadow shadow-black/20",style:{left:"10%",top:"30%"},onMouseEnter:()=>H("cursor"),onMouseLeave:()=>H(null),onClick:()=>S(D=>D==="cursor"?null:"cursor"),children:[n.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-cyan-400 animate-pulse"}),n.jsx("span",{children:"Cursor IDE"})]}),n.jsxs("div",{className:"absolute cursor-pointer select-none z-10 w-28 h-8 -translate-y-1/2 -translate-x-1/2 rounded-xl border border-border/60 bg-card/75 backdrop-blur-md flex items-center justify-center gap-1.5 px-2 hover:border-primary transition-all text-[10px] font-semibold text-foreground shadow shadow-black/20",style:{left:"10%",top:"50%"},onMouseEnter:()=>H("opencode"),onMouseLeave:()=>H(null),onClick:()=>S(D=>D==="opencode"?null:"opencode"),children:[n.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-cyan-400 animate-pulse"}),n.jsx("span",{children:"OpenCode"})]}),n.jsxs("div",{className:"absolute cursor-pointer select-none z-10 w-28 h-8 -translate-y-1/2 -translate-x-1/2 rounded-xl border border-border/60 bg-card/75 backdrop-blur-md flex items-center justify-center gap-1.5 px-2 hover:border-primary transition-all text-[10px] font-semibold text-foreground shadow shadow-black/20",style:{left:"10%",top:"70%"},onMouseEnter:()=>H("zed"),onMouseLeave:()=>H(null),onClick:()=>S(D=>D==="zed"?null:"zed"),children:[n.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-cyan-400 animate-pulse"}),n.jsx("span",{children:"Zed"})]}),n.jsxs("div",{className:"absolute cursor-pointer select-none z-10 w-28 h-8 -translate-y-1/2 -translate-x-1/2 rounded-xl border border-border/60 bg-card/75 backdrop-blur-md flex items-center justify-center gap-1.5 px-2 hover:border-primary transition-all text-[10px] font-semibold text-foreground shadow shadow-black/20",style:{left:"10%",top:"90%"},onMouseEnter:()=>H("continue"),onMouseLeave:()=>H(null),onClick:()=>S(D=>D==="continue"?null:"continue"),children:[n.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-cyan-400 animate-pulse"}),n.jsx("span",{children:"Continue"})]}),n.jsxs("div",{className:"absolute select-none z-10 w-36 py-3 px-4 -translate-y-1/2 -translate-x-1/2 rounded-2xl border border-primary/50 bg-card/90 backdrop-blur-md flex flex-col items-center justify-center text-center shadow-lg shadow-primary/5",style:{left:"50%",top:"50%"},children:[n.jsx("div",{className:"text-[10px] uppercase font-bold text-primary font-space tracking-wide",children:"Gateway Auto"}),n.jsxs("div",{className:"text-[10px] font-mono text-muted-foreground mt-0.5",children:["Schwelle: > ",f!=null&&f.heavy_threshold_chars?f.heavy_threshold_chars/1e3:"4","k Zeichen"]}),n.jsx("div",{className:"mt-1 px-1.5 py-0.5 rounded bg-primary/10 border border-primary/20 text-[9px] font-semibold text-primary uppercase font-mono",children:"Auto-Swap"})]}),j0.map(D=>{var Nt;const re=["12%","31%","50%","69%","88%"],ve=qr(D),Se=ve?a.includes(ve.name):!1;if(D==="reasoning"||D==="agent")return null;const ze={fast:0,heavy:1,coder:2,vision:3,scout:4}[D];return n.jsxs("div",{className:ee("absolute z-10 w-44 py-1.5 px-3 -translate-y-1/2 -translate-x-1/2 rounded-xl border flex flex-col justify-center hover:border-primary/50 transition-all text-left shadow select-none cursor-pointer",Se?"border-emerald-500/50 bg-emerald-500/5 shadow-emerald-500/5":ve?"border-border/60 bg-card/75":"border-dashed border-border/40 bg-background/20"),style:{left:"90%",top:re[ze]},onClick:()=>_(D),children:[n.jsxs("div",{className:"flex items-center justify-between",children:[n.jsx("span",{className:"text-[10px] font-bold uppercase tracking-wider text-muted-foreground",children:D}),Se&&n.jsx("span",{className:"h-1.5 w-1.5 rounded-full bg-emerald-400 animate-pulse"})]}),n.jsx("div",{className:"text-[10px] font-mono font-medium truncate mt-0.5 text-foreground max-w-[150px]",children:ve?(Nt=ve.name.split("/").pop())==null?void 0:Nt.replace(".gguf",""):"Keine Zuweisung"})]},D)}),O&&h&&n.jsx("div",{className:"fixed inset-0 z-50 bg-black/60 backdrop-blur-sm flex items-center justify-center p-4",children:n.jsxs("div",{className:"w-full max-w-md rounded-2xl border border-border/80 bg-card p-6 shadow-2xl space-y-4 animate-in fade-in zoom-in-95 duration-200 flex flex-col justify-between",children:[n.jsxs("div",{className:"flex items-center justify-between border-b border-border/20 pb-2",children:[n.jsxs("span",{className:"text-xs font-bold uppercase tracking-wider text-primary",children:[O==="roocode"&&"Roo Code Setup",O==="cursor"&&"Cursor Setup",O==="opencode"&&"OpenCode Setup",O==="zed"&&"Zed Setup",O==="continue"&&"Continue Setup"]}),n.jsx("button",{onClick:()=>S(null),className:"p-1 rounded hover:bg-accent text-muted-foreground hover:text-foreground cursor-pointer",children:n.jsx(Hr,{className:"h-4 w-4"})})]}),n.jsxs("div",{className:"text-xs text-muted-foreground leading-relaxed space-y-2",children:[O==="roocode"&&n.jsxs("ul",{className:"list-decimal pl-4 space-y-1",children:[n.jsxs("li",{children:["Suche in VS Code nach der Erweiterung ",n.jsx("strong",{children:"Roo Code"})," und installiere sie."]}),n.jsxs("li",{children:["Wähle in den Roo Code Einstellungen: Provider: ",n.jsx("strong",{children:"OpenAI Compatible"}),"."]}),n.jsxs("li",{children:["Füge das untenstehende JSON-Snippet in die ",n.jsx("code",{children:"settings.json"})," ein."]})]}),O==="cursor"&&n.jsxs("ul",{className:"list-decimal pl-4 space-y-1",children:[n.jsxs("li",{children:["Öffne Cursor Settings ➔ ",n.jsx("strong",{children:"Models"}),"."]}),n.jsxs("li",{children:["Deaktiviere Cloud-Modelle, klappe ",n.jsx("strong",{children:"OpenAI API"})," auf."]}),n.jsxs("li",{children:["Trage die Base URL unten ein und aktiviere das Modell ",n.jsx("strong",{children:"auto"}),"."]})]}),O==="opencode"&&n.jsxs("ul",{className:"list-decimal pl-4 space-y-1",children:[n.jsxs("li",{children:["Öffne die ",n.jsx("code",{children:"opencode.jsonc"})," Konfigurationsdatei."]}),n.jsxs("li",{children:["Ersetze den Provider-Eintrag unter ",n.jsx("code",{children:"provider"})," mit dem Snippet unten."]})]}),O==="zed"&&n.jsxs("ul",{className:"list-decimal pl-4 space-y-1",children:[n.jsxs("li",{children:["Öffne die Zed Settings (",n.jsx("code",{children:"ctrl+,"}),")."]}),n.jsxs("li",{children:["Füge das untenstehende JSON-Segment unter ",n.jsx("code",{children:"language_models"})," ein."]})]}),O==="continue"&&n.jsxs("ul",{className:"list-decimal pl-4 space-y-1",children:[n.jsx("li",{children:"Klicke auf das Zahnrad-Symbol in der Continue-Erweiterung."}),n.jsxs("li",{children:["Füge den Gateway-Eintrag zum ",n.jsx("code",{children:"models"}),"-Array hinzu."]})]})]}),h.tools&&n.jsxs("div",{className:"relative rounded-xl border border-border/40 bg-black/40 overflow-hidden mt-1 shrink-0",children:[n.jsxs("div",{className:"flex items-center justify-between px-3 py-1.5 border-b border-border/20 bg-black/20",children:[n.jsx("span",{className:"text-[10px] font-mono text-muted-foreground",children:"JSON Config"}),n.jsxs("button",{onClick:()=>{var D,re,ve,Se,ze;return $t(O==="roocode"?(D=h.tools.cline)==null?void 0:D.snippet:O==="cursor"?(re=h.tools.cursor)==null?void 0:re.snippet:O==="opencode"?(ve=h.tools.opencode)==null?void 0:ve.snippet:O==="zed"?(Se=h.tools.zed)==null?void 0:Se.snippet:(ze=h.tools.continue)==null?void 0:ze.snippet)},className:"text-xs font-semibold text-primary hover:text-primary-foreground flex items-center gap-1 cursor-pointer",children:[L?n.jsx(zn,{className:"h-3.5 w-3.5 text-emerald-400"}):n.jsx(lf,{className:"h-3.5 w-3.5"}),n.jsx("span",{children:L?"Kopiert":"Kopieren"})]})]}),n.jsx("pre",{className:"p-3 max-h-48 overflow-y-auto text-xs font-mono text-cyan-200/90 whitespace-pre scrollbar-thin select-text",children:n.jsxs("code",{children:[O==="roocode"&&((Zr=h.tools.cline)==null?void 0:Zr.snippet),O==="cursor"&&((tr=h.tools.cursor)==null?void 0:tr.snippet),O==="opencode"&&((Ut=h.tools.opencode)==null?void 0:Ut.snippet),O==="zed"&&((Yr=h.tools.zed)==null?void 0:Yr.snippet),O==="continue"&&((In=h.tools.continue)==null?void 0:In.snippet)]})})]}),n.jsx("button",{onClick:()=>S(null),className:"w-full h-9 rounded-lg bg-primary text-primary-foreground hover:opacity-90 font-semibold text-xs transition-opacity cursor-pointer mt-2",children:"Schließen"})]})})]}),n.jsxs("div",{className:"flex flex-wrap items-center gap-6 mt-3 text-[10px] text-muted-foreground border-t border-border/20 pt-3",children:[n.jsxs("span",{className:"flex items-center gap-1.5",children:[n.jsx("span",{className:"h-2 w-2 rounded-full bg-cyan-400"}),n.jsx("span",{children:"Cyan-Fluss: Client-Anfrage an Gateway"})]}),n.jsxs("span",{className:"flex items-center gap-1.5",children:[n.jsx("span",{className:"h-2 w-2 rounded-full bg-emerald-500 animate-pulse"}),n.jsx("span",{children:"Grüner Puls: Aktive Verbindung / Warmes Modell geladen"})]}),n.jsxs("span",{className:"flex items-center gap-1.5",children:[n.jsx("span",{className:"h-2 w-2 rounded bg-gradient-to-r from-teal-500 to-emerald-500"}),n.jsx("span",{children:"VRAM-Verlauf: Modellspezifischer Speicheranteil"})]})]})]}),n.jsxs("div",{className:"rounded-2xl border border-border/60 bg-card/45 backdrop-blur-md p-5 shadow-lg shadow-black/10 space-y-3.5",children:[n.jsx("div",{className:"text-xs font-bold uppercase tracking-wider text-muted-foreground px-1",children:"Gateway Steckplatz-Belegung (Slot-Zuweisung)"}),n.jsx("div",{className:"grid grid-cols-2 sm:grid-cols-3 lg:grid-cols-6 gap-3",children:["fast","heavy","coder","reasoning","vision","scout"].map(D=>{var Se;const re=o.find(ze=>ze.role===D),ve=re?a.includes(re.name):!1;return n.jsxs("div",{onClick:()=>_(D),className:ee("rounded-xl border p-3 flex flex-col justify-between gap-2.5 transition-all cursor-pointer select-none text-left bg-background/25 hover:border-primary/45 hover:bg-background/40 group min-h-[90px]",ve?"border-emerald-500/40 shadow-sm shadow-emerald-500/5":re?"border-primary/20 bg-primary/5":"border-border/30 border-dashed opacity-75"),children:[n.jsxs("div",{className:"flex items-center justify-between",children:[n.jsx("span",{className:ee("text-[9px] font-bold uppercase tracking-wider font-mono px-1.5 py-0.5 rounded border",D==="fast"?"bg-cyan-500/10 text-cyan-400 border-cyan-500/20":D==="heavy"?"bg-amber-500/10 text-amber-400 border-amber-500/20":D==="coder"?"bg-violet-500/10 text-violet-400 border-violet-500/20":D==="reasoning"?"bg-emerald-500/10 text-emerald-400 border-emerald-500/20":D==="vision"?"bg-pink-500/10 text-pink-400 border-pink-500/20":"bg-teal-500/10 text-teal-400 border-teal-500/20"),children:D}),ve&&n.jsx("span",{className:"h-1.5 w-1.5 rounded-full bg-emerald-400 animate-pulse"})]}),n.jsx("div",{className:"text-[10px] font-mono font-medium truncate text-foreground/90 pr-1 font-space",title:re==null?void 0:re.name,children:re?(Se=re.name.split("/").pop())==null?void 0:Se.replace(/\.gguf$/i,""):"nicht zugewiesen"}),n.jsx("div",{className:"text-[8px] text-primary/70 group-hover:text-primary font-bold uppercase tracking-wider transition-colors font-space",children:"Ändern ➔"})]},D)})})]}),n.jsxs("div",{className:"space-y-4",children:[n.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-3 px-1",children:[n.jsxs("div",{className:"text-xs font-bold uppercase tracking-wider text-muted-foreground",children:["Installierte Modell-Bibliothek (",Pe.length," von ",o.length,")"]}),n.jsxs("div",{className:"flex items-center gap-3",children:[n.jsxs("div",{className:"flex rounded-lg border border-border/40 bg-card/45 p-0.5",children:[n.jsx("button",{onClick:()=>se("all"),className:ee("px-2.5 py-1 rounded-md text-[9px] font-bold uppercase transition-all cursor-pointer",ne==="all"?"bg-primary text-primary-foreground shadow-sm":"text-muted-foreground hover:text-foreground"),children:"Vorhanden"}),n.jsx("button",{onClick:()=>se("in_use"),className:ee("px-2.5 py-1 rounded-md text-[9px] font-bold uppercase transition-all cursor-pointer",ne==="in_use"?"bg-primary text-primary-foreground shadow-sm":"text-muted-foreground hover:text-foreground"),children:"In Benutzung"})]}),n.jsxs("div",{className:"flex rounded-lg border border-border/40 bg-card/45 p-0.5",children:[n.jsx("button",{onClick:()=>F("grid"),className:ee("px-2.5 py-1 rounded-md text-[9px] font-bold uppercase transition-all cursor-pointer",T==="grid"?"bg-primary text-primary-foreground shadow-sm":"text-muted-foreground hover:text-foreground"),children:"Grid"}),n.jsx("button",{onClick:()=>F("list"),className:ee("px-2.5 py-1 rounded-md text-[9px] font-bold uppercase transition-all cursor-pointer",T==="list"?"bg-primary text-primary-foreground shadow-sm":"text-muted-foreground hover:text-foreground"),children:"List"})]})]})]}),T==="grid"?n.jsx("div",{className:"grid gap-4 sm:grid-cols-2 lg:grid-cols-3",children:Pe.length===0?n.jsx("div",{className:"col-span-full text-xs text-muted-foreground border border-dashed border-border/60 rounded-2xl p-12 text-center select-none",children:ne==="in_use"?"Keine Modelle in Benutzung (keine Zuweisung oder warm geladene Modelle).":'Keine Modelle konfiguriert. Verwende den Tab "Modelle finden" zum Herunterladen.'}):Pe.map(D=>{const re=a.includes(D.name),ve=E==null?void 0:E.model_list.find(ze=>ze.role===D.role),Se=Ju(D.name);return n.jsxs("div",{className:ee("rounded-2xl border bg-card/45 backdrop-blur-md p-5 shadow-lg shadow-black/10 flex flex-col justify-between gap-4 transition-all duration-300 hover:border-primary/40 group relative overflow-hidden",re?"border-primary/45 shadow-primary/5":D.role?"border-primary/30 bg-primary/5 shadow-inner":"border-border/60"),children:[n.jsxs("div",{className:"space-y-3",children:[n.jsx("div",{className:"flex items-start justify-between gap-3",children:n.jsxs("div",{className:"flex gap-2.5 min-w-0",children:[n.jsx("div",{className:ee("w-7 h-7 rounded-lg border flex items-center justify-center font-bold text-xs shrink-0 shadow-sm",Se.color),title:Se.name,children:Se.initial}),n.jsxs("div",{className:"min-w-0",children:[n.jsx("h3",{className:"text-xs font-bold tracking-tight text-foreground line-clamp-2 break-all font-mono",title:D.name,children:D.name.split("/").pop()}),n.jsxs("div",{className:"flex items-center gap-2 flex-wrap mt-1",children:[n.jsx("span",{className:"text-[9px] font-mono text-muted-foreground bg-background/40 px-1.5 py-0.5 rounded border border-border/30",children:D.quant||"GGUF"}),re&&n.jsxs("span",{className:"flex items-center gap-1 text-[9px] font-semibold text-emerald-400 uppercase tracking-wider",children:[n.jsx(Xo,{className:"h-3 w-3 animate-pulse"})," Warm"]}),D.role&&n.jsx("span",{className:"px-1.5 py-0.5 rounded bg-primary/10 border border-primary/20 text-[9px] font-mono text-primary font-bold uppercase",children:D.role})]})]})]})}),n.jsx("div",{className:"border-t border-border/30 pt-3 flex flex-wrap gap-1",children:n.jsx(Zu,{caps:D.capabilities})})]}),n.jsxs("div",{className:"space-y-3 pt-1",children:[n.jsxs("div",{className:"grid grid-cols-2 gap-2 text-[10px] font-mono text-muted-foreground",children:[n.jsxs("div",{className:"flex items-center gap-1.5 p-2 bg-background/20 rounded-lg border border-border/20",children:[n.jsx(gi,{className:"h-3.5 w-3.5 text-primary/80"}),n.jsxs("div",{children:[n.jsx("div",{className:"text-[8px] uppercase tracking-wider font-semibold text-muted-foreground/60",children:"Größe"}),n.jsx("div",{className:"text-foreground font-semibold",children:Ur(D.size_bytes)})]})]}),n.jsxs("div",{className:"flex items-center gap-1.5 p-2 bg-background/20 rounded-lg border border-border/20",children:[n.jsx(wh,{className:"h-3.5 w-3.5 text-primary/80"}),n.jsxs("div",{children:[n.jsx("div",{className:"text-[8px] uppercase tracking-wider font-semibold text-muted-foreground/60",children:"Kontext"}),n.jsx("div",{className:"text-foreground font-semibold",children:Yu(D.ctx)})]})]})]}),ve&&n.jsxs("div",{className:"p-3 bg-amber-500/5 border border-amber-500/30 rounded-xl space-y-2 flex flex-col justify-between shrink-0",children:[n.jsxs("div",{className:"text-[9px] font-semibold text-amber-400 flex items-center gap-1",children:[n.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-amber-400 animate-ping"}),n.jsxs("span",{children:["Upgrade verfügbar: ",ve.repo.split("/").pop()]})]}),n.jsxs("button",{onClick:()=>Le(ve.repo,D.role,D.quant||"Q4_K_M",D.capabilities.tools!=="no"),className:"h-7 w-full flex items-center justify-center gap-1 rounded-lg bg-amber-500 text-black text-[10px] font-bold hover:bg-amber-400 transition-colors cursor-pointer",children:[n.jsx(Vr,{className:"h-3 w-3"})," Smart-Swap starten"]})]}),n.jsxs("div",{className:"flex items-center gap-1.5 border-t border-border/20 pt-3 mt-auto",children:[n.jsx("button",{onClick:()=>re?oe(D.name):K(D.name),className:ee("flex-1 h-7 rounded-lg text-[9px] font-bold uppercase transition-all cursor-pointer border flex items-center justify-center gap-1",re?"border-amber-500/30 bg-amber-500/5 hover:bg-amber-500/15 text-amber-400":"border-primary/30 bg-primary/5 hover:bg-primary/15 text-primary"),children:re?"Entladen":"Laden"}),n.jsx("button",{onClick:()=>w(D.name,D.ctx),className:"h-7 px-2.5 rounded-lg border border-border/40 text-[9px] font-bold uppercase hover:bg-accent text-muted-foreground transition-colors cursor-pointer",title:"Kontextlänge anpassen",children:"Ctx"}),n.jsx("button",{onClick:()=>J(D.name),className:"h-7 w-7 rounded-lg border border-border/40 text-muted-foreground hover:text-red-400 hover:bg-red-500/5 flex items-center justify-center transition-colors cursor-pointer",title:"Modell löschen",children:n.jsx(vi,{className:"h-3.5 w-3.5"})})]})]})]},D.name)})}):n.jsx("div",{className:"space-y-2",children:Pe.length===0?n.jsx("div",{className:"text-xs text-muted-foreground border border-dashed border-border/60 rounded-2xl p-12 text-center select-none",children:ne==="in_use"?"Keine Modelle in Benutzung (keine Zuweisung oder warm geladene Modelle).":'Keine Modelle konfiguriert. Verwende den Tab "Modelle finden" zum Herunterladen.'}):Pe.map(D=>{const re=a.includes(D.name),ve=Ju(D.name);return n.jsxs("div",{className:ee("rounded-xl border bg-card/45 backdrop-blur-md p-3.5 shadow-lg shadow-black/5 flex flex-col sm:flex-row sm:items-center justify-between gap-3 hover:border-primary/40 transition-all",re?"border-primary/45":D.role?"border-primary/30 bg-primary/5":"border-border/60"),children:[n.jsxs("div",{className:"flex items-center gap-3 min-w-0",children:[n.jsx("div",{className:ee("w-8 h-8 rounded-lg border border-border/40 flex items-center justify-center font-bold text-xs shrink-0 shadow-sm",ve.color),title:ve.name,children:ve.initial}),n.jsxs("div",{className:"min-w-0 text-left",children:[n.jsxs("div",{className:"flex items-center gap-2 flex-wrap",children:[n.jsx("h4",{className:"text-xs font-bold text-foreground truncate max-w-[250px] sm:max-w-[400px] break-all font-mono",title:D.name,children:D.name.split("/").pop()}),D.role&&n.jsx("span",{className:"px-1.5 py-0.5 rounded bg-primary/10 border border-primary/20 text-[8px] font-mono text-primary font-bold uppercase shrink-0",children:D.role}),re&&n.jsxs("span",{className:"flex items-center gap-0.5 text-[8px] font-semibold text-emerald-400 uppercase tracking-wider shrink-0",children:[n.jsx("span",{className:"h-1.5 w-1.5 rounded-full bg-emerald-500 animate-pulse"})," warm"]})]}),n.jsxs("div",{className:"text-[10px] text-muted-foreground/80 flex items-center gap-2 mt-0.5",children:[n.jsxs("span",{children:["Größe: ",Ur(D.size_bytes)]}),n.jsx("span",{children:"•"}),n.jsxs("span",{children:["Kontext: ",Yu(D.ctx)]}),n.jsx("span",{children:"•"}),n.jsx("span",{className:"font-mono text-[9px]",children:D.quant||"GGUF"})]})]})]}),n.jsxs("div",{className:"flex items-center gap-3 shrink-0 self-end sm:self-auto",children:[n.jsx("div",{className:"hidden lg:flex flex-wrap gap-1",children:n.jsx(Zu,{caps:D.capabilities})}),n.jsxs("div",{className:"flex items-center gap-1.5",children:[n.jsx("button",{onClick:()=>re?oe(D.name):K(D.name),className:ee("h-7 px-3 rounded-lg text-[9px] font-bold uppercase transition-all cursor-pointer border flex items-center gap-1",re?"border-amber-500/30 bg-amber-500/5 hover:bg-amber-500/15 text-amber-400":"border-primary/30 bg-primary/5 hover:bg-primary/15 text-primary"),children:re?"Entladen":"Laden"}),n.jsx("button",{onClick:()=>w(D.name,D.ctx),className:"h-7 px-2.5 rounded-lg border border-border/40 text-[9px] font-bold uppercase hover:bg-accent text-muted-foreground transition-all cursor-pointer",title:"Kontextlänge anpassen",children:"Ctx"}),n.jsx("button",{onClick:()=>J(D.name),className:"h-7 w-7 rounded-lg flex items-center justify-center border border-border/40 text-muted-foreground hover:text-red-400 hover:bg-red-500/5 transition-all cursor-pointer",title:"Modell löschen",children:n.jsx(vi,{className:"h-3.5 w-3.5"})})]})]})]},D.name)})})]}),C&&n.jsx("div",{className:"fixed inset-0 z-50 bg-black/60 backdrop-blur-sm flex items-center justify-center p-4",children:n.jsxs("div",{className:"w-full max-w-md rounded-2xl border border-border/80 bg-card p-6 shadow-2xl space-y-4 animate-in fade-in zoom-in-95 duration-200",children:[n.jsxs("div",{className:"flex items-center justify-between border-b border-border/20 pb-2",children:[n.jsxs("h3",{className:"text-xs font-bold uppercase tracking-wider text-primary",children:["Rolle '",C,"' konfigurieren"]}),n.jsx("button",{onClick:()=>_(null),className:"p-1 rounded hover:bg-accent text-muted-foreground hover:text-foreground cursor-pointer",children:n.jsx(Hr,{className:"h-4 w-4"})})]}),n.jsxs("p",{className:"text-xs text-muted-foreground",children:["Wähle ein Modell aus deiner Bibliothek für die Rolle ",n.jsx("strong",{className:"text-foreground",children:C}),":"]}),n.jsxs("div",{className:"space-y-1.5 max-h-60 overflow-y-auto pr-1",children:[n.jsx("button",{onClick:()=>{me(C,""),_(null)},className:"w-full text-left px-3 py-2 rounded-lg text-xs hover:bg-accent text-red-400 font-semibold cursor-pointer border border-red-500/20 bg-red-500/5 flex items-center justify-between",children:n.jsx("span",{children:"Zuweisung entfernen"})}),o.map(D=>{var re;return n.jsxs("button",{onClick:()=>{me(C,D.name),_(null)},className:ee("w-full text-left px-3 py-2.5 rounded-lg text-xs hover:bg-accent flex items-center justify-between font-mono cursor-pointer border border-border/30",D.role===C?"text-primary font-bold bg-primary/10 border-primary/30":"text-foreground bg-background/20"),children:[n.jsxs("div",{className:"flex flex-col text-left",children:[n.jsx("span",{className:"truncate max-w-[280px] font-semibold",children:(re=D.name.split("/").pop())==null?void 0:re.replace(".gguf","")}),n.jsxs("span",{className:"text-[9px] text-muted-foreground mt-0.5",children:[Ur(D.size_bytes)," · ",D.quant]})]}),D.role===C&&n.jsx(zn,{className:"h-4 w-4 shrink-0 text-primary"})]},D.name)})]})]})}),X&&n.jsx(Qr,{type:X.type,title:X.title,message:X.message,defaultValue:X.defaultValue,onConfirm:X.onConfirm,onCancel:X.onCancel})]})}function N0(){const[o,d]=p.useState(""),[a,c]=p.useState([]),[f,m]=p.useState("Q4_K_M"),[h,x]=p.useState(""),[E,b]=p.useState(""),[k,P]=p.useState([]);async function A(S){const C=S??o;if(C.trim()){x("Analysiere HuggingFace Repository...");try{const _=await fe(`/api/hf/quants?repo=${encodeURIComponent(C)}`);d(_.repo),c(_.quants),_.quants.length&&m(_.quants.includes("Q4_K_M")?"Q4_K_M":_.quants[0]),x(_.quants.length?"":"Keine GGUF-Dateien in diesem Repository gefunden.")}catch(_){x(`Fehler: ${_}`)}}}async function I(){if(E.trim()){x("Durchsuche HuggingFace...");try{const S=await fe(`/api/hf/search?q=${encodeURIComponent(E)}`);P(S.results),x(S.results.length?"":"Keine Ergebnisse gefunden.")}catch(S){x(`Suche fehlgeschlagen: ${S}`)}}}async function O(){if(o.trim()){x("Download-Job wird initiiert...");try{await fe("/api/models/install",{method:"POST",body:JSON.stringify({repo:o,quant:f,jinja:!0})}),x(`Download gestartet: ${o} (${f}). Fortschritt wird oben angezeigt.`)}catch(S){x(`Download-Fehler: ${S}`)}}}return n.jsxs("div",{className:"space-y-4 rounded-2xl border border-border/60 bg-card/45 backdrop-blur-md p-5 shadow-lg shadow-black/10",children:[n.jsx("div",{className:"text-xs font-bold uppercase tracking-wider text-muted-foreground",children:"HF Download & Suche"}),n.jsxs("div",{className:"flex flex-col sm:flex-row gap-2",children:[n.jsx("input",{value:o,onChange:S=>d(S.target.value),placeholder:"HF-URL oder org/repo (z.B. unsloth/Qwen2.5-Coder-7B-Instruct-GGUF)",className:"flex-1 h-9 rounded-lg border border-border/60 bg-background/40 px-3 text-xs outline-none focus:ring-1 focus:ring-primary/50 text-foreground"}),n.jsxs("div",{className:"flex gap-2",children:[n.jsx("button",{onClick:()=>A(),className:"h-9 px-4 rounded-lg border border-border/60 bg-background/20 text-xs font-semibold hover:border-primary/50 hover:bg-background/40 transition-all cursor-pointer whitespace-nowrap",children:"Quants laden"}),a.length>0&&n.jsxs(n.Fragment,{children:[n.jsx("select",{value:f,onChange:S=>m(S.target.value),className:"h-9 rounded-lg border border-border/60 bg-background/40 px-3 text-xs outline-none text-foreground font-semibold",children:a.map(S=>n.jsx("option",{value:S,className:"bg-popover text-foreground",children:S},S))}),n.jsxs("button",{onClick:O,className:"h-9 px-4 rounded-lg bg-primary text-primary-foreground text-xs font-semibold hover:opacity-90 transition-all cursor-pointer flex items-center gap-1.5",children:[n.jsx(Vr,{className:"h-3.5 w-3.5"})," Herunterladen"]})]})]})]}),n.jsxs("div",{className:"flex gap-2 border-t border-border/20 pt-4",children:[n.jsxs("div",{className:"relative flex-1",children:[n.jsx("input",{value:E,onChange:S=>b(S.target.value),onKeyDown:S=>S.key==="Enter"&&I(),placeholder:"HuggingFace durchsuchen (z.B. Llama-3.1)...",className:"w-full h-9 pl-9 pr-3 rounded-lg border border-border/60 bg-background/40 text-xs outline-none focus:ring-1 focus:ring-primary/50 text-foreground"}),n.jsx(_i,{className:"absolute left-3 top-2.5 h-3.5 w-3.5 text-muted-foreground"})]}),n.jsx("button",{onClick:I,className:"h-9 px-4 rounded-lg border border-border/60 bg-background/20 text-xs font-semibold hover:border-primary/50 hover:bg-background/40 transition-all cursor-pointer",children:"Suchen"})]}),k.length>0&&n.jsx("div",{className:"max-h-48 space-y-1.5 overflow-y-auto border border-border/40 bg-background/20 p-2 rounded-xl scrollbar-thin",children:k.map(S=>n.jsxs("button",{onClick:()=>{d(S.repo),P([]),b(""),A(S.repo)},className:"flex w-full items-center justify-between rounded-lg px-3 py-2 text-left text-xs bg-background/10 border border-border/10 hover:border-primary/30 hover:bg-background/30 transition-all",children:[n.jsx("span",{className:"font-semibold truncate",children:S.repo}),n.jsxs("span",{className:"text-[10px] font-mono text-muted-foreground flex items-center gap-1 shrink-0",children:[n.jsx(Vr,{className:"h-3 w-3"})," ",S.downloads.toLocaleString()]})]},S.repo))}),h&&n.jsx("div",{className:"text-[10px] font-medium text-primary font-mono",children:h})]})}const S0={vision:{title:"Bilder & Vision",desc:"Verarbeitet Bilder, Screenshots und visuelle Diagramme in multimodalen Chats.",icon:xi},coder:{title:"Coden & Entwicklung",desc:"Autovervollständigung, Refactoring und Codegenerierung direkt in deiner IDE.",icon:mi},reasoning:{title:"Logik & Nachdenken",desc:"Komplexe logische Gedankengänge, Mathematik und tiefgründiges Planen (Reasoning).",icon:Cs},agent:{title:"Autonomer Agent (Hermes)",desc:"Führt selbstständig Terminalbefehle aus und interagiert mit deinem Homelab.",icon:Ss},scout:{title:"Allrounder & Chat",desc:"Schnelle Antworten, Zusammenfassungen, Übersetzungen und alltägliche Fragen.",icon:hi}};function C0(){const[o,d]=p.useState(null),[a,c]=p.useState([]),[f,m]=p.useState(null),[h,x]=p.useState(""),[E,b]=p.useState(!0),[k,P]=p.useState({}),[A,I]=p.useState({}),[O,S]=p.useState(!1);p.useEffect(()=>{Promise.all([fe("/api/discover"),fe("/api/models"),fe("/api/maintenance/updates").catch(()=>null)]).then(([_,L,q])=>{d(_),c(L.models||[]),q&&m(q)}).catch(_=>x(String(_))).finally(()=>b(!1))},[]);async function C(_,L,q,Z){P(H=>({...H,[_]:"Starte..."}));try{await fe("/api/models/install",{method:"POST",body:JSON.stringify({repo:_,role:L,quant:q,jinja:Z})}),P(H=>({...H,[_]:"Download läuft"}))}catch{P(T=>({...T,[_]:"Fehler"}))}}return E?n.jsx("div",{className:"text-xs text-muted-foreground py-12 text-center",children:"Analysiere Hardware und suche passende GGUF-Empfehlungen…"}):h||!o?n.jsxs("div",{className:"rounded-xl border border-red-500/20 bg-red-500/5 p-4 text-xs text-red-400",children:["Empfehlungsdienst temporär nicht erreichbar (",h,")."]}):n.jsxs("div",{className:"space-y-8",children:[n.jsxs("div",{className:"text-[10px] font-mono text-muted-foreground bg-background/25 border border-border/40 p-4 rounded-xl flex flex-col sm:flex-row sm:items-center justify-between gap-3 shadow-sm",children:[n.jsxs("div",{children:["Modell-Registry geladen für ",n.jsxs("span",{className:"text-foreground font-bold",children:[o.sys_ram_gb," GB"]})," System-RAM."]}),n.jsxs("div",{className:"flex items-center gap-1.5",children:[n.jsx(cf,{className:"h-3.5 w-3.5 text-primary fill-primary/20"}),n.jsx("span",{children:"Empfehlungen sind automatisch auf deine Box-Hardware optimiert."})]})]}),n.jsx("div",{className:"grid gap-6 md:grid-cols-2",children:o.categories.map(_=>{const L=S0[_.role]||{title:_.title||_.role,desc:"Spezifisches Modell für diese Systemrolle.",icon:Es},q=L.icon,Z=a.find(X=>X.role===_.role),H=f==null?void 0:f.model_list.find(X=>X.role===_.role),T=_.models.find(X=>X.repo===_.recommended)||_.models[0];if(!T)return null;const F=k[T.repo],ne=_.models.filter(X=>X.repo!==_.recommended),se=!!A[_.role];return n.jsxs("div",{className:ee("rounded-2xl border bg-card/45 backdrop-blur-md p-5 shadow-lg shadow-black/10 flex flex-col justify-between gap-5 transition-all duration-300 hover:border-primary/40",Z?"border-border/60":"border-primary/20 shadow-primary/5"),children:[n.jsxs("div",{className:"space-y-4",children:[n.jsxs("div",{className:"flex items-start justify-between gap-3",children:[n.jsxs("div",{className:"flex items-center gap-3",children:[n.jsx("div",{className:"w-10 h-10 rounded-xl bg-primary/10 border border-primary/20 flex items-center justify-center text-primary shadow-sm shrink-0",children:n.jsx(q,{className:"h-5.5 w-5.5"})}),n.jsxs("div",{children:[n.jsx("h3",{className:"text-sm font-bold tracking-tight text-foreground",children:L.title}),n.jsxs("span",{className:"text-[9px] font-mono text-muted-foreground uppercase bg-background/50 px-1.5 py-0.5 rounded border border-border/30 inline-block mt-0.5",children:["Rolle: ",_.role]})]})]}),Z?n.jsxs("span",{className:"flex items-center gap-1.5 text-[9px] font-bold text-emerald-400 uppercase tracking-wider bg-emerald-500/10 border border-emerald-500/20 px-2.5 py-1 rounded-lg",children:[n.jsx("span",{className:"h-1.5 w-1.5 rounded-full bg-emerald-500 animate-pulse"}),"Aktiviert"]}):n.jsx("span",{className:"text-[9px] font-bold text-primary/70 uppercase tracking-wider bg-primary/10 border border-primary/20 px-2.5 py-1 rounded-lg",children:"Frei"})]}),n.jsx("p",{className:"text-xs text-muted-foreground leading-relaxed",children:L.desc}),n.jsx("div",{className:"p-3.5 rounded-xl bg-background/35 border border-border/30 space-y-2.5",children:Z?n.jsxs("div",{className:"space-y-1.5",children:[n.jsx("div",{className:"text-[9px] font-bold uppercase tracking-wider text-muted-foreground/60",children:"Aktive GGUF-Belegung"}),n.jsx("div",{className:"text-xs font-mono font-bold text-foreground truncate",title:Z.name,children:Z.name.split("/").pop()}),n.jsxs("div",{className:"text-[10px] text-muted-foreground/80 flex items-center gap-2",children:[n.jsxs("span",{children:["Größe: ",Si(Z.size_bytes||0)]}),n.jsx("span",{children:"•"}),n.jsxs("span",{children:["Quant: ",Z.quant||"GGUF"]})]})]}):n.jsxs("div",{className:"space-y-1.5",children:[n.jsx("div",{className:"text-[9px] font-bold uppercase tracking-wider text-primary/80",children:"Empfohlenes Modell"}),n.jsx("div",{className:"text-xs font-mono font-bold text-foreground truncate",title:T.name,children:T.name}),n.jsxs("div",{className:"text-[10px] text-muted-foreground/80 flex items-center gap-2 flex-wrap",children:[n.jsxs("span",{children:["Ersteller: ",T.author]}),n.jsx("span",{children:"•"}),n.jsxs("span",{children:["Quant: ",T.quant]})]}),n.jsx("div",{className:"flex items-center gap-1.5 pt-0.5",children:n.jsx(w0,{fit:T.fit})})]})}),n.jsx("div",{className:"pt-1",children:Z?H?n.jsxs("div",{className:"space-y-2",children:[n.jsxs("div",{className:"text-[9px] font-semibold text-amber-400 flex items-center gap-1.5",children:[n.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-amber-400 animate-ping shrink-0"}),n.jsxs("span",{children:["Bessere Version in der Registry: ",H.repo.split("/").pop()]})]}),n.jsxs("button",{onClick:()=>C(H.repo,_.role,T.quant||"Q4_K_M",T.caps.tools!=="no"),disabled:!!k[H.repo],className:"h-8 w-full flex items-center justify-center gap-1.5 rounded-lg bg-amber-500 text-black text-xs font-bold hover:bg-amber-400 disabled:opacity-50 transition-all cursor-pointer shadow-md shadow-amber-500/10",children:[n.jsx(Vr,{className:"h-3.5 w-3.5"}),k[H.repo]||"Auf neue Version aktualisieren"]})]}):n.jsxs("div",{className:"h-8 flex items-center justify-center gap-1.5 text-[10px] font-bold text-emerald-400 uppercase tracking-wide bg-emerald-500/5 border border-emerald-500/10 rounded-lg select-none",children:[n.jsx(zn,{className:"h-4 w-4"})," Auf neuestem Stand"]}):n.jsxs("button",{onClick:()=>C(T.repo,_.role,T.quant||"Q4_K_M",T.caps.tools!=="no"),disabled:!!F,className:ee("h-8 w-full flex items-center justify-center gap-1.5 rounded-lg text-xs font-bold transition-all cursor-pointer border",F?"border-primary/40 bg-primary/5 text-primary":"bg-primary text-primary-foreground hover:opacity-90 shadow-md shadow-primary/10"),children:[n.jsx(Vr,{className:"h-3.5 w-3.5"}),F||"Optimales Modell einsetzen"]})})]}),ne.length>0&&n.jsxs("div",{className:"border-t border-border/20 pt-3",children:[n.jsxs("button",{onClick:()=>I(X=>({...X,[_.role]:!se})),className:"flex items-center gap-1.5 text-[10px] text-muted-foreground/80 hover:text-foreground transition-colors cursor-pointer",children:[se?n.jsx(ch,{className:"h-3 w-3"}):n.jsx(ah,{className:"h-3 w-3"}),n.jsxs("span",{children:["Alternative Empfehlungen anzeigen (",ne.length,")"]})]}),se&&n.jsx("div",{className:"mt-2.5 space-y-2 max-h-36 overflow-y-auto pr-1 scrollbar-thin",children:ne.map(X=>n.jsxs("div",{className:"p-2 rounded-lg bg-background/25 border border-border/20 flex items-center justify-between gap-3",children:[n.jsxs("div",{className:"min-w-0",children:[n.jsx("div",{className:"text-[10px] font-mono font-bold text-foreground truncate",title:X.name,children:X.name}),n.jsxs("div",{className:"text-[9px] text-muted-foreground flex items-center gap-1.5 mt-0.5",children:[n.jsxs("span",{children:["Quant: ",X.quant]}),n.jsx("span",{children:"•"}),n.jsx("span",{children:X.fit.text})]})]}),n.jsx("button",{onClick:()=>C(X.repo,_.role,X.quant||"Q4_K_M",X.caps.tools!=="no"),disabled:!!k[X.repo],className:"h-6 px-2.5 rounded bg-background/40 hover:bg-background/80 border border-border/40 text-[9px] font-bold text-foreground transition-all cursor-pointer shrink-0 disabled:opacity-50",children:k[X.repo]||"Installieren"})]},X.repo))})]})]},_.role)})}),n.jsxs("div",{className:"border border-border/50 bg-card/20 rounded-2xl overflow-hidden shadow-md mt-4",children:[n.jsxs("button",{onClick:()=>S(!O),className:"w-full px-5 py-4 flex items-center justify-between text-xs font-bold uppercase tracking-wider text-muted-foreground hover:bg-card/30 transition-colors cursor-pointer",children:[n.jsxs("div",{className:"flex items-center gap-2",children:[n.jsx(_i,{className:"h-4 w-4 text-primary"}),n.jsx("span",{children:"Eigenes Modell von Hugging Face laden (Erweiterte Ansicht)"})]}),n.jsx("span",{className:"text-[10px] text-primary hover:underline",children:O?"Ausblenden ▲":"Anzeigen ▼"})]}),O&&n.jsx("div",{className:"p-5 border-t border-border/20 bg-card/10",children:n.jsx(N0,{})})]})]})}function E0(){const[o,d]=p.useState("cockpit");return n.jsxs("div",{className:"space-y-6",children:[n.jsxs("div",{className:"flex flex-col sm:flex-row justify-between sm:items-center gap-4",children:[n.jsxs("div",{children:[n.jsx("h1",{className:"text-2xl font-space font-bold tracking-tight bg-gradient-to-r from-foreground via-foreground to-primary bg-clip-text text-transparent",children:"Modell-Manager"}),n.jsx("p",{className:"text-sm text-muted-foreground",children:"Verwalte deine Modelle und passe das Gateway-Routing live über das interaktive Cockpit an."})]}),n.jsx("div",{className:"flex rounded-xl border border-border/60 bg-card/45 backdrop-blur-md p-1 self-start",children:["cockpit","discover"].map(a=>n.jsx("button",{onClick:()=>d(a),className:ee("rounded-lg px-4 py-1.5 text-xs font-semibold tracking-wide uppercase transition-all cursor-pointer",o===a?"bg-primary text-primary-foreground shadow-md shadow-primary/10":"text-muted-foreground hover:text-foreground"),children:a==="cockpit"?"Cockpit":"Modelle finden"},a))})]}),n.jsx(b0,{}),n.jsx("div",{className:"transition-all duration-300",children:o==="cockpit"?n.jsx(k0,{}):n.jsx(C0,{})})]})}function kr(o){return(o/1024**3).toFixed(1)}function qo({label:o,percent:d,detail:a,icon:c}){const f=d>90?"bg-red-500 shadow-md shadow-red-500/20":d>75?"bg-amber-500 shadow-md shadow-amber-500/20":"bg-primary shadow-md shadow-primary/20";return n.jsxs("div",{className:"rounded-2xl border border-border/60 bg-card/45 backdrop-blur-md p-5 shadow-lg shadow-black/10 flex flex-col justify-between gap-3 hover:border-primary/30 transition-all duration-300",children:[n.jsxs("div",{className:"flex items-center justify-between",children:[n.jsxs("div",{className:"flex items-center gap-2",children:[n.jsx(c,{className:"h-4.5 w-4.5 text-primary"}),n.jsx("span",{className:"text-xs font-semibold uppercase tracking-wider text-foreground",children:o})]}),n.jsxs("span",{className:"text-xs font-mono font-bold text-foreground",children:[Math.round(d),"%"]})]}),n.jsx("div",{className:"w-full h-2 bg-background/40 rounded-full overflow-hidden border border-border/20",children:n.jsx("div",{className:ee("h-full transition-all duration-700 ease-out",f),style:{width:`${Math.min(d,100)}%`}})}),a&&n.jsx("div",{className:"text-[10px] font-mono text-muted-foreground/80",children:a})]})}function _0(){const[o,d]=p.useState(null),[a,c]=p.useState(null),[f,m]=p.useState(""),[h,x]=p.useState(""),[E,b]=p.useState({}),[k,P]=p.useState(null);function A(C,_,L){P({type:"alert",title:C,message:_,onConfirm:()=>{P(null)}})}function I(){fe("/api/system/status").then(d).catch(C=>m(String(C))),fe("/api/system/services").then(c).catch(()=>{})}p.useEffect(()=>{I();const C=setInterval(I,3e3);return()=>clearInterval(C)},[]);async function O(){x("Backup snapshotted...");try{const C=await fe("/api/system/backup",{method:"POST"});x(C.ok?`Snapshot erzeugt: ${C.snapshot} (${C.files.length} Dateien)`:"Keine Änderungen zu sichern.")}catch(C){x(`Fehler: ${C.message}`)}}async function S(C){b(_=>({..._,[C]:!0}));try{const _=await fe("/api/maintenance/restart",{method:"POST",body:JSON.stringify({service:C})});_.ok?A("Erfolgreich",`Dienst ${C} wurde erfolgreich neu gestartet.`):A("Fehler beim Neustart",`Fehler beim Neustart: ${_.err||"Unbekannter Fehler"}`)}catch(_){A("Fehler",`Fehler: ${_.message}`)}finally{b(_=>({..._,[C]:!1}))}}return n.jsxs("div",{className:"space-y-6",children:[n.jsxs("div",{children:[n.jsx("h1",{className:"text-2xl font-space font-bold tracking-tight bg-gradient-to-r from-foreground via-foreground to-primary bg-clip-text text-transparent",children:"System-Diagnose & Status"}),n.jsx("p",{className:"text-sm text-muted-foreground flex items-center gap-1",children:"Echtzeit-Ressourcen der Box, Dienst-Überwachung und Systempflege."})]}),f&&n.jsxs("div",{className:"rounded-xl border border-red-500/20 bg-red-500/5 p-4 text-xs text-red-400 font-mono",children:["System-Status nicht lesbar (",f,")."]}),o&&n.jsxs("div",{className:"space-y-4",children:[n.jsxs("div",{className:"grid gap-4 sm:grid-cols-2 lg:grid-cols-4",children:[n.jsx(qo,{label:"CPU",percent:o.cpu.percent,detail:o.cpu.cores?`${o.cpu.cores} Cores`:void 0,icon:gt}),n.jsx(qo,{label:"RAM",percent:o.ram.percent,detail:`${kr(o.ram.used)} / ${kr(o.ram.total)} GB`,icon:Xo}),o.gpu&&o.gpu.busy_percent!=null&&n.jsx(qo,{label:"GPU",percent:o.gpu.busy_percent,detail:o.gpu.gtt_used!=null&&o.gpu.gtt_total?`${kr(o.gpu.gtt_used)} / ${kr(o.gpu.gtt_total)} GB (GTT/unified)`:o.gpu.vram_used!=null&&o.gpu.vram_total?`${kr(o.gpu.vram_used)} / ${kr(o.gpu.vram_total)} GB VRAM`:void 0,icon:gt}),o.disk&&n.jsx(qo,{label:"Disk",percent:o.disk.percent,detail:`${kr(o.disk.used)} / ${kr(o.disk.total)} GB`,icon:gi})]}),o.temp&&(o.temp.cpu||o.temp.gpu)&&n.jsxs("div",{className:"flex gap-3 text-[10px] font-mono text-muted-foreground bg-background/25 border border-border/40 p-2.5 rounded-xl self-start w-fit",children:[o.temp.cpu!=null&&n.jsxs("span",{className:"flex items-center gap-1",children:["CPU-Temperatur: ",n.jsxs("span",{className:"text-foreground font-bold",children:[o.temp.cpu," °C"]})]}),o.temp.cpu!=null&&o.temp.gpu!=null&&n.jsx("span",{children:"|"}),o.temp.gpu!=null&&n.jsxs("span",{className:"flex items-center gap-1",children:["GPU-Temperatur: ",n.jsxs("span",{className:"text-foreground font-bold",children:[o.temp.gpu," °C"]})]})]})]}),a&&n.jsxs("div",{className:"rounded-2xl border border-border/60 bg-card/45 backdrop-blur-md p-5 shadow-lg shadow-black/10 space-y-4",children:[n.jsxs("div",{className:"flex items-center justify-between",children:[n.jsx("div",{className:"text-xs font-bold uppercase tracking-wider text-muted-foreground",children:"Homelab-Dienste"}),n.jsx("button",{onClick:()=>window.dispatchEvent(new CustomEvent("open-system-drawer",{detail:{tab:"logs"}})),className:"h-7 px-3 rounded-lg border border-border/60 bg-background/25 text-[10px] font-bold uppercase hover:bg-accent text-muted-foreground transition-all cursor-pointer",children:"System-Logs anzeigen"})]}),n.jsx("div",{className:"grid gap-3 sm:grid-cols-2",children:a.services.map(C=>n.jsxs("div",{className:"flex items-center justify-between p-3.5 rounded-xl bg-background/20 border border-border/30 hover:border-primary/20 transition-all group",children:[n.jsxs("div",{className:"flex items-center gap-2.5 min-w-0",children:[n.jsx("span",{className:ee("h-2.5 w-2.5 rounded-full ring-2 ring-black/40",C.ok?"bg-emerald-500":"bg-amber-500")}),n.jsxs("div",{className:"truncate",children:[n.jsx("div",{className:"text-xs font-bold text-foreground truncate",children:C.name}),n.jsx("div",{className:"text-[9px] text-muted-foreground/60 font-mono mt-0.5 truncate",children:C.url})]})]}),n.jsx("button",{onClick:()=>S(C.name),disabled:E[C.name],className:"h-7 w-7 rounded-lg border border-border/40 text-muted-foreground hover:text-primary hover:bg-primary/5 flex items-center justify-center transition-all opacity-0 group-hover:opacity-100",title:"Dienst neu starten",children:n.jsx(Br,{className:ee("h-3.5 w-3.5",E[C.name]&&"animate-spin")})})]},C.name))}),n.jsxs("div",{className:"flex flex-wrap gap-4 border-t border-border/20 pt-4 text-[10px] font-semibold text-muted-foreground",children:[n.jsxs("a",{href:Ps(a.links.engine_ui),target:"_blank",rel:"noopener",className:"flex items-center gap-1 text-primary hover:text-primary-foreground hover:bg-primary/10 px-2 py-1 rounded transition-colors",children:[n.jsx(el,{className:"h-3 w-3"})," Engine Dashboard (llama-swap)"]}),n.jsxs("a",{href:Ps(a.links.gateway),target:"_blank",rel:"noopener",className:"flex items-center gap-1 text-primary hover:text-primary-foreground hover:bg-primary/10 px-2 py-1 rounded transition-colors",children:[n.jsx(el,{className:"h-3 w-3"})," OpenAI Gateway"]})]})]}),n.jsxs("div",{className:"rounded-2xl border border-border/60 bg-card/45 backdrop-blur-md p-5 shadow-lg shadow-black/10 flex flex-col sm:flex-row justify-between sm:items-center gap-4",children:[n.jsxs("div",{className:"space-y-1",children:[n.jsx("h3",{className:"text-xs font-bold uppercase tracking-wider text-foreground",children:"System-Backup & Snapshot"}),n.jsx("p",{className:"text-[10px] text-muted-foreground",children:"Erzeuge einen Git-Snapshot der aktuellen Konfigurationen und des System-Zustands."})]}),n.jsx("div",{className:"flex items-center gap-3 self-start sm:self-auto shrink-0",children:n.jsxs("button",{onClick:O,className:"h-9 px-4 rounded-lg bg-primary text-primary-foreground text-xs font-semibold hover:opacity-90 transition-all flex items-center gap-1.5 cursor-pointer shadow-md shadow-primary/10",children:[n.jsx(kh,{className:"h-4 w-4"})," Snapshot erstellen"]})})]}),h&&n.jsx("div",{className:"text-[10px] font-mono text-primary font-medium bg-primary/5 p-3 rounded-xl border border-primary/20",children:h}),k&&n.jsx(Qr,{type:k.type,title:k.title,message:k.message,onConfirm:k.onConfirm,onCancel:k.onCancel})]})}function M0(){const[o,d]=p.useState(localStorage.getItem("mc_host")||"192.168.178.151"),[a,c]=p.useState(localStorage.getItem("mc_mcp_path")||""),[f,m]=p.useState(null),[h,x]=p.useState("cline"),[E,b]=p.useState(!1),[k,P]=p.useState("");p.useEffect(()=>{const C=new URLSearchParams;C.set("host",o),a&&C.set("mcp_path",a),fe(`/api/connect?${C}`).then(m).catch(_=>P(String(_)))},[o,a]);function A(C){d(C),C&&localStorage.setItem("mc_host",C)}function I(C){c(C),localStorage.setItem("mc_mcp_path",C)}const O=f==null?void 0:f.tools[h];async function S(){O&&(await navigator.clipboard.writeText(O.snippet),b(!0),setTimeout(()=>b(!1),1500))}return n.jsxs("div",{className:"space-y-6",children:[n.jsxs("div",{children:[n.jsx("h1",{className:"text-2xl font-space font-bold tracking-tight bg-gradient-to-r from-foreground via-foreground to-primary bg-clip-text text-transparent",children:"Verbindung & Integration"}),n.jsx("p",{className:"text-sm text-muted-foreground",children:"Kopiere vorgefertigte Konfigurationsdateien für deinen lokalen PC (IDEs, Cline, Roo Code, Cursor), um direkt auf das geteilte Gedächtnis und den Auto-Swap-Gateway der Box zuzugreifen."})]}),n.jsxs("div",{className:"grid gap-4 md:grid-cols-2 p-5 rounded-2xl border border-border/60 bg-card/45 backdrop-blur-md shadow-lg shadow-black/10",children:[n.jsxs("div",{className:"space-y-1.5",children:[n.jsxs("label",{className:"text-[10px] font-bold uppercase tracking-wider text-muted-foreground flex items-center gap-1.5",children:[n.jsx(gh,{className:"h-3.5 w-3.5 text-primary"})," Box LAN IP-Adresse"]}),n.jsx("input",{value:o,onChange:C=>A(C.target.value),placeholder:"z.B. 192.168.178.151",className:"w-full h-9 rounded-lg border border-border/60 bg-background/40 px-3 font-mono text-xs outline-none focus:ring-1 focus:ring-primary/50 text-foreground"})]}),n.jsxs("div",{className:"space-y-1.5",children:[n.jsxs("label",{className:"text-[10px] font-bold uppercase tracking-wider text-muted-foreground flex items-center gap-1.5",children:[n.jsx(xh,{className:"h-3.5 w-3.5 text-primary"})," Lokaler MCP-Scriptpfad"]}),n.jsx("input",{value:a,onChange:C=>I(C.target.value),placeholder:"z.B. F:\\Coding Stuff\\mission-control-2\\mcp\\mcp_memory.py",className:"w-full h-9 rounded-lg border border-border/60 bg-background/40 px-3 font-mono text-xs outline-none focus:ring-1 focus:ring-primary/50 text-foreground"})]})]}),k&&n.jsxs("div",{className:"rounded-xl border border-red-500/20 bg-red-500/5 p-4 text-xs text-red-400",children:["Fehler beim Generieren der Snippets: ",k]}),f&&n.jsxs("div",{className:"space-y-4",children:[n.jsx("div",{className:"flex flex-wrap gap-1 bg-card/20 p-1 border border-border/40 rounded-xl max-w-fit",children:Object.entries(f.tools).map(([C,_])=>n.jsx("button",{onClick:()=>x(C),className:ee("rounded-lg px-4 py-1.5 text-xs font-semibold tracking-wide uppercase transition-all cursor-pointer",h===C?"bg-primary text-primary-foreground shadow-md shadow-primary/10":"text-muted-foreground hover:text-foreground"),children:_.label},C))}),O&&n.jsxs("div",{className:"space-y-3",children:[O.note&&n.jsxs("div",{className:"flex items-start gap-2.5 p-3 rounded-xl bg-primary/5 border border-primary/20 text-xs text-muted-foreground leading-relaxed",children:[n.jsx(vh,{className:"h-4.5 w-4.5 text-primary shrink-0 mt-0.5"}),n.jsx("span",{children:O.note})]}),n.jsxs("div",{className:"flex flex-col border border-border/60 bg-black/60 rounded-2xl overflow-hidden shadow-2xl",children:[n.jsxs("div",{className:"flex h-11 items-center justify-between px-4 border-b border-border/40 bg-black/40 shrink-0",children:[n.jsxs("div",{className:"flex items-center gap-1.5",children:[n.jsx("span",{className:"h-3 w-3 rounded-full bg-red-500/80 shadow-md shadow-red-500/10"}),n.jsx("span",{className:"h-3 w-3 rounded-full bg-amber-500/80 shadow-md shadow-amber-500/10"}),n.jsx("span",{className:"h-3 w-3 rounded-full bg-emerald-500/80 shadow-md shadow-emerald-500/10"})]}),n.jsxs("div",{className:"flex items-center gap-1.5 text-[10px] font-mono text-muted-foreground/75 bg-background/30 px-3 py-1 rounded-md border border-border/20",children:[n.jsx(tl,{className:"h-3.5 w-3.5 text-primary"}),n.jsx("span",{children:h==="cline"||h==="cursor"?"config.json":"settings.json"})]}),n.jsxs("button",{onClick:S,className:"flex h-7 px-2.5 items-center gap-1.5 rounded-lg border border-border/40 bg-background/30 text-[10px] font-semibold text-muted-foreground hover:text-foreground hover:bg-background/60 transition-all cursor-pointer",children:[E?n.jsx(zn,{className:"h-3.5 w-3.5 text-emerald-400"}):n.jsx(lf,{className:"h-3.5 w-3.5"}),n.jsx("span",{children:E?"Kopiert":"Kopieren"})]})]}),n.jsx("pre",{className:"p-5 overflow-x-auto text-xs font-mono text-cyan-200/90 whitespace-pre leading-relaxed scrollbar-thin select-text bg-black/10",children:n.jsx("code",{children:O.snippet})})]})]})]})]})}const Xu=["user","instruction","stable","versioned","ephemeral"],fi={user:{label:"User",icon:Ph,color:"text-cyan-400",border:"border-cyan-500/30",bg:"bg-cyan-500/10",text:"text-cyan-400"},instruction:{label:"Regel",icon:Nh,color:"text-violet-400",border:"border-violet-500/30",bg:"bg-violet-500/10",text:"text-violet-400"},stable:{label:"Fakt",icon:Wr,color:"text-indigo-400",border:"border-indigo-500/30",bg:"bg-indigo-500/10",text:"text-indigo-400"},versioned:{label:"Version",icon:_h,color:"text-amber-400",border:"border-amber-500/30",bg:"bg-amber-500/10",text:"text-amber-400"},ephemeral:{label:"Temporär",icon:fh,color:"text-pink-400",border:"border-pink-500/30",bg:"bg-pink-500/10",text:"text-pink-400"}},ef={label:"Gedächtnis",icon:of,bg:"bg-muted/10",text:"text-muted-foreground"},P0={user:"border-l-cyan-500/80",instruction:"border-l-violet-500/80",stable:"border-l-indigo-500/80",versioned:"border-l-amber-500/80",ephemeral:"border-l-pink-500/80"};function R0(){const[o,d]=p.useState([]),[a,c]=p.useState(""),[f,m]=p.useState(""),[h,x]=p.useState(""),[E,b]=p.useState("stable"),[k,P]=p.useState(""),[A,I]=p.useState(!1),[O,S]=p.useState(null);function C(T,F,ne){S({type:"alert",title:T,message:F,onConfirm:()=>{S(null)}})}function _(T,F,ne){S({type:"confirm",title:T,message:F,onConfirm:()=>{S(null),ne()},onCancel:()=>S(null)})}function L(){const T=new URLSearchParams;f&&T.set("q",f),a&&T.set("category",a),fe(`/api/memory?${T}`).then(d).catch(F=>P(String(F)))}p.useEffect(L,[f,a]);async function q(){h.trim()&&(await fe("/api/memory",{method:"POST",body:JSON.stringify({content:h,category:E,source:"ui"})}),x(""),L())}async function Z(T){await fe(`/api/memory/${T}`,{method:"DELETE"}),L()}async function H(){I(!0);try{const T=await fe("/api/memory/dedupe",{method:"POST",body:JSON.stringify({apply:!1})});if(T.duplicate_count===0){C("Ergebnis","Keine Dubletten gefunden — alles sauber.");return}_("Deduplizierung bestätigen",`${T.duplicate_count} Dublette(n) in ${T.groups.length} Gruppe(n) gefunden. Entfernen?`,async()=>{try{await fe("/api/memory/dedupe",{method:"POST",body:JSON.stringify({apply:!0})}),L()}catch(F){C("Fehler",`Fehler beim Löschen: ${F.message}`)}})}catch(T){C("Fehler",`Fehler bei der Deduplizierung: ${T.message}`)}finally{I(!1)}}return n.jsxs("div",{className:"space-y-6",children:[n.jsxs("div",{className:"flex flex-col sm:flex-row justify-between sm:items-center gap-4",children:[n.jsxs("div",{children:[n.jsx("h1",{className:"text-2xl font-space font-bold tracking-tight bg-gradient-to-r from-foreground via-foreground to-primary bg-clip-text text-transparent",children:"Gedächtnis-Pool (Memory)"}),n.jsx("p",{className:"text-sm text-muted-foreground",children:"Die geteilte Konstitution des Systems. Alle Instanzen (Hermes, IDEs, Gateway) lesen und schreiben hierauf per MCP-Protokoll."})]}),n.jsxs("button",{onClick:H,disabled:A,className:"flex h-9 px-4 items-center gap-1.5 text-xs font-semibold rounded-lg border border-border/60 bg-card hover:border-primary/50 transition-all cursor-pointer shadow-md disabled:opacity-50 shrink-0 self-start",children:[n.jsx(Eh,{className:"h-4 w-4 text-primary animate-pulse"}),n.jsx("span",{children:"Deduplizieren"})]})]}),n.jsxs("div",{className:"rounded-2xl border border-border/60 bg-card/45 backdrop-blur-md p-5 shadow-lg shadow-black/10 space-y-4",children:[n.jsx("div",{className:"text-xs font-bold uppercase tracking-wider text-muted-foreground",children:"Neuen Eintrag anlegen"}),n.jsx("textarea",{value:h,onChange:T=>x(T.target.value),placeholder:"Füge eine neue Regel, eine Vorliebe oder einen stabilen Fakt über das Projekt oder dich hinzu...",rows:3,className:"w-full resize-none rounded-xl border border-border/60 bg-background/30 p-3.5 text-xs outline-none focus:ring-1 focus:ring-primary/50 text-foreground transition-all leading-relaxed"}),n.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-3",children:[n.jsxs("div",{className:"flex items-center gap-2",children:[n.jsx("span",{className:"text-[10px] font-semibold text-muted-foreground uppercase tracking-wider",children:"Kategorie"}),n.jsx("select",{value:E,onChange:T=>b(T.target.value),className:"h-8 rounded-lg border border-border/60 bg-background/50 px-2 py-1 text-xs outline-none font-semibold text-foreground cursor-pointer",children:Xu.map(T=>{var F;return n.jsx("option",{value:T,className:"bg-popover text-foreground",children:((F=fi[T])==null?void 0:F.label)||T},T)})})]}),n.jsxs("button",{onClick:q,className:"h-9 px-4 rounded-lg bg-primary text-primary-foreground text-xs font-semibold hover:opacity-90 transition-all flex items-center gap-1.5 cursor-pointer shadow-md shadow-primary/10",children:[n.jsx(af,{className:"h-4 w-4"})," Speichern"]})]})]}),n.jsxs("div",{className:"flex flex-col md:flex-row items-stretch md:items-center gap-3",children:[n.jsxs("div",{className:"relative flex-1",children:[n.jsx("input",{value:f,onChange:T=>m(T.target.value),placeholder:"Gedächtnis durchsuchen...",className:"w-full h-9 pl-9 pr-3 rounded-lg border border-border/60 bg-card/45 text-xs outline-none focus:ring-1 focus:ring-primary/50 text-foreground"}),n.jsx(_i,{className:"absolute left-3 top-2.5 h-3.5 w-3.5 text-muted-foreground"})]}),n.jsxs("div",{className:"flex flex-wrap items-center gap-1.5 p-1 bg-card/30 border border-border/40 rounded-xl overflow-x-auto max-w-full",children:[n.jsx("button",{onClick:()=>c(""),className:ee("h-7 px-3 rounded-lg text-[10px] font-semibold uppercase tracking-wider transition-all cursor-pointer whitespace-nowrap",a?"text-muted-foreground hover:text-foreground":"bg-primary text-primary-foreground"),children:"Alle"}),Xu.map(T=>{const F=fi[T]||ef,ne=F.icon;return n.jsxs("button",{onClick:()=>c(T),className:ee("h-7 px-2.5 rounded-lg text-[10px] font-semibold uppercase tracking-wider transition-all cursor-pointer flex items-center gap-1 whitespace-nowrap",a===T?"bg-primary text-primary-foreground":"text-muted-foreground hover:text-foreground"),children:[n.jsx(ne,{className:"h-3 w-3"}),n.jsx("span",{children:F.label})]},T)})]})]}),k&&n.jsxs("div",{className:"rounded-xl border border-red-500/20 bg-red-500/5 p-4 text-xs text-red-400",children:["Fehler beim Laden des Gedächtnisses: ",k]}),n.jsx("div",{className:"space-y-3",children:o.length===0?n.jsx("div",{className:"text-xs text-muted-foreground border border-dashed border-border/60 rounded-2xl p-12 text-center",children:"Keine Einträge für die aktuellen Filterkriterien gefunden."}):o.map(T=>{const F=fi[T.category]||ef,ne=F.icon;return n.jsxs("div",{className:ee("flex items-start justify-between gap-4 p-4 rounded-xl border border-l-4 bg-card/45 backdrop-blur-md border-border/60 shadow-md shadow-black/5 hover:border-primary/20 transition-all group",P0[T.category]||"border-l-muted"),children:[n.jsxs("div",{className:"flex items-start gap-3 flex-1 min-w-0",children:[n.jsxs("span",{className:ee("flex items-center gap-1 px-2 py-0.5 rounded text-[9px] font-bold uppercase tracking-wider font-mono shrink-0",F.bg,F.text),children:[n.jsx(ne,{className:"h-3 w-3"}),n.jsx("span",{className:"hidden sm:inline",children:F.label})]}),n.jsx("span",{className:"text-xs text-foreground leading-relaxed break-words whitespace-pre-wrap flex-1",children:T.content})]}),n.jsxs("div",{className:"flex items-center gap-3 shrink-0",children:[n.jsx("span",{className:"text-[9px] font-mono text-muted-foreground/60 bg-background/20 px-1.5 py-0.5 rounded uppercase tracking-wider",children:T.source}),n.jsx("button",{onClick:()=>Z(T.id),className:"h-7 w-7 rounded-lg flex items-center justify-center border border-border/40 text-muted-foreground hover:text-red-400 hover:bg-red-500/5 transition-all opacity-0 group-hover:opacity-100",title:"Eintrag löschen",children:n.jsx(vi,{className:"h-3.5 w-3.5"})})]})]},T.id)})}),O&&n.jsx(Qr,{type:O.type,title:O.title,message:O.message,onConfirm:O.onConfirm,onCancel:O.onCancel})]})}function Zo({label:o,ok:d,detail:a,icon:c,onClick:f}){return n.jsxs("div",{onClick:f,className:ee("rounded-2xl border bg-card/45 backdrop-blur-md p-5 shadow-lg shadow-black/10 flex flex-col justify-between gap-3 hover:border-primary/40 transition-all duration-300",d?"border-border/60":"border-amber-500/30",f&&"cursor-pointer hover:bg-card/70"),children:[n.jsxs("div",{className:"flex items-center justify-between",children:[n.jsx("span",{className:"text-[10px] font-bold uppercase tracking-wider text-muted-foreground",children:o}),n.jsx(c,{className:ee("h-4.5 w-4.5",d?"text-primary":"text-amber-500")})]}),n.jsxs("div",{className:"space-y-1.5",children:[n.jsxs("div",{className:"flex items-center gap-2",children:[n.jsx("span",{className:ee("h-2 w-2 rounded-full ring-2 ring-black/40",d?"bg-emerald-500 animate-pulse":"bg-amber-500")}),n.jsx("span",{className:"text-xs font-semibold text-foreground",children:d?"Bereit / Online":"Offline / Inaktiv"})]}),a&&n.jsx("div",{className:"text-[10px] font-mono text-muted-foreground truncate max-w-[200px]",title:a,children:a})]}),f&&n.jsxs("button",{onClick:m=>{m.stopPropagation(),f()},className:"mt-2 flex items-center justify-center gap-1.5 w-full py-1.5 px-3 rounded-lg border border-primary/30 bg-primary/10 hover:bg-primary/20 text-primary text-[10px] font-bold uppercase tracking-wider transition-all cursor-pointer font-space",children:[n.jsx(gt,{className:"h-3.5 w-3.5"}),n.jsx("span",{children:"Gehirn wechseln"})]})]})}function z0(){const[o,d]=p.useState(null),[a,c]=p.useState(""),[f,m]=p.useState(null),[h,x]=p.useState(!1),[E,b]=p.useState([]),[k,P]=p.useState(null);function A(F,ne,se){P({type:"alert",title:F,message:ne,onConfirm:se})}const[I,O]=p.useState({width:800,height:360}),S=p.useRef(null),C=p.useCallback(F=>{if(S.current&&(S.current.disconnect(),S.current=null),F){const ne=new ResizeObserver(se=>{if(!se||se.length===0)return;const X=se[0].contentRect;O({width:X.width,height:X.height})});ne.observe(F),S.current=ne}},[]),_=I.width,L=I.height,q=(F,ne,se,X)=>{const ye=(F+se)/2;return`M ${F} ${ne} C ${ye} ${ne}, ${ye} ${X}, ${se} ${X}`};function Z(){fe("/api/agent/status").then(d).catch(F=>c(String(F)))}function H(){fe("/api/models").then(F=>{const ne=F.models.map(se=>{var X;return((X=se.name.split("/").pop())==null?void 0:X.replace(".gguf",""))||se.name});b(["auto","fast","heavy",...ne])}).catch(F=>console.error("Error loading models",F))}async function T(F){try{await fe("/api/agent/brain",{method:"POST",body:JSON.stringify({model:F})}),A("Erfolgreich",`Hermes-Gehirn wurde auf '${F}' geändert. Der Gateway-Dienst wurde neu gestartet.`),Z(),x(!1)}catch(ne){A("Fehler",`Fehler beim Wechseln des Gehirns: ${ne.message}`)}}return p.useEffect(()=>{Z(),H();const F=setInterval(Z,5e3);return()=>clearInterval(F)},[]),n.jsxs("div",{className:"space-y-6",children:[n.jsx("style",{children:` @keyframes flow-dash { to { stroke-dashoffset: -20; } } .svg-flow-path { stroke-dasharray: 4 6; animation: flow-dash 1s linear infinite; } `}),n.jsxs("div",{className:"flex flex-col sm:flex-row justify-between sm:items-center gap-4",children:[n.jsxs("div",{children:[n.jsx("h1",{className:"text-2xl font-space font-bold tracking-tight bg-gradient-to-r from-foreground via-foreground to-primary bg-clip-text text-transparent",children:"Hermes Agenten-Cockpit"}),n.jsxs("p",{className:"text-sm text-muted-foreground",children:["Hermes ist ein autonomer Agent, der im Hintergrund der Box läuft (Port ",n.jsx("code",{children:":8642"}),") und seine eigene UI besitzt."]})]}),(o==null?void 0:o.webui_url)&&n.jsxs("a",{href:Ps(o.webui_url),target:"_blank",rel:"noopener",className:ee("flex h-9 px-4 items-center gap-1.5 text-xs font-semibold rounded-lg transition-all cursor-pointer shadow-md shrink-0 self-start",o.webui_reachable?"bg-primary text-primary-foreground hover:opacity-90 shadow-primary/10":"border border-border/60 text-muted-foreground bg-background/20"),children:[n.jsx(el,{className:"h-4 w-4"}),n.jsx("span",{children:"Hermes WebUI öffnen"})]})]}),a&&n.jsxs("div",{className:"rounded-xl border border-red-500/20 bg-red-500/5 p-4 text-xs text-red-400 font-mono",children:["Status nicht lesbar (",a,")."]}),o&&n.jsxs("div",{className:"space-y-6",children:[n.jsxs("div",{className:"grid gap-4 sm:grid-cols-2 lg:grid-cols-4",children:[n.jsx(Zo,{label:"Agent Gateway",ok:o.gateway_reachable,detail:"Port :8642 (REST API)",icon:Ss}),n.jsx(Zo,{label:"Agent WebUI",ok:o.webui_reachable,detail:"Port :8787 (Chat UI)",icon:Xo}),n.jsx(Zo,{label:"Aktives Gehirn",ok:o.gateway_reachable,detail:o.brain_model?`Model: ${o.brain_model}`:"Model: auto",icon:gt,onClick:()=>x(!0)}),n.jsx(Zo,{label:"Verdrahtung",ok:o.has_config,detail:`Config: ${o.has_config?"✓":"—"} · Skills: ${o.has_skills?"✓":"—"} · Memory: ${o.has_memories?"✓":"—"}`,icon:rl})]}),n.jsxs("div",{className:"rounded-2xl border border-border/60 bg-card/45 backdrop-blur-md p-6 shadow-lg shadow-black/10 space-y-4",children:[n.jsxs("div",{children:[n.jsx("span",{className:"text-xs font-bold uppercase tracking-wider text-foreground",children:"Interactive Agent Flow Graph"}),n.jsx("p",{className:"text-[10px] text-muted-foreground mt-0.5 leading-relaxed",children:"Visualisiert das Zusammenspiel und die Verbindungspfade zwischen den Hermes-Systemkomponenten."})]}),n.jsxs("div",{ref:C,className:"relative w-full h-96 border border-border/30 rounded-xl bg-black/25 overflow-hidden flex",children:[n.jsxs("svg",{className:"absolute inset-0 pointer-events-none w-full h-full",children:[n.jsxs("defs",{children:[n.jsxs("linearGradient",{id:"cyan-to-teal",x1:"0%",y1:"0%",x2:"100%",y2:"0%",children:[n.jsx("stop",{offset:"0%",stopColor:"#06b6d4",stopOpacity:"0.45"}),n.jsx("stop",{offset:"100%",stopColor:"#0d9488",stopOpacity:"0.45"})]}),n.jsxs("linearGradient",{id:"active-glow",x1:"0%",y1:"0%",x2:"100%",y2:"0%",children:[n.jsx("stop",{offset:"0%",stopColor:"#3b82f6",stopOpacity:"0.8"}),n.jsx("stop",{offset:"100%",stopColor:"#10b981",stopOpacity:"0.8"})]})]}),n.jsx("path",{d:q(_*.15,L*.5,_*.5,L*.5),stroke:"url(#cyan-to-teal)",strokeWidth:"1.5",fill:"none"}),(f==="webui"||o.webui_reachable)&&n.jsx("path",{d:q(_*.15,L*.5,_*.5,L*.5),stroke:"#06b6d4",strokeWidth:"2.5",fill:"none",className:"svg-flow-path"}),n.jsx("path",{d:q(_*.5,L*.5,_*.85,L*.3),stroke:"url(#cyan-to-teal)",strokeWidth:"1.5",fill:"none"}),(f==="gateway"||f==="brain"||o.gateway_reachable)&&n.jsx("path",{d:q(_*.5,L*.5,_*.85,L*.3),stroke:"url(#active-glow)",strokeWidth:"2.5",fill:"none",className:"svg-flow-path"}),n.jsx("path",{d:q(_*.5,L*.5,_*.85,L*.7),stroke:"url(#cyan-to-teal)",strokeWidth:"1.5",fill:"none"}),(f==="gateway"||f==="wiring"||o.gateway_reachable)&&n.jsx("path",{d:q(_*.5,L*.5,_*.85,L*.7),stroke:"url(#active-glow)",strokeWidth:"2.5",fill:"none",className:"svg-flow-path"})]}),n.jsxs("div",{className:"absolute cursor-pointer select-none z-10 w-36 h-9 -translate-y-1/2 -translate-x-1/2 rounded-xl border border-border/60 bg-card/75 backdrop-blur-md flex items-center justify-center gap-1.5 px-2.5 hover:border-primary transition-all text-[10px] font-semibold text-foreground shadow shadow-black/20",style:{left:"15%",top:"50%"},onMouseEnter:()=>m("webui"),onMouseLeave:()=>m(null),onClick:()=>o.webui_reachable&&window.open(Ps(o.webui_url),"_blank"),title:o.webui_reachable?"Klicken um Chat-WebUI zu öffnen":"WebUI Offline",children:[n.jsx(Xo,{className:ee("h-3.5 w-3.5",o.webui_reachable?"text-emerald-400":"text-amber-500")}),n.jsx("span",{children:"Agent WebUI"}),n.jsx("span",{className:ee("w-1.5 h-1.5 rounded-full animate-pulse ml-auto",o.webui_reachable?"bg-emerald-500":"bg-amber-500")})]}),n.jsxs("div",{className:"absolute select-none z-10 w-40 py-2.5 px-3 -translate-y-1/2 -translate-x-1/2 rounded-2xl border border-primary/50 bg-card/90 backdrop-blur-md flex flex-col items-center justify-center text-center shadow-lg shadow-primary/5 cursor-pointer",style:{left:"50%",top:"50%"},onMouseEnter:()=>m("gateway"),onMouseLeave:()=>m(null),children:[n.jsxs("div",{className:"flex items-center gap-1",children:[n.jsx(Ss,{className:"h-3.5 w-3.5 text-primary"}),n.jsx("span",{className:"text-[10px] uppercase font-bold text-primary font-space tracking-wide",children:"Agent Gateway"})]}),n.jsx("div",{className:"text-[9px] font-mono text-muted-foreground mt-0.5",children:"Port :8642"}),n.jsx("div",{className:ee("mt-1 px-1.5 py-0.5 rounded text-[8px] font-semibold uppercase font-mono border",o.gateway_reachable?"bg-emerald-500/10 border-emerald-500/20 text-emerald-400":"bg-red-500/10 border-red-500/20 text-red-400"),children:o.gateway_reachable?"Online":"Offline"})]}),n.jsxs("div",{className:ee("absolute z-20 w-44 py-1.5 px-3 -translate-y-1/2 -translate-x-1/2 rounded-xl border flex flex-col justify-center hover:border-primary/50 transition-all text-left shadow select-none cursor-pointer",o.gateway_reachable?"border-emerald-500/50 bg-emerald-500/5 shadow-emerald-500/5":"border-border/60 bg-card/75"),style:{left:"85%",top:"30%"},onMouseEnter:()=>m("brain"),onMouseLeave:()=>m(null),onClick:()=>x(!0),children:[n.jsxs("div",{className:"flex items-center justify-between",children:[n.jsxs("div",{className:"flex items-center gap-1 text-muted-foreground",children:[n.jsx(gt,{className:"h-3 w-3 text-primary"}),n.jsx("span",{className:"text-[10px] font-bold uppercase tracking-wider",children:"Aktives Gehirn"})]}),o.gateway_reachable&&n.jsx("span",{className:"h-1.5 w-1.5 rounded-full bg-emerald-400 animate-pulse"})]}),n.jsx("div",{className:"text-[10px] font-mono font-medium truncate mt-0.5 text-foreground font-space",title:o.brain_model,children:o.brain_model||"auto"})]}),n.jsxs("div",{className:ee("absolute z-10 w-44 py-1.5 px-3 -translate-y-1/2 -translate-x-1/2 rounded-xl border flex flex-col justify-center hover:border-primary/50 transition-all text-left shadow select-none",o.has_config?"border-emerald-500/50 bg-emerald-500/5 shadow-emerald-500/5":"border-border/60 bg-card/75"),style:{left:"85%",top:"70%"},onMouseEnter:()=>m("wiring"),onMouseLeave:()=>m(null),children:[n.jsxs("div",{className:"flex items-center justify-between",children:[n.jsxs("div",{className:"flex items-center gap-1 text-muted-foreground",children:[n.jsx(rl,{className:"h-3 w-3 text-primary"}),n.jsx("span",{className:"text-[10px] font-bold uppercase tracking-wider",children:"Verdrahtung"})]}),o.has_config&&n.jsx("span",{className:"h-1.5 w-1.5 rounded-full bg-emerald-400 animate-pulse"})]}),n.jsxs("div",{className:"text-[9px] font-mono mt-0.5 text-muted-foreground flex gap-1 justify-between",children:[n.jsxs("span",{children:["Config: ",o.has_config?"✓":"—"]}),n.jsxs("span",{children:["Skills: ",o.has_skills?"✓":"—"]}),n.jsxs("span",{children:["Memory: ",o.has_memories?"✓":"—"]})]})]})]}),n.jsxs("div",{className:"flex flex-wrap items-center gap-6 mt-3 text-[10px] text-muted-foreground border-t border-border/20 pt-3",children:[n.jsxs("span",{className:"flex items-center gap-1.5",children:[n.jsx("span",{className:"h-2 w-2 rounded-full bg-cyan-400"}),n.jsx("span",{children:"Cyan-Fluss: Client-Anfrage an Agenten"})]}),n.jsxs("span",{className:"flex items-center gap-1.5",children:[n.jsx("span",{className:"h-2 w-2 rounded-full bg-emerald-500 animate-pulse"}),n.jsx("span",{children:"Grüner Puls: Verbindung hergestellt / Modul online"})]})]})]}),n.jsxs("div",{className:"rounded-2xl border border-border/60 bg-card/45 backdrop-blur-md p-6 space-y-4 shadow-lg shadow-black/10",children:[n.jsxs("div",{className:"flex items-center gap-2",children:[n.jsx(Wr,{className:"h-5 w-5 text-primary"}),n.jsx("h3",{className:"text-sm font-bold uppercase tracking-wider text-foreground",children:"SSH-Kopplung & Sandbox-Umgehung"})]}),n.jsxs("div",{className:"grid gap-6 md:grid-cols-2 text-xs text-muted-foreground leading-relaxed text-left",children:[n.jsxs("div",{className:"space-y-3",children:[n.jsx("h4",{className:"text-xs font-bold text-foreground",children:"1. Warum verweigert Hermes Aktionen auf dem PC?"}),n.jsx("p",{children:"Hermes ist standardmäßig so ausgerichtet, dass er sich als virtueller Assistent ohne Systemzugriff versteht. Um dies zu umgehen, musst du Hermes' **System-Prompt** in der Chat-WebUI anpassen."}),n.jsxs("div",{className:"p-3 bg-background/25 rounded-xl border border-border/30 font-mono text-[9px] text-cyan-300",children:[n.jsx("span",{className:"text-muted-foreground/60",children:"Beispiel System-Prompt Erweiterung:"}),n.jsx("br",{}),'"Du hast über das terminal-Tool vollen SSH-Zugriff auf den Windows-PC des Users (TobisPC). Nutze SSH-Befehle um Aktionen dort auszuführen, wenn danach gefragt wird. Behaupte nie, du könntest das nicht!"']})]}),n.jsxs("div",{className:"space-y-3",children:[n.jsx("h4",{className:"text-xs font-bold text-foreground",children:"2. SSH-Verbindung zum lokalen Windows-PC einrichten"}),n.jsx("p",{children:"Damit der Agent Befehle auf deinem PC ausführen kann, muss OpenSSH auf Windows aktiv und mit einem Key gekoppelt sein:"}),n.jsxs("ul",{className:"list-disc pl-4 space-y-1.5 text-[11px]",children:[n.jsxs("li",{children:[n.jsx("strong",{children:"OpenSSH Server auf Windows starten:"})," In PowerShell als Admin ausführen: ",n.jsx("code",{className:"text-foreground font-mono",children:"Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0"})]}),n.jsxs("li",{children:[n.jsx("strong",{children:"SSH-Key auf der Box erzeugen:"})," ",n.jsx("code",{className:"text-foreground font-mono",children:"ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_hermes_agent"})]}),n.jsxs("li",{children:[n.jsx("strong",{children:"Key autorisieren:"})," Kopiere den Inhalt von ",n.jsx("code",{className:"text-foreground font-mono",children:"~/.ssh/id_ed25519_hermes_agent.pub"})," in deine Windows-Datei ",n.jsx("code",{className:"text-foreground font-mono",children:"C:\\Users\\TobisPC\\.ssh\\authorized_keys"})]})]})]})]})]}),!o.gateway_reachable&&n.jsxs("div",{className:"rounded-2xl border border-border/60 bg-card/45 backdrop-blur-md p-6 space-y-4 shadow-lg shadow-black/10 text-left",children:[n.jsxs("div",{className:"flex items-center gap-2",children:[n.jsx(Wr,{className:"h-5 w-5 text-amber-500"}),n.jsx("h3",{className:"text-sm font-bold uppercase tracking-wider text-foreground",children:"Hermes-Agent Diagnostics"})]}),n.jsxs("div",{className:"text-xs text-muted-foreground space-y-3 leading-relaxed",children:[n.jsx("p",{children:"Der Hermes-Dienst ist auf der Box derzeit offline oder kann sich nicht mit dem lokalen llama-swap verbinden."}),n.jsxs("p",{children:["Stelle sicher, dass die systemd-Dienste auf der Box laufen. Du kannst den Status im ",n.jsx("strong",{children:"OS & Updates Drawer"})," prüfen und die Dienste bei Bedarf neu starten."]}),n.jsxs("div",{className:"p-3.5 bg-background/25 rounded-xl border border-border/30 font-mono text-[10px] space-y-1",children:[n.jsx("div",{className:"text-muted-foreground/60",children:"# Dienste manuell auf der Box prüfen:"}),n.jsx("div",{className:"text-primary",children:"systemctl --user status hermes-gateway"}),n.jsx("div",{className:"text-primary",children:"systemctl --user status hermes-webui"})]}),n.jsxs("p",{children:["Weitere Einrichtungsdetails (Brain-Konfiguration, MCP-Kopplungen, SSH-Tunneling und Such-Engines) findest du in der Dokumentationsdatei:",n.jsx("code",{className:"ml-1 px-1.5 py-0.5 rounded bg-muted/40 text-foreground border border-border/30",children:"docs/HERMES_SETUP.md"}),"."]})]})]})]}),o&&h&&n.jsx("div",{className:"fixed inset-0 z-50 bg-black/60 backdrop-blur-sm flex items-center justify-center p-4",children:n.jsxs("div",{className:"w-full max-w-md rounded-2xl border border-border/80 bg-card p-6 shadow-2xl space-y-4 animate-in fade-in zoom-in-95 duration-200",children:[n.jsxs("div",{className:"flex items-center justify-between border-b border-border/20 pb-2",children:[n.jsxs("h3",{className:"text-xs font-bold uppercase tracking-wider text-primary flex items-center gap-1.5",children:[n.jsx(gt,{className:"h-4 w-4"}),n.jsx("span",{children:"Hermes-Gehirn konfigurieren"})]}),n.jsx("button",{onClick:()=>x(!1),className:"p-1 rounded hover:bg-accent text-muted-foreground hover:text-foreground cursor-pointer",children:n.jsx(Hr,{className:"h-4 w-4"})})]}),n.jsxs("p",{className:"text-xs text-muted-foreground leading-relaxed",children:['Das „Gehirn" ist das primäre LLM für Hermes. Wähle ein Modell aus deiner Bibliothek oder nutze ein Gateway-Alias (',n.jsx("code",{className:"text-primary font-semibold",children:"auto"})," / ",n.jsx("code",{className:"text-primary font-semibold",children:"fast"})," / ",n.jsx("code",{className:"text-primary font-semibold",children:"heavy"}),"):"]}),n.jsx("div",{className:"space-y-1.5 max-h-60 overflow-y-auto pr-1",children:E.map(F=>{const ne=["auto","fast","heavy"].includes(F);return n.jsxs("button",{onClick:()=>T(F),className:ee("w-full text-left px-3 py-2.5 rounded-lg text-xs hover:bg-accent flex items-center justify-between font-mono cursor-pointer border border-border/30",o.brain_model===F||!o.brain_model&&F==="auto"?"text-primary font-bold bg-primary/10 border-primary/30":"text-foreground bg-background/20"),children:[n.jsxs("div",{className:"flex flex-col text-left",children:[n.jsx("span",{className:"font-semibold truncate max-w-[280px]",children:F}),n.jsx("span",{className:"text-[9px] text-muted-foreground mt-0.5",children:ne?"Gateway Routing Alias":"Installiertes GGUF Modell"})]}),(o.brain_model===F||!o.brain_model&&F==="auto")&&n.jsx(zn,{className:"h-4 w-4 shrink-0 text-primary"})]},F)})})]})}),k&&n.jsx(Qr,{type:k.type,title:k.title,message:k.message,onConfirm:()=>k.onConfirm&&k.onConfirm(),onCancel:k.onCancel})]})}function D0(){const[o,d]=p.useState("connect"),[a,c]=p.useState("roocode"),[f,m]=p.useState(null),h="192.168.178.151",[x,E]=p.useState(!1),[b,k]=p.useState(null);function P(){E(!0),fe("/api/health").then(A=>{m(A),k(A.engine_reachable?"success":"partial")}).catch(()=>{m(null),k("fail")}).finally(()=>E(!1))}return p.useEffect(()=>{P()},[]),n.jsxs("div",{className:"space-y-6",children:[n.jsxs("div",{children:[n.jsx("h1",{className:"text-2xl font-space font-bold tracking-tight bg-gradient-to-r from-foreground via-foreground to-primary bg-clip-text text-transparent",children:"Stack-Anleitung & Vibe-Coding-Guide"}),n.jsx("p",{className:"text-sm text-muted-foreground",children:"Einsteigerfreundliche Erklärungen zu deinem Stack und Schritt-für-Schritt-Anleitungen zur Anbindung deiner Editoren."})]}),n.jsxs("div",{className:"flex gap-4 border-b border-border/40 pb-px",children:[n.jsx("button",{onClick:()=>d("connect"),className:ee("pb-3 text-xs font-bold uppercase tracking-wider border-b-2 px-1 transition-all",o==="connect"?"border-primary text-primary":"border-transparent text-muted-foreground hover:text-foreground"),children:"Editor-Anbindung"}),n.jsx("button",{onClick:()=>d("concepts"),className:ee("pb-3 text-xs font-bold uppercase tracking-wider border-b-2 px-1 transition-all",o==="concepts"?"border-primary text-primary":"border-transparent text-muted-foreground hover:text-foreground"),children:"KI-Wissensdatenbank (Juni 2026)"})]}),o==="connect"?n.jsxs(n.Fragment,{children:[n.jsxs("div",{className:"rounded-2xl border border-border/60 bg-card/45 backdrop-blur-md p-5 shadow-lg shadow-black/10 flex flex-col sm:flex-row justify-between sm:items-center gap-4",children:[n.jsxs("div",{className:"flex items-center gap-3",children:[n.jsx("span",{className:ee("h-3 w-3 rounded-full ring-2 ring-black/40",b==="success"&&"bg-emerald-500 animate-pulse",b==="partial"&&"bg-amber-500",b==="fail"&&"bg-red-500",!b&&"bg-muted")}),n.jsxs("div",{children:[n.jsx("div",{className:"text-xs font-bold uppercase tracking-wider text-foreground",children:"Lokaler Verbindungs-Check"}),n.jsxs("div",{className:"text-[10px] text-muted-foreground mt-0.5 font-mono",children:[b==="success"&&`Erfolgreich! Dein PC hat Zugriff auf das Box-Gateway (v${(f==null?void 0:f.version)||""}).`,b==="partial"&&"Gateway erreichbar, aber die llama-cpp-Engine ist offline.",b==="fail"&&"Verbindung fehlgeschlagen. Ist die Box im selben LAN-Netzwerk?",!b&&"Verbindung wird geprüft..."]})]})]}),n.jsxs("button",{onClick:P,disabled:x,className:"h-8 px-3 flex items-center gap-1.5 text-xs font-semibold rounded-lg border border-border/60 bg-background/20 hover:border-primary/50 transition-colors disabled:opacity-50 cursor-pointer self-start sm:self-auto shrink-0",children:[n.jsx(Br,{className:ee("h-3.5 w-3.5",x&&"animate-spin")}),n.jsx("span",{children:"Testen"})]})]}),n.jsxs("div",{className:"space-y-3",children:[n.jsxs("div",{className:"flex items-center gap-2 px-1",children:[n.jsx(of,{className:"h-4.5 w-4.5 text-primary"}),n.jsx("h2",{className:"text-xs font-bold uppercase tracking-wider text-foreground",children:"Wie funktioniert mein Stack?"})]}),n.jsxs("div",{className:"grid gap-4 sm:grid-cols-3",children:[n.jsxs("div",{className:"p-4 rounded-xl border border-border/60 bg-card/20 space-y-2",children:[n.jsxs("div",{className:"flex items-center gap-1.5",children:[n.jsx(gt,{className:"h-4 w-4 text-cyan-400"}),n.jsx("h3",{className:"text-xs font-bold text-foreground",children:"1. Die Zentrale"})]}),n.jsx("p",{className:"text-[11px] text-muted-foreground leading-relaxed",children:"Dein Dashboard. Hier siehst du die CPU-/RAM- und GPU-Last der Box und siehst sofort, ob Updates anstehen."})]}),n.jsxs("div",{className:"p-4 rounded-xl border border-border/60 bg-card/20 space-y-2",children:[n.jsxs("div",{className:"flex items-center gap-1.5",children:[n.jsx(Es,{className:"h-4 w-4 text-violet-400"}),n.jsx("h3",{className:"text-xs font-bold text-foreground",children:"2. Modell-Zentrale"})]}),n.jsxs("p",{className:"text-[11px] text-muted-foreground leading-relaxed",children:["Deine GGUF-Datenbank. Gesteuert von ",n.jsx("strong",{children:"llama-swap"}),". Lädt dein schnelles Alltags-Hirn (`fast`) oder dein schweres Logik-Hirn (`heavy`) vollautomatisch im VRAM."]})]}),n.jsxs("div",{className:"p-4 rounded-xl border border-border/60 bg-card/20 space-y-2",children:[n.jsxs("div",{className:"flex items-center gap-1.5",children:[n.jsx(Cs,{className:"h-4 w-4 text-indigo-400"}),n.jsx("h3",{className:"text-xs font-bold text-foreground",children:"3. Das Gedächtnis"})]}),n.jsx("p",{className:"text-[11px] text-muted-foreground leading-relaxed",children:"Dein geteiltes Langzeitgedächtnis (Memory-Pool). Hier merkt sich dein Agent Regeln, Projekt-Details und Vorlieben."})]})]})]}),n.jsxs("div",{className:"space-y-4",children:[n.jsxs("div",{className:"flex items-center gap-2 px-1",children:[n.jsx(mi,{className:"h-4.5 w-4.5 text-primary"}),n.jsx("h2",{className:"text-xs font-bold uppercase tracking-wider text-foreground",children:"Vibe Coding auf dem PC einrichten"})]}),n.jsxs("div",{className:"flex gap-1.5 bg-card/20 p-1 border border-border/40 rounded-xl max-w-fit",children:[n.jsxs("button",{onClick:()=>c("roocode"),className:ee("rounded-lg px-4 py-1.5 text-xs font-semibold tracking-wide uppercase transition-all cursor-pointer flex items-center gap-1.5",a==="roocode"?"bg-primary text-primary-foreground shadow-md shadow-primary/10":"text-muted-foreground hover:text-foreground"),children:[n.jsx(cf,{className:"h-3.5 w-3.5 fill-amber-400/20"}),"Roo Code (VS Code)"]}),n.jsx("button",{onClick:()=>c("cursor"),className:ee("rounded-lg px-4 py-1.5 text-xs font-semibold tracking-wide uppercase transition-all cursor-pointer",a==="cursor"?"bg-primary text-primary-foreground shadow-md shadow-primary/10":"text-muted-foreground hover:text-foreground"),children:"Cursor IDE"}),n.jsx("button",{onClick:()=>c("opencode"),className:ee("rounded-lg px-4 py-1.5 text-xs font-semibold tracking-wide uppercase transition-all cursor-pointer",a==="opencode"?"bg-primary text-primary-foreground shadow-md shadow-primary/10":"text-muted-foreground hover:text-foreground"),children:"OpenCode Desktop"})]}),n.jsxs("div",{className:"rounded-2xl border border-border/60 bg-card/45 backdrop-blur-md p-6 space-y-4 shadow-lg shadow-black/10",children:[a==="roocode"&&n.jsxs("div",{className:"space-y-4 text-xs leading-relaxed text-muted-foreground",children:[n.jsxs("div",{className:"space-y-1",children:[n.jsx("h3",{className:"text-sm font-bold text-foreground",children:"Roo Code Kopplung (Empfohlene Open-Source-Erweiterung)"}),n.jsx("p",{children:"Roo Code ist die beliebteste und flexibelste Vibe-Coding-Erweiterung für VS Code im Jahr 2026. Sie ermöglicht vollen Zugriff auf das Terminal und das MCP-Gedächtnis."})]}),n.jsxs("div",{className:"space-y-3.5 border-t border-border/20 pt-4",children:[n.jsxs("div",{className:"space-y-1",children:[n.jsxs("div",{className:"font-semibold text-foreground flex items-center gap-1.5",children:[n.jsx("span",{className:"h-4.5 w-4.5 rounded-full bg-primary/20 text-primary flex items-center justify-center font-mono text-[10px]",children:"1"}),"Roo Code installieren"]}),n.jsxs("p",{className:"pl-6",children:["Suche in VS Code nach der Erweiterung ",n.jsx("strong",{children:"Roo Code"})," und installiere sie."]})]}),n.jsxs("div",{className:"space-y-1",children:[n.jsxs("div",{className:"font-semibold text-foreground flex items-center gap-1.5",children:[n.jsx("span",{className:"h-4.5 w-4.5 rounded-full bg-primary/20 text-primary flex items-center justify-center font-mono text-[10px]",children:"2"}),"API-Anbindung konfigurieren"]}),n.jsx("p",{className:"pl-6",children:"Klicke auf das Roo-Code-Symbol in der Sidebar, öffne die Einstellungen (Zahnrad) und stelle folgendes ein:"}),n.jsx("div",{className:"pl-6 pt-1",children:n.jsxs("div",{className:"p-3 bg-background/25 rounded-xl border border-border/30 font-mono text-[10px] space-y-1 text-foreground",children:[n.jsxs("div",{children:[n.jsx("span",{className:"text-muted-foreground/60",children:"API Provider:"})," OpenAI Compatible"]}),n.jsxs("div",{children:[n.jsx("span",{className:"text-muted-foreground/60",children:"Base URL:"})," http://",h,":9001/v1"]}),n.jsxs("div",{children:[n.jsx("span",{className:"text-muted-foreground/60",children:"API Key:"})," ",n.jsx("span",{className:"italic text-muted-foreground/50",children:'beliebig (z.B. "local")'})]}),n.jsxs("div",{children:[n.jsx("span",{className:"text-muted-foreground/60",children:"Model ID:"})," auto"]})]})})]}),n.jsxs("div",{className:"space-y-1",children:[n.jsxs("div",{className:"font-semibold text-foreground flex items-center gap-1.5",children:[n.jsx("span",{className:"h-4.5 w-4.5 rounded-full bg-primary/20 text-primary flex items-center justify-center font-mono text-[10px]",children:"3"}),"MCP Gedächtnis verknüpfen (Optional, aber empfohlen)"]}),n.jsxs("p",{className:"pl-6",children:["Damit Roo Code auf deinen ",n.jsx("strong",{children:"Gedächtnis-Pool"})," zugreifen kann, kopiere die MCP-Konfiguration aus dem Reiter ",n.jsx("strong",{children:"Verbinden"})," und füge sie in deine lokale Roo-Code-Konfigurationsdatei ein."]})]})]})]}),a==="cursor"&&n.jsxs("div",{className:"space-y-4 text-xs leading-relaxed text-muted-foreground",children:[n.jsxs("div",{className:"space-y-1",children:[n.jsx("h3",{className:"text-sm font-bold text-foreground",children:"Cursor IDE Kopplung (Proprietäre All-in-One IDE)"}),n.jsx("p",{children:"Cursor ist ein polierter, extrem schneller VS-Code-Fork mit hervorragenden, tief integrierten Autovervollständigungen (Tab-Completions)."})]}),n.jsxs("div",{className:"space-y-3.5 border-t border-border/20 pt-4",children:[n.jsxs("div",{className:"space-y-1",children:[n.jsxs("div",{className:"font-semibold text-foreground flex items-center gap-1.5",children:[n.jsx("span",{className:"h-4.5 w-4.5 rounded-full bg-primary/20 text-primary flex items-center justify-center font-mono text-[10px]",children:"1"}),"Einstellungen öffnen"]}),n.jsxs("p",{className:"pl-6",children:["Öffne Cursor, klicke oben rechts auf das Zahnrad (Settings) und navigiere zu ",n.jsx("strong",{children:"Models"}),"."]})]}),n.jsxs("div",{className:"space-y-1",children:[n.jsxs("div",{className:"font-semibold text-foreground flex items-center gap-1.5",children:[n.jsx("span",{className:"h-4.5 w-4.5 rounded-full bg-primary/20 text-primary flex items-center justify-center font-mono text-[10px]",children:"2"}),"OpenAI API überschreiben"]}),n.jsxs("p",{className:"pl-6",children:["Deaktiviere die Standard-Cloudmodelle, klappe den Bereich ",n.jsx("strong",{children:"OpenAI API"})," auf und konfiguriere:"]}),n.jsx("div",{className:"pl-6 pt-1",children:n.jsxs("div",{className:"p-3 bg-background/25 rounded-xl border border-border/30 font-mono text-[10px] space-y-1 text-foreground",children:[n.jsxs("div",{children:[n.jsx("span",{className:"text-muted-foreground/60",children:"Override Base URL:"})," http://",h,":9001/v1"]}),n.jsxs("div",{children:[n.jsx("span",{className:"text-muted-foreground/60",children:"API Key:"})," ",n.jsx("span",{className:"italic text-muted-foreground/50",children:'beliebig (z.B. "local")'})]})]})})]}),n.jsxs("div",{className:"space-y-1",children:[n.jsxs("div",{className:"font-semibold text-foreground flex items-center gap-1.5",children:[n.jsx("span",{className:"h-4.5 w-4.5 rounded-full bg-primary/20 text-primary flex items-center justify-center font-mono text-[10px]",children:"3"}),"Modell hinzufügen"]}),n.jsxs("p",{className:"pl-6",children:["Trage in der Modell-Liste ein neues Modell mit dem Namen ",n.jsx("strong",{children:"auto"})," ein und wähle es als aktives Modell aus. Cursor leitet ab jetzt alle deine Anfragen an die Box weiter."]})]})]})]}),a==="opencode"&&n.jsxs("div",{className:"space-y-4 text-xs leading-relaxed text-muted-foreground",children:[n.jsxs("div",{className:"space-y-1",children:[n.jsx("h3",{className:"text-sm font-bold text-foreground",children:"OpenCode Desktop Kopplung (Open-Source Vibe-Coding-App)"}),n.jsx("p",{children:"OpenCode ist eine standalone Desktop-App für ein ablenkungsfreies Coden über natürliche Sprache. Es trennt den KI-Prozess von deinem Editor."})]}),n.jsxs("div",{className:"space-y-3.5 border-t border-border/20 pt-4",children:[n.jsxs("div",{className:"space-y-1",children:[n.jsxs("div",{className:"font-semibold text-foreground flex items-center gap-1.5",children:[n.jsx("span",{className:"h-4.5 w-4.5 rounded-full bg-primary/20 text-primary flex items-center justify-center font-mono text-[10px]",children:"1"}),"OpenCode Desktop herunterladen"]}),n.jsx("p",{className:"pl-6",children:"Lade die Desktop-Anwendung von der offiziellen Website (opencode.ai) herunter und starte sie."})]}),n.jsxs("div",{className:"space-y-1",children:[n.jsxs("div",{className:"font-semibold text-foreground flex items-center gap-1.5",children:[n.jsx("span",{className:"h-4.5 w-4.5 rounded-full bg-primary/20 text-primary flex items-center justify-center font-mono text-[10px]",children:"2"}),"Endpunkt auf Box-Gateway setzen"]}),n.jsx("p",{className:"pl-6",children:"Gehe in den Bereich Einstellungen ➔ Provider, deaktiviere die Cloud-Voreinstellungen und trage deinen lokalen Server ein:"}),n.jsx("div",{className:"pl-6 pt-1",children:n.jsxs("div",{className:"p-3 bg-background/25 rounded-xl border border-border/30 font-mono text-[10px] space-y-1 text-foreground",children:[n.jsxs("div",{children:[n.jsx("span",{className:"text-muted-foreground/60",children:"Base URL:"})," http://",h,":9001/v1"]}),n.jsxs("div",{children:[n.jsx("span",{className:"text-muted-foreground/60",children:"Model:"})," auto"]})]})})]}),n.jsxs("div",{className:"space-y-1",children:[n.jsxs("div",{className:"font-semibold text-foreground flex items-center gap-1.5",children:[n.jsx("span",{className:"h-4.5 w-4.5 rounded-full bg-primary/20 text-primary flex items-center justify-center font-mono text-[10px]",children:"3"}),"Erster Vibe-Coding Test"]}),n.jsx("p",{className:"pl-6",children:'Starte eine neue Session und teste die Verbindung mit einem einfachen Prompt, z. B. *"Erstelle ein einfaches Skript, das die Fibonaccizahlen berechnet"*. Das Box-Gateway tauscht das Modell im Hintergrund vollautomatisch aus.'})]})]})]})]})]}),n.jsxs("div",{className:"rounded-2xl border border-border/60 bg-card/45 backdrop-blur-md p-5 space-y-3 shadow-lg shadow-black/10",children:[n.jsxs("div",{className:"flex items-center gap-2",children:[n.jsx(tl,{className:"h-4.5 w-4.5 text-primary"}),n.jsx("h3",{className:"text-xs font-bold uppercase tracking-wider text-foreground",children:"Was tun, wenn das Coden hakt?"})]}),n.jsxs("ul",{className:"text-[11px] text-muted-foreground space-y-2 list-disc pl-4 leading-relaxed",children:[n.jsxs("li",{children:[n.jsx("strong",{children:"Keine Verbindung?"})," Überprüfe im Live-Verbindungsprüfer oben, ob die Box-IP erreichbar ist. Stelle sicher, dass dein lokaler PC im selben WLAN/LAN-Netzwerk wie die Box eingeloggt ist."]}),n.jsxs("li",{children:[n.jsx("strong",{children:"Modell antwortet nicht?"})," Schaue unter ",n.jsx("strong",{children:"Diagnose"}),", ob der Dienst `llama-swap` aktiv (grün) is. Wenn nicht, klicke daneben auf ",n.jsx("strong",{children:"Restart"}),"."]}),n.jsxs("li",{children:[n.jsx("strong",{children:"Hermes Agent reagiert merkwürdig?"})," Starte in der Hermes WebUI einfach eine frische Session (neuen Chat). Ältere Chats sammeln Kontext-Müll an."]})]})]})]}):n.jsxs("div",{className:"space-y-6",children:[n.jsxs("div",{className:"rounded-2xl border border-border/60 bg-card/45 backdrop-blur-md p-5 shadow-lg shadow-black/10 flex items-start gap-4",children:[n.jsx(hi,{className:"h-8 w-8 text-primary shrink-0 mt-0.5"}),n.jsxs("div",{className:"space-y-1",children:[n.jsx("h3",{className:"text-xs font-bold uppercase tracking-wider text-foreground",children:"Entwickler-Guide: Modernes Agentic Coding (2026)"}),n.jsx("p",{className:"text-xs text-muted-foreground leading-normal",children:"Willkommen im Wissenszentrum für dein Mission Control 2 Setup. Hier erfährst du, wie die verschiedenen Technologien (MoE, MCP, Skills, Hermes) zusammenarbeiten und wie du das Maximum aus deinen AI-Prozessabläufen herausholst."})]})]}),n.jsxs("div",{className:"grid gap-6 md:grid-cols-2",children:[n.jsxs("div",{className:"rounded-2xl border border-border/60 bg-card/45 p-6 shadow-lg shadow-black/10 space-y-4",children:[n.jsxs("div",{className:"flex items-center gap-2 border-b border-border/20 pb-3",children:[n.jsx(Es,{className:"h-5 w-5 text-cyan-400"}),n.jsxs("div",{children:[n.jsx("h3",{className:"text-xs font-bold uppercase tracking-wider text-foreground",children:"1. Mixture of Experts (MoE)"}),n.jsx("span",{className:"text-[9px] text-cyan-400 font-mono",children:"Effizienz durch Spezialisierung"})]})]}),n.jsxs("div",{className:"text-xs text-muted-foreground space-y-2 leading-normal",children:[n.jsxs("p",{children:[n.jsx("strong",{children:"Was ist das?"})," Bei traditionellen LLMs wird für jedes Wort das gesamte neuronale Netz aktiviert. Bei MoE besteht das Modell aus mehreren spezialisierten Teilnetzwerken (den ",n.jsx("em",{children:"Experts"}),"). Ein intelligenter ",n.jsx("em",{children:"Router"})," entscheidet pro Token (Wortteil), welche Experten zur Berechnung herangezogen werden."]}),n.jsxs("p",{children:[n.jsx("strong",{children:"Warum in MC2?"})," So können extrem leistungsstarke Modelle (wie DeepSeek-V3, Mixtral oder Command R+) mit wesentlich geringeren Hardwarekosten ausgeführt werden. Es wird nur ein Bruchteil der Parameter geladen und aktiv berechnet, was Speicherplatz spart und die Inferenz beschleunigt."]}),n.jsxs("div",{className:"p-3 bg-background/25 rounded-xl border border-border/30 font-mono text-[10px] text-foreground",children:[n.jsx("span",{className:"text-cyan-400",children:"Vorteil:"})," GPT-4-Klasse Performance bei einem Bruchteil der aktiven VRAM-Last auf deinem Homelab!"]})]})]}),n.jsxs("div",{className:"rounded-2xl border border-border/60 bg-card/45 p-6 shadow-lg shadow-black/10 space-y-4",children:[n.jsxs("div",{className:"flex items-center gap-2 border-b border-border/20 pb-3",children:[n.jsx(hi,{className:"h-5 w-5 text-violet-400"}),n.jsxs("div",{children:[n.jsx("h3",{className:"text-xs font-bold uppercase tracking-wider text-foreground",children:"2. Model Context Protocol (MCP)"}),n.jsx("span",{className:"text-[9px] text-violet-400 font-mono",children:"Standardisierte Agenten-Tools"})]})]}),n.jsxs("div",{className:"text-xs text-muted-foreground space-y-2 leading-normal",children:[n.jsxs("p",{children:[n.jsx("strong",{children:"Was ist das?"})," MCP ist ein offenes Protokoll (initiiert von Anthropic), das festlegt, wie ein KI-Client (z.B. Roo Code auf deinem PC) mit externen Datenquellen und Tools kommuniziert. Es funktioniert wie ein USB-Standard für KI."]}),n.jsxs("p",{children:[n.jsx("strong",{children:"Warum in MC2?"})," MCP trennt den AI-Kern von der Umgebung. Statt für jeden Editor eigene Tools zu schreiben, binden deine Agenten (Roo Code, Hermes) einfach MCP-Server an. Diese Server können Dateien lesen, Websuchen durchführen, Git bedienen oder mit deiner App interagieren."]}),n.jsxs("div",{className:"space-y-1.5 p-3 bg-background/25 rounded-xl border border-border/30 text-[10px]",children:[n.jsx("div",{className:"font-bold text-foreground",children:"Gute Quellen für MCP Server:"}),n.jsxs("ul",{className:"list-disc pl-4 space-y-1 text-muted-foreground",children:[n.jsxs("li",{children:[n.jsx("a",{href:"https://smithery.ai/",target:"_blank",rel:"noopener",className:"text-primary hover:underline font-semibold",children:"Smithery Registry"})," — Ein Portal zum Suchen und automatischen Installieren von MCP Servern."]}),n.jsxs("li",{children:[n.jsx("a",{href:"https://glama.ai/mcp/servers",target:"_blank",rel:"noopener",className:"text-primary hover:underline font-semibold",children:"Glama MCP Registry"})," — Eine kuratierte, umfangreiche Community-Datenbank von MCP Servern."]}),n.jsxs("li",{children:[n.jsx("a",{href:"https://github.com/modelcontextprotocol/servers",target:"_blank",rel:"noopener",className:"text-primary hover:underline font-semibold",children:"Offizielles Anthropic Repo"})," — Das offizielle Repository mit Standards wie filesystem, postgres, sqlite, brave-search und puppeteer."]})]})]})]})]}),n.jsxs("div",{className:"rounded-2xl border border-border/60 bg-card/45 p-6 shadow-lg shadow-black/10 space-y-4",children:[n.jsxs("div",{className:"flex items-center gap-2 border-b border-border/20 pb-3",children:[n.jsx(Cs,{className:"h-5 w-5 text-emerald-400"}),n.jsxs("div",{children:[n.jsx("h3",{className:"text-xs font-bold uppercase tracking-wider text-foreground",children:"3. Agent Skills"}),n.jsx("span",{className:"text-[9px] text-emerald-400 font-mono",children:"Modulbasierte Fähigkeiten"})]})]}),n.jsxs("div",{className:"text-xs text-muted-foreground space-y-2 leading-normal",children:[n.jsxs("p",{children:[n.jsx("strong",{children:"Was ist das?"})," Ein Skill ist ein Verzeichnis mit standardisierten Anweisungen, Scripten und Beispielen, das deine Agenten für spezifische Aufgaben trainiert (z.B. Test-Driven Development, Code-Vereinfachung, API-Design)."]}),n.jsxs("p",{children:[n.jsx("strong",{children:"Wie benutzt man sie?"})," Lege einen Skill-Ordner unter ",n.jsx("code",{children:".agents/skills/"})," in deinem Projekt an. Das Herzstück ist die Datei ",n.jsx("code",{children:"SKILL.md"})," mit folgendem Aufbau:"]}),n.jsx("pre",{className:"p-2.5 bg-background/25 rounded-lg border border-border/30 font-mono text-[9px] text-foreground overflow-x-auto whitespace-pre",children:`--- name: tdd-pro description: Drive development with strict TDD practices --- # Instructions ...`}),n.jsxs("div",{className:"space-y-1.5 p-3 bg-background/25 rounded-xl border border-border/30 text-[10px]",children:[n.jsx("div",{className:"font-bold text-foreground",children:"Wo gibt es Skills & wo liegen sie?"}),n.jsxs("ul",{className:"list-disc pl-4 space-y-2.5 text-muted-foreground",children:[n.jsxs("li",{children:[n.jsx("strong",{children:"skills.sh Registry & CLI:"})," Das offizielle offene Portal für Agent-Skills (",n.jsx("a",{href:"https://skills.sh/",target:"_blank",rel:"noopener",className:"text-primary hover:underline font-semibold",children:"skills.sh"}),"). Du kannst Skills direkt über das Terminal suchen und in deinem Projekt installieren:",n.jsxs("div",{className:"mt-1 font-mono text-[9px] bg-background/40 p-2 rounded border border-border/30 text-cyan-300",children:["# Nach Skills suchen:",n.jsx("br",{}),n.jsx("span",{className:"text-foreground",children:"npx skills find"}),n.jsx("br",{}),"# Skill zum aktuellen Projekt hinzufügen:",n.jsx("br",{}),n.jsx("span",{className:"text-foreground",children:"npx skills add [owner/repo]"})]})]}),n.jsxs("li",{children:[n.jsx("strong",{children:"Globaler Pfad:"})," ",n.jsx("code",{className:"text-foreground select-all",children:"C:\\Users\\TobisPC\\.gemini\\config\\plugins\\agent-skills\\skills\\"}),". Hier sind deine vorinstallierten, global verfügbaren Skills (wie ",n.jsx("i",{children:"code-simplification"}),", ",n.jsx("i",{children:"api-and-interface-design"}),", etc.) abgelegt."]}),n.jsxs("li",{children:[n.jsx("strong",{children:"Projekt-Pfad:"})," ",n.jsx("code",{className:"text-foreground select-all",children:".agents/skills/"}),". Lege diesen Ordner im Root eines beliebigen Projekts an. Dein lokaler Editor-Agent (z.B. Roo Code) liest ihn beim Starten automatisch ein."]}),n.jsxs("li",{children:[n.jsx("strong",{children:"Vorlagen / Beispiele:"})," Kopiere einfach bestehende Skills aus dem globalen Verzeichnis oder erstelle deine eigenen, indem du eine ",n.jsx("code",{children:"SKILL.md"})," mit YAML-Header (name, description) anlegst."]})]})]})]})]}),n.jsxs("div",{className:"rounded-2xl border border-border/60 bg-card/45 p-6 shadow-lg shadow-black/10 space-y-4",children:[n.jsxs("div",{className:"flex items-center gap-2 border-b border-border/20 pb-3",children:[n.jsx(gt,{className:"h-5 w-5 text-indigo-400"}),n.jsxs("div",{children:[n.jsx("h3",{className:"text-xs font-bold uppercase tracking-wider text-foreground",children:"4. Arbeiten mit Hermes"}),n.jsx("span",{className:"text-[9px] text-indigo-400 font-mono",children:"Autonomer Box-Agent"})]})]}),n.jsxs("div",{className:"text-xs text-muted-foreground space-y-2 leading-normal",children:[n.jsxs("p",{children:[n.jsx("strong",{children:"Was ist das?"})," Hermes ist der auf der Box installierte, autonome Hintergrund-Agent. Er verwaltet das Dateisystem und kann über REST (Port 8642) oder eine interaktive ChatUI (Port 8787) gesteuert werden."]}),n.jsx("p",{children:n.jsx("strong",{children:"Best Practices für Hermes:"})}),n.jsxs("ul",{className:"list-disc pl-4 space-y-1",children:[n.jsxs("li",{children:[n.jsx("strong",{children:"Chat-Kontext sauber halten:"})," Starte regelmäßig neue Chats. Zu große Historien verlangsamen den Agenten und führen zu Halluzinationen."]}),n.jsxs("li",{children:[n.jsx("strong",{children:"Gehirn festlegen:"})," Konfiguriere im Gateway die Modell-Rolle ",n.jsx("code",{children:"brain"})," für Hermes, damit er automatisch das passende Modell per Llama Swap lädt."]}),n.jsxs("li",{children:[n.jsx("strong",{children:"Sandbox umgehen:"})," Erweitere Hermes' System-Prompt (WebUI-Einstellungen), um Befehle über SSH an deinen Windows-PC zu leiten."]})]})]})]}),n.jsxs("div",{className:"rounded-2xl border border-border/60 bg-card/45 p-6 shadow-lg shadow-black/10 space-y-4 md:col-span-2",children:[n.jsxs("div",{className:"flex items-center gap-2 border-b border-border/20 pb-3",children:[n.jsx(rl,{className:"h-5 w-5 text-amber-400"}),n.jsxs("div",{children:[n.jsx("h3",{className:"text-xs font-bold uppercase tracking-wider text-foreground",children:"5. Richtiges Arbeiten mit Tools (Dateien, Terminal, DevTools)"}),n.jsx("span",{className:"text-[9px] text-amber-400 font-mono",children:"Fehler vermeiden & Kosten senken"})]})]}),n.jsxs("div",{className:"grid md:grid-cols-3 gap-4 text-xs text-muted-foreground leading-normal",children:[n.jsxs("div",{className:"space-y-1.5 p-3 bg-background/10 rounded-xl border border-border/30",children:[n.jsxs("h4",{className:"font-bold text-foreground flex items-center gap-1",children:[n.jsx(tl,{className:"h-3.5 w-3.5 text-primary"})," Terminal"]}),n.jsxs("p",{className:"text-[11px]",children:["Verwende nur non-interaktive Befehle. Hänge bei langen Tasks (wie dev-Servern) ein ",n.jsx("code",{children:"&"})," an oder nutze die integrierte Job-Verwaltung. Verwende niemals interaktive Eingabeaufforderungen."]})]}),n.jsxs("div",{className:"space-y-1.5 p-3 bg-background/10 rounded-xl border border-border/30",children:[n.jsxs("h4",{className:"font-bold text-foreground flex items-center gap-1",children:[n.jsx(mi,{className:"h-3.5 w-3.5 text-cyan-400"})," Dateimanager"]}),n.jsxs("p",{className:"text-[11px]",children:["Überschreibe keine ganzen Dateien, wenn du nur eine Zeile ändern willst. Verwende gezielte Ersetzungs-Tools (wie ",n.jsx("code",{children:"replace_file_content"}),"). Das spart massiv Token-Kosten und beugt Fehlern vor."]})]}),n.jsxs("div",{className:"space-y-1.5 p-3 bg-background/10 rounded-xl border border-border/30",children:[n.jsxs("h4",{className:"font-bold text-foreground flex items-center gap-1",children:[n.jsx(rl,{className:"h-3.5 w-3.5 text-violet-400"})," Browser DevTools"]}),n.jsx("p",{className:"text-[11px]",children:"Koppele deine Debug-Dienste mit dem Chrome-DevTools-Plugin. So kann der Agent Fehler in der Konsole live analysieren und das DOM verifizieren, anstatt blind zu raten."})]})]})]}),n.jsxs("div",{className:"rounded-2xl border border-border/60 bg-card/45 p-6 shadow-lg shadow-black/10 space-y-4 md:col-span-2",children:[n.jsxs("div",{className:"flex items-center gap-2 border-b border-border/20 pb-3",children:[n.jsx(Wr,{className:"h-5 w-5 text-emerald-400"}),n.jsxs("div",{children:[n.jsx("h3",{className:"text-xs font-bold uppercase tracking-wider text-foreground",children:"Wie autonom ist Mission Control 2 wirklich?"}),n.jsx("span",{className:"text-[9px] text-emerald-400 font-mono",children:"Die Grenze zwischen Automatisierung und Kontrolle"})]})]}),n.jsxs("div",{className:"text-xs text-muted-foreground space-y-3 leading-normal",children:[n.jsxs("p",{children:["Mission Control 2 ist als ",n.jsx("strong",{children:"semi-autonomes Gateway"})," konzipiert. Es besitzt die Fähigkeit, komplexe Workflows komplett selbstständig durchzuführen, unterliegt jedoch strikten Sicherheitsplanken:"]}),n.jsxs("div",{className:"grid sm:grid-cols-2 gap-4 pt-1",children:[n.jsxs("div",{className:"space-y-1.5",children:[n.jsxs("h4",{className:"font-bold text-foreground flex items-center gap-1 text-[11px]",children:[n.jsx(_u,{className:"h-3 w-3 text-emerald-400"})," Was läuft vollautomatisch?"]}),n.jsxs("ul",{className:"list-disc pl-4 space-y-1 text-[11px]",children:[n.jsx("li",{children:"Modellaustausch (Routing) per llama-swap je nach Anfragetyp (z.B. Code vs. Reasoning)."}),n.jsx("li",{children:"Hintergrund-Synchronisation und Speicherung von Gedächtniseinträgen (Memory)."}),n.jsx("li",{children:"Modell-Installation und API-Key-Injektionen in Gateway-Verbindungen."})]})]}),n.jsxs("div",{className:"space-y-1.5",children:[n.jsxs("h4",{className:"font-bold text-foreground flex items-center gap-1 text-[11px]",children:[n.jsx(_u,{className:"h-3 w-3 text-amber-400"})," Wo ist menschliche Freigabe nötig?"]}),n.jsxs("ul",{className:"list-disc pl-4 space-y-1 text-[11px]",children:[n.jsxs("li",{children:[n.jsx("strong",{children:"Systembefehle:"})," Das Ausführen von Terminal-Kommandos auf deinem PC erfordert standardmäßig deine Bestätigung."]}),n.jsxs("li",{children:[n.jsx("strong",{children:"Kritische Systemeingriffe:"})," OS-Updates, Engine-Rebuilds und Host-Reboots müssen manuell über das Dashboard ausgelöst werden."]}),n.jsxs("li",{children:[n.jsx("strong",{children:"Gedächtnis-Löschung:"})," Permanentes Verwerfen von gesammelten Memorys wird von dir freigegeben."]})]})]})]}),n.jsxs("p",{className:"text-[11px] bg-background/25 p-3 rounded-xl border border-border/30 mt-2",children:[n.jsx("strong",{children:"Fazit:"})," Der Stack erledigt die Kärrnerarbeit (Modelle tauschen, API-Adapter bereitstellen, Sandbox-Verbindungen herstellen) komplett im Hintergrund. Er agiert als dein persönlicher, treuer Copilot, ohne jemals ungefragt schädliche Operationen auf deinem Hauptsystem auszuführen."]})]})]})]})]})]})}function L0({title:o,hint:d}){return n.jsxs("div",{className:"space-y-4",children:[n.jsxs("div",{children:[n.jsx("h1",{className:"text-xl font-semibold",children:o}),n.jsx("p",{className:"text-sm text-muted-foreground",children:d})]}),n.jsxs("div",{className:"flex flex-col items-center justify-center gap-3 rounded-xl border border-dashed border-border bg-card/50 py-20 text-center",children:[n.jsx(hh,{className:"h-8 w-8 text-muted-foreground"}),n.jsx("div",{className:"text-sm text-muted-foreground",children:"Kommt in einer späteren Phase."})]})]})}const A0=[{id:"llama-swap",label:"Llama Swap",type:"system"},{id:"mission-control-2",label:"Mission Control 2",type:"user"},{id:"hermes-gateway",label:"Hermes Gateway",type:"user"},{id:"hermes-dashboard",label:"Hermes Dashboard",type:"user"},{id:"hermes-webui",label:"Hermes WebUI",type:"user"}];function pi(o){return o==null?"":o>1024**3?`${(o/1024**3).toFixed(2)} GB`:`${(o/1024**2).toFixed(1)} MB`}function O0({open:o,onClose:d,defaultTab:a="maintenance"}){const[c,f]=p.useState(null),[m,h]=p.useState([]),[x,E]=p.useState("llama-swap"),[b,k]=p.useState(""),[P,A]=p.useState(!1),[I,O]=p.useState(null),[S,C]=p.useState({}),[_,L]=p.useState("maintenance"),[q,Z]=p.useState(!1),[H,T]=p.useState(null);function F(w,J,Le){T({type:"alert",title:w,message:J,onConfirm:()=>{T(null),Le&&Le()}})}function ne(w,J,Le){T({type:"confirm",title:w,message:J,onConfirm:()=>{T(null),Le()},onCancel:()=>T(null)})}function se(w){return w?new Date(w*1e3).toLocaleString("de-DE",{day:"2-digit",month:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"}):"Nie"}const[X,ye]=p.useState(""),[ce,Me]=p.useState(""),[_e,Pe]=p.useState(!1),[Ne,ke]=p.useState(!1);p.useEffect(()=>{o&&(ye(localStorage.getItem("mc_sudo_password")||""),Me(localStorage.getItem("mc_hf_token")||""))},[o]),p.useEffect(()=>{o&&a&&L(a)},[o,a]);const W=p.useRef(null);function ae(){fe("/api/maintenance/updates").then(f).catch(w=>console.error("Error loading updates",w))}function G(){fe("/api/jobs").then(w=>h(w.jobs||[])).catch(w=>console.error("Error loading jobs",w))}function j(w){A(!0),O(null),fe(`/api/maintenance/logs?service=${w}&lines=150`).then(J=>{J.ok?k(J.text):(k(`Fehler beim Laden der Logs: ${J.err||"Unbekannter Fehler"}`),(J.status==="incorrect_password"||J.status==="password_required")&&O(J.status))}).catch(J=>k(`Fehler: ${J.message}`)).finally(()=>{A(!1),setTimeout(()=>{W.current&&(W.current.scrollTop=W.current.scrollHeight)},50)})}p.useEffect(()=>{if(!o)return;ae(),G();const w=setInterval(()=>{G(),ae()},3e3);return()=>clearInterval(w)},[o]),p.useEffect(()=>{!o||_!=="logs"||j(x)},[o,_,x]);async function v(){try{await fe("/api/maintenance/os-update",{method:"POST"}),G(),L("maintenance")}catch(w){F("Fehler",`Fehler beim Starten des OS-Updates: ${w.message}`)}}async function B(){try{await fe("/api/maintenance/engine-update",{method:"POST"}),G(),L("maintenance")}catch(w){F("Fehler",`Fehler beim Engine-Update: ${w.message}`)}}async function Y(){Z(!0);try{await fe("/api/maintenance/check-updates",{method:"POST"}),G(),L("maintenance")}catch(w){F("Fehler",`Fehler bei der Update-Suche: ${w.message}`)}finally{Z(!1)}}async function K(w,J){try{await fe("/api/models/install",{method:"POST",body:JSON.stringify({repo:w,role:J})}),F("Gestartet",`Modell-Upgrade für '${J}' (${w}) gestartet.`),G(),L("maintenance")}catch(Le){F("Fehler",`Fehler beim Starten des Modell-Upgrades: ${Le.message}`)}}async function oe(){ne("Reboot bestätigen","Bist du sicher, dass du das gesamte Host-System neu starten willst?",async()=>{try{await fe("/api/maintenance/reboot",{method:"POST"}),F("Reboot","Reboot ausgelöst. System startet neu...",()=>{d()})}catch(w){F("Fehler",`Fehler beim Reboot: ${w.message}`)}})}async function pe(w){C(J=>({...J,[w]:!0}));try{const J=await fe("/api/maintenance/restart",{method:"POST",body:JSON.stringify({service:w})});J.ok?F("Dienst neu gestartet",`Dienst ${w} wurde erfolgreich neu gestartet.`,()=>{_==="logs"&&x===w&&j(w)}):F("Fehler",`Fehler beim Neustart: ${J.err||"Unbekannter Fehler"}`)}catch(J){F("Fehler",`Fehler beim Neustart: ${J.message}`)}finally{C(J=>({...J,[w]:!1}))}}async function me(w){try{await fe(`/api/jobs/${w}/cancel`,{method:"POST"}),G()}catch(J){F("Fehler",`Fehler beim Abbrechen: ${J.message}`)}}return n.jsxs(n.Fragment,{children:[n.jsx("div",{className:ee("fixed inset-0 bg-black/60 backdrop-blur-sm z-50 transition-opacity duration-300",o?"opacity-100 pointer-events-auto":"opacity-0 pointer-events-none"),onClick:d}),n.jsxs("div",{className:ee("fixed inset-y-0 right-0 w-full sm:w-[500px] bg-card/85 backdrop-blur-xl border-l border-border/60 shadow-2xl z-50 flex flex-col transform transition-transform duration-300 ease-in-out font-sans text-foreground",o?"translate-x-0":"translate-x-full"),children:[n.jsxs("div",{className:"flex h-16 shrink-0 items-center justify-between border-b border-border/40 px-6",children:[n.jsxs("div",{className:"flex items-center gap-2",children:[n.jsx(gt,{className:"h-4.5 w-4.5 text-primary"}),n.jsx("h2",{className:"text-sm font-semibold tracking-wide uppercase font-space",children:"OS-Zentrale & Pflege"})]}),n.jsx("button",{onClick:d,className:"flex h-8 w-8 items-center justify-center rounded-lg border border-border/40 text-muted-foreground hover:bg-accent transition-colors",children:n.jsx(Hr,{className:"h-4 w-4"})})]}),n.jsxs("div",{className:"flex border-b border-border/40 px-6",children:[n.jsx("button",{onClick:()=>L("maintenance"),className:ee("flex-1 py-3 text-xs font-semibold uppercase tracking-wider border-b-2 text-center transition-all",_==="maintenance"?"border-primary text-primary":"border-transparent text-muted-foreground hover:text-foreground"),children:"System-Wartung"}),n.jsx("button",{onClick:()=>L("logs"),className:ee("flex-1 py-3 text-xs font-semibold uppercase tracking-wider border-b-2 text-center transition-all",_==="logs"?"border-primary text-primary":"border-transparent text-muted-foreground hover:text-foreground"),children:"System-Logs"}),n.jsx("button",{onClick:()=>L("settings"),className:ee("flex-1 py-3 text-xs font-semibold uppercase tracking-wider border-b-2 text-center transition-all",_==="settings"?"border-primary text-primary":"border-transparent text-muted-foreground hover:text-foreground"),children:"Einstellungen"})]}),n.jsxs("div",{className:"flex-1 overflow-y-auto p-6 space-y-6",children:[_==="maintenance"&&n.jsxs(n.Fragment,{children:[n.jsxs("div",{className:"space-y-3",children:[n.jsxs("div",{className:"flex items-center justify-between",children:[n.jsx("h3",{className:"text-xs font-bold uppercase tracking-wider text-muted-foreground",children:"Wartungsaktionen"}),n.jsxs("div",{className:"flex items-center gap-2",children:[(c==null?void 0:c.last_check)&&n.jsxs("span",{className:"text-[9px] text-muted-foreground",children:["Zuletzt gesucht: ",se(c.last_check)]}),n.jsxs("button",{onClick:Y,disabled:q,className:"flex items-center gap-1 text-[10px] font-semibold text-primary hover:text-primary/80 transition-colors disabled:opacity-50",children:[n.jsx(Br,{className:ee("h-3 w-3",q&&"animate-spin")}),"Nach Updates suchen"]})]})]}),n.jsxs("div",{className:"grid grid-cols-2 gap-3",children:[n.jsxs("button",{onClick:v,className:"flex flex-col items-start gap-1 p-4 rounded-xl border border-border/60 bg-background/20 hover:border-primary/50 transition-all text-left group",children:[n.jsx(Wr,{className:"h-5 w-5 text-cyan-400 mb-1 group-hover:scale-105 transition-transform"}),n.jsx("span",{className:"text-xs font-semibold",children:"OS Update (apt)"}),n.jsx("span",{className:"text-[10px] text-muted-foreground",children:c!=null&&c.os?`${c.os} Updates verfügbar`:"Auf neuestem Stand"})]}),n.jsxs("button",{onClick:B,className:"flex flex-col items-start gap-1 p-4 rounded-xl border border-border/60 bg-background/20 hover:border-primary/50 transition-all text-left group",children:[n.jsx(Sh,{className:"h-5 w-5 text-violet-400 mb-1 group-hover:scale-105 transition-transform"}),n.jsx("span",{className:"text-xs font-semibold",children:"Engine Update"}),n.jsx("span",{className:"text-[10px] text-muted-foreground",children:c!=null&&c.engine?"Update verfügbar":"Auf neuestem Stand"})]})]}),n.jsxs("button",{onClick:oe,className:"flex w-full items-center gap-3 p-3 rounded-xl border border-red-500/20 bg-red-500/5 hover:bg-red-500/10 text-red-400 transition-all text-left text-xs font-semibold",children:[n.jsx(df,{className:"h-4.5 w-4.5"}),n.jsxs("div",{children:[n.jsx("div",{children:"Host-System neu starten (Reboot)"}),n.jsx("div",{className:"text-[10px] text-red-400/80 font-normal",children:"Startet das gesamte Betriebssystem des Homelabs neu"})]})]})]}),(c==null?void 0:c.model_list)&&c.model_list.length>0&&n.jsxs("div",{className:"space-y-3",children:[n.jsxs("div",{className:"flex items-center justify-between",children:[n.jsx("h3",{className:"text-xs font-bold uppercase tracking-wider text-muted-foreground",children:"Verfügbare Modell-Upgrades"}),(c==null?void 0:c.last_check)&&n.jsxs("span",{className:"text-[9px] text-muted-foreground",children:["Gesucht: ",se(c.last_check)]})]}),n.jsx("div",{className:"space-y-2",children:c.model_list.map(w=>n.jsx("div",{className:"p-3 rounded-xl border border-border/60 bg-background/20 flex flex-col gap-2",children:n.jsxs("div",{className:"flex items-start justify-between gap-3",children:[n.jsxs("div",{children:[n.jsx("div",{className:"text-xs font-semibold",children:w.title}),n.jsx("div",{className:"text-[10px] font-mono text-muted-foreground",children:w.repo}),n.jsxs("div",{className:"text-[10px] text-primary font-semibold uppercase mt-0.5",children:["Rolle: ",w.role]})]}),n.jsxs("button",{onClick:()=>K(w.repo,w.role),className:"flex items-center gap-1.5 text-[10px] font-semibold text-emerald-400 hover:text-emerald-300 border border-emerald-500/20 bg-emerald-500/5 hover:bg-emerald-500/10 px-2 py-1 rounded-lg transition-colors shrink-0",children:[n.jsx(Vr,{className:"h-3.5 w-3.5"}),"Upgrade"]})]})},w.role))})]}),n.jsxs("div",{className:"space-y-3",children:[n.jsxs("div",{className:"flex items-center justify-between",children:[n.jsx("h3",{className:"text-xs font-bold uppercase tracking-wider text-muted-foreground",children:"Hintergrund-Aufgaben"}),n.jsxs("span",{className:"text-[10px] font-mono bg-primary/10 text-primary px-1.5 py-0.5 rounded-full",children:[m.filter(w=>w.state==="running"||w.state==="queued").length," Aktiv"]})]}),n.jsx("div",{className:"space-y-3",children:m.length===0?n.jsx("div",{className:"text-xs text-muted-foreground border border-dashed border-border/60 rounded-xl p-6 text-center",children:"Aktuell keine aktiven Hintergrund-Jobs."}):m.map(w=>{const J=w.state==="running"||w.state==="queued";return n.jsxs("div",{className:ee("p-3 rounded-xl border transition-all duration-300",J?"border-primary/40 bg-primary/5 shadow-md shadow-primary/5":"border-border/40 bg-background/20 opacity-80"),children:[n.jsxs("div",{className:"flex items-start justify-between gap-3",children:[n.jsxs("div",{className:"space-y-1",children:[n.jsxs("div",{className:"text-xs font-semibold flex items-center gap-1.5",children:[J&&n.jsxs("span",{className:"flex h-2 w-2 relative",children:[n.jsx("span",{className:"animate-ping absolute inline-flex h-full w-full rounded-full bg-primary opacity-75"}),n.jsx("span",{className:"relative inline-flex rounded-full h-2 w-2 bg-primary"})]}),w.label]}),n.jsxs("div",{className:"text-[10px] font-mono text-muted-foreground uppercase flex items-center gap-2",children:[n.jsxs("span",{children:["ID: ",w.id]}),n.jsx("span",{children:"•"}),n.jsx("span",{className:ee(w.state==="done"&&"text-emerald-400",w.state==="failed"&&"text-red-400",w.state==="running"&&"text-primary",w.state==="queued"&&"text-amber-400",w.state==="canceled"&&"text-muted-foreground"),children:w.state})]})]}),J&&n.jsx("button",{onClick:()=>me(w.id),className:"text-[10px] font-semibold text-red-400 hover:text-red-300 border border-red-500/20 bg-red-500/5 hover:bg-red-500/10 px-2 py-0.5 rounded transition-colors",children:"Abbrechen"})]}),w.state==="running"&&n.jsxs("div",{className:"mt-3 space-y-1",children:[n.jsx("div",{className:"w-full h-1.5 bg-muted rounded-full overflow-hidden",children:n.jsx("div",{className:"h-full bg-primary transition-all duration-500",style:{width:`${w.progress??0}%`}})}),n.jsxs("div",{className:"flex justify-between items-center text-[9px] font-mono text-muted-foreground",children:[n.jsxs("span",{children:[w.progress??0,"%"]}),w.done_bytes!=null&&w.total_bytes!=null&&n.jsxs("span",{children:[pi(w.done_bytes)," / ",pi(w.total_bytes),w.rate_bps!=null&&` (${pi(w.rate_bps)}/s)`]}),w.eta_s!=null&&n.jsxs("span",{children:["ETA: ",w.eta_s,"s"]})]})]})]},w.id)})})]})]}),_==="logs"&&n.jsxs("div",{className:"flex flex-col h-full space-y-4",children:[n.jsxs("div",{className:"flex items-center gap-2",children:[n.jsx("select",{value:x,onChange:w=>E(w.target.value),className:"flex-1 h-9 px-3 text-xs bg-background/40 border border-border/60 rounded-lg outline-none text-foreground font-semibold",children:A0.map(w=>n.jsxs("option",{value:w.id,children:[w.label," (",w.type==="system"?"systemd-root":"user",")"]},w.id))}),n.jsxs("button",{onClick:()=>pe(x),disabled:S[x],className:"flex h-9 px-3 items-center gap-1.5 text-xs font-semibold rounded-lg border border-border/60 bg-background/20 hover:border-primary/50 transition-colors disabled:opacity-50",title:"Dienst neu starten",children:[n.jsx(Br,{className:ee("h-3.5 w-3.5",S[x]&&"animate-spin")}),"Restart"]})]}),n.jsxs("div",{className:"flex-1 flex flex-col min-h-[300px] border border-border/60 bg-black/50 rounded-xl overflow-hidden shadow-inner",children:[n.jsxs("div",{className:"flex h-9 items-center justify-between px-4 border-b border-border/40 bg-black/30 shrink-0",children:[n.jsxs("div",{className:"flex items-center gap-1.5 text-[10px] font-mono text-muted-foreground",children:[n.jsx(tl,{className:"h-3 w-3 text-primary"}),n.jsxs("span",{children:["stdout/stderr - ",x]})]}),n.jsx("button",{onClick:()=>j(x),disabled:P,className:"text-muted-foreground hover:text-foreground transition-colors",children:n.jsx(Br,{className:ee("h-3 w-3",P&&"animate-spin")})})]}),n.jsx("pre",{ref:W,className:"flex-1 p-4 overflow-y-auto text-[10px] font-mono text-cyan-300/90 whitespace-pre-wrap select-text leading-relaxed scrollbar-thin",children:I==="password_required"||I==="incorrect_password"?n.jsxs("div",{className:"flex flex-col items-center justify-center p-6 text-center h-full space-y-3",children:[n.jsx(Mh,{className:"h-8 w-8 text-amber-400 animate-pulse animate-duration-1000"}),n.jsx("div",{className:"text-xs font-semibold text-amber-300",children:I==="incorrect_password"?"Falsches Sudo-Passwort hinterlegt.":"Sudo-Passwort für systemd-Dienste erforderlich."}),n.jsxs("p",{className:"text-[10px] text-muted-foreground max-w-xs leading-normal",children:["Für das Auslesen der systemd-Logs von ",x," werden Root-Rechte benötigt. Hinterlege dein Passwort in den Einstellungen."]}),n.jsx("button",{onClick:()=>L("settings"),className:"px-3 py-1.5 text-[10px] font-semibold text-primary-foreground bg-primary hover:bg-primary/95 rounded-md transition-colors mt-2",children:"Sudo-Passwort eintragen"})]}):P&&!b?n.jsx("span",{className:"text-muted-foreground",children:"Lade Logs..."}):b||n.jsx("span",{className:"text-muted-foreground",children:"Keine Logeinträge vorhanden."})})]})]}),_==="settings"&&n.jsxs("div",{className:"space-y-6",children:[n.jsxs("div",{className:"space-y-2",children:[n.jsx("h3",{className:"text-xs font-bold uppercase tracking-wider text-muted-foreground",children:"Zugangsdaten & Schlüssel"}),n.jsx("p",{className:"text-[10px] text-muted-foreground leading-normal",children:"Diese Daten werden ausschließlich lokal in deinem Browser (localStorage) gespeichert und bei Bedarf an das Backend übertragen."})]}),n.jsxs("div",{className:"space-y-2",children:[n.jsxs("label",{className:"text-xs font-semibold flex items-center gap-1.5",children:[n.jsx(Wr,{className:"h-4 w-4 text-amber-400"}),"Host Sudo-Passwort"]}),n.jsxs("div",{className:"relative",children:[n.jsx("input",{type:_e?"text":"password",value:X,onChange:w=>ye(w.target.value),placeholder:"Sudo-Passwort für System-Operationen",className:"w-full h-10 pl-3 pr-10 text-xs bg-background/40 border border-border/60 rounded-lg outline-none focus:border-primary transition-colors text-foreground"}),n.jsx("button",{type:"button",onClick:()=>Pe(!_e),className:"absolute inset-y-0 right-0 flex items-center pr-3 text-muted-foreground hover:text-foreground transition-colors",children:_e?n.jsx(Mu,{className:"h-4 w-4"}):n.jsx(xi,{className:"h-4 w-4"})})]}),n.jsx("p",{className:"text-[9px] text-muted-foreground leading-normal",children:"Wird benötigt für systemd-Dienste (Llama Swap logs/restart), OS-Update (apt) und Reboot."})]}),n.jsxs("div",{className:"space-y-2",children:[n.jsxs("label",{className:"text-xs font-semibold flex items-center gap-1.5",children:[n.jsx(yh,{className:"h-4 w-4 text-violet-400"}),"HuggingFace API Token"]}),n.jsxs("div",{className:"relative",children:[n.jsx("input",{type:Ne?"text":"password",value:ce,onChange:w=>Me(w.target.value),placeholder:"hf_...",className:"w-full h-10 pl-3 pr-10 text-xs bg-background/40 border border-border/60 rounded-lg outline-none focus:border-primary transition-colors text-foreground"}),n.jsx("button",{type:"button",onClick:()=>ke(!Ne),className:"absolute inset-y-0 right-0 flex items-center pr-3 text-muted-foreground hover:text-foreground transition-colors",children:Ne?n.jsx(Mu,{className:"h-4 w-4"}):n.jsx(xi,{className:"h-4 w-4"})})]}),n.jsx("p",{className:"text-[9px] text-muted-foreground leading-normal",children:"Erlaubt das Herunterladen von geschützten oder Gate-restricted Modellen direkt über Mission Control."})]}),n.jsxs("div",{className:"flex gap-3 pt-2",children:[n.jsx("button",{onClick:()=>{localStorage.setItem("mc_sudo_password",X),localStorage.setItem("mc_hf_token",ce),F("Erfolgreich","Einstellungen erfolgreich lokal gespeichert.")},className:"flex-1 h-9 flex items-center justify-center text-xs font-semibold text-primary-foreground bg-primary hover:bg-primary/90 rounded-lg transition-colors shadow shadow-primary/10 cursor-pointer",children:"Speichern"}),n.jsx("button",{onClick:()=>{ye(""),Me(""),localStorage.removeItem("mc_sudo_password"),localStorage.removeItem("mc_hf_token"),F("Gelöscht","Zugangsdaten gelöscht.")},className:"h-9 px-4 flex items-center justify-center text-xs font-semibold text-muted-foreground border border-border/60 bg-background/20 hover:bg-accent rounded-lg transition-colors cursor-pointer",children:"Zurücksetzen"})]})]})]})]}),H&&n.jsx(Qr,{type:H.type,title:H.title,message:H.message,onConfirm:H.onConfirm,onCancel:H.onCancel})]})}function T0(){var I,O,S,C,_;const[o,d]=p.useState("dashboard"),[a,c]=p.useState(null),[f,m]=p.useState(()=>localStorage.getItem("mc_sidebar_collapsed")==="true"),[h,x]=p.useState(null),[E,b]=p.useState(!1),[k,P]=p.useState("maintenance");p.useEffect(()=>{const L=()=>fe("/api/health").then(c).catch(()=>c(null));L();const q=setInterval(L,1e4);return()=>clearInterval(q)},[]),p.useEffect(()=>{const L=()=>fe("/api/system/status").then(x).catch(()=>{});L();const q=setInterval(L,2e4);return()=>clearInterval(q)},[]),p.useEffect(()=>{document.documentElement.classList.add("dark")},[]),p.useEffect(()=>{const L=q=>{var H;P(((H=q.detail)==null?void 0:H.tab)||"maintenance"),b(!0)};return window.addEventListener("open-system-drawer",L),()=>window.removeEventListener("open-system-drawer",L)},[]);const A=yi.find(L=>L.id===o);return n.jsxs("div",{className:"flex h-full relative",children:[n.jsxs("div",{className:"fixed inset-0 -z-50 pointer-events-none overflow-hidden bg-[hsl(224,30%,6%)]",children:[n.jsx("div",{className:"absolute inset-0 opacity-35 animate-aurora bg-gradient-to-tr from-teal-500/20 via-indigo-500/15 to-purple-500/20 blur-[130px]"}),n.jsx("div",{className:"absolute top-[-10%] left-[-10%] h-[50%] w-[50%] rounded-full bg-teal-500/15 blur-[160px]"}),n.jsx("div",{className:"absolute bottom-[-10%] right-[-10%] h-[50%] w-[50%] rounded-full bg-purple-500/15 blur-[160px]"}),n.jsx("div",{className:"absolute top-[30%] right-[20%] h-[40%] w-[40%] rounded-full bg-indigo-500/10 blur-[140px]"})]}),n.jsx(Ig,{onNavigate:d}),n.jsx(O0,{open:E,onClose:()=>b(!1),defaultTab:k}),n.jsxs("aside",{className:ee("flex shrink-0 flex-col border-r border-border/40 bg-card/45 backdrop-blur-md transition-all duration-300 ease-in-out",f?"w-16":"w-60"),children:[n.jsxs("div",{className:ee("flex items-center py-4 border-b border-border/40 shrink-0",f?"flex-col gap-3 px-2":"justify-between px-5"),children:[n.jsxs("div",{className:"flex items-center gap-2 overflow-hidden",children:[n.jsx("div",{className:"h-7 w-7 rounded-lg bg-primary shadow-md shadow-primary/20 shrink-0"}),!f&&n.jsxs("div",{className:"leading-tight",children:[n.jsx("div",{className:"text-sm font-semibold tracking-wide font-space",children:"Mission Control"}),n.jsx("div",{className:"text-xs text-muted-foreground",children:"2.0"})]})]}),n.jsx("button",{onClick:()=>{m(L=>{const q=!L;return localStorage.setItem("mc_sidebar_collapsed",q.toString()),q})},className:"p-1 rounded-md hover:bg-accent text-muted-foreground transition-colors cursor-pointer",title:f?"Maximieren":"Minimieren",children:f?n.jsx(dh,{className:"h-4 w-4"}):n.jsx(ih,{className:"h-4 w-4"})})]}),n.jsx("nav",{className:"flex-1 space-y-1 px-3 py-4 overflow-y-auto",children:yi.map(L=>n.jsxs("button",{onClick:()=>d(L.id),className:ee("flex w-full items-center rounded-md text-sm transition-all cursor-pointer",f?"justify-center p-2.5":"gap-3 px-3 py-2",o===L.id?"bg-primary/15 text-primary shadow-sm shadow-primary/5":"text-muted-foreground hover:bg-accent hover:text-accent-foreground"),title:f?L.label:void 0,children:[n.jsx(L.icon,{className:"h-4.5 w-4.5 shrink-0"}),!f&&n.jsx("span",{className:"truncate",children:L.label})]},L.id))}),n.jsx("div",{className:ee("py-3 text-xs text-muted-foreground border-t border-border/40 shrink-0",f?"px-2 text-center":"px-5"),children:f?n.jsx("div",{className:"flex justify-center",children:n.jsx("span",{className:ee("h-2.5 w-2.5 rounded-full ring-2 ring-black/40",a?a.engine_reachable?"bg-emerald-500 animate-pulse":"bg-amber-500":"bg-red-500"),title:a?`Engine ${a.engine_reachable?"online":"offline"}`:"Backend offline"})}):n.jsxs("div",{className:"space-y-2 text-left",children:[a?n.jsxs("span",{className:"flex items-center gap-2",children:[n.jsx("span",{className:ee("h-2 w-2 rounded-full animate-pulse",a.engine_reachable?"bg-emerald-500":"bg-amber-500")}),n.jsxs("span",{className:"truncate",children:["Engine ",a.engine_reachable?"online":"offline"]})]}):n.jsxs("span",{className:"flex items-center gap-2",children:[n.jsx("span",{className:"h-2 w-2 rounded-full bg-red-500"})," ",n.jsx("span",{className:"truncate",children:"Backend offline"})]}),(h==null?void 0:h.versions)&&n.jsxs("div",{className:"space-y-1 text-[9px] text-muted-foreground/60 mt-2 pt-2 border-t border-border/30",children:[n.jsxs("div",{className:"truncate",title:h.versions.mc2?`${h.versions.mc2.branch}-${h.versions.mc2.hash}${h.versions.mc2.dirty?"*":""} (${h.versions.mc2.date})`:"nicht gefunden",children:[n.jsx("strong",{children:"MC2:"})," ",h.versions.mc2?`${h.versions.mc2.hash}${h.versions.mc2.dirty?"*":""}`:"—"]}),n.jsxs("div",{className:"truncate",title:((I=h.versions.engine)==null?void 0:I.type)==="git"?`${h.versions.engine.branch}-${h.versions.engine.hash}${h.versions.engine.dirty?"*":""} (${h.versions.engine.date})`:((O=h.versions.engine)==null?void 0:O.version_text)||"unbekannt",children:[n.jsx("strong",{children:"Engine:"})," ",((S=h.versions.engine)==null?void 0:S.type)==="git"?`${h.versions.engine.hash}${h.versions.engine.dirty?"*":""}`:((_=(C=h.versions.engine)==null?void 0:C.version_text)==null?void 0:_.split(" ").pop())||"—"]}),n.jsxs("div",{className:"truncate",title:h.versions.hermes_ui?`${h.versions.hermes_ui.branch}-${h.versions.hermes_ui.hash}${h.versions.hermes_ui.dirty?"*":""} (${h.versions.hermes_ui.date})`:"nicht gefunden",children:[n.jsx("strong",{children:"Hermes UI:"})," ",h.versions.hermes_ui?`${h.versions.hermes_ui.hash}${h.versions.hermes_ui.dirty?"*":""}`:"—"]}),n.jsxs("div",{className:"truncate",title:h.versions.hermes_agent?`${h.versions.hermes_agent.branch}-${h.versions.hermes_agent.hash}${h.versions.hermes_agent.dirty?"*":""} (${h.versions.hermes_agent.date})`:"nicht gefunden",children:[n.jsx("strong",{children:"Hermes Agent:"})," ",h.versions.hermes_agent?`${h.versions.hermes_agent.hash}${h.versions.hermes_agent.dirty?"*":""}`:"—"]})]})]})})]}),n.jsxs("div",{className:"flex min-w-0 flex-1 flex-col",children:[n.jsxs("header",{className:"flex h-14 shrink-0 items-center justify-between border-b border-border/40 px-6 bg-card/20 backdrop-blur-sm",children:[n.jsx("div",{className:"text-xs font-medium text-muted-foreground tracking-wide uppercase font-sans",children:A.hint}),n.jsxs("div",{className:"flex items-center gap-2",children:[n.jsx("a",{href:"https://git.tobisniceshomelab.ddnsfree.com/Hitonabi/mission-control-v2/src/branch/main/docs/BEDIENUNG.md",target:"_blank",rel:"noopener",className:"flex h-8 items-center rounded-md border border-border/40 bg-background/40 px-2.5 text-xs text-muted-foreground hover:bg-accent hover:text-accent-foreground transition-all cursor-pointer font-semibold",title:"Bedien-Anleitung",children:"Hilfe"}),n.jsxs("button",{onClick:()=>{const L=new KeyboardEvent("keydown",{key:"k",metaKey:!0});document.dispatchEvent(L)},className:"flex items-center gap-2 rounded-md border border-border/40 bg-background/40 px-2.5 py-1.5 text-xs text-muted-foreground hover:bg-accent hover:text-accent-foreground transition-all cursor-pointer",children:[n.jsx(mh,{className:"h-3.5 w-3.5"}),n.jsx("span",{children:"Suchen"}),n.jsx("kbd",{className:"rounded bg-muted px-1.5 py-0.5 font-mono text-[9px]",children:"⌘K"})]})]})]}),n.jsxs("main",{className:"flex-1 overflow-y-auto p-6 scrollbar-thin",children:[o==="dashboard"&&n.jsx(v0,{}),o==="models"&&n.jsx(E0,{}),o==="system"&&n.jsx(_0,{}),o==="connect"&&n.jsx(M0,{}),o==="memory"&&n.jsx(R0,{}),o==="agent"&&n.jsx(z0,{}),o==="guide"&&n.jsx(D0,{}),!["dashboard","models","system","connect","memory","agent","guide"].includes(o)&&n.jsx(L0,{title:A.label,hint:A.hint})]})]})]})}rh.createRoot(document.getElementById("root")).render(n.jsx(rf.StrictMode,{children:n.jsx(T0,{})}));