Columns of cards by stage, from a list: a sales pipeline, a task board, hiring stages, support tickets. Each column shows its count and an optional total; move=true lets people drag a card to another stage.
No problems. The parser accepted every line.
"text"textThe title above the board, e.g. Sales pipeline.optionalitemsexpressionThe list of records, e.g. items=deals. At most 500.requiredstagenameField with each record's stage, e.g. stage=status.requiredstagesstringThe columns in order, separated by commas, e.g. stages="Lead,Qualified,Proposal,Won". At most 12. Default: the stages in the records, in the order they first appear.—titlenameField with each card's title, e.g. title=name.titledetailnameField with a quieter line under the title, e.g. detail=company.—valuenameField with a short value on the card's right, e.g. value=amount.—formattext · number · moneyHow value= and sum= read: text as is, number (1,200) or money ($1,200, US dollars).textsumnameField to total in each column's header, e.g. sum=amount, written with format=.—tonenameField that colors each card's edge: a value good, warn, bad, accent or muted uses that tone; other values each get their own color.—keynameThe field that identifies each record, e.g. key=id. Needed for bind=.idbindstateState that holds the selected card's key. Pressing a card sets it.—movebooleantrue lets people move a card to another stage: drag it to another column, or focus it and press Left or Right. It changes the record's stage field, so items= must be a list in state (or worked out from one).falseonactionActions to run after a card is pressed or moved, with bind= already set, e.g. emit:changed. Separate several with ;—ifconditionShow only when this expression is true, e.g. if=done or if={count>0}. Every element takes it.—tipstringA short explanation shown on hover, keyboard focus or a tap, e.g. tip="Orders not yet shipped": for a term or a number some people won't know, instead of more words on screen. It makes the element a Tab stop if it isn't one. Every element takes it.—