@@ -14,32 +14,36 @@ import { ImageLoaded } from "./image-loaded"
14
14
15
15
export function Hero ( ) {
16
16
return (
17
- < section className = "isolate flex flex-col justify-center bg-pri-base text-neu-0 dark:bg-pri-darker dark:text-neu-900" >
18
- < div className = "relative mx-auto flex w-[90rem] max-w-full flex-col gap-12 overflow-hidden p-4 pt-6 md:gap-12 md:bg-left md:px-24 xl:pb-16 xl:pt-24 " >
17
+ < article className = "relative isolate flex flex-col justify-center bg-pri-base text-neu-0 dark:bg-pri-darker dark:text-neu-900" >
18
+ < article className = "relative" >
19
19
< Stripes />
20
- < div className = "flex gap-10 max-md:flex-col md:justify-between" >
21
- < h1 className = "flex flex-wrap gap-2 typography-d1" >
22
- < span > GraphQLConf</ span >
23
- < span className = "text-sec-base" > 2025</ span >
24
- </ h1 >
25
- < div className = "flex h-min items-center gap-4" >
26
- < span className = "whitespace-pre typography-body-sm" > hosted by</ span >
27
- < img
28
- src = { graphqlFoundationWordmarkSvg . src }
29
- alt = "GraphQL Foundation"
30
- width = { 128 }
31
- height = { 34.877 }
32
- />
20
+ < div className = "gql-conf-container mx-auto flex max-w-full flex-col gap-12 overflow-hidden p-4 pt-6 sm:p-8 sm:pt-12 md:gap-12 md:bg-left md:p-12 lg:px-24 lg:pb-16 lg:pt-24" >
21
+ < div className = "flex gap-10 max-md:flex-col md:justify-between" >
22
+ < h1 className = "flex flex-wrap gap-2 typography-d1" >
23
+ < span > GraphQLConf</ span >
24
+ < span className = "text-sec-base" > 2025</ span >
25
+ </ h1 >
26
+ < div className = "flex h-min items-center gap-4" >
27
+ < span className = "whitespace-pre typography-body-sm" >
28
+ hosted by
29
+ </ span >
30
+ < img
31
+ src = { graphqlFoundationWordmarkSvg . src }
32
+ alt = "GraphQL Foundation"
33
+ width = { 128 }
34
+ height = { 34.877 }
35
+ />
36
+ </ div >
33
37
</ div >
34
- </ div >
35
38
36
- < div className = "flex flex-col gap-8" >
37
- < DateAndLocation />
38
- < Button className = "md:w-fit" href = { GET_TICKETS_LINK } >
39
- Get your tickets
40
- </ Button >
39
+ < div className = "flex flex-col gap-8" >
40
+ < DateAndLocation />
41
+ < Button className = "md:w-fit" href = { GET_TICKETS_LINK } >
42
+ Get your tickets
43
+ </ Button >
44
+ </ div >
41
45
</ div >
42
- </ div >
46
+ </ article >
43
47
< div className = "bg-[#000]" >
44
48
< Image
45
49
src = { heroPhoto }
@@ -49,7 +53,7 @@ export function Hero() {
49
53
className = "mx-auto h-[560px] w-[1920px] max-w-full object-cover"
50
54
/>
51
55
</ div >
52
- </ section >
56
+ </ article >
53
57
)
54
58
}
55
59
@@ -82,13 +86,12 @@ function Stripes() {
82
86
< ImageLoaded
83
87
role = "presentation"
84
88
image = { blurBean }
85
- className = "pointer-events-none absolute inset-x-0 bottom-[-385px] top-[-203px] -z-10 translate-y-12 opacity-0 transition duration-500 ease-linear data-[loaded=true]:translate-y-0 data-[loaded=true]:opacity-100"
89
+ className = "pointer-events-none absolute inset-x-0 bottom-[-385px] top-[-203px] -z-10 translate-y-12 opacity-0 transition duration-[400ms] ease-linear [mask-size:100%_50%] data-[loaded=true]:translate-y-0 data-[loaded=true]:opacity-100 sm:[mask-size:125%] xl:[mask-size:100%] "
86
90
// todo: animate opacity up after the image is loaded
87
91
style = { {
88
92
maskImage : `url(${ blurBean . src } )` ,
89
93
WebkitMaskImage : `url(${ blurBean . src } )` ,
90
- maskSize : "100%" ,
91
- WebkitMaskSize : "100%" ,
94
+ // maskSize: "100%", // todo: I need the newly exported full blur bean with rotation to match the mobile design.
92
95
maskRepeat : "no-repeat" ,
93
96
WebkitMaskRepeat : "no-repeat" ,
94
97
maskPosition : "center" ,
0 commit comments