Skip to content
Merged
Show file tree
Hide file tree
Changes from 8 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added public/img/ambassadors/chanda-raj-kumar.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/img/ambassadors/giuseppe-abrignani.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/img/ambassadors/jayant-acharya.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/img/ambassadors/sabrina-wasserman.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
10 changes: 9 additions & 1 deletion src/components/ambassador-grid.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ function buildRows(ambassador: Ambassador): InfoCardRow[] {
},
{
type: "label",
hideInConciseMode: true,
label:
ambassador.tags.length > 0 ? (
<div className="flex flex-wrap items-center gap-3">
Expand All @@ -39,14 +40,21 @@ function buildRows(ambassador: Ambassador): InfoCardRow[] {
]
}

export function AmbassadorGrid({ ambassadors }: { ambassadors: Ambassador[] }) {
export function AmbassadorGrid({
ambassadors,
concise,
}: {
ambassadors: Ambassador[]
concise?: boolean
}) {
return (
<div className="mx-auto mt-10 flex w-full max-w-6xl flex-wrap justify-center gap-8">
{ambassadors.map((ambassador, index) => (
<InfoCard
key={`${ambassador.label}-${index}`}
rows={buildRows(ambassador)}
className="h-full"
concise={concise}
/>
))}
</div>
Expand Down
248 changes: 246 additions & 2 deletions src/components/info-card/ambassador-data.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ export interface Ambassador {
tags: AmbassadorTag[]
}

export const ambassadors: Ambassador[] = [
export const ambassadors202509: Ambassador[] = [
{
label: "Artur Czemiel",
imageUrl: "https://github.com/aexol.png",
Expand Down Expand Up @@ -227,7 +227,7 @@ export const ambassadors: Ambassador[] = [
},
{
label: "LinkedIn",
url: "https://www.linkedin.com/in/jem-gillam-92063b14/",
url: "https://www.linkedin.com/in/jemgillam/",
icon: <LinkedInIcon className="size-5" />,
},
],
Expand Down Expand Up @@ -468,3 +468,247 @@ export const ambassadors: Ambassador[] = [
],
},
]

export const ambassadors202512: Ambassador[] = [
{
label: "An Ngo",
imageUrl: "https://github.com/vliegveld5.png",
alt: "An Ngo",
organization: "bol",
tags: [
{
label: "GitHub",
url: "https://github.com/vliegveld5",
icon: <GitHubIcon className="size-5" />,
},
{
label: "LinkedIn",
url: "https://www.linkedin.com/in/vliegveld5/",
icon: <LinkedInIcon className="size-5" />,
},
],
},
{
label: "Aurélien David",
imageUrl: "https://github.com/spyl94.png",
alt: "Aurélien David",
organization: "Pennylane",
tags: [
{
label: "GitHub",
url: "https://github.com/spyl94/",
icon: <GitHubIcon className="size-5" />,
},
{
label: "LinkedIn",
url: "https://www.linkedin.com/in/aurel-spyl/",
icon: <LinkedInIcon className="size-5" />,
},
{
label: "Twitter",
url: "https://x.com/spyl94",
icon: <TwitterIcon className="size-5" />,
},
],
},
{
label: "Chanda Raj Kumar",
imageUrl: "/img/ambassadors/chanda-raj-kumar.jpg",
alt: "Chanda Raj Kumar",
organization: "KL University Hyderabad",
tags: [
{
label: "LinkedIn",
url: "https://www.linkedin.com/in/chanda-raj-kumar-88799a1b3/",
icon: <LinkedInIcon className="size-5" />,
},
],
},
{
label: "Derek Kuz",
imageUrl: "https://github.com/dariuszkuc.png",
alt: "Derek Kuz",
organization: "Apollo",
tags: [
{
label: "Bluesky",
url: "https://bsky.app/profile/dkuc.bsky.social",
icon: <Bluesky2Icon className="size-5" />,
},
{
label: "GitHub",
url: "https://github.com/dariuszkuc",
icon: <GitHubIcon className="size-5" />,
},
{
label: "LinkedIn",
url: "https://www.linkedin.com/in/dkuc/",
icon: <LinkedInIcon className="size-5" />,
},
],
},
{
label: "Gil Gardosh",
imageUrl: "https://github.com/gilgardosh.png",
alt: "Gil Gardosh",
organization: "The Guild",
tags: [
{
label: "GitHub",
url: "https://github.com/gilgardosh/",
icon: <GitHubIcon className="size-5" />,
},
{
label: "LinkedIn",
url: "https://www.linkedin.com/in/gil-gardosh-9a5088a5/",
icon: <LinkedInIcon className="size-5" />,
},
{
label: "Twitter",
url: "https://x.com/gilgardosh",
icon: <TwitterIcon className="size-5" />,
},
],
},
{
label: "Giuseppe Abrignani",
imageUrl: "/img/ambassadors/giuseppe-abrignani.jpg",
alt: "Giuseppe Abrignani",
organization: "Oranj Tech",
tags: [
{
label: "LinkedIn",
url: "https://www.linkedin.com/in/giuseppeabrignani/",
icon: <LinkedInIcon className="size-5" />,
},
],
},
{
label: "Jayant Acharya",
imageUrl: "/img/ambassadors/jayant-acharya.jpg",
alt: "Jayant Acharya",
organization: "Techsophy",
tags: [
{
label: "GitHub",
url: "https://github.com/jayant99acharya",
icon: <GitHubIcon className="size-5" />,
},
{
label: "LinkedIn",
url: "https://www.linkedin.com/in/jayantacharya/",
icon: <LinkedInIcon className="size-5" />,
},
],
},
{
label: "Laurin Quast",
imageUrl: " https://github.com/n1ru4l.png",
alt: "Laurin Quast",
organization: "The Guild",
tags: [
{
label: "GitHub",
url: " https://github.com/n1ru4l",
icon: <GitHubIcon className="size-5" />,
},
{
label: "LinkedIn",
url: "https://www.linkedin.com/in/laurin-quast-a47b871b4/",
icon: <LinkedInIcon className="size-5" />,
},
{
label: "Twitter",
url: "https://x.com/n1rual",
icon: <TwitterIcon className="size-5" />,
},
],
},
{
label: "Lenz Weber-Tronic",
imageUrl: "https://github.com/phryneas.png",
alt: "Lenz Weber-Tronic",
organization: "Apollo",
tags: [
{
label: "Bluesky",
url: "https://bsky.app/profile/phry.dev",
icon: <Bluesky2Icon className="size-5" />,
},
{
label: "GitHub",
url: "https://github.com/phryneas",
icon: <GitHubIcon className="size-5" />,
},
{
label: "LinkedIn",
url: "https://www.linkedin.com/in/lenz-w-069040113/",
icon: <LinkedInIcon className="size-5" />,
},
{
label: "Website",
url: "https://phryneas.de/",
icon: <GlobeIcon className="size-5" />,
},
],
},
{
label: "Rigin Oommen",
imageUrl: "https://github.com/riginoommen.png",
alt: "Rigin Oommen",
organization: "Red Hat",
tags: [
{
label: "GitHub",
url: "https://github.com/riginoommen",
icon: <GitHubIcon className="size-5" />,
},
{
label: "LinkedIn",
url: "https://www.linkedin.com/in/riginoommen/",
icon: <LinkedInIcon className="size-5" />,
},
],
},
{
label: "Sabrina Wasserman",
imageUrl: "/img/ambassadors/sabrina-wasserman.jpg",
alt: "Sabrina Wasserman",
organization: "Facebook",
tags: [
{
label: "GitHub",
url: "https://github.com/s3wasser",
icon: <GitHubIcon className="size-5" />,
},
{
label: "LinkedIn",
url: "https://www.linkedin.com/in/sabrina-wasserman-251045138/",
icon: <LinkedInIcon className="size-5" />,
},
],
},
{
label: "Valentin Cocaud",
imageUrl: "https://github.com/EmrysMyrddin.png",
alt: "Valentin Cocaud",
organization: "The Guild",
tags: [
{
label: "GitHub",
url: "https://github.com/EmrysMyrddin",
icon: <GitHubIcon className="size-5" />,
},
{
label: "LinkedIn",
url: "https://www.linkedin.com/in/valentin-cocaud/",
icon: <LinkedInIcon className="size-5" />,
},
],
},
]

export const ambassadors = [
...ambassadors202509,
//...ambassadors202512
].sort((a, z) => a.label.localeCompare(z.label, "en-US"))
14 changes: 10 additions & 4 deletions src/components/info-card/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,24 +4,28 @@ import { ReactNode } from "react"
export interface InfoCardLabelRow {
type: "label"
label: ReactNode
hideInConciseMode?: boolean
}

export interface InfoCardTitleRow {
type: "title"
title: ReactNode
hideInConciseMode?: boolean
}

export interface InfoCardImageRow {
type: "image"
imageUrl: string
alt?: string
hideInConciseMode?: boolean
}

export type InfoCardRow = InfoCardLabelRow | InfoCardTitleRow | InfoCardImageRow

export interface InfoCardProps {
rows: InfoCardRow[]
className?: string
concise?: boolean
}

export function InfoCardRow({ row }: { row: InfoCardRow }) {
Expand Down Expand Up @@ -54,7 +58,7 @@ export function InfoCardRow({ row }: { row: InfoCardRow }) {
}
}

export function InfoCard({ rows, className }: InfoCardProps) {
export function InfoCard({ rows, concise, className }: InfoCardProps) {
return (
<div
className={clsx(
Expand All @@ -63,9 +67,11 @@ export function InfoCard({ rows, className }: InfoCardProps) {
)}
>
<div className="flex flex-1 flex-col">
{rows.map((row, i) => (
<InfoCardRow key={i} row={row} />
))}
{rows.map((row, i) =>
!concise || !row.hideInConciseMode ? (
<InfoCardRow key={i} row={row} />
) : null,
)}
</div>
</div>
)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
---
title: "Announcing Our GraphQL Ambassadors"
tags: ["blog"]
tags: ["announcements"]
date: 2025-09-08
byline: Jem Gillam and Jory Burson
featured: true
---

The GraphQL Foundation is thrilled to announce the launch of the GraphQL Ambassadors Program — a new initiative to recognize and support community leaders who are helping to grow the GraphQL ecosystem worldwide.
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Loading