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.
Installation
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").
Related
- Pro
Hour Scrubber Team
Hours and placesA 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 placesA 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 placesTen 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 directoriesThe 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 accordionsThirty 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
Team Presence Live Banner
Live statusA 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.