AhaSlides Design
v0.52.0React · Vue · Lit

Components · Data Display

Empty

The placeholder for a surface that has no data yet.

Examples

Image
Description
Empty · default illustration · a caption · an action

API

PropTypeDefaultNotes
image'default' | 'simple'defaultBuilt-in illustration: 64×41 line art, or a smaller 48×30 low-key graphic for tight surfaces
descriptionstringThe caption; falls back to the default slot when absent, and renders nothing when set to ""
(default slot)slotNo dataThe caption (alternative to the `description` attribute)
imageslotA custom picture (e.g. an <aha-icon>) that supersedes the built-in illustration
actionslotAn optional call to action (a button or link)

Install

# .npmrc — once: point the @ahaslides-product scope at GitHub Packages
@ahaslides-product:registry=https://npm.pkg.github.com
//npm.pkg.github.com/:_authToken=${GITHUB_TOKEN}   # a GitHub token with read:packages

npm i @ahaslides-product/design
import '@ahaslides-product/design/tokens.css';   // once, at the app root
import '@ahaslides-product/design/aha-empty';   // registers <aha-empty>

Agent feed for this component (absolute, fetchable anywhere): empty.agent.json · empty.md · empty.llms.txt

When to use

When to use
  • Empty — a list, table, or panel has nothing to show yet
  • Result — reporting the outcome of an action (success, 404)
  • Skeleton — content is loading, not absent
The caption says what's missing and, ideally, the next step — 'No responses yet — share the join link'. Keep one action; an empty state is a nudge, not a menu.
Surfaces
editor dashboard settings audience

Spec

Layout centred column · gap 10 · padding 32/16 (simple: gap 8 · 20/16) · Illustration default 64×41 · simple 48×30 line art · #B5B5B5 (text-disabled) · Caption 14/22 (simple 13/20) #8A8A8A (text-tertiary) · hidden when description="" · Custom image slot="image" · supersedes the built-in art · Action slot="action" · hidden when empty