Skip to content

Commit af25c30

Browse files
jemgillambenjie
andauthored
blog: December Ambassador cohort update (#2272)
<!-- Thanks for making a pull request! Before submitting, please read our contributing guidelines: https://github.com/graphql/graphql.github.io/blob/source/CONTRIBUTING.md Have any questions? Feel free to ask in this PR or you can also find us on the #website channel on the GraphQL Slack (invite link available in CONTRIBUTING.md) --> ## Description <!-- Write a brief description of the changes introduced by this PR --> An article for our new Ambassador cohort. I did some rejig of components to allow the Ambassador info card to display just one cohort at a time and with or without social media details. --------- Co-authored-by: Benjie <[email protected]>
1 parent 3f3f1c7 commit af25c30

File tree

10 files changed

+315
-9
lines changed

10 files changed

+315
-9
lines changed
62.3 KB
Loading
82.6 KB
Loading
60.5 KB
Loading
45.2 KB
Loading

src/components/ambassador-grid.tsx

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ function buildRows(ambassador: Ambassador): InfoCardRow[] {
1818
},
1919
{
2020
type: "label",
21+
hideInConciseMode: true,
2122
label:
2223
ambassador.tags.length > 0 ? (
2324
<div className="flex flex-wrap items-center gap-3">
@@ -39,14 +40,21 @@ function buildRows(ambassador: Ambassador): InfoCardRow[] {
3940
]
4041
}
4142

42-
export function AmbassadorGrid({ ambassadors }: { ambassadors: Ambassador[] }) {
43+
export function AmbassadorGrid({
44+
ambassadors,
45+
concise,
46+
}: {
47+
ambassadors: Ambassador[]
48+
concise?: boolean
49+
}) {
4350
return (
4451
<div className="mx-auto mt-10 flex w-full max-w-6xl flex-wrap justify-center gap-8">
4552
{ambassadors.map((ambassador, index) => (
4653
<InfoCard
4754
key={`${ambassador.label}-${index}`}
4855
rows={buildRows(ambassador)}
4956
className="h-full"
57+
concise={concise}
5058
/>
5159
))}
5260
</div>

src/components/info-card/ambassador-data.tsx

Lines changed: 246 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ export interface Ambassador {
2424
tags: AmbassadorTag[]
2525
}
2626

27-
export const ambassadors: Ambassador[] = [
27+
export const ambassadors202509: Ambassador[] = [
2828
{
2929
label: "Artur Czemiel",
3030
imageUrl: "https://github.com/aexol.png",
@@ -227,7 +227,7 @@ export const ambassadors: Ambassador[] = [
227227
},
228228
{
229229
label: "LinkedIn",
230-
url: "https://www.linkedin.com/in/jem-gillam-92063b14/",
230+
url: "https://www.linkedin.com/in/jemgillam/",
231231
icon: <LinkedInIcon className="size-5" />,
232232
},
233233
],
@@ -468,3 +468,247 @@ export const ambassadors: Ambassador[] = [
468468
],
469469
},
470470
]
471+
472+
export const ambassadors202512: Ambassador[] = [
473+
{
474+
label: "An Ngo",
475+
imageUrl: "https://github.com/vliegveld5.png",
476+
alt: "An Ngo",
477+
organization: "bol",
478+
tags: [
479+
{
480+
label: "GitHub",
481+
url: "https://github.com/vliegveld5",
482+
icon: <GitHubIcon className="size-5" />,
483+
},
484+
{
485+
label: "LinkedIn",
486+
url: "https://www.linkedin.com/in/vliegveld5/",
487+
icon: <LinkedInIcon className="size-5" />,
488+
},
489+
],
490+
},
491+
{
492+
label: "Aurélien David",
493+
imageUrl: "https://github.com/spyl94.png",
494+
alt: "Aurélien David",
495+
organization: "Pennylane",
496+
tags: [
497+
{
498+
label: "GitHub",
499+
url: "https://github.com/spyl94/",
500+
icon: <GitHubIcon className="size-5" />,
501+
},
502+
{
503+
label: "LinkedIn",
504+
url: "https://www.linkedin.com/in/aurel-spyl/",
505+
icon: <LinkedInIcon className="size-5" />,
506+
},
507+
{
508+
label: "Twitter",
509+
url: "https://x.com/spyl94",
510+
icon: <TwitterIcon className="size-5" />,
511+
},
512+
],
513+
},
514+
{
515+
label: "Chanda Raj Kumar",
516+
imageUrl: "/img/ambassadors/chanda-raj-kumar.jpg",
517+
alt: "Chanda Raj Kumar",
518+
organization: "KL University Hyderabad",
519+
tags: [
520+
{
521+
label: "LinkedIn",
522+
url: "https://www.linkedin.com/in/chanda-raj-kumar-88799a1b3/",
523+
icon: <LinkedInIcon className="size-5" />,
524+
},
525+
],
526+
},
527+
{
528+
label: "Derek Kuz",
529+
imageUrl: "https://github.com/dariuszkuc.png",
530+
alt: "Derek Kuz",
531+
organization: "Apollo",
532+
tags: [
533+
{
534+
label: "Bluesky",
535+
url: "https://bsky.app/profile/dkuc.bsky.social",
536+
icon: <Bluesky2Icon className="size-5" />,
537+
},
538+
{
539+
label: "GitHub",
540+
url: "https://github.com/dariuszkuc",
541+
icon: <GitHubIcon className="size-5" />,
542+
},
543+
{
544+
label: "LinkedIn",
545+
url: "https://www.linkedin.com/in/dkuc/",
546+
icon: <LinkedInIcon className="size-5" />,
547+
},
548+
],
549+
},
550+
{
551+
label: "Gil Gardosh",
552+
imageUrl: "https://github.com/gilgardosh.png",
553+
alt: "Gil Gardosh",
554+
organization: "The Guild",
555+
tags: [
556+
{
557+
label: "GitHub",
558+
url: "https://github.com/gilgardosh/",
559+
icon: <GitHubIcon className="size-5" />,
560+
},
561+
{
562+
label: "LinkedIn",
563+
url: "https://www.linkedin.com/in/gil-gardosh-9a5088a5/",
564+
icon: <LinkedInIcon className="size-5" />,
565+
},
566+
{
567+
label: "Twitter",
568+
url: "https://x.com/gilgardosh",
569+
icon: <TwitterIcon className="size-5" />,
570+
},
571+
],
572+
},
573+
{
574+
label: "Giuseppe Abrignani",
575+
imageUrl: "/img/ambassadors/giuseppe-abrignani.jpg",
576+
alt: "Giuseppe Abrignani",
577+
organization: "Oranj Tech",
578+
tags: [
579+
{
580+
label: "LinkedIn",
581+
url: "https://www.linkedin.com/in/giuseppeabrignani/",
582+
icon: <LinkedInIcon className="size-5" />,
583+
},
584+
],
585+
},
586+
{
587+
label: "Jayant Acharya",
588+
imageUrl: "/img/ambassadors/jayant-acharya.jpg",
589+
alt: "Jayant Acharya",
590+
organization: "Techsophy",
591+
tags: [
592+
{
593+
label: "GitHub",
594+
url: "https://github.com/jayant99acharya",
595+
icon: <GitHubIcon className="size-5" />,
596+
},
597+
{
598+
label: "LinkedIn",
599+
url: "https://www.linkedin.com/in/jayantacharya/",
600+
icon: <LinkedInIcon className="size-5" />,
601+
},
602+
],
603+
},
604+
{
605+
label: "Laurin Quast",
606+
imageUrl: " https://github.com/n1ru4l.png",
607+
alt: "Laurin Quast",
608+
organization: "The Guild",
609+
tags: [
610+
{
611+
label: "GitHub",
612+
url: " https://github.com/n1ru4l",
613+
icon: <GitHubIcon className="size-5" />,
614+
},
615+
{
616+
label: "LinkedIn",
617+
url: "https://www.linkedin.com/in/laurin-quast-a47b871b4/",
618+
icon: <LinkedInIcon className="size-5" />,
619+
},
620+
{
621+
label: "Twitter",
622+
url: "https://x.com/n1rual",
623+
icon: <TwitterIcon className="size-5" />,
624+
},
625+
],
626+
},
627+
{
628+
label: "Lenz Weber-Tronic",
629+
imageUrl: "https://github.com/phryneas.png",
630+
alt: "Lenz Weber-Tronic",
631+
organization: "Apollo",
632+
tags: [
633+
{
634+
label: "Bluesky",
635+
url: "https://bsky.app/profile/phry.dev",
636+
icon: <Bluesky2Icon className="size-5" />,
637+
},
638+
{
639+
label: "GitHub",
640+
url: "https://github.com/phryneas",
641+
icon: <GitHubIcon className="size-5" />,
642+
},
643+
{
644+
label: "LinkedIn",
645+
url: "https://www.linkedin.com/in/lenz-w-069040113/",
646+
icon: <LinkedInIcon className="size-5" />,
647+
},
648+
{
649+
label: "Website",
650+
url: "https://phryneas.de/",
651+
icon: <GlobeIcon className="size-5" />,
652+
},
653+
],
654+
},
655+
{
656+
label: "Rigin Oommen",
657+
imageUrl: "https://github.com/riginoommen.png",
658+
alt: "Rigin Oommen",
659+
organization: "Red Hat",
660+
tags: [
661+
{
662+
label: "GitHub",
663+
url: "https://github.com/riginoommen",
664+
icon: <GitHubIcon className="size-5" />,
665+
},
666+
{
667+
label: "LinkedIn",
668+
url: "https://www.linkedin.com/in/riginoommen/",
669+
icon: <LinkedInIcon className="size-5" />,
670+
},
671+
],
672+
},
673+
{
674+
label: "Sabrina Wasserman",
675+
imageUrl: "/img/ambassadors/sabrina-wasserman.jpg",
676+
alt: "Sabrina Wasserman",
677+
organization: "Facebook",
678+
tags: [
679+
{
680+
label: "GitHub",
681+
url: "https://github.com/s3wasser",
682+
icon: <GitHubIcon className="size-5" />,
683+
},
684+
{
685+
label: "LinkedIn",
686+
url: "https://www.linkedin.com/in/sabrina-wasserman-251045138/",
687+
icon: <LinkedInIcon className="size-5" />,
688+
},
689+
],
690+
},
691+
{
692+
label: "Valentin Cocaud",
693+
imageUrl: "https://github.com/EmrysMyrddin.png",
694+
alt: "Valentin Cocaud",
695+
organization: "The Guild",
696+
tags: [
697+
{
698+
label: "GitHub",
699+
url: "https://github.com/EmrysMyrddin",
700+
icon: <GitHubIcon className="size-5" />,
701+
},
702+
{
703+
label: "LinkedIn",
704+
url: "https://www.linkedin.com/in/valentin-cocaud/",
705+
icon: <LinkedInIcon className="size-5" />,
706+
},
707+
],
708+
},
709+
]
710+
711+
export const ambassadors = [
712+
...ambassadors202509,
713+
//...ambassadors202512
714+
].sort((a, z) => a.label.localeCompare(z.label, "en-US"))

src/components/info-card/index.tsx

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,24 +4,28 @@ import { ReactNode } from "react"
44
export interface InfoCardLabelRow {
55
type: "label"
66
label: ReactNode
7+
hideInConciseMode?: boolean
78
}
89

910
export interface InfoCardTitleRow {
1011
type: "title"
1112
title: ReactNode
13+
hideInConciseMode?: boolean
1214
}
1315

1416
export interface InfoCardImageRow {
1517
type: "image"
1618
imageUrl: string
1719
alt?: string
20+
hideInConciseMode?: boolean
1821
}
1922

2023
export type InfoCardRow = InfoCardLabelRow | InfoCardTitleRow | InfoCardImageRow
2124

2225
export interface InfoCardProps {
2326
rows: InfoCardRow[]
2427
className?: string
28+
concise?: boolean
2529
}
2630

2731
export function InfoCardRow({ row }: { row: InfoCardRow }) {
@@ -54,7 +58,7 @@ export function InfoCardRow({ row }: { row: InfoCardRow }) {
5458
}
5559
}
5660

57-
export function InfoCard({ rows, className }: InfoCardProps) {
61+
export function InfoCard({ rows, concise, className }: InfoCardProps) {
5862
return (
5963
<div
6064
className={clsx(
@@ -63,9 +67,11 @@ export function InfoCard({ rows, className }: InfoCardProps) {
6367
)}
6468
>
6569
<div className="flex flex-1 flex-col">
66-
{rows.map((row, i) => (
67-
<InfoCardRow key={i} row={row} />
68-
))}
70+
{rows.map((row, i) =>
71+
!concise || !row.hideInConciseMode ? (
72+
<InfoCardRow key={i} row={row} />
73+
) : null,
74+
)}
6975
</div>
7076
</div>
7177
)

src/pages/blog/2025-09-08-announcing-graphql-ambassadors/index.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
---
22
title: "Announcing Our GraphQL Ambassadors"
3-
tags: ["blog"]
3+
tags: ["announcements"]
44
date: 2025-09-08
55
byline: Jem Gillam and Jory Burson
6-
featured: true
76
---
87

98
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.
1.71 MB
Loading

0 commit comments

Comments
 (0)