diff --git a/frontend/src/components/ChannelPage.tsx b/frontend/src/components/ChannelPage.tsx index 122772b..1572aa7 100644 --- a/frontend/src/components/ChannelPage.tsx +++ b/frontend/src/components/ChannelPage.tsx @@ -123,6 +123,14 @@ export default function ChannelPage({ const joined = ch?.published_at ? new Date(ch.published_at).toLocaleDateString(i18n.language, { year: "numeric", month: "short" }) : null; + // Handle + stats on one compact meta line under the name (saves the separate stats row). + const metaParts = [ + ch?.handle ? `@${ch.handle.replace(/^@/, "")}` : null, + ch?.subscriber_count != null ? t("channel.subscribers", { formatted: formatViews(ch.subscriber_count) }) : null, + ch?.video_count != null ? t("channel.videoCount", { count: ch.video_count }) : null, + ch?.total_view_count != null ? t("channel.totalViews", { formatted: formatViews(ch.total_view_count) }) : null, + joined ? t("channel.joined", { date: joined }) : null, + ].filter(Boolean) as string[]; const tabClass = (active: boolean) => active ? "pb-2 text-sm font-medium border-b-2 border-fg text-fg" @@ -136,7 +144,10 @@ export default function ChannelPage({ // Match YouTube's banner: the stored bannerExternalUrl is the full 16:9 template at a // low default size, so request a crisp wide version (=w1707) and object-cover the // desktop "safe area" — the centre 2560×423 (~6:1) band — at full width. -