mirror of
https://github.com/Dvorinka/Dash.git
synced 2026-10-29 00:01:24 +00:00
Ports Beszel's chart design language onto our recharts primitives: titled card grid, area fills on a true time axis, unit-aware Y ticks, sorted dotted tooltips, and legend chips. System detail gains stacked per-container Docker CPU/memory, per-sensor temperature lines, load 1/5/15, and GPU usage/VRAM — all from data the agent already sends. Generated with [Devin](https://devin.ai) Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
162 lines
4.3 KiB
CSS
162 lines
4.3 KiB
CSS
@import "tailwindcss";
|
|
@import "tw-animate-css";
|
|
|
|
/* Design tokens — ported from mockups/d-bento-mono.html.
|
|
Semantic vars flip on [data-theme]; Tailwind utilities map via @theme.
|
|
shadcn/ui names (background, popover, ...) alias the same tokens. */
|
|
:root {
|
|
--ease: cubic-bezier(0.2, 0, 0, 1);
|
|
--radius: 0.5rem;
|
|
}
|
|
|
|
[data-theme="dark"] {
|
|
--bg: #0a0a0a;
|
|
--surface: #111111;
|
|
--surface-hover: #161616;
|
|
--border: rgba(255, 255, 255, 0.08);
|
|
--border-strong: rgba(255, 255, 255, 0.14);
|
|
--text: #fafafa;
|
|
--text-dim: #a1a1aa;
|
|
--text-faint: #52525b;
|
|
--accent: #3b82f6;
|
|
--up: #22c55e;
|
|
--down: #f59e0b;
|
|
--destructive: #ef4444;
|
|
--icon-bg: #1c1c1e;
|
|
--popover: #141414;
|
|
|
|
/* chart series palette (monitoring graphs) */
|
|
--chart-1: #3b82f6;
|
|
--chart-2: #10b981;
|
|
--chart-3: #8b5cf6;
|
|
--chart-4: #f59e0b;
|
|
--chart-5: #22d3ee;
|
|
--chart-6: #fb7185;
|
|
--chart-7: #a3e635;
|
|
--chart-8: #c084fc;
|
|
|
|
--background: var(--bg);
|
|
--foreground: var(--text);
|
|
--card: var(--surface);
|
|
--card-foreground: var(--text);
|
|
--popover-foreground: var(--text);
|
|
--primary: var(--text);
|
|
--primary-foreground: var(--bg);
|
|
--secondary: var(--surface);
|
|
--secondary-foreground: var(--text);
|
|
--muted: var(--surface-hover);
|
|
--muted-foreground: var(--text-dim);
|
|
--accent-foreground: var(--text);
|
|
--input: var(--border-strong);
|
|
--ring: var(--accent);
|
|
}
|
|
|
|
[data-theme="light"] {
|
|
--bg: #fafafa;
|
|
--surface: #ffffff;
|
|
--surface-hover: #f4f4f5;
|
|
--border: rgba(0, 0, 0, 0.08);
|
|
--border-strong: rgba(0, 0, 0, 0.16);
|
|
--text: #09090b;
|
|
--text-dim: #52525b;
|
|
--text-faint: #a1a1aa;
|
|
--accent: #2563eb;
|
|
--up: #16a34a;
|
|
--down: #d97706;
|
|
--destructive: #dc2626;
|
|
--icon-bg: #f4f4f5;
|
|
--popover: #ffffff;
|
|
|
|
/* chart series palette (monitoring graphs) — darker for light bg */
|
|
--chart-1: #2563eb;
|
|
--chart-2: #059669;
|
|
--chart-3: #7c3aed;
|
|
--chart-4: #d97706;
|
|
--chart-5: #0891b2;
|
|
--chart-6: #e11d48;
|
|
--chart-7: #65a30d;
|
|
--chart-8: #9333ea;
|
|
|
|
--background: var(--bg);
|
|
--foreground: var(--text);
|
|
--card: var(--surface);
|
|
--card-foreground: var(--text);
|
|
--popover-foreground: var(--text);
|
|
--primary: var(--text);
|
|
--primary-foreground: var(--bg);
|
|
--secondary: var(--surface);
|
|
--secondary-foreground: var(--text);
|
|
--muted: var(--surface-hover);
|
|
--muted-foreground: var(--text-dim);
|
|
--accent-foreground: var(--text);
|
|
--input: var(--border-strong);
|
|
--ring: var(--accent);
|
|
}
|
|
|
|
@theme inline {
|
|
--color-bg: var(--bg);
|
|
--color-surface: var(--surface);
|
|
--color-surface-hover: var(--surface-hover);
|
|
--color-border: var(--border);
|
|
--color-border-strong: var(--border-strong);
|
|
--color-text: var(--text);
|
|
--color-text-dim: var(--text-dim);
|
|
--color-text-faint: var(--text-faint);
|
|
--color-accent: var(--accent);
|
|
--color-up: var(--up);
|
|
--color-down: var(--down);
|
|
--color-destructive: var(--destructive);
|
|
--color-icon-bg: var(--icon-bg);
|
|
--color-popover: var(--popover);
|
|
|
|
--color-background: var(--background);
|
|
--color-foreground: var(--foreground);
|
|
--color-card: var(--card);
|
|
--color-card-foreground: var(--card-foreground);
|
|
--color-popover-foreground: var(--popover-foreground);
|
|
--color-primary: var(--primary);
|
|
--color-primary-foreground: var(--primary-foreground);
|
|
--color-secondary: var(--secondary);
|
|
--color-secondary-foreground: var(--secondary-foreground);
|
|
--color-muted: var(--muted);
|
|
--color-muted-foreground: var(--muted-foreground);
|
|
--color-accent-foreground: var(--accent-foreground);
|
|
--color-input: var(--input);
|
|
--color-ring: var(--ring);
|
|
|
|
--radius-lg: var(--radius);
|
|
--radius-md: calc(var(--radius) - 2px);
|
|
--radius-sm: calc(var(--radius) - 4px);
|
|
|
|
--font-sans: "Geist Variable", ui-sans-serif, system-ui, -apple-system, sans-serif;
|
|
--font-mono: "Geist Mono Variable", ui-monospace, monospace;
|
|
--font-serif: "Instrument Serif", Georgia, serif;
|
|
--font-terminal: "JetBrains Mono Variable", ui-monospace, monospace;
|
|
}
|
|
|
|
@layer base {
|
|
html {
|
|
-webkit-font-smoothing: antialiased;
|
|
}
|
|
|
|
body {
|
|
background: var(--bg);
|
|
color: var(--text);
|
|
min-height: 100dvh;
|
|
transition:
|
|
background 200ms var(--ease),
|
|
color 200ms var(--ease);
|
|
}
|
|
|
|
:focus-visible {
|
|
outline: 2px solid var(--accent);
|
|
outline-offset: 2px;
|
|
}
|
|
|
|
@media (prefers-reduced-motion: reduce) {
|
|
* {
|
|
transition: none !important;
|
|
}
|
|
}
|
|
}
|