suiss/ui · Block
Users Table
A searchable users table with role filters, row selection, and bulk role and status actions.
Users Table is an open-source block from suiss/ui for React, React Native, SwiftUI and Jetpack Compose. The @esuiss/ui CLI copies its source into your project, so you own the code.
A users table with search, role filters and row selection; selecting rows reveals bulk actions to make editors, activate or suspend. Role and last sign-in columns appear as the screen widens, and the search and Invite button take the full width on mobile. It sits in a Sidebar with admin navigation that opens as a sheet from the trigger on mobile. Use it for any admin list that needs bulk actions.
Installation
CLI
Works in any project with a components.json. See Installation for the one-line registry setup. Or use the suiss/ui CLI:
Manual
- Install the dependencies:
-
Add the pieces it builds on: Avatar, Button, Checkbox, Input Group, Sidebar, Table, Toggle Group.
-
Copy the source into
components/blocks/users-table.tsx:
- Update the import paths to match your project.
Usage
Replace initialUsers with your users, each with a name, email, role, status, last-seen text and avatar hue. Call your API in bulk, which applies a change to every selected user. Search and filtering run in the browser, so move them server-side for large lists, and give Invite a handler.
Notes
Each row has a hidden checkbox labeled with the user's name, so selection works from the keyboard as well as by clicking the row.

A collapsing Header holds a search InputGroup and a ChipGroup that filters by role. Rows show an Avatar, role and a Badge for status. The SelectionList trigger enters select mode, and the SelectionListBar applies bulk actions: make Editor, activate or suspend. An invite Button sits in the header, and the admin TabBar switches sections.
Installation
The CLI also adds what it builds on: Avatar, Badge, Button, Chip, Header, Icon, Input Group, Screen, Selection List, Tab Bar, Text.
Manual
-
Target iOS 17 or later.
-
Add the Swift package to your app:
- Copy the theme files every view uses:
- Copy the source and every file it uses:
- Add the files to your app target.
- Set
minSdkto 24 or higher and add the dependencies:
- Copy the theme files every view uses:
- Copy the source and every file it uses:
- Update the
com.esuiss.uipackage names to match your project.
Usage
Replace INITIAL_USERS and ROLES with your data. Use onInvite, onFilterChange, onBulkUpdate and onNavigate to connect the screen to your API.
