mirror of
https://github.com/Dvorinka/Dash.git
synced 2026-10-28 15:51:27 +00:00
Backend: internal/widget registry (type metadata + Fetcher), Pi-hole v5 / AdGuard / Immich fetchers, /api/widgets/types + /api/widgets/:id/data with 30s TTL cache (failures cached too), kind+config on item create/patch. Config secrets are never logged or echoed in errors. Frontend: WidgetContent host maps config.type to a component, polls /data every 30s for server-backed types; clock renders client-side. Generic WidgetDialog builds its form from the registry's field list. Widget tiles are sortable items in both renderers. Generated with [Devin](https://devin.ai) Authored By: TDvorak <[email protected]> Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
22 lines
746 B
HTML
22 lines
746 B
HTML
<!doctype html>
|
|
<html lang="en" data-theme="dark">
|
|
<head>
|
|
<meta charset="UTF-8" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
<title>Dash</title>
|
|
<script>
|
|
// Pre-paint theme: localStorage mirrors the server setting, applied
|
|
// before first paint so there is no flash of the wrong theme.
|
|
try {
|
|
var t = localStorage.getItem("dash.theme");
|
|
document.documentElement.dataset.theme = t === "light" ? "light" : "dark";
|
|
} catch (e) {}
|
|
</script>
|
|
<script type="module" crossorigin src="/assets/index-LtBmkZex.js"></script>
|
|
<link rel="stylesheet" crossorigin href="/assets/index-CoYED22n.css">
|
|
</head>
|
|
<body>
|
|
<div id="root"></div>
|
|
</body>
|
|
</html>
|