1
- import Stellate from "public/img/conf/Sponsors/Stellate.svg"
2
- import Postman from "public/img/conf/Sponsors/Postman.svg"
3
- import Solo from "public/img/conf/Sponsors/Solo.svg"
4
- import Hasura from "public/img/conf/Sponsors/Hasura.svg"
5
- import TheGraph from "public/img/conf/Sponsors/TheGraph.svg"
6
- import TheGuild from "public/img/conf/Sponsors/TheGuild.svg"
7
- import Hygraph from "public/img/conf/Sponsors/Hygraph.svg"
8
- import StepZen from "public/img/conf/Sponsors/StepZen.svg"
9
- import Inigo from "public/img/conf/Sponsors/Inigo.svg"
10
- import Neo4j from "public/img/conf/Sponsors/Neo4j.svg"
11
- import WunderGraph from "public/img/conf/Sponsors/WunderGraph.svg"
12
- import Graphabase from "public/img/conf/Sponsors/Graphabase.svg"
13
- import GraphQLWeekly from "public/img/conf/Partners/GraphQLWeekly.svg"
14
- import GraphQLWTF from "public/img/conf/Partners/GraphQLwtf.svg"
15
- import EscapeTechnologies from "public/img/conf/Partners/EscapeTechnologies.svg"
16
- import AmsterdamGraphQL from "public/img/conf/Partners/AmsterdamGraphQL.svg"
17
- import BangkokGraphQL from "public/img/conf/Partners/BangkokGraphQL.svg"
18
- import TypeGraphQL from "public/img/conf/Partners/TypeGraphQL.svg"
1
+ import Stellate from "public/img/conf/Sponsors/Stellate.svg?svgr"
2
+ import Hasura from "public/img/conf/Sponsors/Hasura.svg?svgr"
3
+ import TheGuild from "public/img/conf/Sponsors/TheGuild.svg?svgr"
4
+ import Apollo from "public/img/conf/Sponsors/Apollo.svg?svgr"
5
+ import Tyk from "public/img/conf/Sponsors/Tyk.svg?svgr"
6
+ import IBM from "public/img/conf/Sponsors/IBM.svg?svgr"
7
+ import Graphweaver from "public/img/conf/Sponsors/Graphweaver.svg?svgr"
8
+
19
9
import NextImage from "next-image-export-optimizer"
20
10
import { clsx } from "clsx"
21
11
@@ -36,101 +26,27 @@ function TierIcon() {
36
26
}
37
27
38
28
interface Image {
39
- icon : string
29
+ icon : React . FC < React . SVGProps < SVGElement > >
40
30
name : string
41
31
link : string
42
32
}
43
33
44
34
const sponsorDiamond : Image [ ] = [
45
- { icon : Hasura , name : "Hasura" , link : "https://hasura.io" } ,
46
- { icon : Postman , name : "Postman" , link : "https://postman.com" } ,
47
35
{ icon : TheGuild , name : "The Guild" , link : "https://the-guild.dev" } ,
48
- ]
49
-
50
- const sponsorPlatinum : Image [ ] = [
51
- { icon : Hygraph , name : "Hygraph" , link : "https://hygraph.com" } ,
52
- { icon : Solo , name : "Solo.io" , link : "https://solo.io" } ,
36
+ { icon : IBM , name : "IBM" , link : "https://www.ibm.com/products/api-connect" } ,
53
37
]
54
38
55
39
const sponsorGold : Image [ ] = [
56
- { icon : StepZen , name : "StepZen " , link : "https://stepzen. com" } ,
57
- { icon : Inigo , name : "Inigo " , link : "https://inigo.io " } ,
58
- { icon : TheGraph , name : "The Graph " , link : "https://thegraph.com " } ,
40
+ { icon : Apollo , name : "Apollo " , link : "https://www.apollographql. com/ " } ,
41
+ { icon : Graphweaver , name : "Graphweaver " , link : "https://graphweaver.com " } ,
42
+ { icon : Hasura , name : "Hasura " , link : "https://hasura.io " } ,
59
43
]
60
44
61
45
const sponsorSilver : Image [ ] = [
62
- { icon : Graphabase , name : "Graphabase" , link : "https://graphabase.com" } ,
63
- { icon : Neo4j , name : "Neo4j" , link : "https://neo4j.com" } ,
64
46
{ icon : Stellate , name : "Stellate" , link : "https://stellate.co" } ,
65
- { icon : WunderGraph , name : "WunderGraph " , link : "https://wundergraph.com " } ,
47
+ { icon : Tyk , name : "Tyk " , link : "https://tyk.io/ " } ,
66
48
]
67
49
68
- const workshopDaySponsors : Image [ ] = [
69
- { icon : TheGuild , name : "The Guild" , link : "https://the-guild.dev" } ,
70
- ]
71
-
72
- const mediaPartners : Image [ ] = [
73
- { icon : GraphQLWTF , name : "GraphQLWTF" , link : "https://graphql.wtf" } ,
74
- {
75
- icon : GraphQLWeekly ,
76
- name : "GraphQLWeekly" ,
77
- link : "https://graphqlweekly.com" ,
78
- } ,
79
- ]
80
-
81
- const communityPartners : Image [ ] = [
82
- {
83
- icon : AmsterdamGraphQL ,
84
- name : "Amsterdam GraphQL" ,
85
- link : "https://meetup.com/amsterdam-graphql-meetup" ,
86
- } ,
87
- {
88
- icon : BangkokGraphQL ,
89
- name : "Bangkok GraphQL" ,
90
- link : "https://meetup.com/graphql-bangkok" ,
91
- } ,
92
- {
93
- icon : EscapeTechnologies ,
94
- name : "EscapeTechnologies" ,
95
- link : "https://escape.tech" ,
96
- } ,
97
- { icon : TypeGraphQL , name : "TypeGraphQL" , link : "https://typegraphql.com" } ,
98
- ]
99
-
100
- function List ( {
101
- items,
102
- className,
103
- linkClassName,
104
- } : {
105
- items : Image [ ]
106
- className ?: string
107
- linkClassName ?: string
108
- } ) {
109
- return (
110
- < div className = { clsx ( "flex flex-row flex-wrap gap-x-8 gap-y-4" , className ) } >
111
- { items . map ( ( { link, icon, name } , i ) => (
112
- < a
113
- key = { i }
114
- href = { link }
115
- target = "_blank"
116
- rel = "noreferrer"
117
- title = { name }
118
- className = { clsx (
119
- "flex h-24 w-72 items-center justify-center" ,
120
- linkClassName ,
121
- ) }
122
- >
123
- < NextImage
124
- alt = { `${ name } logo` }
125
- src = { icon }
126
- className = "max-h-16 w-auto max-w-[80%] shrink-0 object-contain text-neu-600"
127
- />
128
- </ a >
129
- ) ) }
130
- </ div >
131
- )
132
- }
133
-
134
50
export interface SponsorsProps {
135
51
heading ?: string
136
52
}
@@ -146,10 +62,6 @@ const sponsorTiers: Tier[] = [
146
62
name : "Diamond" ,
147
63
items : sponsorDiamond ,
148
64
} ,
149
- {
150
- name : "Platinum" ,
151
- items : sponsorPlatinum ,
152
- } ,
153
65
{
154
66
name : "Gold" ,
155
67
items : sponsorGold ,
@@ -158,53 +70,47 @@ const sponsorTiers: Tier[] = [
158
70
name : "Silver" ,
159
71
items : sponsorSilver ,
160
72
} ,
161
- {
162
- name : "Workshop Day Sponsor" ,
163
- items : workshopDaySponsors ,
164
- } ,
165
73
]
166
74
167
- const partnerTiers : Tier [ ] = [
168
- {
169
- name : "Media Partners" ,
170
- items : mediaPartners ,
171
- } ,
172
- {
173
- name : "Community Partners" ,
174
- items : communityPartners ,
175
- } ,
176
- ]
177
- // --- End Data structure ---
178
-
179
75
export function Sponsors ( { heading } : SponsorsProps ) {
180
76
return (
181
- < section className = "gql-conf-section py-16" >
77
+ < section className = "gql-conf-section mx-auto w-fit max-w-full py-16" >
182
78
< h1 className = "typography-h2" > { heading } </ h1 >
183
79
184
80
< div className = "mt-10 md:mt-16" >
185
81
{ sponsorTiers . map ( tier => (
186
82
< Tier key = { tier . name } tier = { tier } />
187
83
) ) }
188
84
</ div >
189
-
190
- < div className = "flex flex-col self-stretch border-t border-[#E7E9E2] pt-16" >
191
- < h1 className = "mb-4 text-5xl font-normal text-[#0E0F0B]" > Partners</ h1 >
192
- { partnerTiers . map ( tier => (
193
- < Tier key = { tier . name } tier = { tier } />
194
- ) ) }
195
- </ div >
196
85
</ section >
197
86
)
198
87
}
199
88
200
89
function Tier ( { tier } : { tier : Tier } ) {
201
90
return (
202
91
< div className = "flex gap-x-12 gap-y-4 border-t border-neu-200 py-4 dark:border-neu-50 max-md:flex-col" >
203
- < h3 className = "min-w-[180px ] whitespace-nowrap font-mono text-sm font-normal uppercase text-primary" >
92
+ < h3 className = "min-w-[60px ] whitespace-nowrap font-mono text-sm font-normal uppercase text-primary" >
204
93
< TierIcon />
205
94
{ tier . name }
206
95
</ h3 >
207
- < List items = { tier . items } />
96
+ < div
97
+ className = { clsx (
98
+ "grid justify-center gap-x-8 gap-y-4 md:grid-cols-2 xl:grid-cols-3" ,
99
+ ) }
100
+ >
101
+ { tier . items . map ( ( { link, icon : Icon , name } , i ) => (
102
+ < a
103
+ key = { i }
104
+ href = { link }
105
+ target = "_blank"
106
+ rel = "noreferrer"
107
+ title = { name }
108
+ className = "group flex h-24 w-72 items-center justify-center rounded-lg opacity-70 [--fill:hsl(var(--color-neu-700))] hover:bg-neu-500/10 hover:[--fill:hsl(var(--color-neu-800))] dark:opacity-90"
109
+ >
110
+ < Icon className = "h-16 w-auto max-w-[80%] shrink-0 fill-[--fill] [&_path]:fill-[--fill]" />
111
+ </ a >
112
+ ) ) }
113
+ </ div >
208
114
</ div >
209
115
)
210
116
}
0 commit comments