Sigta UI · Kit
Kanban
Board
Drag a card between columns. On drop the board dispatches
sigta-kanban-move with
{ card, from, to, position } so Livewire can persist the move.
To do
3
Marginalia v3 — margin search
Plumb — one-number widget
Almanac — changelog polish
Doing
2
Halyard OS — routing console
Ledger rebuild — budget engine
Done
1
Marginalia — brand refresh
Source
<p class="mb-5 max-w-[60ch] text-graphite">
Drag a card between columns. On drop the board dispatches
<code class="font-mono text-[0.85em]">sigta-kanban-move</code> with
<code class="font-mono text-[0.85em]">{ card, from, to, position }</code> so Livewire can persist the move.
</p>
<sigta:kanban>
<sigta:kanban.column id="todo" label="To do">
<sigta:kanban.card id="marginalia">Marginalia v3 — margin search</sigta:kanban.card>
<sigta:kanban.card id="plumb">Plumb — one-number widget</sigta:kanban.card>
<sigta:kanban.card id="almanac">Almanac — changelog polish</sigta:kanban.card>
</sigta:kanban.column>
<sigta:kanban.column id="doing" label="Doing">
<sigta:kanban.card id="halyard">Halyard OS — routing console</sigta:kanban.card>
<sigta:kanban.card id="ledger">Ledger rebuild — budget engine</sigta:kanban.card>
</sigta:kanban.column>
<sigta:kanban.column id="done" label="Done">
<sigta:kanban.card id="brand">Marginalia — brand refresh</sigta:kanban.card>
</sigta:kanban.column>
</sigta:kanban>
Empty column
Backlog
1
Draft the Q3 spotlight
In review
0
Source
<sigta:kanban>
<sigta:kanban.column id="backlog" label="Backlog">
<sigta:kanban.card id="idea">Draft the Q3 spotlight</sigta:kanban.card>
</sigta:kanban.column>
<sigta:kanban.column id="review" label="In review" />
</sigta:kanban>
Column header actions (menu beside the count)
Pass an actions slot for a column menu next to the count.
The body's accessible name comes from the string label
(or aria), so slotted markup never leaks into it.
Sprint
1
Ship the actions slot
Source
<p class="mb-5 max-w-[60ch] text-graphite">
Pass an <code class="font-mono text-[0.85em]">actions</code> slot for a column menu next to the count.
The body's accessible name comes from the string <code class="font-mono text-[0.85em]">label</code>
(or <code class="font-mono text-[0.85em]">aria</code>), so slotted markup never leaks into it.
</p>
<sigta:kanban>
<sigta:kanban.column id="sprint" label="Sprint">
<x-slot:actions>
<sigta:dropdown position="bottom-end">
<x-slot:trigger>
<sigta:button variant="ghost" size="sm" aria-label="Column menu">
<sigta:icon name="ellipsis-vertical" size="sm" />
</sigta:button>
</x-slot:trigger>
<sigta:dropdown.item icon="pencil">Rename column</sigta:dropdown.item>
<sigta:dropdown.item icon="trash-2" variant="danger">Delete column</sigta:dropdown.item>
</sigta:dropdown>
</x-slot:actions>
<sigta:kanban.card id="s1">Ship the actions slot</sigta:kanban.card>
</sigta:kanban.column>
</sigta:kanban>
Editable column name (heading slot)
Pass a heading slot to replace the visible label with your
own control. Here the name is plain text at rest and only turns into an input on click; the count and
actions stay put, and the body's accessible name still
comes from label (or aria).
1
Click the name to rename it
Source
<p class="mb-5 max-w-[60ch] text-graphite">
Pass a <code class="font-mono text-[0.85em]">heading</code> slot to replace the visible label with your
own control. Here the name is plain text at rest and only turns into an input on click; the count and
<code class="font-mono text-[0.85em]">actions</code> stay put, and the body's accessible name still
comes from <code class="font-mono text-[0.85em]">label</code> (or <code class="font-mono text-[0.85em]">aria</code>).
</p>
<sigta:kanban>
<sigta:kanban.column id="rename" label="Backlog">
<x-slot:heading>
<div x-data="{ editing: false }" class="w-full">
<button
type="button"
x-show="! editing"
x-on:click="editing = true; $nextTick(() => $refs.rename.focus())"
class="w-full truncate text-left font-mono text-[0.7rem] uppercase tracking-[0.14em] text-graphite hover:text-ink"
>Backlog</button>
<input
x-ref="rename"
x-show="editing"
x-cloak
x-on:blur="editing = false"
x-on:keydown.enter="editing = false"
x-on:keydown.escape="editing = false"
type="text"
value="Backlog"
aria-label="Rename column"
class="w-full min-w-0 rounded-base border border-ink bg-surface-raised px-2 py-1 font-mono text-[0.7rem] uppercase tracking-[0.14em] text-ink outline-none"
/>
</div>
</x-slot:heading>
<sigta:kanban.card id="rename-card">Click the name to rename it</sigta:kanban.card>
</sigta:kanban.column>
</sigta:kanban>