import React from 'react'; import * as Ariakit from '@ariakit/react'; import { cn } from '~/utils'; interface DropdownProps { trigger: React.ReactNode; items: { label?: string; onClick?: () => void; icon?: React.ReactNode; kbd?: string; show?: boolean; disabled?: boolean; separate?: boolean; }[]; isOpen: boolean; setIsOpen: (isOpen: boolean) => void; className?: string; iconClassName?: string; anchor?: { x: string; y: string }; modal?: boolean; menuId: string; } const DropdownPopup: React.FC = ({ trigger, items, isOpen, setIsOpen, menuId, modal, iconClassName, }) => { const menu = Ariakit.useMenuStore({ open: isOpen, setOpen: setIsOpen }); return ( {trigger} {items .filter((item) => item.show !== false) .map((item, index) => item.separate === true ? ( ) : ( { event.preventDefault(); if (item.onClick) { item.onClick(); } menu.hide(); }} > {item.icon != null && ( )} {item.label} {item.kbd != null && ( ⌘{item.kbd} )} ), )} ); }; export default DropdownPopup;