# Composer

> Writes a message or post — text, attachments, mentions and send.

- **Level**: organism · **Status**: experimental (R15: may change or be removed; J-11) · **Role**: input
- **Import**: `import { Composer } from "@rrios-forge/ui/organisms/composer";`
- **Source**: `packages/ui/src/organisms/composer`

A content-creation surface that gathers body + media + tags and hands them to onSubmit. The freeform tag field uses the Input atom and the media trigger is a Button over a hidden file input (atoms-only, §8). suggestions → future Combobox upgrade; media → future FileDropzone upgrade. Patterns consulted: Patterns/Forms · FieldAnatomy, Patterns/Visual Priority · ActionHierarchy.

## Use it for

- Media viewer / composer / profile → `MediaLightbox` / `Composer` / `ProfileHeader`

## Axes

| Axis | Part | Values | Default | Meaning |
|---|---|---|---|---|
| `density` | — | `comfortable` `compact` | — | — |

## Stories

- [Playground](/?path=/story/components-organisms-composer--playground) · frame: `/iframe.html?id=components-organisms-composer--playground&viewMode=story`
- [Text only](/?path=/story/components-organisms-composer--text-only) · frame: `/iframe.html?id=components-organisms-composer--text-only&viewMode=story`
- [Compact](/?path=/story/components-organisms-composer--compact) · frame: `/iframe.html?id=components-organisms-composer--compact&viewMode=story`

## Decisions that name it

- ADR-019 — Composer organism (message/post authoring surface)

## Always

- Tokens only (R04); variants are semantic axes, never appearance (R02).
- Typography and actions are Poesía atoms, never raw HTML with utilities.
- Vibrant panes need a ground and never nest (ADR-027).
