@@ -20,6 +20,7 @@ import { eventsColors } from "../../utils"
20
20
import { PinIcon } from "../../pixelarticons/pin-icon"
21
21
import { CalendarIcon } from "../../pixelarticons/calendar-icon"
22
22
import { SpeakerCard } from "../../components/speaker-card"
23
+ import { Anchor } from "@/app/conf/_design-system/anchor"
23
24
24
25
function getEventTitle ( event : ScheduleSession , speakers : string [ ] ) : string {
25
26
let { name } = event
@@ -86,10 +87,10 @@ export default function SessionPage({ params }: SessionProps) {
86
87
< div className = "gql-conf-container gql-conf-navbar-strip text-neu-900 before:bg-white/40 before:dark:bg-blk/30" >
87
88
< div className = "mx-auto max-w-[1088px] py-10" >
88
89
< section className = "mx-auto min-h-[80vh] flex-col justify-center px-2 sm:px-0 lg:justify-between" >
89
- < SessionHeader event = { event } eventTitle = { eventTitle } />
90
+ < SessionHeader event = { event } eventTitle = { eventTitle } year = "2025" />
90
91
< SessionVideo event = { event } eventTitle = { eventTitle } />
91
92
< SessionSpeakers event = { event } />
92
- < p className = "py-8 typography-body-lg lg:py-10" >
93
+ < p className = "typography-body-lg py-8 lg:py-10" >
93
94
{ event . description }
94
95
</ p >
95
96
@@ -144,16 +145,39 @@ function SessionTags({ session }: { session: ScheduleSession }) {
144
145
function SessionHeader ( {
145
146
event,
146
147
eventTitle,
148
+ year,
147
149
} : {
148
150
event : ScheduleSession
149
151
eventTitle : string | null
152
+ year : number | `${number } `
150
153
} ) {
154
+ const speakers = event . speakers || [ ]
155
+
151
156
return (
152
157
< header >
153
158
< BackLink year = "2025" kind = "schedule" />
154
- < h1 className = "my-6 typography-h2" > { eventTitle } </ h1 >
159
+ < p
160
+ className = { clsx (
161
+ "mt-8 text-neu-700" ,
162
+ speakers . length >= 4 ? "typography-body-lg" : "typography-h3" ,
163
+ ) }
164
+ >
165
+ { speakers . map ( ( s , i ) => (
166
+ < >
167
+ < Anchor
168
+ key = { s . username }
169
+ href = { `/conf/${ year } /speakers/${ s . username } ` }
170
+ className = "decoration-neu-500 hover:underline dark:decoration-neu-100"
171
+ >
172
+ { s . name }
173
+ </ Anchor >
174
+ { i !== speakers . length - 1 && < span > , </ span > }
175
+ </ >
176
+ ) ) }
177
+ </ p >
178
+ < h1 className = "typography-h2 mb-6 mt-3" > { eventTitle } </ h1 >
155
179
< div className = "flex flex-wrap items-center justify-between gap-2" >
156
- < div className = "flex flex-col gap-4 typography-body-md md:flex-row md:gap-6" >
180
+ < div className = "typography-body-md flex flex-col gap-4 md:flex-row md:gap-6" >
157
181
< div className = "flex items-center gap-2" >
158
182
< CalendarIcon className = "size-5 text-sec-darker dark:text-sec-light/90 sm:size-6" />
159
183
< time dateTime = "2025-09-08" > September 08</ time >
@@ -175,11 +199,7 @@ function SessionSpeakers({ event }: { event: ScheduleSession }) {
175
199
return (
176
200
< div className = "mt-8 flex flex-col flex-wrap gap-5 lg:flex-row" >
177
201
{ event . speakers ! . map ( speaker => (
178
- < SpeakerCard
179
- key = { speaker . username }
180
- speaker = { speaker }
181
- year = "2025"
182
- />
202
+ < SpeakerCard key = { speaker . username } speaker = { speaker } year = "2025" />
183
203
) ) }
184
204
</ div >
185
205
)
0 commit comments