From 5415a3b43d50f46edde01d60029024063411c4cb Mon Sep 17 00:00:00 2001 From: Zac Gaetano Date: Sat, 4 Apr 2026 22:46:17 -0400 Subject: [PATCH] Update frontend/src/App.css --- frontend/src/App.css | 104 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 104 insertions(+) diff --git a/frontend/src/App.css b/frontend/src/App.css index 2eebdde..f036fb1 100644 --- a/frontend/src/App.css +++ b/frontend/src/App.css @@ -555,3 +555,107 @@ body { grid-template-columns: 1fr; } } + +/* ====== Dashboard View ====== */ +.dashboard-view { + padding: 2rem; + max-width: 1100px; + margin: 0 auto; + width: 100%; +} +.dashboard-title { + font-size: 1.5rem; + font-weight: 700; + color: var(--color-text); + margin-bottom: 1.5rem; +} +.dashboard-grid { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(160px, 1fr)); + gap: 1rem; + margin-bottom: 2rem; +} +.dash-card { + background: var(--color-surface); + border: 1px solid var(--color-border); + border-radius: 12px; + padding: 1.25rem 1rem; + text-align: center; + transition: box-shadow 0.2s; +} +.dash-card:hover { box-shadow: 0 4px 16px rgba(0,0,0,0.08); } +.dash-card-icon { font-size: 1.75rem; margin-bottom: 0.5rem; } +.dash-card-value { font-size: 2rem; font-weight: 700; color: var(--color-primary); } +.dash-card-label { font-size: 0.78rem; color: var(--color-secondary); margin-top: 0.25rem; text-transform: uppercase; letter-spacing: 0.05em; } + +.dashboard-section { + background: var(--color-surface); + border: 1px solid var(--color-border); + border-radius: 12px; + padding: 1.5rem; + margin-bottom: 1.5rem; +} +.dashboard-section h3 { + font-size: 1rem; + font-weight: 600; + color: var(--color-text); + margin-bottom: 1rem; + padding-bottom: 0.5rem; + border-bottom: 1px solid var(--color-border); +} + +/* Usage stats */ +.usage-grid { display: flex; flex-direction: column; gap: 0.6rem; } +.usage-row { + display: flex; + justify-content: space-between; + align-items: center; + padding: 0.6rem 0.75rem; + border-radius: 6px; + background: var(--color-background); + font-size: 0.9rem; +} +.usage-row.highlight { background: #eff6ff; } +.usage-label { color: var(--color-secondary); } +.usage-value { font-weight: 600; color: var(--color-text); } +.usage-note { font-size: 0.78rem; color: var(--color-secondary); margin-top: 0.5rem; font-style: italic; } +.usage-loading { color: var(--color-secondary); font-size: 0.9rem; } + +/* Task breakdown */ +.task-breakdown { display: flex; flex-direction: column; gap: 0.5rem; } +.breakdown-row { + display: grid; + grid-template-columns: 1fr auto auto auto; + gap: 1rem; + align-items: center; + padding: 0.6rem 0.75rem; + border-radius: 6px; + background: var(--color-background); + font-size: 0.88rem; +} +.breakdown-name { font-weight: 500; color: var(--color-text); } +.breakdown-type { color: var(--color-secondary); font-size: 0.78rem; text-transform: uppercase; } +.breakdown-status { font-size: 0.78rem; font-weight: 600; text-transform: uppercase; } +.status-idle { color: var(--color-secondary); } +.status-running { color: #3b82f6; } +.status-completed { color: var(--color-success); } +.status-failed { color: var(--color-danger); } +.breakdown-last { color: var(--color-secondary); font-size: 0.78rem; } +.empty-msg { color: var(--color-secondary); font-size: 0.9rem; } + +/* Header nav */ +.header-right { display: flex; align-items: center; gap: 1.5rem; } +.header-nav { display: flex; gap: 0.4rem; } +.nav-btn { + background: none; + border: 1px solid transparent; + border-radius: 6px; + padding: 0.35rem 0.9rem; + font-size: 0.88rem; + font-weight: 500; + color: rgba(255,255,255,0.75); + cursor: pointer; + transition: all 0.15s; +} +.nav-btn:hover { color: #fff; border-color: rgba(255,255,255,0.3); } +.nav-btn.active { color: #fff; background: rgba(255,255,255,0.15); border-color: rgba(255,255,255,0.3); }