import React, { useContext, useEffect } from 'react'; import { useTranslation } from 'react-i18next'; import { useNavigate } from 'react-router-dom'; import { Tabs, Tab, Paper, useTheme } from '@mui/material'; import MoreTooltip from './MoreTooltip'; import { Page } from '.'; import { SettingsApplications, SmartToy, Storefront, AddBox, Assignment, MoreHoriz, } from '@mui/icons-material'; import RobotAvatar from '../../components/RobotAvatar'; import { AppContext, UseAppStoreType, closeAll } from '../../contexts/AppContext'; interface NavBarProps { width: number; height: number; } const NavBar = ({ width, height }: NavBarProps): JSX.Element => { const { robot, page, settings, setPage, setSlideDirection, open, setOpen, currentOrder, baseUrl, } = useContext(AppContext); const theme = useTheme(); const { t } = useTranslation(); const navigate = useNavigate(); const smallBar = width < 50; const tabSx = smallBar ? { position: 'relative', bottom: robot.avatarLoaded ? '0.9em' : '0.13em', minWidth: '1em' } : { position: 'relative', bottom: '1em', minWidth: '2em' }; const pagesPosition = { robot: 1, offers: 2, create: 3, order: 4, settings: 5, }; const handleSlideDirection = function (oldPage: Page, newPage: Page) { const oldPos: number = pagesPosition[oldPage]; const newPos: number = pagesPosition[newPage]; setSlideDirection( newPos > oldPos ? { in: 'left', out: 'right' } : { in: 'right', out: 'left' }, ); }; const changePage = function (mouseEvent: any, newPage: Page) { if (newPage === 'none') { return null; } else { handleSlideDirection(page, newPage); setPage(newPage); const param = newPage === 'order' ? currentOrder ?? '' : ''; setTimeout( () => navigate(`/${newPage}/${param}`), theme.transitions.duration.leavingScreen * 3, ); } }; useEffect(() => { setOpen(closeAll); }, [page]); return ( setOpen({ ...closeAll, profile: !open.profile })} icon={ robot.nickname && robot.avatarLoaded ? ( ) : ( <> ) } /> } iconPosition='start' /> } iconPosition='start' /> } iconPosition='start' /> } iconPosition='start' /> } iconPosition='start' /> { open.more ? null : setOpen({ ...open, more: true }); }} icon={ } iconPosition='start' /> ); }; export default NavBar;