Offer clear and actionable guidance so the user has the bare minimum amount of information necessary to proceed.
Use scannable, concise, informative, and useful titles that reinforce why this state is empty.
Provide a description that complements the title, offering additional context or guidance.
Choose visuals that complement the message, its tone, and do not distract from the real task. The content is primarily what should gain their attention.
Provide relevant actions that guide the user on how to proceed.
Don’t
Avoid creating a dead-end. Always provide actionable guidance and/or actions.
Don't overload with information or unnecessary details. Keep messaging brief and to the point.
Do not use technical jargon or proprietary terms. Keep the language user-friendly and straight-forward.
Avoid customizing its style. It should inherit the surrounding container's style when not in an empty state.
The four most likely scenarios for an empty state are Zero State, No Results, New Feature, and Not Enabled. This is not an exhaustive list, but a good starting point for most use cases.
Zero State
The Empty State should guide the user on how to achieve a non-empty state. You might provide a useful tip, such as a shortcut or explanation of what needs to occur if no direct action can be taken.
No Results
When an action results in no data or information to display, recommend alternate steps to take. For example, suggest an alternative filter if a table search yields no results, or guide the user on creating a new entry with the desired properties.
New Feature
An opportunity to introduce something new or not yet take advantage of. If it includes a plan change, clearly inform the user. Use this space to entice the user to explore and utilize the new feature.
Not Enabled
Appropriate for indicating that something is currently unavailable to them. Provide guidance on how they can gain access or why the feature is not enabled.
<dt-empty-stateheader-text="Nothing to see here"body-text="Looks like there is no data to display here."><template#body><dt-stackdirection="row"gap="300"><dt-buttonimportance="clear">Action</dt-button><dt-button>Action</dt-button></dt-stack></template><template#illustration><dt-illustration-nothing-to-see-here></dt-illustration-nothing-to-see-here></template></dt-empty-state>
<dt-empty-stateheader-text="Nothing to see here"body-text="Looks like there is no data to display here."><template#body><dt-stackdirection="row"gap="300"><dt-buttonimportance="clear">Action</dt-button><dt-button>Action</dt-button></dt-stack></template><template#icon="{ iconSize }"><dt-icon-box:size="iconSize"></dt-icon-box></template></dt-empty-state>
<dt-empty-statesize="md"header-text="Nothing to see here"body-text="Looks like there is no data to display here."><template#body><dt-stackdirection="row"gap="300"><dt-buttonimportance="clear">Action</dt-button><dt-button>Action</dt-button></dt-stack></template><template#illustration><dt-illustration-nothing-to-see-here></dt-illustration-nothing-to-see-here></template></dt-empty-state>
<dt-empty-statesize="md"header-text="Nothing to see here"body-text="Looks like there is no data to display here."><template#body><dt-stackdirection="row"gap="300"><dt-buttonimportance="clear">Action</dt-button><dt-button>Action</dt-button></dt-stack></template><template#icon="{ iconSize }"><dt-icon-box:size="iconSize"></dt-icon-box></template></dt-empty-state>
<dt-empty-statesize="sm"header-text="Nothing to see here"body-text="Looks like there is no data to display here."><template#body><dt-stackdirection="row"gap="300"><dt-buttonimportance="clear">Action</dt-button><dt-button>Action</dt-button></dt-stack></template><template#icon="{ iconSize }"><dt-icon-box:size="iconSize"></dt-icon-box></template></dt-empty-state>
<dt-empty-stateheader-text="Nothing to see here"body-text="Looks like there is no data to display here."><template#illustration><dt-illustration-nothing-to-see-here></dt-illustration-nothing-to-see-here></template></dt-empty-state>
<dt-empty-stateheader-text="Nothing to see here"><template#illustration><dt-illustration-nothing-to-see-here></dt-illustration-nothing-to-see-here></template></dt-empty-state>
<dt-empty-stateheader-text="Nothing to see here"body-text="Looks like there is no data to display here."><template#body><dt-stackdirection="row"gap="300"><dt-buttonimportance="clear">Action</dt-button><dt-button>Action</dt-button></dt-stack></template><template#illustration><dt-illustration-nothing-to-see-here></dt-illustration-nothing-to-see-here></template></dt-empty-state>
<dt-empty-statesize="sm"header-text="Nothing to see here"body-text="Looks like there is no data to display here."><template#body><dt-stackdirection="row"gap="300"><dt-buttonkind="muted"size="sm"importance="clear">Action</dt-button><dt-buttonkind="muted"importance="outlined"size="sm">Action</dt-button></dt-stack></template><template#icon="{ iconSize }"><dt-icon-box:size="iconSize"></dt-icon-box></template></dt-empty-state>