diff --git a/frontend/src/App.css b/frontend/src/App.css index c5904d0..1d95c39 100644 --- a/frontend/src/App.css +++ b/frontend/src/App.css @@ -2659,32 +2659,51 @@ a.app-footer__repo:hover { max-width: 64rem; } -.creator-detail__header { +/* Creator Hero */ +.creator-hero { + display: flex; + align-items: flex-start; + gap: 1.5rem; margin-bottom: 1.5rem; + padding-bottom: 1.5rem; + border-bottom: 1px solid var(--color-border); } -.creator-detail__name { +.creator-hero__info { display: flex; - align-items: center; - gap: 0.75rem; - font-size: 1.75rem; + flex-direction: column; + gap: 0.5rem; + min-width: 0; +} + +.creator-hero__name { + font-size: 2rem; font-weight: 800; letter-spacing: -0.02em; - margin-bottom: 0.5rem; line-height: 1.2; + margin: 0; } -.creator-detail__meta { +.creator-hero__bio { + color: var(--color-text-secondary); + font-size: 1rem; + line-height: 1.6; + max-width: 48rem; + margin: 0; +} + +.creator-hero__genres { + display: flex; + flex-wrap: wrap; + gap: 0.375rem; +} + +.creator-detail__stats-bar { display: flex; align-items: center; gap: 0.75rem; flex-wrap: wrap; -} - -.creator-detail__genres { - display: inline-flex; - gap: 0.25rem; - flex-wrap: wrap; + margin-bottom: 0.5rem; } .creator-detail__stats { @@ -3164,10 +3183,20 @@ a.app-footer__repo:hover { .creators-browse__title, .topics-browse__title, - .creator-detail__name { + .creator-hero__name { font-size: 1.375rem; } + .creator-hero { + flex-direction: column; + align-items: center; + text-align: center; + } + + .creator-hero__genres { + justify-content: center; + } + .topics-grid { grid-template-columns: 1fr; } diff --git a/frontend/src/pages/CreatorDetail.tsx b/frontend/src/pages/CreatorDetail.tsx index 8344d21..6388d8e 100644 --- a/frontend/src/pages/CreatorDetail.tsx +++ b/frontend/src/pages/CreatorDetail.tsx @@ -10,7 +10,6 @@ import { Link, useParams } from "react-router-dom"; import { fetchCreator, type CreatorDetailResponse, - type CreatorTechniqueItem, } from "../api/public-client"; import CreatorAvatar from "../components/CreatorAvatar"; import SortDropdown from "../components/SortDropdown"; @@ -110,39 +109,47 @@ export default function CreatorDetail() { ← Creators - {/* Header */} -
-

{creator.name}

-
- {creator.genres && creator.genres.length > 0 && ( - - {creator.genres.map((g) => ( - - {g} - - ))} - + {/* Hero */} +
+ +
+

{creator.name}

+ {creator.bio && ( +

{creator.bio}

+ )} + {creator.genres && creator.genres.length > 0 && ( +
+ {creator.genres.map((g) => ( + {g} + ))} +
)} - - {creator.video_count} video{creator.video_count !== 1 ? "s" : ""} - {Object.keys(creator.genre_breakdown).length > 0 && ( - <> - · - - {Object.entries(creator.genre_breakdown) - .sort(([, a], [, b]) => b - a) - .map(([cat, count]) => ( - - {cat}: {count} - - ))} - - - )} -
+ {/* Stats */} +
+ + {creator.video_count} video{creator.video_count !== 1 ? "s" : ""} + + {Object.keys(creator.genre_breakdown).length > 0 && ( + + {Object.entries(creator.genre_breakdown) + .sort(([, a], [, b]) => b - a) + .map(([cat, count]) => ( + + {cat}: {count} + + ))} + + )} +
+ {/* Technique pages */}