import * as DropdownMenuPrimitive from "@rn-primitives/dropdown-menu"; import { cn } from "../utils/cn"; import React from "react"; import { Platform, View, type ViewStyle } from "react-native"; const DropdownMenu = DropdownMenuPrimitive.Root; const DropdownMenuTrigger = DropdownMenuPrimitive.Trigger; const DropdownMenuContent = React.forwardRef< React.ElementRef, React.ComponentPropsWithoutRef >(({ className, sideOffset = 4, ...props }, ref) => { const content = ( ) : undefined } {...props} /> ); if (Platform.OS === "web") { // On web, Portal expects exactly one child — skip the Overlay (Radix // handles dismiss-on-click-outside internally). return {content}; } return ( {/* absolute inset-0: without explicit full-screen sizing this renders at its default (shrink-to-fit) size — effectively zero-area, so it never actually intercepts a tap anywhere outside the menu content itself. The primitive's own onPress-closes-on-tap behavior was always correct; it just never had anything to receive that tap. Reported as "tapping elsewhere doesn't dismiss the dropdown," 2026-08-17. */} {content} ); }); DropdownMenuContent.displayName = "DropdownMenuContent"; const DropdownMenuItem = React.forwardRef< React.ElementRef, React.ComponentPropsWithoutRef >(({ className, ...props }, ref) => ( )); DropdownMenuItem.displayName = "DropdownMenuItem"; const DropdownMenuCheckboxItem = React.forwardRef< React.ElementRef, React.ComponentPropsWithoutRef >(({ className, children, checked, ...props }, ref) => ( {/* Checkmark indicator */} {children as React.ReactNode} )); DropdownMenuCheckboxItem.displayName = "DropdownMenuCheckboxItem"; const DropdownMenuLabel = React.forwardRef< React.ElementRef, React.ComponentPropsWithoutRef >(({ className, ...props }, ref) => ( )); DropdownMenuLabel.displayName = "DropdownMenuLabel"; const DropdownMenuSeparator = React.forwardRef< React.ElementRef, React.ComponentPropsWithoutRef >(({ className, ...props }, ref) => ( )); DropdownMenuSeparator.displayName = "DropdownMenuSeparator"; export { DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuItem, DropdownMenuCheckboxItem, DropdownMenuLabel, DropdownMenuSeparator, };