feat(feed): Show chips in the toolbar + key+direction sort

1) Move the Show view filter (Unwatched/In progress/All/Watched/Hidden) up into the
   toolbar chip row as its own single-select group, divided from the content-type chips;
   removed the 'show' sidebar widget (sidebar now = Upload date / Language / Topic).
2) Rework ordering like the Playlists page: a sort-key dropdown (Date, Popular, Duration,
   Name, Channel subscribers, Channel priority, Surprise me) + a single asc/desc arrow
   toggle, instead of separate directional entries. 'Most viewed' is now 'Popular'.
   Backend gains the missing directions (views_asc, title_desc, subscribers_asc,
   priority_asc); the frontend maps (key, dir) -> the backend sort string, so FeedFilters
   is unchanged. Trilingual (feed.sortKey.*, feed.dirAsc/dirDesc). Feed.tsx normalized to LF.
This commit is contained in:
npeter83 2026-06-16 02:46:26 +02:00
parent a44bdf7fdc
commit 4921a95d09
7 changed files with 115 additions and 46 deletions

View file

@ -2,14 +2,13 @@
// collapsed, and which are hidden. Persisted to localStorage and the server-side
// `preferences` blob so it follows the account.
// `sort` and `content` moved to the feed toolbar (above the cards); they are no longer
// sidebar widgets. normalizeLayout drops them from any persisted layout automatically.
export type WidgetId = "show" | "date" | "language" | "topic";
// `show`, `sort` and `content` moved to the feed toolbar (above the cards); they are no
// longer sidebar widgets. normalizeLayout drops them from any persisted layout automatically.
export type WidgetId = "date" | "language" | "topic";
export const ALL_WIDGETS: WidgetId[] = ["show", "date", "language", "topic"];
export const ALL_WIDGETS: WidgetId[] = ["date", "language", "topic"];
export const WIDGET_TITLES: Record<WidgetId, string> = {
show: "Show",
date: "Upload date",
language: "Language",
topic: "Topic",