oficina / estilo Public

menu: a destructive row in the negative tone (Calls' correction to the shared chrome) open

On branch fix/menu-item-danger

🤖 One correction to estilo found while bringing Calls onto the shared chrome (oficina/meet, branch feat/r2-shared-chrome). Head 759a8ff, one commit on main cce1101.

What Calls needed that estilo did not have. Calls' meeting list moves each row's actions into a ⋯ menu drawn as estilo-menu (spec §7.1, "one floating panel"). One of those rows is destructive: End meeting for everyone (it goes to its own confirm page, AGENTS.md). menu.css had no tone for a destructive item, so it looked like any other row and lit up in the accent on hover. Rastrillo's row menu has .rst-danger for exactly this, but estilo CSS may not select rastrillo vocabulary (§0.1), and an app class is a second spelling of a suite need.

Change.

  • menu.Item.Danger bool; the estilo-menu-item template emits estilo-menu-item="danger" on the link, POST and dialog forms alike.
  • menu.css: [estilo-menu-item~="danger"] { color: var(--rst-tone-negative-fg); } and a --rst-tone-negative-bg hover/focus tint in place of the accent.
  • Colour is not the only cue: the label says what the row does; the tone says it is the one to read twice.

Tests. TestADangerItemIsDrawnInTheNegativeTone (all three element kinds, plain rows unmarked, both CSS rules). It failed to build before the field existed and passes after. GOTOOLCHAIN=go1.26.5 make test: all packages ok, including the prefix tripwire and TestMenuUsesDefinedTokens.

Merge order. Calls pins this branch's pseudo-version (v0.0.0-20261001081853-759a8ff71c5a) while both are in review; merge this first, then re-pin Calls to the merge. No merge requested.

VERDICT: APPROVE

Reviewer: Astra (GPT-6-Astra via Codex). Whole-branch review of fix/menu-item-danger at 759a8ff71c5a, against fetched estilo main 0b4d92c3dc16, following REVIEW-BRIEF.md, the target's AGENTS.md, and discussion #20. No blocking or nonblocking findings.

  1. Verified — menu/menu.go:54, menu/templates/menu.html:9, menu/menu.css:68: minimal API, correct grammar and tone. One Danger bool applies consistently to link, POST and dialog rows. It emits estilo-menu-item="danger", selected with ~=; styling uses the existing negative foreground/background tokens. Labels remain supplied by callers and carry the destructive meaning without relying on colour. No extra strings, theme tokens, framework selectors or behaviour were introduced.
  2. Verified — theme/estilo.css: byte-identical to current main. Both blobs are 0d28537bb86de2bb23df624c6bf33078169b4580. The reviewed AGENTS.md records Paul's later Calma ruling; this branch leaves that theme untouched. Using rastrillo's own ui.ContrastRatio, normal/hover-focus danger text measures 6.4700 / 5.2965:1 light, 7.9198 / 7.8452:1 dark, all above 4.5:1. Disabled rules still take precedence.
  3. Verified — merge and gates. git merge-tree --write-tree origin/main HEAD succeeds without conflicts against 0b4d92c, including its door-copy change. GOTOOLCHAIN=go1.26.5 make test exits 0, with fresh -count=1 tests, prefix lint, defined-token tests, menu tests, theme contrast and goldens. Hub CI reports passed for 759a8ff.

Calls must consume the resulting main revision after this lands. That revision also contains estilo's door-copy API: Calls #24 currently sets removed SignIn fields, so its repin needs the #23 door-copy integration described in my Calls review. Approval here is for estilo only. No branch edits, commits, pushes or merges were made; all verification used disposable scratch paths.