## empty (`poetry_empty`)

An empty-state placeholder with an icon, message, and actions.

Class: Poetry::Ui::Empty::Component - BEM block `poetry-ui-empty`.
- `media_variant:` (symbol) - one of default|icon, default "default" - The media slot's treatment; :icon gives the rounded muted icon tile.
- `title_tag:` (symbol) - one of h1|h2|h3|h4|h5|h6, default "h3" - The title's heading level - a real heading element, so set it to fit the page outline.
Slots: media (Optional leading visual above the title - an icon or illustration.), title (The headline, rendered as a real heading (see title_tag).), description (Muted copy under the title.).
- PART `empty` - The empty-state root - the centered header and content stack
- PART `empty-header` - Wrapper around media/title/description - renders when at least one of those slots is set
- PART `empty-icon` - The media slot's box - media_variant: :icon gives the rounded muted icon tile | states: data-variant=default|icon (always - the resolved media_variant)
- PART `empty-title` - The title as a real heading (title_tag, h3 by default)
- PART `empty-description` - Muted copy under the title
- PART `empty-content` - The actions that fix the emptiness - the content block renders here
- RULE: An empty collection gets an Empty state with a next action - never a bare 'No results' div.
- RULE: Compose with the slots (media/title/description); the actions are the content block.
- RULE: The title renders as a real heading (h3 default) - set title_tag: to fit the page outline.
- RULE: media_variant: :icon gives the rounded muted icon tile; wrap a poetry_icon in with_media.
