---
title: Top nav items
description: Buttons and elements for the top nav.
order: 1
---

import SectionMessage from '@atlaskit/section-message';

import { TopNavStartLayoutExample } from '../../examples/constellation/top-nav-items/top-nav-start';
import { TopNavStartToggleExample } from '../../examples/constellation/top-nav-items/top-nav-start-toggle';
import { TopNavMiddleLayoutExample } from '../../examples/constellation/top-nav-items/top-nav-middle';
import { TopNavEndLayoutExample } from '../../examples/constellation/top-nav-items/top-nav-end';
import { AppLogoExample } from '../../examples/constellation/top-nav-items/app-logo';
import { CustomLogoExample } from '../../examples/constellation/top-nav-items/custom-logo';
import { CustomThemingLogoExample } from '../../examples/constellation/top-nav-items/custom-theming--logo';
import { CustomThemingSearchExample } from '../../examples/constellation/top-nav-items/custom-theming--search';
import { CustomThemingButtonsExample } from '../../examples/constellation/top-nav-items/custom-theming--buttons';
import { EndItemExample } from '../../examples/constellation/top-nav-items/end-item';
import { TopNavButtonExample } from '../../examples/constellation/top-nav-items/top-nav-button';
import { CustomTitleExample } from '../../examples/constellation/top-nav-items/custom-title';

These components can be used within the top nav from
[layout](/components/navigation-system/layout/examples).

