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.
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).
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.
Property | Values | Default Value |
---|---|---|
height | number / auto | auto |
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.
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.
In portrait orientation, a tray is displayed at the bottom of the screen and takes up the full width of the view.
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.
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.
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.
Date | Number | Notes |
---|---|---|
Mar 02, 2021 | 6.0.0 |
|
Apr 21, 2020 | 5.0.1 |
|
Apr 19, 2019 | 5.0.0 |
|
Includes all interactive states that are applicable (hover, down, focus, keyboard focus, disabled).
Includes relevant options (variant, style, size, orientation, optional iconography, decorations, selection, error state, etc.)
Works properly across all four color themes (lightest, light, dark, darkest).
Includes a desktop scale (UWP, macOS, web desktop) and a mobile scale (iOS, Android, web mobile).
Includes guidelines for layout (wrapping, truncation, overflow), animation, interactions, etc.
Includes a list of dos and don'ts that highlight best practices and common mistakes.
Follows WCAG 2.0 standards for contrast (AA).
Works properly across various locales and includes guidelines for bi-directionality (RTL).
Follows WCAG 2.0 standards for keyboard accessibility guidelines and includes a description of the keyboard interactions.
All design attributes (color, typography, layout, animation, etc.) are included in Spectrum DNA.
Includes a downloadable XD file that has been generated by code and shows multiple variations, states, color themes, and scales.
Component is included in the Spectrum for Adobe XD plugin.