import React, { type ReactNode } from "react"; import { View } from "react-native"; import { Menu, Separator, SubMenu, type SubMenuRootProps, cn, useThemeColor } from "heroui-native"; import { type NIcon, resolveIcon } from "../helpers/icons"; import { NText } from "./NText"; export interface NMenuProps { children?: ReactNode; trigger: ReactNode; title?: string; width?: number; className?: string; titleClassName?: string; } export const NMenu = React.memo( ({ children, trigger, title = "", width = 220, className = "", titleClassName = "" }) => { return ( {trigger} {title && ( <> {title} )} {children} ); }, ); NMenu.displayName = "NMenu"; export interface NSubMenuProps extends SubMenuRootProps { label: string; icon?: NIcon; triggerClassName?: string; contentClassName?: string; } export const NSubMenu = React.memo( ({ label, icon, children, className, triggerClassName, contentClassName, ...props }) => { const foregroundColor = useThemeColor("foreground"); const menuIcon = React.useMemo( () => resolveIcon(icon, { color: foregroundColor }), [icon, foregroundColor], ); return ( {menuIcon && {menuIcon}} {label} {children} ); }, ); NSubMenu.displayName = "NSubMenu";