import { Dispatch, FC, SetStateAction, useMemo } from 'react' import { ToggleGroup, ToggleGroupItem, Text, Button, Box, Flex, } from 'components/primitives' import { Dropdown, DropdownMenuItem } from 'components/primitives/Dropdown' import { useMounted } from 'hooks' import { useMediaQuery } from 'react-responsive' import { FontAwesomeIcon } from '@fortawesome/react-fontawesome' import { faChevronDown } from '@fortawesome/free-solid-svg-icons' type Props = { fillType: 'mint' | 'sale' | 'any' setFillType: Dispatch> } const fillTypesFilters = [ { value: 'sale', display: 'Trades', }, { value: 'mint', display: 'Mints', }, { value: 'any', display: 'All Sales', }, ] export const FillTypeToggle: FC = ({ fillType, setFillType }) => { const isMounted = useMounted() const isSmallDevice = useMediaQuery({ maxWidth: 905 }) && isMounted const displayFillType = useMemo(() => { const currentFillType = fillTypesFilters.find( (fillTypeFilter) => fillTypeFilter.value === fillType ) return currentFillType?.display }, [fillTypesFilters, fillType]) if (isSmallDevice) { return ( {displayFillType} } > {fillTypesFilters.map((fillType) => ( { setFillType(fillType.value as Props['fillType']) }} css={{ py: '$2' }} > {fillType.display} ))} ) } return ( { if (!value) return setFillType(value as typeof fillType) }} css={{ flexShrink: 0 }} > {fillTypesFilters.map((fillType) => ( {fillType.display} ))} ) }