@@ -70,7 +70,7 @@ function DefinitionListItem({
7070}
7171function TopicsTab ( ) {
7272 return (
73- < >
73+ < div >
7474 < TabHeading className = "mt-6" > Suggested Topics</ TabHeading >
7575 < ul className = "list-disc space-y-2 pl-6" >
7676 < li > GraphQL Working Group</ li >
@@ -104,13 +104,13 @@ function TopicsTab() {
104104 < li > Documentation</ li >
105105 </ ul >
106106 </ ul >
107- </ >
107+ </ div >
108108 )
109109}
110110
111111function NotesTab ( ) {
112112 return (
113- < >
113+ < div >
114114 < TabHeading className = "mt-6" > Important Notes</ TabHeading >
115115 < ul className = "list-disc space-y-2 pl-6" >
116116 < li >
@@ -199,13 +199,13 @@ function NotesTab() {
199199 < a href = "mailto:cfp@linuxfoundation.org" > reach out to us</ a > and we will
200200 be more than happy to work with you on your proposal.
201201 </ p >
202- </ >
202+ </ div >
203203 )
204204}
205205
206206function TypesTab ( ) {
207207 return (
208- < >
208+ < div >
209209 < TabHeading className = "mt-6" > Submission Types</ TabHeading >
210210 < ul className = "list-disc space-y-2 pl-6" >
211211 < li >
@@ -220,13 +220,13 @@ function TypesTab() {
220220 < li > Lightning Talk: Typically 5-10 minutes in length</ li >
221221 < li > Workshop: Typically 1-2 hours in length</ li >
222222 </ ul >
223- </ >
223+ </ div >
224224 )
225225}
226226
227227function ProcessTab ( ) {
228228 return (
229- < >
229+ < div >
230230 < TabHeading className = "mt-6" > The Talk Selection Process</ TabHeading >
231231 < p className = "mb-4" >
232232 The GraphQL Foundation strives to select conference talks based on fair
@@ -287,7 +287,7 @@ function ProcessTab() {
287287 In the instance that you aren't sure about your abstract, reach out to
288288 us and we will be more than happy to work with you on your proposal.
289289 </ p >
290- </ >
290+ </ div >
291291 )
292292}
293293
@@ -386,20 +386,7 @@ export function CallForProposals() {
386386 aria-selected = { activeTab === tab }
387387 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"
388388 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 }
403390 >
404391 { tab . charAt ( 0 ) . toUpperCase ( ) + tab . slice ( 1 ) }
405392 < ArrowDownIcon className = "ml-2 size-6 text-sec-darker opacity-0 [[aria-selected=true]>&]:opacity-100" />
@@ -414,3 +401,17 @@ export function CallForProposals() {
414401 </ section >
415402 )
416403}
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