import { useUserTokens } from '@reservoir0x/reservoir-kit-ui' import { Text, Button, Box } from '../primitives' import { DropdownMenuItem, DropdownMenuContent, } from 'components/primitives/Dropdown' import * as DropdownMenu from '@radix-ui/react-dropdown-menu' import { FC, useEffect, useRef, useState } from 'react' import { FontAwesomeIcon } from '@fortawesome/react-fontawesome' import { faChevronDown } from '@fortawesome/free-solid-svg-icons' import { useMediaQuery } from 'react-responsive' export type PortfolioSortingOption = NonNullable< Exclude[1], false | undefined>['sortBy'] > const sortingOptions: PortfolioSortingOption[] = [ 'acquiredAt', 'lastAppraisalValue', ] const nameForSortingOption = ( option: PortfolioSortingOption, compact: boolean ) => { switch (option) { case 'acquiredAt': return 'Recently Acquired' case 'lastAppraisalValue': return 'Appraisal Value' } } type Props = { option: PortfolioSortingOption onOptionSelected: (option: PortfolioSortingOption) => void } const PortfolioSortDropdown: FC = ({ option, onOptionSelected }) => { const isSmallDevice = useMediaQuery({ maxWidth: 905 }) const buttonRef = useRef(null) const [sortWidth, setSortWidth] = useState( buttonRef.current?.offsetWidth ?? '220px' ) const handleResize = () => { if (isSmallDevice) { setSortWidth( buttonRef?.current?.offsetWidth ? buttonRef?.current?.offsetWidth : '220px' ) } } useEffect(() => { window.addEventListener('resize', handleResize, false) }, []) return ( {sortingOptions.map((optionItem) => ( onOptionSelected(optionItem as PortfolioSortingOption) } > {nameForSortingOption(optionItem, false)} ))} ) } export default PortfolioSortDropdown