import { CaretDownFilled, CaretUpFilled, LogoutOutlined, } from '@ant-design/icons'; import { Avatar, Divider, Dropdown, Layout, Menu, Space, Typography, } from 'antd'; import { Logout } from 'api/utils'; import ROUTES from 'constants/routes'; import Config from 'container/ConfigDropdown'; import setTheme, { AppMode } from 'lib/theme/setTheme'; import React, { Dispatch, SetStateAction, useCallback, useState } from 'react'; import { connect, useSelector } from 'react-redux'; import { NavLink } from 'react-router-dom'; import { bindActionCreators } from 'redux'; import { ThunkDispatch } from 'redux-thunk'; import { ToggleDarkMode } from 'store/actions'; import { AppState } from 'store/reducers'; import AppActions from 'types/actions'; import AppReducer from 'types/reducer/app'; import CurrentOrganization from './CurrentOrganization'; import ManageLicense from './ManageLicense'; import SignedInAS from './SignedInAs'; import { Container, IconContainer, LogoutContainer, ToggleButton, } from './styles'; function HeaderContainer({ toggleDarkMode }: Props): JSX.Element { const { isDarkMode, user, currentVersion } = useSelector( (state) => state.app, ); const [isUserDropDownOpen, setIsUserDropDownOpen] = useState(false); const onToggleThemeHandler = useCallback(() => { const preMode: AppMode = isDarkMode ? 'lightMode' : 'darkMode'; setTheme(preMode); const id: AppMode = preMode; const { head } = document; const link = document.createElement('link'); link.rel = 'stylesheet'; link.type = 'text/css'; link.href = !isDarkMode ? '/css/antd.dark.min.css' : '/css/antd.min.css'; link.media = 'all'; link.id = id; head.appendChild(link); link.onload = (): void => { toggleDarkMode(); const prevNode = document.getElementById('appMode'); prevNode?.remove(); }; }, [toggleDarkMode, isDarkMode]); const onToggleHandler = useCallback( (functionToExecute: Dispatch>) => (): void => { functionToExecute((state) => !state); }, [], ); const menu = (
{ if (e.key === 'Enter' || e.key === 'Space') { Logout(); } }} role="button" onClick={Logout} > Logout
); return ( SigNoz SigNoz {user?.name[0]} {!isUserDropDownOpen ? : } ); } interface DispatchProps { toggleDarkMode: () => void; } const mapDispatchToProps = ( dispatch: ThunkDispatch, ): DispatchProps => ({ toggleDarkMode: bindActionCreators(ToggleDarkMode, dispatch), }); type Props = DispatchProps; export default connect(null, mapDispatchToProps)(HeaderContainer);