Skip to content

Shell, doors and templates

19 components in the coalitionkit/v0_9 catalog.

AccountMenu

Doors: wide, compact.

States: open.

Events: account.pick(id).

Prop Type Notes
agents array []
appearance enum light|dark|system
channels array []
identity object participant + owner key

AgentDock

Doors: wide, compact.

States: idle, streaming, tool-call, offline.

Events: agent.say(text).

Prop Type Notes
agent id participant
composer enum text|voice
messages array agent session

BoardTemplate

Doors: wide.

States: default.

Events: card.open(id).

Prop Type Notes
cards array TaskCard[]
columns array task status

ConsentTray

Doors: wide, compact.

States: empty, pending, urgent.

Events: consent.open(subject).

Prop Type Notes
requests array [{kind: plan|tension|commitment|charter, subject, revision, deadline}]

Deck

Doors: wide.

States: default, collapsed.

Events: deck.select(id).

Prop Type Notes
sections array [{id,label,icon,count,tone}]
selected id id

EntryComposer

Doors: wide, compact.

States: empty, typing, attached, submitting.

Events: coalition.create(goal, pack?).

Prop Type Notes
draft string Initial editable goal text; omitted for an empty composer.
attachments array [ref] → vault
goal enum text|voice
packs array [pack id]

InviteCard

Doors: wide, compact, message.

States: active, used, expired, revoked.

Events: invite.copy, invite.revoke.

Prop Type Notes
channels string link|QR|WhatsApp|card URL
expires datetime ISO
invitation object single-use, bound to participant + card
role string string

JoinScreen

Doors: wide, compact.

States: invited, accepting, joined, refused.

Events: charter.accept → owner-signed decide, observe.

Prop Type Notes
charter object {summary, rules[], revision}
inviter id participant
subject subject {kind: charter, id, revision}: the charter revision being accepted

LensCard

Doors: lens.

States: shown, acknowledged.

Events: gesture(name).

Prop Type Notes
body string ≤1 line
eyebrow string string
gestures number ≤2
title string ≥22 px

MessageDoor

Doors: message.

States: sent, answered, expired.

Events: reply(n), reply(?).

Prop Type Notes
title string Coalition label shown beside the channel account name.
choices array [{n, label, value}]
receipt string url
text string ≤1024 chars

NotificationCenter

Doors: wide, compact.

States: empty, unread.

Events: notification.open(ref), notifications.read.

Prop Type Notes
items array [{kind, text, time, ref, read}]

Doors: wide, compact.

States: default, sticky.

Prop Type Notes
actions number ≤2
crumbs array []
eyebrow string string
tabs array ?
title string string

PhoneShell

Doors: compact.

States: default.

Events: tab.select.

Prop Type Notes
header child TopBar
stack children cards
tabs string Now|Plans|People|Agent

RoomShell

Doors: wide.

States: live, reconnecting, read-only (watcher).

Events: deck.select(id), invite.open, search.open.

Prop Type Notes
canvas child A2UI root
coalition id ref
deck array [{id,label,count}]
dock child AgentDock
presence array [participant]
stage binding path
tray child ConsentTray

SplitView

Doors: wide.

States: default, compact-push.

Events: split.select(id).

Prop Type Notes
detail children components
items array []
selected id id

StageBar

Doors: wide, compact, lens.

States: done, now, next.

Prop Type Notes
current binding path
stages string Germinate|Gather|Negotiate|Decide|Act|Live|Dissolve

TopBar

Doors: wide, compact.

States: default.

Prop Type Notes
actions number ≤3
presence array [participant]
stage binding path
title string string

VoiceTurn

Doors: voice.

States: speaking, listening, confirming, timeout.

Events: voice.choice(value), voice.more.

Prop Type Notes
choices array [{words[], value}]
confirm boolean required for consent
earcon string name
script string ≤3 sentences

WiringDrawer

Doors: wide.

States: closed, inspecting, verified, broken.

Events: wiring.verify, wiring.copy.

Prop Type Notes
event_ref id id
projection object viewer's own