Skip to main content

MultinaireMenu

Context menu component for displaying a list of actions in a modal.

Basic Usage

import { MultinaireModal, MultinaireMenu } from '@multinaire/multinaire-design';

<MultinaireModal
type="sheet"
renderToggleButton={({ onPress }) => (
<MultinaireIconButton icon="More" onPress={onPress} />
)}
>
<MultinaireMenu
items={[
{ title: 'Edit', leading: 'Edit', onPress: handleEdit },
{ title: 'Share', leading: 'Share', onPress: handleShare },
{ title: 'Delete', leading: 'Trash', destructive: true, onPress: handleDelete },
]}
/>
</MultinaireModal>

Props

PropTypeDefaultDescription
itemsMenuItem[]-Array of menu items
leadingReactElement-Content above menu items
trailingReactElement-Content below menu items
PropertyTypeDescription
titlestringMenu item label
leadingMultinaireIconsLeading icon
trailingMultinaireIconsTrailing icon
destructivebooleanUse destructive (error) styling
onPress() => voidPress handler

Examples

Action Menu

<MultinaireModal
type="sheet"
renderToggleButton={({ onPress }) => (
<MultinaireIconButton icon="More" onPress={onPress} />
)}
>
<MultinaireMenu
items={[
{ title: 'Copy Link', leading: 'Link', onPress: copyLink },
{ title: 'Share', leading: 'Share', onPress: share },
{ title: 'Report', leading: 'Flag', onPress: report },
]}
/>
</MultinaireModal>

With Header Content

<MultinaireMenu
leading={
<MultinaireContainer horizontal gap={12} alignItems="center">
<MultinaireAvatar source={user.avatar} size={48} />
<MultinaireText type="title" weight="bold">{user.name}</MultinaireText>
</MultinaireContainer>
}
items={[
{ title: 'View Profile', leading: 'User', onPress: viewProfile },
{ title: 'Send Message', leading: 'Message', onPress: sendMessage },
{ title: 'Block User', leading: 'Block', destructive: true, onPress: blockUser },
]}
/>

Settings Menu

<MultinaireMenu
items={[
{ title: 'Account Settings', leading: 'Settings', trailing: 'ChevronRight', onPress: openSettings },
{ title: 'Privacy', leading: 'Shield', trailing: 'ChevronRight', onPress: openPrivacy },
{ title: 'Help', leading: 'Help', trailing: 'ChevronRight', onPress: openHelp },
]}
trailing={
<MultinaireText type="caption" color="neutral" center>
Version 1.0.0
</MultinaireText>
}
/>

Destructive Action

<MultinaireMenu
items={[
{ title: 'Edit Post', leading: 'Edit', onPress: editPost },
{ title: 'Archive', leading: 'Archive', onPress: archivePost },
{ title: 'Delete Post', leading: 'Trash', destructive: true, onPress: deletePost },
]}
/>