NavigationBar
Wraps top-level navigation and branding.
If your users can’t navigate through your app, they’ll never find your amazing designs. Present them with a clear and consistent means of finding their way and they’ll keep coming back for more.
Use a navigation bar to wrap your top-level navigation and branding such as a logo and keep everything in a place your users will expect.
Component status






Guidelines
Keep app bar clean
In mobile apps, the navigation bar can’t hold much. It’s not the right place to hold menus or other complicated options.
If you want to add links to options in an app, consider using a tab bar in the footer.
Vary items by context
On large screens, it can help to have full ideas written out. Use clear nouns to describe what each menu item means.
import ButtonLink from "@kiwicom/orbit-components/lib/ButtonLink";
import LinkList from "@kiwicom/orbit-components/lib/LinkList";
import NavigationBar from "@kiwicom/orbit-components/lib/NavigationBar";
import TextLink from "@kiwicom/orbit-components/lib/TextLink";
import Stack from "@kiwicom/orbit-components/lib/Stack";
() => (
<NavigationBar>
<Stack direction="row" align="center" justify="center">
<ButtonLink href="https://orbit.kiwi">
<img
src="https://orbit.kiwi/files/2019/08/cropped-OrbitLogo-1.png"
alt="Orbit by Kiwi.com"
height="40px"
/>
</ButtonLink>
<LinkList direction="row">
<TextLink type="secondary">Travel</TextLink>
<TextLink type="secondary">Rooms</TextLink>
<TextLink type="secondary">Careers</TextLink>
</LinkList>
<Stack inline>
<LinkList direction="row">
<TextLink type="secondary">English</TextLink>
<TextLink type="secondary">Help</TextLink>
<TextLink type="secondary">My account</TextLink>
</LinkList>
</Stack>
</Stack>
</NavigationBar>
)
On smaller screens, there’s not space for many words. Use icons to communicate the main ideas. Just remember to include text equivalents so everyone knows what the items mean.
When using icons, keep them aligned to the side without large gaps in between.
import ButtonLink from "@kiwicom/orbit-components/lib/ButtonLink";
import CountryFlag from "@kiwicom/orbit-components/lib/CountryFlag";
import NavigationBar from "@kiwicom/orbit-components/lib/NavigationBar";
import Stack from "@kiwicom/orbit-components/lib/Stack";
import AirplaneTakeoff from "@kiwicom/orbit-components/lib/icons/AirplaneTakeoff";
import Accommodation from "@kiwicom/orbit-components/lib/icons/Accommodation";
import Partners from "@kiwicom/orbit-components/lib/icons/Partners";
import QuestionCircle from "@kiwicom/orbit-components/lib/icons/QuestionCircle";
import AccountCircle from "@kiwicom/orbit-components/lib/icons/AccountCircle";
() => (
<NavigationBar>
<Stack direction="row" align="center" justify="center">
<ButtonLink href="https://orbit.kiwi">
<div
style={{
maxWidth: "40px",
overflow: "hidden",
}}
>
<img
src="https://orbit.kiwi/files/2019/08/cropped-OrbitLogo-1.png"
alt="Orbit by Kiwi.com"
height="40px"
/>
</div>
</ButtonLink>
<ButtonLink
type="secondary"
iconLeft={<AirplaneTakeoff />}
title="Travel"
/>
<ButtonLink
type="secondary"
iconLeft={<Accommodation />}
title="Rooms"
/>
<ButtonLink
type="secondary"
iconLeft={<Partners />}
title="Careers"
/>
<Stack justify="end" inline>
<ButtonLink
type="secondary"
iconLeft={<CountryFlag code="gb" />}
title="English"
/>
<ButtonLink
type="secondary"
iconLeft={<QuestionCircle />}
title="Help"
/>
<ButtonLink
type="secondary"
iconLeft={<AccountCircle />}
title="My account"
/>
</Stack>
</Stack>
</NavigationBar>
)
Collapse menus in smaller contexts
When you have complicated navigation but only limited space, use progressive disclosure. Keep most items hidden at first and offer dropdowns and drawers to reveal them.
Make sure users know how to open the items. Use common patterns like a menu icon to make it clear what is possible.
import ButtonLink from "@kiwicom/orbit-components/lib/ButtonLink";
import CountryFlag from "@kiwicom/orbit-components/lib/CountryFlag";
import Drawer from "@kiwicom/orbit-components/lib/Drawer";
import useMediaQuery from "@kiwicom/orbit-components/lib/useMediaQuery";
import LinkList from "@kiwicom/orbit-components/lib/LinkList";
import NavigationBar from "@kiwicom/orbit-components/lib/NavigationBar";
import Stack from "@kiwicom/orbit-components/lib/Stack";
import TextLink from "@kiwicom/orbit-components/lib/TextLink";
import AirplaneTakeoff from "@kiwicom/orbit-components/lib/icons/AirplaneTakeoff";
import Accommodation from "@kiwicom/orbit-components/lib/icons/Accommodation";
import Partners from "@kiwicom/orbit-components/lib/icons/Partners";
import QuestionCircle from "@kiwicom/orbit-components/lib/icons/QuestionCircle";
import AccountCircle from "@kiwicom/orbit-components/lib/icons/AccountCircle";
() => {
const [showDrawer, setShowDrawer] = React.useState(false)
const { isLargeMobile } = useMediaQuery()
return (
<>
{showDrawer && (
<Drawer
onClose={() => {
setShowDrawer(false)
}}
shown={showDrawer}
>
<LinkList>
<TextLink type="secondary">English</TextLink>
<TextLink type="secondary">Help</TextLink>
<TextLink type="secondary">My account</TextLink>
</LinkList>
</Drawer>
)}
<NavigationBar
onMenuOpen={isLargeMobile ? undefined : () => setShowDrawer(true)}
>
<Stack
direction="row"
align="center"
justify={isLargeMobile ? "center" : "start"}
>
<ButtonLink href="https://orbit.kiwi">
<div
style={{
maxWidth: "40px",
overflow: "hidden",
}}
>
<img
src="https://orbit.kiwi/files/2019/08/cropped-OrbitLogo-1.png"
alt="Orbit by Kiwi.com"
height="40px"
/>
</div>
</ButtonLink>
<ButtonLink
type="secondary"
iconLeft={<AirplaneTakeoff />}
title="Travel"
/>
<ButtonLink
type="secondary"
iconLeft={<Accommodation />}
title="Rooms"
/>
<ButtonLink
type="secondary"
iconLeft={<Partners />}
title="Careers"
/>
{isLargeMobile && (
<Stack justify="end" inline>
<ButtonLink
type="secondary"
iconLeft={<CountryFlag code="gb" />}
title="English"
/>
<ButtonLink
type="secondary"
iconLeft={<QuestionCircle />}
title="Help"
/>
<ButtonLink
type="secondary"
iconLeft={<AccountCircle />}
title="My account"
/>
</Stack>
)}
</Stack>
</NavigationBar>
</>
)
}
Related components
Drawer
For more complicated navigation, use a drawer to keep it outside the main user flow.
Tabs
For navigation within a page or for links in an app footer, use tabs.
LinkList
For lists of navigation links (within a navigation bar or not), use a link list.