From 94f74215e2f782de0ac665610b924f91c751ee04 Mon Sep 17 00:00:00 2001 From: Mattias Tall Date: Tue, 26 May 2026 17:21:02 +0200 Subject: [PATCH] Consistency sweep: fix switcher layout, gaps, buttons, empty states MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Home: mode switcher moved to its own row (no longer crammed next to title on mobile), hide-watched simplified to text-only toggle - Home/History/Discovery: pagination buttons text-sm → text-xs, page counter text-sm → text-xs - Liked/Downloads/SearchResults: top-level gap-8 → gap-6 - Liked: refresh button px-4 py-2 text-sm → px-3 py-1.5 text-xs - Empty states: standardize to text-zinc-500 text-sm across Queue, ContinueWatching, History, Following, Discovery, Liked - Following: "Latest uploads" tab label → "Feed" - Home: remove -mt-3 hacks from mode description rows Co-Authored-By: Claude Sonnet 4.6 --- frontend/src/pages/ContinueWatching.jsx | 2 +- frontend/src/pages/Discovery.jsx | 14 ++--- frontend/src/pages/Downloads.jsx | 2 +- frontend/src/pages/Following.jsx | 2 +- frontend/src/pages/History.jsx | 8 +-- frontend/src/pages/Home.jsx | 84 +++++++++++-------------- frontend/src/pages/Liked.jsx | 6 +- frontend/src/pages/Queue.jsx | 2 +- frontend/src/pages/SearchResults.jsx | 2 +- 9 files changed, 57 insertions(+), 65 deletions(-) diff --git a/frontend/src/pages/ContinueWatching.jsx b/frontend/src/pages/ContinueWatching.jsx index 123b5fe..3b3472b 100644 --- a/frontend/src/pages/ContinueWatching.jsx +++ b/frontend/src/pages/ContinueWatching.jsx @@ -25,7 +25,7 @@ export default function ContinueWatchingPage() {
-

Nothing in progress

+

Nothing in progress

Videos you've started but not finished will appear here.

diff --git a/frontend/src/pages/Discovery.jsx b/frontend/src/pages/Discovery.jsx index 20b73af..d1ad2e6 100644 --- a/frontend/src/pages/Discovery.jsx +++ b/frontend/src/pages/Discovery.jsx @@ -284,7 +284,7 @@ export default function DiscoveryPage() {
-

Nothing here yet

+

Nothing here yet

Follow a few channels first, then hit "Find more" to discover similar ones.

@@ -308,15 +308,15 @@ export default function DiscoveryPage() { - Page {channelPage + 1} + Page {channelPage + 1} @@ -338,15 +338,15 @@ export default function DiscoveryPage() { - Page {videoPage + 1} + Page {videoPage + 1} diff --git a/frontend/src/pages/Downloads.jsx b/frontend/src/pages/Downloads.jsx index 6b36b9c..0d39b36 100644 --- a/frontend/src/pages/Downloads.jsx +++ b/frontend/src/pages/Downloads.jsx @@ -95,7 +95,7 @@ export default function DownloadsPage() { const hasRemovable = history.length > 0 || trash.length > 0; return ( -
+

Downloads

{hasRemovable && ( diff --git a/frontend/src/pages/Following.jsx b/frontend/src/pages/Following.jsx index 544adc7..79287f8 100644 --- a/frontend/src/pages/Following.jsx +++ b/frontend/src/pages/Following.jsx @@ -709,7 +709,7 @@ export default function Following() {
-

Not following anyone yet

+

Not following anyone yet

Hit Follow on a channel while watching a video or searching.

diff --git a/frontend/src/pages/History.jsx b/frontend/src/pages/History.jsx index 30f3325..6544437 100644 --- a/frontend/src/pages/History.jsx +++ b/frontend/src/pages/History.jsx @@ -30,7 +30,7 @@ export default function History() {
) : videos.length === 0 ? (
-

No watch history yet. Start watching some videos!

+

No watch history yet. Start watching some videos!

) : ( <> @@ -43,15 +43,15 @@ export default function History() { - Page {page + 1} + Page {page + 1} diff --git a/frontend/src/pages/Home.jsx b/frontend/src/pages/Home.jsx index 286d49b..4ee6eb8 100644 --- a/frontend/src/pages/Home.jsx +++ b/frontend/src/pages/Home.jsx @@ -107,20 +107,21 @@ export default function Home() {
) : hasFollowing ? (
-
-

Home

-
+ {/* Title row + secondary controls */} +
+

Home

+
-
- {FEED_MODES.map(m => ( - - ))} -
+ {/* Mode switcher — own row, full width on mobile */} +
+ {FEED_MODES.map(m => ( + + ))} +
+ {/* Duration filter */} -
+
{[["short", "< 10 min"], ["medium", "10–30 min"], ["long", "30+ min"]].map(([val, label]) => (
)} {mode === "chronological" && ( -

All videos from channels you follow, newest first.

+

All videos from channels you follow, newest first.

)} {mode === "random" && ( -
+

Random from your discovery pool — no weighting, no ranking.

- Page {page + 1} + Page {page + 1} diff --git a/frontend/src/pages/Liked.jsx b/frontend/src/pages/Liked.jsx index 8a01251..6553206 100644 --- a/frontend/src/pages/Liked.jsx +++ b/frontend/src/pages/Liked.jsx @@ -42,7 +42,7 @@ export default function LikedPage() { } return ( -
+

Liked videos

@@ -54,7 +54,7 @@ export default function LikedPage() {
-

Queue is empty

+

Queue is empty

Hit the queue icon on any video to save it for later.

diff --git a/frontend/src/pages/SearchResults.jsx b/frontend/src/pages/SearchResults.jsx index 1edee8c..843aefb 100644 --- a/frontend/src/pages/SearchResults.jsx +++ b/frontend/src/pages/SearchResults.jsx @@ -68,7 +68,7 @@ export default function SearchResults() { const channelsFirst = channels.length > 0 && (videos.length === 0 || source === "local"); return ( -
+

Results for "{q}"