UserTable
ImplementedTeam management table — member (name + email stacked), role, status pill, venue count, last sign-in. FR/EN via the `labels` prop (the source module also exports a `USER_TABLE_LABELS_FR` bundle — note: NOT re-exported from the barrel yet). Composes the DataTable organism with a UserRow column config (two-line member cell + role/status formatters — Wave-3 L8c); rows are not interactive — role editing lives in the consumer. Exported from the barrel.
components/organisms/usertable/UserTable.tsxTableau des membres de l'équipe (rôle + statut + lieux accessibles + dernière connexion). FR-CA : « Membres de l'équipe · Membre · Rôle · Statut · Lieux · Dernière connexion · Propriétaire · Administrateur · Producteur · Scanner · Soutien · Invité · Actif · Invité · Suspendu » — jeu EN complet via les défauts anglais de `labels`.
UserTable
Organism — Admin family (Family 8)
Tableau de gestion d'équipe à 5 colonnes fixes (membre — nom + courriel empilés, rôle, statut, lieux, dernière connexion), composé sur l'organisme DataTable. Légende visible au-dessus du tableau. Libellés localisés via la prop `labels` — le bundle `USER_TABLE_LABELS_FR` (module source, non ré-exporté du barrel) fournit les chaînes FR-CA maison. Les statuts Actif/Invité/Suspendu sont rendus en pilule sémantique accessible (paires tint/fg ADR-027, gabarits aria « Statut : {label} » / « Rôle : {label} »). Les lignes ne sont pas interactives.
| Member | Role | Status | Venues | Last sign-in |
|---|---|---|---|---|
Guillaume Bleau | Owner | Active | 1 | 2026-08-04 |
Marie Tremblay | Producer | Active | 1 | 2026-08-03 |
Jean-Pierre Gauthier | Scanner | Invited | 1 | — |
Sophie Lavoie | Administrator | Active | 1 | 2026-08-02 |
Mehdi Boudjellal | Support | Suspended | 0 | 2026-07-12 |
This component supports light and dark mode.
UserTable (EN)
Organism — Admin family (Family 8)
Variante EN — sans `labels`, les défauts anglais maison s'appliquent (Team members, Member, Role, Status, Venues, Last sign-in, Owner, Producer, Scanner, Support, Guest, Active, Invited, Suspended).
| Member | Role | Status | Venues | Last sign-in |
|---|---|---|---|---|
Guillaume Bleau | Owner | Active | 1 | 2026-08-04 |
Marie Tremblay | Producer | Active | 1 | 2026-08-03 |
Jean-Pierre Gauthier | Scanner | Invited | 1 | — |
Props
rows*UserRow[]Lignes d'utilisateur (id, fullName, email, role, status, lastSignIn?, venueCount).
labelsUserTableLabelsEnglish house defaultsToutes les chaînes visibles : légende visible, en-têtes de colonnes, libellés rôle/statut, gabarits aria, message d'état vide. Valeurs FR-CA via USER_TABLE_LABELS_FR (module source, hors barrel).
ariaLabelstringresolved captionaria-label de la région défilable ; par défaut la légende résolue.
classNamestringClasses additionnelles sur la racine DataTable.
Props
UserTable
rowsUserRow[]—Row data (id, fullName, email, role, status, lastSignIn?, venueCount).
labelsUserTableLabelsEnglish house defaultsEvery user-visible string: caption, column headers, role/status labels, aria templates, empty message. FR values per the source JSDoc (a USER_TABLE_LABELS_FR bundle exists in the source module but is not barrel-exported).
ariaLabelstringresolved captionaria-label for the scrollable region wrapper; defaults to the resolved caption. Pass when the caption is purely decorative.
classNamestring—Additional CSS classes appended to the DataTable root.
<UserTable />Accessibility
ARIA
2 rulesUsage
Import
import { UserTable } from "@epasslive/design-system"Example 1
<UserTable rows={teamRows} labels={{ caption: "Membres de l'équipe", roleHeader: "Rôle", statusHeader: "Statut" }} />Anti-patterns
— Do not fetch data directly in organisms
— Avoid tight coupling to specific data sources