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 |
---|---|---|
Apr 06, 2022 | 7.0.0 |
|
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).
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).
Color is not used as the only visual means of conveying information (WCAG 2.0 1.4.1).
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).
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).
UI language and information design considerations have been incorporated into component design.
Includes relevant options (variant, style, size, orientation, optional iconography, decorations, selection, error state, etc.)
Includes guidelines for keyboard focus, layout (wrapping, truncation, overflow), animation, interactions, etc.
Includes a list of dos and don'ts that highlight best practices and common mistakes.
Includes content standards or usage guidelines for how to write or format in-product content for the component.
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 available as design tokens.
Includes a downloadable XD file that shows multiple options, states, color themes, and platform scales.
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.
Component is included in the Spectrum for Adobe XD plugin.