@bimetal/react
v0.35.0
Published
Generic React bindings for the BIMETAL component family: the useController primitive + one hook per component controller. No calendar specifics — the calendar React adapter lives in @bimetal/calendar-react-components.
Maintainers
Readme
@bimetal/react
Die generische React-Bindung für die BIMETAL-Komponenten-Familie. Dieses Paket bindet einen
kanonischen Controller (aus einem der @bimetal/*-headless-Pakete) via dem React-eigenen Primitiv
useSyncExternalStore in React ein — es enthält keine eigene Interaktionslogik und keine
Kalender-Spezifika. Jedes if lebt im Controller; React rendert nur den identitätsstabilen Snapshot
und übersetzt DOM-Events in Intent-Aufrufe.
Die fertigen Komponenten (<Calendar>, <Kanban>, <Table>, <Gantt>, <Whiteboard>,
<Tree>, <List>, <Picker>, <FormBuilder>/<FormRenderer>) liegen in den
@bimetal/<familie>-react-components-Paketen. Dieses Paket liefert die Bausteine darunter (den
generischen Hook, per-Komponenten-Hooks, die Fokus-Trap, Test-Utilities) für eigene React-UIs.
Installation
npm install @bimetal/react @bimetal/<familie>-headless @bimetal/<familie>-data
# z. B. @bimetal/react @bimetal/kanban-headless @bimetal/kanban-dataWas das Paket liefert
| Export | Zweck |
|--------|-------|
| useController(factory, options) | Das generische Primitiv: erzeugt einen Controller (stabil über die store-Identität) und abonniert seinen Snapshot via useSyncExternalStore. Gibt [snapshot, controller] zurück. |
| useKanbanController, useTableController, useGanttController, useWhiteboardController, useTreeController, useListController, usePickerController, useFormBuilderController, useFormRendererController | Vorkonfigurierte Wrapper um useController je Familie. |
| useFocusTrap(ref, options) | Fokus-Trap-Hook (Dialog-Lifecycle: enter → trap → escape → restore), gewrappt um @bimetal/a11y-dom. |
| renderProbe / probeRender | Test-Utilities für Re-Render-Zählung. |
Die Controller-Factories selbst (createKanbanController, createTableController,
createGanttController, createWhiteboardController, createTreeController, createListController,
createPickerController, createFormBuilderController/createFormRendererController) + ihre Typen
werden aus den jeweiligen @bimetal/<familie>-headless-Paketen re-exportiert.
Der Calendar-Hook (
useCalendarController) liegt aus historischen Gründen direkt in@bimetal/calendar-react-components, nicht hier — Calendar war die Referenz-Komponente vor dieser generischen Bindung. Alle anderen acht Familien laufen über dieses Paket.
Architektur-Hintergrund: doc/architecture/07-framework-adapter.md.
Re-exports
Zur Bequemlichkeit re-exportiert @bimetal/react alles aus @bimetal/temporal, sodass die Zeit-/
Layout-/Recurrence-Typen aus einem einzigen Paket importiert werden können.
