Zum Hauptinhalt springen
Sachbearbeiter-Cockpit

Sachbearbeiter-Cockpit (@gentics/cockpit)

React-Library zum Bauen von Sachbearbeiter-Cockpits auf ActaNova. Sie bündelt alles, was jedes Sachbearbeiter-Cockpit sonst neu bauen müsste — Anmeldung, Mandanten, API-Zugriff, Caching und die wiederverwendbaren UI-Widgets — sodass ein konkretes Sachbearbeiter-Cockpit nur noch seine Apps zusammensteckt.

Ein Sachbearbeiter-Cockpit besteht damit aus zwei Teilen: dem Rahmen aus der Library (BaseCockpit) und den Apps, die du selbst schreibst. Der Rahmen kümmert sich um Login, App-Übersicht, Routing und Mandantenwahl; deine App bekommt einen fertigen Query- und Tenant-Kontext und kann direkt Daten laden und anzeigen.

Die zwei Einstiegspunkte

ImportInhalt
@gentics/cockpit/coreNicht-UI: BaseCockpit, Auth, Services, Store-Hooks, Tenant-Context, Typen
@gentics/cockpit/widgetsUI-Widgets: List, Field, Badge, Assignment, Submitter, FileManager, ToastHost + Helfer
@gentics/cockpit/style.cssDas gebaute Tailwind-CSS für beide Entrypoints

Mehr gibt es nicht: ein Import vom Paket-Root (@gentics/cockpit) existiert nicht, die exports in der package.json geben genau diese drei Pfade frei.

Wie die Teile zusammenhängen

┌───────────────────────────────┐
authConfig.json ────► │ BaseCockpit │
(OIDC-Settings) │ Config-Gate → Login (OIDC) │
│ AuthProvider │
│ QueryClientProvider │
│ Router (hash/browser/none) │
│ Header + App-Übersicht │
└───────────────┬───────────────┘
│ eine App gewählt (/:appId/*)

┌───────────────────────────────┐
│ TenantProvider (pro App) │
│ ──► deine App-Komponente │
│ mit eigenen <Routes> │
└───────────────┬───────────────┘

Widgets ◄──────────────┴──────────────► Store-Hooks
(List, Field, Badge, …) (useFiles, useFile, …)

Services (BaseService)

/api/cockpit/an/Tenants/Items/…

Von unten nach oben:

  1. Services (FilesService, DocumentsService, …) sprechen die ActaNova-API. Sie erben von BaseService, das Base-URL, Bearer-Token und Token-Erneuerung erledigt — reine Klassen, keine Hooks.
  2. Stores (useFiles, useFile, useSaveFile, …) wickeln die Services in React-Query-Hooks: Cache, Deduplizierung, Lade-/Fehlerzustände und Invalidierung nach dem Speichern.
  3. Widgets bekommen ihre Daten nicht selbst, sondern als Datenquelle hereingereicht — eine Funktion, die ein Query-Ergebnis liefert. Dadurch funktioniert dasselbe Widget mit echten Hooks, mit Mock-Daten oder mit einem statischen Objekt.
  4. BaseCockpit ist der Rahmen darüber und stellt alles bereit, was die Schichten 1–3 zur Laufzeit brauchen.

Was die Library mitbringt — und was dein Projekt liefert

Die Library bringt mitDein Projekt liefert
OIDC-Anmeldung inkl. Silent-Renew, Login-Screen, Profil-MenüauthConfig.json mit den OIDC-Settings
App-Übersicht, Rechtefilter über Keycloak-RollenDie Apps selbst (CockpitApp[]) und deren UI
Router, Mandantenwahl, React-Query-ClientPeer-Dependencies (React 19, React Query 5, React Router 7)
Services + Hooks für Files, Dokumente, Gruppen, User, Personen, Annotations, AktivitätenEin Proxy, der /api/cockpit/an auf /api/main/v1 umschreibt
Widgets samt kompiliertem Stylesheet für deren KlassenEin eigenes Tailwind-Setup für deine Klassen — plus CSS-Reset, den die Lib bewusst nicht mitliefert

Versionierung und Bezug

Die Version der Library matcht die ActaNova-Version, für die sie gebaut ist: der Major kommt von ActaNova, Minor/Patch zählen die Releases der Library innerhalb dieser ActaNova-Version. Ein neues ActaNova-Major bedeutet eine neue Major-Linie der Library.

Das Paket liegt nicht auf npmjs.com, sondern in der Gentics-Registry (https://repo.gentics.com/repository/npm-products/, Zugriff restricted) — siehe Installation.

Wo weiterlesen

Du willst …Seite
das Paket installieren und einbindenInstallation
ein Sachbearbeiter-Cockpit von Null aufsetzenSachbearbeiter-Cockpit aufsetzen
die erste App mit Liste + Detailansicht bauenErste App
ein bestimmtes Feature nutzen (Routing, Datenquellen, Mandanten, Rechte, Stores, Mock)Anleitungen
das Sachbearbeiter-Cockpit als Container ausliefernDeployment
die Props eines Widgets nachsehenWidgets
wissen, was getByPath & Co. tunHelfer

Widget-Übersicht

WidgetZweckLive-Vorschau
BadgeFarbiger Status-Badge (Literal- oder Pfad-Modus)
FieldAnzeige-/Eingabefeld, liest Werte per JSON-Pfad
ListSortier- und filterbare Tabelle/Karten-Liste
AssignmentZuweisung von Gruppen/Benutzern✅ mit Demo-Store
SubmitterAnzeige-Karte für die Daten eines Einbringers✅ 🚧 experimentell
FileManagerDokumente anzeigen und hochladen✅ mit Demo-Store
ToastHostToast-Kanal der Widgets (widgetToast)