'use client' import * as React from 'react' import * as ContextMenuPrimitive from '@radix-ui/react-context-menu' import { CheckIcon, ChevronRightIcon, CircleIcon } from 'lucide-react' import { cn } from '@/lib/utils' /** * Radix MenuItem: si `pointerdown` n’a pas eu lieu sur l’item, `pointerup` appelle * `currentTarget.click()` pour simuler une sélection. Au menu contextuel, le * `pointerdown` est sur la ligne et le `pointerup` (bouton droit) sur le 1er item * → fausse sélection + fermeture. `preventDefault` sur ce `pointerup` non-primaire * s’exécute avant le handler Radix (composeEventHandlers) et bloque le `click` synthétique. */ function mergePointerUpForMenuItems( userOnPointerUp: React.PointerEventHandler | undefined, event: React.PointerEvent, ) { userOnPointerUp?.(event) if (event.pointerType === 'mouse' && event.button !== 0) { event.preventDefault() } } function ContextMenu({ ...props }: React.ComponentProps) { return } function ContextMenuTrigger({ ...props }: React.ComponentProps) { return ( ) } function ContextMenuGroup({ ...props }: React.ComponentProps) { return ( ) } function ContextMenuPortal({ ...props }: React.ComponentProps) { return ( ) } function ContextMenuSub({ ...props }: React.ComponentProps) { return } function ContextMenuRadioGroup({ ...props }: React.ComponentProps) { return ( ) } function ContextMenuSubTrigger({ className, inset, children, ...props }: React.ComponentProps & { inset?: boolean }) { return ( {children} ) } function ContextMenuSubContent({ className, ...props }: React.ComponentProps) { return ( ) } function ContextMenuContent({ className, ...props }: React.ComponentProps) { return ( ) } function ContextMenuItem({ className, inset, variant = 'default', onPointerUp, ...props }: React.ComponentProps & { inset?: boolean variant?: 'default' | 'destructive' }) { return ( mergePointerUpForMenuItems(onPointerUp, e)} /> ) } function ContextMenuCheckboxItem({ className, children, checked, onPointerUp, ...props }: React.ComponentProps) { return ( mergePointerUpForMenuItems(onPointerUp, e)} > {children} ) } function ContextMenuRadioItem({ className, children, onPointerUp, ...props }: React.ComponentProps) { return ( mergePointerUpForMenuItems(onPointerUp, e)} > {children} ) } function ContextMenuLabel({ className, inset, ...props }: React.ComponentProps & { inset?: boolean }) { return ( ) } function ContextMenuSeparator({ className, ...props }: React.ComponentProps) { return ( ) } function ContextMenuShortcut({ className, ...props }: React.ComponentProps<'span'>) { return ( ) } export { ContextMenu, ContextMenuTrigger, ContextMenuContent, ContextMenuItem, ContextMenuCheckboxItem, ContextMenuRadioItem, ContextMenuLabel, ContextMenuSeparator, ContextMenuShortcut, ContextMenuGroup, ContextMenuPortal, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuRadioGroup, }