Element catalog
All 83 element types Boceto v0.1 ships, grouped by domain. Every card shows the element rendered + the source line that produced it.
Layout Typography Form (basic) Form (modern) Media Content Overlays Feedback Data viz Mobile chrome System chrome AR / spatial
Layout
box
Plain rectangle. Generic container.
card
Box with a header divider — bounded content area.
modal
Floating window with title bar + close.
navbar
Top app bar with brand + items.
divider
Horizontal rule.
sidebar
Vertical nav rail with items + active row.
Typography
heading
Bold large text. fontSize=N overrides.
label
Plain inline text, optionally wrapped.
breadcrumb
Slash-separated trail; last segment is current page.
quote
Italic text with a left bar — pull-quote style.
Form — basic
input
Single-line text input.
textarea
Multi-line input with corner grip.
button
Default button.
primary-button
High-emphasis button (filled blue).
select
Closed dropdown trigger with chevron.
checkbox
Square box + checkmark + label.
radio
Round selector + label.
Form — modern
switch
On/off pill toggle. on=true.
slider
Value selector. value / min / max.
range-slider
Two-thumb range selector.
search
Input with leading magnifier glyph.
segmented-control
iOS-style pill toggle group.
combobox
Input + open suggestions list.
date-picker
Date field with calendar trigger icon.
color-picker
Color swatch + hex code.
file-upload
Dashed dropzone with cloud icon.
rating
Star row. max + value.
otp-input
N boxes for a one-time code.
tag-input
Input field with chip pills inside.
stepper-input
Number with − / + buttons.
Media
image
Image placeholder with diagonal cross.
video
Video placeholder with play triangle.
avatar
Circular profile placeholder, optional name.
Content
list
Bulleted list. items=.
table
headers= + data= (rows separated by ;).
tabs
Tab strip + body. active=N.
badge
Small status pill.
progress
Horizontal bar. progress=N.
pagination
current= + total=.
alert
Tinted box with info icon.
chip
Removable filter pill. closable=true.
code-block
Monospaced text block. lang=.
accordion
Collapsible panel. expanded=true.
chat-bubble
Message bubble. side=left|right.
calendar
Month grid. month/year/selected.
tree
File tree with depth via leading /.
stepper
Numbered horizontal steps. current=N.
carousel
Wide slide area + arrows + dots.
kbd
Keycap-shaped shortcut display.
mention
Inline @name styled.
ai-suggestion
Inline AI suggestion + Tab hint.
Overlays
dropdown-menu
Open menu state with rows. --- = separator.
tooltip
Dark floating box with arrow tail.
toast
Notification pill. variant=info|success|warn|error.
popover
Floating box with header + body + arrow.
Feedback
spinner
Loading arc.
skeleton
Gray placeholder lines. lines=N.
status-dot
Small colored dot. status=online|away|offline|busy.
notification-bell
Bell icon + count badge. count=N.
presence-cursor
Live-cursor with name pill. cursorColor=#hex.
Data viz
chart-bar
Vertical bars. data="3,5,2,7,4".
chart-line
Line chart with point markers.
chart-donut
Donut chart with segments.
chart-area
Filled area below the line.
chart-sparkline
Tiny inline trend.
gantt
Time-axis bars. tasks="Name:start:end".
heatmap
Grid of intensity-shaded cells.
map
Map placeholder with curvy roads + pin.
code-diff
Red/green +/- diff lines.
Mobile chrome
phone-frame
Outer device chrome with notch + side buttons.
status-bar
Time + signal/wifi/battery icons.
home-indicator
iOS bottom gesture pill.
fab
Circular floating action button.
app-icon
Rounded icon. bg/glyph/badge.
System chrome
window-frame
macOS window with traffic lights + title.
browser-frame
Browser chrome with tabs + URL bar.
terminal
Black box, monospace, blinking cursor.
AR / spatial
glass-window
visionOS translucent window with handle bar.
gaze-cursor
Hover ring + center dot for eye tracking.
pinch-indicator
Two-finger pinch gesture marker.
volumetric-scene
Stage + perspective grid + 3D cube.
passthrough-frame
Camera-edge frame with live indicator.
voice-input
Listening waveform indicator.
DSL essentials
Layout primitives
Stop hand-computing X/Y. row stacks left-to-right, col stacks top-to-bottom. gap spaces, align controls perpendicular placement.
Named IDs (two ways)
Inline shorthand: element button#submit 0 0 100 36 "Save". Or attribute form: element button 0 0 100 36 "Save" id=submit. Both produce id: "submit"; the serializer always emits the shorthand.
Composite components
Define a reusable widget once; reference it many times. $name / ${name} placeholders inside the body get filled from caller-supplied attributes.
component user-card(name, role) element card 0 0 240 80 "" element avatar 8 8 40 40 "" element heading 56 12 180 24 "$name" element label 56 38 180 18 "$role" end element user-card 100 50 240 80 "" name="Jane" role="Admin" element user-card 100 150 240 80 "" name="John" role="User"