Emitted when the built-in CTA button is clicked.
Optional Font Awesome icon shown inside the CTA button.
When set, renders a primary CTA button with this label.
mjButton variant for the built-in CTA. Defaults to 'primary'.
Font Awesome icon class string (e.g. "fa-solid fa-key"). When omitted, a
sensible default is chosen from Variant. Pass an empty string AND no
variant default applies — set this explicitly to "" to render no icon.
Supporting/help text below the title.
ARIA live-region role on the host. When unset, it defaults from Variant:
error → 'alert' (assertive), everything else → 'status' (polite). This
makes a dynamically-appearing empty state announce itself to screen readers —
the title + message are read together via the role's implicit
aria-live/aria-atomic. (Empty states present at page load are not
announced, per the live-region spec, so static placeholders stay quiet.)
Pass an explicit role to override, or '' to opt out of the live region.
Density — controls padding and icon size. Defaults to 'default'.
Bold heading line (e.g. "No API keys yet").
Visual intent — drives the default icon and icon color. Defaults to 'empty'.
Live-region role applied to the host. Explicit Role wins ('' ⇒ no role);
otherwise an error state is an assertive alert, everything else a polite status.
Icon actually rendered: the explicit Icon when provided (including ""
to suppress the icon), otherwise the per-variant default.
mj-empty-state — Canonical centered empty/no-results/error placeholder.
Replaces the ~213 inline empty-state
<div>s that pages were each hand-rolling (icon + title + message, optionally a CTA), e.g.:Usage:
For dynamic messages (e.g. "No keys matching X" vs "No keys yet"), compute the string in the parent and bind it to
[Message], or project richer body content as default<ng-content>(rendered between the message and the actions).