Skip to main content

Menu

A navigation menu driven by an items array with nested submenus. Lay it out as a horizontal bar, a vertical list, or an inline tree that expands submenus in place.

import { Menu } from '@jbpark/ui-kit';

<Menu
mode="inline"
defaultSelectedKeys={['home']}
items={[
{ key: 'home', label: 'Home' },
{
key: 'products',
label: 'Products',
children: [{ key: 'products-web', label: 'Web' }],
},
]}
/>;

Props

PropTypeDefault
itemsMenuItem[]-
mode'horizontal' | 'vertical' | 'inline''vertical'
selectedKeysKey[] (controlled selection)-
defaultSelectedKeysKey[][]
onClick(params) => void-
onSelect(params) => void-
offset[number, number] (submenu popup offset)-
inlineOffsetnumber (inline indent per depth)-
classNames{ rootItem?; subMenu?; item?; label? }-
styles{ rootItem?; subMenu?; item?; label? }-
classNamestring-

MenuItem is { key: Key; label: ReactNode; children?: MenuItem[] }. The onClick / onSelect handlers receive { domEvent, key, keyPath, item }. Menu also accepts the rest of React.ComponentProps<'ul'>.