freezmo/components
Martin Dvorak 3aae6f3199 Desktop library pass: alignment, card weight, sidebar and theme
Layout (desktop / lg+ only):
- 40px top padding above the page title.
- Deck grid uses minmax(320px, 1fr), so two cards fill the content width
  and share a right edge with the header (same max-width container).
- Group headings only render once real folders exist; with none, a single
  quiet "All decks" label replaces "Unorganized".
- Import JSON becomes a plain text button (mobile keeps the pill).

Deck cards (desktop):
- The whole card is a link; Study is a compact secondary button instead
  of a full-width solid pill.
- The ... control is a 32px ghost button with a real ellipsis icon,
  aligned to the title's centre.
- Meta line always shows the same fields (activities · runs / Not played
  yet); the score is a separate quiet "Best 53%" stat.
- 12px rhythm between title/meta/tags/summary, 16px before the actions.
- Hover: lighter surface, stronger border, soft shadow and a 2px lift in
  light mode (pointer devices only, so touch has no sticky hover).

Sidebar (desktop rail):
- All decks + Unorganized are views above the FOLDERS label; only
  user-created folders sit under it.
- Count only on All decks. The mobile drawer is unchanged.

Theme:
- Dark: sidebar is a step darker (#181818 to #141414 vs #212121 page).
- Light: cards get a slightly stronger border (#e2e2e2) and a soft
  shadow; the sidebar divider and edge shadow are stronger too.
- Medium difficulty darkened to #7a5300 (6.2:1 on the light chip).

Mobile is untouched: layout changes are behind lg: (or the desktop prop);
theme tweaks are shared tokens.

Verified: key-gate 49/49, install sheet 64/64, retry 14/14, zoom 6/6,
deck chrome 15/15, deck fixes 15/15, final ux 12/12, contrast 20/20,
security 8/8, pwa 16/16.
2026-10-07 22:37:29 +00:00
..
activities Fix ordering giveaways, the stuck false label, add Regenerate deck 2026-10-07 11:25:22 +00:00
ApiKeyGate.tsx Lock the key gate while the on-screen keyboard is up 2026-10-07 13:00:06 +00:00
AppHeader.tsx Freezmo: self-hosted notes-to-activities study app 2026-10-06 20:56:55 +00:00
DeckCard.tsx Desktop library pass: alignment, card weight, sidebar and theme 2026-10-07 22:37:29 +00:00
FolderBar.tsx Freezmo: self-hosted notes-to-activities study app 2026-10-06 20:56:55 +00:00
icons.tsx Fix the iOS install sheet: exact Safari flow, chips, iOS blue, layout 2026-10-07 08:49:32 +00:00
InstallSheet.tsx Fix the iOS install sheet: exact Safari flow, chips, iOS blue, layout 2026-10-07 08:49:32 +00:00
LibraryScreen.tsx Desktop library pass: alignment, card weight, sidebar and theme 2026-10-07 22:37:29 +00:00
ResultsScreen.tsx Fix ordering giveaways, the stuck false label, add Regenerate deck 2026-10-07 11:25:22 +00:00
ServiceWorkerRegistrar.tsx Freezmo: self-hosted notes-to-activities study app 2026-10-06 20:56:55 +00:00
SettingsDialog.tsx Add the Install the app bottom sheet for mobile browsers 2026-10-07 08:27:43 +00:00
Sidebar.tsx Desktop library pass: alignment, card weight, sidebar and theme 2026-10-07 22:37:29 +00:00
StudyFeed.tsx Fix ordering giveaways, the stuck false label, add Regenerate deck 2026-10-07 11:25:22 +00:00
TabBar.tsx Freezmo: self-hosted notes-to-activities study app 2026-10-06 20:56:55 +00:00
ThemeToggle.tsx Freezmo: self-hosted notes-to-activities study app 2026-10-06 20:56:55 +00:00
ui.tsx Screens that already fit no longer scroll or rubber-band 2026-10-07 12:37:46 +00:00
UploadScreen.tsx Deck chrome: neutral surfaces, borders and text (no navy leftovers) 2026-10-07 09:06:18 +00:00