Skip to content

Foundations

58 components in the coalitionkit/v0_9 catalog.

AudioPlayer

Doors: wide, compact, message, voice.

States: paused, playing.

Events: media.play, media.pause, media.seek(t).

Prop Type Notes
src binding path
title string string?
duration number Bound media duration in seconds.
elapsed number Bound initial playback position in seconds.
waveform array Bound amplitude samples for the voice waveform, from zero to one.
transcript binding Plain-text transcript from the host.

Avatar

Doors: wide, compact, lens, message.

States: default, speaking.

Prop Type Notes
label string string
presence enum live|away|off
ring boolean bool
seat enum 1-5|host|steward
size enum xs|sm|lg|xl

AvatarStack

Doors: wide, compact.

States: default.

Prop Type Notes
max number int
people array [participant]

Badge

Doors: wide, compact, lens, message, voice.

States: default.

Prop Type Notes
kind enum measured | vault | signed | model | estimate | example
label string string

Doors: wide, compact, message.

States: shown.

Events: banner.action, banner.dismiss.

Prop Type Notes
action object ?
body string string
title string string
tone enum info|ask|blocked|agreed

Button

Doors: wide, compact, lens, message, voice.

States: default, hover, focus, disabled, busy.

Events: action.name(context).

Prop Type Notes
action object {name,context}
busy boolean boolean?
disabled boolean boolean?
label string string
size enum sm | md | lg
variant enum primary | secondary | ink | ghost
tone enum Optional soft or destructive treatment shown by the control sheet.
icon string Optional leading icon name.
trailingIcon string Optional trailing icon name.

ButtonGroup

Doors: wide, compact, lens.

States: default.

Events: action.name(context).

Prop Type Notes
children children Button[]

Card

Doors: wide, compact, lens.

States: default, live, ask.

Events: open(subject).

Prop Type Notes
children children id[]
fields array [{label, value, provenance}]
provenance enum
scope scope Scope?
status enum
title string string?
tone enum default | live | ask | dashed

CheckBox

Doors: wide, compact, message, voice.

States: off, on, disabled.

Events: change(value).

Prop Type Notes
label string string
value binding path
description string Supporting description beneath the label.
disabled boolean Disable changes to the value.

Chip

Doors: wide, compact, lens, message, voice.

States: default, selected.

Events: select(id).

Prop Type Notes
label string string
seat string 1..5?
selected boolean boolean?
disabled boolean Disabled chip.
dashed boolean Dashed add-item treatment.

ChoicePicker

Doors: wide, compact, message, voice.

States: none, one, many.

Events: select(value).

Prop Type Notes
display enum chips | menu
multiple boolean boolean?
options array {id,label}[]
value binding path

Column

Doors: wide, compact, lens, message, voice.

States: default.

Prop Type Notes
children children id[]
gap enum 4 | 8 | 12 | 16
spacing number Optional bound spacing in pixels, overriding the gap preset for tightly grouped content.

CommandPalette

Doors: wide.

States: open, results, empty.

Events: command.run(id), command.ask(text).

Prop Type Notes
groups enum actions|objects|log|ask
query binding path

DateTimeInput

Doors: wide, compact, message, voice.

States: empty, filled, error.

Events: change(value).

Prop Type Notes
mode enum date | time | datetime
tz string host-supplied
value binding path
range boolean Select a start and end date from the calendar.
busy array Unavailable ISO dates from the private calendar match, without names.
min datetime Earliest selectable date.
max datetime Latest selectable date.

Deadline

Doors: wide, compact, lens, message, voice.

States: calm, ask, passed.

Prop Type Notes
consequence string string
deadline datetime ISO
label string string
startedAt datetime Start of the decision window, used for elapsed progress.

Divider

Doors: wide, compact, lens, message, voice.

States: default.

Prop Type Notes
label string Optional text between the dividing rules.

Drawer

Doors: wide.

States: open.

Events: drawer.close.

Prop Type Notes
body children components
footer children actions
side enum right|left
title string string
width number 360-480

EmptyState

Doors: wide, compact.

States: default.

Events: action.invoke.

Prop Type Notes
action object ?
body string who fills it
glyph string icon
title string string

ErrorState

Doors: wide, compact.

States: error, reconnecting.

Events: error.retry.

Prop Type Notes
cause string plain words
details object {code, ref}
lastSeen datetime ISO?
retry boolean bool
missedEvents number Bound count of missed events that will replay during reconnection.

