@@ -5,7 +5,7 @@ import React from "react"
5
5
import { speakers , speakerSessions } from "../../_data"
6
6
import { metadata as layoutMetadata } from "../../layout"
7
7
8
- import { eventsColors , HERO_MARQUEE_ITEMS } from "../../utils"
8
+ import { HERO_MARQUEE_ITEMS } from "../../utils"
9
9
import { BackLink } from "../../schedule/_components/back-link"
10
10
import { NavbarPlaceholder } from "../../components/navbar"
11
11
import { CtaCardSection } from "../../components/cta-card-section"
@@ -14,10 +14,10 @@ import { SchedSpeaker } from "@/app/conf/2023/types"
14
14
import { Button } from "@/app/conf/_design-system/button"
15
15
import { MarqueeRows } from "../../components/marquee-rows"
16
16
import { GET_TICKETS_LINK } from "../../links"
17
- import { Anchor } from "@/app/conf/_design-system/anchor"
18
17
import { SpeakerTags } from "../../components/speaker-tags"
19
18
import { SpeakerLinks } from "../../components/speaker-links"
20
19
import { LongSessionCard } from "./long-session-card"
20
+ import Image from "next-image-export-optimizer"
21
21
22
22
type SpeakerProps = { params : { id : string } }
23
23
@@ -51,8 +51,9 @@ export default function SpeakerPage({ params }: SpeakerProps) {
51
51
52
52
return (
53
53
< >
54
- < NavbarPlaceholder className = "top-0 bg-neu-50 before:bg-white/40 dark:bg-neu-0 dark:before:bg-blk/30" />
55
- < main className = "gql-all-anchors-focusable gql-conf-navbar-strip text-neu-900 before:bg-white/40 before:dark:bg-blk/30" >
54
+ { /* gql-conf-navbar-strip border-t border-neu-200 bg-neu-0 py-8 text-neu-900 before:bg-white/40 dark:border-neu-100 before:dark:bg-blk/30 xl:py-16 */ }
55
+ < NavbarPlaceholder className = "top-0 bg-neu-50 before:bg-neu-50/40 dark:bg-neu-0 dark:before:bg-blk/30" />
56
+ < main className = "gql-all-anchors-focusable gql-conf-navbar-strip text-neu-900 before:bg-neu-50/40 before:dark:bg-blk/30" >
56
57
< div className = "bg-neu-50 dark:bg-neu-0" >
57
58
< div className = "gql-conf-container" >
58
59
< div className = "gql-conf-section !py-0" >
@@ -115,33 +116,29 @@ function SpeakerHeader({
115
116
} ) {
116
117
return (
117
118
< header className = { className } >
118
- < BackLink year = "2025" kind = "schedule" />
119
- < p
120
- className = { clsx (
121
- "mt-8 text-neu-700" ,
122
- speakers . length >= 4 ? "typography-body-lg" : "typography-h3" ,
123
- ) }
124
- >
125
- { speakers . map ( ( s , i ) => (
126
- < React . Fragment key = { s . username } >
127
- < Anchor
128
- href = { `/conf/${ year } /speakers/${ s . username } ` }
129
- className = "decoration-neu-500 hover:underline dark:decoration-neu-100"
130
- >
131
- { s . name }
132
- </ Anchor >
133
- { i !== speakers . length - 1 && < span > , </ span > }
134
- </ React . Fragment >
135
- ) ) }
136
- </ p >
137
- < p className = "typography-h3" > Meet the speaker</ p >
138
- < h1 className = "typography-h1 mt-2" > { speaker . name } </ h1 >
139
- < div className = "flex flex-wrap items-center justify-between gap-2 lg:gap-x-4 xl:gap-x-8" >
140
- { [ speaker . position , speaker . company === "-" ? "" : speaker . company ]
141
- . filter ( Boolean )
142
- . join ( ", " ) }
143
- < SpeakerTags speaker = { speaker } />
119
+ < div >
120
+ < BackLink year = "2025" kind = "schedule" />
121
+ < p className = "typography-h3 mt-4 lg:mt-20" > Meet the speaker</ p >
122
+ < h1 className = "typography-h1 mt-2" > { speaker . name } </ h1 >
123
+ < div className = "flex flex-wrap items-center justify-between gap-2 lg:gap-x-4 xl:gap-x-8" >
124
+ { [ speaker . position , speaker . company === "-" ? "" : speaker . company ]
125
+ . filter ( Boolean )
126
+ . join ( ", " ) }
127
+ < SpeakerTags speaker = { speaker } />
128
+ </ div >
144
129
</ div >
130
+ { speaker . avatar && (
131
+ < div className = "relative overflow-hidden" >
132
+ < div className = "absolute inset-0 z-[1] bg-sec-lighter opacity-90 mix-blend-multiply" />
133
+ < Image
134
+ src = { speaker . avatar }
135
+ alt = ""
136
+ width = { 464 }
137
+ height = { 464 }
138
+ className = "aspect-square size-[464px] w-full object-cover saturate-[0.1] transition-transform"
139
+ />
140
+ </ div >
141
+ ) }
145
142
</ header >
146
143
)
147
144
}
0 commit comments