Version 6.0.0

Tray

Trays are containers that display transient content such as menus, options, additional actions, and more. They only exist on mobile experiences and are used for exposing types of content that may be too overwhelming for popovers.

Key example of a tray with 5 menu options overlaying a view of available files. First option with on/off switch, label Available offline. Other menu options, labels Copy link, Share, Edit, Delete.

Anatomy#


Image illustrating through labels the component parts of a tray, including a tray and the content it overlays.

Options#


Key example showing the flexible height for tray placement. An empty tray in the bottom of a mobile device in portrait orientation.

Height#

A tray’s height is flexible; it should accommodate the amount of content inside. This is set to auto by default (height is flexible depending on the height of the content inside) or set to a fixed number (when there’s overflow content, it would scroll).

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.

PropertyValuesDefault Value
height
number / auto
auto

Behaviors#


Key example showing an empty tray with a background overlay behind it.

Overlay#

Whenever a tray is triggered, an overlay is always displayed behind it in order to visually differentiate the tray from the rest of the view. Clicking or tapping on the overlay is one way to dismiss the tray.

Key example showing the source animation behavior of a tray. On a device held in landscape a tray starting in the bottom of a mobile device is animating and out. A fade and move-in effect animating at the same time in front of an in-fading overlay.

Animation#

When displaying a tray, it should fade in and animate up from the bottom of the screen. The background overlay fades in at the same time.

Key example showing the portrait tray placement. A tray is placed in the bottom of a mobile device.

Portrait placement#

In portrait orientation, a tray is displayed at the bottom of the screen and takes up the full width of the view.

Key example showing the landscape tray placement. A tray is placed in the bottom of the mobile device in landscape orientation.

Landscape placement#

In landscape orientation, a tray is displayed at the bottom of the screen, but keeps its portrait width. It is centered horizontally and has rounded upper corners.

Key examples showing the maximum height for tray placement in portrait and landscape orientations. On a device held in portrait a tray starting in the bottom of a mobile device has a 64 pixel gap space between the top area of the screen. On a device held in landscape a tray starting in the bottom of a mobile device has a 64 pixel gap space between the top area of the screen.

Maximum height#

The maximum height of a tray is determined by a 64 px safe zone from the top of the screen in both portrait and landscape orientations. This guarantees that there is always space for tapping outside of the tray. It also helps to visually differentiate a tray and a new page.

Dismissing a tray#

A tray can be dismissed by clicking or tapping anywhere outside of the tray, by swiping down on the screen, or by selecting an option or taking an action inside of the tray. On Android, it can also be dismissed with the back button. When the tray content is scrollable, a swipe-down gesture should only dismiss the tray if the content is scrolled to the top.

Usage guidelines#


Trays or popovers?#

Trays can be used as alternatives to popovers on small screens. Use a tray when a menu’s proximity to its trigger is considered to be less important to the experience, or for showing a volume of content that is too overwhelming for a popover.

Key example a tray showing six options with icons; share with, copy link, move, favorite, edit, and delete.

Changelog#


DateNumberNotes
Mar 02, 20216.0.0
  • Removed top and bottom padding
  • Added height option
Apr 21, 20205.0.1
  • Updated background color to gray-100 on dark and darkest themes
Apr 19, 20195.0.0
  • This part of Spectrum is now individually versioned (individual versions of existing items start at 5.0.0)

Design checklist#


N/A

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).

N/A

All platform scales

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

N/A

Accessible use of color

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

N/A

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).

N/A

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.

N/A

Writing guidelines

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

N/A

Internationalization guidelines

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

N/A

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.