gitextract_09leppsf/ ├── .all-contributorsrc ├── .codecov.yml ├── .devcontainer/ │ ├── Dockerfile │ ├── devcontainer.json │ └── setup.sh ├── .dockerignore ├── .editorconfig ├── .github/ │ ├── DISCUSSION_TEMPLATE/ │ │ ├── feature-requests.yml │ │ └── support.yml │ ├── FUNDING.yml │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.yml │ │ └── config.yml │ ├── PULL_REQUEST_TEMPLATE.md │ ├── dependabot.yml │ ├── release-drafter.yml │ └── workflows/ │ ├── crowdin.yml │ ├── docker-publish.yml │ ├── docs-publish.yml │ ├── pr-quality.yml │ ├── reaction-comments.yml │ ├── release-drafter.yml │ ├── repo-maintenance.yml │ └── test.yml ├── .gitignore ├── .pre-commit-config.yaml ├── .prettierrc.js ├── .python-version ├── .vscode/ │ ├── launch.json │ ├── settings.json │ └── tasks.json ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── Dockerfile ├── Dockerfile-tilt ├── LICENSE ├── README.md ├── crowdin.yml ├── docker-entrypoint.sh ├── docs/ │ ├── CNAME │ ├── configs/ │ │ ├── bookmarks.md │ │ ├── custom-css-js.md │ │ ├── docker.md │ │ ├── index.md │ │ ├── info-widgets.md │ │ ├── kubernetes.md │ │ ├── proxmox.md │ │ ├── services.md │ │ └── settings.md │ ├── index.md │ ├── installation/ │ │ ├── docker.md │ │ ├── index.md │ │ ├── k8s.md │ │ ├── source.md │ │ └── unraid.md │ ├── layouts/ │ │ └── custom.yml │ ├── more/ │ │ ├── coverage.md │ │ ├── homepage-move.md │ │ ├── index.md │ │ ├── sponsors.md │ │ └── translations.md │ ├── overrides/ │ │ └── main.html │ ├── stylesheets/ │ │ └── extra.css │ ├── troubleshooting/ │ │ └── index.md │ └── widgets/ │ ├── authoring/ │ │ ├── api.md │ │ ├── component.md │ │ ├── getting-started.md │ │ ├── index.md │ │ ├── metadata.md │ │ ├── proxies.md │ │ ├── translations.md │ │ └── tutorial.md │ ├── index.md │ ├── info/ │ │ ├── datetime.md │ │ ├── glances.md │ │ ├── greeting.md │ │ ├── index.md │ │ ├── kubernetes.md │ │ ├── logo.md │ │ ├── longhorn.md │ │ ├── openmeteo.md │ │ ├── openweathermap.md │ │ ├── resources.md │ │ ├── search.md │ │ ├── stocks.md │ │ └── unifi_controller.md │ └── services/ │ ├── adguard-home.md │ ├── apcups.md │ ├── arcane.md │ ├── argocd.md │ ├── atsumeru.md │ ├── audiobookshelf.md │ ├── authentik.md │ ├── autobrr.md │ ├── azuredevops.md │ ├── backrest.md │ ├── bazarr.md │ ├── beszel.md │ ├── booklore.md │ ├── caddy.md │ ├── calendar.md │ ├── calibre-web.md │ ├── changedetectionio.md │ ├── channelsdvrserver.md │ ├── checkmk.md │ ├── cloudflared.md │ ├── coin-market-cap.md │ ├── crowdsec.md │ ├── customapi.md │ ├── deluge.md │ ├── develancacheui.md │ ├── diskstation.md │ ├── dispatcharr.md │ ├── dockhand.md │ ├── downloadstation.md │ ├── emby.md │ ├── esphome.md │ ├── evcc.md │ ├── filebrowser.md │ ├── fileflows.md │ ├── firefly.md │ ├── flood.md │ ├── freshrss.md │ ├── frigate.md │ ├── fritzbox.md │ ├── gamedig.md │ ├── gatus.md │ ├── ghostfolio.md │ ├── gitea.md │ ├── gitlab.md │ ├── glances.md │ ├── gluetun.md │ ├── gotify.md │ ├── grafana.md │ ├── hdhomerun.md │ ├── headscale.md │ ├── healthchecks.md │ ├── homeassistant.md │ ├── homebox.md │ ├── homebridge.md │ ├── iframe.md │ ├── immich.md │ ├── index.md │ ├── jackett.md │ ├── jdownloader.md │ ├── jellyfin.md │ ├── jellystat.md │ ├── karakeep.md │ ├── kavita.md │ ├── komga.md │ ├── komodo.md │ ├── kopia.md │ ├── lidarr.md │ ├── linkwarden.md │ ├── lubelogger.md │ ├── mailcow.md │ ├── mastodon.md │ ├── mealie.md │ ├── medusa.md │ ├── mikrotik.md │ ├── minecraft.md │ ├── miniflux.md │ ├── mjpeg.md │ ├── moonraker.md │ ├── mylar.md │ ├── myspeed.md │ ├── navidrome.md │ ├── netalertx.md │ ├── netdata.md │ ├── nextcloud.md │ ├── nextdns.md │ ├── nginx-proxy-manager.md │ ├── nzbget.md │ ├── octoprint.md │ ├── omada.md │ ├── ombi.md │ ├── opendtu.md │ ├── openmediavault.md │ ├── openwrt.md │ ├── opnsense.md │ ├── pangolin.md │ ├── paperlessngx.md │ ├── peanut.md │ ├── pfsense.md │ ├── photoprism.md │ ├── pihole.md │ ├── plantit.md │ ├── plex-tautulli.md │ ├── plex.md │ ├── portainer.md │ ├── prometheus.md │ ├── prometheusmetric.md │ ├── prowlarr.md │ ├── proxmox.md │ ├── proxmoxbackupserver.md │ ├── pterodactyl.md │ ├── pyload.md │ ├── qbittorrent.md │ ├── qnap.md │ ├── radarr.md │ ├── readarr.md │ ├── romm.md │ ├── rutorrent.md │ ├── sabnzbd.md │ ├── scrutiny.md │ ├── seerr.md │ ├── slskd.md │ ├── sonarr.md │ ├── sparkyfitness.md │ ├── speedtest-tracker.md │ ├── spoolman.md │ ├── stash.md │ ├── stocks.md │ ├── suwayomi.md │ ├── swagdashboard.md │ ├── syncthing-relay-server.md │ ├── tailscale.md │ ├── tandoor.md │ ├── tdarr.md │ ├── technitium.md │ ├── tracearr.md │ ├── traefik.md │ ├── transmission.md │ ├── trilium.md │ ├── truenas.md │ ├── tubearchivist.md │ ├── unifi-controller.md │ ├── unmanic.md │ ├── unraid.md │ ├── uptime-kuma.md │ ├── uptimerobot.md │ ├── urbackup.md │ ├── vikunja.md │ ├── wallos.md │ ├── watchtower.md │ ├── wgeasy.md │ ├── whatsupdocker.md │ ├── xteve.md │ ├── yourspotify.md │ └── zabbix.md ├── eslint.config.mjs ├── jsconfig.json ├── k3d/ │ ├── .envrc │ ├── .gitignore │ ├── README.md │ ├── Tiltfile │ ├── k3d-deploy.sh │ ├── k3d-down.sh │ ├── k3d-helm-values.yaml │ ├── k3d-up.sh │ └── k3d.yaml ├── kubernetes.md ├── mkdocs.yml ├── next-i18next.config.js ├── next.config.js ├── package.json ├── postcss.config.js ├── public/ │ └── locales/ │ ├── af/ │ │ └── common.json │ ├── ar/ │ │ └── common.json │ ├── bg/ │ │ └── common.json │ ├── ca/ │ │ └── common.json │ ├── cs/ │ │ └── common.json │ ├── da/ │ │ └── common.json │ ├── de/ │ │ └── common.json │ ├── el/ │ │ └── common.json │ ├── en/ │ │ └── common.json │ ├── eo/ │ │ └── common.json │ ├── es/ │ │ └── common.json │ ├── eu/ │ │ └── common.json │ ├── fi/ │ │ └── common.json │ ├── fr/ │ │ └── common.json │ ├── he/ │ │ └── common.json │ ├── hi/ │ │ └── common.json │ ├── hr/ │ │ └── common.json │ ├── hu/ │ │ └── common.json │ ├── id/ │ │ └── common.json │ ├── it/ │ │ └── common.json │ ├── ja/ │ │ └── common.json │ ├── ko/ │ │ └── common.json │ ├── lv/ │ │ └── common.json │ ├── ms/ │ │ └── common.json │ ├── nb-NO/ │ │ └── common.json │ ├── nl/ │ │ └── common.json │ ├── no/ │ │ └── common.json │ ├── pl/ │ │ └── common.json │ ├── pt/ │ │ └── common.json │ ├── pt-BR/ │ │ └── common.json │ ├── pt_BR/ │ │ └── common.json │ ├── ro/ │ │ └── common.json │ ├── ru/ │ │ └── common.json │ ├── sk/ │ │ └── common.json │ ├── sl/ │ │ └── common.json │ ├── sr/ │ │ └── common.json │ ├── sv/ │ │ └── common.json │ ├── te/ │ │ └── common.json │ ├── th/ │ │ └── common.json │ ├── tr/ │ │ └── common.json │ ├── uk/ │ │ └── common.json │ ├── vi/ │ │ └── common.json │ ├── yue/ │ │ └── common.json │ ├── zh-Hans/ │ │ └── common.json │ └── zh-Hant/ │ └── common.json ├── pyproject.toml ├── src/ │ ├── __tests__/ │ │ └── pages/ │ │ ├── _app.test.jsx │ │ ├── _document.test.jsx │ │ ├── api/ │ │ │ ├── bookmarks.test.js │ │ │ ├── config/ │ │ │ │ └── [path].test.js │ │ │ ├── docker/ │ │ │ │ ├── stats/ │ │ │ │ │ └── [...service].test.js │ │ │ │ └── status/ │ │ │ │ └── [...service].test.js │ │ │ ├── hash.test.js │ │ │ ├── healthcheck.test.js │ │ │ ├── kubernetes/ │ │ │ │ ├── stats/ │ │ │ │ │ └── [...service].test.js │ │ │ │ └── status/ │ │ │ │ └── [...service].test.js │ │ │ ├── ping.test.js │ │ │ ├── proxmox/ │ │ │ │ └── stats/ │ │ │ │ └── [...service].test.js │ │ │ ├── releases.test.js │ │ │ ├── revalidate.test.js │ │ │ ├── search/ │ │ │ │ └── searchSuggestion.test.js │ │ │ ├── services/ │ │ │ │ ├── index.test.js │ │ │ │ └── proxy.test.js │ │ │ ├── siteMonitor.test.js │ │ │ ├── theme.test.js │ │ │ ├── validate.test.js │ │ │ └── widgets/ │ │ │ ├── glances.test.js │ │ │ ├── index.test.js │ │ │ ├── kubernetes.test.js │ │ │ ├── longhorn.test.js │ │ │ ├── openmeteo.test.js │ │ │ ├── openweathermap.test.js │ │ │ ├── resources.test.js │ │ │ ├── stocks.test.js │ │ │ └── weather.test.js │ │ ├── browserconfig.xml.test.js │ │ ├── index.test.jsx │ │ ├── robots.txt.test.js │ │ └── site.webmanifest.test.js │ ├── components/ │ │ ├── bookmarks/ │ │ │ ├── group.jsx │ │ │ ├── group.test.jsx │ │ │ ├── group.transition.test.jsx │ │ │ ├── item.jsx │ │ │ ├── item.test.jsx │ │ │ ├── list.jsx │ │ │ └── list.test.jsx │ │ ├── errorboundry.jsx │ │ ├── errorboundry.test.jsx │ │ ├── favicon.jsx │ │ ├── favicon.test.jsx │ │ ├── quicklaunch.jsx │ │ ├── quicklaunch.test.jsx │ │ ├── resolvedicon.jsx │ │ ├── resolvedicon.test.jsx │ │ ├── services/ │ │ │ ├── dropdown.jsx │ │ │ ├── dropdown.test.jsx │ │ │ ├── group.jsx │ │ │ ├── group.test.jsx │ │ │ ├── group.transition.test.jsx │ │ │ ├── item.jsx │ │ │ ├── item.test.jsx │ │ │ ├── kubernetes-status.jsx │ │ │ ├── kubernetes-status.test.jsx │ │ │ ├── list.jsx │ │ │ ├── list.test.jsx │ │ │ ├── ping.jsx │ │ │ ├── ping.test.jsx │ │ │ ├── proxmox-status.jsx │ │ │ ├── proxmox-status.test.jsx │ │ │ ├── site-monitor.jsx │ │ │ ├── site-monitor.test.jsx │ │ │ ├── status.jsx │ │ │ ├── status.test.jsx │ │ │ ├── widget/ │ │ │ │ ├── block.jsx │ │ │ │ ├── block.test.jsx │ │ │ │ ├── container.jsx │ │ │ │ ├── container.test.jsx │ │ │ │ ├── error.jsx │ │ │ │ ├── error.test.jsx │ │ │ │ ├── highlight-context.jsx │ │ │ │ └── highlight-context.test.jsx │ │ │ ├── widget.jsx │ │ │ └── widget.test.jsx │ │ ├── tab.jsx │ │ ├── tab.test.jsx │ │ ├── toggles/ │ │ │ ├── color.jsx │ │ │ ├── color.test.jsx │ │ │ ├── revalidate.jsx │ │ │ ├── revalidate.test.jsx │ │ │ ├── theme.jsx │ │ │ └── theme.test.jsx │ │ ├── version.jsx │ │ ├── version.test.jsx │ │ └── widgets/ │ │ ├── datetime/ │ │ │ ├── datetime.jsx │ │ │ └── datetime.test.jsx │ │ ├── glances/ │ │ │ ├── glances.jsx │ │ │ └── glances.test.jsx │ │ ├── greeting/ │ │ │ ├── greeting.jsx │ │ │ └── greeting.test.jsx │ │ ├── kubernetes/ │ │ │ ├── kubernetes.jsx │ │ │ ├── kubernetes.test.jsx │ │ │ ├── node.jsx │ │ │ └── node.test.jsx │ │ ├── logo/ │ │ │ ├── logo.jsx │ │ │ └── logo.test.jsx │ │ ├── longhorn/ │ │ │ ├── longhorn.jsx │ │ │ ├── longhorn.test.jsx │ │ │ ├── node.jsx │ │ │ └── node.test.jsx │ │ ├── openmeteo/ │ │ │ ├── openmeteo.jsx │ │ │ └── openmeteo.test.jsx │ │ ├── openweathermap/ │ │ │ ├── weather.jsx │ │ │ └── weather.test.jsx │ │ ├── queue/ │ │ │ ├── queueEntry.jsx │ │ │ └── queueEntry.test.jsx │ │ ├── resources/ │ │ │ ├── cpu.jsx │ │ │ ├── cpu.test.jsx │ │ │ ├── cputemp.jsx │ │ │ ├── cputemp.test.jsx │ │ │ ├── disk.jsx │ │ │ ├── disk.test.jsx │ │ │ ├── memory.jsx │ │ │ ├── memory.test.jsx │ │ │ ├── network.jsx │ │ │ ├── network.test.jsx │ │ │ ├── resources.jsx │ │ │ ├── resources.test.jsx │ │ │ ├── uptime.jsx │ │ │ ├── uptime.test.jsx │ │ │ ├── usage-bar.jsx │ │ │ └── usage-bar.test.jsx │ │ ├── search/ │ │ │ ├── search.jsx │ │ │ └── search.test.jsx │ │ ├── stocks/ │ │ │ ├── stocks.jsx │ │ │ └── stocks.test.jsx │ │ ├── unifi_console/ │ │ │ ├── unifi_console.jsx │ │ │ └── unifi_console.test.jsx │ │ ├── weather/ │ │ │ ├── weather.jsx │ │ │ └── weather.test.jsx │ │ ├── widget/ │ │ │ ├── container.jsx │ │ │ ├── container.test.jsx │ │ │ ├── container_button.jsx │ │ │ ├── container_button.test.jsx │ │ │ ├── container_form.jsx │ │ │ ├── container_form.test.jsx │ │ │ ├── container_link.jsx │ │ │ ├── container_link.test.jsx │ │ │ ├── error.jsx │ │ │ ├── error.test.jsx │ │ │ ├── primary_text.jsx │ │ │ ├── primary_text.test.jsx │ │ │ ├── raw.jsx │ │ │ ├── raw.test.jsx │ │ │ ├── resource.jsx │ │ │ ├── resource.test.jsx │ │ │ ├── resources.jsx │ │ │ ├── resources.test.jsx │ │ │ ├── secondary_text.jsx │ │ │ ├── secondary_text.test.jsx │ │ │ ├── widget_icon.jsx │ │ │ ├── widget_icon.test.jsx │ │ │ ├── widget_label.jsx │ │ │ └── widget_label.test.jsx │ │ ├── widget.jsx │ │ └── widget.test.jsx │ ├── middleware.js │ ├── middleware.test.js │ ├── pages/ │ │ ├── _app.jsx │ │ ├── _document.jsx │ │ ├── api/ │ │ │ ├── bookmarks.js │ │ │ ├── config/ │ │ │ │ └── [path].js │ │ │ ├── docker/ │ │ │ │ ├── stats/ │ │ │ │ │ └── [...service].js │ │ │ │ └── status/ │ │ │ │ └── [...service].js │ │ │ ├── hash.js │ │ │ ├── healthcheck.js │ │ │ ├── kubernetes/ │ │ │ │ ├── stats/ │ │ │ │ │ └── [...service].js │ │ │ │ └── status/ │ │ │ │ └── [...service].js │ │ │ ├── ping.js │ │ │ ├── proxmox/ │ │ │ │ └── stats/ │ │ │ │ └── [...service].js │ │ │ ├── releases.js │ │ │ ├── revalidate.js │ │ │ ├── search/ │ │ │ │ └── searchSuggestion.js │ │ │ ├── services/ │ │ │ │ ├── index.js │ │ │ │ └── proxy.js │ │ │ ├── siteMonitor.js │ │ │ ├── theme.js │ │ │ ├── validate.js │ │ │ └── widgets/ │ │ │ ├── glances.js │ │ │ ├── index.js │ │ │ ├── kubernetes.js │ │ │ ├── longhorn.js │ │ │ ├── openmeteo.js │ │ │ ├── openweathermap.js │ │ │ ├── resources.js │ │ │ ├── stocks.js │ │ │ └── weather.js │ │ ├── browserconfig.xml.jsx │ │ ├── index.jsx │ │ ├── robots.txt.js │ │ └── site.webmanifest.jsx │ ├── skeleton/ │ │ ├── bookmarks.yaml │ │ ├── custom.css │ │ ├── custom.js │ │ ├── docker.yaml │ │ ├── kubernetes.yaml │ │ ├── proxmox.yaml │ │ ├── services.yaml │ │ ├── settings.yaml │ │ └── widgets.yaml │ ├── styles/ │ │ ├── globals.css │ │ ├── manrope.css │ │ └── theme.css │ ├── test-utils/ │ │ ├── create-mock-res.js │ │ ├── render-with-providers.jsx │ │ ├── widget-assertions.js │ │ └── widget-config.js │ ├── utils/ │ │ ├── config/ │ │ │ ├── api-response.js │ │ │ ├── api-response.test.js │ │ │ ├── config.check-copy.test.js │ │ │ ├── config.js │ │ │ ├── config.test.js │ │ │ ├── docker.js │ │ │ ├── docker.test.js │ │ │ ├── kubernetes.js │ │ │ ├── kubernetes.test.js │ │ │ ├── proxmox.js │ │ │ ├── proxmox.test.js │ │ │ ├── service-helpers.js │ │ │ ├── service-helpers.test.js │ │ │ ├── shvl.js │ │ │ ├── shvl.test.js │ │ │ ├── widget-helpers.js │ │ │ └── widget-helpers.test.js │ │ ├── contexts/ │ │ │ ├── color.jsx │ │ │ ├── color.test.jsx │ │ │ ├── settings.jsx │ │ │ ├── settings.test.jsx │ │ │ ├── tab.jsx │ │ │ ├── tab.test.jsx │ │ │ ├── theme.jsx │ │ │ └── theme.test.jsx │ │ ├── highlights.js │ │ ├── highlights.test.js │ │ ├── hooks/ │ │ │ ├── window-focus.js │ │ │ └── window-focus.test.jsx │ │ ├── kubernetes/ │ │ │ ├── export.js │ │ │ ├── export.test.js │ │ │ ├── httproute-list.js │ │ │ ├── httproute-list.test.js │ │ │ ├── ingress-list.js │ │ │ ├── ingress-list.test.js │ │ │ ├── resource-helpers.js │ │ │ ├── resource-helpers.test.js │ │ │ ├── traefik-list.js │ │ │ ├── traefik-list.test.js │ │ │ ├── utils.js │ │ │ └── utils.test.js │ │ ├── layout/ │ │ │ ├── columns.js │ │ │ └── columns.test.js │ │ ├── logger.js │ │ ├── logger.test.js │ │ ├── proxy/ │ │ │ ├── api-helpers.js │ │ │ ├── api-helpers.test.js │ │ │ ├── cookie-jar.js │ │ │ ├── cookie-jar.test.js │ │ │ ├── handlers/ │ │ │ │ ├── credentialed.js │ │ │ │ ├── credentialed.test.js │ │ │ │ ├── generic.js │ │ │ │ ├── generic.test.js │ │ │ │ ├── jsonrpc.js │ │ │ │ ├── jsonrpc.test.js │ │ │ │ ├── synology.js │ │ │ │ └── synology.test.js │ │ │ ├── http.js │ │ │ ├── http.test.js │ │ │ ├── use-widget-api.js │ │ │ ├── use-widget-api.test.js │ │ │ ├── validate-widget-data.js │ │ │ └── validate-widget-data.test.js │ │ ├── styles/ │ │ │ ├── themes.js │ │ │ └── themes.test.js │ │ └── weather/ │ │ ├── condition-map.js │ │ ├── condition-map.test.js │ │ ├── openmeteo-condition-map.js │ │ ├── openmeteo-condition-map.test.js │ │ ├── owm-condition-map.js │ │ └── owm-condition-map.test.js │ └── widgets/ │ ├── adguard/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── apcups/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── proxy.js │ │ ├── proxy.test.js │ │ ├── widget.js │ │ └── widget.test.js │ ├── arcane/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── argocd/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── atsumeru/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── audiobookshelf/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── proxy.js │ │ ├── proxy.test.js │ │ ├── widget.js │ │ └── widget.test.js │ ├── authentik/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── autobrr/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── azuredevops/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── backrest/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── proxy.js │ │ ├── proxy.test.js │ │ ├── widget.js │ │ └── widget.test.js │ ├── bazarr/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── beszel/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── proxy.js │ │ ├── proxy.test.js │ │ ├── widget.js │ │ └── widget.test.js │ ├── booklore/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── proxy.js │ │ ├── proxy.test.js │ │ ├── widget.js │ │ └── widget.test.js │ ├── caddy/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── calendar/ │ │ ├── agenda.jsx │ │ ├── agenda.test.jsx │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── event.jsx │ │ ├── event.test.jsx │ │ ├── integrations/ │ │ │ ├── ical.jsx │ │ │ ├── ical.test.jsx │ │ │ ├── lidarr.jsx │ │ │ ├── lidarr.test.jsx │ │ │ ├── radarr.jsx │ │ │ ├── radarr.test.jsx │ │ │ ├── readarr.jsx │ │ │ ├── readarr.test.jsx │ │ │ ├── sonarr.jsx │ │ │ └── sonarr.test.jsx │ │ ├── monthly.jsx │ │ ├── monthly.test.jsx │ │ ├── proxy.js │ │ ├── proxy.test.js │ │ ├── widget.js │ │ └── widget.test.js │ ├── calibreweb/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── changedetectionio/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── channelsdvrserver/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── checkmk/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── cloudflared/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── coinmarketcap/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── components.js │ ├── crowdsec/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── proxy.js │ │ ├── proxy.test.js │ │ ├── widget.js │ │ └── widget.test.js │ ├── customapi/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── deluge/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── proxy.js │ │ ├── proxy.test.js │ │ ├── widget.js │ │ └── widget.test.js │ ├── develancacheui/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── diskstation/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── dispatcharr/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── proxy.js │ │ ├── proxy.test.js │ │ ├── widget.js │ │ └── widget.test.js │ ├── docker/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── stats-helpers.js │ │ └── stats-helpers.test.js │ ├── dockhand/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── proxy.js │ │ ├── proxy.test.js │ │ ├── widget.js │ │ └── widget.test.js │ ├── downloadstation/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── emby/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── esphome/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── evcc/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── filebrowser/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── proxy.js │ │ ├── proxy.test.js │ │ ├── widget.js │ │ └── widget.test.js │ ├── fileflows/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── firefly/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── flood/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── proxy.js │ │ ├── proxy.test.js │ │ ├── widget.js │ │ └── widget.test.js │ ├── freshrss/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── proxy.js │ │ ├── proxy.test.js │ │ ├── widget.js │ │ └── widget.test.js │ ├── frigate/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── proxy.js │ │ ├── proxy.test.js │ │ ├── widget.js │ │ └── widget.test.js │ ├── fritzbox/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── proxy.js │ │ ├── proxy.test.js │ │ ├── widget.js │ │ └── widget.test.js │ ├── gamedig/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── proxy.js │ │ ├── proxy.test.js │ │ ├── widget.js │ │ └── widget.test.js │ ├── gatus/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── ghostfolio/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── gitea/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── gitlab/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── glances/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── components/ │ │ │ ├── block.jsx │ │ │ ├── block.test.jsx │ │ │ ├── chart.jsx │ │ │ ├── chart.test.jsx │ │ │ ├── chart_dual.jsx │ │ │ ├── chart_dual.test.jsx │ │ │ ├── container.jsx │ │ │ ├── container.test.jsx │ │ │ ├── custom_tooltip.jsx │ │ │ ├── custom_tooltip.test.jsx │ │ │ ├── error.jsx │ │ │ └── error.test.jsx │ │ ├── metrics/ │ │ │ ├── containers.jsx │ │ │ ├── containers.test.jsx │ │ │ ├── cpu.jsx │ │ │ ├── cpu.test.jsx │ │ │ ├── disk.jsx │ │ │ ├── disk.test.jsx │ │ │ ├── fs.jsx │ │ │ ├── fs.test.jsx │ │ │ ├── gpu.jsx │ │ │ ├── gpu.test.jsx │ │ │ ├── info.jsx │ │ │ ├── info.test.jsx │ │ │ ├── memory.jsx │ │ │ ├── memory.test.jsx │ │ │ ├── net.jsx │ │ │ ├── net.test.jsx │ │ │ ├── process.jsx │ │ │ ├── process.test.jsx │ │ │ ├── sensor.jsx │ │ │ └── sensor.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── gluetun/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── gotify/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── grafana/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── hdhomerun/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── headscale/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── healthchecks/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── homeassistant/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── proxy.js │ │ ├── proxy.test.js │ │ ├── widget.js │ │ └── widget.test.js │ ├── homebox/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── proxy.js │ │ ├── proxy.test.js │ │ ├── widget.js │ │ └── widget.test.js │ ├── homebridge/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── proxy.js │ │ ├── proxy.test.js │ │ ├── widget.js │ │ └── widget.test.js │ ├── iframe/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── immich/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── jackett/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── proxy.js │ │ ├── proxy.test.js │ │ ├── widget.js │ │ └── widget.test.js │ ├── jdownloader/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── proxy.js │ │ ├── proxy.test.js │ │ ├── tools.js │ │ ├── tools.test.js │ │ ├── widget.js │ │ └── widget.test.js │ ├── jellyfin/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── proxy.js │ │ ├── proxy.test.js │ │ ├── widget.js │ │ └── widget.test.js │ ├── jellystat/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── karakeep/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── kavita/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── proxy.js │ │ ├── proxy.test.js │ │ ├── widget.js │ │ └── widget.test.js │ ├── komga/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── proxy.js │ │ ├── proxy.test.js │ │ ├── widget.js │ │ └── widget.test.js │ ├── komodo/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── proxy.js │ │ ├── proxy.test.js │ │ ├── widget.js │ │ └── widget.test.js │ ├── kopia/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── kubernetes/ │ │ ├── component.jsx │ │ └── component.test.jsx │ ├── lidarr/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── linkwarden/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── lubelogger/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── mailcow/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── mastodon/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── mealie/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── medusa/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── mikrotik/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── minecraft/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── proxy.js │ │ ├── proxy.test.js │ │ ├── widget.js │ │ └── widget.test.js │ ├── miniflux/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── mjpeg/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── moonraker/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── mylar/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── myspeed/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── navidrome/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── netalertx/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── netdata/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── nextcloud/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── nextdns/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── npm/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── proxy.js │ │ ├── proxy.test.js │ │ ├── widget.js │ │ └── widget.test.js │ ├── nzbget/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── octoprint/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── omada/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── proxy.js │ │ ├── proxy.test.js │ │ ├── widget.js │ │ └── widget.test.js │ ├── ombi/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── opendtu/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── openmediavault/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── methods/ │ │ │ ├── downloader_get_downloadlist.jsx │ │ │ ├── downloader_get_downloadlist.test.jsx │ │ │ ├── services_get_status.jsx │ │ │ ├── services_get_status.test.jsx │ │ │ ├── smart_get_list.jsx │ │ │ └── smart_get_list.test.jsx │ │ ├── proxy.js │ │ ├── proxy.test.js │ │ ├── widget.js │ │ └── widget.test.js │ ├── openwrt/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── methods/ │ │ │ ├── interface.jsx │ │ │ ├── interface.test.jsx │ │ │ ├── system.jsx │ │ │ └── system.test.jsx │ │ ├── proxy.js │ │ ├── proxy.test.js │ │ ├── widget.js │ │ └── widget.test.js │ ├── opnsense/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── overseerr/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── pangolin/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── paperlessngx/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── peanut/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── pfsense/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── photoprism/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── proxy.js │ │ ├── proxy.test.js │ │ ├── widget.js │ │ └── widget.test.js │ ├── pihole/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── proxy.js │ │ ├── proxy.test.js │ │ ├── widget.js │ │ └── widget.test.js │ ├── plantit/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── plex/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── proxy.js │ │ ├── proxy.test.js │ │ ├── widget.js │ │ └── widget.test.js │ ├── portainer/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── prometheus/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── prometheusmetric/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── prowlarr/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── proxmox/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── proxmoxbackupserver/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── proxmoxvm/ │ │ ├── component.jsx │ │ └── component.test.jsx │ ├── pterodactyl/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── pyload/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── proxy.js │ │ ├── proxy.test.js │ │ ├── widget.js │ │ └── widget.test.js │ ├── qbittorrent/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── proxy.js │ │ ├── proxy.test.js │ │ ├── widget.js │ │ └── widget.test.js │ ├── qnap/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── proxy.js │ │ ├── proxy.test.js │ │ ├── widget.js │ │ └── widget.test.js │ ├── radarr/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── readarr/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── romm/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── rutorrent/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── proxy.js │ │ ├── proxy.test.js │ │ ├── widget.js │ │ └── widget.test.js │ ├── sabnzbd/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── scrutiny/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── seerr/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── slskd/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── sonarr/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── sparkyfitness/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── speedtest/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── spoolman/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── stash/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── stocks/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── strelaysrv/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── suwayomi/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── proxy.js │ │ ├── proxy.test.js │ │ ├── widget.js │ │ └── widget.test.js │ ├── swagdashboard/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── tailscale/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── tandoor/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── tautulli/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── tdarr/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── proxy.js │ │ ├── proxy.test.js │ │ ├── widget.js │ │ └── widget.test.js │ ├── technitium/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── tracearr/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── traefik/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── transmission/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── proxy.js │ │ ├── proxy.test.js │ │ ├── widget.js │ │ └── widget.test.js │ ├── trilium/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── truenas/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── pool.jsx │ │ ├── pool.test.jsx │ │ ├── proxy.js │ │ ├── proxy.test.js │ │ ├── widget.js │ │ └── widget.test.js │ ├── tubearchivist/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── unifi/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── proxy.js │ │ ├── proxy.test.js │ │ ├── widget.js │ │ └── widget.test.js │ ├── unmanic/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── unraid/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── proxy.js │ │ ├── proxy.test.js │ │ ├── widget.js │ │ └── widget.test.js │ ├── uptimekuma/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── uptimerobot/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── urbackup/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── proxy.js │ │ ├── proxy.test.js │ │ ├── widget.js │ │ └── widget.test.js │ ├── vikunja/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── wallos/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── watchtower/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── proxy.js │ │ ├── proxy.test.js │ │ ├── widget.js │ │ └── widget.test.js │ ├── wgeasy/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── whatsupdocker/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ ├── widgets.js │ ├── xteve/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── proxy.js │ │ ├── proxy.test.js │ │ ├── widget.js │ │ └── widget.test.js │ ├── yourspotify/ │ │ ├── component.jsx │ │ ├── component.test.jsx │ │ ├── widget.js │ │ └── widget.test.js │ └── zabbix/ │ ├── component.jsx │ ├── component.test.jsx │ ├── widget.js │ └── widget.test.js ├── tailwind.config.js ├── vitest.config.mjs └── vitest.setup.js