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>