UI text patterns

The patterns we ship most often, annotated on real Pulse components. Each example is a working snippet of the design system, with the writing rules called out beside it.

Buttons

Button labels are the densest writing surface in the product. They have to convey an action in one to three words and survive on small screens.

  • Start with a verb if the button does something. Say what.
  • Be specific when context isn't obvious. Save is fine in a dialog called "Edit dashboard". Standalone, write Save changes.
  • Use Sentence case. Never Title Case.
  • Match the verb to the noun in the result. Delete dashboard, not Delete.

 

Dialogs

A dialog interrupts the reader. Earn the interruption: title says what's about to happen, body says the consequence, primary button says the action.

Dialog - Better

Dialog - Better

 

Do

 

Don't

 

 

Empty states

Empty states aren't decorative. Each one is a chance to teach the reader what this surface is for and what they can do next. One short sentence explaining what's missing, one button moving them forward.

Empty states example

Empty states example

 

Loading and progress

  • For loads under 1 second, no message — a spinner is enough.
  • For loads 1–10 seconds, name what's loading: "Loading dashboard…".
  • For loads over 10 seconds, explain why and (if possible) show progress: "Importing 12,400 events. This usually takes a minute."
  • Use … (single character) at the end of in-progress copy, not three dots.

 

Confirmation messages

Confirmations close a loop. They confirm the action, name what changed, and offer links to view more details, or undo the action if relevant.

Confirmation message

Confirmation message