1
0
mirror of https://github.com/checktheroads/hyperglass synced 2024-05-11 05:55:08 +00:00
Files
checktheroads-hyperglass/hyperglass/ui/components/footer/button.tsx
2021-01-18 22:48:14 -07:00

44 lines
1.3 KiB
TypeScript

import { Button, Menu, MenuButton, MenuList } from '@chakra-ui/react';
import { Markdown } from '~/components';
import { useColorValue, useBreakpointValue } from '~/context';
import { useOpposingColor } from '~/hooks';
import type { TFooterButton } from './types';
export const FooterButton: React.FC<TFooterButton> = (props: TFooterButton) => {
const { content, title, side, ...rest } = props;
const placement = side === 'left' ? 'top' : side === 'right' ? 'top-end' : undefined;
const bg = useColorValue('white', 'gray.900');
const color = useOpposingColor(bg);
const size = useBreakpointValue({ base: 'xs', lg: 'sm' });
return (
<Menu placement={placement} preventOverflow isLazy>
<MenuButton
zIndex={2}
as={Button}
size={size}
variant="ghost"
aria-label={typeof title === 'string' ? title : undefined}
>
{title}
</MenuButton>
<MenuList
px={6}
py={4}
bg={bg}
// Ensure the height doesn't overtake the viewport, especially on mobile. See overflow also.
maxH="50vh"
color={color}
boxShadow="2xl"
textAlign="left"
overflowY="auto"
mx={{ base: 1, lg: 2 }}
maxW={{ base: '100%', lg: '50vw' }}
{...rest}
>
<Markdown content={content} />
</MenuList>
</Menu>
);
};