import { Button, cn, Icon, Menu, MenuContent, MenuItem as Item, MenuTrigger, type IconName } from "./kit";
export type MenuItem = { label: string; icon?: IconName; danger?: boolean; onSelect: () => void };
/** The row's ⋯ menu: arrow keys, Home and End, typing to jump, and Escape back to the button. */
export function RowMenu({ label, items, className }: { label: string; items: MenuItem[]; className?: string }) {
if (!items.length) return null;
return (
<Menu>
<MenuTrigger asChild>
<Button
variant="ghost"
size="icon-sm"
aria-label={label}
onClick={(e) => e.stopPropagation()}
className={cn(
"text-cell opacity-60 group-hover:opacity-100 focus-visible:opacity-100 data-[state=open]:bg-quiet data-[state=open]:opacity-100",
className,
)}
>
<Icon name="more-2-line" size={17} />
</Button>
</MenuTrigger>
<MenuContent align="end" aria-label={label} onClick={(e) => e.stopPropagation()}>
{items.map((item) => (
<Item key={item.label} icon={item.icon} tone={item.danger ? "danger" : "default"} onSelect={item.onSelect}>
{item.label}
</Item>
))}
</MenuContent>
</Menu>
);
}