@@ -36,9 +36,12 @@ export function RemixUiTopbar () {
36
36
const [ latestReleaseNotesUrl , setLatestReleaseNotesUrl ] = useState < string > ( '' )
37
37
const [ currentReleaseVersion , setCurrentReleaseVersion ] = useState < string > ( '' )
38
38
const [ menuItems , setMenuItems ] = useState < any [ ] > ( [ ] )
39
+ const [ showTheme , setShowTheme ] = useState < boolean > ( false )
39
40
const subMenuIconRef = useRef < any > ( null )
41
+ const themeIconRef = useRef < any > ( null )
40
42
const [ showSubMenuFlyOut , setShowSubMenuFlyOut ] = useState < boolean > ( false )
41
- useOnClickOutside ( [ subMenuIconRef ] , ( ) => setShowSubMenuFlyOut ( false ) )
43
+ useOnClickOutside ( [ subMenuIconRef , themeIconRef ] , ( ) => setShowSubMenuFlyOut ( false ) )
44
+ useOnClickOutside ( [ themeIconRef ] , ( ) => setShowTheme ( false ) )
42
45
const workspaceRenameInput = useRef ( )
43
46
const cloneUrlRef = useRef < HTMLInputElement > ( )
44
47
@@ -285,6 +288,15 @@ export function RemixUiTopbar () {
285
288
const theme = await plugin . call ( 'theme' , 'currentTheme' )
286
289
return theme
287
290
}
291
+
292
+ useEffect ( ( ) => {
293
+ const run = async ( ) => {
294
+ const theme = await getCurrentTheme ( )
295
+ setCurrentTheme ( theme )
296
+ }
297
+ run ( )
298
+ } , [ ] )
299
+
288
300
const renameModalMessage = ( workspaceName ?: string ) => {
289
301
return (
290
302
< div className = 'd-flex flex-column' >
@@ -512,7 +524,7 @@ export function RemixUiTopbar () {
512
524
/>
513
525
) }
514
526
</ >
515
- < Dropdown className = "ml-5" data-id = "topbar-themeIcon" >
527
+ < Dropdown className = "ml-5" data-id = "topbar-themeIcon" show = { showTheme } ref = { themeIconRef } >
516
528
< Dropdown . Toggle
517
529
as = { Button }
518
530
variant = "outline-secondary"
@@ -522,8 +534,13 @@ export function RemixUiTopbar () {
522
534
padding : '0.35rem 0.5rem' ,
523
535
fontSize : '0.8rem'
524
536
} }
537
+ onClick = { async ( ) => {
538
+ const theme = await getCurrentTheme ( )
539
+ setCurrentTheme ( theme )
540
+ setShowTheme ( ! showTheme )
541
+ } }
525
542
>
526
- < i className = " fas fa-sun-bright mr-2" > </ i >
543
+ < i className = { ` fas ${ currentTheme && currentTheme . name . includes ( 'Dark' ) ? ' fa-moon' : 'fa- sun-bright' } mr-2` } > </ i >
527
544
Theme
528
545
</ Dropdown . Toggle >
529
546
< Dropdown . Menu
@@ -559,7 +576,6 @@ export function RemixUiTopbar () {
559
576
className = ""
560
577
onClick = { async ( ) => {
561
578
plugin . call ( 'menuicons' , 'select' , 'settings' )
562
- plugin . call ( 'tabs' , 'focus' , 'settings' )
563
579
_paq . push ( [ 'trackEvent' , 'topbar' , 'header' , 'Settings' ] )
564
580
} }
565
581
data-id = "topbar-settingsIcon"
0 commit comments