feat: state platform metrics and chrome in theme

This commit is contained in:
2026-11-07 14:13:15 +07:00
parent 9e378ff7ff
commit d696b1e707
12 changed files with 574 additions and 73 deletions
+17 -8
View File
@@ -9,18 +9,20 @@ 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).
## Queue — to follow
Gaps surfaced by the signed comparison; ordered by signed's usage.
- [ ] **Platform metric fidelity** — native-sizing pass over the theme and
components: stated `control_height` per platform (macOS 24 measured /
Windows 32 / GNOME ≈34 / KDE ≈33), Linux root font sizes (GNOME 14.67px,
KDE 13.33px), platform overlay/sm radii, per-source border + focus
policy (macOS/GNOME borderless fills, Windows/KDE 1px), titlebar
heights (GNOME 47), a theme spacing scale, switch/icon calibration;
ranked findings in
[platform-metrics-audit.md](platform-metrics-audit.md).
- [ ] **Virtual list** — generic virtualized variable-height rows with a
scroll handle, promoted from the editor views' pattern over gpui's
`list`; signed's PR lists and commit diff drive it.
@@ -55,6 +57,13 @@ Gaps surfaced by the signed comparison; ordered by signed's usage.
- [x] Platform sources — macOS (NSColor), Windows 11 (UISettings), GNOME
(portal), KDE (kdeglobals), Omarchy (colors.toml), neutral fallback;
live watchers for each
- [x] Platform metric fidelity — stated control/input/menu-row/switch
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)
### icons (`crates/icons`)