Alpha component
NavList component is subject to major changes and is for experimentation purposes only. Not recommended for use in production software.
NavList component is subject to major changes and is for experimentation purposes only. Not recommended for use in production software.
NavList is used to render a sidebar navigation list
import { NavList } from '@contentful/f36-navlist';
NavList is used to render vertical navigation list, it may contains links or buttons:
NavList can be rendered as nav or divNavList.Item can be rendered as button or aBasic example of NavList rendered with links
function NavListBasic() {return (<NavList aria-label="Content Type Sidebar"><NavList.Item>Fields</NavList.Item><NavList.Item>Name and description</NavList.Item><NavList.Item>JSON preview</NavList.Item><NavList.Item>Side bar</NavList.Item></NavList>);}
Example of NavList using button as items
function WithButtons() {return (<NavList><NavList.Item as="button">Fields</NavList.Item><NavList.Item as="button">Name and description</NavList.Item><NavList.Item as="button">JSON preview</NavList.Item><NavList.Item as="button">Side bar</NavList.Item></NavList>);}
Example of controlled NavList
function NavListControlled() {const [active, setActive] = useState(0);const handleOnClick = (id) => () => {setActive(id);};return (<NavList><NavList.ItemisActive={active === 1}onClick={handleOnClick(1)}as="button">Fields</NavList.Item><NavList.ItemisActive={active === 2}isDisabledonClick={handleOnClick(2)}as="button">Name and description</NavList.Item><NavList.ItemisActive={active === 3}onClick={handleOnClick(3)}as="button">JSON preview</NavList.Item><NavList.ItemisActive={active === 4}onClick={handleOnClick(4)}as="button">Side bar</NavList.Item></NavList>);}
Example with items with active or disabled state
function NavListWithActiveAndDisabled() {return (<NavList><NavList.Item isActive>Fields</NavList.Item><NavList.Item isDisabled>Name and description</NavList.Item><NavList.Item>JSON preview</NavList.Item><NavList.Item>Side bar</NavList.Item></NavList>);}
Name | Type | Default |
|---|---|---|
| children required | ReactNode | |
| aria-label | string | |
| as | HTML Tag or React Component (e.g. div, span, etc) | nav |
| className | string CSS class to be appended to the root element | |
| testId | string A [data-test-id] attribute used for testing purposes |
Name | Type | Default |
|---|---|---|
| as | HTML Tag or React Component (e.g. div, span, etc) | a |
| children | ReactNode | |
| className | string CSS class to be appended to the root element | |
| isActive | false true Marks item as active | |
| isDisabled | false true Marks item as disabled | |
| testId | string A [data-test-id] attribute used for testing purposes |
NavList.Item texts should be short and descriptivediv the aria-role must be set to navigation.NavList can be passed an aria-label to override the default Sidebar.NavList.Item should always navigate the user, and not trigger other actions.