LC-561: unify admin status indicators onto one chip vocabulary (redesign P3) #531

Merged
longjacksonle merged 1 commit from feat/LC-561-admin-status-chips into main 2026-07-09 21:35:18 +02:00

What

Admin tables carried three different status-indicator idioms: enclaves used the shared .lc-pill, bridges hand-rolled an inline-block chip (four variants), and user_row / bots used plain colored text. This standardizes everything on .lc-pill, extended with semantic variants (--success / --warning / --danger / --neutral) that reuse the same token pairs already contrast-verified for the .alert-* callouts. The retention toggle's --on / --off variants are kept unchanged.

Applied to:

  • Bridge health: healthy (success) / errored (danger) / stale (warning) / pending (neutral)
  • User state: banned (danger) / muted (warning) / active (neutral)
  • Bot state: disabled (danger) / active (neutral)

Latent bug fixed

The old bridges "errored" chip used text-danger-surface-content, which is not a real token (the danger family has no -surface-content, per LC-215), so it rendered with no explicit text color (inherited). The --danger chip (danger-surface fill, --danger text, matching .alert-danger) fixes it.

Scope / safety

Template-only class changes plus additive CSS. Every id / hx-swap-oob target is untouched (the #user-{id} row OOB, the #admin-reports-badge). Built CSS unchanged (the removed utilities are still used elsewhere). The admin header + grouped sidebar shipped under LC-510 and needed no further work here.

Verify

  • just build-css -> no diff.
  • dev/cargo test --test routes_admin_bridges -> 10/10 (renders every status chip; asserts the status text).
  • dev/cargo test --test routes_admin_last_admin -> 3/3 (renders the user rows).

🤖 Generated with Claude Code

https://claude.ai/code/session_011jXpZXXwpB36MvTr6JrGXN

## What Admin tables carried **three** different status-indicator idioms: enclaves used the shared `.lc-pill`, bridges hand-rolled an `inline-block` chip (four variants), and `user_row` / `bots` used plain colored text. This standardizes everything on `.lc-pill`, extended with semantic variants (`--success` / `--warning` / `--danger` / `--neutral`) that reuse the same token pairs already contrast-verified for the `.alert-*` callouts. The retention toggle's `--on` / `--off` variants are kept unchanged. Applied to: - **Bridge health**: `healthy` (success) / `errored` (danger) / `stale` (warning) / `pending` (neutral) - **User state**: banned (danger) / muted (warning) / active (neutral) - **Bot state**: disabled (danger) / active (neutral) ## Latent bug fixed The old bridges "errored" chip used `text-danger-surface-content`, which is **not a real token** (the danger family has no `-surface-content`, per LC-215), so it rendered with no explicit text color (inherited). The `--danger` chip (danger-surface fill, `--danger` text, matching `.alert-danger`) fixes it. ## Scope / safety Template-only class changes plus additive CSS. Every `id` / `hx-swap-oob` target is untouched (the `#user-{id}` row OOB, the `#admin-reports-badge`). Built CSS unchanged (the removed utilities are still used elsewhere). The admin **header** + grouped sidebar shipped under LC-510 and needed no further work here. ## Verify - `just build-css` -> no diff. - `dev/cargo test --test routes_admin_bridges` -> **10/10** (renders every status chip; asserts the status text). - `dev/cargo test --test routes_admin_last_admin` -> **3/3** (renders the user rows). 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_011jXpZXXwpB36MvTr6JrGXN
feat(admin): unify status indicators onto one status-chip vocabulary (LC-561 / LC-UI-08)
All checks were successful
check-secrets / Nosey parker (push) Successful in 7s
check-secrets / Kingfisher (push) Successful in 8s
check-secrets / TruffleHog (push) Successful in 10s
check-secrets / TruffleHog (pull_request) Successful in 8s
check-secrets / Nosey parker (pull_request) Successful in 8s
check-secrets / Kingfisher (pull_request) Successful in 11s
Check / clippy + fmt + tests (pull_request) Successful in 6m24s
Create release / Create release from merged PR (pull_request) Has been skipped
82b7251e53
Admin tables carried three different status-indicator idioms: enclaves used the shared .lc-pill, bridges hand-rolled an inline-block chip (four variants), and user_row / bots used plain colored text. Standardize on .lc-pill, extended with semantic variants (--success / --warning / --danger / --neutral) that reuse the same token pairs already contrast-verified for the .alert-* callouts. The retention toggle's --on / --off variants are kept as-is.

Applied to: bridge health (healthy / errored / stale / pending), user ban + mute + active state, and bot enabled / disabled state. The old bridges "errored" chip used text-danger-surface-content, which is not a real token (the danger family has no -surface-content, LC-215), so it rendered with no explicit text color; the --danger chip (danger-surface fill, --danger text, matching .alert-danger) fixes that latent bug.

Template-only class changes plus additive CSS; every id / hx-swap-oob target (the #user-{id} row OOB, the reports badge) is untouched. Built CSS unchanged (the removed utilities are still used elsewhere). The admin header + grouped sidebar shipped under LC-510 and needed no further work. Verified: routes_admin_bridges 10/10 (renders every status chip) and routes_admin_last_admin 3/3 (renders the user rows).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011jXpZXXwpB36MvTr6JrGXN
longjacksonle deleted branch feat/LC-561-admin-status-chips 2026-07-09 21:35:18 +02:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
psa-systems/lets-chat!531
No description provided.