'use client' import type { VariantProps } from 'class-variance-authority' import { cva } from 'class-variance-authority' import * as React from 'react' import Tooltip from '@/app/components/base/tooltip' import ShortcutsName from '@/app/components/workflow/shortcuts-name' import { cn } from '@/utils/classnames' const menuItemVariants = cva( [ 'flex w-full items-center gap-2 rounded-lg px-3 py-2', 'disabled:cursor-not-allowed disabled:opacity-50', 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-components-input-border-active', ], { variants: { variant: { default: 'hover:bg-state-base-hover', destructive: 'group hover:bg-state-destructive-hover', }, }, defaultVariants: { variant: 'default', }, }, ) const iconVariants = cva('size-4 text-text-tertiary', { variants: { variant: { default: '', destructive: 'group-hover:text-text-destructive', }, }, defaultVariants: { variant: 'default', }, }) const labelVariants = cva('text-text-secondary system-sm-regular', { variants: { variant: { default: '', destructive: 'group-hover:text-text-destructive', }, }, defaultVariants: { variant: 'default', }, }) export type MenuItemProps = { icon: React.ElementType | string label: string kbd?: readonly string[] onClick: React.MouseEventHandler disabled?: boolean tooltip?: string } & VariantProps const MenuItem = ({ icon: Icon, label, kbd, onClick, disabled, variant, tooltip }: MenuItemProps) => { const handleClick = React.useCallback((event: React.MouseEvent) => { event.stopPropagation() onClick(event) }, [onClick]) return ( ) } export default React.memo(MenuItem)