column gap=6 text "First" text "Second"Element atlas
Every card below is the real engine running that element's example. Press, drag and type, then flip a card to see the lines that draw it.
Containers that place other elements, plus each, which repeats elements once per item of a list.
All on one page →column gap=6 text "First" text "Second"row gap=10 button "Cancel" variant=secondary button "Save"overlap at=top-right card text "Trail runner socks" weight=semibold text "Three pairs" tone=muted badge "Sale" tone=badgrid min=140 gap=10 stat label="Orders" value=12 stat label="Returns" value=1 stat label="Rating" value=4.8card variant=hero text "Order summary" style=title text "2 items" tone=mutedcard on=emit:open_order text "Trail runner socks" weight=semibold text "Arrives Thursday" tone=mutedlist list-item "Trail runner socks" detail="Merino blend" trailing="$24" list-item "Rain shell" detail="Packs into its pocket" trailing="$129" on=emit:open_shelllist list-item "Rain shell" detail="Packs into its pocket" trailing="$129" icon=package on=emit:open_shellstate returns=trueaccordion "Returns" bind=returns text "Free returns within 30 days, unworn."accordion "Shipping" bind=shipping text "Ships in two business days."dividerspacer size=16state gear=[{name: "Tent", kg: 2.1}, {name: "Stove", kg: 0.4}, {name: "Headlamp", kg: 0.1}]column gap=6 each items=gear as=g index=i key={g.name} text "{i + 1}. {g.name}, {g.kg} kg"timeline step "Day 1: Sedona" detail="Cathedral Rock at sunrise" step "Day 2: Flagstaff" detail="Lowell Observatory at night" step "Day 3: Grand Canyon" detail="South Rim, Mather Point"# Showing progress: a status on every steptimeline step "Ordered" time="Oct 18" status=done step "Out for delivery" detail="Arrives by 8 PM" status=current step "Delivered" status=upcomingtimeline step "Shipped" detail="Left the Phoenix warehouse" time="Oct 19" status=done icon=truckstate page=0carousel bind=page card text "Desert Rose Inn" style=lead weight=semibold text "$189 a night · 4.6 stars" tone=muted card text "Saguaro Lodge" style=lead weight=semibold text "$149 a night · 4.3 stars" tone=muted card text "Camelback Suites" style=lead weight=semibold text "$229 a night · 4.8 stars" tone=mutedstate events=[{title: "Order NW-2041 shipped", when: "09:12"}, {title: "Refund approved", when: "08:40"}, {title: "New review: 5 stars", when: "Yesterday"}, {title: "Stock low: Ridge 28 L", when: "Yesterday"}, {title: "Invoice sent", when: "Mon"}, {title: "Order NW-2038 delivered", when: "Mon"}, {title: "Price change: Summit pack", when: "Sun"}, {title: "New customer: Lumen Cinema", when: "Sat"}]scroll "Recent activity" size=sm list each items=events as=e list-item "{e.title}" detail="{e.when}"state guests=2 nights=3text "Weekend in Yosemite" style=titletext "{guests} guests, {nights} nights" tone=mutedtext "$160" tone=muted strike=truetext "Payment received" icon=check-circle tone=goodtext "**Free** cancellation until *2 days* before; see [the terms](https://northwind.example/terms)." rich=trueimage "Ridgeline trail runners, side view" src="/images/ridgeline.jpg" ratio=4:3code "npm install sayshape"badge "Shipped" tone=goodavatar "Ada Lovelace" detail="Trip organizer"callout "Rock is 47% of revenue" detail="Up from 41% last year" icon=trueicon name=sun tone=warn size=lgicon name=check-circle tone=goodrow gap=8 tile "4" icon=club label="4 of clubs" tile "Q" icon=heart tone=bad label="Queen of hearts" tile "A" icon=spade label="Ace of spades" tile "B4" shape=square detail="$14" selected=true on=emit:seatFigures, ratings, charts, tables and the world map. map and pin ship in the separate sayshape/map entry point because the country outlines add about 76 KB.
All on one page →state price=24 qty=2stat label="Total" value="${price*qty}"state stars=4rating value=4.5rating bind=starsstate sales=[{month: "Jan", revenue: 12000, last_year: 10000}, {month: "Feb", revenue: 18000, last_year: 14000}, {month: "Mar", revenue: 15000, last_year: 16000}]chart "Revenue vs last year" kind=line items=sales x=month y=revenue,last_year labels="This year,Last year" format=moneystate sales=[{month: "Jan", revenue: 12000, last_year: 10000}, {month: "Feb", revenue: 18000, last_year: 14000}, {month: "Mar", revenue: 15000, last_year: 16000}]chart "Revenue vs last year" kind=line items=sales x=month y=revenue,last_year labels="This year,Last year" format=money chart-line "Last year" y=last_yearstate sales=[{month: "Jan", revenue: 12000, last_year: 10000}, {month: "Feb", revenue: 18000, last_year: 14000}, {month: "Mar", revenue: 15000, last_year: 16000}]chart "Revenue vs last year" kind=line items=sales x=month y=revenue,last_year labels="This year,Last year" format=money chart-rule "Target" y=16000state sales=[{month: "Jan", revenue: 12000, last_year: 10000}, {month: "Feb", revenue: 18000, last_year: 14000}, {month: "Mar", revenue: 15000, last_year: 16000}]chart "Revenue vs last year" kind=line items=sales x=month y=revenue,last_year labels="This year,Last year" format=money chart-note "Launch" at="Feb"state score=72meter "Health score" kind=gauge value=score max=100 bands="60,85"state gear=[{id: "tent", name: "Tent", price: 180}, {id: "stove", name: "Stove", price: 45}] picked="" by="name" dir="asc"table items=gear key=id bind=picked sort=by direction=dir table-column "Item" field=name table-column "Price" field=price format=moneystate gear=[{id: "tent", name: "Tent", price: 180}, {id: "stove", name: "Stove", price: 45}] picked="" by="name" dir="asc"table items=gear key=id bind=picked sort=by direction=dir table-column "Price" field=price format=moneystate plans=[{name: "Basic", price: 9, storage: 50, support: "Email"}, {name: "Pro", price: 19, storage: 500, support: "Chat"}, {name: "Team", price: 49, storage: 2000, support: "Phone"}]compare items=plans pick="Pro" compare-row "Price a month" field=price format=money best=low compare-row "Storage (GB)" field=storage format=number best=high compare-row "Support" field=supportstate plans=[{name: "Basic", price: 9, storage: 50, support: "Email"}, {name: "Pro", price: 19, storage: 500, support: "Chat"}, {name: "Team", price: 49, storage: 2000, support: "Phone"}]compare items=plans pick="Pro" compare-row "Price a month" field=price format=money best=lowstate renewal="Jan 14, 2027"details "Ada Lovelace" subtitle="Analytical Engines Ltd · London" detail "Plan" value="Enterprise · 240 seats" detail "Renewal" value={renewal} detail "Status" value="At risk" tone=badstate renewal="Jan 14, 2027"details "Ada Lovelace" subtitle="Analytical Engines Ltd · London" detail "Status" value="At risk" tone=badstate picked=0 shifts=[{id: 1, day: "2026-11-09", from: "08:00", to: "16:00", name: "Ana Ruiz", tier: "Tier 1"}, {id: 2, day: "2026-11-09", from: "12:00", to: "20:00", name: "Ben Okafor", tier: "Tier 2"}, {id: 3, day: "2026-11-10", from: "08:00", to: "16:00", name: "Chloe Park", tier: "Tier 1"}]schedule "Support rota" items=shifts date=day start=from end=to label=name tone=tier view=week bind=pickedstate picked=0 deals=[{id: 1, name: "Fleet renewal", company: "Harbor Freight Co", status: "Lead", amount: 48000}, {id: 2, name: "Claims portal", company: "Northwind Mutual", status: "Proposal", amount: 125000}, {id: 3, name: "Warehouse sensors", company: "Larkspur Logistics", status: "Qualified", amount: 36500}]board "Pipeline" items=deals stage=status stages="Lead,Qualified,Proposal,Won" title=name detail=company value=amount format=money sum=amount bind=pickedstate picked="" people=[{id: "e1", name: "Ana Ruiz", role: "COO"}, {id: "e2", name: "Ben Okafor", role: "Head of Claims", manager: "e1"}, {id: "e3", name: "Chloe Park", role: "Head of Operations", manager: "e1"}, {id: "e4", name: "Dev Malhotra", role: "Claims lead", manager: "e2"}]tree "Northwind Mutual" items=people parent=manager label=name detail=role bind=pickedstate picked="" steps=[{id: "in", label: "Claim filed", kind: "start", next: "check"}, {id: "check", label: "Under $5,000?", kind: "decision", next: "auto,review"}, {id: "auto", label: "Approve automatically", next: "pay"}, {id: "review", label: "Adjuster review", next: "pay"}, {id: "pay", label: "Pay out", kind: "end"}]state edges=[{from: "check", to: "auto", label: "Yes"}, {from: "check", to: "review", label: "No"}]flow "Claim approval" items=steps edges=edges bind=pickedstate selected=""map bind=selected fit=pins cluster=true controls=true pin "Phoenix" lat=33.4484 lon=-112.074 detail="Status: delayed | Contract: 120000" tone=bad size=8state selected=""map bind=selected fit=pins cluster=true controls=true pin "Phoenix" lat=33.4484 lon=-112.074 tone=bad size=9 detail="Status: delayed | Value: 120000"Controls people press, type into or drag. Most read and write a state name through bind=.
All on one page →button "Book now" on=emit:bookbutton "Back" variant=secondary on=dec:steplink "Size guide" on=emit:size_guidestate agreed=falsecheck "I agree to the terms" bind=agreedstate updates=trueswitch "Email me order updates" bind=updatesstate size=mradio "Small" bind=size value=sradio "Medium" bind=size value=mradio "Large" bind=size value=lstate teams=[{id: "eng", name: "Engineering"}, {id: "sales", name: "Sales"}] team=""select "Team" items=teams value=id label=name bind=team placeholder="Choose a team"state due=""date-picker "Due date" bind=due min="2026-01-01" max="2027-12-31"state qty=2stepper "Quantity" bind=qty min=1 max=10state maxPrice=120slider "Up to ${maxPrice}" bind=maxPrice min=20 max=300 step=10state task="" todos=[]input "New item" bind=task placeholder="e.g. Sunscreen" on="add:todos:{task};set:task:''"text "{plural(len(todos), 'item')}" tone=mutedstate view="Chart"segmented bind=view options="Chart,Table"text "Showing the {lower(view)}" tone=mutedmenu "Actions" menu-item "Edit" icon=file on=emit:edit menu-item "Duplicate" icon=copy on=emit:duplicate menu-item "Delete" icon=x-circle tone=bad on=emit:deletemenu "Actions" menu-item "Duplicate" icon=copy on=emit:duplicatescreen name=cart title="Your cart" text "2 items" button "Checkout" on=go:checkoutscreen name=checkout title="Checkout" text "Pay with card" button "Back to cart" variant=secondary on=backstate view=overviewtabs bind=view tab "Overview" value=overview text "Light, quick-drying trail runners." tab "Specs" value=specs text "280 g, 6 mm drop."state view=overviewtabs bind=view tab "Reviews" value=reviews text "4.8 out of 5 from 212 hikers."state at="Trail runners"breadcrumb "Shop / Shoes / Trail runners" bind=atstate page=3pagination bind=page pages=12state done=3progress value={done} max=5 label="{done} of 5 steps"skeleton lines=2skeleton shape=block height=80empty "No results" detail="Try a wider price range." action="Clear filters" on=emit:clear_filtersstate confirm=truebutton "Delete order" variant=danger on=set:confirm:truedialog "Delete order NW-2041?" bind=confirm size=sm text "The order and its invoice are removed. This can't be undone." tone=muted row button "Cancel" variant=secondary on=set:confirm:false button "Delete" variant=danger on="emit:delete;set:confirm:false"