diff --git a/frontend/src/pages/Channel.jsx b/frontend/src/pages/Channel.jsx index bbb5c40..d9f09a8 100644 --- a/frontend/src/pages/Channel.jsx +++ b/frontend/src/pages/Channel.jsx @@ -79,39 +79,42 @@ export default function ChannelPage() { return (
- {/* Banner */} - {channel.banner_url && ( -
- -
- )} - - {/* Channel header */} -
- {channel.thumbnail_url ? ( - {channel.name} - ) : ( -
- {channel.name?.[0]?.toUpperCase()} -
+ {/* Channel header — banner with overlay, or plain if no banner */} +
+ {channel.banner_url && ( + )} -
-

{channel.name}

-

- {[ - formatSubs(channel.subscriber_count) && `${formatSubs(channel.subscriber_count)} subscribers`, - `${channel.video_count} videos indexed`, - ].filter(Boolean).join(" · ")} -

- {channel.description && ( -

{channel.description}

+ {/* Gradient overlay */} +
+ + {/* Info row sits at the bottom of the banner */} +
+ {/* Avatar */} + {channel.thumbnail_url ? ( + {channel.name} + ) : ( +
+ {channel.name?.[0]?.toUpperCase()} +
)} -
-
+ + {/* Name + meta */} +
+

{channel.name}

+

+ {[ + formatSubs(channel.subscriber_count) && `${formatSubs(channel.subscriber_count)} subscribers`, + `${channel.video_count} videos indexed`, + ].filter(Boolean).join(" · ")} +

+
+ + {/* Action buttons */} +
{dlResult != null && ( {dlResult === 0 ? "Already up to date" : `${dlResult} queued`} @@ -127,7 +130,7 @@ export default function ChannelPage() { @@ -136,15 +139,21 @@ export default function ChannelPage() { disabled={followMut.isPending} className={`text-sm font-medium px-4 py-2 rounded-lg transition-colors ${ isFollowed - ? "bg-zinc-700 text-zinc-300 hover:bg-zinc-600" - : "bg-zinc-800 text-zinc-300 hover:bg-zinc-700" + ? "bg-zinc-700/80 text-zinc-300 hover:bg-zinc-600" + : "bg-zinc-800/80 text-zinc-300 hover:bg-zinc-700" }`} > {isFollowed ? "Following" : "Follow"}
+
+ {/* Description below banner */} + {channel.description && ( +

{channel.description}

+ )} + {/* Video grid */} {loadingVideos ? (