Skip to main content

Menu

Menu provides navigation for your application.

When To Use

  • For primary navigation in your application
  • When you need a sidebar menu
  • For top-level navigation with sub-menus

Basic Usage

import { TxMenu } from "tx-design-ui";

const items = [
{
key: "1",
label: "Navigation One",
},
{
key: "2",
label: "Navigation Two",
},
{
key: "3",
label: "Navigation Three",
},
];

<TxMenu items={items} selectedKey="1" />;

With Sub-menu

Menus can have nested sub-menus.

const items = [
{
key: "1",
label: "Navigation One",
},
{
key: "sub1",
label: "Navigation Two",
children: [
{
key: "2-1",
label: "Option 1",
},
{
key: "2-2",
label: "Option 2",
},
],
},
{
key: "3",
label: "Navigation Three",
},
];

<TxMenu items={items} selectedKey="2-1" />;

Horizontal Mode

Display menu horizontally for top navigation.

<TxMenu items={items} mode="horizontal" selectedKey="1" />

With Icons

Add icons to menu items.

const items = [
{
key: "1",
label: "Dashboard",
icon: <DashboardIcon />,
},
{
key: "2",
label: "Settings",
icon: <SettingsIcon />,
},
];

Controlled Mode

Control selected item from parent component.

function Example() {
const [selectedKey, setSelectedKey] = useState("1");

return <TxMenu items={items} selectedKey={selectedKey} onSelect={key => setSelectedKey(key)} />;
}

API

PropertyTypeDefaultDescription
itemsArray<MenuItem>[]Menu items data
mode'horizontal' | 'vertical''vertical'Display mode
selectedKeystring-Currently selected item key
onSelectfunction(key)-Callback when item selected
PropertyTypeDefaultDescription
keystring-Unique key (required)
labelReactNode-Menu item label (required)
iconReactNode-Icon for menu item
disabledbooleanfalseWhether item is disabled
childrenArray<MenuItem>-Sub-menu items

Notes

  • Use vertical mode for sidebar navigation
  • Use horizontal mode for top navigation bar
  • Sub-menus can be collapsed/expanded in vertical mode
  • Only one level of sub-menu is supported for better UX
  • Icons help users quickly identify menu items