import * as ContextMenuPrimitive from '@rn-primitives/context-menu'; import * as React from 'react'; import { Platform, type StyleProp, StyleSheet, Text, type TextProps, View, type ViewStyle, } from 'react-native'; import { Check } from '@/lib/icons/Check'; import { ChevronDown } from '@/lib/icons/ChevronDown'; import { ChevronRight } from '@/lib/icons/ChevronRight'; import { ChevronUp } from '@/lib/icons/ChevronUp'; import { cn } from '@/lib/utils'; import { TextClassContext } from '@/components/ui/text'; const ContextMenu = ContextMenuPrimitive.Root; const ContextMenuTrigger = ContextMenuPrimitive.Trigger; const ContextMenuGroup = ContextMenuPrimitive.Group; const ContextMenuSub = ContextMenuPrimitive.Sub; const ContextMenuRadioGroup = ContextMenuPrimitive.RadioGroup; const ContextMenuSubTrigger = React.forwardRef< ContextMenuPrimitive.SubTriggerRef, ContextMenuPrimitive.SubTriggerProps & { inset?: boolean; } >(({ className, inset, children, ...props }, ref) => { const { open } = ContextMenuPrimitive.useSubContext(); const Icon = Platform.OS === 'web' ? ChevronRight : open ? ChevronUp : ChevronDown; return ( <>{children} ); }); ContextMenuSubTrigger.displayName = ContextMenuPrimitive.SubTrigger.displayName; const ContextMenuSubContent = React.forwardRef< ContextMenuPrimitive.SubContentRef, ContextMenuPrimitive.SubContentProps >(({ className, ...props }, ref) => { const { open } = ContextMenuPrimitive.useSubContext(); return ( ); }); ContextMenuSubContent.displayName = ContextMenuPrimitive.SubContent.displayName; const ContextMenuContent = React.forwardRef< ContextMenuPrimitive.ContentRef, ContextMenuPrimitive.ContentProps & { overlayStyle?: StyleProp; overlayClassName?: string; portalHost?: string; } >(({ className, overlayClassName, overlayStyle, portalHost, ...props }, ref) => { const { open } = ContextMenuPrimitive.useRootContext(); return ( ); }); ContextMenuContent.displayName = ContextMenuPrimitive.Content.displayName; const ContextMenuItem = React.forwardRef< ContextMenuPrimitive.ItemRef, ContextMenuPrimitive.ItemProps & { inset?: boolean; } >(({ className, inset, ...props }, ref) => ( )); ContextMenuItem.displayName = ContextMenuPrimitive.Item.displayName; const ContextMenuCheckboxItem = React.forwardRef< ContextMenuPrimitive.CheckboxItemRef, ContextMenuPrimitive.CheckboxItemProps >(({ className, children, ...props }, ref) => ( <>{children} )); ContextMenuCheckboxItem.displayName = ContextMenuPrimitive.CheckboxItem.displayName; const ContextMenuRadioItem = React.forwardRef< ContextMenuPrimitive.RadioItemRef, ContextMenuPrimitive.RadioItemProps >(({ className, children, ...props }, ref) => ( <>{children} )); ContextMenuRadioItem.displayName = ContextMenuPrimitive.RadioItem.displayName; const ContextMenuLabel = React.forwardRef< ContextMenuPrimitive.LabelRef, ContextMenuPrimitive.LabelProps & { inset?: boolean; } >(({ className, inset, ...props }, ref) => ( )); ContextMenuLabel.displayName = ContextMenuPrimitive.Label.displayName; const ContextMenuSeparator = React.forwardRef< ContextMenuPrimitive.SeparatorRef, ContextMenuPrimitive.SeparatorProps >(({ className, ...props }, ref) => ( )); ContextMenuSeparator.displayName = ContextMenuPrimitive.Separator.displayName; const ContextMenuShortcut = ({ className, ...props }: TextProps) => { return ( ); }; ContextMenuShortcut.displayName = 'ContextMenuShortcut'; export { ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, };