@@ -2,12 +2,10 @@ import Image from 'next/image'
22import { useRouter } from 'next/router'
33import Link from 'next/link'
44import { Fragment , useEffect , useState , isValidElement } from 'react'
5- import clsx from 'clsx'
6- import { Transition } from '@headlessui/react'
7- import { RemoveScroll } from 'react-remove-scroll'
85import { FaBars } from 'react-icons/fa'
96import PageContainer from './PageContainer'
107import PlayerSelector from './admin/PlayerSelector'
8+ import NavigationOverlay from './NavigationOverlay'
119
1210export default function Nav ( { leftItems, mobileItems, rightItems } ) {
1311 const router = useRouter ( )
@@ -74,77 +72,42 @@ export default function Nav ({ leftItems, mobileItems, rightItems }) {
7472 </ div >
7573 </ div >
7674 </ PageContainer >
77- < Transition
78- show = { drawerOpen }
79- enter = 'duration-200 ease-out'
80- enterFrom = 'opacity-0 scale-95'
81- enterTo = 'opacity-100 scale-100'
82- leave = 'duration-100 ease-in'
83- leaveFrom = 'opacity-100 scale-100'
84- leaveTo = 'opacity-0 scale-95'
85- >
86- { ( ref ) => (
87- < div ref = { ref } className = 'z-10 fixed inset-0 transition-opacity' >
88- < div className = 'absolute inset-0 bg-black opacity-50' tabIndex = '0' onClick = { ( ) => setDrawerOpen ( false ) } />
89- </ div >
90- ) }
91- </ Transition >
92- < RemoveScroll forwardProps enabled = { drawerOpen } >
93- < aside
94- className = { clsx ( 'top-0 right-0 w-72 bg-gray-800 fixed h-full overflow-auto ease-in-out transition-all duration-300 z-30' , RemoveScroll . classNames . zeroRight ,
95- {
96- 'translate-x-0' : drawerOpen ,
97- 'translate-x-full' : ! drawerOpen
98- } ) }
99- >
100- < div className = 'pt-5 pb-6 px-5' >
101- < div className = 'flex items-center justify-between' >
102- < div >
103- < Link href = '/' passHref key = 'logo-icon' >
104- < a >
105- < span className = 'sr-only' > Home</ span >
106- < Image width = '40' height = '40' src = '/images/banmanager-icon.png' alt = 'Logo' />
75+ < NavigationOverlay drawerOpen = { drawerOpen } setDrawerOpen = { setDrawerOpen } >
76+ < NavigationOverlay . Header >
77+ < Link href = '/' passHref key = 'logo-icon' >
78+ < a >
79+ < span className = 'sr-only' > Home</ span >
80+ < Image width = '40' height = '40' src = '/images/banmanager-icon.png' alt = 'Logo' />
81+ </ a >
82+ </ Link >
83+ </ NavigationOverlay . Header >
84+ < NavigationOverlay . Body className = '!px-2 flex flex-col sm:flex-row sm:justify-around' >
85+ < nav >
86+ { renderMenu ( rightItems ) }
87+ { mobileItems . map ( ( { href, name, icon, label, splitBorder } ) => (
88+ < Fragment key = { `${ href } ${ name } ` } >
89+ < Link href = { href } passHref >
90+ < a className = 'hover:text-accent-200 hover:bg-gray-600 flex transition-colors text-gray-100 text-xl p-2 my-4 rounded-lg' >
91+ { icon }
92+ < span className = 'mx-4 text-lg font-normal' >
93+ { name }
94+ </ span >
95+ { label &&
96+ < span className = 'flex-grow text-right' >
97+ < button type = 'button' className = 'w-6 h-6 text-xs rounded-full text-white bg-accent-500' >
98+ < span className = 'p-1' >
99+ { label }
100+ </ span >
101+ </ button >
102+ </ span > }
107103 </ a >
108104 </ Link >
109- </ div >
110- < div className = '-mr-2' >
111- < button type = 'button' className = 'rounded-md p-2 inline-flex items-center justify-center text-gray-400 hover:text-gray-500 hover:bg-gray-100 focus:outline-none focus:ring-2 focus:ring-inset focus:ring-grey-500' onClick = { ( ) => setDrawerOpen ( false ) } >
112- < span className = 'sr-only' > Close menu</ span >
113- < svg className = 'h-6 w-6' xmlns = 'http:www.w3.org/2000/svg' fill = 'none' viewBox = '0 0 24 24' stroke = 'currentColor' aria-hidden = 'true' >
114- < path strokeLinecap = 'round' strokeLinejoin = 'round' strokeWidth = '2' d = 'M6 18L18 6M6 6l12 12' />
115- </ svg >
116- </ button >
117- </ div >
118- </ div >
119- </ div >
120- < div className = 'px-2 flex flex-col sm:flex-row sm:justify-around' >
121- < nav >
122- { renderMenu ( rightItems ) }
123- { mobileItems . map ( ( { href, name, icon, label, splitBorder } ) => (
124- < Fragment key = { `${ href } ${ name } ` } >
125- < Link href = { href } passHref >
126- < a className = 'hover:text-accent-200 hover:bg-gray-600 flex transition-colors text-gray-100 text-xl p-2 my-4 rounded-lg' >
127- { icon }
128- < span className = 'mx-4 text-lg font-normal' >
129- { name }
130- </ span >
131- { label &&
132- < span className = 'flex-grow text-right' >
133- < button type = 'button' className = 'w-6 h-6 text-xs rounded-full text-white bg-accent-500' >
134- < span className = 'p-1' >
135- { label }
136- </ span >
137- </ button >
138- </ span > }
139- </ a >
140- </ Link >
141- { splitBorder && < span className = 'text-5xl pb-4 mb-4 border-b border-accent-200 leading-none' /> }
142- </ Fragment >
143- ) ) }
144- </ nav >
145- </ div >
146- </ aside >
147- </ RemoveScroll >
105+ { splitBorder && < span className = 'text-5xl pb-4 mb-4 border-b border-accent-200 leading-none' /> }
106+ </ Fragment >
107+ ) ) }
108+ </ nav >
109+ </ NavigationOverlay . Body >
110+ </ NavigationOverlay >
148111 </ div >
149112 )
150113}
0 commit comments