From 5c6e73c69caa96cc8a87bd179b2f1f38c06d9ced Mon Sep 17 00:00:00 2001 From: Hitonabi Date: Fri, 25 Sep 2026 15:51:08 +0200 Subject: [PATCH] design v5: Bausteine der KI-Box-Updates mit Logo; dist gebaut Co-Authored-By: Claude Opus 5.5 --- frontend/dist/assets/Auftraege-BO4bSQmr.js | 2 -- frontend/dist/assets/Auftraege-yNI8sNrj.js | 2 ++ frontend/dist/assets/Bestaetigen-CMlebyiw.js | 1 - frontend/dist/assets/Bestaetigen-DNJdB_zl.js | 1 + frontend/dist/assets/Dienste-Btw1nQIy.js | 1 - frontend/dist/assets/Dienste-BzHBz7yc.js | 1 + frontend/dist/assets/Einstellungen-B9lWkZF-.js | 1 - frontend/dist/assets/Einstellungen-FJlJNgdq.js | 1 + frontend/dist/assets/Homelab-D7JGlciA.js | 1 - frontend/dist/assets/Homelab-UeAs6wHb.js | 1 + frontend/dist/assets/HomelabProtokoll-Bn-4pxRM.js | 1 - frontend/dist/assets/HomelabProtokoll-DtbEOAHL.js | 1 + frontend/dist/assets/HomelabSnapshots-BJnRrB1s.js | 1 - frontend/dist/assets/HomelabSnapshots-CocdJ9DQ.js | 1 + frontend/dist/assets/Lagekopf-PcUY5KZI.js | 1 + frontend/dist/assets/Lampe-gSQfYg4e.js | 1 - frontend/dist/assets/MenueSchublade-B0vlMk4k.js | 1 - frontend/dist/assets/MenueSchublade-dfaMfvPR.js | 1 + frontend/dist/assets/Modelle-CpXbVZza.js | 1 - frontend/dist/assets/Modelle-_bMeyIzl.js | 1 + frontend/dist/assets/Monitoring-Cx9bpZ97.js | 1 - frontend/dist/assets/Monitoring-DuLD6OPr.js | 1 + frontend/dist/assets/Panel-uT1S5ZGr.js | 1 + frontend/dist/assets/Protokollfenster-CLtJNo-e.js | 1 + frontend/dist/assets/Protokollfenster-QxeTYr94.js | 1 - frontend/dist/assets/Start-BEW_FGcW.js | 2 -- frontend/dist/assets/Start-DREQTawa.js | 2 ++ frontend/dist/assets/Updates-BT3dF9QL.js | 2 ++ frontend/dist/assets/Updates-DZ25Ri0a.js | 2 -- .../assets/{breite-pBrnu3_s.js => breite-k-QN6GPl.js} | 2 +- frontend/dist/assets/button-D8rvET0Z.js | 1 - frontend/dist/assets/button-DwYvdWVr.js | 1 + frontend/dist/assets/chevron-right-DF8ikrVh.js | 1 + frontend/dist/assets/chevron-right-lErM2U6o.js | 1 - frontend/dist/assets/dist-D4CVSex9.js | 1 - .../assets/{dist-VQuEcoq-.js => dist-DSmV4Srg.js} | 2 +- frontend/dist/assets/dist-aE7UmubC.js | 1 + frontend/dist/assets/index-BjDzWYEf.js | 11 +++++++++++ frontend/dist/assets/index-CKWhFN2A.js | 11 ----------- frontend/dist/assets/index-Eb5vSjGo.css | 2 ++ frontend/dist/assets/index-h0yYjQNz.css | 2 -- frontend/dist/assets/search-DDxMRsny.js | 1 - frontend/dist/assets/search-RXhRizww.js | 1 + .../assets/{sheet-CHZtsS6E.js => sheet-Bcuh2-nz.js} | 2 +- frontend/dist/assets/undo-2-B8COJmAr.js | 1 + frontend/dist/assets/undo-2-CJEVZ3Al.js | 1 - .../{useMatch-CiyhmkMV.js => useMatch-DDVpPKJI.js} | 2 +- ...seSelector-uUwrspuX.js => useSelector-DBNxxw17.js} | 2 +- frontend/dist/index.html | 10 +++++----- frontend/dist/logos/QUELLE.md | 9 +++++++++ frontend/dist/logos/actual-budget.svg | 1 + frontend/dist/logos/adguard-home.svg | 1 + frontend/dist/logos/affine.svg | 1 + frontend/dist/logos/alpine-linux.svg | 1 + frontend/dist/logos/ansible.svg | 1 + frontend/dist/logos/appflowy.svg | 1 + frontend/dist/logos/apprise.svg | 1 + frontend/dist/logos/arcane.svg | 1 + frontend/dist/logos/audiobookshelf.svg | 1 + frontend/dist/logos/authelia.svg | 1 + frontend/dist/logos/authentik.svg | 1 + frontend/dist/logos/baserow.svg | 1 + frontend/dist/logos/bazarr.svg | 1 + frontend/dist/logos/beszel.svg | 1 + frontend/dist/logos/bitwarden.svg | 1 + frontend/dist/logos/bookstack.svg | 1 + frontend/dist/logos/borgmatic.svg | 1 + frontend/dist/logos/caddy.svg | 1 + frontend/dist/logos/calibre-web.svg | 1 + frontend/dist/logos/changedetection.svg | 1 + frontend/dist/logos/checkmk.svg | 1 + frontend/dist/logos/claude.svg | 1 + frontend/dist/logos/cloudflare.svg | 1 + frontend/dist/logos/cockpit.svg | 1 + frontend/dist/logos/comfyui.svg | 1 + frontend/dist/logos/crafty-controller.svg | 1 + frontend/dist/logos/crowdsec.svg | 1 + frontend/dist/logos/debian.svg | 1 + frontend/dist/logos/deluge.svg | 1 + frontend/dist/logos/docker.svg | 1 + frontend/dist/logos/dockge.svg | 1 + frontend/dist/logos/docmost.svg | 1 + frontend/dist/logos/dozzle.svg | 1 + frontend/dist/logos/draw-io.svg | 1 + frontend/dist/logos/duplicati.svg | 1 + frontend/dist/logos/elasticsearch.svg | 1 + frontend/dist/logos/element.svg | 1 + frontend/dist/logos/emby.svg | 1 + frontend/dist/logos/esphome.svg | 1 + frontend/dist/logos/excalidraw.svg | 1 + frontend/dist/logos/firefly-iii.svg | 1 + frontend/dist/logos/flatnotes.svg | 1 + frontend/dist/logos/forgejo.svg | 1 + frontend/dist/logos/freshrss.svg | 1 + frontend/dist/logos/frigate.svg | 1 + frontend/dist/logos/gatus.svg | 1 + frontend/dist/logos/gitea.svg | 1 + frontend/dist/logos/github.svg | 1 + frontend/dist/logos/gitlab.svg | 1 + frontend/dist/logos/glance.svg | 1 + frontend/dist/logos/glances.svg | 1 + frontend/dist/logos/go2rtc.svg | 1 + frontend/dist/logos/gotify.svg | 1 + frontend/dist/logos/grafana.svg | 1 + frontend/dist/logos/grocy.svg | 1 + frontend/dist/logos/harbor.svg | 1 + frontend/dist/logos/headscale.svg | 1 + frontend/dist/logos/healthchecks.svg | 1 + frontend/dist/logos/hedgedoc.svg | 1 + frontend/dist/logos/heimdall.svg | 1 + frontend/dist/logos/hermes-agent.svg | 1 + frontend/dist/logos/homarr.svg | 1 + frontend/dist/logos/home-assistant.svg | 1 + frontend/dist/logos/homebridge.svg | 1 + frontend/dist/logos/homepage.svg | 1 + frontend/dist/logos/immich-kiosk.svg | 1 + frontend/dist/logos/immich.svg | 1 + frontend/dist/logos/influxdb.svg | 1 + frontend/dist/logos/it-tools.svg | 1 + frontend/dist/logos/jellyfin.svg | 1 + frontend/dist/logos/jellyseerr.svg | 1 + frontend/dist/logos/jenkins.svg | 1 + frontend/dist/logos/jitsi-meet.svg | 1 + frontend/dist/logos/joplin.svg | 1 + frontend/dist/logos/kavita.svg | 1 + frontend/dist/logos/keycloak.svg | 1 + frontend/dist/logos/komga.svg | 1 + frontend/dist/logos/komodo.svg | 1 + frontend/dist/logos/kopia.svg | 1 + frontend/dist/logos/kubernetes.svg | 1 + frontend/dist/logos/librenms.svg | 1 + frontend/dist/logos/librespeed.svg | 1 + frontend/dist/logos/lidarr.svg | 1 + frontend/dist/logos/linkding.svg | 1 + frontend/dist/logos/linux-containers-lxc.svg | 1 + frontend/dist/logos/linux.svg | 1 + frontend/dist/logos/linuxserver-io.svg | 1 + frontend/dist/logos/llama-cpp.svg | 1 + frontend/dist/logos/logseq.svg | 1 + frontend/dist/logos/loki.svg | 1 + frontend/dist/logos/mariadb.svg | 1 + frontend/dist/logos/matomo.svg | 1 + frontend/dist/logos/matrix.svg | 1 + frontend/dist/logos/mattermost.svg | 1 + frontend/dist/logos/mealie.svg | 1 + frontend/dist/logos/minecraft.svg | 1 + frontend/dist/logos/miniflux.svg | 1 + frontend/dist/logos/minio.svg | 1 + frontend/dist/logos/mongodb.svg | 1 + frontend/dist/logos/mosquitto.svg | 1 + frontend/dist/logos/n8n.svg | 1 + frontend/dist/logos/navidrome.svg | 1 + frontend/dist/logos/netbird.svg | 1 + frontend/dist/logos/netdata.svg | 1 + frontend/dist/logos/nextcloud.svg | 1 + frontend/dist/logos/nginx-proxy-manager.svg | 1 + frontend/dist/logos/nginx.svg | 1 + frontend/dist/logos/nocodb.svg | 1 + frontend/dist/logos/node-red.svg | 1 + frontend/dist/logos/ntfy.svg | 1 + frontend/dist/logos/nzbget.svg | 1 + frontend/dist/logos/obsidian.svg | 1 + frontend/dist/logos/ollama.svg | 1 + frontend/dist/logos/onlyoffice.svg | 1 + frontend/dist/logos/open-webui.svg | 1 + frontend/dist/logos/openai.svg | 1 + frontend/dist/logos/openmediavault.svg | 1 + frontend/dist/logos/openwrt.svg | 1 + frontend/dist/logos/opnsense.svg | 1 + frontend/dist/logos/outline.svg | 1 + frontend/dist/logos/overseerr.svg | 1 + frontend/dist/logos/paperless-ngx.svg | 1 + frontend/dist/logos/penpot.svg | 1 + frontend/dist/logos/pfsense.svg | 1 + frontend/dist/logos/photoprism.svg | 1 + frontend/dist/logos/pi-hole.svg | 1 + frontend/dist/logos/pingvin-share.svg | 1 + frontend/dist/logos/piwigo.svg | 1 + frontend/dist/logos/planka.svg | 1 + frontend/dist/logos/plausible.svg | 1 + frontend/dist/logos/plex.svg | 1 + frontend/dist/logos/portainer.svg | 1 + frontend/dist/logos/postgresql.svg | 1 + frontend/dist/logos/privatebin.svg | 1 + frontend/dist/logos/prometheus.svg | 1 + frontend/dist/logos/prowlarr.svg | 1 + frontend/dist/logos/proxmox-helper-scripts.svg | 1 + frontend/dist/logos/proxmox.svg | 1 + frontend/dist/logos/pterodactyl.svg | 1 + frontend/dist/logos/qbittorrent.svg | 1 + frontend/dist/logos/qnap.svg | 1 + frontend/dist/logos/rabbitmq.svg | 1 + frontend/dist/logos/radarr.svg | 1 + frontend/dist/logos/rancher.svg | 1 + frontend/dist/logos/rclone.svg | 1 + frontend/dist/logos/readarr.svg | 1 + frontend/dist/logos/redis.svg | 1 + frontend/dist/logos/rocket-chat.svg | 1 + frontend/dist/logos/rustdesk.svg | 1 + frontend/dist/logos/sabnzbd.svg | 1 + frontend/dist/logos/scrutiny.svg | 1 + frontend/dist/logos/scrypted.svg | 1 + frontend/dist/logos/seafile.svg | 1 + frontend/dist/logos/searxng.svg | 1 + frontend/dist/logos/semaphore.svg | 1 + frontend/dist/logos/sonarr.svg | 1 + frontend/dist/logos/speedtest-tracker.svg | 1 + frontend/dist/logos/stirling-pdf.svg | 1 + frontend/dist/logos/syncthing.svg | 1 + frontend/dist/logos/synology.svg | 1 + frontend/dist/logos/tailscale.svg | 1 + frontend/dist/logos/tautulli.svg | 1 + frontend/dist/logos/telegram.svg | 1 + frontend/dist/logos/traefik.svg | 1 + frontend/dist/logos/transmission.svg | 1 + frontend/dist/logos/ubuntu.svg | 1 + frontend/dist/logos/umami.svg | 1 + frontend/dist/logos/unraid.svg | 1 + frontend/dist/logos/uptime-kuma.svg | 1 + frontend/dist/logos/vaultwarden.svg | 1 + frontend/dist/logos/vikunja.svg | 1 + frontend/dist/logos/wallabag.svg | 1 + frontend/dist/logos/watchtower.svg | 1 + frontend/dist/logos/webmin.svg | 1 + frontend/dist/logos/wekan.svg | 1 + frontend/dist/logos/wiki-js.svg | 1 + frontend/dist/logos/wireguard.svg | 1 + frontend/dist/logos/woodpecker-ci.svg | 1 + frontend/dist/logos/wordpress.svg | 1 + frontend/dist/logos/zabbix.svg | 1 + frontend/dist/logos/zigbee2mqtt.svg | 1 + frontend/src/views/Updates.tsx | 11 ++++++++--- 232 files changed, 244 insertions(+), 48 deletions(-) delete mode 100644 frontend/dist/assets/Auftraege-BO4bSQmr.js create mode 100644 frontend/dist/assets/Auftraege-yNI8sNrj.js delete mode 100644 frontend/dist/assets/Bestaetigen-CMlebyiw.js create mode 100644 frontend/dist/assets/Bestaetigen-DNJdB_zl.js delete mode 100644 frontend/dist/assets/Dienste-Btw1nQIy.js create mode 100644 frontend/dist/assets/Dienste-BzHBz7yc.js delete mode 100644 frontend/dist/assets/Einstellungen-B9lWkZF-.js create mode 100644 frontend/dist/assets/Einstellungen-FJlJNgdq.js delete mode 100644 frontend/dist/assets/Homelab-D7JGlciA.js create mode 100644 frontend/dist/assets/Homelab-UeAs6wHb.js delete mode 100644 frontend/dist/assets/HomelabProtokoll-Bn-4pxRM.js create mode 100644 frontend/dist/assets/HomelabProtokoll-DtbEOAHL.js delete mode 100644 frontend/dist/assets/HomelabSnapshots-BJnRrB1s.js create mode 100644 frontend/dist/assets/HomelabSnapshots-CocdJ9DQ.js create mode 100644 frontend/dist/assets/Lagekopf-PcUY5KZI.js delete mode 100644 frontend/dist/assets/Lampe-gSQfYg4e.js delete mode 100644 frontend/dist/assets/MenueSchublade-B0vlMk4k.js create mode 100644 frontend/dist/assets/MenueSchublade-dfaMfvPR.js delete mode 100644 frontend/dist/assets/Modelle-CpXbVZza.js create mode 100644 frontend/dist/assets/Modelle-_bMeyIzl.js delete mode 100644 frontend/dist/assets/Monitoring-Cx9bpZ97.js create mode 100644 frontend/dist/assets/Monitoring-DuLD6OPr.js create mode 100644 frontend/dist/assets/Panel-uT1S5ZGr.js create mode 100644 frontend/dist/assets/Protokollfenster-CLtJNo-e.js delete mode 100644 frontend/dist/assets/Protokollfenster-QxeTYr94.js delete mode 100644 frontend/dist/assets/Start-BEW_FGcW.js create mode 100644 frontend/dist/assets/Start-DREQTawa.js create mode 100644 frontend/dist/assets/Updates-BT3dF9QL.js delete mode 100644 frontend/dist/assets/Updates-DZ25Ri0a.js rename frontend/dist/assets/{breite-pBrnu3_s.js => breite-k-QN6GPl.js} (76%) delete mode 100644 frontend/dist/assets/button-D8rvET0Z.js create mode 100644 frontend/dist/assets/button-DwYvdWVr.js create mode 100644 frontend/dist/assets/chevron-right-DF8ikrVh.js delete mode 100644 frontend/dist/assets/chevron-right-lErM2U6o.js delete mode 100644 frontend/dist/assets/dist-D4CVSex9.js rename frontend/dist/assets/{dist-VQuEcoq-.js => dist-DSmV4Srg.js} (99%) create mode 100644 frontend/dist/assets/dist-aE7UmubC.js create mode 100644 frontend/dist/assets/index-BjDzWYEf.js delete mode 100644 frontend/dist/assets/index-CKWhFN2A.js create mode 100644 frontend/dist/assets/index-Eb5vSjGo.css delete mode 100644 frontend/dist/assets/index-h0yYjQNz.css delete mode 100644 frontend/dist/assets/search-DDxMRsny.js create mode 100644 frontend/dist/assets/search-RXhRizww.js rename frontend/dist/assets/{sheet-CHZtsS6E.js => sheet-Bcuh2-nz.js} (93%) create mode 100644 frontend/dist/assets/undo-2-B8COJmAr.js delete mode 100644 frontend/dist/assets/undo-2-CJEVZ3Al.js rename frontend/dist/assets/{useMatch-CiyhmkMV.js => useMatch-DDVpPKJI.js} (78%) rename frontend/dist/assets/{useSelector-uUwrspuX.js => useSelector-DBNxxw17.js} (89%) create mode 100644 frontend/dist/logos/QUELLE.md create mode 100644 frontend/dist/logos/actual-budget.svg create mode 100644 frontend/dist/logos/adguard-home.svg create mode 100644 frontend/dist/logos/affine.svg create mode 100644 frontend/dist/logos/alpine-linux.svg create mode 100644 frontend/dist/logos/ansible.svg create mode 100644 frontend/dist/logos/appflowy.svg create mode 100644 frontend/dist/logos/apprise.svg create mode 100644 frontend/dist/logos/arcane.svg create mode 100644 frontend/dist/logos/audiobookshelf.svg create mode 100644 frontend/dist/logos/authelia.svg create mode 100644 frontend/dist/logos/authentik.svg create mode 100644 frontend/dist/logos/baserow.svg create mode 100644 frontend/dist/logos/bazarr.svg create mode 100644 frontend/dist/logos/beszel.svg create mode 100644 frontend/dist/logos/bitwarden.svg create mode 100644 frontend/dist/logos/bookstack.svg create mode 100644 frontend/dist/logos/borgmatic.svg create mode 100644 frontend/dist/logos/caddy.svg create mode 100644 frontend/dist/logos/calibre-web.svg create mode 100644 frontend/dist/logos/changedetection.svg create mode 100644 frontend/dist/logos/checkmk.svg create mode 100644 frontend/dist/logos/claude.svg create mode 100644 frontend/dist/logos/cloudflare.svg create mode 100644 frontend/dist/logos/cockpit.svg create mode 100644 frontend/dist/logos/comfyui.svg create mode 100644 frontend/dist/logos/crafty-controller.svg create mode 100644 frontend/dist/logos/crowdsec.svg create mode 100644 frontend/dist/logos/debian.svg create mode 100644 frontend/dist/logos/deluge.svg create mode 100644 frontend/dist/logos/docker.svg create mode 100644 frontend/dist/logos/dockge.svg create mode 100644 frontend/dist/logos/docmost.svg create mode 100644 frontend/dist/logos/dozzle.svg create mode 100644 frontend/dist/logos/draw-io.svg create mode 100644 frontend/dist/logos/duplicati.svg create mode 100644 frontend/dist/logos/elasticsearch.svg create mode 100644 frontend/dist/logos/element.svg create mode 100644 frontend/dist/logos/emby.svg create mode 100644 frontend/dist/logos/esphome.svg create mode 100644 frontend/dist/logos/excalidraw.svg create mode 100644 frontend/dist/logos/firefly-iii.svg create mode 100644 frontend/dist/logos/flatnotes.svg create mode 100644 frontend/dist/logos/forgejo.svg create mode 100644 frontend/dist/logos/freshrss.svg create mode 100644 frontend/dist/logos/frigate.svg create mode 100644 frontend/dist/logos/gatus.svg create mode 100644 frontend/dist/logos/gitea.svg create mode 100644 frontend/dist/logos/github.svg create mode 100644 frontend/dist/logos/gitlab.svg create mode 100644 frontend/dist/logos/glance.svg create mode 100644 frontend/dist/logos/glances.svg create mode 100644 frontend/dist/logos/go2rtc.svg create mode 100644 frontend/dist/logos/gotify.svg create mode 100644 frontend/dist/logos/grafana.svg create mode 100644 frontend/dist/logos/grocy.svg create mode 100644 frontend/dist/logos/harbor.svg create mode 100644 frontend/dist/logos/headscale.svg create mode 100644 frontend/dist/logos/healthchecks.svg create mode 100644 frontend/dist/logos/hedgedoc.svg create mode 100644 frontend/dist/logos/heimdall.svg create mode 100644 frontend/dist/logos/hermes-agent.svg create mode 100644 frontend/dist/logos/homarr.svg create mode 100644 frontend/dist/logos/home-assistant.svg create mode 100644 frontend/dist/logos/homebridge.svg create mode 100644 frontend/dist/logos/homepage.svg create mode 100644 frontend/dist/logos/immich-kiosk.svg create mode 100644 frontend/dist/logos/immich.svg create mode 100644 frontend/dist/logos/influxdb.svg create mode 100644 frontend/dist/logos/it-tools.svg create mode 100644 frontend/dist/logos/jellyfin.svg create mode 100644 frontend/dist/logos/jellyseerr.svg create mode 100644 frontend/dist/logos/jenkins.svg create mode 100644 frontend/dist/logos/jitsi-meet.svg create mode 100644 frontend/dist/logos/joplin.svg create mode 100644 frontend/dist/logos/kavita.svg create mode 100644 frontend/dist/logos/keycloak.svg create mode 100644 frontend/dist/logos/komga.svg create mode 100644 frontend/dist/logos/komodo.svg create mode 100644 frontend/dist/logos/kopia.svg create mode 100644 frontend/dist/logos/kubernetes.svg create mode 100644 frontend/dist/logos/librenms.svg create mode 100644 frontend/dist/logos/librespeed.svg create mode 100644 frontend/dist/logos/lidarr.svg create mode 100644 frontend/dist/logos/linkding.svg create mode 100644 frontend/dist/logos/linux-containers-lxc.svg create mode 100644 frontend/dist/logos/linux.svg create mode 100644 frontend/dist/logos/linuxserver-io.svg create mode 100644 frontend/dist/logos/llama-cpp.svg create mode 100644 frontend/dist/logos/logseq.svg create mode 100644 frontend/dist/logos/loki.svg create mode 100644 frontend/dist/logos/mariadb.svg create mode 100644 frontend/dist/logos/matomo.svg create mode 100644 frontend/dist/logos/matrix.svg create mode 100644 frontend/dist/logos/mattermost.svg create mode 100644 frontend/dist/logos/mealie.svg create mode 100644 frontend/dist/logos/minecraft.svg create mode 100644 frontend/dist/logos/miniflux.svg create mode 100644 frontend/dist/logos/minio.svg create mode 100644 frontend/dist/logos/mongodb.svg create mode 100644 frontend/dist/logos/mosquitto.svg create mode 100644 frontend/dist/logos/n8n.svg create mode 100644 frontend/dist/logos/navidrome.svg create mode 100644 frontend/dist/logos/netbird.svg create mode 100644 frontend/dist/logos/netdata.svg create mode 100644 frontend/dist/logos/nextcloud.svg create mode 100644 frontend/dist/logos/nginx-proxy-manager.svg create mode 100644 frontend/dist/logos/nginx.svg create mode 100644 frontend/dist/logos/nocodb.svg create mode 100644 frontend/dist/logos/node-red.svg create mode 100644 frontend/dist/logos/ntfy.svg create mode 100644 frontend/dist/logos/nzbget.svg create mode 100644 frontend/dist/logos/obsidian.svg create mode 100644 frontend/dist/logos/ollama.svg create mode 100644 frontend/dist/logos/onlyoffice.svg create mode 100644 frontend/dist/logos/open-webui.svg create mode 100644 frontend/dist/logos/openai.svg create mode 100644 frontend/dist/logos/openmediavault.svg create mode 100644 frontend/dist/logos/openwrt.svg create mode 100644 frontend/dist/logos/opnsense.svg create mode 100644 frontend/dist/logos/outline.svg create mode 100644 frontend/dist/logos/overseerr.svg create mode 100644 frontend/dist/logos/paperless-ngx.svg create mode 100644 frontend/dist/logos/penpot.svg create mode 100644 frontend/dist/logos/pfsense.svg create mode 100644 frontend/dist/logos/photoprism.svg create mode 100644 frontend/dist/logos/pi-hole.svg create mode 100644 frontend/dist/logos/pingvin-share.svg create mode 100644 frontend/dist/logos/piwigo.svg create mode 100644 frontend/dist/logos/planka.svg create mode 100644 frontend/dist/logos/plausible.svg create mode 100644 frontend/dist/logos/plex.svg create mode 100644 frontend/dist/logos/portainer.svg create mode 100644 frontend/dist/logos/postgresql.svg create mode 100644 frontend/dist/logos/privatebin.svg create mode 100644 frontend/dist/logos/prometheus.svg create mode 100644 frontend/dist/logos/prowlarr.svg create mode 100644 frontend/dist/logos/proxmox-helper-scripts.svg create mode 100644 frontend/dist/logos/proxmox.svg create mode 100644 frontend/dist/logos/pterodactyl.svg create mode 100644 frontend/dist/logos/qbittorrent.svg create mode 100644 frontend/dist/logos/qnap.svg create mode 100644 frontend/dist/logos/rabbitmq.svg create mode 100644 frontend/dist/logos/radarr.svg create mode 100644 frontend/dist/logos/rancher.svg create mode 100644 frontend/dist/logos/rclone.svg create mode 100644 frontend/dist/logos/readarr.svg create mode 100644 frontend/dist/logos/redis.svg create mode 100644 frontend/dist/logos/rocket-chat.svg create mode 100644 frontend/dist/logos/rustdesk.svg create mode 100644 frontend/dist/logos/sabnzbd.svg create mode 100644 frontend/dist/logos/scrutiny.svg create mode 100644 frontend/dist/logos/scrypted.svg create mode 100644 frontend/dist/logos/seafile.svg create mode 100644 frontend/dist/logos/searxng.svg create mode 100644 frontend/dist/logos/semaphore.svg create mode 100644 frontend/dist/logos/sonarr.svg create mode 100644 frontend/dist/logos/speedtest-tracker.svg create mode 100644 frontend/dist/logos/stirling-pdf.svg create mode 100644 frontend/dist/logos/syncthing.svg create mode 100644 frontend/dist/logos/synology.svg create mode 100644 frontend/dist/logos/tailscale.svg create mode 100644 frontend/dist/logos/tautulli.svg create mode 100644 frontend/dist/logos/telegram.svg create mode 100644 frontend/dist/logos/traefik.svg create mode 100644 frontend/dist/logos/transmission.svg create mode 100644 frontend/dist/logos/ubuntu.svg create mode 100644 frontend/dist/logos/umami.svg create mode 100644 frontend/dist/logos/unraid.svg create mode 100644 frontend/dist/logos/uptime-kuma.svg create mode 100644 frontend/dist/logos/vaultwarden.svg create mode 100644 frontend/dist/logos/vikunja.svg create mode 100644 frontend/dist/logos/wallabag.svg create mode 100644 frontend/dist/logos/watchtower.svg create mode 100644 frontend/dist/logos/webmin.svg create mode 100644 frontend/dist/logos/wekan.svg create mode 100644 frontend/dist/logos/wiki-js.svg create mode 100644 frontend/dist/logos/wireguard.svg create mode 100644 frontend/dist/logos/woodpecker-ci.svg create mode 100644 frontend/dist/logos/wordpress.svg create mode 100644 frontend/dist/logos/zabbix.svg create mode 100644 frontend/dist/logos/zigbee2mqtt.svg diff --git a/frontend/dist/assets/Auftraege-BO4bSQmr.js b/frontend/dist/assets/Auftraege-BO4bSQmr.js deleted file mode 100644 index 0d25b67..0000000 --- a/frontend/dist/assets/Auftraege-BO4bSQmr.js +++ /dev/null @@ -1,2 +0,0 @@ -import{i as e,n as t,r as n,s as r,t as i}from"./dist-D4CVSex9.js";import{It as a,Pt as o,S as s,Yt as c,b as l,ct as u,lt as d,st as f}from"./index-CKWhFN2A.js";import{t as p}from"./button-D8rvET0Z.js";import{t as m}from"./Bestaetigen-CMlebyiw.js";var h=t();function g(e,t){if(e===`os`)return{laeuft:`Ubuntu`,neu:t.count?`${t.count} ${t.count===1?`Paket`:`Pakete`}`:null};if(e===`hermes`)return{laeuft:t.installed_version?`v${t.installed_version}`:`–`,neu:t.behind?`+${t.behind.toLocaleString(`de-DE`)} Änderungen`:null};let n=e===`engine`?`b`:`v`;return{laeuft:t.installed_build==null?`–`:`${n}${t.installed_build}`,neu:t.latest_build!=null&&t.installed_build!=null&&t.latest_build>t.installed_build?`${n}${t.latest_build}`:null}}function _(e,t){return!t||t.error?null:e===`os`?typeof t.count==`number`?t.count>0:null:e===`hermes`?typeof t.behind==`number`?t.behind>0:null:t.latest_build==null||t.installed_build==null?null:t.latest_build>t.installed_build}function v(e){let t=e.trim();return/timed out|timeout|zeitüberschreitung/i.test(t)?`Konnte nicht prüfen: Die Gegenstelle hat nicht rechtzeitig geantwortet. Später klappt es meist wieder.`:/name resolution|name or service not known|network is unreachable|connection (refused|reset)|nicht erreichbar/i.test(t)?`Konnte nicht prüfen: Die Box kommt gerade nicht ins Internet.`:`Konnte nicht prüfen: ${t.length>160?`${t.slice(0,157)}…`:t}`}var y=e=>e.group===`download`||/^download\s/i.test(e.label),b=e=>e.group===`pruefen`||e.label===`Nach Updates suchen`,x=e=>c(e)&&y(e),S=[[/^download\s+(.+)$/i,`Download $1`],[/^OS-Update \(apt\)$/,`Update Betriebssystem`],[/^Engine-Update \(llama\.cpp Vulkan\)$/,`Update Motor (llama.cpp)`],[/^Router-Update \(llama-swap\)$/,`Update llama-swap`],[/^Hermes-Agent-Update$/,`Update Hermes`]],C=[[`Engine (llama.cpp)`,`Motor`],[`Router (llama-swap)`,`llama-swap`],[`Hermes-Agent`,`Hermes`],[`OS (apt)`,`Betriebssystem`]];function w(e){for(let[t,n]of S)if(t.test(e.label))return e.label.replace(t,n);return e.label.startsWith(`Alle aktualisieren`)?C.reduce((e,[t,n])=>e.split(t).join(n),e.label):e.label}function T(e){if(e<60)return`noch unter einer Minute`;let t=Math.round(e/60);if(t<60)return`noch etwa ${t} min`;let n=Math.floor(t/60),r=t%60;return r?`noch etwa ${n} h ${r} min`:`noch etwa ${n} h`}function E(e,t=Date.now()/1e3){let n=Math.max(0,t-e.started_at),r=Math.floor(n/60),i=n<60?`ein paar Sekunden`:r<60?`${r} min`:`${Math.floor(r/60)} h ${r%60} min`;return`${e.state===`queued`?`Wartet`:`Läuft`} seit ${i}`}function D(e){if(e.progress==null)return null;let t=[`${Math.round(e.progress)} %`];return e.total_bytes&&t.push(`${a(e.done_bytes??0,1)} von ${a(e.total_bytes,1)}`),e.eta_s!=null&&c(e)&&t.push(T(e.eta_s)),t.join(` · `)}function O(e){for(let t=(e.log?.length??0)-1;t>=0;t--){let n=e.log[t].trim();if(n&&!n.startsWith(`$ `))return n}return null}function k(e,t=Date.now()/1e3){let n=e.filter(c).sort((e,t)=>e.started_at-t.started_at),r=e.filter(e=>!c(e)&&!e.quittiert&&t-(e.finished_at??e.started_at)<86400).sort((e,t)=>(t.finished_at??t.started_at)-(e.finished_at??e.started_at)).slice(0,3);return[...n,...r]}function A(e,t,n){if(!n)return`Nach dem Download übernimmt ${e} die Rolle „${t}“.`;let r=n.weitere.length?` Die Rolle${n.weitere.length===1?``:`n`} „${n.weitere.join(`“, „`)}“ behält es.`:``;return`Achtung: Nach dem Download übernimmt ${e} die Rolle „${t}“ und ersetzt damit ${n.name}. Das bisherige Modell bleibt auf der Platte.${r}`+(n.zwilling?` Bilder liest vorerst weiter sein Bild-Zwilling, also noch das bisherige Modell.`:``)}function j(e){return`Kurze Unterbrechung: Beim Eintragen lädt llama-swap sofort neu. Was Lucy oder OpenChamber gerade schreiben, bricht ab, und die Modelle werden neu geladen.`+(e?` Mit Rolle passiert das nach dem Download noch einmal.`:``)}var M=r(e(),1),N=n(),P={queued:{text:`Wartet`,art:`cyan`},running:{text:`Läuft`,art:`cyan`},done:{text:`Fertig`,art:`gruen`},failed:{text:`Fehler`,art:`rot`},canceled:{text:`Abgebrochen`,art:`grau`}},F={queued:`bg-cyan`,running:`bg-cyan`,done:`bg-gruen`,failed:`bg-rot`,canceled:`bg-text-3`},I=e=>o(new Date(e*1e3).toISOString());function L(e){let t=(0,h.c)(3),[n,r]=(0,M.useState)(R),i,a;return t[0]===e?(i=t[1],a=t[2]):(i=()=>{if(!e)return;let t=window.setInterval(()=>r(Date.now()/1e3),3e4);return()=>window.clearInterval(t)},a=[e],t[0]=e,t[1]=i,t[2]=a),(0,M.useEffect)(i,a),n}function R(){return Date.now()/1e3}function z(e){let t=(0,h.c)(76),{job:n,onAbbrechen:r,onQuittieren:a,abbrechenGesperrt:o,ebene:l}=e,u=l===void 0?4:l,[d,f]=(0,M.useState)(!1),[g,_]=(0,M.useState)(!1),v;t[0]===n.state?v=t[1]:(v=P[n.state]??{text:n.state,art:`grau`},t[0]=n.state,t[1]=v);let b=v,S;t[2]===n?S=t[3]:(S=w(n),t[2]=n,t[3]=S);let C=S,T;t[4]===n?T=t[5]:(T=D(n),t[4]=n,t[5]=T);let k=T,A;t[6]===n?A=t[7]:(A=O(n),t[6]=n,t[7]=A);let j=A,R;t[8]===n?R=t[9]:(R=c(n),t[8]=n,t[9]=R);let z=R,B=L(z),V;t[10]!==n||t[11]!==r?(V=!!r&&x(n),t[10]=n,t[11]=r,t[12]=V):V=t[12];let H=V,U,W,G,K,q,J,Y,X;if(t[13]!==o||t[14]!==H||t[15]!==u||t[16]!==k||t[17]!==B||t[18]!==n||t[19]!==z||t[20]!==j||t[21]!==a||t[22]!==g||t[23]!==C||t[24]!==b.art||t[25]!==b.text){let e=(n.log??[]).slice(-12),r=u===3?`h3`:`h4`;Y=`Auftrag: ${C}`,X=`flex flex-col gap-2.5 rounded-xl border border-linie bg-erhaben/50 p-3.5`;let c;t[34]!==r||t[35]!==C?(c=(0,N.jsx)(r,{className:`m-0 min-w-0 text-[15px] leading-snug font-semibold break-words`,children:C}),t[34]=r,t[35]=C,t[36]=c):c=t[36];let l;t[37]!==b.art||t[38]!==b.text?(l=(0,N.jsx)(s,{art:b.art,children:b.text}),t[37]=b.art,t[38]=b.text,t[39]=l):l=t[39],t[40]!==c||t[41]!==l?(U=(0,N.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[c,l]}),t[40]=c,t[41]=l,t[42]=U):U=t[42],t[43]!==n.progress||t[44]!==n.state||t[45]!==C?(W=n.progress!=null&&(0,N.jsx)(`div`,{role:`progressbar`,"aria-label":`Fortschritt: ${C}`,"aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":Math.round(n.progress),className:`h-2 overflow-hidden rounded-full bg-linie`,children:(0,N.jsx)(`div`,{className:i(`h-full`,F[n.state]??`bg-cyan`),style:{width:`${Math.max(2,Math.min(100,n.progress))}%`}})}),t[43]=n.progress,t[44]=n.state,t[45]=C,t[46]=W):W=t[46];let d;t[47]!==k||t[48]!==B||t[49]!==n||t[50]!==z||t[51]!==b.text?(d=z?k??E(n,B):`${b.text} · ${I(n.finished_at??n.started_at)}`,t[47]=k,t[48]=B,t[49]=n,t[50]=z,t[51]=b.text,t[52]=d):d=t[52],t[53]===d?G=t[54]:(G=(0,N.jsx)(`p`,{className:`ziffern m-0 text-sm text-text-2`,children:d}),t[53]=d,t[54]=G),t[55]!==n.progress||t[56]!==n.state||t[57]!==z||t[58]!==j?(K=j&&(n.state===`failed`||z&&n.progress==null)&&(0,N.jsx)(`p`,{className:n.state===`failed`?`m-0 text-sm break-words text-rot-text`:`ziffern m-0 line-clamp-2 text-xs break-all text-text-3`,children:n.state===`failed`?`Letzte Meldung: ${j}`:j}),t[55]=n.progress,t[56]=n.state,t[57]=z,t[58]=j,t[59]=K):K=t[59],q=(H||e.length>1||!z&&a)&&(0,N.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[H&&(0,N.jsx)(p,{variant:`outline`,size:`sm`,disabled:o,onClick:()=>f(!0),children:`Abbrechen`}),e.length>1&&(0,N.jsx)(p,{variant:`ghost`,size:`sm`,"aria-expanded":g,onClick:()=>_(!g),children:g?`Protokoll zu`:`Protokoll`}),!z&&a&&(0,N.jsx)(p,{variant:`outline`,size:`sm`,className:`ml-auto`,onClick:()=>a(n),children:`Ausblenden`})]}),J=g&&(0,N.jsx)(`pre`,{className:`ziffern m-0 max-h-56 overflow-auto rounded-md bg-[#0b0d0f] p-2 text-xs whitespace-pre-wrap break-all text-text-2`,children:e.join(` -`)}),t[13]=o,t[14]=H,t[15]=u,t[16]=k,t[17]=B,t[18]=n,t[19]=z,t[20]=j,t[21]=a,t[22]=g,t[23]=C,t[24]=b.art,t[25]=b.text,t[26]=U,t[27]=W,t[28]=G,t[29]=K,t[30]=q,t[31]=J,t[32]=Y,t[33]=X}else U=t[26],W=t[27],G=t[28],K=t[29],q=t[30],J=t[31],Y=t[32],X=t[33];let Z;t[60]!==H||t[61]!==d||t[62]!==n||t[63]!==r||t[64]!==C?(Z=H&&(0,N.jsx)(m,{offen:d,gefahr:!0,titel:`Auftrag abbrechen?`,text:y(n)?`Der ${C} stoppt. Du kannst ihn später über „Modelle selbst suchen“ neu starten.`:`„${C}“ wird abgebrochen.`,knopf:`Ja, abbrechen`,neinKnopf:`Weiterlaufen lassen`,onNein:()=>f(!1),onJa:()=>{d&&(f(!1),r?.(n))}}),t[60]=H,t[61]=d,t[62]=n,t[63]=r,t[64]=C,t[65]=Z):Z=t[65];let Q;return t[66]!==U||t[67]!==W||t[68]!==G||t[69]!==K||t[70]!==q||t[71]!==J||t[72]!==Z||t[73]!==Y||t[74]!==X?(Q=(0,N.jsxs)(`article`,{"aria-label":Y,className:X,children:[U,W,G,K,q,J,Z]}),t[66]=U,t[67]=W,t[68]=G,t[69]=K,t[70]=q,t[71]=J,t[72]=Z,t[73]=Y,t[74]=X,t[75]=Q):Q=t[75],Q}function B(e){let t=(0,h.c)(19),{alsPanel:n}=e,r=n!==void 0&&n,i=d(),a=f(),o=u(),s,c;if(t[0]!==a||t[1]!==r||t[2]!==i.data||t[3]!==i.error||t[4]!==i.isError||t[5]!==o){c=Symbol.for(`react.early_return_sentinel`);bb0:{let e=k(i.data?.jobs??[]);if(e.length>0){let n;t[8]!==a||t[9]!==r||t[10]!==o?(n=e=>(0,N.jsx)(z,{job:e,ebene:r?3:4,abbrechenGesperrt:a.isPending,onAbbrechen:e=>a.mutate({id:e.id,titel:w(e)}),onQuittieren:e=>o.mutate(e.id)},e.id),t[8]=a,t[9]=r,t[10]=o,t[11]=n):n=t[11],s=(0,N.jsx)(`div`,{className:`grid items-start gap-2.5 lg:grid-cols-2`,children:e.map(n)})}else if(i.isError&&!i.data){let e;t[12]===i.error.message?e=t[13]:(e=(0,N.jsxs)(`p`,{role:`alert`,className:`text-sm text-rot-text`,children:[`Die Aufträge lassen sich gerade nicht lesen: `,i.error.message]}),t[12]=i.error.message,t[13]=e),s=e}else{c=null;break bb0}}t[0]=a,t[1]=r,t[2]=i.data,t[3]=i.error,t[4]=i.isError,t[5]=o,t[6]=s,t[7]=c}else s=t[6],c=t[7];if(c!==Symbol.for(`react.early_return_sentinel`))return c;if(r){let e;return t[14]===s?e=t[15]:(e=(0,N.jsx)(l,{titel:`Aufträge`,children:s}),t[14]=s,t[15]=e),e}let p;t[16]===Symbol.for(`react.memo_cache_sentinel`)?(p=(0,N.jsx)(`h3`,{className:`schild m-0 text-sm text-text-3`,children:`Aufträge`}),t[16]=p):p=t[16];let m;return t[17]===s?m=t[18]:(m=(0,N.jsxs)(`section`,{"aria-label":`Aufträge`,className:`flex flex-col gap-2.5`,children:[p,s]}),t[17]=s,t[18]=m),m}export{O as a,g as c,b as i,_ as n,v as o,j as r,A as s,B as t}; \ No newline at end of file diff --git a/frontend/dist/assets/Auftraege-yNI8sNrj.js b/frontend/dist/assets/Auftraege-yNI8sNrj.js new file mode 100644 index 0000000..b129dbc --- /dev/null +++ b/frontend/dist/assets/Auftraege-yNI8sNrj.js @@ -0,0 +1,2 @@ +import{a as e,c as t,i as n,r,t as i}from"./dist-aE7UmubC.js";import{Bt as a,D as o,Ht as s,en as c,ht as l,mt as u,pt as d}from"./index-BjDzWYEf.js";import{t as f}from"./button-DwYvdWVr.js";import{t as p}from"./Bestaetigen-DNJdB_zl.js";import{t as m}from"./Panel-uT1S5ZGr.js";var h=r();function g(e,t){if(e===`os`)return{laeuft:`Ubuntu`,neu:t.count?`${t.count} ${t.count===1?`Paket`:`Pakete`}`:null};if(e===`hermes`)return{laeuft:t.installed_version?`v${t.installed_version}`:`–`,neu:t.behind?`+${t.behind.toLocaleString(`de-DE`)} Änderungen`:null};let n=e===`engine`?`b`:`v`;return{laeuft:t.installed_build==null?`–`:`${n}${t.installed_build}`,neu:t.latest_build!=null&&t.installed_build!=null&&t.latest_build>t.installed_build?`${n}${t.latest_build}`:null}}function _(e,t){return!t||t.error?null:e===`os`?typeof t.count==`number`?t.count>0:null:e===`hermes`?typeof t.behind==`number`?t.behind>0:null:t.latest_build==null||t.installed_build==null?null:t.latest_build>t.installed_build}function v(e){let t=e.trim();return/timed out|timeout|zeitüberschreitung/i.test(t)?`Konnte nicht prüfen: Die Gegenstelle hat nicht rechtzeitig geantwortet. Später klappt es meist wieder.`:/name resolution|name or service not known|network is unreachable|connection (refused|reset)|nicht erreichbar/i.test(t)?`Konnte nicht prüfen: Die Box kommt gerade nicht ins Internet.`:`Konnte nicht prüfen: ${t.length>160?`${t.slice(0,157)}…`:t}`}var y=e=>e.group===`download`||/^download\s/i.test(e.label),b=e=>e.group===`pruefen`||e.label===`Nach Updates suchen`,x=e=>c(e)&&y(e),S=[[/^download\s+(.+)$/i,`Download $1`],[/^OS-Update \(apt\)$/,`Update Betriebssystem`],[/^Engine-Update \(llama\.cpp Vulkan\)$/,`Update Motor (llama.cpp)`],[/^Router-Update \(llama-swap\)$/,`Update llama-swap`],[/^Hermes-Agent-Update$/,`Update Hermes`]],C=[[`Engine (llama.cpp)`,`Motor`],[`Router (llama-swap)`,`llama-swap`],[`Hermes-Agent`,`Hermes`],[`OS (apt)`,`Betriebssystem`]];function w(e){for(let[t,n]of S)if(t.test(e.label))return e.label.replace(t,n);return e.label.startsWith(`Alle aktualisieren`)?C.reduce((e,[t,n])=>e.split(t).join(n),e.label):e.label}function T(e){if(e<60)return`noch unter einer Minute`;let t=Math.round(e/60);if(t<60)return`noch etwa ${t} min`;let n=Math.floor(t/60),r=t%60;return r?`noch etwa ${n} h ${r} min`:`noch etwa ${n} h`}function E(e,t=Date.now()/1e3){let n=Math.max(0,t-e.started_at),r=Math.floor(n/60),i=n<60?`ein paar Sekunden`:r<60?`${r} min`:`${Math.floor(r/60)} h ${r%60} min`;return`${e.state===`queued`?`Wartet`:`Läuft`} seit ${i}`}function D(e){if(e.progress==null)return null;let t=[`${Math.round(e.progress)} %`];return e.total_bytes&&t.push(`${s(e.done_bytes??0,1)} von ${s(e.total_bytes,1)}`),e.eta_s!=null&&c(e)&&t.push(T(e.eta_s)),t.join(` · `)}function O(e){for(let t=(e.log?.length??0)-1;t>=0;t--){let n=e.log[t].trim();if(n&&!n.startsWith(`$ `))return n}return null}function k(e,t=Date.now()/1e3){let n=e.filter(c).sort((e,t)=>e.started_at-t.started_at),r=e.filter(e=>!c(e)&&!e.quittiert&&t-(e.finished_at??e.started_at)<86400).sort((e,t)=>(t.finished_at??t.started_at)-(e.finished_at??e.started_at)).slice(0,3);return[...n,...r]}function A(e,t,n){if(!n)return`Nach dem Download übernimmt ${e} die Rolle „${t}“.`;let r=n.weitere.length?` Die Rolle${n.weitere.length===1?``:`n`} „${n.weitere.join(`“, „`)}“ behält es.`:``;return`Achtung: Nach dem Download übernimmt ${e} die Rolle „${t}“ und ersetzt damit ${n.name}. Das bisherige Modell bleibt auf der Platte.${r}`+(n.zwilling?` Bilder liest vorerst weiter sein Bild-Zwilling, also noch das bisherige Modell.`:``)}function j(e){return`Kurze Unterbrechung: Beim Eintragen lädt llama-swap sofort neu. Was Lucy oder OpenChamber gerade schreiben, bricht ab, und die Modelle werden neu geladen.`+(e?` Mit Rolle passiert das nach dem Download noch einmal.`:``)}var M=t(e(),1),N=n(),P={queued:{text:`Wartet`,art:`cyan`},running:{text:`Läuft`,art:`cyan`},done:{text:`Fertig`,art:`gruen`},failed:{text:`Fehler`,art:`rot`},canceled:{text:`Abgebrochen`,art:`grau`}},F={queued:`bg-cyan`,running:`bg-cyan`,done:`bg-gruen`,failed:`bg-rot`,canceled:`bg-text-3`},I=e=>a(new Date(e*1e3).toISOString());function L(e){let t=(0,h.c)(3),[n,r]=(0,M.useState)(R),i,a;return t[0]===e?(i=t[1],a=t[2]):(i=()=>{if(!e)return;let t=window.setInterval(()=>r(Date.now()/1e3),3e4);return()=>window.clearInterval(t)},a=[e],t[0]=e,t[1]=i,t[2]=a),(0,M.useEffect)(i,a),n}function R(){return Date.now()/1e3}function z(e){let t=(0,h.c)(76),{job:n,onAbbrechen:r,onQuittieren:a,abbrechenGesperrt:s,ebene:l}=e,u=l===void 0?4:l,[d,m]=(0,M.useState)(!1),[g,_]=(0,M.useState)(!1),v;t[0]===n.state?v=t[1]:(v=P[n.state]??{text:n.state,art:`grau`},t[0]=n.state,t[1]=v);let b=v,S;t[2]===n?S=t[3]:(S=w(n),t[2]=n,t[3]=S);let C=S,T;t[4]===n?T=t[5]:(T=D(n),t[4]=n,t[5]=T);let k=T,A;t[6]===n?A=t[7]:(A=O(n),t[6]=n,t[7]=A);let j=A,R;t[8]===n?R=t[9]:(R=c(n),t[8]=n,t[9]=R);let z=R,B=L(z),V;t[10]!==n||t[11]!==r?(V=!!r&&x(n),t[10]=n,t[11]=r,t[12]=V):V=t[12];let H=V,U,W,G,K,q,J,Y,X;if(t[13]!==s||t[14]!==H||t[15]!==u||t[16]!==k||t[17]!==B||t[18]!==n||t[19]!==z||t[20]!==j||t[21]!==a||t[22]!==g||t[23]!==C||t[24]!==b.art||t[25]!==b.text){let e=(n.log??[]).slice(-12),r=u===3?`h3`:`h4`;Y=`Auftrag: ${C}`,X=`flex flex-col gap-2.5 flaeche-innen rounded-2xl p-3.5`;let c;t[34]!==r||t[35]!==C?(c=(0,N.jsx)(r,{className:`m-0 min-w-0 text-[15px] leading-snug font-semibold break-words`,children:C}),t[34]=r,t[35]=C,t[36]=c):c=t[36];let l;t[37]!==b.art||t[38]!==b.text?(l=(0,N.jsx)(o,{art:b.art,children:b.text}),t[37]=b.art,t[38]=b.text,t[39]=l):l=t[39],t[40]!==c||t[41]!==l?(U=(0,N.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[c,l]}),t[40]=c,t[41]=l,t[42]=U):U=t[42],t[43]!==n.progress||t[44]!==n.state||t[45]!==C?(W=n.progress!=null&&(0,N.jsx)(`div`,{role:`progressbar`,"aria-label":`Fortschritt: ${C}`,"aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":Math.round(n.progress),className:`h-2 overflow-hidden rounded-full bg-linie`,children:(0,N.jsx)(`div`,{className:i(`h-full`,F[n.state]??`bg-cyan`),style:{width:`${Math.max(2,Math.min(100,n.progress))}%`}})}),t[43]=n.progress,t[44]=n.state,t[45]=C,t[46]=W):W=t[46];let d;t[47]!==k||t[48]!==B||t[49]!==n||t[50]!==z||t[51]!==b.text?(d=z?k??E(n,B):`${b.text} · ${I(n.finished_at??n.started_at)}`,t[47]=k,t[48]=B,t[49]=n,t[50]=z,t[51]=b.text,t[52]=d):d=t[52],t[53]===d?G=t[54]:(G=(0,N.jsx)(`p`,{className:`ziffern m-0 text-sm text-text-2`,children:d}),t[53]=d,t[54]=G),t[55]!==n.progress||t[56]!==n.state||t[57]!==z||t[58]!==j?(K=j&&(n.state===`failed`||z&&n.progress==null)&&(0,N.jsx)(`p`,{className:n.state===`failed`?`m-0 text-sm break-words text-rot-text`:`ziffern m-0 line-clamp-2 text-xs break-all text-text-3`,children:n.state===`failed`?`Letzte Meldung: ${j}`:j}),t[55]=n.progress,t[56]=n.state,t[57]=z,t[58]=j,t[59]=K):K=t[59],q=(H||e.length>1||!z&&a)&&(0,N.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[H&&(0,N.jsx)(f,{variant:`outline`,size:`sm`,disabled:s,onClick:()=>m(!0),children:`Abbrechen`}),e.length>1&&(0,N.jsx)(f,{variant:`ghost`,size:`sm`,"aria-expanded":g,onClick:()=>_(!g),children:g?`Protokoll zu`:`Protokoll`}),!z&&a&&(0,N.jsx)(f,{variant:`outline`,size:`sm`,className:`ml-auto`,onClick:()=>a(n),children:`Ausblenden`})]}),J=g&&(0,N.jsx)(`pre`,{className:`ziffern m-0 max-h-56 overflow-auto rounded-md bg-[#0b0d0f] p-2 text-xs whitespace-pre-wrap break-all text-text-2`,children:e.join(` +`)}),t[13]=s,t[14]=H,t[15]=u,t[16]=k,t[17]=B,t[18]=n,t[19]=z,t[20]=j,t[21]=a,t[22]=g,t[23]=C,t[24]=b.art,t[25]=b.text,t[26]=U,t[27]=W,t[28]=G,t[29]=K,t[30]=q,t[31]=J,t[32]=Y,t[33]=X}else U=t[26],W=t[27],G=t[28],K=t[29],q=t[30],J=t[31],Y=t[32],X=t[33];let Z;t[60]!==H||t[61]!==d||t[62]!==n||t[63]!==r||t[64]!==C?(Z=H&&(0,N.jsx)(p,{offen:d,gefahr:!0,titel:`Auftrag abbrechen?`,text:y(n)?`Der ${C} stoppt. Du kannst ihn später über „Modelle selbst suchen“ neu starten.`:`„${C}“ wird abgebrochen.`,knopf:`Ja, abbrechen`,neinKnopf:`Weiterlaufen lassen`,onNein:()=>m(!1),onJa:()=>{d&&(m(!1),r?.(n))}}),t[60]=H,t[61]=d,t[62]=n,t[63]=r,t[64]=C,t[65]=Z):Z=t[65];let Q;return t[66]!==U||t[67]!==W||t[68]!==G||t[69]!==K||t[70]!==q||t[71]!==J||t[72]!==Z||t[73]!==Y||t[74]!==X?(Q=(0,N.jsxs)(`article`,{"aria-label":Y,className:X,children:[U,W,G,K,q,J,Z]}),t[66]=U,t[67]=W,t[68]=G,t[69]=K,t[70]=q,t[71]=J,t[72]=Z,t[73]=Y,t[74]=X,t[75]=Q):Q=t[75],Q}function B(e){let t=(0,h.c)(19),{alsPanel:n}=e,r=n!==void 0&&n,i=l(),a=d(),o=u(),s,c;if(t[0]!==a||t[1]!==r||t[2]!==i.data||t[3]!==i.error||t[4]!==i.isError||t[5]!==o){c=Symbol.for(`react.early_return_sentinel`);bb0:{let e=k(i.data?.jobs??[]);if(e.length>0){let n;t[8]!==a||t[9]!==r||t[10]!==o?(n=e=>(0,N.jsx)(z,{job:e,ebene:r?3:4,abbrechenGesperrt:a.isPending,onAbbrechen:e=>a.mutate({id:e.id,titel:w(e)}),onQuittieren:e=>o.mutate(e.id)},e.id),t[8]=a,t[9]=r,t[10]=o,t[11]=n):n=t[11],s=(0,N.jsx)(`div`,{className:`grid items-start gap-2.5 lg:grid-cols-2`,children:e.map(n)})}else if(i.isError&&!i.data){let e;t[12]===i.error.message?e=t[13]:(e=(0,N.jsxs)(`p`,{role:`alert`,className:`text-sm text-rot-text`,children:[`Die Aufträge lassen sich gerade nicht lesen: `,i.error.message]}),t[12]=i.error.message,t[13]=e),s=e}else{c=null;break bb0}}t[0]=a,t[1]=r,t[2]=i.data,t[3]=i.error,t[4]=i.isError,t[5]=o,t[6]=s,t[7]=c}else s=t[6],c=t[7];if(c!==Symbol.for(`react.early_return_sentinel`))return c;if(r){let e;return t[14]===s?e=t[15]:(e=(0,N.jsx)(m,{titel:`Aufträge`,children:s}),t[14]=s,t[15]=e),e}let f;t[16]===Symbol.for(`react.memo_cache_sentinel`)?(f=(0,N.jsx)(`h3`,{className:`etikett m-0 text-[11.5px] tracking-[0.16em] text-text-3`,children:`Aufträge`}),t[16]=f):f=t[16];let p;return t[17]===s?p=t[18]:(p=(0,N.jsxs)(`section`,{"aria-label":`Aufträge`,className:`flex flex-col gap-2.5`,children:[f,s]}),t[17]=s,t[18]=p),p}export{O as a,g as c,b as i,_ as n,v as o,j as r,A as s,B as t}; \ No newline at end of file diff --git a/frontend/dist/assets/Bestaetigen-CMlebyiw.js b/frontend/dist/assets/Bestaetigen-CMlebyiw.js deleted file mode 100644 index faccaef..0000000 --- a/frontend/dist/assets/Bestaetigen-CMlebyiw.js +++ /dev/null @@ -1 +0,0 @@ -import{i as e,n as t,o as n,r,t as i}from"./dist-D4CVSex9.js";import{nn as a}from"./index-CKWhFN2A.js";import{t as o}from"./button-D8rvET0Z.js";import{a as s,i as c,n as l,o as u,r as d,s as f,t as p}from"./dist-VQuEcoq-.js";var m=t();e();var h=r();function g(e){let t=(0,m.c)(4),n;t[0]===e?n=t[1]:({...n}=e,t[0]=e,t[1]=n);let r;return t[2]===n?r=t[3]:(r=(0,h.jsx)(p,{"data-slot":`dialog`,...n}),t[2]=n,t[3]=r),r}function _(e){let t=(0,m.c)(4),n;t[0]===e?n=t[1]:({...n}=e,t[0]=e,t[1]=n);let r;return t[2]===n?r=t[3]:(r=(0,h.jsx)(u,{"data-slot":`dialog-portal`,...n}),t[2]=n,t[3]=r),r}function v(e){let t=(0,m.c)(8),n,r;t[0]===e?(n=t[1],r=t[2]):({className:n,...r}=e,t[0]=e,t[1]=n,t[2]=r);let a;t[3]===n?a=t[4]:(a=i(`fixed inset-0 isolate z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0`,n),t[3]=n,t[4]=a);let o;return t[5]!==r||t[6]!==a?(o=(0,h.jsx)(s,{"data-slot":`dialog-overlay`,className:a,...r}),t[5]=r,t[6]=a,t[7]=o):o=t[7],o}function y(e){let t=(0,m.c)(15),n,r,s,c;t[0]===e?(n=t[1],r=t[2],s=t[3],c=t[4]):({className:r,children:n,showCloseButton:c,...s}=e,t[0]=e,t[1]=n,t[2]=r,t[3]=s,t[4]=c);let u=c===void 0||c,f;t[5]===Symbol.for(`react.memo_cache_sentinel`)?(f=(0,h.jsx)(v,{}),t[5]=f):f=t[5];let p;t[6]===r?p=t[7]:(p=i(`fixed top-1/2 left-1/2 z-50 grid w-full max-w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl bg-popover p-4 text-sm text-popover-foreground ring-1 ring-foreground/10 duration-100 outline-none sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95`,r),t[6]=r,t[7]=p);let g;t[8]===u?g=t[9]:(g=u&&(0,h.jsx)(l,{"data-slot":`dialog-close`,asChild:!0,children:(0,h.jsxs)(o,{variant:`ghost`,className:`absolute top-2 right-2`,size:`icon-sm`,children:[(0,h.jsx)(a,{}),(0,h.jsx)(`span`,{className:`sr-only`,children:`Schließen`})]})}),t[8]=u,t[9]=g);let y;return t[10]!==n||t[11]!==s||t[12]!==p||t[13]!==g?(y=(0,h.jsxs)(_,{children:[f,(0,h.jsxs)(d,{"data-slot":`dialog-content`,className:p,...s,children:[n,g]})]}),t[10]=n,t[11]=s,t[12]=p,t[13]=g,t[14]=y):y=t[14],y}function b(e){let t=(0,m.c)(8),n,r;t[0]===e?(n=t[1],r=t[2]):({className:n,...r}=e,t[0]=e,t[1]=n,t[2]=r);let a;t[3]===n?a=t[4]:(a=i(`flex flex-col gap-2`,n),t[3]=n,t[4]=a);let o;return t[5]!==r||t[6]!==a?(o=(0,h.jsx)(`div`,{"data-slot":`dialog-header`,className:a,...r}),t[5]=r,t[6]=a,t[7]=o):o=t[7],o}function x(e){let t=(0,m.c)(14),n,r,a,s;t[0]===e?(n=t[1],r=t[2],a=t[3],s=t[4]):({className:r,showCloseButton:s,children:n,...a}=e,t[0]=e,t[1]=n,t[2]=r,t[3]=a,t[4]=s);let c=s!==void 0&&s,u;t[5]===r?u=t[6]:(u=i(`-mx-4 -mb-4 flex flex-col-reverse gap-2 rounded-b-xl border-t bg-muted/50 p-4 sm:flex-row sm:justify-end`,r),t[5]=r,t[6]=u);let d;t[7]===c?d=t[8]:(d=c&&(0,h.jsx)(l,{asChild:!0,children:(0,h.jsx)(o,{variant:`outline`,children:`Schließen`})}),t[7]=c,t[8]=d);let f;return t[9]!==n||t[10]!==a||t[11]!==u||t[12]!==d?(f=(0,h.jsxs)(`div`,{"data-slot":`dialog-footer`,className:u,...a,children:[n,d]}),t[9]=n,t[10]=a,t[11]=u,t[12]=d,t[13]=f):f=t[13],f}function S(e){let t=(0,m.c)(8),n,r;t[0]===e?(n=t[1],r=t[2]):({className:n,...r}=e,t[0]=e,t[1]=n,t[2]=r);let a;t[3]===n?a=t[4]:(a=i(`font-heading text-base leading-none font-medium`,n),t[3]=n,t[4]=a);let o;return t[5]!==r||t[6]!==a?(o=(0,h.jsx)(f,{"data-slot":`dialog-title`,className:a,...r}),t[5]=r,t[6]=a,t[7]=o):o=t[7],o}function C(e){let t=(0,m.c)(8),n,r;t[0]===e?(n=t[1],r=t[2]):({className:n,...r}=e,t[0]=e,t[1]=n,t[2]=r);let a;t[3]===n?a=t[4]:(a=i(`text-sm text-muted-foreground *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground`,n),t[3]=n,t[4]=a);let o;return t[5]!==r||t[6]!==a?(o=(0,h.jsx)(c,{"data-slot":`dialog-description`,className:a,...r}),t[5]=r,t[6]=a,t[7]=o):o=t[7],o}var w=n({Bestaetigen:()=>T});function T(e){let t=(0,m.c)(32),{offen:n,titel:r,text:i,knopf:a,neinKnopf:s,gefahr:c,gesperrt:l,onJa:u,onNein:d,children:f}=e,p=s===void 0?`Abbrechen`:s,_;t[0]===d?_=t[1]:(_=e=>!e&&d(),t[0]=d,t[1]=_);let v;t[2]===r?v=t[3]:(v=(0,h.jsx)(S,{className:`schild pr-10 text-xl break-words`,children:r}),t[2]=r,t[3]=v);let w;t[4]===i?w=t[5]:(w=(0,h.jsx)(C,{className:`text-[15px] leading-relaxed text-text-2`,children:i}),t[4]=i,t[5]=w);let T;t[6]!==v||t[7]!==w?(T=(0,h.jsxs)(b,{children:[v,w]}),t[6]=v,t[7]=w,t[8]=T):T=t[8];let E;t[9]!==p||t[10]!==d?(E=(0,h.jsx)(o,{variant:`outline`,onClick:d,children:p}),t[9]=p,t[10]=d,t[11]=E):E=t[11];let D=c?`gefahr`:`default`,O=l||void 0,k;t[12]!==l||t[13]!==u?(k=()=>{l||u()},t[12]=l,t[13]=u,t[14]=k):k=t[14];let A;t[15]!==l||t[16]!==a||t[17]!==D||t[18]!==O||t[19]!==k?(A=(0,h.jsx)(o,{variant:D,disabled:l,"aria-busy":O,onClick:k,children:a}),t[15]=l,t[16]=a,t[17]=D,t[18]=O,t[19]=k,t[20]=A):A=t[20];let j;t[21]!==A||t[22]!==E?(j=(0,h.jsxs)(x,{className:`sticky bottom-0 mb-0 gap-2 bg-erhaben sm:gap-2`,children:[E,A]}),t[21]=A,t[22]=E,t[23]=j):j=t[23];let M;t[24]!==f||t[25]!==j||t[26]!==T?(M=(0,h.jsxs)(y,{className:`max-h-[calc(100dvh-2rem)] overflow-y-auto border-linie bg-panel pb-0 sm:max-w-lg`,children:[T,f,j]}),t[24]=f,t[25]=j,t[26]=T,t[27]=M):M=t[27];let N;return t[28]!==n||t[29]!==M||t[30]!==_?(N=(0,h.jsx)(g,{open:n,onOpenChange:_,children:M}),t[28]=n,t[29]=M,t[30]=_,t[31]=N):N=t[31],N}export{w as n,T as t}; \ No newline at end of file diff --git a/frontend/dist/assets/Bestaetigen-DNJdB_zl.js b/frontend/dist/assets/Bestaetigen-DNJdB_zl.js new file mode 100644 index 0000000..790932f --- /dev/null +++ b/frontend/dist/assets/Bestaetigen-DNJdB_zl.js @@ -0,0 +1 @@ +import{a as e,i as t,r as n,s as r,t as i}from"./dist-aE7UmubC.js";import{sn as a}from"./index-BjDzWYEf.js";import{t as o}from"./button-DwYvdWVr.js";import{a as s,i as c,n as l,o as u,r as d,s as f,t as p}from"./dist-DSmV4Srg.js";var m=n();e();var h=t();function g(e){let t=(0,m.c)(4),n;t[0]===e?n=t[1]:({...n}=e,t[0]=e,t[1]=n);let r;return t[2]===n?r=t[3]:(r=(0,h.jsx)(p,{"data-slot":`dialog`,...n}),t[2]=n,t[3]=r),r}function _(e){let t=(0,m.c)(4),n;t[0]===e?n=t[1]:({...n}=e,t[0]=e,t[1]=n);let r;return t[2]===n?r=t[3]:(r=(0,h.jsx)(u,{"data-slot":`dialog-portal`,...n}),t[2]=n,t[3]=r),r}function v(e){let t=(0,m.c)(8),n,r;t[0]===e?(n=t[1],r=t[2]):({className:n,...r}=e,t[0]=e,t[1]=n,t[2]=r);let a;t[3]===n?a=t[4]:(a=i(`fixed inset-0 isolate z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0`,n),t[3]=n,t[4]=a);let o;return t[5]!==r||t[6]!==a?(o=(0,h.jsx)(s,{"data-slot":`dialog-overlay`,className:a,...r}),t[5]=r,t[6]=a,t[7]=o):o=t[7],o}function y(e){let t=(0,m.c)(15),n,r,s,c;t[0]===e?(n=t[1],r=t[2],s=t[3],c=t[4]):({className:r,children:n,showCloseButton:c,...s}=e,t[0]=e,t[1]=n,t[2]=r,t[3]=s,t[4]=c);let u=c===void 0||c,f;t[5]===Symbol.for(`react.memo_cache_sentinel`)?(f=(0,h.jsx)(v,{}),t[5]=f):f=t[5];let p;t[6]===r?p=t[7]:(p=i(`fixed top-1/2 left-1/2 z-50 grid w-full max-w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl bg-popover p-4 text-sm text-popover-foreground ring-1 ring-foreground/10 duration-100 outline-none sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95`,r),t[6]=r,t[7]=p);let g;t[8]===u?g=t[9]:(g=u&&(0,h.jsx)(l,{"data-slot":`dialog-close`,asChild:!0,children:(0,h.jsxs)(o,{variant:`ghost`,className:`absolute top-2 right-2`,size:`icon-sm`,children:[(0,h.jsx)(a,{}),(0,h.jsx)(`span`,{className:`sr-only`,children:`Schließen`})]})}),t[8]=u,t[9]=g);let y;return t[10]!==n||t[11]!==s||t[12]!==p||t[13]!==g?(y=(0,h.jsxs)(_,{children:[f,(0,h.jsxs)(d,{"data-slot":`dialog-content`,className:p,...s,children:[n,g]})]}),t[10]=n,t[11]=s,t[12]=p,t[13]=g,t[14]=y):y=t[14],y}function b(e){let t=(0,m.c)(8),n,r;t[0]===e?(n=t[1],r=t[2]):({className:n,...r}=e,t[0]=e,t[1]=n,t[2]=r);let a;t[3]===n?a=t[4]:(a=i(`flex flex-col gap-2`,n),t[3]=n,t[4]=a);let o;return t[5]!==r||t[6]!==a?(o=(0,h.jsx)(`div`,{"data-slot":`dialog-header`,className:a,...r}),t[5]=r,t[6]=a,t[7]=o):o=t[7],o}function x(e){let t=(0,m.c)(14),n,r,a,s;t[0]===e?(n=t[1],r=t[2],a=t[3],s=t[4]):({className:r,showCloseButton:s,children:n,...a}=e,t[0]=e,t[1]=n,t[2]=r,t[3]=a,t[4]=s);let c=s!==void 0&&s,u;t[5]===r?u=t[6]:(u=i(`-mx-4 -mb-4 flex flex-col-reverse gap-2 rounded-b-xl border-t bg-muted/50 p-4 sm:flex-row sm:justify-end`,r),t[5]=r,t[6]=u);let d;t[7]===c?d=t[8]:(d=c&&(0,h.jsx)(l,{asChild:!0,children:(0,h.jsx)(o,{variant:`outline`,children:`Schließen`})}),t[7]=c,t[8]=d);let f;return t[9]!==n||t[10]!==a||t[11]!==u||t[12]!==d?(f=(0,h.jsxs)(`div`,{"data-slot":`dialog-footer`,className:u,...a,children:[n,d]}),t[9]=n,t[10]=a,t[11]=u,t[12]=d,t[13]=f):f=t[13],f}function S(e){let t=(0,m.c)(8),n,r;t[0]===e?(n=t[1],r=t[2]):({className:n,...r}=e,t[0]=e,t[1]=n,t[2]=r);let a;t[3]===n?a=t[4]:(a=i(`font-heading text-base leading-none font-medium`,n),t[3]=n,t[4]=a);let o;return t[5]!==r||t[6]!==a?(o=(0,h.jsx)(f,{"data-slot":`dialog-title`,className:a,...r}),t[5]=r,t[6]=a,t[7]=o):o=t[7],o}function C(e){let t=(0,m.c)(8),n,r;t[0]===e?(n=t[1],r=t[2]):({className:n,...r}=e,t[0]=e,t[1]=n,t[2]=r);let a;t[3]===n?a=t[4]:(a=i(`text-sm text-muted-foreground *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground`,n),t[3]=n,t[4]=a);let o;return t[5]!==r||t[6]!==a?(o=(0,h.jsx)(c,{"data-slot":`dialog-description`,className:a,...r}),t[5]=r,t[6]=a,t[7]=o):o=t[7],o}var w=r({Bestaetigen:()=>T});function T(e){let t=(0,m.c)(32),{offen:n,titel:r,text:i,knopf:a,neinKnopf:s,gefahr:c,gesperrt:l,onJa:u,onNein:d,children:f}=e,p=s===void 0?`Abbrechen`:s,_;t[0]===d?_=t[1]:(_=e=>!e&&d(),t[0]=d,t[1]=_);let v;t[2]===r?v=t[3]:(v=(0,h.jsx)(S,{className:`pr-10 text-[19px] leading-snug font-semibold break-words`,children:r}),t[2]=r,t[3]=v);let w;t[4]===i?w=t[5]:(w=(0,h.jsx)(C,{className:`text-[15px] leading-relaxed text-text-2`,children:i}),t[4]=i,t[5]=w);let T;t[6]!==v||t[7]!==w?(T=(0,h.jsxs)(b,{children:[v,w]}),t[6]=v,t[7]=w,t[8]=T):T=t[8];let E;t[9]!==p||t[10]!==d?(E=(0,h.jsx)(o,{variant:`outline`,onClick:d,children:p}),t[9]=p,t[10]=d,t[11]=E):E=t[11];let D=c?`gefahr`:`default`,O=l||void 0,k;t[12]!==l||t[13]!==u?(k=()=>{l||u()},t[12]=l,t[13]=u,t[14]=k):k=t[14];let A;t[15]!==l||t[16]!==a||t[17]!==D||t[18]!==O||t[19]!==k?(A=(0,h.jsx)(o,{variant:D,disabled:l,"aria-busy":O,onClick:k,children:a}),t[15]=l,t[16]=a,t[17]=D,t[18]=O,t[19]=k,t[20]=A):A=t[20];let j;t[21]!==A||t[22]!==E?(j=(0,h.jsxs)(x,{className:`sticky bottom-0 mb-0 gap-2 bg-[#121722] sm:gap-2`,children:[E,A]}),t[21]=A,t[22]=E,t[23]=j):j=t[23];let M;t[24]!==f||t[25]!==j||t[26]!==T?(M=(0,h.jsxs)(y,{className:`max-h-[calc(100dvh-2rem)] overflow-y-auto border-white/10 bg-[#0e121a] pb-0 sm:max-w-lg`,children:[T,f,j]}),t[24]=f,t[25]=j,t[26]=T,t[27]=M):M=t[27];let N;return t[28]!==n||t[29]!==M||t[30]!==_?(N=(0,h.jsx)(g,{open:n,onOpenChange:_,children:M}),t[28]=n,t[29]=M,t[30]=_,t[31]=N):N=t[31],N}export{w as n,T as t}; \ No newline at end of file diff --git a/frontend/dist/assets/Dienste-Btw1nQIy.js b/frontend/dist/assets/Dienste-Btw1nQIy.js deleted file mode 100644 index b7f1bc9..0000000 --- a/frontend/dist/assets/Dienste-Btw1nQIy.js +++ /dev/null @@ -1 +0,0 @@ -import{i as e,n as t,r as n,s as r,t as i}from"./dist-D4CVSex9.js";import{$t as a,C as o,Ht as s,It as c,K as l,Kt as u,S as d,b as f,m as p,mt as m,pn as h,tn as g}from"./index-CKWhFN2A.js";import{t as _}from"./button-D8rvET0Z.js";import{t as v}from"./Bestaetigen-CMlebyiw.js";var y=r(e(),1),b=t(),x={laeuft:{wort:`läuft`,punkt:`bg-gruen`,text:`text-text-3`},startet:{wort:`startet`,punkt:`bg-bernstein`,text:`text-bernstein`},stoppt:{wort:`stoppt`,punkt:`bg-bernstein`,text:`text-bernstein`},antwortet_nicht:{wort:`antwortet nicht`,punkt:`bg-rot`,text:`text-rot-text`},gestoppt:{wort:`gestoppt`,punkt:`bg-rot`,text:`text-rot-text`},gescheitert:{wort:`gescheitert`,punkt:`bg-rot`,text:`text-rot-text`},schlaeft:{wort:`schläft`,punkt:`bg-text-3`,text:`text-text-3`}};function S(e){return e.zustand?e.zustand:e.ok?`laeuft`:e.schlaeft?`schlaeft`:`antwortet_nicht`}var C={gescheitert:0,gestoppt:0,antwortet_nicht:0,startet:1,stoppt:1,laeuft:3,schlaeft:4};function w(e){let t=S(e);return t===`laeuft`&&(e.neustarts??0)>0?2:C[t]}var T=e=>w(e)===0,E=e=>[...e].sort((e,t)=>w(e)-w(t)),D=new Intl.NumberFormat(`de-DE`,{maximumFractionDigits:0}),O=new Intl.NumberFormat(`de-DE`,{minimumFractionDigits:1,maximumFractionDigits:1});function ee(e){if(e==null)return`–`;let t=e/1024**2;return t<1e3?`${D.format(t)} MB`:`${O.format(t/1024)} GB`}function te(e,t){return e.speicher_bytes==null||!t?null:(e.speicher_bytes+(e.grafik_bytes??0))/t*100}function ne(e){return e==null?`–`:e>0&&e<.05?`< 0,1 %`:e<10?`${O.format(e).replace(/,0$/,``)} %`:`${D.format(e)} %`}function k(e){return e==null||e<0?`–`:e<60?`< 1 min`:p(e)}var A=`Europe/Berlin`,j=new Intl.DateTimeFormat(`de-DE`,{hour:`2-digit`,minute:`2-digit`,timeZone:A}),M=new Intl.DateTimeFormat(`de-DE`,{day:`2-digit`,month:`2-digit`,timeZone:A}),N=new Intl.DateTimeFormat(`en-CA`,{timeZone:A});function re(e,t=Date.now()){let n=new Date(t-e*1e3),r=N.format(n);return r===N.format(new Date(t))?`heute ${j.format(n)}`:r===N.format(new Date(t-864e5))?`gestern ${j.format(n)}`:`${M.format(n)}, ${j.format(n)}`}function ie(e,t=Date.now()){let n=S(e);return n===`schlaeft`?`mit Absicht aus`:(n===`gestoppt`||n===`gescheitert`)&&e.aus_seit_s!=null?`aus seit ${re(e.aus_seit_s,t)}`:null}function P(e){let t=S(e);return t===`schlaeft`?`Wecken`:t===`gestoppt`||t===`gescheitert`?`Starten`:`Neu starten`}var F={"llama-swap":`Laufende Antworten brechen ab; die Modelle werden danach neu geladen.`,"mission-control-2":`Das ist diese Oberfläche selbst: Sie ist ein paar Sekunden nicht erreichbar.`,"hermes-gateway":`Lucy antwortet in der Zeit nicht.`};function I(e){let t=P(e);if(t===`Wecken`)return{titel:`${e.name} wecken?`,text:`Der Dienst startet und läuft bis zum nächsten Neustart der Box. Danach schläft er wieder.`,knopf:t};if(t===`Starten`)return{titel:`${e.name} starten?`,text:`Der Dienst wird gestartet. Scheitert er wieder, steht der Grund im Protokoll.`,knopf:t};let n=F[e.unit]?` ${F[e.unit]}`:``;return{titel:`${e.name} neu starten?`,text:`Der Dienst wird neu gestartet und ist dabei kurz nicht erreichbar.${n}`,knopf:t}}function L(e){let t=P(e);return`${e.name} ${t===`Wecken`?`wird geweckt`:t===`Starten`?`startet`:`startet neu`}.`}var R=n(),ae=`grid-cols-2 gap-x-4 sm:grid-cols-4 xl:gap-x-3 xl:grid-cols-[minmax(0,1.7fr)_7rem_minmax(0,0.7fr)_minmax(0,1.2fr)_7.5rem_5rem_9.5rem] min-[87.5rem]:grid-cols-[minmax(0,1.7fr)_7rem_minmax(0,0.7fr)_minmax(0,1.2fr)_7.5rem_5rem_17.5rem]`,z=new Intl.DateTimeFormat(`de-DE`,{hour:`2-digit`,minute:`2-digit`,second:`2-digit`,timeZone:`Europe/Berlin`});function B(e){let t=(0,b.c)(2),{children:n}=e,r;return t[0]===n?r=t[1]:(r=(0,R.jsx)(`span`,{className:`block text-xs text-text-3 xl:hidden`,children:n}),t[0]=n,t[1]=r),r}function oe(e){let t=(0,b.c)(7),{anteil:n,children:r}=e,i;t[0]===r?i=t[1]:(i=(0,R.jsx)(`span`,{className:`ziffern text-sm text-text-2`,children:r}),t[0]=r,t[1]=i);let a;t[2]===n?a=t[3]:(a=n!==null&&(0,R.jsx)(`span`,{className:`h-1.5 w-full max-w-40 overflow-hidden rounded-full bg-erhaben`,"aria-hidden":!0,children:(0,R.jsx)(`span`,{className:`block h-full rounded-full`,style:{width:`${Math.min(100,Math.max(2,n))}%`,background:`var(--reihe-1)`}})}),t[2]=n,t[3]=a);let o;return t[4]!==i||t[5]!==a?(o=(0,R.jsxs)(`span`,{className:`flex min-w-0 flex-col gap-1`,children:[i,a]}),t[4]=i,t[5]=a,t[6]=o):o=t[6],o}function se(e){let t=(0,b.c)(9),{d:n,id:r}=e,i=m(n.unit),a=(0,y.useRef)(null),o;if(i.isPending)o=`Wird gelesen …`;else if(i.isError)o=`Das Protokoll lässt sich gerade nicht lesen: ${i.error.message}`;else if(i.data.ok===!1)o=i.data.err||i.data.text||`Das Protokoll lässt sich nicht lesen.`;else{let e;t[0]===i.data.text?e=t[1]:(e=i.data.text?.trim()||`Noch keine Einträge.`,t[0]=i.data.text,t[1]=e),o=e}let s;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(s=()=>{a.current&&(a.current.scrollTop=a.current.scrollHeight)},t[2]=s):s=t[2];let c;t[3]===o?c=t[4]:(c=[o],t[3]=o,t[4]=c),(0,y.useEffect)(s,c);let l=`Letzte Protokollzeilen von ${n.name}`,u;return t[5]!==r||t[6]!==l||t[7]!==o?(u=(0,R.jsx)(`pre`,{id:r,ref:a,tabIndex:0,"aria-label":l,className:`ziffern m-0 max-h-[50vh] w-full overflow-auto rounded-lg border border-linie bg-[#0b0d0f] p-3 text-xs leading-relaxed whitespace-pre-wrap break-words text-text-2`,children:o}),t[5]=r,t[6]=l,t[7]=o,t[8]=u):u=t[8],u}function V(e){let t=(0,b.c)(113),{d:n,gesamt:r,offen:a,startet:o,onProtokoll:s,onFrage:c}=e,l=x[S(n)],u;t[0]===n?u=t[1]:(u=ie(n),t[0]=n,t[1]=u);let d=u,f,p,m,h,g,v,y,C,w,E,D;if(t[2]!==n||t[3]!==r||t[4]!==l.punkt||t[5]!==l.text||t[6]!==l.wort||t[7]!==d){let e=te(n,r);f=n.neustarts??0,p=`protokoll-${n.unit}`,C=`row`,t[19]===Symbol.for(`react.memo_cache_sentinel`)?(w=i(`grid gap-y-2.5 border-t border-linie py-3 xl:items-center`,ae),t[19]=w):w=t[19];let a;t[20]===l.punkt?a=t[21]:(a=i(`mt-1.5 size-2.5 shrink-0 rounded-full`,l.punkt),t[20]=l.punkt,t[21]=a);let o;t[22]===a?o=t[23]:(o=(0,R.jsx)(`span`,{"aria-hidden":!0,className:a}),t[22]=a,t[23]=o);let s;t[24]===n.name?s=t[25]:(s=(0,R.jsx)(`span`,{className:`text-[15px] font-semibold break-words`,children:n.name}),t[24]=n.name,t[25]=s);let c=n.scope===`system`?` · Systemdienst`:``,u;t[26]!==n.unit||t[27]!==c?(u=(0,R.jsxs)(`span`,{className:`ziffern text-xs break-words text-text-3`,children:[n.unit,c]}),t[26]=n.unit,t[27]=c,t[28]=u):u=t[28];let _;t[29]!==s||t[30]!==u?(_=(0,R.jsxs)(`span`,{className:`flex min-w-0 flex-col`,children:[s,u]}),t[29]=s,t[30]=u,t[31]=_):_=t[31],t[32]!==o||t[33]!==_?(E=(0,R.jsxs)(`div`,{role:`rowheader`,className:`col-span-2 flex min-w-0 items-start gap-2.5 xl:col-span-1`,children:[o,_]}),t[32]=o,t[33]=_,t[34]=E):E=t[34];let b;t[35]===Symbol.for(`react.memo_cache_sentinel`)?(b=(0,R.jsx)(B,{children:`Zustand`}),t[35]=b):b=t[35];let x;t[36]===l.text?x=t[37]:(x=i(`schild text-xs`,l.text),t[36]=l.text,t[37]=x);let S;t[38]!==x||t[39]!==l.wort?(S=(0,R.jsx)(`span`,{className:x,children:l.wort}),t[38]=x,t[39]=l.wort,t[40]=S):S=t[40];let T;t[41]===d?T=t[42]:(T=d&&(0,R.jsx)(`span`,{className:`text-xs text-text-3`,children:d}),t[41]=d,t[42]=T);let O;t[43]===f?O=t[44]:(O=f>0&&(0,R.jsx)(`span`,{className:`text-xs text-bernstein xl:hidden`,children:f===1?`1 Neustart`:`${f} Neustarts`}),t[43]=f,t[44]=O),t[45]!==S||t[46]!==T||t[47]!==O?(D=(0,R.jsxs)(`span`,{role:`cell`,className:`flex min-w-0 flex-col gap-0.5`,children:[b,S,T,O]}),t[45]=S,t[46]=T,t[47]=O,t[48]=D):D=t[48];let k;t[49]===Symbol.for(`react.memo_cache_sentinel`)?(k=(0,R.jsx)(B,{children:`CPU`}),t[49]=k):k=t[49],t[50]===n.cpu_prozent?m=t[51]:(m=(0,R.jsxs)(`span`,{role:`cell`,className:`min-w-0`,children:[k,n.cpu_prozent==null?(0,R.jsx)(`span`,{className:`text-sm text-text-3`,children:`–`}):(0,R.jsx)(oe,{anteil:n.cpu_prozent,children:ne(n.cpu_prozent)})]}),t[50]=n.cpu_prozent,t[51]=m),h=`cell`,g=`min-w-0`,t[52]===Symbol.for(`react.memo_cache_sentinel`)?(v=(0,R.jsx)(B,{children:`Speicher`}),t[52]=v):v=t[52],y=n.speicher_bytes==null?(0,R.jsx)(`span`,{className:`text-sm text-text-3`,children:`–`}):(0,R.jsxs)(oe,{anteil:e,children:[ee(n.speicher_bytes+(n.grafik_bytes??0)),e!==null&&(0,R.jsxs)(`span`,{className:`font-sans text-xs text-text-3`,children:[` · `,ne(e)]})]}),t[2]=n,t[3]=r,t[4]=l.punkt,t[5]=l.text,t[6]=l.wort,t[7]=d,t[8]=f,t[9]=p,t[10]=m,t[11]=h,t[12]=g,t[13]=v,t[14]=y,t[15]=C,t[16]=w,t[17]=E,t[18]=D}else f=t[8],p=t[9],m=t[10],h=t[11],g=t[12],v=t[13],y=t[14],C=t[15],w=t[16],E=t[17],D=t[18];let O;t[53]!==n.grafik_bytes||t[54]!==n.speicher_bytes?(O=n.speicher_bytes!=null&&!!n.grafik_bytes&&(0,R.jsxs)(`span`,{className:`mt-1 block text-xs text-text-3`,children:[`davon `,ee(n.grafik_bytes),` Modelle`]}),t[53]=n.grafik_bytes,t[54]=n.speicher_bytes,t[55]=O):O=t[55];let A;t[56]!==O||t[57]!==h||t[58]!==g||t[59]!==v||t[60]!==y?(A=(0,R.jsxs)(`span`,{role:h,className:g,children:[v,y,O]}),t[56]=O,t[57]=h,t[58]=g,t[59]=v,t[60]=y,t[61]=A):A=t[61];let j;t[62]===Symbol.for(`react.memo_cache_sentinel`)?(j=(0,R.jsx)(B,{children:`Läuft seit`}),t[62]=j):j=t[62];let M;t[63]===n.laeuft_seit_s?M=t[64]:(M=k(n.laeuft_seit_s),t[63]=n.laeuft_seit_s,t[64]=M);let N;t[65]===M?N=t[66]:(N=(0,R.jsx)(`span`,{className:`ziffern text-sm text-text-2`,children:M}),t[65]=M,t[66]=N);let F;t[67]===n.laeuft_seit_s?F=t[68]:(F=n.laeuft_seit_s!=null&&(0,R.jsxs)(`span`,{className:`text-xs text-text-3`,children:[`gestartet `,re(n.laeuft_seit_s)]}),t[67]=n.laeuft_seit_s,t[68]=F);let I;t[69]!==N||t[70]!==F?(I=(0,R.jsxs)(`span`,{role:`cell`,className:`flex min-w-0 flex-col gap-0.5`,children:[j,N,F]}),t[69]=N,t[70]=F,t[71]=I):I=t[71];let L=f>0?`text-bernstein`:`text-text-3`,z;t[72]===L?z=t[73]:(z=i(`ziffern text-sm`,L),t[72]=L,t[73]=z);let V=n.neustarts??`–`,H;t[74]!==z||t[75]!==V?(H=(0,R.jsx)(`span`,{role:`cell`,className:`hidden min-w-0 xl:block`,children:(0,R.jsx)(`span`,{className:z,children:V})}),t[74]=z,t[75]=V,t[76]=H):H=t[76];let U=a?`info`:`ghost`,W=a?p:void 0,G=`Protokoll von ${n.name}`,K;t[77]!==a||t[78]!==s||t[79]!==U||t[80]!==W||t[81]!==G?(K=(0,R.jsx)(_,{variant:U,size:`sm`,"aria-expanded":a,"aria-controls":W,"aria-label":G,onClick:s,children:`Protokoll`}),t[77]=a,t[78]=s,t[79]=U,t[80]=W,t[81]=G,t[82]=K):K=t[82];let q=T(n)?`default`:`outline`,ce=o!==null,J;t[83]!==n||t[84]!==o?(J=o===n.unit?`startet …`:P(n),t[83]=n,t[84]=o,t[85]=J):J=t[85];let le=`${n.name}: ${J}`,Y;t[86]!==n||t[87]!==o?(Y=o===n.unit?`Startet …`:P(n),t[86]=n,t[87]=o,t[88]=Y):Y=t[88];let X;t[89]!==c||t[90]!==q||t[91]!==ce||t[92]!==le||t[93]!==Y?(X=(0,R.jsx)(_,{variant:q,size:`sm`,disabled:ce,"aria-label":le,onClick:c,children:Y}),t[89]=c,t[90]=q,t[91]=ce,t[92]=le,t[93]=Y,t[94]=X):X=t[94];let Z;t[95]!==K||t[96]!==X?(Z=(0,R.jsxs)(`span`,{role:`cell`,className:`col-span-2 flex flex-wrap gap-2 sm:col-start-3 sm:row-start-1 sm:justify-end sm:self-start xl:col-span-1 xl:col-start-auto xl:row-start-auto xl:flex-col xl:items-stretch xl:self-center min-[87.5rem]:flex-row min-[87.5rem]:justify-end`,children:[K,X]}),t[95]=K,t[96]=X,t[97]=Z):Z=t[97];let Q;t[98]!==n||t[99]!==a||t[100]!==p?(Q=a&&(0,R.jsx)(`div`,{role:`cell`,className:`col-span-full`,children:(0,R.jsx)(se,{d:n,id:p})}),t[98]=n,t[99]=a,t[100]=p,t[101]=Q):Q=t[101];let $;return t[102]!==m||t[103]!==A||t[104]!==I||t[105]!==H||t[106]!==Z||t[107]!==Q||t[108]!==C||t[109]!==w||t[110]!==E||t[111]!==D?($=(0,R.jsxs)(`div`,{role:C,className:w,children:[E,D,m,A,I,H,Z,Q]}),t[102]=m,t[103]=A,t[104]=I,t[105]=H,t[106]=Z,t[107]=Q,t[108]=C,t[109]=w,t[110]=E,t[111]=D,t[112]=$):$=t[112],$}function H(e){let t=(0,b.c)(16),{stand:n,gewaehlt:r,startet:a,onProtokoll:o,onFrage:s}=e,c;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(c=(0,R.jsxs)(`div`,{role:`row`,className:i(`schild hidden pb-2 text-xs font-semibold text-text-3 xl:grid`,ae),children:[(0,R.jsx)(`span`,{role:`columnheader`,children:`Dienst`}),(0,R.jsx)(`span`,{role:`columnheader`,children:`Zustand`}),(0,R.jsx)(`span`,{role:`columnheader`,children:`CPU`}),(0,R.jsx)(`span`,{role:`columnheader`,children:`Speicher`}),(0,R.jsx)(`span`,{role:`columnheader`,children:`Läuft seit`}),(0,R.jsx)(`span`,{role:`columnheader`,children:`Neustarts`}),(0,R.jsx)(`span`,{role:`columnheader`,className:`sr-only`,children:`Aktionen`})]}),t[0]=c):c=t[0];let l;if(t[1]!==r||t[2]!==s||t[3]!==o||t[4]!==n.services||t[5]!==n.speicher_gesamt||t[6]!==a){let e;t[8]!==r||t[9]!==s||t[10]!==o||t[11]!==n.speicher_gesamt||t[12]!==a?(e=e=>(0,R.jsx)(V,{d:e,gesamt:n.speicher_gesamt,offen:r===e.unit,startet:a,onProtokoll:()=>o(e.unit),onFrage:()=>s(e)},e.unit),t[8]=r,t[9]=s,t[10]=o,t[11]=n.speicher_gesamt,t[12]=a,t[13]=e):e=t[13],l=E(n.services).map(e),t[1]=r,t[2]=s,t[3]=o,t[4]=n.services,t[5]=n.speicher_gesamt,t[6]=a,t[7]=l}else l=t[7];let u;return t[14]===l?u=t[15]:(u=(0,R.jsxs)(`div`,{role:`table`,"aria-label":`Dienste der KI-Box`,className:`flex flex-col`,children:[c,l]}),t[14]=l,t[15]=u),u}function U(e){let t=(0,b.c)(8),{dienste:n,stand:r}=e,i;t[0]===n?i=t[1]:(i=n.filter(T),t[0]=n,t[1]=i);let a=i.length,o;if(t[2]!==n||t[3]!==a||t[4]!==r){let e=n.filter(G),i;t[6]===r?i=t[7]:(i=r>0&&(0,R.jsxs)(`span`,{className:`ziffern text-sm text-text-3`,children:[`Stand `,z.format(r)]}),t[6]=r,t[7]=i),o=(0,R.jsxs)(`span`,{className:`flex flex-wrap items-center gap-3`,children:[i,a>0?(0,R.jsx)(d,{art:`rot`,children:a===1?`1 Problem`:`${a} Probleme`}):e.length>0?(0,R.jsx)(d,{art:`bernstein`,children:e.some(W)?`Startet gerade`:`Stoppt gerade`}):(0,R.jsx)(d,{art:`gruen`,children:`Alles in Ordnung`})]}),t[2]=n,t[3]=a,t[4]=r,t[5]=o}else o=t[5];return o}function W(e){return S(e)===`startet`}function G(e){return w(e)===1}function K(){let e=h(),t=l(),[n,r]=(0,y.useState)(null),[i,d]=(0,y.useState)(null),[p,m]=(0,y.useState)(!1),[_,b]=(0,y.useState)(null);async function x(t){if(!_){b(t.unit);try{let e=await g(`/api/maintenance/restart`,{service:t.unit});e.ok?s(`erfolg`,L(t)):s(`fehler`,`${t.name} ließ sich nicht starten: ${u(e)}`)}catch(e){t.unit===`mission-control-2`&&e instanceof a?s(`info`,`Der Box-Wart startet neu. Die Seite ist gleich wieder da.`):s(`fehler`,e.message)}finally{b(null),e.invalidateQueries({queryKey:[`dienste`]}),e.invalidateQueries({queryKey:[`protokoll`,t.unit]})}}}if(t.isPending)return(0,R.jsx)(o,{text:`Die Dienste werden gelesen …`});if(!t.data)return(0,R.jsx)(o,{fehler:!0,text:`Die Dienste lassen sich gerade nicht lesen: ${t.error?.message??`keine Daten`}`});let S=t.data,C=i?I(i):null,w=S.speicher_gesamt?`den ${c(S.speicher_gesamt)}`:`dem Arbeitsspeicher`,T=S.kerne?`allen ${S.kerne} Kernen`:`allen Kernen`;return(0,R.jsxs)(f,{titel:`Dienste`,rechts:(0,R.jsx)(U,{dienste:S.services,stand:t.dataUpdatedAt}),children:[(0,R.jsx)(`p`,{className:`-mt-2 text-[15px] text-text-2`,children:`Die Dienste der KI-Box: ob sie laufen, was sie gerade an CPU und Speicher brauchen, seit wann sie laufen und was sie zuletzt ins Protokoll geschrieben haben. Probleme stehen oben.`}),S.services.length===0?(0,R.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Keine Dienste gefunden.`}):(0,R.jsx)(H,{stand:S,gewaehlt:n,startet:_,onProtokoll:e=>r(n===e?null:e),onFrage:e=>{d(e),m(!0)}}),(0,R.jsxs)(`p`,{className:`m-0 text-xs leading-relaxed text-text-3`,children:[`CPU: Anteil an `,T,` der Box, gemessen zwischen zwei Abfragen (alle zehn Sekunden). Speicher: was systemd dem Dienst zurechnet; der Balken zeigt den Anteil an `,w,` der Box. Bei der Engine zählen die geladenen Modelle mit — sie liegen im Grafikspeicher, den systemd keinem Dienst zurechnet. Neustarts: wie oft systemd den Dienst nach einem Absturz von selbst wieder gestartet hat. „Schläft“ heißt: mit Absicht abgeschaltet, kein Fehler.`]}),(0,R.jsx)(v,{offen:p&&!!C,titel:C?.titel??``,text:C?.text??``,knopf:C?.knopf??``,gefahr:C?.knopf===`Neu starten`,gesperrt:_!==null,onJa:()=>{m(!1),i&&x(i)},onNein:()=>m(!1)})]})}export{K as DiensteSeite}; \ No newline at end of file diff --git a/frontend/dist/assets/Dienste-BzHBz7yc.js b/frontend/dist/assets/Dienste-BzHBz7yc.js new file mode 100644 index 0000000..0a2cddb --- /dev/null +++ b/frontend/dist/assets/Dienste-BzHBz7yc.js @@ -0,0 +1 @@ +import{a as e,c as t,i as n,r,t as i}from"./dist-aE7UmubC.js";import{C as a,D as o,Ht as s,Jt as c,O as l,Q as u,T as d,Zt as f,_ as p,bt as m,in as h,on as g,vn as _}from"./index-BjDzWYEf.js";import{t as v}from"./button-DwYvdWVr.js";import{t as y}from"./Bestaetigen-DNJdB_zl.js";import{t as b}from"./Panel-uT1S5ZGr.js";var x=t(e(),1),S=r(),C={laeuft:{wort:`läuft`,punkt:`bg-gruen`,text:`text-text-3`},startet:{wort:`startet`,punkt:`bg-bernstein`,text:`text-bernstein`},stoppt:{wort:`stoppt`,punkt:`bg-bernstein`,text:`text-bernstein`},antwortet_nicht:{wort:`antwortet nicht`,punkt:`bg-rot`,text:`text-rot-text`},gestoppt:{wort:`gestoppt`,punkt:`bg-rot`,text:`text-rot-text`},gescheitert:{wort:`gescheitert`,punkt:`bg-rot`,text:`text-rot-text`},schlaeft:{wort:`schläft`,punkt:`bg-text-3`,text:`text-text-3`}};function w(e){return e.zustand?e.zustand:e.ok?`laeuft`:e.schlaeft?`schlaeft`:`antwortet_nicht`}var T={gescheitert:0,gestoppt:0,antwortet_nicht:0,startet:1,stoppt:1,laeuft:3,schlaeft:4};function E(e){let t=w(e);return t===`laeuft`&&(e.neustarts??0)>0?2:T[t]}var D=e=>E(e)===0,O=e=>[...e].sort((e,t)=>E(e)-E(t)),k=new Intl.NumberFormat(`de-DE`,{maximumFractionDigits:0}),A=new Intl.NumberFormat(`de-DE`,{minimumFractionDigits:1,maximumFractionDigits:1});function ee(e){if(e==null)return`–`;let t=e/1024**2;return t<1e3?`${k.format(t)} MB`:`${A.format(t/1024)} GB`}function te(e,t){return e.speicher_bytes==null||!t?null:(e.speicher_bytes+(e.grafik_bytes??0))/t*100}function ne(e){return e==null?`–`:e>0&&e<.05?`< 0,1 %`:e<10?`${A.format(e).replace(/,0$/,``)} %`:`${k.format(e)} %`}function j(e){return e==null||e<0?`–`:e<60?`< 1 min`:p(e)}var M=`Europe/Berlin`,N=new Intl.DateTimeFormat(`de-DE`,{hour:`2-digit`,minute:`2-digit`,timeZone:M}),P=new Intl.DateTimeFormat(`de-DE`,{day:`2-digit`,month:`2-digit`,timeZone:M}),F=new Intl.DateTimeFormat(`en-CA`,{timeZone:M});function re(e,t=Date.now()){let n=new Date(t-e*1e3),r=F.format(n);return r===F.format(new Date(t))?`heute ${N.format(n)}`:r===F.format(new Date(t-864e5))?`gestern ${N.format(n)}`:`${P.format(n)}, ${N.format(n)}`}function ie(e,t=Date.now()){let n=w(e);return n===`schlaeft`?`mit Absicht aus`:(n===`gestoppt`||n===`gescheitert`)&&e.aus_seit_s!=null?`aus seit ${re(e.aus_seit_s,t)}`:null}function I(e){let t=w(e);return t===`schlaeft`?`Wecken`:t===`gestoppt`||t===`gescheitert`?`Starten`:`Neu starten`}var L={"llama-swap":`Laufende Antworten brechen ab; die Modelle werden danach neu geladen.`,"mission-control-2":`Das ist diese Oberfläche selbst: Sie ist ein paar Sekunden nicht erreichbar.`,"hermes-gateway":`Lucy antwortet in der Zeit nicht.`};function R(e){let t=I(e);if(t===`Wecken`)return{titel:`${e.name} wecken?`,text:`Der Dienst startet und läuft bis zum nächsten Neustart der Box. Danach schläft er wieder.`,knopf:t};if(t===`Starten`)return{titel:`${e.name} starten?`,text:`Der Dienst wird gestartet. Scheitert er wieder, steht der Grund im Protokoll.`,knopf:t};let n=L[e.unit]?` ${L[e.unit]}`:``;return{titel:`${e.name} neu starten?`,text:`Der Dienst wird neu gestartet und ist dabei kurz nicht erreichbar.${n}`,knopf:t}}function z(e){let t=I(e);return`${e.name} ${t===`Wecken`?`wird geweckt`:t===`Starten`?`startet`:`startet neu`}.`}var B=n(),ae={laeuft:`ok`,startet:`warn`,stoppt:`warn`,antwortet_nicht:`rot`,gestoppt:`rot`,gescheitert:`rot`,schlaeft:`aus`},oe=`grid-cols-2 gap-x-4 sm:grid-cols-4 xl:gap-x-3 xl:grid-cols-[minmax(0,1.7fr)_7rem_minmax(0,0.7fr)_minmax(0,1.2fr)_7.5rem_5rem_9.5rem] min-[87.5rem]:grid-cols-[minmax(0,1.7fr)_7rem_minmax(0,0.7fr)_minmax(0,1.2fr)_7.5rem_5rem_17.5rem]`,V=new Intl.DateTimeFormat(`de-DE`,{hour:`2-digit`,minute:`2-digit`,second:`2-digit`,timeZone:`Europe/Berlin`});function H(e){let t=(0,S.c)(2),{children:n}=e,r;return t[0]===n?r=t[1]:(r=(0,B.jsx)(`span`,{className:`block text-xs text-text-3 xl:hidden`,children:n}),t[0]=n,t[1]=r),r}function se(e){let t=(0,S.c)(7),{anteil:n,children:r}=e,i;t[0]===r?i=t[1]:(i=(0,B.jsx)(`span`,{className:`ziffern text-sm text-text-2`,children:r}),t[0]=r,t[1]=i);let a;t[2]===n?a=t[3]:(a=n!==null&&(0,B.jsx)(`span`,{className:`h-1.5 w-full max-w-40 overflow-hidden rounded-full bg-white/[0.07]`,"aria-hidden":!0,children:(0,B.jsx)(`span`,{className:`block h-full rounded-full`,style:{width:`${Math.min(100,Math.max(2,n))}%`,background:`var(--reihe-1)`}})}),t[2]=n,t[3]=a);let o;return t[4]!==i||t[5]!==a?(o=(0,B.jsxs)(`span`,{className:`flex min-w-0 flex-col gap-1`,children:[i,a]}),t[4]=i,t[5]=a,t[6]=o):o=t[6],o}function ce(e){let t=(0,S.c)(9),{d:n,id:r}=e,i=m(n.unit),a=(0,x.useRef)(null),o;if(i.isPending)o=`Wird gelesen …`;else if(i.isError)o=`Das Protokoll lässt sich gerade nicht lesen: ${i.error.message}`;else if(i.data.ok===!1)o=i.data.err||i.data.text||`Das Protokoll lässt sich nicht lesen.`;else{let e;t[0]===i.data.text?e=t[1]:(e=i.data.text?.trim()||`Noch keine Einträge.`,t[0]=i.data.text,t[1]=e),o=e}let s;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(s=()=>{a.current&&(a.current.scrollTop=a.current.scrollHeight)},t[2]=s):s=t[2];let c;t[3]===o?c=t[4]:(c=[o],t[3]=o,t[4]=c),(0,x.useEffect)(s,c);let l=`Letzte Protokollzeilen von ${n.name}`,u;return t[5]!==r||t[6]!==l||t[7]!==o?(u=(0,B.jsx)(`pre`,{id:r,ref:a,tabIndex:0,"aria-label":l,className:`ziffern m-0 max-h-[50vh] w-full overflow-auto rounded-lg bg-black/30 ring-1 ring-white/[0.07] ring-inset p-3 text-xs leading-relaxed whitespace-pre-wrap break-words text-text-2`,children:o}),t[5]=r,t[6]=l,t[7]=o,t[8]=u):u=t[8],u}function U(e){let t=(0,S.c)(113),{d:n,gesamt:r,offen:o,startet:s,onProtokoll:c,onFrage:l}=e,u=C[w(n)],f;t[0]===n?f=t[1]:(f=ie(n),t[0]=n,t[1]=f);let p=f,m,h,g,_,y,b,x,T,E,O,k;if(t[2]!==n||t[3]!==r||t[4]!==u.text||t[5]!==u.wort||t[6]!==p){let e=te(n,r);m=n.neustarts??0,h=`protokoll-${n.unit}`,T=`row`,t[18]===Symbol.for(`react.memo_cache_sentinel`)?(E=i(`grid gap-y-2.5 border-t border-white/[0.06] py-3 xl:items-center`,oe),t[18]=E):E=t[18];let o;t[19]===n.unit?o=t[20]:(o=d(n.unit),t[19]=n.unit,t[20]=o);let s=ae[w(n)],c;t[21]!==o||t[22]!==s?(c=(0,B.jsx)(a,{bild:o,groesse:`sm`,punkt:s}),t[21]=o,t[22]=s,t[23]=c):c=t[23];let l;t[24]===n.name?l=t[25]:(l=(0,B.jsx)(`span`,{className:`text-[15px] font-semibold break-words`,children:n.name}),t[24]=n.name,t[25]=l);let f=n.scope===`system`?` · Systemdienst`:``,v;t[26]!==n.unit||t[27]!==f?(v=(0,B.jsxs)(`span`,{className:`ziffern text-xs break-words text-text-3`,children:[n.unit,f]}),t[26]=n.unit,t[27]=f,t[28]=v):v=t[28];let S;t[29]!==l||t[30]!==v?(S=(0,B.jsxs)(`span`,{className:`flex min-w-0 flex-col`,children:[l,v]}),t[29]=l,t[30]=v,t[31]=S):S=t[31],t[32]!==c||t[33]!==S?(O=(0,B.jsxs)(`div`,{role:`rowheader`,className:`col-span-2 flex min-w-0 items-center gap-3 xl:col-span-1`,children:[c,S]}),t[32]=c,t[33]=S,t[34]=O):O=t[34];let C;t[35]===Symbol.for(`react.memo_cache_sentinel`)?(C=(0,B.jsx)(H,{children:`Zustand`}),t[35]=C):C=t[35];let D;t[36]===u.text?D=t[37]:(D=i(`etikett text-[10.5px] tracking-[0.12em]`,u.text),t[36]=u.text,t[37]=D);let A;t[38]!==D||t[39]!==u.wort?(A=(0,B.jsx)(`span`,{className:D,children:u.wort}),t[38]=D,t[39]=u.wort,t[40]=A):A=t[40];let j;t[41]===p?j=t[42]:(j=p&&(0,B.jsx)(`span`,{className:`text-xs text-text-3`,children:p}),t[41]=p,t[42]=j);let M;t[43]===m?M=t[44]:(M=m>0&&(0,B.jsx)(`span`,{className:`text-xs text-bernstein xl:hidden`,children:m===1?`1 Neustart`:`${m} Neustarts`}),t[43]=m,t[44]=M),t[45]!==A||t[46]!==j||t[47]!==M?(k=(0,B.jsxs)(`span`,{role:`cell`,className:`flex min-w-0 flex-col gap-0.5`,children:[C,A,j,M]}),t[45]=A,t[46]=j,t[47]=M,t[48]=k):k=t[48];let N;t[49]===Symbol.for(`react.memo_cache_sentinel`)?(N=(0,B.jsx)(H,{children:`CPU`}),t[49]=N):N=t[49],t[50]===n.cpu_prozent?g=t[51]:(g=(0,B.jsxs)(`span`,{role:`cell`,className:`min-w-0`,children:[N,n.cpu_prozent==null?(0,B.jsx)(`span`,{className:`text-sm text-text-3`,children:`–`}):(0,B.jsx)(se,{anteil:n.cpu_prozent,children:ne(n.cpu_prozent)})]}),t[50]=n.cpu_prozent,t[51]=g),_=`cell`,y=`min-w-0`,t[52]===Symbol.for(`react.memo_cache_sentinel`)?(b=(0,B.jsx)(H,{children:`Speicher`}),t[52]=b):b=t[52],x=n.speicher_bytes==null?(0,B.jsx)(`span`,{className:`text-sm text-text-3`,children:`–`}):(0,B.jsxs)(se,{anteil:e,children:[ee(n.speicher_bytes+(n.grafik_bytes??0)),e!==null&&(0,B.jsxs)(`span`,{className:`font-sans text-xs text-text-3`,children:[` · `,ne(e)]})]}),t[2]=n,t[3]=r,t[4]=u.text,t[5]=u.wort,t[6]=p,t[7]=m,t[8]=h,t[9]=g,t[10]=_,t[11]=y,t[12]=b,t[13]=x,t[14]=T,t[15]=E,t[16]=O,t[17]=k}else m=t[7],h=t[8],g=t[9],_=t[10],y=t[11],b=t[12],x=t[13],T=t[14],E=t[15],O=t[16],k=t[17];let A;t[53]!==n.grafik_bytes||t[54]!==n.speicher_bytes?(A=n.speicher_bytes!=null&&!!n.grafik_bytes&&(0,B.jsxs)(`span`,{className:`mt-1 block text-xs text-text-3`,children:[`davon `,ee(n.grafik_bytes),` Modelle`]}),t[53]=n.grafik_bytes,t[54]=n.speicher_bytes,t[55]=A):A=t[55];let M;t[56]!==A||t[57]!==_||t[58]!==y||t[59]!==b||t[60]!==x?(M=(0,B.jsxs)(`span`,{role:_,className:y,children:[b,x,A]}),t[56]=A,t[57]=_,t[58]=y,t[59]=b,t[60]=x,t[61]=M):M=t[61];let N;t[62]===Symbol.for(`react.memo_cache_sentinel`)?(N=(0,B.jsx)(H,{children:`Läuft seit`}),t[62]=N):N=t[62];let P;t[63]===n.laeuft_seit_s?P=t[64]:(P=j(n.laeuft_seit_s),t[63]=n.laeuft_seit_s,t[64]=P);let F;t[65]===P?F=t[66]:(F=(0,B.jsx)(`span`,{className:`ziffern text-sm text-text-2`,children:P}),t[65]=P,t[66]=F);let L;t[67]===n.laeuft_seit_s?L=t[68]:(L=n.laeuft_seit_s!=null&&(0,B.jsxs)(`span`,{className:`text-xs text-text-3`,children:[`gestartet `,re(n.laeuft_seit_s)]}),t[67]=n.laeuft_seit_s,t[68]=L);let R;t[69]!==F||t[70]!==L?(R=(0,B.jsxs)(`span`,{role:`cell`,className:`flex min-w-0 flex-col gap-0.5`,children:[N,F,L]}),t[69]=F,t[70]=L,t[71]=R):R=t[71];let z=m>0?`text-bernstein`:`text-text-3`,V;t[72]===z?V=t[73]:(V=i(`ziffern text-sm`,z),t[72]=z,t[73]=V);let U=n.neustarts??`–`,W;t[74]!==V||t[75]!==U?(W=(0,B.jsx)(`span`,{role:`cell`,className:`hidden min-w-0 xl:block`,children:(0,B.jsx)(`span`,{className:V,children:U})}),t[74]=V,t[75]=U,t[76]=W):W=t[76];let G=o?`info`:`ghost`,K=o?h:void 0,q=`Protokoll von ${n.name}`,J;t[77]!==o||t[78]!==c||t[79]!==G||t[80]!==K||t[81]!==q?(J=(0,B.jsx)(v,{variant:G,size:`sm`,"aria-expanded":o,"aria-controls":K,"aria-label":q,onClick:c,children:`Protokoll`}),t[77]=o,t[78]=c,t[79]=G,t[80]=K,t[81]=q,t[82]=J):J=t[82];let le=D(n)?`default`:`outline`,ue=s!==null,Y;t[83]!==n||t[84]!==s?(Y=s===n.unit?`startet …`:I(n),t[83]=n,t[84]=s,t[85]=Y):Y=t[85];let de=`${n.name}: ${Y}`,X;t[86]!==n||t[87]!==s?(X=s===n.unit?`Startet …`:I(n),t[86]=n,t[87]=s,t[88]=X):X=t[88];let Z;t[89]!==l||t[90]!==le||t[91]!==ue||t[92]!==de||t[93]!==X?(Z=(0,B.jsx)(v,{variant:le,size:`sm`,disabled:ue,"aria-label":de,onClick:l,children:X}),t[89]=l,t[90]=le,t[91]=ue,t[92]=de,t[93]=X,t[94]=Z):Z=t[94];let Q;t[95]!==J||t[96]!==Z?(Q=(0,B.jsxs)(`span`,{role:`cell`,className:`col-span-2 flex flex-wrap gap-2 sm:col-start-3 sm:row-start-1 sm:justify-end sm:self-start xl:col-span-1 xl:col-start-auto xl:row-start-auto xl:flex-col xl:items-stretch xl:self-center min-[87.5rem]:flex-row min-[87.5rem]:justify-end`,children:[J,Z]}),t[95]=J,t[96]=Z,t[97]=Q):Q=t[97];let $;t[98]!==n||t[99]!==o||t[100]!==h?($=o&&(0,B.jsx)(`div`,{role:`cell`,className:`col-span-full`,children:(0,B.jsx)(ce,{d:n,id:h})}),t[98]=n,t[99]=o,t[100]=h,t[101]=$):$=t[101];let fe;return t[102]!==g||t[103]!==M||t[104]!==R||t[105]!==W||t[106]!==Q||t[107]!==$||t[108]!==T||t[109]!==E||t[110]!==O||t[111]!==k?(fe=(0,B.jsxs)(`div`,{role:T,className:E,children:[O,k,g,M,R,W,Q,$]}),t[102]=g,t[103]=M,t[104]=R,t[105]=W,t[106]=Q,t[107]=$,t[108]=T,t[109]=E,t[110]=O,t[111]=k,t[112]=fe):fe=t[112],fe}function W(e){let t=(0,S.c)(16),{stand:n,gewaehlt:r,startet:a,onProtokoll:o,onFrage:s}=e,c;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(c=(0,B.jsxs)(`div`,{role:`row`,className:i(`etikett hidden pb-2 text-[10.5px] tracking-[0.14em] text-text-3 xl:grid`,oe),children:[(0,B.jsx)(`span`,{role:`columnheader`,children:`Dienst`}),(0,B.jsx)(`span`,{role:`columnheader`,children:`Zustand`}),(0,B.jsx)(`span`,{role:`columnheader`,children:`CPU`}),(0,B.jsx)(`span`,{role:`columnheader`,children:`Speicher`}),(0,B.jsx)(`span`,{role:`columnheader`,children:`Läuft seit`}),(0,B.jsx)(`span`,{role:`columnheader`,children:`Neustarts`}),(0,B.jsx)(`span`,{role:`columnheader`,className:`sr-only`,children:`Aktionen`})]}),t[0]=c):c=t[0];let l;if(t[1]!==r||t[2]!==s||t[3]!==o||t[4]!==n.services||t[5]!==n.speicher_gesamt||t[6]!==a){let e;t[8]!==r||t[9]!==s||t[10]!==o||t[11]!==n.speicher_gesamt||t[12]!==a?(e=e=>(0,B.jsx)(U,{d:e,gesamt:n.speicher_gesamt,offen:r===e.unit,startet:a,onProtokoll:()=>o(e.unit),onFrage:()=>s(e)},e.unit),t[8]=r,t[9]=s,t[10]=o,t[11]=n.speicher_gesamt,t[12]=a,t[13]=e):e=t[13],l=O(n.services).map(e),t[1]=r,t[2]=s,t[3]=o,t[4]=n.services,t[5]=n.speicher_gesamt,t[6]=a,t[7]=l}else l=t[7];let u;return t[14]===l?u=t[15]:(u=(0,B.jsxs)(`div`,{role:`table`,"aria-label":`Dienste der KI-Box`,className:`flex flex-col`,children:[c,l]}),t[14]=l,t[15]=u),u}function G(e){let t=(0,S.c)(8),{dienste:n,stand:r}=e,i;t[0]===n?i=t[1]:(i=n.filter(D),t[0]=n,t[1]=i);let a=i.length,s;if(t[2]!==n||t[3]!==a||t[4]!==r){let e=n.filter(q),i;t[6]===r?i=t[7]:(i=r>0&&(0,B.jsxs)(`span`,{className:`ziffern text-sm text-text-3`,children:[`Stand `,V.format(r)]}),t[6]=r,t[7]=i),s=(0,B.jsxs)(`span`,{className:`flex flex-wrap items-center gap-3`,children:[i,a>0?(0,B.jsx)(o,{art:`rot`,children:a===1?`1 Problem`:`${a} Probleme`}):e.length>0?(0,B.jsx)(o,{art:`bernstein`,children:e.some(K)?`Startet gerade`:`Stoppt gerade`}):(0,B.jsx)(o,{art:`gruen`,children:`Alles in Ordnung`})]}),t[2]=n,t[3]=a,t[4]=r,t[5]=s}else s=t[5];return s}function K(e){return w(e)===`startet`}function q(e){return E(e)===1}function J(){let e=_(),t=u(),[n,r]=(0,x.useState)(null),[i,a]=(0,x.useState)(null),[o,d]=(0,x.useState)(!1),[p,m]=(0,x.useState)(null);async function v(t){if(!p){m(t.unit);try{let e=await g(`/api/maintenance/restart`,{service:t.unit});e.ok?c(`erfolg`,z(t)):c(`fehler`,`${t.name} ließ sich nicht starten: ${f(e)}`)}catch(e){t.unit===`mission-control-2`&&e instanceof h?c(`info`,`Der Box-Wart startet neu. Die Seite ist gleich wieder da.`):c(`fehler`,e.message)}finally{m(null),e.invalidateQueries({queryKey:[`dienste`]}),e.invalidateQueries({queryKey:[`protokoll`,t.unit]})}}}if(t.isPending)return(0,B.jsx)(l,{text:`Die Dienste werden gelesen …`});if(!t.data)return(0,B.jsx)(l,{fehler:!0,text:`Die Dienste lassen sich gerade nicht lesen: ${t.error?.message??`keine Daten`}`});let S=t.data,C=i?R(i):null,w=S.speicher_gesamt?`den ${s(S.speicher_gesamt)}`:`dem Arbeitsspeicher`,T=S.kerne?`allen ${S.kerne} Kernen`:`allen Kernen`;return(0,B.jsxs)(b,{titel:`Dienste`,rechts:(0,B.jsx)(G,{dienste:S.services,stand:t.dataUpdatedAt}),children:[(0,B.jsx)(`p`,{className:`-mt-2 text-[15px] text-text-2`,children:`Die Dienste der KI-Box: ob sie laufen, was sie gerade an CPU und Speicher brauchen, seit wann sie laufen und was sie zuletzt ins Protokoll geschrieben haben. Probleme stehen oben.`}),S.services.length===0?(0,B.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Keine Dienste gefunden.`}):(0,B.jsx)(W,{stand:S,gewaehlt:n,startet:p,onProtokoll:e=>r(n===e?null:e),onFrage:e=>{a(e),d(!0)}}),(0,B.jsxs)(`p`,{className:`m-0 text-xs leading-relaxed text-text-3`,children:[`CPU: Anteil an `,T,` der Box, gemessen zwischen zwei Abfragen (alle zehn Sekunden). Speicher: was systemd dem Dienst zurechnet; der Balken zeigt den Anteil an `,w,` der Box. Bei der Engine zählen die geladenen Modelle mit — sie liegen im Grafikspeicher, den systemd keinem Dienst zurechnet. Neustarts: wie oft systemd den Dienst nach einem Absturz von selbst wieder gestartet hat. „Schläft“ heißt: mit Absicht abgeschaltet, kein Fehler.`]}),(0,B.jsx)(y,{offen:o&&!!C,titel:C?.titel??``,text:C?.text??``,knopf:C?.knopf??``,gefahr:C?.knopf===`Neu starten`,gesperrt:p!==null,onJa:()=>{d(!1),i&&v(i)},onNein:()=>d(!1)})]})}export{J as DiensteSeite}; \ No newline at end of file diff --git a/frontend/dist/assets/Einstellungen-B9lWkZF-.js b/frontend/dist/assets/Einstellungen-B9lWkZF-.js deleted file mode 100644 index 716d1c3..0000000 --- a/frontend/dist/assets/Einstellungen-B9lWkZF-.js +++ /dev/null @@ -1 +0,0 @@ -import{i as e,n as t,r as n,s as r,t as i}from"./dist-D4CVSex9.js";import{Dt as a,H as o,Ht as s,Pt as c,S as l,Tt as u,V as d,Z as f,_t as p,an as m,at as h,cn as g,en as _,fn as v,kt as y,pn as b,pt as x,q as S,tn as C}from"./index-CKWhFN2A.js";import{t as w}from"./button-D8rvET0Z.js";import{t as ee}from"./Bestaetigen-CMlebyiw.js";var T={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`}]]};T.node;var E=g(T),D=t(),O=r(e(),1),k=n(),A=[`Montag`,`Dienstag`,`Mittwoch`,`Donnerstag`,`Freitag`,`Samstag`,`Sonntag`],j=Array.from({length:48},(e,t)=>`${String(Math.floor(t/2)).padStart(2,`0`)}:${t%2?`30`:`00`}`),M=new Intl.DateTimeFormat(`de-DE`,{day:`2-digit`,month:`2-digit`,year:`numeric`,hour:`2-digit`,minute:`2-digit`,timeZone:`Europe/Berlin`});function N(e){let t=e?new Date(e):null;return t&&!Number.isNaN(t.getTime())?M.format(t):`–`}function P(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?`${A[e-1]} ${o}–${s}`:`${A[e-1]} ${o} – ${A[i-1]} ${s}`}function F(e){let t=(0,D.c)(6),{titel:n,children:r}=e,i;t[0]===n?i=t[1]:(i=(0,k.jsx)(`h3`,{className:`schild text-sm tracking-[0.18em] 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,k.jsxs)(`section`,{"aria-label":n,className:`flex flex-col gap-3 border-t border-linie 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 I(e){let t=(0,D.c)(19),{titel:n,text:r,farbe:a,children:o}=e,s=a===`box`?`bg-box`:a===`homelab`?`bg-lab`:`bg-linie-stark`,c=a===`box`?`text-box-text`:a===`homelab`?`text-lab-text`:`text-foreground`,l;t[0]===s?l=t[1]:(l=i(`absolute inset-x-0 top-0 h-1`,s),t[0]=s,t[1]=l);let u;t[2]===l?u=t[3]:(u=(0,k.jsx)(`span`,{"aria-hidden":!0,className:l}),t[2]=l,t[3]=u);let d;t[4]===c?d=t[5]:(d=i(`schild text-lg font-bold tracking-[0.22em]`,c),t[4]=c,t[5]=d);let f;t[6]!==d||t[7]!==n?(f=(0,k.jsx)(`h2`,{className:d,children:n}),t[6]=d,t[7]=n,t[8]=f):f=t[8];let p;t[9]===r?p=t[10]:(p=(0,k.jsx)(`p`,{className:`text-sm text-text-3`,children:r}),t[9]=r,t[10]=p);let m;t[11]!==f||t[12]!==p?(m=(0,k.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[f,p]}),t[11]=f,t[12]=p,t[13]=m):m=t[13];let h;return t[14]!==o||t[15]!==u||t[16]!==m||t[17]!==n?(h=(0,k.jsxs)(`section`,{"aria-label":n,className:`relative flex min-w-0 flex-col gap-4 overflow-hidden rounded-2xl border border-linie bg-panel p-5 sm:p-6`,children:[u,m,o]}),t[14]=o,t[15]=u,t[16]=m,t[17]=n,t[18]=h):h=t[18],h}function L(e){let t=(0,D.c)(2),{children:n}=e,r;return t[0]===n?r=t[1]:(r=(0,k.jsx)(`p`,{className:`text-sm text-bernstein`,children:n}),t[0]=n,t[1]=r),r}function R(e){let t=(0,D.c)(3),{laedt:n,fehler:r}=e;if(n){let e;return t[0]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,k.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,k.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 z({offen:e}){let t=b(),n=v({queryKey:[`geheimnisse`],queryFn:()=>_(`/api/maintenance/geheimnisse`),enabled:e}),[r,i]=(0,O.useState)(``),[a,o]=(0,O.useState)(!1),[c,l]=(0,O.useState)(!1);async function u(e){if(!a){o(!0),l(!1);try{await C(`/api/maintenance/geheimnisse`,{schluessel:`hf_token`,wert:e}),s(`erfolg`,e?`Hugging-Face-Zugang gespeichert.`:`Hugging-Face-Zugang gelöscht.`),i(``),t.invalidateQueries({queryKey:[`geheimnisse`]})}catch(e){s(`fehler`,e.message)}finally{o(!1)}}}let d=n.data,f;return f=n.isPending?`Wird gelesen …`:d?d.hf_token_gesetzt?`Ist hinterlegt.`:`Fehlt.`:`Lässt sich gerade nicht lesen${n.error?`: ${n.error.message}`:`.`}`,(0,k.jsxs)(F,{titel:`Hugging-Face-Zugang`,children:[(0,k.jsxs)(`p`,{className:`text-sm text-text-2`,"aria-live":`polite`,children:[(0,k.jsx)(`span`,{className:!d&&!n.isPending?`text-rot-text`:void 0,children:f}),` Nötig für gesperrte Modelle und schnellere Downloads.`,d?.hf_token_aus_env?` Er kommt aus der Dienst-Einstellung und lässt sich hier nicht löschen.`:``]}),d?.schreibbar===!1&&(0,k.jsx)(`p`,{className:`text-sm text-bernstein`,children:`Die Box kann den Zugang gerade nicht speichern: Ihre Ablage ist nicht beschreibbar.`}),(0,k.jsxs)(`form`,{className:`flex gap-2`,onSubmit:e=>{e.preventDefault(),r.trim()&&u(r.trim())},children:[(0,k.jsx)(`label`,{htmlFor:`hf-token`,className:`sr-only`,children:`Hugging-Face-Zugang`}),(0,k.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-lg border border-linie-stark bg-erhaben px-3 text-[15px] outline-none focus:border-cyan`}),(0,k.jsx)(w,{type:`submit`,disabled:!r.trim()||d?.schreibbar===!1||a,children:a?`Speichert …`:`Speichern`})]}),d?.hf_token_gesetzt&&!d.hf_token_aus_env&&(c?(0,k.jsxs)(`span`,{className:`flex flex-wrap gap-2`,children:[(0,k.jsx)(w,{variant:`gefahr`,size:`sm`,disabled:a,onClick:()=>u(null),children:`Wirklich löschen?`}),(0,k.jsx)(w,{variant:`ghost`,size:`sm`,onClick:()=>l(!1),children:`Nein`})]}):(0,k.jsx)(w,{variant:`ghost`,size:`sm`,className:`self-start`,disabled:a,onClick:()=>l(!0),children:`Zugang löschen`}))]})}function B(e){let t=(0,D.c)(24),{ziel:n,name:r}=e,i=a(),o=i.data,s=null;if(i.isPending){let e;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,k.jsx)(`p`,{role:`status`,className:`text-sm text-text-2`,children:`Sendet …`}),t[0]=e):e=t[0],s=e}else if(o?.gesendet){let e=o.weg===`hermes`?`über Hermes`:`direkt an die Telegram-Bot-API`,n=o.kennung?`, Kennung ${o.kennung}`:``,r;t[1]!==e||t[2]!==n?(r=(0,k.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],s=r}else if(o){let e=o.grund??o.detail??`ohne Angabe eines Grundes.`,n;t[4]===e?n=t[5]:(n=(0,k.jsxs)(`p`,{role:`alert`,className:`text-sm text-rot-text`,children:[`Nicht gesendet: `,e]}),t[4]=e,t[5]=n),s=n}else if(i.error){let e;t[6]===i.error.message?e=t[7]:(e=(0,k.jsx)(`p`,{role:`alert`,className:`text-sm text-rot-text`,children:i.error.message}),t[6]=i.error.message,t[7]=e),s=e}let c;t[8]===r?c=t[9]:(c=(0,k.jsx)(`span`,{className:`text-[15px]`,children:r}),t[8]=r,t[9]=c);let l;t[10]!==i||t[11]!==n?(l=()=>i.mutate(n),t[10]=i,t[11]=n,t[12]=l):l=t[12];let u=`Testmeldung von ${r} senden`,d=i.isPending?`Sendet …`:`Test senden`,f;t[13]!==l||t[14]!==u||t[15]!==d||t[16]!==i.isPending?(f=(0,k.jsx)(w,{variant:`outline`,size:`sm`,disabled:i.isPending,onClick:l,"aria-label":u,children:d}),t[13]=l,t[14]=u,t[15]=d,t[16]=i.isPending,t[17]=f):f=t[17];let p;t[18]!==c||t[19]!==f?(p=(0,k.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-2`,children:[c,f]}),t[18]=c,t[19]=f,t[20]=p):p=t[20];let m;return t[21]!==s||t[22]!==p?(m=(0,k.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[p,s]}),t[21]=s,t[22]=p,t[23]=m):m=t[23],m}function V(){let e=(0,D.c)(9),t=h().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(U),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,k.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,k.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,k.jsxs)(F,{titel:`Telegram`,children:[o,s,a.map(H)]}),e[7]=a,e[8]=c),c}function H(e){return(0,k.jsx)(B,{ziel:e.ziel,name:e.name},e.ziel)}function U(e,t){return Number(e.ziel!==`box`)-Number(t.ziel!==`box`)}function W(e){let t=(0,D.c)(87),{e:n,laedt:r,fehler:i}=e,a=y(),[o,s]=(0,O.useState)(null),[c,l]=(0,O.useState)(!1);if(!n){let e;return t[0]!==i||t[1]!==r?(e=(0,k.jsx)(F,{titel:`Update-Zeitfenster`,children:(0,k.jsx)(R,{laedt:r,fehler:i})}),t[0]=i,t[1]=r,t[2]=e):e=t[2],e}let u=n.update_fenster,d,f,p,m,h,g,_,v,b,x,S,C,T,E,M,I,z;if(t[3]!==n.schaltbar||t[4]!==o||t[5]!==u.naechster_lauf||t[6]!==u.neustart_fenster||t[7]!==u.tag||t[8]!==u.tag_name||t[9]!==u.timer_aktiv||t[10]!==u.uhrzeit||t[11]!==u.wirksam){z=o??{tag:u.tag,uhrzeit:u.uhrzeit},f=z.tag!==u.tag||z.uhrzeit!==u.uhrzeit;let e=j.includes(z.uhrzeit)?j:[...j,z.uhrzeit].sort();d=F,h=`Update-Zeitfenster`;let r;t[29]===u.naechster_lauf?r=t[30]:(r=u.naechster_lauf?` (nächster Lauf ${N(u.naechster_lauf)})`:``,t[29]=u.naechster_lauf,t[30]=r),t[31]!==u.neustart_fenster||t[32]!==u.tag_name||t[33]!==u.uhrzeit||t[34]!==r?(g=(0,k.jsxs)(`p`,{className:`text-sm text-text-2`,children:[`Die Box aktualisiert sich jeden `,u.tag_name,` um `,u.uhrzeit,` Uhr`,r,`. Neu gestartet wird sie danach nur`,` `,u.neustart_fenster,`.`]}),t[31]=u.neustart_fenster,t[32]=u.tag_name,t[33]=u.uhrzeit,t[34]=r,t[35]=g):g=t[35],t[36]!==n.schaltbar||t[37]!==u.timer_aktiv?(_=n.schaltbar&&!u.timer_aktiv&&(0,k.jsx)(L,{children:`Der Update-Timer läuft gerade nicht; er übernimmt das Fenster beim nächsten Start.`}),t[36]=n.schaltbar,t[37]=u.timer_aktiv,t[38]=_):_=t[38],t[39]!==n.schaltbar||t[40]!==u.wirksam?(v=n.schaltbar&&!u.wirksam&&(0,k.jsx)(L,{children:`Der Timer läuft noch nach einem anderen Plan als eingestellt. Einmal speichern gleicht es an.`}),t[39]=n.schaltbar,t[40]=u.wirksam,t[41]=v):v=t[41],I=`flex flex-wrap items-end gap-2`;let i=z.tag,a;t[42]===Symbol.for(`react.memo_cache_sentinel`)?(a=A.map(K),t[42]=a):a=t[42],m=(0,k.jsxs)(`label`,{className:`flex flex-col gap-1 text-xs text-text-3`,children:[`Tag`,(0,k.jsx)(`select`,{className:`h-11 rounded-lg border border-linie-stark bg-erhaben px-3 text-[15px] text-foreground outline-none focus:border-cyan`,value:i,disabled:!n.schaltbar,"aria-label":`Wochentag`,onChange:e=>s({...z,tag:Number(e.target.value)}),children:a})]}),E=`flex flex-col gap-1 text-xs text-text-3`,M=`Uhrzeit`,p=`h-11 rounded-lg border border-linie-stark bg-erhaben px-3 text-[15px] text-foreground outline-none focus:border-cyan`,b=z.uhrzeit,x=!n.schaltbar,S=`Uhrzeit`,C=e=>s({...z,uhrzeit:e.target.value}),T=e.map(G),t[3]=n.schaltbar,t[4]=o,t[5]=u.naechster_lauf,t[6]=u.neustart_fenster,t[7]=u.tag,t[8]=u.tag_name,t[9]=u.timer_aktiv,t[10]=u.uhrzeit,t[11]=u.wirksam,t[12]=d,t[13]=f,t[14]=p,t[15]=m,t[16]=h,t[17]=g,t[18]=_,t[19]=v,t[20]=b,t[21]=x,t[22]=S,t[23]=C,t[24]=T,t[25]=E,t[26]=M,t[27]=I,t[28]=z}else d=t[12],f=t[13],p=t[14],m=t[15],h=t[16],g=t[17],_=t[18],v=t[19],b=t[20],x=t[21],S=t[22],C=t[23],T=t[24],E=t[25],M=t[26],I=t[27],z=t[28];let B;t[43]!==p||t[44]!==b||t[45]!==x||t[46]!==S||t[47]!==C||t[48]!==T?(B=(0,k.jsx)(`select`,{className:p,value:b,disabled:x,"aria-label":S,onChange:C,children:T}),t[43]=p,t[44]=b,t[45]=x,t[46]=S,t[47]=C,t[48]=T,t[49]=B):B=t[49];let V;t[50]!==B||t[51]!==E||t[52]!==M?(V=(0,k.jsxs)(`label`,{className:E,children:[M,B]}),t[50]=B,t[51]=E,t[52]=M,t[53]=V):V=t[53];let H=!n.schaltbar||a.isPending||!f&&u.wirksam,U;t[54]===Symbol.for(`react.memo_cache_sentinel`)?(U=()=>l(!0),t[54]=U):U=t[54];let W=a.isPending?`Speichert …`:`Speichern`,q;t[55]!==H||t[56]!==W?(q=(0,k.jsx)(w,{disabled:H,onClick:U,children:W}),t[55]=H,t[56]=W,t[57]=q):q=t[57];let J;t[58]!==m||t[59]!==V||t[60]!==q||t[61]!==I?(J=(0,k.jsxs)(`div`,{className:I,children:[m,V,q]}),t[58]=m,t[59]=V,t[60]=q,t[61]=I,t[62]=J):J=t[62];let Y=n.schaltbar?``:` Einstellen lässt es sich nur auf der Box.`,X;t[63]===Y?X=t[64]:(X=(0,k.jsxs)(`p`,{className:`text-xs text-text-3`,children:[`Am besten nachts nach der Sicherung (03:30) und vor der Morgenmeldung (07:00).`,Y]}),t[63]=Y,t[64]=X);let Z;t[65]!==z.tag||t[66]!==z.uhrzeit?(Z=P(z.tag,z.uhrzeit),t[65]=z.tag,t[66]=z.uhrzeit,t[67]=Z):Z=t[67];let te=`Der Update-Lauf startet ab jetzt jeden ${A[z.tag-1]} um ${z.uhrzeit} Uhr. Neu gestartet wird die Box nur ${Z}. 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=()=>l(!1),t[68]=ne):ne=t[68];let Q;t[69]!==c||t[70]!==a||t[71]!==z?(Q=()=>{c&&(a.mutate(z,{onSuccess:()=>s(null)}),l(!1))},t[69]=c,t[70]=a,t[71]=z,t[72]=Q):Q=t[72];let $;t[73]!==c||t[74]!==a.isPending||t[75]!==te||t[76]!==Q?($=(0,k.jsx)(ee,{offen:c,titel:`Update-Zeitfenster ändern?`,text:te,knopf:`Speichern`,gesperrt:a.isPending,onNein:ne,onJa:Q}),t[73]=c,t[74]=a.isPending,t[75]=te,t[76]=Q,t[77]=$):$=t[77];let re;return t[78]!==d||t[79]!==h||t[80]!==g||t[81]!==_||t[82]!==v||t[83]!==J||t[84]!==X||t[85]!==$?(re=(0,k.jsxs)(d,{titel:h,children:[g,_,v,J,X,$]}),t[78]=d,t[79]=h,t[80]=g,t[81]=_,t[82]=v,t[83]=J,t[84]=X,t[85]=$,t[86]=re):re=t[86],re}function G(e){return(0,k.jsx)(`option`,{value:e,children:e},e)}function K(e,t){return(0,k.jsx)(`option`,{value:t+1,children:e},e)}function q(e){let t=(0,D.c)(37),{e:n,laedt:r,fehler:i}=e,a=p(),[o,s]=(0,O.useState)(null);if(!n){let e;return t[0]!==i||t[1]!==r?(e=(0,k.jsx)(F,{titel:`Modell-Radar`,children:(0,k.jsx)(R,{laedt:r,fehler:i})}),t[0]=i,t[1]=r,t[2]=e):e=t[2],e}let c=n.radar,l=c.zustand===`an`||c.zustand===`unbekannt`&&c.an,u;t[3]===c.naechster_lauf?u=t[4]:(u=c.naechster_lauf?` (nächster Lauf ${N(c.naechster_lauf)})`:``,t[3]=c.naechster_lauf,t[4]=u);let d=`An. Es sucht jede Nacht ab 00:30 nach besseren Modellen${u}.`,f=c.an?`Eingeschaltet.`:`Ausgeschaltet.`,m;t[5]!==d||t[6]!==f?(m={an:d,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:f},t[5]=d,t[6]=f,t[7]=m):m=t[7];let h=m[c.zustand],g;t[8]===h?g=t[9]:(g=(0,k.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,k.jsxs)(L,{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=l?`outline`:`default`,y=!n.schaltbar||a.isPending,b;t[14]===l?b=t[15]:(b=()=>s(!l),t[14]=l,t[15]=b);let x=a.isPending?`Schaltet …`:l?`Ausschalten`:`Einschalten`,S;t[16]!==b||t[17]!==x||t[18]!==v||t[19]!==y?(S=(0,k.jsx)(w,{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,T=o?`Modell-Radar einschalten?`:`Modell-Radar ausschalten?`,E=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.`,A=o?`Einschalten`:`Ausschalten`,j;t[21]===Symbol.for(`react.memo_cache_sentinel`)?(j=()=>s(null),t[21]=j):j=t[21];let M;t[22]!==o||t[23]!==a?(M=()=>{o!==null&&(a.mutate(o),s(null))},t[22]=o,t[23]=a,t[24]=M):M=t[24];let P;t[25]!==a.isPending||t[26]!==C||t[27]!==T||t[28]!==E||t[29]!==A||t[30]!==M?(P=(0,k.jsx)(ee,{offen:C,titel:T,text:E,knopf:A,gesperrt:a.isPending,onNein:j,onJa:M}),t[25]=a.isPending,t[26]=C,t[27]=T,t[28]=E,t[29]=A,t[30]=M,t[31]=P):P=t[31];let I;return t[32]!==S||t[33]!==P||t[34]!==g||t[35]!==_?(I=(0,k.jsxs)(F,{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 J(e){let t=(0,D.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,k.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,k.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,k.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,k.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 ${N(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 ${N(r.commit_datum)}`:``,t[12]=r.commit_datum,t[13]=s);let c;t[14]!==a||t[15]!==s?(c=(0,k.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,k.jsxs)(k.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,k.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,k.jsx)(`span`,{className:`text-[15px]`,children:n}),t[20]=n,t[21]=s);let c;return t[22]!==o||t[23]!==s?(c=(0,k.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 Y(e,t){return!e||!t?null:e.startsWith(t)||t.startsWith(e)}function X(e){let t=(0,D.c)(21),{offen:n}=e,r=h().data,i=!!r?.partner.eingerichtet,[a,o]=u(n,i),s=a.data?.stand?.commit,c=o.data?.stand?.commit,l;t[0]!==s||t[1]!==c?(l=Y(s,c),t[0]=s,t[1]=c,t[2]=l):l=t[2];let d=l,f=a.data?.instanz??r?.instanz??`Diese Instanz`,p=a.data?.stand,m=a.error?.message,g;t[3]!==a.isPending||t[4]!==f||t[5]!==p||t[6]!==m?(g=(0,k.jsx)(J,{name:f,stand:p,laedt:a.isPending,fehler:m}),t[3]=a.isPending,t[4]=f,t[5]=p,t[6]=m,t[7]=g):g=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,k.jsx)(J,{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]===d?v=t[16]:(v=d===!1&&(0,k.jsx)(L,{children:`Die beiden Instanzen laufen mit verschiedenen Ständen. Der nächste Deploy der Box zieht den Homelab-Teil mit.`}),t[15]=d,t[16]=v);let y;return t[17]!==g||t[18]!==_||t[19]!==v?(y=(0,k.jsxs)(F,{titel:`Instanzen`,children:[g,_,v]}),t[17]=g,t[18]=_,t[19]=v,t[20]=y):y=t[20],y}function Z(e){let t=(0,D.c)(52),{h:n}=e,r=o(),i=d(),[a,s]=(0,O.useState)(``),[c,u]=(0,O.useState)(!1),[f,p]=(0,O.useState)(null),h=n.arcane,g;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(g={hinterlegt:(0,k.jsx)(l,{art:`gruen`,children:`hinterlegt`}),umgebung:(0,k.jsx)(l,{art:`gruen`,children:`aus der Dienst-Einstellung`}),fehlt:(0,k.jsx)(l,{art:`bernstein`,children:`fehlt`})},t[0]=g):g=t[0];let _=g[h.schluessel],v;t[1]===h.url?v=t[2]:(v=h.url&&(0,k.jsxs)(`a`,{href:h.url,target:`_blank`,rel:`noopener`,className:`ml-auto inline-flex items-center gap-1 text-cyan hover:underline`,children:[`Arcane öffnen `,(0,k.jsx)(m,{className:`size-3.5`,"aria-hidden":!0})]}),t[1]=h.url,t[2]=v);let y;t[3]!==_||t[4]!==v?(y=(0,k.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2 text-sm text-text-2`,children:[`API-Schlüssel `,_,v]}),t[3]=_,t[4]=v,t[5]=y):y=t[5];let b;t[6]===Symbol.for(`react.memo_cache_sentinel`)?(b=(0,k.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]=b):b=t[6];let x;t[7]!==h.schluessel||t[8]!==r||t[9]!==a?(x=h.schluessel!==`umgebung`&&(0,k.jsxs)(`form`,{className:`flex gap-2`,onSubmit:e=>{e.preventDefault(),a.trim()&&r.mutate(a.trim(),{onSuccess:()=>s(``)})},children:[(0,k.jsx)(`label`,{htmlFor:`arcane-schluessel`,className:`sr-only`,children:`Arcane-API-Schlüssel`}),(0,k.jsxs)(`span`,{className:`relative min-w-0 flex-1`,children:[(0,k.jsx)(E,{className:`pointer-events-none absolute top-1/2 left-3 size-4 -translate-y-1/2 text-text-3`,"aria-hidden":!0}),(0,k.jsx)(`input`,{id:`arcane-schluessel`,type:`password`,autoComplete:`off`,value:a,onChange:e=>s(e.target.value),placeholder:h.schluessel===`hinterlegt`?`Neuen Schlüssel eintragen …`:`Schlüssel aus Arcane einfügen …`,className:`h-11 w-full rounded-lg border border-linie-stark bg-erhaben pr-3 pl-9 text-[15px] outline-none focus:border-lab`})]}),(0,k.jsx)(w,{type:`submit`,disabled:!a.trim()||r.isPending,children:r.isPending?`Prüft …`:`Prüfen und speichern`})]}),t[7]=h.schluessel,t[8]=r,t[9]=a,t[10]=x):x=t[10];let S;t[11]===Symbol.for(`react.memo_cache_sentinel`)?(S=(0,k.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]=S):S=t[11];let C;t[12]!==h.schluessel||t[13]!==c||t[14]!==r?(C=h.schluessel===`hinterlegt`&&(c?(0,k.jsxs)(`span`,{className:`flex flex-wrap gap-2`,children:[(0,k.jsx)(w,{variant:`gefahr`,size:`sm`,disabled:r.isPending,onClick:()=>{r.mutate(null),u(!1)},children:`Wirklich entfernen?`}),(0,k.jsx)(w,{variant:`ghost`,size:`sm`,onClick:()=>u(!1),children:`Nein`})]}):(0,k.jsx)(w,{variant:`ghost`,size:`sm`,className:`self-start`,onClick:()=>u(!0),children:`Schlüssel entfernen`})),t[12]=h.schluessel,t[13]=c,t[14]=r,t[15]=C):C=t[15];let T;t[16]!==y||t[17]!==x||t[18]!==C?(T=(0,k.jsxs)(F,{titel:`Arcane (Docker)`,children:[y,b,x,S,C]}),t[16]=y,t[17]=x,t[18]=C,t[19]=T):T=t[19];let A=h.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.`,j=h.echt_quelle===`umgebung`?` Festgelegt in der Dienst-Einstellung (MC_ARCANE_ECHT).`:``,M;t[20]!==A||t[21]!==j?(M=(0,k.jsxs)(`p`,{className:`text-sm text-text-2`,children:[A,j]}),t[20]=A,t[21]=j,t[22]=M):M=t[22];let N=h.echt?`outline`:`default`,P=h.echt_quelle===`umgebung`||i.isPending||h.schluessel===`fehlt`,I;t[23]===h.echt?I=t[24]:(I=()=>p(!h.echt),t[23]=h.echt,t[24]=I);let L=i.isPending?`Schaltet …`:h.echt?`Zurück auf Probelauf`:`Echt schalten`,R;t[25]!==N||t[26]!==P||t[27]!==I||t[28]!==L?(R=(0,k.jsx)(w,{variant:N,size:`sm`,className:`self-start`,disabled:P,onClick:I,children:L}),t[25]=N,t[26]=P,t[27]=I,t[28]=L,t[29]=R):R=t[29];let z;t[30]===h.schluessel?z=t[31]:(z=h.schluessel===`fehlt`&&(0,k.jsx)(`p`,{className:`text-xs text-text-3`,children:`Erst den Schlüssel eintragen.`}),t[30]=h.schluessel,t[31]=z);let B=f!==null,V=f?`Docker-Updates echt ausführen?`:`Zurück auf Probelauf?`,H=f?`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.`,U=f?`Echt schalten`:`Probelauf`,W=!!f,G;t[32]===Symbol.for(`react.memo_cache_sentinel`)?(G=()=>p(null),t[32]=G):G=t[32];let K;t[33]!==i||t[34]!==f?(K=()=>{f!==null&&(i.mutate(f),p(null))},t[33]=i,t[34]=f,t[35]=K):K=t[35];let q;t[36]!==i.isPending||t[37]!==B||t[38]!==V||t[39]!==H||t[40]!==U||t[41]!==W||t[42]!==K?(q=(0,k.jsx)(ee,{offen:B,titel:V,text:H,knopf:U,gefahr:W,gesperrt:i.isPending,onNein:G,onJa:K}),t[36]=i.isPending,t[37]=B,t[38]=V,t[39]=H,t[40]=U,t[41]=W,t[42]=K,t[43]=q):q=t[43];let J;t[44]!==M||t[45]!==R||t[46]!==z||t[47]!==q?(J=(0,k.jsxs)(F,{titel:`Docker-Updates`,children:[M,R,z,q]}),t[44]=M,t[45]=R,t[46]=z,t[47]=q,t[48]=J):J=t[48];let Y;return t[49]!==J||t[50]!==T?(Y=(0,k.jsxs)(k.Fragment,{children:[T,J]}),t[49]=J,t[50]=T,t[51]=Y):Y=t[51],Y}function te(e){let t=(0,D.c)(21),{h:n}=e,r=n.ausfuehrer,i;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(i=(0,k.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 ${c(new Date(r.zuletzt*1e3).toISOString()).toLowerCase()}`:``,t[1]=r.zuletzt,t[2]=s);let l;t[3]!==a||t[4]!==o||t[5]!==s?(l=(0,k.jsxs)(`dd`,{className:a,children:[o,s]}),t[3]=a,t[4]=o,t[5]=s,t[6]=l):l=t[6];let u;t[7]===Symbol.for(`react.memo_cache_sentinel`)?(u=(0,k.jsx)(`dt`,{className:`text-text-3`,children:`Modus`}),t[7]=u):u=t[7];let d=r.nur_lesen?`nur lesen — Updates sind gesperrt`:`voll: Snapshots, Sicherungen und Updates`,f;t[8]===d?f=t[9]:(f=(0,k.jsx)(`dd`,{className:`text-text-2`,children:d}),t[8]=d,t[9]=f);let p;t[10]===Symbol.for(`react.memo_cache_sentinel`)?(p=(0,k.jsx)(`dt`,{className:`text-text-3`,children:`Sicherungen`}),t[10]=p):p=t[10];let m=r.sicherung_speicher?`auf „${r.sicherung_speicher}“ (wo kein Snapshot geht)`:`kein Speicher gefunden`,h;t[11]===m?h=t[12]:(h=(0,k.jsx)(`dd`,{className:`text-text-2`,children:m}),t[11]=m,t[12]=h);let g;t[13]===Symbol.for(`react.memo_cache_sentinel`)?(g=(0,k.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,k.jsx)(`dd`,{className:`text-text-2`,children:_}),t[14]=_,t[15]=v);let y;return t[16]!==h||t[17]!==v||t[18]!==l||t[19]!==f?(y=(0,k.jsx)(F,{titel:`Ausführer und Updates`,children:(0,k.jsxs)(`dl`,{className:`grid grid-cols-[auto_minmax(0,1fr)] gap-x-4 gap-y-2 text-sm`,children:[i,l,u,f,p,h,g,v]})}),t[16]=h,t[17]=v,t[18]=l,t[19]=f,t[20]=y):y=t[20],y}function ne(){let e=(0,D.c)(8),t=h().data,n=x().data,r=t?.rolle===`homelab`||!!(n?.eingerichtet&&n.erreichbar),i=f(r),a;if(!r){let t;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,k.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,k.jsxs)(k.Fragment,{children:[(0,k.jsx)(Z,{h:i.data}),(0,k.jsx)(te,{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,k.jsx)(R,{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,k.jsx)(I,{titel:`Homelab`,farbe:`homelab`,text:`Arcane und Docker, der Ausführer auf dem Proxmox-Host, Rückwege.`,children:a}),e[6]=a,e[7]=o),o}function Q(){let e=(0,D.c)(17),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,k.jsx)(W,{...i}),o=(0,k.jsx)(q,{...i}),e[4]=i,e[5]=a,e[6]=o);let s;e[7]===Symbol.for(`react.memo_cache_sentinel`)?(s=(0,k.jsx)(z,{offen:!0}),e[7]=s):s=e[7];let c;e[8]===Symbol.for(`react.memo_cache_sentinel`)?(c=(0,k.jsxs)(F,{titel:`Hermes`,children:[(0,k.jsxs)(`a`,{href:`/hermes-ui/`,target:`_blank`,rel:`noopener`,className:`flex h-11 items-center gap-2 self-start rounded-lg border border-linie-stark bg-erhaben px-4 text-[15px] hover:border-text-3`,children:[(0,k.jsx)(m,{className:`size-4`,"aria-hidden":!0}),` Hermes-Dashboard öffnen`]}),(0,k.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,k.jsxs)(I,{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,k.jsx)(ne,{}),e[12]=u):u=e[12];let d;e[13]===Symbol.for(`react.memo_cache_sentinel`)?(d=(0,k.jsx)(I,{titel:`Meldungen`,text:`Telegram, Morgenmeldung und was sofort kommt.`,children:(0,k.jsx)(V,{})}),e[13]=d):d=e[13];let f;e[14]===Symbol.for(`react.memo_cache_sentinel`)?(f=(0,k.jsx)(I,{titel:`Software-Stand`,text:`Welcher Stand auf beiden Instanzen läuft.`,children:(0,k.jsx)(X,{offen:!0})}),e[14]=f):f=e[14];let p;return e[15]===l?p=e[16]:(p=(0,k.jsxs)(`div`,{className:`grid gap-5 md:gap-6 xl:grid-cols-2`,children:[l,u,d,f]}),e[15]=l,e[16]=p),p}export{Q as EinstellungenSeite}; \ No newline at end of file diff --git a/frontend/dist/assets/Einstellungen-FJlJNgdq.js b/frontend/dist/assets/Einstellungen-FJlJNgdq.js new file mode 100644 index 0000000..1209191 --- /dev/null +++ b/frontend/dist/assets/Einstellungen-FJlJNgdq.js @@ -0,0 +1 @@ +import{a as e,c as t,i as n,n as r,r as i,t as a}from"./dist-aE7UmubC.js";import{$ as o,Bt as s,Ct as c,D as l,Ft as u,J as d,Jt as f,Nt as p,_n as m,an as h,dn as g,dt as _,jt as v,on as y,q as b,rt as x,vn as S,yt as C}from"./index-BjDzWYEf.js";import{t as w}from"./button-DwYvdWVr.js";import{t as ee}from"./Bestaetigen-DNJdB_zl.js";var T={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`}]]};T.node;var E=r(T),D=i(),O=t(e(),1),k=n(),A=[`Montag`,`Dienstag`,`Mittwoch`,`Donnerstag`,`Freitag`,`Samstag`,`Sonntag`],j=Array.from({length:48},(e,t)=>`${String(Math.floor(t/2)).padStart(2,`0`)}:${t%2?`30`:`00`}`),M=new Intl.DateTimeFormat(`de-DE`,{day:`2-digit`,month:`2-digit`,year:`numeric`,hour:`2-digit`,minute:`2-digit`,timeZone:`Europe/Berlin`});function N(e){let t=e?new Date(e):null;return t&&!Number.isNaN(t.getTime())?M.format(t):`–`}function P(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?`${A[e-1]} ${o}–${s}`:`${A[e-1]} ${o} – ${A[i-1]} ${s}`}function F(e){let t=(0,D.c)(6),{titel:n,children:r}=e,i;t[0]===n?i=t[1]:(i=(0,k.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,k.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 I(e){let t=(0,D.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,k.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,k.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,k.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,k.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,k.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,k.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 L(e){let t=(0,D.c)(2),{children:n}=e,r;return t[0]===n?r=t[1]:(r=(0,k.jsx)(`p`,{className:`text-sm text-bernstein`,children:n}),t[0]=n,t[1]=r),r}function R(e){let t=(0,D.c)(3),{laedt:n,fehler:r}=e;if(n){let e;return t[0]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,k.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,k.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 z({offen:e}){let t=S(),n=m({queryKey:[`geheimnisse`],queryFn:()=>h(`/api/maintenance/geheimnisse`),enabled:e}),[r,i]=(0,O.useState)(``),[a,o]=(0,O.useState)(!1),[s,c]=(0,O.useState)(!1);async function l(e){if(!a){o(!0),c(!1);try{await y(`/api/maintenance/geheimnisse`,{schluessel:`hf_token`,wert:e}),f(`erfolg`,e?`Hugging-Face-Zugang gespeichert.`:`Hugging-Face-Zugang gelöscht.`),i(``),t.invalidateQueries({queryKey:[`geheimnisse`]})}catch(e){f(`fehler`,e.message)}finally{o(!1)}}}let u=n.data,d;return d=n.isPending?`Wird gelesen …`:u?u.hf_token_gesetzt?`Ist hinterlegt.`:`Fehlt.`:`Lässt sich gerade nicht lesen${n.error?`: ${n.error.message}`:`.`}`,(0,k.jsxs)(F,{titel:`Hugging-Face-Zugang`,children:[(0,k.jsxs)(`p`,{className:`text-sm text-text-2`,"aria-live":`polite`,children:[(0,k.jsx)(`span`,{className:!u&&!n.isPending?`text-rot-text`:void 0,children:d}),` Nötig für gesperrte Modelle und schnellere Downloads.`,u?.hf_token_aus_env?` Er kommt aus der Dienst-Einstellung und lässt sich hier nicht löschen.`:``]}),u?.schreibbar===!1&&(0,k.jsx)(`p`,{className:`text-sm text-bernstein`,children:`Die Box kann den Zugang gerade nicht speichern: Ihre Ablage ist nicht beschreibbar.`}),(0,k.jsxs)(`form`,{className:`flex gap-2`,onSubmit:e=>{e.preventDefault(),r.trim()&&l(r.trim())},children:[(0,k.jsx)(`label`,{htmlFor:`hf-token`,className:`sr-only`,children:`Hugging-Face-Zugang`}),(0,k.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,k.jsx)(w,{type:`submit`,disabled:!r.trim()||u?.schreibbar===!1||a,children:a?`Speichert …`:`Speichern`})]}),u?.hf_token_gesetzt&&!u.hf_token_aus_env&&(s?(0,k.jsxs)(`span`,{className:`flex flex-wrap gap-2`,children:[(0,k.jsx)(w,{variant:`gefahr`,size:`sm`,disabled:a,onClick:()=>l(null),children:`Wirklich löschen?`}),(0,k.jsx)(w,{variant:`ghost`,size:`sm`,onClick:()=>c(!1),children:`Nein`})]}):(0,k.jsx)(w,{variant:`ghost`,size:`sm`,className:`self-start`,disabled:a,onClick:()=>c(!0),children:`Zugang löschen`}))]})}function B(e){let t=(0,D.c)(24),{ziel:n,name:r}=e,i=p(),a=i.data,o=null;if(i.isPending){let e;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,k.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,k.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,k.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,k.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,k.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,k.jsx)(w,{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 f;t[18]!==s||t[19]!==d?(f=(0,k.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-2`,children:[s,d]}),t[18]=s,t[19]=d,t[20]=f):f=t[20];let m;return t[21]!==o||t[22]!==f?(m=(0,k.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[f,o]}),t[21]=o,t[22]=f,t[23]=m):m=t[23],m}function V(){let e=(0,D.c)(9),t=_().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(U),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,k.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,k.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,k.jsxs)(F,{titel:`Telegram`,children:[o,s,a.map(H)]}),e[7]=a,e[8]=c),c}function H(e){return(0,k.jsx)(B,{ziel:e.ziel,name:e.name},e.ziel)}function U(e,t){return Number(e.ziel!==`box`)-Number(t.ziel!==`box`)}function W(e){let t=(0,D.c)(87),{e:n,laedt:r,fehler:i}=e,a=u(),[o,s]=(0,O.useState)(null),[c,l]=(0,O.useState)(!1);if(!n){let e;return t[0]!==i||t[1]!==r?(e=(0,k.jsx)(F,{titel:`Update-Zeitfenster`,children:(0,k.jsx)(R,{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,T,E,M,I,z;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){z=o??{tag:d.tag,uhrzeit:d.uhrzeit},p=z.tag!==d.tag||z.uhrzeit!==d.uhrzeit;let e=j.includes(z.uhrzeit)?j:[...j,z.uhrzeit].sort();f=F,g=`Update-Zeitfenster`;let r;t[29]===d.naechster_lauf?r=t[30]:(r=d.naechster_lauf?` (nächster Lauf ${N(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,k.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,k.jsx)(L,{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,k.jsx)(L,{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],I=`flex flex-wrap items-end gap-2`;let i=z.tag,a;t[42]===Symbol.for(`react.memo_cache_sentinel`)?(a=A.map(K),t[42]=a):a=t[42],h=(0,k.jsxs)(`label`,{className:`flex flex-col gap-1 text-xs text-text-3`,children:[`Tag`,(0,k.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=>s({...z,tag:Number(e.target.value)}),children:a})]}),E=`flex flex-col gap-1 text-xs text-text-3`,M=`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=z.uhrzeit,x=!n.schaltbar,S=`Uhrzeit`,C=e=>s({...z,uhrzeit:e.target.value}),T=e.map(G),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]=T,t[25]=E,t[26]=M,t[27]=I,t[28]=z}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],T=t[24],E=t[25],M=t[26],I=t[27],z=t[28];let B;t[43]!==m||t[44]!==b||t[45]!==x||t[46]!==S||t[47]!==C||t[48]!==T?(B=(0,k.jsx)(`select`,{className:m,value:b,disabled:x,"aria-label":S,onChange:C,children:T}),t[43]=m,t[44]=b,t[45]=x,t[46]=S,t[47]=C,t[48]=T,t[49]=B):B=t[49];let V;t[50]!==B||t[51]!==E||t[52]!==M?(V=(0,k.jsxs)(`label`,{className:E,children:[M,B]}),t[50]=B,t[51]=E,t[52]=M,t[53]=V):V=t[53];let H=!n.schaltbar||a.isPending||!p&&d.wirksam,U;t[54]===Symbol.for(`react.memo_cache_sentinel`)?(U=()=>l(!0),t[54]=U):U=t[54];let W=a.isPending?`Speichert …`:`Speichern`,q;t[55]!==H||t[56]!==W?(q=(0,k.jsx)(w,{disabled:H,onClick:U,children:W}),t[55]=H,t[56]=W,t[57]=q):q=t[57];let J;t[58]!==h||t[59]!==V||t[60]!==q||t[61]!==I?(J=(0,k.jsxs)(`div`,{className:I,children:[h,V,q]}),t[58]=h,t[59]=V,t[60]=q,t[61]=I,t[62]=J):J=t[62];let Y=n.schaltbar?``:` Einstellen lässt es sich nur auf der Box.`,X;t[63]===Y?X=t[64]:(X=(0,k.jsxs)(`p`,{className:`text-xs text-text-3`,children:[`Am besten nachts nach der Sicherung (03:30) und vor der Morgenmeldung (07:00).`,Y]}),t[63]=Y,t[64]=X);let Z;t[65]!==z.tag||t[66]!==z.uhrzeit?(Z=P(z.tag,z.uhrzeit),t[65]=z.tag,t[66]=z.uhrzeit,t[67]=Z):Z=t[67];let te=`Der Update-Lauf startet ab jetzt jeden ${A[z.tag-1]} um ${z.uhrzeit} Uhr. Neu gestartet wird die Box nur ${Z}. 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=()=>l(!1),t[68]=ne):ne=t[68];let Q;t[69]!==c||t[70]!==a||t[71]!==z?(Q=()=>{c&&(a.mutate(z,{onSuccess:()=>s(null)}),l(!1))},t[69]=c,t[70]=a,t[71]=z,t[72]=Q):Q=t[72];let $;t[73]!==c||t[74]!==a.isPending||t[75]!==te||t[76]!==Q?($=(0,k.jsx)(ee,{offen:c,titel:`Update-Zeitfenster ändern?`,text:te,knopf:`Speichern`,gesperrt:a.isPending,onNein:ne,onJa:Q}),t[73]=c,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]!==J||t[84]!==X||t[85]!==$?(re=(0,k.jsxs)(f,{titel:g,children:[_,v,y,J,X,$]}),t[78]=f,t[79]=g,t[80]=_,t[81]=v,t[82]=y,t[83]=J,t[84]=X,t[85]=$,t[86]=re):re=t[86],re}function G(e){return(0,k.jsx)(`option`,{value:e,children:e},e)}function K(e,t){return(0,k.jsx)(`option`,{value:t+1,children:e},e)}function q(e){let t=(0,D.c)(37),{e:n,laedt:r,fehler:i}=e,a=c(),[o,s]=(0,O.useState)(null);if(!n){let e;return t[0]!==i||t[1]!==r?(e=(0,k.jsx)(F,{titel:`Modell-Radar`,children:(0,k.jsx)(R,{laedt:r,fehler:i})}),t[0]=i,t[1]=r,t[2]=e):e=t[2],e}let l=n.radar,u=l.zustand===`an`||l.zustand===`unbekannt`&&l.an,d;t[3]===l.naechster_lauf?d=t[4]:(d=l.naechster_lauf?` (nächster Lauf ${N(l.naechster_lauf)})`:``,t[3]=l.naechster_lauf,t[4]=d);let f=`An. Es sucht jede Nacht ab 00:30 nach besseren Modellen${d}.`,p=l.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[l.zustand],g;t[8]===h?g=t[9]:(g=(0,k.jsx)(`p`,{className:`text-sm text-text-2`,children:h}),t[8]=h,t[9]=g);let _;t[10]!==n.schaltbar||t[11]!==l.an||t[12]!==l.wirksam?(_=n.schaltbar&&!l.wirksam&&(0,k.jsxs)(L,{children:[`Eingestellt ist „`,l.an?`an`:`aus`,`“, systemd zeigt etwas anderes. Noch einmal schalten gleicht es an.`]}),t[10]=n.schaltbar,t[11]=l.an,t[12]=l.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,k.jsx)(w,{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,T=o?`Modell-Radar einschalten?`:`Modell-Radar ausschalten?`,E=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.`,A=o?`Einschalten`:`Ausschalten`,j;t[21]===Symbol.for(`react.memo_cache_sentinel`)?(j=()=>s(null),t[21]=j):j=t[21];let M;t[22]!==o||t[23]!==a?(M=()=>{o!==null&&(a.mutate(o),s(null))},t[22]=o,t[23]=a,t[24]=M):M=t[24];let P;t[25]!==a.isPending||t[26]!==C||t[27]!==T||t[28]!==E||t[29]!==A||t[30]!==M?(P=(0,k.jsx)(ee,{offen:C,titel:T,text:E,knopf:A,gesperrt:a.isPending,onNein:j,onJa:M}),t[25]=a.isPending,t[26]=C,t[27]=T,t[28]=E,t[29]=A,t[30]=M,t[31]=P):P=t[31];let I;return t[32]!==S||t[33]!==P||t[34]!==g||t[35]!==_?(I=(0,k.jsxs)(F,{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 J(e){let t=(0,D.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,k.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,k.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,k.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,k.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 ${N(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 ${N(r.commit_datum)}`:``,t[12]=r.commit_datum,t[13]=s);let c;t[14]!==a||t[15]!==s?(c=(0,k.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,k.jsxs)(k.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,k.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,k.jsx)(`span`,{className:`text-[15px]`,children:n}),t[20]=n,t[21]=s);let c;return t[22]!==o||t[23]!==s?(c=(0,k.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 Y(e,t){return!e||!t?null:e.startsWith(t)||t.startsWith(e)}function X(e){let t=(0,D.c)(21),{offen:n}=e,r=_().data,i=!!r?.partner.eingerichtet,[a,o]=v(n,i),s=a.data?.stand?.commit,c=o.data?.stand?.commit,l;t[0]!==s||t[1]!==c?(l=Y(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,p=a.error?.message,m;t[3]!==a.isPending||t[4]!==d||t[5]!==f||t[6]!==p?(m=(0,k.jsx)(J,{name:d,stand:f,laedt:a.isPending,fehler:p}),t[3]=a.isPending,t[4]=d,t[5]=f,t[6]=p,t[7]=m):m=t[7];let h;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?(h=i&&(0,k.jsx)(J,{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]=h):h=t[14];let g;t[15]===u?g=t[16]:(g=u===!1&&(0,k.jsx)(L,{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]=g);let y;return t[17]!==m||t[18]!==h||t[19]!==g?(y=(0,k.jsxs)(F,{titel:`Instanzen`,children:[m,h,g]}),t[17]=m,t[18]=h,t[19]=g,t[20]=y):y=t[20],y}function Z(e){let t=(0,D.c)(52),{h:n}=e,r=d(),i=b(),[a,o]=(0,O.useState)(``),[s,c]=(0,O.useState)(!1),[u,f]=(0,O.useState)(null),p=n.arcane,m;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(m={hinterlegt:(0,k.jsx)(l,{art:`gruen`,children:`hinterlegt`}),umgebung:(0,k.jsx)(l,{art:`gruen`,children:`aus der Dienst-Einstellung`}),fehlt:(0,k.jsx)(l,{art:`bernstein`,children:`fehlt`})},t[0]=m):m=t[0];let h=m[p.schluessel],_;t[1]===p.url?_=t[2]:(_=p.url&&(0,k.jsxs)(`a`,{href:p.url,target:`_blank`,rel:`noopener`,className:`ml-auto inline-flex items-center gap-1 text-cyan hover:underline`,children:[`Arcane öffnen `,(0,k.jsx)(g,{className:`size-3.5`,"aria-hidden":!0})]}),t[1]=p.url,t[2]=_);let v;t[3]!==h||t[4]!==_?(v=(0,k.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2 text-sm text-text-2`,children:[`API-Schlüssel `,h,_]}),t[3]=h,t[4]=_,t[5]=v):v=t[5];let y;t[6]===Symbol.for(`react.memo_cache_sentinel`)?(y=(0,k.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]=y):y=t[6];let x;t[7]!==p.schluessel||t[8]!==r||t[9]!==a?(x=p.schluessel!==`umgebung`&&(0,k.jsxs)(`form`,{className:`flex gap-2`,onSubmit:e=>{e.preventDefault(),a.trim()&&r.mutate(a.trim(),{onSuccess:()=>o(``)})},children:[(0,k.jsx)(`label`,{htmlFor:`arcane-schluessel`,className:`sr-only`,children:`Arcane-API-Schlüssel`}),(0,k.jsxs)(`span`,{className:`relative min-w-0 flex-1`,children:[(0,k.jsx)(E,{className:`pointer-events-none absolute top-1/2 left-3 size-4 -translate-y-1/2 text-text-3`,"aria-hidden":!0}),(0,k.jsx)(`input`,{id:`arcane-schluessel`,type:`password`,autoComplete:`off`,value:a,onChange:e=>o(e.target.value),placeholder:p.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,k.jsx)(w,{type:`submit`,disabled:!a.trim()||r.isPending,children:r.isPending?`Prüft …`:`Prüfen und speichern`})]}),t[7]=p.schluessel,t[8]=r,t[9]=a,t[10]=x):x=t[10];let S;t[11]===Symbol.for(`react.memo_cache_sentinel`)?(S=(0,k.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]=S):S=t[11];let C;t[12]!==p.schluessel||t[13]!==s||t[14]!==r?(C=p.schluessel===`hinterlegt`&&(s?(0,k.jsxs)(`span`,{className:`flex flex-wrap gap-2`,children:[(0,k.jsx)(w,{variant:`gefahr`,size:`sm`,disabled:r.isPending,onClick:()=>{r.mutate(null),c(!1)},children:`Wirklich entfernen?`}),(0,k.jsx)(w,{variant:`ghost`,size:`sm`,onClick:()=>c(!1),children:`Nein`})]}):(0,k.jsx)(w,{variant:`ghost`,size:`sm`,className:`self-start`,onClick:()=>c(!0),children:`Schlüssel entfernen`})),t[12]=p.schluessel,t[13]=s,t[14]=r,t[15]=C):C=t[15];let T;t[16]!==v||t[17]!==x||t[18]!==C?(T=(0,k.jsxs)(F,{titel:`Arcane (Docker)`,children:[v,y,x,S,C]}),t[16]=v,t[17]=x,t[18]=C,t[19]=T):T=t[19];let A=p.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.`,j=p.echt_quelle===`umgebung`?` Festgelegt in der Dienst-Einstellung (MC_ARCANE_ECHT).`:``,M;t[20]!==A||t[21]!==j?(M=(0,k.jsxs)(`p`,{className:`text-sm text-text-2`,children:[A,j]}),t[20]=A,t[21]=j,t[22]=M):M=t[22];let N=p.echt?`outline`:`default`,P=p.echt_quelle===`umgebung`||i.isPending||p.schluessel===`fehlt`,I;t[23]===p.echt?I=t[24]:(I=()=>f(!p.echt),t[23]=p.echt,t[24]=I);let L=i.isPending?`Schaltet …`:p.echt?`Zurück auf Probelauf`:`Echt schalten`,R;t[25]!==N||t[26]!==P||t[27]!==I||t[28]!==L?(R=(0,k.jsx)(w,{variant:N,size:`sm`,className:`self-start`,disabled:P,onClick:I,children:L}),t[25]=N,t[26]=P,t[27]=I,t[28]=L,t[29]=R):R=t[29];let z;t[30]===p.schluessel?z=t[31]:(z=p.schluessel===`fehlt`&&(0,k.jsx)(`p`,{className:`text-xs text-text-3`,children:`Erst den Schlüssel eintragen.`}),t[30]=p.schluessel,t[31]=z);let B=u!==null,V=u?`Docker-Updates echt ausführen?`:`Zurück auf Probelauf?`,H=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.`,U=u?`Echt schalten`:`Probelauf`,W=!!u,G;t[32]===Symbol.for(`react.memo_cache_sentinel`)?(G=()=>f(null),t[32]=G):G=t[32];let K;t[33]!==i||t[34]!==u?(K=()=>{u!==null&&(i.mutate(u),f(null))},t[33]=i,t[34]=u,t[35]=K):K=t[35];let q;t[36]!==i.isPending||t[37]!==B||t[38]!==V||t[39]!==H||t[40]!==U||t[41]!==W||t[42]!==K?(q=(0,k.jsx)(ee,{offen:B,titel:V,text:H,knopf:U,gefahr:W,gesperrt:i.isPending,onNein:G,onJa:K}),t[36]=i.isPending,t[37]=B,t[38]=V,t[39]=H,t[40]=U,t[41]=W,t[42]=K,t[43]=q):q=t[43];let J;t[44]!==M||t[45]!==R||t[46]!==z||t[47]!==q?(J=(0,k.jsxs)(F,{titel:`Docker-Updates`,children:[M,R,z,q]}),t[44]=M,t[45]=R,t[46]=z,t[47]=q,t[48]=J):J=t[48];let Y;return t[49]!==J||t[50]!==T?(Y=(0,k.jsxs)(k.Fragment,{children:[T,J]}),t[49]=J,t[50]=T,t[51]=Y):Y=t[51],Y}function te(e){let t=(0,D.c)(21),{h:n}=e,r=n.ausfuehrer,i;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(i=(0,k.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`,c;t[1]===r.zuletzt?c=t[2]:(c=r.zuletzt?` · zuletzt ${s(new Date(r.zuletzt*1e3).toISOString()).toLowerCase()}`:``,t[1]=r.zuletzt,t[2]=c);let l;t[3]!==a||t[4]!==o||t[5]!==c?(l=(0,k.jsxs)(`dd`,{className:a,children:[o,c]}),t[3]=a,t[4]=o,t[5]=c,t[6]=l):l=t[6];let u;t[7]===Symbol.for(`react.memo_cache_sentinel`)?(u=(0,k.jsx)(`dt`,{className:`text-text-3`,children:`Modus`}),t[7]=u):u=t[7];let d=r.nur_lesen?`nur lesen — Updates sind gesperrt`:`voll: Snapshots, Sicherungen und Updates`,f;t[8]===d?f=t[9]:(f=(0,k.jsx)(`dd`,{className:`text-text-2`,children:d}),t[8]=d,t[9]=f);let p;t[10]===Symbol.for(`react.memo_cache_sentinel`)?(p=(0,k.jsx)(`dt`,{className:`text-text-3`,children:`Sicherungen`}),t[10]=p):p=t[10];let m=r.sicherung_speicher?`auf „${r.sicherung_speicher}“ (wo kein Snapshot geht)`:`kein Speicher gefunden`,h;t[11]===m?h=t[12]:(h=(0,k.jsx)(`dd`,{className:`text-text-2`,children:m}),t[11]=m,t[12]=h);let g;t[13]===Symbol.for(`react.memo_cache_sentinel`)?(g=(0,k.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,k.jsx)(`dd`,{className:`text-text-2`,children:_}),t[14]=_,t[15]=v);let y;return t[16]!==h||t[17]!==v||t[18]!==l||t[19]!==f?(y=(0,k.jsx)(F,{titel:`Ausführer und Updates`,children:(0,k.jsxs)(`dl`,{className:`grid grid-cols-[auto_minmax(0,1fr)] gap-x-4 gap-y-2 text-sm`,children:[i,l,u,f,p,h,g,v]})}),t[16]=h,t[17]=v,t[18]=l,t[19]=f,t[20]=y):y=t[20],y}function ne(){let e=(0,D.c)(8),t=_().data,n=C().data,r=t?.rolle===`homelab`||!!(n?.eingerichtet&&n.erreichbar),i=x(r),a;if(!r){let t;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,k.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,k.jsxs)(k.Fragment,{children:[(0,k.jsx)(Z,{h:i.data}),(0,k.jsx)(te,{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,k.jsx)(R,{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,k.jsx)(I,{titel:`Homelab`,farbe:`homelab`,text:`Arcane und Docker, der Ausführer auf dem Proxmox-Host, Rückwege.`,children:a}),e[6]=a,e[7]=o),o}function Q(){let e=(0,D.c)(18),t=o(!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,s;e[4]===i?(a=e[5],s=e[6]):(a=(0,k.jsx)(W,{...i}),s=(0,k.jsx)(q,{...i}),e[4]=i,e[5]=a,e[6]=s);let c;e[7]===Symbol.for(`react.memo_cache_sentinel`)?(c=(0,k.jsx)(z,{offen:!0}),e[7]=c):c=e[7];let l;e[8]===Symbol.for(`react.memo_cache_sentinel`)?(l=(0,k.jsxs)(F,{titel:`Hermes`,children:[(0,k.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,k.jsx)(g,{className:`size-4`,"aria-hidden":!0}),` Hermes-Dashboard öffnen`]}),(0,k.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]=l):l=e[8];let u;e[9]!==a||e[10]!==s?(u=(0,k.jsxs)(I,{titel:`KI-Box`,farbe:`box`,text:`Wann sie sich aktualisiert, das Modell-Radar und Zugänge.`,children:[a,s,c,l]}),e[9]=a,e[10]=s,e[11]=u):u=e[11];let d;e[12]===Symbol.for(`react.memo_cache_sentinel`)?(d=(0,k.jsx)(ne,{}),e[12]=d):d=e[12];let f;e[13]===Symbol.for(`react.memo_cache_sentinel`)?(f=(0,k.jsx)(I,{titel:`Meldungen`,text:`Telegram, Morgenmeldung und was sofort kommt.`,children:(0,k.jsx)(V,{})}),e[13]=f):f=e[13];let p;e[14]===Symbol.for(`react.memo_cache_sentinel`)?(p=(0,k.jsx)(I,{titel:`Software-Stand`,text:`Welcher Stand auf beiden Instanzen läuft.`,children:(0,k.jsx)(X,{offen:!0})}),e[14]=p):p=e[14];let m;e[15]===Symbol.for(`react.memo_cache_sentinel`)?(m=(0,k.jsxs)(`p`,{className:`text-xs text-text-3 xl:col-span-2`,children:[`Logos der Dienste: `,(0,k.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]=m):m=e[15];let h;return e[16]===u?h=e[17]:(h=(0,k.jsxs)(`div`,{className:`grid gap-5 md:gap-6 xl:grid-cols-2`,children:[u,d,f,p,m]}),e[16]=u,e[17]=h),h}export{Q as EinstellungenSeite}; \ No newline at end of file diff --git a/frontend/dist/assets/Homelab-D7JGlciA.js b/frontend/dist/assets/Homelab-D7JGlciA.js deleted file mode 100644 index 3fa0756..0000000 --- a/frontend/dist/assets/Homelab-D7JGlciA.js +++ /dev/null @@ -1 +0,0 @@ -import{i as e,n as t,r as n,s as r,t as i}from"./dist-D4CVSex9.js";import{t as a}from"./chevron-right-lErM2U6o.js";import{n as o,t as s}from"./undo-2-CJEVZ3Al.js";import{t as c}from"./search-DDxMRsny.js";import{$ as l,A as u,C as d,D as f,F as p,I as m,L as h,M as g,Mt as _,N as v,O as y,P as b,Pt as x,Q as S,R as C,S as w,St as T,Ut as E,X as D,at as O,b as k,bt as ee,cn as A,dn as te,et as ne,i as j,j as re,k as ie,m as ae,on as oe,pt as se,rt as ce,sn as M,un as N,xt as le}from"./index-CKWhFN2A.js";import{t as P}from"./button-D8rvET0Z.js";import{t as F}from"./Bestaetigen-CMlebyiw.js";import{t as ue}from"./Lampe-gSQfYg4e.js";var I={name:`circle-dashed`,size:24,node:[[`path`,{d:`M10.1 2.182a10 10 0 0 1 3.8 0`,key:`5ilxe3`}],[`path`,{d:`M13.9 21.818a10 10 0 0 1-3.8 0`,key:`11zvb9`}],[`path`,{d:`M17.609 3.721a10 10 0 0 1 2.69 2.7`,key:`1iw5b2`}],[`path`,{d:`M2.182 13.9a10 10 0 0 1 0-3.8`,key:`c0bmvh`}],[`path`,{d:`M20.279 17.609a10 10 0 0 1-2.7 2.69`,key:`1ruxm7`}],[`path`,{d:`M21.818 10.1a10 10 0 0 1 0 3.8`,key:`qkgqxc`}],[`path`,{d:`M3.721 6.391a10 10 0 0 1 2.7-2.69`,key:`1mcia2`}],[`path`,{d:`M6.391 20.279a10 10 0 0 1-2.69-2.7`,key:`1fvljs`}]]};I.node;var de=A(I),L={name:`loader-circle`,size:24,node:[[`path`,{d:`M21 12a9 9 0 1 1-6.219-8.56`,key:`13zald`}]],aliases:[`loader-2`]};L.node;var fe=A(L),R={name:`skip-forward`,size:24,node:[[`path`,{d:`M21 4v16`,key:`7j8fe9`}],[`path`,{d:`M6.029 4.285A2 2 0 0 0 3 6v12a2 2 0 0 0 3.029 1.715l9.997-5.998a2 2 0 0 0 .003-3.432z`,key:`zs4d6`}]]};R.node;var pe=A(R),z=t(),B=n(),V=`md:grid-cols-[minmax(0,1.3fr)_110px_minmax(0,1fr)_minmax(0,1.2fr)_minmax(0,1fr)_90px]`,H=e=>(e/1e9).toFixed(1).replace(`.`,`,`);function U(e){let t=(0,z.c)(17),{wert:n,gelb:r,rot:a,zusatz:o}=e;if(n==null){let e;return t[0]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,B.jsx)(`span`,{className:`text-sm text-text-3`,children:`–`}),t[0]=e):e=t[0],e}let s=n>=a?`var(--rot)`:n>=r?`var(--bernstein)`:`var(--reihe-1)`,c=n>=a?`text-rot-text`:n>=r?`text-bernstein`:`text-text-2`,l;t[1]===c?l=t[2]:(l=i(`ziffern text-sm`,c),t[1]=c,t[2]=l);let u;t[3]===n?u=t[4]:(u=Math.round(n),t[3]=n,t[4]=u);let d;t[5]===o?d=t[6]:(d=o&&(0,B.jsxs)(`span`,{className:`font-sans text-xs text-text-3`,children:[` · `,o]}),t[5]=o,t[6]=d);let f;t[7]!==l||t[8]!==u||t[9]!==d?(f=(0,B.jsxs)(`span`,{className:l,children:[u,` %`,d]}),t[7]=l,t[8]=u,t[9]=d,t[10]=f):f=t[10];let p=`${Math.min(100,Math.max(2,n))}%`,m;t[11]!==s||t[12]!==p?(m=(0,B.jsx)(`span`,{className:`h-1.5 w-full max-w-40 overflow-hidden rounded-full bg-erhaben`,"aria-hidden":!0,children:(0,B.jsx)(`span`,{className:`block h-full rounded-full`,style:{width:p,background:s}})}),t[11]=s,t[12]=p,t[13]=m):m=t[13];let h;return t[14]!==f||t[15]!==m?(h=(0,B.jsxs)(`span`,{className:`flex min-w-0 flex-col gap-1`,children:[f,m]}),t[14]=f,t[15]=m,t[16]=h):h=t[16],h}function W(e){if(e.erreichbar===!1)return 0;let t=v(e);return t!==null&&t>=.8?1:e.art===`proxmox-host`?2:3}function me(e){let t=(0,z.c)(4),{ziele:n,messwerte:r}=e,a;if(t[0]!==r||t[1]!==n){let e=new Map((r??[]).map(ge)),o=[...n].sort(he),s;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(s=(0,B.jsxs)(`div`,{role:`row`,className:i(`schild hidden gap-x-4 pb-2 text-xs font-semibold text-text-3 md:grid`,V),children:[(0,B.jsx)(`span`,{role:`columnheader`,children:`Gerät`}),(0,B.jsx)(`span`,{role:`columnheader`,children:`Netz`}),(0,B.jsx)(`span`,{role:`columnheader`,children:`CPU`}),(0,B.jsx)(`span`,{role:`columnheader`,children:`Speicher`}),(0,B.jsx)(`span`,{role:`columnheader`,children:`Platte`}),(0,B.jsx)(`span`,{role:`columnheader`,children:`Läuft seit`})]}),t[3]=s):s=t[3],a=(0,B.jsxs)(`div`,{role:`table`,"aria-label":`Zustand der Geräte`,className:`flex flex-col`,children:[s,o.map(t=>{let n=e.get(t.id),r=n?.platte??(v(t)===null?null:v(t)*100),a=n?.ram_used&&n.ram_total?`${H(n.ram_used)} / ${H(n.ram_total)} GB`:void 0;return(0,B.jsxs)(`div`,{role:`row`,className:i(`grid grid-cols-2 gap-x-4 gap-y-2 border-t border-linie py-3 md:items-center`,V),children:[(0,B.jsxs)(`div`,{role:`rowheader`,className:`col-span-2 flex min-w-0 flex-col md:col-span-1`,children:[(0,B.jsx)(N,{to:`/homelab/monitoring`,hash:t.id,className:`text-[15px] font-semibold break-words hover:text-lab-text`,children:t.name}),y(t)!==t.name&&(0,B.jsx)(`span`,{className:`text-sm text-text-3`,children:y(t)})]}),(0,B.jsxs)(`span`,{role:`cell`,className:i(`schild flex items-center gap-1.5 text-xs`,t.erreichbar===!1?`text-rot-text`:`text-text-3`),children:[t.erreichbar!==null&&(0,B.jsx)(`span`,{"aria-hidden":!0,className:i(`size-2 rounded-full`,t.erreichbar?`bg-gruen`:`bg-rot`)}),t.erreichbar===null?`–`:t.erreichbar?`erreichbar`:`antwortet nicht`]}),(0,B.jsxs)(`span`,{role:`cell`,children:[(0,B.jsx)(`span`,{className:`text-xs text-text-3 md:hidden`,children:`CPU `}),(0,B.jsx)(U,{wert:n?.cpu,gelb:85,rot:95})]}),(0,B.jsxs)(`span`,{role:`cell`,children:[(0,B.jsx)(`span`,{className:`text-xs text-text-3 md:hidden`,children:`Speicher `}),(0,B.jsx)(U,{wert:n?.ram,gelb:85,rot:95,zusatz:a})]}),(0,B.jsxs)(`span`,{role:`cell`,children:[(0,B.jsx)(`span`,{className:`text-xs text-text-3 md:hidden`,children:`Platte `}),(0,B.jsx)(U,{wert:r,gelb:80,rot:90})]}),(0,B.jsxs)(`span`,{role:`cell`,className:`ziffern text-sm text-text-2`,children:[(0,B.jsx)(`span`,{className:`font-sans text-xs text-text-3 md:hidden`,children:`Läuft seit `}),ae(n?.uptime_s)]})]},t.id)})]}),t[0]=r,t[1]=n,t[2]=a}else a=t[2];return a}function he(e,t){return W(e)-W(t)}function ge(e){return[e.id,e.aktuell]}function _e(e){let t=(0,z.c)(24),{lage:n,lampen:r,onAnsehen:a}=e,o=n.ziel!==null,s=!o,c=`${n.oben} ${n.mitte}`,l=E[n.art],u=o?`cursor-pointer`:`cursor-default`,d;t[0]!==l||t[1]!==u?(d=i(`flex min-h-[130px] flex-col items-center justify-center gap-1 rounded-2xl border px-4 py-4 font-anzeige transition-colors`,l,u),t[0]=l,t[1]=u,t[2]=d):d=t[2];let f;t[3]===n.oben?f=t[4]:(f=(0,B.jsx)(`span`,{className:`schild text-sm tracking-[0.26em]`,children:n.oben}),t[3]=n.oben,t[4]=f);let p;t[5]===n.mitte?p=t[6]:(p=(0,B.jsx)(`span`,{className:`text-center text-[34px] leading-none font-bold tracking-[0.04em] sm:text-[38px]`,children:n.mitte}),t[5]=n.mitte,t[6]=p);let m;t[7]===n.unten?m=t[8]:(m=(0,B.jsx)(`span`,{className:`font-sans text-sm opacity-80`,children:n.unten}),t[7]=n.unten,t[8]=m);let h;t[9]!==a||t[10]!==s||t[11]!==c||t[12]!==d||t[13]!==f||t[14]!==p||t[15]!==m?(h=(0,B.jsxs)(`button`,{type:`button`,onClick:a,disabled:s,"aria-label":c,className:d,children:[f,p,m]}),t[9]=a,t[10]=s,t[11]=c,t[12]=d,t[13]=f,t[14]=p,t[15]=m,t[16]=h):h=t[16];let g;t[17]===r?g=t[18]:(g=r.map(ve),t[17]=r,t[18]=g);let _;t[19]===g?_=t[20]:(_=(0,B.jsx)(`ul`,{"aria-label":`Geräte`,className:`grid grid-cols-2 gap-2.5 rounded-2xl border border-linie bg-panel p-3 sm:grid-cols-4`,children:g}),t[19]=g,t[20]=_);let v;return t[21]!==_||t[22]!==h?(v=(0,B.jsxs)(`section`,{"aria-label":`Lage im Homelab`,className:`grid gap-4 md:grid-cols-[260px_minmax(0,1fr)] md:gap-5`,children:[h,_]}),t[21]=_,t[22]=h,t[23]=v):v=t[23],v}function ve(e){return(0,B.jsx)(ue,{lampe:e},e.id)}var G=r(e(),1),K=(e,t=1)=>e.toFixed(t).replace(`.`,`,`);function q(e){return e==null?`–`:e>=0xe8d4a51000?`${K(e/0xe8d4a51000)} TB`:e>=1e10?`${Math.round(e/1e9)} GB`:`${K(e/1e9)} GB`}function ye(e){return e?/^\s*\d{1,2}:\d{2}\s*$/.test(e)?`täglich ${e.trim()}`:`Zeitplan „${e}“`:`ohne Zeitplan`}function be(e){return e.jobs.length===0?`Kein Sicherungsauftrag in Proxmox`:e.jobs.map(e=>`${ye(e.zeitplan)} auf ${e.speicher??`?`}`).join(`, `)}var J={ok:`in Ordnung`,gelb:`wird knapp`,rot:`fast voll`},Y={ok:`gruen`,gelb:`bernstein`,rot:`rot`,keine:`grau`},xe={ok:`var(--reihe-1)`,gelb:`var(--bernstein)`,rot:`var(--rot)`},X=e=>x(new Date(e*1e3).toISOString());function Z(e){let t=(0,z.c)(11),{anteil:n,stufe:r,name:i}=e,a;t[0]===n?a=t[1]:(a=Math.round(n*100),t[0]=n,t[1]=a);let o=a,s=`${i}: ${o} % belegt`,c=`${Math.min(100,Math.max(2,o))}%`,l=xe[r],u;t[2]!==c||t[3]!==l?(u=(0,B.jsx)(`span`,{className:`block h-full rounded-full`,style:{width:c,background:l}}),t[2]=c,t[3]=l,t[4]=u):u=t[4];let d,f;t[5]===Symbol.for(`react.memo_cache_sentinel`)?(d=(0,B.jsx)(`span`,{"aria-hidden":!0,className:`absolute inset-y-0 left-[80%] w-px bg-bernstein/70`}),f=(0,B.jsx)(`span`,{"aria-hidden":!0,className:`absolute inset-y-0 left-[90%] w-px bg-rot/80`}),t[5]=d,t[6]=f):(d=t[5],f=t[6]);let p;return t[7]!==o||t[8]!==s||t[9]!==u?(p=(0,B.jsxs)(`div`,{role:`meter`,"aria-label":s,"aria-valuenow":o,"aria-valuemin":0,"aria-valuemax":100,className:`relative h-2 w-full overflow-hidden rounded-full bg-erhaben`,children:[u,d,f]}),t[7]=o,t[8]=s,t[9]=u,t[10]=p):p=t[10],p}function Q(e){let t=(0,z.c)(16),{titel:n,unter:r,chip:i,chipText:a,children:o}=e,s;t[0]===n?s=t[1]:(s=(0,B.jsx)(`span`,{className:`text-[15px] font-semibold break-words`,children:n}),t[0]=n,t[1]=s);let c;t[2]===r?c=t[3]:(c=r&&(0,B.jsx)(`span`,{className:`text-sm break-words text-text-3`,children:r}),t[2]=r,t[3]=c);let l;t[4]!==s||t[5]!==c?(l=(0,B.jsxs)(`div`,{className:`flex min-w-0 flex-col`,children:[s,c]}),t[4]=s,t[5]=c,t[6]=l):l=t[6];let u;t[7]!==i||t[8]!==a?(u=(0,B.jsx)(w,{art:i,children:a}),t[7]=i,t[8]=a,t[9]=u):u=t[9];let d;t[10]!==l||t[11]!==u?(d=(0,B.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[l,u]}),t[10]=l,t[11]=u,t[12]=d):d=t[12];let f;return t[13]!==o||t[14]!==d?(f=(0,B.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-3 rounded-xl border border-linie bg-erhaben/40 p-4`,children:[d,o]}),t[13]=o,t[14]=d,t[15]=f):f=t[15],f}function Se(e){let t=(0,z.c)(31),{p:n}=e,r;t[0]===n.anteil?r=t[1]:(r=Math.round(n.anteil*100),t[0]=n.anteil,t[1]=r);let a=r,o=`Speicherpool ${n.speicher}`,s=Y[n.stufe],c=J[n.stufe],l=Math.max(n.anteil,n.meta_anteil??0),u=`Speicherpool ${n.speicher}`,d;t[2]!==n.stufe||t[3]!==l||t[4]!==u?(d=(0,B.jsx)(Z,{anteil:l,stufe:n.stufe,name:u}),t[2]=n.stufe,t[3]=l,t[4]=u,t[5]=d):d=t[5];let f;t[6]===n.belegt?f=t[7]:(f=q(n.belegt),t[6]=n.belegt,t[7]=f);let p;t[8]===n.gesamt?p=t[9]:(p=q(n.gesamt),t[8]=n.gesamt,t[9]=p);let m=n.stufe!==`ok`&&`text-foreground`,h;t[10]===m?h=t[11]:(h=i(m),t[10]=m,t[11]=h);let g;t[12]===n.frei?g=t[13]:(g=q(n.frei),t[12]=n.frei,t[13]=g);let _;t[14]!==h||t[15]!==g?(_=(0,B.jsxs)(`span`,{className:h,children:[g,` frei`]}),t[14]=h,t[15]=g,t[16]=_):_=t[16];let v;t[17]!==a||t[18]!==_||t[19]!==f||t[20]!==p?(v=(0,B.jsxs)(`p`,{className:`ziffern text-sm text-text-2`,children:[a,` % · `,f,` von `,p,` · `,_]}),t[17]=a,t[18]=_,t[19]=f,t[20]=p,t[21]=v):v=t[21];let y;t[22]===n.meta_anteil?y=t[23]:(y=n.meta_anteil!==null&&(0,B.jsxs)(`p`,{className:`text-xs text-text-3`,children:[`Metadaten `,Math.round(n.meta_anteil*100),` % belegt`]}),t[22]=n.meta_anteil,t[23]=y);let b;return t[24]!==v||t[25]!==y||t[26]!==o||t[27]!==s||t[28]!==c||t[29]!==d?(b=(0,B.jsxs)(Q,{titel:o,unter:`Platten der Container und VMs`,chip:s,chipText:c,children:[d,v,y]}),t[24]=v,t[25]=y,t[26]=o,t[27]=s,t[28]=c,t[29]=d,t[30]=b):b=t[30],b}function Ce(e){let t=(0,z.c)(21),{s:n}=e,r=Y[n.stufe],i=J[n.stufe],a;t[0]!==n.anteil||t[1]!==n.stufe?(a=(0,B.jsx)(Z,{anteil:n.anteil,stufe:n.stufe,name:`Systemplatte des Proxmox-Hosts`}),t[0]=n.anteil,t[1]=n.stufe,t[2]=a):a=t[2];let o;t[3]===n.anteil?o=t[4]:(o=Math.round(n.anteil*100),t[3]=n.anteil,t[4]=o);let s;t[5]===n.belegt?s=t[6]:(s=q(n.belegt),t[5]=n.belegt,t[6]=s);let c;t[7]===n.gesamt?c=t[8]:(c=q(n.gesamt),t[7]=n.gesamt,t[8]=c);let l;t[9]===n.frei?l=t[10]:(l=q(n.frei),t[9]=n.frei,t[10]=l);let u;t[11]!==o||t[12]!==s||t[13]!==c||t[14]!==l?(u=(0,B.jsxs)(`p`,{className:`ziffern text-sm text-text-2`,children:[o,` % · `,s,` von `,c,` · `,l,` frei`]}),t[11]=o,t[12]=s,t[13]=c,t[14]=l,t[15]=u):u=t[15];let d;return t[16]!==r||t[17]!==i||t[18]!==a||t[19]!==u?(d=(0,B.jsxs)(Q,{titel:`Systemplatte`,unter:`Proxmox-Host: Kernel, Sicherungen vor Updates`,chip:r,chipText:i,children:[a,u]}),t[16]=r,t[17]=i,t[18]=a,t[19]=u,t[20]=d):d=t[20],d}function we(e){let t=(0,z.c)(21),{n}=e,r=n.problem?n.stufe===`rot`?`gestört`:`unklar`:J[n.stufe],a=`NAS ${n.server??``}`,o;t[0]===a?o=t[1]:(o=a.trim(),t[0]=a,t[1]=o);let s;t[2]===n.art?s=t[3]:(s=n.art.toUpperCase(),t[2]=n.art,t[3]=s);let c=`${s} · ${n.quelle??`?`} → ${n.ziel}`,l=Y[n.stufe],u;t[4]!==n.anteil||t[5]!==n.belegt||t[6]!==n.gesamt||t[7]!==n.problem||t[8]!==n.server||t[9]!==n.stufe?(u=n.problem?(0,B.jsx)(`p`,{className:i(`text-sm`,n.stufe===`rot`?`text-rot-text`:`text-bernstein`),children:n.problem}):n.anteil!==null&&(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(Z,{anteil:n.anteil,stufe:n.stufe,name:`NAS ${n.server??``}`}),(0,B.jsxs)(`p`,{className:`ziffern text-sm text-text-2`,children:[Math.round(n.anteil*100),` % · `,q(n.belegt),` von `,q(n.gesamt),` · `,q((n.gesamt??0)-(n.belegt??0)),` frei`]})]}),t[4]=n.anteil,t[5]=n.belegt,t[6]=n.gesamt,t[7]=n.problem,t[8]=n.server,t[9]=n.stufe,t[10]=u):u=t[10];let d=n.erreichbar===!1?`antwortet nicht`:`antwortet`,f=n.eingebunden?`auf dem Proxmox-Host eingebunden`:`nicht eingebunden`,p;t[11]!==d||t[12]!==f?(p=(0,B.jsxs)(`p`,{className:`text-xs text-text-3`,children:[d,` · `,f]}),t[11]=d,t[12]=f,t[13]=p):p=t[13];let m;return t[14]!==r||t[15]!==o||t[16]!==c||t[17]!==l||t[18]!==u||t[19]!==p?(m=(0,B.jsxs)(Q,{titel:o,unter:c,chip:l,chipText:r,children:[u,p]}),t[14]=r,t[15]=o,t[16]=c,t[17]=l,t[18]=u,t[19]=p,t[20]=m):m=t[20],m}function Te(e){let t=(0,z.c)(18),{s:n}=e,r;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(r={ok:`aktuell`,gelb:`Lücke`,rot:`gestört`,keine:`kein Auftrag`},t[0]=r):r=t[0];let i=r[n.stufe],a;t[1]===n?a=t[2]:(a=be(n),t[1]=n,t[2]=a);let o=Y[n.stufe],s;t[3]===n.probleme?s=t[4]:(s=n.probleme.map(De),t[3]=n.probleme,t[4]=s);let c;t[5]!==n.erfasst||t[6]!==n.stufe||t[7]!==n.zuletzt?(c=n.stufe===`ok`&&(0,B.jsxs)(`p`,{className:`text-sm text-text-2`,children:[`Alle `,n.erfasst,` Geräte gesichert`,n.zuletzt?(0,B.jsxs)(B.Fragment,{children:[`, zuletzt `,(0,B.jsx)(`span`,{className:`ziffern`,children:X(n.zuletzt)})]}):null,`.`]}),t[5]=n.erfasst,t[6]=n.stufe,t[7]=n.zuletzt,t[8]=c):c=t[8];let l;t[9]===n.fehlend?l=t[10]:(l=n.fehlend.length>0&&(0,B.jsx)(`ul`,{className:`flex flex-col gap-1 text-sm`,children:n.fehlend.map(Ee)}),t[9]=n.fehlend,t[10]=l);let u;return t[11]!==i||t[12]!==a||t[13]!==o||t[14]!==s||t[15]!==c||t[16]!==l?(u=(0,B.jsxs)(Q,{titel:`Sicherungen`,unter:a,chip:o,chipText:i,children:[s,c,l]}),t[11]=i,t[12]=a,t[13]=o,t[14]=s,t[15]=c,t[16]=l,t[17]=u):u=t[17],u}function Ee(e){return(0,B.jsxs)(`li`,{className:`text-bernstein`,children:[e.name,`: `,e.zuletzt?(0,B.jsxs)(B.Fragment,{children:[`zuletzt `,(0,B.jsx)(`span`,{className:`ziffern`,children:X(e.zuletzt)})]}):`noch nie gesichert`]},e.ziel)}function De(e){return(0,B.jsx)(`p`,{className:`text-sm text-rot-text`,children:e},e)}function Oe(e){let t=(0,z.c)(45),{daten:n,laeuft:r,gesperrt:i,onAktion:o,snapshotsLink:s}=e,c=r===void 0?null:r,l=i!==void 0&&i,[u,d]=(0,G.useState)(null),f;t[0]!==n.pools||t[1]!==n.systemplatte?.stufe?(f=n.pools.some(Me)||(n.systemplatte?.stufe??`ok`)!==`ok`,t[0]=n.pools,t[1]=n.systemplatte?.stufe,t[2]=f):f=t[2];let p=f,m,h,g;if(t[3]!==n.empfehlungen||t[4]!==n.nas||t[5]!==n.pools||t[6]!==n.sicherungen||t[7]!==n.systemplatte||t[8]!==l||t[9]!==p||t[10]!==c||t[11]!==o||t[12]!==s){let e=n.empfehlungen.reduce(je,0);m=`flex flex-col gap-4`;let r;t[16]===n.pools?r=t[17]:(r=n.pools.map(Ae),t[16]=n.pools,t[17]=r);let i;t[18]===n.systemplatte?i=t[19]:(i=n.systemplatte&&(0,B.jsx)(Ce,{s:n.systemplatte}),t[18]=n.systemplatte,t[19]=i);let u;t[20]===n.nas?u=t[21]:(u=n.nas.length>0?n.nas.map(ke):(0,B.jsx)(Q,{titel:`NAS`,chip:`grau`,chipText:`keins`,children:(0,B.jsx)(`p`,{className:`text-sm text-text-3`,children:`Auf dem Proxmox-Host ist kein Netzlaufwerk eingebunden.`})}),t[20]=n.nas,t[21]=u);let f;t[22]===n.sicherungen?f=t[23]:(f=(0,B.jsx)(Te,{s:n.sicherungen}),t[22]=n.sicherungen,t[23]=f),t[24]!==f||t[25]!==r||t[26]!==i||t[27]!==u?(h=(0,B.jsxs)(`div`,{className:`grid gap-3 md:grid-cols-2 2xl:grid-cols-4`,children:[r,i,u,f]}),t[24]=f,t[25]=r,t[26]=i,t[27]=u,t[28]=h):h=t[28],g=n.empfehlungen.length>0&&(0,B.jsxs)(`details`,{open:p,className:`group rounded-xl border border-linie bg-erhaben/40 px-4 open:pb-3`,children:[(0,B.jsxs)(`summary`,{className:`flex min-h-12 cursor-pointer list-none items-center justify-between gap-3 [&::-webkit-details-marker]:hidden`,children:[(0,B.jsxs)(`span`,{className:`flex items-center gap-2 text-[15px] font-medium`,children:[(0,B.jsx)(a,{className:`size-4 text-text-3 transition-transform group-open:rotate-90`,"aria-hidden":!0}),`Was Platz bringt`]}),(0,B.jsxs)(`span`,{className:`ziffern text-sm text-text-2`,children:[n.empfehlungen.length,` `,n.empfehlungen.length===1?`Vorschlag`:`Vorschläge`,e>0&&` · bis zu ${q(e)}`]})]}),(0,B.jsx)(`ol`,{className:`flex flex-col`,children:n.empfehlungen.map(e=>(0,B.jsx)(Fe,{e,laeuft:c,gesperrt:l||!o,onFrage:d,verweis:e.art===`snapshot`?s:null},e.titel))})]}),t[3]=n.empfehlungen,t[4]=n.nas,t[5]=n.pools,t[6]=n.sicherungen,t[7]=n.systemplatte,t[8]=l,t[9]=p,t[10]=c,t[11]=o,t[12]=s,t[13]=m,t[14]=h,t[15]=g}else m=t[13],h=t[14],g=t[15];let _=!!u,v=u?`Proxmox-Host: ${u.label}`:``,y=u?.frage??``,b=u?.label??``,x;t[29]!==u||t[30]!==o?(x=()=>{u&&o&&o(u),d(null)},t[29]=u,t[30]=o,t[31]=x):x=t[31];let S;t[32]===Symbol.for(`react.memo_cache_sentinel`)?(S=()=>d(null),t[32]=S):S=t[32];let C;t[33]!==l||t[34]!==b||t[35]!==x||t[36]!==_||t[37]!==v||t[38]!==y?(C=(0,B.jsx)(F,{offen:_,titel:v,text:y,knopf:b,gesperrt:l,onJa:x,onNein:S}),t[33]=l,t[34]=b,t[35]=x,t[36]=_,t[37]=v,t[38]=y,t[39]=C):C=t[39];let w;return t[40]!==C||t[41]!==m||t[42]!==h||t[43]!==g?(w=(0,B.jsxs)(`div`,{className:m,children:[h,g,C]}),t[40]=C,t[41]=m,t[42]=h,t[43]=g,t[44]=w):w=t[44],w}function ke(e){return(0,B.jsx)(we,{n:e},e.ziel)}function Ae(e){return(0,B.jsx)(Se,{p:e},e.speicher)}function je(e,t){return e+(t.platz??0)}function Me(e){return e.stufe!==`ok`}var Ne={pool:`Speicherpool`,systemplatte:`Systemplatte des Hosts`};function Pe({text:e}){return e.split(/`([^`]+)`/).map((e,t)=>t%2==1?(0,B.jsx)(`code`,{className:`rounded bg-erhaben px-1 font-mono text-[13px] text-foreground [font-variant-ligatures:none]`,children:e},t):e)}function Fe(e){let t=(0,z.c)(24),{e:n,laeuft:r,gesperrt:i,onFrage:a,verweis:o}=e,s;t[0]===n.titel?s=t[1]:(s=(0,B.jsx)(`span`,{className:`text-[15px] font-medium break-words`,children:n.titel}),t[0]=n.titel,t[1]=s);let c;t[2]===n.platz?c=t[3]:(c=n.platz?`≈ ${q(n.platz)}`:`Größe unbekannt`,t[2]=n.platz,t[3]=c);let l;t[4]===c?l=t[5]:(l=(0,B.jsx)(`span`,{className:`ziffern text-sm text-text-2`,children:c}),t[4]=c,t[5]=l);let u;t[6]!==s||t[7]!==l?(u=(0,B.jsxs)(`div`,{className:`flex flex-wrap items-baseline justify-between gap-x-3 gap-y-1`,children:[s,l]}),t[6]=s,t[7]=l,t[8]=u):u=t[8];let d;t[9]===n.ort?d=t[10]:(d=n.ort&&(0,B.jsx)(`span`,{className:`schild text-xs text-text-3`,children:Ne[n.ort]??n.ort}),t[9]=n.ort,t[10]=d);let f;t[11]===n.text?f=t[12]:(f=(0,B.jsx)(`p`,{className:`text-sm break-words text-text-2`,children:(0,B.jsx)(Pe,{text:n.text})}),t[11]=n.text,t[12]=f);let p;t[13]!==n.aktion||t[14]!==i||t[15]!==r||t[16]!==a?(p=n.aktion&&(r?(0,B.jsxs)(`p`,{role:`status`,className:`text-sm text-cyan`,children:[`Läuft: `,r]}):(0,B.jsx)(P,{variant:`outline`,size:`sm`,className:`mt-1 self-start`,disabled:i,onClick:()=>a(n.aktion),children:n.aktion.label})),t[13]=n.aktion,t[14]=i,t[15]=r,t[16]=a,t[17]=p):p=t[17];let m;return t[18]!==u||t[19]!==d||t[20]!==f||t[21]!==p||t[22]!==o?(m=(0,B.jsxs)(`li`,{className:`flex flex-col gap-1 border-t border-linie py-3 first:border-t-0 first:pt-1`,children:[u,d,f,o,p]}),t[18]=u,t[19]=d,t[20]=f,t[21]=p,t[22]=o,t[23]=m):m=t[23],m}var Ie={snapshot:`Snapshot`,sicherung:`Sicherung`,keiner:`kein Rückweg`};function Le(e){let t=(0,z.c)(24),{anzahl:n,gesperrt:r}=e,[i,a]=(0,G.useState)(!1),o=ee(i),s=C(),c;t[0]===o.data?.schritte?c=t[1]:(c=o.data?.schritte??[],t[0]=o.data?.schritte,t[1]=c);let l=c,u=r||n===0||s.isPending,d;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(d=()=>a(!0),t[2]=d):d=t[2];let f=n>0?` (${n})`:``,p;t[3]!==u||t[4]!==f?(p=(0,B.jsxs)(P,{disabled:u,onClick:d,children:[`Alle aktualisieren`,f]}),t[3]=u,t[4]=f,t[5]=p):p=t[5];let m=l.length?`${l.length} Updates starten`:`Starten`,h=s.isPending||o.isPending||l.length===0,g;t[6]===Symbol.for(`react.memo_cache_sentinel`)?(g=()=>a(!1),t[6]=g):g=t[6];let _;t[7]!==i||t[8]!==s?(_=()=>{i&&(s.mutate(void 0),a(!1))},t[7]=i,t[8]=s,t[9]=_):_=t[9];let v;t[10]!==o.data||t[11]!==o.error||t[12]!==o.isPending||t[13]!==l?(v=o.isPending?(0,B.jsx)(`p`,{className:`text-sm text-text-2`,children:`Die Reihenfolge wird gelesen …`}):o.error?(0,B.jsxs)(`p`,{role:`alert`,className:`text-sm text-rot-text`,children:[`Der Plan lässt sich nicht lesen: `,o.error.message]}):(0,B.jsxs)(`div`,{className:`flex flex-col gap-2 pb-1`,children:[(0,B.jsx)(`ol`,{className:`m-0 flex list-none flex-col gap-1 p-0`,children:l.map(Re)}),o.data?.hinweis&&(0,B.jsx)(`p`,{className:`text-xs text-bernstein`,children:o.data.hinweis})]}),t[10]=o.data,t[11]=o.error,t[12]=o.isPending,t[13]=l,t[14]=v):v=t[14];let y;t[15]!==i||t[16]!==v||t[17]!==m||t[18]!==h||t[19]!==_?(y=(0,B.jsx)(F,{offen:i,titel:`Alle Homelab-Updates einspielen?`,text:`Die Updates laufen nacheinander, jedes mit Rückweg und Prüfung. Ist eine Prüfung rot, geht dieser Schritt von selbst zurück und der Rest bleibt stehen. AdGuard und NPMplus kommen zuletzt, der Proxmox-Host ganz am Ende; neu gestartet wird er nicht.`,knopf:m,gesperrt:h,onNein:g,onJa:_,children:v}),t[15]=i,t[16]=v,t[17]=m,t[18]=h,t[19]=_,t[20]=y):y=t[20];let b;return t[21]!==y||t[22]!==p?(b=(0,B.jsxs)(B.Fragment,{children:[p,y]}),t[21]=y,t[22]=p,t[23]=b):b=t[23],b}function Re(e,t){return(0,B.jsxs)(`li`,{className:`grid grid-cols-[1.5rem_minmax(0,1fr)_auto] items-baseline gap-2 text-sm`,children:[(0,B.jsxs)(`span`,{className:`ziffern text-text-3`,children:[t+1,`.`]}),(0,B.jsxs)(`span`,{className:`min-w-0`,children:[(0,B.jsx)(`span`,{className:`font-medium text-foreground`,children:e.name}),` `,(0,B.jsxs)(`span`,{className:`text-text-2`,children:[`· `,e.was]})]}),(0,B.jsx)(`span`,{className:i(`text-xs`,e.rueckweg_art===`keiner`?`text-bernstein`:`text-text-3`),children:Ie[e.rueckweg_art]})]},`${e.ziel}-${e.baustein}`)}var ze={wartet:{Symbol:de,farbe:`text-text-3`,text:`wartet`},laeuft:{Symbol:fe,farbe:`text-cyan`,text:`läuft`},eingespielt:{Symbol:oe,farbe:`text-gruen`,text:`eingespielt`},zurueckgerollt:{Symbol:s,farbe:`text-bernstein`,text:`zurückgerollt`},fehler:{Symbol:o,farbe:`text-rot`,text:`Fehler`},uebersprungen:{Symbol:pe,farbe:`text-text-3`,text:`übersprungen`}},Be={laeuft:{art:`cyan`,text:`läuft`},fertig:{art:`gruen`,text:`fertig`},abgebrochen:{art:`bernstein`,text:`abgebrochen`}};function Ve(e){let t=(0,z.c)(33),{lauf:n,onQuittieren:r}=e,i;t[0]===n.schritte?i=t[1]:(i=n.schritte.filter(Ue),t[0]=n.schritte,t[1]=i);let a=i.length,o=Be[n.status],s;t[2]!==a||t[3]!==n.schritte.length?(s=(0,B.jsxs)(`span`,{className:`schild text-sm tracking-[0.18em] text-cyan`,children:[`Alle aktualisieren · `,a,` von `,n.schritte.length]}),t[2]=a,t[3]=n.schritte.length,t[4]=s):s=t[4];let c;t[5]===n.start?c=t[6]:(c=x(new Date(n.start*1e3).toISOString()),t[5]=n.start,t[6]=c);let l;t[7]===c?l=t[8]:(l=(0,B.jsx)(`span`,{className:`ziffern text-xs text-text-3`,children:c}),t[7]=c,t[8]=l);let u;t[9]!==o.art||t[10]!==o.text?(u=(0,B.jsx)(w,{art:o.art,children:o.text}),t[9]=o.art,t[10]=o.text,t[11]=u):u=t[11];let d;t[12]!==l||t[13]!==u?(d=(0,B.jsxs)(`span`,{className:`flex items-center gap-2`,children:[l,u]}),t[12]=l,t[13]=u,t[14]=d):d=t[14];let f;t[15]!==s||t[16]!==d?(f=(0,B.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-2`,children:[s,d]}),t[15]=s,t[16]=d,t[17]=f):f=t[17];let p=`${a/Math.max(1,n.schritte.length)*100}%`,m;t[18]===p?m=t[19]:(m=(0,B.jsx)(`div`,{className:`h-1.5 overflow-hidden rounded-full bg-erhaben`,"aria-hidden":!0,children:(0,B.jsx)(`div`,{className:`h-full rounded-full bg-cyan transition-all`,style:{width:p}})}),t[18]=p,t[19]=m);let h;t[20]===n.schritte?h=t[21]:(h=n.schritte.map(He),t[20]=n.schritte,t[21]=h);let g;t[22]===h?g=t[23]:(g=(0,B.jsx)(`ol`,{className:`m-0 grid list-none gap-x-6 gap-y-1.5 p-0 sm:grid-cols-2`,children:h}),t[22]=h,t[23]=g);let _;t[24]!==n.status||t[25]!==n.text||t[26]!==r?(_=(n.text||n.status!==`laeuft`&&r)&&(0,B.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-3`,children:[n.text&&(0,B.jsx)(`p`,{className:`text-sm text-text-2`,children:n.text}),n.status!==`laeuft`&&r&&(0,B.jsx)(P,{variant:`outline`,size:`sm`,className:`ml-auto`,onClick:r,children:`Ausblenden`})]}),t[24]=n.status,t[25]=n.text,t[26]=r,t[27]=_):_=t[27];let v;return t[28]!==g||t[29]!==_||t[30]!==f||t[31]!==m?(v=(0,B.jsxs)(`section`,{"aria-label":`Alle aktualisieren`,className:`flex flex-col gap-3 rounded-xl border border-cyan-rand/60 bg-cyan-grund/40 p-4`,children:[f,m,g,_]}),t[28]=g,t[29]=_,t[30]=f,t[31]=m,t[32]=v):v=t[32],v}function He(e){let t=ze[e.status];return(0,B.jsxs)(`li`,{className:`flex items-start gap-2 text-sm`,children:[(0,B.jsx)(t.Symbol,{className:i(`mt-0.5 size-4 shrink-0`,t.farbe,e.status===`laeuft`&&`motion-safe:animate-spin`),"aria-hidden":!0}),(0,B.jsxs)(`span`,{className:`min-w-0`,children:[(0,B.jsx)(`span`,{className:`text-foreground`,children:e.name}),` `,(0,B.jsxs)(`span`,{className:`text-text-3`,children:[`· `,e.was,` · `,t.text]}),e.text&&e.status!==`eingespielt`&&(0,B.jsx)(`span`,{className:`block text-xs text-text-3`,children:e.text})]})]},`${e.ziel}-${e.baustein}`)}function Ue(e){return![`wartet`,`laeuft`].includes(e.status)}var We=`md:grid-cols-[minmax(0,1.1fr)_minmax(0,1.3fr)_minmax(0,1fr)_minmax(0,0.9fr)_11.5rem]`;function Ge(e){let t=(0,z.c)(26),{ziel:n,b:r}=e;if(!r){let e=n.art===`proxmox-host`?p(n)?.installiert:null,r;return t[0]===e?r=t[1]:(r=e?(0,B.jsxs)(`span`,{className:`ziffern text-sm`,children:[`PVE `,e]}):(0,B.jsx)(`span`,{className:`text-sm text-text-3`,children:`–`}),t[0]=e,t[1]=r),r}let i;t[2]===r.installiert?i=t[3]:(i=r.installiert?h(r.installiert):`–`,t[2]=r.installiert,t[3]=i);let a=i,o=r.zustand===`aktuell`?`text-foreground`:`text-text-2`,s;t[4]!==a||t[5]!==o?(s=(0,B.jsx)(`span`,{className:o,children:a}),t[4]=a,t[5]=o,t[6]=s):s=t[6];let c;t[7]!==r.verfuegbar||t[8]!==r.zustand?(c=r.zustand===`neu`&&r.verfuegbar&&(0,B.jsxs)(`span`,{className:`text-cyan`,children:[`→ `,r.verfuegbar]}),t[7]=r.verfuegbar,t[8]=r.zustand,t[9]=c):c=t[9];let l;t[10]===r.zustand?l=t[11]:(l=r.zustand===`aktuell`&&(0,B.jsx)(`span`,{className:`font-sans text-xs text-gruen-text`,children:`aktuell`}),t[10]=r.zustand,t[11]=l);let u;t[12]===r.zustand?u=t[13]:(u=r.zustand===`unbekannt`&&(0,B.jsx)(`span`,{className:`font-sans text-xs text-text-3`,children:`unklar`}),t[12]=r.zustand,t[13]=u);let d;t[14]!==s||t[15]!==c||t[16]!==l||t[17]!==u?(d=(0,B.jsxs)(`span`,{className:`ziffern flex flex-wrap items-baseline gap-x-2 text-sm`,children:[s,c,l,u]}),t[14]=s,t[15]=c,t[16]=l,t[17]=u,t[18]=d):d=t[18];let f;t[19]!==r.aktion||t[20]!==r.grund||t[21]!==r.zustand?(f=r.zustand===`neu`&&!r.aktion&&r.grund&&(0,B.jsx)(`span`,{className:`text-xs text-text-3`,children:r.grund}),t[19]=r.aktion,t[20]=r.grund,t[21]=r.zustand,t[22]=f):f=t[22];let m;return t[23]!==d||t[24]!==f?(m=(0,B.jsxs)(`span`,{className:`flex min-w-0 flex-col gap-0.5`,children:[d,f]}),t[23]=d,t[24]=f,t[25]=m):m=t[25],m}function Ke(e){let t=(0,z.c)(22),{b:n,onSuchen:r,gesperrt:i}=e;if(!n){let e;return t[0]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,B.jsx)(`span`,{className:`text-sm text-text-3`,children:`–`}),t[0]=e):e=t[0],e}let a=n.id===`docker`,o;if(n.zustand===`neu`){let e=n.kurz||`Update bereit`,r;t[1]===e?r=t[2]:(r=(0,B.jsx)(`span`,{className:`text-cyan`,children:e}),t[1]=e,t[2]=r),o=r}else if(n.zustand===`aktuell`){let e=a?`Images aktuell`:`aktuell`,n;t[3]===e?n=t[4]:(n=(0,B.jsx)(`span`,{className:`text-gruen-text`,children:e}),t[3]=e,t[4]=n),o=n}else{let e;t[5]===n.grund?e=t[6]:(e=re(n.grund),t[5]=n.grund,t[6]=e);let r=e,i=n.grund??void 0,s=a?`Images unklar`:`unklar`,c;t[7]===r?c=t[8]:(c=r&&(0,B.jsxs)(`span`,{className:`text-text-3`,children:[` · Listen vom `,r]}),t[7]=r,t[8]=c);let l;t[9]!==i||t[10]!==s||t[11]!==c?(l=(0,B.jsxs)(`span`,{className:`text-text-2`,title:i,children:[s,c]}),t[9]=i,t[10]=s,t[11]=c,t[12]=l):l=t[12],o=l}let s=n.zustand===`unbekannt`?n.aktion:null,l;t[13]===o?l=t[14]:(l=(0,B.jsx)(`span`,{className:`min-w-0`,children:o}),t[13]=o,t[14]=l);let u;t[15]!==i||t[16]!==r||t[17]!==s?(u=s&&(0,B.jsx)(P,{variant:`ghost`,size:`icon-sm`,className:`-my-2 shrink-0`,"aria-label":s.label,title:s.label,disabled:i,onClick:()=>r(s),children:(0,B.jsx)(c,{})}),t[15]=i,t[16]=r,t[17]=s,t[18]=u):u=t[18];let d;return t[19]!==l||t[20]!==u?(d=(0,B.jsxs)(`span`,{className:`flex items-center gap-1 text-sm`,children:[l,u]}),t[19]=l,t[20]=u,t[21]=d):d=t[21],d}var qe={app:`App updaten`,os:`Pakete einspielen`,pakete:`Pakete einspielen`};function Je(e){let t=(0,z.c)(54),{ziel:n,laeuft:r,gesperrt:a,onFrage:o}=e,s;t[0]===n?s=t[1]:(s=f(n),t[0]=n,t[1]=s);let c=s,l;t[2]===n?l=t[3]:(l=p(n),t[2]=n,t[3]=l);let u=l,d,h,g,_,v,x,S,C,w;if(t[4]!==c||t[5]!==a||t[6]!==r||t[7]!==o||t[8]!==u||t[9]!==n){let e=n.bausteine.filter(Ye),s=m(n)>=2;x=`row`;let l=s&&`opacity-75`;t[19]===l?S=t[20]:(S=i(`grid grid-cols-1 gap-x-4 gap-y-2 border-t border-linie py-3.5 md:items-center`,We,l),t[19]=l,t[20]=S);let f;t[21]===n.name?f=t[22]:(f=(0,B.jsx)(`span`,{className:`text-[15px] font-semibold break-words`,children:n.name}),t[21]=n.name,t[22]=f);let p;t[23]===n?p=t[24]:(p=y(n)!==n.name&&(0,B.jsx)(`span`,{className:`text-sm text-text-3`,children:y(n)}),t[23]=n,t[24]=p),t[25]!==f||t[26]!==p?(C=(0,B.jsxs)(`div`,{role:`rowheader`,className:`flex min-w-0 flex-col`,children:[f,p]}),t[25]=f,t[26]=p,t[27]=C):C=t[27];let T;t[28]===Symbol.for(`react.memo_cache_sentinel`)?(T=(0,B.jsx)(`span`,{className:`text-xs text-text-3 md:hidden`,children:`App `}),t[28]=T):T=t[28],t[29]!==c||t[30]!==n?(w=(0,B.jsxs)(`span`,{role:`cell`,className:`min-w-0`,children:[T,(0,B.jsx)(Ge,{ziel:n,b:c})]}),t[29]=c,t[30]=n,t[31]=w):w=t[31];let E;t[32]===Symbol.for(`react.memo_cache_sentinel`)?(E=(0,B.jsx)(`span`,{className:`text-xs text-text-3 md:hidden`,children:`Pakete `}),t[32]=E):E=t[32];let D=a||!!r,O;t[33]!==o||t[34]!==n?(O=e=>o({ziel:n,aktion:e}),t[33]=o,t[34]=n,t[35]=O):O=t[35],t[36]!==u||t[37]!==D||t[38]!==O?(d=(0,B.jsxs)(`span`,{role:`cell`,className:`min-w-0`,children:[E,(0,B.jsx)(Ke,{b:u,gesperrt:D,onSuchen:O})]}),t[36]=u,t[37]=D,t[38]=O,t[39]=d):d=t[39];let k=e.length?b(n):``;t[40]===k?h=t[41]:(h=(0,B.jsx)(`span`,{role:`cell`,className:`text-sm text-text-3`,children:k}),t[40]=k,t[41]=h),g=`cell`,_=`flex flex-wrap gap-2 md:flex-col md:items-stretch`,v=r?(0,B.jsxs)(`span`,{role:`status`,className:`text-sm text-cyan`,children:[`Läuft: `,r]}):e.map(e=>(0,B.jsx)(P,{variant:`outline`,size:`sm`,disabled:a,onClick:()=>e.aktion&&o({ziel:n,aktion:e.aktion}),children:qe[e.id]??e.aktion?.label??`Updaten`},e.id)),t[4]=c,t[5]=a,t[6]=r,t[7]=o,t[8]=u,t[9]=n,t[10]=d,t[11]=h,t[12]=g,t[13]=_,t[14]=v,t[15]=x,t[16]=S,t[17]=C,t[18]=w}else d=t[10],h=t[11],g=t[12],_=t[13],v=t[14],x=t[15],S=t[16],C=t[17],w=t[18];let T;t[42]!==g||t[43]!==_||t[44]!==v?(T=(0,B.jsx)(`span`,{role:g,className:_,children:v}),t[42]=g,t[43]=_,t[44]=v,t[45]=T):T=t[45];let E;return t[46]!==d||t[47]!==h||t[48]!==T||t[49]!==x||t[50]!==S||t[51]!==C||t[52]!==w?(E=(0,B.jsxs)(`div`,{role:x,className:S,children:[C,w,d,h,T]}),t[46]=d,t[47]=h,t[48]=T,t[49]=x,t[50]=S,t[51]=C,t[52]=w,t[53]=E):E=t[53],E}function Ye(e){return e.zustand===`neu`&&e.aktion}function Xe(e){let t=(0,z.c)(42),{ziele:n,laufend:r,gesperrt:a,onAktion:o}=e,[s,c]=(0,G.useState)(null),l,u,d,f,p,m;if(t[0]!==a||t[1]!==r||t[2]!==n){let e=[...n].sort(Qe),o;t[9]===n?o=t[10]:(o=n.filter(Ze),t[9]=n,t[10]=o),l=o.length,u=`table`,d=`Updates je Gerät`,f=`flex flex-col`,t[11]===Symbol.for(`react.memo_cache_sentinel`)?(p=(0,B.jsxs)(`div`,{role:`row`,className:i(`schild hidden gap-x-4 pb-2 text-xs font-semibold text-text-3 md:grid`,We),children:[(0,B.jsx)(`span`,{role:`columnheader`,children:`Gerät`}),(0,B.jsx)(`span`,{role:`columnheader`,children:`App`}),(0,B.jsx)(`span`,{role:`columnheader`,children:`Pakete`}),(0,B.jsx)(`span`,{role:`columnheader`,children:`Rückweg`}),(0,B.jsx)(`span`,{role:`columnheader`,className:`sr-only`,children:`Aktion`})]}),t[11]=p):p=t[11];let s;t[12]!==a||t[13]!==r?(s=e=>(0,B.jsx)(Je,{ziel:e,laeuft:r.get(e.id)??null,gesperrt:a||r.has(e.id),onFrage:c},e.id),t[12]=a,t[13]=r,t[14]=s):s=t[14],m=e.map(s),t[0]=a,t[1]=r,t[2]=n,t[3]=l,t[4]=u,t[5]=d,t[6]=f,t[7]=p,t[8]=m}else l=t[3],u=t[4],d=t[5],f=t[6],p=t[7],m=t[8];let h;t[15]!==u||t[16]!==d||t[17]!==f||t[18]!==p||t[19]!==m?(h=(0,B.jsxs)(`div`,{role:u,"aria-label":d,className:f,children:[p,m]}),t[15]=u,t[16]=d,t[17]=f,t[18]=p,t[19]=m,t[20]=h):h=t[20];let g;t[21]!==l||t[22]!==n.length?(g=l>0&&l===n.length&&(0,B.jsx)(w,{art:`gruen`,children:`Alles aktuell`}),t[21]=l,t[22]=n.length,t[23]=g):g=t[23];let _=!!s,v=s?`${s.ziel.name}: ${s.aktion.label}`:``,y=s?.aktion.frage??``,b=s?.aktion.label??``,x;t[24]===s?.aktion.pfad?x=t[25]:(x=s?.aktion.pfad.endsWith(`/neustart`),t[24]=s?.aktion.pfad,t[25]=x);let S=!!x,C;t[26]!==s||t[27]!==o?(C=()=>{s&&o(s.aktion),c(null)},t[26]=s,t[27]=o,t[28]=C):C=t[28];let T;t[29]===Symbol.for(`react.memo_cache_sentinel`)?(T=()=>c(null),t[29]=T):T=t[29];let E;t[30]!==a||t[31]!==y||t[32]!==b||t[33]!==S||t[34]!==C||t[35]!==_||t[36]!==v?(E=(0,B.jsx)(F,{offen:_,titel:v,text:y,knopf:b,gefahr:S,gesperrt:a,onJa:C,onNein:T}),t[30]=a,t[31]=y,t[32]=b,t[33]=S,t[34]=C,t[35]=_,t[36]=v,t[37]=E):E=t[37];let D;return t[38]!==E||t[39]!==h||t[40]!==g?(D=(0,B.jsxs)(B.Fragment,{children:[h,g,E]}),t[38]=E,t[39]=h,t[40]=g,t[41]=D):D=t[41],D}function Ze(e){return m(e)===3}function Qe(e,t){return m(e)-m(t)}var $e=[`Proxmox-Host`,`AdGuard`,`NPMplus`,`NetBird`,`PVE Scripts Local`,`Gitea`,`PBS`,`Arcane mit Docker`],et={eingespielt:{art:`gruen`,text:`eingespielt`},zurueckgerollt:{art:`bernstein`,text:`zurückgerollt`},fehler:{art:`rot`,text:`Fehler`},neustart:{art:`cyan`,text:`Neustart`},aufgeraeumt:{art:`gruen`,text:`aufgeräumt`},offen:{art:`cyan`,text:`Probelauf`}},$=e=>x(new Date(e*1e3).toISOString());function tt(){let e=(0,z.c)(4),t,n;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,B.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Der Homelab-Teil läuft als eigene Instanz in einem kleinen Container auf dem Proxmox-PC. Von dort prüft er auch die KI-Box von außen.`}),n=(0,B.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Steht er, erscheinen hier alle Geräte mit ihren offenen Updates. Ein Update startest du mit „Jetzt updaten“: Vorher wird gesichert, danach die Erreichbarkeit geprüft, und ist sie rot, geht es von selbst zurück.`}),e[0]=t,e[1]=n):(t=e[0],n=e[1]);let r;e[2]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,B.jsx)(`h3`,{className:`schild text-sm tracking-[0.18em] text-text-3`,children:`Dazu kommen`}),e[2]=r):r=e[2];let i;return e[3]===Symbol.for(`react.memo_cache_sentinel`)?(i=(0,B.jsxs)(B.Fragment,{children:[t,n,(0,B.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[r,(0,B.jsx)(`ul`,{className:`flex flex-wrap gap-2`,children:$e.map(nt)})]}),(0,B.jsx)(`p`,{className:`text-sm text-text-3`,children:`Der Container wird erst nach deiner Freigabe angelegt.`})]}),e[3]=i):i=e[3],i}function nt(e){return(0,B.jsx)(`li`,{children:(0,B.jsx)(w,{children:e})},e)}function rt(e){let t=(0,z.c)(9),{partner:n}=e,r;t[0]===n.eingerichtet?r=t[1]:(r=n.eingerichtet?(0,B.jsx)(w,{art:`rot`,children:`Antwortet nicht`}):(0,B.jsx)(w,{children:`Noch nicht eingerichtet`}),t[0]=n.eingerichtet,t[1]=r);let i=r,a;t[2]!==n.eingerichtet||t[3]!==n.fehler||t[4]!==n.url?(a=n.eingerichtet?(0,B.jsxs)(`p`,{role:`alert`,className:`text-[15px] text-rot-text`,children:[`Der Homelab-Teil (`,n.url,`) ist `,n.fehler??`nicht erreichbar`,`. Hält das an, meldet der Wächter es nach fünf Minuten auf Telegram.`]}):(0,B.jsx)(tt,{}),t[2]=n.eingerichtet,t[3]=n.fehler,t[4]=n.url,t[5]=a):a=t[5];let o;return t[6]!==i||t[7]!==a?(o=(0,B.jsx)(k,{titel:`Homelab`,rechts:i,children:a}),t[6]=i,t[7]=a,t[8]=o):o=t[8],o}function it(e){let t=(0,z.c)(10),{hinweise:n}=e,r=n.some(ot)?`rot`:`bernstein`,i;t[0]!==n.length||t[1]!==r?(i=(0,B.jsxs)(w,{art:r,children:[n.length,` offen`]}),t[0]=n.length,t[1]=r,t[2]=i):i=t[2];let a;t[3]===n?a=t[4]:(a=n.map(at),t[3]=n,t[4]=a);let o;t[5]===a?o=t[6]:(o=(0,B.jsx)(`ul`,{className:`m-0 flex list-none flex-col p-0`,children:a}),t[5]=a,t[6]=o);let s;return t[7]!==i||t[8]!==o?(s=(0,B.jsx)(k,{titel:`Hinweise`,id:`hinweise`,rechts:i,children:o}),t[7]=i,t[8]=o,t[9]=s):s=t[9],s}function at(e){return(0,B.jsxs)(`li`,{className:`flex flex-col gap-1 border-t border-linie py-3 first:border-t-0 first:pt-0`,children:[(0,B.jsx)(`span`,{className:e.stufe===`rot`?`text-[15px] font-medium text-rot-text`:`text-[15px] font-medium text-bernstein`,children:e.titel}),(0,B.jsx)(`span`,{className:`text-sm text-text-2`,children:e.text})]},e.id)}function ot(e){return e.stufe===`rot`}function st(e){let t=(0,z.c)(8),{laeufe:n}=e,r,i,a;if(t[0]!==n){a=Symbol.for(`react.early_return_sentinel`);bb0:{let e=n.filter(lt).slice(0,12);if(e.length===0){let e;t[4]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,B.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Noch kein Update im Homelab eingespielt.`}),t[4]=e):e=t[4],a=e;break bb0}r=`@container m-0 flex list-none flex-col p-0`,i=e.map(ct)}t[0]=n,t[1]=r,t[2]=i,t[3]=a}else r=t[1],i=t[2],a=t[3];if(a!==Symbol.for(`react.early_return_sentinel`))return a;let o;return t[5]!==r||t[6]!==i?(o=(0,B.jsx)(`ol`,{className:r,children:i}),t[5]=r,t[6]=i,t[7]=o):o=t[7],o}function ct(e){let t=e.ergebnis?et[e.ergebnis]??{art:`grau`,text:e.ergebnis}:{art:`grau`,text:`unterbrochen`};return(0,B.jsxs)(`li`,{className:`flex flex-col gap-1.5 border-t border-linie py-3 first:border-t-0 first:pt-0`,children:[(0,B.jsxs)(`div`,{className:`grid grid-cols-[minmax(0,1fr)_auto] items-center gap-x-3 gap-y-1 @sm:grid-cols-[112px_minmax(0,1fr)_auto]`,children:[(0,B.jsx)(`span`,{className:`ziffern col-start-1 row-start-1 text-sm text-text-3`,children:$(e.start)}),(0,B.jsx)(`span`,{className:`col-span-2 row-start-2 min-w-0 text-[15px] break-words @sm:col-span-1 @sm:col-start-2 @sm:row-start-1`,children:e.name}),(0,B.jsx)(`span`,{className:`col-start-2 row-start-1 justify-self-end @sm:col-start-3`,children:(0,B.jsx)(w,{art:t.art,children:t.text})})]}),e.text&&(0,B.jsx)(`p`,{className:`m-0 text-sm text-text-2 @sm:pl-[124px]`,children:e.text})]},e.id)}function lt(e){return e.status!==`laeuft`&&!j(e)}function ut(e){let t=(0,z.c)(9),{stand:n}=e;if(!n.ausfuehrer.verbunden){let e;t[0]===n.ausfuehrer.zuletzt?e=t[1]:(e=n.ausfuehrer.zuletzt?` (zuletzt ${$(n.ausfuehrer.zuletzt)})`:``,t[0]=n.ausfuehrer.zuletzt,t[1]=e);let r;return t[2]===e?r=t[3]:(r=(0,B.jsxs)(`p`,{role:`alert`,className:`rounded-xl border border-bernstein/60 bg-bernstein-grund px-4 py-3 text-[15px] text-bernstein`,children:[`Der Ausführer auf dem Proxmox-Host meldet sich nicht`,e,`. Die Geräte zeigen den letzten bekannten Stand; Updates starten erst, wenn er wieder da ist.`]}),t[2]=e,t[3]=r),r}if(!n.bericht){let e;return t[4]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,B.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Der Ausführer hat noch keinen Bericht geschickt.`}),t[4]=e):e=t[4],e}if(n.bericht.veraltet){let e;t[5]===n.bericht.empfangen?e=t[6]:(e=$(n.bericht.empfangen),t[5]=n.bericht.empfangen,t[6]=e);let r;return t[7]===e?r=t[8]:(r=(0,B.jsxs)(`p`,{className:`text-[15px] text-bernstein`,children:[`Der letzte Bericht ist von `,e,`; die Angaben können veraltet sein.`]}),t[7]=e,t[8]=r),r}return null}function dt(){let e=(0,z.c)(20),t=O(),n=se(),r=t.data?.rolle===`homelab`||!!(n.data?.eingerichtet&&n.data.erreichbar),i=D(r),a=l(r),o=S(r),s=_(),c=null;if(t.isPending||n.isPending){let t;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,B.jsx)(d,{text:`Wird gelesen …`}),e[0]=t):t=e[0],c=t}else if(!r){let t;e[1]!==n.data||e[2]!==n.error?.message?(t=n.data?(0,B.jsx)(rt,{partner:n.data}):(0,B.jsx)(d,{fehler:!0,text:`Der Partner lässt sich nicht abfragen: ${n.error?.message??`keine Daten`}`}),e[1]=n.data,e[2]=n.error?.message,e[3]=t):t=e[3],c=t}else if(i.isPending){let t;e[4]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,B.jsx)(d,{text:`Der Homelab-Teil meldet sich gleich …`}),e[4]=t):t=e[4],c=t}else if(!i.data){let t=`Der Homelab-Teil antwortet nicht: ${i.error?.message??`keine Daten`}`,n;e[5]===t?n=e[6]:(n=(0,B.jsx)(d,{fehler:!0,text:t}),e[5]=t,e[6]=n),c=n}let u;if(e[7]!==a.data?.laeufe){u=new Map;for(let e of a.data?.laeufe??[])e.status===`laeuft`&&u.set(e.ziel,e.schritte.at(-1)??`startet …`);e[7]=a.data?.laeufe,e[8]=u}else u=e[8];let f;e[9]===a.data?.laeufe?f=e[10]:(f=a.data?.laeufe??[],e[9]=a.data?.laeufe,e[10]=f);let p;e[11]===o.data?.hinweise?p=e[12]:(p=o.data?.hinweise??[],e[11]=o.data?.hinweise,e[12]=p);let m;return e[13]!==s||e[14]!==c||e[15]!==i.data||e[16]!==u||e[17]!==f||e[18]!==p?(m={ersatz:c,stand:i.data,laufend:u,laeufe:f,hinweise:p,aktion:s},e[13]=s,e[14]=c,e[15]=i.data,e[16]=u,e[17]=f,e[18]=p,e[19]=m):m=e[19],m}function ft(){let e=(0,z.c)(49),t=te(),{ersatz:n,stand:r,laufend:i,laeufe:a,hinweise:o,aktion:s}=dt(),c=ne(`1h`,!!r),l=ce(!!r);if(n||!r)return n;let d,f,p;if(e[0]!==o||e[1]!==a||e[2]!==r){d=r.bericht?$(r.bericht.empfangen):null;let t;e[6]===a?t=e[7]:(t=new Set(a.filter(mt).map(pt)),e[6]=a,e[7]=t),f=t,p=ie(r,o,f.size,d),e[0]=o,e[1]=a,e[2]=r,e[3]=d,e[4]=f,e[5]=p}else d=e[3],f=e[4],p=e[5];let m=p,h;if(e[8]!==f||e[9]!==r.ziele){let t;e[11]===f?t=e[12]:(t=e=>u(e,f.has(e.id)),e[11]=f,e[12]=t),h=r.ziele.map(t),e[8]=f,e[9]=r.ziele,e[10]=h}else h=e[10];let g;e[13]!==m.ziel||e[14]!==t?(g=()=>{m.ziel===`updates`?t({to:`/homelab/updates`}):m.ziel&&document.getElementById(m.ziel)?.scrollIntoView({behavior:`smooth`,block:`start`})},e[13]=m.ziel,e[14]=t,e[15]=g):g=e[15];let _;e[16]!==m||e[17]!==h||e[18]!==g?(_=(0,B.jsx)(_e,{lage:m,lampen:h,onAnsehen:g}),e[16]=m,e[17]=h,e[18]=g,e[19]=_):_=e[19];let v;e[20]===r?v=e[21]:(v=(0,B.jsx)(ut,{stand:r}),e[20]=r,e[21]=v);let y;e[22]===o?y=e[23]:(y=o.length>0&&(0,B.jsx)(it,{hinweise:o}),e[22]=o,e[23]=y);let b;e[24]===d?b=e[25]:(b=d&&(0,B.jsxs)(`span`,{className:`ziffern text-sm text-text-3`,children:[`Stand `,d]}),e[24]=d,e[25]=b);let x;e[26]===Symbol.for(`react.memo_cache_sentinel`)?(x=(0,B.jsxs)(N,{to:`/homelab/monitoring`,className:`inline-flex items-center gap-1 text-sm text-lab-text hover:underline`,children:[`Monitoring `,(0,B.jsx)(M,{className:`size-3.5`,"aria-hidden":!0})]}),e[26]=x):x=e[26];let S;e[27]===b?S=e[28]:(S=(0,B.jsxs)(`span`,{className:`flex items-center gap-3`,children:[b,x]}),e[27]=b,e[28]=S);let C=c.data?.geraete,w;e[29]!==r.ziele||e[30]!==C?(w=(0,B.jsx)(me,{ziele:r.ziele,messwerte:C}),e[29]=r.ziele,e[30]=C,e[31]=w):w=e[31];let T;e[32]===c.isError?T=e[33]:(T=c.isError&&(0,B.jsx)(`p`,{className:`text-xs text-text-3`,children:`CPU und Speicher erscheinen, sobald der Ausführer Messwerte schickt.`}),e[32]=c.isError,e[33]=T);let E;e[34]!==w||e[35]!==T||e[36]!==S?(E=(0,B.jsxs)(k,{titel:`Geräte`,id:`geraete`,rechts:S,children:[w,T]}),e[34]=w,e[35]=T,e[36]=S,e[37]=E):E=e[37];let D;e[38]!==s||e[39]!==i||e[40]!==l.data||e[41]!==r.ausfuehrer?(D=l.data?.bericht&&(0,B.jsx)(k,{titel:`Speicher und Sicherungen`,id:`speicher`,children:(0,B.jsx)(Oe,{daten:l.data,laeuft:i.get(`pve`)??null,gesperrt:s.isPending||i.has(`pve`)||!r.ausfuehrer.verbunden,onAktion:e=>s.mutate(e),snapshotsLink:(0,B.jsxs)(N,{to:`/homelab/snapshots`,className:`inline-flex min-h-10 items-center gap-1 self-start text-sm text-lab-text hover:underline`,children:[`Zu den Snapshots `,(0,B.jsx)(M,{className:`size-3.5`,"aria-hidden":!0})]})})}),e[38]=s,e[39]=i,e[40]=l.data,e[41]=r.ausfuehrer,e[42]=D):D=e[42];let O;return e[43]!==E||e[44]!==D||e[45]!==_||e[46]!==v||e[47]!==y?(O=(0,B.jsxs)(B.Fragment,{children:[_,v,y,E,D]}),e[43]=E,e[44]=D,e[45]=_,e[46]=v,e[47]=y,e[48]=O):O=e[48],O}function pt(e){return e.ziel}function mt(e){return e.status===`laeuft`&&!j(e)}function ht(){let e=(0,z.c)(30),{ersatz:t,stand:n,laufend:r,laeufe:i,aktion:a}=dt(),o=le(!!n),s=T();if(t||!n)return t;let c=o.data?.sammellauf??null,l=c?.status===`laeuft`,u;e[0]===n.ziele?u=e[1]:(u=g(n.ziele).filter(gt),e[0]=n.ziele,e[1]=u);let d=u.length,f=a.isPending||l||!n.ausfuehrer.verbunden,p;e[2]!==d||e[3]!==f?(p=(0,B.jsx)(Le,{anzahl:d,gesperrt:f}),e[2]=d,e[3]=f,e[4]=p):p=e[4];let m;e[5]===Symbol.for(`react.memo_cache_sentinel`)?(m=(0,B.jsx)(`p`,{className:`-mt-2 text-[15px] text-text-2`,children:`Je Gerät, was läuft und was neu ist. Du startest jedes Update selbst — einzeln oder alle nacheinander. Vorher wird gesichert, danach geprüft; ist die Prüfung rot, geht es von selbst zurück.`}),e[5]=m):m=e[5];let h;e[6]===n?h=e[7]:(h=(0,B.jsx)(ut,{stand:n}),e[6]=n,e[7]=h);let _;e[8]!==c||e[9]!==s||e[10]!==l||e[11]!==n.bericht?.empfangen?(_=c&&(l||c.ende&&(n.bericht?.empfangen??0)-c.ende<21600)&&(0,B.jsx)(Ve,{lauf:c,onQuittieren:()=>s.mutate(c.id)}),e[8]=c,e[9]=s,e[10]=l,e[11]=n.bericht?.empfangen,e[12]=_):_=e[12];let v=a.isPending||l||!n.ausfuehrer.verbunden,y;e[13]===a?y=e[14]:(y=e=>a.mutate(e),e[13]=a,e[14]=y);let b;e[15]!==r||e[16]!==n.ziele||e[17]!==v||e[18]!==y?(b=(0,B.jsx)(Xe,{ziele:n.ziele,laufend:r,gesperrt:v,onAktion:y}),e[15]=r,e[16]=n.ziele,e[17]=v,e[18]=y,e[19]=b):b=e[19];let x;e[20]!==p||e[21]!==h||e[22]!==_||e[23]!==b?(x=(0,B.jsxs)(k,{titel:`Updates`,rechts:p,children:[m,h,_,b]}),e[20]=p,e[21]=h,e[22]=_,e[23]=b,e[24]=x):x=e[24];let S;e[25]===i?S=e[26]:(S=(0,B.jsx)(k,{titel:`Verlauf`,children:(0,B.jsx)(st,{laeufe:i})}),e[25]=i,e[26]=S);let C;return e[27]!==S||e[28]!==x?(C=(0,B.jsxs)(B.Fragment,{children:[x,S]}),e[27]=S,e[28]=x,e[29]=C):C=e[29],C}function gt(e){return e.baustein.aktion}export{ft as HomelabSeite,ht as HomelabUpdatesSeite}; \ No newline at end of file diff --git a/frontend/dist/assets/Homelab-UeAs6wHb.js b/frontend/dist/assets/Homelab-UeAs6wHb.js new file mode 100644 index 0000000..39a51f8 --- /dev/null +++ b/frontend/dist/assets/Homelab-UeAs6wHb.js @@ -0,0 +1 @@ +import{a as e,c as t,i as n,n as r,r as i,t as a}from"./dist-aE7UmubC.js";import{t as o}from"./chevron-right-DF8ikrVh.js";import{n as s,t as c}from"./undo-2-B8COJmAr.js";import{t as l}from"./search-RXhRizww.js";import{B as u,Bt as d,C as f,D as p,Dt as m,E as h,Et as g,F as _,H as v,I as y,L as b,M as x,N as S,O as C,Ot as w,P as T,R as E,Rt as D,U as O,V as k,W as A,_ as j,at as M,dt as N,fn as P,gn as F,hn as I,it as ee,lt as te,n as ne,nt as re,ot as ie,pn as ae,r as L,s as oe,t as R,yt as se,z}from"./index-BjDzWYEf.js";import{t as B}from"./button-DwYvdWVr.js";import{t as V}from"./Bestaetigen-DNJdB_zl.js";import{t as H}from"./Panel-uT1S5ZGr.js";import{n as ce,t as le}from"./Lagekopf-PcUY5KZI.js";var U={name:`circle-dashed`,size:24,node:[[`path`,{d:`M10.1 2.182a10 10 0 0 1 3.8 0`,key:`5ilxe3`}],[`path`,{d:`M13.9 21.818a10 10 0 0 1-3.8 0`,key:`11zvb9`}],[`path`,{d:`M17.609 3.721a10 10 0 0 1 2.69 2.7`,key:`1iw5b2`}],[`path`,{d:`M2.182 13.9a10 10 0 0 1 0-3.8`,key:`c0bmvh`}],[`path`,{d:`M20.279 17.609a10 10 0 0 1-2.7 2.69`,key:`1ruxm7`}],[`path`,{d:`M21.818 10.1a10 10 0 0 1 0 3.8`,key:`qkgqxc`}],[`path`,{d:`M3.721 6.391a10 10 0 0 1 2.7-2.69`,key:`1mcia2`}],[`path`,{d:`M6.391 20.279a10 10 0 0 1-2.69-2.7`,key:`1fvljs`}]]};U.node;var ue=r(U),W={name:`loader-circle`,size:24,node:[[`path`,{d:`M21 12a9 9 0 1 1-6.219-8.56`,key:`13zald`}]],aliases:[`loader-2`]};W.node;var de=r(W),fe={name:`skip-forward`,size:24,node:[[`path`,{d:`M21 4v16`,key:`7j8fe9`}],[`path`,{d:`M6.029 4.285A2 2 0 0 0 3 6v12a2 2 0 0 0 3.029 1.715l9.997-5.998a2 2 0 0 0 .003-3.432z`,key:`zs4d6`}]]};fe.node;var pe=r(fe),G=i(),K=n(),me=`md:grid-cols-[minmax(0,1.35fr)_110px_minmax(0,1fr)_minmax(0,1.2fr)_minmax(0,1fr)_90px]`,he=e=>(e/1e9).toFixed(1).replace(`.`,`,`);function q(e){let t=(0,G.c)(17),{wert:n,gelb:r,rot:i,zusatz:o}=e;if(n==null){let e;return t[0]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,K.jsx)(`span`,{className:`text-sm text-text-3`,children:`–`}),t[0]=e):e=t[0],e}let s=n>=i?`var(--rot)`:n>=r?`var(--bernstein)`:`color-mix(in srgb, var(--lab) 80%, transparent)`,c=n>=i?`text-rot-text`:n>=r?`text-bernstein`:`text-text-2`,l;t[1]===c?l=t[2]:(l=a(`ziffern text-sm`,c),t[1]=c,t[2]=l);let u;t[3]===n?u=t[4]:(u=Math.round(n),t[3]=n,t[4]=u);let d;t[5]===o?d=t[6]:(d=o&&(0,K.jsxs)(`span`,{className:`font-sans text-xs text-text-3`,children:[` · `,o]}),t[5]=o,t[6]=d);let f;t[7]!==l||t[8]!==u||t[9]!==d?(f=(0,K.jsxs)(`span`,{className:l,children:[u,` %`,d]}),t[7]=l,t[8]=u,t[9]=d,t[10]=f):f=t[10];let p=`${Math.min(100,Math.max(2,n))}%`,m;t[11]!==s||t[12]!==p?(m=(0,K.jsx)(`span`,{className:`h-1.5 w-full max-w-40 overflow-hidden rounded-full bg-white/[0.07]`,"aria-hidden":!0,children:(0,K.jsx)(`span`,{className:`block h-full rounded-full`,style:{width:p,background:s}})}),t[11]=s,t[12]=p,t[13]=m):m=t[13];let h;return t[14]!==f||t[15]!==m?(h=(0,K.jsxs)(`span`,{className:`flex min-w-0 flex-col gap-1.5`,children:[f,m]}),t[14]=f,t[15]=m,t[16]=h):h=t[16],h}function J(e){if(e.erreichbar===!1)return 0;let t=z(e);return t!==null&&t>=.8?1:e.art===`proxmox-host`?2:3}function ge(e){let t=(0,G.c)(4),{ziele:n,messwerte:r}=e,i;if(t[0]!==r||t[1]!==n){let e=new Map((r??[]).map(ve)),o=[...n].sort(_e),s;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(s=(0,K.jsxs)(`div`,{role:`row`,className:a(`etikett hidden gap-x-4 pb-2.5 text-[10.5px] tracking-[0.14em] text-text-3 md:grid`,me),children:[(0,K.jsx)(`span`,{role:`columnheader`,children:`Gerät`}),(0,K.jsx)(`span`,{role:`columnheader`,children:`Netz`}),(0,K.jsx)(`span`,{role:`columnheader`,children:`CPU`}),(0,K.jsx)(`span`,{role:`columnheader`,children:`Speicher`}),(0,K.jsx)(`span`,{role:`columnheader`,children:`Platte`}),(0,K.jsx)(`span`,{role:`columnheader`,children:`Läuft seit`})]}),t[3]=s):s=t[3],i=(0,K.jsxs)(`div`,{role:`table`,"aria-label":`Zustand der Geräte`,className:`flex flex-col`,children:[s,o.map(t=>{let n=e.get(t.id),r=n?.platte??(z(t)===null?null:z(t)*100),i=n?.ram_used&&n.ram_total?`${he(n.ram_used)} / ${he(n.ram_total)} GB`:void 0;return(0,K.jsxs)(`div`,{id:`geraet-${t.id}`,role:`row`,className:a(`grid scroll-mt-24 grid-cols-2 gap-x-4 gap-y-2 border-t border-white/[0.06] py-3 md:items-center`,me),children:[(0,K.jsxs)(`div`,{role:`rowheader`,className:`col-span-2 flex min-w-0 items-center gap-3 md:col-span-1`,children:[(0,K.jsx)(f,{bild:h(t),groesse:`sm`,punkt:t.erreichbar===!1?`rot`:t.erreichbar?`ok`:null}),(0,K.jsxs)(`span`,{className:`flex min-w-0 flex-col`,children:[(0,K.jsx)(I,{to:`/homelab/monitoring`,hash:t.id,className:`text-[15px] font-semibold break-words hover:text-lab-text`,children:t.name}),S(t)!==t.name&&(0,K.jsx)(`span`,{className:`text-[13px] text-text-3`,children:S(t)})]})]}),(0,K.jsxs)(`span`,{role:`cell`,className:a(`flex items-center gap-1.5 text-[13px]`,t.erreichbar===!1?`text-rot-text`:`text-text-3`),children:[t.erreichbar!==null&&(0,K.jsx)(`span`,{"aria-hidden":!0,className:a(`size-1.5 rounded-full`,t.erreichbar?`bg-gruen`:`bg-rot`)}),t.erreichbar===null?`–`:t.erreichbar?`erreichbar`:`antwortet nicht`]}),(0,K.jsxs)(`span`,{role:`cell`,children:[(0,K.jsx)(`span`,{className:`text-xs text-text-3 md:hidden`,children:`CPU `}),(0,K.jsx)(q,{wert:n?.cpu,gelb:85,rot:95})]}),(0,K.jsxs)(`span`,{role:`cell`,children:[(0,K.jsx)(`span`,{className:`text-xs text-text-3 md:hidden`,children:`Speicher `}),(0,K.jsx)(q,{wert:n?.ram,gelb:85,rot:95,zusatz:i})]}),(0,K.jsxs)(`span`,{role:`cell`,children:[(0,K.jsx)(`span`,{className:`text-xs text-text-3 md:hidden`,children:`Platte `}),(0,K.jsx)(q,{wert:r,gelb:80,rot:90})]}),(0,K.jsxs)(`span`,{role:`cell`,className:`ziffern text-sm text-text-2`,children:[(0,K.jsx)(`span`,{className:`font-sans text-xs text-text-3 md:hidden`,children:`Läuft seit `}),j(n?.uptime_s)]})]},t.id)})]}),t[0]=r,t[1]=n,t[2]=i}else i=t[2];return i}function _e(e,t){return J(e)-J(t)}function ve(e){return[e.id,e.aktuell]}function ye(e){let t=(0,G.c)(15),{lage:n,ziele:r,imUpdate:i,onAnsehen:a,onGeraet:o}=e,s=n.art,c=n.oben,l=n.mitte,u=n.unten,d=n.ziel!==null,f;if(t[0]!==i||t[1]!==o||t[2]!==r){let e;t[4]!==i||t[5]!==o?(e=e=>{let t=y(e,i.has(e.id));return(0,K.jsx)(le,{bild:h(e),name:T(e),wert:t.wert,zustand:t.zustand,onClick:()=>o(e,t.zustand===`info`)},e.id)},t[4]=i,t[5]=o,t[6]=e):e=t[6],f=r.map(e),t[0]=i,t[1]=o,t[2]=r,t[3]=f}else f=t[3];let p;return t[7]!==n.art||t[8]!==n.mitte||t[9]!==n.oben||t[10]!==n.unten||t[11]!==a||t[12]!==d||t[13]!==f?(p=(0,K.jsx)(ce,{art:s,oben:c,mitte:l,unten:u,aktiv:d,onAnsehen:a,label:`Lage im Homelab`,children:f}),t[7]=n.art,t[8]=n.mitte,t[9]=n.oben,t[10]=n.unten,t[11]=a,t[12]=d,t[13]=f,t[14]=p):p=t[14],p}var Y=t(e(),1),X={ok:`gruen`,gelb:`bernstein`,rot:`rot`,keine:`grau`},be={ok:`color-mix(in srgb, var(--lab) 80%, transparent)`,gelb:`var(--bernstein)`,rot:`var(--rot)`},xe=e=>d(new Date(e*1e3).toISOString());function Z(e){let t=(0,G.c)(11),{anteil:n,stufe:r,name:i}=e,a;t[0]===n?a=t[1]:(a=Math.round(n*100),t[0]=n,t[1]=a);let o=a,s=`${i}: ${o} % belegt`,c=`${Math.min(100,Math.max(2,o))}%`,l=be[r],u;t[2]!==c||t[3]!==l?(u=(0,K.jsx)(`span`,{className:`block h-full rounded-full`,style:{width:c,background:l}}),t[2]=c,t[3]=l,t[4]=u):u=t[4];let d,f;t[5]===Symbol.for(`react.memo_cache_sentinel`)?(d=(0,K.jsx)(`span`,{"aria-hidden":!0,className:`absolute inset-y-0 left-[80%] w-px bg-bernstein/70`}),f=(0,K.jsx)(`span`,{"aria-hidden":!0,className:`absolute inset-y-0 left-[90%] w-px bg-rot/80`}),t[5]=d,t[6]=f):(d=t[5],f=t[6]);let p;return t[7]!==o||t[8]!==s||t[9]!==u?(p=(0,K.jsxs)(`div`,{role:`meter`,"aria-label":s,"aria-valuenow":o,"aria-valuemin":0,"aria-valuemax":100,className:`relative h-2 w-full overflow-hidden rounded-full bg-white/[0.07]`,children:[u,d,f]}),t[7]=o,t[8]=s,t[9]=u,t[10]=p):p=t[10],p}function Q(e){let t=(0,G.c)(16),{titel:n,unter:r,chip:i,chipText:a,children:o}=e,s;t[0]===n?s=t[1]:(s=(0,K.jsx)(`span`,{className:`text-[15px] font-semibold break-words`,children:n}),t[0]=n,t[1]=s);let c;t[2]===r?c=t[3]:(c=r&&(0,K.jsx)(`span`,{className:`text-sm break-words text-text-3`,children:r}),t[2]=r,t[3]=c);let l;t[4]!==s||t[5]!==c?(l=(0,K.jsxs)(`div`,{className:`flex min-w-0 flex-col`,children:[s,c]}),t[4]=s,t[5]=c,t[6]=l):l=t[6];let u;t[7]!==i||t[8]!==a?(u=(0,K.jsx)(p,{art:i,children:a}),t[7]=i,t[8]=a,t[9]=u):u=t[9];let d;t[10]!==l||t[11]!==u?(d=(0,K.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[l,u]}),t[10]=l,t[11]=u,t[12]=d):d=t[12];let f;return t[13]!==o||t[14]!==d?(f=(0,K.jsxs)(`div`,{className:`flaeche-innen flex min-w-0 flex-col gap-3 rounded-2xl p-4`,children:[d,o]}),t[13]=o,t[14]=d,t[15]=f):f=t[15],f}function Se(e){let t=(0,G.c)(31),{p:n}=e,r;t[0]===n.anteil?r=t[1]:(r=Math.round(n.anteil*100),t[0]=n.anteil,t[1]=r);let i=r,o=`Speicherpool ${n.speicher}`,s=X[n.stufe],c=R[n.stufe],l=Math.max(n.anteil,n.meta_anteil??0),u=`Speicherpool ${n.speicher}`,d;t[2]!==n.stufe||t[3]!==l||t[4]!==u?(d=(0,K.jsx)(Z,{anteil:l,stufe:n.stufe,name:u}),t[2]=n.stufe,t[3]=l,t[4]=u,t[5]=d):d=t[5];let f;t[6]===n.belegt?f=t[7]:(f=L(n.belegt),t[6]=n.belegt,t[7]=f);let p;t[8]===n.gesamt?p=t[9]:(p=L(n.gesamt),t[8]=n.gesamt,t[9]=p);let m=n.stufe!==`ok`&&`text-foreground`,h;t[10]===m?h=t[11]:(h=a(m),t[10]=m,t[11]=h);let g;t[12]===n.frei?g=t[13]:(g=L(n.frei),t[12]=n.frei,t[13]=g);let _;t[14]!==h||t[15]!==g?(_=(0,K.jsxs)(`span`,{className:h,children:[g,` frei`]}),t[14]=h,t[15]=g,t[16]=_):_=t[16];let v;t[17]!==i||t[18]!==_||t[19]!==f||t[20]!==p?(v=(0,K.jsxs)(`p`,{className:`ziffern text-sm text-text-2`,children:[i,` % · `,f,` von `,p,` · `,_]}),t[17]=i,t[18]=_,t[19]=f,t[20]=p,t[21]=v):v=t[21];let y;t[22]===n.meta_anteil?y=t[23]:(y=n.meta_anteil!==null&&(0,K.jsxs)(`p`,{className:`text-xs text-text-3`,children:[`Metadaten `,Math.round(n.meta_anteil*100),` % belegt`]}),t[22]=n.meta_anteil,t[23]=y);let b;return t[24]!==v||t[25]!==y||t[26]!==o||t[27]!==s||t[28]!==c||t[29]!==d?(b=(0,K.jsxs)(Q,{titel:o,unter:`Platten der Container und VMs`,chip:s,chipText:c,children:[d,v,y]}),t[24]=v,t[25]=y,t[26]=o,t[27]=s,t[28]=c,t[29]=d,t[30]=b):b=t[30],b}function Ce(e){let t=(0,G.c)(21),{s:n}=e,r=X[n.stufe],i=R[n.stufe],a;t[0]!==n.anteil||t[1]!==n.stufe?(a=(0,K.jsx)(Z,{anteil:n.anteil,stufe:n.stufe,name:`Systemplatte des Proxmox-Hosts`}),t[0]=n.anteil,t[1]=n.stufe,t[2]=a):a=t[2];let o;t[3]===n.anteil?o=t[4]:(o=Math.round(n.anteil*100),t[3]=n.anteil,t[4]=o);let s;t[5]===n.belegt?s=t[6]:(s=L(n.belegt),t[5]=n.belegt,t[6]=s);let c;t[7]===n.gesamt?c=t[8]:(c=L(n.gesamt),t[7]=n.gesamt,t[8]=c);let l;t[9]===n.frei?l=t[10]:(l=L(n.frei),t[9]=n.frei,t[10]=l);let u;t[11]!==o||t[12]!==s||t[13]!==c||t[14]!==l?(u=(0,K.jsxs)(`p`,{className:`ziffern text-sm text-text-2`,children:[o,` % · `,s,` von `,c,` · `,l,` frei`]}),t[11]=o,t[12]=s,t[13]=c,t[14]=l,t[15]=u):u=t[15];let d;return t[16]!==r||t[17]!==i||t[18]!==a||t[19]!==u?(d=(0,K.jsxs)(Q,{titel:`Systemplatte`,unter:`Proxmox-Host: Kernel, Sicherungen vor Updates`,chip:r,chipText:i,children:[a,u]}),t[16]=r,t[17]=i,t[18]=a,t[19]=u,t[20]=d):d=t[20],d}function we(e){let t=(0,G.c)(21),{n}=e,r=n.problem?n.stufe===`rot`?`gestört`:`unklar`:R[n.stufe],i=`NAS ${n.server??``}`,o;t[0]===i?o=t[1]:(o=i.trim(),t[0]=i,t[1]=o);let s;t[2]===n.art?s=t[3]:(s=n.art.toUpperCase(),t[2]=n.art,t[3]=s);let c=`${s} · ${n.quelle??`?`} → ${n.ziel}`,l=X[n.stufe],u;t[4]!==n.anteil||t[5]!==n.belegt||t[6]!==n.gesamt||t[7]!==n.problem||t[8]!==n.server||t[9]!==n.stufe?(u=n.problem?(0,K.jsx)(`p`,{className:a(`text-sm`,n.stufe===`rot`?`text-rot-text`:`text-bernstein`),children:n.problem}):n.anteil!==null&&(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(Z,{anteil:n.anteil,stufe:n.stufe,name:`NAS ${n.server??``}`}),(0,K.jsxs)(`p`,{className:`ziffern text-sm text-text-2`,children:[Math.round(n.anteil*100),` % · `,L(n.belegt),` von `,L(n.gesamt),` · `,L((n.gesamt??0)-(n.belegt??0)),` frei`]})]}),t[4]=n.anteil,t[5]=n.belegt,t[6]=n.gesamt,t[7]=n.problem,t[8]=n.server,t[9]=n.stufe,t[10]=u):u=t[10];let d=n.erreichbar===!1?`antwortet nicht`:`antwortet`,f=n.eingebunden?`auf dem Proxmox-Host eingebunden`:`nicht eingebunden`,p;t[11]!==d||t[12]!==f?(p=(0,K.jsxs)(`p`,{className:`text-xs text-text-3`,children:[d,` · `,f]}),t[11]=d,t[12]=f,t[13]=p):p=t[13];let m;return t[14]!==r||t[15]!==o||t[16]!==c||t[17]!==l||t[18]!==u||t[19]!==p?(m=(0,K.jsxs)(Q,{titel:o,unter:c,chip:l,chipText:r,children:[u,p]}),t[14]=r,t[15]=o,t[16]=c,t[17]=l,t[18]=u,t[19]=p,t[20]=m):m=t[20],m}function Te(e){let t=(0,G.c)(18),{s:n}=e,r;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(r={ok:`aktuell`,gelb:`Lücke`,rot:`gestört`,keine:`kein Auftrag`},t[0]=r):r=t[0];let i=r[n.stufe],a;t[1]===n?a=t[2]:(a=ne(n),t[1]=n,t[2]=a);let o=X[n.stufe],s;t[3]===n.probleme?s=t[4]:(s=n.probleme.map(De),t[3]=n.probleme,t[4]=s);let c;t[5]!==n.erfasst||t[6]!==n.stufe||t[7]!==n.zuletzt?(c=n.stufe===`ok`&&(0,K.jsxs)(`p`,{className:`text-sm text-text-2`,children:[`Alle `,n.erfasst,` Geräte gesichert`,n.zuletzt?(0,K.jsxs)(K.Fragment,{children:[`, zuletzt `,(0,K.jsx)(`span`,{className:`ziffern`,children:xe(n.zuletzt)})]}):null,`.`]}),t[5]=n.erfasst,t[6]=n.stufe,t[7]=n.zuletzt,t[8]=c):c=t[8];let l;t[9]===n.fehlend?l=t[10]:(l=n.fehlend.length>0&&(0,K.jsx)(`ul`,{className:`flex flex-col gap-1 text-sm`,children:n.fehlend.map(Ee)}),t[9]=n.fehlend,t[10]=l);let u;return t[11]!==i||t[12]!==a||t[13]!==o||t[14]!==s||t[15]!==c||t[16]!==l?(u=(0,K.jsxs)(Q,{titel:`Sicherungen`,unter:a,chip:o,chipText:i,children:[s,c,l]}),t[11]=i,t[12]=a,t[13]=o,t[14]=s,t[15]=c,t[16]=l,t[17]=u):u=t[17],u}function Ee(e){return(0,K.jsxs)(`li`,{className:`text-bernstein`,children:[e.name,`: `,e.zuletzt?(0,K.jsxs)(K.Fragment,{children:[`zuletzt `,(0,K.jsx)(`span`,{className:`ziffern`,children:xe(e.zuletzt)})]}):`noch nie gesichert`]},e.ziel)}function De(e){return(0,K.jsx)(`p`,{className:`text-sm text-rot-text`,children:e},e)}function Oe(e){let t=(0,G.c)(45),{daten:n,laeuft:r,gesperrt:i,onAktion:a,snapshotsLink:s}=e,c=r===void 0?null:r,l=i!==void 0&&i,[u,d]=(0,Y.useState)(null),f;t[0]!==n.pools||t[1]!==n.systemplatte?.stufe?(f=n.pools.some(Me)||(n.systemplatte?.stufe??`ok`)!==`ok`,t[0]=n.pools,t[1]=n.systemplatte?.stufe,t[2]=f):f=t[2];let p=f,m,h,g;if(t[3]!==n.empfehlungen||t[4]!==n.nas||t[5]!==n.pools||t[6]!==n.sicherungen||t[7]!==n.systemplatte||t[8]!==l||t[9]!==p||t[10]!==c||t[11]!==a||t[12]!==s){let e=n.empfehlungen.reduce(je,0);m=`flex flex-col gap-4`;let r;t[16]===n.pools?r=t[17]:(r=n.pools.map(Ae),t[16]=n.pools,t[17]=r);let i;t[18]===n.systemplatte?i=t[19]:(i=n.systemplatte&&(0,K.jsx)(Ce,{s:n.systemplatte}),t[18]=n.systemplatte,t[19]=i);let u;t[20]===n.nas?u=t[21]:(u=n.nas.length>0?n.nas.map(ke):(0,K.jsx)(Q,{titel:`NAS`,chip:`grau`,chipText:`keins`,children:(0,K.jsx)(`p`,{className:`text-sm text-text-3`,children:`Auf dem Proxmox-Host ist kein Netzlaufwerk eingebunden.`})}),t[20]=n.nas,t[21]=u);let f;t[22]===n.sicherungen?f=t[23]:(f=(0,K.jsx)(Te,{s:n.sicherungen}),t[22]=n.sicherungen,t[23]=f),t[24]!==f||t[25]!==r||t[26]!==i||t[27]!==u?(h=(0,K.jsxs)(`div`,{className:`grid gap-3 md:grid-cols-2 2xl:grid-cols-4`,children:[r,i,u,f]}),t[24]=f,t[25]=r,t[26]=i,t[27]=u,t[28]=h):h=t[28],g=n.empfehlungen.length>0&&(0,K.jsxs)(`details`,{open:p,className:`flaeche-innen group rounded-2xl px-4 open:pb-3`,children:[(0,K.jsxs)(`summary`,{className:`flex min-h-12 cursor-pointer list-none items-center justify-between gap-3 [&::-webkit-details-marker]:hidden`,children:[(0,K.jsxs)(`span`,{className:`flex items-center gap-2 text-[15px] font-medium`,children:[(0,K.jsx)(o,{className:`size-4 text-text-3 transition-transform group-open:rotate-90`,"aria-hidden":!0}),`Was Platz bringt`]}),(0,K.jsxs)(`span`,{className:`ziffern text-sm text-text-2`,children:[n.empfehlungen.length,` `,n.empfehlungen.length===1?`Vorschlag`:`Vorschläge`,e>0&&` · bis zu ${L(e)}`]})]}),(0,K.jsx)(`ol`,{className:`flex flex-col`,children:n.empfehlungen.map(e=>(0,K.jsx)(Fe,{e,laeuft:c,gesperrt:l||!a,onFrage:d,verweis:e.art===`snapshot`?s:null},e.titel))})]}),t[3]=n.empfehlungen,t[4]=n.nas,t[5]=n.pools,t[6]=n.sicherungen,t[7]=n.systemplatte,t[8]=l,t[9]=p,t[10]=c,t[11]=a,t[12]=s,t[13]=m,t[14]=h,t[15]=g}else m=t[13],h=t[14],g=t[15];let _=!!u,v=u?`Proxmox-Host: ${u.label}`:``,y=u?.frage??``,b=u?.label??``,x;t[29]!==u||t[30]!==a?(x=()=>{u&&a&&a(u),d(null)},t[29]=u,t[30]=a,t[31]=x):x=t[31];let S;t[32]===Symbol.for(`react.memo_cache_sentinel`)?(S=()=>d(null),t[32]=S):S=t[32];let C;t[33]!==l||t[34]!==b||t[35]!==x||t[36]!==_||t[37]!==v||t[38]!==y?(C=(0,K.jsx)(V,{offen:_,titel:v,text:y,knopf:b,gesperrt:l,onJa:x,onNein:S}),t[33]=l,t[34]=b,t[35]=x,t[36]=_,t[37]=v,t[38]=y,t[39]=C):C=t[39];let w;return t[40]!==C||t[41]!==m||t[42]!==h||t[43]!==g?(w=(0,K.jsxs)(`div`,{className:m,children:[h,g,C]}),t[40]=C,t[41]=m,t[42]=h,t[43]=g,t[44]=w):w=t[44],w}function ke(e){return(0,K.jsx)(we,{n:e},e.ziel)}function Ae(e){return(0,K.jsx)(Se,{p:e},e.speicher)}function je(e,t){return e+(t.platz??0)}function Me(e){return e.stufe!==`ok`}var Ne={pool:`Speicherpool`,systemplatte:`Systemplatte des Hosts`};function Pe({text:e}){return e.split(/`([^`]+)`/).map((e,t)=>t%2==1?(0,K.jsx)(`code`,{className:`rounded-md bg-white/[0.07] px-1 font-mono text-[13px] text-foreground [font-variant-ligatures:none]`,children:e},t):e)}function Fe(e){let t=(0,G.c)(24),{e:n,laeuft:r,gesperrt:i,onFrage:a,verweis:o}=e,s;t[0]===n.titel?s=t[1]:(s=(0,K.jsx)(`span`,{className:`text-[15px] font-medium break-words`,children:n.titel}),t[0]=n.titel,t[1]=s);let c;t[2]===n.platz?c=t[3]:(c=n.platz?`≈ ${L(n.platz)}`:`Größe unbekannt`,t[2]=n.platz,t[3]=c);let l;t[4]===c?l=t[5]:(l=(0,K.jsx)(`span`,{className:`ziffern text-sm text-text-2`,children:c}),t[4]=c,t[5]=l);let u;t[6]!==s||t[7]!==l?(u=(0,K.jsxs)(`div`,{className:`flex flex-wrap items-baseline justify-between gap-x-3 gap-y-1`,children:[s,l]}),t[6]=s,t[7]=l,t[8]=u):u=t[8];let d;t[9]===n.ort?d=t[10]:(d=n.ort&&(0,K.jsx)(`span`,{className:`etikett text-[10.5px] tracking-[0.14em] text-text-3`,children:Ne[n.ort]??n.ort}),t[9]=n.ort,t[10]=d);let f;t[11]===n.text?f=t[12]:(f=(0,K.jsx)(`p`,{className:`text-sm break-words text-text-2`,children:(0,K.jsx)(Pe,{text:n.text})}),t[11]=n.text,t[12]=f);let p;t[13]!==n.aktion||t[14]!==i||t[15]!==r||t[16]!==a?(p=n.aktion&&(r?(0,K.jsxs)(`p`,{role:`status`,className:`text-sm text-cyan-text`,children:[`Läuft: `,r]}):(0,K.jsx)(B,{variant:`outline`,size:`sm`,className:`mt-1 self-start`,disabled:i,onClick:()=>a(n.aktion),children:n.aktion.label})),t[13]=n.aktion,t[14]=i,t[15]=r,t[16]=a,t[17]=p):p=t[17];let m;return t[18]!==u||t[19]!==d||t[20]!==f||t[21]!==p||t[22]!==o?(m=(0,K.jsxs)(`li`,{className:`flex flex-col gap-1 border-t border-white/[0.06] py-3 first:border-t-0 first:pt-1`,children:[u,d,f,o,p]}),t[18]=u,t[19]=d,t[20]=f,t[21]=p,t[22]=o,t[23]=m):m=t[23],m}var Ie={snapshot:`Snapshot`,sicherung:`Sicherung`,keiner:`kein Rückweg`};function Le(e){let t=(0,G.c)(24),{anzahl:n,gesperrt:r}=e,[i,a]=(0,Y.useState)(!1),o=g(i),s=A(),c;t[0]===o.data?.schritte?c=t[1]:(c=o.data?.schritte??[],t[0]=o.data?.schritte,t[1]=c);let l=c,u=r||n===0||s.isPending,d;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(d=()=>a(!0),t[2]=d):d=t[2];let f=n>0?` (${n})`:``,p;t[3]!==u||t[4]!==f?(p=(0,K.jsxs)(B,{disabled:u,onClick:d,children:[`Alle aktualisieren`,f]}),t[3]=u,t[4]=f,t[5]=p):p=t[5];let m=l.length?`${l.length} Updates starten`:`Starten`,h=s.isPending||o.isPending||l.length===0,_;t[6]===Symbol.for(`react.memo_cache_sentinel`)?(_=()=>a(!1),t[6]=_):_=t[6];let v;t[7]!==i||t[8]!==s?(v=()=>{i&&(s.mutate(void 0),a(!1))},t[7]=i,t[8]=s,t[9]=v):v=t[9];let y;t[10]!==o.data||t[11]!==o.error||t[12]!==o.isPending||t[13]!==l?(y=o.isPending?(0,K.jsx)(`p`,{className:`text-sm text-text-2`,children:`Die Reihenfolge wird gelesen …`}):o.error?(0,K.jsxs)(`p`,{role:`alert`,className:`text-sm text-rot-text`,children:[`Der Plan lässt sich nicht lesen: `,o.error.message]}):(0,K.jsxs)(`div`,{className:`flex flex-col gap-2 pb-1`,children:[(0,K.jsx)(`ol`,{className:`m-0 flex list-none flex-col gap-1 p-0`,children:l.map(Re)}),o.data?.hinweis&&(0,K.jsx)(`p`,{className:`text-xs text-bernstein`,children:o.data.hinweis})]}),t[10]=o.data,t[11]=o.error,t[12]=o.isPending,t[13]=l,t[14]=y):y=t[14];let b;t[15]!==i||t[16]!==y||t[17]!==m||t[18]!==h||t[19]!==v?(b=(0,K.jsx)(V,{offen:i,titel:`Alle Homelab-Updates einspielen?`,text:`Die Updates laufen nacheinander, jedes mit Rückweg und Prüfung. Ist eine Prüfung rot, geht dieser Schritt von selbst zurück und der Rest bleibt stehen. AdGuard und NPMplus kommen zuletzt, der Proxmox-Host ganz am Ende; neu gestartet wird er nicht.`,knopf:m,gesperrt:h,onNein:_,onJa:v,children:y}),t[15]=i,t[16]=y,t[17]=m,t[18]=h,t[19]=v,t[20]=b):b=t[20];let x;return t[21]!==b||t[22]!==p?(x=(0,K.jsxs)(K.Fragment,{children:[p,b]}),t[21]=b,t[22]=p,t[23]=x):x=t[23],x}function Re(e,t){return(0,K.jsxs)(`li`,{className:`grid grid-cols-[1.5rem_minmax(0,1fr)_auto] items-baseline gap-2 text-sm`,children:[(0,K.jsxs)(`span`,{className:`ziffern text-text-3`,children:[t+1,`.`]}),(0,K.jsxs)(`span`,{className:`min-w-0`,children:[(0,K.jsx)(`span`,{className:`font-medium text-foreground`,children:e.name}),` `,(0,K.jsxs)(`span`,{className:`text-text-2`,children:[`· `,e.was]})]}),(0,K.jsx)(`span`,{className:a(`text-xs`,e.rueckweg_art===`keiner`?`text-bernstein`:`text-text-3`),children:Ie[e.rueckweg_art]})]},`${e.ziel}-${e.baustein}`)}var ze={wartet:{Symbol:ue,farbe:`text-text-3`,text:`wartet`},laeuft:{Symbol:de,farbe:`text-cyan-text`,text:`läuft`},eingespielt:{Symbol:P,farbe:`text-gruen`,text:`eingespielt`},zurueckgerollt:{Symbol:c,farbe:`text-bernstein`,text:`zurückgerollt`},fehler:{Symbol:s,farbe:`text-rot`,text:`Fehler`},uebersprungen:{Symbol:pe,farbe:`text-text-3`,text:`übersprungen`}},Be={laeuft:{art:`cyan`,text:`läuft`},fertig:{art:`gruen`,text:`fertig`},abgebrochen:{art:`bernstein`,text:`abgebrochen`}};function Ve(e){let t=(0,G.c)(33),{lauf:n,onQuittieren:r}=e,i;t[0]===n.schritte?i=t[1]:(i=n.schritte.filter(Ue),t[0]=n.schritte,t[1]=i);let a=i.length,o=Be[n.status],s;t[2]!==a||t[3]!==n.schritte.length?(s=(0,K.jsxs)(`span`,{className:`text-[15px] font-semibold text-cyan-text`,children:[`Alle aktualisieren · `,a,` von `,n.schritte.length]}),t[2]=a,t[3]=n.schritte.length,t[4]=s):s=t[4];let c;t[5]===n.start?c=t[6]:(c=d(new Date(n.start*1e3).toISOString()),t[5]=n.start,t[6]=c);let l;t[7]===c?l=t[8]:(l=(0,K.jsx)(`span`,{className:`ziffern text-xs text-text-3`,children:c}),t[7]=c,t[8]=l);let u;t[9]!==o.art||t[10]!==o.text?(u=(0,K.jsx)(p,{art:o.art,children:o.text}),t[9]=o.art,t[10]=o.text,t[11]=u):u=t[11];let f;t[12]!==l||t[13]!==u?(f=(0,K.jsxs)(`span`,{className:`flex items-center gap-2`,children:[l,u]}),t[12]=l,t[13]=u,t[14]=f):f=t[14];let m;t[15]!==s||t[16]!==f?(m=(0,K.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-2`,children:[s,f]}),t[15]=s,t[16]=f,t[17]=m):m=t[17];let h=`${a/Math.max(1,n.schritte.length)*100}%`,g;t[18]===h?g=t[19]:(g=(0,K.jsx)(`div`,{className:`h-1.5 overflow-hidden rounded-full bg-white/[0.07]`,"aria-hidden":!0,children:(0,K.jsx)(`div`,{className:`h-full rounded-full bg-cyan shadow-[0_0_10px_var(--cyan)] transition-all`,style:{width:h}})}),t[18]=h,t[19]=g);let _;t[20]===n.schritte?_=t[21]:(_=n.schritte.map(He),t[20]=n.schritte,t[21]=_);let v;t[22]===_?v=t[23]:(v=(0,K.jsx)(`ol`,{className:`m-0 grid list-none gap-x-6 gap-y-1.5 p-0 sm:grid-cols-2`,children:_}),t[22]=_,t[23]=v);let y;t[24]!==n.status||t[25]!==n.text||t[26]!==r?(y=(n.text||n.status!==`laeuft`&&r)&&(0,K.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-3`,children:[n.text&&(0,K.jsx)(`p`,{className:`text-sm text-text-2`,children:n.text}),n.status!==`laeuft`&&r&&(0,K.jsx)(B,{variant:`outline`,size:`sm`,className:`ml-auto`,onClick:r,children:`Ausblenden`})]}),t[24]=n.status,t[25]=n.text,t[26]=r,t[27]=y):y=t[27];let b;return t[28]!==v||t[29]!==y||t[30]!==m||t[31]!==g?(b=(0,K.jsxs)(`section`,{"aria-label":`Alle aktualisieren`,className:`flex flex-col gap-3 rounded-2xl bg-cyan/[0.06] p-4 ring-1 ring-cyan/30 ring-inset`,children:[m,g,v,y]}),t[28]=v,t[29]=y,t[30]=m,t[31]=g,t[32]=b):b=t[32],b}function He(e){let t=ze[e.status];return(0,K.jsxs)(`li`,{className:`flex items-start gap-2 text-sm`,children:[(0,K.jsx)(t.Symbol,{className:a(`mt-0.5 size-4 shrink-0`,t.farbe,e.status===`laeuft`&&`motion-safe:animate-spin`),"aria-hidden":!0}),(0,K.jsxs)(`span`,{className:`min-w-0`,children:[(0,K.jsx)(`span`,{className:`text-foreground`,children:e.name}),` `,(0,K.jsxs)(`span`,{className:`text-text-3`,children:[`· `,e.was,` · `,t.text]}),e.text&&e.status!==`eingespielt`&&(0,K.jsx)(`span`,{className:`block text-xs text-text-3`,children:e.text})]})]},`${e.ziel}-${e.baustein}`)}function Ue(e){return![`wartet`,`laeuft`].includes(e.status)}var We=`md:grid-cols-[minmax(0,1.1fr)_minmax(0,1.3fr)_minmax(0,1fr)_minmax(0,0.9fr)_11.5rem]`;function Ge(e){let t=(0,G.c)(26),{ziel:n,b:r}=e;if(!r){let e=n.art===`proxmox-host`?k(n)?.installiert:null,r;return t[0]===e?r=t[1]:(r=e?(0,K.jsxs)(`span`,{className:`ziffern text-sm`,children:[`PVE `,e]}):(0,K.jsx)(`span`,{className:`text-sm text-text-3`,children:`–`}),t[0]=e,t[1]=r),r}let i;t[2]===r.installiert?i=t[3]:(i=r.installiert?O(r.installiert):`–`,t[2]=r.installiert,t[3]=i);let a=i,o=r.zustand===`aktuell`?`text-foreground`:`text-text-2`,s;t[4]!==a||t[5]!==o?(s=(0,K.jsx)(`span`,{className:o,children:a}),t[4]=a,t[5]=o,t[6]=s):s=t[6];let c;t[7]!==r.verfuegbar||t[8]!==r.zustand?(c=r.zustand===`neu`&&r.verfuegbar&&(0,K.jsxs)(`span`,{className:`text-cyan-text`,children:[`→ `,r.verfuegbar]}),t[7]=r.verfuegbar,t[8]=r.zustand,t[9]=c):c=t[9];let l;t[10]===r.zustand?l=t[11]:(l=r.zustand===`aktuell`&&(0,K.jsx)(`span`,{className:`font-sans text-xs text-gruen-text`,children:`aktuell`}),t[10]=r.zustand,t[11]=l);let u;t[12]===r.zustand?u=t[13]:(u=r.zustand===`unbekannt`&&(0,K.jsx)(`span`,{className:`font-sans text-xs text-text-3`,children:`unklar`}),t[12]=r.zustand,t[13]=u);let d;t[14]!==s||t[15]!==c||t[16]!==l||t[17]!==u?(d=(0,K.jsxs)(`span`,{className:`ziffern flex flex-wrap items-baseline gap-x-2 text-sm`,children:[s,c,l,u]}),t[14]=s,t[15]=c,t[16]=l,t[17]=u,t[18]=d):d=t[18];let f;t[19]!==r.aktion||t[20]!==r.grund||t[21]!==r.zustand?(f=r.zustand===`neu`&&!r.aktion&&r.grund&&(0,K.jsx)(`span`,{className:`text-xs text-text-3`,children:r.grund}),t[19]=r.aktion,t[20]=r.grund,t[21]=r.zustand,t[22]=f):f=t[22];let p;return t[23]!==d||t[24]!==f?(p=(0,K.jsxs)(`span`,{className:`flex min-w-0 flex-col gap-0.5`,children:[d,f]}),t[23]=d,t[24]=f,t[25]=p):p=t[25],p}function Ke(e){let t=(0,G.c)(22),{b:n,onSuchen:r,gesperrt:i}=e;if(!n){let e;return t[0]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,K.jsx)(`span`,{className:`text-sm text-text-3`,children:`–`}),t[0]=e):e=t[0],e}let a=n.id===`docker`,o;if(n.zustand===`neu`){let e=n.kurz||`Update bereit`,r;t[1]===e?r=t[2]:(r=(0,K.jsx)(`span`,{className:`text-cyan-text`,children:e}),t[1]=e,t[2]=r),o=r}else if(n.zustand===`aktuell`){let e=a?`Images aktuell`:`aktuell`,n;t[3]===e?n=t[4]:(n=(0,K.jsx)(`span`,{className:`text-gruen-text`,children:e}),t[3]=e,t[4]=n),o=n}else{let e;t[5]===n.grund?e=t[6]:(e=b(n.grund),t[5]=n.grund,t[6]=e);let r=e,i=n.grund??void 0,s=a?`Images unklar`:`unklar`,c;t[7]===r?c=t[8]:(c=r&&(0,K.jsxs)(`span`,{className:`text-text-3`,children:[` · Listen vom `,r]}),t[7]=r,t[8]=c);let l;t[9]!==i||t[10]!==s||t[11]!==c?(l=(0,K.jsxs)(`span`,{className:`text-text-2`,title:i,children:[s,c]}),t[9]=i,t[10]=s,t[11]=c,t[12]=l):l=t[12],o=l}let s=n.zustand===`unbekannt`?n.aktion:null,c;t[13]===o?c=t[14]:(c=(0,K.jsx)(`span`,{className:`min-w-0`,children:o}),t[13]=o,t[14]=c);let u;t[15]!==i||t[16]!==r||t[17]!==s?(u=s&&(0,K.jsx)(B,{variant:`ghost`,size:`icon-sm`,className:`-my-2 shrink-0`,"aria-label":s.label,title:s.label,disabled:i,onClick:()=>r(s),children:(0,K.jsx)(l,{})}),t[15]=i,t[16]=r,t[17]=s,t[18]=u):u=t[18];let d;return t[19]!==c||t[20]!==u?(d=(0,K.jsxs)(`span`,{className:`flex items-center gap-1 text-sm`,children:[c,u]}),t[19]=c,t[20]=u,t[21]=d):d=t[21],d}var qe={app:`App updaten`,os:`Pakete einspielen`,pakete:`Pakete einspielen`};function Je(e){let t=(0,G.c)(62),{ziel:n,laeuft:r,gesperrt:i,onFrage:o}=e,s;t[0]===n?s=t[1]:(s=x(n),t[0]=n,t[1]=s);let c=s,l;t[2]===n?l=t[3]:(l=k(n),t[2]=n,t[3]=l);let d=l,p,m,g,_,y,b,C,w,T;if(t[4]!==c||t[5]!==i||t[6]!==r||t[7]!==o||t[8]!==d||t[9]!==n){let e=n.bausteine.filter(Ye),s=v(n)>=2;b=`row`;let l=s&&`opacity-75`;t[19]===l?C=t[20]:(C=a(`grid grid-cols-1 gap-x-4 gap-y-2 border-t border-white/[0.06] py-3.5 md:items-center`,We,l),t[19]=l,t[20]=C);let x;t[21]===n?x=t[22]:(x=h(n),t[21]=n,t[22]=x);let E=e.length?`info`:null,D;t[23]!==x||t[24]!==E?(D=(0,K.jsx)(f,{bild:x,groesse:`sm`,punkt:E}),t[23]=x,t[24]=E,t[25]=D):D=t[25];let O;t[26]===n.name?O=t[27]:(O=(0,K.jsx)(`span`,{className:`text-[15px] font-semibold break-words`,children:n.name}),t[26]=n.name,t[27]=O);let k;t[28]===n?k=t[29]:(k=S(n)!==n.name&&(0,K.jsx)(`span`,{className:`text-[13px] text-text-3`,children:S(n)}),t[28]=n,t[29]=k);let A;t[30]!==O||t[31]!==k?(A=(0,K.jsxs)(`span`,{className:`flex min-w-0 flex-col`,children:[O,k]}),t[30]=O,t[31]=k,t[32]=A):A=t[32],t[33]!==D||t[34]!==A?(w=(0,K.jsxs)(`div`,{role:`rowheader`,className:`flex min-w-0 items-center gap-3`,children:[D,A]}),t[33]=D,t[34]=A,t[35]=w):w=t[35];let j;t[36]===Symbol.for(`react.memo_cache_sentinel`)?(j=(0,K.jsx)(`span`,{className:`text-xs text-text-3 md:hidden`,children:`App `}),t[36]=j):j=t[36],t[37]!==c||t[38]!==n?(T=(0,K.jsxs)(`span`,{role:`cell`,className:`min-w-0`,children:[j,(0,K.jsx)(Ge,{ziel:n,b:c})]}),t[37]=c,t[38]=n,t[39]=T):T=t[39];let M;t[40]===Symbol.for(`react.memo_cache_sentinel`)?(M=(0,K.jsx)(`span`,{className:`text-xs text-text-3 md:hidden`,children:`Pakete `}),t[40]=M):M=t[40];let N=i||!!r,P;t[41]!==o||t[42]!==n?(P=e=>o({ziel:n,aktion:e}),t[41]=o,t[42]=n,t[43]=P):P=t[43],t[44]!==d||t[45]!==N||t[46]!==P?(p=(0,K.jsxs)(`span`,{role:`cell`,className:`min-w-0`,children:[M,(0,K.jsx)(Ke,{b:d,gesperrt:N,onSuchen:P})]}),t[44]=d,t[45]=N,t[46]=P,t[47]=p):p=t[47];let F=e.length?u(n):``;t[48]===F?m=t[49]:(m=(0,K.jsx)(`span`,{role:`cell`,className:`text-sm text-text-3`,children:F}),t[48]=F,t[49]=m),g=`cell`,_=`flex flex-wrap gap-2 md:flex-col md:items-stretch`,y=r?(0,K.jsxs)(`span`,{role:`status`,className:`text-sm text-cyan-text`,children:[`Läuft: `,r]}):e.map(e=>(0,K.jsx)(B,{variant:`outline`,size:`sm`,disabled:i,onClick:()=>e.aktion&&o({ziel:n,aktion:e.aktion}),children:qe[e.id]??e.aktion?.label??`Updaten`},e.id)),t[4]=c,t[5]=i,t[6]=r,t[7]=o,t[8]=d,t[9]=n,t[10]=p,t[11]=m,t[12]=g,t[13]=_,t[14]=y,t[15]=b,t[16]=C,t[17]=w,t[18]=T}else p=t[10],m=t[11],g=t[12],_=t[13],y=t[14],b=t[15],C=t[16],w=t[17],T=t[18];let E;t[50]!==g||t[51]!==_||t[52]!==y?(E=(0,K.jsx)(`span`,{role:g,className:_,children:y}),t[50]=g,t[51]=_,t[52]=y,t[53]=E):E=t[53];let D;return t[54]!==p||t[55]!==m||t[56]!==E||t[57]!==b||t[58]!==C||t[59]!==w||t[60]!==T?(D=(0,K.jsxs)(`div`,{role:b,className:C,children:[w,T,p,m,E]}),t[54]=p,t[55]=m,t[56]=E,t[57]=b,t[58]=C,t[59]=w,t[60]=T,t[61]=D):D=t[61],D}function Ye(e){return e.zustand===`neu`&&e.aktion}function Xe(e){let t=(0,G.c)(42),{ziele:n,laufend:r,gesperrt:i,onAktion:o}=e,[s,c]=(0,Y.useState)(null),l,u,d,f,m,h;if(t[0]!==i||t[1]!==r||t[2]!==n){let e=[...n].sort(Qe),o;t[9]===n?o=t[10]:(o=n.filter(Ze),t[9]=n,t[10]=o),l=o.length,u=`table`,d=`Updates je Gerät`,f=`flex flex-col`,t[11]===Symbol.for(`react.memo_cache_sentinel`)?(m=(0,K.jsxs)(`div`,{role:`row`,className:a(`etikett hidden gap-x-4 pb-2.5 text-[10.5px] tracking-[0.14em] text-text-3 md:grid`,We),children:[(0,K.jsx)(`span`,{role:`columnheader`,children:`Gerät`}),(0,K.jsx)(`span`,{role:`columnheader`,children:`App`}),(0,K.jsx)(`span`,{role:`columnheader`,children:`Pakete`}),(0,K.jsx)(`span`,{role:`columnheader`,children:`Rückweg`}),(0,K.jsx)(`span`,{role:`columnheader`,className:`sr-only`,children:`Aktion`})]}),t[11]=m):m=t[11];let s;t[12]!==i||t[13]!==r?(s=e=>(0,K.jsx)(Je,{ziel:e,laeuft:r.get(e.id)??null,gesperrt:i||r.has(e.id),onFrage:c},e.id),t[12]=i,t[13]=r,t[14]=s):s=t[14],h=e.map(s),t[0]=i,t[1]=r,t[2]=n,t[3]=l,t[4]=u,t[5]=d,t[6]=f,t[7]=m,t[8]=h}else l=t[3],u=t[4],d=t[5],f=t[6],m=t[7],h=t[8];let g;t[15]!==u||t[16]!==d||t[17]!==f||t[18]!==m||t[19]!==h?(g=(0,K.jsxs)(`div`,{role:u,"aria-label":d,className:f,children:[m,h]}),t[15]=u,t[16]=d,t[17]=f,t[18]=m,t[19]=h,t[20]=g):g=t[20];let _;t[21]!==l||t[22]!==n.length?(_=l>0&&l===n.length&&(0,K.jsx)(p,{art:`gruen`,children:`Alles aktuell`}),t[21]=l,t[22]=n.length,t[23]=_):_=t[23];let v=!!s,y=s?`${s.ziel.name}: ${s.aktion.label}`:``,b=s?.aktion.frage??``,x=s?.aktion.label??``,S;t[24]===s?.aktion.pfad?S=t[25]:(S=s?.aktion.pfad.endsWith(`/neustart`),t[24]=s?.aktion.pfad,t[25]=S);let C=!!S,w;t[26]!==s||t[27]!==o?(w=()=>{s&&o(s.aktion),c(null)},t[26]=s,t[27]=o,t[28]=w):w=t[28];let T;t[29]===Symbol.for(`react.memo_cache_sentinel`)?(T=()=>c(null),t[29]=T):T=t[29];let E;t[30]!==i||t[31]!==b||t[32]!==x||t[33]!==C||t[34]!==w||t[35]!==v||t[36]!==y?(E=(0,K.jsx)(V,{offen:v,titel:y,text:b,knopf:x,gefahr:C,gesperrt:i,onJa:w,onNein:T}),t[30]=i,t[31]=b,t[32]=x,t[33]=C,t[34]=w,t[35]=v,t[36]=y,t[37]=E):E=t[37];let D;return t[38]!==E||t[39]!==g||t[40]!==_?(D=(0,K.jsxs)(K.Fragment,{children:[g,_,E]}),t[38]=E,t[39]=g,t[40]=_,t[41]=D):D=t[41],D}function Ze(e){return v(e)===3}function Qe(e,t){return v(e)-v(t)}var $e=[`Proxmox-Host`,`AdGuard`,`NPMplus`,`NetBird`,`PVE Scripts Local`,`Gitea`,`PBS`,`Arcane mit Docker`],et={eingespielt:{art:`gruen`,text:`eingespielt`},zurueckgerollt:{art:`bernstein`,text:`zurückgerollt`},fehler:{art:`rot`,text:`Fehler`},neustart:{art:`cyan`,text:`Neustart`},aufgeraeumt:{art:`gruen`,text:`aufgeräumt`},offen:{art:`cyan`,text:`Probelauf`}},$=e=>d(new Date(e*1e3).toISOString());function tt(){let e=(0,G.c)(4),t,n;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,K.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Der Homelab-Teil läuft als eigene Instanz in einem kleinen Container auf dem Proxmox-PC. Von dort prüft er auch die KI-Box von außen.`}),n=(0,K.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Steht er, erscheinen hier alle Geräte mit ihren offenen Updates. Ein Update startest du mit „Jetzt updaten“: Vorher wird gesichert, danach die Erreichbarkeit geprüft, und ist sie rot, geht es von selbst zurück.`}),e[0]=t,e[1]=n):(t=e[0],n=e[1]);let r;e[2]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,K.jsx)(`h3`,{className:`etikett text-[11.5px] tracking-[0.16em] text-text-3`,children:`Dazu kommen`}),e[2]=r):r=e[2];let i;return e[3]===Symbol.for(`react.memo_cache_sentinel`)?(i=(0,K.jsxs)(K.Fragment,{children:[t,n,(0,K.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[r,(0,K.jsx)(`ul`,{className:`flex flex-wrap gap-2`,children:$e.map(nt)})]}),(0,K.jsx)(`p`,{className:`text-sm text-text-3`,children:`Der Container wird erst nach deiner Freigabe angelegt.`})]}),e[3]=i):i=e[3],i}function nt(e){return(0,K.jsx)(`li`,{children:(0,K.jsx)(p,{children:e})},e)}function rt(e){let t=(0,G.c)(9),{partner:n}=e,r;t[0]===n.eingerichtet?r=t[1]:(r=n.eingerichtet?(0,K.jsx)(p,{art:`rot`,children:`Antwortet nicht`}):(0,K.jsx)(p,{children:`Noch nicht eingerichtet`}),t[0]=n.eingerichtet,t[1]=r);let i=r,a;t[2]!==n.eingerichtet||t[3]!==n.fehler||t[4]!==n.url?(a=n.eingerichtet?(0,K.jsxs)(`p`,{role:`alert`,className:`text-[15px] text-rot-text`,children:[`Der Homelab-Teil (`,n.url,`) ist `,n.fehler??`nicht erreichbar`,`. Hält das an, meldet der Wächter es nach fünf Minuten auf Telegram.`]}):(0,K.jsx)(tt,{}),t[2]=n.eingerichtet,t[3]=n.fehler,t[4]=n.url,t[5]=a):a=t[5];let o;return t[6]!==i||t[7]!==a?(o=(0,K.jsx)(H,{titel:`Homelab`,rechts:i,children:a}),t[6]=i,t[7]=a,t[8]=o):o=t[8],o}function it(e){let t=(0,G.c)(10),{hinweise:n}=e,r=n.some(ot)?`rot`:`bernstein`,i;t[0]!==n.length||t[1]!==r?(i=(0,K.jsxs)(p,{art:r,children:[n.length,` offen`]}),t[0]=n.length,t[1]=r,t[2]=i):i=t[2];let a;t[3]===n?a=t[4]:(a=n.map(at),t[3]=n,t[4]=a);let o;t[5]===a?o=t[6]:(o=(0,K.jsx)(`ul`,{className:`m-0 flex list-none flex-col p-0`,children:a}),t[5]=a,t[6]=o);let s;return t[7]!==i||t[8]!==o?(s=(0,K.jsx)(H,{titel:`Hinweise`,id:`hinweise`,rechts:i,children:o}),t[7]=i,t[8]=o,t[9]=s):s=t[9],s}function at(e){return(0,K.jsxs)(`li`,{className:`flex flex-col gap-1 border-t border-white/[0.06] py-3 first:border-t-0 first:pt-0`,children:[(0,K.jsx)(`span`,{className:e.stufe===`rot`?`text-[15px] font-medium text-rot-text`:`text-[15px] font-medium text-bernstein`,children:e.titel}),(0,K.jsx)(`span`,{className:`text-sm text-text-2`,children:e.text})]},e.id)}function ot(e){return e.stufe===`rot`}function st(e){let t=(0,G.c)(8),{laeufe:n}=e,r,i,a;if(t[0]!==n){a=Symbol.for(`react.early_return_sentinel`);bb0:{let e=n.filter(lt).slice(0,12);if(e.length===0){let e;t[4]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,K.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Noch kein Update im Homelab eingespielt.`}),t[4]=e):e=t[4],a=e;break bb0}r=`@container m-0 flex list-none flex-col p-0`,i=e.map(ct)}t[0]=n,t[1]=r,t[2]=i,t[3]=a}else r=t[1],i=t[2],a=t[3];if(a!==Symbol.for(`react.early_return_sentinel`))return a;let o;return t[5]!==r||t[6]!==i?(o=(0,K.jsx)(`ol`,{className:r,children:i}),t[5]=r,t[6]=i,t[7]=o):o=t[7],o}function ct(e){let t=e.ergebnis?et[e.ergebnis]??{art:`grau`,text:e.ergebnis}:{art:`grau`,text:`unterbrochen`};return(0,K.jsxs)(`li`,{className:`flex flex-col gap-1.5 border-t border-white/[0.06] py-3 first:border-t-0 first:pt-0`,children:[(0,K.jsxs)(`div`,{className:`grid grid-cols-[minmax(0,1fr)_auto] items-center gap-x-3 gap-y-1 @sm:grid-cols-[112px_minmax(0,1fr)_auto]`,children:[(0,K.jsx)(`span`,{className:`ziffern col-start-1 row-start-1 text-sm text-text-3`,children:$(e.start)}),(0,K.jsx)(`span`,{className:`col-span-2 row-start-2 min-w-0 text-[15px] break-words @sm:col-span-1 @sm:col-start-2 @sm:row-start-1`,children:e.name}),(0,K.jsx)(`span`,{className:`col-start-2 row-start-1 justify-self-end @sm:col-start-3`,children:(0,K.jsx)(p,{art:t.art,children:t.text})})]}),e.text&&(0,K.jsx)(`p`,{className:`m-0 text-sm text-text-2 @sm:pl-[124px]`,children:e.text})]},e.id)}function lt(e){return e.status!==`laeuft`&&!oe(e)}function ut(e){let t=(0,G.c)(9),{stand:n}=e;if(!n.ausfuehrer.verbunden){let e;t[0]===n.ausfuehrer.zuletzt?e=t[1]:(e=n.ausfuehrer.zuletzt?` (zuletzt ${$(n.ausfuehrer.zuletzt)})`:``,t[0]=n.ausfuehrer.zuletzt,t[1]=e);let r;return t[2]===e?r=t[3]:(r=(0,K.jsxs)(`p`,{role:`alert`,className:`rounded-2xl bg-bernstein/[0.08] px-4 py-3 text-[15px] text-bernstein ring-1 ring-bernstein/35 ring-inset`,children:[`Der Ausführer auf dem Proxmox-Host meldet sich nicht`,e,`. Die Geräte zeigen den letzten bekannten Stand; Updates starten erst, wenn er wieder da ist.`]}),t[2]=e,t[3]=r),r}if(!n.bericht){let e;return t[4]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,K.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Der Ausführer hat noch keinen Bericht geschickt.`}),t[4]=e):e=t[4],e}if(n.bericht.veraltet){let e;t[5]===n.bericht.empfangen?e=t[6]:(e=$(n.bericht.empfangen),t[5]=n.bericht.empfangen,t[6]=e);let r;return t[7]===e?r=t[8]:(r=(0,K.jsxs)(`p`,{className:`text-[15px] text-bernstein`,children:[`Der letzte Bericht ist von `,e,`; die Angaben können veraltet sein.`]}),t[7]=e,t[8]=r),r}return null}function dt(){let e=(0,G.c)(20),t=N(),n=se(),r=t.data?.rolle===`homelab`||!!(n.data?.eingerichtet&&n.data.erreichbar),i=re(r),a=M(r),o=ee(r),s=D(),c=null;if(t.isPending||n.isPending){let t;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,K.jsx)(C,{text:`Wird gelesen …`}),e[0]=t):t=e[0],c=t}else if(!r){let t;e[1]!==n.data||e[2]!==n.error?.message?(t=n.data?(0,K.jsx)(rt,{partner:n.data}):(0,K.jsx)(C,{fehler:!0,text:`Der Partner lässt sich nicht abfragen: ${n.error?.message??`keine Daten`}`}),e[1]=n.data,e[2]=n.error?.message,e[3]=t):t=e[3],c=t}else if(i.isPending){let t;e[4]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,K.jsx)(C,{text:`Der Homelab-Teil meldet sich gleich …`}),e[4]=t):t=e[4],c=t}else if(!i.data){let t=`Der Homelab-Teil antwortet nicht: ${i.error?.message??`keine Daten`}`,n;e[5]===t?n=e[6]:(n=(0,K.jsx)(C,{fehler:!0,text:t}),e[5]=t,e[6]=n),c=n}let l;if(e[7]!==a.data?.laeufe){l=new Map;for(let e of a.data?.laeufe??[])e.status===`laeuft`&&l.set(e.ziel,e.schritte.at(-1)??`startet …`);e[7]=a.data?.laeufe,e[8]=l}else l=e[8];let u;e[9]===a.data?.laeufe?u=e[10]:(u=a.data?.laeufe??[],e[9]=a.data?.laeufe,e[10]=u);let d;e[11]===o.data?.hinweise?d=e[12]:(d=o.data?.hinweise??[],e[11]=o.data?.hinweise,e[12]=d);let f;return e[13]!==s||e[14]!==c||e[15]!==i.data||e[16]!==l||e[17]!==u||e[18]!==d?(f={ersatz:c,stand:i.data,laufend:l,laeufe:u,hinweise:d,aktion:s},e[13]=s,e[14]=c,e[15]=i.data,e[16]=l,e[17]=u,e[18]=d,e[19]=f):f=e[19],f}function ft(){let e=(0,G.c)(48),t=F(),{ersatz:n,stand:r,laufend:i,laeufe:a,hinweise:o,aktion:s}=dt(),c=ie(`1h`,!!r),l=te(!!r);if(n||!r)return n;let u,d,f;if(e[0]!==o||e[1]!==a||e[2]!==r){u=r.bericht?$(r.bericht.empfangen):null;let t;e[6]===a?t=e[7]:(t=new Set(a.filter(mt).map(pt)),e[6]=a,e[7]=t),d=t,f=_(r,o,d.size,u),e[0]=o,e[1]=a,e[2]=r,e[3]=u,e[4]=d,e[5]=f}else u=e[3],d=e[4],f=e[5];let p=f,m;e[8]!==p.ziel||e[9]!==t?(m=()=>{p.ziel===`updates`?t({to:`/homelab/updates`}):p.ziel&&document.getElementById(p.ziel)?.scrollIntoView({behavior:`smooth`,block:`start`})},e[8]=p.ziel,e[9]=t,e[10]=m):m=e[10];let h;e[11]===t?h=e[12]:(h=(e,n)=>{n?t({to:`/homelab/updates`}):document.getElementById(`geraet-${e.id}`)?.scrollIntoView({behavior:`smooth`,block:`center`})},e[11]=t,e[12]=h);let g;e[13]!==d||e[14]!==p||e[15]!==r.ziele||e[16]!==m||e[17]!==h?(g=(0,K.jsx)(ye,{lage:p,ziele:r.ziele,imUpdate:d,onAnsehen:m,onGeraet:h}),e[13]=d,e[14]=p,e[15]=r.ziele,e[16]=m,e[17]=h,e[18]=g):g=e[18];let v;e[19]===r?v=e[20]:(v=(0,K.jsx)(ut,{stand:r}),e[19]=r,e[20]=v);let y;e[21]===o?y=e[22]:(y=o.length>0&&(0,K.jsx)(it,{hinweise:o}),e[21]=o,e[22]=y);let b;e[23]===u?b=e[24]:(b=u&&(0,K.jsxs)(`span`,{className:`ziffern text-sm text-text-3`,children:[`Stand `,u]}),e[23]=u,e[24]=b);let x;e[25]===Symbol.for(`react.memo_cache_sentinel`)?(x=(0,K.jsxs)(I,{to:`/homelab/monitoring`,className:`inline-flex items-center gap-1 text-sm text-lab-text hover:underline`,children:[`Monitoring `,(0,K.jsx)(ae,{className:`size-3.5`,"aria-hidden":!0})]}),e[25]=x):x=e[25];let S;e[26]===b?S=e[27]:(S=(0,K.jsxs)(`span`,{className:`flex items-center gap-3`,children:[b,x]}),e[26]=b,e[27]=S);let C=c.data?.geraete,w;e[28]!==r.ziele||e[29]!==C?(w=(0,K.jsx)(ge,{ziele:r.ziele,messwerte:C}),e[28]=r.ziele,e[29]=C,e[30]=w):w=e[30];let T;e[31]===c.isError?T=e[32]:(T=c.isError&&(0,K.jsx)(`p`,{className:`text-xs text-text-3`,children:`CPU und Speicher erscheinen, sobald der Ausführer Messwerte schickt.`}),e[31]=c.isError,e[32]=T);let E;e[33]!==w||e[34]!==T||e[35]!==S?(E=(0,K.jsxs)(H,{titel:`Geräte`,id:`geraete`,rechts:S,children:[w,T]}),e[33]=w,e[34]=T,e[35]=S,e[36]=E):E=e[36];let D;e[37]!==s||e[38]!==i||e[39]!==l.data||e[40]!==r.ausfuehrer?(D=l.data?.bericht&&(0,K.jsx)(H,{titel:`Speicher und Sicherungen`,id:`speicher`,children:(0,K.jsx)(Oe,{daten:l.data,laeuft:i.get(`pve`)??null,gesperrt:s.isPending||i.has(`pve`)||!r.ausfuehrer.verbunden,onAktion:e=>s.mutate(e),snapshotsLink:(0,K.jsxs)(I,{to:`/homelab/snapshots`,className:`inline-flex min-h-10 items-center gap-1 self-start text-sm text-lab-text hover:underline`,children:[`Zu den Snapshots `,(0,K.jsx)(ae,{className:`size-3.5`,"aria-hidden":!0})]})})}),e[37]=s,e[38]=i,e[39]=l.data,e[40]=r.ausfuehrer,e[41]=D):D=e[41];let O;return e[42]!==E||e[43]!==D||e[44]!==g||e[45]!==v||e[46]!==y?(O=(0,K.jsxs)(K.Fragment,{children:[g,v,y,E,D]}),e[42]=E,e[43]=D,e[44]=g,e[45]=v,e[46]=y,e[47]=O):O=e[47],O}function pt(e){return e.ziel}function mt(e){return e.status===`laeuft`&&!oe(e)}function ht(){let e=(0,G.c)(30),{ersatz:t,stand:n,laufend:r,laeufe:i,aktion:a}=dt(),o=m(!!n),s=w();if(t||!n)return t;let c=o.data?.sammellauf??null,l=c?.status===`laeuft`,u;e[0]===n.ziele?u=e[1]:(u=E(n.ziele).filter(gt),e[0]=n.ziele,e[1]=u);let d=u.length,f=a.isPending||l||!n.ausfuehrer.verbunden,p;e[2]!==d||e[3]!==f?(p=(0,K.jsx)(Le,{anzahl:d,gesperrt:f}),e[2]=d,e[3]=f,e[4]=p):p=e[4];let h;e[5]===Symbol.for(`react.memo_cache_sentinel`)?(h=(0,K.jsx)(`p`,{className:`-mt-2 text-[15px] text-text-2`,children:`Je Gerät, was läuft und was neu ist. Du startest jedes Update selbst — einzeln oder alle nacheinander. Vorher wird gesichert, danach geprüft; ist die Prüfung rot, geht es von selbst zurück.`}),e[5]=h):h=e[5];let g;e[6]===n?g=e[7]:(g=(0,K.jsx)(ut,{stand:n}),e[6]=n,e[7]=g);let _;e[8]!==c||e[9]!==s||e[10]!==l||e[11]!==n.bericht?.empfangen?(_=c&&(l||c.ende&&(n.bericht?.empfangen??0)-c.ende<21600)&&(0,K.jsx)(Ve,{lauf:c,onQuittieren:()=>s.mutate(c.id)}),e[8]=c,e[9]=s,e[10]=l,e[11]=n.bericht?.empfangen,e[12]=_):_=e[12];let v=a.isPending||l||!n.ausfuehrer.verbunden,y;e[13]===a?y=e[14]:(y=e=>a.mutate(e),e[13]=a,e[14]=y);let b;e[15]!==r||e[16]!==n.ziele||e[17]!==v||e[18]!==y?(b=(0,K.jsx)(Xe,{ziele:n.ziele,laufend:r,gesperrt:v,onAktion:y}),e[15]=r,e[16]=n.ziele,e[17]=v,e[18]=y,e[19]=b):b=e[19];let x;e[20]!==p||e[21]!==g||e[22]!==_||e[23]!==b?(x=(0,K.jsxs)(H,{titel:`Updates`,rechts:p,children:[h,g,_,b]}),e[20]=p,e[21]=g,e[22]=_,e[23]=b,e[24]=x):x=e[24];let S;e[25]===i?S=e[26]:(S=(0,K.jsx)(H,{titel:`Verlauf`,children:(0,K.jsx)(st,{laeufe:i})}),e[25]=i,e[26]=S);let C;return e[27]!==S||e[28]!==x?(C=(0,K.jsxs)(K.Fragment,{children:[x,S]}),e[27]=S,e[28]=x,e[29]=C):C=e[29],C}function gt(e){return e.baustein.aktion}export{ft as HomelabSeite,ht as HomelabUpdatesSeite}; \ No newline at end of file diff --git a/frontend/dist/assets/HomelabProtokoll-Bn-4pxRM.js b/frontend/dist/assets/HomelabProtokoll-Bn-4pxRM.js deleted file mode 100644 index 1f4d64f..0000000 --- a/frontend/dist/assets/HomelabProtokoll-Bn-4pxRM.js +++ /dev/null @@ -1 +0,0 @@ -import{i as e,n as t,r as n,s as r,t as i}from"./dist-D4CVSex9.js";import{t as a}from"./chevron-right-lErM2U6o.js";import{t as o}from"./search-DDxMRsny.js";import{C as s,X as c,at as l,b as u,cn as d,in as f,pt as p,rn as m,tt as h}from"./index-CKWhFN2A.js";var g={name:`bell`,size:24,node:[[`path`,{d:`M10.268 21a2 2 0 0 0 3.464 0`,key:`vwvbt9`}],[`path`,{d:`M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326`,key:`11g9vi`}]]};g.node;var _=d(g),v={name:`cog`,size:24,node:[[`path`,{d:`M11 10.27 7 3.34`,key:`16pf9h`}],[`path`,{d:`m11 13.73-4 6.93`,key:`794ttg`}],[`path`,{d:`M12 22v-2`,key:`1osdcq`}],[`path`,{d:`M12 2v2`,key:`tus03m`}],[`path`,{d:`M14 12h8`,key:`4f43i9`}],[`path`,{d:`m17 20.66-1-1.73`,key:`eq3orb`}],[`path`,{d:`m17 3.34-1 1.73`,key:`2wel8s`}],[`path`,{d:`M2 12h2`,key:`1t8f8n`}],[`path`,{d:`m20.66 17-1.73-1`,key:`sg0v6f`}],[`path`,{d:`m20.66 7-1.73 1`,key:`1ow05n`}],[`path`,{d:`m3.34 17 1.73-1`,key:`nuk764`}],[`path`,{d:`m3.34 7 1.73 1`,key:`1ulond`}],[`circle`,{cx:`12`,cy:`12`,r:`2`,key:`1c9p78`}],[`circle`,{cx:`12`,cy:`12`,r:`8`,key:`46899m`}]]};v.node;var y=d(v),b={name:`triangle-alert`,size:24,node:[[`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`}]],aliases:[`alert-triangle`]};b.node;var x=d(b),S=t(),C=r(e(),1),w=n(),T=[{id:`alle`,name:`Alles`},{id:`lauf`,name:`Updates`},{id:`snapshot`,name:`Snapshots`},{id:`auftrag`,name:`Ausführer`},{id:`hinweis`,name:`Hinweise`},{id:`meldung`,name:`Meldungen`},{id:`pflege`,name:`Pflege`}],E={auftrag:y,lauf:f,sammellauf:f,hinweis:x,meldung:_,pflege:o,snapshot:m},D={ok:{punkt:`bg-gruen`,text:`text-gruen-text`,wort:`ok`},info:{punkt:`bg-cyan`,text:`text-cyan-text`,wort:`Info`},warn:{punkt:`bg-bernstein`,text:`text-bernstein`,wort:`Warnung`},fehler:{punkt:`bg-rot`,text:`text-rot-text`,wort:`Fehler`}},O=new Intl.DateTimeFormat(`de-DE`,{weekday:`long`,day:`2-digit`,month:`2-digit`,timeZone:`Europe/Berlin`}),k=new Intl.DateTimeFormat(`de-DE`,{hour:`2-digit`,minute:`2-digit`,second:`2-digit`,timeZone:`Europe/Berlin`}),A=new Intl.DateTimeFormat(`sv-SE`,{timeZone:`Europe/Berlin`});function j(e){let t=A.format(new Date),n=A.format(new Date(Date.now()-864e5)),r=A.format(new Date(e*1e3));return r===t?`Heute`:r===n?`Gestern`:O.format(new Date(e*1e3))}function M(e){let t=(0,S.c)(37),{e:n,geraet:r}=e,[o,s]=(0,C.useState)(!1),c=D[n.stufe]??D.info,l=E[n.art]??y,u;t[0]===n.zeit?u=t[1]:(u=k.format(new Date(n.zeit*1e3)),t[0]=n.zeit,t[1]=u);let d;t[2]===u?d=t[3]:(d=(0,w.jsx)(`span`,{className:`ziffern pt-0.5 text-xs text-text-3`,children:u}),t[2]=u,t[3]=d);let f;t[4]===c.punkt?f=t[5]:(f=i(`size-2.5 rounded-full`,c.punkt),t[4]=c.punkt,t[5]=f);let p;t[6]===f?p=t[7]:(p=(0,w.jsx)(`span`,{className:`flex flex-col items-center pt-1`,children:(0,w.jsx)(`span`,{"aria-hidden":!0,className:f})}),t[6]=f,t[7]=p);let m;t[8]===l?m=t[9]:(m=(0,w.jsx)(l,{className:`size-3.5 shrink-0 text-text-3`,"aria-hidden":!0}),t[8]=l,t[9]=m);let h=n.stufe===`fehler`||n.stufe===`warn`?c.text:`text-foreground`,g;t[10]===h?g=t[11]:(g=i(h),t[10]=h,t[11]=g);let _;t[12]!==n.titel||t[13]!==g?(_=(0,w.jsx)(`span`,{className:g,children:n.titel}),t[12]=n.titel,t[13]=g,t[14]=_):_=t[14];let v;t[15]===r?v=t[16]:(v=r&&(0,w.jsx)(`span`,{className:`rounded-md bg-lab-grund px-1.5 text-xs text-lab-text`,children:r}),t[15]=r,t[16]=v);let b;t[17]===c.wort?b=t[18]:(b=(0,w.jsxs)(`span`,{className:`sr-only`,children:[`(`,c.wort,`)`]}),t[17]=c.wort,t[18]=b);let x;t[19]!==b||t[20]!==m||t[21]!==_||t[22]!==v?(x=(0,w.jsxs)(`span`,{className:`flex flex-wrap items-center gap-x-2 text-[15px]`,children:[m,_,v,b]}),t[19]=b,t[20]=m,t[21]=_,t[22]=v,t[23]=x):x=t[23];let T;t[24]===n.text?T=t[25]:(T=n.text&&(0,w.jsx)(`span`,{className:`text-sm text-text-2`,children:n.text}),t[24]=n.text,t[25]=T);let O;t[26]!==n.details||t[27]!==o?(O=n.details&&(0,w.jsxs)(w.Fragment,{children:[(0,w.jsxs)(`button`,{type:`button`,onClick:()=>s(!o),"aria-expanded":o,className:`inline-flex h-8 items-center gap-1 self-start text-xs text-cyan hover:underline`,children:[(0,w.jsx)(a,{className:i(`size-3.5 transition-transform`,o&&`rotate-90`),"aria-hidden":!0}),o?`Ausgabe verbergen`:`Ausgabe zeigen`]}),o&&(0,w.jsx)(`pre`,{className:`ziffern m-0 max-h-72 overflow-auto rounded-md border border-linie bg-[#0b0d0f] p-2.5 text-xs whitespace-pre-wrap text-text-2`,children:n.details})]}),t[26]=n.details,t[27]=o,t[28]=O):O=t[28];let A;t[29]!==x||t[30]!==T||t[31]!==O?(A=(0,w.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-0.5`,children:[x,T,O]}),t[29]=x,t[30]=T,t[31]=O,t[32]=A):A=t[32];let j;return t[33]!==A||t[34]!==d||t[35]!==p?(j=(0,w.jsxs)(`li`,{className:`grid grid-cols-[64px_18px_minmax(0,1fr)] gap-x-3 border-t border-linie py-2.5 first:border-t-0`,children:[d,p,A]}),t[33]=A,t[34]=d,t[35]=p,t[36]=j):j=t[36],j}function N(){let e=(0,S.c)(16),t=l(),n=p(),r=t.data?.rolle===`homelab`||!!(n.data?.eingerichtet&&n.data.erreichbar),[a,o]=(0,C.useState)(`alle`),[d,f]=(0,C.useState)(!1),m=h(r,d),g=new Map((c(r).data?.ziele??[]).map(P));if(t.isPending||n.isPending){let t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,w.jsx)(s,{text:`Wird gelesen …`}),e[0]=t):t=e[0],t}if(!r){let t;return e[1]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,w.jsx)(s,{fehler:!0,text:`Der Homelab-Teil antwortet gerade nicht.`}),e[1]=t):t=e[1],t}let _=(m.data?.eintraege??[]).filter(e=>a===`alle`||e.art===a||a===`lauf`&&e.art===`sammellauf`),v=[];for(let e of _){let t=j(e.zeit);v.at(-1)?.titel!==t&&v.push({titel:t,eintraege:[]}),v.at(-1).eintraege.push(e)}let y=u,b;e[2]===Symbol.for(`react.memo_cache_sentinel`)?(b=(0,w.jsx)(`p`,{className:`-mt-2 text-[15px] text-text-2`,children:`Was der Homelab-Teil getan hat: Aufträge an den Ausführer auf dem Proxmox-Host, Update-Läufe, Snapshots, Hinweise, gesendete Meldungen und die nächtliche Paketsuche.`}),e[2]=b):b=e[2];let x;e[3]===a?x=e[4]:(x=T.map(e=>(0,w.jsx)(`button`,{type:`button`,onClick:()=>o(e.id),"aria-pressed":a===e.id,className:i(`h-9 rounded-full border px-3.5 text-sm`,a===e.id?`border-lab-rand bg-lab-grund text-lab-text`:`border-linie text-text-2 hover:border-linie-stark hover:text-foreground`),children:e.name},e.id)),e[3]=a,e[4]=x);let E;e[5]===Symbol.for(`react.memo_cache_sentinel`)?(E=e=>f(e.target.checked),e[5]=E):E=e[5];let D;e[6]===d?D=e[7]:(D=(0,w.jsxs)(`label`,{className:`ml-auto flex h-9 cursor-pointer items-center gap-2 text-sm text-text-2`,children:[(0,w.jsx)(`input`,{type:`checkbox`,checked:d,onChange:E,className:`size-4 accent-[var(--lab)]`}),`Berichte zeigen (alle 10 min)`]}),e[6]=d,e[7]=D);let O;e[8]!==x||e[9]!==D?(O=(0,w.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,role:`group`,"aria-label":`Filter`,children:[x,D]}),e[8]=x,e[9]=D,e[10]=O):O=e[10];let k=m.isPending?(0,w.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Wird gelesen …`}):m.isError?(0,w.jsxs)(`p`,{role:`alert`,className:`text-[15px] text-rot-text`,children:[`Das Protokoll lässt sich nicht lesen: `,m.error.message]}):v.length===0?(0,w.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Dazu gibt es noch keine Einträge.`}):(0,w.jsx)(`div`,{className:i(`flex flex-col gap-5`,m.isFetching&&`opacity-80`),children:v.map(e=>(0,w.jsxs)(`section`,{"aria-label":e.titel,className:`flex flex-col gap-1`,children:[(0,w.jsx)(`h3`,{className:`schild text-sm tracking-[0.18em] text-lab-text`,children:e.titel}),(0,w.jsx)(`ol`,{className:`m-0 flex list-none flex-col p-0`,children:e.eintraege.map((e,t)=>{let n=e.ziel?g.get(e.ziel)??e.ziel:null;return(0,w.jsx)(M,{e,geraet:n&&!e.titel.includes(n)?n:null},`${e.zeit}-${e.titel}-${t}`)})})]},e.titel))}),A;return e[11]!==y||e[12]!==b||e[13]!==O||e[14]!==k?(A=(0,w.jsxs)(y,{titel:`Protokoll`,children:[b,O,k]}),e[11]=y,e[12]=b,e[13]=O,e[14]=k,e[15]=A):A=e[15],A}function P(e){return[e.id,e.name]}export{N as HomelabProtokollSeite}; \ No newline at end of file diff --git a/frontend/dist/assets/HomelabProtokoll-DtbEOAHL.js b/frontend/dist/assets/HomelabProtokoll-DtbEOAHL.js new file mode 100644 index 0000000..1d96855 --- /dev/null +++ b/frontend/dist/assets/HomelabProtokoll-DtbEOAHL.js @@ -0,0 +1 @@ +import{a as e,c as t,i as n,n as r,r as i,t as a}from"./dist-aE7UmubC.js";import{t as o}from"./chevron-right-DF8ikrVh.js";import{t as s}from"./search-RXhRizww.js";import{O as c,cn as l,dt as u,ln as d,nt as f,st as p,un as m,yt as h}from"./index-BjDzWYEf.js";import{t as g}from"./Panel-uT1S5ZGr.js";var _={name:`bell`,size:24,node:[[`path`,{d:`M10.268 21a2 2 0 0 0 3.464 0`,key:`vwvbt9`}],[`path`,{d:`M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326`,key:`11g9vi`}]]};_.node;var v=r(_),y={name:`cog`,size:24,node:[[`path`,{d:`M11 10.27 7 3.34`,key:`16pf9h`}],[`path`,{d:`m11 13.73-4 6.93`,key:`794ttg`}],[`path`,{d:`M12 22v-2`,key:`1osdcq`}],[`path`,{d:`M12 2v2`,key:`tus03m`}],[`path`,{d:`M14 12h8`,key:`4f43i9`}],[`path`,{d:`m17 20.66-1-1.73`,key:`eq3orb`}],[`path`,{d:`m17 3.34-1 1.73`,key:`2wel8s`}],[`path`,{d:`M2 12h2`,key:`1t8f8n`}],[`path`,{d:`m20.66 17-1.73-1`,key:`sg0v6f`}],[`path`,{d:`m20.66 7-1.73 1`,key:`1ow05n`}],[`path`,{d:`m3.34 17 1.73-1`,key:`nuk764`}],[`path`,{d:`m3.34 7 1.73 1`,key:`1ulond`}],[`circle`,{cx:`12`,cy:`12`,r:`2`,key:`1c9p78`}],[`circle`,{cx:`12`,cy:`12`,r:`8`,key:`46899m`}]]};y.node;var b=r(y),x=i(),S=t(e(),1),C=n(),w=[{id:`alle`,name:`Alles`},{id:`lauf`,name:`Updates`},{id:`snapshot`,name:`Snapshots`},{id:`auftrag`,name:`Ausführer`},{id:`hinweis`,name:`Hinweise`},{id:`meldung`,name:`Meldungen`},{id:`pflege`,name:`Pflege`}],T={auftrag:b,lauf:m,sammellauf:m,hinweis:l,meldung:v,pflege:s,snapshot:d},E={ok:{punkt:`bg-gruen`,text:`text-gruen-text`,wort:`ok`},info:{punkt:`bg-cyan`,text:`text-cyan-text`,wort:`Info`},warn:{punkt:`bg-bernstein`,text:`text-bernstein`,wort:`Warnung`},fehler:{punkt:`bg-rot`,text:`text-rot-text`,wort:`Fehler`}},D=new Intl.DateTimeFormat(`de-DE`,{weekday:`long`,day:`2-digit`,month:`2-digit`,timeZone:`Europe/Berlin`}),O=new Intl.DateTimeFormat(`de-DE`,{hour:`2-digit`,minute:`2-digit`,second:`2-digit`,timeZone:`Europe/Berlin`}),k=new Intl.DateTimeFormat(`sv-SE`,{timeZone:`Europe/Berlin`});function A(e){let t=k.format(new Date),n=k.format(new Date(Date.now()-864e5)),r=k.format(new Date(e*1e3));return r===t?`Heute`:r===n?`Gestern`:D.format(new Date(e*1e3))}function j(e){let t=(0,x.c)(37),{e:n,geraet:r}=e,[i,s]=(0,S.useState)(!1),c=E[n.stufe]??E.info,l=T[n.art]??b,u;t[0]===n.zeit?u=t[1]:(u=O.format(new Date(n.zeit*1e3)),t[0]=n.zeit,t[1]=u);let d;t[2]===u?d=t[3]:(d=(0,C.jsx)(`span`,{className:`ziffern pt-0.5 text-xs text-text-3`,children:u}),t[2]=u,t[3]=d);let f;t[4]===c.punkt?f=t[5]:(f=a(`size-2.5 rounded-full`,c.punkt),t[4]=c.punkt,t[5]=f);let p;t[6]===f?p=t[7]:(p=(0,C.jsx)(`span`,{className:`flex flex-col items-center pt-1`,children:(0,C.jsx)(`span`,{"aria-hidden":!0,className:f})}),t[6]=f,t[7]=p);let m;t[8]===l?m=t[9]:(m=(0,C.jsx)(l,{className:`size-3.5 shrink-0 text-text-3`,"aria-hidden":!0}),t[8]=l,t[9]=m);let h=n.stufe===`fehler`||n.stufe===`warn`?c.text:`text-foreground`,g;t[10]===h?g=t[11]:(g=a(h),t[10]=h,t[11]=g);let _;t[12]!==n.titel||t[13]!==g?(_=(0,C.jsx)(`span`,{className:g,children:n.titel}),t[12]=n.titel,t[13]=g,t[14]=_):_=t[14];let v;t[15]===r?v=t[16]:(v=r&&(0,C.jsx)(`span`,{className:`rounded-md bg-lab-grund px-1.5 text-xs text-lab-text`,children:r}),t[15]=r,t[16]=v);let y;t[17]===c.wort?y=t[18]:(y=(0,C.jsxs)(`span`,{className:`sr-only`,children:[`(`,c.wort,`)`]}),t[17]=c.wort,t[18]=y);let w;t[19]!==y||t[20]!==m||t[21]!==_||t[22]!==v?(w=(0,C.jsxs)(`span`,{className:`flex flex-wrap items-center gap-x-2 text-[15px]`,children:[m,_,v,y]}),t[19]=y,t[20]=m,t[21]=_,t[22]=v,t[23]=w):w=t[23];let D;t[24]===n.text?D=t[25]:(D=n.text&&(0,C.jsx)(`span`,{className:`text-sm text-text-2`,children:n.text}),t[24]=n.text,t[25]=D);let k;t[26]!==n.details||t[27]!==i?(k=n.details&&(0,C.jsxs)(C.Fragment,{children:[(0,C.jsxs)(`button`,{type:`button`,onClick:()=>s(!i),"aria-expanded":i,className:`inline-flex h-8 items-center gap-1 self-start text-xs text-cyan hover:underline`,children:[(0,C.jsx)(o,{className:a(`size-3.5 transition-transform`,i&&`rotate-90`),"aria-hidden":!0}),i?`Ausgabe verbergen`:`Ausgabe zeigen`]}),i&&(0,C.jsx)(`pre`,{className:`ziffern m-0 max-h-72 overflow-auto rounded-xl bg-black/30 ring-1 ring-white/[0.07] ring-inset p-2.5 text-xs whitespace-pre-wrap text-text-2`,children:n.details})]}),t[26]=n.details,t[27]=i,t[28]=k):k=t[28];let A;t[29]!==w||t[30]!==D||t[31]!==k?(A=(0,C.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-0.5`,children:[w,D,k]}),t[29]=w,t[30]=D,t[31]=k,t[32]=A):A=t[32];let j;return t[33]!==A||t[34]!==d||t[35]!==p?(j=(0,C.jsxs)(`li`,{className:`grid grid-cols-[64px_18px_minmax(0,1fr)] gap-x-3 border-t border-white/[0.06] py-2.5 first:border-t-0`,children:[d,p,A]}),t[33]=A,t[34]=d,t[35]=p,t[36]=j):j=t[36],j}function M(){let e=(0,x.c)(16),t=u(),n=h(),r=t.data?.rolle===`homelab`||!!(n.data?.eingerichtet&&n.data.erreichbar),[i,o]=(0,S.useState)(`alle`),[s,l]=(0,S.useState)(!1),d=p(r,s),m=new Map((f(r).data?.ziele??[]).map(N));if(t.isPending||n.isPending){let t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,C.jsx)(c,{text:`Wird gelesen …`}),e[0]=t):t=e[0],t}if(!r){let t;return e[1]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,C.jsx)(c,{fehler:!0,text:`Der Homelab-Teil antwortet gerade nicht.`}),e[1]=t):t=e[1],t}let _=(d.data?.eintraege??[]).filter(e=>i===`alle`||e.art===i||i===`lauf`&&e.art===`sammellauf`),v=[];for(let e of _){let t=A(e.zeit);v.at(-1)?.titel!==t&&v.push({titel:t,eintraege:[]}),v.at(-1).eintraege.push(e)}let y=g,b;e[2]===Symbol.for(`react.memo_cache_sentinel`)?(b=(0,C.jsx)(`p`,{className:`-mt-2 text-[15px] text-text-2`,children:`Was der Homelab-Teil getan hat: Aufträge an den Ausführer auf dem Proxmox-Host, Update-Läufe, Snapshots, Hinweise, gesendete Meldungen und die nächtliche Paketsuche.`}),e[2]=b):b=e[2];let T;e[3]===i?T=e[4]:(T=w.map(e=>(0,C.jsx)(`button`,{type:`button`,onClick:()=>o(e.id),"aria-pressed":i===e.id,className:a(`h-9 rounded-full border px-3.5 text-sm`,i===e.id?`border-lab-rand bg-lab-grund text-lab-text`:`border-white/10 text-text-2 hover:border-white/20 hover:text-foreground`),children:e.name},e.id)),e[3]=i,e[4]=T);let E;e[5]===Symbol.for(`react.memo_cache_sentinel`)?(E=e=>l(e.target.checked),e[5]=E):E=e[5];let D;e[6]===s?D=e[7]:(D=(0,C.jsxs)(`label`,{className:`ml-auto flex h-9 cursor-pointer items-center gap-2 text-sm text-text-2`,children:[(0,C.jsx)(`input`,{type:`checkbox`,checked:s,onChange:E,className:`size-4 accent-[var(--lab)]`}),`Berichte zeigen (alle 10 min)`]}),e[6]=s,e[7]=D);let O;e[8]!==T||e[9]!==D?(O=(0,C.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,role:`group`,"aria-label":`Filter`,children:[T,D]}),e[8]=T,e[9]=D,e[10]=O):O=e[10];let k=d.isPending?(0,C.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Wird gelesen …`}):d.isError?(0,C.jsxs)(`p`,{role:`alert`,className:`text-[15px] text-rot-text`,children:[`Das Protokoll lässt sich nicht lesen: `,d.error.message]}):v.length===0?(0,C.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Dazu gibt es noch keine Einträge.`}):(0,C.jsx)(`div`,{className:a(`flex flex-col gap-5`,d.isFetching&&`opacity-80`),children:v.map(e=>(0,C.jsxs)(`section`,{"aria-label":e.titel,className:`flex flex-col gap-1`,children:[(0,C.jsx)(`h3`,{className:`etikett text-[11.5px] tracking-[0.16em] text-lab-text`,children:e.titel}),(0,C.jsx)(`ol`,{className:`m-0 flex list-none flex-col p-0`,children:e.eintraege.map((e,t)=>{let n=e.ziel?m.get(e.ziel)??e.ziel:null;return(0,C.jsx)(j,{e,geraet:n&&!e.titel.includes(n)?n:null},`${e.zeit}-${e.titel}-${t}`)})})]},e.titel))}),M;return e[11]!==y||e[12]!==b||e[13]!==O||e[14]!==k?(M=(0,C.jsxs)(y,{titel:`Protokoll`,children:[b,O,k]}),e[11]=y,e[12]=b,e[13]=O,e[14]=k,e[15]=M):M=e[15],M}function N(e){return[e.id,e.name]}export{M as HomelabProtokollSeite}; \ No newline at end of file diff --git a/frontend/dist/assets/HomelabSnapshots-BJnRrB1s.js b/frontend/dist/assets/HomelabSnapshots-BJnRrB1s.js deleted file mode 100644 index 2db7b0b..0000000 --- a/frontend/dist/assets/HomelabSnapshots-BJnRrB1s.js +++ /dev/null @@ -1 +0,0 @@ -import{i as e,n as t,r as n,s as r,t as i}from"./dist-D4CVSex9.js";import{n as a,t as o}from"./undo-2-CJEVZ3Al.js";import{C as s,S as c,a as l,at as u,b as d,cn as f,n as p,nt as m,o as h,on as g,pt as _,r as v,s as y,t as b,wt as x}from"./index-CKWhFN2A.js";import{t as S}from"./button-D8rvET0Z.js";import{t as C}from"./Bestaetigen-CMlebyiw.js";var w={name:`plus`,size:24,node:[[`path`,{d:`M5 12h14`,key:`1ays0h`}],[`path`,{d:`M12 5v14`,key:`s699le`}]]};w.node;var T=f(w),E={name:`trash`,size:24,node:[[`path`,{d:`M10 11v6`,key:`nco0om`}],[`path`,{d:`M14 11v6`,key:`outv1u`}],[`path`,{d:`M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6`,key:`miytrc`}],[`path`,{d:`M3 6h18`,key:`d0wm0j`}],[`path`,{d:`M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2`,key:`e791ji`}]],aliases:[`trash-2`]};E.node;var D=f(E),O=t(),k=r(e(),1),A=n(),j=`grid grid-cols-[minmax(0,1fr)_auto] items-start gap-x-3 gap-y-1.5 border-t border-linie py-3 [grid-template-areas:'name_herkunft'_'zeit_zeit'_'text_text'_'knoepfe_knoepfe'] md:grid-rows-[auto_auto_1fr] md:gap-x-4 md:[grid-template-areas:'name_herkunft'_'zeit_knoepfe'_'text_knoepfe'] xl:grid-cols-[minmax(10.5rem,1.1fr)_7.5rem_minmax(0,1fr)_minmax(0,1.4fr)_11rem] xl:grid-rows-none xl:items-center xl:[grid-template-areas:'name_herkunft_zeit_text_knoepfe']`,M=`ziffern min-w-0 pt-1 text-sm break-words text-foreground [grid-area:name] xl:pt-0`,N=`justify-self-end [grid-area:herkunft] xl:justify-self-start`;function P(e){let t=(0,O.c)(11),{zeit:n,jetzt:r}=e,i;t[0]!==r||t[1]!==n?(i=h(n,r),t[0]=r,t[1]=n,t[2]=i):i=t[2];let a;t[3]===i?a=t[4]:(a=(0,A.jsx)(`span`,{className:`ziffern text-text-2`,children:i}),t[3]=i,t[4]=a);let o;t[5]!==r||t[6]!==n?(o=n!==null&&(0,A.jsx)(`span`,{className:`text-text-3`,children:p(n,r)}),t[5]=r,t[6]=n,t[7]=o):o=t[7];let s;return t[8]!==a||t[9]!==o?(s=(0,A.jsxs)(`span`,{role:`cell`,className:`flex flex-wrap items-baseline gap-x-2 text-sm [grid-area:zeit]`,children:[a,o]}),t[8]=a,t[9]=o,t[10]=s):s=t[10],s}function F(e){let t=(0,O.c)(2),{children:n}=e,r;return t[0]===n?r=t[1]:(r=(0,A.jsx)(`span`,{role:`cell`,className:`min-w-0 text-sm break-words text-text-2 [grid-area:text]`,children:n}),t[0]=n,t[1]=r),r}function I(e){let t=(0,O.c)(5),{children:n,ohne:r}=e,i;t[0]!==n||t[1]!==r?(i=r?(0,A.jsx)(`span`,{className:`text-xs text-text-3`,children:r}):n,t[0]=n,t[1]=r,t[2]=i):i=t[2];let a;return t[3]===i?a=t[4]:(a=(0,A.jsx)(`span`,{role:`cell`,className:`flex flex-wrap gap-2 [grid-area:knoepfe] md:flex-col md:items-stretch md:justify-self-end xl:justify-self-stretch`,children:i}),t[3]=i,t[4]=a),a}function L(e){let t=(0,O.c)(35),{g:n,s:r,jetzt:i,gesperrt:a,onFrage:s}=e,{loeschen:l,zuruecksetzen:u}=r,d=l||u?null:r.eigen?`Nicht freigegeben`:`Nur in Proxmox`,f;t[0]===r.name?f=t[1]:(f=(0,A.jsx)(`span`,{role:`rowheader`,className:M,children:r.name}),t[0]=r.name,t[1]=f);let p=b[r.herkunft],m=b[r.herkunft],h;t[2]===m.chip?h=t[3]:(h=(0,A.jsx)(c,{children:m.chip}),t[2]=m.chip,t[3]=h);let g;t[4]!==p.text||t[5]!==h?(g=(0,A.jsx)(`span`,{role:`cell`,className:N,title:p.text,children:h}),t[4]=p.text,t[5]=h,t[6]=g):g=t[6];let _;t[7]!==i||t[8]!==r.zeit?(_=(0,A.jsx)(P,{zeit:r.zeit,jetzt:i}),t[7]=i,t[8]=r.zeit,t[9]=_):_=t[9];let v;t[10]!==r.beschreibung||t[11]!==r.herkunft?(v=r.beschreibung??(0,A.jsx)(`span`,{className:`text-text-3`,children:b[r.herkunft].text}),t[10]=r.beschreibung,t[11]=r.herkunft,t[12]=v):v=t[12];let y;t[13]===v?y=t[14]:(y=(0,A.jsx)(F,{children:v}),t[13]=v,t[14]=y);let x;t[15]!==n||t[16]!==a||t[17]!==s||t[18]!==u?(x=u&&(0,A.jsxs)(S,{variant:`outline`,size:`sm`,disabled:a,onClick:()=>s({name:n.name,aktion:u,gefahr:!0}),children:[(0,A.jsx)(o,{"aria-hidden":!0}),` Zurücksetzen`]}),t[15]=n,t[16]=a,t[17]=s,t[18]=u,t[19]=x):x=t[19];let C;t[20]!==n||t[21]!==a||t[22]!==l||t[23]!==s?(C=l&&(0,A.jsxs)(S,{variant:`outline`,size:`sm`,disabled:a,onClick:()=>s({name:n.name,aktion:l,gefahr:!0}),children:[(0,A.jsx)(D,{"aria-hidden":!0}),` Löschen`]}),t[20]=n,t[21]=a,t[22]=l,t[23]=s,t[24]=C):C=t[24];let w;t[25]!==d||t[26]!==C||t[27]!==x?(w=(0,A.jsxs)(I,{ohne:d,children:[x,C]}),t[25]=d,t[26]=C,t[27]=x,t[28]=w):w=t[28];let T;return t[29]!==f||t[30]!==w||t[31]!==g||t[32]!==_||t[33]!==y?(T=(0,A.jsxs)(`div`,{role:`row`,className:j,children:[f,g,_,y,w]}),t[29]=f,t[30]=w,t[31]=g,t[32]=_,t[33]=y,t[34]=T):T=t[34],T}function R(e){let t=(0,O.c)(23),{g:n,e:r,jetzt:i,gesperrt:a,onFrage:o}=e,s;t[0]===r.groesse?s=t[1]:(s=v(r.groesse),t[0]=r.groesse,t[1]=s);let l=s,u=r.loeschen,d;t[2]===r.datei?d=t[3]:(d=(0,A.jsx)(`span`,{role:`rowheader`,className:M,children:r.datei}),t[2]=r.datei,t[3]=d);let f;t[4]===Symbol.for(`react.memo_cache_sentinel`)?(f=(0,A.jsx)(`span`,{role:`cell`,className:N,children:(0,A.jsx)(c,{children:`Sicherung`})}),t[4]=f):f=t[4];let p;t[5]!==r.zeit||t[6]!==i?(p=(0,A.jsx)(P,{zeit:r.zeit,jetzt:i}),t[5]=r.zeit,t[6]=i,t[7]=p):p=t[7];let m=l?`${l} auf „${r.speicher}“`:`Auf „${r.speicher}“`,h;t[8]===m?h=t[9]:(h=(0,A.jsxs)(F,{children:[m,`, vor einem Update angelegt`]}),t[8]=m,t[9]=h);let g=u?null:`Nicht freigegeben`,_;t[10]!==n||t[11]!==a||t[12]!==u||t[13]!==o?(_=u&&(0,A.jsxs)(S,{variant:`outline`,size:`sm`,disabled:a,onClick:()=>o({name:n.name,aktion:u,gefahr:!0}),children:[(0,A.jsx)(D,{"aria-hidden":!0}),` Löschen`]}),t[10]=n,t[11]=a,t[12]=u,t[13]=o,t[14]=_):_=t[14];let y;t[15]!==g||t[16]!==_?(y=(0,A.jsx)(I,{ohne:g,children:_}),t[15]=g,t[16]=_,t[17]=y):y=t[17];let b;return t[18]!==d||t[19]!==p||t[20]!==h||t[21]!==y?(b=(0,A.jsxs)(`div`,{role:`row`,className:j,children:[d,f,p,h,y]}),t[18]=d,t[19]=p,t[20]=h,t[21]=y,t[22]=b):b=t[22],b}function z(e){let t=(0,O.c)(34),{g:n,jetzt:r,gesperrt:o,onFrage:s}=e,c=n.snapshots.length===0&&n.sicherungen.length===0,l=n.anlegen,u;t[0]===n.name?u=t[1]:(u=(0,A.jsx)(`h3`,{className:`text-[15px] font-semibold break-words`,children:n.name}),t[0]=n.name,t[1]=u);let d;t[2]===n.wo?d=t[3]:(d=(0,A.jsx)(`span`,{className:`text-sm text-text-3`,children:n.wo}),t[2]=n.wo,t[3]=d);let f;t[4]!==u||t[5]!==d?(f=(0,A.jsxs)(`div`,{className:`flex min-w-0 flex-col`,children:[u,d]}),t[4]=u,t[5]=d,t[6]=f):f=t[6];let p;t[7]!==l||t[8]!==n.laeuft||t[9]!==n.name||t[10]!==o||t[11]!==s?(p=n.laeuft?(0,A.jsxs)(`p`,{role:`status`,className:`text-sm text-cyan`,children:[`Läuft: `,n.laeuft,` …`]}):l&&(0,A.jsxs)(S,{variant:`outline`,size:`sm`,disabled:o,onClick:()=>s({name:n.name,aktion:l,gefahr:!1}),children:[(0,A.jsx)(T,{"aria-hidden":!0}),` Snapshot anlegen`]}),t[7]=l,t[8]=n.laeuft,t[9]=n.name,t[10]=o,t[11]=s,t[12]=p):p=t[12];let m;t[13]!==f||t[14]!==p?(m=(0,A.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-x-4 gap-y-2`,children:[f,p]}),t[13]=f,t[14]=p,t[15]=m):m=t[15];let _;t[16]===n.grund?_=t[17]:(_=n.grund&&(0,A.jsx)(`p`,{className:`text-sm text-text-3`,children:n.grund}),t[16]=n.grund,t[17]=_);let v;t[18]!==n.name||t[19]!==n.zuletzt||t[20]!==r?(v=n.zuletzt&&(0,A.jsxs)(`p`,{className:i(`flex items-start gap-1.5 text-sm`,n.zuletzt.ok?`text-gruen-text`:`text-rot-text`),children:[n.zuletzt.ok?(0,A.jsx)(g,{className:`mt-0.5 size-4 shrink-0`,"aria-hidden":!0}):(0,A.jsx)(a,{className:`mt-0.5 size-4 shrink-0`,"aria-hidden":!0}),(0,A.jsxs)(`span`,{className:`flex min-w-0 flex-wrap items-baseline gap-x-2`,children:[(0,A.jsx)(`span`,{className:`break-words`,children:y(n.zuletzt.text,n.name)}),(0,A.jsx)(`span`,{className:`ziffern text-xs text-text-3`,children:h(n.zuletzt.ende,r)})]})]}),t[18]=n.name,t[19]=n.zuletzt,t[20]=r,t[21]=v):v=t[21];let b;t[22]!==n||t[23]!==o||t[24]!==r||t[25]!==c||t[26]!==s?(b=c?(0,A.jsx)(`p`,{className:`text-sm text-text-3`,children:`Keine Snapshots.`}):(0,A.jsxs)(`div`,{role:`table`,"aria-label":`Snapshots von ${n.name}`,className:`flex flex-col`,children:[(0,A.jsxs)(`div`,{role:`row`,className:`sr-only`,children:[(0,A.jsx)(`span`,{role:`columnheader`,children:`Snapshot`}),(0,A.jsx)(`span`,{role:`columnheader`,children:`Herkunft`}),(0,A.jsx)(`span`,{role:`columnheader`,children:`Zeitpunkt`}),(0,A.jsx)(`span`,{role:`columnheader`,children:`Beschreibung`}),(0,A.jsx)(`span`,{role:`columnheader`,children:`Aktion`})]}),n.snapshots.map(e=>(0,A.jsx)(L,{g:n,s:e,jetzt:r,gesperrt:o,onFrage:s},e.name)),n.sicherungen.map(e=>(0,A.jsx)(R,{g:n,e,jetzt:r,gesperrt:o,onFrage:s},e.datei))]}),t[22]=n,t[23]=o,t[24]=r,t[25]=c,t[26]=s,t[27]=b):b=t[27];let x;return t[28]!==n.name||t[29]!==m||t[30]!==_||t[31]!==v||t[32]!==b?(x=(0,A.jsxs)(`section`,{"aria-label":n.name,className:`flex min-w-0 flex-col gap-2 border-t border-linie-stark pt-4 first:border-t-0 first:pt-0`,children:[m,_,v,b]}),t[28]=n.name,t[29]=m,t[30]=_,t[31]=v,t[32]=b,t[33]=x):x=t[33],x}function B(e){let t=(0,O.c)(24),{daten:n,gesperrt:r,onAktion:i}=e,[a,o]=(0,k.useState)(null),s;if(t[0]!==n.geraete||t[1]!==n.jetzt||t[2]!==r){let e;t[4]!==n.jetzt||t[5]!==r?(e=e=>(0,A.jsx)(z,{g:e,jetzt:n.jetzt,gesperrt:r||!!e.laeuft,onFrage:o},e.id),t[4]=n.jetzt,t[5]=r,t[6]=e):e=t[6],s=n.geraete.map(e),t[0]=n.geraete,t[1]=n.jetzt,t[2]=r,t[3]=s}else s=t[3];let c;t[7]===s?c=t[8]:(c=(0,A.jsx)(`div`,{className:`flex flex-col gap-5`,children:s}),t[7]=s,t[8]=c);let l=!!a,u=a?`${a.name}: ${a.aktion.label}`:``,d=a?.aktion.frage??``,f=a?.aktion.label??``,p=a?.gefahr,m;t[9]!==a||t[10]!==i?(m=()=>{a&&i(a.aktion),o(null)},t[9]=a,t[10]=i,t[11]=m):m=t[11];let h;t[12]===Symbol.for(`react.memo_cache_sentinel`)?(h=()=>o(null),t[12]=h):h=t[12];let g;t[13]!==r||t[14]!==l||t[15]!==u||t[16]!==d||t[17]!==f||t[18]!==p||t[19]!==m?(g=(0,A.jsx)(C,{offen:l,titel:u,text:d,knopf:f,gefahr:p,gesperrt:r,onJa:m,onNein:h}),t[13]=r,t[14]=l,t[15]=u,t[16]=d,t[17]=f,t[18]=p,t[19]=m,t[20]=g):g=t[20];let _;return t[21]!==g||t[22]!==c?(_=(0,A.jsxs)(A.Fragment,{children:[c,g]}),t[21]=g,t[22]=c,t[23]=_):_=t[23],_}function V(){let e=(0,O.c)(23),t=u(),n=_(),r=t.data?.rolle===`homelab`||!!(n.data?.eingerichtet&&n.data.erreichbar),i=m(r),a=x();if(t.isPending||n.isPending){let t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,A.jsx)(s,{text:`Wird gelesen …`}),e[0]=t):t=e[0],t}if(!r){let t;return e[1]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,A.jsx)(s,{fehler:!0,text:`Der Homelab-Teil antwortet gerade nicht.`}),e[1]=t):t=e[1],t}if(i.isPending){let t;return e[2]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,A.jsx)(s,{text:`Die Snapshots werden gelesen …`}),e[2]=t):t=e[2],t}if(!i.data){let t=`Die Snapshots lassen sich nicht lesen: ${i.error?.message??`keine Daten`}`,n;return e[3]===t?n=e[4]:(n=(0,A.jsx)(s,{fehler:!0,text:t}),e[3]=t,e[4]=n),n}let o=i.data,f=o.sperre,p;e[5]!==o.bericht||e[6]!==o.summe?(p=o.bericht?(0,A.jsx)(c,{children:l(o.summe)}):void 0,e[5]=o.bericht,e[6]=o.summe,e[7]=p):p=e[7];let g;e[8]===Symbol.for(`react.memo_cache_sentinel`)?(g=(0,A.jsx)(`p`,{className:`-mt-2 text-[15px] text-text-2`,children:`Ein Snapshot hält den Stand eines Geräts fest. Vor jedem Update legt der Orchestrator einen an (beim Proxmox Backup Server eine Sicherung) und räumt nach einem grünen Update die älteren weg. Hier legst du selbst welche an — die bleiben, bis du sie löschst —, setzt ein Gerät zurück oder löschst, was weg kann. Von Hand in Proxmox angelegte stehen nur zur Ansicht da.`}),e[8]=g):g=e[8];let v;e[9]===f?v=e[10]:(v=f&&(0,A.jsx)(`p`,{role:`alert`,className:`rounded-xl border border-bernstein/60 bg-bernstein-grund px-4 py-3 text-[15px] text-bernstein`,children:f}),e[9]=f,e[10]=v);let y;e[11]!==o.bericht||e[12]!==o.jetzt?(y=o.bericht?.veraltet&&(0,A.jsxs)(`p`,{className:`text-[15px] text-bernstein`,children:[`Der letzte Bericht ist von `,h(o.bericht.empfangen,o.jetzt),`; die Liste kann veraltet sein.`]}),e[11]=o.bericht,e[12]=o.jetzt,e[13]=y):y=e[13];let b;e[14]!==a||e[15]!==o||e[16]!==f?(b=o.bericht?(0,A.jsxs)(A.Fragment,{children:[!o.details&&(0,A.jsx)(`p`,{className:`text-sm text-text-3`,children:`Beschreibungen und die Größe der Sicherungen erscheinen, sobald der neue Ausführer auf dem Proxmox-Host läuft; bis dahin kommt der Zeitpunkt aus dem Namen des Snapshots.`}),(0,A.jsx)(B,{daten:o,gesperrt:a.isPending||!!f,onAktion:e=>a.mutate(e)}),(0,A.jsx)(`p`,{className:`text-sm text-text-3`,children:`Wie viel ein Snapshot im Speicherpool belegt, sagt Proxmox nicht: Er teilt sich die Daten mit dem Gerät und wächst mit jeder Änderung seit seinem Zeitpunkt. Wie voll der Pool ist, steht im Cockpit unter „Speicher und Sicherungen“.`})]}):(0,A.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Der Ausführer hat noch keinen Bericht geschickt.`}),e[14]=a,e[15]=o,e[16]=f,e[17]=b):b=e[17];let S;return e[18]!==p||e[19]!==v||e[20]!==y||e[21]!==b?(S=(0,A.jsxs)(d,{titel:`Snapshots`,rechts:p,children:[g,v,y,b]}),e[18]=p,e[19]=v,e[20]=y,e[21]=b,e[22]=S):S=e[22],S}export{V as HomelabSnapshotsSeite}; \ No newline at end of file diff --git a/frontend/dist/assets/HomelabSnapshots-CocdJ9DQ.js b/frontend/dist/assets/HomelabSnapshots-CocdJ9DQ.js new file mode 100644 index 0000000..3734500 --- /dev/null +++ b/frontend/dist/assets/HomelabSnapshots-CocdJ9DQ.js @@ -0,0 +1 @@ +import{a as e,c as t,i as n,n as r,r as i,t as a}from"./dist-aE7UmubC.js";import{n as o,t as s}from"./undo-2-B8COJmAr.js";import{At as c,C as l,D as u,E as d,O as f,a as p,c as m,ct as h,dt as g,fn as _,i as v,l as y,o as b,u as x,yt as S}from"./index-BjDzWYEf.js";import{t as C}from"./button-DwYvdWVr.js";import{t as w}from"./Bestaetigen-DNJdB_zl.js";import{t as T}from"./Panel-uT1S5ZGr.js";var E={name:`flask-conical`,size:24,node:[[`path`,{d:`M14 2v6a2 2 0 0 0 .245.96l5.51 10.08A2 2 0 0 1 18 22H6a2 2 0 0 1-1.755-2.96l5.51-10.08A2 2 0 0 0 10 8V2`,key:`18mbvz`}],[`path`,{d:`M6.453 15h11.094`,key:`3shlmq`}],[`path`,{d:`M8.5 2h7`,key:`csnxdl`}]]};E.node;var D=r(E),O={name:`plus`,size:24,node:[[`path`,{d:`M5 12h14`,key:`1ays0h`}],[`path`,{d:`M12 5v14`,key:`s699le`}]]};O.node;var k=r(O),A={name:`trash`,size:24,node:[[`path`,{d:`M10 11v6`,key:`nco0om`}],[`path`,{d:`M14 11v6`,key:`outv1u`}],[`path`,{d:`M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6`,key:`miytrc`}],[`path`,{d:`M3 6h18`,key:`d0wm0j`}],[`path`,{d:`M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2`,key:`e791ji`}]],aliases:[`trash-2`]};A.node;var j=r(A),M=i(),N=t(e(),1),P=n(),F=`grid grid-cols-[minmax(0,1fr)_auto] items-start gap-x-3 gap-y-1.5 border-t border-white/[0.06] py-3 [grid-template-areas:'name_herkunft'_'zeit_zeit'_'text_text'_'knoepfe_knoepfe'] md:grid-rows-[auto_auto_1fr] md:gap-x-4 md:[grid-template-areas:'name_herkunft'_'zeit_knoepfe'_'text_knoepfe'] xl:grid-cols-[minmax(10.5rem,1.1fr)_7.5rem_minmax(0,1fr)_minmax(0,1.4fr)_11rem] xl:grid-rows-none xl:items-center xl:[grid-template-areas:'name_herkunft_zeit_text_knoepfe']`,I=`ziffern min-w-0 pt-1 text-sm break-words text-foreground [grid-area:name] xl:pt-0`,L=`justify-self-end [grid-area:herkunft] xl:justify-self-start`;function R(e){let t=(0,M.c)(11),{zeit:n,jetzt:r}=e,i;t[0]!==r||t[1]!==n?(i=y(n,r),t[0]=r,t[1]=n,t[2]=i):i=t[2];let a;t[3]===i?a=t[4]:(a=(0,P.jsx)(`span`,{className:`ziffern text-text-2`,children:i}),t[3]=i,t[4]=a);let o;t[5]!==r||t[6]!==n?(o=n!==null&&(0,P.jsx)(`span`,{className:`text-text-3`,children:p(n,r)}),t[5]=r,t[6]=n,t[7]=o):o=t[7];let s;return t[8]!==a||t[9]!==o?(s=(0,P.jsxs)(`span`,{role:`cell`,className:`flex flex-wrap items-baseline gap-x-2 text-sm [grid-area:zeit]`,children:[a,o]}),t[8]=a,t[9]=o,t[10]=s):s=t[10],s}function z(e){let t=(0,M.c)(2),{children:n}=e,r;return t[0]===n?r=t[1]:(r=(0,P.jsx)(`span`,{role:`cell`,className:`min-w-0 text-sm break-words text-text-2 [grid-area:text]`,children:n}),t[0]=n,t[1]=r),r}function B(e){let t=(0,M.c)(5),{children:n,ohne:r}=e,i;t[0]!==n||t[1]!==r?(i=r?(0,P.jsx)(`span`,{className:`text-xs text-text-3`,children:r}):n,t[0]=n,t[1]=r,t[2]=i):i=t[2];let a;return t[3]===i?a=t[4]:(a=(0,P.jsx)(`span`,{role:`cell`,className:`flex flex-wrap gap-2 [grid-area:knoepfe] md:flex-col md:items-stretch md:justify-self-end xl:justify-self-stretch`,children:i}),t[3]=i,t[4]=a),a}function V(e){let t=(0,M.c)(35),{g:n,s:r,jetzt:i,gesperrt:a,onFrage:o}=e,{loeschen:c,zuruecksetzen:l}=r,d=c||l?null:r.eigen?`Nicht freigegeben`:`Nur in Proxmox`,f;t[0]===r.name?f=t[1]:(f=(0,P.jsx)(`span`,{role:`rowheader`,className:I,children:r.name}),t[0]=r.name,t[1]=f);let p=v[r.herkunft],m=v[r.herkunft],h;t[2]===m.chip?h=t[3]:(h=(0,P.jsx)(u,{children:m.chip}),t[2]=m.chip,t[3]=h);let g;t[4]!==p.text||t[5]!==h?(g=(0,P.jsx)(`span`,{role:`cell`,className:L,title:p.text,children:h}),t[4]=p.text,t[5]=h,t[6]=g):g=t[6];let _;t[7]!==i||t[8]!==r.zeit?(_=(0,P.jsx)(R,{zeit:r.zeit,jetzt:i}),t[7]=i,t[8]=r.zeit,t[9]=_):_=t[9];let y;t[10]!==r.beschreibung||t[11]!==r.herkunft?(y=r.beschreibung??(0,P.jsx)(`span`,{className:`text-text-3`,children:v[r.herkunft].text}),t[10]=r.beschreibung,t[11]=r.herkunft,t[12]=y):y=t[12];let b;t[13]===y?b=t[14]:(b=(0,P.jsx)(z,{children:y}),t[13]=y,t[14]=b);let x;t[15]!==n||t[16]!==a||t[17]!==o||t[18]!==l?(x=l&&(0,P.jsxs)(C,{variant:`outline`,size:`sm`,disabled:a,onClick:()=>o({name:n.name,aktion:l,gefahr:!0}),children:[(0,P.jsx)(s,{"aria-hidden":!0}),` Zurücksetzen`]}),t[15]=n,t[16]=a,t[17]=o,t[18]=l,t[19]=x):x=t[19];let S;t[20]!==n||t[21]!==a||t[22]!==c||t[23]!==o?(S=c&&(0,P.jsxs)(C,{variant:`outline`,size:`sm`,disabled:a,onClick:()=>o({name:n.name,aktion:c,gefahr:!0}),children:[(0,P.jsx)(j,{"aria-hidden":!0}),` Löschen`]}),t[20]=n,t[21]=a,t[22]=c,t[23]=o,t[24]=S):S=t[24];let w;t[25]!==d||t[26]!==S||t[27]!==x?(w=(0,P.jsxs)(B,{ohne:d,children:[x,S]}),t[25]=d,t[26]=S,t[27]=x,t[28]=w):w=t[28];let T;return t[29]!==f||t[30]!==w||t[31]!==g||t[32]!==_||t[33]!==b?(T=(0,P.jsxs)(`div`,{role:`row`,className:F,children:[f,g,_,b,w]}),t[29]=f,t[30]=w,t[31]=g,t[32]=_,t[33]=b,t[34]=T):T=t[34],T}function H(e){let t=(0,M.c)(23),{g:n,e:r,jetzt:i,gesperrt:a,onFrage:o}=e,s;t[0]===r.groesse?s=t[1]:(s=b(r.groesse),t[0]=r.groesse,t[1]=s);let c=s,l=r.loeschen,d;t[2]===r.datei?d=t[3]:(d=(0,P.jsx)(`span`,{role:`rowheader`,className:I,children:r.datei}),t[2]=r.datei,t[3]=d);let f;t[4]===Symbol.for(`react.memo_cache_sentinel`)?(f=(0,P.jsx)(`span`,{role:`cell`,className:L,children:(0,P.jsx)(u,{children:`Sicherung`})}),t[4]=f):f=t[4];let p;t[5]!==r.zeit||t[6]!==i?(p=(0,P.jsx)(R,{zeit:r.zeit,jetzt:i}),t[5]=r.zeit,t[6]=i,t[7]=p):p=t[7];let m=c?`${c} auf „${r.speicher}“`:`Auf „${r.speicher}“`,h;t[8]===m?h=t[9]:(h=(0,P.jsxs)(z,{children:[m,`, vor einem Update angelegt`]}),t[8]=m,t[9]=h);let g=l?null:`Nicht freigegeben`,_;t[10]!==n||t[11]!==a||t[12]!==l||t[13]!==o?(_=l&&(0,P.jsxs)(C,{variant:`outline`,size:`sm`,disabled:a,onClick:()=>o({name:n.name,aktion:l,gefahr:!0}),children:[(0,P.jsx)(j,{"aria-hidden":!0}),` Löschen`]}),t[10]=n,t[11]=a,t[12]=l,t[13]=o,t[14]=_):_=t[14];let v;t[15]!==g||t[16]!==_?(v=(0,P.jsx)(B,{ohne:g,children:_}),t[15]=g,t[16]=_,t[17]=v):v=t[17];let y;return t[18]!==d||t[19]!==p||t[20]!==h||t[21]!==v?(y=(0,P.jsxs)(`div`,{role:`row`,className:F,children:[d,f,p,h,v]}),t[18]=d,t[19]=p,t[20]=h,t[21]=v,t[22]=y):y=t[22],y}function U(e){let t=(0,M.c)(44),{g:n,jetzt:r,gesperrt:i,onFrage:s}=e,c=n.snapshots.length===0&&n.sicherungen.length===0,{anlegen:u,probe:f}=n,p=n.name,m;t[0]!==n.art||t[1]!==n.name?(m=d({art:n.art,name:n.name}),t[0]=n.art,t[1]=n.name,t[2]=m):m=t[2];let h=n.status===`running`?`ok`:n.status?`aus`:null,g;t[3]!==m||t[4]!==h?(g=(0,P.jsx)(l,{bild:m,punkt:h}),t[3]=m,t[4]=h,t[5]=g):g=t[5];let v;t[6]===n.name?v=t[7]:(v=(0,P.jsx)(`h3`,{className:`text-[15px] font-semibold break-words`,children:n.name}),t[6]=n.name,t[7]=v);let b;t[8]===n.wo?b=t[9]:(b=(0,P.jsx)(`span`,{className:`text-[13px] text-text-3`,children:n.wo}),t[8]=n.wo,t[9]=b);let S;t[10]!==v||t[11]!==b?(S=(0,P.jsxs)(`div`,{className:`flex min-w-0 flex-col`,children:[v,b]}),t[10]=v,t[11]=b,t[12]=S):S=t[12];let w;t[13]!==g||t[14]!==S?(w=(0,P.jsxs)(`div`,{className:`flex min-w-0 items-center gap-3`,children:[g,S]}),t[13]=g,t[14]=S,t[15]=w):w=t[15];let T;t[16]!==u||t[17]!==n.laeuft||t[18]!==n.name||t[19]!==i||t[20]!==s||t[21]!==f?(T=n.laeuft?(0,P.jsxs)(`p`,{role:`status`,className:`text-sm text-cyan-text`,children:[`Läuft: `,n.laeuft,` …`]}):(u||f)&&(0,P.jsxs)(`span`,{className:`flex flex-wrap gap-2`,children:[f&&(0,P.jsxs)(C,{variant:`ghost`,size:`sm`,disabled:i,onClick:()=>s({name:n.name,aktion:f,gefahr:!0}),children:[(0,P.jsx)(D,{"aria-hidden":!0}),` Rückweg testen`]}),u&&(0,P.jsxs)(C,{variant:`outline`,size:`sm`,disabled:i,onClick:()=>s({name:n.name,aktion:u,gefahr:!1}),children:[(0,P.jsx)(k,{"aria-hidden":!0}),` Snapshot anlegen`]})]}),t[16]=u,t[17]=n.laeuft,t[18]=n.name,t[19]=i,t[20]=s,t[21]=f,t[22]=T):T=t[22];let E;t[23]!==w||t[24]!==T?(E=(0,P.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-x-4 gap-y-2`,children:[w,T]}),t[23]=w,t[24]=T,t[25]=E):E=t[25];let O;t[26]===n.grund?O=t[27]:(O=n.grund&&(0,P.jsx)(`p`,{className:`text-sm text-text-3`,children:n.grund}),t[26]=n.grund,t[27]=O);let A;t[28]!==n.name||t[29]!==n.zuletzt||t[30]!==r?(A=n.zuletzt&&(0,P.jsxs)(`p`,{className:a(`flex items-start gap-1.5 text-sm`,n.zuletzt.ok?`text-gruen-text`:`text-rot-text`),children:[n.zuletzt.ok?(0,P.jsx)(_,{className:`mt-0.5 size-4 shrink-0`,"aria-hidden":!0}):(0,P.jsx)(o,{className:`mt-0.5 size-4 shrink-0`,"aria-hidden":!0}),(0,P.jsxs)(`span`,{className:`flex min-w-0 flex-wrap items-baseline gap-x-2`,children:[(0,P.jsx)(`span`,{className:`break-words`,children:x(n.zuletzt.text,n.name)}),(0,P.jsx)(`span`,{className:`ziffern text-xs text-text-3`,children:y(n.zuletzt.ende,r)})]})]}),t[28]=n.name,t[29]=n.zuletzt,t[30]=r,t[31]=A):A=t[31];let j;t[32]!==n||t[33]!==i||t[34]!==r||t[35]!==c||t[36]!==s?(j=c?(0,P.jsx)(`p`,{className:`text-sm text-text-3`,children:`Keine Snapshots.`}):(0,P.jsxs)(`div`,{role:`table`,"aria-label":`Snapshots von ${n.name}`,className:`flex flex-col`,children:[(0,P.jsxs)(`div`,{role:`row`,className:`sr-only`,children:[(0,P.jsx)(`span`,{role:`columnheader`,children:`Snapshot`}),(0,P.jsx)(`span`,{role:`columnheader`,children:`Herkunft`}),(0,P.jsx)(`span`,{role:`columnheader`,children:`Zeitpunkt`}),(0,P.jsx)(`span`,{role:`columnheader`,children:`Beschreibung`}),(0,P.jsx)(`span`,{role:`columnheader`,children:`Aktion`})]}),n.snapshots.map(e=>(0,P.jsx)(V,{g:n,s:e,jetzt:r,gesperrt:i,onFrage:s},e.name)),n.sicherungen.map(e=>(0,P.jsx)(H,{g:n,e,jetzt:r,gesperrt:i,onFrage:s},e.datei))]}),t[32]=n,t[33]=i,t[34]=r,t[35]=c,t[36]=s,t[37]=j):j=t[37];let N;return t[38]!==n.name||t[39]!==E||t[40]!==O||t[41]!==A||t[42]!==j?(N=(0,P.jsxs)(`section`,{"aria-label":p,className:`flaeche-innen flex min-w-0 flex-col gap-2 rounded-2xl px-4 py-3.5`,children:[E,O,A,j]}),t[38]=n.name,t[39]=E,t[40]=O,t[41]=A,t[42]=j,t[43]=N):N=t[43],N}function W(e){let t=(0,M.c)(24),{daten:n,gesperrt:r,onAktion:i}=e,[a,o]=(0,N.useState)(null),s;if(t[0]!==n.geraete||t[1]!==n.jetzt||t[2]!==r){let e;t[4]!==n.jetzt||t[5]!==r?(e=e=>(0,P.jsx)(U,{g:e,jetzt:n.jetzt,gesperrt:r||!!e.laeuft,onFrage:o},e.id),t[4]=n.jetzt,t[5]=r,t[6]=e):e=t[6],s=n.geraete.map(e),t[0]=n.geraete,t[1]=n.jetzt,t[2]=r,t[3]=s}else s=t[3];let c;t[7]===s?c=t[8]:(c=(0,P.jsx)(`div`,{className:`flex flex-col gap-3`,children:s}),t[7]=s,t[8]=c);let l=!!a,u=a?`${a.name}: ${a.aktion.label}`:``,d=a?.aktion.frage??``,f=a?.aktion.label??``,p=a?.gefahr,m;t[9]!==a||t[10]!==i?(m=()=>{a&&i(a.aktion),o(null)},t[9]=a,t[10]=i,t[11]=m):m=t[11];let h;t[12]===Symbol.for(`react.memo_cache_sentinel`)?(h=()=>o(null),t[12]=h):h=t[12];let g;t[13]!==r||t[14]!==l||t[15]!==u||t[16]!==d||t[17]!==f||t[18]!==p||t[19]!==m?(g=(0,P.jsx)(w,{offen:l,titel:u,text:d,knopf:f,gefahr:p,gesperrt:r,onJa:m,onNein:h}),t[13]=r,t[14]=l,t[15]=u,t[16]=d,t[17]=f,t[18]=p,t[19]=m,t[20]=g):g=t[20];let _;return t[21]!==g||t[22]!==c?(_=(0,P.jsxs)(P.Fragment,{children:[c,g]}),t[21]=g,t[22]=c,t[23]=_):_=t[23],_}function G(){let e=(0,M.c)(41),t=g(),n=S(),r=t.data?.rolle===`homelab`||!!(n.data?.eingerichtet&&n.data.erreichbar),i=h(r),a=c(),[o,s]=(0,N.useState)(!1);if(t.isPending||n.isPending){let t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,P.jsx)(f,{text:`Wird gelesen …`}),e[0]=t):t=e[0],t}if(!r){let t;return e[1]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,P.jsx)(f,{fehler:!0,text:`Der Homelab-Teil antwortet gerade nicht.`}),e[1]=t):t=e[1],t}if(i.isPending){let t;return e[2]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,P.jsx)(f,{text:`Die Snapshots werden gelesen …`}),e[2]=t):t=e[2],t}if(!i.data){let t=`Die Snapshots lassen sich nicht lesen: ${i.error?.message??`keine Daten`}`,n;return e[3]===t?n=e[4]:(n=(0,P.jsx)(f,{fehler:!0,text:t}),e[3]=t,e[4]=n),n}let l=i.data,d=l.sperre,p;e[5]!==l.bericht||e[6]!==l.summe?(p=l.bericht?(0,P.jsx)(u,{children:m(l.summe)}):void 0,e[5]=l.bericht,e[6]=l.summe,e[7]=p):p=e[7];let _;e[8]===Symbol.for(`react.memo_cache_sentinel`)?(_=(0,P.jsx)(`p`,{className:`-mt-2 text-[15px] text-text-2`,children:`Ein Snapshot hält den Stand eines Geräts fest. Vor jedem Update legt der Orchestrator einen an (beim Proxmox Backup Server eine Sicherung) und räumt nach einem grünen Update die älteren weg. Hier legst du selbst welche an — die bleiben, bis du sie löschst —, setzt ein Gerät zurück oder löschst, was weg kann. Von Hand in Proxmox angelegte stehen nur zur Ansicht da.`}),e[8]=_):_=e[8];let v;e[9]===d?v=e[10]:(v=d&&(0,P.jsx)(`p`,{role:`alert`,className:`rounded-2xl bg-bernstein/[0.08] px-4 py-3 text-[15px] text-bernstein ring-1 ring-bernstein/35 ring-inset`,children:d}),e[9]=d,e[10]=v);let b;e[11]!==a.isPending||e[12]!==l.aufraeumen||e[13]!==l.aufraeumen_laeuft||e[14]!==d?(b=(l.aufraeumen||l.aufraeumen_laeuft)&&(0,P.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-3 rounded-2xl bg-white/[0.03] px-4 py-3 ring-1 ring-white/10 ring-inset`,children:[(0,P.jsx)(`p`,{className:`min-w-0 flex-1 text-[14.5px] text-text-2`,children:l.aufraeumen_laeuft?`Die Rückwege der letzten Updates werden gerade nacheinander gelöscht; am Ende kommt eine Meldung.`:`Nach grünen Updates bleibt je Gerät der Rückweg liegen, bis zum nächsten Update. Wegräumen geht hier auf einmal.`}),l.aufraeumen&&(0,P.jsxs)(C,{variant:`outline`,size:`sm`,disabled:a.isPending||!!d,onClick:()=>s(!0),children:[(0,P.jsx)(j,{"aria-hidden":!0}),` `,l.aufraeumen.label]})]}),e[11]=a.isPending,e[12]=l.aufraeumen,e[13]=l.aufraeumen_laeuft,e[14]=d,e[15]=b):b=e[15];let x;e[16]!==l.bericht||e[17]!==l.jetzt?(x=l.bericht?.veraltet&&(0,P.jsxs)(`p`,{className:`text-[15px] text-bernstein`,children:[`Der letzte Bericht ist von `,y(l.bericht.empfangen,l.jetzt),`; die Liste kann veraltet sein.`]}),e[16]=l.bericht,e[17]=l.jetzt,e[18]=x):x=e[18];let E;e[19]!==a||e[20]!==l||e[21]!==d?(E=l.bericht?(0,P.jsxs)(P.Fragment,{children:[!l.details&&(0,P.jsx)(`p`,{className:`text-sm text-text-3`,children:`Beschreibungen und die Größe der Sicherungen erscheinen, sobald der neue Ausführer auf dem Proxmox-Host läuft; bis dahin kommt der Zeitpunkt aus dem Namen des Snapshots.`}),(0,P.jsx)(W,{daten:l,gesperrt:a.isPending||!!d||!!l.aufraeumen_laeuft,onAktion:e=>a.mutate(e)}),(0,P.jsx)(`p`,{className:`text-sm text-text-3`,children:`Wie viel ein Snapshot im Speicherpool belegt, sagt Proxmox nicht: Er teilt sich die Daten mit dem Gerät und wächst mit jeder Änderung seit seinem Zeitpunkt. Wie voll der Pool ist, steht im Cockpit unter „Speicher und Sicherungen“.`})]}):(0,P.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Der Ausführer hat noch keinen Bericht geschickt.`}),e[19]=a,e[20]=l,e[21]=d,e[22]=E):E=e[22];let D=o&&!!l.aufraeumen,O=l.aufraeumen?.label??``,k=l.aufraeumen?.frage??``,A=l.aufraeumen?.label??``,F;e[23]!==a||e[24]!==l.aufraeumen?(F=()=>{l.aufraeumen&&a.mutate(l.aufraeumen),s(!1)},e[23]=a,e[24]=l.aufraeumen,e[25]=F):F=e[25];let I;e[26]===Symbol.for(`react.memo_cache_sentinel`)?(I=()=>s(!1),e[26]=I):I=e[26];let L;e[27]!==a.isPending||e[28]!==F||e[29]!==D||e[30]!==O||e[31]!==k||e[32]!==A?(L=(0,P.jsx)(w,{offen:D,titel:O,text:k,knopf:A,gefahr:!0,gesperrt:a.isPending,onJa:F,onNein:I}),e[27]=a.isPending,e[28]=F,e[29]=D,e[30]=O,e[31]=k,e[32]=A,e[33]=L):L=e[33];let R;return e[34]!==p||e[35]!==L||e[36]!==v||e[37]!==b||e[38]!==x||e[39]!==E?(R=(0,P.jsxs)(T,{titel:`Snapshots`,rechts:p,children:[_,v,b,x,E,L]}),e[34]=p,e[35]=L,e[36]=v,e[37]=b,e[38]=x,e[39]=E,e[40]=R):R=e[40],R}export{G as HomelabSnapshotsSeite}; \ No newline at end of file diff --git a/frontend/dist/assets/Lagekopf-PcUY5KZI.js b/frontend/dist/assets/Lagekopf-PcUY5KZI.js new file mode 100644 index 0000000..d32d294 --- /dev/null +++ b/frontend/dist/assets/Lagekopf-PcUY5KZI.js @@ -0,0 +1 @@ +import{i as e,r as t,t as n}from"./dist-aE7UmubC.js";import{C as r}from"./index-BjDzWYEf.js";var i=t(),a=e(),o={ok:{block:`bg-gruen/[0.07] ring-gruen/30`,glut:`var(--gruen)`,text:`text-gruen`},info:{block:`bg-cyan/[0.07] ring-cyan/30`,glut:`var(--cyan)`,text:`text-cyan-text`},gelb:{block:`bg-bernstein/[0.08] ring-bernstein/35`,glut:`var(--bernstein)`,text:`text-bernstein`},rot:{block:`bg-rot/10 ring-rot/40`,glut:`var(--rot)`,text:`text-rot-text`},stumm:{block:`bg-white/[0.04] ring-white/15`,glut:`var(--text-3)`,text:`text-text-2`}};function s(e){let t=(0,i.c)(32),{art:r,oben:s,mitte:c,unten:l,aktiv:u,onAnsehen:d,label:f,children:p}=e,m=o[r],h=`radial-gradient(closest-side, color-mix(in srgb, ${m.glut} 20%, transparent), transparent)`,g;t[0]===h?g=t[1]:(g=(0,a.jsx)(`div`,{"aria-hidden":!0,className:`glut-atmet pointer-events-none absolute -top-40 -left-32 size-[460px] rounded-full`,style:{background:h}}),t[0]=h,t[1]=g);let _=!u,v=`${s}: ${c}`,y=u?`cursor-pointer hover:brightness-125`:`cursor-default`,b=r===`gelb`&&`lampe-atmet`,x;t[2]!==m.block||t[3]!==y||t[4]!==b?(x=n(`flex min-h-[132px] flex-col items-start justify-center gap-1.5 rounded-2xl px-5 py-4 text-left ring-1 ring-inset transition-[filter]`,m.block,y,b),t[2]=m.block,t[3]=y,t[4]=b,t[5]=x):x=t[5];let S;t[6]===s?S=t[7]:(S=(0,a.jsx)(`span`,{className:`etikett text-[11px] tracking-[0.18em] text-text-3`,children:s}),t[6]=s,t[7]=S);let C;t[8]===m.text?C=t[9]:(C=n(`text-[30px] leading-tight font-semibold tracking-[-0.01em] sm:text-[34px]`,m.text),t[8]=m.text,t[9]=C);let w;t[10]!==c||t[11]!==C?(w=(0,a.jsx)(`span`,{className:C,children:c}),t[10]=c,t[11]=C,t[12]=w):w=t[12];let T;t[13]===l?T=t[14]:(T=(0,a.jsx)(`span`,{className:`text-[13.5px] text-text-2`,children:l}),t[13]=l,t[14]=T);let E;t[15]!==d||t[16]!==w||t[17]!==T||t[18]!==_||t[19]!==v||t[20]!==x||t[21]!==S?(E=(0,a.jsxs)(`button`,{type:`button`,onClick:d,disabled:_,"aria-label":v,className:x,children:[S,w,T]}),t[15]=d,t[16]=w,t[17]=T,t[18]=_,t[19]=v,t[20]=x,t[21]=S,t[22]=E):E=t[22];let D;t[23]===p?D=t[24]:(D=(0,a.jsx)(`ul`,{className:`m-0 grid list-none grid-cols-1 gap-2 p-0 min-[480px]:grid-cols-2 xl:grid-cols-4`,children:p}),t[23]=p,t[24]=D);let O;t[25]!==E||t[26]!==D?(O=(0,a.jsxs)(`div`,{className:`relative grid gap-4 p-4 sm:p-5 lg:grid-cols-[280px_minmax(0,1fr)] lg:gap-5`,children:[E,D]}),t[25]=E,t[26]=D,t[27]=O):O=t[27];let k;return t[28]!==f||t[29]!==O||t[30]!==g?(k=(0,a.jsxs)(`section`,{"aria-label":f,className:`auftauchen flaeche relative overflow-hidden rounded-3xl`,children:[g,O]}),t[28]=f,t[29]=O,t[30]=g,t[31]=k):k=t[31],k}var c={ok:`ok`,aus:`aus`,warn:`warn`,info:`info`,fehler:`rot`},l={ok:`text-text-3`,aus:`text-text-3`,warn:`text-bernstein`,info:`text-cyan-text`,fehler:`text-rot-text`},u={ok:`in Ordnung`,aus:`aus`,warn:`braucht Aufmerksamkeit`,info:`Info`,fehler:`Störung`};function d(e){let t=(0,i.c)(22),{bild:o,name:s,wert:d,zustand:f,onClick:p}=e,m=c[f],h;t[0]!==o||t[1]!==m?(h=(0,a.jsx)(r,{bild:o,punkt:m}),t[0]=o,t[1]=m,t[2]=h):h=t[2];let g;t[3]===s?g=t[4]:(g=(0,a.jsx)(`span`,{className:`truncate text-[14.5px] leading-snug font-medium`,children:s}),t[3]=s,t[4]=g);let _=l[f],v;t[5]===_?v=t[6]:(v=n(`truncate text-[12.5px] leading-snug`,_),t[5]=_,t[6]=v);let y;t[7]!==v||t[8]!==d?(y=(0,a.jsx)(`span`,{className:v,children:d}),t[7]=v,t[8]=d,t[9]=y):y=t[9];let b=u[f],x;t[10]===b?x=t[11]:(x=(0,a.jsx)(`span`,{className:`sr-only`,children:b}),t[10]=b,t[11]=x);let S;t[12]!==g||t[13]!==y||t[14]!==x?(S=(0,a.jsxs)(`span`,{className:`flex min-w-0 flex-col gap-0.5`,children:[g,y,x]}),t[12]=g,t[13]=y,t[14]=x,t[15]=S):S=t[15];let C;t[16]!==h||t[17]!==S?(C=(0,a.jsxs)(a.Fragment,{children:[h,S]}),t[16]=h,t[17]=S,t[18]=C):C=t[18];let w=C,T;return t[19]!==w||t[20]!==p?(T=(0,a.jsx)(`li`,{children:p?(0,a.jsx)(`button`,{type:`button`,onClick:p,className:n(`flaeche-innen flex h-full w-full min-w-0 items-center gap-3 rounded-xl px-3 py-2.5 text-left`,`transition-colors hover:border-white/20 hover:bg-white/[0.05]`),children:w}):(0,a.jsx)(`div`,{className:`flaeche-innen flex h-full w-full min-w-0 items-center gap-3 rounded-xl px-3 py-2.5 text-left`,children:w})}),t[19]=w,t[20]=p,t[21]=T):T=t[21],T}export{s as n,d as t}; \ No newline at end of file diff --git a/frontend/dist/assets/Lampe-gSQfYg4e.js b/frontend/dist/assets/Lampe-gSQfYg4e.js deleted file mode 100644 index 9bcd431..0000000 --- a/frontend/dist/assets/Lampe-gSQfYg4e.js +++ /dev/null @@ -1 +0,0 @@ -import{n as e,r as t,t as n}from"./dist-D4CVSex9.js";var r=e(),i=t(),a={ok:{feld:`border-gruen-rand bg-gruen-grund`,name:`text-gruen`,wert:`text-gruen-text`},aus:{feld:`border-aus-rand bg-aus-grund`,name:`text-aus-text`,wert:`text-text-3`},warn:{feld:`border-bernstein bg-bernstein-lampe lampe-atmet`,name:`text-bernstein`,wert:`text-[#f2c46b]`},info:{feld:`border-cyan-rand bg-cyan-grund`,name:`text-cyan`,wert:`text-cyan-text`},fehler:{feld:`border-rot bg-rot-grund shadow-[0_0_18px_rgba(255,90,79,0.35)]`,name:`text-rot`,wert:`text-rot-text`}},o={ok:`in Ordnung`,aus:`aus`,warn:`braucht Aufmerksamkeit`,info:`Info`,fehler:`Störung`};function s(e){let t=(0,r.c)(19),{lampe:s}=e,c=a[s.zustand]??a.aus,l;t[0]===c.feld?l=t[1]:(l=n(`flex min-h-[58px] flex-col items-center justify-center gap-0.5 rounded-lg border px-2 py-2 text-center`,c.feld),t[0]=c.feld,t[1]=l);let u;t[2]===c.name?u=t[3]:(u=n(`schild text-[17px] leading-none font-bold tracking-[0.18em]`,c.name),t[2]=c.name,t[3]=u);let d;t[4]!==s.label||t[5]!==u?(d=(0,i.jsx)(`span`,{className:u,children:s.label}),t[4]=s.label,t[5]=u,t[6]=d):d=t[6];let f;t[7]===c.wert?f=t[8]:(f=n(`ziffern text-xs uppercase`,c.wert),t[7]=c.wert,t[8]=f);let p;t[9]!==s.wert||t[10]!==f?(p=(0,i.jsx)(`span`,{className:f,children:s.wert}),t[9]=s.wert,t[10]=f,t[11]=p):p=t[11];let m=o[s.zustand],h;t[12]===m?h=t[13]:(h=(0,i.jsx)(`span`,{className:`sr-only`,children:m}),t[12]=m,t[13]=h);let g;return t[14]!==l||t[15]!==d||t[16]!==p||t[17]!==h?(g=(0,i.jsxs)(`li`,{className:l,children:[d,p,h]}),t[14]=l,t[15]=d,t[16]=p,t[17]=h,t[18]=g):g=t[18],g}export{s as t}; \ No newline at end of file diff --git a/frontend/dist/assets/MenueSchublade-B0vlMk4k.js b/frontend/dist/assets/MenueSchublade-B0vlMk4k.js deleted file mode 100644 index a59c361..0000000 --- a/frontend/dist/assets/MenueSchublade-B0vlMk4k.js +++ /dev/null @@ -1 +0,0 @@ -import{n as e,r as t}from"./dist-D4CVSex9.js";import{E as n,T as r}from"./index-CKWhFN2A.js";import{a as i,i as a,n as o,r as s,t as c}from"./sheet-CHZtsS6E.js";var l=e(),u=t();function d(e){let t=(0,l.c)(8),{onSchliessen:d}=e,f;t[0]===d?f=t[1]:(f=e=>!e&&d(),t[0]=d,t[1]=f);let p;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(p=(0,u.jsxs)(a,{className:`p-0`,children:[(0,u.jsx)(i,{asChild:!0,children:(0,u.jsx)(`div`,{children:(0,u.jsx)(r,{})})}),(0,u.jsx)(s,{className:`sr-only`,children:`Bereiche und Seiten`})]}),t[2]=p):p=t[2];let m;t[3]===d?m=t[4]:(m=(0,u.jsxs)(o,{side:`left`,className:`flex flex-col gap-6 border-linie bg-[#0c0f12] px-4 pt-5 pb-[calc(1.25rem+env(safe-area-inset-bottom))] data-[side=left]:w-[300px]`,children:[p,(0,u.jsx)(n,{onGewaehlt:d})]}),t[3]=d,t[4]=m);let h;return t[5]!==f||t[6]!==m?(h=(0,u.jsx)(c,{open:!0,onOpenChange:f,children:m}),t[5]=f,t[6]=m,t[7]=h):h=t[7],h}export{d as MenueSchublade}; \ No newline at end of file diff --git a/frontend/dist/assets/MenueSchublade-dfaMfvPR.js b/frontend/dist/assets/MenueSchublade-dfaMfvPR.js new file mode 100644 index 0000000..79e0f6e --- /dev/null +++ b/frontend/dist/assets/MenueSchublade-dfaMfvPR.js @@ -0,0 +1 @@ +import{i as e,r as t}from"./dist-aE7UmubC.js";import{A as n,j as r}from"./index-BjDzWYEf.js";import{a as i,i as a,n as o,r as s,t as c}from"./sheet-Bcuh2-nz.js";var l=t(),u=e();function d(e){let t=(0,l.c)(8),{onSchliessen:d}=e,f;t[0]===d?f=t[1]:(f=e=>!e&&d(),t[0]=d,t[1]=f);let p;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(p=(0,u.jsxs)(a,{className:`p-0`,children:[(0,u.jsx)(i,{asChild:!0,children:(0,u.jsx)(`div`,{children:(0,u.jsx)(n,{})})}),(0,u.jsx)(s,{className:`sr-only`,children:`Bereiche und Seiten`})]}),t[2]=p):p=t[2];let m;t[3]===d?m=t[4]:(m=(0,u.jsxs)(o,{side:`left`,className:`flex flex-col gap-7 border-white/[0.06] bg-[#0a0d14] px-4 pt-5 pb-[calc(1.25rem+env(safe-area-inset-bottom))] data-[side=left]:w-[300px]`,children:[p,(0,u.jsx)(r,{onGewaehlt:d})]}),t[3]=d,t[4]=m);let h;return t[5]!==f||t[6]!==m?(h=(0,u.jsx)(c,{open:!0,onOpenChange:f,children:m}),t[5]=f,t[6]=m,t[7]=h):h=t[7],h}export{d as MenueSchublade}; \ No newline at end of file diff --git a/frontend/dist/assets/Modelle-CpXbVZza.js b/frontend/dist/assets/Modelle-CpXbVZza.js deleted file mode 100644 index b056410..0000000 --- a/frontend/dist/assets/Modelle-CpXbVZza.js +++ /dev/null @@ -1 +0,0 @@ -import{i as e,n as t,r as n,s as r,t as i}from"./dist-D4CVSex9.js";import{n as a,t as o}from"./useSelector-uUwrspuX.js";import{n as s}from"./useMatch-CiyhmkMV.js";import{t as c}from"./chevron-right-lErM2U6o.js";import{t as l}from"./search-DDxMRsny.js";import{$t as u,B as d,Bt as f,C as p,Et as m,Ft as h,It as g,Pt as _,S as v,U as y,Vt as b,W as x,Wt as S,Xt as C,Yt as w,Zt as T,b as E,d as D,dt as O,en as k,f as A,fn as j,ft as M,gt as N,ht as P,it as F,lt as I,p as L,pn as R,ut as z,vt as B,yt as V,z as H}from"./index-CKWhFN2A.js";import{t as U}from"./button-D8rvET0Z.js";import{a as W,i as G,n as K,r as ee,t as te}from"./sheet-CHZtsS6E.js";import{t as ne}from"./Bestaetigen-CMlebyiw.js";import{a as re,r as ie,s as ae,t as q}from"./Auftraege-BO4bSQmr.js";import{t as J}from"./breite-pBrnu3_s.js";function oe(e){let t=a();return o(t.stores.location,s(e,t))}var Y=t(),X=r(e(),1),Z=n(),Q=new Intl.NumberFormat(`de-DE`),se=240,ce=24,le={ArrowLeft:e=>Math.max(0,e-1),ArrowRight:(e,t)=>Math.min(t-1,e+1),Home:()=>0,End:(e,t)=>t-1};function ue(e){let t=(0,Y.c)(20),{saeule:n,reihen:r,summe:a,className:o,links:s}=e,c;t[0]===o?c=t[1]:(c=i(`flex flex-col gap-1 rounded-lg border border-linie-stark bg-erhaben px-3 py-2`,o),t[0]=o,t[1]=c);let l;t[2]===s?l=t[3]:(l=s===void 0?void 0:{left:s},t[2]=s,t[3]=l);let u;t[4]===n.lang?u=t[5]:(u=(0,Z.jsx)(`span`,{className:`ziffern text-xs text-text-3`,children:n.lang}),t[4]=n.lang,t[5]=u);let d;if(t[6]!==r||t[7]!==n.werte){let e;t[9]===n.werte?e=t[10]:(e=e=>(0,Z.jsxs)(`span`,{className:`flex items-baseline gap-2 text-sm`,children:[(0,Z.jsx)(`span`,{"aria-hidden":!0,className:`h-0.5 w-3 shrink-0 self-center rounded-full`,style:{background:e.farbe}}),(0,Z.jsx)(`span`,{className:`ziffern font-semibold text-foreground`,children:Q.format(n.werte[e.name]??0)}),(0,Z.jsx)(`span`,{className:`min-w-0 text-text-3`,children:e.name})]},e.name),t[9]=n.werte,t[10]=e),d=r.map(e),t[6]=r,t[7]=n.werte,t[8]=d}else d=t[8];let f;t[11]!==r.length||t[12]!==a?(f=r.length>1&&(0,Z.jsxs)(`span`,{className:`flex items-baseline gap-2 border-t border-linie pt-1 text-sm`,children:[(0,Z.jsx)(`span`,{className:`ziffern font-semibold text-foreground`,children:Q.format(a)}),(0,Z.jsx)(`span`,{className:`text-text-3`,children:`zusammen`})]}),t[11]=r.length,t[12]=a,t[13]=f):f=t[13];let p;return t[14]!==c||t[15]!==l||t[16]!==u||t[17]!==d||t[18]!==f?(p=(0,Z.jsxs)(`div`,{role:`status`,className:c,style:l,children:[u,d,f]}),t[14]=c,t[15]=l,t[16]=u,t[17]=d,t[18]=f,t[19]=p):p=t[19],p}function de(e){let t=(0,Y.c)(92),{saeulen:n,reihen:r,titel:a,summen:o,hoehe:s,spalte:c}=e,l=o===void 0?`alle`:o,u=s===void 0?200:s,d=c===void 0?`Zeitraum`:c,[f,p]=J(),[m,h]=(0,X.useState)(null),g=n.length,_,v,y,b,x,S,C,w,T,E;if(t[0]!==p||t[1]!==u||t[2]!==m||t[3]!==g||t[4]!==f||t[5]!==r||t[6]!==n||t[7]!==d||t[8]!==l||t[9]!==a){let e;t[20]===n?e=t[21]:(e=e=>n.some(t=>(t.werte[e.name]??0)>0),t[20]=n,t[21]=e);let o=r.filter(e),s=n.map(e=>o.reduce((t,n)=>t+(e.werte[n.name]??0),0)),c=Math.max(0,...s),O=L(c),k=O[O.length-1],j;t[22]===k?j=t[23]:(j=Q.format(k),t[22]=k,t[23]=j);let M=Math.max(28,j.length*7+12),N=n.some(ge)?34:22,P;t[24]!==M||t[25]!==N?(P={links:M,rechts:4,oben:20,unten:N},t[24]=M,t[25]=N,t[26]=P):P=t[26];let F=P,I=Math.max(1,p-F.links-F.rechts),R=u-F.oben-F.unten,z=I/Math.max(1,g),B=Math.min(ce,Math.max(3,z*.72)),V;t[27]!==R||t[28]!==k||t[29]!==F.oben?(V=e=>F.oben+R-e/k*R,t[27]=R,t[28]=k,t[29]=F.oben,t[30]=V):V=t[30];let H=V,U=F.oben+R,W;t[31]!==z||t[32]!==F.links?(W=e=>F.links+(e+.5)*z,t[31]=z,t[32]=F.links,t[33]=W):W=t[33];let G=W,K;t[34]===n?K=t[35]:(K=Math.max(1,...n.map(he)),t[34]=n,t[35]=K);let ee=K*6.6+8,te;t[36]!==z||t[37]!==ee?(te=[1,3,6,12].find(e=>e*z>=ee)??24,t[36]=z,t[37]=ee,t[38]=te):te=t[38];let ne=te,re=s.indexOf(c),ie=z<34,ae;t[39]===g?ae=t[40]:(ae=function(e){if(g===0)return;let t=e.currentTarget.getBoundingClientRect();h(Math.min(g-1,Math.max(0,Math.floor((e.clientX-t.left)/t.width*g))))},t[39]=g,t[40]=ae);let q=ae,J;t[41]===g?J=t[42]:(J=function(e){let t=le[e.key];g!==0&&t&&(e.preventDefault(),h(e=>t(e??g-1,g)))},t[41]=g,t[42]=J);let oe=J,Y=m===null?void 0:n[m],X=p>=360,de=m===null?0:Math.max(0,Math.min(p-se,G(m)+12+se>p?G(m)-12-se:G(m)+12));_=`flex flex-col gap-2`,v=o.length>1&&(0,Z.jsx)(`ul`,{className:`m-0 flex list-none flex-wrap gap-x-4 gap-y-1 p-0 text-sm text-text-2`,"aria-label":`Legende`,children:o.map(me)});let _e;t[43]===g?_e=t[44]:(_e=()=>h(e=>e??(g?g-1:null)),t[43]=g,t[44]=_e);let ve;t[45]===Symbol.for(`react.memo_cache_sentinel`)?(ve=()=>h(null),t[45]=ve):ve=t[45];let ye;t[46]!==Y||t[47]!==z||t[48]!==m||t[49]!==R||t[50]!==F.links||t[51]!==F.oben?(ye=Y&&m!==null&&(0,Z.jsx)(`rect`,{x:F.links+m*z,y:F.oben-4,width:z,height:R+4,rx:4,fill:`var(--erhaben)`}),t[46]=Y,t[47]=z,t[48]=m,t[49]=R,t[50]=F.links,t[51]=F.oben,t[52]=ye):ye=t[52];let be;t[53]!==p||t[54]!==F.links||t[55]!==F.rechts||t[56]!==H?(be=e=>(0,Z.jsxs)(`g`,{children:[(0,Z.jsx)(`line`,{x1:F.links,x2:p-F.rechts,y1:H(e),y2:H(e),strokeWidth:1,stroke:e===0?`var(--linie-stark)`:`var(--linie)`}),(0,Z.jsx)(`text`,{x:F.links-8,y:H(e)+4,textAnchor:`end`,className:`fill-text-3 font-mono text-[11px]`,children:Q.format(e)})]},e),t[53]=p,t[54]=F.links,t[55]=F.rechts,t[56]=H,t[57]=be):be=t[57];let xe;t[58]!==I||t[59]!==R||t[60]!==c||t[61]!==F.links||t[62]!==F.oben?(xe=c===0&&(0,Z.jsx)(`text`,{x:F.links+I/2,y:F.oben+R/2,textAnchor:`middle`,className:`fill-text-3 text-sm`,children:`Keine Anfragen in diesem Zeitraum`}),t[58]=I,t[59]=R,t[60]=c,t[61]=F.links,t[62]=F.oben,t[63]=xe):xe=t[63];let Se;t[64]===Symbol.for(`react.memo_cache_sentinel`)?(Se=e=>{e.pointerType!==`touch`&&h(null)},t[64]=Se):Se=t[64];let Ce;t[65]!==u||t[66]!==I||t[67]!==F.links||t[68]!==q?(Ce=(0,Z.jsx)(`rect`,{x:F.links,y:0,width:I,height:u,fill:`transparent`,onPointerMove:q,onPointerDown:q,onPointerLeave:Se}),t[65]=u,t[66]=I,t[67]=F.links,t[68]=q,t[69]=Ce):Ce=t[69],y=(0,Z.jsxs)(`div`,{ref:f,className:`relative w-full`,children:[(0,Z.jsxs)(`svg`,{width:p,height:u,viewBox:`0 0 ${p} ${u}`,role:`img`,"aria-label":a,tabIndex:0,onKeyDown:oe,onFocus:_e,onBlur:ve,className:`block h-auto max-w-full outline-none focus-visible:rounded-md focus-visible:ring-2 focus-visible:ring-cyan/60`,children:[ye,O.map(be),n.map((e,t)=>{let n=G(t)-B/2;return(0,Z.jsxs)(`g`,{children:[A(o.map(t=>e.werte[t.name]??0),H).filter(pe).map(e=>e.oben?(0,Z.jsx)(`path`,{d:D(n,e.y,B,e.hoehe),fill:o[e.index].farbe},e.index):(0,Z.jsx)(`rect`,{x:n,y:e.y,width:B,height:e.hoehe,fill:o[e.index].farbe},e.index)),s[t]>0&&(l===`alle`||t===re)&&(0,Z.jsx)(`text`,{x:G(t),y:H(s[t])-6,textAnchor:`middle`,className:i(`fill-text-2 font-mono`,ie?`text-[10px]`:`text-[11px]`),children:Q.format(s[t])}),(e.raster??t)%ne===0&&(0,Z.jsxs)(`text`,{x:G(t),y:U+15,textAnchor:`middle`,className:`fill-text-3 font-mono text-[11px]`,children:[e.achse,e.achse2&&(0,Z.jsx)(`tspan`,{x:G(t),dy:13,className:`text-[10px]`,children:e.achse2})]})]},e.schluessel)}),xe,Ce]}),Y&&m!==null&&X&&(0,Z.jsx)(ue,{saeule:Y,reihen:o,summe:s[m],links:de,className:`pointer-events-none absolute top-1 z-10 w-60 shadow-lg`})]}),b=Y&&m!==null&&!X&&(0,Z.jsx)(ue,{saeule:Y,reihen:o,summe:s[m]}),T=`text-sm`,t[70]===Symbol.for(`react.memo_cache_sentinel`)?(E=(0,Z.jsx)(`summary`,{className:`inline-flex cursor-pointer items-center text-text-3 hover:text-text-2`,children:`Werte als Tabelle`}),t[70]=E):E=t[70],w=`mt-2 overflow-x-auto`,S=`w-full border-collapse text-xs`;let we;t[71]===d?we=t[72]:(we=(0,Z.jsx)(`th`,{scope:`col`,className:`py-1 pr-3 text-left font-normal`,children:d}),t[71]=d,t[72]=we),C=(0,Z.jsx)(`thead`,{children:(0,Z.jsxs)(`tr`,{className:`text-text-3`,children:[we,o.map(fe),o.length>1&&(0,Z.jsx)(`th`,{scope:`col`,className:`py-1 text-right font-normal`,children:`Zusammen`})]})}),x=n.map((e,t)=>(0,Z.jsxs)(`tr`,{className:`border-t border-linie`,children:[(0,Z.jsx)(`th`,{scope:`row`,className:`py-1 pr-3 text-left font-normal text-text-3`,children:e.lang}),o.map(t=>(0,Z.jsx)(`td`,{className:`ziffern py-1 pr-3 text-right text-text-2`,children:Q.format(e.werte[t.name]??0)},t.name)),o.length>1&&(0,Z.jsx)(`td`,{className:`ziffern py-1 text-right text-foreground`,children:Q.format(s[t])})]},e.schluessel)),t[0]=p,t[1]=u,t[2]=m,t[3]=g,t[4]=f,t[5]=r,t[6]=n,t[7]=d,t[8]=l,t[9]=a,t[10]=_,t[11]=v,t[12]=y,t[13]=b,t[14]=x,t[15]=S,t[16]=C,t[17]=w,t[18]=T,t[19]=E}else _=t[10],v=t[11],y=t[12],b=t[13],x=t[14],S=t[15],C=t[16],w=t[17],T=t[18],E=t[19];let O;t[73]===x?O=t[74]:(O=(0,Z.jsx)(`tbody`,{children:x}),t[73]=x,t[74]=O);let k;t[75]!==O||t[76]!==S||t[77]!==C?(k=(0,Z.jsxs)(`table`,{className:S,children:[C,O]}),t[75]=O,t[76]=S,t[77]=C,t[78]=k):k=t[78];let j;t[79]!==k||t[80]!==w?(j=(0,Z.jsx)(`div`,{className:w,children:k}),t[79]=k,t[80]=w,t[81]=j):j=t[81];let M;t[82]!==j||t[83]!==T||t[84]!==E?(M=(0,Z.jsxs)(`details`,{className:T,children:[E,j]}),t[82]=j,t[83]=T,t[84]=E,t[85]=M):M=t[85];let N;return t[86]!==_||t[87]!==v||t[88]!==y||t[89]!==b||t[90]!==M?(N=(0,Z.jsxs)(`div`,{className:_,children:[v,y,b,M]}),t[86]=_,t[87]=v,t[88]=y,t[89]=b,t[90]=M,t[91]=N):N=t[91],N}function fe(e){return(0,Z.jsx)(`th`,{scope:`col`,className:`py-1 pr-3 text-right font-normal [overflow-wrap:anywhere]`,children:e.name},e.name)}function pe(e){return e.hoehe>0}function me(e){return(0,Z.jsxs)(`li`,{className:`flex items-center gap-2`,children:[(0,Z.jsx)(`span`,{"aria-hidden":!0,className:`size-2.5 shrink-0 rounded-[2px]`,style:{background:e.farbe}}),e.name]},e.name)}function he(e){return e.achse.length}function ge(e){return e.achse2}var _e=`Europe/Berlin`,ve=[`var(--reihe-1)`,`var(--reihe-2)`,`var(--reihe-3)`],ye={name:`Weitere`,farbe:`var(--reihe-weitere)`},be=new Intl.NumberFormat(`de-DE`),xe=new Intl.NumberFormat(`de-DE`,{maximumFractionDigits:1}),Se=new Intl.DateTimeFormat(`en-CA`,{timeZone:_e}),Ce=new Intl.DateTimeFormat(`de-DE`,{hour:`2-digit`,minute:`2-digit`,timeZone:_e}),we=new Intl.DateTimeFormat(`de-DE`,{hour:`2-digit`,hourCycle:`h23`,timeZone:_e}),Te=new Intl.DateTimeFormat(`de-DE`,{weekday:`short`,timeZone:`UTC`}),Ee=new Intl.DateTimeFormat(`de-DE`,{weekday:`long`,timeZone:`UTC`}),$=e=>be.format(e);function De(e){if(!(e>0))return`0 %`;let t=e*100;return t<.1?`unter 0,1 %`:`${t<10?xe.format(t):be.format(Math.round(t))} %`}function Oe(e,t=!1){if(e==null||!Number.isFinite(e)||e<0)return`–`;if(Math.round(e*1e3)<1e3)return`${Math.round(e*1e3)} ms`;if(e<9.95)return`${xe.format(e)} s`;let n=Math.round(e);if(n<60)return`${n} s`;if(n<3600&&!t)return n%60?`${Math.floor(n/60)} min ${n%60} s`:`${n/60} min`;let r=Math.round(e/60);return r<60?`${r} min`:r%60?`${Math.floor(r/60)} h ${r%60} min`:`${r/60} h`}var ke={400:`fehlerhafte Anfrage`,404:`nicht gefunden`,408:`Zeitüberschreitung`,413:`Anfrage zu groß`,429:`zu viele Anfragen`,499:`vom Absender abgebrochen`,500:`Fehler beim Modell`,502:`Modell nicht erreichbar`,503:`gerade nicht verfügbar`,504:`Zeitüberschreitung`};function Ae(e){return Object.entries(e??{}).sort(([e,t],[n,r])=>r-t||e.localeCompare(n)).map(([e,t])=>ke[e]?`${$(t)}× ${ke[e]} (${e})`:`${$(t)}× Status ${e}`).join(` · `)}function je(e){return e===null||e<.01?{art:`grau`,wort:null}:e>=.05?{art:`rot`,wort:`hoch`}:{art:`bernstein`,wort:`auffällig`}}var Me=e=>String(e).padStart(2,`0`),Ne=e=>Object.values(e??{}).reduce((e,t)=>e+t,0),Pe=e=>Te.format(e).replace(`.`,``);function Fe(e){return Number(we.formatToParts(e).find(e=>e.type===`hour`)?.value??0)%24}function Ie(e){let[,t,n]=e.split(`-`);return`${Ee.format(new Date(`${e}T12:00:00Z`))}, ${n}.${t}.`}function Le(e,t=new Date){let n=e.stand?new Date(e.stand):t,r=Se.format(n),i=new Date(Date.parse(`${r}T12:00:00Z`)-864e5).toISOString().slice(0,10),a=e.gesamt?.anfragen??e.absender.reduce((e,t)=>e+t.anfragen,0),o=e.gesamt?.dauer_summe_s??null,s=new Map(e.absender.map((e,t)=>[e.name,e.reihe??t])),c=e.absender.map(e=>{let t=s.get(e.name)??ve.length,n=t[e.name,e.reihe])),u=[];for(let e of[...c].sort((e,t)=>(s.get(e.name)??99)-(s.get(t.name)??99)))u.some(t=>t.name===e.reihe)||u.push({name:e.reihe,farbe:e.farbe});let d=e=>{let t={};for(let[n,r]of Object.entries(e??{})){let e=l.get(n)??ye.name;t[e]=(t[e]??0)+r,e===ye.name&&!u.some(t=>t.name===e)&&u.push({...ye})}return t},f=Object.keys(e.je_tag??{}).sort(),p=f.map(t=>{let i=t===r;return{schluessel:t,achse:Pe(new Date(`${t}T12:00:00Z`)),achse2:i?`heute`:`${Number(t.slice(8))}.`,lang:`${Ie(t)}${i?` (heute bis ${Ce.format(n)})`:``}`,werte:d(e.je_tag[t])}}),m;if(e.stunden?.length)m=e.stunden.map((e,t,n)=>{let a=new Date(e.beginn),o=Fe(a),s=Se.format(a),c=s===r?`Heute`:s===i?`Gestern`:Ie(s),l=t===n.length-1?` bis jetzt`:`–${Me((o+1)%24)}:00`;return{schluessel:e.beginn,achse:`${Me(o)}:00`,raster:o,lang:`${c} ${Me(o)}:00${l}`,werte:d(e.je_absender)}});else{let t=Fe(n),r=e.letzte_24h??[];m=[...r.slice(t+1),...r.slice(0,t+1)].map(e=>{let t=Number(e.stunde);return{schluessel:e.stunde,achse:`${Me(t)}:00`,raster:t,lang:`${Me(t)}:00–${Me((t+1)%24)}:00`,werte:d(e.je_absender)}})}let h=f.filter(e=>e!==r),g=e.seit?Se.format(new Date(e.seit)):null,_=e.ladevorgaenge??Object.entries(e.zuletzt_geladen??{}).sort(([,e],[,t])=>Date.parse(t)-Date.parse(e)).map(([e,t])=>({modell:e,anzahl:null,zeiten:[t]}));return{absender:c,reihen:u,tage:p,stunden:m,gesamt:{anfragen:a,fehler:e.gesamt?.fehler??null,fehlerCodes:e.gesamt?.fehler_codes??{},typisch:e.gesamt?.dauer_typisch_s??null,p90:e.gesamt?.dauer_p90_s??null,summe:o},heute:Ne(e.je_tag?.[r]),gestern:Ne(e.je_tag?.[i]),schnitt:h.length?h.reduce((t,n)=>t+Ne(e.je_tag[n]),0)/h.length:null,zeitraum:g?`seit ${Pe(new Date(`${g}T12:00:00Z`))} ${g.slice(8)}.${g.slice(5,7)}.`:`letzte ${e.tage} Tage`,stand:e.stand?Ce.format(n):null,modelle:_}}var Re={grau:`text-foreground`,bernstein:`text-bernstein`,rot:`text-rot-text`};function ze(e){let t=(0,Y.c)(13),{label:n,wert:r,zusatz:a,art:o}=e,s=o===void 0?`grau`:o,c;t[0]===n?c=t[1]:(c=(0,Z.jsx)(`span`,{className:`schild text-xs tracking-[0.18em] text-text-3`,children:n}),t[0]=n,t[1]=c);let l=Re[s],u;t[2]===l?u=t[3]:(u=i(`font-anzeige text-[28px] leading-none font-bold`,l),t[2]=l,t[3]=u);let d;t[4]!==u||t[5]!==r?(d=(0,Z.jsx)(`span`,{className:u,children:r}),t[4]=u,t[5]=r,t[6]=d):d=t[6];let f;t[7]===a?f=t[8]:(f=a&&(0,Z.jsx)(`span`,{className:`text-xs text-text-3`,children:a}),t[7]=a,t[8]=f);let p;return t[9]!==c||t[10]!==d||t[11]!==f?(p=(0,Z.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-1.5 rounded-xl border border-linie bg-erhaben/50 px-3.5 py-3`,children:[c,d,f]}),t[9]=c,t[10]=d,t[11]=f,t[12]=p):p=t[12],p}var Be=`lg:grid-cols-[minmax(0,1.5fr)_minmax(0,1.4fr)_minmax(0,1fr)_minmax(0,1fr)_minmax(0,1.2fr)_minmax(0,0.8fr)]`;function Ve(e){let t=(0,Y.c)(13),{label:n,wert:r,zusatz:a,leise:o}=e,s;t[0]===n?s=t[1]:(s=(0,Z.jsx)(`span`,{className:`text-xs text-text-3 lg:hidden`,children:n}),t[0]=n,t[1]=s);let c=o?`text-text-3`:`text-foreground`,l;t[2]===c?l=t[3]:(l=i(`ziffern text-sm`,c),t[2]=c,t[3]=l);let u;t[4]!==l||t[5]!==r?(u=(0,Z.jsx)(`span`,{className:l,children:r}),t[4]=l,t[5]=r,t[6]=u):u=t[6];let d;t[7]===a?d=t[8]:(d=a&&(0,Z.jsx)(`span`,{className:`text-xs text-text-3`,children:a}),t[7]=a,t[8]=d);let f;return t[9]!==s||t[10]!==u||t[11]!==d?(f=(0,Z.jsxs)(`span`,{role:`cell`,className:`flex min-w-0 flex-col gap-0.5`,children:[s,u,d]}),t[9]=s,t[10]=u,t[11]=d,t[12]=f):f=t[12],f}function He(e){let t=(0,Y.c)(5),{zeilen:n}=e,r;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,Z.jsxs)(`div`,{role:`row`,className:i(`schild hidden gap-x-4 pb-2 text-xs text-text-3 lg:grid`,Be),children:[(0,Z.jsx)(`span`,{role:`columnheader`,children:`Absender`}),(0,Z.jsx)(`span`,{role:`columnheader`,children:`Anfragen`}),(0,Z.jsx)(`span`,{role:`columnheader`,children:`Typische Antwort`}),(0,Z.jsx)(`span`,{role:`columnheader`,children:`Rechenzeit`}),(0,Z.jsx)(`span`,{role:`columnheader`,children:`Fehler`}),(0,Z.jsx)(`span`,{role:`columnheader`,children:`Zuletzt`})]}),t[0]=r):r=t[0];let a;t[1]===n?a=t[2]:(a=n.map(Ue),t[1]=n,t[2]=a);let o;return t[3]===a?o=t[4]:(o=(0,Z.jsxs)(`div`,{role:`table`,"aria-label":`Nutzung je Absender`,className:`flex flex-col`,children:[r,a]}),t[3]=a,t[4]=o),o}function Ue(e){return(0,Z.jsxs)(`div`,{role:`row`,className:i(`grid grid-cols-2 gap-x-4 gap-y-2.5 border-t border-linie py-3 lg:items-start`,Be),children:[(0,Z.jsxs)(`span`,{role:`rowheader`,className:`col-span-2 flex min-w-0 items-center gap-2 text-[15px] font-medium lg:col-span-1`,children:[(0,Z.jsx)(`span`,{"aria-hidden":!0,className:`size-2.5 shrink-0 rounded-[2px]`,style:{background:e.farbe}}),(0,Z.jsx)(`span`,{className:`min-w-0 break-words`,children:e.name})]}),(0,Z.jsxs)(`span`,{role:`cell`,className:`col-span-2 flex min-w-0 flex-col gap-1.5 lg:col-span-1`,children:[(0,Z.jsxs)(`span`,{className:`text-sm`,children:[(0,Z.jsx)(`span`,{className:`ziffern`,children:$(e.anfragen)}),(0,Z.jsxs)(`span`,{className:`text-text-3`,children:[` · `,De(e.anteil),` aller Anfragen`]})]}),(0,Z.jsx)(`span`,{className:`h-1.5 w-full max-w-56 overflow-hidden rounded-full bg-erhaben`,"aria-hidden":!0,children:(0,Z.jsx)(`span`,{className:`block h-full rounded-full`,style:{width:`${Math.max(1,e.anteil*100)}%`,background:e.farbe}})})]}),(0,Z.jsx)(Ve,{label:`Typische Antwort`,wert:Oe(e.typisch),zusatz:e.p90===null?void 0:`9 von 10 bis ${Oe(e.p90)}`}),(0,Z.jsx)(Ve,{label:`Rechenzeit`,wert:Oe(e.summe,!0),zusatz:e.zeitAnteil===null?void 0:`${De(e.zeitAnteil)} aller Rechenzeit`}),(0,Z.jsx)(Ve,{label:`Fehler`,leise:e.fehler===0,wert:e.fehler===null?`–`:e.fehler===0?`keine`:`${$(e.fehler)} · ${De(e.fehler/e.anfragen)}`,zusatz:e.fehler?Ae(e.fehlerCodes):void 0}),(0,Z.jsx)(Ve,{label:`Zuletzt`,wert:e.zuletzt?_(e.zuletzt):`–`})]},e.name)}function We(e){let t=(0,Y.c)(11),{titel:n,zusatz:r,children:i}=e,a;t[0]===n?a=t[1]:(a=(0,Z.jsx)(`h3`,{className:`schild text-sm tracking-[0.18em] text-text-2`,children:n}),t[0]=n,t[1]=a);let o;t[2]===r?o=t[3]:(o=(0,Z.jsx)(`span`,{className:`text-xs text-text-3`,children:r}),t[2]=r,t[3]=o);let s;t[4]!==a||t[5]!==o?(s=(0,Z.jsxs)(`div`,{className:`flex flex-wrap items-baseline justify-between gap-x-3 gap-y-1`,children:[a,o]}),t[4]=a,t[5]=o,t[6]=s):s=t[6];let c;return t[7]!==i||t[8]!==s||t[9]!==n?(c=(0,Z.jsxs)(`section`,{"aria-label":n,className:`flex min-w-0 flex-col gap-3 rounded-xl border border-linie p-4`,children:[s,i]}),t[7]=i,t[8]=s,t[9]=n,t[10]=c):c=t[10],c}function Ge(e){let t=(0,Y.c)(29),{modelle:n,rollen:r}=e;if(n.length===0)return null;let i,a,o,s,l,u;if(t[0]!==n){let e=n.every(Je)?n.reduce(qe,0):null;u=`group rounded-xl border border-linie bg-erhaben/40 px-4 open:pb-2`,s=`flex min-h-12 cursor-pointer list-none flex-wrap items-center justify-between gap-x-3 gap-y-1 py-2 [&::-webkit-details-marker]:hidden`,t[7]===Symbol.for(`react.memo_cache_sentinel`)?(l=(0,Z.jsxs)(`span`,{className:`flex items-center gap-2 text-[15px] font-medium`,children:[(0,Z.jsx)(c,{className:`size-4 shrink-0 text-text-3 transition-transform group-open:rotate-90`,"aria-hidden":!0}),`Wann welches Modell geladen wurde`]}),t[7]=l):l=t[7],i=`ziffern text-sm text-text-2`,a=n.length===1?`1 Modell`:`${n.length} Modelle`,o=e===null?``:` · ${$(e)}× geladen`,t[0]=n,t[1]=i,t[2]=a,t[3]=o,t[4]=s,t[5]=l,t[6]=u}else i=t[1],a=t[2],o=t[3],s=t[4],l=t[5],u=t[6];let d;t[8]!==i||t[9]!==a||t[10]!==o?(d=(0,Z.jsxs)(`span`,{className:i,children:[a,o]}),t[8]=i,t[9]=a,t[10]=o,t[11]=d):d=t[11];let f;t[12]!==s||t[13]!==l||t[14]!==d?(f=(0,Z.jsxs)(`summary`,{className:s,children:[l,d]}),t[12]=s,t[13]=l,t[14]=d,t[15]=f):f=t[15];let p;t[16]===Symbol.for(`react.memo_cache_sentinel`)?(p=(0,Z.jsx)(`p`,{className:`pb-1 text-sm text-text-2`,children:`Gezählt wird, wie oft sich ein Modell nach dem Laden bereit meldete: nach einem Neustart von llama-swap oder wenn es auf Abruf gebraucht wurde.`}),t[16]=p):p=t[16];let m;t[17]===Symbol.for(`react.memo_cache_sentinel`)?(m=(0,Z.jsxs)(`div`,{role:`row`,className:`schild hidden gap-x-4 py-2 text-xs text-text-3 sm:grid sm:grid-cols-[minmax(0,1.5fr)_70px_130px_minmax(0,1.5fr)]`,children:[(0,Z.jsx)(`span`,{role:`columnheader`,children:`Modell`}),(0,Z.jsx)(`span`,{role:`columnheader`,children:`Geladen`}),(0,Z.jsx)(`span`,{role:`columnheader`,children:`Zuletzt`}),(0,Z.jsx)(`span`,{role:`columnheader`,children:`Davor`})]}),t[17]=m):m=t[17];let h;if(t[18]!==n||t[19]!==r){let e;t[21]===r?e=t[22]:(e=e=>(0,Z.jsxs)(`div`,{role:`row`,className:`grid grid-cols-[minmax(0,1fr)_auto] gap-x-4 gap-y-1 border-t border-linie py-2.5 sm:grid-cols-[minmax(0,1.5fr)_70px_130px_minmax(0,1.5fr)] sm:items-baseline`,children:[(0,Z.jsxs)(`span`,{role:`rowheader`,className:`flex min-w-0 flex-col`,children:[(0,Z.jsx)(`span`,{className:`ziffern text-sm break-all`,children:e.modell}),r[e.modell]&&(0,Z.jsx)(`span`,{className:`text-xs text-text-3`,children:r[e.modell]})]}),(0,Z.jsx)(`span`,{role:`cell`,className:`ziffern text-right text-sm text-text-2 sm:text-left`,children:e.anzahl===null?`–`:`${$(e.anzahl)}×`}),(0,Z.jsxs)(`span`,{role:`cell`,className:`ziffern col-span-2 text-xs text-text-2 sm:col-span-1`,children:[(0,Z.jsx)(`span`,{className:`font-sans text-text-3 sm:hidden`,children:`zuletzt `}),_(e.zeiten[0])]}),(0,Z.jsxs)(`span`,{role:`cell`,className:`ziffern col-span-2 text-xs text-text-3 sm:col-span-1`,children:[e.zeiten.length>1&&(0,Z.jsx)(`span`,{className:`font-sans sm:hidden`,children:`davor `}),e.zeiten.length>1?e.zeiten.slice(1,4).map(Ke).join(` · `):(0,Z.jsx)(`span`,{className:`hidden sm:inline`,children:`–`})]})]},e.modell),t[21]=r,t[22]=e),h=n.map(e),t[18]=n,t[19]=r,t[20]=h}else h=t[20];let g;t[23]===h?g=t[24]:(g=(0,Z.jsxs)(`div`,{role:`table`,"aria-label":`Ladevorgänge je Modell`,className:`flex flex-col`,children:[m,h]}),t[23]=h,t[24]=g);let v;return t[25]!==g||t[26]!==u||t[27]!==f?(v=(0,Z.jsxs)(`details`,{className:u,children:[f,p,g]}),t[25]=g,t[26]=u,t[27]=f,t[28]=v):v=t[28],v}function Ke(e){return _(e)}function qe(e,t){return e+(t.anzahl??0)}function Je(e){return e.anzahl!==null}function Ye(e){let t=(0,Y.c)(23),{nutzung:n,laedt:r,fehler:i,rollen:a}=e,o;t[0]===a?o=t[1]:(o=a===void 0?{}:a,t[0]=a,t[1]=o);let s=o;if(!n){let e;return t[2]!==i||t[3]!==r?(e=(0,Z.jsx)(E,{titel:`Wer nutzt die Modelle`,children:r?(0,Z.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Wird gelesen …`}):(0,Z.jsxs)(`p`,{role:`alert`,className:`text-[15px] text-rot-text`,children:[`Die Nutzung lässt sich gerade nicht lesen`,i?`: ${i}`:`.`]})}),t[2]=i,t[3]=r,t[4]=e):e=t[4],e}let c,l,u,d,f;if(t[5]!==n){l=Le(n);let e=l.gesamt,r=e.fehler!==null&&e.anfragen?e.fehler/e.anfragen:null,i;t[11]===r?i=t[12]:(i=je(r),t[11]=r,t[12]=i);let a=i;c=E,u=`Wer nutzt die Modelle`,d=(0,Z.jsxs)(`span`,{className:`ziffern text-sm text-text-3`,children:[l.zeitraum,l.stand?` · Stand ${l.stand}`:``]}),f=e.anfragen===0?(0,Z.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Keine Anfragen aufgezeichnet.`}):(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsxs)(`div`,{className:`grid grid-cols-2 gap-2.5 sm:grid-cols-4`,children:[(0,Z.jsx)(ze,{label:`Anfragen`,wert:$(e.anfragen),zusatz:l.schnitt===null?void 0:`im Schnitt ${$(Math.round(l.schnitt))} am Tag`}),(0,Z.jsx)(ze,{label:`Heute`,wert:$(l.heute),zusatz:`${l.stand?`bis ${l.stand} · `:``}gestern ${$(l.gestern)}`}),(0,Z.jsx)(ze,{label:`Typische Antwort`,wert:Oe(e.typisch),zusatz:e.p90===null?void 0:`9 von 10 bis ${Oe(e.p90)}`}),(0,Z.jsx)(ze,{label:`Fehler`,wert:e.fehler===null?`–`:$(e.fehler),art:a.art,zusatz:e.fehler===null?void 0:e.fehler===0?`alle beantwortet`:`${De(r??0)} der Anfragen${a.wort?` · ${a.wort}`:``}`})]}),(0,Z.jsx)(He,{zeilen:l.absender}),(0,Z.jsxs)(`div`,{className:`grid gap-4 xl:grid-cols-2`,children:[(0,Z.jsx)(We,{titel:`Anfragen je Tag`,zusatz:`letzte 7 Tage, heute bis jetzt`,children:(0,Z.jsx)(de,{saeulen:l.tage,reihen:l.reihen,spalte:`Tag`,titel:`Anfragen je Tag der letzten 7 Tage, gestapelt nach Absender`})}),(0,Z.jsx)(We,{titel:`Anfragen je Stunde`,zusatz:`letzte 24 Stunden`,children:(0,Z.jsx)(de,{saeulen:l.stunden,reihen:l.reihen,spalte:`Stunde`,summen:`hoechste`,titel:`Anfragen je Stunde der letzten 24 Stunden, gestapelt nach Absender`})})]})]}),t[5]=n,t[6]=c,t[7]=l,t[8]=u,t[9]=d,t[10]=f}else c=t[6],l=t[7],u=t[8],d=t[9],f=t[10];let p;t[13]!==l.modelle||t[14]!==s?(p=(0,Z.jsx)(Ge,{modelle:l.modelle,rollen:s}),t[13]=l.modelle,t[14]=s,t[15]=p):p=t[15];let m;t[16]===Symbol.for(`react.memo_cache_sentinel`)?(m=(0,Z.jsx)(`p`,{className:`text-xs text-text-3`,children:`Chat-Anfragen an llama-swap, gelesen aus seinem Protokoll und alle 10 Minuten neu gerechnet. NerdQuiz fragt direkt dort an, Lucy und OpenChamber über MC2. Antwortzeit: bis die Antwort ganz da war. Rechenzeit: alle Antwortzeiten zusammen, gleichzeitige Anfragen zählen einzeln.`}),t[16]=m):m=t[16];let h;return t[17]!==c||t[18]!==u||t[19]!==d||t[20]!==f||t[21]!==p?(h=(0,Z.jsxs)(c,{titel:u,rechts:d,children:[f,p,m]}),t[17]=c,t[18]=u,t[19]=d,t[20]=f,t[21]=p,t[22]=h):h=t[22],h}var Xe={coder:`Coder`};function Ze(e){let t=(0,Y.c)(102),{offen:n,onSchliessen:r,rollenJetzt:i}=e,a=F(),[o,s]=(0,X.useState)(``),[c,l]=(0,X.useState)(``),[u,d]=(0,X.useState)(null),[p,m]=(0,X.useState)(``),[h,_]=(0,X.useState)(null),v=(0,X.useRef)(!1),y,b;t[0]===c?(y=t[1],b=t[2]):(y=[`hf-suche`,c],b=()=>k(`/api/hf/search?q=${encodeURIComponent(c)}`),t[0]=c,t[1]=y,t[2]=b);let x=c.length>1,S;t[3]!==y||t[4]!==b||t[5]!==x?(S={queryKey:y,queryFn:b,enabled:x},t[3]=y,t[4]=b,t[5]=x,t[6]=S):S=t[6];let C=j(S),w,T;t[7]===u?(w=t[8],T=t[9]):(w=[`hf-quants`,u],T=()=>k(`/api/hf/quants?repo=${encodeURIComponent(u??``)}`),t[7]=u,t[8]=w,t[9]=T);let E=!!u,D;t[10]!==w||t[11]!==T||t[12]!==E?(D={queryKey:w,queryFn:T,enabled:E},t[10]=w,t[11]=T,t[12]=E,t[13]=D):D=t[13];let O=j(D),A,M,N,P,I,L,R,z,B,V,H,re,q;if(t[14]!==h||t[15]!==o||t[16]!==a||t[17]!==n||t[18]!==r||t[19]!==O.data||t[20]!==O.error||t[21]!==O.isError||t[22]!==O.isFetching||t[23]!==u||t[24]!==p||t[25]!==i||t[26]!==C){let e=(O.data?.quants??[]).map($e),c=p?Xe[p]??p:null,y;t[40]!==u||t[41]!==p||t[42]!==i||t[43]!==c?(y=c&&u?ae(u,c,i[p]):null,t[40]=u,t[41]=p,t[42]=i,t[43]=c,t[44]=y):y=t[44],N=y;let b;t[45]!==h||t[46]!==a||t[47]!==r||t[48]!==u||t[49]!==p?(b=function(){u&&h&&!v.current&&(v.current=!0,a.mutate({repo:u,quant:h.quant,rolle:p||null},{onSuccess:e=>{_(null),e.ok!==!1&&r()},onError:()=>_(null),onSettled:()=>{v.current=!1}}))},t[45]=h,t[46]=a,t[47]=r,t[48]=u,t[49]=p,t[50]=b):b=t[50],P=b,M=te,H=n,t[51]===r?re=t[52]:(re=e=>!e&&r(),t[51]=r,t[52]=re),A=K,R=`right`,z=`gap-3 overflow-y-auto border-linie bg-panel data-[side=right]:w-full data-[side=right]:sm:max-w-xl`,t[53]===Symbol.for(`react.memo_cache_sentinel`)?(B=(0,Z.jsxs)(G,{children:[(0,Z.jsx)(W,{className:`schild text-lg`,children:`Modelle selbst suchen`}),(0,Z.jsx)(ee,{className:`text-text-2`,children:`Auf Hugging Face suchen, Quantisierung wählen, installieren.`})]}),t[53]=B):B=t[53];let x;t[54]===o?x=t[55]:(x=e=>{e.preventDefault(),d(null),l(o.trim())},t[54]=o,t[55]=x);let S;t[56]===Symbol.for(`react.memo_cache_sentinel`)?(S=(0,Z.jsx)(`label`,{htmlFor:`hf-suche`,className:`sr-only`,children:`Suchbegriff`}),t[56]=S):S=t[56];let w;t[57]===Symbol.for(`react.memo_cache_sentinel`)?(w=e=>s(e.target.value),t[57]=w):w=t[57];let T;t[58]===o?T=t[59]:(T=(0,Z.jsx)(`input`,{id:`hf-suche`,value:o,onChange:w,placeholder:`z. B. Qwen3.8 GGUF`,className:`h-11 min-w-0 flex-1 rounded-lg border border-linie-stark bg-erhaben px-3 text-[15px] outline-none focus:border-cyan`}),t[58]=o,t[59]=T);let E;t[60]===Symbol.for(`react.memo_cache_sentinel`)?(E=(0,Z.jsx)(U,{type:`submit`,children:`Suchen`}),t[60]=E):E=t[60],t[61]!==x||t[62]!==T?(V=(0,Z.jsxs)(`form`,{className:`flex gap-2 px-4`,onSubmit:x,children:[S,T,E]}),t[61]=x,t[62]=T,t[63]=V):V=t[63],q=`flex flex-col px-4 pb-4`,t[64]!==u||t[65]!==C?(I=!u&&(0,Z.jsxs)(Z.Fragment,{children:[C.isFetching&&(0,Z.jsx)(`p`,{role:`status`,className:`py-3 text-sm text-text-2`,children:`Suche läuft …`}),!C.isFetching&&C.isError&&(0,Z.jsxs)(`p`,{role:`alert`,className:`py-3 text-sm text-rot-text`,children:[`Die Suche ging nicht: `,C.error.message]}),!C.isFetching&&C.data?.results.length===0&&(0,Z.jsx)(`p`,{className:`py-3 text-sm text-text-2`,children:`Keine Treffer. Versuch einen anderen Suchbegriff — oder Hugging Face ist gerade nicht erreichbar.`}),C.data?.results.map(e=>(0,Z.jsxs)(`button`,{type:`button`,onClick:()=>d(e.repo),className:`flex min-h-11 items-center justify-between gap-3 border-t border-linie py-2 text-left hover:text-cyan`,children:[(0,Z.jsx)(`span`,{className:`ziffern min-w-0 text-sm break-all`,children:e.repo}),(0,Z.jsxs)(`span`,{className:`ziffern shrink-0 text-xs text-text-3`,children:[f(e.downloads),` ↓`]})]},e.repo))]}),t[64]=u,t[65]=C,t[66]=I):I=t[66],L=u&&(0,Z.jsxs)(`div`,{className:`flex flex-col gap-3 pt-2`,children:[(0,Z.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,Z.jsx)(`span`,{className:`ziffern min-w-0 text-sm break-all`,children:u}),(0,Z.jsx)(U,{variant:`ghost`,size:`sm`,onClick:()=>d(null),children:`Zurück`})]}),(0,Z.jsxs)(`label`,{className:`flex flex-wrap items-center gap-3 text-sm text-text-2`,children:[`Rolle`,(0,Z.jsxs)(`select`,{value:p,onChange:e=>m(e.target.value),className:`h-11 min-w-0 rounded-lg border border-linie-stark bg-erhaben px-3 text-foreground`,children:[(0,Z.jsx)(`option`,{value:``,children:`ohne Rolle (nur installieren)`}),Object.entries(Xe).map(Qe)]})]}),N&&(0,Z.jsx)(`p`,{className:`m-0 rounded-lg border border-bernstein/60 bg-bernstein-grund px-3 py-2.5 text-sm leading-relaxed text-bernstein`,children:N}),O.isFetching&&(0,Z.jsx)(`p`,{role:`status`,className:`text-sm text-text-2`,children:`Quantisierungen werden gelesen …`}),!O.isFetching&&O.isError&&(0,Z.jsxs)(`p`,{role:`alert`,className:`text-sm text-rot-text`,children:[`Die Dateien dieses Modells ließen sich nicht lesen: `,O.error.message]}),!O.isFetching&&O.data&&e.length===0&&(0,Z.jsx)(`p`,{className:`text-sm text-text-2`,children:`Hier gibt es keine GGUF-Dateien, die sich installieren lassen.`}),e.map(e=>{let t=e.quant??e.name??`?`,n=e.total_bytes??e.size_bytes;return(0,Z.jsxs)(`div`,{className:`flex items-center justify-between gap-3 border-t border-linie py-2`,children:[(0,Z.jsx)(`span`,{className:`ziffern text-sm`,children:t}),(0,Z.jsxs)(`span`,{className:`flex items-center gap-3`,children:[n?(0,Z.jsx)(`span`,{className:`ziffern text-xs text-text-3`,children:g(n,1)}):null,(0,Z.jsx)(U,{variant:`outline`,size:`sm`,disabled:a.isPending,onClick:()=>_({quant:t,bytes:n}),children:`Installieren`})]})]},t)})]}),t[14]=h,t[15]=o,t[16]=a,t[17]=n,t[18]=r,t[19]=O.data,t[20]=O.error,t[21]=O.isError,t[22]=O.isFetching,t[23]=u,t[24]=p,t[25]=i,t[26]=C,t[27]=A,t[28]=M,t[29]=N,t[30]=P,t[31]=I,t[32]=L,t[33]=R,t[34]=z,t[35]=B,t[36]=V,t[37]=H,t[38]=re,t[39]=q}else A=t[27],M=t[28],N=t[29],P=t[30],I=t[31],L=t[32],R=t[33],z=t[34],B=t[35],V=t[36],H=t[37],re=t[38],q=t[39];let J;t[67]!==I||t[68]!==L||t[69]!==q?(J=(0,Z.jsxs)(`div`,{className:q,children:[I,L]}),t[67]=I,t[68]=L,t[69]=q,t[70]=J):J=t[70];let oe=h!==null,Q;t[71]!==h||t[72]!==u?(Q=h&&u?`${u} (${h.quant}${h.bytes?`, ${g(h.bytes,1)}`:``}) wird heruntergeladen und in llama-swap eingetragen.`+(h.bytes?``:` Die Größe siehst du beim Auftrag, sobald der Download läuft.`):``,t[71]=h,t[72]=u,t[73]=Q):Q=t[73];let se=a.isPending?`Wird gestartet …`:`Installieren`,ce=a.isPending,le;t[74]===Symbol.for(`react.memo_cache_sentinel`)?(le=()=>_(null),t[74]=le):le=t[74];let ue;t[75]===N?ue=t[76]:(ue=N&&(0,Z.jsx)(`p`,{className:`m-0 rounded-lg border border-bernstein/60 bg-bernstein-grund px-3 py-2.5 text-[15px] leading-relaxed text-bernstein`,children:N}),t[75]=N,t[76]=ue);let de=!!p,fe;t[77]===de?fe=t[78]:(fe=ie(de),t[77]=de,t[78]=fe);let pe;t[79]===fe?pe=t[80]:(pe=(0,Z.jsx)(`p`,{className:`m-0 text-[15px] leading-relaxed text-text-2`,children:fe}),t[79]=fe,t[80]=pe);let me;t[81]!==a.isPending||t[82]!==P||t[83]!==oe||t[84]!==Q||t[85]!==se||t[86]!==ue||t[87]!==pe?(me=(0,Z.jsxs)(ne,{offen:oe,titel:`Modell installieren?`,text:Q,knopf:se,gesperrt:ce,onNein:le,onJa:P,children:[ue,pe]}),t[81]=a.isPending,t[82]=P,t[83]=oe,t[84]=Q,t[85]=se,t[86]=ue,t[87]=pe,t[88]=me):me=t[88];let he;t[89]!==A||t[90]!==R||t[91]!==z||t[92]!==B||t[93]!==V||t[94]!==J||t[95]!==me?(he=(0,Z.jsxs)(A,{side:R,className:z,children:[B,V,J,me]}),t[89]=A,t[90]=R,t[91]=z,t[92]=B,t[93]=V,t[94]=J,t[95]=me,t[96]=he):he=t[96];let ge;return t[97]!==M||t[98]!==H||t[99]!==re||t[100]!==he?(ge=(0,Z.jsx)(M,{open:H,onOpenChange:re,children:he}),t[97]=M,t[98]=H,t[99]=re,t[100]=he,t[101]=ge):ge=t[101],ge}function Qe(e){let[t,n]=e;return(0,Z.jsx)(`option`,{value:t,children:n},t)}function $e(e){return typeof e==`string`?{quant:e}:e}var et=115;function tt(e){let t=(0,Y.c)(55),{modelle:n,laufend:r}=e,i=b(),a=m(),o,s,c,l,u,d,f,p,g,_;if(t[0]!==r||t[1]!==i?.ram_total||t[2]!==i?.ram_used||t[3]!==n||t[4]!==a){let e=h(i?.ram_total??a.data?.box.ram_total)??122.7,m=h(i?.ram_used??a.data?.box.ram_used)??0,v;t[15]===r?v=t[16]:(v=e=>r.includes(e.name),t[15]=r,t[16]=v);let y=n.filter(v).reduce(nt,0);s=Math.max(0,m-y);let b=t=>`${Math.min(100,t/e*100)}%`;o=E,p=`Speicher`,g=(0,Z.jsxs)(`span`,{className:`ziffern text-sm text-text-2`,children:[Math.round(m),` von `,Math.round(e),` GB belegt · Grenze ~`,et,` GB`]});let x=`Speicher: ${Math.round(m)} von ${Math.round(e)} GB belegt`,S=b(m),C;t[17]===S?C=t[18]:(C={width:S},t[17]=S,t[18]=C);let w=`${m?y/m*100:0}%`,T;t[19]===w?T=t[20]:(T=(0,Z.jsx)(`div`,{className:`h-full bg-cyan`,style:{width:w}}),t[19]=w,t[20]=T);let D=`${m?s/m*100:0}%`,O;t[21]===D?O=t[22]:(O=(0,Z.jsx)(`div`,{className:`h-full bg-cyan/35`,style:{width:D}}),t[21]=D,t[22]=O);let k;t[23]!==C||t[24]!==T||t[25]!==O?(k=(0,Z.jsxs)(`div`,{className:`absolute inset-y-0 left-0 flex overflow-hidden rounded-lg`,style:C,children:[T,O]}),t[23]=C,t[24]=T,t[25]=O,t[26]=k):k=t[26];let A=b(et),j;t[27]===A?j=t[28]:(j=(0,Z.jsx)(`div`,{className:`absolute -top-1.5 -bottom-1.5 w-0.5 bg-bernstein`,style:{left:A}}),t[27]=A,t[28]=j),t[29]!==x||t[30]!==k||t[31]!==j?(_=(0,Z.jsxs)(`div`,{className:`relative h-8 rounded-lg bg-erhaben`,role:`img`,"aria-label":x,children:[k,j]}),t[29]=x,t[30]=k,t[31]=j,t[32]=_):_=t[32],f=`flex flex-wrap gap-x-6 gap-y-2 text-sm text-text-2`,c=`flex items-center gap-2`,t[33]===Symbol.for(`react.memo_cache_sentinel`)?(l=(0,Z.jsx)(`span`,{className:`size-2.5 rounded-sm bg-cyan`}),t[33]=l):l=t[33],u=` Geladene Modelle: `,d=Math.round(y),t[0]=r,t[1]=i?.ram_total,t[2]=i?.ram_used,t[3]=n,t[4]=a,t[5]=o,t[6]=s,t[7]=c,t[8]=l,t[9]=u,t[10]=d,t[11]=f,t[12]=p,t[13]=g,t[14]=_}else o=t[5],s=t[6],c=t[7],l=t[8],u=t[9],d=t[10],f=t[11],p=t[12],g=t[13],_=t[14];let v;t[34]!==c||t[35]!==l||t[36]!==u||t[37]!==d?(v=(0,Z.jsxs)(`span`,{className:c,children:[l,u,d,` GB Dateien`]}),t[34]=c,t[35]=l,t[36]=u,t[37]=d,t[38]=v):v=t[38];let y;t[39]===Symbol.for(`react.memo_cache_sentinel`)?(y=(0,Z.jsx)(`span`,{className:`size-2.5 rounded-sm bg-cyan/35`}),t[39]=y):y=t[39];let x;t[40]===s?x=t[41]:(x=Math.round(s),t[40]=s,t[41]=x);let S;t[42]===x?S=t[43]:(S=(0,Z.jsxs)(`span`,{className:`flex items-center gap-2`,children:[y,` Cache, Dienste, System: `,x,` GB`]}),t[42]=x,t[43]=S);let C;t[44]===Symbol.for(`react.memo_cache_sentinel`)?(C=(0,Z.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,Z.jsx)(`span`,{className:`h-3 w-0.5 bg-bernstein`}),` Ab hier wird es eng`]}),t[44]=C):C=t[44];let w;t[45]!==S||t[46]!==f||t[47]!==v?(w=(0,Z.jsxs)(`div`,{className:f,children:[v,S,C]}),t[45]=S,t[46]=f,t[47]=v,t[48]=w):w=t[48];let T;return t[49]!==o||t[50]!==w||t[51]!==p||t[52]!==g||t[53]!==_?(T=(0,Z.jsxs)(o,{titel:p,rechts:g,children:[_,w]}),t[49]=o,t[50]=w,t[51]=p,t[52]=g,t[53]=_,t[54]=T):T=t[54],T}function nt(e,t){return e+(h(t.size_bytes)??0)}function rt(e){let t=(0,Y.c)(7),{name:n,wert:r}=e,i;t[0]===n?i=t[1]:(i=(0,Z.jsx)(`dt`,{className:`text-xs text-text-3`,children:n}),t[0]=n,t[1]=i);let a;t[2]===r?a=t[3]:(a=(0,Z.jsx)(`dd`,{className:`ziffern m-0 text-lg`,children:r}),t[2]=r,t[3]=a);let o;return t[4]!==i||t[5]!==a?(o=(0,Z.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[i,a]}),t[4]=i,t[5]=a,t[6]=o):o=t[6],o}function it(e){let t=(0,Y.c)(48),{titel:n,modell:r,zwilling:i,laeuft:a,nutzer:o}=e,s=z();if(!r){let e;t[0]===n?e=t[1]:(e=(0,Z.jsx)(`span`,{className:`schild text-sm text-text-3`,children:n}),t[0]=n,t[1]=e);let r;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,Z.jsx)(v,{children:`Frei`}),t[2]=r):r=t[2];let i;t[3]===e?i=t[4]:(i=(0,Z.jsxs)(`div`,{className:`flex items-center justify-between`,children:[e,r]}),t[3]=e,t[4]=i);let a,o;t[5]===Symbol.for(`react.memo_cache_sentinel`)?(a=(0,Z.jsx)(`h3`,{className:`font-anzeige text-xl font-semibold text-text-2`,children:`Nicht belegt`}),o=(0,Z.jsx)(`p`,{className:`text-sm text-text-2`,children:`Nur belegen, wenn ein Modell hier echten Mehrwert bringt. Das Radar meldet Kandidaten.`}),t[5]=a,t[6]=o):(a=t[5],o=t[6]);let s;return t[7]===i?s=t[8]:(s=(0,Z.jsxs)(`article`,{className:`flex flex-col gap-3.5 rounded-2xl border border-dashed border-linie-stark p-5`,children:[i,a,o]}),t[7]=i,t[8]=s),s}let c;t[9]!==r.ctx||t[10]!==r.parallel_slots?(c=r.ctx?Math.round(r.ctx/Math.max(1,r.parallel_slots)/1024):null,t[9]=r.ctx,t[10]=r.parallel_slots,t[11]=c):c=t[11];let l=c,u=!!r.capabilities?.vision||!!i,d;t[12]===n?d=t[13]:(d=(0,Z.jsx)(`span`,{className:`schild text-sm text-text-3`,children:n}),t[12]=n,t[13]=d);let f=a?`gruen`:`grau`,p=a?`Geladen`:`Auf Abruf`,m;t[14]!==f||t[15]!==p?(m=(0,Z.jsx)(v,{art:f,children:p}),t[14]=f,t[15]=p,t[16]=m):m=t[16];let h;t[17]!==d||t[18]!==m?(h=(0,Z.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[d,m]}),t[17]=d,t[18]=m,t[19]=h):h=t[19];let _;t[20]===r.name?_=t[21]:(_=(0,Z.jsx)(`h3`,{className:`ziffern m-0 text-lg font-medium break-all`,children:r.name}),t[20]=r.name,t[21]=_);let y;t[22]===r.size_bytes?y=t[23]:(y=g(r.size_bytes),t[22]=r.size_bytes,t[23]=y);let b;t[24]===y?b=t[25]:(b=(0,Z.jsx)(rt,{name:`Größe`,wert:y}),t[24]=y,t[25]=b);let x=l?`${l}k`:`–`,S;t[26]===x?S=t[27]:(S=(0,Z.jsx)(rt,{name:`Kontext`,wert:x}),t[26]=x,t[27]=S);let C=u?`ja`:`nein`,w;t[28]===C?w=t[29]:(w=(0,Z.jsx)(rt,{name:`Bilder`,wert:C}),t[28]=C,t[29]=w);let T;t[30]!==S||t[31]!==w||t[32]!==b?(T=(0,Z.jsxs)(`dl`,{className:`m-0 grid grid-cols-3 gap-3`,children:[b,S,w]}),t[30]=S,t[31]=w,t[32]=b,t[33]=T):T=t[33];let E=r.spec_active?` Mit Draft-Beschleunigung.`:``,D=i?` Bilder sieht es über seinen Bild-Zwilling, der nur bei Bedarf lädt.`:``,O;t[34]!==o||t[35]!==E||t[36]!==D?(O=(0,Z.jsxs)(`p`,{className:`text-sm text-text-2`,children:[`Genutzt von `,o,`.`,E,D]}),t[34]=o,t[35]=E,t[36]=D,t[37]=O):O=t[37];let k;t[38]!==s||t[39]!==a||t[40]!==r.name?(k=!a&&(0,Z.jsx)(U,{variant:`outline`,size:`sm`,className:`mt-auto self-start`,onClick:()=>s.mutate(r.name),disabled:s.isPending,children:`Jetzt laden`}),t[38]=s,t[39]=a,t[40]=r.name,t[41]=k):k=t[41];let A;return t[42]!==T||t[43]!==O||t[44]!==k||t[45]!==h||t[46]!==_?(A=(0,Z.jsxs)(`article`,{className:`flex flex-col gap-3.5 rounded-2xl border border-linie bg-panel p-5`,children:[h,_,T,O,k]}),t[42]=T,t[43]=O,t[44]=k,t[45]=h,t[46]=_,t[47]=A):A=t[47],A}var at={bestanden:`gruen`,durchgefallen:`rot`,wartet:`cyan`,neu:`cyan`,getestet:`grau`,uebernommen:`gruen`,verworfen:`grau`},ot={besser:`text-gruen`,schlechter:`text-rot-text`,gleich:`text-text-2`};function st(e){let t=(0,Y.c)(4),{test:n}=e,r,i;if(t[0]!==n.vergleich){i=Symbol.for(`react.early_return_sentinel`);bb0:{let e=Object.entries(n.vergleich??{});if(e.length===0){i=null;break bb0}let a;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(a=(0,Z.jsxs)(`div`,{role:`row`,className:`schild grid grid-cols-[minmax(0,1fr)_auto_auto] gap-x-4 pb-1 text-xs text-text-3`,children:[(0,Z.jsx)(`span`,{role:`columnheader`,children:`Messwert`}),(0,Z.jsx)(`span`,{role:`columnheader`,className:`text-right`,children:`Kandidat`}),(0,Z.jsx)(`span`,{role:`columnheader`,className:`text-right`,children:`Heute`})]}),t[3]=a):a=t[3],r=(0,Z.jsxs)(`div`,{role:`table`,"aria-label":`Messwerte gegen das heutige Modell`,className:`rounded-lg border border-linie bg-erhaben/50 px-3 py-2 text-sm`,children:[a,e.map(ct)]})}t[0]=n.vergleich,t[1]=r,t[2]=i}else r=t[1],i=t[2];return i===Symbol.for(`react.early_return_sentinel`)?r:i}function ct(e){let[t,n]=e;return(0,Z.jsxs)(`div`,{role:`row`,className:`grid grid-cols-[minmax(0,1fr)_auto_auto] gap-x-4 border-t border-linie py-1`,children:[(0,Z.jsx)(`span`,{role:`rowheader`,className:`text-text-2`,children:t}),(0,Z.jsx)(`span`,{role:`cell`,className:`ziffern text-right ${ot[n.urteil??``]??`text-text-2`}`,children:C(n.kandidat,n.einheit)}),(0,Z.jsx)(`span`,{role:`cell`,className:`ziffern text-right text-text-3`,children:C(n.baseline,n.einheit)})]},t)}function lt(e){let t=(0,Y.c)(80),{k:n,test:r,heute:i}=e,a=N(),o=V(),[s,c]=(0,X.useState)(null),l;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(l=[`bestanden`,`wartet`,`neu`,`getestet`],t[0]=l):l=t[0];let u=l.includes(n.status),d=n.rolle===`hirn`,f;t[1]===n.name?f=t[2]:(f=(0,Z.jsx)(`span`,{className:`ziffern text-[15px] font-medium`,children:n.name}),t[1]=n.name,t[2]=f);let p=d?`fürs Hirn`:`fürs Coden`,m;t[3]===p?m=t[4]:(m=(0,Z.jsx)(v,{art:`cyan`,children:p}),t[3]=p,t[4]=m);let h;t[5]!==n.eng||t[6]!==n.groesse_gb||t[7]!==n.passt?(h=n.groesse_gb!=null&&(0,Z.jsx)(v,{art:n.eng?`bernstein`:n.passt?`gruen`:`rot`,children:n.eng?`passt knapp`:n.passt?`passt`:`passt nicht`}),t[5]=n.eng,t[6]=n.groesse_gb,t[7]=n.passt,t[8]=h):h=t[8];let g=at[n.status]??`grau`,_=S[n.status]??n.status,y;t[9]!==g||t[10]!==_?(y=(0,Z.jsx)(v,{art:g,children:_}),t[9]=g,t[10]=_,t[11]=y):y=t[11];let b;t[12]!==f||t[13]!==m||t[14]!==h||t[15]!==y?(b=(0,Z.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[f,m,h,y]}),t[12]=f,t[13]=m,t[14]=h,t[15]=y,t[16]=b):b=t[16];let x;t[17]===n.groesse_gb?x=t[18]:(x=n.groesse_gb==null?``:`${n.groesse_gb.toLocaleString(`de-DE`)} GB. `,t[17]=n.groesse_gb,t[18]=x);let C;t[19]!==n.begruendung||t[20]!==x?(C=(0,Z.jsxs)(`p`,{className:`text-sm text-text-2`,children:[x,n.begruendung]}),t[19]=n.begruendung,t[20]=x,t[21]=C):C=t[21];let w;t[22]!==n.status||t[23]!==r?(w=r&&[`bestanden`,`durchgefallen`].includes(n.status)&&(0,Z.jsx)(st,{test:r}),t[22]=n.status,t[23]=r,t[24]=w):w=t[24];let T;t[25]!==n.begruendung||t[26]!==n.testbar_grund?(T=n.testbar_grund&&!n.begruendung.startsWith(`Läuft gerade`)&&(0,Z.jsx)(`p`,{className:`text-xs text-text-3`,children:n.testbar_grund}),t[25]=n.begruendung,t[26]=n.testbar_grund,t[27]=T):T=t[27];let E;t[28]!==a.isPending||t[29]!==n.status||t[30]!==n.testbar_jetzt||t[31]!==u||t[32]!==o.isPending?(E=u&&(0,Z.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[n.testbar_jetzt&&(0,Z.jsx)(U,{variant:`info`,size:`sm`,disabled:o.isPending,onClick:()=>c(`testen`),children:`Jetzt testen`}),n.status===`bestanden`&&(0,Z.jsx)(U,{size:`sm`,disabled:a.isPending,onClick:()=>c(`uebernehmen`),children:`Übernehmen`}),(0,Z.jsx)(U,{variant:`outline`,size:`sm`,disabled:a.isPending,onClick:()=>c(`verwerfen`),children:`Verwerfen`})]}),t[28]=a.isPending,t[29]=n.status,t[30]=n.testbar_jetzt,t[31]=u,t[32]=o.isPending,t[33]=E):E=t[33];let D=s===`uebernehmen`,O=`${n.name} übernehmen?`,k=d?`${n.name} wird Lucys Hirn${i?` und löst ${i} ab`:``}. NerdQuiz und OpenChamber nutzen ab dann ebenfalls das neue Modell. Hermes startet dafür kurz neu, Lucy ist etwa eine Minute nicht erreichbar. Das alte Modell bleibt auf der Platte.`:`${n.name} wird der Coder${i?` und löst ${i} ab`:``}. OpenChamber plant und baut ab dann damit. Das alte Modell bleibt auf der Platte.`,A;t[34]===Symbol.for(`react.memo_cache_sentinel`)?(A=()=>c(null),t[34]=A):A=t[34];let j;t[35]!==a||t[36]!==s||t[37]!==n.id||t[38]!==n.name?(j=()=>{s===`uebernehmen`&&(a.mutate({id:n.id,aktion:`uebernehmen`,name:n.name}),c(null))},t[35]=a,t[36]=s,t[37]=n.id,t[38]=n.name,t[39]=j):j=t[39];let M;t[40]!==a.isPending||t[41]!==D||t[42]!==O||t[43]!==k||t[44]!==j?(M=(0,Z.jsx)(ne,{offen:D,titel:O,text:k,knopf:`Übernehmen`,gesperrt:a.isPending,onNein:A,onJa:j}),t[40]=a.isPending,t[41]=D,t[42]=O,t[43]=k,t[44]=j,t[45]=M):M=t[45];let P=s===`testen`,F=`${n.name} jetzt testen?`,I;t[46]===n.groesse_gb?I=t[47]:(I=n.groesse_gb==null?``:` (${n.groesse_gb.toLocaleString(`de-DE`)} GB)`,t[46]=n.groesse_gb,t[47]=I);let L=`Das Radar lädt ${n.name}${I} herunter, falls nötig, misst das heutige Modell der Rolle und dann den Kandidaten. Das dauert je nach Download eine halbe bis zwei Stunden. Solange antworten Lucy und NerdQuiz etwas langsamer; ein geladener Coder wird dafür entladen, und wird er währenddessen gebraucht, bricht der Test ab. Das Ergebnis kommt als Meldung; fällt der Kandidat durch, werden seine Dateien gelöscht.`,R;t[48]===Symbol.for(`react.memo_cache_sentinel`)?(R=()=>c(null),t[48]=R):R=t[48];let z;t[49]!==s||t[50]!==n.id||t[51]!==n.name||t[52]!==o?(z=()=>{s===`testen`&&(o.mutate({id:n.id,name:n.name}),c(null))},t[49]=s,t[50]=n.id,t[51]=n.name,t[52]=o,t[53]=z):z=t[53];let B;t[54]!==P||t[55]!==F||t[56]!==L||t[57]!==z||t[58]!==o.isPending?(B=(0,Z.jsx)(ne,{offen:P,titel:F,text:L,knopf:`Jetzt testen`,gesperrt:o.isPending,onNein:R,onJa:z}),t[54]=P,t[55]=F,t[56]=L,t[57]=z,t[58]=o.isPending,t[59]=B):B=t[59];let H=s===`verwerfen`,W=`${n.name} verwerfen?`,G;t[60]===Symbol.for(`react.memo_cache_sentinel`)?(G=()=>c(null),t[60]=G):G=t[60];let K;t[61]!==a||t[62]!==s||t[63]!==n.id||t[64]!==n.name?(K=()=>{s===`verwerfen`&&(a.mutate({id:n.id,aktion:`verwerfen`,name:n.name}),c(null))},t[61]=a,t[62]=s,t[63]=n.id,t[64]=n.name,t[65]=K):K=t[65];let ee;t[66]!==a.isPending||t[67]!==H||t[68]!==W||t[69]!==K?(ee=(0,Z.jsx)(ne,{offen:H,gefahr:!0,titel:W,text:`Die heruntergeladenen Dateien werden gelöscht, und das Radar testet dieses Modell nicht noch einmal.`,knopf:`Verwerfen`,gesperrt:a.isPending,onNein:G,onJa:K}),t[66]=a.isPending,t[67]=H,t[68]=W,t[69]=K,t[70]=ee):ee=t[70];let te;return t[71]!==C||t[72]!==w||t[73]!==T||t[74]!==E||t[75]!==M||t[76]!==B||t[77]!==ee||t[78]!==b?(te=(0,Z.jsxs)(`li`,{className:`flex flex-col gap-2 border-t border-linie py-3.5`,children:[b,C,w,T,E,M,B,ee]}),t[71]=C,t[72]=w,t[73]=T,t[74]=E,t[75]=M,t[76]=B,t[77]=ee,t[78]=b,t[79]=te):te=t[79],te}function ut(e){let t=(0,Y.c)(30),{hirn:n,coder:r}=e,i=P(),a=B(),o=I(),s=R(),c=o.data?.jobs,l=(c??[]).filter(ft).at(-1),d=a.data?.job_id,f;t[0]!==d||t[1]!==c?(f=!!d&&!!c&&!c.some(e=>e.id===d),t[0]=d,t[1]=c,t[2]=f):f=t[2];let p=f,m=a.isPending||p||l!==void 0&&w(l),h=(0,X.useRef)(m);if((0,X.useEffect)(()=>{h.current&&!m&&s.invalidateQueries({queryKey:[`radar`]}),h.current=m},[m,s]),i.isError&&!i.data){let e=i.error instanceof u&&i.error.status===404,n;return t[3]!==e||t[4]!==i.error?(n=(0,Z.jsx)(E,{titel:`Modell-Radar`,id:`radar`,className:`scroll-mt-4`,children:e?(0,Z.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Das Radar ist auf dieser Box noch nicht eingerichtet.`}):(0,Z.jsxs)(`p`,{role:`alert`,className:`text-[15px] text-rot-text`,children:[`Das Radar antwortet gerade nicht: `,i.error.message]})}),t[3]=e,t[4]=i.error,t[5]=n):n=t[5],n}let g=i.data,v=E,y;t[6]===a?y=t[7]:(y=()=>a.mutate(void 0),t[6]=a,t[7]=y);let b=m?`Sucht …`:`Jetzt suchen`,x;t[8]!==m||t[9]!==y||t[10]!==b?(x=(0,Z.jsx)(U,{variant:`info`,size:`sm`,onClick:y,disabled:m,children:b}),t[8]=m,t[9]=y,t[10]=b,t[11]=x):x=t[11];let S;t[12]===g?S=t[13]:(S=g?.naechster_test?` Nächster Test: ${_(g.naechster_test)}.`:``,t[12]=g,t[13]=S);let C=m?` Sucht gerade bei Hugging Face. Das dauert ein paar Minuten; den Stand zeigt der Auftrag oben unter „Aufträge“.`:``,T;t[14]!==S||t[15]!==C?(T=(0,Z.jsxs)(`p`,{className:`-mt-2 text-sm text-text-2`,children:[`Testet nachts zwischen 00:30 und 02:30 selbst, höchstens einen Kandidaten pro Woche. Tagsüber geht es mit „Jetzt testen“, wenn der Kandidat samt Coder in den Speicher passt.`,S,C]}),t[14]=S,t[15]=C,t[16]=T):T=t[16];let D=!m&&l?.state===`failed`&&(0,Z.jsxs)(`p`,{role:`alert`,className:`text-sm text-rot-text`,children:[`Die letzte Suche ist gescheitert: `,re(l)??`ohne Meldung`]}),O;t[17]!==r||t[18]!==g||t[19]!==n?(O=g?g.kandidaten.length===0?(0,Z.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Nichts Besseres in Sicht.`}):(0,Z.jsx)(`ul`,{className:`m-0 flex list-none flex-col p-0`,children:g.kandidaten.map(e=>(0,Z.jsx)(lt,{k:e,test:g.tests.find(t=>t.kandidat===e.id),heute:e.rolle===`hirn`?n:r},e.id))}):(0,Z.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Wird gelesen …`}),t[17]=r,t[18]=g,t[19]=n,t[20]=O):O=t[20];let k;t[21]===g?k=t[22]:(k=g&&g.tests.length>0&&(0,Z.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,Z.jsx)(`h3`,{className:`schild text-xs text-text-3`,children:`Letzte Tests`}),g.tests.slice(0,3).map(dt)]}),t[21]=g,t[22]=k);let A;return t[23]!==v||t[24]!==T||t[25]!==D||t[26]!==O||t[27]!==k||t[28]!==x?(A=(0,Z.jsxs)(v,{titel:`Modell-Radar`,id:`radar`,className:`scroll-mt-4`,rechts:x,children:[T,D,O,k]}),t[23]=v,t[24]=T,t[25]=D,t[26]=O,t[27]=k,t[28]=x,t[29]=A):A=t[29],A}function dt(e){return(0,Z.jsxs)(`p`,{className:`text-sm text-text-2`,children:[(0,Z.jsx)(`span`,{className:`ziffern text-text-3`,children:_(e.datum)}),` · `,e.zusammenfassung]},e.id)}function ft(e){return e.group===`radar`}var pt=`text-rot-text hover:bg-rot-grund hover:text-rot-text`;function mt(e){let t=(0,Y.c)(13),{titel:n,zusatz:r,children:i}=e,a;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(a=(0,Z.jsx)(c,{className:`size-4 text-text-3 transition-transform group-open:rotate-90`,"aria-hidden":!0}),t[0]=a):a=t[0];let o;t[1]===n?o=t[2]:(o=(0,Z.jsxs)(`span`,{className:`flex items-center gap-2 text-[15px] font-medium`,children:[a,n]}),t[1]=n,t[2]=o);let s;t[3]===r?s=t[4]:(s=(0,Z.jsx)(`span`,{className:`ziffern text-sm text-text-2`,children:r}),t[3]=r,t[4]=s);let l;t[5]!==o||t[6]!==s?(l=(0,Z.jsxs)(`summary`,{className:`flex min-h-12 cursor-pointer list-none items-center justify-between gap-3 [&::-webkit-details-marker]:hidden`,children:[o,s]}),t[5]=o,t[6]=s,t[7]=l):l=t[7];let u;t[8]===i?u=t[9]:(u=(0,Z.jsx)(`div`,{className:`flex flex-col gap-2 pb-1`,children:i}),t[8]=i,t[9]=u);let d;return t[10]!==l||t[11]!==u?(d=(0,Z.jsxs)(`details`,{className:`group rounded-xl border border-linie bg-erhaben/40 px-4 open:pb-2`,children:[l,u]}),t[10]=l,t[11]=u,t[12]=d):d=t[12],d}function ht(){let e=(0,Y.c)(37),t=y(),n=x(),[r,i]=(0,X.useState)(null),a,o,s,c,l,u;if(e[0]!==t.data||e[1]!==t.error||e[2]!==t.isError||e[3]!==t.isPending||e[4]!==n){u=Symbol.for(`react.early_return_sentinel`);bb0:{let r=t.data?.kandidaten??[],d=r.reduce(gt,0);if(t.isError&&!t.data){let n;e[11]===t.error.message?n=e[12]:(n=(0,Z.jsxs)(`p`,{role:`alert`,className:`text-[15px] text-rot-text`,children:[`Was sich aufräumen ließe, lässt sich gerade nicht lesen: `,t.error.message]}),e[11]=t.error.message,e[12]=n);let r;e[13]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,Z.jsx)(vt,{}),e[13]=r):r=e[13];let i;e[14]===n?i=e[15]:(i=(0,Z.jsxs)(E,{titel:`Aufräumen`,children:[n,r]}),e[14]=n,e[15]=i),u=i;break bb0}a=E,o=`Aufräumen`,s=r.length>0?(0,Z.jsxs)(`span`,{className:`ziffern text-sm text-text-2`,children:[`bis zu `,d.toLocaleString(`de-DE`,{maximumFractionDigits:0}),` GB frei`]}):void 0,e[16]===Symbol.for(`react.memo_cache_sentinel`)?(c=(0,Z.jsx)(`p`,{className:`-mt-2 text-sm text-text-2`,children:`Modelle und Ordner, die gerade niemand nutzt. Nichts davon wird von selbst gelöscht, das entscheidest du je Eintrag.`}),e[16]=c):c=e[16],l=t.isPending?(0,Z.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Wird gelesen …`}):r.length===0?(0,Z.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Nichts aufzuräumen.`}):(0,Z.jsx)(mt,{titel:`Modelle und Ordner`,zusatz:`${r.length} Einträge · bis zu ${d.toLocaleString(`de-DE`,{maximumFractionDigits:0})} GB`,children:(0,Z.jsx)(`ul`,{className:`m-0 flex list-none flex-col p-0`,children:r.map(e=>(0,Z.jsxs)(`li`,{className:`flex flex-wrap items-center justify-between gap-3 border-t border-linie py-3`,children:[(0,Z.jsxs)(`span`,{className:`flex min-w-0 flex-1 flex-col gap-1`,children:[(0,Z.jsxs)(`span`,{className:`flex flex-wrap items-center gap-2`,children:[(0,Z.jsx)(`span`,{className:`ziffern text-sm break-all`,children:e.name}),(0,Z.jsx)(v,{children:e.art===`eintrag`?`Eintrag`:`Ordner`})]}),(0,Z.jsx)(`span`,{className:`text-sm text-text-2`,children:e.hinweis})]}),(0,Z.jsxs)(`span`,{className:`flex items-center gap-3`,children:[(0,Z.jsxs)(`span`,{className:`ziffern text-sm text-text-2`,children:[e.groesse_gb.toLocaleString(`de-DE`),` GB`]}),(0,Z.jsx)(U,{variant:`ghost`,size:`sm`,className:pt,disabled:n.isPending,onClick:()=>i(e),children:`Löschen`})]})]},`${e.art}-${e.name}`))})})}e[0]=t.data,e[1]=t.error,e[2]=t.isError,e[3]=t.isPending,e[4]=n,e[5]=a,e[6]=o,e[7]=s,e[8]=c,e[9]=l,e[10]=u}else a=e[5],o=e[6],s=e[7],c=e[8],l=e[9],u=e[10];if(u!==Symbol.for(`react.early_return_sentinel`))return u;let d=r!==null,f=`${r?.name??``} löschen?`,p;e[17]===r?.groesse_gb?p=e[18]:(p=r?.groesse_gb.toLocaleString(`de-DE`)??``,e[17]=r?.groesse_gb,e[18]=p);let m=`${r?.hinweis??``} Es werden ${p} GB frei. Das lässt sich nicht rückgängig machen — zurück ginge es nur mit einem neuen Download.`,h;e[19]===Symbol.for(`react.memo_cache_sentinel`)?(h=()=>i(null),e[19]=h):h=e[19];let g;e[20]!==r||e[21]!==n?(g=()=>{r&&n.mutate(r),i(null)},e[20]=r,e[21]=n,e[22]=g):g=e[22];let _;e[23]!==n.isPending||e[24]!==g||e[25]!==d||e[26]!==f||e[27]!==m?(_=(0,Z.jsx)(ne,{offen:d,gefahr:!0,titel:f,text:m,knopf:`Endgültig löschen`,gesperrt:n.isPending,onNein:h,onJa:g}),e[23]=n.isPending,e[24]=g,e[25]=d,e[26]=f,e[27]=m,e[28]=_):_=e[28];let b;e[29]===Symbol.for(`react.memo_cache_sentinel`)?(b=(0,Z.jsx)(vt,{}),e[29]=b):b=e[29];let S;return e[30]!==a||e[31]!==o||e[32]!==s||e[33]!==_||e[34]!==c||e[35]!==l?(S=(0,Z.jsxs)(a,{titel:o,rechts:s,children:[c,l,_,b]}),e[30]=a,e[31]=o,e[32]=s,e[33]=_,e[34]=c,e[35]=l,e[36]=S):S=e[36],S}function gt(e,t){return e+t.groesse_gb}function _t(e){return e>=1e9?`${(e/1e9).toLocaleString(`de-DE`,{maximumFractionDigits:1})} GB`:e>=1e6?`${Math.round(e/1e6)} MB`:e>=1e3?`${Math.round(e/1e3)} KB`:`unter 1 KB`}function vt(){let e=(0,Y.c)(23),t=d(),n=H(),[r,i]=(0,X.useState)(null),a,o;if(e[0]!==t.data||e[1]!==t.error||e[2]!==t.isError||e[3]!==t.isPending||e[4]!==n.isPending){let r=t.data?.altreste??[],s=r.reduce(yt,0);a=`flex flex-col gap-2`,o=t.isPending?(0,Z.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Wird gelesen …`}):t.isError&&!t.data?(0,Z.jsxs)(`p`,{role:`alert`,className:`text-[15px] text-rot-text`,children:[`Die Altreste lassen sich gerade nicht lesen: `,t.error.message]}):r.length===0?(0,Z.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Keine Altreste mehr.`}):(0,Z.jsxs)(mt,{titel:`Altreste neben dem Betrieb`,zusatz:`${r.length} Einträge · ${_t(s)}`,children:[(0,Z.jsx)(`p`,{className:`text-sm text-text-2`,children:`Test-Ordner, alte Umgebungen und Arbeitskopien, die nichts mehr nutzt. Die Box prüft sie gegen eine feste Liste und löscht auch hier nie von selbst.`}),(0,Z.jsx)(`ul`,{className:`m-0 flex list-none flex-col p-0`,children:r.map(e=>(0,Z.jsxs)(`li`,{className:`flex flex-wrap items-center justify-between gap-3 border-t border-linie py-3`,children:[(0,Z.jsxs)(`span`,{className:`flex min-w-0 flex-1 flex-col gap-1`,children:[(0,Z.jsxs)(`span`,{className:`flex flex-wrap items-center gap-2`,children:[(0,Z.jsx)(`span`,{className:`text-sm`,children:e.name}),(0,Z.jsx)(v,{children:`Altrest`})]}),(0,Z.jsx)(`span`,{className:`ziffern text-xs break-all text-text-3`,children:e.pfade.join(` · `)}),(0,Z.jsx)(`span`,{className:`text-sm text-text-2`,children:e.hinweis})]}),(0,Z.jsxs)(`span`,{className:`flex items-center gap-3`,children:[(0,Z.jsx)(`span`,{className:`ziffern text-sm text-text-2`,children:e.groesse}),(0,Z.jsx)(U,{variant:`ghost`,size:`sm`,className:pt,disabled:n.isPending,onClick:()=>i(e),children:`Löschen`})]})]},e.id))})]}),e[0]=t.data,e[1]=t.error,e[2]=t.isError,e[3]=t.isPending,e[4]=n.isPending,e[5]=a,e[6]=o}else a=e[5],o=e[6];let s=r!==null,c=`${r?.name??``} löschen?`,l;e[7]===r?.pfade?l=e[8]:(l=r?.pfade.join(`, `)??``,e[7]=r?.pfade,e[8]=l);let u=`${r?.hinweis??``} Gelöscht wird: ${l} (${r?.groesse??``}). Das lässt sich nicht rückgängig machen.`,f;e[9]===Symbol.for(`react.memo_cache_sentinel`)?(f=()=>i(null),e[9]=f):f=e[9];let p;e[10]!==r||e[11]!==n?(p=()=>{r&&n.mutate(r),i(null)},e[10]=r,e[11]=n,e[12]=p):p=e[12];let m;e[13]!==n.isPending||e[14]!==s||e[15]!==c||e[16]!==u||e[17]!==p?(m=(0,Z.jsx)(ne,{offen:s,gefahr:!0,titel:c,text:u,knopf:`Endgültig löschen`,gesperrt:n.isPending,onNein:f,onJa:p}),e[13]=n.isPending,e[14]=s,e[15]=c,e[16]=u,e[17]=p,e[18]=m):m=e[18];let h;return e[19]!==a||e[20]!==o||e[21]!==m?(h=(0,Z.jsxs)(`div`,{className:a,children:[o,m]}),e[19]=a,e[20]=o,e[21]=m,e[22]=h):h=e[22],h}function yt(e,t){return e+t.groesse_bytes}function bt(){let e=(0,Y.c)(69),t=O(),n=M(),r=P(),i=I(),[a,o]=(0,X.useState)(!1),s;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(s={select:wt},e[0]=s):s=e[0];let c=oe(s),u=!!t.data&&!n.isPending&&!r.isPending&&!i.isPending,d,f;if(e[1]!==u||e[2]!==c?(d=()=>{u&&c===`radar`&&document.getElementById(`radar`)?.scrollIntoView({block:`start`})},f=[u,c],e[1]=u,e[2]=c,e[3]=d,e[4]=f):(d=e[3],f=e[4]),(0,X.useEffect)(d,f),t.isPending){let t;return e[5]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,Z.jsx)(p,{text:`Modelle werden gelesen …`}),e[5]=t):t=e[5],t}if(!t.data){let n=`Die Modell-Liste fehlt: ${t.error?.message??`keine Daten`}`,r;return e[6]===n?r=e[7]:(r=(0,Z.jsx)(p,{fehler:!0,text:n}),e[6]=n,e[7]=r),r}let m=t.data.models,h=t.data.running,v,y,b,x,S,C,w,T,D,k,A,j,N;if(e[8]!==h||e[9]!==m||e[10]!==n.data||e[11]!==n.error?.message||e[12]!==n.isPending){let t=m.find(Ct);y=m.find(St);let r;e[26]===m?r=e[27]:(r=(e,t)=>e?m.find(n=>n!==e&&n.aliases.includes(t)&&n.filename===e.filename):void 0,e[26]=m,e[27]=r);let i=r,a=i(t,`vision`);b=i(y,`coder-bild`);let s=m.filter(e=>![t,y,a,b].includes(e)),c;e[28]===n.data?.zuletzt_geladen?c=e[29]:(c=n.data?.zuletzt_geladen??{},e[28]=n.data?.zuletzt_geladen,e[29]=c);let u=c,d={};for(let[e,n]of[[t,`Hirn`],[y,`Coder`],[a,`Bild-Zwilling des Hirns`],[b,`Bild-Zwilling des Coders`]])e&&(d[e.name]=n);e[30]!==h||e[31]!==m?(j=(0,Z.jsx)(tt,{modelle:m,laufend:h}),e[30]=h,e[31]=m,e[32]=j):j=e[32],e[33]===Symbol.for(`react.memo_cache_sentinel`)?(N=(0,Z.jsx)(q,{alsPanel:!0}),e[33]=N):N=e[33];let f;e[34]===Symbol.for(`react.memo_cache_sentinel`)?(f=(0,Z.jsx)(it,{titel:`Dritte Rolle`,laeuft:!1,nutzer:``}),e[34]=f):f=e[34],x=(0,Z.jsxs)(`section`,{"aria-label":`Rollen`,className:`grid gap-5 md:grid-cols-3 md:gap-6`,children:[(0,Z.jsx)(it,{titel:`Hirn`,modell:t,zwilling:a,laeuft:!!t&&h.includes(t.name),nutzer:`Lucy, NerdQuiz und OpenChamber für Kleinkram`}),(0,Z.jsx)(it,{titel:`Coder`,modell:y,zwilling:b,laeuft:!!y&&h.includes(y.name),nutzer:`OpenChamber zum Planen und Bauen und Lucys Delegation`}),f]}),S=(0,Z.jsx)(Ye,{nutzung:n.data,laedt:n.isPending,fehler:n.error?.message??null,rollen:d});let p=t?.name,O=y?.name;e[35]!==p||e[36]!==O?(C=(0,Z.jsx)(ut,{hirn:p,coder:O}),e[35]=p,e[36]=O,e[37]=C):C=e[37],v=E,D=`Weitere Einträge`,e[38]===Symbol.for(`react.memo_cache_sentinel`)?(k=(0,Z.jsxs)(U,{variant:`outline`,size:`sm`,onClick:()=>o(!0),children:[(0,Z.jsx)(l,{"aria-hidden":!0}),` Modelle selbst suchen`]}),e[38]=k):k=e[38],A=s.length===0&&(0,Z.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Keine weiteren Einträge.`}),w=`m-0 flex list-none flex-col p-0`;let M;e[39]!==h||e[40]!==u?(M=e=>(0,Z.jsxs)(`li`,{className:`grid grid-cols-[minmax(0,1fr)_auto] items-center gap-3 border-t border-linie py-2.5 sm:grid-cols-[minmax(0,1fr)_120px_160px]`,children:[(0,Z.jsxs)(`span`,{className:`min-w-0`,children:[(0,Z.jsx)(`span`,{className:`ziffern block text-sm break-all`,children:e.name}),(0,Z.jsx)(`span`,{className:`text-xs text-text-3`,children:e.aliases.length?e.aliases.join(`, `):`ohne Rolle`})]}),(0,Z.jsx)(`span`,{className:`ziffern text-sm text-text-2`,children:g(e.size_bytes)}),(0,Z.jsx)(`span`,{className:`ziffern hidden text-xs text-text-3 sm:block`,children:h.includes(e.name)?`geladen`:u[e.name]?`zuletzt ${_(u[e.name])}`:`länger nicht geladen`})]},e.name),e[39]=h,e[40]=u,e[41]=M):M=e[41],T=s.map(M),e[8]=h,e[9]=m,e[10]=n.data,e[11]=n.error?.message,e[12]=n.isPending,e[13]=v,e[14]=y,e[15]=b,e[16]=x,e[17]=S,e[18]=C,e[19]=w,e[20]=T,e[21]=D,e[22]=k,e[23]=A,e[24]=j,e[25]=N}else v=e[13],y=e[14],b=e[15],x=e[16],S=e[17],C=e[18],w=e[19],T=e[20],D=e[21],k=e[22],A=e[23],j=e[24],N=e[25];let F;e[42]!==w||e[43]!==T?(F=(0,Z.jsx)(`ul`,{className:w,children:T}),e[42]=w,e[43]=T,e[44]=F):F=e[44];let L;e[45]!==v||e[46]!==F||e[47]!==D||e[48]!==k||e[49]!==A?(L=(0,Z.jsxs)(v,{titel:D,rechts:k,children:[A,F]}),e[45]=v,e[46]=F,e[47]=D,e[48]=k,e[49]=A,e[50]=L):L=e[50];let R;e[51]===Symbol.for(`react.memo_cache_sentinel`)?(R=(0,Z.jsx)(ht,{}),e[51]=R):R=e[51];let z;e[52]===Symbol.for(`react.memo_cache_sentinel`)?(z=()=>o(!1),e[52]=z):z=e[52];let B;e[53]!==y||e[54]!==b?(B=y?{name:y.name,zwilling:!!b,weitere:y.aliases.filter(xt)}:void 0,e[53]=y,e[54]=b,e[55]=B):B=e[55];let V;e[56]===B?V=e[57]:(V={coder:B},e[56]=B,e[57]=V);let H;e[58]!==a||e[59]!==V?(H=(0,Z.jsx)(Ze,{offen:a,onSchliessen:z,rollenJetzt:V}),e[58]=a,e[59]=V,e[60]=H):H=e[60];let W;return e[61]!==x||e[62]!==S||e[63]!==C||e[64]!==L||e[65]!==H||e[66]!==j||e[67]!==N?(W=(0,Z.jsxs)(Z.Fragment,{children:[j,N,x,S,C,L,R,H]}),e[61]=x,e[62]=S,e[63]=C,e[64]=L,e[65]=H,e[66]=j,e[67]=N,e[68]=W):W=e[68],W}function xt(e){return e.toLowerCase()!==`coder`}function St(e){return T(e)===`coder`}function Ct(e){return T(e)===`hirn`}function wt(e){return e.hash}export{lt as Kandidat,bt as ModelleSeite}; \ No newline at end of file diff --git a/frontend/dist/assets/Modelle-_bMeyIzl.js b/frontend/dist/assets/Modelle-_bMeyIzl.js new file mode 100644 index 0000000..961a2dc --- /dev/null +++ b/frontend/dist/assets/Modelle-_bMeyIzl.js @@ -0,0 +1 @@ +import{a as e,c as t,i as n,r,t as i}from"./dist-aE7UmubC.js";import{n as a,t as o}from"./useSelector-DBNxxw17.js";import{n as s}from"./useMatch-DDVpPKJI.js";import{t as c}from"./chevron-right-DF8ikrVh.js";import{t as l}from"./search-RXhRizww.js";import{Bt as u,D as d,G as f,Ht as p,K as m,Kt as h,Mt as g,O as _,St as v,Tt as y,Vt as b,X as x,Y as S,Yt as C,_n as w,_t as T,an as E,en as D,g as O,gt as k,h as A,ht as j,in as M,m as N,nn as P,qt as F,tn as I,ut as L,vn as R,vt as z,wt as B,xt as V}from"./index-BjDzWYEf.js";import{t as H}from"./button-DwYvdWVr.js";import{a as ee,i as te,n as U,r as W,t as G}from"./sheet-Bcuh2-nz.js";import{t as ne}from"./Bestaetigen-DNJdB_zl.js";import{t as K}from"./Panel-uT1S5ZGr.js";import{a as re,r as ie,s as ae,t as q}from"./Auftraege-yNI8sNrj.js";import{t as J}from"./breite-k-QN6GPl.js";function oe(e){let t=a();return o(t.stores.location,s(e,t))}var Y=r(),X=t(e(),1),Z=n(),Q=new Intl.NumberFormat(`de-DE`),se=240,ce=24,le={ArrowLeft:e=>Math.max(0,e-1),ArrowRight:(e,t)=>Math.min(t-1,e+1),Home:()=>0,End:(e,t)=>t-1};function ue(e){let t=(0,Y.c)(20),{saeule:n,reihen:r,summe:a,className:o,links:s}=e,c;t[0]===o?c=t[1]:(c=i(`flex flex-col gap-1 rounded-xl border border-white/12 bg-white/[0.04] px-3 py-2`,o),t[0]=o,t[1]=c);let l;t[2]===s?l=t[3]:(l=s===void 0?void 0:{left:s},t[2]=s,t[3]=l);let u;t[4]===n.lang?u=t[5]:(u=(0,Z.jsx)(`span`,{className:`ziffern text-xs text-text-3`,children:n.lang}),t[4]=n.lang,t[5]=u);let d;if(t[6]!==r||t[7]!==n.werte){let e;t[9]===n.werte?e=t[10]:(e=e=>(0,Z.jsxs)(`span`,{className:`flex items-baseline gap-2 text-sm`,children:[(0,Z.jsx)(`span`,{"aria-hidden":!0,className:`h-0.5 w-3 shrink-0 self-center rounded-full`,style:{background:e.farbe}}),(0,Z.jsx)(`span`,{className:`ziffern font-semibold text-foreground`,children:Q.format(n.werte[e.name]??0)}),(0,Z.jsx)(`span`,{className:`min-w-0 text-text-3`,children:e.name})]},e.name),t[9]=n.werte,t[10]=e),d=r.map(e),t[6]=r,t[7]=n.werte,t[8]=d}else d=t[8];let f;t[11]!==r.length||t[12]!==a?(f=r.length>1&&(0,Z.jsxs)(`span`,{className:`flex items-baseline gap-2 border-t border-white/[0.06] pt-1 text-sm`,children:[(0,Z.jsx)(`span`,{className:`ziffern font-semibold text-foreground`,children:Q.format(a)}),(0,Z.jsx)(`span`,{className:`text-text-3`,children:`zusammen`})]}),t[11]=r.length,t[12]=a,t[13]=f):f=t[13];let p;return t[14]!==c||t[15]!==l||t[16]!==u||t[17]!==d||t[18]!==f?(p=(0,Z.jsxs)(`div`,{role:`status`,className:c,style:l,children:[u,d,f]}),t[14]=c,t[15]=l,t[16]=u,t[17]=d,t[18]=f,t[19]=p):p=t[19],p}function de(e){let t=(0,Y.c)(92),{saeulen:n,reihen:r,titel:a,summen:o,hoehe:s,spalte:c}=e,l=o===void 0?`alle`:o,u=s===void 0?200:s,d=c===void 0?`Zeitraum`:c,[f,p]=J(),[m,h]=(0,X.useState)(null),g=n.length,_,v,y,b,x,S,C,w,T,E;if(t[0]!==p||t[1]!==u||t[2]!==m||t[3]!==g||t[4]!==f||t[5]!==r||t[6]!==n||t[7]!==d||t[8]!==l||t[9]!==a){let e;t[20]===n?e=t[21]:(e=e=>n.some(t=>(t.werte[e.name]??0)>0),t[20]=n,t[21]=e);let o=r.filter(e),s=n.map(e=>o.reduce((t,n)=>t+(e.werte[n.name]??0),0)),c=Math.max(0,...s),D=O(c),k=D[D.length-1],j;t[22]===k?j=t[23]:(j=Q.format(k),t[22]=k,t[23]=j);let M=Math.max(28,j.length*7+12),P=n.some(ge)?34:22,F;t[24]!==M||t[25]!==P?(F={links:M,rechts:4,oben:20,unten:P},t[24]=M,t[25]=P,t[26]=F):F=t[26];let I=F,L=Math.max(1,p-I.links-I.rechts),R=u-I.oben-I.unten,z=L/Math.max(1,g),B=Math.min(ce,Math.max(3,z*.72)),V;t[27]!==R||t[28]!==k||t[29]!==I.oben?(V=e=>I.oben+R-e/k*R,t[27]=R,t[28]=k,t[29]=I.oben,t[30]=V):V=t[30];let H=V,ee=I.oben+R,te;t[31]!==z||t[32]!==I.links?(te=e=>I.links+(e+.5)*z,t[31]=z,t[32]=I.links,t[33]=te):te=t[33];let U=te,W;t[34]===n?W=t[35]:(W=Math.max(1,...n.map(he)),t[34]=n,t[35]=W);let G=W*6.6+8,ne;t[36]!==z||t[37]!==G?(ne=[1,3,6,12].find(e=>e*z>=G)??24,t[36]=z,t[37]=G,t[38]=ne):ne=t[38];let K=ne,re=s.indexOf(c),ie=z<34,ae;t[39]===g?ae=t[40]:(ae=function(e){if(g===0)return;let t=e.currentTarget.getBoundingClientRect();h(Math.min(g-1,Math.max(0,Math.floor((e.clientX-t.left)/t.width*g))))},t[39]=g,t[40]=ae);let q=ae,J;t[41]===g?J=t[42]:(J=function(e){let t=le[e.key];g!==0&&t&&(e.preventDefault(),h(e=>t(e??g-1,g)))},t[41]=g,t[42]=J);let oe=J,Y=m===null?void 0:n[m],X=p>=360,de=m===null?0:Math.max(0,Math.min(p-se,U(m)+12+se>p?U(m)-12-se:U(m)+12));_=`flex flex-col gap-2`,v=o.length>1&&(0,Z.jsx)(`ul`,{className:`m-0 flex list-none flex-wrap gap-x-4 gap-y-1 p-0 text-sm text-text-2`,"aria-label":`Legende`,children:o.map(me)});let _e;t[43]===g?_e=t[44]:(_e=()=>h(e=>e??(g?g-1:null)),t[43]=g,t[44]=_e);let ve;t[45]===Symbol.for(`react.memo_cache_sentinel`)?(ve=()=>h(null),t[45]=ve):ve=t[45];let ye;t[46]!==Y||t[47]!==z||t[48]!==m||t[49]!==R||t[50]!==I.links||t[51]!==I.oben?(ye=Y&&m!==null&&(0,Z.jsx)(`rect`,{x:I.links+m*z,y:I.oben-4,width:z,height:R+4,rx:4,fill:`var(--erhaben)`}),t[46]=Y,t[47]=z,t[48]=m,t[49]=R,t[50]=I.links,t[51]=I.oben,t[52]=ye):ye=t[52];let be;t[53]!==p||t[54]!==I.links||t[55]!==I.rechts||t[56]!==H?(be=e=>(0,Z.jsxs)(`g`,{children:[(0,Z.jsx)(`line`,{x1:I.links,x2:p-I.rechts,y1:H(e),y2:H(e),strokeWidth:1,stroke:e===0?`var(--linie-stark)`:`var(--linie)`}),(0,Z.jsx)(`text`,{x:I.links-8,y:H(e)+4,textAnchor:`end`,className:`fill-text-3 font-mono text-[11px]`,children:Q.format(e)})]},e),t[53]=p,t[54]=I.links,t[55]=I.rechts,t[56]=H,t[57]=be):be=t[57];let xe;t[58]!==L||t[59]!==R||t[60]!==c||t[61]!==I.links||t[62]!==I.oben?(xe=c===0&&(0,Z.jsx)(`text`,{x:I.links+L/2,y:I.oben+R/2,textAnchor:`middle`,className:`fill-text-3 text-sm`,children:`Keine Anfragen in diesem Zeitraum`}),t[58]=L,t[59]=R,t[60]=c,t[61]=I.links,t[62]=I.oben,t[63]=xe):xe=t[63];let Se;t[64]===Symbol.for(`react.memo_cache_sentinel`)?(Se=e=>{e.pointerType!==`touch`&&h(null)},t[64]=Se):Se=t[64];let Ce;t[65]!==u||t[66]!==L||t[67]!==I.links||t[68]!==q?(Ce=(0,Z.jsx)(`rect`,{x:I.links,y:0,width:L,height:u,fill:`transparent`,onPointerMove:q,onPointerDown:q,onPointerLeave:Se}),t[65]=u,t[66]=L,t[67]=I.links,t[68]=q,t[69]=Ce):Ce=t[69],y=(0,Z.jsxs)(`div`,{ref:f,className:`relative w-full`,children:[(0,Z.jsxs)(`svg`,{width:p,height:u,viewBox:`0 0 ${p} ${u}`,role:`img`,"aria-label":a,tabIndex:0,onKeyDown:oe,onFocus:_e,onBlur:ve,className:`block h-auto max-w-full outline-none focus-visible:rounded-md focus-visible:ring-2 focus-visible:ring-cyan/60`,children:[ye,D.map(be),n.map((e,t)=>{let n=U(t)-B/2;return(0,Z.jsxs)(`g`,{children:[A(o.map(t=>e.werte[t.name]??0),H).filter(pe).map(e=>e.oben?(0,Z.jsx)(`path`,{d:N(n,e.y,B,e.hoehe),fill:o[e.index].farbe},e.index):(0,Z.jsx)(`rect`,{x:n,y:e.y,width:B,height:e.hoehe,fill:o[e.index].farbe},e.index)),s[t]>0&&(l===`alle`||t===re)&&(0,Z.jsx)(`text`,{x:U(t),y:H(s[t])-6,textAnchor:`middle`,className:i(`fill-text-2 font-mono`,ie?`text-[10px]`:`text-[11px]`),children:Q.format(s[t])}),(e.raster??t)%K===0&&(0,Z.jsxs)(`text`,{x:U(t),y:ee+15,textAnchor:`middle`,className:`fill-text-3 font-mono text-[11px]`,children:[e.achse,e.achse2&&(0,Z.jsx)(`tspan`,{x:U(t),dy:13,className:`text-[10px]`,children:e.achse2})]})]},e.schluessel)}),xe,Ce]}),Y&&m!==null&&X&&(0,Z.jsx)(ue,{saeule:Y,reihen:o,summe:s[m],links:de,className:`pointer-events-none absolute top-1 z-10 w-60 shadow-lg`})]}),b=Y&&m!==null&&!X&&(0,Z.jsx)(ue,{saeule:Y,reihen:o,summe:s[m]}),T=`text-sm`,t[70]===Symbol.for(`react.memo_cache_sentinel`)?(E=(0,Z.jsx)(`summary`,{className:`inline-flex cursor-pointer items-center text-text-3 hover:text-text-2`,children:`Werte als Tabelle`}),t[70]=E):E=t[70],w=`mt-2 overflow-x-auto`,S=`w-full border-collapse text-xs`;let we;t[71]===d?we=t[72]:(we=(0,Z.jsx)(`th`,{scope:`col`,className:`py-1 pr-3 text-left font-normal`,children:d}),t[71]=d,t[72]=we),C=(0,Z.jsx)(`thead`,{children:(0,Z.jsxs)(`tr`,{className:`text-text-3`,children:[we,o.map(fe),o.length>1&&(0,Z.jsx)(`th`,{scope:`col`,className:`py-1 text-right font-normal`,children:`Zusammen`})]})}),x=n.map((e,t)=>(0,Z.jsxs)(`tr`,{className:`border-t border-white/[0.06]`,children:[(0,Z.jsx)(`th`,{scope:`row`,className:`py-1 pr-3 text-left font-normal text-text-3`,children:e.lang}),o.map(t=>(0,Z.jsx)(`td`,{className:`ziffern py-1 pr-3 text-right text-text-2`,children:Q.format(e.werte[t.name]??0)},t.name)),o.length>1&&(0,Z.jsx)(`td`,{className:`ziffern py-1 text-right text-foreground`,children:Q.format(s[t])})]},e.schluessel)),t[0]=p,t[1]=u,t[2]=m,t[3]=g,t[4]=f,t[5]=r,t[6]=n,t[7]=d,t[8]=l,t[9]=a,t[10]=_,t[11]=v,t[12]=y,t[13]=b,t[14]=x,t[15]=S,t[16]=C,t[17]=w,t[18]=T,t[19]=E}else _=t[10],v=t[11],y=t[12],b=t[13],x=t[14],S=t[15],C=t[16],w=t[17],T=t[18],E=t[19];let D;t[73]===x?D=t[74]:(D=(0,Z.jsx)(`tbody`,{children:x}),t[73]=x,t[74]=D);let k;t[75]!==D||t[76]!==S||t[77]!==C?(k=(0,Z.jsxs)(`table`,{className:S,children:[C,D]}),t[75]=D,t[76]=S,t[77]=C,t[78]=k):k=t[78];let j;t[79]!==k||t[80]!==w?(j=(0,Z.jsx)(`div`,{className:w,children:k}),t[79]=k,t[80]=w,t[81]=j):j=t[81];let M;t[82]!==j||t[83]!==T||t[84]!==E?(M=(0,Z.jsxs)(`details`,{className:T,children:[E,j]}),t[82]=j,t[83]=T,t[84]=E,t[85]=M):M=t[85];let P;return t[86]!==_||t[87]!==v||t[88]!==y||t[89]!==b||t[90]!==M?(P=(0,Z.jsxs)(`div`,{className:_,children:[v,y,b,M]}),t[86]=_,t[87]=v,t[88]=y,t[89]=b,t[90]=M,t[91]=P):P=t[91],P}function fe(e){return(0,Z.jsx)(`th`,{scope:`col`,className:`py-1 pr-3 text-right font-normal [overflow-wrap:anywhere]`,children:e.name},e.name)}function pe(e){return e.hoehe>0}function me(e){return(0,Z.jsxs)(`li`,{className:`flex items-center gap-2`,children:[(0,Z.jsx)(`span`,{"aria-hidden":!0,className:`size-2.5 shrink-0 rounded-[2px]`,style:{background:e.farbe}}),e.name]},e.name)}function he(e){return e.achse.length}function ge(e){return e.achse2}var _e=`Europe/Berlin`,ve=[`var(--reihe-1)`,`var(--reihe-2)`,`var(--reihe-3)`],ye={name:`Weitere`,farbe:`var(--reihe-weitere)`},be=new Intl.NumberFormat(`de-DE`),xe=new Intl.NumberFormat(`de-DE`,{maximumFractionDigits:1}),Se=new Intl.DateTimeFormat(`en-CA`,{timeZone:_e}),Ce=new Intl.DateTimeFormat(`de-DE`,{hour:`2-digit`,minute:`2-digit`,timeZone:_e}),we=new Intl.DateTimeFormat(`de-DE`,{hour:`2-digit`,hourCycle:`h23`,timeZone:_e}),Te=new Intl.DateTimeFormat(`de-DE`,{weekday:`short`,timeZone:`UTC`}),Ee=new Intl.DateTimeFormat(`de-DE`,{weekday:`long`,timeZone:`UTC`}),$=e=>be.format(e);function De(e){if(!(e>0))return`0 %`;let t=e*100;return t<.1?`unter 0,1 %`:`${t<10?xe.format(t):be.format(Math.round(t))} %`}function Oe(e,t=!1){if(e==null||!Number.isFinite(e)||e<0)return`–`;if(Math.round(e*1e3)<1e3)return`${Math.round(e*1e3)} ms`;if(e<9.95)return`${xe.format(e)} s`;let n=Math.round(e);if(n<60)return`${n} s`;if(n<3600&&!t)return n%60?`${Math.floor(n/60)} min ${n%60} s`:`${n/60} min`;let r=Math.round(e/60);return r<60?`${r} min`:r%60?`${Math.floor(r/60)} h ${r%60} min`:`${r/60} h`}var ke={400:`fehlerhafte Anfrage`,404:`nicht gefunden`,408:`Zeitüberschreitung`,413:`Anfrage zu groß`,429:`zu viele Anfragen`,499:`vom Absender abgebrochen`,500:`Fehler beim Modell`,502:`Modell nicht erreichbar`,503:`gerade nicht verfügbar`,504:`Zeitüberschreitung`};function Ae(e){return Object.entries(e??{}).sort(([e,t],[n,r])=>r-t||e.localeCompare(n)).map(([e,t])=>ke[e]?`${$(t)}× ${ke[e]} (${e})`:`${$(t)}× Status ${e}`).join(` · `)}function je(e){return e===null||e<.01?{art:`grau`,wort:null}:e>=.05?{art:`rot`,wort:`hoch`}:{art:`bernstein`,wort:`auffällig`}}var Me=e=>String(e).padStart(2,`0`),Ne=e=>Object.values(e??{}).reduce((e,t)=>e+t,0),Pe=e=>Te.format(e).replace(`.`,``);function Fe(e){return Number(we.formatToParts(e).find(e=>e.type===`hour`)?.value??0)%24}function Ie(e){let[,t,n]=e.split(`-`);return`${Ee.format(new Date(`${e}T12:00:00Z`))}, ${n}.${t}.`}function Le(e,t=new Date){let n=e.stand?new Date(e.stand):t,r=Se.format(n),i=new Date(Date.parse(`${r}T12:00:00Z`)-864e5).toISOString().slice(0,10),a=e.gesamt?.anfragen??e.absender.reduce((e,t)=>e+t.anfragen,0),o=e.gesamt?.dauer_summe_s??null,s=new Map(e.absender.map((e,t)=>[e.name,e.reihe??t])),c=e.absender.map(e=>{let t=s.get(e.name)??ve.length,n=t[e.name,e.reihe])),u=[];for(let e of[...c].sort((e,t)=>(s.get(e.name)??99)-(s.get(t.name)??99)))u.some(t=>t.name===e.reihe)||u.push({name:e.reihe,farbe:e.farbe});let d=e=>{let t={};for(let[n,r]of Object.entries(e??{})){let e=l.get(n)??ye.name;t[e]=(t[e]??0)+r,e===ye.name&&!u.some(t=>t.name===e)&&u.push({...ye})}return t},f=Object.keys(e.je_tag??{}).sort(),p=f.map(t=>{let i=t===r;return{schluessel:t,achse:Pe(new Date(`${t}T12:00:00Z`)),achse2:i?`heute`:`${Number(t.slice(8))}.`,lang:`${Ie(t)}${i?` (heute bis ${Ce.format(n)})`:``}`,werte:d(e.je_tag[t])}}),m;if(e.stunden?.length)m=e.stunden.map((e,t,n)=>{let a=new Date(e.beginn),o=Fe(a),s=Se.format(a),c=s===r?`Heute`:s===i?`Gestern`:Ie(s),l=t===n.length-1?` bis jetzt`:`–${Me((o+1)%24)}:00`;return{schluessel:e.beginn,achse:`${Me(o)}:00`,raster:o,lang:`${c} ${Me(o)}:00${l}`,werte:d(e.je_absender)}});else{let t=Fe(n),r=e.letzte_24h??[];m=[...r.slice(t+1),...r.slice(0,t+1)].map(e=>{let t=Number(e.stunde);return{schluessel:e.stunde,achse:`${Me(t)}:00`,raster:t,lang:`${Me(t)}:00–${Me((t+1)%24)}:00`,werte:d(e.je_absender)}})}let h=f.filter(e=>e!==r),g=e.seit?Se.format(new Date(e.seit)):null,_=e.ladevorgaenge??Object.entries(e.zuletzt_geladen??{}).sort(([,e],[,t])=>Date.parse(t)-Date.parse(e)).map(([e,t])=>({modell:e,anzahl:null,zeiten:[t]}));return{absender:c,reihen:u,tage:p,stunden:m,gesamt:{anfragen:a,fehler:e.gesamt?.fehler??null,fehlerCodes:e.gesamt?.fehler_codes??{},typisch:e.gesamt?.dauer_typisch_s??null,p90:e.gesamt?.dauer_p90_s??null,summe:o},heute:Ne(e.je_tag?.[r]),gestern:Ne(e.je_tag?.[i]),schnitt:h.length?h.reduce((t,n)=>t+Ne(e.je_tag[n]),0)/h.length:null,zeitraum:g?`seit ${Pe(new Date(`${g}T12:00:00Z`))} ${g.slice(8)}.${g.slice(5,7)}.`:`letzte ${e.tage} Tage`,stand:e.stand?Ce.format(n):null,modelle:_}}var Re={grau:`text-foreground`,bernstein:`text-bernstein`,rot:`text-rot-text`};function ze(e){let t=(0,Y.c)(13),{label:n,wert:r,zusatz:a,art:o}=e,s=o===void 0?`grau`:o,c;t[0]===n?c=t[1]:(c=(0,Z.jsx)(`span`,{className:`etikett text-[10.5px] tracking-[0.14em] text-text-3`,children:n}),t[0]=n,t[1]=c);let l=Re[s],u;t[2]===l?u=t[3]:(u=i(`font-anzeige text-[28px] leading-none font-bold`,l),t[2]=l,t[3]=u);let d;t[4]!==u||t[5]!==r?(d=(0,Z.jsx)(`span`,{className:u,children:r}),t[4]=u,t[5]=r,t[6]=d):d=t[6];let f;t[7]===a?f=t[8]:(f=a&&(0,Z.jsx)(`span`,{className:`text-xs text-text-3`,children:a}),t[7]=a,t[8]=f);let p;return t[9]!==c||t[10]!==d||t[11]!==f?(p=(0,Z.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-1.5 flaeche-innen rounded-2xl px-3.5 py-3`,children:[c,d,f]}),t[9]=c,t[10]=d,t[11]=f,t[12]=p):p=t[12],p}var Be=`lg:grid-cols-[minmax(0,1.5fr)_minmax(0,1.4fr)_minmax(0,1fr)_minmax(0,1fr)_minmax(0,1.2fr)_minmax(0,0.8fr)]`;function Ve(e){let t=(0,Y.c)(13),{label:n,wert:r,zusatz:a,leise:o}=e,s;t[0]===n?s=t[1]:(s=(0,Z.jsx)(`span`,{className:`text-xs text-text-3 lg:hidden`,children:n}),t[0]=n,t[1]=s);let c=o?`text-text-3`:`text-foreground`,l;t[2]===c?l=t[3]:(l=i(`ziffern text-sm`,c),t[2]=c,t[3]=l);let u;t[4]!==l||t[5]!==r?(u=(0,Z.jsx)(`span`,{className:l,children:r}),t[4]=l,t[5]=r,t[6]=u):u=t[6];let d;t[7]===a?d=t[8]:(d=a&&(0,Z.jsx)(`span`,{className:`text-xs text-text-3`,children:a}),t[7]=a,t[8]=d);let f;return t[9]!==s||t[10]!==u||t[11]!==d?(f=(0,Z.jsxs)(`span`,{role:`cell`,className:`flex min-w-0 flex-col gap-0.5`,children:[s,u,d]}),t[9]=s,t[10]=u,t[11]=d,t[12]=f):f=t[12],f}function He(e){let t=(0,Y.c)(5),{zeilen:n}=e,r;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,Z.jsxs)(`div`,{role:`row`,className:i(`etikett hidden gap-x-4 pb-2 text-[10.5px] tracking-[0.14em] text-text-3 lg:grid`,Be),children:[(0,Z.jsx)(`span`,{role:`columnheader`,children:`Absender`}),(0,Z.jsx)(`span`,{role:`columnheader`,children:`Anfragen`}),(0,Z.jsx)(`span`,{role:`columnheader`,children:`Typische Antwort`}),(0,Z.jsx)(`span`,{role:`columnheader`,children:`Rechenzeit`}),(0,Z.jsx)(`span`,{role:`columnheader`,children:`Fehler`}),(0,Z.jsx)(`span`,{role:`columnheader`,children:`Zuletzt`})]}),t[0]=r):r=t[0];let a;t[1]===n?a=t[2]:(a=n.map(Ue),t[1]=n,t[2]=a);let o;return t[3]===a?o=t[4]:(o=(0,Z.jsxs)(`div`,{role:`table`,"aria-label":`Nutzung je Absender`,className:`flex flex-col`,children:[r,a]}),t[3]=a,t[4]=o),o}function Ue(e){return(0,Z.jsxs)(`div`,{role:`row`,className:i(`grid grid-cols-2 gap-x-4 gap-y-2.5 border-t border-white/[0.06] py-3 lg:items-start`,Be),children:[(0,Z.jsxs)(`span`,{role:`rowheader`,className:`col-span-2 flex min-w-0 items-center gap-2 text-[15px] font-medium lg:col-span-1`,children:[(0,Z.jsx)(`span`,{"aria-hidden":!0,className:`size-2.5 shrink-0 rounded-[2px]`,style:{background:e.farbe}}),(0,Z.jsx)(`span`,{className:`min-w-0 break-words`,children:e.name})]}),(0,Z.jsxs)(`span`,{role:`cell`,className:`col-span-2 flex min-w-0 flex-col gap-1.5 lg:col-span-1`,children:[(0,Z.jsxs)(`span`,{className:`text-sm`,children:[(0,Z.jsx)(`span`,{className:`ziffern`,children:$(e.anfragen)}),(0,Z.jsxs)(`span`,{className:`text-text-3`,children:[` · `,De(e.anteil),` aller Anfragen`]})]}),(0,Z.jsx)(`span`,{className:`h-1.5 w-full max-w-56 overflow-hidden rounded-full bg-white/[0.07]`,"aria-hidden":!0,children:(0,Z.jsx)(`span`,{className:`block h-full rounded-full`,style:{width:`${Math.max(1,e.anteil*100)}%`,background:e.farbe}})})]}),(0,Z.jsx)(Ve,{label:`Typische Antwort`,wert:Oe(e.typisch),zusatz:e.p90===null?void 0:`9 von 10 bis ${Oe(e.p90)}`}),(0,Z.jsx)(Ve,{label:`Rechenzeit`,wert:Oe(e.summe,!0),zusatz:e.zeitAnteil===null?void 0:`${De(e.zeitAnteil)} aller Rechenzeit`}),(0,Z.jsx)(Ve,{label:`Fehler`,leise:e.fehler===0,wert:e.fehler===null?`–`:e.fehler===0?`keine`:`${$(e.fehler)} · ${De(e.fehler/e.anfragen)}`,zusatz:e.fehler?Ae(e.fehlerCodes):void 0}),(0,Z.jsx)(Ve,{label:`Zuletzt`,wert:e.zuletzt?u(e.zuletzt):`–`})]},e.name)}function We(e){let t=(0,Y.c)(11),{titel:n,zusatz:r,children:i}=e,a;t[0]===n?a=t[1]:(a=(0,Z.jsx)(`h3`,{className:`etikett text-[11.5px] tracking-[0.16em] text-text-2`,children:n}),t[0]=n,t[1]=a);let o;t[2]===r?o=t[3]:(o=(0,Z.jsx)(`span`,{className:`text-xs text-text-3`,children:r}),t[2]=r,t[3]=o);let s;t[4]!==a||t[5]!==o?(s=(0,Z.jsxs)(`div`,{className:`flex flex-wrap items-baseline justify-between gap-x-3 gap-y-1`,children:[a,o]}),t[4]=a,t[5]=o,t[6]=s):s=t[6];let c;return t[7]!==i||t[8]!==s||t[9]!==n?(c=(0,Z.jsxs)(`section`,{"aria-label":n,className:`flex min-w-0 flex-col gap-3 flaeche-innen rounded-2xl p-4`,children:[s,i]}),t[7]=i,t[8]=s,t[9]=n,t[10]=c):c=t[10],c}function Ge(e){let t=(0,Y.c)(29),{modelle:n,rollen:r}=e;if(n.length===0)return null;let i,a,o,s,l,d;if(t[0]!==n){let e=n.every(Je)?n.reduce(qe,0):null;d=`group flaeche-innen rounded-2xl px-4 open:pb-2`,s=`flex min-h-12 cursor-pointer list-none flex-wrap items-center justify-between gap-x-3 gap-y-1 py-2 [&::-webkit-details-marker]:hidden`,t[7]===Symbol.for(`react.memo_cache_sentinel`)?(l=(0,Z.jsxs)(`span`,{className:`flex items-center gap-2 text-[15px] font-medium`,children:[(0,Z.jsx)(c,{className:`size-4 shrink-0 text-text-3 transition-transform group-open:rotate-90`,"aria-hidden":!0}),`Wann welches Modell geladen wurde`]}),t[7]=l):l=t[7],i=`ziffern text-sm text-text-2`,a=n.length===1?`1 Modell`:`${n.length} Modelle`,o=e===null?``:` · ${$(e)}× geladen`,t[0]=n,t[1]=i,t[2]=a,t[3]=o,t[4]=s,t[5]=l,t[6]=d}else i=t[1],a=t[2],o=t[3],s=t[4],l=t[5],d=t[6];let f;t[8]!==i||t[9]!==a||t[10]!==o?(f=(0,Z.jsxs)(`span`,{className:i,children:[a,o]}),t[8]=i,t[9]=a,t[10]=o,t[11]=f):f=t[11];let p;t[12]!==s||t[13]!==l||t[14]!==f?(p=(0,Z.jsxs)(`summary`,{className:s,children:[l,f]}),t[12]=s,t[13]=l,t[14]=f,t[15]=p):p=t[15];let m;t[16]===Symbol.for(`react.memo_cache_sentinel`)?(m=(0,Z.jsx)(`p`,{className:`pb-1 text-sm text-text-2`,children:`Gezählt wird, wie oft sich ein Modell nach dem Laden bereit meldete: nach einem Neustart von llama-swap oder wenn es auf Abruf gebraucht wurde.`}),t[16]=m):m=t[16];let h;t[17]===Symbol.for(`react.memo_cache_sentinel`)?(h=(0,Z.jsxs)(`div`,{role:`row`,className:`etikett hidden gap-x-4 py-2 text-[10.5px] tracking-[0.14em] text-text-3 sm:grid sm:grid-cols-[minmax(0,1.5fr)_70px_130px_minmax(0,1.5fr)]`,children:[(0,Z.jsx)(`span`,{role:`columnheader`,children:`Modell`}),(0,Z.jsx)(`span`,{role:`columnheader`,children:`Geladen`}),(0,Z.jsx)(`span`,{role:`columnheader`,children:`Zuletzt`}),(0,Z.jsx)(`span`,{role:`columnheader`,children:`Davor`})]}),t[17]=h):h=t[17];let g;if(t[18]!==n||t[19]!==r){let e;t[21]===r?e=t[22]:(e=e=>(0,Z.jsxs)(`div`,{role:`row`,className:`grid grid-cols-[minmax(0,1fr)_auto] gap-x-4 gap-y-1 border-t border-white/[0.06] py-2.5 sm:grid-cols-[minmax(0,1.5fr)_70px_130px_minmax(0,1.5fr)] sm:items-baseline`,children:[(0,Z.jsxs)(`span`,{role:`rowheader`,className:`flex min-w-0 flex-col`,children:[(0,Z.jsx)(`span`,{className:`ziffern text-sm break-all`,children:e.modell}),r[e.modell]&&(0,Z.jsx)(`span`,{className:`text-xs text-text-3`,children:r[e.modell]})]}),(0,Z.jsx)(`span`,{role:`cell`,className:`ziffern text-right text-sm text-text-2 sm:text-left`,children:e.anzahl===null?`–`:`${$(e.anzahl)}×`}),(0,Z.jsxs)(`span`,{role:`cell`,className:`ziffern col-span-2 text-xs text-text-2 sm:col-span-1`,children:[(0,Z.jsx)(`span`,{className:`font-sans text-text-3 sm:hidden`,children:`zuletzt `}),u(e.zeiten[0])]}),(0,Z.jsxs)(`span`,{role:`cell`,className:`ziffern col-span-2 text-xs text-text-3 sm:col-span-1`,children:[e.zeiten.length>1&&(0,Z.jsx)(`span`,{className:`font-sans sm:hidden`,children:`davor `}),e.zeiten.length>1?e.zeiten.slice(1,4).map(Ke).join(` · `):(0,Z.jsx)(`span`,{className:`hidden sm:inline`,children:`–`})]})]},e.modell),t[21]=r,t[22]=e),g=n.map(e),t[18]=n,t[19]=r,t[20]=g}else g=t[20];let _;t[23]===g?_=t[24]:(_=(0,Z.jsxs)(`div`,{role:`table`,"aria-label":`Ladevorgänge je Modell`,className:`flex flex-col`,children:[h,g]}),t[23]=g,t[24]=_);let v;return t[25]!==_||t[26]!==d||t[27]!==p?(v=(0,Z.jsxs)(`details`,{className:d,children:[p,m,_]}),t[25]=_,t[26]=d,t[27]=p,t[28]=v):v=t[28],v}function Ke(e){return u(e)}function qe(e,t){return e+(t.anzahl??0)}function Je(e){return e.anzahl!==null}function Ye(e){let t=(0,Y.c)(23),{nutzung:n,laedt:r,fehler:i,rollen:a}=e,o;t[0]===a?o=t[1]:(o=a===void 0?{}:a,t[0]=a,t[1]=o);let s=o;if(!n){let e;return t[2]!==i||t[3]!==r?(e=(0,Z.jsx)(K,{titel:`Wer nutzt die Modelle`,children:r?(0,Z.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Wird gelesen …`}):(0,Z.jsxs)(`p`,{role:`alert`,className:`text-[15px] text-rot-text`,children:[`Die Nutzung lässt sich gerade nicht lesen`,i?`: ${i}`:`.`]})}),t[2]=i,t[3]=r,t[4]=e):e=t[4],e}let c,l,u,d,f;if(t[5]!==n){l=Le(n);let e=l.gesamt,r=e.fehler!==null&&e.anfragen?e.fehler/e.anfragen:null,i;t[11]===r?i=t[12]:(i=je(r),t[11]=r,t[12]=i);let a=i;c=K,u=`Wer nutzt die Modelle`,d=(0,Z.jsxs)(`span`,{className:`ziffern text-sm text-text-3`,children:[l.zeitraum,l.stand?` · Stand ${l.stand}`:``]}),f=e.anfragen===0?(0,Z.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Keine Anfragen aufgezeichnet.`}):(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsxs)(`div`,{className:`grid grid-cols-2 gap-2.5 sm:grid-cols-4`,children:[(0,Z.jsx)(ze,{label:`Anfragen`,wert:$(e.anfragen),zusatz:l.schnitt===null?void 0:`im Schnitt ${$(Math.round(l.schnitt))} am Tag`}),(0,Z.jsx)(ze,{label:`Heute`,wert:$(l.heute),zusatz:`${l.stand?`bis ${l.stand} · `:``}gestern ${$(l.gestern)}`}),(0,Z.jsx)(ze,{label:`Typische Antwort`,wert:Oe(e.typisch),zusatz:e.p90===null?void 0:`9 von 10 bis ${Oe(e.p90)}`}),(0,Z.jsx)(ze,{label:`Fehler`,wert:e.fehler===null?`–`:$(e.fehler),art:a.art,zusatz:e.fehler===null?void 0:e.fehler===0?`alle beantwortet`:`${De(r??0)} der Anfragen${a.wort?` · ${a.wort}`:``}`})]}),(0,Z.jsx)(He,{zeilen:l.absender}),(0,Z.jsxs)(`div`,{className:`grid gap-4 xl:grid-cols-2`,children:[(0,Z.jsx)(We,{titel:`Anfragen je Tag`,zusatz:`letzte 7 Tage, heute bis jetzt`,children:(0,Z.jsx)(de,{saeulen:l.tage,reihen:l.reihen,spalte:`Tag`,titel:`Anfragen je Tag der letzten 7 Tage, gestapelt nach Absender`})}),(0,Z.jsx)(We,{titel:`Anfragen je Stunde`,zusatz:`letzte 24 Stunden`,children:(0,Z.jsx)(de,{saeulen:l.stunden,reihen:l.reihen,spalte:`Stunde`,summen:`hoechste`,titel:`Anfragen je Stunde der letzten 24 Stunden, gestapelt nach Absender`})})]})]}),t[5]=n,t[6]=c,t[7]=l,t[8]=u,t[9]=d,t[10]=f}else c=t[6],l=t[7],u=t[8],d=t[9],f=t[10];let p;t[13]!==l.modelle||t[14]!==s?(p=(0,Z.jsx)(Ge,{modelle:l.modelle,rollen:s}),t[13]=l.modelle,t[14]=s,t[15]=p):p=t[15];let m;t[16]===Symbol.for(`react.memo_cache_sentinel`)?(m=(0,Z.jsx)(`p`,{className:`text-xs text-text-3`,children:`Chat-Anfragen an llama-swap, gelesen aus seinem Protokoll und alle 10 Minuten neu gerechnet. NerdQuiz fragt direkt dort an, Lucy und OpenChamber über MC2. Antwortzeit: bis die Antwort ganz da war. Rechenzeit: alle Antwortzeiten zusammen, gleichzeitige Anfragen zählen einzeln.`}),t[16]=m):m=t[16];let h;return t[17]!==c||t[18]!==u||t[19]!==d||t[20]!==f||t[21]!==p?(h=(0,Z.jsxs)(c,{titel:u,rechts:d,children:[f,p,m]}),t[17]=c,t[18]=u,t[19]=d,t[20]=f,t[21]=p,t[22]=h):h=t[22],h}var Xe={coder:`Coder`};function Ze(e){let t=(0,Y.c)(102),{offen:n,onSchliessen:r,rollenJetzt:i}=e,a=L(),[o,s]=(0,X.useState)(``),[c,l]=(0,X.useState)(``),[u,d]=(0,X.useState)(null),[f,m]=(0,X.useState)(``),[g,_]=(0,X.useState)(null),v=(0,X.useRef)(!1),y,b;t[0]===c?(y=t[1],b=t[2]):(y=[`hf-suche`,c],b=()=>E(`/api/hf/search?q=${encodeURIComponent(c)}`),t[0]=c,t[1]=y,t[2]=b);let x=c.length>1,S;t[3]!==y||t[4]!==b||t[5]!==x?(S={queryKey:y,queryFn:b,enabled:x},t[3]=y,t[4]=b,t[5]=x,t[6]=S):S=t[6];let C=w(S),T,D;t[7]===u?(T=t[8],D=t[9]):(T=[`hf-quants`,u],D=()=>E(`/api/hf/quants?repo=${encodeURIComponent(u??``)}`),t[7]=u,t[8]=T,t[9]=D);let O=!!u,k;t[10]!==T||t[11]!==D||t[12]!==O?(k={queryKey:T,queryFn:D,enabled:O},t[10]=T,t[11]=D,t[12]=O,t[13]=k):k=t[13];let A=w(k),j,M,N,P,F,I,R,z,B,V,K,re,q;if(t[14]!==g||t[15]!==o||t[16]!==a||t[17]!==n||t[18]!==r||t[19]!==A.data||t[20]!==A.error||t[21]!==A.isError||t[22]!==A.isFetching||t[23]!==u||t[24]!==f||t[25]!==i||t[26]!==C){let e=(A.data?.quants??[]).map($e),c=f?Xe[f]??f:null,y;t[40]!==u||t[41]!==f||t[42]!==i||t[43]!==c?(y=c&&u?ae(u,c,i[f]):null,t[40]=u,t[41]=f,t[42]=i,t[43]=c,t[44]=y):y=t[44],N=y;let b;t[45]!==g||t[46]!==a||t[47]!==r||t[48]!==u||t[49]!==f?(b=function(){u&&g&&!v.current&&(v.current=!0,a.mutate({repo:u,quant:g.quant,rolle:f||null},{onSuccess:e=>{_(null),e.ok!==!1&&r()},onError:()=>_(null),onSettled:()=>{v.current=!1}}))},t[45]=g,t[46]=a,t[47]=r,t[48]=u,t[49]=f,t[50]=b):b=t[50],P=b,M=G,K=n,t[51]===r?re=t[52]:(re=e=>!e&&r(),t[51]=r,t[52]=re),j=U,R=`right`,z=`gap-3 overflow-y-auto border-white/10 bg-[#0e121a] data-[side=right]:w-full data-[side=right]:sm:max-w-xl`,t[53]===Symbol.for(`react.memo_cache_sentinel`)?(B=(0,Z.jsxs)(te,{children:[(0,Z.jsx)(ee,{className:`text-[19px] font-semibold`,children:`Modelle selbst suchen`}),(0,Z.jsx)(W,{className:`text-text-2`,children:`Auf Hugging Face suchen, Quantisierung wählen, installieren.`})]}),t[53]=B):B=t[53];let x;t[54]===o?x=t[55]:(x=e=>{e.preventDefault(),d(null),l(o.trim())},t[54]=o,t[55]=x);let S;t[56]===Symbol.for(`react.memo_cache_sentinel`)?(S=(0,Z.jsx)(`label`,{htmlFor:`hf-suche`,className:`sr-only`,children:`Suchbegriff`}),t[56]=S):S=t[56];let w;t[57]===Symbol.for(`react.memo_cache_sentinel`)?(w=e=>s(e.target.value),t[57]=w):w=t[57];let T;t[58]===o?T=t[59]:(T=(0,Z.jsx)(`input`,{id:`hf-suche`,value:o,onChange:w,placeholder:`z. B. Qwen3.8 GGUF`,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]`}),t[58]=o,t[59]=T);let E;t[60]===Symbol.for(`react.memo_cache_sentinel`)?(E=(0,Z.jsx)(H,{type:`submit`,children:`Suchen`}),t[60]=E):E=t[60],t[61]!==x||t[62]!==T?(V=(0,Z.jsxs)(`form`,{className:`flex gap-2 px-4`,onSubmit:x,children:[S,T,E]}),t[61]=x,t[62]=T,t[63]=V):V=t[63],q=`flex flex-col px-4 pb-4`,t[64]!==u||t[65]!==C?(F=!u&&(0,Z.jsxs)(Z.Fragment,{children:[C.isFetching&&(0,Z.jsx)(`p`,{role:`status`,className:`py-3 text-sm text-text-2`,children:`Suche läuft …`}),!C.isFetching&&C.isError&&(0,Z.jsxs)(`p`,{role:`alert`,className:`py-3 text-sm text-rot-text`,children:[`Die Suche ging nicht: `,C.error.message]}),!C.isFetching&&C.data?.results.length===0&&(0,Z.jsx)(`p`,{className:`py-3 text-sm text-text-2`,children:`Keine Treffer. Versuch einen anderen Suchbegriff — oder Hugging Face ist gerade nicht erreichbar.`}),C.data?.results.map(e=>(0,Z.jsxs)(`button`,{type:`button`,onClick:()=>d(e.repo),className:`flex min-h-11 items-center justify-between gap-3 border-t border-white/[0.06] py-2 text-left hover:text-cyan`,children:[(0,Z.jsx)(`span`,{className:`ziffern min-w-0 text-sm break-all`,children:e.repo}),(0,Z.jsxs)(`span`,{className:`ziffern shrink-0 text-xs text-text-3`,children:[h(e.downloads),` ↓`]})]},e.repo))]}),t[64]=u,t[65]=C,t[66]=F):F=t[66],I=u&&(0,Z.jsxs)(`div`,{className:`flex flex-col gap-3 pt-2`,children:[(0,Z.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,Z.jsx)(`span`,{className:`ziffern min-w-0 text-sm break-all`,children:u}),(0,Z.jsx)(H,{variant:`ghost`,size:`sm`,onClick:()=>d(null),children:`Zurück`})]}),(0,Z.jsxs)(`label`,{className:`flex flex-wrap items-center gap-3 text-sm text-text-2`,children:[`Rolle`,(0,Z.jsxs)(`select`,{value:f,onChange:e=>m(e.target.value),className:`h-11 min-w-0 rounded-xl border border-white/12 bg-white/[0.04] px-3 text-foreground`,children:[(0,Z.jsx)(`option`,{value:``,children:`ohne Rolle (nur installieren)`}),Object.entries(Xe).map(Qe)]})]}),N&&(0,Z.jsx)(`p`,{className:`m-0 rounded-lg border border-bernstein/60 bg-bernstein-grund px-3 py-2.5 text-sm leading-relaxed text-bernstein`,children:N}),A.isFetching&&(0,Z.jsx)(`p`,{role:`status`,className:`text-sm text-text-2`,children:`Quantisierungen werden gelesen …`}),!A.isFetching&&A.isError&&(0,Z.jsxs)(`p`,{role:`alert`,className:`text-sm text-rot-text`,children:[`Die Dateien dieses Modells ließen sich nicht lesen: `,A.error.message]}),!A.isFetching&&A.data&&e.length===0&&(0,Z.jsx)(`p`,{className:`text-sm text-text-2`,children:`Hier gibt es keine GGUF-Dateien, die sich installieren lassen.`}),e.map(e=>{let t=e.quant??e.name??`?`,n=e.total_bytes??e.size_bytes;return(0,Z.jsxs)(`div`,{className:`flex items-center justify-between gap-3 border-t border-white/[0.06] py-2`,children:[(0,Z.jsx)(`span`,{className:`ziffern text-sm`,children:t}),(0,Z.jsxs)(`span`,{className:`flex items-center gap-3`,children:[n?(0,Z.jsx)(`span`,{className:`ziffern text-xs text-text-3`,children:p(n,1)}):null,(0,Z.jsx)(H,{variant:`outline`,size:`sm`,disabled:a.isPending,onClick:()=>_({quant:t,bytes:n}),children:`Installieren`})]})]},t)})]}),t[14]=g,t[15]=o,t[16]=a,t[17]=n,t[18]=r,t[19]=A.data,t[20]=A.error,t[21]=A.isError,t[22]=A.isFetching,t[23]=u,t[24]=f,t[25]=i,t[26]=C,t[27]=j,t[28]=M,t[29]=N,t[30]=P,t[31]=F,t[32]=I,t[33]=R,t[34]=z,t[35]=B,t[36]=V,t[37]=K,t[38]=re,t[39]=q}else j=t[27],M=t[28],N=t[29],P=t[30],F=t[31],I=t[32],R=t[33],z=t[34],B=t[35],V=t[36],K=t[37],re=t[38],q=t[39];let J;t[67]!==F||t[68]!==I||t[69]!==q?(J=(0,Z.jsxs)(`div`,{className:q,children:[F,I]}),t[67]=F,t[68]=I,t[69]=q,t[70]=J):J=t[70];let oe=g!==null,Q;t[71]!==g||t[72]!==u?(Q=g&&u?`${u} (${g.quant}${g.bytes?`, ${p(g.bytes,1)}`:``}) wird heruntergeladen und in llama-swap eingetragen.`+(g.bytes?``:` Die Größe siehst du beim Auftrag, sobald der Download läuft.`):``,t[71]=g,t[72]=u,t[73]=Q):Q=t[73];let se=a.isPending?`Wird gestartet …`:`Installieren`,ce=a.isPending,le;t[74]===Symbol.for(`react.memo_cache_sentinel`)?(le=()=>_(null),t[74]=le):le=t[74];let ue;t[75]===N?ue=t[76]:(ue=N&&(0,Z.jsx)(`p`,{className:`m-0 rounded-lg border border-bernstein/60 bg-bernstein-grund px-3 py-2.5 text-[15px] leading-relaxed text-bernstein`,children:N}),t[75]=N,t[76]=ue);let de=!!f,fe;t[77]===de?fe=t[78]:(fe=ie(de),t[77]=de,t[78]=fe);let pe;t[79]===fe?pe=t[80]:(pe=(0,Z.jsx)(`p`,{className:`m-0 text-[15px] leading-relaxed text-text-2`,children:fe}),t[79]=fe,t[80]=pe);let me;t[81]!==a.isPending||t[82]!==P||t[83]!==oe||t[84]!==Q||t[85]!==se||t[86]!==ue||t[87]!==pe?(me=(0,Z.jsxs)(ne,{offen:oe,titel:`Modell installieren?`,text:Q,knopf:se,gesperrt:ce,onNein:le,onJa:P,children:[ue,pe]}),t[81]=a.isPending,t[82]=P,t[83]=oe,t[84]=Q,t[85]=se,t[86]=ue,t[87]=pe,t[88]=me):me=t[88];let he;t[89]!==j||t[90]!==R||t[91]!==z||t[92]!==B||t[93]!==V||t[94]!==J||t[95]!==me?(he=(0,Z.jsxs)(j,{side:R,className:z,children:[B,V,J,me]}),t[89]=j,t[90]=R,t[91]=z,t[92]=B,t[93]=V,t[94]=J,t[95]=me,t[96]=he):he=t[96];let ge;return t[97]!==M||t[98]!==K||t[99]!==re||t[100]!==he?(ge=(0,Z.jsx)(M,{open:K,onOpenChange:re,children:he}),t[97]=M,t[98]=K,t[99]=re,t[100]=he,t[101]=ge):ge=t[101],ge}function Qe(e){let[t,n]=e;return(0,Z.jsx)(`option`,{value:t,children:n},t)}function $e(e){return typeof e==`string`?{quant:e}:e}var et=115;function tt(e){let t=(0,Y.c)(55),{modelle:n,laufend:r}=e,i=F(),a=g(),o,s,c,l,u,d,f,p,m,h;if(t[0]!==r||t[1]!==i?.ram_total||t[2]!==i?.ram_used||t[3]!==n||t[4]!==a){let e=b(i?.ram_total??a.data?.box.ram_total)??122.7,g=b(i?.ram_used??a.data?.box.ram_used)??0,_;t[15]===r?_=t[16]:(_=e=>r.includes(e.name),t[15]=r,t[16]=_);let v=n.filter(_).reduce(nt,0);s=Math.max(0,g-v);let y=t=>`${Math.min(100,t/e*100)}%`;o=K,p=`Speicher`,m=(0,Z.jsxs)(`span`,{className:`ziffern text-sm text-text-2`,children:[Math.round(g),` von `,Math.round(e),` GB belegt · Grenze ~`,et,` GB`]});let x=`Speicher: ${Math.round(g)} von ${Math.round(e)} GB belegt`,S=y(g),C;t[17]===S?C=t[18]:(C={width:S},t[17]=S,t[18]=C);let w=`${g?v/g*100:0}%`,T;t[19]===w?T=t[20]:(T=(0,Z.jsx)(`div`,{className:`h-full bg-cyan`,style:{width:w}}),t[19]=w,t[20]=T);let E=`${g?s/g*100:0}%`,D;t[21]===E?D=t[22]:(D=(0,Z.jsx)(`div`,{className:`h-full bg-cyan/35`,style:{width:E}}),t[21]=E,t[22]=D);let O;t[23]!==C||t[24]!==T||t[25]!==D?(O=(0,Z.jsxs)(`div`,{className:`absolute inset-y-0 left-0 flex overflow-hidden rounded-lg`,style:C,children:[T,D]}),t[23]=C,t[24]=T,t[25]=D,t[26]=O):O=t[26];let k=y(et),A;t[27]===k?A=t[28]:(A=(0,Z.jsx)(`div`,{className:`absolute -top-1.5 -bottom-1.5 w-0.5 bg-bernstein`,style:{left:k}}),t[27]=k,t[28]=A),t[29]!==x||t[30]!==O||t[31]!==A?(h=(0,Z.jsxs)(`div`,{className:`relative h-8 overflow-hidden rounded-xl bg-white/[0.06]`,role:`img`,"aria-label":x,children:[O,A]}),t[29]=x,t[30]=O,t[31]=A,t[32]=h):h=t[32],f=`flex flex-wrap gap-x-6 gap-y-2 text-sm text-text-2`,c=`flex items-center gap-2`,t[33]===Symbol.for(`react.memo_cache_sentinel`)?(l=(0,Z.jsx)(`span`,{className:`size-2.5 rounded-sm bg-cyan`}),t[33]=l):l=t[33],u=` Geladene Modelle: `,d=Math.round(v),t[0]=r,t[1]=i?.ram_total,t[2]=i?.ram_used,t[3]=n,t[4]=a,t[5]=o,t[6]=s,t[7]=c,t[8]=l,t[9]=u,t[10]=d,t[11]=f,t[12]=p,t[13]=m,t[14]=h}else o=t[5],s=t[6],c=t[7],l=t[8],u=t[9],d=t[10],f=t[11],p=t[12],m=t[13],h=t[14];let _;t[34]!==c||t[35]!==l||t[36]!==u||t[37]!==d?(_=(0,Z.jsxs)(`span`,{className:c,children:[l,u,d,` GB Dateien`]}),t[34]=c,t[35]=l,t[36]=u,t[37]=d,t[38]=_):_=t[38];let v;t[39]===Symbol.for(`react.memo_cache_sentinel`)?(v=(0,Z.jsx)(`span`,{className:`size-2.5 rounded-sm bg-cyan/35`}),t[39]=v):v=t[39];let y;t[40]===s?y=t[41]:(y=Math.round(s),t[40]=s,t[41]=y);let x;t[42]===y?x=t[43]:(x=(0,Z.jsxs)(`span`,{className:`flex items-center gap-2`,children:[v,` Cache, Dienste, System: `,y,` GB`]}),t[42]=y,t[43]=x);let S;t[44]===Symbol.for(`react.memo_cache_sentinel`)?(S=(0,Z.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,Z.jsx)(`span`,{className:`h-3 w-0.5 bg-bernstein`}),` Ab hier wird es eng`]}),t[44]=S):S=t[44];let C;t[45]!==x||t[46]!==f||t[47]!==_?(C=(0,Z.jsxs)(`div`,{className:f,children:[_,x,S]}),t[45]=x,t[46]=f,t[47]=_,t[48]=C):C=t[48];let w;return t[49]!==o||t[50]!==C||t[51]!==p||t[52]!==m||t[53]!==h?(w=(0,Z.jsxs)(o,{titel:p,rechts:m,children:[h,C]}),t[49]=o,t[50]=C,t[51]=p,t[52]=m,t[53]=h,t[54]=w):w=t[54],w}function nt(e,t){return e+(b(t.size_bytes)??0)}function rt(e){let t=(0,Y.c)(7),{name:n,wert:r}=e,i;t[0]===n?i=t[1]:(i=(0,Z.jsx)(`dt`,{className:`text-xs text-text-3`,children:n}),t[0]=n,t[1]=i);let a;t[2]===r?a=t[3]:(a=(0,Z.jsx)(`dd`,{className:`ziffern m-0 text-lg`,children:r}),t[2]=r,t[3]=a);let o;return t[4]!==i||t[5]!==a?(o=(0,Z.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[i,a]}),t[4]=i,t[5]=a,t[6]=o):o=t[6],o}function it(e){let t=(0,Y.c)(48),{titel:n,modell:r,zwilling:i,laeuft:a,nutzer:o}=e,s=k();if(!r){let e;t[0]===n?e=t[1]:(e=(0,Z.jsx)(`span`,{className:`etikett text-[11px] tracking-[0.14em] text-text-3`,children:n}),t[0]=n,t[1]=e);let r;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,Z.jsx)(d,{children:`Frei`}),t[2]=r):r=t[2];let i;t[3]===e?i=t[4]:(i=(0,Z.jsxs)(`div`,{className:`flex items-center justify-between`,children:[e,r]}),t[3]=e,t[4]=i);let a,o;t[5]===Symbol.for(`react.memo_cache_sentinel`)?(a=(0,Z.jsx)(`h3`,{className:`font-anzeige text-xl font-semibold text-text-2`,children:`Nicht belegt`}),o=(0,Z.jsx)(`p`,{className:`text-sm text-text-2`,children:`Nur belegen, wenn ein Modell hier echten Mehrwert bringt. Das Radar meldet Kandidaten.`}),t[5]=a,t[6]=o):(a=t[5],o=t[6]);let s;return t[7]===i?s=t[8]:(s=(0,Z.jsxs)(`article`,{className:`flex flex-col gap-3.5 rounded-2xl border border-dashed border-white/15 p-5`,children:[i,a,o]}),t[7]=i,t[8]=s),s}let c;t[9]!==r.ctx||t[10]!==r.parallel_slots?(c=r.ctx?Math.round(r.ctx/Math.max(1,r.parallel_slots)/1024):null,t[9]=r.ctx,t[10]=r.parallel_slots,t[11]=c):c=t[11];let l=c,u=!!r.capabilities?.vision||!!i,f;t[12]===n?f=t[13]:(f=(0,Z.jsx)(`span`,{className:`etikett text-[11px] tracking-[0.14em] text-text-3`,children:n}),t[12]=n,t[13]=f);let m=a?`gruen`:`grau`,h=a?`Geladen`:`Auf Abruf`,g;t[14]!==m||t[15]!==h?(g=(0,Z.jsx)(d,{art:m,children:h}),t[14]=m,t[15]=h,t[16]=g):g=t[16];let _;t[17]!==f||t[18]!==g?(_=(0,Z.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[f,g]}),t[17]=f,t[18]=g,t[19]=_):_=t[19];let v;t[20]===r.name?v=t[21]:(v=(0,Z.jsx)(`h3`,{className:`ziffern m-0 text-lg font-medium break-all`,children:r.name}),t[20]=r.name,t[21]=v);let y;t[22]===r.size_bytes?y=t[23]:(y=p(r.size_bytes),t[22]=r.size_bytes,t[23]=y);let b;t[24]===y?b=t[25]:(b=(0,Z.jsx)(rt,{name:`Größe`,wert:y}),t[24]=y,t[25]=b);let x=l?`${l}k`:`–`,S;t[26]===x?S=t[27]:(S=(0,Z.jsx)(rt,{name:`Kontext`,wert:x}),t[26]=x,t[27]=S);let C=u?`ja`:`nein`,w;t[28]===C?w=t[29]:(w=(0,Z.jsx)(rt,{name:`Bilder`,wert:C}),t[28]=C,t[29]=w);let T;t[30]!==S||t[31]!==w||t[32]!==b?(T=(0,Z.jsxs)(`dl`,{className:`m-0 grid grid-cols-3 gap-3`,children:[b,S,w]}),t[30]=S,t[31]=w,t[32]=b,t[33]=T):T=t[33];let E=r.spec_active?` Mit Draft-Beschleunigung.`:``,D=i?` Bilder sieht es über seinen Bild-Zwilling, der nur bei Bedarf lädt.`:``,O;t[34]!==o||t[35]!==E||t[36]!==D?(O=(0,Z.jsxs)(`p`,{className:`text-sm text-text-2`,children:[`Genutzt von `,o,`.`,E,D]}),t[34]=o,t[35]=E,t[36]=D,t[37]=O):O=t[37];let A;t[38]!==s||t[39]!==a||t[40]!==r.name?(A=!a&&(0,Z.jsx)(H,{variant:`outline`,size:`sm`,className:`mt-auto self-start`,onClick:()=>s.mutate(r.name),disabled:s.isPending,children:`Jetzt laden`}),t[38]=s,t[39]=a,t[40]=r.name,t[41]=A):A=t[41];let j;return t[42]!==T||t[43]!==O||t[44]!==A||t[45]!==_||t[46]!==v?(j=(0,Z.jsxs)(`article`,{className:`flex flex-col gap-3.5 flaeche rounded-2xl p-5`,children:[_,v,T,O,A]}),t[42]=T,t[43]=O,t[44]=A,t[45]=_,t[46]=v,t[47]=j):j=t[47],j}var at={bestanden:`gruen`,durchgefallen:`rot`,wartet:`cyan`,neu:`cyan`,getestet:`grau`,uebernommen:`gruen`,verworfen:`grau`},ot={besser:`text-gruen`,schlechter:`text-rot-text`,gleich:`text-text-2`};function st(e){let t=(0,Y.c)(4),{test:n}=e,r,i;if(t[0]!==n.vergleich){i=Symbol.for(`react.early_return_sentinel`);bb0:{let e=Object.entries(n.vergleich??{});if(e.length===0){i=null;break bb0}let a;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(a=(0,Z.jsxs)(`div`,{role:`row`,className:`etikett grid grid-cols-[minmax(0,1fr)_auto_auto] gap-x-4 pb-1 text-[10.5px] tracking-[0.14em] text-text-3`,children:[(0,Z.jsx)(`span`,{role:`columnheader`,children:`Messwert`}),(0,Z.jsx)(`span`,{role:`columnheader`,className:`text-right`,children:`Kandidat`}),(0,Z.jsx)(`span`,{role:`columnheader`,className:`text-right`,children:`Heute`})]}),t[3]=a):a=t[3],r=(0,Z.jsxs)(`div`,{role:`table`,"aria-label":`Messwerte gegen das heutige Modell`,className:`flaeche-innen rounded-xl px-3 py-2 text-sm`,children:[a,e.map(ct)]})}t[0]=n.vergleich,t[1]=r,t[2]=i}else r=t[1],i=t[2];return i===Symbol.for(`react.early_return_sentinel`)?r:i}function ct(e){let[t,n]=e;return(0,Z.jsxs)(`div`,{role:`row`,className:`grid grid-cols-[minmax(0,1fr)_auto_auto] gap-x-4 border-t border-white/[0.06] py-1`,children:[(0,Z.jsx)(`span`,{role:`rowheader`,className:`text-text-2`,children:t}),(0,Z.jsx)(`span`,{role:`cell`,className:`ziffern text-right ${ot[n.urteil??``]??`text-text-2`}`,children:I(n.kandidat,n.einheit)}),(0,Z.jsx)(`span`,{role:`cell`,className:`ziffern text-right text-text-3`,children:I(n.baseline,n.einheit)})]},t)}function lt(e){let t=(0,Y.c)(80),{k:n,test:r,heute:i}=e,a=v(),o=y(),[s,c]=(0,X.useState)(null),l;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(l=[`bestanden`,`wartet`,`neu`,`getestet`],t[0]=l):l=t[0];let u=l.includes(n.status),f=n.rolle===`hirn`,p;t[1]===n.name?p=t[2]:(p=(0,Z.jsx)(`span`,{className:`ziffern text-[15px] font-medium`,children:n.name}),t[1]=n.name,t[2]=p);let m=f?`fürs Hirn`:`fürs Coden`,h;t[3]===m?h=t[4]:(h=(0,Z.jsx)(d,{art:`cyan`,children:m}),t[3]=m,t[4]=h);let g;t[5]!==n.eng||t[6]!==n.groesse_gb||t[7]!==n.passt?(g=n.groesse_gb!=null&&(0,Z.jsx)(d,{art:n.eng?`bernstein`:n.passt?`gruen`:`rot`,children:n.eng?`passt knapp`:n.passt?`passt`:`passt nicht`}),t[5]=n.eng,t[6]=n.groesse_gb,t[7]=n.passt,t[8]=g):g=t[8];let _=at[n.status]??`grau`,b=C[n.status]??n.status,x;t[9]!==_||t[10]!==b?(x=(0,Z.jsx)(d,{art:_,children:b}),t[9]=_,t[10]=b,t[11]=x):x=t[11];let S;t[12]!==p||t[13]!==h||t[14]!==g||t[15]!==x?(S=(0,Z.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[p,h,g,x]}),t[12]=p,t[13]=h,t[14]=g,t[15]=x,t[16]=S):S=t[16];let w;t[17]===n.groesse_gb?w=t[18]:(w=n.groesse_gb==null?``:`${n.groesse_gb.toLocaleString(`de-DE`)} GB. `,t[17]=n.groesse_gb,t[18]=w);let T;t[19]!==n.begruendung||t[20]!==w?(T=(0,Z.jsxs)(`p`,{className:`text-sm text-text-2`,children:[w,n.begruendung]}),t[19]=n.begruendung,t[20]=w,t[21]=T):T=t[21];let E;t[22]!==n.status||t[23]!==r?(E=r&&[`bestanden`,`durchgefallen`].includes(n.status)&&(0,Z.jsx)(st,{test:r}),t[22]=n.status,t[23]=r,t[24]=E):E=t[24];let D;t[25]!==n.begruendung||t[26]!==n.testbar_grund?(D=n.testbar_grund&&!n.begruendung.startsWith(`Läuft gerade`)&&(0,Z.jsx)(`p`,{className:`text-xs text-text-3`,children:n.testbar_grund}),t[25]=n.begruendung,t[26]=n.testbar_grund,t[27]=D):D=t[27];let O;t[28]!==a.isPending||t[29]!==n.status||t[30]!==n.testbar_jetzt||t[31]!==u||t[32]!==o.isPending?(O=u&&(0,Z.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[n.testbar_jetzt&&(0,Z.jsx)(H,{variant:`info`,size:`sm`,disabled:o.isPending,onClick:()=>c(`testen`),children:`Jetzt testen`}),n.status===`bestanden`&&(0,Z.jsx)(H,{size:`sm`,disabled:a.isPending,onClick:()=>c(`uebernehmen`),children:`Übernehmen`}),(0,Z.jsx)(H,{variant:`outline`,size:`sm`,disabled:a.isPending,onClick:()=>c(`verwerfen`),children:`Verwerfen`})]}),t[28]=a.isPending,t[29]=n.status,t[30]=n.testbar_jetzt,t[31]=u,t[32]=o.isPending,t[33]=O):O=t[33];let k=s===`uebernehmen`,A=`${n.name} übernehmen?`,j=f?`${n.name} wird Lucys Hirn${i?` und löst ${i} ab`:``}. NerdQuiz und OpenChamber nutzen ab dann ebenfalls das neue Modell. Hermes startet dafür kurz neu, Lucy ist etwa eine Minute nicht erreichbar. Das alte Modell bleibt auf der Platte.`:`${n.name} wird der Coder${i?` und löst ${i} ab`:``}. OpenChamber plant und baut ab dann damit. Das alte Modell bleibt auf der Platte.`,M;t[34]===Symbol.for(`react.memo_cache_sentinel`)?(M=()=>c(null),t[34]=M):M=t[34];let N;t[35]!==a||t[36]!==s||t[37]!==n.id||t[38]!==n.name?(N=()=>{s===`uebernehmen`&&(a.mutate({id:n.id,aktion:`uebernehmen`,name:n.name}),c(null))},t[35]=a,t[36]=s,t[37]=n.id,t[38]=n.name,t[39]=N):N=t[39];let P;t[40]!==a.isPending||t[41]!==k||t[42]!==A||t[43]!==j||t[44]!==N?(P=(0,Z.jsx)(ne,{offen:k,titel:A,text:j,knopf:`Übernehmen`,gesperrt:a.isPending,onNein:M,onJa:N}),t[40]=a.isPending,t[41]=k,t[42]=A,t[43]=j,t[44]=N,t[45]=P):P=t[45];let F=s===`testen`,I=`${n.name} jetzt testen?`,L;t[46]===n.groesse_gb?L=t[47]:(L=n.groesse_gb==null?``:` (${n.groesse_gb.toLocaleString(`de-DE`)} GB)`,t[46]=n.groesse_gb,t[47]=L);let R=`Das Radar lädt ${n.name}${L} herunter, falls nötig, misst das heutige Modell der Rolle und dann den Kandidaten. Das dauert je nach Download eine halbe bis zwei Stunden. Solange antworten Lucy und NerdQuiz etwas langsamer; ein geladener Coder wird dafür entladen, und wird er währenddessen gebraucht, bricht der Test ab. Das Ergebnis kommt als Meldung; fällt der Kandidat durch, werden seine Dateien gelöscht.`,z;t[48]===Symbol.for(`react.memo_cache_sentinel`)?(z=()=>c(null),t[48]=z):z=t[48];let B;t[49]!==s||t[50]!==n.id||t[51]!==n.name||t[52]!==o?(B=()=>{s===`testen`&&(o.mutate({id:n.id,name:n.name}),c(null))},t[49]=s,t[50]=n.id,t[51]=n.name,t[52]=o,t[53]=B):B=t[53];let V;t[54]!==F||t[55]!==I||t[56]!==R||t[57]!==B||t[58]!==o.isPending?(V=(0,Z.jsx)(ne,{offen:F,titel:I,text:R,knopf:`Jetzt testen`,gesperrt:o.isPending,onNein:z,onJa:B}),t[54]=F,t[55]=I,t[56]=R,t[57]=B,t[58]=o.isPending,t[59]=V):V=t[59];let ee=s===`verwerfen`,te=`${n.name} verwerfen?`,U;t[60]===Symbol.for(`react.memo_cache_sentinel`)?(U=()=>c(null),t[60]=U):U=t[60];let W;t[61]!==a||t[62]!==s||t[63]!==n.id||t[64]!==n.name?(W=()=>{s===`verwerfen`&&(a.mutate({id:n.id,aktion:`verwerfen`,name:n.name}),c(null))},t[61]=a,t[62]=s,t[63]=n.id,t[64]=n.name,t[65]=W):W=t[65];let G;t[66]!==a.isPending||t[67]!==ee||t[68]!==te||t[69]!==W?(G=(0,Z.jsx)(ne,{offen:ee,gefahr:!0,titel:te,text:`Die heruntergeladenen Dateien werden gelöscht, und das Radar testet dieses Modell nicht noch einmal.`,knopf:`Verwerfen`,gesperrt:a.isPending,onNein:U,onJa:W}),t[66]=a.isPending,t[67]=ee,t[68]=te,t[69]=W,t[70]=G):G=t[70];let K;return t[71]!==T||t[72]!==E||t[73]!==D||t[74]!==O||t[75]!==P||t[76]!==V||t[77]!==G||t[78]!==S?(K=(0,Z.jsxs)(`li`,{className:`flex flex-col gap-2 border-t border-white/[0.06] py-3.5`,children:[S,T,E,D,O,P,V,G]}),t[71]=T,t[72]=E,t[73]=D,t[74]=O,t[75]=P,t[76]=V,t[77]=G,t[78]=S,t[79]=K):K=t[79],K}function ut(e){let t=(0,Y.c)(30),{hirn:n,coder:r}=e,i=V(),a=B(),o=j(),s=R(),c=o.data?.jobs,l=(c??[]).filter(ft).at(-1),d=a.data?.job_id,f;t[0]!==d||t[1]!==c?(f=!!d&&!!c&&!c.some(e=>e.id===d),t[0]=d,t[1]=c,t[2]=f):f=t[2];let p=f,m=a.isPending||p||l!==void 0&&D(l),h=(0,X.useRef)(m);if((0,X.useEffect)(()=>{h.current&&!m&&s.invalidateQueries({queryKey:[`radar`]}),h.current=m},[m,s]),i.isError&&!i.data){let e=i.error instanceof M&&i.error.status===404,n;return t[3]!==e||t[4]!==i.error?(n=(0,Z.jsx)(K,{titel:`Modell-Radar`,id:`radar`,className:`scroll-mt-4`,children:e?(0,Z.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Das Radar ist auf dieser Box noch nicht eingerichtet.`}):(0,Z.jsxs)(`p`,{role:`alert`,className:`text-[15px] text-rot-text`,children:[`Das Radar antwortet gerade nicht: `,i.error.message]})}),t[3]=e,t[4]=i.error,t[5]=n):n=t[5],n}let g=i.data,_=K,v;t[6]===a?v=t[7]:(v=()=>a.mutate(void 0),t[6]=a,t[7]=v);let y=m?`Sucht …`:`Jetzt suchen`,b;t[8]!==m||t[9]!==v||t[10]!==y?(b=(0,Z.jsx)(H,{variant:`info`,size:`sm`,onClick:v,disabled:m,children:y}),t[8]=m,t[9]=v,t[10]=y,t[11]=b):b=t[11];let x;t[12]===g?x=t[13]:(x=g?.naechster_test?` Nächster Test: ${u(g.naechster_test)}.`:``,t[12]=g,t[13]=x);let S=m?` Sucht gerade bei Hugging Face. Das dauert ein paar Minuten; den Stand zeigt der Auftrag oben unter „Aufträge“.`:``,C;t[14]!==x||t[15]!==S?(C=(0,Z.jsxs)(`p`,{className:`-mt-2 text-sm text-text-2`,children:[`Testet nachts zwischen 00:30 und 02:30 selbst, höchstens einen Kandidaten pro Woche. Tagsüber geht es mit „Jetzt testen“, wenn der Kandidat samt Coder in den Speicher passt.`,x,S]}),t[14]=x,t[15]=S,t[16]=C):C=t[16];let w=!m&&l?.state===`failed`&&(0,Z.jsxs)(`p`,{role:`alert`,className:`text-sm text-rot-text`,children:[`Die letzte Suche ist gescheitert: `,re(l)??`ohne Meldung`]}),T;t[17]!==r||t[18]!==g||t[19]!==n?(T=g?g.kandidaten.length===0?(0,Z.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Nichts Besseres in Sicht.`}):(0,Z.jsx)(`ul`,{className:`m-0 flex list-none flex-col p-0`,children:g.kandidaten.map(e=>(0,Z.jsx)(lt,{k:e,test:g.tests.find(t=>t.kandidat===e.id),heute:e.rolle===`hirn`?n:r},e.id))}):(0,Z.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Wird gelesen …`}),t[17]=r,t[18]=g,t[19]=n,t[20]=T):T=t[20];let E;t[21]===g?E=t[22]:(E=g&&g.tests.length>0&&(0,Z.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,Z.jsx)(`h3`,{className:`etikett text-[10.5px] tracking-[0.12em] text-text-3`,children:`Letzte Tests`}),g.tests.slice(0,3).map(dt)]}),t[21]=g,t[22]=E);let O;return t[23]!==_||t[24]!==C||t[25]!==w||t[26]!==T||t[27]!==E||t[28]!==b?(O=(0,Z.jsxs)(_,{titel:`Modell-Radar`,id:`radar`,className:`scroll-mt-4`,rechts:b,children:[C,w,T,E]}),t[23]=_,t[24]=C,t[25]=w,t[26]=T,t[27]=E,t[28]=b,t[29]=O):O=t[29],O}function dt(e){return(0,Z.jsxs)(`p`,{className:`text-sm text-text-2`,children:[(0,Z.jsx)(`span`,{className:`ziffern text-text-3`,children:u(e.datum)}),` · `,e.zusammenfassung]},e.id)}function ft(e){return e.group===`radar`}var pt=`text-rot-text hover:bg-rot-grund hover:text-rot-text`;function mt(e){let t=(0,Y.c)(13),{titel:n,zusatz:r,children:i}=e,a;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(a=(0,Z.jsx)(c,{className:`size-4 text-text-3 transition-transform group-open:rotate-90`,"aria-hidden":!0}),t[0]=a):a=t[0];let o;t[1]===n?o=t[2]:(o=(0,Z.jsxs)(`span`,{className:`flex items-center gap-2 text-[15px] font-medium`,children:[a,n]}),t[1]=n,t[2]=o);let s;t[3]===r?s=t[4]:(s=(0,Z.jsx)(`span`,{className:`ziffern text-sm text-text-2`,children:r}),t[3]=r,t[4]=s);let l;t[5]!==o||t[6]!==s?(l=(0,Z.jsxs)(`summary`,{className:`flex min-h-12 cursor-pointer list-none items-center justify-between gap-3 [&::-webkit-details-marker]:hidden`,children:[o,s]}),t[5]=o,t[6]=s,t[7]=l):l=t[7];let u;t[8]===i?u=t[9]:(u=(0,Z.jsx)(`div`,{className:`flex flex-col gap-2 pb-1`,children:i}),t[8]=i,t[9]=u);let d;return t[10]!==l||t[11]!==u?(d=(0,Z.jsxs)(`details`,{className:`group flaeche-innen rounded-2xl px-4 open:pb-2`,children:[l,u]}),t[10]=l,t[11]=u,t[12]=d):d=t[12],d}function ht(){let e=(0,Y.c)(37),t=S(),n=x(),[r,i]=(0,X.useState)(null),a,o,s,c,l,u;if(e[0]!==t.data||e[1]!==t.error||e[2]!==t.isError||e[3]!==t.isPending||e[4]!==n){u=Symbol.for(`react.early_return_sentinel`);bb0:{let r=t.data?.kandidaten??[],f=r.reduce(gt,0);if(t.isError&&!t.data){let n;e[11]===t.error.message?n=e[12]:(n=(0,Z.jsxs)(`p`,{role:`alert`,className:`text-[15px] text-rot-text`,children:[`Was sich aufräumen ließe, lässt sich gerade nicht lesen: `,t.error.message]}),e[11]=t.error.message,e[12]=n);let r;e[13]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,Z.jsx)(vt,{}),e[13]=r):r=e[13];let i;e[14]===n?i=e[15]:(i=(0,Z.jsxs)(K,{titel:`Aufräumen`,children:[n,r]}),e[14]=n,e[15]=i),u=i;break bb0}a=K,o=`Aufräumen`,s=r.length>0?(0,Z.jsxs)(`span`,{className:`ziffern text-sm text-text-2`,children:[`bis zu `,f.toLocaleString(`de-DE`,{maximumFractionDigits:0}),` GB frei`]}):void 0,e[16]===Symbol.for(`react.memo_cache_sentinel`)?(c=(0,Z.jsx)(`p`,{className:`-mt-2 text-sm text-text-2`,children:`Modelle und Ordner, die gerade niemand nutzt. Nichts davon wird von selbst gelöscht, das entscheidest du je Eintrag.`}),e[16]=c):c=e[16],l=t.isPending?(0,Z.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Wird gelesen …`}):r.length===0?(0,Z.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Nichts aufzuräumen.`}):(0,Z.jsx)(mt,{titel:`Modelle und Ordner`,zusatz:`${r.length} Einträge · bis zu ${f.toLocaleString(`de-DE`,{maximumFractionDigits:0})} GB`,children:(0,Z.jsx)(`ul`,{className:`m-0 flex list-none flex-col p-0`,children:r.map(e=>(0,Z.jsxs)(`li`,{className:`flex flex-wrap items-center justify-between gap-3 border-t border-white/[0.06] py-3`,children:[(0,Z.jsxs)(`span`,{className:`flex min-w-0 flex-1 flex-col gap-1`,children:[(0,Z.jsxs)(`span`,{className:`flex flex-wrap items-center gap-2`,children:[(0,Z.jsx)(`span`,{className:`ziffern text-sm break-all`,children:e.name}),(0,Z.jsx)(d,{children:e.art===`eintrag`?`Eintrag`:`Ordner`})]}),(0,Z.jsx)(`span`,{className:`text-sm text-text-2`,children:e.hinweis})]}),(0,Z.jsxs)(`span`,{className:`flex items-center gap-3`,children:[(0,Z.jsxs)(`span`,{className:`ziffern text-sm text-text-2`,children:[e.groesse_gb.toLocaleString(`de-DE`),` GB`]}),(0,Z.jsx)(H,{variant:`ghost`,size:`sm`,className:pt,disabled:n.isPending,onClick:()=>i(e),children:`Löschen`})]})]},`${e.art}-${e.name}`))})})}e[0]=t.data,e[1]=t.error,e[2]=t.isError,e[3]=t.isPending,e[4]=n,e[5]=a,e[6]=o,e[7]=s,e[8]=c,e[9]=l,e[10]=u}else a=e[5],o=e[6],s=e[7],c=e[8],l=e[9],u=e[10];if(u!==Symbol.for(`react.early_return_sentinel`))return u;let f=r!==null,p=`${r?.name??``} löschen?`,m;e[17]===r?.groesse_gb?m=e[18]:(m=r?.groesse_gb.toLocaleString(`de-DE`)??``,e[17]=r?.groesse_gb,e[18]=m);let h=`${r?.hinweis??``} Es werden ${m} GB frei. Das lässt sich nicht rückgängig machen — zurück ginge es nur mit einem neuen Download.`,g;e[19]===Symbol.for(`react.memo_cache_sentinel`)?(g=()=>i(null),e[19]=g):g=e[19];let _;e[20]!==r||e[21]!==n?(_=()=>{r&&n.mutate(r),i(null)},e[20]=r,e[21]=n,e[22]=_):_=e[22];let v;e[23]!==n.isPending||e[24]!==_||e[25]!==f||e[26]!==p||e[27]!==h?(v=(0,Z.jsx)(ne,{offen:f,gefahr:!0,titel:p,text:h,knopf:`Endgültig löschen`,gesperrt:n.isPending,onNein:g,onJa:_}),e[23]=n.isPending,e[24]=_,e[25]=f,e[26]=p,e[27]=h,e[28]=v):v=e[28];let y;e[29]===Symbol.for(`react.memo_cache_sentinel`)?(y=(0,Z.jsx)(vt,{}),e[29]=y):y=e[29];let b;return e[30]!==a||e[31]!==o||e[32]!==s||e[33]!==v||e[34]!==c||e[35]!==l?(b=(0,Z.jsxs)(a,{titel:o,rechts:s,children:[c,l,v,y]}),e[30]=a,e[31]=o,e[32]=s,e[33]=v,e[34]=c,e[35]=l,e[36]=b):b=e[36],b}function gt(e,t){return e+t.groesse_gb}function _t(e){return e>=1e9?`${(e/1e9).toLocaleString(`de-DE`,{maximumFractionDigits:1})} GB`:e>=1e6?`${Math.round(e/1e6)} MB`:e>=1e3?`${Math.round(e/1e3)} KB`:`unter 1 KB`}function vt(){let e=(0,Y.c)(23),t=m(),n=f(),[r,i]=(0,X.useState)(null),a,o;if(e[0]!==t.data||e[1]!==t.error||e[2]!==t.isError||e[3]!==t.isPending||e[4]!==n.isPending){let r=t.data?.altreste??[],s=r.reduce(yt,0);a=`flex flex-col gap-2`,o=t.isPending?(0,Z.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Wird gelesen …`}):t.isError&&!t.data?(0,Z.jsxs)(`p`,{role:`alert`,className:`text-[15px] text-rot-text`,children:[`Die Altreste lassen sich gerade nicht lesen: `,t.error.message]}):r.length===0?(0,Z.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Keine Altreste mehr.`}):(0,Z.jsxs)(mt,{titel:`Altreste neben dem Betrieb`,zusatz:`${r.length} Einträge · ${_t(s)}`,children:[(0,Z.jsx)(`p`,{className:`text-sm text-text-2`,children:`Test-Ordner, alte Umgebungen und Arbeitskopien, die nichts mehr nutzt. Die Box prüft sie gegen eine feste Liste und löscht auch hier nie von selbst.`}),(0,Z.jsx)(`ul`,{className:`m-0 flex list-none flex-col p-0`,children:r.map(e=>(0,Z.jsxs)(`li`,{className:`flex flex-wrap items-center justify-between gap-3 border-t border-white/[0.06] py-3`,children:[(0,Z.jsxs)(`span`,{className:`flex min-w-0 flex-1 flex-col gap-1`,children:[(0,Z.jsxs)(`span`,{className:`flex flex-wrap items-center gap-2`,children:[(0,Z.jsx)(`span`,{className:`text-sm`,children:e.name}),(0,Z.jsx)(d,{children:`Altrest`})]}),(0,Z.jsx)(`span`,{className:`ziffern text-xs break-all text-text-3`,children:e.pfade.join(` · `)}),(0,Z.jsx)(`span`,{className:`text-sm text-text-2`,children:e.hinweis})]}),(0,Z.jsxs)(`span`,{className:`flex items-center gap-3`,children:[(0,Z.jsx)(`span`,{className:`ziffern text-sm text-text-2`,children:e.groesse}),(0,Z.jsx)(H,{variant:`ghost`,size:`sm`,className:pt,disabled:n.isPending,onClick:()=>i(e),children:`Löschen`})]})]},e.id))})]}),e[0]=t.data,e[1]=t.error,e[2]=t.isError,e[3]=t.isPending,e[4]=n.isPending,e[5]=a,e[6]=o}else a=e[5],o=e[6];let s=r!==null,c=`${r?.name??``} löschen?`,l;e[7]===r?.pfade?l=e[8]:(l=r?.pfade.join(`, `)??``,e[7]=r?.pfade,e[8]=l);let u=`${r?.hinweis??``} Gelöscht wird: ${l} (${r?.groesse??``}). Das lässt sich nicht rückgängig machen.`,p;e[9]===Symbol.for(`react.memo_cache_sentinel`)?(p=()=>i(null),e[9]=p):p=e[9];let h;e[10]!==r||e[11]!==n?(h=()=>{r&&n.mutate(r),i(null)},e[10]=r,e[11]=n,e[12]=h):h=e[12];let g;e[13]!==n.isPending||e[14]!==s||e[15]!==c||e[16]!==u||e[17]!==h?(g=(0,Z.jsx)(ne,{offen:s,gefahr:!0,titel:c,text:u,knopf:`Endgültig löschen`,gesperrt:n.isPending,onNein:p,onJa:h}),e[13]=n.isPending,e[14]=s,e[15]=c,e[16]=u,e[17]=h,e[18]=g):g=e[18];let _;return e[19]!==a||e[20]!==o||e[21]!==g?(_=(0,Z.jsxs)(`div`,{className:a,children:[o,g]}),e[19]=a,e[20]=o,e[21]=g,e[22]=_):_=e[22],_}function yt(e,t){return e+t.groesse_bytes}function bt(){let e=(0,Y.c)(69),t=T(),n=z(),r=V(),i=j(),[a,o]=(0,X.useState)(!1),s;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(s={select:wt},e[0]=s):s=e[0];let c=oe(s),d=!!t.data&&!n.isPending&&!r.isPending&&!i.isPending,f,m;if(e[1]!==d||e[2]!==c?(f=()=>{d&&c===`radar`&&document.getElementById(`radar`)?.scrollIntoView({block:`start`})},m=[d,c],e[1]=d,e[2]=c,e[3]=f,e[4]=m):(f=e[3],m=e[4]),(0,X.useEffect)(f,m),t.isPending){let t;return e[5]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,Z.jsx)(_,{text:`Modelle werden gelesen …`}),e[5]=t):t=e[5],t}if(!t.data){let n=`Die Modell-Liste fehlt: ${t.error?.message??`keine Daten`}`,r;return e[6]===n?r=e[7]:(r=(0,Z.jsx)(_,{fehler:!0,text:n}),e[6]=n,e[7]=r),r}let h=t.data.models,g=t.data.running,v,y,b,x,S,C,w,E,D,O,k,A,M;if(e[8]!==g||e[9]!==h||e[10]!==n.data||e[11]!==n.error?.message||e[12]!==n.isPending){let t=h.find(Ct);y=h.find(St);let r;e[26]===h?r=e[27]:(r=(e,t)=>e?h.find(n=>n!==e&&n.aliases.includes(t)&&n.filename===e.filename):void 0,e[26]=h,e[27]=r);let i=r,a=i(t,`vision`);b=i(y,`coder-bild`);let s=h.filter(e=>![t,y,a,b].includes(e)),c;e[28]===n.data?.zuletzt_geladen?c=e[29]:(c=n.data?.zuletzt_geladen??{},e[28]=n.data?.zuletzt_geladen,e[29]=c);let d=c,f={};for(let[e,n]of[[t,`Hirn`],[y,`Coder`],[a,`Bild-Zwilling des Hirns`],[b,`Bild-Zwilling des Coders`]])e&&(f[e.name]=n);e[30]!==g||e[31]!==h?(A=(0,Z.jsx)(tt,{modelle:h,laufend:g}),e[30]=g,e[31]=h,e[32]=A):A=e[32],e[33]===Symbol.for(`react.memo_cache_sentinel`)?(M=(0,Z.jsx)(q,{alsPanel:!0}),e[33]=M):M=e[33];let m;e[34]===Symbol.for(`react.memo_cache_sentinel`)?(m=(0,Z.jsx)(it,{titel:`Dritte Rolle`,laeuft:!1,nutzer:``}),e[34]=m):m=e[34],x=(0,Z.jsxs)(`section`,{"aria-label":`Rollen`,className:`grid gap-5 md:grid-cols-3 md:gap-6`,children:[(0,Z.jsx)(it,{titel:`Hirn`,modell:t,zwilling:a,laeuft:!!t&&g.includes(t.name),nutzer:`Lucy, NerdQuiz und OpenChamber für Kleinkram`}),(0,Z.jsx)(it,{titel:`Coder`,modell:y,zwilling:b,laeuft:!!y&&g.includes(y.name),nutzer:`OpenChamber zum Planen und Bauen und Lucys Delegation`}),m]}),S=(0,Z.jsx)(Ye,{nutzung:n.data,laedt:n.isPending,fehler:n.error?.message??null,rollen:f});let _=t?.name,T=y?.name;e[35]!==_||e[36]!==T?(C=(0,Z.jsx)(ut,{hirn:_,coder:T}),e[35]=_,e[36]=T,e[37]=C):C=e[37],v=K,D=`Weitere Einträge`,e[38]===Symbol.for(`react.memo_cache_sentinel`)?(O=(0,Z.jsxs)(H,{variant:`outline`,size:`sm`,onClick:()=>o(!0),children:[(0,Z.jsx)(l,{"aria-hidden":!0}),` Modelle selbst suchen`]}),e[38]=O):O=e[38],k=s.length===0&&(0,Z.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Keine weiteren Einträge.`}),w=`m-0 flex list-none flex-col p-0`;let j;e[39]!==g||e[40]!==d?(j=e=>(0,Z.jsxs)(`li`,{className:`grid grid-cols-[minmax(0,1fr)_auto] items-center gap-3 border-t border-white/[0.06] py-2.5 sm:grid-cols-[minmax(0,1fr)_120px_160px]`,children:[(0,Z.jsxs)(`span`,{className:`min-w-0`,children:[(0,Z.jsx)(`span`,{className:`ziffern block text-sm break-all`,children:e.name}),(0,Z.jsx)(`span`,{className:`text-xs text-text-3`,children:e.aliases.length?e.aliases.join(`, `):`ohne Rolle`})]}),(0,Z.jsx)(`span`,{className:`ziffern text-sm text-text-2`,children:p(e.size_bytes)}),(0,Z.jsx)(`span`,{className:`ziffern hidden text-xs text-text-3 sm:block`,children:g.includes(e.name)?`geladen`:d[e.name]?`zuletzt ${u(d[e.name])}`:`länger nicht geladen`})]},e.name),e[39]=g,e[40]=d,e[41]=j):j=e[41],E=s.map(j),e[8]=g,e[9]=h,e[10]=n.data,e[11]=n.error?.message,e[12]=n.isPending,e[13]=v,e[14]=y,e[15]=b,e[16]=x,e[17]=S,e[18]=C,e[19]=w,e[20]=E,e[21]=D,e[22]=O,e[23]=k,e[24]=A,e[25]=M}else v=e[13],y=e[14],b=e[15],x=e[16],S=e[17],C=e[18],w=e[19],E=e[20],D=e[21],O=e[22],k=e[23],A=e[24],M=e[25];let N;e[42]!==w||e[43]!==E?(N=(0,Z.jsx)(`ul`,{className:w,children:E}),e[42]=w,e[43]=E,e[44]=N):N=e[44];let P;e[45]!==v||e[46]!==N||e[47]!==D||e[48]!==O||e[49]!==k?(P=(0,Z.jsxs)(v,{titel:D,rechts:O,children:[k,N]}),e[45]=v,e[46]=N,e[47]=D,e[48]=O,e[49]=k,e[50]=P):P=e[50];let F;e[51]===Symbol.for(`react.memo_cache_sentinel`)?(F=(0,Z.jsx)(ht,{}),e[51]=F):F=e[51];let I;e[52]===Symbol.for(`react.memo_cache_sentinel`)?(I=()=>o(!1),e[52]=I):I=e[52];let L;e[53]!==y||e[54]!==b?(L=y?{name:y.name,zwilling:!!b,weitere:y.aliases.filter(xt)}:void 0,e[53]=y,e[54]=b,e[55]=L):L=e[55];let R;e[56]===L?R=e[57]:(R={coder:L},e[56]=L,e[57]=R);let B;e[58]!==a||e[59]!==R?(B=(0,Z.jsx)(Ze,{offen:a,onSchliessen:I,rollenJetzt:R}),e[58]=a,e[59]=R,e[60]=B):B=e[60];let ee;return e[61]!==x||e[62]!==S||e[63]!==C||e[64]!==P||e[65]!==B||e[66]!==A||e[67]!==M?(ee=(0,Z.jsxs)(Z.Fragment,{children:[A,M,x,S,C,P,F,B]}),e[61]=x,e[62]=S,e[63]=C,e[64]=P,e[65]=B,e[66]=A,e[67]=M,e[68]=ee):ee=e[68],ee}function xt(e){return e.toLowerCase()!==`coder`}function St(e){return P(e)===`coder`}function Ct(e){return P(e)===`hirn`}function wt(e){return e.hash}export{lt as Kandidat,bt as ModelleSeite}; \ No newline at end of file diff --git a/frontend/dist/assets/Monitoring-Cx9bpZ97.js b/frontend/dist/assets/Monitoring-Cx9bpZ97.js deleted file mode 100644 index 49c1af1..0000000 --- a/frontend/dist/assets/Monitoring-Cx9bpZ97.js +++ /dev/null @@ -1 +0,0 @@ -import{i as e,n as t,r as n,s as r,t as i}from"./dist-D4CVSex9.js";import{C as a,G as o,Vt as s,_ as c,at as l,b as u,c as d,et as f,g as p,h as m,l as h,ln as g,m as _,pt as v,u as y,v as b,y as x}from"./index-CKWhFN2A.js";import{t as S}from"./breite-pBrnu3_s.js";var C=t(),ee=r(e(),1),w=n(),T={rechts:12,oben:10,unten:24};function E(e){let t=(0,C.c)(72),{reihen:n,einheit:r,langerZeitraum:i,hoehe:a,titel:o}=e,s=a===void 0?180:a,[l,u]=S(),[d,f]=(0,ee.useState)(null),m,g,_,v,x,E,A,j;if(t[0]!==u||t[1]!==r||t[2]!==s||t[3]!==d||t[4]!==i||t[5]!==l||t[6]!==n||t[7]!==o){let e=n[0]?.punkte??[],a=e.length,S=p(n.map(te),r),C=r===`prozent`?[0,25,50,75,100]:[0,S/2,S],ee=Math.max(40,Math.max(...C.map(e=>c(e,r).length))*7+12),M;t[16]===ee?M=t[17]:(M={...T,links:ee},t[16]=ee,t[17]=M);let N=M,P=u-N.links-T.rechts,F=s-T.oben-T.unten,I=e[0]?.[0]??0,L=e[a-1]?.[0]??1,R=e=>N.links+(L>I?(e-I)/(L-I)*P:0),z;t[18]!==F||t[19]!==S?(z=e=>T.oben+F-Math.min(e,S)/(S||1)*F,t[18]=F,t[19]=S,t[20]=z):z=t[20];let B=z,V=T.oben+F,ne=a>1?[0,.25,.5,.75,1].map(t=>e[Math.round(t*(a-1))][0]):[],re;t[21]===n?re=t[22]:(re=n.some(k),t[21]=n,t[22]=re);let H=re,ie;t[23]===a?ie=t[24]:(ie=function(e){if(a===0)return;let t=e.currentTarget.getBoundingClientRect(),n=Math.min(1,Math.max(0,(e.clientX-t.left)/t.width));f(Math.round(n*(a-1)))},t[23]=a,t[24]=ie);let U=ie,W;t[25]===a?W=t[26]:(W=function(e){if(a!==0){if(e.key===`ArrowLeft`)f(e=>Math.max(0,(e??a-1)-1));else if(e.key===`ArrowRight`)f(e=>Math.min(a-1,(e??a-1)+1));else return;e.preventDefault()}},t[25]=a,t[26]=W);let ae=W,G=d!==null&&e[d]?e[d][0]:null,K=G===null?0:R(G),oe=e.slice(-12);E=`flex flex-col gap-2`,t[27]===n?A=t[28]:(A=n.length>1&&(0,w.jsx)(`ul`,{className:`m-0 flex list-none flex-wrap gap-x-4 gap-y-1 p-0 text-sm text-text-2`,"aria-label":`Legende`,children:n.map(O)}),t[27]=n,t[28]=A);let q;t[29]===a?q=t[30]:(q=()=>f(e=>e??(a?a-1:null)),t[29]=a,t[30]=q);let J;t[31]===Symbol.for(`react.memo_cache_sentinel`)?(J=()=>f(null),t[31]=J):J=t[31];let Y;t[32]!==N.links||t[33]!==V||t[34]!==H||t[35]!==P||t[36]!==F||t[37]!==n||t[38]!==R||t[39]!==B?(Y=H?n.map(e=>(0,w.jsxs)(`g`,{children:[n.length===1&&(0,w.jsx)(`path`,{d:h(e.punkte,R,B,V),fill:e.farbe,opacity:.1}),(0,w.jsx)(`path`,{d:y(e.punkte,R,B),fill:`none`,stroke:e.farbe,strokeWidth:2,strokeLinecap:`round`,strokeLinejoin:`round`})]},e.name)):(0,w.jsx)(`text`,{x:N.links+P/2,y:T.oben+F/2,textAnchor:`middle`,className:`fill-text-3 text-sm`,children:`Noch keine Messwerte in diesem Zeitraum`}),t[32]=N.links,t[33]=V,t[34]=H,t[35]=P,t[36]=F,t[37]=n,t[38]=R,t[39]=B,t[40]=Y):Y=t[40];let se;t[41]===Symbol.for(`react.memo_cache_sentinel`)?(se=()=>f(null),t[41]=se):se=t[41];let X;t[42]!==N.links||t[43]!==P||t[44]!==F||t[45]!==U?(X=(0,w.jsx)(`rect`,{x:N.links,y:T.oben,width:P,height:F,fill:`transparent`,onPointerMove:U,onPointerLeave:se}),t[42]=N.links,t[43]=P,t[44]=F,t[45]=U,t[46]=X):X=t[46];let ce=(0,w.jsxs)(`svg`,{width:u,height:s,role:`img`,"aria-label":o,tabIndex:0,onKeyDown:ae,onFocus:q,onBlur:J,className:`block max-w-full outline-none focus-visible:rounded-md focus-visible:ring-2 focus-visible:ring-cyan/60`,children:[C.map(e=>(0,w.jsxs)(`g`,{children:[(0,w.jsx)(`line`,{x1:N.links,x2:u-T.rechts,y1:B(e),y2:B(e),stroke:`var(--linie)`,strokeWidth:1}),(0,w.jsx)(`text`,{x:N.links-8,y:B(e)+4,textAnchor:`end`,className:`fill-text-3 font-mono text-[11px]`,children:c(e,r)})]},e)),ne.map((e,t)=>(0,w.jsx)(`text`,{x:R(e),y:s-6,className:`fill-text-3 font-mono text-[11px]`,textAnchor:t===0?`start`:t===ne.length-1?`end`:`middle`,children:b(e,i)},e)),Y,G!==null&&(0,w.jsxs)(`g`,{"aria-hidden":!0,children:[(0,w.jsx)(`line`,{x1:R(G),x2:R(G),y1:T.oben,y2:V,stroke:`var(--text-3)`,strokeWidth:1}),n.map(e=>{let t=e.punkte[d]?.[1];return t==null?null:(0,w.jsx)(`circle`,{cx:R(G),cy:B(t),r:4,fill:e.farbe,stroke:`var(--panel)`,strokeWidth:2},e.name)})]}),X]}),Z=G!==null&&(0,w.jsxs)(`div`,{role:`status`,className:`pointer-events-none absolute top-1 z-10 flex min-w-36 flex-col gap-1 rounded-lg border border-linie-stark bg-erhaben px-3 py-2 shadow-lg`,style:K>u/2?{right:u-K+10}:{left:K+10},children:[(0,w.jsx)(`span`,{className:`ziffern text-xs text-text-3`,children:b(G,!0)}),n.map(e=>(0,w.jsxs)(`span`,{className:`flex items-center gap-2 text-sm`,children:[(0,w.jsx)(`span`,{"aria-hidden":!0,className:`h-0.5 w-3 rounded-full`,style:{background:e.farbe}}),(0,w.jsx)(`span`,{className:`font-semibold text-foreground`,children:c(e.punkte[d]?.[1],r)}),n.length>1&&(0,w.jsx)(`span`,{className:`text-text-3`,children:e.name})]},e.name))]});t[47]!==l||t[48]!==ce||t[49]!==Z?(j=(0,w.jsxs)(`div`,{ref:l,className:`relative w-full`,children:[ce,Z]}),t[47]=l,t[48]=ce,t[49]=Z,t[50]=j):j=t[50],v=`group text-sm`,t[51]===Symbol.for(`react.memo_cache_sentinel`)?(x=(0,w.jsx)(`summary`,{className:`inline-flex cursor-pointer items-center text-text-3 hover:text-text-2`,children:`Werte als Tabelle`}),t[51]=x):x=t[51],g=`ziffern mt-2 w-full max-w-md border-collapse text-xs`;let Q;t[52]===Symbol.for(`react.memo_cache_sentinel`)?(Q=(0,w.jsx)(`th`,{className:`py-1 pr-4 font-normal`,children:`Zeit`}),t[52]=Q):Q=t[52];let $;t[53]===n?$=t[54]:($=n.map(D),t[53]=n,t[54]=$),t[55]===$?_=t[56]:(_=(0,w.jsx)(`thead`,{children:(0,w.jsxs)(`tr`,{className:`text-left text-text-3`,children:[Q,$]})}),t[55]=$,t[56]=_),m=oe.map((e,t)=>{let[o]=e;return(0,w.jsxs)(`tr`,{className:`border-t border-linie`,children:[(0,w.jsx)(`td`,{className:`py-1 pr-4 text-text-3`,children:b(o,i)}),n.map(e=>(0,w.jsx)(`td`,{className:`py-1 pr-4 text-text-2`,children:c(e.punkte[a-oe.length+t]?.[1],r)},e.name))]},o)}),t[0]=u,t[1]=r,t[2]=s,t[3]=d,t[4]=i,t[5]=l,t[6]=n,t[7]=o,t[8]=m,t[9]=g,t[10]=_,t[11]=v,t[12]=x,t[13]=E,t[14]=A,t[15]=j}else m=t[8],g=t[9],_=t[10],v=t[11],x=t[12],E=t[13],A=t[14],j=t[15];let M;t[57]===m?M=t[58]:(M=(0,w.jsx)(`tbody`,{children:m}),t[57]=m,t[58]=M);let N;t[59]!==M||t[60]!==g||t[61]!==_?(N=(0,w.jsxs)(`table`,{className:g,children:[_,M]}),t[59]=M,t[60]=g,t[61]=_,t[62]=N):N=t[62];let P;t[63]!==N||t[64]!==v||t[65]!==x?(P=(0,w.jsxs)(`details`,{className:v,children:[x,N]}),t[63]=N,t[64]=v,t[65]=x,t[66]=P):P=t[66];let F;return t[67]!==P||t[68]!==E||t[69]!==A||t[70]!==j?(F=(0,w.jsxs)(`div`,{className:E,children:[A,j,P]}),t[67]=P,t[68]=E,t[69]=A,t[70]=j,t[71]=F):F=t[71],F}function D(e){return(0,w.jsx)(`th`,{className:`py-1 pr-4 font-normal`,children:e.name},e.name)}function O(e){return(0,w.jsxs)(`li`,{className:`flex items-center gap-2`,children:[(0,w.jsx)(`span`,{"aria-hidden":!0,className:`h-0.5 w-4 rounded-full`,style:{background:e.farbe}}),e.name]},e.name)}function k(e){return e.punkte.some(A)}function A(e){let[,t]=e;return t!==null}function te(e){return e.punkte}var j=[{id:`1h`,name:`1 Stunde`,text:`letzte Stunde`},{id:`24h`,name:`24 Stunden`,text:`letzte 24 Stunden`},{id:`7d`,name:`7 Tage`,text:`letzte 7 Tage`}];function M(e){let t=(0,C.c)(6),{wert:n,onWahl:r,farbe:a}=e,o=a===`box`?`border-box-rand bg-box-grund text-box-text`:`border-lab-rand bg-lab-grund text-lab-text`,s;t[0]!==o||t[1]!==r||t[2]!==n?(s=j.map(e=>(0,w.jsx)(`button`,{type:`button`,onClick:()=>r(e.id),"aria-pressed":n===e.id,className:i(`h-9 rounded-full border px-4 text-sm`,n===e.id?o:`border-linie text-text-2 hover:border-linie-stark hover:text-foreground`),children:e.name},e.id)),t[0]=o,t[1]=r,t[2]=n,t[3]=s):s=t[3];let c;return t[4]===s?c=t[5]:(c=(0,w.jsx)(`div`,{role:`group`,"aria-label":`Zeitraum`,className:`flex flex-wrap gap-2`,children:s}),t[4]=s,t[5]=c),c}function N(e){let t=(0,C.c)(9),{titel:n,rechts:r,children:i}=e,a;t[0]===n?a=t[1]:(a=(0,w.jsx)(`h3`,{className:`schild text-sm tracking-[0.18em] text-text-2`,children:n}),t[0]=n,t[1]=a);let o;t[2]!==r||t[3]!==a?(o=(0,w.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[a,r]}),t[2]=r,t[3]=a,t[4]=o):o=t[4];let s;return t[5]!==i||t[6]!==o||t[7]!==n?(s=(0,w.jsxs)(`section`,{"aria-label":n,className:`flex min-w-0 flex-col gap-3 rounded-2xl border border-linie bg-panel p-4 sm:p-5`,children:[o,i]}),t[5]=i,t[6]=o,t[7]=n,t[8]=s):s=t[8],s}var P=e=>j.find(t=>t.id===e)?.text??``;function F(){let e=(0,C.c)(97),[t,n]=(0,ee.useState)(`1h`),r=o(t),c=s(),l;e[0]===r.data?.reihen?l=e[1]:(l=r.data?.reihen??{},e[0]=r.data?.reihen,e[1]=l);let u=l,f;e[2]===r.data?.aktuell?f=e[3]:(f=r.data?.aktuell??{},e[2]=r.data?.aktuell,e[3]=f);let p=f,h=t===`7d`,g;e[4]!==p||e[5]!==u?(g=(e,t)=>e??p[t]??m(u[t]),e[4]=p,e[5]=u,e[6]=g):g=e[6];let _=g,v;e[7]===t?v=e[8]:(v=(0,w.jsx)(M,{wert:t,onWahl:n,farbe:`box`}),e[7]=t,e[8]=v);let y;e[9]===Symbol.for(`react.memo_cache_sentinel`)?(y=(0,w.jsx)(`span`,{className:`text-sm text-text-3`,children:`Zahlen live, Verläufe im Minutentakt`}),e[9]=y):y=e[9];let b;e[10]===v?b=e[11]:(b=(0,w.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-3`,children:[v,y]}),e[10]=v,e[11]=b);let S=c?.cpu,T;e[12]!==S||e[13]!==_?(T=_(S,`cpu`),e[12]=S,e[13]=_,e[14]=T):T=e[14];let D=c?.cpu,O;e[15]!==D||e[16]!==_?(O=x(_(D,`cpu`),85,95),e[15]=D,e[16]=_,e[17]=O):O=e[17];let k;e[18]===t?k=e[19]:(k=P(t),e[18]=t,e[19]=k);let A;e[20]!==k||e[21]!==T||e[22]!==O?(A=(0,w.jsx)(d,{label:`CPU`,wert:T,einheit:`prozent`,max:100,zustand:O,zeitraumText:k}),e[20]=k,e[21]=T,e[22]=O,e[23]=A):A=e[23];let te=c?.ram,j;e[24]!==te||e[25]!==_?(j=_(te,`ram`),e[24]=te,e[25]=_,e[26]=j):j=e[26];let F=c?.ram,I;e[27]!==F||e[28]!==_?(I=x(_(F,`ram`),85,95),e[27]=F,e[28]=_,e[29]=I):I=e[29];let L;e[30]===t?L=e[31]:(L=P(t),e[30]=t,e[31]=L);let R;e[32]!==j||e[33]!==I||e[34]!==L?(R=(0,w.jsx)(d,{label:`Speicher`,wert:j,einheit:`prozent`,max:100,zustand:I,zeitraumText:L}),e[32]=j,e[33]=I,e[34]=L,e[35]=R):R=e[35];let z=c?.gpu,B;e[36]!==z||e[37]!==_?(B=_(z,`gpu`),e[36]=z,e[37]=_,e[38]=B):B=e[38];let V;e[39]===t?V=e[40]:(V=P(t),e[39]=t,e[40]=V);let ne;e[41]!==B||e[42]!==V?(ne=(0,w.jsx)(d,{label:`GPU`,wert:B,einheit:`prozent`,max:100,zeitraumText:V}),e[41]=B,e[42]=V,e[43]=ne):ne=e[43];let re=c?.temp_cpu,H;e[44]!==re||e[45]!==_?(H=_(re,`temp_cpu`),e[44]=re,e[45]=_,e[46]=H):H=e[46];let ie=c?.temp_cpu,U;e[47]!==ie||e[48]!==_?(U=x(_(ie,`temp_cpu`),80,90),e[47]=ie,e[48]=_,e[49]=U):U=e[49];let W;e[50]===t?W=e[51]:(W=P(t),e[50]=t,e[51]=W);let ae;e[52]!==H||e[53]!==U||e[54]!==W?(ae=(0,w.jsx)(d,{label:`CPU-Temp.`,wert:H,einheit:`grad`,max:100,zustand:U,zeitraumText:W}),e[52]=H,e[53]=U,e[54]=W,e[55]=ae):ae=e[55];let G=c?.temp_gpu,K;e[56]!==G||e[57]!==_?(K=_(G,`temp_gpu`),e[56]=G,e[57]=_,e[58]=K):K=e[58];let oe=c?.temp_gpu,q;e[59]!==oe||e[60]!==_?(q=x(_(oe,`temp_gpu`),80,90),e[59]=oe,e[60]=_,e[61]=q):q=e[61];let J;e[62]===t?J=e[63]:(J=P(t),e[62]=t,e[63]=J);let Y;e[64]!==K||e[65]!==q||e[66]!==J?(Y=(0,w.jsx)(d,{label:`GPU-Temp.`,wert:K,einheit:`grad`,max:100,zustand:q,zeitraumText:J}),e[64]=K,e[65]=q,e[66]=J,e[67]=Y):Y=e[67];let se=c?.disk,X;e[68]!==se||e[69]!==_?(X=_(se,`platte`),e[68]=se,e[69]=_,e[70]=X):X=e[70];let ce=c?.disk,Z;e[71]!==ce||e[72]!==_?(Z=x(_(ce,`platte`),80,90),e[71]=ce,e[72]=_,e[73]=Z):Z=e[73];let Q;e[74]===t?Q=e[75]:(Q=P(t),e[74]=t,e[75]=Q);let $;e[76]!==X||e[77]!==Z||e[78]!==Q?($=(0,w.jsx)(d,{label:`Platte`,wert:X,einheit:`prozent`,max:100,zustand:Z,zeitraumText:Q}),e[76]=X,e[77]=Z,e[78]=Q,e[79]=$):$=e[79];let le;e[80]!==A||e[81]!==R||e[82]!==ne||e[83]!==ae||e[84]!==Y||e[85]!==$?(le=(0,w.jsxs)(`div`,{className:`grid grid-cols-2 gap-2.5 sm:grid-cols-3 xl:grid-cols-6`,children:[A,R,ne,ae,Y,$]}),e[80]=A,e[81]=R,e[82]=ne,e[83]=ae,e[84]=Y,e[85]=$,e[86]=le):le=e[86];let ue;e[87]!==h||e[88]!==r.data||e[89]!==r.isError||e[90]!==r.isPlaceholderData||e[91]!==u?(ue=r.isError&&!r.data?(0,w.jsx)(a,{text:`Der Verlauf ist noch nicht da: Die KI-Box sammelt Messwerte, sobald der neue Stand läuft. Die Zahlen oben sind live.`}):(0,w.jsxs)(`div`,{className:i(`grid gap-5 md:gap-6 xl:grid-cols-2`,r.isPlaceholderData&&`opacity-70`),children:[(0,w.jsx)(N,{titel:`CPU`,children:(0,w.jsx)(E,{titel:`CPU-Auslastung in Prozent`,einheit:`prozent`,langerZeitraum:h,reihen:[{name:`CPU`,punkte:u.cpu??[],farbe:`var(--reihe-1)`}]})}),(0,w.jsx)(N,{titel:`Speicher`,children:(0,w.jsx)(E,{titel:`Belegter Speicher in Prozent`,einheit:`prozent`,langerZeitraum:h,reihen:[{name:`Speicher`,punkte:u.ram??[],farbe:`var(--reihe-1)`}]})}),(0,w.jsx)(N,{titel:`GPU`,children:(0,w.jsx)(E,{titel:`GPU-Last in Prozent`,einheit:`prozent`,langerZeitraum:h,reihen:[{name:`GPU`,punkte:u.gpu??[],farbe:`var(--reihe-1)`}]})}),(0,w.jsx)(N,{titel:`Temperatur`,children:(0,w.jsx)(E,{titel:`Temperatur von CPU und GPU in Grad`,einheit:`grad`,langerZeitraum:h,reihen:[{name:`CPU`,punkte:u.temp_cpu??[],farbe:`var(--reihe-1)`},{name:`GPU`,punkte:u.temp_gpu??[],farbe:`var(--reihe-2)`}]})}),(0,w.jsx)(N,{titel:`Netz`,children:(0,w.jsx)(E,{titel:`Netzverkehr in Bytes pro Sekunde`,einheit:`bytes_s`,langerZeitraum:h,reihen:[{name:`empfangen`,punkte:u.netz_rx??[],farbe:`var(--reihe-1)`},{name:`gesendet`,punkte:u.netz_tx??[],farbe:`var(--reihe-2)`}]})}),(0,w.jsx)(N,{titel:`Tokens pro Minute`,children:(0,w.jsx)(E,{titel:`Erzeugte und gelesene Tokens pro Minute`,einheit:`anzahl`,langerZeitraum:h,reihen:[{name:`Tokens`,punkte:u.tokens??[],farbe:`var(--reihe-1)`}]})})]}),e[87]=h,e[88]=r.data,e[89]=r.isError,e[90]=r.isPlaceholderData,e[91]=u,e[92]=ue):ue=e[92];let de;return e[93]!==le||e[94]!==ue||e[95]!==b?(de=(0,w.jsxs)(w.Fragment,{children:[b,le,ue]}),e[93]=le,e[94]=ue,e[95]=b,e[96]=de):de=e[96],de}function I(e){let t=(0,C.c)(35),{g:n,zeitraum:r}=e,i=n.aktuell,a=n.id,o=n.name,s;t[0]===n.name?s=t[1]:(s=(0,w.jsx)(`h3`,{className:`text-[15px] font-semibold`,children:n.name}),t[0]=n.name,t[1]=s);let c;t[2]===i.cpu?c=t[3]:(c=i.cpu==null?`–`:`${Math.round(i.cpu)} %`,t[2]=i.cpu,t[3]=c);let l;t[4]===i.ram?l=t[5]:(l=i.ram==null?`–`:`${Math.round(i.ram)} %`,t[4]=i.ram,t[5]=l);let u;t[6]===i.uptime_s?u=t[7]:(u=_(i.uptime_s),t[6]=i.uptime_s,t[7]=u);let d;t[8]!==c||t[9]!==l||t[10]!==u?(d=(0,w.jsxs)(`span`,{className:`ziffern text-xs text-text-3`,children:[`CPU `,c,` · RAM `,l,` · läuft `,u]}),t[8]=c,t[9]=l,t[10]=u,t[11]=d):d=t[11];let f;t[12]!==s||t[13]!==d?(f=(0,w.jsxs)(`div`,{className:`flex flex-wrap items-baseline justify-between gap-2`,children:[s,d]}),t[12]=s,t[13]=d,t[14]=f):f=t[14];let p=`${n.name}: CPU und Speicher in Prozent`,m=r===`7d`,h;t[15]===n.reihen.cpu?h=t[16]:(h=n.reihen.cpu??[],t[15]=n.reihen.cpu,t[16]=h);let g;t[17]===h?g=t[18]:(g={name:`CPU`,punkte:h,farbe:`var(--reihe-1)`},t[17]=h,t[18]=g);let v;t[19]===n.reihen.ram?v=t[20]:(v=n.reihen.ram??[],t[19]=n.reihen.ram,t[20]=v);let y;t[21]===v?y=t[22]:(y={name:`Speicher`,punkte:v,farbe:`var(--reihe-2)`},t[21]=v,t[22]=y);let b;t[23]!==g||t[24]!==y?(b=[g,y],t[23]=g,t[24]=y,t[25]=b):b=t[25];let x;t[26]!==m||t[27]!==b||t[28]!==p?(x=(0,w.jsx)(E,{titel:p,einheit:`prozent`,langerZeitraum:m,hoehe:140,reihen:b}),t[26]=m,t[27]=b,t[28]=p,t[29]=x):x=t[29];let S;return t[30]!==n.id||t[31]!==n.name||t[32]!==x||t[33]!==f?(S=(0,w.jsxs)(`section`,{id:a,"aria-label":o,className:`flex min-w-0 scroll-mt-6 flex-col gap-3 rounded-2xl border border-linie bg-panel p-4 sm:p-5`,children:[f,x]}),t[30]=n.id,t[31]=n.name,t[32]=x,t[33]=f,t[34]=S):S=t[34],S}function L(){let e=(0,C.c)(31),[t,n]=(0,ee.useState)(`1h`),r=l(),o=v(),s=r.data?.rolle===`homelab`||!!(o.data?.eingerichtet&&o.data.erreichbar),c=f(t,s),p;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(p={select:V},e[0]=p):p=e[0];let m=g(p),h,y;if(e[1]!==m||e[2]!==c.data?(h=()=>{m&&c.data&&document.getElementById(m)?.scrollIntoView({block:`start`})},y=[m,c.data],e[1]=m,e[2]=c.data,e[3]=h,e[4]=y):(h=e[3],y=e[4]),(0,ee.useEffect)(h,y),!s){let t;return e[5]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,w.jsx)(a,{fehler:!0,text:`Der Homelab-Teil antwortet gerade nicht.`}),e[5]=t):t=e[5],t}if(c.isPending){let t;return e[6]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,w.jsx)(a,{text:`Die Messwerte kommen gleich …`}),e[6]=t):t=e[6],t}if(!c.data){let t;return e[7]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,w.jsx)(a,{text:`Noch keine Messwerte: Der Ausführer schickt sie jede Minute, sobald sein neuer Stand eingespielt ist.`}),e[7]=t):t=e[7],t}let b,S,T,D;if(e[8]!==c.data.geraete||e[9]!==c.isPlaceholderData||e[10]!==t){let r=c.data.geraete.find(B),a=c.data.geraete.filter(z),o=t===`7d`,s=r?.aktuell??{},l;e[15]===t?l=e[16]:(l=(0,w.jsx)(M,{wert:t,onWahl:n,farbe:`homelab`}),e[15]=t,e[16]=l);let f;e[17]===Symbol.for(`react.memo_cache_sentinel`)?(f=(0,w.jsx)(`span`,{className:`text-sm text-text-3`,children:`Werte im Minutentakt vom Proxmox-Host`}),e[17]=f):f=e[17],e[18]===l?T=e[19]:(T=(0,w.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-3`,children:[l,f]}),e[18]=l,e[19]=T),D=r&&(0,w.jsxs)(u,{titel:`Proxmox-Host`,rechts:(0,w.jsxs)(`span`,{className:`ziffern text-sm text-text-3`,children:[`läuft `,_(s.uptime_s),s.load1==null?``:` · Last ${s.load1.toFixed(2).replace(`.`,`,`)}`]}),children:[(0,w.jsxs)(`div`,{className:`grid grid-cols-2 gap-2.5 sm:grid-cols-4`,children:[(0,w.jsx)(d,{label:`CPU`,wert:s.cpu,einheit:`prozent`,max:100,punkte:r.reihen.cpu,zustand:x(s.cpu??null,85,95),zeitraumText:P(t)}),(0,w.jsx)(d,{label:`Speicher`,wert:s.ram,einheit:`prozent`,max:100,punkte:r.reihen.ram,zustand:x(s.ram??null,90,95),zeitraumText:P(t)}),(0,w.jsx)(d,{label:`Temperatur`,wert:s.temp_cpu,einheit:`grad`,max:100,punkte:r.reihen.temp_cpu,zustand:x(s.temp_cpu??null,80,90),zeitraumText:P(t)}),(0,w.jsx)(d,{label:`Systemplatte`,wert:s.platte,einheit:`prozent`,max:100,punkte:r.reihen.platte,zustand:x(s.platte??null,80,90),zeitraumText:P(t)})]}),(0,w.jsxs)(`div`,{className:i(`grid gap-5 xl:grid-cols-2`,c.isPlaceholderData&&`opacity-70`),children:[(0,w.jsx)(N,{titel:`CPU und Speicher`,children:(0,w.jsx)(E,{titel:`Proxmox-Host: CPU und Speicher in Prozent`,einheit:`prozent`,langerZeitraum:o,reihen:[{name:`CPU`,punkte:r.reihen.cpu??[],farbe:`var(--reihe-1)`},{name:`Speicher`,punkte:r.reihen.ram??[],farbe:`var(--reihe-2)`}]})}),(0,w.jsx)(N,{titel:`Netz`,children:(0,w.jsx)(E,{titel:`Proxmox-Host: Netzverkehr in Bytes pro Sekunde`,einheit:`bytes_s`,langerZeitraum:o,reihen:[{name:`empfangen`,punkte:r.reihen.netz_rx??[],farbe:`var(--reihe-1)`},{name:`gesendet`,punkte:r.reihen.netz_tx??[],farbe:`var(--reihe-2)`}]})}),(r.reihen.temp_cpu?.some(R)??!1)&&(0,w.jsx)(N,{titel:`Temperatur`,children:(0,w.jsx)(E,{titel:`Proxmox-Host: CPU-Temperatur in Grad`,einheit:`grad`,langerZeitraum:o,reihen:[{name:`CPU`,punkte:r.reihen.temp_cpu??[],farbe:`var(--reihe-1)`}]})})]})]});let p=c.isPlaceholderData&&`opacity-70`;e[20]===p?b=e[21]:(b=i(`grid gap-5 md:gap-6 xl:grid-cols-2`,p),e[20]=p,e[21]=b);let m;e[22]===t?m=e[23]:(m=e=>(0,w.jsx)(I,{g:e,zeitraum:t},e.id),e[22]=t,e[23]=m),S=a.map(m),e[8]=c.data.geraete,e[9]=c.isPlaceholderData,e[10]=t,e[11]=b,e[12]=S,e[13]=T,e[14]=D}else b=e[11],S=e[12],T=e[13],D=e[14];let O;e[24]!==b||e[25]!==S?(O=(0,w.jsx)(`div`,{className:b,children:S}),e[24]=b,e[25]=S,e[26]=O):O=e[26];let k;return e[27]!==T||e[28]!==D||e[29]!==O?(k=(0,w.jsxs)(w.Fragment,{children:[T,D,O]}),e[27]=T,e[28]=D,e[29]=O,e[30]=k):k=e[30],k}function R(e){let[,t]=e;return t!==null}function z(e){return e.art!==`proxmox-host`}function B(e){return e.art===`proxmox-host`}function V(e){return e.location.hash}export{F as BoxMonitoringSeite,L as HomelabMonitoringSeite}; \ No newline at end of file diff --git a/frontend/dist/assets/Monitoring-DuLD6OPr.js b/frontend/dist/assets/Monitoring-DuLD6OPr.js new file mode 100644 index 0000000..3ab2dc1 --- /dev/null +++ b/frontend/dist/assets/Monitoring-DuLD6OPr.js @@ -0,0 +1 @@ +import{a as e,c as t,i as n,r,t as i}from"./dist-aE7UmubC.js";import{C as a,E as o,O as s,S as c,Z as l,_ as u,b as d,d as f,dt as p,f as m,mn as h,ot as g,p as _,qt as v,v as y,x as b,y as x,yt as S}from"./index-BjDzWYEf.js";import{t as C}from"./Panel-uT1S5ZGr.js";import{t as w}from"./breite-k-QN6GPl.js";var T=t(e(),1),E=r(),D=n(),O={ruhig:{wert:`text-foreground`,marke:null},gelb:{wert:`text-bernstein`,marke:`hoch`},rot:{wert:`text-rot-text`,marke:`kritisch`}};function k(e){let t=(0,E.c)(29),{label:n,wert:r,einheit:a,punkte:o,max:s,zustand:c,farbe:l,zeitraumText:u}=e,p=O[c===void 0?`ruhig`:c],m;t[0]===n?m=t[1]:(m=(0,D.jsx)(`span`,{className:`etikett text-[11px] text-text-3`,children:n}),t[0]=n,t[1]=m);let h;t[2]===p.wert?h=t[3]:(h=i(`font-anzeige text-[28px] leading-none font-semibold tabular-nums`,p.wert),t[2]=p.wert,t[3]=h);let g;t[4]!==a||t[5]!==r?(g=d(r,a),t[4]=a,t[5]=r,t[6]=g):g=t[6];let _;t[7]!==h||t[8]!==g?(_=(0,D.jsx)(`span`,{className:h,children:g}),t[7]=h,t[8]=g,t[9]=_):_=t[9];let v;t[10]!==p.marke||t[11]!==p.wert?(v=p.marke&&(0,D.jsx)(`span`,{className:i(`etikett text-[10.5px]`,p.wert),children:p.marke}),t[10]=p.marke,t[11]=p.wert,t[12]=v):v=t[12];let y;t[13]!==_||t[14]!==v?(y=(0,D.jsxs)(`span`,{className:`flex items-baseline gap-2`,children:[_,v]}),t[13]=_,t[14]=v,t[15]=y):y=t[15];let b;t[16]!==l||t[17]!==n||t[18]!==s||t[19]!==o||t[20]!==u?(b=o&&o.length>1&&(0,D.jsx)(f,{punkte:o,max:s,farbe:l,beschriftung:`${n}, ${u}`}),t[16]=l,t[17]=n,t[18]=s,t[19]=o,t[20]=u,t[21]=b):b=t[21];let x;t[22]===o?x=t[23]:(x=o&&o.length<=1&&(0,D.jsx)(`span`,{className:`h-9`,"aria-hidden":!0}),t[22]=o,t[23]=x);let S;return t[24]!==m||t[25]!==y||t[26]!==b||t[27]!==x?(S=(0,D.jsxs)(`div`,{className:`flaeche-innen flex min-w-0 flex-col gap-1.5 rounded-xl px-3.5 pt-3 pb-2`,children:[m,y,b,x]}),t[24]=m,t[25]=y,t[26]=b,t[27]=x,t[28]=S):S=t[28],S}var A={rechts:12,oben:10,unten:24};function j(e){let t=(0,E.c)(72),{reihen:n,einheit:r,langerZeitraum:i,hoehe:a,titel:o}=e,s=a===void 0?180:a,[c,l]=w(),[u,f]=(0,T.useState)(null),p,h,g,v,y,S,C,O;if(t[0]!==l||t[1]!==r||t[2]!==s||t[3]!==u||t[4]!==i||t[5]!==c||t[6]!==n||t[7]!==o){let e=n[0]?.punkte??[],a=e.length,w=x(n.map(re),r),T=r===`prozent`?[0,25,50,75,100]:[0,w/2,w],E=Math.max(40,Math.max(...T.map(e=>d(e,r).length))*7+12),k;t[16]===E?k=t[17]:(k={...A,links:E},t[16]=E,t[17]=k);let j=k,M=l-j.links-A.rechts,N=s-A.oben-A.unten,ie=e[0]?.[0]??0,P=e[a-1]?.[0]??1,F=e=>j.links+(P>ie?(e-ie)/(P-ie)*M:0),I;t[18]!==N||t[19]!==w?(I=e=>A.oben+N-Math.min(e,w)/(w||1)*N,t[18]=N,t[19]=w,t[20]=I):I=t[20];let L=I,R=A.oben+N,z=a>1?[0,.25,.5,.75,1].map(t=>e[Math.round(t*(a-1))][0]):[],B;t[21]===n?B=t[22]:(B=n.some(ne),t[21]=n,t[22]=B);let V=B,H;t[23]===a?H=t[24]:(H=function(e){if(a===0)return;let t=e.currentTarget.getBoundingClientRect(),n=Math.min(1,Math.max(0,(e.clientX-t.left)/t.width));f(Math.round(n*(a-1)))},t[23]=a,t[24]=H);let U=H,W;t[25]===a?W=t[26]:(W=function(e){if(a!==0){if(e.key===`ArrowLeft`)f(e=>Math.max(0,(e??a-1)-1));else if(e.key===`ArrowRight`)f(e=>Math.min(a-1,(e??a-1)+1));else return;e.preventDefault()}},t[25]=a,t[26]=W);let ae=W,G=u!==null&&e[u]?e[u][0]:null,K=G===null?0:F(G),oe=e.slice(-12);S=`flex flex-col gap-2`,t[27]===n?C=t[28]:(C=n.length>1&&(0,D.jsx)(`ul`,{className:`m-0 flex list-none flex-wrap gap-x-4 gap-y-1 p-0 text-sm text-text-2`,"aria-label":`Legende`,children:n.map(te)}),t[27]=n,t[28]=C);let q;t[29]===a?q=t[30]:(q=()=>f(e=>e??(a?a-1:null)),t[29]=a,t[30]=q);let J;t[31]===Symbol.for(`react.memo_cache_sentinel`)?(J=()=>f(null),t[31]=J):J=t[31];let Y;t[32]!==j.links||t[33]!==R||t[34]!==V||t[35]!==M||t[36]!==N||t[37]!==n||t[38]!==F||t[39]!==L?(Y=V?n.map(e=>(0,D.jsxs)(`g`,{children:[n.length===1&&(0,D.jsx)(`path`,{d:m(e.punkte,F,L,R),fill:e.farbe,opacity:.1}),(0,D.jsx)(`path`,{d:_(e.punkte,F,L),fill:`none`,stroke:e.farbe,strokeWidth:2,strokeLinecap:`round`,strokeLinejoin:`round`})]},e.name)):(0,D.jsx)(`text`,{x:j.links+M/2,y:A.oben+N/2,textAnchor:`middle`,className:`fill-text-3 text-sm`,children:`Noch keine Messwerte in diesem Zeitraum`}),t[32]=j.links,t[33]=R,t[34]=V,t[35]=M,t[36]=N,t[37]=n,t[38]=F,t[39]=L,t[40]=Y):Y=t[40];let se;t[41]===Symbol.for(`react.memo_cache_sentinel`)?(se=()=>f(null),t[41]=se):se=t[41];let X;t[42]!==j.links||t[43]!==M||t[44]!==N||t[45]!==U?(X=(0,D.jsx)(`rect`,{x:j.links,y:A.oben,width:M,height:N,fill:`transparent`,onPointerMove:U,onPointerLeave:se}),t[42]=j.links,t[43]=M,t[44]=N,t[45]=U,t[46]=X):X=t[46];let ce=(0,D.jsxs)(`svg`,{width:l,height:s,role:`img`,"aria-label":o,tabIndex:0,onKeyDown:ae,onFocus:q,onBlur:J,className:`block max-w-full outline-none focus-visible:rounded-md focus-visible:ring-2 focus-visible:ring-cyan/60`,children:[T.map(e=>(0,D.jsxs)(`g`,{children:[(0,D.jsx)(`line`,{x1:j.links,x2:l-A.rechts,y1:L(e),y2:L(e),stroke:`var(--linie)`,strokeWidth:1}),(0,D.jsx)(`text`,{x:j.links-8,y:L(e)+4,textAnchor:`end`,className:`fill-text-3 font-mono text-[11px]`,children:d(e,r)})]},e)),z.map((e,t)=>(0,D.jsx)(`text`,{x:F(e),y:s-6,className:`fill-text-3 font-mono text-[11px]`,textAnchor:t===0?`start`:t===z.length-1?`end`:`middle`,children:b(e,i)},e)),Y,G!==null&&(0,D.jsxs)(`g`,{"aria-hidden":!0,children:[(0,D.jsx)(`line`,{x1:F(G),x2:F(G),y1:A.oben,y2:R,stroke:`var(--text-3)`,strokeWidth:1}),n.map(e=>{let t=e.punkte[u]?.[1];return t==null?null:(0,D.jsx)(`circle`,{cx:F(G),cy:L(t),r:4,fill:e.farbe,stroke:`var(--panel)`,strokeWidth:2},e.name)})]}),X]}),Z=G!==null&&(0,D.jsxs)(`div`,{role:`status`,className:`pointer-events-none absolute top-1 z-10 flex min-w-36 flex-col gap-1 rounded-xl border border-white/12 bg-white/[0.04] px-3 py-2 shadow-lg`,style:K>l/2?{right:l-K+10}:{left:K+10},children:[(0,D.jsx)(`span`,{className:`ziffern text-xs text-text-3`,children:b(G,!0)}),n.map(e=>(0,D.jsxs)(`span`,{className:`flex items-center gap-2 text-sm`,children:[(0,D.jsx)(`span`,{"aria-hidden":!0,className:`h-0.5 w-3 rounded-full`,style:{background:e.farbe}}),(0,D.jsx)(`span`,{className:`font-semibold text-foreground`,children:d(e.punkte[u]?.[1],r)}),n.length>1&&(0,D.jsx)(`span`,{className:`text-text-3`,children:e.name})]},e.name))]});t[47]!==c||t[48]!==ce||t[49]!==Z?(O=(0,D.jsxs)(`div`,{ref:c,className:`relative w-full`,children:[ce,Z]}),t[47]=c,t[48]=ce,t[49]=Z,t[50]=O):O=t[50],v=`group text-sm`,t[51]===Symbol.for(`react.memo_cache_sentinel`)?(y=(0,D.jsx)(`summary`,{className:`inline-flex cursor-pointer items-center text-text-3 hover:text-text-2`,children:`Werte als Tabelle`}),t[51]=y):y=t[51],h=`ziffern mt-2 w-full max-w-md border-collapse text-xs`;let Q;t[52]===Symbol.for(`react.memo_cache_sentinel`)?(Q=(0,D.jsx)(`th`,{className:`py-1 pr-4 font-normal`,children:`Zeit`}),t[52]=Q):Q=t[52];let $;t[53]===n?$=t[54]:($=n.map(ee),t[53]=n,t[54]=$),t[55]===$?g=t[56]:(g=(0,D.jsx)(`thead`,{children:(0,D.jsxs)(`tr`,{className:`text-left text-text-3`,children:[Q,$]})}),t[55]=$,t[56]=g),p=oe.map((e,t)=>{let[o]=e;return(0,D.jsxs)(`tr`,{className:`border-t border-white/[0.06]`,children:[(0,D.jsx)(`td`,{className:`py-1 pr-4 text-text-3`,children:b(o,i)}),n.map(e=>(0,D.jsx)(`td`,{className:`py-1 pr-4 text-text-2`,children:d(e.punkte[a-oe.length+t]?.[1],r)},e.name))]},o)}),t[0]=l,t[1]=r,t[2]=s,t[3]=u,t[4]=i,t[5]=c,t[6]=n,t[7]=o,t[8]=p,t[9]=h,t[10]=g,t[11]=v,t[12]=y,t[13]=S,t[14]=C,t[15]=O}else p=t[8],h=t[9],g=t[10],v=t[11],y=t[12],S=t[13],C=t[14],O=t[15];let k;t[57]===p?k=t[58]:(k=(0,D.jsx)(`tbody`,{children:p}),t[57]=p,t[58]=k);let j;t[59]!==k||t[60]!==h||t[61]!==g?(j=(0,D.jsxs)(`table`,{className:h,children:[g,k]}),t[59]=k,t[60]=h,t[61]=g,t[62]=j):j=t[62];let M;t[63]!==j||t[64]!==v||t[65]!==y?(M=(0,D.jsxs)(`details`,{className:v,children:[y,j]}),t[63]=j,t[64]=v,t[65]=y,t[66]=M):M=t[66];let N;return t[67]!==M||t[68]!==S||t[69]!==C||t[70]!==O?(N=(0,D.jsxs)(`div`,{className:S,children:[C,O,M]}),t[67]=M,t[68]=S,t[69]=C,t[70]=O,t[71]=N):N=t[71],N}function ee(e){return(0,D.jsx)(`th`,{className:`py-1 pr-4 font-normal`,children:e.name},e.name)}function te(e){return(0,D.jsxs)(`li`,{className:`flex items-center gap-2`,children:[(0,D.jsx)(`span`,{"aria-hidden":!0,className:`h-0.5 w-4 rounded-full`,style:{background:e.farbe}}),e.name]},e.name)}function ne(e){return e.punkte.some(M)}function M(e){let[,t]=e;return t!==null}function re(e){return e.punkte}var N=[{id:`1h`,name:`1 Stunde`,text:`letzte Stunde`},{id:`24h`,name:`24 Stunden`,text:`letzte 24 Stunden`},{id:`7d`,name:`7 Tage`,text:`letzte 7 Tage`}];function ie(e){let t=(0,E.c)(6),{wert:n,onWahl:r,farbe:a}=e,o=a===`box`?`border-box-rand bg-box-grund text-box-text`:`border-lab-rand bg-lab-grund text-lab-text`,s;t[0]!==o||t[1]!==r||t[2]!==n?(s=N.map(e=>(0,D.jsx)(`button`,{type:`button`,onClick:()=>r(e.id),"aria-pressed":n===e.id,className:i(`h-9 rounded-full border px-4 text-sm`,n===e.id?o:`border-white/10 text-text-2 hover:border-white/20 hover:text-foreground`),children:e.name},e.id)),t[0]=o,t[1]=r,t[2]=n,t[3]=s):s=t[3];let c;return t[4]===s?c=t[5]:(c=(0,D.jsx)(`div`,{role:`group`,"aria-label":`Zeitraum`,className:`flex flex-wrap gap-2`,children:s}),t[4]=s,t[5]=c),c}function P(e){let t=(0,E.c)(9),{titel:n,rechts:r,children:i}=e,a;t[0]===n?a=t[1]:(a=(0,D.jsx)(`h3`,{className:`etikett text-[11.5px] tracking-[0.16em] text-text-2`,children:n}),t[0]=n,t[1]=a);let o;t[2]!==r||t[3]!==a?(o=(0,D.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[a,r]}),t[2]=r,t[3]=a,t[4]=o):o=t[4];let s;return t[5]!==i||t[6]!==o||t[7]!==n?(s=(0,D.jsxs)(`section`,{"aria-label":n,className:`flex min-w-0 flex-col gap-3 flaeche rounded-2xl p-4 sm:p-5`,children:[o,i]}),t[5]=i,t[6]=o,t[7]=n,t[8]=s):s=t[8],s}var F=e=>N.find(t=>t.id===e)?.text??``;function I(){let e=(0,E.c)(97),[t,n]=(0,T.useState)(`1h`),r=l(t),a=v(),o;e[0]===r.data?.reihen?o=e[1]:(o=r.data?.reihen??{},e[0]=r.data?.reihen,e[1]=o);let u=o,d;e[2]===r.data?.aktuell?d=e[3]:(d=r.data?.aktuell??{},e[2]=r.data?.aktuell,e[3]=d);let f=d,p=t===`7d`,m;e[4]!==f||e[5]!==u?(m=(e,t)=>e??f[t]??y(u[t]),e[4]=f,e[5]=u,e[6]=m):m=e[6];let h=m,g;e[7]===t?g=e[8]:(g=(0,D.jsx)(ie,{wert:t,onWahl:n,farbe:`box`}),e[7]=t,e[8]=g);let _;e[9]===Symbol.for(`react.memo_cache_sentinel`)?(_=(0,D.jsx)(`span`,{className:`text-sm text-text-3`,children:`Zahlen live, Verläufe im Minutentakt`}),e[9]=_):_=e[9];let b;e[10]===g?b=e[11]:(b=(0,D.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-3`,children:[g,_]}),e[10]=g,e[11]=b);let x=a?.cpu,S;e[12]!==x||e[13]!==h?(S=h(x,`cpu`),e[12]=x,e[13]=h,e[14]=S):S=e[14];let C=a?.cpu,w;e[15]!==C||e[16]!==h?(w=c(h(C,`cpu`),85,95),e[15]=C,e[16]=h,e[17]=w):w=e[17];let O;e[18]===t?O=e[19]:(O=F(t),e[18]=t,e[19]=O);let A;e[20]!==O||e[21]!==S||e[22]!==w?(A=(0,D.jsx)(k,{label:`CPU`,wert:S,einheit:`prozent`,max:100,zustand:w,zeitraumText:O}),e[20]=O,e[21]=S,e[22]=w,e[23]=A):A=e[23];let ee=a?.ram,te;e[24]!==ee||e[25]!==h?(te=h(ee,`ram`),e[24]=ee,e[25]=h,e[26]=te):te=e[26];let ne=a?.ram,M;e[27]!==ne||e[28]!==h?(M=c(h(ne,`ram`),85,95),e[27]=ne,e[28]=h,e[29]=M):M=e[29];let re;e[30]===t?re=e[31]:(re=F(t),e[30]=t,e[31]=re);let N;e[32]!==te||e[33]!==M||e[34]!==re?(N=(0,D.jsx)(k,{label:`Speicher`,wert:te,einheit:`prozent`,max:100,zustand:M,zeitraumText:re}),e[32]=te,e[33]=M,e[34]=re,e[35]=N):N=e[35];let I=a?.gpu,L;e[36]!==I||e[37]!==h?(L=h(I,`gpu`),e[36]=I,e[37]=h,e[38]=L):L=e[38];let R;e[39]===t?R=e[40]:(R=F(t),e[39]=t,e[40]=R);let z;e[41]!==L||e[42]!==R?(z=(0,D.jsx)(k,{label:`GPU`,wert:L,einheit:`prozent`,max:100,zeitraumText:R}),e[41]=L,e[42]=R,e[43]=z):z=e[43];let B=a?.temp_cpu,V;e[44]!==B||e[45]!==h?(V=h(B,`temp_cpu`),e[44]=B,e[45]=h,e[46]=V):V=e[46];let H=a?.temp_cpu,U;e[47]!==H||e[48]!==h?(U=c(h(H,`temp_cpu`),80,90),e[47]=H,e[48]=h,e[49]=U):U=e[49];let W;e[50]===t?W=e[51]:(W=F(t),e[50]=t,e[51]=W);let ae;e[52]!==V||e[53]!==U||e[54]!==W?(ae=(0,D.jsx)(k,{label:`CPU-Temp.`,wert:V,einheit:`grad`,max:100,zustand:U,zeitraumText:W}),e[52]=V,e[53]=U,e[54]=W,e[55]=ae):ae=e[55];let G=a?.temp_gpu,K;e[56]!==G||e[57]!==h?(K=h(G,`temp_gpu`),e[56]=G,e[57]=h,e[58]=K):K=e[58];let oe=a?.temp_gpu,q;e[59]!==oe||e[60]!==h?(q=c(h(oe,`temp_gpu`),80,90),e[59]=oe,e[60]=h,e[61]=q):q=e[61];let J;e[62]===t?J=e[63]:(J=F(t),e[62]=t,e[63]=J);let Y;e[64]!==K||e[65]!==q||e[66]!==J?(Y=(0,D.jsx)(k,{label:`GPU-Temp.`,wert:K,einheit:`grad`,max:100,zustand:q,zeitraumText:J}),e[64]=K,e[65]=q,e[66]=J,e[67]=Y):Y=e[67];let se=a?.disk,X;e[68]!==se||e[69]!==h?(X=h(se,`platte`),e[68]=se,e[69]=h,e[70]=X):X=e[70];let ce=a?.disk,Z;e[71]!==ce||e[72]!==h?(Z=c(h(ce,`platte`),80,90),e[71]=ce,e[72]=h,e[73]=Z):Z=e[73];let Q;e[74]===t?Q=e[75]:(Q=F(t),e[74]=t,e[75]=Q);let $;e[76]!==X||e[77]!==Z||e[78]!==Q?($=(0,D.jsx)(k,{label:`Platte`,wert:X,einheit:`prozent`,max:100,zustand:Z,zeitraumText:Q}),e[76]=X,e[77]=Z,e[78]=Q,e[79]=$):$=e[79];let le;e[80]!==A||e[81]!==N||e[82]!==z||e[83]!==ae||e[84]!==Y||e[85]!==$?(le=(0,D.jsxs)(`div`,{className:`grid grid-cols-2 gap-2.5 sm:grid-cols-3 xl:grid-cols-6`,children:[A,N,z,ae,Y,$]}),e[80]=A,e[81]=N,e[82]=z,e[83]=ae,e[84]=Y,e[85]=$,e[86]=le):le=e[86];let ue;e[87]!==p||e[88]!==r.data||e[89]!==r.isError||e[90]!==r.isPlaceholderData||e[91]!==u?(ue=r.isError&&!r.data?(0,D.jsx)(s,{text:`Der Verlauf ist noch nicht da: Die KI-Box sammelt Messwerte, sobald der neue Stand läuft. Die Zahlen oben sind live.`}):(0,D.jsxs)(`div`,{className:i(`grid gap-5 md:gap-6 xl:grid-cols-2`,r.isPlaceholderData&&`opacity-70`),children:[(0,D.jsx)(P,{titel:`CPU`,children:(0,D.jsx)(j,{titel:`CPU-Auslastung in Prozent`,einheit:`prozent`,langerZeitraum:p,reihen:[{name:`CPU`,punkte:u.cpu??[],farbe:`var(--reihe-1)`}]})}),(0,D.jsx)(P,{titel:`Speicher`,children:(0,D.jsx)(j,{titel:`Belegter Speicher in Prozent`,einheit:`prozent`,langerZeitraum:p,reihen:[{name:`Speicher`,punkte:u.ram??[],farbe:`var(--reihe-1)`}]})}),(0,D.jsx)(P,{titel:`GPU`,children:(0,D.jsx)(j,{titel:`GPU-Last in Prozent`,einheit:`prozent`,langerZeitraum:p,reihen:[{name:`GPU`,punkte:u.gpu??[],farbe:`var(--reihe-1)`}]})}),(0,D.jsx)(P,{titel:`Temperatur`,children:(0,D.jsx)(j,{titel:`Temperatur von CPU und GPU in Grad`,einheit:`grad`,langerZeitraum:p,reihen:[{name:`CPU`,punkte:u.temp_cpu??[],farbe:`var(--reihe-1)`},{name:`GPU`,punkte:u.temp_gpu??[],farbe:`var(--reihe-2)`}]})}),(0,D.jsx)(P,{titel:`Netz`,children:(0,D.jsx)(j,{titel:`Netzverkehr in Bytes pro Sekunde`,einheit:`bytes_s`,langerZeitraum:p,reihen:[{name:`empfangen`,punkte:u.netz_rx??[],farbe:`var(--reihe-1)`},{name:`gesendet`,punkte:u.netz_tx??[],farbe:`var(--reihe-2)`}]})}),(0,D.jsx)(P,{titel:`Tokens pro Minute`,children:(0,D.jsx)(j,{titel:`Erzeugte und gelesene Tokens pro Minute`,einheit:`anzahl`,langerZeitraum:p,reihen:[{name:`Tokens`,punkte:u.tokens??[],farbe:`var(--reihe-1)`}]})})]}),e[87]=p,e[88]=r.data,e[89]=r.isError,e[90]=r.isPlaceholderData,e[91]=u,e[92]=ue):ue=e[92];let de;return e[93]!==le||e[94]!==ue||e[95]!==b?(de=(0,D.jsxs)(D.Fragment,{children:[b,le,ue]}),e[93]=le,e[94]=ue,e[95]=b,e[96]=de):de=e[96],de}function L(e){let t=(0,E.c)(43),{g:n,zeitraum:r}=e,i=n.aktuell,s=n.id,c=n.name,l;t[0]!==n.art||t[1]!==n.name?(l=o({art:n.art,name:n.name}),t[0]=n.art,t[1]=n.name,t[2]=l):l=t[2];let d;t[3]===l?d=t[4]:(d=(0,D.jsx)(a,{bild:l,groesse:`sm`}),t[3]=l,t[4]=d);let f;t[5]===n.name?f=t[6]:(f=(0,D.jsx)(`h3`,{className:`text-[15px] font-semibold`,children:n.name}),t[5]=n.name,t[6]=f);let p;t[7]!==d||t[8]!==f?(p=(0,D.jsxs)(`span`,{className:`flex min-w-0 items-center gap-3`,children:[d,f]}),t[7]=d,t[8]=f,t[9]=p):p=t[9];let m;t[10]===i.cpu?m=t[11]:(m=i.cpu==null?`–`:`${Math.round(i.cpu)} %`,t[10]=i.cpu,t[11]=m);let h;t[12]===i.ram?h=t[13]:(h=i.ram==null?`–`:`${Math.round(i.ram)} %`,t[12]=i.ram,t[13]=h);let g;t[14]===i.uptime_s?g=t[15]:(g=u(i.uptime_s),t[14]=i.uptime_s,t[15]=g);let _;t[16]!==m||t[17]!==h||t[18]!==g?(_=(0,D.jsxs)(`span`,{className:`ziffern text-xs text-text-3`,children:[`CPU `,m,` · RAM `,h,` · läuft `,g]}),t[16]=m,t[17]=h,t[18]=g,t[19]=_):_=t[19];let v;t[20]!==_||t[21]!==p?(v=(0,D.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-2`,children:[p,_]}),t[20]=_,t[21]=p,t[22]=v):v=t[22];let y=`${n.name}: CPU und Speicher in Prozent`,b=r===`7d`,x;t[23]===n.reihen.cpu?x=t[24]:(x=n.reihen.cpu??[],t[23]=n.reihen.cpu,t[24]=x);let S;t[25]===x?S=t[26]:(S={name:`CPU`,punkte:x,farbe:`var(--reihe-1)`},t[25]=x,t[26]=S);let C;t[27]===n.reihen.ram?C=t[28]:(C=n.reihen.ram??[],t[27]=n.reihen.ram,t[28]=C);let w;t[29]===C?w=t[30]:(w={name:`Speicher`,punkte:C,farbe:`var(--reihe-2)`},t[29]=C,t[30]=w);let T;t[31]!==S||t[32]!==w?(T=[S,w],t[31]=S,t[32]=w,t[33]=T):T=t[33];let O;t[34]!==y||t[35]!==b||t[36]!==T?(O=(0,D.jsx)(j,{titel:y,einheit:`prozent`,langerZeitraum:b,hoehe:140,reihen:T}),t[34]=y,t[35]=b,t[36]=T,t[37]=O):O=t[37];let k;return t[38]!==n.id||t[39]!==n.name||t[40]!==v||t[41]!==O?(k=(0,D.jsxs)(`section`,{id:s,"aria-label":c,className:`flex min-w-0 scroll-mt-6 flex-col gap-3 flaeche rounded-2xl p-4 sm:p-5`,children:[v,O]}),t[38]=n.id,t[39]=n.name,t[40]=v,t[41]=O,t[42]=k):k=t[42],k}function R(){let e=(0,E.c)(31),[t,n]=(0,T.useState)(`1h`),r=p(),a=S(),o=r.data?.rolle===`homelab`||!!(a.data?.eingerichtet&&a.data.erreichbar),l=g(t,o),d;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(d={select:H},e[0]=d):d=e[0];let f=h(d),m,_;if(e[1]!==f||e[2]!==l.data?(m=()=>{f&&l.data&&document.getElementById(f)?.scrollIntoView({block:`start`})},_=[f,l.data],e[1]=f,e[2]=l.data,e[3]=m,e[4]=_):(m=e[3],_=e[4]),(0,T.useEffect)(m,_),!o){let t;return e[5]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,D.jsx)(s,{fehler:!0,text:`Der Homelab-Teil antwortet gerade nicht.`}),e[5]=t):t=e[5],t}if(l.isPending){let t;return e[6]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,D.jsx)(s,{text:`Die Messwerte kommen gleich …`}),e[6]=t):t=e[6],t}if(!l.data){let t;return e[7]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,D.jsx)(s,{text:`Noch keine Messwerte: Der Ausführer schickt sie jede Minute, sobald sein neuer Stand eingespielt ist.`}),e[7]=t):t=e[7],t}let v,y,b,x;if(e[8]!==l.data.geraete||e[9]!==l.isPlaceholderData||e[10]!==t){let r=l.data.geraete.find(V),a=l.data.geraete.filter(B),o=t===`7d`,s=r?.aktuell??{},d;e[15]===t?d=e[16]:(d=(0,D.jsx)(ie,{wert:t,onWahl:n,farbe:`homelab`}),e[15]=t,e[16]=d);let f;e[17]===Symbol.for(`react.memo_cache_sentinel`)?(f=(0,D.jsx)(`span`,{className:`text-sm text-text-3`,children:`Werte im Minutentakt vom Proxmox-Host`}),e[17]=f):f=e[17],e[18]===d?b=e[19]:(b=(0,D.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-3`,children:[d,f]}),e[18]=d,e[19]=b),x=r&&(0,D.jsxs)(C,{titel:`Proxmox-Host`,rechts:(0,D.jsxs)(`span`,{className:`ziffern text-sm text-text-3`,children:[`läuft `,u(s.uptime_s),s.load1==null?``:` · Last ${s.load1.toFixed(2).replace(`.`,`,`)}`]}),children:[(0,D.jsxs)(`div`,{className:`grid grid-cols-2 gap-2.5 sm:grid-cols-4`,children:[(0,D.jsx)(k,{label:`CPU`,wert:s.cpu,einheit:`prozent`,max:100,punkte:r.reihen.cpu,zustand:c(s.cpu??null,85,95),zeitraumText:F(t)}),(0,D.jsx)(k,{label:`Speicher`,wert:s.ram,einheit:`prozent`,max:100,punkte:r.reihen.ram,zustand:c(s.ram??null,90,95),zeitraumText:F(t)}),(0,D.jsx)(k,{label:`Temperatur`,wert:s.temp_cpu,einheit:`grad`,max:100,punkte:r.reihen.temp_cpu,zustand:c(s.temp_cpu??null,80,90),zeitraumText:F(t)}),(0,D.jsx)(k,{label:`Systemplatte`,wert:s.platte,einheit:`prozent`,max:100,punkte:r.reihen.platte,zustand:c(s.platte??null,80,90),zeitraumText:F(t)})]}),(0,D.jsxs)(`div`,{className:i(`grid gap-5 xl:grid-cols-2`,l.isPlaceholderData&&`opacity-70`),children:[(0,D.jsx)(P,{titel:`CPU und Speicher`,children:(0,D.jsx)(j,{titel:`Proxmox-Host: CPU und Speicher in Prozent`,einheit:`prozent`,langerZeitraum:o,reihen:[{name:`CPU`,punkte:r.reihen.cpu??[],farbe:`var(--reihe-1)`},{name:`Speicher`,punkte:r.reihen.ram??[],farbe:`var(--reihe-2)`}]})}),(0,D.jsx)(P,{titel:`Netz`,children:(0,D.jsx)(j,{titel:`Proxmox-Host: Netzverkehr in Bytes pro Sekunde`,einheit:`bytes_s`,langerZeitraum:o,reihen:[{name:`empfangen`,punkte:r.reihen.netz_rx??[],farbe:`var(--reihe-1)`},{name:`gesendet`,punkte:r.reihen.netz_tx??[],farbe:`var(--reihe-2)`}]})}),(r.reihen.temp_cpu?.some(z)??!1)&&(0,D.jsx)(P,{titel:`Temperatur`,children:(0,D.jsx)(j,{titel:`Proxmox-Host: CPU-Temperatur in Grad`,einheit:`grad`,langerZeitraum:o,reihen:[{name:`CPU`,punkte:r.reihen.temp_cpu??[],farbe:`var(--reihe-1)`}]})})]})]});let p=l.isPlaceholderData&&`opacity-70`;e[20]===p?v=e[21]:(v=i(`grid gap-5 md:gap-6 xl:grid-cols-2`,p),e[20]=p,e[21]=v);let m;e[22]===t?m=e[23]:(m=e=>(0,D.jsx)(L,{g:e,zeitraum:t},e.id),e[22]=t,e[23]=m),y=a.map(m),e[8]=l.data.geraete,e[9]=l.isPlaceholderData,e[10]=t,e[11]=v,e[12]=y,e[13]=b,e[14]=x}else v=e[11],y=e[12],b=e[13],x=e[14];let w;e[24]!==v||e[25]!==y?(w=(0,D.jsx)(`div`,{className:v,children:y}),e[24]=v,e[25]=y,e[26]=w):w=e[26];let O;return e[27]!==b||e[28]!==x||e[29]!==w?(O=(0,D.jsxs)(D.Fragment,{children:[b,x,w]}),e[27]=b,e[28]=x,e[29]=w,e[30]=O):O=e[30],O}function z(e){let[,t]=e;return t!==null}function B(e){return e.art!==`proxmox-host`}function V(e){return e.art===`proxmox-host`}function H(e){return e.location.hash}export{I as BoxMonitoringSeite,R as HomelabMonitoringSeite}; \ No newline at end of file diff --git a/frontend/dist/assets/Panel-uT1S5ZGr.js b/frontend/dist/assets/Panel-uT1S5ZGr.js new file mode 100644 index 0000000..5007231 --- /dev/null +++ b/frontend/dist/assets/Panel-uT1S5ZGr.js @@ -0,0 +1 @@ +import{i as e,r as t,t as n}from"./dist-aE7UmubC.js";var r=t(),i=e();function a(e){let t=(0,r.c)(12),{titel:a,rechts:o,children:s,className:c,id:l,symbol:u}=e,d;t[0]===c?d=t[1]:(d=n(`flaeche flex min-w-0 flex-col gap-4 rounded-2xl p-5 sm:p-6`,c),t[0]=c,t[1]=d);let f;t[2]!==u||t[3]!==o||t[4]!==a?(f=(a||o)&&(0,i.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-3`,children:[a&&(0,i.jsxs)(`h2`,{className:`flex items-center gap-2.5 text-[17px] leading-tight font-semibold tracking-[0.005em] text-foreground`,children:[u&&(0,i.jsx)(u,{className:`size-[18px] text-text-3`,"aria-hidden":!0}),a]}),o]}),t[2]=u,t[3]=o,t[4]=a,t[5]=f):f=t[5];let p;return t[6]!==s||t[7]!==l||t[8]!==d||t[9]!==f||t[10]!==a?(p=(0,i.jsxs)(`section`,{id:l,"aria-label":a,className:d,children:[f,s]}),t[6]=s,t[7]=l,t[8]=d,t[9]=f,t[10]=a,t[11]=p):p=t[11],p}export{a as t}; \ No newline at end of file diff --git a/frontend/dist/assets/Protokollfenster-CLtJNo-e.js b/frontend/dist/assets/Protokollfenster-CLtJNo-e.js new file mode 100644 index 0000000..87660ce --- /dev/null +++ b/frontend/dist/assets/Protokollfenster-CLtJNo-e.js @@ -0,0 +1 @@ +import{i as e,r as t}from"./dist-aE7UmubC.js";import{a as n,i as r,n as i,r as a,t as o}from"./sheet-Bcuh2-nz.js";var s=t(),c=e();function l(e){let t=(0,s.c)(14),{offen:l,titel:u,text:d,onSchliessen:f}=e,p;t[0]===f?p=t[1]:(p=e=>!e&&f(),t[0]=f,t[1]=p);let m;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(m=(0,c.jsx)(n,{className:`text-[19px] font-semibold`,children:`Protokoll`}),t[2]=m):m=t[2];let h;t[3]===u?h=t[4]:(h=(0,c.jsxs)(r,{children:[m,(0,c.jsx)(a,{className:`text-text-2`,children:u})]}),t[3]=u,t[4]=h);let g;t[5]===d?g=t[6]:(g=(0,c.jsx)(`pre`,{className:`ziffern mx-4 mb-4 flex-1 overflow-auto rounded-lg bg-black/30 ring-1 ring-white/[0.07] ring-inset p-3 text-xs leading-relaxed whitespace-pre-wrap text-text-2`,children:d}),t[5]=d,t[6]=g);let _;t[7]!==h||t[8]!==g?(_=(0,c.jsxs)(i,{side:`right`,className:`border-white/10 bg-[#0e121a] data-[side=right]:w-full data-[side=right]:sm:max-w-2xl`,children:[h,g]}),t[7]=h,t[8]=g,t[9]=_):_=t[9];let v;return t[10]!==l||t[11]!==p||t[12]!==_?(v=(0,c.jsx)(o,{open:l,onOpenChange:p,children:_}),t[10]=l,t[11]=p,t[12]=_,t[13]=v):v=t[13],v}export{l as Protokollfenster}; \ No newline at end of file diff --git a/frontend/dist/assets/Protokollfenster-QxeTYr94.js b/frontend/dist/assets/Protokollfenster-QxeTYr94.js deleted file mode 100644 index adcc27d..0000000 --- a/frontend/dist/assets/Protokollfenster-QxeTYr94.js +++ /dev/null @@ -1 +0,0 @@ -import{n as e,r as t}from"./dist-D4CVSex9.js";import{a as n,i as r,n as i,r as a,t as o}from"./sheet-CHZtsS6E.js";var s=e(),c=t();function l(e){let t=(0,s.c)(14),{offen:l,titel:u,text:d,onSchliessen:f}=e,p;t[0]===f?p=t[1]:(p=e=>!e&&f(),t[0]=f,t[1]=p);let m;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(m=(0,c.jsx)(n,{className:`schild text-lg`,children:`Protokoll`}),t[2]=m):m=t[2];let h;t[3]===u?h=t[4]:(h=(0,c.jsxs)(r,{children:[m,(0,c.jsx)(a,{className:`text-text-2`,children:u})]}),t[3]=u,t[4]=h);let g;t[5]===d?g=t[6]:(g=(0,c.jsx)(`pre`,{className:`ziffern mx-4 mb-4 flex-1 overflow-auto rounded-lg border border-linie bg-[#0b0d0f] p-3 text-xs leading-relaxed whitespace-pre-wrap text-text-2`,children:d}),t[5]=d,t[6]=g);let _;t[7]!==h||t[8]!==g?(_=(0,c.jsxs)(i,{side:`right`,className:`border-linie bg-panel data-[side=right]:w-full data-[side=right]:sm:max-w-2xl`,children:[h,g]}),t[7]=h,t[8]=g,t[9]=_):_=t[9];let v;return t[10]!==l||t[11]!==p||t[12]!==_?(v=(0,c.jsx)(o,{open:l,onOpenChange:p,children:_}),t[10]=l,t[11]=p,t[12]=_,t[13]=v):v=t[13],v}export{l as Protokollfenster}; \ No newline at end of file diff --git a/frontend/dist/assets/Start-BEW_FGcW.js b/frontend/dist/assets/Start-BEW_FGcW.js deleted file mode 100644 index 5ddbc84..0000000 --- a/frontend/dist/assets/Start-BEW_FGcW.js +++ /dev/null @@ -1,2 +0,0 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/Protokollfenster-QxeTYr94.js","assets/dist-D4CVSex9.js","assets/sheet-CHZtsS6E.js","assets/index-CKWhFN2A.js","assets/useSelector-uUwrspuX.js","assets/useMatch-CiyhmkMV.js","assets/index-h0yYjQNz.css","assets/button-D8rvET0Z.js","assets/dist-VQuEcoq-.js","assets/Bestaetigen-CMlebyiw.js"])))=>i.map(i=>d[i]); -import{i as e,n as t,r as n,s as r,t as i}from"./dist-D4CVSex9.js";import{C as a,Et as o,Ft as s,Gt as c,Ht as l,It as u,Jt as d,Lt as f,Qt as p,Rt as m,S as h,Ut as g,Vt as _,Wt as v,Y as y,b,ht as x,qt as S,tn as C,un as w,w as T,x as E,zt as D}from"./index-CKWhFN2A.js";import{t as O}from"./button-D8rvET0Z.js";import{t as k}from"./Lampe-gSQfYg4e.js";var A=t(),j=r(e(),1),M=n(),N=(0,j.lazy)(()=>T(()=>import(`./Protokollfenster-QxeTYr94.js`).then(e=>({default:e.Protokollfenster})),__vite__mapDeps([0,1,2,3,4,5,6,7,8]))),P=(0,j.lazy)(()=>T(()=>import(`./Bestaetigen-CMlebyiw.js`).then(e=>e.n).then(e=>({default:e.Bestaetigen})),__vite__mapDeps([9,1,3,4,5,6,7,8])));function F({h:e}){let t=y(),[n,r]=(0,j.useState)(null),[a,o]=(0,j.useState)(null),s=e.stufe===`rot`,c=a?d(e,a):null;async function u(){try{let t=await C(`/api/hinweise/${encodeURIComponent(e.id)}/aktion/protokoll`);r({titel:e.titel,text:t.text||t.out||t.err||`Kein Protokoll vorhanden.`})}catch(e){l(`fehler`,e.message)}}function f(n){t.mutate({hinweis:e.id,aktion:n.id,label:n.label})}function p(t){t.id===`protokoll`?u():d(e,t)?o(t):f(t)}return(0,M.jsxs)(`article`,{className:`flex flex-col gap-2.5 border-t border-linie pt-4`,children:[(0,M.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,M.jsx)(`h3`,{className:`min-w-0 font-sans text-[17px] leading-snug font-semibold`,children:e.titel}),(0,M.jsx)(`span`,{"aria-hidden":!0,className:`hidden h-0 flex-grow border-b-2 border-dotted border-linie-stark sm:block`}),(0,M.jsx)(`span`,{className:i(`schild shrink-0 text-base`,s?`text-rot`:`text-bernstein`),children:s?`Jetzt`:`Prüfen`})]}),(0,M.jsxs)(`p`,{className:`ziffern text-[13px] text-text-3`,children:[m(e.seit),` · zuletzt `,D(e.zuletzt)]}),e.text&&(0,M.jsx)(`p`,{className:`text-[15px] leading-relaxed break-words text-text-2`,children:e.text}),e.aktionen.length>0&&(0,M.jsx)(`div`,{className:`flex flex-wrap gap-2.5 pt-1`,children:e.aktionen.map((e,n)=>(0,M.jsx)(O,{variant:n===0&&e.id!==`protokoll`?`default`:`outline`,size:`sm`,disabled:t.isPending,onClick:()=>p(e),children:e.label},e.id))}),n&&(0,M.jsx)(j.Suspense,{fallback:null,children:(0,M.jsx)(N,{offen:!0,titel:n.titel,text:n.text,onSchliessen:()=>r(null)})}),a&&c&&(0,M.jsx)(j.Suspense,{fallback:null,children:(0,M.jsx)(P,{offen:!0,titel:c.titel,text:c.text,knopf:c.knopf,gesperrt:t.isPending,onNein:()=>o(null),onJa:()=>{f(a),o(null)}})})]})}function I(e){let t=(0,A.c)(12),{hinweise:n,verlauf:r}=e,i;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(i=new Date().toDateString(),t[0]=i):i=t[0];let a=i,o;if(t[1]!==n.length||t[2]!==r){o=Symbol.for(`react.early_return_sentinel`);bb0:{let e;t[4]===Symbol.for(`react.memo_cache_sentinel`)?(e=e=>(e.art===`erledigt`||e.art===`auto`)&&new Date(e.ts*1e3).toDateString()===a,t[4]=e):e=t[4];let i=r.filter(e);if(n.length===0){let e;t[5]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,M.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Keine offenen Punkte. Der Wächter prüft jede Minute.`}),t[5]=e):e=t[5];let n=i.length>0&&(0,M.jsx)(`ul`,{className:`flex flex-col gap-1 text-sm text-text-3`,children:i.slice(0,4).map(R)}),r;t[6]===n?r=t[7]:(r=(0,M.jsxs)(`div`,{className:`flex flex-col gap-2 border-t border-linie pt-4`,children:[e,n]}),t[6]=n,t[7]=r),o=r;break bb0}}t[1]=n.length,t[2]=r,t[3]=o}else o=t[3];if(o!==Symbol.for(`react.early_return_sentinel`))return o;let s;t[8]===n?s=t[9]:(s=n.map(L),t[8]=n,t[9]=s);let c;return t[10]===s?c=t[11]:(c=(0,M.jsx)(`div`,{className:`flex flex-col gap-4`,children:s}),t[10]=s,t[11]=c),c}function L(e){return(0,M.jsx)(F,{h:e},e.id)}function R(e){return(0,M.jsxs)(`li`,{children:[(0,M.jsx)(`span`,{className:`ziffern`,children:D(e.ts)}),` · `,e.text]},`${e.id}-${e.ts}`)}function z(e){let t=(0,A.c)(25),{anteil:n,farbe:r,zonen:i,mitte:a,unter:o,beschriftung:s,ariaText:l}=e,u=r===void 0?`var(--cyan)`:r,d;t[0]===i?d=t[1]:(d=i===void 0?[]:i,t[0]=i,t[1]=d);let f=d,p=n!=null&&n>.004,m;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(m=(0,M.jsx)(`path`,{d:c(0,1,75),fill:`none`,stroke:`var(--linie)`,strokeWidth:12,strokeLinecap:`round`}),t[2]=m):m=t[2];let h;t[3]===f?h=t[4]:(h=f.map(B),t[3]=f,t[4]=h);let g;t[5]!==n||t[6]!==u||t[7]!==p?(g=p&&(0,M.jsx)(`path`,{d:c(0,n,75),fill:`none`,stroke:u,strokeWidth:12,strokeLinecap:`round`}),t[5]=n,t[6]=u,t[7]=p,t[8]=g):g=t[8];let _;t[9]===Symbol.for(`react.memo_cache_sentinel`)?(_={fontSize:34,fontWeight:500,fill:`var(--foreground)`},t[9]=_):_=t[9];let v;t[10]===a?v=t[11]:(v=(0,M.jsx)(`text`,{x:`100`,y:`100`,textAnchor:`middle`,className:`ziffern`,style:_,children:a}),t[10]=a,t[11]=v);let y;t[12]===o?y=t[13]:(y=o&&(0,M.jsx)(`text`,{x:`100`,y:`122`,textAnchor:`middle`,style:{fontFamily:`var(--font-anzeige)`,fontSize:14,fontWeight:600,letterSpacing:`0.12em`,fill:`var(--text-3)`},children:o.toUpperCase()}),t[12]=o,t[13]=y);let b;t[14]!==l||t[15]!==h||t[16]!==g||t[17]!==v||t[18]!==y?(b=(0,M.jsxs)(`svg`,{viewBox:`0 0 200 150`,className:`h-auto w-full max-w-[200px]`,role:`img`,"aria-label":l,children:[m,h,g,v,y]}),t[14]=l,t[15]=h,t[16]=g,t[17]=v,t[18]=y,t[19]=b):b=t[19];let x;t[20]===s?x=t[21]:(x=(0,M.jsx)(`figcaption`,{className:`schild text-[15px] text-text-3`,children:s}),t[20]=s,t[21]=x);let S;return t[22]!==b||t[23]!==x?(S=(0,M.jsxs)(`figure`,{className:`m-0 flex min-w-0 flex-col items-center gap-1`,children:[b,x]}),t[22]=b,t[23]=x,t[24]=S):S=t[24],S}function B(e){return(0,M.jsx)(`path`,{d:c(e.von,e.bis,86),fill:`none`,stroke:e.farbe,strokeWidth:4,strokeLinecap:`round`},`${e.von}-${e.bis}`)}function V(e){let t=(0,A.c)(26),{zustand:n,lampen:r,onAnsehen:a}=e,o;t[0]===n?o=t[1]:(o=S(n),t[0]=n,t[1]=o);let s=o,c=s.art===`gelb`||s.art===`rot`,l=!c,u=`${s.oben} ${s.mitte}`,d=g[s.art],f=c?`cursor-pointer`:`cursor-default`,p;t[2]!==d||t[3]!==f?(p=i(`flex min-h-[130px] flex-col items-center justify-center gap-1 rounded-2xl border px-4 py-4 font-anzeige transition-colors`,d,f),t[2]=d,t[3]=f,t[4]=p):p=t[4];let m;t[5]===s.oben?m=t[6]:(m=(0,M.jsx)(`span`,{className:`schild text-sm tracking-[0.26em]`,children:s.oben}),t[5]=s.oben,t[6]=m);let h;t[7]===s.mitte?h=t[8]:(h=(0,M.jsx)(`span`,{className:`text-[40px] leading-none font-bold tracking-[0.04em] sm:text-[44px]`,children:s.mitte}),t[7]=s.mitte,t[8]=h);let _;t[9]===s.unten?_=t[10]:(_=(0,M.jsx)(`span`,{className:`font-sans text-sm opacity-80`,children:s.unten}),t[9]=s.unten,t[10]=_);let v;t[11]!==a||t[12]!==l||t[13]!==u||t[14]!==p||t[15]!==m||t[16]!==h||t[17]!==_?(v=(0,M.jsxs)(`button`,{type:`button`,onClick:a,disabled:l,"aria-label":u,className:p,children:[m,h,_]}),t[11]=a,t[12]=l,t[13]=u,t[14]=p,t[15]=m,t[16]=h,t[17]=_,t[18]=v):v=t[18];let y;t[19]===r?y=t[20]:(y=r.map(H),t[19]=r,t[20]=y);let b;t[21]===y?b=t[22]:(b=(0,M.jsx)(`ul`,{className:`grid grid-cols-2 gap-2.5 rounded-2xl border border-linie bg-panel p-3 sm:grid-cols-4`,children:y}),t[21]=y,t[22]=b);let x;return t[23]!==v||t[24]!==b?(x=(0,M.jsxs)(`section`,{"aria-label":`Warnpanel`,className:`grid gap-4 md:grid-cols-[260px_minmax(0,1fr)] md:gap-5`,children:[v,b]}),t[23]=v,t[24]=b,t[25]=x):x=t[25],x}function H(e){return(0,M.jsx)(k,{lampe:e},e.id)}function U(e){let t=(0,A.c)(2),{z:n}=e,r;return t[0]===n?r=t[1]:(r=(0,M.jsx)(`span`,{className:`ziffern inline-flex h-[1.75em] w-[1.1875em] shrink-0 items-center justify-center rounded-md border border-[#2a3036] bg-[#0b0d0f] font-medium`,children:n}),t[0]=n,t[1]=r),r}function W(e){let t=(0,A.c)(25),{sekunden:n}=e,r;t[0]===n?r=t[1]:(r=f(n),t[0]=n,t[1]=r);let i=r,a=String(Math.min(i?.[0]??0,99)),o;t[2]===a?o=t[3]:(o=a.padStart(2,`0`),t[2]=a,t[3]=o);let s=o,c=String(i?.[1]??0),l;t[4]===c?l=t[5]:(l=c.padStart(2,`0`),t[4]=c,t[5]=l);let u=l,d=i?`Laufzeit ohne Neustart: ${i[0]} Tage, ${i[1]} Stunden`:`Laufzeit unbekannt`,p=i?s[0]:`–`,m;t[6]===p?m=t[7]:(m=(0,M.jsx)(U,{z:p}),t[6]=p,t[7]=m);let h=i?s[1]:`–`,g;t[8]===h?g=t[9]:(g=(0,M.jsx)(U,{z:h}),t[8]=h,t[9]=g);let _;t[10]===Symbol.for(`react.memo_cache_sentinel`)?(_=(0,M.jsx)(`span`,{className:`schild mr-[0.444em] ml-[0.111em] text-[0.5625em] font-bold text-text-3`,children:`T`}),t[10]=_):_=t[10];let v=i?u[0]:`–`,y;t[11]===v?y=t[12]:(y=(0,M.jsx)(U,{z:v}),t[11]=v,t[12]=y);let b=i?u[1]:`–`,x;t[13]===b?x=t[14]:(x=(0,M.jsx)(U,{z:b}),t[13]=b,t[14]=x);let S;t[15]===Symbol.for(`react.memo_cache_sentinel`)?(S=(0,M.jsx)(`span`,{className:`schild ml-[0.111em] text-[0.5625em] font-bold text-text-3`,children:`H`}),t[15]=S):S=t[15];let C;t[16]!==y||t[17]!==x||t[18]!==m||t[19]!==g||t[20]!==d?(C=(0,M.jsxs)(`div`,{"aria-label":d,role:`img`,className:`flex h-[min(75cqw,150px)] items-center gap-[0.1875em] pb-[min(10cqw,20px)] text-[length:clamp(14px,14.5cqw,32px)]`,children:[m,g,_,y,x,S]}),t[16]=y,t[17]=x,t[18]=m,t[19]=g,t[20]=d,t[21]=C):C=t[21];let w;t[22]===Symbol.for(`react.memo_cache_sentinel`)?(w=(0,M.jsx)(`figcaption`,{className:`schild text-[15px] text-text-3`,children:`Ohne Neustart`}),t[22]=w):w=t[22];let T;return t[23]===C?T=t[24]:(T=(0,M.jsxs)(`figure`,{className:`@container m-0 flex min-w-0 flex-col items-center justify-end gap-1`,children:[C,w]}),t[23]=C,t[24]=T),T}function G(e){let t=(0,A.c)(47),{box:n}=e,r=_(),i=r?.ram_used??n.ram_used,a=r?.ram_total??n.ram_total,o=r?.temp_cpu??n.temp_cpu,c=r?.temp_gpu??n.temp_gpu,l=n.platte,d=r?.uptime_s??n.uptime_s,f=i!=null&&a?i/a:null,m;t[0]===i?m=t[1]:(m=i==null?`–`:String(Math.round(s(i)??0)),t[0]=i,t[1]=m);let h;t[2]===a?h=t[3]:(h=a?`von ${Math.round(s(a)??0)} GB`:void 0,t[2]=a,t[3]=h);let g;t[4]!==f||t[5]!==i||t[6]!==a?(g=f==null?`Speicher unbekannt`:`Speicher: ${u(i)} von ${u(a)} belegt`,t[4]=f,t[5]=i,t[6]=a,t[7]=g):g=t[7];let v;t[8]!==f||t[9]!==m||t[10]!==h||t[11]!==g?(v=(0,M.jsx)(z,{beschriftung:`Speicher`,anteil:f,mitte:m,unter:h,ariaText:g}),t[8]=f,t[9]=m,t[10]=h,t[11]=g,t[12]=v):v=t[12];let y=o==null?null:o/100,b;t[13]===o?b=t[14]:(b=p(o),t[13]=o,t[14]=b);let x;t[15]===Symbol.for(`react.memo_cache_sentinel`)?(x=[{von:.7,bis:.85,farbe:`var(--bernstein)`},{von:.85,bis:1,farbe:`var(--rot)`}],t[15]=x):x=t[15];let S;t[16]===o?S=t[17]:(S=o==null?`–`:`${Math.round(o)}°`,t[16]=o,t[17]=S);let C;t[18]===c?C=t[19]:(C=c==null?void 0:`GPU ${Math.round(c)}°`,t[18]=c,t[19]=C);let w;t[20]===o?w=t[21]:(w=o==null?`Temperatur unbekannt`:`Temperatur ${Math.round(o)} Grad`,t[20]=o,t[21]=w);let T;t[22]!==w||t[23]!==y||t[24]!==b||t[25]!==S||t[26]!==C?(T=(0,M.jsx)(z,{beschriftung:`Temperatur`,anteil:y,farbe:b,zonen:x,mitte:S,unter:C,ariaText:w}),t[22]=w,t[23]=y,t[24]=b,t[25]=S,t[26]=C,t[27]=T):T=t[27];let E=l?l.percent/100:null,D=l&&l.percent>=90?`var(--rot)`:l&&l.percent>=80?`var(--bernstein)`:`var(--cyan)`,O;t[28]===l?O=t[29]:(O=l?`${Math.round(l.percent)}%`:`–`,t[28]=l,t[29]=O);let k;t[30]===l?k=t[31]:(k=l?`${u(l.used)} / ${u(l.total)}`:void 0,t[30]=l,t[31]=k);let j;t[32]===l?j=t[33]:(j=l?`Platte zu ${Math.round(l.percent)} Prozent belegt`:`Platte unbekannt`,t[32]=l,t[33]=j);let N;t[34]!==E||t[35]!==D||t[36]!==O||t[37]!==k||t[38]!==j?(N=(0,M.jsx)(z,{beschriftung:`Platte`,anteil:E,farbe:D,mitte:O,unter:k,ariaText:j}),t[34]=E,t[35]=D,t[36]=O,t[37]=k,t[38]=j,t[39]=N):N=t[39];let P;t[40]===d?P=t[41]:(P=(0,M.jsx)(W,{sekunden:d}),t[40]=d,t[41]=P);let F;return t[42]!==T||t[43]!==N||t[44]!==P||t[45]!==v?(F=(0,M.jsxs)(`section`,{"aria-label":`Instrumente`,className:`grid grid-cols-2 gap-x-4 gap-y-6 rounded-2xl border border-linie bg-panel px-4 py-5 lg:grid-cols-4 lg:px-6`,children:[v,T,N,P]}),t[42]=T,t[43]=N,t[44]=P,t[45]=v,t[46]=F):F=t[46],F}var K={bestanden:`gruen`,durchgefallen:`rot`,wartet:`cyan`,neu:`cyan`};function q(e){let t=(0,A.c)(14),{radar:n}=e;if(!n?.kandidaten)return null;let r,i;t[0]===n.kandidaten?(r=t[1],i=t[2]):(r=n.kandidaten.filter(Y),i=r.find(J)??r[0],t[0]=n.kandidaten,t[1]=r,t[2]=i);let a=i,o=r.length===1?``:`en`,s;t[3]!==r.length||t[4]!==o?(s=(0,M.jsxs)(`span`,{className:`schild text-sm text-cyan`,children:[`Radar · `,r.length,` Kandidat`,o]}),t[3]=r.length,t[4]=o,t[5]=s):s=t[5];let c;t[6]===a?c=t[7]:(c=a?(0,M.jsxs)(`span`,{className:`flex flex-wrap items-center gap-2 text-[15px]`,children:[(0,M.jsx)(`span`,{className:`ziffern`,children:a.name}),(0,M.jsxs)(`span`,{className:`text-text-2`,children:[`fürs `,a.rolle===`hirn`?`Hirn`:`Coden`]}),(0,M.jsx)(h,{art:K[a.status]??`grau`,children:v[a.status]??a.status})]}):(0,M.jsx)(`span`,{className:`text-[15px] text-text-2`,children:`Nichts Besseres in Sicht.`}),t[6]=a,t[7]=c);let l;t[8]!==s||t[9]!==c?(l=(0,M.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-1`,children:[s,c]}),t[8]=s,t[9]=c,t[10]=l):l=t[10];let u;t[11]===Symbol.for(`react.memo_cache_sentinel`)?(u=(0,M.jsx)(O,{variant:`info`,size:`sm`,asChild:!0,children:(0,M.jsx)(w,{to:`/box/modelle`,hash:`radar`,children:`Ansehen`})}),t[11]=u):u=t[11];let d;return t[12]===l?d=t[13]:(d=(0,M.jsxs)(`div`,{className:`mt-auto flex flex-wrap items-center justify-between gap-3 rounded-xl border border-cyan-rand bg-cyan-grund px-4 py-3.5`,children:[l,u]}),t[12]=l,t[13]=d),d}function J(e){return e.status===`bestanden`}function Y(e){return[`bestanden`,`wartet`,`neu`].includes(e.status)}function X(){let e=(0,A.c)(32),{data:t,error:n,isPending:r}=o(),i=x();if(r){let t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,M.jsx)(a,{text:`Die Box meldet sich gleich …`}),e[0]=t):t=e[0],t}if(!t){let t=`MC2 antwortet nicht: ${n?.message??`keine Daten`}`,r;return e[1]===t?r=e[2]:(r=(0,M.jsx)(a,{fehler:!0,text:t}),e[1]=t,e[2]=r),r}let s=t.hinweise.length,c;e[3]!==t.lampen||e[4]!==t.zustand?(c=(0,M.jsx)(V,{zustand:t.zustand,lampen:t.lampen,onAnsehen:Z}),e[3]=t.lampen,e[4]=t.zustand,e[5]=c):c=e[5];let l;e[6]===t.box?l=e[7]:(l=(0,M.jsx)(G,{box:t.box}),e[6]=t.box,e[7]=l);let u=s?`ziffern text-sm text-bernstein`:`ziffern text-sm text-gruen`,d=s?`${s} offen`:`alles erledigt`,f;e[8]!==u||e[9]!==d?(f=(0,M.jsx)(`span`,{className:u,children:d}),e[8]=u,e[9]=d,e[10]=f):f=e[10];let p;e[11]!==t.hinweise||e[12]!==t.verlauf?(p=(0,M.jsx)(I,{hinweise:t.hinweise,verlauf:t.verlauf}),e[11]=t.hinweise,e[12]=t.verlauf,e[13]=p):p=e[13];let m;e[14]!==f||e[15]!==p?(m=(0,M.jsx)(b,{titel:`Checkliste`,id:`checkliste`,rechts:f,children:p}),e[14]=f,e[15]=p,e[16]=m):m=e[16];let h;e[17]!==t.flugplan.gelaufen||e[18]!==t.flugplan.geplant?(h=(0,M.jsx)(E,{gelaufen:t.flugplan.gelaufen,geplant:t.flugplan.geplant}),e[17]=t.flugplan.gelaufen,e[18]=t.flugplan.geplant,e[19]=h):h=e[19];let g;e[20]===i.data?g=e[21]:(g=(0,M.jsx)(q,{radar:i.data}),e[20]=i.data,e[21]=g);let _;e[22]!==h||e[23]!==g?(_=(0,M.jsxs)(b,{titel:`Flugplan`,children:[h,g]}),e[22]=h,e[23]=g,e[24]=_):_=e[24];let v;e[25]!==m||e[26]!==_?(v=(0,M.jsxs)(`div`,{className:`grid gap-5 lg:grid-cols-[minmax(0,1.35fr)_minmax(0,1fr)] md:gap-6`,children:[m,_]}),e[25]=m,e[26]=_,e[27]=v):v=e[27];let y;return e[28]!==c||e[29]!==l||e[30]!==v?(y=(0,M.jsxs)(M.Fragment,{children:[c,l,v]}),e[28]=c,e[29]=l,e[30]=v,e[31]=y):y=e[31],y}function Z(){return document.getElementById(`checkliste`)?.scrollIntoView({behavior:`smooth`,block:`start`})}export{X as StartSeite}; \ No newline at end of file diff --git a/frontend/dist/assets/Start-DREQTawa.js b/frontend/dist/assets/Start-DREQTawa.js new file mode 100644 index 0000000..a28b2c2 --- /dev/null +++ b/frontend/dist/assets/Start-DREQTawa.js @@ -0,0 +1,2 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/Protokollfenster-CLtJNo-e.js","assets/dist-aE7UmubC.js","assets/sheet-Bcuh2-nz.js","assets/index-BjDzWYEf.js","assets/useSelector-DBNxxw17.js","assets/useMatch-DDVpPKJI.js","assets/index-Eb5vSjGo.css","assets/button-DwYvdWVr.js","assets/dist-DSmV4Srg.js","assets/Bestaetigen-DNJdB_zl.js"])))=>i.map(i=>d[i]); +import{a as e,c as t,i as n,r,t as i}from"./dist-aE7UmubC.js";import{$t as a,Bt as o,D as s,Gt as c,Ht as l,Jt as u,Mt as d,O as f,Qt as p,Ut as m,Vt as h,Wt as g,Xt as _,Yt as v,hn as y,k as b,on as x,qt as S,rn as C,tt as w,w as T,xt as E}from"./index-BjDzWYEf.js";import{t as D}from"./button-DwYvdWVr.js";import{t as O}from"./Panel-uT1S5ZGr.js";import{n as k,t as A}from"./Lagekopf-PcUY5KZI.js";var j=r(),M=t(e(),1),N=n(),P=(0,M.lazy)(()=>b(()=>import(`./Protokollfenster-CLtJNo-e.js`).then(e=>({default:e.Protokollfenster})),__vite__mapDeps([0,1,2,3,4,5,6,7,8]))),F=(0,M.lazy)(()=>b(()=>import(`./Bestaetigen-DNJdB_zl.js`).then(e=>e.n).then(e=>({default:e.Bestaetigen})),__vite__mapDeps([9,1,3,4,5,6,7,8])));function I({h:e}){let t=w(),[n,r]=(0,M.useState)(null),[o,s]=(0,M.useState)(null),l=e.stufe===`rot`,d=o?a(e,o):null;async function f(){try{let t=await x(`/api/hinweise/${encodeURIComponent(e.id)}/aktion/protokoll`);r({titel:e.titel,text:t.text||t.out||t.err||`Kein Protokoll vorhanden.`})}catch(e){u(`fehler`,e.message)}}function p(n){t.mutate({hinweis:e.id,aktion:n.id,label:n.label})}function m(t){t.id===`protokoll`?f():a(e,t)?s(t):p(t)}return(0,N.jsxs)(`article`,{className:i(`flex flex-col gap-2.5 rounded-2xl px-4 py-3.5 ring-1 ring-inset`,l?`bg-rot/[0.07] ring-rot/35`:`bg-bernstein/[0.06] ring-bernstein/30`),children:[(0,N.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,N.jsx)(`h3`,{className:`min-w-0 flex-1 font-sans text-[16.5px] leading-snug font-semibold`,children:e.titel}),(0,N.jsx)(`span`,{className:i(`etikett shrink-0 rounded-full px-2.5 py-0.5 text-[10.5px] tracking-[0.12em] ring-1 ring-inset`,l?`bg-rot/12 text-rot-text ring-rot/40`:`bg-bernstein/10 text-bernstein ring-bernstein/35`),children:l?`Jetzt`:`Prüfen`})]}),(0,N.jsxs)(`p`,{className:`ziffern text-[13px] text-text-3`,children:[g(e.seit),` · zuletzt `,c(e.zuletzt)]}),e.text&&(0,N.jsx)(`p`,{className:`text-[15px] leading-relaxed break-words text-text-2`,children:e.text}),e.aktionen.length>0&&(0,N.jsx)(`div`,{className:`flex flex-wrap gap-2.5 pt-1`,children:e.aktionen.map((e,n)=>(0,N.jsx)(D,{variant:n===0&&e.id!==`protokoll`?`default`:`outline`,size:`sm`,disabled:t.isPending,onClick:()=>m(e),children:e.label},e.id))}),n&&(0,N.jsx)(M.Suspense,{fallback:null,children:(0,N.jsx)(P,{offen:!0,titel:n.titel,text:n.text,onSchliessen:()=>r(null)})}),o&&d&&(0,N.jsx)(M.Suspense,{fallback:null,children:(0,N.jsx)(F,{offen:!0,titel:d.titel,text:d.text,knopf:d.knopf,gesperrt:t.isPending,onNein:()=>s(null),onJa:()=>{p(o),s(null)}})})]})}function L(e){let t=(0,j.c)(12),{hinweise:n,verlauf:r}=e,i;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(i=new Date().toDateString(),t[0]=i):i=t[0];let a=i,o;if(t[1]!==n.length||t[2]!==r){o=Symbol.for(`react.early_return_sentinel`);bb0:{let e;t[4]===Symbol.for(`react.memo_cache_sentinel`)?(e=e=>(e.art===`erledigt`||e.art===`auto`)&&new Date(e.ts*1e3).toDateString()===a,t[4]=e):e=t[4];let i=r.filter(e);if(n.length===0){let e;t[5]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,N.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Keine offenen Punkte. Der Wächter prüft jede Minute.`}),t[5]=e):e=t[5];let n=i.length>0&&(0,N.jsx)(`ul`,{className:`flex flex-col gap-1 text-sm text-text-3`,children:i.slice(0,4).map(z)}),r;t[6]===n?r=t[7]:(r=(0,N.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[e,n]}),t[6]=n,t[7]=r),o=r;break bb0}}t[1]=n.length,t[2]=r,t[3]=o}else o=t[3];if(o!==Symbol.for(`react.early_return_sentinel`))return o;let s;t[8]===n?s=t[9]:(s=n.map(R),t[8]=n,t[9]=s);let c;return t[10]===s?c=t[11]:(c=(0,N.jsx)(`div`,{className:`flex flex-col gap-3`,children:s}),t[10]=s,t[11]=c),c}function R(e){return(0,N.jsx)(I,{h:e},e.id)}function z(e){return(0,N.jsxs)(`li`,{children:[(0,N.jsx)(`span`,{className:`ziffern`,children:c(e.ts)}),` · `,e.text]},`${e.id}-${e.ts}`)}var B={erledigt:{text:`Erledigt`,farbe:`text-gruen-text`,punkt:`bg-gruen`},fehler:{text:`Fehler`,farbe:`text-rot-text`,punkt:`bg-rot`},geplant:{text:`Geplant`,farbe:`text-text-3`,punkt:`bg-white/25`}};function V(e){let t=(0,j.c)(23),{e:n}=e,r=B[n.status]??B.geplant,a=n.status===`geplant`&&/update/i.test(n.titel)?`text-cyan-text`:r.farbe,s;t[0]===n.zeit?s=t[1]:(s=o(n.zeit),t[0]=n.zeit,t[1]=s);let c;t[2]===s?c=t[3]:(c=(0,N.jsx)(`span`,{className:`ziffern col-start-1 row-start-1 text-sm text-text-3`,children:s}),t[2]=s,t[3]=c);let l;t[4]===n.text?l=t[5]:(l=n.text&&(0,N.jsxs)(`span`,{className:`text-text-3`,children:[`, `,n.text]}),t[4]=n.text,t[5]=l);let u;t[6]!==n.titel||t[7]!==l?(u=(0,N.jsxs)(`span`,{className:`col-span-2 row-start-2 min-w-0 text-base break-words @sm:col-span-1 @sm:col-start-2 @sm:row-start-1`,children:[n.titel,l]}),t[6]=n.titel,t[7]=l,t[8]=u):u=t[8];let d;t[9]===a?d=t[10]:(d=i(`etikett col-start-2 row-start-1 flex items-center gap-1.5 justify-self-end text-[10.5px] tracking-[0.12em] @sm:col-start-3`,a),t[9]=a,t[10]=d);let f;t[11]===r.punkt?f=t[12]:(f=i(`size-1.5 rounded-full`,r.punkt),t[11]=r.punkt,t[12]=f);let p;t[13]===f?p=t[14]:(p=(0,N.jsx)(`span`,{"aria-hidden":!0,className:f}),t[13]=f,t[14]=p);let m;t[15]!==r.text||t[16]!==d||t[17]!==p?(m=(0,N.jsxs)(`span`,{className:d,children:[p,r.text]}),t[15]=r.text,t[16]=d,t[17]=p,t[18]=m):m=t[18];let h;return t[19]!==c||t[20]!==u||t[21]!==m?(h=(0,N.jsxs)(`li`,{className:`grid grid-cols-[minmax(0,1fr)_auto] items-center gap-x-3 gap-y-1 border-t border-white/[0.06] py-2.5 first:border-t-0 @sm:grid-cols-[112px_minmax(0,1fr)_auto]`,children:[c,u,m]}),t[19]=c,t[20]=u,t[21]=m,t[22]=h):h=t[22],h}function H(e){let t=(0,j.c)(6),{gelaufen:n,geplant:r}=e,i;t[0]!==n||t[1]!==r?(i=[...n,...r.slice(0,5)],t[0]=n,t[1]=r,t[2]=i):i=t[2];let a=i;if(a.length===0){let e;return t[3]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,N.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Heute ist noch nichts gelaufen, und nichts ist geplant.`}),t[3]=e):e=t[3],e}let o;return t[4]===a?o=t[5]:(o=(0,N.jsx)(`ol`,{className:`@container m-0 flex list-none flex-col p-0`,children:a.map(U)}),t[4]=a,t[5]=o),o}function U(e){return(0,N.jsx)(V,{e},`${e.titel}-${e.zeit}`)}function W(e){let t=(0,j.c)(25),{anteil:n,farbe:r,zonen:i,mitte:a,unter:o,beschriftung:s,ariaText:c}=e,l=r===void 0?`var(--box)`:r,u;t[0]===i?u=t[1]:(u=i===void 0?[]:i,t[0]=i,t[1]=u);let d=u,f=n!=null&&n>.004,p;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(p=(0,N.jsx)(`path`,{d:_(0,1,75),fill:`none`,stroke:`rgb(255 255 255 / 0.07)`,strokeWidth:12,strokeLinecap:`round`}),t[2]=p):p=t[2];let m;t[3]===d?m=t[4]:(m=d.map(G),t[3]=d,t[4]=m);let h;t[5]!==n||t[6]!==l||t[7]!==f?(h=f&&(0,N.jsx)(`path`,{d:_(0,n,75),fill:`none`,stroke:l,strokeWidth:12,strokeLinecap:`round`,style:{filter:`drop-shadow(0 0 7px color-mix(in srgb, ${l} 60%, transparent))`}}),t[5]=n,t[6]=l,t[7]=f,t[8]=h):h=t[8];let g;t[9]===Symbol.for(`react.memo_cache_sentinel`)?(g={fontFamily:`var(--font-anzeige)`,fontSize:40,fontWeight:600,fill:`var(--foreground)`},t[9]=g):g=t[9];let v;t[10]===a?v=t[11]:(v=(0,N.jsx)(`text`,{x:`100`,y:`102`,textAnchor:`middle`,style:g,children:a}),t[10]=a,t[11]=v);let y;t[12]===o?y=t[13]:(y=o&&(0,N.jsx)(`text`,{x:`100`,y:`124`,textAnchor:`middle`,style:{fontFamily:`var(--font-sans)`,fontSize:13,fontWeight:500,fill:`var(--text-3)`},children:o}),t[12]=o,t[13]=y);let b;t[14]!==c||t[15]!==m||t[16]!==h||t[17]!==v||t[18]!==y?(b=(0,N.jsxs)(`svg`,{viewBox:`0 0 200 150`,className:`h-auto w-full max-w-[200px]`,role:`img`,"aria-label":c,children:[p,m,h,v,y]}),t[14]=c,t[15]=m,t[16]=h,t[17]=v,t[18]=y,t[19]=b):b=t[19];let x;t[20]===s?x=t[21]:(x=(0,N.jsx)(`figcaption`,{className:`etikett text-[11.5px] tracking-[0.14em] text-text-3`,children:s}),t[20]=s,t[21]=x);let S;return t[22]!==b||t[23]!==x?(S=(0,N.jsxs)(`figure`,{className:`m-0 flex min-w-0 flex-col items-center gap-1`,children:[b,x]}),t[22]=b,t[23]=x,t[24]=S):S=t[24],S}function G(e){return(0,N.jsx)(`path`,{d:_(e.von,e.bis,86),fill:`none`,stroke:e.farbe,strokeWidth:4,strokeLinecap:`round`},`${e.von}-${e.bis}`)}function K(e){let t=(0,j.c)(12),{zustand:n,lampen:r,onAnsehen:i}=e,a;t[0]===n?a=t[1]:(a=p(n),t[0]=n,t[1]=a);let o=a,s=o.art,c=o.oben,l=o.mitte,u=o.unten,d=o.art===`gelb`||o.art===`rot`,f;t[2]===r?f=t[3]:(f=r.map(q),t[2]=r,t[3]=f);let m;return t[4]!==o.art||t[5]!==o.mitte||t[6]!==o.oben||t[7]!==o.unten||t[8]!==i||t[9]!==d||t[10]!==f?(m=(0,N.jsx)(k,{art:s,oben:c,mitte:l,unten:u,aktiv:d,onAnsehen:i,label:`Warnpanel`,children:f}),t[4]=o.art,t[5]=o.mitte,t[6]=o.oben,t[7]=o.unten,t[8]=i,t[9]=d,t[10]=f,t[11]=m):m=t[11],m}function q(e){return(0,N.jsx)(A,{bild:T(e.id),name:e.label,wert:e.wert,zustand:e.zustand},e.id)}function J(e){let t=(0,j.c)(2),{z:n}=e,r;return t[0]===n?r=t[1]:(r=(0,N.jsx)(`span`,{className:`ziffern inline-flex h-[1.75em] w-[1.1875em] shrink-0 items-center justify-center rounded-lg border border-white/10 bg-gradient-to-b from-white/[0.07] to-white/[0.02] font-medium shadow-[inset_0_1px_0_rgb(255_255_255/0.06)]`,children:n}),t[0]=n,t[1]=r),r}function Y(e){let t=(0,j.c)(25),{sekunden:n}=e,r;t[0]===n?r=t[1]:(r=m(n),t[0]=n,t[1]=r);let i=r,a=String(Math.min(i?.[0]??0,99)),o;t[2]===a?o=t[3]:(o=a.padStart(2,`0`),t[2]=a,t[3]=o);let s=o,c=String(i?.[1]??0),l;t[4]===c?l=t[5]:(l=c.padStart(2,`0`),t[4]=c,t[5]=l);let u=l,d=i?`Laufzeit ohne Neustart: ${i[0]} Tage, ${i[1]} Stunden`:`Laufzeit unbekannt`,f=i?s[0]:`–`,p;t[6]===f?p=t[7]:(p=(0,N.jsx)(J,{z:f}),t[6]=f,t[7]=p);let h=i?s[1]:`–`,g;t[8]===h?g=t[9]:(g=(0,N.jsx)(J,{z:h}),t[8]=h,t[9]=g);let _;t[10]===Symbol.for(`react.memo_cache_sentinel`)?(_=(0,N.jsx)(`span`,{className:`etikett mr-[0.444em] ml-[0.111em] text-[0.5625em] text-text-3`,children:`T`}),t[10]=_):_=t[10];let v=i?u[0]:`–`,y;t[11]===v?y=t[12]:(y=(0,N.jsx)(J,{z:v}),t[11]=v,t[12]=y);let b=i?u[1]:`–`,x;t[13]===b?x=t[14]:(x=(0,N.jsx)(J,{z:b}),t[13]=b,t[14]=x);let S;t[15]===Symbol.for(`react.memo_cache_sentinel`)?(S=(0,N.jsx)(`span`,{className:`etikett ml-[0.111em] text-[0.5625em] text-text-3`,children:`H`}),t[15]=S):S=t[15];let C;t[16]!==y||t[17]!==x||t[18]!==p||t[19]!==g||t[20]!==d?(C=(0,N.jsxs)(`div`,{"aria-label":d,role:`img`,className:`flex h-[min(75cqw,150px)] items-center gap-[0.1875em] pb-[min(10cqw,20px)] text-[length:clamp(14px,14.5cqw,32px)]`,children:[p,g,_,y,x,S]}),t[16]=y,t[17]=x,t[18]=p,t[19]=g,t[20]=d,t[21]=C):C=t[21];let w;t[22]===Symbol.for(`react.memo_cache_sentinel`)?(w=(0,N.jsx)(`figcaption`,{className:`etikett text-[11.5px] tracking-[0.14em] text-text-3`,children:`Ohne Neustart`}),t[22]=w):w=t[22];let T;return t[23]===C?T=t[24]:(T=(0,N.jsxs)(`figure`,{className:`@container m-0 flex min-w-0 flex-col items-center justify-end gap-1`,children:[C,w]}),t[23]=C,t[24]=T),T}function X(e){let t=(0,j.c)(48),{box:n}=e,r=S(),i=r?.ram_used??n.ram_used,a=r?.ram_total??n.ram_total,o=r?.temp_cpu??n.temp_cpu,s=r?.temp_gpu??n.temp_gpu,c=n.platte,u=r?.uptime_s??n.uptime_s,d=i!=null&&a?i/a:null,f;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(f={"--i":1},t[0]=f):f=t[0];let p;t[1]===i?p=t[2]:(p=i==null?`–`:String(Math.round(h(i)??0)),t[1]=i,t[2]=p);let m;t[3]===a?m=t[4]:(m=a?`von ${Math.round(h(a)??0)} GB`:void 0,t[3]=a,t[4]=m);let g;t[5]!==d||t[6]!==i||t[7]!==a?(g=d==null?`Speicher unbekannt`:`Speicher: ${l(i)} von ${l(a)} belegt`,t[5]=d,t[6]=i,t[7]=a,t[8]=g):g=t[8];let _;t[9]!==d||t[10]!==p||t[11]!==m||t[12]!==g?(_=(0,N.jsx)(W,{beschriftung:`Speicher`,anteil:d,mitte:p,unter:m,ariaText:g}),t[9]=d,t[10]=p,t[11]=m,t[12]=g,t[13]=_):_=t[13];let v=o==null?null:o/100,y;t[14]===o?y=t[15]:(y=C(o),t[14]=o,t[15]=y);let b;t[16]===Symbol.for(`react.memo_cache_sentinel`)?(b=[{von:.7,bis:.85,farbe:`var(--bernstein)`},{von:.85,bis:1,farbe:`var(--rot)`}],t[16]=b):b=t[16];let x;t[17]===o?x=t[18]:(x=o==null?`–`:`${Math.round(o)}°`,t[17]=o,t[18]=x);let w;t[19]===s?w=t[20]:(w=s==null?void 0:`GPU ${Math.round(s)}°`,t[19]=s,t[20]=w);let T;t[21]===o?T=t[22]:(T=o==null?`Temperatur unbekannt`:`Temperatur ${Math.round(o)} Grad`,t[21]=o,t[22]=T);let E;t[23]!==w||t[24]!==T||t[25]!==v||t[26]!==y||t[27]!==x?(E=(0,N.jsx)(W,{beschriftung:`Temperatur`,anteil:v,farbe:y,zonen:b,mitte:x,unter:w,ariaText:T}),t[23]=w,t[24]=T,t[25]=v,t[26]=y,t[27]=x,t[28]=E):E=t[28];let D=c?c.percent/100:null,O=c&&c.percent>=90?`var(--rot)`:c&&c.percent>=80?`var(--bernstein)`:`var(--box)`,k;t[29]===c?k=t[30]:(k=c?`${Math.round(c.percent)}%`:`–`,t[29]=c,t[30]=k);let A;t[31]===c?A=t[32]:(A=c?`${l(c.used)} / ${l(c.total)}`:void 0,t[31]=c,t[32]=A);let M;t[33]===c?M=t[34]:(M=c?`Platte zu ${Math.round(c.percent)} Prozent belegt`:`Platte unbekannt`,t[33]=c,t[34]=M);let P;t[35]!==D||t[36]!==O||t[37]!==k||t[38]!==A||t[39]!==M?(P=(0,N.jsx)(W,{beschriftung:`Platte`,anteil:D,farbe:O,mitte:k,unter:A,ariaText:M}),t[35]=D,t[36]=O,t[37]=k,t[38]=A,t[39]=M,t[40]=P):P=t[40];let F;t[41]===u?F=t[42]:(F=(0,N.jsx)(Y,{sekunden:u}),t[41]=u,t[42]=F);let I;return t[43]!==E||t[44]!==P||t[45]!==F||t[46]!==_?(I=(0,N.jsxs)(`section`,{"aria-label":`Instrumente`,className:`auftauchen flaeche grid grid-cols-2 gap-x-4 gap-y-6 rounded-3xl px-4 py-5 lg:grid-cols-4 lg:px-6`,style:f,children:[_,E,P,F]}),t[43]=E,t[44]=P,t[45]=F,t[46]=_,t[47]=I):I=t[47],I}var Z={bestanden:`gruen`,durchgefallen:`rot`,wartet:`cyan`,neu:`cyan`};function Q(e){let t=(0,j.c)(14),{radar:n}=e;if(!n?.kandidaten)return null;let r,i;t[0]===n.kandidaten?(r=t[1],i=t[2]):(r=n.kandidaten.filter(ee),i=r.find($)??r[0],t[0]=n.kandidaten,t[1]=r,t[2]=i);let a=i,o=r.length===1?``:`en`,c;t[3]!==r.length||t[4]!==o?(c=(0,N.jsxs)(`span`,{className:`etikett text-[11px] tracking-[0.14em] text-cyan-text`,children:[`Radar · `,r.length,` Kandidat`,o]}),t[3]=r.length,t[4]=o,t[5]=c):c=t[5];let l;t[6]===a?l=t[7]:(l=a?(0,N.jsxs)(`span`,{className:`flex flex-wrap items-center gap-2 text-[15px]`,children:[(0,N.jsx)(`span`,{className:`ziffern`,children:a.name}),(0,N.jsxs)(`span`,{className:`text-text-2`,children:[`fürs `,a.rolle===`hirn`?`Hirn`:`Coden`]}),(0,N.jsx)(s,{art:Z[a.status]??`grau`,children:v[a.status]??a.status})]}):(0,N.jsx)(`span`,{className:`text-[15px] text-text-2`,children:`Nichts Besseres in Sicht.`}),t[6]=a,t[7]=l);let u;t[8]!==c||t[9]!==l?(u=(0,N.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-1`,children:[c,l]}),t[8]=c,t[9]=l,t[10]=u):u=t[10];let d;t[11]===Symbol.for(`react.memo_cache_sentinel`)?(d=(0,N.jsx)(D,{variant:`info`,size:`sm`,asChild:!0,children:(0,N.jsx)(y,{to:`/box/modelle`,hash:`radar`,children:`Ansehen`})}),t[11]=d):d=t[11];let f;return t[12]===u?f=t[13]:(f=(0,N.jsxs)(`div`,{className:`mt-auto flex flex-wrap items-center justify-between gap-3 rounded-2xl bg-cyan/[0.06] px-4 py-3.5 ring-1 ring-cyan/30 ring-inset`,children:[u,d]}),t[12]=u,t[13]=f),f}function $(e){return e.status===`bestanden`}function ee(e){return[`bestanden`,`wartet`,`neu`].includes(e.status)}function te(){let e=(0,j.c)(32),{data:t,error:n,isPending:r}=d(),i=E();if(r){let t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,N.jsx)(f,{text:`Die Box meldet sich gleich …`}),e[0]=t):t=e[0],t}if(!t){let t=`MC2 antwortet nicht: ${n?.message??`keine Daten`}`,r;return e[1]===t?r=e[2]:(r=(0,N.jsx)(f,{fehler:!0,text:t}),e[1]=t,e[2]=r),r}let a=t.hinweise.length,o;e[3]!==t.lampen||e[4]!==t.zustand?(o=(0,N.jsx)(K,{zustand:t.zustand,lampen:t.lampen,onAnsehen:ne}),e[3]=t.lampen,e[4]=t.zustand,e[5]=o):o=e[5];let c;e[6]===t.box?c=e[7]:(c=(0,N.jsx)(X,{box:t.box}),e[6]=t.box,e[7]=c);let l=a?`bernstein`:`gruen`,u=a?`${a} offen`:`alles erledigt`,p;e[8]!==l||e[9]!==u?(p=(0,N.jsx)(s,{art:l,children:u}),e[8]=l,e[9]=u,e[10]=p):p=e[10];let m;e[11]!==t.hinweise||e[12]!==t.verlauf?(m=(0,N.jsx)(L,{hinweise:t.hinweise,verlauf:t.verlauf}),e[11]=t.hinweise,e[12]=t.verlauf,e[13]=m):m=e[13];let h;e[14]!==p||e[15]!==m?(h=(0,N.jsx)(O,{titel:`Checkliste`,id:`checkliste`,rechts:p,children:m}),e[14]=p,e[15]=m,e[16]=h):h=e[16];let g;e[17]!==t.flugplan.gelaufen||e[18]!==t.flugplan.geplant?(g=(0,N.jsx)(H,{gelaufen:t.flugplan.gelaufen,geplant:t.flugplan.geplant}),e[17]=t.flugplan.gelaufen,e[18]=t.flugplan.geplant,e[19]=g):g=e[19];let _;e[20]===i.data?_=e[21]:(_=(0,N.jsx)(Q,{radar:i.data}),e[20]=i.data,e[21]=_);let v;e[22]!==g||e[23]!==_?(v=(0,N.jsxs)(O,{titel:`Flugplan`,children:[g,_]}),e[22]=g,e[23]=_,e[24]=v):v=e[24];let y;e[25]!==h||e[26]!==v?(y=(0,N.jsxs)(`div`,{className:`grid gap-5 lg:grid-cols-[minmax(0,1.35fr)_minmax(0,1fr)] md:gap-6`,children:[h,v]}),e[25]=h,e[26]=v,e[27]=y):y=e[27];let b;return e[28]!==o||e[29]!==c||e[30]!==y?(b=(0,N.jsxs)(N.Fragment,{children:[o,c,y]}),e[28]=o,e[29]=c,e[30]=y,e[31]=b):b=e[31],b}function ne(){return document.getElementById(`checkliste`)?.scrollIntoView({behavior:`smooth`,block:`start`})}export{te as StartSeite}; \ No newline at end of file diff --git a/frontend/dist/assets/Updates-BT3dF9QL.js b/frontend/dist/assets/Updates-BT3dF9QL.js new file mode 100644 index 0000000..c973338 --- /dev/null +++ b/frontend/dist/assets/Updates-BT3dF9QL.js @@ -0,0 +1,2 @@ +import{a as e,c as t,i as n,r,t as i}from"./dist-aE7UmubC.js";import{t as a}from"./chevron-right-DF8ikrVh.js";import{$ as o,Bt as s,C as c,D as l,It as u,Lt as d,Mt as f,O as p,Pt as m,en as h,et as ee,ft as g,ht as te,kt as ne,w as _,zt as re}from"./index-BjDzWYEf.js";import{t as v}from"./button-DwYvdWVr.js";import{t as y}from"./Bestaetigen-DNJdB_zl.js";import{t as b}from"./Panel-uT1S5ZGr.js";import{c as x,i as S,n as ie,o as ae,t as C}from"./Auftraege-yNI8sNrj.js";var w=r(),T=t(e(),1),E=n(),D=[{id:`os`,name:`Betriebssystem`},{id:`engine`,name:`Motor (llama.cpp)`},{id:`swap`,name:`llama-swap`},{id:`hermes`,name:`Hermes`}],O={os:`Die Ubuntu-Pakete werden eingespielt, danach prüft die Box, ob die Modelle noch antworten. Das kann einige Minuten dauern.`,engine:`Der Motor wird ersetzt, llama-swap startet dafür neu und die Modelle sind kurz nicht erreichbar. Klappt die Prüfung danach nicht, holt die Box den alten Stand von selbst zurück.`,swap:`llama-swap wird ersetzt und startet neu, die Modelle sind kurz nicht erreichbar. Klappt die Prüfung danach nicht, holt die Box den alten Stand von selbst zurück.`,hermes:`Vorher wird gesichert. Dann wird Hermes aktualisiert und startet neu — Lucy ist dabei ein paar Minuten nicht erreichbar.`};function oe(e){let t=(0,w.c)(7),{breit:n}=e,r=n===void 0?`w-16`:n,a;t[0]===r?a=t[1]:(a=i(`inline-block h-3.5 rounded bg-linie motion-safe:animate-pulse`,r),t[0]=r,t[1]=a);let o;t[2]===a?o=t[3]:(o=(0,E.jsx)(`span`,{"aria-hidden":!0,className:a}),t[2]=a,t[3]=o);let s;t[4]===Symbol.for(`react.memo_cache_sentinel`)?(s=(0,E.jsx)(`span`,{className:`sr-only`,children:`wird geprüft`}),t[4]=s):s=t[4];let c;return t[5]===o?c=t[6]:(c=(0,E.jsxs)(`span`,{className:`inline-flex items-center`,children:[o,s]}),t[5]=o,t[6]=c),c}function se(e){let t=(0,w.c)(13),{text:n}=e,[r,a]=(0,T.useState)(!1),o;t[0]===n?o=t[1]:(o=n.split(` +`).length>3||n.length>240,t[0]=n,t[1]=o);let s=o,c=s&&!r&&`line-clamp-3`,l;t[2]===c?l=t[3]:(l=i(`m-0 whitespace-pre-line`,c),t[2]=c,t[3]=l);let u;t[4]!==l||t[5]!==n?(u=(0,E.jsx)(`p`,{className:l,children:n}),t[4]=l,t[5]=n,t[6]=u):u=t[6];let d;t[7]!==s||t[8]!==r?(d=s&&(0,E.jsx)(`button`,{type:`button`,"aria-expanded":r,onClick:()=>a(!r),className:`-mb-2 inline-flex h-11 items-center text-sm text-cyan-text hover:underline`,children:r?`Weniger zeigen`:`Ganze Zusammenfassung zeigen`}),t[7]=s,t[8]=r,t[9]=d):d=t[9];let f;return t[10]!==u||t[11]!==d?(f=(0,E.jsxs)(`div`,{className:`flex flex-col items-start`,children:[u,d]}),t[10]=u,t[11]=d,t[12]=f):f=t[12],f}function ce(e){let t=(0,w.c)(13),{d:n}=e,r;t[0]===n.packages?r=t[1]:(r=n.packages??[],t[0]=n.packages,t[1]=r);let i=r,o,s;if(t[2]!==n.held_back||t[3]!==i){s=Symbol.for(`react.early_return_sentinel`);bb0:{let e=n.held_back??[];if(i.length===0&&e.length===0){s=null;break bb0}let r;t[6]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,E.jsx)(a,{"aria-hidden":!0,className:`size-4 transition-transform group-open:rotate-90`}),t[6]=r):r=t[6];let c=i.length===0?`Was Ubuntu zurückhält (${e.length})`:i.length===1?`Das Paket ansehen`:`Alle ${i.length} Pakete ansehen`,l;t[7]===c?l=t[8]:(l=(0,E.jsxs)(`summary`,{className:`inline-flex h-11 cursor-pointer items-center gap-1 text-sm text-cyan-text hover:underline`,children:[r,c]}),t[7]=c,t[8]=l);let u;t[9]===i?u=t[10]:(u=i.map(A),t[9]=i,t[10]=u);let d;t[11]===u?d=t[12]:(d=(0,E.jsx)(`ul`,{className:`ziffern m-0 flex max-h-64 list-none flex-col gap-1 overflow-auto rounded-xl bg-black/30 ring-1 ring-white/[0.07] ring-inset p-2.5 text-xs`,children:u}),t[11]=u,t[12]=d),o=(0,E.jsxs)(`details`,{className:`group`,children:[l,d,e.length>0&&(0,E.jsxs)(`p`,{className:`mt-2 text-xs text-text-3`,children:[`Dazu `,e.length===1?`kommt ein Paket`:`kommen ${e.length} Pakete`,`, die Ubuntu noch zurückhält (`,e.map(k).join(`, `),`). Die kommen von selbst, wenn Ubuntu sie freigibt.`]})]})}t[2]=n.held_back,t[3]=i,t[4]=o,t[5]=s}else o=t[4],s=t[5];return s===Symbol.for(`react.early_return_sentinel`)?o:s}function k(e){return e.name}function A(e){return(0,E.jsxs)(`li`,{className:`break-all`,children:[(0,E.jsx)(`span`,{className:`text-foreground`,children:e.name}),` `,(0,E.jsxs)(`span`,{className:`text-text-3`,children:[e.current,` → `,e.candidate]})]},e.name)}function le(e){let t=(0,w.c)(6),{d:n}=e;if(n.action_needed===!1){let e;return t[0]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,E.jsx)(l,{art:`gruen`,children:`Nichts zu tun`}),t[0]=e):e=t[0],e}if(n.action_needed!==!0)return null;let r;t[1]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,E.jsx)(l,{art:`bernstein`,children:`Du musst etwas tun`}),t[1]=r):r=t[1];let i;t[2]===n.action_text?i=t[3]:(i=n.action_text&&(0,E.jsx)(`span`,{className:`text-bernstein`,children:n.action_text}),t[2]=n.action_text,t[3]=i);let a;return t[4]===i?a=t[5]:(a=(0,E.jsxs)(`span`,{className:`flex flex-col items-start gap-1.5`,children:[r,i]}),t[4]=i,t[5]=a),a}function j(e){let t=e?.trim();return t?t.startsWith(`(Zusammenfassung nicht verfügbar`)?`Die Zusammenfassung ist gerade nicht verfügbar.`:t:null}function M(e){let t=(0,w.c)(70),{id:n,name:r,details:i,hatUpdate:a,neuLautStart:o,fest:s,gesperrt:l,onStart:u,onFreigeben:d}=e,f=i.data,p=i.isPending,m=i.isError?i.error.message:f?.error,h;t[0]!==f||t[1]!==n?(h=f?x(n,f):null,t[0]=f,t[1]=n,t[2]=h):h=t[2];let ee=h,g=a?ee?.neu??o??null:null,te=f?.summary,ne;t[3]===te?ne=t[4]:(ne=j(te),t[3]=te,t[4]=ne);let re=ne,y=ee&&ee.laeuft!==`–`?ee.laeuft:m?`unbekannt`:`–`,b;t[5]!==p||t[6]!==y?(b=p?(0,E.jsx)(oe,{}):(0,E.jsx)(E.Fragment,{children:y}),t[5]=p,t[6]=y,t[7]=b):b=t[7];let S=b,ie;t[8]!==m||t[9]!==p||t[10]!==g?(ie=p?(0,E.jsx)(oe,{breit:`w-20`}):g?(0,E.jsx)(`span`,{className:`text-cyan-text`,children:g}):m?(0,E.jsx)(`span`,{className:`text-bernstein`,children:`nicht geprüft`}):(0,E.jsx)(`span`,{className:`text-text-3`,children:`–`}),t[8]=m,t[9]=p,t[10]=g,t[11]=ie):ie=t[11];let C=ie,T;if(p){let e;t[12]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,E.jsx)(`span`,{className:`text-text-3`,children:`Wird geprüft …`}),t[12]=e):e=t[12],T=e}else if(m&&!a){let e;t[13]===m?e=t[14]:(e=ae(m),t[13]=m,t[14]=e);let n;t[15]===e?n=t[16]:(n=(0,E.jsx)(`span`,{className:`text-bernstein`,children:e}),t[15]=e,t[16]=n),T=n}else if(!a)T=`Aktuell.`;else{let e;t[17]===m?e=t[18]:(e=m&&(0,E.jsx)(`span`,{className:`text-bernstein`,children:ae(m)}),t[17]=m,t[18]=e);let r;t[19]===f?r=t[20]:(r=f&&(0,E.jsx)(le,{d:f}),t[19]=f,t[20]=r);let i;t[21]!==f||t[22]!==n||t[23]!==re?(i=n===`os`?(0,E.jsxs)(E.Fragment,{children:[(0,E.jsx)(`span`,{children:f?.count?`${f.count} ${f.count===1?`Paket`:`Pakete`} aus Ubuntu.`:`Neue Pakete aus Ubuntu.`}),f&&(0,E.jsx)(ce,{d:f})]}):re?(0,E.jsx)(se,{text:re}):null,t[21]=f,t[22]=n,t[23]=re,t[24]=i):i=t[24];let a;t[25]!==e||t[26]!==r||t[27]!==i?(a=(0,E.jsxs)(`div`,{className:`flex flex-col items-start gap-2`,children:[e,r,i]}),t[25]=e,t[26]=r,t[27]=i,t[28]=a):a=t[28],T=a}let D=p||void 0,O;t[29]===n?O=t[30]:(O=_(n),t[29]=n,t[30]=O);let k;t[31]===O?k=t[32]:(k=(0,E.jsx)(c,{bild:O,groesse:`sm`}),t[31]=O,t[32]=k);let A;t[33]===r?A=t[34]:(A=(0,E.jsx)(`span`,{className:`min-w-0`,children:r}),t[33]=r,t[34]=A);let M;t[35]!==k||t[36]!==A?(M=(0,E.jsxs)(`span`,{role:`rowheader`,className:`flex min-w-0 items-center gap-3 text-[15px] font-semibold`,children:[k,A]}),t[35]=k,t[36]=A,t[37]=M):M=t[37];let N;t[38]!==m||t[39]!==p||t[40]!==g||t[41]!==C?(N=!p&&(g||m)&&(0,E.jsxs)(E.Fragment,{children:[` `,g?`→`:`·`,` `,C]}),t[38]=m,t[39]=p,t[40]=g,t[41]=C,t[42]=N):N=t[42];let P;t[43]!==S||t[44]!==N?(P=(0,E.jsxs)(`span`,{role:`cell`,className:`ziffern -mt-1 text-sm text-text-2 md:hidden`,children:[S,N]}),t[43]=S,t[44]=N,t[45]=P):P=t[45];let F;t[46]===S?F=t[47]:(F=(0,E.jsx)(`span`,{role:`cell`,className:`ziffern hidden text-sm text-text-2 md:block`,children:S}),t[46]=S,t[47]=F);let I;t[48]===C?I=t[49]:(I=(0,E.jsx)(`span`,{role:`cell`,className:`ziffern hidden text-sm md:block`,children:C}),t[48]=C,t[49]=I);let L;t[50]!==s||t[51]!==r?(L=s&&(0,E.jsxs)(`span`,{className:`mb-1.5 block text-bernstein`,children:[`Festgehalten seit `,s.seit,` auf `,s.version,`: `,s.grund,`. Der Sonntags-Lauf überspringt `,r,`.`]}),t[50]=s,t[51]=r,t[52]=L):L=t[52];let R;t[53]!==L||t[54]!==T?(R=(0,E.jsxs)(`div`,{role:`cell`,className:`text-sm leading-relaxed text-text-2`,children:[L,T]}),t[53]=L,t[54]=T,t[55]=R):R=t[55];let z;t[56]!==s||t[57]!==l||t[58]!==a||t[59]!==d||t[60]!==u?(z=(s||a)&&(0,E.jsxs)(`span`,{role:`cell`,className:`flex flex-wrap gap-2 md:flex-col md:items-end`,children:[s&&(0,E.jsx)(v,{variant:`outline`,size:`sm`,onClick:d,children:`Freigeben`}),a&&(0,E.jsx)(v,{variant:`outline`,size:`sm`,onClick:u,disabled:l,children:`Aktualisieren`})]}),t[56]=s,t[57]=l,t[58]=a,t[59]=d,t[60]=u,t[61]=z):z=t[61];let ue;return t[62]!==M||t[63]!==P||t[64]!==F||t[65]!==I||t[66]!==R||t[67]!==z||t[68]!==D?(ue=(0,E.jsxs)(`div`,{role:`row`,"aria-busy":D,className:`grid grid-cols-1 gap-x-4 gap-y-2 border-t border-white/[0.06] py-3.5 md:grid-cols-[210px_100px_170px_minmax(0,1fr)_auto] md:items-start`,children:[M,P,F,I,R,z]}),t[62]=M,t[63]=P,t[64]=F,t[65]=I,t[66]=R,t[67]=z,t[68]=D,t[69]=ue):ue=t[69],ue}var N={rot:`rot`,gelb:`bernstein`,gruen:`gruen`,info:`cyan`,grau:`grau`},P={rot:`bg-rot`,gelb:`bg-bernstein`,gruen:`bg-gruen`,info:`bg-cyan`,grau:`bg-text-3`};function F(e){let t=(0,w.c)(19),{lauf:n}=e,r;t[0]===n.start?r=t[1]:(r=s(n.start),t[0]=n.start,t[1]=r);let i;t[2]===r?i=t[3]:(i=(0,E.jsx)(`span`,{className:`ziffern col-start-1 row-start-1 text-sm text-text-3`,children:r}),t[2]=r,t[3]=i);let a;t[4]===n.anlass?a=t[5]:(a=(0,E.jsx)(`span`,{className:`col-span-2 row-start-2 min-w-0 text-[15px] break-words @sm:col-span-1 @sm:col-start-2 @sm:row-start-1`,children:n.anlass}),t[4]=n.anlass,t[5]=a);let o=N[n.stufe],c;t[6]!==n.titel||t[7]!==o?(c=(0,E.jsx)(`span`,{className:`col-start-2 row-start-1 justify-self-end @sm:col-start-3`,children:(0,E.jsx)(l,{art:o,children:n.titel})}),t[6]=n.titel,t[7]=o,t[8]=c):c=t[8];let u;t[9]!==i||t[10]!==a||t[11]!==c?(u=(0,E.jsxs)(`div`,{className:`grid grid-cols-[minmax(0,1fr)_auto] items-center gap-x-3 gap-y-1 @sm:grid-cols-[112px_minmax(0,1fr)_auto]`,children:[i,a,c]}),t[9]=i,t[10]=a,t[11]=c,t[12]=u):u=t[12];let d;t[13]!==n.stufe||t[14]!==n.zeilen?(d=n.stufe!==`grau`&&n.zeilen.length>0&&(0,E.jsx)(`ul`,{className:`m-0 flex list-none flex-col gap-1 p-0 @sm:pl-[124px]`,children:n.zeilen.map(I)}),t[13]=n.stufe,t[14]=n.zeilen,t[15]=d):d=t[15];let f;return t[16]!==u||t[17]!==d?(f=(0,E.jsxs)(`li`,{className:`flex flex-col gap-2 border-t border-white/[0.06] py-3`,children:[u,d]}),t[16]=u,t[17]=d,t[18]=f):f=t[18],f}function I(e){return(0,E.jsxs)(`li`,{className:`flex items-baseline gap-2 text-sm leading-snug text-text-2`,children:[(0,E.jsx)(`span`,{"aria-hidden":!0,className:i(`size-1.5 shrink-0 -translate-y-px rounded-full`,P[e.stufe])}),(0,E.jsxs)(`span`,{className:`min-w-0 break-words`,children:[(0,E.jsx)(`span`,{className:`text-foreground`,children:e.baustein}),` · `,e.text]})]},`${e.baustein}-${e.text}`)}function L(e){return e.mtime?s(new Date(e.mtime*1e3).toISOString()):e.snapshot}function R(){let e=(0,w.c)(126),t=f(),n=o(!0).data?.update_fenster,r=te(),i=d(),a=ne(),s=u(),c=ee(),l=g(),h=re(),[_,x]=(0,T.useState)(null),S;e[0]===t.data?.updates.bausteine?S=e[1]:(S=new Map((t.data?.updates.bausteine??[]).map(me)),e[0]=t.data?.updates.bausteine,e[1]=S);let ae=S,oe=new Map((t.data?.updates.festgehalten??[]).map(pe)),se;e[2]===Symbol.for(`react.memo_cache_sentinel`)?(se=D.map(fe),e[2]=se):se=e[2];let ce=m(se),k;e[3]!==ce||e[4]!==ae?(k=(e,t)=>ie(e.id,ce[t].data)??ae.has(e.id),e[3]=ce,e[4]=ae,e[5]=k):k=e[5];let A=D.map(k),le;e[6]===r.data?.jobs?le=e[7]:(le=r.data?.jobs??[],e[6]=r.data?.jobs,e[7]=le);let j=le,N;e[8]!==j||e[9]!==t.data?.zustand?(N=j.some(de)||(t.data?.zustand.update_laeuft??!1),e[8]=j,e[9]=t.data?.zustand,e[10]=N):N=e[10];let P=N,F;e[11]===j?F=e[12]:(F=j.some(ue),e[11]=j,e[12]=F);let I=F,R=P||s.isPending,B=a.data?.available??!1,V;if(t.isPending){let t;e[13]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,E.jsx)(p,{text:`Updates werden gelesen …`}),e[13]=t):t=e[13],V=t}else if(t.isError&&!t.data){let n=`Die Box antwortet nicht: ${t.error.message}`,r;e[14]===n?r=e[15]:(r=(0,E.jsx)(p,{fehler:!0,text:n}),e[14]=n,e[15]=r),V=r}else{let t;e[16]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,E.jsxs)(`div`,{role:`row`,className:`etikett hidden grid-cols-[210px_100px_170px_minmax(0,1fr)_auto] gap-x-4 pb-2 text-[10.5px] tracking-[0.14em] text-text-3 md:grid`,children:[(0,E.jsx)(`span`,{role:`columnheader`,children:`Baustein`}),(0,E.jsx)(`span`,{role:`columnheader`,children:`Läuft`}),(0,E.jsx)(`span`,{role:`columnheader`,children:`Neu`}),(0,E.jsx)(`span`,{role:`columnheader`,children:`Was sich ändert`}),(0,E.jsx)(`span`,{role:`columnheader`,className:`sr-only`,children:`Aktion`})]}),e[16]=t):t=e[16],V=(0,E.jsxs)(`div`,{role:`table`,"aria-label":`Bausteine und ihre Updates`,className:`flex flex-col`,children:[t,D.map((e,t)=>(0,E.jsx)(M,{id:e.id,name:e.name,details:ce[t],hatUpdate:A[t],neuLautStart:ae.get(e.id),fest:oe.get(e.id),gesperrt:R,onStart:()=>x({art:`einzeln`,id:e.id,name:e.name}),onFreigeben:()=>{let t=oe.get(e.id);t&&x({art:`freigeben`,id:e.id,name:e.name,grund:t.grund})}},e.id))]})}let H;if(i.isPending){let t;e[17]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,E.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Wird gelesen …`}),e[17]=t):t=e[17],H=t}else if(i.isError&&!i.data){let t;e[18]===i.error.message?t=e[19]:(t=(0,E.jsxs)(`p`,{role:`alert`,className:`text-[15px] text-rot-text`,children:[`Der Verlauf lässt sich gerade nicht lesen: `,i.error.message]}),e[18]=i.error.message,e[19]=t),H=t}else if(i.data?.laeufe.length){let t;e[21]===i.data.laeufe?t=e[22]:(t=i.data.laeufe.map(z),e[21]=i.data.laeufe,e[22]=t);let n;e[23]===t?n=e[24]:(n=(0,E.jsx)(`ol`,{className:`@container m-0 flex list-none flex-col p-0`,children:t}),e[23]=t,e[24]=n),H=n}else{let t;e[20]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,E.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Noch keine Update-Läufe aufgezeichnet.`}),e[20]=t):t=e[20],H=t}let U;if(a.isPending){let t;e[25]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,E.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Wird gelesen …`}),e[25]=t):t=e[25],U=t}else if(a.isError&&!a.data){let t;e[26]===a.error.message?t=e[27]:(t=(0,E.jsxs)(`p`,{role:`alert`,className:`text-[15px] text-rot-text`,children:[`Die Sicherungen lassen sich gerade nicht lesen: `,a.error.message]}),e[26]=a.error.message,e[27]=t),U=t}else if(a.data?.backups.length){let t;if(e[29]!==a.data.backups||e[30]!==h.isPending||e[31]!==B){let n;e[33]!==h.isPending||e[34]!==B?(n=e=>(0,E.jsxs)(`li`,{className:`flex items-center justify-between gap-3 border-t border-white/[0.06] py-2.5`,children:[(0,E.jsx)(`span`,{className:`ziffern text-sm`,children:L(e)}),(0,E.jsxs)(`span`,{className:`flex items-center gap-3`,children:[(0,E.jsxs)(`span`,{className:`ziffern text-xs text-text-3`,children:[e.size_mb.toLocaleString(`de-DE`),` MB`]}),(0,E.jsx)(v,{variant:`ghost`,size:`sm`,disabled:!B||h.isPending,onClick:()=>x({art:`zurueck`,datei:e.file,zeit:L(e)}),children:`Zurückspielen`})]})]},e.file),e[33]=h.isPending,e[34]=B,e[35]=n):n=e[35],t=a.data.backups.slice(0,5).map(n),e[29]=a.data.backups,e[30]=h.isPending,e[31]=B,e[32]=t}else t=e[32];let n;e[36]===t?n=e[37]:(n=(0,E.jsx)(`ul`,{className:`m-0 flex list-none flex-col p-0`,children:t}),e[36]=t,e[37]=n),U=n}else{let t;e[28]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,E.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Noch keine Sicherung vorhanden.`}),e[28]=t):t=e[28],U=t}let he=b,W;e[38]===s?W=e[39]:(W=()=>s.mutate(`pruefen`),e[38]=s,e[39]=W);let ge=s.isPending||I,_e=I?`Sucht …`:`Nach Neuem suchen`,G;e[40]!==_e||e[41]!==W||e[42]!==ge?(G=(0,E.jsx)(v,{variant:`outline`,onClick:W,disabled:ge,children:_e}),e[40]=_e,e[41]=W,e[42]=ge,e[43]=G):G=e[43];let ve=v,K;e[44]===Symbol.for(`react.memo_cache_sentinel`)?(K=()=>x({art:`alle`}),e[44]=K):K=e[44];let ye=R||!A.some(Boolean),q;e[45]!==ve||e[46]!==K||e[47]!==ye?(q=(0,E.jsx)(ve,{onClick:K,disabled:ye,children:`Alles jetzt aktualisieren`}),e[45]=ve,e[46]=K,e[47]=ye,e[48]=q):q=e[48];let J;e[49]!==G||e[50]!==q?(J=(0,E.jsxs)(`div`,{className:`flex flex-wrap gap-2.5`,children:[G,q]}),e[49]=G,e[50]=q,e[51]=J):J=e[51];let be=n?`Jeden ${n.tag_name} um ${n.uhrzeit} automatisch.`:`Einmal pro Woche automatisch.`,Y;e[52]===be?Y=e[53]:(Y=(0,E.jsxs)(`p`,{className:`-mt-2 text-[15px] text-text-2`,children:[be,` Vorher wird gesichert, danach geprüft.`]}),e[52]=be,e[53]=Y);let X;e[54]===P?X=e[55]:(X=P&&(0,E.jsx)(`p`,{role:`status`,className:`text-[15px] text-cyan-text`,children:`Gerade läuft ein Update. Weitere lassen sich erst starten, wenn es fertig ist.`}),e[54]=P,e[55]=X);let xe;e[56]===Symbol.for(`react.memo_cache_sentinel`)?(xe=(0,E.jsx)(C,{}),e[56]=xe):xe=e[56];let Z;e[57]!==he||e[58]!==J||e[59]!==Y||e[60]!==X||e[61]!==V?(Z=(0,E.jsxs)(he,{titel:`Updates`,rechts:J,children:[Y,X,V,xe]}),e[57]=he,e[58]=J,e[59]=Y,e[60]=X,e[61]=V,e[62]=Z):Z=e[62];let Q;e[63]===H?Q=e[64]:(Q=(0,E.jsx)(b,{titel:`Verlauf`,children:H}),e[63]=H,e[64]=Q);let Se;e[65]===l?Se=e[66]:(Se=()=>l.mutate(void 0),e[65]=l,e[66]=Se);let Ce=l.isPending?`Sichert …`:`Jetzt sichern`,we;e[67]!==l.isPending||e[68]!==Se||e[69]!==Ce?(we=(0,E.jsx)(v,{variant:`outline`,size:`sm`,onClick:Se,disabled:l.isPending,children:Ce}),e[67]=l.isPending,e[68]=Se,e[69]=Ce,e[70]=we):we=e[70];let Te;e[71]===Symbol.for(`react.memo_cache_sentinel`)?(Te=(0,E.jsx)(`p`,{className:`-mt-2 text-[15px] text-text-2`,children:`Täglich um 03:35, mit Kopie auf einem zweiten Gerät.`}),e[71]=Te):Te=e[71];let Ee;e[72]!==a.data||e[73]!==B?(Ee=a.data&&!B&&(0,E.jsx)(`p`,{className:`text-sm text-text-3`,children:`Zurückspielen geht nur auf der Box selbst.`}),e[72]=a.data,e[73]=B,e[74]=Ee):Ee=e[74];let De;e[75]!==U||e[76]!==we||e[77]!==Ee?(De=(0,E.jsxs)(b,{titel:`Sicherungen`,rechts:we,children:[Te,Ee,U]}),e[75]=U,e[76]=we,e[77]=Ee,e[78]=De):De=e[78];let Oe;e[79]!==Q||e[80]!==De?(Oe=(0,E.jsxs)(`div`,{className:`grid gap-5 md:gap-6 lg:grid-cols-[minmax(0,1.4fr)_minmax(0,1fr)]`,children:[Q,De]}),e[79]=Q,e[80]=De,e[81]=Oe):Oe=e[81];let ke=_?.art===`alle`,Ae;e[82]===Symbol.for(`react.memo_cache_sentinel`)?(Ae=()=>x(null),e[82]=Ae):Ae=e[82];let je;e[83]!==_?.art||e[84]!==s?(je=()=>{_?.art===`alle`&&s.mutate(`alle`),x(null)},e[83]=_?.art,e[84]=s,e[85]=je):je=e[85];let Me;e[86]!==R||e[87]!==ke||e[88]!==je?(Me=(0,E.jsx)(y,{offen:ke,titel:`Alles jetzt aktualisieren?`,text:`Motor, llama-swap, Hermes und Betriebssystem werden nacheinander aktualisiert, soweit es Neues gibt, und danach geprüft. Motor und llama-swap holen bei Problemen ihren alten Stand von selbst zurück, vor Hermes wird gesichert. Lucy ist dabei ein paar Minuten nicht erreichbar.`,knopf:`Aktualisieren`,gesperrt:R,onNein:Ae,onJa:je}),e[86]=R,e[87]=ke,e[88]=je,e[89]=Me):Me=e[89];let Ne=_?.art===`einzeln`,Pe=_?.art===`einzeln`?`${_.name} aktualisieren?`:``,Fe=_?.art===`einzeln`?O[_.id]??``:``,Ie;e[90]===Symbol.for(`react.memo_cache_sentinel`)?(Ie=()=>x(null),e[90]=Ie):Ie=e[90];let $;e[91]!==_||e[92]!==s?($=()=>{_?.art===`einzeln`&&s.mutate(_.id),x(null)},e[91]=_,e[92]=s,e[93]=$):$=e[93];let Le;e[94]!==R||e[95]!==Ne||e[96]!==Pe||e[97]!==Fe||e[98]!==$?(Le=(0,E.jsx)(y,{offen:Ne,titel:Pe,text:Fe,knopf:`Aktualisieren`,gesperrt:R,onNein:Ie,onJa:$}),e[94]=R,e[95]=Ne,e[96]=Pe,e[97]=Fe,e[98]=$,e[99]=Le):Le=e[99];let Re=_?.art===`freigeben`,ze=_?.art===`freigeben`?`${_.name} freigeben?`:``,Be=_?.art===`freigeben`?`Festgehalten wurde ${_.name}, weil: ${_.grund}. Nach dem Freigeben versucht der nächste Sonntags-Lauf das Update wieder.`:``,Ve;e[100]===Symbol.for(`react.memo_cache_sentinel`)?(Ve=()=>x(null),e[100]=Ve):Ve=e[100];let He;e[101]!==_||e[102]!==c?(He=()=>{_?.art===`freigeben`&&c.mutate(_.id),x(null)},e[101]=_,e[102]=c,e[103]=He):He=e[103];let Ue;e[104]!==c.isPending||e[105]!==Re||e[106]!==ze||e[107]!==Be||e[108]!==He?(Ue=(0,E.jsx)(y,{offen:Re,titel:ze,text:Be,knopf:`Freigeben`,gesperrt:c.isPending,onNein:Ve,onJa:He}),e[104]=c.isPending,e[105]=Re,e[106]=ze,e[107]=Be,e[108]=He,e[109]=Ue):Ue=e[109];let We=_?.art===`zurueck`,Ge=`Die Einstellungen von Hermes und llama-swap werden auf den Stand von ${_?.art===`zurueck`?_.zeit:``} gesetzt. Vorher wird der jetzige Stand gesichert. Die Dienste starten danach neu.`,Ke;e[110]===Symbol.for(`react.memo_cache_sentinel`)?(Ke=()=>x(null),e[110]=Ke):Ke=e[110];let qe;e[111]!==_||e[112]!==h?(qe=()=>{_?.art===`zurueck`&&h.mutate(_.datei),x(null)},e[111]=_,e[112]=h,e[113]=qe):qe=e[113];let Je;e[114]!==We||e[115]!==Ge||e[116]!==qe||e[117]!==h.isPending?(Je=(0,E.jsx)(y,{offen:We,gefahr:!0,titel:`Sicherung zurückspielen?`,text:Ge,knopf:`Zurückspielen`,gesperrt:h.isPending,onNein:Ke,onJa:qe}),e[114]=We,e[115]=Ge,e[116]=qe,e[117]=h.isPending,e[118]=Je):Je=e[118];let Ye;return e[119]!==Z||e[120]!==Oe||e[121]!==Me||e[122]!==Le||e[123]!==Ue||e[124]!==Je?(Ye=(0,E.jsxs)(E.Fragment,{children:[Z,Oe,Me,Le,Ue,Je]}),e[119]=Z,e[120]=Oe,e[121]=Me,e[122]=Le,e[123]=Ue,e[124]=Je,e[125]=Ye):Ye=e[125],Ye}function z(e){return(0,E.jsx)(F,{lauf:e},e.start)}function ue(e){return S(e)&&h(e)}function de(e){return e.group===`maintenance`&&h(e)}function fe(e){return e.id}function pe(e){return[e.baustein,e]}function me(e){return[e.id,e.neu]}export{R as UpdatesSeite}; \ No newline at end of file diff --git a/frontend/dist/assets/Updates-DZ25Ri0a.js b/frontend/dist/assets/Updates-DZ25Ri0a.js deleted file mode 100644 index b8624c4..0000000 --- a/frontend/dist/assets/Updates-DZ25Ri0a.js +++ /dev/null @@ -1,2 +0,0 @@ -import{i as e,n as t,r as n,s as r,t as i}from"./dist-D4CVSex9.js";import{t as a}from"./chevron-right-lErM2U6o.js";import{At as o,C as s,Ct as c,Et as l,J as u,Nt as d,Ot as f,Pt as p,S as m,Yt as h,b as g,jt as ee,lt as te,ot as ne,q as re}from"./index-CKWhFN2A.js";import{t as _}from"./button-D8rvET0Z.js";import{t as v}from"./Bestaetigen-CMlebyiw.js";import{c as y,i as b,n as ie,o as x,t as S}from"./Auftraege-BO4bSQmr.js";var C=t(),w=r(e(),1),T=n(),E=[{id:`os`,name:`Betriebssystem`},{id:`engine`,name:`Motor (llama.cpp)`},{id:`swap`,name:`llama-swap`},{id:`hermes`,name:`Hermes`}],D={os:`Die Ubuntu-Pakete werden eingespielt, danach prüft die Box, ob die Modelle noch antworten. Das kann einige Minuten dauern.`,engine:`Der Motor wird ersetzt, llama-swap startet dafür neu und die Modelle sind kurz nicht erreichbar. Klappt die Prüfung danach nicht, holt die Box den alten Stand von selbst zurück.`,swap:`llama-swap wird ersetzt und startet neu, die Modelle sind kurz nicht erreichbar. Klappt die Prüfung danach nicht, holt die Box den alten Stand von selbst zurück.`,hermes:`Vorher wird gesichert. Dann wird Hermes aktualisiert und startet neu — Lucy ist dabei ein paar Minuten nicht erreichbar.`};function O(e){let t=(0,C.c)(7),{breit:n}=e,r=n===void 0?`w-16`:n,a;t[0]===r?a=t[1]:(a=i(`inline-block h-3.5 rounded bg-linie motion-safe:animate-pulse`,r),t[0]=r,t[1]=a);let o;t[2]===a?o=t[3]:(o=(0,T.jsx)(`span`,{"aria-hidden":!0,className:a}),t[2]=a,t[3]=o);let s;t[4]===Symbol.for(`react.memo_cache_sentinel`)?(s=(0,T.jsx)(`span`,{className:`sr-only`,children:`wird geprüft`}),t[4]=s):s=t[4];let c;return t[5]===o?c=t[6]:(c=(0,T.jsxs)(`span`,{className:`inline-flex items-center`,children:[o,s]}),t[5]=o,t[6]=c),c}function ae(e){let t=(0,C.c)(13),{text:n}=e,[r,a]=(0,w.useState)(!1),o;t[0]===n?o=t[1]:(o=n.split(` -`).length>3||n.length>240,t[0]=n,t[1]=o);let s=o,c=s&&!r&&`line-clamp-3`,l;t[2]===c?l=t[3]:(l=i(`m-0 whitespace-pre-line`,c),t[2]=c,t[3]=l);let u;t[4]!==l||t[5]!==n?(u=(0,T.jsx)(`p`,{className:l,children:n}),t[4]=l,t[5]=n,t[6]=u):u=t[6];let d;t[7]!==s||t[8]!==r?(d=s&&(0,T.jsx)(`button`,{type:`button`,"aria-expanded":r,onClick:()=>a(!r),className:`-mb-2 inline-flex h-11 items-center text-sm text-cyan hover:underline`,children:r?`Weniger zeigen`:`Ganze Zusammenfassung zeigen`}),t[7]=s,t[8]=r,t[9]=d):d=t[9];let f;return t[10]!==u||t[11]!==d?(f=(0,T.jsxs)(`div`,{className:`flex flex-col items-start`,children:[u,d]}),t[10]=u,t[11]=d,t[12]=f):f=t[12],f}function oe(e){let t=(0,C.c)(13),{d:n}=e,r;t[0]===n.packages?r=t[1]:(r=n.packages??[],t[0]=n.packages,t[1]=r);let i=r,o,s;if(t[2]!==n.held_back||t[3]!==i){s=Symbol.for(`react.early_return_sentinel`);bb0:{let e=n.held_back??[];if(i.length===0&&e.length===0){s=null;break bb0}let r;t[6]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,T.jsx)(a,{"aria-hidden":!0,className:`size-4 transition-transform group-open:rotate-90`}),t[6]=r):r=t[6];let c=i.length===0?`Was Ubuntu zurückhält (${e.length})`:i.length===1?`Das Paket ansehen`:`Alle ${i.length} Pakete ansehen`,l;t[7]===c?l=t[8]:(l=(0,T.jsxs)(`summary`,{className:`inline-flex h-11 cursor-pointer items-center gap-1 text-sm text-cyan hover:underline`,children:[r,c]}),t[7]=c,t[8]=l);let u;t[9]===i?u=t[10]:(u=i.map(A),t[9]=i,t[10]=u);let d;t[11]===u?d=t[12]:(d=(0,T.jsx)(`ul`,{className:`ziffern m-0 flex max-h-64 list-none flex-col gap-1 overflow-auto rounded-md border border-linie bg-[#0b0d0f] p-2.5 text-xs`,children:u}),t[11]=u,t[12]=d),o=(0,T.jsxs)(`details`,{className:`group`,children:[l,d,e.length>0&&(0,T.jsxs)(`p`,{className:`mt-2 text-xs text-text-3`,children:[`Dazu `,e.length===1?`kommt ein Paket`:`kommen ${e.length} Pakete`,`, die Ubuntu noch zurückhält (`,e.map(k).join(`, `),`). Die kommen von selbst, wenn Ubuntu sie freigibt.`]})]})}t[2]=n.held_back,t[3]=i,t[4]=o,t[5]=s}else o=t[4],s=t[5];return s===Symbol.for(`react.early_return_sentinel`)?o:s}function k(e){return e.name}function A(e){return(0,T.jsxs)(`li`,{className:`break-all`,children:[(0,T.jsx)(`span`,{className:`text-foreground`,children:e.name}),` `,(0,T.jsxs)(`span`,{className:`text-text-3`,children:[e.current,` → `,e.candidate]})]},e.name)}function se(e){let t=(0,C.c)(6),{d:n}=e;if(n.action_needed===!1){let e;return t[0]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,T.jsx)(m,{art:`gruen`,children:`Nichts zu tun`}),t[0]=e):e=t[0],e}if(n.action_needed!==!0)return null;let r;t[1]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,T.jsx)(m,{art:`bernstein`,children:`Du musst etwas tun`}),t[1]=r):r=t[1];let i;t[2]===n.action_text?i=t[3]:(i=n.action_text&&(0,T.jsx)(`span`,{className:`text-bernstein`,children:n.action_text}),t[2]=n.action_text,t[3]=i);let a;return t[4]===i?a=t[5]:(a=(0,T.jsxs)(`span`,{className:`flex flex-col items-start gap-1.5`,children:[r,i]}),t[4]=i,t[5]=a),a}function ce(e){let t=e?.trim();return t?t.startsWith(`(Zusammenfassung nicht verfügbar`)?`Die Zusammenfassung ist gerade nicht verfügbar.`:t:null}function j(e){let t=(0,C.c)(63),{id:n,name:r,details:i,hatUpdate:a,neuLautStart:o,fest:s,gesperrt:c,onStart:l,onFreigeben:u}=e,d=i.data,f=i.isPending,p=i.isError?i.error.message:d?.error,m;t[0]!==d||t[1]!==n?(m=d?y(n,d):null,t[0]=d,t[1]=n,t[2]=m):m=t[2];let h=m,g=a?h?.neu??o??null:null,ee=d?.summary,te;t[3]===ee?te=t[4]:(te=ce(ee),t[3]=ee,t[4]=te);let ne=te,re=h&&h.laeuft!==`–`?h.laeuft:p?`unbekannt`:`–`,v;t[5]!==f||t[6]!==re?(v=f?(0,T.jsx)(O,{}):(0,T.jsx)(T.Fragment,{children:re}),t[5]=f,t[6]=re,t[7]=v):v=t[7];let b=v,ie;t[8]!==p||t[9]!==f||t[10]!==g?(ie=f?(0,T.jsx)(O,{breit:`w-20`}):g?(0,T.jsx)(`span`,{className:`text-cyan`,children:g}):p?(0,T.jsx)(`span`,{className:`text-bernstein`,children:`nicht geprüft`}):(0,T.jsx)(`span`,{className:`text-text-3`,children:`–`}),t[8]=p,t[9]=f,t[10]=g,t[11]=ie):ie=t[11];let S=ie,w;if(f){let e;t[12]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,T.jsx)(`span`,{className:`text-text-3`,children:`Wird geprüft …`}),t[12]=e):e=t[12],w=e}else if(p&&!a){let e;t[13]===p?e=t[14]:(e=x(p),t[13]=p,t[14]=e);let n;t[15]===e?n=t[16]:(n=(0,T.jsx)(`span`,{className:`text-bernstein`,children:e}),t[15]=e,t[16]=n),w=n}else if(!a)w=`Aktuell.`;else{let e;t[17]===p?e=t[18]:(e=p&&(0,T.jsx)(`span`,{className:`text-bernstein`,children:x(p)}),t[17]=p,t[18]=e);let r;t[19]===d?r=t[20]:(r=d&&(0,T.jsx)(se,{d}),t[19]=d,t[20]=r);let i;t[21]!==d||t[22]!==n||t[23]!==ne?(i=n===`os`?(0,T.jsxs)(T.Fragment,{children:[(0,T.jsx)(`span`,{children:d?.count?`${d.count} ${d.count===1?`Paket`:`Pakete`} aus Ubuntu.`:`Neue Pakete aus Ubuntu.`}),d&&(0,T.jsx)(oe,{d})]}):ne?(0,T.jsx)(ae,{text:ne}):null,t[21]=d,t[22]=n,t[23]=ne,t[24]=i):i=t[24];let a;t[25]!==e||t[26]!==r||t[27]!==i?(a=(0,T.jsxs)(`div`,{className:`flex flex-col items-start gap-2`,children:[e,r,i]}),t[25]=e,t[26]=r,t[27]=i,t[28]=a):a=t[28],w=a}let E=f||void 0,D;t[29]===r?D=t[30]:(D=(0,T.jsx)(`span`,{role:`rowheader`,className:`text-[15px] font-semibold`,children:r}),t[29]=r,t[30]=D);let k;t[31]!==p||t[32]!==f||t[33]!==g||t[34]!==S?(k=!f&&(g||p)&&(0,T.jsxs)(T.Fragment,{children:[` `,g?`→`:`·`,` `,S]}),t[31]=p,t[32]=f,t[33]=g,t[34]=S,t[35]=k):k=t[35];let A;t[36]!==b||t[37]!==k?(A=(0,T.jsxs)(`span`,{role:`cell`,className:`ziffern -mt-1 text-sm text-text-2 md:hidden`,children:[b,k]}),t[36]=b,t[37]=k,t[38]=A):A=t[38];let j;t[39]===b?j=t[40]:(j=(0,T.jsx)(`span`,{role:`cell`,className:`ziffern hidden text-sm text-text-2 md:block`,children:b}),t[39]=b,t[40]=j);let M;t[41]===S?M=t[42]:(M=(0,T.jsx)(`span`,{role:`cell`,className:`ziffern hidden text-sm md:block`,children:S}),t[41]=S,t[42]=M);let N;t[43]!==s||t[44]!==r?(N=s&&(0,T.jsxs)(`span`,{className:`mb-1.5 block text-bernstein`,children:[`Festgehalten seit `,s.seit,` auf `,s.version,`: `,s.grund,`. Der Sonntags-Lauf überspringt `,r,`.`]}),t[43]=s,t[44]=r,t[45]=N):N=t[45];let P;t[46]!==N||t[47]!==w?(P=(0,T.jsxs)(`div`,{role:`cell`,className:`text-sm leading-relaxed text-text-2`,children:[N,w]}),t[46]=N,t[47]=w,t[48]=P):P=t[48];let F;t[49]!==s||t[50]!==c||t[51]!==a||t[52]!==u||t[53]!==l?(F=(s||a)&&(0,T.jsxs)(`span`,{role:`cell`,className:`flex flex-wrap gap-2 md:flex-col md:items-end`,children:[s&&(0,T.jsx)(_,{variant:`outline`,size:`sm`,onClick:u,children:`Freigeben`}),a&&(0,T.jsx)(_,{variant:`outline`,size:`sm`,onClick:l,disabled:c,children:`Aktualisieren`})]}),t[49]=s,t[50]=c,t[51]=a,t[52]=u,t[53]=l,t[54]=F):F=t[54];let I;return t[55]!==j||t[56]!==M||t[57]!==P||t[58]!==F||t[59]!==E||t[60]!==D||t[61]!==A?(I=(0,T.jsxs)(`div`,{role:`row`,"aria-busy":E,className:`grid grid-cols-1 gap-x-4 gap-y-2 border-t border-linie py-3.5 md:grid-cols-[170px_100px_170px_minmax(0,1fr)_auto] md:items-start`,children:[D,A,j,M,P,F]}),t[55]=j,t[56]=M,t[57]=P,t[58]=F,t[59]=E,t[60]=D,t[61]=A,t[62]=I):I=t[62],I}var M={rot:`rot`,gelb:`bernstein`,gruen:`gruen`,info:`cyan`,grau:`grau`},N={rot:`bg-rot`,gelb:`bg-bernstein`,gruen:`bg-gruen`,info:`bg-cyan`,grau:`bg-text-3`};function P(e){let t=(0,C.c)(19),{lauf:n}=e,r;t[0]===n.start?r=t[1]:(r=p(n.start),t[0]=n.start,t[1]=r);let i;t[2]===r?i=t[3]:(i=(0,T.jsx)(`span`,{className:`ziffern col-start-1 row-start-1 text-sm text-text-3`,children:r}),t[2]=r,t[3]=i);let a;t[4]===n.anlass?a=t[5]:(a=(0,T.jsx)(`span`,{className:`col-span-2 row-start-2 min-w-0 text-[15px] break-words @sm:col-span-1 @sm:col-start-2 @sm:row-start-1`,children:n.anlass}),t[4]=n.anlass,t[5]=a);let o=M[n.stufe],s;t[6]!==n.titel||t[7]!==o?(s=(0,T.jsx)(`span`,{className:`col-start-2 row-start-1 justify-self-end @sm:col-start-3`,children:(0,T.jsx)(m,{art:o,children:n.titel})}),t[6]=n.titel,t[7]=o,t[8]=s):s=t[8];let c;t[9]!==i||t[10]!==a||t[11]!==s?(c=(0,T.jsxs)(`div`,{className:`grid grid-cols-[minmax(0,1fr)_auto] items-center gap-x-3 gap-y-1 @sm:grid-cols-[112px_minmax(0,1fr)_auto]`,children:[i,a,s]}),t[9]=i,t[10]=a,t[11]=s,t[12]=c):c=t[12];let l;t[13]!==n.stufe||t[14]!==n.zeilen?(l=n.stufe!==`grau`&&n.zeilen.length>0&&(0,T.jsx)(`ul`,{className:`m-0 flex list-none flex-col gap-1 p-0 @sm:pl-[124px]`,children:n.zeilen.map(F)}),t[13]=n.stufe,t[14]=n.zeilen,t[15]=l):l=t[15];let u;return t[16]!==c||t[17]!==l?(u=(0,T.jsxs)(`li`,{className:`flex flex-col gap-2 border-t border-linie py-3`,children:[c,l]}),t[16]=c,t[17]=l,t[18]=u):u=t[18],u}function F(e){return(0,T.jsxs)(`li`,{className:`flex items-baseline gap-2 text-sm leading-snug text-text-2`,children:[(0,T.jsx)(`span`,{"aria-hidden":!0,className:i(`size-1.5 shrink-0 -translate-y-px rounded-full`,N[e.stufe])}),(0,T.jsxs)(`span`,{className:`min-w-0 break-words`,children:[(0,T.jsx)(`span`,{className:`text-foreground`,children:e.baustein}),` · `,e.text]})]},`${e.baustein}-${e.text}`)}function I(e){return e.mtime?p(new Date(e.mtime*1e3).toISOString()):e.snapshot}function le(){let e=(0,C.c)(126),t=l(),n=re(!0).data?.update_fenster,r=te(),i=ee(),a=c(),p=o(),m=u(),h=ne(),y=d(),[b,x]=(0,w.useState)(null),O;e[0]===t.data?.updates.bausteine?O=e[1]:(O=new Map((t.data?.updates.bausteine??[]).map(he)),e[0]=t.data?.updates.bausteine,e[1]=O);let ae=O,oe=new Map((t.data?.updates.festgehalten??[]).map(me)),k;e[2]===Symbol.for(`react.memo_cache_sentinel`)?(k=E.map(pe),e[2]=k):k=e[2];let A=f(k),se;e[3]!==A||e[4]!==ae?(se=(e,t)=>ie(e.id,A[t].data)??ae.has(e.id),e[3]=A,e[4]=ae,e[5]=se):se=e[5];let ce=E.map(se),M;e[6]===r.data?.jobs?M=e[7]:(M=r.data?.jobs??[],e[6]=r.data?.jobs,e[7]=M);let N=M,P;e[8]!==N||e[9]!==t.data?.zustand?(P=N.some(fe)||(t.data?.zustand.update_laeuft??!1),e[8]=N,e[9]=t.data?.zustand,e[10]=P):P=e[10];let F=P,le;e[11]===N?le=e[12]:(le=N.some(de),e[11]=N,e[12]=le);let ge=le,L=F||p.isPending,R=a.data?.available??!1,z;if(t.isPending){let t;e[13]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,T.jsx)(s,{text:`Updates werden gelesen …`}),e[13]=t):t=e[13],z=t}else if(t.isError&&!t.data){let n=`Die Box antwortet nicht: ${t.error.message}`,r;e[14]===n?r=e[15]:(r=(0,T.jsx)(s,{fehler:!0,text:n}),e[14]=n,e[15]=r),z=r}else{let t;e[16]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,T.jsxs)(`div`,{role:`row`,className:`schild hidden grid-cols-[170px_100px_170px_minmax(0,1fr)_auto] gap-x-4 pb-2 text-xs font-semibold text-text-3 md:grid`,children:[(0,T.jsx)(`span`,{role:`columnheader`,children:`Baustein`}),(0,T.jsx)(`span`,{role:`columnheader`,children:`Läuft`}),(0,T.jsx)(`span`,{role:`columnheader`,children:`Neu`}),(0,T.jsx)(`span`,{role:`columnheader`,children:`Was sich ändert`}),(0,T.jsx)(`span`,{role:`columnheader`,className:`sr-only`,children:`Aktion`})]}),e[16]=t):t=e[16],z=(0,T.jsxs)(`div`,{role:`table`,"aria-label":`Bausteine und ihre Updates`,className:`flex flex-col`,children:[t,E.map((e,t)=>(0,T.jsx)(j,{id:e.id,name:e.name,details:A[t],hatUpdate:ce[t],neuLautStart:ae.get(e.id),fest:oe.get(e.id),gesperrt:L,onStart:()=>x({art:`einzeln`,id:e.id,name:e.name}),onFreigeben:()=>{let t=oe.get(e.id);t&&x({art:`freigeben`,id:e.id,name:e.name,grund:t.grund})}},e.id))]})}let B;if(i.isPending){let t;e[17]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,T.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Wird gelesen …`}),e[17]=t):t=e[17],B=t}else if(i.isError&&!i.data){let t;e[18]===i.error.message?t=e[19]:(t=(0,T.jsxs)(`p`,{role:`alert`,className:`text-[15px] text-rot-text`,children:[`Der Verlauf lässt sich gerade nicht lesen: `,i.error.message]}),e[18]=i.error.message,e[19]=t),B=t}else if(i.data?.laeufe.length){let t;e[21]===i.data.laeufe?t=e[22]:(t=i.data.laeufe.map(ue),e[21]=i.data.laeufe,e[22]=t);let n;e[23]===t?n=e[24]:(n=(0,T.jsx)(`ol`,{className:`@container m-0 flex list-none flex-col p-0`,children:t}),e[23]=t,e[24]=n),B=n}else{let t;e[20]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,T.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Noch keine Update-Läufe aufgezeichnet.`}),e[20]=t):t=e[20],B=t}let V;if(a.isPending){let t;e[25]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,T.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Wird gelesen …`}),e[25]=t):t=e[25],V=t}else if(a.isError&&!a.data){let t;e[26]===a.error.message?t=e[27]:(t=(0,T.jsxs)(`p`,{role:`alert`,className:`text-[15px] text-rot-text`,children:[`Die Sicherungen lassen sich gerade nicht lesen: `,a.error.message]}),e[26]=a.error.message,e[27]=t),V=t}else if(a.data?.backups.length){let t;if(e[29]!==a.data.backups||e[30]!==y.isPending||e[31]!==R){let n;e[33]!==y.isPending||e[34]!==R?(n=e=>(0,T.jsxs)(`li`,{className:`flex items-center justify-between gap-3 border-t border-linie py-2.5`,children:[(0,T.jsx)(`span`,{className:`ziffern text-sm`,children:I(e)}),(0,T.jsxs)(`span`,{className:`flex items-center gap-3`,children:[(0,T.jsxs)(`span`,{className:`ziffern text-xs text-text-3`,children:[e.size_mb.toLocaleString(`de-DE`),` MB`]}),(0,T.jsx)(_,{variant:`ghost`,size:`sm`,disabled:!R||y.isPending,onClick:()=>x({art:`zurueck`,datei:e.file,zeit:I(e)}),children:`Zurückspielen`})]})]},e.file),e[33]=y.isPending,e[34]=R,e[35]=n):n=e[35],t=a.data.backups.slice(0,5).map(n),e[29]=a.data.backups,e[30]=y.isPending,e[31]=R,e[32]=t}else t=e[32];let n;e[36]===t?n=e[37]:(n=(0,T.jsx)(`ul`,{className:`m-0 flex list-none flex-col p-0`,children:t}),e[36]=t,e[37]=n),V=n}else{let t;e[28]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,T.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Noch keine Sicherung vorhanden.`}),e[28]=t):t=e[28],V=t}let _e=g,H;e[38]===p?H=e[39]:(H=()=>p.mutate(`pruefen`),e[38]=p,e[39]=H);let ve=p.isPending||ge,ye=ge?`Sucht …`:`Nach Neuem suchen`,U;e[40]!==ye||e[41]!==H||e[42]!==ve?(U=(0,T.jsx)(_,{variant:`outline`,onClick:H,disabled:ve,children:ye}),e[40]=ye,e[41]=H,e[42]=ve,e[43]=U):U=e[43];let be=_,W;e[44]===Symbol.for(`react.memo_cache_sentinel`)?(W=()=>x({art:`alle`}),e[44]=W):W=e[44];let xe=L||!ce.some(Boolean),G;e[45]!==be||e[46]!==W||e[47]!==xe?(G=(0,T.jsx)(be,{onClick:W,disabled:xe,children:`Alles jetzt aktualisieren`}),e[45]=be,e[46]=W,e[47]=xe,e[48]=G):G=e[48];let K;e[49]!==U||e[50]!==G?(K=(0,T.jsxs)(`div`,{className:`flex flex-wrap gap-2.5`,children:[U,G]}),e[49]=U,e[50]=G,e[51]=K):K=e[51];let Se=n?`Jeden ${n.tag_name} um ${n.uhrzeit} automatisch.`:`Einmal pro Woche automatisch.`,q;e[52]===Se?q=e[53]:(q=(0,T.jsxs)(`p`,{className:`-mt-2 text-[15px] text-text-2`,children:[Se,` Vorher wird gesichert, danach geprüft.`]}),e[52]=Se,e[53]=q);let J;e[54]===F?J=e[55]:(J=F&&(0,T.jsx)(`p`,{role:`status`,className:`text-[15px] text-cyan`,children:`Gerade läuft ein Update. Weitere lassen sich erst starten, wenn es fertig ist.`}),e[54]=F,e[55]=J);let Ce;e[56]===Symbol.for(`react.memo_cache_sentinel`)?(Ce=(0,T.jsx)(S,{}),e[56]=Ce):Ce=e[56];let Y;e[57]!==_e||e[58]!==K||e[59]!==q||e[60]!==J||e[61]!==z?(Y=(0,T.jsxs)(_e,{titel:`Updates`,rechts:K,children:[q,J,z,Ce]}),e[57]=_e,e[58]=K,e[59]=q,e[60]=J,e[61]=z,e[62]=Y):Y=e[62];let X;e[63]===B?X=e[64]:(X=(0,T.jsx)(g,{titel:`Verlauf`,children:B}),e[63]=B,e[64]=X);let Z;e[65]===h?Z=e[66]:(Z=()=>h.mutate(void 0),e[65]=h,e[66]=Z);let we=h.isPending?`Sichert …`:`Jetzt sichern`,Q;e[67]!==h.isPending||e[68]!==Z||e[69]!==we?(Q=(0,T.jsx)(_,{variant:`outline`,size:`sm`,onClick:Z,disabled:h.isPending,children:we}),e[67]=h.isPending,e[68]=Z,e[69]=we,e[70]=Q):Q=e[70];let Te;e[71]===Symbol.for(`react.memo_cache_sentinel`)?(Te=(0,T.jsx)(`p`,{className:`-mt-2 text-[15px] text-text-2`,children:`Täglich um 03:35, mit Kopie auf einem zweiten Gerät.`}),e[71]=Te):Te=e[71];let Ee;e[72]!==a.data||e[73]!==R?(Ee=a.data&&!R&&(0,T.jsx)(`p`,{className:`text-sm text-text-3`,children:`Zurückspielen geht nur auf der Box selbst.`}),e[72]=a.data,e[73]=R,e[74]=Ee):Ee=e[74];let De;e[75]!==V||e[76]!==Q||e[77]!==Ee?(De=(0,T.jsxs)(g,{titel:`Sicherungen`,rechts:Q,children:[Te,Ee,V]}),e[75]=V,e[76]=Q,e[77]=Ee,e[78]=De):De=e[78];let Oe;e[79]!==X||e[80]!==De?(Oe=(0,T.jsxs)(`div`,{className:`grid gap-5 md:gap-6 lg:grid-cols-[minmax(0,1.4fr)_minmax(0,1fr)]`,children:[X,De]}),e[79]=X,e[80]=De,e[81]=Oe):Oe=e[81];let ke=b?.art===`alle`,Ae;e[82]===Symbol.for(`react.memo_cache_sentinel`)?(Ae=()=>x(null),e[82]=Ae):Ae=e[82];let je;e[83]!==b?.art||e[84]!==p?(je=()=>{b?.art===`alle`&&p.mutate(`alle`),x(null)},e[83]=b?.art,e[84]=p,e[85]=je):je=e[85];let Me;e[86]!==L||e[87]!==ke||e[88]!==je?(Me=(0,T.jsx)(v,{offen:ke,titel:`Alles jetzt aktualisieren?`,text:`Motor, llama-swap, Hermes und Betriebssystem werden nacheinander aktualisiert, soweit es Neues gibt, und danach geprüft. Motor und llama-swap holen bei Problemen ihren alten Stand von selbst zurück, vor Hermes wird gesichert. Lucy ist dabei ein paar Minuten nicht erreichbar.`,knopf:`Aktualisieren`,gesperrt:L,onNein:Ae,onJa:je}),e[86]=L,e[87]=ke,e[88]=je,e[89]=Me):Me=e[89];let Ne=b?.art===`einzeln`,Pe=b?.art===`einzeln`?`${b.name} aktualisieren?`:``,Fe=b?.art===`einzeln`?D[b.id]??``:``,Ie;e[90]===Symbol.for(`react.memo_cache_sentinel`)?(Ie=()=>x(null),e[90]=Ie):Ie=e[90];let Le;e[91]!==b||e[92]!==p?(Le=()=>{b?.art===`einzeln`&&p.mutate(b.id),x(null)},e[91]=b,e[92]=p,e[93]=Le):Le=e[93];let $;e[94]!==L||e[95]!==Ne||e[96]!==Pe||e[97]!==Fe||e[98]!==Le?($=(0,T.jsx)(v,{offen:Ne,titel:Pe,text:Fe,knopf:`Aktualisieren`,gesperrt:L,onNein:Ie,onJa:Le}),e[94]=L,e[95]=Ne,e[96]=Pe,e[97]=Fe,e[98]=Le,e[99]=$):$=e[99];let Re=b?.art===`freigeben`,ze=b?.art===`freigeben`?`${b.name} freigeben?`:``,Be=b?.art===`freigeben`?`Festgehalten wurde ${b.name}, weil: ${b.grund}. Nach dem Freigeben versucht der nächste Sonntags-Lauf das Update wieder.`:``,Ve;e[100]===Symbol.for(`react.memo_cache_sentinel`)?(Ve=()=>x(null),e[100]=Ve):Ve=e[100];let He;e[101]!==b||e[102]!==m?(He=()=>{b?.art===`freigeben`&&m.mutate(b.id),x(null)},e[101]=b,e[102]=m,e[103]=He):He=e[103];let Ue;e[104]!==m.isPending||e[105]!==Re||e[106]!==ze||e[107]!==Be||e[108]!==He?(Ue=(0,T.jsx)(v,{offen:Re,titel:ze,text:Be,knopf:`Freigeben`,gesperrt:m.isPending,onNein:Ve,onJa:He}),e[104]=m.isPending,e[105]=Re,e[106]=ze,e[107]=Be,e[108]=He,e[109]=Ue):Ue=e[109];let We=b?.art===`zurueck`,Ge=`Die Einstellungen von Hermes und llama-swap werden auf den Stand von ${b?.art===`zurueck`?b.zeit:``} gesetzt. Vorher wird der jetzige Stand gesichert. Die Dienste starten danach neu.`,Ke;e[110]===Symbol.for(`react.memo_cache_sentinel`)?(Ke=()=>x(null),e[110]=Ke):Ke=e[110];let qe;e[111]!==b||e[112]!==y?(qe=()=>{b?.art===`zurueck`&&y.mutate(b.datei),x(null)},e[111]=b,e[112]=y,e[113]=qe):qe=e[113];let Je;e[114]!==We||e[115]!==Ge||e[116]!==qe||e[117]!==y.isPending?(Je=(0,T.jsx)(v,{offen:We,gefahr:!0,titel:`Sicherung zurückspielen?`,text:Ge,knopf:`Zurückspielen`,gesperrt:y.isPending,onNein:Ke,onJa:qe}),e[114]=We,e[115]=Ge,e[116]=qe,e[117]=y.isPending,e[118]=Je):Je=e[118];let Ye;return e[119]!==Y||e[120]!==Oe||e[121]!==Me||e[122]!==$||e[123]!==Ue||e[124]!==Je?(Ye=(0,T.jsxs)(T.Fragment,{children:[Y,Oe,Me,$,Ue,Je]}),e[119]=Y,e[120]=Oe,e[121]=Me,e[122]=$,e[123]=Ue,e[124]=Je,e[125]=Ye):Ye=e[125],Ye}function ue(e){return(0,T.jsx)(P,{lauf:e},e.start)}function de(e){return b(e)&&h(e)}function fe(e){return e.group===`maintenance`&&h(e)}function pe(e){return e.id}function me(e){return[e.baustein,e]}function he(e){return[e.id,e.neu]}export{le as UpdatesSeite}; \ No newline at end of file diff --git a/frontend/dist/assets/breite-pBrnu3_s.js b/frontend/dist/assets/breite-k-QN6GPl.js similarity index 76% rename from frontend/dist/assets/breite-pBrnu3_s.js rename to frontend/dist/assets/breite-k-QN6GPl.js index 63867f0..985aac0 100644 --- a/frontend/dist/assets/breite-pBrnu3_s.js +++ b/frontend/dist/assets/breite-k-QN6GPl.js @@ -1 +1 @@ -import{i as e,n as t,s as n}from"./dist-D4CVSex9.js";var r=t(),i=n(e(),1);function a(e){let t=(0,r.c)(4),n=e===void 0?640:e,a=(0,i.useRef)(null),[o,s]=(0,i.useState)(n),c,l;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(c=()=>{let e=a.current;if(!e||typeof ResizeObserver>`u`)return;let t=new ResizeObserver(e=>{let[t]=e;return s(Math.max(240,Math.round(t.contentRect.width)))});return t.observe(e),()=>t.disconnect()},l=[],t[0]=c,t[1]=l):(c=t[0],l=t[1]),(0,i.useEffect)(c,l);let u;return t[2]===o?u=t[3]:(u=[a,o],t[2]=o,t[3]=u),u}export{a as t}; \ No newline at end of file +import{a as e,c as t,r as n}from"./dist-aE7UmubC.js";var r=n(),i=t(e(),1);function a(e){let t=(0,r.c)(4),n=e===void 0?640:e,a=(0,i.useRef)(null),[o,s]=(0,i.useState)(n),c,l;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(c=()=>{let e=a.current;if(!e||typeof ResizeObserver>`u`)return;let t=new ResizeObserver(e=>{let[t]=e;return s(Math.max(240,Math.round(t.contentRect.width)))});return t.observe(e),()=>t.disconnect()},l=[],t[0]=c,t[1]=l):(c=t[0],l=t[1]),(0,i.useEffect)(c,l);let u;return t[2]===o?u=t[3]:(u=[a,o],t[2]=o,t[3]=u),u}export{a as t}; \ No newline at end of file diff --git a/frontend/dist/assets/button-D8rvET0Z.js b/frontend/dist/assets/button-D8rvET0Z.js deleted file mode 100644 index 38e56c0..0000000 --- a/frontend/dist/assets/button-D8rvET0Z.js +++ /dev/null @@ -1 +0,0 @@ -import{i as e,n as t,r as n,s as r,t as i}from"./dist-D4CVSex9.js";var a=r(e(),1),o=Object.defineProperty,s=(e,t)=>o(e,`name`,{value:t,configurable:!0});function c(e,t){if(typeof e==`function`)return e(t);e!=null&&(e.current=t)}s(c,`setRef`);function l(...e){return t=>{let n=!1,r=e.map(e=>{let r=c(e,t);return!n&&typeof r==`function`&&(n=!0),r});if(n)return()=>{for(let t=0;td(e,`name`,{value:t,configurable:!0});function p(e){let t=a.forwardRef((t,n)=>{let{children:r,...i}=t,o=null,s=!1,c=[];S(r)&&typeof E==`function`&&(r=E(r._payload)),a.Children.forEach(r,e=>{if(b(e)){s=!0;let t=e,n=`child`in t.props?t.props.child:t.props.children;S(n)&&typeof E==`function`&&(n=E(n._payload)),o=_(t,n),c.push(o?.props?.children)}else c.push(e)}),o?o=a.cloneElement(o,void 0,c):!s&&a.Children.count(r)===1&&a.isValidElement(r)&&(o=r);let l=o?y(o):void 0,d=u(n,l);if(!o){if(r||r===0)throw Error(s?T(e):w(e));return r}let f=v(i,o.props??{});return o.type!==a.Fragment&&(f.ref=n?d:l),a.cloneElement(o,f)});return t.displayName=`${e}.Slot`,t}f(p,`createSlot`);var m=p(`Slot`),h=Symbol.for(`radix.slottable`);function g(e){let t=f(e=>`child`in e?e.children(e.child):e.children,`Slottable`);return t.displayName=`${e}.Slottable`,t.__radixId=h,t}f(g,`createSlottable`);var _=f((e,t)=>{if(`child`in e.props){let t=e.props.child;return a.isValidElement(t)?a.cloneElement(t,void 0,e.props.children(t.props.children)):null}return a.isValidElement(t)?t:null},`getSlottableElementFromSlottable`);function v(e,t){let n={...t};for(let r in t){let i=e[r],a=t[r];/^on[A-Z]/.test(r)?i&&a?n[r]=(...e)=>{let t=a(...e);return i(...e),t}:i&&(n[r]=i):r===`style`?n[r]={...i,...a}:r===`className`&&(n[r]=[i,a].filter(Boolean).join(` `))}return{...e,...n}}f(v,`mergeProps`);function y(e){let t=Object.getOwnPropertyDescriptor(e.props,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}f(y,`getElementRef`);function b(e){return a.isValidElement(e)&&typeof e.type==`function`&&`__radixId`in e.type&&e.type.__radixId===h}f(b,`isSlottable`);var x=Symbol.for(`react.lazy`);function S(e){return typeof e==`object`&&!!e&&`$$typeof`in e&&e.$$typeof===x&&`_payload`in e&&C(e._payload)}f(S,`isLazyComponent`);function C(e){return typeof e==`object`&&!!e&&`then`in e}f(C,`isPromiseLike`);var w=f(e=>`${e} failed to slot onto its children. Expected a single React element child or \`Slottable\`.`,`createSlotError`),T=f(e=>`${e} failed to slot onto its \`Slottable\`. Expected \`Slottable\` to receive a single React element child.`,`createSlottableError`),E=a.use,D=t();function O(e){var t,n,r=``;if(typeof e==`string`||typeof e==`number`)r+=e;else if(typeof e==`object`){if(Array.isArray(e)){var i=e.length;for(t=0;ttypeof e==`boolean`?`${e}`:e===0?`0`:e,j=k,M=(e,t)=>n=>{if(t?.variants==null)return j(e,n?.class,n?.className);let{variants:r,defaultVariants:i}=t,a=Object.keys(r).map(e=>{let t=n?.[e],a=i?.[e];if(t===null)return null;let o=A(t)||A(a);return r[e][o]}),o=n&&Object.entries(n).reduce((e,t)=>{let[n,r]=t;return r===void 0||(e[n]=r),e},{});return j(e,a,t?.compoundVariants?.reduce((e,t)=>{let{class:n,className:r,...a}=t;return Object.entries(a).every(e=>{let[t,n]=e;return Array.isArray(n)?n.includes({...i,...o}[t]):{...i,...o}[t]===n})?[...e,n,r]:e},[]),n?.class,n?.className)},N=n(),P=M(`group/button inline-flex shrink-0 items-center justify-center gap-2 rounded-lg border border-transparent font-anzeige font-semibold uppercase tracking-[0.12em] whitespace-nowrap transition-colors outline-none select-none focus-visible:ring-3 focus-visible:ring-ring/50 active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-45 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4`,{variants:{variant:{default:`bg-bernstein text-primary-foreground hover:bg-bernstein-hell`,outline:`border-linie-stark bg-erhaben text-foreground hover:border-text-3 hover:bg-[#232931]`,info:`border-cyan-rand bg-transparent text-cyan hover:bg-cyan-grund`,gefahr:`border-rot-rand bg-rot-grund text-rot-text hover:bg-[#3a1512]`,ghost:`text-text-2 hover:bg-erhaben hover:text-foreground`,link:`px-0 text-cyan normal-case tracking-normal underline-offset-4 hover:underline`},size:{default:`h-11 px-5 text-[15px]`,sm:`h-10 px-4 text-sm`,lg:`h-12 px-6 text-base`,icon:`size-11`,"icon-sm":`size-11`}},defaultVariants:{variant:`default`,size:`default`}});function F(e){let t=(0,D.c)(16),n,r,a,o,s;t[0]===e?(n=t[1],r=t[2],a=t[3],o=t[4],s=t[5]):({className:n,variant:a,size:o,asChild:s,...r}=e,t[0]=e,t[1]=n,t[2]=r,t[3]=a,t[4]=o,t[5]=s);let c=a===void 0?`default`:a,l=o===void 0?`default`:o,u=s!==void 0&&s?m:`button`,d;t[6]!==n||t[7]!==l||t[8]!==c?(d=i(P({variant:c,size:l,className:n})),t[6]=n,t[7]=l,t[8]=c,t[9]=d):d=t[9];let f;return t[10]!==u||t[11]!==r||t[12]!==l||t[13]!==d||t[14]!==c?(f=(0,N.jsx)(u,{"data-slot":`button`,"data-variant":c,"data-size":l,className:d,...r}),t[10]=u,t[11]=r,t[12]=l,t[13]=d,t[14]=c,t[15]=f):f=t[15],f}export{p as n,u as r,F as t}; \ No newline at end of file diff --git a/frontend/dist/assets/button-DwYvdWVr.js b/frontend/dist/assets/button-DwYvdWVr.js new file mode 100644 index 0000000..126654e --- /dev/null +++ b/frontend/dist/assets/button-DwYvdWVr.js @@ -0,0 +1 @@ +import{a as e,c as t,i as n,r,t as i}from"./dist-aE7UmubC.js";var a=t(e(),1),o=Object.defineProperty,s=(e,t)=>o(e,`name`,{value:t,configurable:!0});function c(e,t){if(typeof e==`function`)return e(t);e!=null&&(e.current=t)}s(c,`setRef`);function l(...e){return t=>{let n=!1,r=e.map(e=>{let r=c(e,t);return!n&&typeof r==`function`&&(n=!0),r});if(n)return()=>{for(let t=0;td(e,`name`,{value:t,configurable:!0});function p(e){let t=a.forwardRef((t,n)=>{let{children:r,...i}=t,o=null,s=!1,c=[];S(r)&&typeof E==`function`&&(r=E(r._payload)),a.Children.forEach(r,e=>{if(b(e)){s=!0;let t=e,n=`child`in t.props?t.props.child:t.props.children;S(n)&&typeof E==`function`&&(n=E(n._payload)),o=_(t,n),c.push(o?.props?.children)}else c.push(e)}),o?o=a.cloneElement(o,void 0,c):!s&&a.Children.count(r)===1&&a.isValidElement(r)&&(o=r);let l=o?y(o):void 0,d=u(n,l);if(!o){if(r||r===0)throw Error(s?T(e):w(e));return r}let f=v(i,o.props??{});return o.type!==a.Fragment&&(f.ref=n?d:l),a.cloneElement(o,f)});return t.displayName=`${e}.Slot`,t}f(p,`createSlot`);var m=p(`Slot`),h=Symbol.for(`radix.slottable`);function g(e){let t=f(e=>`child`in e?e.children(e.child):e.children,`Slottable`);return t.displayName=`${e}.Slottable`,t.__radixId=h,t}f(g,`createSlottable`);var _=f((e,t)=>{if(`child`in e.props){let t=e.props.child;return a.isValidElement(t)?a.cloneElement(t,void 0,e.props.children(t.props.children)):null}return a.isValidElement(t)?t:null},`getSlottableElementFromSlottable`);function v(e,t){let n={...t};for(let r in t){let i=e[r],a=t[r];/^on[A-Z]/.test(r)?i&&a?n[r]=(...e)=>{let t=a(...e);return i(...e),t}:i&&(n[r]=i):r===`style`?n[r]={...i,...a}:r===`className`&&(n[r]=[i,a].filter(Boolean).join(` `))}return{...e,...n}}f(v,`mergeProps`);function y(e){let t=Object.getOwnPropertyDescriptor(e.props,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}f(y,`getElementRef`);function b(e){return a.isValidElement(e)&&typeof e.type==`function`&&`__radixId`in e.type&&e.type.__radixId===h}f(b,`isSlottable`);var x=Symbol.for(`react.lazy`);function S(e){return typeof e==`object`&&!!e&&`$$typeof`in e&&e.$$typeof===x&&`_payload`in e&&C(e._payload)}f(S,`isLazyComponent`);function C(e){return typeof e==`object`&&!!e&&`then`in e}f(C,`isPromiseLike`);var w=f(e=>`${e} failed to slot onto its children. Expected a single React element child or \`Slottable\`.`,`createSlotError`),T=f(e=>`${e} failed to slot onto its \`Slottable\`. Expected \`Slottable\` to receive a single React element child.`,`createSlottableError`),E=a.use,D=r();function O(e){var t,n,r=``;if(typeof e==`string`||typeof e==`number`)r+=e;else if(typeof e==`object`){if(Array.isArray(e)){var i=e.length;for(t=0;ttypeof e==`boolean`?`${e}`:e===0?`0`:e,j=k,M=(e,t)=>n=>{if(t?.variants==null)return j(e,n?.class,n?.className);let{variants:r,defaultVariants:i}=t,a=Object.keys(r).map(e=>{let t=n?.[e],a=i?.[e];if(t===null)return null;let o=A(t)||A(a);return r[e][o]}),o=n&&Object.entries(n).reduce((e,t)=>{let[n,r]=t;return r===void 0||(e[n]=r),e},{});return j(e,a,t?.compoundVariants?.reduce((e,t)=>{let{class:n,className:r,...a}=t;return Object.entries(a).every(e=>{let[t,n]=e;return Array.isArray(n)?n.includes({...i,...o}[t]):{...i,...o}[t]===n})?[...e,n,r]:e},[]),n?.class,n?.className)},N=n(),P=M(`group/button inline-flex shrink-0 items-center justify-center gap-2 rounded-xl border border-transparent font-semibold tracking-[0.005em] whitespace-nowrap transition-[background-color,border-color,color,box-shadow,filter] outline-none select-none focus-visible:ring-3 focus-visible:ring-ring/50 active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-45 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4`,{variants:{variant:{default:`bg-gradient-to-b from-bernstein-hell to-bernstein text-primary-foreground shadow-[inset_0_1px_0_rgb(255_255_255/0.35),0_8px_22px_-10px_var(--bernstein)] hover:brightness-110`,outline:`border-white/12 bg-white/[0.04] text-foreground hover:border-white/20 hover:bg-white/[0.08]`,info:`border-cyan/35 bg-cyan/[0.08] text-cyan-text hover:bg-cyan/15`,gefahr:`border-rot/40 bg-rot/10 text-rot-text hover:bg-rot/[0.18]`,ghost:`text-text-2 hover:bg-white/[0.06] hover:text-foreground`,link:`px-0 text-cyan underline-offset-4 hover:underline`},size:{default:`h-11 px-5 text-[15px]`,sm:`h-10 px-4 text-[14px]`,lg:`h-12 px-6 text-[15.5px]`,icon:`size-11`,"icon-sm":`size-11`}},defaultVariants:{variant:`default`,size:`default`}});function F(e){let t=(0,D.c)(16),n,r,a,o,s;t[0]===e?(n=t[1],r=t[2],a=t[3],o=t[4],s=t[5]):({className:n,variant:a,size:o,asChild:s,...r}=e,t[0]=e,t[1]=n,t[2]=r,t[3]=a,t[4]=o,t[5]=s);let c=a===void 0?`default`:a,l=o===void 0?`default`:o,u=s!==void 0&&s?m:`button`,d;t[6]!==n||t[7]!==l||t[8]!==c?(d=i(P({variant:c,size:l,className:n})),t[6]=n,t[7]=l,t[8]=c,t[9]=d):d=t[9];let f;return t[10]!==u||t[11]!==r||t[12]!==l||t[13]!==d||t[14]!==c?(f=(0,N.jsx)(u,{"data-slot":`button`,"data-variant":c,"data-size":l,className:d,...r}),t[10]=u,t[11]=r,t[12]=l,t[13]=d,t[14]=c,t[15]=f):f=t[15],f}export{p as n,u as r,F as t}; \ No newline at end of file diff --git a/frontend/dist/assets/chevron-right-DF8ikrVh.js b/frontend/dist/assets/chevron-right-DF8ikrVh.js new file mode 100644 index 0000000..d7834ee --- /dev/null +++ b/frontend/dist/assets/chevron-right-DF8ikrVh.js @@ -0,0 +1 @@ +import{n as e}from"./dist-aE7UmubC.js";var t={name:`chevron-right`,size:24,node:[[`path`,{d:`m9 18 6-6-6-6`,key:`mthhwq`}]]};t.node;var n=e(t);export{n as t}; \ No newline at end of file diff --git a/frontend/dist/assets/chevron-right-lErM2U6o.js b/frontend/dist/assets/chevron-right-lErM2U6o.js deleted file mode 100644 index 0ea444f..0000000 --- a/frontend/dist/assets/chevron-right-lErM2U6o.js +++ /dev/null @@ -1 +0,0 @@ -import{cn as e}from"./index-CKWhFN2A.js";var t={name:`chevron-right`,size:24,node:[[`path`,{d:`m9 18 6-6-6-6`,key:`mthhwq`}]]};t.node;var n=e(t);export{n as t}; \ No newline at end of file diff --git a/frontend/dist/assets/dist-D4CVSex9.js b/frontend/dist/assets/dist-D4CVSex9.js deleted file mode 100644 index 4d551f0..0000000 --- a/frontend/dist/assets/dist-D4CVSex9.js +++ /dev/null @@ -1 +0,0 @@ -var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),s=(e,n)=>{let r={};for(var i in e)t(r,i,{get:e[i],enumerable:!0});return n||t(r,Symbol.toStringTag,{value:`Module`}),r},c=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;li[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},l=(n,r,o)=>(o=n==null?{}:e(i(n)),c(r||!n||!n.__esModule||!a.call(n,`default`)?t(o,`default`,{value:n,enumerable:!0}):o,n)),u=o((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.portal`),r=Symbol.for(`react.fragment`),i=Symbol.for(`react.strict_mode`),a=Symbol.for(`react.profiler`),o=Symbol.for(`react.consumer`),s=Symbol.for(`react.context`),c=Symbol.for(`react.forward_ref`),l=Symbol.for(`react.suspense`),u=Symbol.for(`react.memo`),d=Symbol.for(`react.lazy`),f=Symbol.for(`react.activity`),p=Symbol.for(`react.view_transition`),m=Symbol.iterator;function h(e){return typeof e!=`object`||!e?null:(e=m&&e[m]||e[`@@iterator`],typeof e==`function`?e:null)}var g={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},_=Object.assign,v={};function y(e,t,n){this.props=e,this.context=t,this.refs=v,this.updater=n||g}y.prototype.isReactComponent={},y.prototype.setState=function(e,t){if(typeof e!=`object`&&typeof e!=`function`&&e!=null)throw Error(`takes an object of state variables to update or a function which returns an object of state variables.`);this.updater.enqueueSetState(this,e,t,`setState`)},y.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,`forceUpdate`)};function b(){}b.prototype=y.prototype;function x(e,t,n){this.props=e,this.context=t,this.refs=v,this.updater=n||g}var S=x.prototype=new b;S.constructor=x,_(S,y.prototype),S.isPureReactComponent=!0;var C=Array.isArray;function w(){}var T={H:null,A:null,T:null,S:null},E=Object.prototype.hasOwnProperty;function D(e,n,r){var i=r.ref;return{$$typeof:t,type:e,key:n,ref:i===void 0?null:i,props:r}}function O(e,t){return D(e.type,t,e.props)}function k(e){return typeof e==`object`&&!!e&&e.$$typeof===t}function A(e){var t={"=":`=0`,":":`=2`};return`$`+e.replace(/[=:]/g,function(e){return t[e]})}var ee=/\/+/g;function j(e,t){return typeof e==`object`&&e&&e.key!=null?A(``+e.key):t.toString(36)}function M(e){switch(e.status){case`fulfilled`:return e.value;case`rejected`:throw e.reason;default:switch(typeof e.status==`string`?e.then(w,w):(e.status=`pending`,e.then(function(t){e.status===`pending`&&(e.status=`fulfilled`,e.value=t)},function(t){e.status===`pending`&&(e.status=`rejected`,e.reason=t)})),e.status){case`fulfilled`:return e.value;case`rejected`:throw e.reason}}throw e}function N(e,r,i,a,o){var s=typeof e;(s===`undefined`||s===`boolean`)&&(e=null);var c=!1;if(e===null)c=!0;else switch(s){case`bigint`:case`string`:case`number`:c=!0;break;case`object`:switch(e.$$typeof){case t:case n:c=!0;break;case d:return c=e._init,N(c(e._payload),r,i,a,o)}}if(c)return o=o(e),c=a===``?`.`+j(e,0):a,C(o)?(i=``,c!=null&&(i=c.replace(ee,`$&/`)+`/`),N(o,r,i,``,function(e){return e})):o!=null&&(k(o)&&(o=O(o,i+(o.key==null||e&&e.key===o.key?``:(``+o.key).replace(ee,`$&/`)+`/`)+c)),r.push(o)),1;c=0;var l=a===``?`.`:a+`:`;if(C(e))for(var u=0;u{t.exports=u()})),f=o((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.fragment`);function r(e,n,r){var i=null;if(r!==void 0&&(i=``+r),n.key!==void 0&&(i=``+n.key),`key`in n)for(var a in r={},n)a!==`key`&&(r[a]=n[a]);else r=n;return n=r.ref,{$$typeof:t,type:e,key:i,ref:n===void 0?null:n,props:r}}e.Fragment=n,e.jsx=r,e.jsxs=r})),p=o(((e,t)=>{t.exports=f()})),m=o((e=>{var t=d().__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;e.c=function(e){return t.H.useMemoCache(e)}})),h=o(((e,t)=>{t.exports=m()})),g=48,_=(e,t=0)=>{let n=new Int32Array(e.length);for(let r=0;r{let t=new Int32Array(e.length+1);for(let n=0;n{let t=new Int32Array(e.length),n=0;for(let r=0;r>>1^-(i&1),t[r]=n}return t},b=384,x=[],S=v(_(`E0500002005282000000002000150000020021820000011200000003022202000300004200120000200420001200021200301200010400162000010000220021010:2192001200220012000220012000200200200400010200040000000000400200108200110100000022010313000162002000020020012020080213000228200000000082000000000120002000120020020040101020300130001001010`)),C=v(_(`:11111111211111119311546544411119731869:671397415686432441111111111161114151214313433415:78311132233313187211117221449443411141111151152226611131111112212518142224214215421421542142424242516171151615616347111111111197911327451111111111111111111113134714133513411111311111111111111111111112444411111342312715245411117:3`)),w=`@containerabcdefghinlmoprstunderlineviawzccentlignnimatespectuto-colsrowsaglorightnessckdrop-sisbcontrastfiltergrayscalehue-rotateinvertopacityslurrightnessaturateepia-coniclinearpositionradialsizeockurrderttom-belrstxyespacing-xyaretoursorlnt-umnsendspantartainentrasteividerop-shadowurationcorationlay-xyasendillexontromlter-featuresstretchapr-xyayscaleidow-colsrowsue-rotatedentlinesetvert-beringsxyeshadoweiadingftnest-clamp-imageabein-lrstxyskx--b-coniclpositionrsizet-x-y-fromto-fromto-inearfromto-fromto-adialfromto-fromtofromtofromtofromtoblockhinlinew-screenesblockhinlinewbjectpacityrutlinederigin-offsetbelrstxyesrspective-originaceholderioghtng-offsettateundedw-xyz-belrstlreseslr-endspantartaturatecepiahizekewpace-taleroll-xyz-barmpbelrstxyesbelrstxyes-thumbrackadowrink-xyxyartrokeabextora-shadowpckingnsformitionlate-xyz-offsetill-changeoom`,T=(()=>{let e=S.length-1,t=new Int32Array(e);for(let n=e-1;n>=0;n--){let e=1,r=n+1;for(let i=S[n];iE?F@03263243255B:032523853:0325B:8GA032542HE?3257D>032585:0325B:;0328B:032`),k=_(`012113445661666666789111:5;;;;;;;;444;;;:62999<1161=62>>?61:21@ABCD4446996:64E:::;:?::64:F114GHHIHHHHIHH1HH1HH1HHHHHH::EEJ4444::EE4444441691;644444114244444:;K6666555555555555555999666664444444444444444444444226?6:66644L9M?D:111::::6DE199`),A=y(`020200202020020020020020020020200200200200200200200002020202001003040106000200200200200200200200200200200200200200200200200200200200200200200200200200200200020020020020020020002020200202002002002002002002002002002020002002020020200220200200200200200200200200200200020020020000200020002000200200200020020020002000200200200020020202002020202000200200020022000200200020020002002000200220002002000200W0Z00020020002002020002002000200g0j0002002000200200020020002002000200200020020002000200002000002002002002002000200020000200002002002002002002002020020020200200200200200200200200202020020020020020020020020002002002020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020002002002002002002000200200200200200200200200200020202020002000200020002002002002000020200200`),ee=(()=>{let e=new Int32Array(319).fill(-1),t=y(`02422242:222222242224222242442222222422222244442242226224222426222422442462222422622222222626222462242622422622422424242422222222422222222242422222222222222222622442224222222222222224424442262222222222222222222226224222424242422224422422422222`),n=y(`02222222222222222222202222222222222222222222221422222222222222222222222222222222222Y\\222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222221422222222222222222222222222222222222222Ŀł222222222222222222`);for(let r=0;r