import { ReactNode } from 'react'; import { Box, Button, Drawer, DrawerBody, DrawerContent, DrawerHeader, DrawerRoot, Flex, HStack, IconButton, Text, useDisclosure, } from '@chakra-ui/react'; import { LuAlignJustify, LuArrowBigLeft, LuLogIn, LuLogOut, LuMoon, LuSettings, LuSun, } from 'react-icons/lu'; import { useNavigate } from 'react-router-dom'; import { useServiceContext } from '@/service/ServiceContext'; import { SessionState } from '@/service/SessionState'; import { colors } from '@/theme/foundations/colors'; import { requestSignIn, requestSignOut, requestSignUp } from '@/utils/sso'; import { useThemeMode } from '@/utils/theme-tools'; import { useSessionService } from '@/service/session'; import { MdHelp, MdHome, MdMore, MdOutlinePlaylistPlay, MdOutlineUploadFile, MdSupervisedUserCircle } from 'react-icons/md'; import { MenuContent, MenuItem, MenuRoot, MenuTrigger } from '../ui/menu'; export const TOP_BAR_HEIGHT = '50px'; export const BUTTON_TOP_BAR_PROPERTY = { colorPalette: '@menu', height: TOP_BAR_HEIGHT, }; export type TopBarProps = { children?: ReactNode; title?: string; }; export const TopBar = ({ title, children }: TopBarProps) => { const { mode, colorMode, toggleColorMode } = useThemeMode(); const { clearToken } = useSessionService(); const { session } = useServiceContext(); const backColor = mode('back.100', 'back.800'); const drawerDisclose = useDisclosure(); const onChangeTheme = () => { drawerDisclose.onOpen(); }; const navigate = useNavigate(); const onSignIn = (): void => { clearToken(); requestSignIn(); }; const onSignUp = (): void => { clearToken(); requestSignUp(); }; const onSignOut = (): void => { clearToken(); requestSignOut(); }; const onSelectAdd = () => { navigate('/add'); }; const onSelectHome = () => { navigate('/'); }; const onSelectOnAir = () => { navigate('/on-air'); }; const onHelp = () => { navigate('/help'); }; const onSettings = () => { navigate('/settings'); }; return ( {title && ( {title} )} {children} {session?.state !== SessionState.CONNECTED && ( <> )} {session?.state === SessionState.CONNECTED && ( Sign in as {session?.login ?? 'Fail'} Settings Help Sign-out {colorMode === 'light' ? ( Set dark mode ) : ( Set light mode )} )} Karusic

); };