FileDrop

Doors: wide, compact.

States: idle, dragover, uploading, error.

Events: file.add(file).

Prop Type Notes
accept array mime[]
maxBytes number number
target binding path

FilterBar

Doors: wide, compact.

States: default, filtered.

Events: filter.change, sort.change.

Prop Type Notes
filters array [{field, op, value}]
groupBy string field?
query binding path
resultCount binding path
sort object {field, dir}
options array Available filter groups {field, label, options: [{value, label}]}.
placeholder string Search input placeholder.
resultLabel string Host-provided summary of the current result count and matches.

Grid

Doors: wide, compact, lens, message, voice.

States: default.

Prop Type Notes
children children id[]
columns number 1..4
fields array [{label, value, provenance}]
gap enum 4 | 8 | 12 | 16
provenance enum
status enum

Heading

Doors: wide, compact, lens, message, voice.

States: default.

Prop Type Notes
text string path | literal
tone enum default | blue
variant enum h1 | h2 | h3

Icon

Doors: wide, compact, lens.

States: default.

Prop Type Notes
label string string?
name string closed icon set
size enum 16 | 20 | 24
tone enum ink | blue

IconButton

Doors: wide, compact, lens.

States: default, hover, focus, disabled.

Events: action.name(context).

Prop Type Notes
action object {name,context}
ariaLabel string string (required)
icon string name

Image

Doors: wide, compact, message.

States: loading, loaded, failed.

Prop Type Notes
alt string string (required)
evidence id id?
src binding path

KeyValue

Doors: wide, compact, lens, message, voice.

States: default.

Prop Type Notes
pairs array {label,value:path,provenance?:id,scope?:Scope}[]

Doors: wide, compact, message.

States: default, hover, focus, visited.

Events: link.open(href).

Prop Type Notes
href string path | https literal
text string string

List

Doors: wide, compact, lens, message, voice.

States: empty, filled.

Events: open(item), select(item).

Prop Type Notes
empty string string?
items binding path
max number number?
selectable boolean boolean?
template string id

Doors: wide, compact.

States: open, item-hover, submenu.

Events: menu.pick(id).

Prop Type Notes
items array [{label, icon?, shortcut?, submenu?, tone, disabled?}]

Meter

Doors: wide, compact, lens, voice.

States: ok, warn, bad.

Prop Type Notes
bands array {upTo,tone}[]
label string string
max number
min number
provenance enum id
unit string
value number path
caption string Secondary measurement caption below the label.

Doors: wide.

States: closed, open.

Events: dismiss.

Prop Type Notes
children children id[]
dismissible boolean boolean
open binding path
title string string

NumberField

Doors: wide, compact, message, voice.

States: empty, filled, focus, error.

Events: change(value, unit).

Prop Type Notes
label string string
max number number?
min number number?
step number number?
unit string string
value binding path
currency string Currency prefix before the number.
help string Supporting text beneath the numeric input.

Panel

Doors: wide, compact, lens.

States: default.

Prop Type Notes
children children id[]
fields array [{label, value, provenance}]
provenance enum
scope scope Scope?
status enum
title string string?

Popover

Doors: wide.

States: open.

Events: popover.close.

Prop Type Notes
actions number ≤2
anchor id id
body children components
title string string

Progress

Doors: wide, compact, lens, voice.

States: determinate, stepped, indeterminate.

Prop Type Notes
label string string
max number
min number
provenance enum id
steps number number?
unit string
value number path (0..1)
stepLabels array Ordered labels for a numbered workflow; value is the active step.

RadioGroup

Doors: wide, compact, message, voice.

States: none, selected.

Events: change(value).

Prop Type Notes
options array {id,label}[]
value binding path

RichText

Doors: wide, compact, message, voice.

States: default.

Events: link.open(href).

Prop Type Notes
allow enum bold | italic | list | link
markdown string path | literal

Row

Doors: wide, compact, lens, message, voice.

States: default.

Prop Type Notes
align enum start | center | end
children children id[]
gap enum 4 | 8 | 12 | 16

SearchField

Doors: wide, compact.

States: empty, typing, results, no-results.

Events: search.change(q), search.pick(id).

Prop Type Notes
groups array [{label, items[]}]
query binding path

SegmentedControl

Doors: wide, compact, message.

