An empty page is the first thing a new user sees, so it should say what belongs there and offer the one step that puts it there. EmptyState does that in one tag, at three sizes, with a Mascot, a Cube Emote or an icon above it.
l is for a whole page with nothing in it yet, m for a card or panel, and s for inside a table, list, select or chart. DataTable's own empty and no-results states use s.
- The title says what is missing, plainly: "No clients yet", not "Nothing to see here".
- The description is one sentence on what fills the space, or what happens next.
- One primary action. When the page header has the same button, hide it there while the page is empty, so the step shows once.
- A Mascot reads best with surface="flat". A Cube Emote from once-ui.com/emotes goes in visual the same way.