Optionalaction?: ReactNodePrimary CTA (e.g. a
Optionalbanner?: ReactNodeFull-width strip below the empty state (e.g. an upsell card).
Optionalchildren?: ReactNodeExtra content below the actions (e.g. suggestion chips).
OptionalclassName?: stringOptionaldescription?: ReactNodeOptionalicon?: ReactNodeOptionalmock?: ReactNodeStatic ghost preview rendered behind the floating message card.
OptionalsecondaryAction?: ReactNodeOptional secondary CTA shown next to the primary.
Empty-state surface with two layouts:
mock): a centered icon / title / description / actions column — the lightweight "nothing here yet" message.mockset): the mock renders as a static, faded-out ghost of what the surface WILL look like, with the message floating over it on a frosted card — so the empty view sells the feature instead of showing a bare sentence. The mock is decorative (aria-hidden, non-interactive); pass a STATIC skeleton (animate={false}) so it reads as "nothing here", not "loading".bannerrenders full-width below either layout — the slot for a follow-up strip (e.g. an upsell or hint card) that shouldn't compete with the message.