Connection lost. Reconnecting… attempt 1 of 8
Paused. Your work is held on the server.
Could not reconnect.
This session has expired on the server.
DR.Simple_UI
Showing main. This can be ahead of the version your app has installed — check what a class says it needs before copying it. Releases (opens in a new tab)

Toolbar

tier 2 — classes

The filter bar that sits above a table or list. .toolbar is space-between and wraps; .toolbar-filters groups the controls on the left, and anything after it goes right.

Filters and a count

.toolbar-input narrows a .form-input to a sensible 160px so it does not eat the row. .toolbar-count is the muted result count.

18 of 128
<div class="toolbar">
    <div class="toolbar-filters">
        <input class="form-input toolbar-input" type="search" placeholder="Search orders…" />
        <select class="form-input toolbar-input" aria-label="Filter by assignment group">
            <option>All states</option>
            <option>Pending</option>
            <option>Decided</option>
        </select>
        <label class="form-check"><input type="checkbox" /> Only mine</label>
    </div>
    <span class="toolbar-count">18 of 128</span>
</div>

Filters and actions

Put the buttons on the right; the primary action goes last.

6 selected
<div class="toolbar">
    <div class="toolbar-filters">
        <input class="form-input toolbar-input" type="search" placeholder="Filter…" />
    </div>
    <div class="toolbar-filters">
        <span class="toolbar-count">6 selected</span>
        <button class="btn btn-sm btn-icon" aria-label="Refresh" data-tip="Reload from the server."><i class="ri-refresh-line"></i></button>
        <button class="btn btn-sm">Export</button>
        <button class="btn btn-sm btn-primary"><i class="ri-add-line"></i> New</button>
    </div>
</div>

With a heading above it

The full top of a list page.

Approval queue

Items the AI proposed and is waiting on a human decision for.

3 pending
OrderReservationAge
ORD-4209Reroute to EU-West4 min
ORD-4204Raise to P222 min
<div>
    <h1>Approval queue</h1>
    <p class="lede">Items the AI proposed and is waiting on a human decision for.</p>
    <div class="toolbar">
        <div class="toolbar-filters">
            <input class="form-input toolbar-input" type="search" placeholder="Search…" />
            <label class="form-check"><input type="checkbox" checked /> Hide claimed</label>
        </div>
        <span class="toolbar-count">3 pending</span>
    </div>
    <div class="card">
        <table class="table">
            <thead><tr><th>Order</th><th>Reservation</th><th>Age</th></tr></thead>
            <tbody>
                <tr><td>ORD-4209</td><td>Reroute to EU-West</td><td class="col-muted">4 min</td></tr>
                <tr><td>ORD-4204</td><td>Raise to P2</td><td class="col-muted">22 min</td></tr>
            </tbody>
        </table>
    </div>
</div>

With a selection

Live — open the overflow menu. The same bar in its selected state: the count and the two ways out of it on the leading side, the actions that apply to the selection on the trailing side. Say how many are selected in text, and offer “select all 128” separately — selecting a page is not selecting a result set.

The overflow is a .menu-anchor with data-menu-toggle. Anything destructive goes in there behind .menu-item--danger, and names the count it will act on.

<div class="toolbar">
    <div class="toolbar-filters">
        <label class="form-check">
            <input type="checkbox" checked /> <span>4 selected</span>
        </label>
        <button class="btn btn-sm btn-ghost" type="button">Select all 128</button>
        <button class="btn btn-sm btn-ghost" type="button">Clear</button>
    </div>
    <div class="dr-row dr-gap-2">
        <button class="btn btn-sm btn-go" type="button"><i class="ri-send-plane-line"></i> Dispatch</button>
        <button class="btn btn-sm" type="button"><i class="ri-user-shared-line"></i> Reassign</button>
        <div class="menu-anchor">
            <button class="btn btn-sm btn-icon" type="button" data-menu-toggle
                    aria-label="More actions for the selected orders" aria-expanded="false">
                <i class="ri-more-2-line"></i>
            </button>
            <div class="menu" hidden>
                <button class="menu-item" type="button"><i class="ri-download-2-line"></i> Export as CSV</button>
                <button class="menu-item" type="button"><i class="ri-timer-line"></i> Hold for stock</button>
                <hr class="menu-sep" />
                <button class="menu-item menu-item--danger" type="button">
                    <i class="ri-close-circle-line"></i> Cancel 4 orders
                </button>
            </div>
        </div>
    </div>
</div>