import { ReactNode } from 'react'; import { Box, Button, ConditionalValue, Flex, HStack, IconButton, Span, Text, useBreakpointValue, useDisclosure, } from '@chakra-ui/react'; import { LuAlignJustify, LuArrowBigLeft, LuCircleUserRound, LuKeySquare, LuLogIn, LuLogOut, LuMoon, LuSettings, LuSun, } from 'react-icons/lu'; import { MdHelp, MdHome, MdMore, MdOutlinePlaylistPlay, MdOutlineUploadFile, MdRestartAlt, MdSupervisedUserCircle, } from 'react-icons/md'; import { useNavigate } from 'react-router-dom'; import { useColorMode, useColorModeValue } from '@/components/ui/color-mode'; import { DrawerBody, DrawerContent, DrawerHeader, DrawerRoot, } from '@/components/ui/drawer'; import { MenuContent, MenuItem, MenuRoot, MenuTrigger, } from '@/components/ui/menu'; import { useServiceContext } from '@/service/ServiceContext'; import { useSessionService } from '@/service/session'; import { colors } from '@/theme/colors'; import { requestOpenSite, requestSignIn, requestSignOut, requestSignUp, } from '@/utils/sso'; export const TOP_BAR_HEIGHT = '50px'; export const BUTTON_TOP_BAR_PROPERTY = { variant: 'ghost' as ConditionalValue< 'ghost' | 'outline' | 'solid' | 'subtle' | 'surface' | 'plain' | undefined >, //colorPalette: "brand", fontSize: '20px', textTransform: 'uppercase', height: TOP_BAR_HEIGHT, }; export type TopBarProps = { children?: ReactNode; title?: string; titleLink?: string; titleIcon?: ReactNode; }; const ButtonMenuLeft = ({ dest, title, icon, onClickEnd = () => {}, }: { dest: string; title: string; icon: ReactNode; onClickEnd?: () => void; }) => { const navigate = useNavigate(); return ( <> ); }; export const TopBar = ({ title, titleLink, titleIcon, children, }: TopBarProps) => { const navigate = useNavigate(); const { colorMode, toggleColorMode } = useColorMode(); const { session } = useServiceContext(); const { clearToken, isConnected } = useSessionService(); const backColor = useColorModeValue('back.100', 'back.800'); const drawerDisclose = useDisclosure(); const isVisible = useBreakpointValue({ base: false, md: true }); const onOpenLeftMenu = () => { if (!isConnected) { onForceReload(); } else { drawerDisclose.onOpen(); } }; const onSignIn = (): void => { clearToken(); requestSignIn(); }; const onSignUp = (): void => { clearToken(); requestSignUp(); }; const onSignOut = (): void => { clearToken(); requestSignOut(); }; const onKarso = (): void => { requestOpenSite(); }; const onForceReload = (): void => { // @ts-expect-error window.location.reload(true); }; return ( {title && ( navigate(titleLink) : undefined} > {titleIcon} {title} )} {children} {!session?.isConnected && ( <> )} {session?.isConnected && ( Sign in as {session?.login ?? 'Fail'} navigate('/settings')} > Settings navigate('/help')} > Help Sign-out Karso (SSO) force reload {colorMode === 'light' ? ( Set dark mode ) : ( Set light mode )} )} {session?.isConnected && ( {environment.applName} } /> } /> } /> )} ); };