feat(sprint-5): Phase 6 — Staff management UI (list, invite, permissions, revoke)

- /settings/staff: staff account table with role badges + permission chips
- Invite sheet: email + role template + 8 granular permission checkboxes
- Edit permissions dialog with optimistic update
- Revoke access with AlertDialog confirmation
- React Query hooks wired (useStaffListQuery, mutations)
- Full i18n (de/en), mock fallback, loading skeletons
- Sidebar nav updated: Personal → /settings/staff with UserCog icon
- Added @radix-ui/react-checkbox + Checkbox UI component
This commit is contained in:
Patrick Plate
2026-06-12 20:32:54 +02:00
parent ed1efccc90
commit 2cc8c89944
9 changed files with 941 additions and 3 deletions
+39
View File
@@ -293,6 +293,45 @@
"footerText": "Cannabis-Anbauverein — Sichere Mitgliederverwaltung",
"adminLogin": "Zum Admin-Login"
},
"staff": {
"title": "Personal",
"invite": "Neues Mitglied einladen",
"name": "Name",
"email": "E-Mail",
"role": "Rolle",
"permissions": "Berechtigungen",
"status": "Status",
"actions": "Aktionen",
"active": "Aktiv",
"revoked": "Widerrufen",
"invited": "Eingeladen",
"editPermissions": "Berechtigungen bearbeiten",
"revokeAccess": "Zugang widerrufen",
"revokeConfirm": "Zugang für {name} wirklich widerrufen? Der Mitarbeiter kann sich nicht mehr anmelden.",
"revokeSuccess": "Zugang widerrufen.",
"inviteTitle": "Mitarbeiter einladen",
"inviteDesc": "Neues Teammitglied per E-Mail einladen und Berechtigungen zuweisen.",
"inviteEmail": "E-Mail-Adresse",
"inviteRole": "Rollenvorlage",
"roleAusgabe": "Ausgabe",
"roleLager": "Lager",
"roleVorstand": "Vorstand",
"roleCustom": "Benutzerdefiniert",
"inviteSend": "Einladung senden",
"inviteSuccess": "Einladung an {email} gesendet.",
"permRecordDistribution": "Ausgabe erfassen",
"permViewMemberList": "Mitgliederliste einsehen",
"permViewMemberQuota": "Kontingent einsehen",
"permAddMember": "Mitglieder anlegen",
"permViewStock": "Lager einsehen",
"permRecordStockIn": "Wareneingang",
"permViewComplianceReport": "Berichte einsehen",
"permManageGrowCalendar": "Anbaukalender verwalten",
"savePermissions": "Speichern",
"permissionsSaved": "Berechtigungen aktualisiert.",
"cancel": "Abbrechen",
"noStaff": "Noch keine Mitarbeiter vorhanden."
},
"api": {
"loading": "Wird geladen...",
"error": "Fehler beim Laden der Daten.",