feat(feed): add the small-card, compact-row and tile views

Tiles answer the row view's wasted space: the actions move under the meta
into vertical slack the thumbnail already reserves, which frees ~168px of
width, so the block survives in a narrow column and the list can go
multi-column. Rows stay single-column on purpose — reading down one edge
is why that view exists.

The column count now comes from a per-view minimum width, so every
multi-column view reflows on the mechanism the card grid already used.
This commit is contained in:
2026-07-16 03:17:30 +02:00
parent 1a94411a03
commit 78f21eb46b
6 changed files with 127 additions and 54 deletions
+6
View File
@@ -5,8 +5,11 @@ import {
ArrowDown,
ArrowUp,
ArrowLeft,
Columns2,
Grid3x3,
Info,
LayoutGrid,
List,
RefreshCw,
Rows3,
Trash2,
@@ -48,7 +51,10 @@ const rollSeed = () => Math.floor(Math.random() * 1_000_000_000);
// Icon per view mode; the labels are i18n'd at render (see feed.view.*).
const VIEW_ICON: Record<FeedView, LucideIcon> = {
cards: LayoutGrid,
cardsSmall: Grid3x3,
rows: Rows3,
rowsCompact: List,
tiles: Columns2,
};
// Ordering = a key + direction (like the Playlists page), mapped to the backend sort strings