Desktop is switching from the native Windows titlebar to a custom one
rendered in the renderer (frameless BrowserWindow + custom Min/Max/Close).
The bar is 32px tall — the same height Windows draws its system
titlebar — so expose it as a token here for any future Desktop layout
that needs to subtract it.
Desktop's core-download dialog needs to show progress while the server
returns no Content-Length (some mirrors omit it; the SnowLuma core
release artifact does have it but GitHub's CDN sometimes strips it on
redirects). Hard-coded 50% was a placeholder.
Add an `indeterminate` boolean prop: when true, render a marquee bar
that animates left-to-right indefinitely. When false, render the
familiar bytes-done / bytes-total fill at `value%`. Hooked up via a new
`@keyframes progress-marquee` in theme.css.
Also dropped the bar's CSS transition from 500ms → 200ms so live
download updates feel responsive instead of laggy.
Polish pass that an earlier edit lost:
- Add `success` and `warning` button variants (semantic colour pairs
consumers can reach for in confirm dialogs / status actions).
- Outline gets a real card background + shadow so it pops on tinted
surfaces (previously bg-transparent looked invisible on muted/40 rows).
- Tighter motion: explicit transition list + `active:translate-y-px` so
clicks feel mechanical.
- New size `icon-xs` for inline action buttons that need to fit in a
log-row toolbar without ballooning the row height.
- Default radius bumped to `rounded-lg`; sm stays `rounded-md`.
CSS grid's default `min-width: auto` per track was letting long
selected-option text and file paths inside dialogs push the container
past its `max-w-lg` cap, which on Windows / smaller viewports clipped
the right edge of inputs and the Select chevron.
- DialogContent / AlertDialogContent: `grid-cols-[minmax(0,1fr)]` clamps
the single track to its container width; `w-[calc(100%-2rem)]` keeps
a 1 rem gutter to the viewport edge on small screens.
- SelectTrigger: `min-w-0` on the trigger itself plus a child-targeted
truncate (`[&>span:not([data-radix-select-icon])]:truncate`) so the
selected text shrinks before the chevron does; chevron gets `shrink-0`
for the same reason.
Both controls used `bg-muted` / `bg-background` for unchecked / thumb
which collapse to the same hue as the surrounding card in dark mode,
making them effectively invisible.
- Switch: unchecked track now bg-input (light) / bg-muted-foreground/25
(dark) with a shadow-inner; thumb uses bg-card (light) /
bg-foreground/95 (dark) so it pops in both states.
- Checkbox: explicit bg-card + hover:border-border/80; slightly larger
radius (5px) for visual rhythm with the rest of the surface.