@@ -70,7 +70,7 @@ function DefinitionListItem({
70
70
}
71
71
function TopicsTab ( ) {
72
72
return (
73
- < >
73
+ < div >
74
74
< TabHeading className = "mt-6" > Suggested Topics</ TabHeading >
75
75
< ul className = "list-disc space-y-2 pl-6" >
76
76
< li > GraphQL Working Group</ li >
@@ -104,13 +104,13 @@ function TopicsTab() {
104
104
< li > Documentation</ li >
105
105
</ ul >
106
106
</ ul >
107
- </ >
107
+ </ div >
108
108
)
109
109
}
110
110
111
111
function NotesTab ( ) {
112
112
return (
113
- < >
113
+ < div >
114
114
< TabHeading className = "mt-6" > Important Notes</ TabHeading >
115
115
< ul className = "list-disc space-y-2 pl-6" >
116
116
< li >
@@ -199,13 +199,13 @@ function NotesTab() {
199
199
< a href = "mailto:[email protected] " > reach out to us
</ a > and we will
200
200
be more than happy to work with you on your proposal.
201
201
</ p >
202
- </ >
202
+ </ div >
203
203
)
204
204
}
205
205
206
206
function TypesTab ( ) {
207
207
return (
208
- < >
208
+ < div >
209
209
< TabHeading className = "mt-6" > Submission Types</ TabHeading >
210
210
< ul className = "list-disc space-y-2 pl-6" >
211
211
< li >
@@ -220,13 +220,13 @@ function TypesTab() {
220
220
< li > Lightning Talk: Typically 5-10 minutes in length</ li >
221
221
< li > Workshop: Typically 1-2 hours in length</ li >
222
222
</ ul >
223
- </ >
223
+ </ div >
224
224
)
225
225
}
226
226
227
227
function ProcessTab ( ) {
228
228
return (
229
- < >
229
+ < div >
230
230
< TabHeading className = "mt-6" > The Talk Selection Process</ TabHeading >
231
231
< p className = "mb-4" >
232
232
The GraphQL Foundation strives to select conference talks based on fair
@@ -287,7 +287,7 @@ function ProcessTab() {
287
287
In the instance that you aren't sure about your abstract, reach out to
288
288
us and we will be more than happy to work with you on your proposal.
289
289
</ p >
290
- </ >
290
+ </ div >
291
291
)
292
292
}
293
293
@@ -386,20 +386,7 @@ export function CallForProposals() {
386
386
aria-selected = { activeTab === tab }
387
387
className = "gql-focus-visible flex items-center justify-between px-3 py-4 typography-body-lg hover:bg-sec-light focus:outline-none aria-selected:bg-sec-light"
388
388
onFocus = { ( ) => setActiveTab ( tab ) }
389
- onKeyDown = { event => {
390
- if ( event . key === "ArrowLeft" ) {
391
- const previousElement =
392
- event . currentTarget . previousElementSibling
393
- if ( previousElement ) {
394
- ; ( previousElement as HTMLElement ) . focus ( )
395
- }
396
- } else if ( event . key === "ArrowRight" ) {
397
- const nextElement = event . currentTarget . nextElementSibling
398
- if ( nextElement ) {
399
- ; ( nextElement as HTMLElement ) . focus ( )
400
- }
401
- }
402
- } }
389
+ onKeyDown = { arrowsMoveSideways }
403
390
>
404
391
{ tab . charAt ( 0 ) . toUpperCase ( ) + tab . slice ( 1 ) }
405
392
< ArrowDownIcon className = "ml-2 size-6 text-sec-darker opacity-0 [[aria-selected=true]>&]:opacity-100" />
@@ -414,3 +401,17 @@ export function CallForProposals() {
414
401
</ section >
415
402
)
416
403
}
404
+
405
+ function arrowsMoveSideways ( event : React . KeyboardEvent < HTMLButtonElement > ) {
406
+ if ( event . key === "ArrowLeft" ) {
407
+ const previousElement = event . currentTarget . previousElementSibling
408
+ if ( previousElement ) {
409
+ ; ( previousElement as HTMLElement ) . focus ( )
410
+ }
411
+ } else if ( event . key === "ArrowRight" ) {
412
+ const nextElement = event . currentTarget . nextElementSibling
413
+ if ( nextElement ) {
414
+ ; ( nextElement as HTMLElement ) . focus ( )
415
+ }
416
+ }
417
+ }
0 commit comments