import type { ReactNode } from 'react' import { Dropdown, DropdownOption } from '../elements/DropdownElements' import { LibraryItemNode } from '../../lib/networking/queries/useGetLibraryItemsQuery' import { UserBasicData } from '../../lib/networking/queries/useGetViewerQuery' import { isVipUser } from '../../lib/featureFlag' export type CardMenuDropdownAction = | 'mark-read' | 'mark-unread' | 'archive' | 'unarchive' | 'delete' | 'share' | 'snooze' | 'set-labels' | 'showOriginal' type CardMenuProps = { item: LibraryItemNode viewer: UserBasicData triggerElement: ReactNode actionHandler: (action: CardMenuDropdownAction) => void } export function CardMenu(props: CardMenuProps): JSX.Element { return ( {!props.item.isArchived ? ( props.actionHandler('archive')} title="Archive" /> ) : ( props.actionHandler('unarchive')} title="Unarchive" /> )} { props.actionHandler('set-labels') }} title="Set Labels" /> props.actionHandler('showOriginal')} title="Open Original" /> {isVipUser(props.viewer) && ( { props.actionHandler('snooze') }} title="Snooze" /> )} {/* { props.actionHandler('share') }} title="Share" /> */} {props.item.readingProgressPercent < 98 ? ( { props.actionHandler('mark-read') }} title="Mark Read" /> ) : ( { props.actionHandler('mark-unread') }} title="Mark Unread" /> )} { props.actionHandler('delete') }} title="Remove" /> ) }