audit input

This commit is contained in:
2026-11-07 17:00:36 +07:00
parent fd36ada35e
commit ffbb732f5f
9 changed files with 437 additions and 144 deletions
+18 -9
View File
@@ -9,17 +9,14 @@ is the first downstream consumer; its screens drive the order.
## Next
- [ ] **Input platform chrome** — field border behind
`Theme::borders.fields`; focus split between the ring shadow and
border recolor via `Theme::borders.focus_ring`.
- [ ] **Select platform chrome** — the input treatment on the trigger; the
popup border behind `Theme::borders.overlays`.
## Queue — to follow
Platform metric adoption continues one component at a time; each stop goes
through the review gate and a gallery pass.
- [ ] **Select platform chrome** — the input treatment on the trigger; the
popup border behind `Theme::borders.overlays`.
- [ ] **Menu platform chrome** — overlay border gate; paddings, separators,
and the row min-height through `Theme::spacing` and the stated menu
row height.
@@ -87,13 +84,25 @@ Gaps surfaced by the signed comparison; ordered by signed's usage.
### core (`crates/core`)
- [x] Button platform chrome — the filled variants' 1px border gated behind
`Theme::borders.buttons` (Windows / KDE keep it, macOS / GNOME paint
fills, ghost stays borderless); icon-bearing buttons pad with
`dense_padding_x` instead of `padding_x`
- [x] Button platform chrome — every variant always paints the hairline
border, sized outside the stated control height (`BORDER_WIDTH`); where
the platform paints no border (`Theme::borders.buttons`, ghost) the
border takes the fill's color and disappears, so sizes match across
platforms; icon-bearing buttons pad with `dense_padding_x` instead of
`padding_x`
- [x] Button loading state — `.loading(true)` shows the spinner in place of
the icon and suppresses activation; Spinner gained a `.color` override
for accent-filled surfaces
- [x] Input platform chrome — the field always paints the hairline border,
sized outside the stated field height; where the platform paints no
border (`Theme::borders.fields`) it takes the field's fill; focus
recolors the border on Windows / KDE and paints the accent ring on
macOS / GNOME via `Theme::borders.focus_ring`; the shared `focus_ring`
band paints at half ink (every focusable control picks it up)
- [x] Input prefix / suffix — elements docked inside the field's edges,
typically small ghost buttons; a docked click activates the control
without reaching the field's caret handler, and the text region shrinks
to make room
- [x] Button, Checkbox, Switch, Radio + RadioGroup, Toggle, Link, Slider,
Progress, Avatar (image + seeded pixel-art fallback)
- [x] Spinner — painted ring + rotating-icon variant, indeterminate and