diff --git a/frontend/src/pages/Channel.jsx b/frontend/src/pages/Channel.jsx index 7659bbf..9c51d1c 100644 --- a/frontend/src/pages/Channel.jsx +++ b/frontend/src/pages/Channel.jsx @@ -78,80 +78,76 @@ export default function ChannelPage() { const isFollowed = channel.status === "followed"; return ( -
- {/* Channel header — banner with overlay, or plain if no banner */} +
+ {/* Banner */}
{channel.banner_url && ( - + )} - {/* Gradient overlay */} -
+
- {/* Info row sits at the bottom of the banner */} -
- {/* Avatar */} + {/* Avatar + name — always in the banner overlay */} +
{channel.thumbnail_url ? ( - {channel.name} + {channel.name} ) : ( -
+
{channel.name?.[0]?.toUpperCase()}
)} - - {/* Name + meta */}
-

{channel.name}

-

+

{channel.name}

+

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

- - {/* Action buttons */} -
- {dlResult != null && ( - - {dlResult === 0 ? "Already up to date" : `${dlResult} queued`} - - )} - - - -
+ {/* Desktop action buttons inline */} +
+ + + +
- {/* Description below banner */} + {/* Mobile action row — below banner */} +
+ + + +
+ + {dlResult != null && ( +

+ {dlResult === 0 ? "Already up to date" : `${dlResult} downloads queued`} +

+ )} + + {/* Description */} {channel.description && ( -

{channel.description}

+

{channel.description}

)} {/* Video grid */}