function ContextMenuItemRenderer()

in apps/chat/src/components/Common/ContextMenu.tsx [14:80]


function ContextMenuItemRenderer({
  featureType,
  name,
  additionalNameNode,
  Icon,
  iconClassName = 'text-secondary',
  dataQa,
  onClick,
  disabled,
  className,
  childMenuItems,
  onChildMenuOpenChange,
  useStandardColor,
}: MenuItemRendererProps) {
  const item = (
    <div
      className={classNames(
        'flex w-full items-center gap-3 truncate break-words',
        !!childMenuItems && !disabled && 'text-primary',
        !!childMenuItems && className,
      )}
    >
      {Icon && (
        <Icon
          className={classNames(
            'shrink-0',
            disabled ? 'text-controls-disable' : iconClassName,
          )}
          size={18}
          height={18}
          width={18}
        />
      )}
      <span className="truncate break-words">
        {name} {additionalNameNode}
      </span>
    </div>
  );
  if (childMenuItems && !disabled) {
    return (
      <ContextMenu
        menuItems={childMenuItems}
        featureType={featureType}
        triggerIconClassName={classNames(
          className,
          'text-secondary',
          'hover:bg-accent-primary-alpha',
        )}
        TriggerCustomRenderer={item}
        onOpenChange={onChildMenuOpenChange}
        useStandardColor={useStandardColor}
      />
    );
  }
  return (
    <MenuItem
      className={classNames(
        disabled ? 'text-secondary' : 'hover:bg-accent-primary-alpha',
        className,
      )}
      item={item}
      onClick={onClick}
      data-qa={dataQa}
      disabled={disabled}
    />
  );
}