@@ -3,9 +3,13 @@ import Apollo from "public/img/conf/Sponsors/Apollo.svg?svgr"
3
3
4
4
import { clsx } from "clsx"
5
5
import { ChevronRight } from "../../_design-system/pixelarticons/chevron-right"
6
+ import { ComponentPropsWithoutRef } from "react"
6
7
7
8
interface Sponsor {
8
- icon : React . FC < React . SVGProps < SVGElement > >
9
+ icon :
10
+ | React . FC < React . SVGProps < SVGElement > >
11
+ | React . FC < React . ImgHTMLAttributes < HTMLImageElement > >
12
+ | React . FC < React . HTMLAttributes < HTMLDivElement > >
9
13
name : string
10
14
link : string
11
15
}
@@ -15,11 +19,56 @@ const sponsorDiamond: Sponsor[] = []
15
19
const sponsorPlatinum : Sponsor [ ] = [ ]
16
20
17
21
const sponsorGold : Sponsor [ ] = [
18
- { icon : Apollo , name : "Apollo" , link : "https://www.apollographql.com" } ,
22
+ {
23
+ icon : ( props : React . SVGProps < SVGElement > ) => (
24
+ < Apollo
25
+ { ...props }
26
+ className = { clsx (
27
+ props . className ,
28
+ "[&_path]:fill-[#15252D] dark:[&_path]:fill-white" ,
29
+ ) }
30
+ />
31
+ ) ,
32
+ name : "Apollo" ,
33
+ link : "https://www.apollographql.com" ,
34
+ } ,
19
35
]
20
36
21
37
const sponsorSilver : Sponsor [ ] = [
22
- { icon : Grafbase , name : "Grafbase" , link : "https://grafbase.com/" } ,
38
+ {
39
+ icon : ( props : React . SVGProps < SVGElement > ) => (
40
+ < Grafbase
41
+ { ...props }
42
+ className = { clsx (
43
+ props . className ,
44
+ "[&_path]:fill-blk dark:[&_path]:fill-white" ,
45
+ ) }
46
+ />
47
+ ) ,
48
+ name : "Grafbase" ,
49
+ link : "https://grafbase.com/" ,
50
+ } ,
51
+ {
52
+ icon : ( props : React . HTMLAttributes < HTMLDivElement > ) => (
53
+ < div { ...props } className = { clsx ( props . className , "relative" ) } >
54
+ < img
55
+ src = {
56
+ new URL ( "/public/img/conf/Sponsors/Meta.svg" , import . meta. url ) . href
57
+ }
58
+ className = "absolute inset-0 dark:hidden"
59
+ />
60
+ < img
61
+ src = {
62
+ new URL ( "/public/img/conf/Sponsors/Meta-dark.svg" , import . meta. url )
63
+ . href
64
+ }
65
+ className = "absolute inset-0 hidden dark:block"
66
+ />
67
+ </ div >
68
+ ) ,
69
+ name : "Meta" ,
70
+ link : "https://about.facebook.com/meta/" ,
71
+ } ,
23
72
]
24
73
25
74
export interface SponsorsProps {
@@ -74,27 +123,22 @@ export function Sponsors({ heading }: SponsorsProps) {
74
123
function Tier ( { tier, logoHeight } : { tier : Tier ; logoHeight : number } ) {
75
124
return (
76
125
< div className = "flex gap-x-12 gap-y-4 border-t border-neu-200 py-4 dark:border-neu-50 max-md:flex-col" >
77
- < h3 className = "flex w-[80px] shrink-0 items-center gap-1 self-start whitespace-nowrap font-mono text-sm/none font-normal uppercase text-primary " >
126
+ < h3 className = "flex w-[80px] shrink-0 items-center gap-1 self-start whitespace-nowrap font-mono text-sm/none font-normal uppercase text-pri-base " >
78
127
< ChevronRight className = "shrink-0 translate-y-[-0.5px]" />
79
128
{ tier . name }
80
129
</ h3 >
81
- < div
82
- className = { clsx (
83
- "grid justify-center gap-x-8 gap-y-4" ,
84
- tier . items . length > 2 && "sm:grid-cols-2 xl:grid-cols-3" ,
85
- ) }
86
- >
130
+ < div className = "flex flex-wrap justify-center gap-y-4" >
87
131
{ tier . items . map ( ( { link, icon : Icon , name } , i ) => (
88
132
< a
89
133
key = { i }
90
134
href = { link }
91
135
target = "_blank"
92
136
rel = "noreferrer"
93
137
title = { name }
94
- className = "group flex min-h-24 items-center justify-center opacity-75 [--fill:hsl(var(--color-neu-700))] hover:bg-neu-500/10 hover:[--fill:hsl(var(--color-neu-800))] dark:opacity-90 "
138
+ className = "group flex min-h-24 items-center justify-center hover:bg-neu-500/10 dark:opacity-90 dark:hover: opacity-100 "
95
139
>
96
140
< Icon
97
- className = "aspect-[3] w-auto max-w-[80%] shrink-0 fill-[--fill] [&_path]:fill-[--fill] "
141
+ className = "aspect-[3] w-auto max-w-[80%] shrink-0"
98
142
style = { {
99
143
height : logoHeight ,
100
144
} }
0 commit comments