diff --git a/crates/core/src/alert.rs b/crates/core/src/alert.rs index 8b2d19b..57eb08c 100644 --- a/crates/core/src/alert.rs +++ b/crates/core/src/alert.rs @@ -126,7 +126,13 @@ impl RenderOnce for Alert { let muted_foreground = theme.colors.muted_foreground; let muted = theme.colors.muted; let surface = theme.colors.surface; - let border = theme.colors.border; + + let border = if theme.borders.overlays { + theme.colors.border + } else { + surface + }; + let shadows = theme.elevations.popover.shadows(); let metrics = theme.sizes.resolve(Size::Medium); let icon_size = metrics.icon_size; @@ -190,7 +196,7 @@ impl RenderOnce for Alert { .id((self.id, "alert-close")) .flex_none() .cursor_pointer() - .p_0p5() + .p_1() .rounded(theme.radius.sm) .hover(|style| style.bg(muted)) .child( diff --git a/docs/CHECKLIST.md b/docs/CHECKLIST.md index 41ce6e9..1192583 100644 --- a/docs/CHECKLIST.md +++ b/docs/CHECKLIST.md @@ -14,7 +14,6 @@ is the first downstream consumer; its screens drive the order. Platform metric adoption continues one component at a time; each stop goes through the review gate and a gallery pass. -- [ ] **Alert platform chrome** — overlay border gate. - [ ] **Combobox platform chrome** — popup border behind `Theme::borders.overlays`; the trigger follows the input stop's field treatment. @@ -127,6 +126,10 @@ Gaps surfaced by the signed comparison; ordered by signed's usage. it flips above the parent when it would overflow the window bottom (the panel records its own height after the first frame); unanchored tooltips fall back to the cursor-offset wrapper +- [x] Alert platform chrome — the banner border behind + `Theme::borders.overlays` (and dark mode), taking the surface color + where the platform paints none; it rides the popover elevation, so + dark mode's no-shadow rule applies to it too - [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