diff --git a/internal/ui/assets/index.html b/internal/ui/assets/index.html index 18a1c6b..5ba19ed 100644 --- a/internal/ui/assets/index.html +++ b/internal/ui/assets/index.html @@ -89,6 +89,25 @@ font-family: "IBM Plex Mono", monospace; margin-bottom: 10px; } + .filters { + display: flex; + gap: 6px; + flex-wrap: wrap; + margin-bottom: 10px; + } + .chip { + border: 1px solid var(--line); + background: #0b1723; + color: var(--muted); + border-radius: 999px; + padding: 4px 10px; + font-size: 11px; + font-family: "IBM Plex Mono", monospace; + cursor: pointer; + transition: all .15s ease; + } + .chip:hover { border-color: var(--accent); color: var(--accent); } + .chip.active { border-color: var(--accent); color: var(--accent); background: #0f2333; } .scan-list { overflow: auto; display: flex; flex-direction: column; gap: 8px; padding-right: 3px; } .scan { border: 1px solid var(--line); @@ -191,6 +210,59 @@ gap: 8px; font-size: 12px; } + .status-grid { + display: grid; + grid-template-columns: repeat(3, minmax(0, 1fr)); + gap: 8px; + margin-bottom: 10px; + } + .badge { + border: 1px solid var(--line); + border-radius: 10px; + background: #0b1825; + padding: 8px; + font-size: 12px; + font-family: "IBM Plex Mono", monospace; + color: var(--muted); + } + .badge b { color: var(--ink); } + .trend { + display: grid; + gap: 8px; + } + .trend-item { + display: grid; + grid-template-columns: 120px 1fr auto; + align-items: center; + gap: 8px; + font-size: 12px; + color: var(--muted); + font-family: "IBM Plex Mono", monospace; + } + .spark { + height: 8px; + border-radius: 999px; + border: 1px solid var(--line); + background: #07121b; + overflow: hidden; + } + .spark-fill { + height: 100%; + background: linear-gradient(90deg, #59b7ff, #4dfbc6); + transform-origin: left; + animation: grow .45s ease; + } + @keyframes grow { + from { transform: scaleX(.1); opacity: .5; } + to { transform: scaleX(1); opacity: 1; } + } + .fade-in { + animation: fade .25s ease; + } + @keyframes fade { + from { opacity: 0; transform: translateY(2px); } + to { opacity: 1; transform: translateY(0); } + } .btn { border: 1px solid var(--line); border-radius: 10px; @@ -208,6 +280,7 @@ .left { max-height: 300px; } .summary { grid-template-columns: repeat(3, minmax(0,1fr)); } .split { grid-template-columns: 1fr; } + .status-grid { grid-template-columns: 1fr; } } @@ -226,6 +299,14 @@
| ${String(x).replace(/ |