Menu


Anatomy#

Options#
Table of options#
From the design point of view, each component has a number of options. These options and their names are platform agnostic, and each implementation should adapt these to fit into their framework.
Composition#
Behaviors#

Drill-in chevron#
When a menu item contains a submenu, a drill-in chevron will appear at the end of the menu item to show that a submenu is available.

Popover submenus#
When a menu is displayed within popovers, a submenu will appear adjacent to the parent menu item in a separate popover. The submenu popover is aligned with an offset to horizontally overlap the parent menu and vertically align the first submenu item with the parent menu item.
Submenus can optionally be

Tray submenus#
When a menu is displayed within a tray, a submenu will replace the tray content when the parent menu item is selected. A submenu displays a back button (labeled by the title of the parent item) at the top of the tray to return the user to the previous level of the menu.
Submenus can optionally be

Keyboard focus#
A menu item can be navigated using a keyboard. The keyboard focus state takes the menu item’s visual hover state and adds a 2 px blue vertical line to the start edge of the menu item.

Text overflow#
When a menu item’s label or description are too long for the available horizontal space, they wrap to form another line.

Section dividers#
Dividers appear between sections when two or more sections are used within the same menu.

Windows high contrast mode#
In Windows high contrast mode, menu items should display with default text color. Selected items should have the background and text colors defined for selected text.
Usage guidelines#
Use consistent sizing#
Menus should be sized according to the component being used as the menu trigger. All submenus within the menu should also be using the same size as the menu trigger.


Use a consistent size between the menu trigger and the menu.


Don’t use different sizes between the menu trigger and the menu.
Content standards#
Use sentence case for menu items#
Following Adobe’s UX writing style, write menu items in




Ellipses in menu items#
Avoid using ellipses (…) in menu item names within products whenever possible. An ellipsis often implies that the action for a menu item will open in a new view, or that a user will be taken elsewhere.




Using descriptions in menu items#
Only use




Internationalization#
Keyboard interactions#

Text overflow#
When the action button text is too long for the available horizontal space, it truncates at the end. The full text should be revealed with a tooltip on hover.
Changelog#
- Added selection style (checkbox or switch)
- Removed actions area
- Updated all colors to 6.0.0
- Removed uppercase detail typography style from section headers
- Added unavailable option
- Added collapsible header option
- Added more documentation (composition, behaviors, and guidelines)
- Rename "list item" to "menu"
- Moved checkmark placement to left of menu items
- Changed alignment of icons, keyboard shortcuts, and selection controls from middle to top
- This component has been added to the website
Design checklist#

All interactive states
Includes all interactive states that are applicable (hover, down, focus, keyboard focus, disabled).

All color themes
Works properly across all four color themes (lightest, light, dark, darkest).

All platform scales
Includes a desktop scale (UWP, macOS, web desktop) and a mobile scale (iOS, Android, web mobile).

Accessible use of color
Color is not used as the only visual means of conveying information (WCAG 2.0 1.4.1).

Accessible contrast for text
Text has a contrast ratio of at least 4.5:1 for small text and at least 3:1 for large text (WCAG 2.0 1.4.3).

Accessible contrast for UI components
Visual information required to identify components and states (except inactive components) has a contrast ratio of at least 3:1 (WCAG 2.1 1.4.11).

Content design
UI language and information design considerations have been incorporated into component design.

Defined options
Includes relevant options (variant, style, size, orientation, optional iconography, decorations, selection, error state, etc.)

Defined behaviors
Includes guidelines for keyboard focus, layout (wrapping, truncation, overflow), animation, interactions, etc.

Usage guidelines
Includes a list of dos and don'ts that highlight best practices and common mistakes.

Writing guidelines
Includes content standards or usage guidelines for how to write or format in-product content for the component.

Internationalization guidelines
Works properly across various locales and includes guidelines for bi-directionality (RTL).

Keyboard interactions
Follows WCAG 2.0 standards for keyboard accessibility guidelines and includes a description of the keyboard interactions.

Design tokens
All design attributes (color, typography, layout, animation, etc.) are available as design tokens.

UI kit
Includes a downloadable XD file that shows multiple options, states, color themes, and platform scales.

Generated UI kit
Includes a downloadable XD file, generated by code using design tokens defined in Spectrum DNA, and shows multiple options, states, color themes, and platform scales.

In Spectrum for Adobe XD plugin
Component is included in the Spectrum for Adobe XD plugin.