Skip to content

Commit 4491bf3

Browse files
committed
Merge branch 'new-conf-design---landing' into new-conf-design--cta-section
2 parents 8ea02df + 2f6835d commit 4491bf3

File tree

13 files changed

+174
-58
lines changed

13 files changed

+174
-58
lines changed

src/app/conf/2025/components/become-a-sponsor/index.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@ import { StripesDecoration } from "@/app/conf/_design-system/stripes-decoration"
77

88
export function BecomeASponsor() {
99
return (
10-
<section id="sponsors" className="relative">
10+
<section id="sponsors" className="relative overflow-hidden">
1111
<Stripes />
12-
<div className="gql-conf-container gql-conf-section xl:py-16 2xl:px-64">
12+
<div className="gql-conf-container gql-conf-section xl:py-16">
1313
<header className="flex flex-col gap-x-48 gap-y-4 md:flex-row md:items-end md:justify-between">
1414
<div>
1515
<h2 className="typography-h2">Become a Sponsor</h2>

src/app/conf/2025/components/sponsors.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ const sponsorTiers: Tier[] = [
4343

4444
export function Sponsors({ heading }: SponsorsProps) {
4545
return (
46-
<section className="gql-conf-section mx-auto py-16 2xl:px-64">
46+
<section className="gql-conf-section mx-auto py-16">
4747
<h1 className="typography-h2">{heading}</h1>
4848

4949
<div className="mt-10 md:mt-16">

src/app/conf/2025/components/top-minds/index.tsx

Lines changed: 76 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,47 @@ import { HTMLAttributes } from "react"
33
import Image from "next-image-export-optimizer"
44
import type { StaticImageData } from "next/image"
55

6-
import elizabethStone from "./speakers/elizabeth-stone.webp"
7-
import kamilKisiela from "./speakers/kamil-kisiela.webp"
8-
import rajeevRajan from "./speakers/rajeev-rajan.webp"
9-
import tanmaiGopal from "./speakers/tanmai-gopal.webp"
10-
import uriGoldshtein from "./speakers/uri-goldshtein.webp"
116
import TwitterIcon from "@/icons/twitter.svg"
127
import { Button } from "@/app/conf/_design-system/button"
138
import { BECOME_A_SPEAKER_LINK } from "../../links"
9+
import { StripesDecoration } from "@/app/conf/_design-system/stripes-decoration"
10+
11+
const previousConfSpeakers = {
12+
benjie: {
13+
name: "Benjie Gillam",
14+
title: "GraphQL TSC & Spec",
15+
src: "https://avatars.sched.co/b/99/18743846/avatar.jpg.320x320px.jpg",
16+
twitter: "benjie",
17+
linkedin: "benjiegillam",
18+
},
19+
kewei: {
20+
name: "Kewei Qu",
21+
title: "Meta, Senior Staff Engineer",
22+
src: "https://avatars.sched.co/9/1a/18743864/avatar.jpg.320x320px.jpg",
23+
twitter: "kewei_qu",
24+
linkedin: "keweiqu",
25+
},
26+
donna: {
27+
name: "Donna Zhou",
28+
title: "Atlassian, GraphQL Java",
29+
src: "https://avatars.sched.co/0/1d/18743879/avatar.jpg.320x320px.jpg?e1f",
30+
linkedin: "donnazhou",
31+
},
32+
uri: {
33+
name: "Uri Goldshtein",
34+
title: "The Guild, Founder",
35+
src: "https://avatars.sched.co/8/2b/14900013/avatar.jpg.320x320px.jpg?9f1",
36+
twitter: "UriGoldshtein",
37+
linkedin: "urigo",
38+
},
39+
alessia: {
40+
name: "Alessia Bellisario",
41+
title: "Apollo, Staff Engineer",
42+
src: "https://avatars.sched.co/a/c6/18743837/avatar.jpg.320x320px.jpg?847",
43+
twitter: "alessbell",
44+
linkedin: "alessiabellisario",
45+
},
46+
}
1447

1548
interface TopMindsSectionProps extends HTMLAttributes<HTMLElement> {
1649
hasSpeakersPage?: boolean
@@ -30,47 +63,33 @@ export default function TopMindsSection({
3063
{...rest}
3164
>
3265
<div className="flex grid-cols-2 flex-wrap [@media(444px<width<743px)]:grid [@media(width<=444px)]:flex-col [@media(width<=743px)]:justify-center [@media(width>=970px)]:*:border-b-0">
33-
{/* todo: remaining socials */}
3466
<h3 className="mr-auto flex w-full grow text-pretty pb-6 pr-6 typography-h2 [@media(width>857px)]:basis-0">
3567
Meet the top industry minds
3668
</h3>
3769
<SpeakerCard
38-
name="Uri Goldshtein"
39-
title="The Guild — Founder"
40-
src={uriGoldshtein}
41-
linkedin="urigo"
42-
twitter="UriGoldshtein"
70+
{...previousConfSpeakers.benjie}
71+
stripes="linear-gradient(80deg, hsl(var(--color-pri-base)) 0%, hsl(var(--color-pri-base)) 5%, transparent 40%, transparent)"
4372
/>
4473
<SpeakerCard
45-
name="Elizabeth Stone"
46-
title="Netflix — CTO"
47-
src={elizabethStone}
48-
linkedin="elizabeth-stone-608a754"
74+
{...previousConfSpeakers.kewei}
4975
className="[@media(width<=742px)]:border-l"
76+
stripes="radial-gradient(circle at bottom right, hsl(var(--color-pri-base)) 0%, hsl(var(--color-pri-base)) 10%, transparent 40%, transparent)"
5077
/>
5178
<div className="flex grow border-sec-dark [@media(width<970px)]:contents [@media(width>=970px)]:border-t [@media(width>=970px)]:*:border-t-0">
5279
<SpeakerCard
53-
name="Kamil Kisiela"
54-
title="The Guild — Developer"
55-
src={kamilKisiela}
56-
linkedin="kamilkisiela"
57-
twitter="kamilkisiela"
80+
{...previousConfSpeakers.donna}
5881
className="[@media(744px<=width<=970px)]:first-of-type:border-l-0"
82+
stripes="radial-gradient(ellipse at top left, hsl(var(--color-pri-base)) 0%, hsl(var(--color-pri-base)) 5%, transparent 40%, transparent, transparent 85%, black 100%)"
5983
/>
6084
<SpeakerCard
61-
name="Rajeev Rajan"
62-
title="Atlassian — CTO"
63-
src={rajeevRajan}
64-
linkedin="rajeev-rajan"
85+
{...previousConfSpeakers.uri}
6586
className="[@media(639px<=width<=970px)]:border-l"
87+
stripes="linear-gradient(-40deg, hsl(var(--color-pri-base)) 0%, hsl(var(--color-pri-base)) 5%, transparent 40%, transparent)"
6688
/>
6789
<SpeakerCard
68-
name="Tanmai Gopal"
69-
title="Hasura — CEO & Co-Founder"
70-
src={tanmaiGopal}
71-
twitter="tanmaigo"
72-
linkedin="tanmaig"
90+
{...previousConfSpeakers.alessia}
7391
className="[@media(width<744px)]:border-l"
92+
stripes="radial-gradient(circle at top left, transparent 0%, transparent 65%, black 90%)"
7493
/>
7594
<div className="mt-6 flex shrink-0 basis-[content] items-end justify-stretch max-lg:w-full [@media(640px<=width<=855px)]:basis-[236px] [@media(width<=444px)]:*:w-full [@media(width>742px)]:justify-end [@media(width>742px)]:pl-6 [@media(width>855px)]:grow">
7695
{hasSpeakersPage ? (
@@ -96,13 +115,15 @@ function SpeakerCard({
96115
twitter,
97116
linkedin,
98117
className,
118+
stripes,
99119
}: {
100120
name: string
101121
title: string
102122
src: string | StaticImageData
103123
twitter?: string
104124
linkedin?: string
105125
className?: string
126+
stripes?: string
106127
}) {
107128
return (
108129
<article
@@ -111,13 +132,17 @@ function SpeakerCard({
111132
className,
112133
)}
113134
>
114-
<Image
115-
src={src}
116-
alt=""
117-
width={312}
118-
height={312}
119-
className="aspect-square size-[312px] w-full object-cover transition-transform sm:h-[236px]"
120-
/>
135+
<div className="relative overflow-hidden">
136+
<div className="absolute inset-0 z-[1] bg-sec-light opacity-90 mix-blend-multiply" />
137+
<Image
138+
src={src}
139+
alt=""
140+
width={312}
141+
height={312}
142+
className="aspect-square size-[312px] w-full object-cover saturate-[0.1] transition-transform sm:h-[236px]"
143+
/>
144+
<Stripes mask={stripes} />
145+
</div>
121146
<div className="flex flex-1 items-stretch border-t border-sec-dark">
122147
<div className="flex grow flex-col justify-center gap-1 p-3 sm:h-[80px]">
123148
<h4 className="typography-body-md">{name}</h4>
@@ -165,3 +190,18 @@ function LinkedInIcon(props: HTMLAttributes<SVGElement>) {
165190
</svg>
166191
)
167192
}
193+
194+
function Stripes({ mask }: { mask?: string }) {
195+
return (
196+
<div
197+
role="presentation"
198+
className="pointer-events-none absolute inset-0 inset-y-[-20px]"
199+
style={{
200+
maskImage: mask,
201+
WebkitMaskImage: mask,
202+
}}
203+
>
204+
<StripesDecoration evenClassName="bg-gradient-to-b from-sec-darker to-sec-dark" />
205+
</div>
206+
)
207+
}
-139 KB
Binary file not shown.
-263 KB
Binary file not shown.
-188 KB
Binary file not shown.
-30.5 KB
Binary file not shown.
-113 KB
Binary file not shown.

src/app/conf/2025/resources/client-mdx.tsx

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,24 @@ export default function ResourcesPage() {
66
return (
77
<Resources
88
components={{
9-
// @ts-expect-error - not sure how to type this
10-
a: props => {
11-
const isExternal = props.href.startsWith("http")
9+
a: (props: React.AnchorHTMLAttributes<HTMLAnchorElement>) => {
10+
const isExternal = props.href?.startsWith("http")
1211
if (isExternal) {
1312
return <a {...props} target="_blank" rel="noopener noreferrer" />
1413
}
1514

1615
return <a {...props} />
1716
},
17+
h3: (props: React.HTMLAttributes<HTMLHeadingElement>) => {
18+
return (
19+
<h3
20+
className="border-t border-neu-100 pt-2 text-pri-base typography-menu dark:border-neu-50 dark:text-pri-light"
21+
{...props}
22+
>
23+
{props.children}
24+
</h3>
25+
)
26+
},
1827
}}
1928
/>
2029
)
Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,23 @@
1-
import Resources from "./client-mdx"
2-
3-
import { clsx } from "clsx"
41
import { Metadata } from "next"
52

3+
import { NavbarPlaceholder } from "../components/navbar"
4+
5+
import Resources from "./client-mdx"
6+
import "./prose.css"
7+
68
export const metadata: Metadata = {
79
title: "Resources | 2025",
810
}
911

1012
export default function ResourcesPage() {
1113
return (
12-
<main>
13-
<div
14-
className={clsx(
15-
"container my-10 flex flex-col md:my-20",
16-
"prose max-w-screen-xl",
17-
"text-white prose-headings:text-white prose-a:text-white prose-strong:text-white",
18-
"prose-a:w-fit prose-a:transition-colors hover:prose-a:text-primary",
19-
)}
20-
>
21-
<Resources />
22-
</div>
23-
</main>
14+
<>
15+
<NavbarPlaceholder className="top-0 bg-neu-0 before:bg-white/30 dark:bg-neu-0 dark:before:bg-blk/40" />
16+
<main className="gql-all-anchors-focusable gql-conf-navbar-strip text-neu-900 before:bg-white/40 before:dark:bg-blk/30">
17+
<div className="gql-conf-container gql-conf-section gql-prose">
18+
<Resources />
19+
</div>
20+
</main>
21+
</>
2422
)
2523
}

0 commit comments

Comments
 (0)