14 Commits
Author SHA1 Message Date
DrSmoothl 5924346823 chore(release): v1.9.2 2026-05-24 18:01:50 +08:00
DrSmoothl 607a7b319b chore(release): v1.9.1 2026-05-21 17:33:35 +08:00
DrSmoothl 2de1ff4f0d chore(release): v1.9.0 2026-05-20 14:21:03 +08:00
DrSmoothl 941e60dea5 chore(release): v1.8.5 2026-05-18 15:03:45 +08:00
DrSmoothl b94775cb6f chore(release): v1.8.4 2026-05-18 13:31:17 +08:00
DrSmoothl c6f4d5c5a2 chore(release): v1.8.3 2026-05-18 00:10:43 +08:00
DrSmoothl 90884dfbb1 chore(release): v1.8.2 2026-05-17 19:28:58 +08:00
DrSmoothl 0d54fd83c6 feat(ui): add --titlebar-height token for Desktop's frameless window
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.
2026-05-17 16:49:27 +08:00
DrSmoothl b3e37e2f7c feat(ui): add indeterminate mode to Progress
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.
2026-05-17 16:31:30 +08:00
DrSmoothl d7252b6c31 feat(ui): Button success/warning variants + active translate + icon-xs
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`.
2026-05-17 14:42:29 +08:00
DrSmoothl 593f5f42bc fix(ui): Dialog and Select no longer overflow at narrow widths
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.
2026-05-17 14:24:09 +08:00
DrSmoothl 8a94188dc6 fix(ui): dark-mode Switch + Checkbox visibility
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.
2026-05-17 14:11:29 +08:00
DrSmoothl 3e943e8f0d feat(ui): refresh theme tokens + add Popover/StatusDot/EmptyState/Kbd
Visual overhaul to give @snowluma/ui a coherent, accessible identity.

Tokens (styles/theme.css)
- Deeper dark-mode surface ramp with more contrast between background /
  card / popover so dropdowns and dialogs read clearly in dark mode
- New radius scale (xs → 3xl) anchored at 0.625rem for tighter feel
- Layered shadow tokens (xs/sm/md/lg/xl) that adapt to mode
- Semantic success / warning / info / destructive colour + foreground
  pairs replacing ad-hoc lookups
- `--chrome-height` (52px) for consistent top-bar / sidebar header height
- Utilities: `hover-lift`, `surface-glass`, `surface-gloss`; consumer-
  scoped scrollbar styling so native scrollbars match
- Note: consumers must also `@import "tw-animate-css";`

Components
- Select: solid bg-popover + ring-1 ring-foreground/5; rotating chevron
  on open state; rounded-xl menu with shadow-xl (fixes the transparent
  dropdown bug)
- Dialog / AlertDialog: bg-popover + ring; backdrop-blur on overlay;
  slide-in motion
- Tooltip: ring + zoom-in motion, max-w-xs for long labels
- Button: explicit transition list with active:translate-y-px; success /
  warning variants; icon-xs size
- Input: hover border + focus ring + aria-invalid handling
- Card: tighter line-height + typography
- Badge: variants for success / warning / info / soft, size scale
- ScrollArea: hover-only mode by default, slightly thicker thumb

New components
- Popover (radix wrapper) — for menus / inline overlays
- StatusDot — semantic colored dot (replaces ad-hoc 🟢/🟡/🔴 emoji)
- EmptyState — uniform placeholder for "nothing here yet" surfaces
- Kbd — inline keyboard-key label
2026-05-17 13:56:11 +08:00
DrSmoothl a8661ea216 feat(ui): add @snowluma/ui shared UI library
Lifts the shadcn primitives + Tailwind 4 theme tokens from webui into a
dedicated workspace package consumable by both webui and SnowLumaDesktop.

- 14 primitives (Button, Dialog, AlertDialog, Input, Label, Checkbox,
  Select, Switch, Tabs, Card, Avatar, Badge, Progress, ScrollArea,
  Separator, Sheet, Skeleton, Tooltip) + sonner Toaster wrapper
- Tailwind 4 theme tokens exported via styles/theme.css
- tsup ESM build with declaration files
- publishConfig.access=public mirroring @snowluma/sdk

Consumers @import '@snowluma/ui/styles/theme.css' for tokens and add an
@source directive to scan the package for utility classes.
2026-05-17 00:23:37 +08:00