Skip to content
shadcn.io

shadcn.io is not affiliated with official shadcn/ui

Status Filter Team Block for React

A live-chat widget's eight people in rows under a ruled pill filter (All, Online, Away, Busy) with counts, each row showing a presence dot, what they are doing and when they were last seen.

Framework
UI library

Preview

Preview width

Installation

Part of Pro
Pro unlocks the code and one-line install of every Pro button and text effect, plus the MCP for your AI editor.
Have Pro already? Sign in to open it.Opens here as soon as you're Pro.

Overview

A team availability list for React with Base UI, for Skerrow, a live-chat widget. A compact header sits over a ruled band holding a row of pills, All, Online, Away and Busy, each with its count, and a live "Showing 4 of 8 people" line at the end. Under it, eight people fill rows rail to rail: an initials avatar with a presence dot, a name and a role, what they are doing at the moment, and their status with when they were last seen. Picking a status narrows the rows, and the list keeps its full height, so nothing below it moves. The last-seen words ("22 minutes ago") are read from your clock after the page loads. On a phone the pills scroll sideways and each row is a name with its activity and status under it. It's built from Toggle Group, Status, Relative Time Text, Avatar and Guides, with your theme's tokens for every colour. For a support page, an internal tool or a status page for a team to reach. The people are invented.

FAQ

How do I change the people and their statuses?

Edit PEOPLE at the top of the file: each person is a name, a role, a presence ("online", "away" or "busy"), an activity and ago, how many minutes ago they were last seen (0 means active now). The counts on the pills and the "Showing 4 of 8" line come from the same list, so nothing else needs to change. Connect it to your own presence data by replacing PEOPLE with what your API returns.

Why are the dots green, amber and red when the rest is greyscale?

Presence is the one place colour carries meaning, so the dot uses the Status tokens: online, away and busy. The same word is written beside it in the row, so nobody relies on colour alone. Everything else, the pills included, stays in foreground weights, and the pressed pill is solid foreground so the page's one primary colour stays on its main action.

Is the last-seen time real?

It's counted from the moment the page loads: "22 minutes ago" keeps counting up on its own as the page stays open. Nothing about the current time is drawn into the HTML, so the server and the browser agree on what they first render. Replace ago with a real timestamp from your API when you wire it up.

How does the filter work with a keyboard?

The pills are a labelled group of toggle buttons. Tab enters the group and the arrow keys move between the pills. Space or Enter picks one, and picking the pressed pill again changes nothing, so one is always on. Each change is read out once by the polite line beside the pills ("Showing 2 of 8 people").

How does it fit on a phone?

The pills sit in a sideways scroller that runs rail to rail, and each row folds into three short lines: the name, what they are doing, and their status with when they were last seen. The role is hidden on phones. The list holds its height whichever pill is on.

Why doesn't the page move when I filter?

The list area holds the height of all eight rows, so a short result leaves empty room under it instead of pulling the next section up. The closing space is part of the block; it draws no rule of its own.

  • Pro

    Hour Scrubber Team

    Hours and places

    A framed slider over the 24 hours of the day in UTC, above nine people in rows that show who is working at that hour with their local time, a day strip and a live count.

  • Pro

    Status Board Team

    Hours and places

    A three-column board of Online, In focus and Away for a project tracker's team, each person with their activity and local time, and a Set my status group that moves one 'You' avatar between the columns.

  • Pro

    Time Zone Axis Team

    Hours and places

    Ten people of a remote-first payroll company laid along an axis of UTC offsets, each office with its avatars, a live local time and a shaded band where it is working time, over six cells that list the same zones.

  • Pro

    Compact List Team

    Lists and directories

    The quiet roster of a fleet-telematics company: one dense line per person at forty pixels, rail to rail, twelve shown and the other twelve opened in place from a Show all button.

  • Pro

    Department Tabs Team

    Tabs and accordions

    Thirty people of a grocery-delivery company by department: underline tabs with headcounts, then each panel opens with its lead on a tinted band and the team as two columns of hairline rows.

  • Pro

    A presence callout for a team workspace: a live "4 of 5 teammates active" count over a band of five cells, each an initials avatar with an active or idle dot, a name and the document they are in.