# Primitives

Required primitives:
- button
- icon button
- text input
- search input
- select
- textarea
- card
- panel
- pill
- tab
- drawer
- sheet
- table
- timeline
- key-value list
- empty state
- loading state
- error state

Rules:
- primitives should stay semantic and reusable
- tokens, not page-specific overrides, define their visual baseline
- every primitive needs a density model that works on desktop and mobile
