Console panel, collapsible panels, Add on the Members panel

- Server settings > Console sends a raw console command for staff with @css/rcon
  (POST /api/admin/rcon). It doesn't wait for the server; the output is only logged.
- Staff & ranks and Server settings panels fold up by clicking their heads. All but
  Ranks and Server start folded; a folded Ranks panel shows the selected rank.
- The Members panel has an Add button that opens Add staff with that rank picked.
- The public rank log shows a rank being given as Promoted and taken away as Demoted.
This commit is contained in:
Astra 2026-10-03 12:09:43 +01:00
parent 31901495de
commit b26360e8f3
8 changed files with 123 additions and 24 deletions

View file

@ -222,6 +222,24 @@ h3 { margin: 0; font: 600 17px/1.2 var(--display); letter-spacing: 0.01em; }
.panel-body { padding: 18px; }
/* Collapsible panels: a folded one shows only its head. */
.fold-head { cursor: pointer; user-select: none; }
.fold-toggle {
display: inline-flex;
align-items: center;
gap: 8px;
padding: 0;
border: 0;
background: none;
color: inherit;
font: inherit;
cursor: pointer;
}
.fold-toggle svg { width: 14px; height: 14px; color: var(--muted); transition: transform 0.15s; }
.fold-toggle[aria-expanded="true"] svg { transform: rotate(90deg); }
.panel.folded > .fold-head { border-bottom: 0; }
.panel.folded > :not(.fold-head), .panel.folded .fold-open, .panel:not(.folded) .fold-shut { display: none; }
/* ---------- Controls ---------- */
.btn {
@ -572,6 +590,8 @@ td.num, th.num { text-align: right; white-space: nowrap; }
align-items: start;
}
.rank-form { display: grid; gap: 18px; }
.ladder { list-style: none; margin: 0; padding: 8px; display: grid; gap: 2px; }
.ladder button {
@ -639,6 +659,8 @@ td.num, th.num { text-align: right; white-space: nowrap; }
/* ---------- Settings ---------- */
.settings { display: grid; gap: 20px; max-width: 900px; }
.rcon-form { display: flex; gap: 8px; }
.rcon-form .input { flex: 1; min-width: 0; font-family: ui-monospace, "Cascadia Mono", Menlo, monospace; }
.setting {
display: grid;