"use client"; import React, { forwardRef, memo, useCallback } from "react"; const ContextMenuItem = forwardRef( ( { children, selected = false, hasSubmenu = false, disabled = false, className = "", onClick, size = "medium", ...props }, ref, ) => { const getTextSize = () => { switch (size) { case "small": return "text-[10px] leading-[14px]"; case "medium": return "text-[14px] leading-[20px]"; case "large": return "text-[16px] leading-[24px]"; default: return "text-[14px] leading-[20px]"; } }; const itemClasses = ` flex items-center justify-between px-[8px] py-[4px] text-[var(--color-content-default-brand-primary)] ${getTextSize()} cursor-pointer transition-colors duration-150 ${ selected ? "bg-[var(--color-surface-default-secondary)] rounded-[var(--measures-radius-small)]" : "" } ${ disabled ? "opacity-50 cursor-not-allowed" : "hover:!bg-[var(--color-surface-default-secondary)] hover:!rounded-[var(--measures-radius-small)]" } ${className} ` .trim() .replace(/\s+/g, " "); const handleClick = useCallback( (e) => { if (!disabled && onClick) { onClick(e); } }, [disabled, onClick], ); const handleKeyDown = useCallback( (e) => { if (e.key === "Enter" || e.key === " ") { e.preventDefault(); if (!disabled && onClick) { onClick(e); } } }, [disabled, onClick], ); return (
{selected && ( )} {children}
{hasSubmenu && ( )}
); }, ); ContextMenuItem.displayName = "ContextMenuItem"; export default memo(ContextMenuItem);