import { Dispatch, FC, SetStateAction, useMemo } from 'react' import { ToggleGroup, ToggleGroupItem, Text, Button, Flex, Box, } from 'components/primitives' import { useMounted } from 'hooks' import { useMediaQuery } from 'react-responsive' import { Dropdown, DropdownMenuItem } from 'components/primitives/Dropdown' import { faChevronDown } from '@fortawesome/free-solid-svg-icons' import { FontAwesomeIcon } from '@fortawesome/react-fontawesome' type Props = { minutesFilter: number setMinutesFilter: Dispatch> } const filterTimes = [ { value: '5', display: '5m', }, { value: '30', display: '30m', }, { value: '60', display: '1h', }, { value: '360', display: '6h', }, { value: '1440', display: '24h', }, ] export const TimeFilterToggle: FC = ({ minutesFilter, setMinutesFilter, }) => { const isMounted = useMounted() const isSmallDevice = useMediaQuery({ maxWidth: 905 }) && isMounted const displayTime = useMemo(() => { const timeFilter = filterTimes.find( (time) => Number(time.value) === minutesFilter ) return timeFilter?.display }, [filterTimes, minutesFilter]) if (isSmallDevice) { return ( {displayTime} } > {filterTimes.map((time) => ( { setMinutesFilter(+time.value) }} css={{ py: '$2' }} > {time.display} ))} ) } return ( { if (!value) return setMinutesFilter(+value) }} css={{ flexShrink: 0 }} > {filterTimes.map((time) => ( {time.display} ))} ) }