All measurements are in character cells (cols × rows).

§R4.1 Push Button

< Label >     (standard)
» Label «     (default button)
PropertyValue
Height1 row
Min widthLabel length + 4 (2 padding chars each side)
Padding1 space each side inside delimiters
Delimiter (standard)< and >
Delimiter (default)» and «
Gap between buttons2 cols

§R4.2 Entry Field

Label: [input text here____]
PropertyValue
Height1 row
Min width10 cols (including brackets)
Max width60 cols
Fill character_ (underscore) or · (middle dot)
Bracket delimiters[ and ]
Label gap1 space between label and field

§R4.3 Toggle / Checkbox

[X] Enabled option
[ ] Disabled option
PropertyValue
Height1 row per option
Indicator width3 cols ([X] or [ ])
Gap to label1 space
Vertical gap between options0 rows (consecutive lines)

§R4.4 Radio Group

(*) Selected option
( ) Unselected option A
( ) Unselected option B
PropertyValue
Height1 row per option
Indicator width3 cols ((*) or ( ))
Gap to label1 space
Vertical gap between options0 rows
Group label1 row above group, Title typography

§R4.5 List Box

┌── Select Model ──────────┐
│ ▸ claude-3-opus           │
│   claude-3-sonnet         │
│   gpt-4-turbo             │
│   gpt-4o                  │
│   gemini-1.5-pro      ↓   │
└──────────────────────────┘
PropertyValue
Min height3 rows (content) + 2 (border) = 5 rows
Max height15 rows (content) + 2 (border) = 17 rows
Min width20 cols (including border)
Highlight barReverse video on focused row
Selection indicator (1 col) before focused item
Scroll indicator / in right border when content overflows
BorderLevel 1 (single-line)

§R4.6 Data Table

│ Name         │ Status │ Latency │ Errors │
│──────────────│────────│─────────│────────│
│ claude-3     │ ◉ OK   │  120ms  │ 0      │
│ gpt-4        │ ⚠ SLOW │  890ms  │ 2      │
PropertyValue
Header row1 row, Title typography (bold)
Separator1 row of characters below header
Data row height1 row
Cell horizontal padding1 space each side
Column separator (single vertical line)
Min column widthLongest header or data value + 2 (padding)
Sort indicator (ascending) or (descending) after header text

§R4.7 Metric Card

▲ Requests: 1,234
PropertyValue
Height1 row (compact) or 2–3 rows (expanded)
Icon/symbol1–2 cols
Gap icon → label1 space
Gap label → value1 space (or : )
Separator between cards with 1 space padding each side

§R4.8 Dialog

╔══ Confirm Delete ══════════════════╗
║                                    ║
║  Are you sure you want to delete   ║
║  "report.pdf"?                     ║
║                                    ║
║         < Delete >  < Cancel >     ║
║                                    ║
╚════════════════════════════════════╝
PropertyValue
Min width30 cols
Max width72 cols
Min height5 rows (content) + 2 (border) = 7 rows
Padding2 cols horizontal, 1 row vertical (inside border)
BorderLevel 3 (double-line)
Shadow2-col × 1-row offset
TitleCentered in top border
Button areaBottom of content, right-aligned or centered
Button gap2 cols between buttons

§R4.9 Menu (Pull-Down)

┌──────────────────┐
│ New           ^N  │
│ Open...       ^O  │
│ Save          ^S  │
│───────────────────│
│ Close         ^W  │
└──────────────────┘
PropertyValue
Item height1 row
Max items10
Min widthLongest item text + shortcut + 4 (padding)
Max width40 cols
Horizontal padding1 space each side
SeparatorFull-width line
Shortcut alignmentRight-aligned, 2 spaces before right border
BorderLevel 2 (single-line)
Shadow2-col × 1-row offset
Cascade indicator suffix (right-aligned)
Disabled itemsDim (SGR 2), no shortcut highlight

§R4.10 Spin Button

Model Count: < 5 >
PropertyValue
Height1 row
Decrease indicator<
Increase indicator>
Value padding1 space each side of value
Max recommended values20
F1 Help  F5 Refresh  / Filter  q Quit
PropertyValue
Height1–2 rows
Key labelKey name in bold or contrasting color
Action labelBody typography
Gap key → action1 space
Gap between pairs2+ spaces
PositionAbsolute bottom of terminal