@@ -88,8 +88,8 @@ export const GlobalNavbar: React.FC<GlobalNavbarProps> = ({
8888
8989 const extraItems = navItems . filter ( ( item ) => item . menuClass ) ;
9090
91- const activeExtraItem = extraItems . find (
92- ( item ) => isRouteActive ( location . pathname , item . path ) ,
91+ const activeExtraItem = extraItems . find ( ( item ) =>
92+ isRouteActive ( location . pathname , item . path ) ,
9393 ) ;
9494
9595 const moreButtonClass = React . useMemo ( ( ) => {
@@ -117,128 +117,126 @@ export const GlobalNavbar: React.FC<GlobalNavbarProps> = ({
117117 < div
118118 className = { `pointer-events-auto w-full ${ LAYOUT . NAVBAR_BG } border-b border-default-200/50 dark:border-zinc-800/50 shadow-sm dark:shadow-zinc-950/20 px-4 py-2 flex items-center gap-4` }
119119 >
120- < div className = "flex items-center gap-3 shrink-0" >
121- < Button
122- isIconOnly
123- variant = "light"
124- size = "sm"
125- radius = "lg"
126- onPress = { ( ) => tryNavigate ( - 1 ) }
127- isDisabled = { navLocked }
128- className = "wails-no-drag text-default-500 dark:text-zinc-400"
129- >
130- < IoArrowBack size = { 20 } />
131- </ Button >
132- < div className = "p-1" >
133- < LeviIcon width = { 28 } height = { 28 } />
134- </ div >
135- < div className = "hidden sm:flex flex-col leading-none gap-0.5" >
136- < p className = "font-bold text-[16px] tracking-tight bg-gradient-to-r from-primary-600 to-primary-400 bg-clip-text text-transparent" >
137- LeviLauncher
138- </ p >
139- { isBeta && (
140- < span className = "text-[10px] font-bold text-amber-500 uppercase tracking-wider" >
141- Beta
142- </ span >
143- ) }
144- </ div >
120+ < div className = "flex items-center gap-3 shrink-0" >
121+ < Button
122+ isIconOnly
123+ variant = "light"
124+ size = "sm"
125+ radius = "lg"
126+ onPress = { ( ) => tryNavigate ( - 1 ) }
127+ isDisabled = { navLocked }
128+ className = "wails-no-drag text-default-500 dark:text-zinc-400"
129+ >
130+ < IoArrowBack size = { 20 } />
131+ </ Button >
132+ < div className = "p-1" >
133+ < LeviIcon width = { 28 } height = { 28 } />
145134 </ div >
135+ < div className = "hidden sm:flex flex-col leading-none gap-0.5" >
136+ < p className = "font-bold text-[16px] tracking-tight bg-gradient-to-r from-primary-600 to-primary-400 bg-clip-text text-transparent" >
137+ LeviLauncher
138+ </ p >
139+ { isBeta && (
140+ < span className = "text-[10px] font-bold text-amber-500 uppercase tracking-wider" >
141+ Beta
142+ </ span >
143+ ) }
144+ </ div >
145+ </ div >
146146
147- < div className = "flex-1 flex items-center justify-center gap-1 sm:gap-2 whitespace-nowrap overflow-x-auto px-2 scrollbar-hide" >
148- { navItems . map ( ( item ) => {
149- const isActive = isRouteActive ( location . pathname , item . path ) ;
150- return (
151- < Tooltip
152- key = { item . key }
153- content = { item . label }
154- delay = { 500 }
155- closeDelay = { 0 }
147+ < div className = "flex-1 flex items-center justify-center gap-1 sm:gap-2 whitespace-nowrap overflow-x-auto px-2 scrollbar-hide" >
148+ { navItems . map ( ( item ) => {
149+ const isActive = isRouteActive ( location . pathname , item . path ) ;
150+ return (
151+ < Tooltip
152+ key = { item . key }
153+ content = { item . label }
154+ delay = { 500 }
155+ closeDelay = { 0 }
156+ >
157+ < Button
158+ variant = { isActive ? "flat" : "light" }
159+ color = "default"
160+ aria-label = { item . label }
161+ isDisabled = { navLocked }
162+ onPress = { ( e ) => {
163+ tryNavigate ( item . path ) ;
164+ ( e . target as HTMLElement ) . blur ( ) ;
165+ } }
166+ className = { `min-w-0 px-3 h-10 rounded-xl transition-all duration-200 outline-none data-[focus-visible=true]:outline-none ${ item . navbarClass } ${
167+ isActive
168+ ? "bg-zinc-100 dark:bg-zinc-800 text-zinc-900 dark:text-zinc-100 font-medium"
169+ : "text-zinc-700 hover:text-black dark:text-zinc-300 dark:hover:text-white font-medium"
170+ } `}
171+ startContent = {
172+ < span
173+ className = {
174+ isActive ? "text-zinc-900 dark:text-zinc-100" : ""
175+ }
176+ >
177+ { item . icon }
178+ </ span >
179+ }
156180 >
157- < Button
158- variant = { isActive ? "flat" : "light" }
159- color = "default"
160- aria-label = { item . label }
161- isDisabled = { navLocked }
162- onPress = { ( e ) => {
163- tryNavigate ( item . path ) ;
164- ( e . target as HTMLElement ) . blur ( ) ;
165- } }
166- className = { `min-w-0 px-3 h-10 rounded-xl transition-all duration-200 outline-none data-[focus-visible=true]:outline-none ${ item . navbarClass } ${
167- isActive
168- ? "bg-zinc-100 dark:bg-zinc-800 text-zinc-900 dark:text-zinc-100 font-medium"
169- : "text-zinc-700 hover:text-black dark:text-zinc-300 dark:hover:text-white font-medium"
170- } `}
171- startContent = {
172- < span
173- className = {
174- isActive ? "text-zinc-900 dark:text-zinc-100" : ""
175- }
176- >
177- { item . icon }
178- </ span >
179- }
180- >
181- < span className = "hidden md:inline" > { item . label } </ span >
182- </ Button >
183- </ Tooltip >
184- ) ;
185- } ) }
181+ < span className = "hidden md:inline" > { item . label } </ span >
182+ </ Button >
183+ </ Tooltip >
184+ ) ;
185+ } ) }
186186
187- < div className = "lg:hidden" >
188- < Dropdown classNames = { COMPONENT_STYLES . dropdown } >
189- < DropdownTrigger >
190- < Button
191- variant = "light"
192- aria-label = "More Menu"
193- isDisabled = { navLocked }
194- className = { moreButtonClass }
195- startContent = { < FaEllipsisH size = { 18 } /> }
196- >
197- < span className = "hidden md:inline" > { t ( "nav.more" ) } </ span >
198- </ Button >
199- </ DropdownTrigger >
200- < DropdownMenu
201- aria-label = "more-menu"
202- onAction = { ( key ) => {
203- const item = extraItems . find ( ( i ) => i . key === key ) ;
204- if ( item ) tryNavigate ( item . path ) ;
205- } }
187+ < div className = "lg:hidden" >
188+ < Dropdown classNames = { COMPONENT_STYLES . dropdown } >
189+ < DropdownTrigger >
190+ < Button
191+ variant = "light"
192+ aria-label = "More Menu"
193+ isDisabled = { navLocked }
194+ className = { moreButtonClass }
195+ startContent = { < FaEllipsisH size = { 18 } /> }
206196 >
207- { extraItems . map ( ( item ) => (
208- < DropdownItem
209- key = { item . key }
210- startContent = { React . cloneElement ( item . icon as any , {
211- size : 14 ,
212- } ) }
213- className = { item . menuClass }
214- >
215- { item . label }
216- </ DropdownItem >
217- ) ) }
218- </ DropdownMenu >
219- </ Dropdown >
220- </ div >
197+ < span className = "hidden md:inline" > { t ( "nav.more" ) } </ span >
198+ </ Button >
199+ </ DropdownTrigger >
200+ < DropdownMenu
201+ aria-label = "more-menu"
202+ onAction = { ( key ) => {
203+ const item = extraItems . find ( ( i ) => i . key === key ) ;
204+ if ( item ) tryNavigate ( item . path ) ;
205+ } }
206+ >
207+ { extraItems . map ( ( item ) => (
208+ < DropdownItem
209+ key = { item . key }
210+ startContent = { React . cloneElement ( item . icon as any , {
211+ size : 14 ,
212+ } ) }
213+ className = { item . menuClass }
214+ >
215+ { item . label }
216+ </ DropdownItem >
217+ ) ) }
218+ </ DropdownMenu >
219+ </ Dropdown >
221220 </ div >
221+ </ div >
222222
223- < div className = "flex items-center gap-3 shrink-0 justify-end" >
224- < div className = "h-8 w-px bg-default-200 dark:bg-zinc-700 mx-1 hidden sm:block" />
223+ < div className = "flex items-center gap-3 shrink-0 justify-end" >
224+ < div className = "h-8 w-px bg-default-200 dark:bg-zinc-700 mx-1 hidden sm:block" />
225225
226- { themeMode !== "auto" &&
227- themeMode !== "schedule" &&
228- themeMode !== "system" && (
229- < ThemeSwitcher isDisabled = { navLocked } />
230- ) }
231- < div
232- className = { `hidden sm:block ${ navLocked ? "pointer-events-none opacity-50" : "" } ` }
233- >
234- < UserAvatar />
235- </ div >
236-
237- < WindowControls
238- navLocked = { navLocked }
239- isOnboardingMode = { isOnboardingMode }
240- />
226+ { themeMode !== "auto" &&
227+ themeMode !== "schedule" &&
228+ themeMode !== "system" && < ThemeSwitcher isDisabled = { navLocked } /> }
229+ < div
230+ className = { `hidden sm:block ${ navLocked ? "pointer-events-none opacity-50" : "" } ` }
231+ >
232+ < UserAvatar />
241233 </ div >
234+
235+ < WindowControls
236+ navLocked = { navLocked }
237+ isOnboardingMode = { isOnboardingMode }
238+ />
239+ </ div >
242240 </ div >
243241 </ div >
244242 ) ;
0 commit comments