web: line the accounts row's controls up in columns !457

merged merged by cmc on 2026-09-22 04:01 UTC · krz/gitbay:web-accounts-columns into main

Discussion

cmc

Follow-up to !456 on the accounts page.

The disabled Promote loses its confirm field. It was there to keep the cell's shape, but with the clipping gone both fields showed at once and a pending row read as two identical "type to confirm" boxes, one of them inert. Dropping it is what the shape argument wanted: active and pending rows are now the same three controls in the same places.

The cell is two fixed slots, each a field, a gap and a button wide, with contents right-aligned. Sizing the slot rather than the form is what holds the columns — the role button, the access field and the access button each land on one rule whichever controls a row carries, with no element standing in for the ones it lacks.

Measured at 1680px with an account in each state. Role button x1192-1288, access field x1296-1512, access button x1528-1624, identical on all seven rows including the admin's Demote and the disabled row's Enable, which has no field. Every row one line, nothing clipped. At 375px the cell stays one line and =.tablewrap= scrolls.

Three things found on the way:

  • Right-aligning the cell alone was not enough. The enable form has no confirm field, so the disabled row's Promote sat where every other row keeps its field.
  • The generic =form.actions= rule grows its button to fill the form, which ate the whole slot, and wraps, which put the button on a line under the field. Both overridden here; the button takes a set width so the slot's arithmetic is exact.
  • The field goes 11rem to 14rem. The widest placeholder on the instance needs 176px of the 190px it now has, so nothing truncates; a long enough name still would, and the aria-label carries the instruction in full either way.

Ref #247