A versatile menu item designed to be used in a menu or navigation list.
import { IconBell } from "@tabler/icons-react"; import { IconAlertCircle } from "@tabler/icons-react"; import { MenuItem } from "twenty-ui"; export const MyComponent = () => { const handleMenuItemClick = (event) => { console.log("Menu item clicked!", event); }; const handleButtonClick = (event) => { console.log("Icon button clicked!", event); }; return ( <MenuItem LeftIcon={IconBell} accent="default" text="Menu item text" iconButtons={[{ Icon: IconAlertCircle, onClick: handleButtonClick }]} isTooltipOpen={true} testId="menu-item-1" onClick={handleMenuItemClick} className /> ); };
The different variants of the menu item component include the following:
A command-style menu item within a menu to indicate keyboard shortcuts.
import { IconBell } from "@tabler/icons-react"; import { MenuItemCommand } from "twenty-ui"; export const MyComponent = () => { const handleCommandClick = () => { console.log("Command clicked!"); }; return ( <MenuItemCommand LeftIcon={IconBell} text="First Option" firstHotKey="⌘" secondHotKey="1" isSelected={true} onClick={handleCommandClick} className /> ); };
A draggable menu item component designed to be used in a menu or list where items can be dragged, and additional actions can be performed through icon buttons.
import { IconBell } from "@tabler/icons-react"; import { IconAlertCircle } from "@tabler/icons-react"; import { MenuItemDraggable } from "twenty-ui"; export const MyComponent = () => { const handleMenuItemClick = (event) => { console.log("Menu item clicked!", event); }; return ( <MenuItemDraggable LeftIcon={IconBell} accent="default" iconButtons={[{ Icon: IconAlertCircle, onClick: handleButtonClick }]} isTooltipOpen={false} onClick={handleMenuItemClick} text="Menu item draggable" isDragDisabled={false} className /> ); };
Provides a way to implement multi-select functionality with an associated checkbox.
import { IconBell } from "@tabler/icons-react"; import { MenuItemMultiSelect } from "twenty-ui"; export const MyComponent = () => { return ( <MenuItemMultiSelect LeftIcon={IconBell} text="First Option" selected={false} className /> ); };
A multi-select menu item with an avatar, a checkbox for selection, and textual content.
import { MenuItemMultiSelectAvatar } from "twenty-ui"; export const MyComponent = () => { const imageUrl = "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAYABgAAD/4QCMRXhpZgAATU0AKgAAAAgABQESAAMAAAABAAEAAAEaAAUAAAABAAAASgEbAAUAAAABAAAAUgEoAAMAAAABAAIAAIdpAAQAAAABAAAAWgAAAAAAAABgAAAAAQAAAGAAAAABAAOgAQADAAAAAQABAACgAgAEAAAAAQAAABSgAwAEAAAAAQAAABQAAAAA/8AAEQgAFAAUAwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/bAEMACwgICggHCwoJCg0MCw0RHBIRDw8RIhkaFBwpJCsqKCQnJy0yQDctMD0wJyc4TDk9Q0VISUgrNk9VTkZUQEdIRf/bAEMBDA0NEQ8RIRISIUUuJy5FRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRf/dAAQAAv/aAAwDAQACEQMRAD8Ava1q728otYY98joSCTgZrnbXWdTtrhrfVZXWLafmcAEkdgR/hVltQku9Q8+OIEBcGOT+ID0PY1ka1KH2u8ToqnPLbmIqG7u6LtbQ7RXBRec4Uck9eKXcPWsKDWVnhWSL5kYcFelSf2m3901POh8jP//QoyIAnTuKpXsY82NsksUyWPU5q/L9z8RVK++/F/uCsVsaEURwgA4HtT9x9TUcf3KfUGh//9k="; return ( <MenuItemMultiSelectAvatar avatar={<img src={imageUrl} alt="Avatar" />} text="First Option" selected={false} className /> ); };
A menu item featuring an optional left icon, textual content, and a right-chevron icon.
import { IconBell } from "@tabler/icons-react"; import { MenuItemNavigate } from "twenty-ui"; export const MyComponent = () => { const handleNavigation = () => { console.log("Navigate to another page"); }; return ( <MenuItemNavigate LeftIcon={IconBell} text="First Option" onClick={handleNavigation} className /> ); };
A selectable menu item, featuring optional left content (icon and text) and an indicator (check icon) for the selected state.
import { IconBell } from "@tabler/icons-react"; import { MenuItemSelect } from "twenty-ui"; export const MyComponent = () => { const handleSelection = () => { console.log("Menu item selected"); }; return ( <MenuItemSelect LeftIcon={IconBell} text="First Option" selected={true} disabled={false} hovered={false} onClick={handleSelection} className /> ); };
A selectable menu item with an avatar, featuring optional left content (avatar and text) and an indicator (check icon) for the selected state.
import { MenuItemSelectAvatar } from "twenty-ui"; export const MyComponent = () => { const imageUrl = "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAYABgAAD/4QCMRXhpZgAATU0AKgAAAAgABQESAAMAAAABAAEAAAEaAAUAAAABAAAASgEbAAUAAAABAAAAUgEoAAMAAAABAAIAAIdpAAQAAAABAAAAWgAAAAAAAABgAAAAAQAAAGAAAAABAAOgAQADAAAAAQABAACgAgAEAAAAAQAAABSgAwAEAAAAAQAAABQAAAAA/8AAEQgAFAAUAwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/bAEMACwgICggHCwoJCg0MCw0RHBIRDw8RIhkaFBwpJCsqKCQnJy0yQDctMD0wJyc4TDk9Q0VISUgrNk9VTkZUQEdIRf/bAEMBDA0NEQ8RIRISIUUuJy5FRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRf/dAAQAAv/aAAwDAQACEQMRAD8Ava1q728otYY98joSCTgZrnbXWdTtrhrfVZXWLafmcAEkdgR/hVltQku9Q8+OIEBcGOT+ID0PY1ka1KH2u8ToqnPLbmIqG7u6LtbQ7RXBRec4Uck9eKXcPWsKDWVnhWSL5kYcFelSf2m3901POh8jP//QoyIAnTuKpXsY82NsksUyWPU5q/L9z8RVK++/F/uCsVsaEURwgA4HtT9x9TUcf3KfUGh//9k="; const handleSelection = () => { console.log("Menu item selected"); }; return ( <MenuItemSelectAvatar avatar={<img src={imageUrl} alt="Avatar" />} text="First Option" selected={true} disabled={false} hovered={false} testId="menu-item-test" onClick={handleSelection} className /> ); };
A selectable menu item with a color sample for scenarios where you want users to choose a color from a menu.
import { MenuItemSelectColor } from "twenty-ui"; export const MyComponent = () => { const handleSelection = () => { console.log("Menu item selected"); }; return ( <MenuItemSelectColor color="green" selected={true} disabled={false} hovered={true} variant="default" onClick={handleSelection} className /> ); };
A menu item with an associated toggle switch to allow users to enable or disable a specific feature
import { IconBell } from '@tabler/icons-react'; import { MenuItemToggle } from 'twenty-ui'; export const MyComponent = () => { return ( <MenuItemToggle LeftIcon={IconBell} text="First Option" toggled={true} toggleSize="small" className /> ); };
As an open-source company, we welcome contributions through Github. Help us keep it up-to-date, accurate, and easy to understand by getting involved and sharing your ideas!