States: pressed, unpressed.

Events: select(value).

Prop Type Notes
options array {id,label}[]
value binding path

Sheet

Doors: compact.

States: closed, open.

Events: dismiss.

Prop Type Notes
children children id[]
dismissible boolean boolean
open binding path
title string string

Skeleton

Doors: wide, compact.

States: skeleton, filled, live, rest, changed.

Prop Type Notes
lines number number?
previous binding path?
provenance enum id?
reserves number px
shape enum line | block | avatar | card
state enum skeleton | filled | live | rest | changed

Slider

Doors: wide, compact.

States: default, focus, disabled.

Events: change(value).

Prop Type Notes
max number number
min number number
step number number
unit string string?
value binding path
marks array Tick marks {at: bound number, label, tone?}.
format enum Format numeric values as numbers or minutes since midnight.
valueLabel string Optional output caption, such as the participant floor.

SlotPicker

Doors: wide, compact.

States: loading, ready, held, none-shared.

Events: slot.hold(start), slot.release(start).

Prop Type Notes
days array [{date, slots[{start, state: free|mine|shared|off}]}]
duration number minutes
selected datetime start?
source string psi_match
participants number Bound participant count from the private calendar match.

Spinner

Doors: wide, compact, lens.

States: spinning.

Prop Type Notes
label string string?

SplitButton

Doors: wide, compact.

States: closed, open.

Events: action.invoke(value).

Prop Type Notes
items array [{label, value, hint?, disabled?}]
primary string value

Switch

Doors: wide, compact.

States: off, on, disabled.

Events: change(value).

Prop Type Notes
label string string
value binding path
description string Supporting description beneath the label.
disabled boolean Disable changes to the value.

Table

Doors: wide, compact, message, voice.

States: empty, filled.

Events: sort(key), open(row), table.action(ids), table.page(page), select(ids).

Prop Type Notes
columns array {key,label,align?,unit?}[]
rows binding path
sortable boolean boolean?
selection enum Row selection mode.
selected array Selected row identifiers.
total number Bound total result count from the host.
page number Bound current page, starting at one.
pageSize number Bound maximum rows per page.
action object Optional bulk action {label}; invokes table.action with selected identifiers.

Tabs

Doors: wide, compact, message.

States: selected, unselected.

Events: select(value).

Prop Type Notes
options array {id,label}[]
panels children id[]
value binding path

Tag

Doors: wide, compact, lens, message, voice.

States: agreed, needs, changed, private, blocked.

Prop Type Notes
kind enum agreed | needs | changed | private | blocked
label string string

Text

Doors: wide, compact, lens, message, voice.

States: default.

Prop Type Notes
provenance enum id?
text string path | literal
tone enum default | muted | blue
variant enum body | caption

TextArea

Doors: wide, compact, message, voice.

States: empty, filled, focus, error, disabled.

Events: change(value).

Prop Type Notes
error binding path?
label string string
maxLength number number?
value binding path
decorations array Plain-text decorations {text, kind: bold | mention}; editing remains plain text.
placeholder string Placeholder while the text area is empty.

TextField

Doors: wide, compact, message, voice.

States: empty, filled, focus, error, disabled.

Events: change(value), submit(value).

Prop Type Notes
error binding path?
label string string
maxLength number number?
placeholder string string?
value binding path
help string Supporting text beneath the input.
readOnly boolean Read-only input.
private boolean Display a vault placeholder instead of the bound value.

TimeZone

Doors: wide, compact.

States: default.

Events: tz.change.

Prop Type Notes
others array [{participant, tz}]
value string IANA tz
at datetime Instant shown in each participant time zone.
label string Viewer time-zone display label.

Toast

Doors: wide, compact, lens.

States: shown, stacked, dismissed.

Events: toast.action, toast.undo.

Prop Type Notes
action object ?
text string ≤60
tone enum done|change|error
undoWindow number s

Tooltip

Doors: wide.

States: hidden, shown.

Prop Type Notes
target id id
tip string string
shortcut string Optional keyboard shortcut displayed in the tooltip.

Video

Doors: wide, compact.

States: paused, playing.

Events: media.play, media.pause, media.seek(t).

Prop Type Notes
captions binding path?
poster binding path?
src binding path
duration number Bound media duration in seconds.
elapsed number Bound initial playback position in seconds.
caption string Current plain-text caption supplied by the host.