What it is
A panel that slides in from the right edge of the screen and stays anchored there while the page behind it remains in place. It is built for editing or inspecting one item — a workflow step, a version, a configuration — without leaving the list or table the reader opened it from.Live example
Exports
Hand-confirmed from source — no prop emitter has run for this component yet.
Every other prop of the underlying side-panel primitive is forwarded through except
anchor,
which the component hardcodes — see Constraints.
Choose Drawer when
- The reader is editing, configuring, or reviewing one item and benefits from still seeing the list or page they opened it from.
- The task is more involved than a Popover’s supplementary content but does not need to fully block the page the way a Dialog does.
Choose something else when
Anatomy
There is no title or header prop — a Drawer with a heading renders it as part of
children,
which is why wrapContent={false} exists for callers who need something other than the default
Typography-wrapped body.
Variants, sizes, and states
Three width presets —small (500px, default), medium (800px), large (1200px) — confirmed
against both source and the token file. No responsive behavior below these widths is recorded in
source. Height is always full-viewport; there is no size preset for height.
Edge and failure states
- Only one anchor exists. The component hardcodes
anchor="right"and omitsanchorfrom its own prop type entirely — a left, top, or bottom Drawer is not possible through this component. See TITAN-DRAWER-01. - The footer is unstyled.
footerContentrenders with no padding, border, or background of its own — confirmed from source, which places it as a plain sibling after the padded contentBox. Any visual separation from the content area is the caller’s responsibility.
Tokens
Hand-confirmed fromDrawer.tsx and component.tokens.json — no per-component token emitter
exists yet for this concept, so this table is hand-confirmed rather than generated. Unlike
Dialog and
Accordion, these are applied as inline
styles inside the component itself, not registered as a theme override — there is no
Drawer.overrides.ts file.
Composition
Drawer is a standalone overlay. It does not compose intoForm’s field pattern, though its
content area commonly hosts a form for the item being edited — that composition is left entirely
to the caller.
Content
No copy rules are recorded in source.Accessibility
- No test in source asserts focus containment, focus return to the trigger on close, or any ARIA role beyond what the underlying side-panel primitive provides by default — unconfirmed at the Titan layer.
- The one published test confirms only that the Drawer renders and that its content is present once open; it does not exercise closing, focus, or keyboard behavior.
Constraints
Known issues
Drawer: open issues
Divergences, open decisions, and undocumented gaps for Drawer.
Why it works this way
A single fixed anchor keeps every Drawer in the product predictable. Becauseanchor is not
exposed, a reader who has learned that a Drawer slides in from the right can rely on that being
true everywhere it appears, rather than checking each instance.
Status
No lifecycle metadata exists. There is no
status, since, deprecated, or
replacedBy field on a Titan component, so this table cannot report when an export arrived or
whether it is on the way out.Related
Hand-confirmed fromutilization.md — no utilization emitter has run for this component yet.
22 usages across 9 applications, the heaviest being ai-agent-studio (9, mostly editing
workflow actions, intents, and version comparisons) and reporting-thoughtspot (3).