1 line
33 KiB
JavaScript
1 line
33 KiB
JavaScript
import{a as e,c as t,i as n,n as r,r as i,t as a}from"./dist-aE7UmubC.js";import{Dn as o,Gt as s,M as c,Mt as l,On as u,Ot as d,Ut as f,Vt as p,Xt as m,Z as h,bt as g,dt as _,gn as v,hn as y,in as b,nt as x,st as S,tt as C,xn as w}from"./index-CJ1jXWsM.js";import{t as T}from"./button-DwYvdWVr.js";import{t as E}from"./Bestaetigen-6C3zYuEE.js";var D={name:`key-round`,size:24,node:[[`path`,{d:`M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z`,key:`1s6t7t`}],[`circle`,{cx:`16.5`,cy:`7.5`,r:`.5`,fill:`currentColor`,key:`w0ekpg`}]]};D.node;var O=r(D),k=i(),A=t(e(),1),j=n(),M=[`Montag`,`Dienstag`,`Mittwoch`,`Donnerstag`,`Freitag`,`Samstag`,`Sonntag`],N=Array.from({length:48},(e,t)=>`${String(Math.floor(t/2)).padStart(2,`0`)}:${t%2?`30`:`00`}`),P=new Intl.DateTimeFormat(`de-DE`,{day:`2-digit`,month:`2-digit`,year:`numeric`,hour:`2-digit`,minute:`2-digit`,timeZone:`Europe/Berlin`});function F(e){let t=e?new Date(e):null;return t&&!Number.isNaN(t.getTime())?P.format(t):`–`}function I(e,t){let n=Number(t.slice(0,2)),r=n*60+179,i=e;r>=1440&&(r-=1440,i=e%7+1);let a=e=>String(e).padStart(2,`0`),o=`${a(n)}:00`,s=`${a(Math.floor(r/60))}:${a(r%60)}`;return i===e?`${M[e-1]} ${o}–${s}`:`${M[e-1]} ${o} – ${M[i-1]} ${s}`}function L(e){let t=(0,k.c)(6),{titel:n,children:r}=e,i;t[0]===n?i=t[1]:(i=(0,j.jsx)(`h3`,{className:`etikett text-[11.5px] tracking-[0.16em] text-text-2`,children:n}),t[0]=n,t[1]=i);let a;return t[2]!==r||t[3]!==i||t[4]!==n?(a=(0,j.jsxs)(`section`,{"aria-label":n,className:`flex flex-col gap-3 border-t border-white/[0.06] pt-4 first:border-t-0 first:pt-0`,children:[i,r]}),t[2]=r,t[3]=i,t[4]=n,t[5]=a):a=t[5],a}function R(e){let t=(0,k.c)(22),{titel:n,text:r,farbe:i,children:o}=e,s=i===`box`?`var(--box)`:i===`homelab`?`var(--lab)`:null,c=i===`box`?`text-box-text`:i===`homelab`?`text-lab-text`:`text-foreground`,l=i===`box`?`[--rand:color-mix(in_srgb,var(--box)_28%,transparent)]`:i===`homelab`?`[--rand:color-mix(in_srgb,var(--lab)_28%,transparent)]`:``,u;t[0]===l?u=t[1]:(u=a(`flaeche relative flex min-w-0 flex-col gap-4 overflow-hidden rounded-3xl p-5 sm:p-6`,l),t[0]=l,t[1]=u);let d;t[2]===s?d=t[3]:(d=s&&(0,j.jsx)(`div`,{"aria-hidden":!0,className:`pointer-events-none absolute -top-40 -left-32 size-[400px] rounded-full`,style:{background:`radial-gradient(closest-side, color-mix(in srgb, ${s} 16%, transparent), transparent)`}}),t[2]=s,t[3]=d);let f;t[4]===c?f=t[5]:(f=a(`text-[19px] leading-tight font-semibold`,c),t[4]=c,t[5]=f);let p;t[6]!==f||t[7]!==n?(p=(0,j.jsx)(`h2`,{className:f,children:n}),t[6]=f,t[7]=n,t[8]=p):p=t[8];let m;t[9]===r?m=t[10]:(m=(0,j.jsx)(`p`,{className:`text-sm text-text-3`,children:r}),t[9]=r,t[10]=m);let h;t[11]!==p||t[12]!==m?(h=(0,j.jsxs)(`div`,{className:`relative flex flex-col gap-1`,children:[p,m]}),t[11]=p,t[12]=m,t[13]=h):h=t[13];let g;t[14]===o?g=t[15]:(g=(0,j.jsx)(`div`,{className:`relative flex min-w-0 flex-col gap-4`,children:o}),t[14]=o,t[15]=g);let _;return t[16]!==u||t[17]!==d||t[18]!==h||t[19]!==g||t[20]!==n?(_=(0,j.jsxs)(`section`,{"aria-label":n,className:u,children:[d,h,g]}),t[16]=u,t[17]=d,t[18]=h,t[19]=g,t[20]=n,t[21]=_):_=t[21],_}function z(e){let t=(0,k.c)(2),{children:n}=e,r;return t[0]===n?r=t[1]:(r=(0,j.jsx)(`p`,{className:`text-sm text-bernstein`,children:n}),t[0]=n,t[1]=r),r}function B(e){let t=(0,k.c)(3),{laedt:n,fehler:r}=e;if(n){let e;return t[0]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,j.jsx)(`p`,{className:`text-sm text-text-2`,children:`Wird gelesen …`}),t[0]=e):e=t[0],e}let i=r?`: ${r}`:`.`,a;return t[1]===i?a=t[2]:(a=(0,j.jsxs)(`p`,{role:`alert`,className:`text-sm text-rot-text`,children:[`Lässt sich gerade nicht lesen`,i]}),t[1]=i,t[2]=a),a}function V({offen:e}){let t=u(),n=o({queryKey:[`geheimnisse`],queryFn:()=>y(`/api/maintenance/geheimnisse`),enabled:e}),[r,i]=(0,A.useState)(``),[a,s]=(0,A.useState)(!1),[c,l]=(0,A.useState)(!1);async function d(e){if(!a){s(!0),l(!1);try{await v(`/api/maintenance/geheimnisse`,{schluessel:`hf_token`,wert:e}),b(`erfolg`,e?`Hugging-Face-Zugang gespeichert.`:`Hugging-Face-Zugang gelöscht.`),i(``),t.invalidateQueries({queryKey:[`geheimnisse`]})}catch(e){b(`fehler`,e.message)}finally{s(!1)}}}let f=n.data,p;return p=n.isPending?`Wird gelesen …`:f?f.hf_token_gesetzt?`Ist hinterlegt.`:`Fehlt.`:`Lässt sich gerade nicht lesen${n.error?`: ${n.error.message}`:`.`}`,(0,j.jsxs)(L,{titel:`Hugging-Face-Zugang`,children:[(0,j.jsxs)(`p`,{className:`text-sm text-text-2`,"aria-live":`polite`,children:[(0,j.jsx)(`span`,{className:!f&&!n.isPending?`text-rot-text`:void 0,children:p}),` Nötig für gesperrte Modelle und schnellere Downloads.`,f?.hf_token_aus_env?` Er kommt aus der Dienst-Einstellung und lässt sich hier nicht löschen.`:``]}),f?.schreibbar===!1&&(0,j.jsx)(`p`,{className:`text-sm text-bernstein`,children:`Die Box kann den Zugang gerade nicht speichern: Ihre Ablage ist nicht beschreibbar.`}),(0,j.jsxs)(`form`,{className:`flex gap-2`,onSubmit:e=>{e.preventDefault(),r.trim()&&d(r.trim())},children:[(0,j.jsx)(`label`,{htmlFor:`hf-token`,className:`sr-only`,children:`Hugging-Face-Zugang`}),(0,j.jsx)(`input`,{id:`hf-token`,type:`password`,autoComplete:`off`,value:r,onChange:e=>i(e.target.value),placeholder:`hf_…`,className:`h-11 min-w-0 flex-1 rounded-xl border border-white/12 bg-white/[0.04] px-3 text-[15px] outline-none focus:border-cyan/60 focus:bg-white/[0.06]`}),(0,j.jsx)(T,{type:`submit`,disabled:!r.trim()||f?.schreibbar===!1||a,children:a?`Speichert …`:`Speichern`})]}),f?.hf_token_gesetzt&&!f.hf_token_aus_env&&(c?(0,j.jsxs)(`span`,{className:`flex flex-wrap gap-2`,children:[(0,j.jsx)(T,{variant:`gefahr`,size:`sm`,disabled:a,onClick:()=>d(null),children:`Wirklich löschen?`}),(0,j.jsx)(T,{variant:`ghost`,size:`sm`,onClick:()=>l(!1),children:`Nein`})]}):(0,j.jsx)(T,{variant:`ghost`,size:`sm`,className:`self-start`,disabled:a,onClick:()=>l(!0),children:`Zugang löschen`}))]})}function H(e){let t=(0,k.c)(24),{ziel:n,name:r}=e,i=f(),a=i.data,o=null;if(i.isPending){let e;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,j.jsx)(`p`,{role:`status`,className:`text-sm text-text-2`,children:`Sendet …`}),t[0]=e):e=t[0],o=e}else if(a?.gesendet){let e=a.weg===`hermes`?`über Hermes`:`direkt an die Telegram-Bot-API`,n=a.kennung?`, Kennung ${a.kennung}`:``,r;t[1]!==e||t[2]!==n?(r=(0,j.jsxs)(`p`,{role:`status`,className:`text-sm text-gruen`,children:[`Gesendet `,e,n,`. Schau in Telegram nach.`]}),t[1]=e,t[2]=n,t[3]=r):r=t[3],o=r}else if(a){let e=a.grund??a.detail??`ohne Angabe eines Grundes.`,n;t[4]===e?n=t[5]:(n=(0,j.jsxs)(`p`,{role:`alert`,className:`text-sm text-rot-text`,children:[`Nicht gesendet: `,e]}),t[4]=e,t[5]=n),o=n}else if(i.error){let e;t[6]===i.error.message?e=t[7]:(e=(0,j.jsx)(`p`,{role:`alert`,className:`text-sm text-rot-text`,children:i.error.message}),t[6]=i.error.message,t[7]=e),o=e}let s;t[8]===r?s=t[9]:(s=(0,j.jsx)(`span`,{className:`text-[15px]`,children:r}),t[8]=r,t[9]=s);let c;t[10]!==i||t[11]!==n?(c=()=>i.mutate(n),t[10]=i,t[11]=n,t[12]=c):c=t[12];let l=`Testmeldung von ${r} senden`,u=i.isPending?`Sendet …`:`Test senden`,d;t[13]!==c||t[14]!==l||t[15]!==u||t[16]!==i.isPending?(d=(0,j.jsx)(T,{variant:`outline`,size:`sm`,disabled:i.isPending,onClick:c,"aria-label":l,children:u}),t[13]=c,t[14]=l,t[15]=u,t[16]=i.isPending,t[17]=d):d=t[17];let p;t[18]!==s||t[19]!==d?(p=(0,j.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-2`,children:[s,d]}),t[18]=s,t[19]=d,t[20]=p):p=t[20];let m;return t[21]!==o||t[22]!==p?(m=(0,j.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[p,o]}),t[21]=o,t[22]=p,t[23]=m):m=t[23],m}function U(){let e=(0,k.c)(9),t=g().data,n=t?.rolle??`box`,r=n===`box`?`homelab`:`box`,i=t?.instanz??(n===`box`?`Box-Wart`:`Homelab`),a;e[0]!==r||e[1]!==n||e[2]!==t||e[3]!==i?(a=[{ziel:n,name:i}],t?.partner.eingerichtet&&a.push({ziel:r,name:t.partner.name}),a.sort(G),e[0]=r,e[1]=n,e[2]=t,e[3]=i,e[4]=a):a=e[4];let o,s;e[5]===Symbol.for(`react.memo_cache_sentinel`)?(o=(0,j.jsx)(`p`,{className:`text-sm text-text-2`,children:`Dringende Hinweise gehen zusätzlich per Telegram raus, alles andere bleibt hier; was nachts anfällt, kommt um 07:00 als eine Morgenmeldung. Einfache Probleme wie einen abgestürzten Dienst behebt der Wächter selbst und schreibt es in den Verlauf.`}),s=(0,j.jsx)(`p`,{className:`text-sm text-text-2`,children:`Der Test schickt eine kurze Meldung über den echten Meldeweg, als dringend, damit sie auch nachts sofort kommt.`}),e[5]=o,e[6]=s):(o=e[5],s=e[6]);let c;return e[7]===a?c=e[8]:(c=(0,j.jsxs)(L,{titel:`Telegram`,children:[o,s,a.map(W)]}),e[7]=a,e[8]=c),c}function W(e){return(0,j.jsx)(H,{ziel:e.ziel,name:e.name},e.ziel)}function G(e,t){return Number(e.ziel!==`box`)-Number(t.ziel!==`box`)}function K(e){let t=(0,k.c)(87),{e:n,laedt:r,fehler:i}=e,a=s(),[o,c]=(0,A.useState)(null),[l,u]=(0,A.useState)(!1);if(!n){let e;return t[0]!==i||t[1]!==r?(e=(0,j.jsx)(L,{titel:`Update-Zeitfenster`,children:(0,j.jsx)(B,{laedt:r,fehler:i})}),t[0]=i,t[1]=r,t[2]=e):e=t[2],e}let d=n.update_fenster,f,p,m,h,g,_,v,y,b,x,S,C,w,D,O,P,R;if(t[3]!==n.schaltbar||t[4]!==o||t[5]!==d.naechster_lauf||t[6]!==d.neustart_fenster||t[7]!==d.tag||t[8]!==d.tag_name||t[9]!==d.timer_aktiv||t[10]!==d.uhrzeit||t[11]!==d.wirksam){R=o??{tag:d.tag,uhrzeit:d.uhrzeit},p=R.tag!==d.tag||R.uhrzeit!==d.uhrzeit;let e=N.includes(R.uhrzeit)?N:[...N,R.uhrzeit].sort();f=L,g=`Update-Zeitfenster`;let r;t[29]===d.naechster_lauf?r=t[30]:(r=d.naechster_lauf?` (nächster Lauf ${F(d.naechster_lauf)})`:``,t[29]=d.naechster_lauf,t[30]=r),t[31]!==d.neustart_fenster||t[32]!==d.tag_name||t[33]!==d.uhrzeit||t[34]!==r?(_=(0,j.jsxs)(`p`,{className:`text-sm text-text-2`,children:[`Die Box aktualisiert sich jeden `,d.tag_name,` um `,d.uhrzeit,` Uhr`,r,`. Neu gestartet wird sie danach nur`,` `,d.neustart_fenster,`.`]}),t[31]=d.neustart_fenster,t[32]=d.tag_name,t[33]=d.uhrzeit,t[34]=r,t[35]=_):_=t[35],t[36]!==n.schaltbar||t[37]!==d.timer_aktiv?(v=n.schaltbar&&!d.timer_aktiv&&(0,j.jsx)(z,{children:`Der Update-Timer läuft gerade nicht; er übernimmt das Fenster beim nächsten Start.`}),t[36]=n.schaltbar,t[37]=d.timer_aktiv,t[38]=v):v=t[38],t[39]!==n.schaltbar||t[40]!==d.wirksam?(y=n.schaltbar&&!d.wirksam&&(0,j.jsx)(z,{children:`Der Timer läuft noch nach einem anderen Plan als eingestellt. Einmal speichern gleicht es an.`}),t[39]=n.schaltbar,t[40]=d.wirksam,t[41]=y):y=t[41],P=`flex flex-wrap items-end gap-2`;let i=R.tag,a;t[42]===Symbol.for(`react.memo_cache_sentinel`)?(a=M.map(J),t[42]=a):a=t[42],h=(0,j.jsxs)(`label`,{className:`flex flex-col gap-1 text-xs text-text-3`,children:[`Tag`,(0,j.jsx)(`select`,{className:`h-11 rounded-xl border border-white/12 bg-white/[0.04] px-3 text-[15px] text-foreground outline-none focus:border-cyan/60 focus:bg-white/[0.06]`,value:i,disabled:!n.schaltbar,"aria-label":`Wochentag`,onChange:e=>c({...R,tag:Number(e.target.value)}),children:a})]}),D=`flex flex-col gap-1 text-xs text-text-3`,O=`Uhrzeit`,m=`h-11 rounded-xl border border-white/12 bg-white/[0.04] px-3 text-[15px] text-foreground outline-none focus:border-cyan/60 focus:bg-white/[0.06]`,b=R.uhrzeit,x=!n.schaltbar,S=`Uhrzeit`,C=e=>c({...R,uhrzeit:e.target.value}),w=e.map(q),t[3]=n.schaltbar,t[4]=o,t[5]=d.naechster_lauf,t[6]=d.neustart_fenster,t[7]=d.tag,t[8]=d.tag_name,t[9]=d.timer_aktiv,t[10]=d.uhrzeit,t[11]=d.wirksam,t[12]=f,t[13]=p,t[14]=m,t[15]=h,t[16]=g,t[17]=_,t[18]=v,t[19]=y,t[20]=b,t[21]=x,t[22]=S,t[23]=C,t[24]=w,t[25]=D,t[26]=O,t[27]=P,t[28]=R}else f=t[12],p=t[13],m=t[14],h=t[15],g=t[16],_=t[17],v=t[18],y=t[19],b=t[20],x=t[21],S=t[22],C=t[23],w=t[24],D=t[25],O=t[26],P=t[27],R=t[28];let V;t[43]!==m||t[44]!==b||t[45]!==x||t[46]!==S||t[47]!==C||t[48]!==w?(V=(0,j.jsx)(`select`,{className:m,value:b,disabled:x,"aria-label":S,onChange:C,children:w}),t[43]=m,t[44]=b,t[45]=x,t[46]=S,t[47]=C,t[48]=w,t[49]=V):V=t[49];let H;t[50]!==V||t[51]!==D||t[52]!==O?(H=(0,j.jsxs)(`label`,{className:D,children:[O,V]}),t[50]=V,t[51]=D,t[52]=O,t[53]=H):H=t[53];let U=!n.schaltbar||a.isPending||!p&&d.wirksam,W;t[54]===Symbol.for(`react.memo_cache_sentinel`)?(W=()=>u(!0),t[54]=W):W=t[54];let G=a.isPending?`Speichert …`:`Speichern`,K;t[55]!==U||t[56]!==G?(K=(0,j.jsx)(T,{disabled:U,onClick:W,children:G}),t[55]=U,t[56]=G,t[57]=K):K=t[57];let Y;t[58]!==h||t[59]!==H||t[60]!==K||t[61]!==P?(Y=(0,j.jsxs)(`div`,{className:P,children:[h,H,K]}),t[58]=h,t[59]=H,t[60]=K,t[61]=P,t[62]=Y):Y=t[62];let X=n.schaltbar?``:` Einstellen lässt es sich nur auf der Box.`,Z;t[63]===X?Z=t[64]:(Z=(0,j.jsxs)(`p`,{className:`text-xs text-text-3`,children:[`Am besten nachts nach der Sicherung (03:30) und vor der Morgenmeldung (07:00).`,X]}),t[63]=X,t[64]=Z);let ee;t[65]!==R.tag||t[66]!==R.uhrzeit?(ee=I(R.tag,R.uhrzeit),t[65]=R.tag,t[66]=R.uhrzeit,t[67]=ee):ee=t[67];let te=`Der Update-Lauf startet ab jetzt jeden ${M[R.tag-1]} um ${R.uhrzeit} Uhr. Neu gestartet wird die Box nur ${ee}. Ein Termin, der dadurch schon vorbei ist, wird nicht nachgeholt: Der erste Lauf ist der nächste reguläre.`,ne;t[68]===Symbol.for(`react.memo_cache_sentinel`)?(ne=()=>u(!1),t[68]=ne):ne=t[68];let Q;t[69]!==l||t[70]!==a||t[71]!==R?(Q=()=>{l&&(a.mutate(R,{onSuccess:()=>c(null)}),u(!1))},t[69]=l,t[70]=a,t[71]=R,t[72]=Q):Q=t[72];let $;t[73]!==l||t[74]!==a.isPending||t[75]!==te||t[76]!==Q?($=(0,j.jsx)(E,{offen:l,titel:`Update-Zeitfenster ändern?`,text:te,knopf:`Speichern`,gesperrt:a.isPending,onNein:ne,onJa:Q}),t[73]=l,t[74]=a.isPending,t[75]=te,t[76]=Q,t[77]=$):$=t[77];let re;return t[78]!==f||t[79]!==g||t[80]!==_||t[81]!==v||t[82]!==y||t[83]!==Y||t[84]!==Z||t[85]!==$?(re=(0,j.jsxs)(f,{titel:g,children:[_,v,y,Y,Z,$]}),t[78]=f,t[79]=g,t[80]=_,t[81]=v,t[82]=y,t[83]=Y,t[84]=Z,t[85]=$,t[86]=re):re=t[86],re}function q(e){return(0,j.jsx)(`option`,{value:e,children:e},e)}function J(e,t){return(0,j.jsx)(`option`,{value:t+1,children:e},e)}function Y(e){let t=(0,k.c)(37),{e:n,laedt:r,fehler:i}=e,a=l(),[o,s]=(0,A.useState)(null);if(!n){let e;return t[0]!==i||t[1]!==r?(e=(0,j.jsx)(L,{titel:`Modell-Radar`,children:(0,j.jsx)(B,{laedt:r,fehler:i})}),t[0]=i,t[1]=r,t[2]=e):e=t[2],e}let c=n.radar,u=c.zustand===`an`||c.zustand===`unbekannt`&&c.an,d;t[3]===c.naechster_lauf?d=t[4]:(d=c.naechster_lauf?` (nächster Lauf ${F(c.naechster_lauf)})`:``,t[3]=c.naechster_lauf,t[4]=d);let f=`An. Es sucht jede Nacht ab 00:30 nach besseren Modellen${d}.`,p=c.an?`Eingeschaltet.`:`Ausgeschaltet.`,m;t[5]!==f||t[6]!==p?(m={an:f,schlaeft:`Schläft. Es sucht und testet keine Modelle, bis du es wieder einschaltest.`,aus:`Gestoppt, steht aber noch im Autostart: Nach einem Neustart der Box liefe es wieder.`,unbekannt:p},t[5]=f,t[6]=p,t[7]=m):m=t[7];let h=m[c.zustand],g;t[8]===h?g=t[9]:(g=(0,j.jsx)(`p`,{className:`text-sm text-text-2`,children:h}),t[8]=h,t[9]=g);let _;t[10]!==n.schaltbar||t[11]!==c.an||t[12]!==c.wirksam?(_=n.schaltbar&&!c.wirksam&&(0,j.jsxs)(z,{children:[`Eingestellt ist „`,c.an?`an`:`aus`,`“, systemd zeigt etwas anderes. Noch einmal schalten gleicht es an.`]}),t[10]=n.schaltbar,t[11]=c.an,t[12]=c.wirksam,t[13]=_):_=t[13];let v=u?`outline`:`default`,y=!n.schaltbar||a.isPending,b;t[14]===u?b=t[15]:(b=()=>s(!u),t[14]=u,t[15]=b);let x=a.isPending?`Schaltet …`:u?`Ausschalten`:`Einschalten`,S;t[16]!==b||t[17]!==x||t[18]!==v||t[19]!==y?(S=(0,j.jsx)(T,{variant:v,size:`sm`,className:`self-start`,disabled:y,onClick:b,children:x}),t[16]=b,t[17]=x,t[18]=v,t[19]=y,t[20]=S):S=t[20];let C=o!==null,w=o?`Modell-Radar einschalten?`:`Modell-Radar ausschalten?`,D=o?`Das Radar sucht ab heute Nacht um 00:30 wieder nach besseren Modellen und testet höchstens eines pro Woche. Ein verpasster Lauf wird nicht nachgeholt, tagsüber lädt es also nichts.`:`Das Radar sucht und testet dann keine neuen Modelle mehr, bis du es wieder einschaltest. Ein Nachttest, der gerade läuft, endet noch. Auch ein Deploy schaltet es nicht wieder ein.`,O=o?`Einschalten`:`Ausschalten`,M;t[21]===Symbol.for(`react.memo_cache_sentinel`)?(M=()=>s(null),t[21]=M):M=t[21];let N;t[22]!==o||t[23]!==a?(N=()=>{o!==null&&(a.mutate(o),s(null))},t[22]=o,t[23]=a,t[24]=N):N=t[24];let P;t[25]!==a.isPending||t[26]!==C||t[27]!==w||t[28]!==D||t[29]!==O||t[30]!==N?(P=(0,j.jsx)(E,{offen:C,titel:w,text:D,knopf:O,gesperrt:a.isPending,onNein:M,onJa:N}),t[25]=a.isPending,t[26]=C,t[27]=w,t[28]=D,t[29]=O,t[30]=N,t[31]=P):P=t[31];let I;return t[32]!==S||t[33]!==P||t[34]!==g||t[35]!==_?(I=(0,j.jsxs)(L,{titel:`Modell-Radar`,children:[g,_,S,P]}),t[32]=S,t[33]=P,t[34]=g,t[35]=_,t[36]=I):I=t[36],I}function X(e){let t=(0,k.c)(25),{name:n,stand:r,laedt:i,fehler:a}=e,o;if(i){let e;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,j.jsx)(`span`,{className:`text-sm text-text-2`,children:`Wird gelesen …`}),t[0]=e):e=t[0],o=e}else if(a){let e;t[1]===a?e=t[2]:(e=(0,j.jsxs)(`span`,{className:`text-sm text-rot-text`,children:[`Nicht lesbar: `,a]}),t[1]=a,t[2]=e),o=e}else if(r?.commit){let e;t[4]===r.commit?e=t[5]:(e=(0,j.jsx)(`span`,{className:`ziffern text-foreground`,children:r.commit}),t[4]=r.commit,t[5]=e);let n=r.betreff?` · ${r.betreff}`:``,i;t[6]!==e||t[7]!==n?(i=(0,j.jsxs)(`span`,{className:`text-sm text-text-2`,children:[e,n]}),t[6]=e,t[7]=n,t[8]=i):i=t[8];let a;t[9]!==r.deploy_zeit||t[10]!==r.quelle?(a=r.quelle===`deploy`?`Live seit ${F(r.deploy_zeit)}`:`Aus git gelesen, ohne Deploy`,t[9]=r.deploy_zeit,t[10]=r.quelle,t[11]=a):a=t[11];let s;t[12]===r.commit_datum?s=t[13]:(s=r.commit_datum?` · Commit vom ${F(r.commit_datum)}`:``,t[12]=r.commit_datum,t[13]=s);let c;t[14]!==a||t[15]!==s?(c=(0,j.jsxs)(`span`,{className:`text-xs text-text-3`,children:[a,s]}),t[14]=a,t[15]=s,t[16]=c):c=t[16];let l;t[17]!==i||t[18]!==c?(l=(0,j.jsxs)(j.Fragment,{children:[i,c]}),t[17]=i,t[18]=c,t[19]=l):l=t[19],o=l}else{let e;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,j.jsx)(`span`,{className:`text-sm text-text-2`,children:`Unbekannt: keine Stand-Datei und kein git.`}),t[3]=e):e=t[3],o=e}let s;t[20]===n?s=t[21]:(s=(0,j.jsx)(`span`,{className:`text-[15px]`,children:n}),t[20]=n,t[21]=s);let c;return t[22]!==o||t[23]!==s?(c=(0,j.jsxs)(`div`,{className:`flex flex-col gap-0.5`,children:[s,o]}),t[22]=o,t[23]=s,t[24]=c):c=t[24],c}function Z(e,t){return!e||!t?null:e.startsWith(t)||t.startsWith(e)}function ee(e){let t=(0,k.c)(21),{offen:n}=e,r=g().data,i=!!r?.partner.eingerichtet,[a,o]=p(n,i),s=a.data?.stand?.commit,c=o.data?.stand?.commit,l;t[0]!==s||t[1]!==c?(l=Z(s,c),t[0]=s,t[1]=c,t[2]=l):l=t[2];let u=l,d=a.data?.instanz??r?.instanz??`Diese Instanz`,f=a.data?.stand,m=a.error?.message,h;t[3]!==a.isPending||t[4]!==d||t[5]!==f||t[6]!==m?(h=(0,j.jsx)(X,{name:d,stand:f,laedt:a.isPending,fehler:m}),t[3]=a.isPending,t[4]=d,t[5]=f,t[6]=m,t[7]=h):h=t[7];let _;t[8]!==r?.partner||t[9]!==o.data?.instanz||t[10]!==o.data?.stand||t[11]!==o.error?.message||t[12]!==o.isPending||t[13]!==i?(_=i&&(0,j.jsx)(X,{name:o.data?.instanz??r?.partner.name??`Partner`,stand:o.data?.stand,laedt:o.isPending,fehler:o.error?.message}),t[8]=r?.partner,t[9]=o.data?.instanz,t[10]=o.data?.stand,t[11]=o.error?.message,t[12]=o.isPending,t[13]=i,t[14]=_):_=t[14];let v;t[15]===u?v=t[16]:(v=u===!1&&(0,j.jsx)(z,{children:`Die beiden Instanzen laufen mit verschiedenen Ständen. Der nächste Deploy der Box zieht den Homelab-Teil mit.`}),t[15]=u,t[16]=v);let y;return t[17]!==h||t[18]!==_||t[19]!==v?(y=(0,j.jsxs)(L,{titel:`Instanzen`,children:[h,_,v]}),t[17]=h,t[18]=_,t[19]=v,t[20]=y):y=t[20],y}function te(e){let t=(0,k.c)(52),{h:n}=e,r=x(),i=C(),[a,o]=(0,A.useState)(``),[s,l]=(0,A.useState)(!1),[u,d]=(0,A.useState)(null),f=n.arcane,p;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(p={hinterlegt:(0,j.jsx)(c,{art:`gruen`,children:`hinterlegt`}),umgebung:(0,j.jsx)(c,{art:`gruen`,children:`aus der Dienst-Einstellung`}),fehlt:(0,j.jsx)(c,{art:`bernstein`,children:`fehlt`})},t[0]=p):p=t[0];let m=p[f.schluessel],h;t[1]===f.url?h=t[2]:(h=f.url&&(0,j.jsxs)(`a`,{href:f.url,target:`_blank`,rel:`noopener`,className:`ml-auto inline-flex items-center gap-1 text-cyan hover:underline`,children:[`Arcane öffnen `,(0,j.jsx)(w,{className:`size-3.5`,"aria-hidden":!0})]}),t[1]=f.url,t[2]=h);let g;t[3]!==m||t[4]!==h?(g=(0,j.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2 text-sm text-text-2`,children:[`API-Schlüssel `,m,h]}),t[3]=m,t[4]=h,t[5]=g):g=t[5];let _;t[6]===Symbol.for(`react.memo_cache_sentinel`)?(_=(0,j.jsx)(`p`,{className:`text-sm text-text-2`,children:`Mit Schlüssel sieht der Orchestrator, welche Docker-Images neuer sind. Anlegen in Arcane unter Einstellungen → API-Schlüssel; Lesen reicht, solange Docker-Updates nur als Probelauf laufen.`}),t[6]=_):_=t[6];let v;t[7]!==f.schluessel||t[8]!==r||t[9]!==a?(v=f.schluessel!==`umgebung`&&(0,j.jsxs)(`form`,{className:`flex gap-2`,onSubmit:e=>{e.preventDefault(),a.trim()&&r.mutate(a.trim(),{onSuccess:()=>o(``)})},children:[(0,j.jsx)(`label`,{htmlFor:`arcane-schluessel`,className:`sr-only`,children:`Arcane-API-Schlüssel`}),(0,j.jsxs)(`span`,{className:`relative min-w-0 flex-1`,children:[(0,j.jsx)(O,{className:`pointer-events-none absolute top-1/2 left-3 size-4 -translate-y-1/2 text-text-3`,"aria-hidden":!0}),(0,j.jsx)(`input`,{id:`arcane-schluessel`,type:`password`,autoComplete:`off`,value:a,onChange:e=>o(e.target.value),placeholder:f.schluessel===`hinterlegt`?`Neuen Schlüssel eintragen …`:`Schlüssel aus Arcane einfügen …`,className:`h-11 w-full rounded-xl border border-white/12 bg-white/[0.04] pr-3 pl-9 text-[15px] outline-none focus:border-lab/60 focus:bg-white/[0.06]`})]}),(0,j.jsx)(T,{type:`submit`,disabled:!a.trim()||r.isPending,children:r.isPending?`Prüft …`:`Prüfen und speichern`})]}),t[7]=f.schluessel,t[8]=r,t[9]=a,t[10]=v):v=t[10];let y;t[11]===Symbol.for(`react.memo_cache_sentinel`)?(y=(0,j.jsx)(`p`,{className:`text-xs text-text-3`,children:`Der Schlüssel wird vor dem Speichern an Arcane geprüft und nie wieder angezeigt. Er liegt nur im Homelab-Teil.`}),t[11]=y):y=t[11];let b;t[12]!==f.schluessel||t[13]!==s||t[14]!==r?(b=f.schluessel===`hinterlegt`&&(s?(0,j.jsxs)(`span`,{className:`flex flex-wrap gap-2`,children:[(0,j.jsx)(T,{variant:`gefahr`,size:`sm`,disabled:r.isPending,onClick:()=>{r.mutate(null),l(!1)},children:`Wirklich entfernen?`}),(0,j.jsx)(T,{variant:`ghost`,size:`sm`,onClick:()=>l(!1),children:`Nein`})]}):(0,j.jsx)(T,{variant:`ghost`,size:`sm`,className:`self-start`,onClick:()=>l(!0),children:`Schlüssel entfernen`})),t[12]=f.schluessel,t[13]=s,t[14]=r,t[15]=b):b=t[15];let S;t[16]!==g||t[17]!==v||t[18]!==b?(S=(0,j.jsxs)(L,{titel:`Arcane (Docker)`,children:[g,_,v,y,b]}),t[16]=g,t[17]=v,t[18]=b,t[19]=S):S=t[19];let D=f.echt?`Echt: „Jetzt updaten“ bei Arcane zieht neue Images und startet die Container neu.`:`Probelauf: Arcane zeigt nur, was es tun würde — kein Container wird angefasst.`,M=f.echt_quelle===`umgebung`?` Festgelegt in der Dienst-Einstellung (MC_ARCANE_ECHT).`:``,N;t[20]!==D||t[21]!==M?(N=(0,j.jsxs)(`p`,{className:`text-sm text-text-2`,children:[D,M]}),t[20]=D,t[21]=M,t[22]=N):N=t[22];let P=f.echt?`outline`:`default`,F=f.echt_quelle===`umgebung`||i.isPending||f.schluessel===`fehlt`,I;t[23]===f.echt?I=t[24]:(I=()=>d(!f.echt),t[23]=f.echt,t[24]=I);let R=i.isPending?`Schaltet …`:f.echt?`Zurück auf Probelauf`:`Echt schalten`,z;t[25]!==P||t[26]!==F||t[27]!==I||t[28]!==R?(z=(0,j.jsx)(T,{variant:P,size:`sm`,className:`self-start`,disabled:F,onClick:I,children:R}),t[25]=P,t[26]=F,t[27]=I,t[28]=R,t[29]=z):z=t[29];let B;t[30]===f.schluessel?B=t[31]:(B=f.schluessel===`fehlt`&&(0,j.jsx)(`p`,{className:`text-xs text-text-3`,children:`Erst den Schlüssel eintragen.`}),t[30]=f.schluessel,t[31]=B);let V=u!==null,H=u?`Docker-Updates echt ausführen?`:`Zurück auf Probelauf?`,U=u?`Ab jetzt zieht „Jetzt updaten“ bei Arcane neue Images und startet die betroffenen Container neu. Vorher wird ein Snapshot der VM angelegt, soweit möglich. Das lässt sich hier jederzeit zurückschalten.`:`Docker-Updates zeigen dann wieder nur, was Arcane tun würde.`,W=u?`Echt schalten`:`Probelauf`,G=!!u,K;t[32]===Symbol.for(`react.memo_cache_sentinel`)?(K=()=>d(null),t[32]=K):K=t[32];let q;t[33]!==i||t[34]!==u?(q=()=>{u!==null&&(i.mutate(u),d(null))},t[33]=i,t[34]=u,t[35]=q):q=t[35];let J;t[36]!==i.isPending||t[37]!==V||t[38]!==H||t[39]!==U||t[40]!==W||t[41]!==G||t[42]!==q?(J=(0,j.jsx)(E,{offen:V,titel:H,text:U,knopf:W,gefahr:G,gesperrt:i.isPending,onNein:K,onJa:q}),t[36]=i.isPending,t[37]=V,t[38]=H,t[39]=U,t[40]=W,t[41]=G,t[42]=q,t[43]=J):J=t[43];let Y;t[44]!==N||t[45]!==z||t[46]!==B||t[47]!==J?(Y=(0,j.jsxs)(L,{titel:`Docker-Updates`,children:[N,z,B,J]}),t[44]=N,t[45]=z,t[46]=B,t[47]=J,t[48]=Y):Y=t[48];let X;return t[49]!==Y||t[50]!==S?(X=(0,j.jsxs)(j.Fragment,{children:[S,Y]}),t[49]=Y,t[50]=S,t[51]=X):X=t[51],X}function ne(e){let t=(0,k.c)(44),{h:n}=e,r=h(),[i,o]=(0,A.useState)(``),[s,l]=(0,A.useState)(``),[u,d]=(0,A.useState)(!1),f=n.adguard;if(!f)return null;let p;t[0]!==f.benutzer||t[1]!==f.zugang?(p=f.zugang===`hinterlegt`?(0,j.jsxs)(c,{art:`gruen`,children:[`hinterlegt`,f.benutzer?` · ${f.benutzer}`:``]}):(0,j.jsx)(c,{art:`grau`,children:`keiner`}),t[0]=f.benutzer,t[1]=f.zugang,t[2]=p):p=t[2];let m;t[3]===f.url?m=t[4]:(m=f.url&&(0,j.jsxs)(`a`,{href:f.url,target:`_blank`,rel:`noopener`,className:`ml-auto inline-flex items-center gap-1 text-cyan hover:underline`,children:[`AdGuard öffnen `,(0,j.jsx)(w,{className:`size-3.5`,"aria-hidden":!0})]}),t[3]=f.url,t[4]=m);let g;t[5]!==p||t[6]!==m?(g=(0,j.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2 text-sm text-text-2`,children:[`Zugang `,p,m]}),t[5]=p,t[6]=m,t[7]=g):g=t[7];let _;t[8]===Symbol.for(`react.memo_cache_sentinel`)?(_=(0,j.jsx)(`p`,{className:`text-sm text-text-2`,children:`Mit einem Zugang zeigt die Kachel von AdGuard, wie viele Anfragen es blockt. Er wird nur zum Lesen der Statistik benutzt — am besten ein eigener Benutzer dafür.`}),t[8]=_):_=t[8];let v;t[9]!==i||t[10]!==s||t[11]!==r?(v=e=>{e.preventDefault(),i.trim()&&s&&r.mutate({benutzer:i.trim(),passwort:s},{onSuccess:()=>{l(``),o(``)}})},t[9]=i,t[10]=s,t[11]=r,t[12]=v):v=t[12];let y;t[13]===Symbol.for(`react.memo_cache_sentinel`)?(y=(0,j.jsx)(`label`,{htmlFor:`adguard-benutzer`,className:`sr-only`,children:`AdGuard-Benutzer`}),t[13]=y):y=t[13];let b;t[14]===Symbol.for(`react.memo_cache_sentinel`)?(b=e=>o(e.target.value),t[14]=b):b=t[14];let x;t[15]===Symbol.for(`react.memo_cache_sentinel`)?(x=a(`h-11 w-full rounded-xl border border-white/12 bg-white/[0.04] px-3 text-[15px] outline-none focus:border-lab/60 focus:bg-white/[0.06]`,`min-w-0 flex-1 basis-40`),t[15]=x):x=t[15];let S;t[16]===i?S=t[17]:(S=(0,j.jsx)(`input`,{id:`adguard-benutzer`,autoComplete:`off`,value:i,onChange:b,placeholder:`Benutzer`,className:x}),t[16]=i,t[17]=S);let C;t[18]===Symbol.for(`react.memo_cache_sentinel`)?(C=(0,j.jsx)(`label`,{htmlFor:`adguard-passwort`,className:`sr-only`,children:`AdGuard-Passwort`}),t[18]=C):C=t[18];let E;t[19]===Symbol.for(`react.memo_cache_sentinel`)?(E=e=>l(e.target.value),t[19]=E):E=t[19];let D;t[20]===Symbol.for(`react.memo_cache_sentinel`)?(D=a(`h-11 w-full rounded-xl border border-white/12 bg-white/[0.04] px-3 text-[15px] outline-none focus:border-lab/60 focus:bg-white/[0.06]`,`min-w-0 flex-1 basis-40`),t[20]=D):D=t[20];let O;t[21]===s?O=t[22]:(O=(0,j.jsx)(`input`,{id:`adguard-passwort`,type:`password`,autoComplete:`new-password`,value:s,onChange:E,placeholder:`Passwort`,className:D}),t[21]=s,t[22]=O);let M;t[23]!==i||t[24]!==s||t[25]!==r.isPending?(M=!i.trim()||!s||r.isPending,t[23]=i,t[24]=s,t[25]=r.isPending,t[26]=M):M=t[26];let N=r.isPending?`Prüft …`:`Prüfen und speichern`,P;t[27]!==M||t[28]!==N?(P=(0,j.jsx)(T,{type:`submit`,disabled:M,children:N}),t[27]=M,t[28]=N,t[29]=P):P=t[29];let F;t[30]!==O||t[31]!==P||t[32]!==v||t[33]!==S?(F=(0,j.jsxs)(`form`,{className:`flex flex-wrap gap-2`,onSubmit:v,children:[y,S,C,O,P]}),t[30]=O,t[31]=P,t[32]=v,t[33]=S,t[34]=F):F=t[34];let I;t[35]===Symbol.for(`react.memo_cache_sentinel`)?(I=(0,j.jsx)(`p`,{className:`text-xs text-text-3`,children:`Vor dem Speichern fragt der Homelab-Teil AdGuard einmal damit. Das Passwort wird nie wieder angezeigt und liegt nur im Homelab-Teil.`}),t[35]=I):I=t[35];let R;t[36]!==f.zugang||t[37]!==u||t[38]!==r?(R=f.zugang===`hinterlegt`&&(u?(0,j.jsxs)(`span`,{className:`flex flex-wrap gap-2`,children:[(0,j.jsx)(T,{variant:`gefahr`,size:`sm`,disabled:r.isPending,onClick:()=>{r.mutate(null),d(!1)},children:`Wirklich entfernen?`}),(0,j.jsx)(T,{variant:`ghost`,size:`sm`,onClick:()=>d(!1),children:`Nein`})]}):(0,j.jsx)(T,{variant:`ghost`,size:`sm`,className:`self-start`,onClick:()=>d(!0),children:`Zugang entfernen`})),t[36]=f.zugang,t[37]=u,t[38]=r,t[39]=R):R=t[39];let z;return t[40]!==F||t[41]!==R||t[42]!==g?(z=(0,j.jsxs)(L,{titel:`AdGuard Home`,children:[g,_,F,I,R]}),t[40]=F,t[41]=R,t[42]=g,t[43]=z):z=t[43],z}function Q(e){let t=(0,k.c)(21),{h:n}=e,r=n.ausfuehrer,i;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(i=(0,j.jsx)(`dt`,{className:`text-text-3`,children:`Ausführer`}),t[0]=i):i=t[0];let a=r.verbunden?`text-gruen-text`:`text-rot-text`,o=r.verbunden?`verbunden`:`meldet sich nicht`,s;t[1]===r.zuletzt?s=t[2]:(s=r.zuletzt?` · zuletzt ${m(new Date(r.zuletzt*1e3).toISOString()).toLowerCase()}`:``,t[1]=r.zuletzt,t[2]=s);let c;t[3]!==a||t[4]!==o||t[5]!==s?(c=(0,j.jsxs)(`dd`,{className:a,children:[o,s]}),t[3]=a,t[4]=o,t[5]=s,t[6]=c):c=t[6];let l;t[7]===Symbol.for(`react.memo_cache_sentinel`)?(l=(0,j.jsx)(`dt`,{className:`text-text-3`,children:`Modus`}),t[7]=l):l=t[7];let u=r.nur_lesen?`nur lesen — Updates sind gesperrt`:`voll: Snapshots, Sicherungen und Updates`,d;t[8]===u?d=t[9]:(d=(0,j.jsx)(`dd`,{className:`text-text-2`,children:u}),t[8]=u,t[9]=d);let f;t[10]===Symbol.for(`react.memo_cache_sentinel`)?(f=(0,j.jsx)(`dt`,{className:`text-text-3`,children:`Sicherungen`}),t[10]=f):f=t[10];let p=r.sicherung_speicher?`auf „${r.sicherung_speicher}“ (wo kein Snapshot geht)`:`kein Speicher gefunden`,h;t[11]===p?h=t[12]:(h=(0,j.jsx)(`dd`,{className:`text-text-2`,children:p}),t[11]=p,t[12]=h);let g;t[13]===Symbol.for(`react.memo_cache_sentinel`)?(g=(0,j.jsx)(`dt`,{className:`text-text-3`,children:`Wartezeit`}),t[13]=g):g=t[13];let _=n.karenz_h>0?`${n.karenz_h} Stunden nach einer Änderung am Update-Skript einer App`:`aus`,v;t[14]===_?v=t[15]:(v=(0,j.jsx)(`dd`,{className:`text-text-2`,children:_}),t[14]=_,t[15]=v);let y;return t[16]!==h||t[17]!==v||t[18]!==c||t[19]!==d?(y=(0,j.jsx)(L,{titel:`Ausführer und Updates`,children:(0,j.jsxs)(`dl`,{className:`grid grid-cols-[auto_minmax(0,1fr)] gap-x-4 gap-y-2 text-sm`,children:[i,c,l,d,f,h,g,v]})}),t[16]=h,t[17]=v,t[18]=c,t[19]=d,t[20]=y):y=t[20],y}function $(){let e=(0,k.c)(8),t=g().data,n=d().data,r=t?.rolle===`homelab`||!!(n?.eingerichtet&&n.erreichbar),i=_(r),a;if(!r){let t;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,j.jsx)(`p`,{className:`text-sm text-text-2`,children:`Der Homelab-Teil antwortet gerade nicht.`}),e[0]=t):t=e[0],a=t}else if(i.data){let t;e[4]===i.data?t=e[5]:(t=(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(te,{h:i.data}),(0,j.jsx)(ne,{h:i.data}),(0,j.jsx)(Q,{h:i.data})]}),e[4]=i.data,e[5]=t),a=t}else{let t=i.error?.message,n;e[1]!==i.isPending||e[2]!==t?(n=(0,j.jsx)(B,{laedt:i.isPending,fehler:t}),e[1]=i.isPending,e[2]=t,e[3]=n):n=e[3],a=n}let o;return e[6]===a?o=e[7]:(o=(0,j.jsx)(R,{titel:`Homelab`,farbe:`homelab`,text:`Arcane und Docker, AdGuard, der Ausführer auf dem Proxmox-Host, Rückwege.`,children:a}),e[6]=a,e[7]=o),o}function re(){let e=(0,k.c)(18),t=S(!0),n=t.error?.message,r;e[0]!==t.data||e[1]!==t.isPending||e[2]!==n?(r={e:t.data,laedt:t.isPending,fehler:n},e[0]=t.data,e[1]=t.isPending,e[2]=n,e[3]=r):r=e[3];let i=r,a,o;e[4]===i?(a=e[5],o=e[6]):(a=(0,j.jsx)(K,{...i}),o=(0,j.jsx)(Y,{...i}),e[4]=i,e[5]=a,e[6]=o);let s;e[7]===Symbol.for(`react.memo_cache_sentinel`)?(s=(0,j.jsx)(V,{offen:!0}),e[7]=s):s=e[7];let c;e[8]===Symbol.for(`react.memo_cache_sentinel`)?(c=(0,j.jsxs)(L,{titel:`Hermes`,children:[(0,j.jsxs)(`a`,{href:`/hermes-ui/`,target:`_blank`,rel:`noopener`,className:`flex h-11 items-center gap-2 self-start rounded-xl border border-white/12 bg-white/[0.04] px-4 text-[15px] font-semibold hover:border-white/20 hover:bg-white/[0.08]`,children:[(0,j.jsx)(w,{className:`size-4`,"aria-hidden":!0}),` Hermes-Dashboard öffnen`]}),(0,j.jsx)(`p`,{className:`text-xs text-text-3`,children:`Chat, Sitzungen und Cron-Jobs verwaltet Hermes selbst. Es fragt nach seiner eigenen Anmeldung.`})]}),e[8]=c):c=e[8];let l;e[9]!==a||e[10]!==o?(l=(0,j.jsxs)(R,{titel:`KI-Box`,farbe:`box`,text:`Wann sie sich aktualisiert, das Modell-Radar und Zugänge.`,children:[a,o,s,c]}),e[9]=a,e[10]=o,e[11]=l):l=e[11];let u;e[12]===Symbol.for(`react.memo_cache_sentinel`)?(u=(0,j.jsx)($,{}),e[12]=u):u=e[12];let d;e[13]===Symbol.for(`react.memo_cache_sentinel`)?(d=(0,j.jsx)(R,{titel:`Meldungen`,text:`Telegram, Morgenmeldung und was sofort kommt.`,children:(0,j.jsx)(U,{})}),e[13]=d):d=e[13];let f;e[14]===Symbol.for(`react.memo_cache_sentinel`)?(f=(0,j.jsx)(R,{titel:`Software-Stand`,text:`Welcher Stand auf beiden Instanzen läuft.`,children:(0,j.jsx)(ee,{offen:!0})}),e[14]=f):f=e[14];let p;e[15]===Symbol.for(`react.memo_cache_sentinel`)?(p=(0,j.jsxs)(`p`,{className:`text-xs text-text-3 xl:col-span-2`,children:[`Logos der Dienste: `,(0,j.jsx)(`a`,{href:`https://selfh.st/icons`,target:`_blank`,rel:`noopener`,className:`underline-offset-4 hover:underline`,children:`selfh.st/icons`}),`, Lizenz CC BY 4.0. Die Marken gehören ihren Inhabern und dienen hier nur dem Wiedererkennen.`]}),e[15]=p):p=e[15];let m;return e[16]===l?m=e[17]:(m=(0,j.jsxs)(`div`,{className:`grid gap-5 md:gap-6 xl:grid-cols-2`,children:[l,u,d,f,p]}),e[16]=l,e[17]=m),m}export{re as EinstellungenSeite}; |