audit button

This commit is contained in:
2026-11-07 15:16:25 +07:00
parent d696b1e707
commit fd36ada35e
7 changed files with 157 additions and 314 deletions
+34 -12
View File
@@ -9,18 +9,34 @@ is the first downstream consumer; its screens drive the order.
## Next
- [ ] **Platform metric adoption** — update components one at a time
through the review gate against the landed theme tokens. The stated
metrics and the radius ladder already flow through the size table,
so each stop covers border + focus chrome (`Theme::borders`), the
spacing unit (`Theme::spacing`), and the component's stated dims:
button (the API template) first, then input, select, menu, popover,
dialog, toast, tooltip, alert, combobox, command palette, switch;
per-platform targets in
[platform-metrics-audit.md](platform-metrics-audit.md).
- [ ] **Input platform chrome** — field border behind
`Theme::borders.fields`; focus split between the ring shadow and
border recolor via `Theme::borders.focus_ring`.
## 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.
- [ ] **Popover platform chrome** — overlay border gate; the anchor gap
through `Theme::spacing`.
- [ ] **Dialog platform chrome** — overlay border gate.
- [ ] **Toast platform chrome** — overlay border gate.
- [ ] **Tooltip platform chrome** — overlay border gate.
- [ ] **Alert platform chrome** — overlay border gate.
- [ ] **Combobox platform chrome** — popup border behind
`Theme::borders.overlays`; the trigger follows the input stop's field
treatment.
- [ ] **Command palette platform chrome** — overlay border gate.
- [ ] **Switch platform chrome** — stated track and knob dims
(`switch_height` / `switch_width` / `switch_knob`, inset and travel
derived); borderless knob.
Gaps surfaced by the signed comparison; ordered by signed's usage.
- [ ] **Virtual list** — generic virtualized variable-height rows with a
@@ -61,9 +77,8 @@ Gaps surfaced by the signed comparison; ordered by signed's usage.
metrics and the full radius ladder per platform, Linux root fonts
(GNOME gsettings `font-name`, KDE `kdeglobals font=`), per-source
border + focus chrome (`Theme::borders`), and a per-platform spacing
unit (`Theme::spacing`); findings in
[platform-metrics-audit.md](platform-metrics-audit.md). Components
adopt the tokens one by one (see Next)
unit (`Theme::spacing`). Components adopt the tokens one by one
(see Next and Queue)
### icons (`crates/icons`)
@@ -72,6 +87,13 @@ 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 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] Button, Checkbox, Switch, Radio + RadioGroup, Toggle, Link, Slider,
Progress, Avatar (image + seeded pixel-art fallback)
- [x] Spinner — painted ring + rotating-icon variant, indeterminate and