For other components that can be used within the top nav, see
[navigation resources (Atlassians only)](https://hello.atlassian.net/wiki/x/rBE7MAE).

## Start items

These actions go in the [top nav start](/components/navigation-system/layout/examples#top-nav-slots)
area.

- Side nav toggle button: Opens and closes the
  [side nav](/components/navigation-system/layout/examples#side-nav).
- App switcher: Opens and closes an app switcher. See
  [navigation resources (Atlassians only)](https://hello.atlassian.net/wiki/x/rBE7MAE) for
  recommended platform components.

Use one of the following logo components to orient users and provide a persistent link to the app
landing page:

- [App logo](#app-logo): A container for an app's [logo icon](/components/logo) and name.
- [Custom logo](#custom-logo): A container for custom logo images.
- [Custom title](#custom-title): Optional text used for app customisation by customers.

<Example Component={TopNavStartLayoutExample} />

### Side nav toggle button

The side nav toggle button must be passed to `TopNavStart` through the `sideNavToggleButton` prop,
not via `children`.

- When the keyboard shortcut is enabled, the toggle button’s tooltip will automatically show Ctrl+[
  as the shortcut.
- The toggle button is left-aligned when the side nav is collapsed, and right-aligned when the side
  nav is expanded.

<Example Component={TopNavStartToggleExample} />

### App logo

App logo displays an app [logo icon](/components/logo) and name.

- It has a maximum width of 320px, after which the app name truncates. The app name also truncates
  based on the available space when the side nav is resized.
- At `s` breakpoints and below (less that 1024px), the app name is not shown.

See the [responsive section](#responsive) for more information.

<Example Component={AppLogoExample} />

### Custom logo

Custom logo provides a container for custom logo images with the following constraints:

- Maximum width: 320px. If the image is wider than this, or if space is limited when the side nav is
  resized, the logo will scale down to fit.
- Maximum height: 24px. If the image is shorter than this, the logo will scale up to fit.

Do not provide explicit width and height values on the image, otherwise it will not respect the
container size.

At `s` breakpoints and below (less that 1024px), only the provided icon is shown. Above `s`
breakpoints, the provided logo is shown.

See the [responsive section](#responsive) for more information.

<Example Component={CustomLogoExample} />

### Custom title

Optional text used for app customisation by customers.

- When present, it appears to the right of the logo.
- It has a maximum width of 200px, after which the text truncates. It also truncates based on the
  available space when the side nav is resized.
- At `s` breakpoints and below (less than 1024px), the custom title is not displayed.

<Example Component={CustomTitleExample} />

## Middle items

These actions go in the
[top nav middle](/components/navigation-system/layout/examples#top-nav-slots) area.

- They should consist of a search component and a create component, in that order to maintain the
  correct layout behaviour.
- The actions are centre-aligned when the side nav is collapsed, and left-aligned when the side nav
  is expanded.
- At `xl` breakpoints (1768px or greater), the middle items are centred in the viewport when the
  side nav is expanded, but are pushed out by the side nav to avoid overlapping.
- We have provided placeholder components. See
  [navigation resources (Atlassians only)](https://hello.atlassian.net/wiki/x/rBE7MAE) for
  recommended platform components.
- Our placeholder search field scales to fill the available area of common actions, up to a maximum
  width of 780px. At `xxs` breakpoints (less than 480px), the search field converts to an icon only
  button.

See the [responsive section](#responsive) for more information. If you use search or create
components from other packages, you may experience different responsive behaviour.

<SectionMessage>

The search bar must be the first child of `TopNavMiddle`, in line with our design specifications.
Otherwise, you may see unexpected layout behavior.

</SectionMessage>

<Example Component={TopNavMiddleLayoutExample} />

## End items

These actions appear in the
[top nav end](/components/navigation-system/layout/examples#top-nav-slots) area. They are
right-aligned and provided as a list for accessibility. Contains, in the following order:

- Growth button - A placeholder for an upselling button (optional).
- Chat - A placeholder for a chat panel.
- Notifications - Use to open and close notifications.
- Help - Use to open and close help.
- Settings - Use to open and close a settings menu.
- Profile/Login - A placeholder for an account component.

See [navigation resources (Atlassians only)](https://hello.atlassian.net/wiki/x/rBE7MAE) for
recommended platform components for these buttons, or components triggered by these buttons.

At `xs` breakpoints and below (less than 768px), these buttons collapse into a single 'More' button.

See the [responsive section](#responsive) for more details.

<Example Component={TopNavEndLayoutExample} />

### End item

If none of the provided end items are suitable, you can create your own icon button using `EndItem`.

If you need a more customised button, use [top nav button](#top-nav-button) and wrap it in a list
item.

<Example Component={EndItemExample} />

## Top nav button

A button component that supports theming. The following variants are available:

- Top nav icon button
- Top nav link button
- Top nav link icon button
- Top nav button

Use this component when you need to add buttons to the top nav. Be aware that adding custom buttons
may negatively impact the consistency across apps.

<Example Component={TopNavButtonExample} />

## Responsive

Top nav items respond to the viewport size. See the default behaviour below, or explore the
[interactive example](/components/navigation-system/examples#examples).

**Note:** If using other platform components in top nav, they may have different responsive
behaviour.

| Breakpoint | Viewport      | Start items | Middle items       | End items     |
| ---------- | ------------- | ----------- | ------------------ | ------------- |
| `xxs`      | 320 - 479px   | Logo icon   | Search icon button | 'More' button |
| `xs`       | 480 - 767px   | Logo icon   | Search field       | 'More' button |
| `s`        | 768 - 1023px  | Logo icon   | Search field       | All buttons   |
| `m`        | 1024 - 1439px | Logo lockup | Search field       | All buttons   |
| `l`        | 1440 - 1767px | Logo lockup | Search field       | All buttons   |
| `xl`       | 1768+px       | Logo lockup | Search field       | All buttons   |

## Custom theming

Custom theming is configured on the [top nav](/components/navigation-system/layout/custom-theming).

### Logos

Logos and icons from the [logo](/components/logo) package will automatically consume the theme when
used with the `AppLogo` or `CustomLogo` component.

Custom logos uploaded by organization admins are not affected by theming.

<Example Component={CustomThemingLogoExample} />

### Search

Use the `useLegacySearchTheme()` hook to obtain a theme value that is compatible with existing
Search Platform components.

<SectionMessage appearance="warning" title="Use sparingly">

Do not create new components that rely on the `useLegacySearchTheme()` hook. It is intended only for
backwards compatibility, and may be deprecated if the Search Platform evolves.

</SectionMessage>

<Example Component={CustomThemingSearchExample} />

### Buttons

Do not use [button](/components/button) inside of the top navigation.

Use the action components exported from this package (such as `AppSwitcher`), as they automatically
consume the custom theme.

Custom actions can be created using [end item](#end-item) for icon buttons and
[top nav button](#top-nav-button) for buttons with visible text.

<Example Component={CustomThemingButtonsExample} />
