Marker

The rows in a transcript that are not messages: status, system notes, tool activity and date breaks.

Explored 4 files
Today
Compacting conversation

Installation

uvx django_shadcn@latest add marker

Usage

<c-marker>
    <c-marker.icon>
        <c-icon name="check" />
    </c-marker.icon>
    <c-marker.content>Explored 4 files</c-marker.content>
</c-marker>

The icon slot is decorative and hidden from assistive technology, so the content has to carry the whole meaning on its own. Nothing here is stateful.

Variants

Default, an inline row
Border, with a rule underneath
Separator, centred between two rules
<c-marker variant="border">...</c-marker>
<c-marker variant="separator">
    <c-marker.content>Today</c-marker.content>
</c-marker>

separator draws its rules with before and after, so an icon inside it lands between the label and the left rule rather than at the start of the row. Date breaks usually read better without one.

Examples

Announcing a change

A marker that reports work in progress should be announced, not just drawn. role="status" reaches the root through the attributes, and the shimmer marks the text as live.

Thinking
<c-marker role="status">
    <c-marker.icon>
        <c-icon name="loader-circle" class="animate-spin" />
    </c-marker.icon>
    <c-marker.content class="shimmer">Thinking</c-marker.content>
</c-marker>

shimmer is a utility in input.css, not part of the component. It works on any text element and turns itself off when the reader has asked for reduced motion.

Linking out

A marker can point somewhere. Put the link in the content rather than on the root, so only the words are clickable and the row keeps its layout.

<c-marker>
    <c-marker.icon>
        <c-icon name="check" />
    </c-marker.icon>
    <c-marker.content>
        <a href="/pull/482/">View the pull request</a>
    </c-marker.content>
</c-marker>

In a transcript

Between messages, a marker is the line that explains a gap.

Give me a moment, I am reading the registry.
Explored 4 files
Found it. The entry was never added.