Components
SayShape ships 64 components. Each one is a single ComponentDef in src/components: its description, props, allowed values, children and example live there, and this reference, the parser's validation and the model guide are all generated from it. A spec can't add components; they're reviewed TypeScript code.
| Category | Components |
|---|---|
| Layout | column, row, overlap, grid, card, list, list-item, accordion, divider, spacer, each, timeline, step, carousel, scroll |
| Content | text, image, code, badge, avatar, callout, icon, tile |
| Data | stat, rating, chart, chart-line, chart-rule, chart-note, meter, table, table-column, compare, compare-row, details, detail, schedule, board, tree, flow, map, pin |
| Input | button, link, check, switch, radio, select, date-picker, stepper, slider, input, segmented, menu, menu-item |
| Navigation | screen, tabs, tab, breadcrumb, pagination |
| Feedback | progress, skeleton, empty, dialog |
Conventions
"text"is the quoted text after the element name:button "Save".- A prop marked required must be given, or the parser reports it.
stateprops take a state name or a path liket.done;actionprops takeon=strings;conditionprops take an expression.- Enum values are listed in the type column. Any other value is a warning and the prop falls back to its default.
- Specs never set colors, fonts or pixel sizes. Roles such as
tone=,variant=andstyle=pick from the theme.