@@ -10,8 +10,10 @@ import {
1010 Dialog ,
1111 ExpansionIcon ,
1212 HelpwaveLogo , IconButton , Input ,
13+ LanguageDialog ,
1314 MarkdownInterpreter ,
1415 SolidButton ,
16+ ThemeDialog ,
1517 useLocalStorage
1618} from '@helpwave/hightide'
1719import { getConfig } from '@/utils/config'
@@ -76,41 +78,54 @@ type HeaderProps = HTMLAttributes<HTMLHeadElement>
7678 */
7779export const Header = ( { ...props } : HeaderProps ) => {
7880 const translation = useTasksTranslation ( )
79- const [ username , setUsername ] = useState < string | undefined > ( ) ;
81+ const [ username , setUsername ] = useState < string | undefined > ( )
8082
8183 useEffect ( ( ) => {
8284 const fetchUser = async ( ) => {
83- const user = await getUser ( ) ;
84- setUsername ( user ?. profile . name ) ;
85+ const user = await getUser ( )
86+ setUsername ( user ?. profile . name )
8587 }
8688
87- fetchUser ( ) ;
88- } , [ ] ) ;
89+ fetchUser ( )
90+ } , [ ] )
91+
92+ const [ isThemeDialogOpen , setIsThemeDialogOpen ] = useState < boolean > ( false )
93+ const [ isLanguageDialogOpen , setIsLanguageDialogOpen ] = useState < boolean > ( false )
8994
9095 return (
91- < header
92- { ...props }
93- className = { clsx (
94- 'flex-row-8 items-center justify-between' ,
95- props . className
96- ) }
97- >
98- < div className = "flex-col-0" >
99- < Input placeholder = { translation ( 'search' ) } />
100- </ div >
101- < div className = "flex-row-4 justify-end" >
102- < IconButton color = "neutral" >
103- < BellIcon />
104- </ IconButton >
105- < IconButton color = "neutral" >
106- < SettingsIcon />
107- </ IconButton >
108- < SolidButton color = "neutral" >
109- { username }
110- < ExpansionIcon isExpanded = { false } />
111- </ SolidButton >
112- </ div >
113- </ header >
96+ < >
97+ < LanguageDialog
98+ isOpen = { isLanguageDialogOpen }
99+ onClose = { ( ) => setIsLanguageDialogOpen ( false ) }
100+ />
101+ < ThemeDialog
102+ isOpen = { isThemeDialogOpen }
103+ onClose = { ( ) => setIsThemeDialogOpen ( false ) }
104+ />
105+ < header
106+ { ...props }
107+ className = { clsx (
108+ 'flex-row-8 items-center justify-between' ,
109+ props . className
110+ ) }
111+ >
112+ < div className = "flex-col-0" >
113+ < Input placeholder = { translation ( 'search' ) } />
114+ </ div >
115+ < div className = "flex-row-4 justify-end" >
116+ < IconButton color = "neutral" >
117+ < BellIcon />
118+ </ IconButton >
119+ < IconButton color = "neutral" onClick = { ( ) => setIsThemeDialogOpen ( true ) } >
120+ < SettingsIcon />
121+ </ IconButton >
122+ < SolidButton color = "neutral" onClick = { ( ) => setIsLanguageDialogOpen ( true ) } >
123+ { username }
124+ < ExpansionIcon isExpanded = { false } />
125+ </ SolidButton >
126+ </ div >
127+ </ header >
128+ </ >
114129 )
115130}
116131
0 commit comments