import type { ImageProps } from 'react-native'; import type { SFSymbol } from 'sf-symbols-typescript'; type ImageOptions = { tint?: string; }; export type NativeMenuProps = { children: React.ReactNode; native?: boolean; onOpenChange?: (isOpen: boolean) => void; /** * Callback function indicating that the menu intends to open or close. Passes a `willOpen` boolean argument indicating whether it is opening or closing. * Unlike `onOpenChange`, this is called before the animation begins. * @platform `ios` */ onOpenWillChange?: (willOpen: boolean) => void; }; /** * Props for the auxiliary view that can be shown alongside a context menu on iOS * @platform ios */ export type NativeContextMenuAuxiliaryProps = { height?: number; width?: number; anchorPosition?: 'top' | 'bottom' | 'automatic'; children: React.ReactNode | ((options: { dismissMenu: () => void; }) => React.ReactNode); onDidShow?: () => void; marginWithScreenEdge?: number; onWillShow?: () => void; }; export type MenuTriggerProps = { children: React.ReactElement; asChild?: boolean; /** * Determine whether the menu should open on `press` or `longPress`. Defaults to `press` for `Menu` and `longPress` for `ContextMenu`. * * Only applies for `ios` and `android`. */ action?: 'press' | 'longPress'; }; export type NativeMenuContentProps = { children: React.ReactNode; }; export type NativeContextMenuContentProps = NativeMenuContentProps; export type NativeMenuGroupProps = { children: React.ReactNode; }; export type NativeMenuItemProps = { children: React.ReactNode; /** * If you want to pass a React text node to ``, then you need to use this prop. This gets used on iOS and Android. */ textValue?: string; /** * Callback when the item is selected */ onSelect?: (event?: Event) => void; } & { disabled?: boolean; hidden?: boolean; destructive?: boolean; key: string; }; export interface NativeMenuItemCommonProps { /** * React elements to render as fallback icon (typically for web) */ children?: React.ReactNode; /** * The name of an iOS-only SF Symbol. For a full list, see https://developer.apple.com/sf-symbols/. * @deprecated Please use the `name` inside of the `ios` prop instead. * @platform ios */ iosIconName?: string; /** * Icon configuration to be used on iOS. You can pass a SF Symbol icon using the `name` prop. * Additionally, you can configure the SF Symbol's features like weight, scale, color etc. by passing * the corresponding props. Note that some of those features require iOS 15+. * * @platform ios */ ios?: { name: SFSymbol; weight?: 'ultraLight' | 'thin' | 'light' | 'regular' | 'medium' | 'semibold' | 'bold' | 'heavy' | 'black'; scale?: 'small' | 'medium' | 'large'; hierarchicalColor?: string; paletteColors?: string[]; }; /** * The name of an android-only resource drawable. For a full list, see https://developer.android.com/reference/android/R.drawable.html. * * @platform android */ androidIconName?: string; } export type NativeMenuItemIconProps = NativeMenuItemCommonProps; export type NativeMenuItemImageProps = NativeMenuItemCommonProps & { /** * `source={require('path/to/image')}` */ source: ImageProps['source']; ios?: { style?: ImageOptions; lazy?: boolean; }; }; export type NativeMenuArrowProps = {}; export type NativeMenuSubTriggerProps = NativeMenuItemProps & { key: string; }; export type NativeMenuSubProps = { children?: React.ReactNode; }; export type NativeMenuSubContentProps = { children: React.ReactNode; }; export type NativeContextMenuSubContentProps = NativeContextMenuContentProps; export type NativeMenuItemTitleProps = { children: string | React.ReactNode; }; export type NativeMenuItemSubtitleProps = { children: string; }; export type NativeMenuSeparatorProps = {}; export type NativeMenuCheckboxItemProps = Omit & { /** * The controlled checked state of the checkbox item. * Use this with `onCheckedChange` for the web-style API. */ checked?: boolean; /** * Callback when the checked state changes. * Use this with `checked` for the web-style API. */ onCheckedChange?: (checked: boolean) => void; /** * The controlled value state for native platforms. * Use this with `onValueChange` for the native-style API. * @platform ios, android */ value?: 'mixed' | 'on' | 'off' | boolean; /** * Callback when the value changes on native platforms. * Use this with `value` for the native-style API. * @platform ios, android */ onValueChange?: (state: 'mixed' | 'on' | 'off', prevState: 'mixed' | 'on' | 'off') => void; key: string; }; export type NativeMenuItemIndicatorProps = { children?: React.ReactNode; }; export type NativeMenuLabelProps = { children: string; /** * If you want to pass a React text node to ``, then you need to use this prop. This gets used on iOS and Android. */ textValue?: string; }; export type ContextMenuPreviewProps = { children: React.ReactNode | (() => React.ReactNode); /** * Size of the preview * @platform ios */ size?: { width?: number; height?: number; }; /** * Called when the preview is pressed * @platform ios */ onPress?: () => void; /** * Background color of the preview * @platform ios */ backgroundColor?: string; /** * Border radius of the preview * @platform ios */ borderRadius?: number; }; export {}; //# sourceMappingURL=createNativeMenuTypes.d.ts.map