From 21c9b345405c892276798bb2b714352ce81fc33a Mon Sep 17 00:00:00 2001 From: npeter83 Date: Sat, 22 Aug 2026 07:23:20 +0200 Subject: [PATCH] feat(plex): port the filter bar to the YT-feed pattern MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bring the Plex module's filter surface in line with the feed's final shape: - Flatten the rail: PlexSidebar passes `collapsible={false}` to FilterRail so the widgets become plain always-open label + control rows (no collapse chevrons; reorder/hide in edit mode stay). Drop the rail's own "Clear all" — the chip row above the grid already owns it. - Move Sort + the Discover/Browse toggle into the applied-filter chip row, pinned right directly above the grid (a `sortView` fragment, like the feed's), and give ActiveFilterChips `flex-1` so it gets the shared responsive overflow (wide: fit + "+N" pill; narrow: single "N filters" count pill) — the chips can no longer crowd the controls off-screen. ItemCount leads its own toolbar row, matching the feed. No behaviour change to Discover, which keeps its standalone view toggle. --- frontend/src/components/PlexBrowse.tsx | 41 +++++++++++++++++-------- frontend/src/components/PlexSidebar.tsx | 17 ++-------- 2 files changed, 31 insertions(+), 27 deletions(-) diff --git a/frontend/src/components/PlexBrowse.tsx b/frontend/src/components/PlexBrowse.tsx index f49eeeac..75f86f38 100644 --- a/frontend/src/components/PlexBrowse.tsx +++ b/frontend/src/components/PlexBrowse.tsx @@ -369,6 +369,24 @@ export default function PlexBrowse() { /> ); + // Sort + the Discover/Browse toggle are tightly bound to the grid below, so on the grid view they + // live pinned to the right of the applied-filter chip row (directly above the cards), not on their + // own toolbar line — the same idiom as the Feed's `sortView`. + const sortView = ( + <> + setSort(next ?? PLEX_SORT_FALLBACK)} + label={t("plex.filter.sort")} + ascLabel={t("plex.filter.dir.asc")} + descLabel={t("plex.filter.dir.desc")} + /> +