mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-04-03 16:45:56 +00:00
* add MobileMenu component * implement MobileMenu via Header * close menu with links * move all menu logic to MobileMenu component * refactor MobileMenu to use Modals * remove unneeded motion params * remove animation on fixed modal * abstract out a HeaderButtons component * abstract out Search component * move BORDER_WIDTH to constants * hover fixes * change requests * fix: Link should wrap header buttons Co-authored-by: Corwin Smith <cssmittys@gmail.com> Co-authored-by: Nicolás Quiroz <nh.quiroz@gmail.com>
71 lines
1.9 KiB
TypeScript
71 lines
1.9 KiB
TypeScript
import { Box, Flex, Modal, ModalContent, ModalOverlay, useDisclosure } from '@chakra-ui/react';
|
|
import { CloseIcon } from '@chakra-ui/icons';
|
|
|
|
import { HamburgerIcon } from '../UI/icons';
|
|
import { Search } from '../UI/search';
|
|
import { HeaderButtons } from '../UI';
|
|
|
|
import { BORDER_WIDTH } from '../../constants';
|
|
|
|
export const MobileMenu: React.FC = () => {
|
|
const { isOpen, onOpen, onClose } = useDisclosure();
|
|
|
|
return (
|
|
<>
|
|
{/* HAMBURGER MENU ICON */}
|
|
<Box
|
|
as='button'
|
|
p={4}
|
|
display={{ base: 'block', md: 'none' }}
|
|
color='primary'
|
|
_hover={{ bg: 'primary', color: 'bg' }}
|
|
onClick={onOpen}
|
|
>
|
|
<HamburgerIcon />
|
|
</Box>
|
|
|
|
{/* MODAL */}
|
|
<Modal isOpen={isOpen} onClose={onClose} motionPreset='none'>
|
|
<ModalOverlay />
|
|
<ModalContent>
|
|
{/* MOBILE MENU */}
|
|
<Flex
|
|
position='fixed'
|
|
maxW='min(calc(var(--chakra-sizes-container-sm) - 2rem), 100vw - 2rem)'
|
|
marginInline='auto'
|
|
inset='0'
|
|
top={4}
|
|
mb={4}
|
|
color='bg'
|
|
bg='secondary'
|
|
border={BORDER_WIDTH}
|
|
overflow='hidden'
|
|
direction='column'
|
|
>
|
|
<Flex borderBottom={BORDER_WIDTH} justify='flex-end'>
|
|
{/* CLOSE ICON */}
|
|
<Box
|
|
as='button'
|
|
p={4}
|
|
borderInlineStartWidth={BORDER_WIDTH}
|
|
borderColor='bg'
|
|
color='bg'
|
|
_hover={{ bg: 'primary' }}
|
|
onClick={onClose}
|
|
ms='auto'
|
|
>
|
|
<CloseIcon boxSize={5} />
|
|
</Box>
|
|
</Flex>
|
|
|
|
{/* HEADER BUTTONS */}
|
|
<HeaderButtons close={onClose} />
|
|
|
|
{/* SEARCH */}
|
|
<Search />
|
|
</Flex>
|
|
</ModalContent>
|
|
</Modal>
|
|
</>
|
|
);
|
|
};
|