diff options
Diffstat (limited to 'packages/meshbay-hub/src/meshbay_hub/static/style.css')
| -rw-r--r-- | packages/meshbay-hub/src/meshbay_hub/static/style.css | 203 |
1 files changed, 203 insertions, 0 deletions
diff --git a/packages/meshbay-hub/src/meshbay_hub/static/style.css b/packages/meshbay-hub/src/meshbay_hub/static/style.css index 27e645e..b1b1a7e 100644 --- a/packages/meshbay-hub/src/meshbay_hub/static/style.css +++ b/packages/meshbay-hub/src/meshbay_hub/static/style.css @@ -767,6 +767,209 @@ button:disabled { opacity: 0.5; cursor: not-allowed; } .play-btn:hover { background: var(--bg-raised); border-color: var(--success); } .play-btn:disabled { opacity: 0.3; cursor: not-allowed; } +/* ── Admin panel ─────────────────────────────────────────────────────────── */ + +.admin-tabs { + display: flex; + gap: 4px; + margin-bottom: 20px; + border-bottom: 2px solid var(--border); + flex-wrap: wrap; +} + +.admin-tab { + padding: 8px 16px; + border: none; + background: none; + color: var(--text-secondary); + font-size: 0.9em; + cursor: pointer; + border-bottom: 2px solid transparent; + margin-bottom: -2px; + transition: color 0.15s, border-color 0.15s; +} +.admin-tab:hover { color: var(--text); } +.admin-tab.active { + color: var(--accent); + border-bottom-color: var(--accent); + font-weight: 600; +} + +.admin-stats { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); + gap: 16px; + margin-bottom: 20px; +} + +.stat-card { + background: var(--bg-surface); + border: 1px solid var(--border); + border-radius: 8px; + padding: 20px; + text-align: center; +} +.stat-card .stat-value { + font-size: 2rem; + font-weight: 700; + color: var(--accent); +} +.stat-card .stat-label { + font-size: 0.8em; + text-transform: uppercase; + letter-spacing: 0.04em; + color: var(--text-dim); + margin-top: 4px; +} + +.admin-toolbar { + display: flex; + align-items: center; + gap: 12px; + margin-bottom: 12px; + flex-wrap: wrap; +} + +.admin-search { + flex: 1; + min-width: 180px; + max-width: 300px; + padding: 7px 12px; + border: 1px solid var(--border); + border-radius: 6px; + background: var(--bg-base); + color: var(--text); + font-size: 0.9em; +} +.admin-search:focus { outline: none; border-color: var(--border-focus); } + +.admin-select { + padding: 7px 10px; + border: 1px solid var(--border); + border-radius: 6px; + background: var(--bg-base); + color: var(--text); + font-size: 0.85em; + cursor: pointer; +} + +.admin-table { + width: 100%; + border-collapse: collapse; + font-size: 0.88em; +} +.admin-table th { + text-align: left; + padding: 8px 10px; + border-bottom: 2px solid var(--border); + color: var(--text-secondary); + font-size: 0.8em; + font-weight: 600; + text-transform: uppercase; + letter-spacing: 0.04em; + white-space: nowrap; +} +.admin-table td { + padding: 8px 10px; + border-bottom: 1px solid var(--border); + vertical-align: middle; +} +.admin-table tr:hover { background: var(--bg-raised); } +.admin-table .admin-empty { + text-align: center; + padding: 24px; + color: var(--text-dim); + font-style: italic; +} + +.admin-actions { display: flex; gap: 6px; } + +.admin-btn { + padding: 4px 10px; + border: 1px solid var(--border); + border-radius: 5px; + background: var(--bg-base); + color: var(--text); + font-size: 0.82em; + cursor: pointer; + white-space: nowrap; +} +.admin-btn:hover { border-color: var(--accent); color: var(--accent); } +.admin-btn.danger { color: var(--error); } +.admin-btn.danger:hover { border-color: var(--error); } +.admin-btn:disabled { opacity: 0.4; cursor: not-allowed; } + +.admin-role-select { + padding: 3px 6px; + border: 1px solid var(--border); + border-radius: 4px; + background: var(--bg-base); + color: var(--text); + font-size: 0.85em; + cursor: pointer; +} + +.admin-detail-overlay { + position: fixed; + inset: 0; + z-index: 150; + background: rgba(0, 0, 0, 0.5); + display: flex; + align-items: center; + justify-content: center; +} + +.admin-detail-card { + background: var(--bg-surface); + border: 1px solid var(--border); + border-radius: 12px; + padding: 24px; + min-width: 340px; + max-width: 90vw; + box-shadow: var(--shadow-lg); +} + +.admin-detail-card h3 { + margin-bottom: 16px; + font-size: 1.1em; +} + +.admin-detail-row { + display: flex; + justify-content: space-between; + padding: 6px 0; + font-size: 0.9em; +} +.admin-detail-row + .admin-detail-row { + border-top: 1px solid var(--border); +} +.admin-detail-label { color: var(--text-secondary); } +.admin-detail-value { font-weight: 500; } + +.admin-load-more { + display: block; + margin: 16px auto; + padding: 8px 24px; +} + +.blocklist-form { + display: flex; + gap: 8px; + margin-bottom: 16px; + flex-wrap: wrap; +} +.blocklist-form input { + flex: 1; + min-width: 180px; + padding: 7px 12px; + border: 1px solid var(--border); + border-radius: 6px; + background: var(--bg-base); + color: var(--text); + font-size: 0.9em; +} +.blocklist-form input:focus { outline: none; border-color: var(--border-focus); } + /* ── Overlay (mobile sidebar backdrop) ────────────────────────────────────── */ .overlay { |