import * as DropdownMenuPrimitive from '@rn-primitives/dropdown-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 DropdownMenu = DropdownMenuPrimitive.Root; const DropdownMenuTrigger = DropdownMenuPrimitive.Trigger; const DropdownMenuGroup = DropdownMenuPrimitive.Group; const DropdownMenuPortal = DropdownMenuPrimitive.Portal; const DropdownMenuSub = DropdownMenuPrimitive.Sub; const DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup; const DropdownMenuSubTrigger = React.forwardRef< DropdownMenuPrimitive.SubTriggerRef, DropdownMenuPrimitive.SubTriggerProps & { inset?: boolean; } >(({ className, inset, children, ...props }, ref) => { const { open } = DropdownMenuPrimitive.useSubContext(); const Icon = Platform.OS === 'web' ? ChevronRight : open ? ChevronUp : ChevronDown; return ( <>{children} ); }); DropdownMenuSubTrigger.displayName = DropdownMenuPrimitive.SubTrigger.displayName; const DropdownMenuSubContent = React.forwardRef< DropdownMenuPrimitive.SubContentRef, DropdownMenuPrimitive.SubContentProps >(({ className, ...props }, ref) => { const { open } = DropdownMenuPrimitive.useSubContext(); return ( ); }); DropdownMenuSubContent.displayName = DropdownMenuPrimitive.SubContent.displayName; const DropdownMenuContent = React.forwardRef< DropdownMenuPrimitive.ContentRef, DropdownMenuPrimitive.ContentProps & { overlayStyle?: StyleProp; overlayClassName?: string; portalHost?: string; } >(({ className, overlayClassName, overlayStyle, portalHost, ...props }, ref) => { const { open } = DropdownMenuPrimitive.useRootContext(); return ( ); }); DropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName; const DropdownMenuItem = React.forwardRef< DropdownMenuPrimitive.ItemRef, DropdownMenuPrimitive.ItemProps & { inset?: boolean; } >(({ className, inset, ...props }, ref) => ( )); DropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName; const DropdownMenuCheckboxItem = React.forwardRef< DropdownMenuPrimitive.CheckboxItemRef, DropdownMenuPrimitive.CheckboxItemProps >(({ className, children, checked, ...props }, ref) => ( <>{children} )); DropdownMenuCheckboxItem.displayName = DropdownMenuPrimitive.CheckboxItem.displayName; const DropdownMenuRadioItem = React.forwardRef< DropdownMenuPrimitive.RadioItemRef, DropdownMenuPrimitive.RadioItemProps >(({ className, children, ...props }, ref) => ( <>{children} )); DropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName; const DropdownMenuLabel = React.forwardRef< DropdownMenuPrimitive.LabelRef, DropdownMenuPrimitive.LabelProps & { inset?: boolean; } >(({ className, inset, ...props }, ref) => ( )); DropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName; const DropdownMenuSeparator = React.forwardRef< DropdownMenuPrimitive.SeparatorRef, DropdownMenuPrimitive.SeparatorProps >(({ className, ...props }, ref) => ( )); DropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName; const DropdownMenuShortcut = ({ className, ...props }: TextProps) => { return ( ); }; DropdownMenuShortcut.displayName = 'DropdownMenuShortcut'; export { DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, };