@cratis/components 1.10.1 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +475 -4
- package/dist/cjs/CommandDialog/CommandDialog.js +94 -4
- package/dist/cjs/CommandDialog/CommandDialog.js.map +1 -1
- package/dist/cjs/CommandDialog/CommandStepper.js +63 -3
- package/dist/cjs/CommandDialog/CommandStepper.js.map +1 -1
- package/dist/cjs/CommandDialog/StepperCommandDialog.js +95 -6
- package/dist/cjs/CommandDialog/StepperCommandDialog.js.map +1 -1
- package/dist/cjs/CommandForm/fields/CalendarField.js +14 -1
- package/dist/cjs/CommandForm/fields/CalendarField.js.map +1 -1
- package/dist/cjs/CommandForm/fields/CheckboxField.js +10 -1
- package/dist/cjs/CommandForm/fields/CheckboxField.js.map +1 -1
- package/dist/cjs/CommandForm/fields/ChipsField.js +11 -1
- package/dist/cjs/CommandForm/fields/ChipsField.js.map +1 -1
- package/dist/cjs/CommandForm/fields/ColorPickerField.js +17 -1
- package/dist/cjs/CommandForm/fields/ColorPickerField.js.map +1 -1
- package/dist/cjs/CommandForm/fields/DropdownField.js +16 -1
- package/dist/cjs/CommandForm/fields/DropdownField.js.map +1 -1
- package/dist/cjs/CommandForm/fields/InputTextField.js +41 -1
- package/dist/cjs/CommandForm/fields/InputTextField.js.map +1 -1
- package/dist/cjs/CommandForm/fields/MultiSelectField.js +13 -1
- package/dist/cjs/CommandForm/fields/MultiSelectField.js.map +1 -1
- package/dist/cjs/CommandForm/fields/NumberField.js +11 -1
- package/dist/cjs/CommandForm/fields/NumberField.js.map +1 -1
- package/dist/cjs/CommandForm/fields/RadioButtonField.js +23 -0
- package/dist/cjs/CommandForm/fields/RadioButtonField.js.map +1 -0
- package/dist/cjs/CommandForm/fields/RadioGroupField.js +40 -0
- package/dist/cjs/CommandForm/fields/RadioGroupField.js.map +1 -0
- package/dist/cjs/CommandForm/fields/SliderField.js +10 -1
- package/dist/cjs/CommandForm/fields/SliderField.js.map +1 -1
- package/dist/cjs/CommandForm/fields/TextAreaField.js +12 -1
- package/dist/cjs/CommandForm/fields/TextAreaField.js.map +1 -1
- package/dist/cjs/CommandForm/index.js +4 -0
- package/dist/cjs/CommandForm/index.js.map +1 -1
- package/dist/cjs/Common/CratisComponentsProvider.js +44 -0
- package/dist/cjs/Common/CratisComponentsProvider.js.map +1 -0
- package/dist/cjs/Common/ErrorBoundary.js +32 -0
- package/dist/cjs/Common/ErrorBoundary.js.map +1 -1
- package/dist/cjs/Common/FormElement.css +26 -0
- package/dist/cjs/Common/FormElement.js +14 -1
- package/dist/cjs/Common/FormElement.js.map +1 -1
- package/dist/cjs/Common/Page.js +13 -0
- package/dist/cjs/Common/Page.js.map +1 -1
- package/dist/cjs/Common/Tooltip.css +3 -3
- package/dist/cjs/Common/index.js +4 -0
- package/dist/cjs/Common/index.js.map +1 -1
- package/dist/cjs/DataPage/DataPage.js +113 -8
- package/dist/cjs/DataPage/DataPage.js.map +1 -1
- package/dist/cjs/DataTables/DataTableForObservableQuery.js +65 -6
- package/dist/cjs/DataTables/DataTableForObservableQuery.js.map +1 -1
- package/dist/cjs/DataTables/DataTableForQuery.js +62 -6
- package/dist/cjs/DataTables/DataTableForQuery.js.map +1 -1
- package/dist/cjs/Dialogs/BusyIndicatorDialog.js +47 -0
- package/dist/cjs/Dialogs/BusyIndicatorDialog.js.map +1 -1
- package/dist/cjs/Dialogs/Dialog.js +79 -6
- package/dist/cjs/Dialogs/Dialog.js.map +1 -1
- package/dist/cjs/Dropdown/Dropdown.js +13 -0
- package/dist/cjs/Dropdown/Dropdown.js.map +1 -1
- package/dist/cjs/ObjectContentEditor/ObjectContentEditor.js +37 -21
- package/dist/cjs/ObjectContentEditor/ObjectContentEditor.js.map +1 -1
- package/dist/cjs/ObjectNavigationalBar/ObjectNavigationalBar.css +6 -0
- package/dist/cjs/ObjectNavigationalBar/ObjectNavigationalBar.js +14 -2
- package/dist/cjs/ObjectNavigationalBar/ObjectNavigationalBar.js.map +1 -1
- package/dist/cjs/PivotViewer/PivotViewer.css +131 -134
- package/dist/cjs/PivotViewer/PivotViewer.js +19 -0
- package/dist/cjs/PivotViewer/PivotViewer.js.map +1 -1
- package/dist/cjs/PivotViewer/components/Spinner.css +8 -8
- package/dist/cjs/SchemaEditor/NameCell.js +2 -2
- package/dist/cjs/SchemaEditor/NameCell.js.map +1 -1
- package/dist/cjs/SchemaEditor/SchemaEditor.js +15 -3
- package/dist/cjs/SchemaEditor/SchemaEditor.js.map +1 -1
- package/dist/cjs/SchemaEditor/SchemaEditor.module.css +5 -1
- package/dist/cjs/SchemaEditor/TypeCell.js +3 -3
- package/dist/cjs/SchemaEditor/TypeCell.js.map +1 -1
- package/dist/cjs/TimeMachine/EventsView.css +17 -17
- package/dist/cjs/TimeMachine/EventsView.js +13 -2
- package/dist/cjs/TimeMachine/EventsView.js.map +1 -1
- package/dist/cjs/TimeMachine/Properties.css +57 -0
- package/dist/cjs/TimeMachine/Properties.js +9 -28
- package/dist/cjs/TimeMachine/Properties.js.map +1 -1
- package/dist/cjs/TimeMachine/ReadModelView.js +10 -0
- package/dist/cjs/TimeMachine/ReadModelView.js.map +1 -1
- package/dist/cjs/TimeMachine/TimeMachine.css +38 -18
- package/dist/cjs/Toolbar/Toolbar.css +34 -17
- package/dist/cjs/Toolbar/ToolbarLayout.js +19 -20
- package/dist/cjs/Toolbar/ToolbarLayout.js.map +1 -1
- package/dist/cjs/index.js +4 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/tailwind-utilities.css +444 -7
- package/dist/cjs/tokens.css +83 -0
- package/dist/esm/CommandDialog/CommandDialog.d.ts.map +1 -1
- package/dist/esm/CommandDialog/CommandDialog.js +94 -4
- package/dist/esm/CommandDialog/CommandDialog.js.map +1 -1
- package/dist/esm/CommandDialog/CommandStepper.d.ts.map +1 -1
- package/dist/esm/CommandDialog/CommandStepper.js +63 -3
- package/dist/esm/CommandDialog/CommandStepper.js.map +1 -1
- package/dist/esm/CommandDialog/StepperCommandDialog.d.ts +4 -0
- package/dist/esm/CommandDialog/StepperCommandDialog.d.ts.map +1 -1
- package/dist/esm/CommandDialog/StepperCommandDialog.js +95 -6
- package/dist/esm/CommandDialog/StepperCommandDialog.js.map +1 -1
- package/dist/esm/CommandForm/fields/CalendarField.d.ts +5 -0
- package/dist/esm/CommandForm/fields/CalendarField.d.ts.map +1 -1
- package/dist/esm/CommandForm/fields/CalendarField.js +14 -1
- package/dist/esm/CommandForm/fields/CalendarField.js.map +1 -1
- package/dist/esm/CommandForm/fields/CheckboxField.d.ts +5 -0
- package/dist/esm/CommandForm/fields/CheckboxField.d.ts.map +1 -1
- package/dist/esm/CommandForm/fields/CheckboxField.js +10 -1
- package/dist/esm/CommandForm/fields/CheckboxField.js.map +1 -1
- package/dist/esm/CommandForm/fields/ChipsField.d.ts +5 -0
- package/dist/esm/CommandForm/fields/ChipsField.d.ts.map +1 -1
- package/dist/esm/CommandForm/fields/ChipsField.js +11 -1
- package/dist/esm/CommandForm/fields/ChipsField.js.map +1 -1
- package/dist/esm/CommandForm/fields/ColorPickerField.d.ts +5 -0
- package/dist/esm/CommandForm/fields/ColorPickerField.d.ts.map +1 -1
- package/dist/esm/CommandForm/fields/ColorPickerField.js +17 -1
- package/dist/esm/CommandForm/fields/ColorPickerField.js.map +1 -1
- package/dist/esm/CommandForm/fields/DropdownField.d.ts +5 -0
- package/dist/esm/CommandForm/fields/DropdownField.d.ts.map +1 -1
- package/dist/esm/CommandForm/fields/DropdownField.js +16 -1
- package/dist/esm/CommandForm/fields/DropdownField.js.map +1 -1
- package/dist/esm/CommandForm/fields/InputTextField.d.ts +5 -0
- package/dist/esm/CommandForm/fields/InputTextField.d.ts.map +1 -1
- package/dist/esm/CommandForm/fields/InputTextField.js +41 -1
- package/dist/esm/CommandForm/fields/InputTextField.js.map +1 -1
- package/dist/esm/CommandForm/fields/MultiSelectField.d.ts +5 -0
- package/dist/esm/CommandForm/fields/MultiSelectField.d.ts.map +1 -1
- package/dist/esm/CommandForm/fields/MultiSelectField.js +13 -1
- package/dist/esm/CommandForm/fields/MultiSelectField.js.map +1 -1
- package/dist/esm/CommandForm/fields/NumberField.d.ts +5 -0
- package/dist/esm/CommandForm/fields/NumberField.d.ts.map +1 -1
- package/dist/esm/CommandForm/fields/NumberField.js +11 -1
- package/dist/esm/CommandForm/fields/NumberField.js.map +1 -1
- package/dist/esm/CommandForm/fields/RadioButtonField.d.ts +17 -0
- package/dist/esm/CommandForm/fields/RadioButtonField.d.ts.map +1 -0
- package/dist/esm/CommandForm/fields/RadioButtonField.js +21 -0
- package/dist/esm/CommandForm/fields/RadioButtonField.js.map +1 -0
- package/dist/esm/CommandForm/fields/RadioGroupField.d.ts +19 -0
- package/dist/esm/CommandForm/fields/RadioGroupField.d.ts.map +1 -0
- package/dist/esm/CommandForm/fields/RadioGroupField.js +38 -0
- package/dist/esm/CommandForm/fields/RadioGroupField.js.map +1 -0
- package/dist/esm/CommandForm/fields/SliderField.d.ts +5 -0
- package/dist/esm/CommandForm/fields/SliderField.d.ts.map +1 -1
- package/dist/esm/CommandForm/fields/SliderField.js +10 -1
- package/dist/esm/CommandForm/fields/SliderField.js.map +1 -1
- package/dist/esm/CommandForm/fields/TextAreaField.d.ts +5 -0
- package/dist/esm/CommandForm/fields/TextAreaField.d.ts.map +1 -1
- package/dist/esm/CommandForm/fields/TextAreaField.js +12 -1
- package/dist/esm/CommandForm/fields/TextAreaField.js.map +1 -1
- package/dist/esm/CommandForm/fields/index.d.ts +2 -0
- package/dist/esm/CommandForm/fields/index.d.ts.map +1 -1
- package/dist/esm/CommandForm/fields/index.js +2 -0
- package/dist/esm/CommandForm/fields/index.js.map +1 -1
- package/dist/esm/CommandForm/index.js +2 -0
- package/dist/esm/CommandForm/index.js.map +1 -1
- package/dist/esm/Common/CratisComponentsProvider.d.ts +11 -0
- package/dist/esm/Common/CratisComponentsProvider.d.ts.map +1 -0
- package/dist/esm/Common/CratisComponentsProvider.js +40 -0
- package/dist/esm/Common/CratisComponentsProvider.js.map +1 -0
- package/dist/esm/Common/ErrorBoundary.d.ts.map +1 -1
- package/dist/esm/Common/ErrorBoundary.js +32 -0
- package/dist/esm/Common/ErrorBoundary.js.map +1 -1
- package/dist/esm/Common/FormElement.css +26 -0
- package/dist/esm/Common/FormElement.d.ts +1 -0
- package/dist/esm/Common/FormElement.d.ts.map +1 -1
- package/dist/esm/Common/FormElement.js +14 -1
- package/dist/esm/Common/FormElement.js.map +1 -1
- package/dist/esm/Common/Page.d.ts.map +1 -1
- package/dist/esm/Common/Page.js +13 -0
- package/dist/esm/Common/Page.js.map +1 -1
- package/dist/esm/Common/Tooltip.css +3 -3
- package/dist/esm/Common/index.d.ts +1 -0
- package/dist/esm/Common/index.d.ts.map +1 -1
- package/dist/esm/Common/index.js +1 -0
- package/dist/esm/Common/index.js.map +1 -1
- package/dist/esm/DataPage/DataPage.d.ts +12 -3
- package/dist/esm/DataPage/DataPage.d.ts.map +1 -1
- package/dist/esm/DataPage/DataPage.js +113 -8
- package/dist/esm/DataPage/DataPage.js.map +1 -1
- package/dist/esm/DataTables/DataTableForObservableQuery.d.ts +9 -1
- package/dist/esm/DataTables/DataTableForObservableQuery.d.ts.map +1 -1
- package/dist/esm/DataTables/DataTableForObservableQuery.js +65 -6
- package/dist/esm/DataTables/DataTableForObservableQuery.js.map +1 -1
- package/dist/esm/DataTables/DataTableForQuery.d.ts +9 -1
- package/dist/esm/DataTables/DataTableForQuery.d.ts.map +1 -1
- package/dist/esm/DataTables/DataTableForQuery.js +62 -6
- package/dist/esm/DataTables/DataTableForQuery.js.map +1 -1
- package/dist/esm/Dialogs/BusyIndicatorDialog.d.ts.map +1 -1
- package/dist/esm/Dialogs/BusyIndicatorDialog.js +47 -0
- package/dist/esm/Dialogs/BusyIndicatorDialog.js.map +1 -1
- package/dist/esm/Dialogs/Dialog.d.ts +5 -1
- package/dist/esm/Dialogs/Dialog.d.ts.map +1 -1
- package/dist/esm/Dialogs/Dialog.js +79 -6
- package/dist/esm/Dialogs/Dialog.js.map +1 -1
- package/dist/esm/Dropdown/Dropdown.d.ts.map +1 -1
- package/dist/esm/Dropdown/Dropdown.js +13 -0
- package/dist/esm/Dropdown/Dropdown.js.map +1 -1
- package/dist/esm/ObjectContentEditor/ObjectContentEditor.d.ts +2 -1
- package/dist/esm/ObjectContentEditor/ObjectContentEditor.d.ts.map +1 -1
- package/dist/esm/ObjectContentEditor/ObjectContentEditor.js +37 -21
- package/dist/esm/ObjectContentEditor/ObjectContentEditor.js.map +1 -1
- package/dist/esm/ObjectNavigationalBar/ObjectNavigationalBar.css +6 -0
- package/dist/esm/ObjectNavigationalBar/ObjectNavigationalBar.d.ts +3 -1
- package/dist/esm/ObjectNavigationalBar/ObjectNavigationalBar.d.ts.map +1 -1
- package/dist/esm/ObjectNavigationalBar/ObjectNavigationalBar.js +14 -2
- package/dist/esm/ObjectNavigationalBar/ObjectNavigationalBar.js.map +1 -1
- package/dist/esm/PivotViewer/PivotViewer.css +131 -134
- package/dist/esm/PivotViewer/PivotViewer.d.ts.map +1 -1
- package/dist/esm/PivotViewer/PivotViewer.js +19 -0
- package/dist/esm/PivotViewer/PivotViewer.js.map +1 -1
- package/dist/esm/PivotViewer/components/Spinner.css +8 -8
- package/dist/esm/SchemaEditor/NameCell.d.ts.map +1 -1
- package/dist/esm/SchemaEditor/NameCell.js +2 -2
- package/dist/esm/SchemaEditor/NameCell.js.map +1 -1
- package/dist/esm/SchemaEditor/SchemaEditor.d.ts +2 -1
- package/dist/esm/SchemaEditor/SchemaEditor.d.ts.map +1 -1
- package/dist/esm/SchemaEditor/SchemaEditor.js +15 -3
- package/dist/esm/SchemaEditor/SchemaEditor.js.map +1 -1
- package/dist/esm/SchemaEditor/SchemaEditor.module.css +5 -1
- package/dist/esm/SchemaEditor/TypeCell.d.ts.map +1 -1
- package/dist/esm/SchemaEditor/TypeCell.js +3 -3
- package/dist/esm/SchemaEditor/TypeCell.js.map +1 -1
- package/dist/esm/TimeMachine/EventsView.css +17 -17
- package/dist/esm/TimeMachine/EventsView.d.ts +5 -0
- package/dist/esm/TimeMachine/EventsView.d.ts.map +1 -1
- package/dist/esm/TimeMachine/EventsView.js +13 -2
- package/dist/esm/TimeMachine/EventsView.js.map +1 -1
- package/dist/esm/TimeMachine/Properties.css +57 -0
- package/dist/esm/TimeMachine/Properties.d.ts +1 -0
- package/dist/esm/TimeMachine/Properties.d.ts.map +1 -1
- package/dist/esm/TimeMachine/Properties.js +9 -28
- package/dist/esm/TimeMachine/Properties.js.map +1 -1
- package/dist/esm/TimeMachine/ReadModelView.d.ts.map +1 -1
- package/dist/esm/TimeMachine/ReadModelView.js +10 -0
- package/dist/esm/TimeMachine/ReadModelView.js.map +1 -1
- package/dist/esm/TimeMachine/TimeMachine.css +38 -18
- package/dist/esm/Toolbar/Toolbar.css +34 -17
- package/dist/esm/Toolbar/ToolbarFanOutItem.d.ts +1 -1
- package/dist/esm/Toolbar/ToolbarFanOutItem.d.ts.map +1 -1
- package/dist/esm/Toolbar/ToolbarLayout.d.ts.map +1 -1
- package/dist/esm/Toolbar/ToolbarLayout.js +20 -21
- package/dist/esm/Toolbar/ToolbarLayout.js.map +1 -1
- package/dist/esm/index.d.ts +1 -0
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/tailwind-utilities.css +444 -7
- package/dist/esm/tokens.css +83 -0
- package/dist/esm/tsconfig.tsbuildinfo +1 -1
- package/package.json +53 -25
- package/dist/esm/CommandDialog/CommandDialog.stories.d.ts +0 -21
- package/dist/esm/CommandDialog/CommandDialog.stories.d.ts.map +0 -1
- package/dist/esm/CommandDialog/CommandDialog.stories.js +0 -353
- package/dist/esm/CommandDialog/CommandDialog.stories.js.map +0 -1
- package/dist/esm/CommandDialog/CommandStepper.stories.d.ts +0 -11
- package/dist/esm/CommandDialog/CommandStepper.stories.d.ts.map +0 -1
- package/dist/esm/CommandDialog/CommandStepper.stories.js +0 -84
- package/dist/esm/CommandDialog/CommandStepper.stories.js.map +0 -1
- package/dist/esm/CommandDialog/StepperCommandDialog.stories.d.ts +0 -12
- package/dist/esm/CommandDialog/StepperCommandDialog.stories.d.ts.map +0 -1
- package/dist/esm/CommandDialog/StepperCommandDialog.stories.js +0 -158
- package/dist/esm/CommandDialog/StepperCommandDialog.stories.js.map +0 -1
- package/dist/esm/CommandForm/fields/Fields.stories.d.ts +0 -17
- package/dist/esm/CommandForm/fields/Fields.stories.d.ts.map +0 -1
- package/dist/esm/CommandForm/fields/Fields.stories.js +0 -179
- package/dist/esm/CommandForm/fields/Fields.stories.js.map +0 -1
- package/dist/esm/Common/ErrorBoundary.stories.d.ts +0 -8
- package/dist/esm/Common/ErrorBoundary.stories.d.ts.map +0 -1
- package/dist/esm/Common/ErrorBoundary.stories.js +0 -22
- package/dist/esm/Common/ErrorBoundary.stories.js.map +0 -1
- package/dist/esm/Common/FormElement.stories.d.ts +0 -9
- package/dist/esm/Common/FormElement.stories.d.ts.map +0 -1
- package/dist/esm/Common/FormElement.stories.js +0 -27
- package/dist/esm/Common/FormElement.stories.js.map +0 -1
- package/dist/esm/Common/Icon.stories.d.ts +0 -11
- package/dist/esm/Common/Icon.stories.d.ts.map +0 -1
- package/dist/esm/Common/Icon.stories.js +0 -26
- package/dist/esm/Common/Icon.stories.js.map +0 -1
- package/dist/esm/Common/Page.stories.d.ts +0 -10
- package/dist/esm/Common/Page.stories.d.ts.map +0 -1
- package/dist/esm/Common/Page.stories.js +0 -35
- package/dist/esm/Common/Page.stories.js.map +0 -1
- package/dist/esm/DataPage/DataPage.stories.d.ts +0 -10
- package/dist/esm/DataPage/DataPage.stories.d.ts.map +0 -1
- package/dist/esm/DataPage/DataPage.stories.js +0 -69
- package/dist/esm/DataPage/DataPage.stories.js.map +0 -1
- package/dist/esm/DataTables/DataTableForObservableQuery.stories.d.ts +0 -8
- package/dist/esm/DataTables/DataTableForObservableQuery.stories.d.ts.map +0 -1
- package/dist/esm/DataTables/DataTableForObservableQuery.stories.js +0 -79
- package/dist/esm/DataTables/DataTableForObservableQuery.stories.js.map +0 -1
- package/dist/esm/DataTables/DataTableForQuery.stories.d.ts +0 -8
- package/dist/esm/DataTables/DataTableForQuery.stories.d.ts.map +0 -1
- package/dist/esm/DataTables/DataTableForQuery.stories.js +0 -54
- package/dist/esm/DataTables/DataTableForQuery.stories.js.map +0 -1
- package/dist/esm/Dialogs/BusyIndicatorDialog.stories.d.ts +0 -7
- package/dist/esm/Dialogs/BusyIndicatorDialog.stories.d.ts.map +0 -1
- package/dist/esm/Dialogs/BusyIndicatorDialog.stories.js +0 -15
- package/dist/esm/Dialogs/BusyIndicatorDialog.stories.js.map +0 -1
- package/dist/esm/Dialogs/ConfirmationDialog.stories.d.ts +0 -7
- package/dist/esm/Dialogs/ConfirmationDialog.stories.d.ts.map +0 -1
- package/dist/esm/Dialogs/ConfirmationDialog.stories.js +0 -20
- package/dist/esm/Dialogs/ConfirmationDialog.stories.js.map +0 -1
- package/dist/esm/Dialogs/Dialog.stories.d.ts +0 -13
- package/dist/esm/Dialogs/Dialog.stories.d.ts.map +0 -1
- package/dist/esm/Dialogs/Dialog.stories.js +0 -85
- package/dist/esm/Dialogs/Dialog.stories.js.map +0 -1
- package/dist/esm/ObjectContentEditor/ObjectContentEditor.stories.d.ts +0 -12
- package/dist/esm/ObjectContentEditor/ObjectContentEditor.stories.d.ts.map +0 -1
- package/dist/esm/ObjectContentEditor/ObjectContentEditor.stories.js +0 -184
- package/dist/esm/ObjectContentEditor/ObjectContentEditor.stories.js.map +0 -1
- package/dist/esm/ObjectNavigationalBar/ObjectNavigationalBar.stories.d.ts +0 -10
- package/dist/esm/ObjectNavigationalBar/ObjectNavigationalBar.stories.d.ts.map +0 -1
- package/dist/esm/ObjectNavigationalBar/ObjectNavigationalBar.stories.js +0 -45
- package/dist/esm/ObjectNavigationalBar/ObjectNavigationalBar.stories.js.map +0 -1
- package/dist/esm/PivotViewer/PivotViewer.stories.d.ts +0 -8
- package/dist/esm/PivotViewer/PivotViewer.stories.d.ts.map +0 -1
- package/dist/esm/PivotViewer/PivotViewer.stories.js +0 -233
- package/dist/esm/PivotViewer/PivotViewer.stories.js.map +0 -1
- package/dist/esm/SchemaEditor/SchemaEditor.stories.d.ts +0 -12
- package/dist/esm/SchemaEditor/SchemaEditor.stories.d.ts.map +0 -1
- package/dist/esm/SchemaEditor/SchemaEditor.stories.js +0 -157
- package/dist/esm/SchemaEditor/SchemaEditor.stories.js.map +0 -1
- package/dist/esm/TimeMachine/EventsView.stories.d.ts +0 -9
- package/dist/esm/TimeMachine/EventsView.stories.d.ts.map +0 -1
- package/dist/esm/TimeMachine/EventsView.stories.js +0 -82
- package/dist/esm/TimeMachine/EventsView.stories.js.map +0 -1
- package/dist/esm/TimeMachine/Properties.stories.d.ts +0 -10
- package/dist/esm/TimeMachine/Properties.stories.d.ts.map +0 -1
- package/dist/esm/TimeMachine/Properties.stories.js +0 -51
- package/dist/esm/TimeMachine/Properties.stories.js.map +0 -1
- package/dist/esm/TimeMachine/ReadModelView.stories.d.ts +0 -8
- package/dist/esm/TimeMachine/ReadModelView.stories.d.ts.map +0 -1
- package/dist/esm/TimeMachine/ReadModelView.stories.js +0 -80
- package/dist/esm/TimeMachine/ReadModelView.stories.js.map +0 -1
- package/dist/esm/TimeMachine/TimeMachine.stories.d.ts +0 -9
- package/dist/esm/TimeMachine/TimeMachine.stories.d.ts.map +0 -1
- package/dist/esm/TimeMachine/TimeMachine.stories.js +0 -115
- package/dist/esm/TimeMachine/TimeMachine.stories.js.map +0 -1
- package/dist/esm/Toolbar/Toolbar.stories.d.ts +0 -26
- package/dist/esm/Toolbar/Toolbar.stories.d.ts.map +0 -1
- package/dist/esm/Toolbar/Toolbar.stories.js +0 -240
- package/dist/esm/Toolbar/Toolbar.stories.js.map +0 -1
- package/dist/esm/given.d.ts +0 -5
- package/dist/esm/given.d.ts.map +0 -1
- package/dist/esm/given.js +0 -7
- package/dist/esm/given.js.map +0 -1
package/README.md
CHANGED
|
@@ -23,11 +23,26 @@ The package provides dual CommonJS and ES Module builds with proper conditional
|
|
|
23
23
|
## Installation
|
|
24
24
|
|
|
25
25
|
```bash
|
|
26
|
-
npm install @cratis/components
|
|
26
|
+
npm install @cratis/components primereact primeicons
|
|
27
27
|
# or
|
|
28
|
-
yarn add @cratis/components
|
|
28
|
+
yarn add @cratis/components primereact primeicons
|
|
29
29
|
```
|
|
30
30
|
|
|
31
|
+
`primereact` and `primeicons` are peer dependencies — installing them in your
|
|
32
|
+
app ensures a single copy is shared with the wrappers in this package. The
|
|
33
|
+
`@cratis/arc*` packages and `react`/`react-dom` are also peer dependencies;
|
|
34
|
+
you typically already have them.
|
|
35
|
+
|
|
36
|
+
The following are **optional** peer dependencies, only required if you use the
|
|
37
|
+
component that depends on them:
|
|
38
|
+
|
|
39
|
+
| Component | Optional peer |
|
|
40
|
+
|---|---|
|
|
41
|
+
| `PivotViewer` | `pixi.js` (canvas) and `framer-motion` (animated panels) |
|
|
42
|
+
| `DataPage` resizable layout | `allotment` |
|
|
43
|
+
|
|
44
|
+
Install them only when you reach for the corresponding component.
|
|
45
|
+
|
|
31
46
|
## Usage
|
|
32
47
|
|
|
33
48
|
### Importing Components
|
|
@@ -46,16 +61,472 @@ import { TimeMachine, DataPage } from '@cratis/components';
|
|
|
46
61
|
|
|
47
62
|
### Available Subpath Exports
|
|
48
63
|
|
|
64
|
+
Components:
|
|
65
|
+
|
|
66
|
+
- `@cratis/components` — package root (re-exports `CratisComponentsProvider` and the namespaced component groups)
|
|
49
67
|
- `@cratis/components/CommandDialog`
|
|
68
|
+
- `@cratis/components/CommandStepper`
|
|
50
69
|
- `@cratis/components/CommandForm`
|
|
70
|
+
- `@cratis/components/CommandForm/fields`
|
|
51
71
|
- `@cratis/components/Common`
|
|
52
72
|
- `@cratis/components/DataPage`
|
|
53
73
|
- `@cratis/components/DataTables`
|
|
54
74
|
- `@cratis/components/Dialogs`
|
|
55
75
|
- `@cratis/components/Dropdown`
|
|
56
|
-
- `@cratis/components/
|
|
76
|
+
- `@cratis/components/ObjectContentEditor`
|
|
77
|
+
- `@cratis/components/ObjectNavigationalBar`
|
|
57
78
|
- `@cratis/components/PivotViewer`
|
|
79
|
+
- `@cratis/components/SchemaEditor`
|
|
58
80
|
- `@cratis/components/TimeMachine`
|
|
81
|
+
- `@cratis/components/Toolbar`
|
|
82
|
+
- `@cratis/components/types`
|
|
83
|
+
|
|
84
|
+
Stylesheets:
|
|
85
|
+
|
|
86
|
+
- `@cratis/components/styles` — Tailwind utilities + Cratis CSS variable tokens (single stylesheet, recommended)
|
|
87
|
+
- `@cratis/components/tokens` — only the `--cratis-*` CSS variable tokens (for consumers using their own utility CSS solution)
|
|
88
|
+
|
|
89
|
+
## Styling
|
|
90
|
+
|
|
91
|
+
This package ships primarily for its functionality and Arc integrations.
|
|
92
|
+
Styling is designed to stay out of the way: choose the setup that matches how
|
|
93
|
+
much control you want, and the other layers stay invisible.
|
|
94
|
+
|
|
95
|
+
> **Tip — see each setup live:** every Storybook story includes a **Styling**
|
|
96
|
+
> toolbar (paintbrush icon) that flips between five modes that demonstrate
|
|
97
|
+
> the three setups below: *Lara Dark Blue*, *Lara Light Blue*, *Themed with
|
|
98
|
+
> custom palette*, *Unstyled (bare structure)*, and *Unstyled + Tailwind pt*.
|
|
99
|
+
> Open any story (`yarn dev`) and switch modes to see the same component under
|
|
100
|
+
> each setup.
|
|
101
|
+
|
|
102
|
+
### TL;DR — choose a styling setup
|
|
103
|
+
|
|
104
|
+
| Setup | When | Effort | What you write |
|
|
105
|
+
|---|---|---|---|
|
|
106
|
+
| **Use a PrimeReact theme** | You want components to look good immediately and tweak from there. | Lowest | Theme CSS import + provider |
|
|
107
|
+
| **Use a custom palette on top of a PrimeReact theme** | You want PrimeReact's structure but your own colors. | Low | A PrimeReact theme + CSS variable overrides |
|
|
108
|
+
| **Use fully unstyled mode** | You're integrating into a tightly controlled design system. | Highest | `unstyled: true` + a `pt` preset in CSS or Tailwind |
|
|
109
|
+
|
|
110
|
+
> **Why the first two options still load a PrimeReact theme**
|
|
111
|
+
>
|
|
112
|
+
> In PrimeReact 10, every widget's *structural* CSS (padding, borders, dialog
|
|
113
|
+
> frame, focus rings, button shapes) ships **inside the theme file**. There is
|
|
114
|
+
> no separate "primitives" stylesheet. So a consumer who doesn't load any
|
|
115
|
+
> PrimeReact theme also has no structural CSS — components render as their
|
|
116
|
+
> raw HTML primitives.
|
|
117
|
+
>
|
|
118
|
+
> The `--cratis-*` token layer is therefore an **additive Cratis-scoped tint**
|
|
119
|
+
> for surfaces *our* wrappers own (validation error text, the FormElement
|
|
120
|
+
> addon, breadcrumb borders, etc.). It is not, by itself, enough to skin
|
|
121
|
+
> PrimeReact widgets. Override PrimeReact's variables when you want the whole
|
|
122
|
+
> UI in your palette. Use `unstyled: true` and a `pt` preset when you want to
|
|
123
|
+
> replace PrimeReact's visuals entirely.
|
|
124
|
+
|
|
125
|
+
All three setups use the same one-line setup. You can change direction later
|
|
126
|
+
because the same provider, tokens, and `pt` hooks stay available.
|
|
127
|
+
|
|
128
|
+
### One-line setup (every styling option)
|
|
129
|
+
|
|
130
|
+
```tsx
|
|
131
|
+
import '@cratis/components/styles';
|
|
132
|
+
import { CratisComponentsProvider } from '@cratis/components';
|
|
133
|
+
|
|
134
|
+
export const App = () => (
|
|
135
|
+
<CratisComponentsProvider>
|
|
136
|
+
<YourApp />
|
|
137
|
+
</CratisComponentsProvider>
|
|
138
|
+
);
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
- `@cratis/components/styles` ships the Tailwind utility classes used inside
|
|
142
|
+
the package plus the `--cratis-*` CSS variable token layer that every
|
|
143
|
+
internal component reads from. (Use `@cratis/components/tokens` instead if
|
|
144
|
+
you're bringing your own Tailwind.)
|
|
145
|
+
- `CratisComponentsProvider` is a thin wrapper over PrimeReact's
|
|
146
|
+
`PrimeReactProvider` so Cratis has one place to layer in defaults. Drop in
|
|
147
|
+
raw `PrimeReactProvider` if you'd rather.
|
|
148
|
+
|
|
149
|
+
The three setups below differ only in **what else** you load on top of this
|
|
150
|
+
setup.
|
|
151
|
+
|
|
152
|
+
---
|
|
153
|
+
|
|
154
|
+
### Use a PrimeReact theme
|
|
155
|
+
|
|
156
|
+
Load any PrimeReact theme stylesheet alongside Cratis Components. PrimeReact's
|
|
157
|
+
own widgets paint themselves from the theme, and the `--cratis-*` tokens cascade
|
|
158
|
+
to the matching theme variables so Cratis-scoped surfaces follow along.
|
|
159
|
+
|
|
160
|
+
```tsx
|
|
161
|
+
// 1. Theme first, then Cratis styles so any --cratis-* override wins.
|
|
162
|
+
import 'primereact/resources/themes/lara-dark-blue/theme.css';
|
|
163
|
+
import 'primeicons/primeicons.css';
|
|
164
|
+
import '@cratis/components/styles';
|
|
165
|
+
|
|
166
|
+
import { CratisComponentsProvider } from '@cratis/components';
|
|
167
|
+
|
|
168
|
+
export const App = () => (
|
|
169
|
+
<CratisComponentsProvider>
|
|
170
|
+
<YourApp />
|
|
171
|
+
</CratisComponentsProvider>
|
|
172
|
+
);
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
#### Override a single component with CSS
|
|
176
|
+
|
|
177
|
+
Plain CSS works fine on top of the theme. Target either PrimeReact's class
|
|
178
|
+
names or your own `className`:
|
|
179
|
+
|
|
180
|
+
```css
|
|
181
|
+
/* yourApp.css */
|
|
182
|
+
.p-button {
|
|
183
|
+
border-radius: 999px; /* pill buttons everywhere */
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
.dangerous-button {
|
|
187
|
+
background: var(--cratis-red-500);
|
|
188
|
+
color: white;
|
|
189
|
+
}
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
```tsx
|
|
193
|
+
<Button label="Delete" className="dangerous-button" />
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
#### Override a single component with Tailwind
|
|
197
|
+
|
|
198
|
+
Pass Tailwind utility classes through the wrapper's `className` prop:
|
|
199
|
+
|
|
200
|
+
```tsx
|
|
201
|
+
<InputTextField value={c => c.name}
|
|
202
|
+
className="rounded-2xl bg-slate-900 text-slate-50" />
|
|
203
|
+
|
|
204
|
+
<Dialog title="Confirm" className="shadow-2xl rounded-3xl">
|
|
205
|
+
{/* … */}
|
|
206
|
+
</Dialog>
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
**Use this setup when:** you're prototyping, building internal tools, or are
|
|
210
|
+
happy with one of the prebuilt PrimeReact themes.
|
|
211
|
+
|
|
212
|
+
---
|
|
213
|
+
|
|
214
|
+
### Use a custom palette on top of a PrimeReact theme
|
|
215
|
+
|
|
216
|
+
Keep a PrimeReact theme as your **structural baseline** (so every widget gets
|
|
217
|
+
its padding, dialog frame, button shape, focus ring, etc.) and override the
|
|
218
|
+
PrimeReact CSS variables on `:root` to repaint the whole UI in your own
|
|
219
|
+
colors. The `--cratis-*` tokens follow along through tokens.css's cascade, so
|
|
220
|
+
Cratis-scoped surfaces stay in sync — and you can override the Cratis tokens
|
|
221
|
+
independently if you want Cratis surfaces to differ from PrimeReact widgets.
|
|
222
|
+
|
|
223
|
+
#### With plain CSS
|
|
224
|
+
|
|
225
|
+
```css
|
|
226
|
+
/* palette.override.css — imported once, after @cratis/components/styles */
|
|
227
|
+
:root {
|
|
228
|
+
/* PrimeReact variables — these are what PrimeReact widgets read. */
|
|
229
|
+
--surface-0: #1e293b;
|
|
230
|
+
--surface-100: #1e293b;
|
|
231
|
+
--surface-ground: #020617;
|
|
232
|
+
--surface-section: #0f172a;
|
|
233
|
+
--surface-card: #1e293b;
|
|
234
|
+
--surface-overlay: #1e293b;
|
|
235
|
+
--surface-hover: #334155;
|
|
236
|
+
--surface-border: #334155;
|
|
237
|
+
|
|
238
|
+
--text-color: #f8fafc;
|
|
239
|
+
--text-color-secondary: #94a3b8;
|
|
240
|
+
|
|
241
|
+
--primary-color: #38bdf8;
|
|
242
|
+
--primary-color-text: #0b1220;
|
|
243
|
+
|
|
244
|
+
--highlight-bg: #1e40af;
|
|
245
|
+
--highlight-text-color: #ffffff;
|
|
246
|
+
|
|
247
|
+
--border-radius: 10px;
|
|
248
|
+
|
|
249
|
+
/* --cratis-* tokens default to var(--surface-*) etc. via tokens.css, so
|
|
250
|
+
the overrides above flow through automatically. Set these explicitly
|
|
251
|
+
only if you want Cratis-scoped surfaces tinted differently. */
|
|
252
|
+
--cratis-red-500: #ef4444;
|
|
253
|
+
--cratis-green-500: #22c55e;
|
|
254
|
+
}
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
```tsx
|
|
258
|
+
// 1. PrimeReact theme provides the structure.
|
|
259
|
+
import 'primereact/resources/themes/lara-dark-blue/theme.css';
|
|
260
|
+
import 'primeicons/primeicons.css';
|
|
261
|
+
import '@cratis/components/styles';
|
|
262
|
+
// 2. Your palette overrides — must come after the theme so they win.
|
|
263
|
+
import './palette.override.css';
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
#### Scoped (dark-on-light, light-on-dark, etc.)
|
|
267
|
+
|
|
268
|
+
PrimeReact variables cascade like any other CSS variable, so an ancestor
|
|
269
|
+
scope works:
|
|
270
|
+
|
|
271
|
+
```css
|
|
272
|
+
.dark-zone {
|
|
273
|
+
--surface-card: #0b1220;
|
|
274
|
+
--text-color: #f8fafc;
|
|
275
|
+
--primary-color: #60a5fa;
|
|
276
|
+
}
|
|
277
|
+
```
|
|
278
|
+
|
|
279
|
+
```tsx
|
|
280
|
+
<div className="dark-zone">
|
|
281
|
+
<Dialog title="Always dark">…</Dialog>
|
|
282
|
+
</div>
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
#### With Tailwind CSS
|
|
286
|
+
|
|
287
|
+
Tailwind's `@layer base` is the idiomatic spot — declare the palette once and
|
|
288
|
+
Tailwind handles cascade and dark mode:
|
|
289
|
+
|
|
290
|
+
```css
|
|
291
|
+
/* app.css */
|
|
292
|
+
@import "tailwindcss";
|
|
293
|
+
@import "primereact/resources/themes/lara-dark-blue/theme.css";
|
|
294
|
+
@import "@cratis/components/styles";
|
|
295
|
+
|
|
296
|
+
@layer base {
|
|
297
|
+
:root {
|
|
298
|
+
--surface-card: theme('colors.slate.800');
|
|
299
|
+
--surface-border: theme('colors.slate.700');
|
|
300
|
+
--text-color: theme('colors.slate.50');
|
|
301
|
+
--primary-color: theme('colors.sky.400');
|
|
302
|
+
--cratis-red-500: theme('colors.red.500');
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
.dark {
|
|
306
|
+
--surface-card: theme('colors.slate.900');
|
|
307
|
+
--text-color: theme('colors.slate.100');
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
```
|
|
311
|
+
|
|
312
|
+
#### What `--cratis-*` tokens are for
|
|
313
|
+
|
|
314
|
+
PrimeReact widgets read PrimeReact's own variables (`--surface-card`,
|
|
315
|
+
`--text-color`, `--primary-color`, …) directly. Cratis wrappers add some
|
|
316
|
+
surfaces of their own (inline validation error text, the FormElement addon
|
|
317
|
+
background, the breadcrumb bottom border, etc.) — those use a parallel set
|
|
318
|
+
of `--cratis-*` tokens that default to the PrimeReact value via the cascade
|
|
319
|
+
defined in `tokens.css`.
|
|
320
|
+
|
|
321
|
+
The upshot:
|
|
322
|
+
|
|
323
|
+
- Override **PrimeReact variables** to repaint the whole UI (PrimeReact widgets + Cratis surfaces).
|
|
324
|
+
- Override **`--cratis-*` tokens** when you specifically want Cratis surfaces to differ from PrimeReact widgets.
|
|
325
|
+
|
|
326
|
+
#### `--cratis-*` token reference (Cratis-scoped surfaces)
|
|
327
|
+
|
|
328
|
+
| Group | Tokens |
|
|
329
|
+
|---|---|
|
|
330
|
+
| Surfaces | `--cratis-surface-0`, `--cratis-surface-100`, `--cratis-surface-ground`, `--cratis-surface-section`, `--cratis-surface-card`, `--cratis-surface-overlay`, `--cratis-surface-hover`, `--cratis-surface-border` |
|
|
331
|
+
| Text | `--cratis-text-color`, `--cratis-text-color-secondary` |
|
|
332
|
+
| Brand | `--cratis-primary-color`, `--cratis-primary-color-text`, `--cratis-primary-300`, `--cratis-primary-400`, `--cratis-primary-500`, `--cratis-primary-600` |
|
|
333
|
+
| Selection | `--cratis-highlight-bg`, `--cratis-highlight-text-color` |
|
|
334
|
+
| Semantic | `--cratis-green-500`, `--cratis-orange-500`, `--cratis-red-500` |
|
|
335
|
+
| Geometry | `--cratis-border-radius` |
|
|
336
|
+
| Effects | `--cratis-focus-ring`, `--cratis-maskbg` |
|
|
337
|
+
|
|
338
|
+
Each defaults to the PrimeReact variable with the same name minus the
|
|
339
|
+
`--cratis-` prefix (e.g. `--cratis-surface-card` → `var(--surface-card)`).
|
|
340
|
+
|
|
341
|
+
**Use this setup when:** you want a custom look without writing a PrimeReact
|
|
342
|
+
theme from scratch, you're shipping multiple palette variants (light/dark/
|
|
343
|
+
brand), or you want Cratis-scoped surfaces tinted differently from PrimeReact
|
|
344
|
+
widgets.
|
|
345
|
+
|
|
346
|
+
---
|
|
347
|
+
|
|
348
|
+
### Use fully unstyled mode
|
|
349
|
+
|
|
350
|
+
Turn off every PrimeReact base style at the provider and supply visuals
|
|
351
|
+
through PrimeReact's `pt` (pass-through) mechanism, your own CSS, or both.
|
|
352
|
+
Components render structurally only and become a blank canvas.
|
|
353
|
+
|
|
354
|
+
```tsx
|
|
355
|
+
import '@cratis/components/styles'; // tokens + Tailwind utilities still useful for spacing/layout
|
|
356
|
+
import { CratisComponentsProvider } from '@cratis/components';
|
|
357
|
+
|
|
358
|
+
export const App = () => (
|
|
359
|
+
<CratisComponentsProvider value={{ unstyled: true, pt: globalPt }}>
|
|
360
|
+
<YourApp />
|
|
361
|
+
</CratisComponentsProvider>
|
|
362
|
+
);
|
|
363
|
+
```
|
|
364
|
+
|
|
365
|
+
#### A `pt` preset in plain CSS
|
|
366
|
+
|
|
367
|
+
Attach a `className` from your own stylesheet via a global preset:
|
|
368
|
+
|
|
369
|
+
```ts
|
|
370
|
+
// pt-preset.ts
|
|
371
|
+
export const globalPt = {
|
|
372
|
+
button: {
|
|
373
|
+
root: { className: 'my-btn' },
|
|
374
|
+
},
|
|
375
|
+
dialog: {
|
|
376
|
+
root: { className: 'my-dialog' },
|
|
377
|
+
header: { className: 'my-dialog__header' },
|
|
378
|
+
content: { className: 'my-dialog__body' },
|
|
379
|
+
},
|
|
380
|
+
inputtext: {
|
|
381
|
+
root: { className: 'my-input' },
|
|
382
|
+
},
|
|
383
|
+
} as const;
|
|
384
|
+
```
|
|
385
|
+
|
|
386
|
+
```css
|
|
387
|
+
/* yourApp.css */
|
|
388
|
+
.my-btn {
|
|
389
|
+
display: inline-flex;
|
|
390
|
+
align-items: center;
|
|
391
|
+
padding: 0.5rem 1rem;
|
|
392
|
+
background: var(--cratis-primary-color);
|
|
393
|
+
color: var(--cratis-primary-color-text);
|
|
394
|
+
border: none;
|
|
395
|
+
border-radius: var(--cratis-border-radius);
|
|
396
|
+
cursor: pointer;
|
|
397
|
+
}
|
|
398
|
+
|
|
399
|
+
.my-dialog__header {
|
|
400
|
+
padding: 1rem 1.25rem;
|
|
401
|
+
background: var(--cratis-surface-card);
|
|
402
|
+
border-bottom: 1px solid var(--cratis-surface-border);
|
|
403
|
+
font-weight: 600;
|
|
404
|
+
}
|
|
405
|
+
```
|
|
406
|
+
|
|
407
|
+
#### A `pt` preset in Tailwind
|
|
408
|
+
|
|
409
|
+
Same shape, Tailwind utilities as the class strings:
|
|
410
|
+
|
|
411
|
+
```ts
|
|
412
|
+
// pt-preset.ts
|
|
413
|
+
export const globalPt = {
|
|
414
|
+
button: {
|
|
415
|
+
root: { className: 'inline-flex items-center px-4 py-2 rounded-lg bg-sky-500 text-white hover:bg-sky-400 disabled:opacity-50' },
|
|
416
|
+
},
|
|
417
|
+
dialog: {
|
|
418
|
+
root: { className: 'rounded-2xl shadow-2xl overflow-hidden' },
|
|
419
|
+
header: { className: 'px-5 py-3 bg-slate-800 text-slate-50 font-semibold border-b border-slate-700' },
|
|
420
|
+
content: { className: 'p-5 bg-slate-900 text-slate-100' },
|
|
421
|
+
},
|
|
422
|
+
inputtext: {
|
|
423
|
+
root: { className: 'w-full px-3 py-2 rounded-md bg-slate-800 text-slate-50 border border-slate-700 focus:border-sky-400 focus:outline-none' },
|
|
424
|
+
},
|
|
425
|
+
} as const;
|
|
426
|
+
```
|
|
427
|
+
|
|
428
|
+
#### Per-instance overrides
|
|
429
|
+
|
|
430
|
+
Anything global can be overridden per-instance — useful when one component
|
|
431
|
+
needs to look different:
|
|
432
|
+
|
|
433
|
+
```tsx
|
|
434
|
+
<Dialog
|
|
435
|
+
title="Brand callout"
|
|
436
|
+
pt={{ root: { className: 'rounded-none' },
|
|
437
|
+
header: { className: 'bg-pink-600 text-white' } }}>
|
|
438
|
+
…
|
|
439
|
+
</Dialog>
|
|
440
|
+
|
|
441
|
+
<InputTextField value={c => c.name}
|
|
442
|
+
pt={{ root: { className: 'border-2 border-pink-500' } }} />
|
|
443
|
+
```
|
|
444
|
+
|
|
445
|
+
#### Composite components in unstyled mode
|
|
446
|
+
|
|
447
|
+
`DataPage` and `StepperCommandDialog` compose multiple PrimeReact widgets and
|
|
448
|
+
expose explicit per-slot props. The global `pt` reaches every internal widget;
|
|
449
|
+
per-instance overrides target the inner slot directly:
|
|
450
|
+
|
|
451
|
+
```tsx
|
|
452
|
+
<DataPage<AllAuthors, Author, never>
|
|
453
|
+
title="Authors" query={AllAuthors}
|
|
454
|
+
tablePt={{ table: { className: 'min-w-full divide-y divide-slate-700' } }}
|
|
455
|
+
menubarPt={{ root: { className: 'px-3 py-2 bg-slate-900' } }}>
|
|
456
|
+
<DataPage.MenuItems>…</DataPage.MenuItems>
|
|
457
|
+
<DataPage.Columns>…</DataPage.Columns>
|
|
458
|
+
</DataPage>
|
|
459
|
+
|
|
460
|
+
<StepperCommandDialog<RegisterOrder> command={RegisterOrder} title="New order"
|
|
461
|
+
/* pt targets the Stepper */
|
|
462
|
+
pt={{ stepperpanel: { content: { className: 'pt-6' } } }}
|
|
463
|
+
/* dialogPt targets the outer Dialog */
|
|
464
|
+
dialogPt={{ header: { className: 'bg-slate-900' } }}>
|
|
465
|
+
…
|
|
466
|
+
</StepperCommandDialog>
|
|
467
|
+
```
|
|
468
|
+
|
|
469
|
+
`ObjectContentEditor`, `ObjectNavigationalBar`, and `SchemaEditor` accept only
|
|
470
|
+
`className` on the root — restyle their internals via the **global** `pt`
|
|
471
|
+
preset.
|
|
472
|
+
|
|
473
|
+
**Use this setup when:** you have a design system to honor, you're matching a
|
|
474
|
+
brand kit, or you want zero PrimeReact CSS in the final bundle.
|
|
475
|
+
|
|
476
|
+
---
|
|
477
|
+
|
|
478
|
+
### Combining styling setups
|
|
479
|
+
|
|
480
|
+
The styling options compose, so you don't have to choose one for the whole app:
|
|
481
|
+
|
|
482
|
+
- **Themed with one unstyled component** — keep the PrimeReact theme and pass
|
|
483
|
+
`unstyled` per-component to opt that one widget out:
|
|
484
|
+
```tsx
|
|
485
|
+
<Dialog title="Custom" unstyled pt={brandDialogPt}>…</Dialog>
|
|
486
|
+
```
|
|
487
|
+
- **Unstyled with one themed island** — wrap a subtree in a second
|
|
488
|
+
`CratisComponentsProvider` that restores defaults:
|
|
489
|
+
```tsx
|
|
490
|
+
<CratisComponentsProvider value={{ unstyled: true, pt: globalPt }}>
|
|
491
|
+
<App />
|
|
492
|
+
<CratisComponentsProvider value={{ unstyled: false }}>
|
|
493
|
+
<PrimeReactThemedSubtree />
|
|
494
|
+
</CratisComponentsProvider>
|
|
495
|
+
</CratisComponentsProvider>
|
|
496
|
+
```
|
|
497
|
+
- **Dark mode** — scope the palette overrides to `.dark` (override
|
|
498
|
+
`--surface-card`, `--text-color`, `--primary-color`, etc., plus any
|
|
499
|
+
`--cratis-*` tokens you want to diverge) and toggle the class on the root
|
|
500
|
+
element. PrimeReact widgets and Cratis surfaces both follow the cascade.
|
|
501
|
+
|
|
502
|
+
### Per-component `pt` cheat sheet
|
|
503
|
+
|
|
504
|
+
Three patterns, depending on how much PrimeReact a wrapper composes:
|
|
505
|
+
|
|
506
|
+
1. **Single-widget wrappers** — `Dialog`, every `CommandForm` field,
|
|
507
|
+
`EventsView`, and `Dropdown` forward `pt`, `ptOptions`, `unstyled`, and
|
|
508
|
+
`className` straight to their inner PrimeReact component.
|
|
509
|
+
2. **Multi-slot composites** — `StepperCommandDialog` (`pt` for Stepper,
|
|
510
|
+
`dialogPt` for Dialog), `DataPage` (`tablePt` for DataTable, `menubarPt`
|
|
511
|
+
for Menubar), and `DataTableForQuery` / `DataTableForObservableQuery`
|
|
512
|
+
(`pt` for DataTable, `paginatorPt` for Paginator) — each slot has
|
|
513
|
+
`*PtOptions`, `*Unstyled`, and (where applicable) `*ClassName` siblings.
|
|
514
|
+
3. **Large composites** — `ObjectContentEditor`, `ObjectNavigationalBar`,
|
|
515
|
+
`SchemaEditor` expose `className` only; restyle internals via the global
|
|
516
|
+
`pt` preset.
|
|
517
|
+
|
|
518
|
+
### What is *not* fully pass-through
|
|
519
|
+
|
|
520
|
+
A small number of internal usages opt into PrimeReact's slot-rendering by
|
|
521
|
+
name (for example, a custom Menubar item template uses `p-menuitem-link` /
|
|
522
|
+
`p-menuitem-text` to match the surrounding default-rendered items). These are
|
|
523
|
+
correct contracts with PrimeReact's own slot rendering, not hard-coded
|
|
524
|
+
theming — they have no effect in `unstyled` mode and match the rest of the
|
|
525
|
+
menu in themed mode.
|
|
526
|
+
|
|
527
|
+
`BusyIndicatorDialog` only honors the global `pt` set via
|
|
528
|
+
`CratisComponentsProvider`; it does not accept per-instance `pt` because its
|
|
529
|
+
request type is owned by `@cratis/arc.react`.
|
|
59
530
|
|
|
60
531
|
## Troubleshooting
|
|
61
532
|
|
|
@@ -81,4 +552,4 @@ If using TypeScript 4.7+, try updating your `tsconfig.json`:
|
|
|
81
552
|
|
|
82
553
|
### Import Errors
|
|
83
554
|
|
|
84
|
-
Ensure you're using the correct import paths. The package uses case-sensitive paths that match the actual component names.
|
|
555
|
+
Ensure you're using the correct import paths. The package uses case-sensitive paths that match the actual component names.
|
|
@@ -6,7 +6,7 @@ var Dialog = require('../Dialogs/Dialog.js');
|
|
|
6
6
|
var React = require('react');
|
|
7
7
|
var commands = require('@cratis/arc.react/commands');
|
|
8
8
|
|
|
9
|
-
const CommandDialogWrapper = ({ title, visible, width, style, contentStyle, resizable, buttons, okLabel, cancelLabel, yesLabel, noLabel, isValid, onClose, onConfirm, onCancel, onSuccess, onValidationFailure, onFailed, onBeforeExecute, children }) => {
|
|
9
|
+
const CommandDialogWrapper = ({ title, visible, width, style, contentStyle, resizable, buttons, okLabel, cancelLabel, yesLabel, noLabel, isValid, onClose, onConfirm, onCancel, onSuccess, onValidationFailure, onFailed, onBeforeExecute, className, pt, ptOptions, unstyled, children }) => {
|
|
10
10
|
const { setCommandValues, setCommandResult, isValid: isCommandFormValid } = commands.useCommandFormContext();
|
|
11
11
|
const commandInstance = commands.useCommandInstance();
|
|
12
12
|
const [isBusy, setIsBusy] = React.useState(false);
|
|
@@ -63,11 +63,101 @@ const CommandDialogWrapper = ({ title, visible, width, style, contentStyle, resi
|
|
|
63
63
|
};
|
|
64
64
|
const processedChildren = processChildren(children);
|
|
65
65
|
const isDialogValid = (isValid !== false) && isCommandFormValid;
|
|
66
|
-
return (jsxRuntime.jsx(Dialog.Dialog, { title: title, visible: visible, width: width, style: style, contentStyle: contentStyle, resizable: resizable, buttons: buttons, onClose: onClose, onConfirm: handleConfirm, onCancel: onCancel, okLabel: okLabel, cancelLabel: cancelLabel, yesLabel: yesLabel, noLabel: noLabel, isValid: isDialogValid, isBusy: isBusy, children: jsxRuntime.jsx("div", { style: { display: 'flex', flexDirection: 'column', width: '100%' }, children: processedChildren }) }));
|
|
66
|
+
return (jsxRuntime.jsx(Dialog.Dialog, { title: title, visible: visible, width: width, style: style, contentStyle: contentStyle, resizable: resizable, buttons: buttons, onClose: onClose, onConfirm: handleConfirm, onCancel: onCancel, okLabel: okLabel, cancelLabel: cancelLabel, yesLabel: yesLabel, noLabel: noLabel, isValid: isDialogValid, isBusy: isBusy, className: className, pt: pt, ptOptions: ptOptions, unstyled: unstyled, children: jsxRuntime.jsx("div", { style: { display: 'flex', flexDirection: 'column', width: '100%' }, children: processedChildren }) }));
|
|
67
67
|
};
|
|
68
|
+
/**
|
|
69
|
+
* A {@link Dialog} that hosts a Cratis Arc `CommandForm`, runs the bound
|
|
70
|
+
* command on confirm, and only closes when the command succeeds. This is
|
|
71
|
+
* the standard pattern for "user fills in a form, clicks OK, command runs
|
|
72
|
+
* server-side, dialog dismisses" — `CommandDialog` collapses about thirty
|
|
73
|
+
* lines of orchestration into the props on a single component.
|
|
74
|
+
*
|
|
75
|
+
* ## Where `TCommand` comes from
|
|
76
|
+
*
|
|
77
|
+
* `TCommand` is an auto-generated TypeScript class produced by the Arc proxy
|
|
78
|
+
* generator from a C# `[Command]` record. `dotnet build` writes a `.ts` file
|
|
79
|
+
* per command with the right property types and a typed `execute()` method;
|
|
80
|
+
* importing the class is all the connection-to-the-backend you need. The
|
|
81
|
+
* class also exposes a `.use()` hook for direct (non-dialog) usage and a
|
|
82
|
+
* `useWithChangeTracking()` variant.
|
|
83
|
+
*
|
|
84
|
+
* ## What happens on confirm
|
|
85
|
+
*
|
|
86
|
+
* 1. If `onBeforeExecute` is supplied, it transforms the command values.
|
|
87
|
+
* Used for generated IDs (`Guid.create()`) that the user did not type in.
|
|
88
|
+
* 2. The command's `execute()` runs through Arc's command pipeline. The
|
|
89
|
+
* backend handler returns either a typed response (mapped to `TResponse`)
|
|
90
|
+
* or a `ValidationResult[]`.
|
|
91
|
+
* 3. On `IsSuccess: true`, `onSuccess(response)` fires and the dialog closes
|
|
92
|
+
* through the dialog host context.
|
|
93
|
+
* 4. On a validation failure, `onValidationFailure(errors)` fires and the
|
|
94
|
+
* form's per-field error display is updated. The dialog stays open.
|
|
95
|
+
* 5. On a domain or transport failure, `onFailed(result)` fires. The dialog
|
|
96
|
+
* stays open and the `CommandResult` is set on the form context so the
|
|
97
|
+
* UI can surface the error to the user.
|
|
98
|
+
*
|
|
99
|
+
* Throughout, the dialog is in the `isBusy` state — every action button is
|
|
100
|
+
* disabled and the confirm button shows a spinner.
|
|
101
|
+
*
|
|
102
|
+
* ## Field binding
|
|
103
|
+
*
|
|
104
|
+
* Children that are `CommandFormField` instances (`InputTextField`,
|
|
105
|
+
* `NumberField`, `DropdownField`, every `@cratis/components/CommandForm/fields`
|
|
106
|
+
* widget) bind to a property on the command via the `value` accessor:
|
|
107
|
+
*
|
|
108
|
+
* ```tsx
|
|
109
|
+
* <InputTextField value={c => c.name} title="Name" />
|
|
110
|
+
* ```
|
|
111
|
+
*
|
|
112
|
+
* The accessor's argument is the command instance — TypeScript infers
|
|
113
|
+
* `c.name` is a string and the field type-checks against that. Arbitrary
|
|
114
|
+
* non-field children (custom layout, additional text, decorative elements)
|
|
115
|
+
* are rendered as plain content.
|
|
116
|
+
*
|
|
117
|
+
* ## Typed dialog host usage
|
|
118
|
+
*
|
|
119
|
+
* Combine with `useDialog<CommandResult<TResponse>>()` from
|
|
120
|
+
* `@cratis/arc.react/dialogs` to get a fully-typed result at the call site:
|
|
121
|
+
*
|
|
122
|
+
* ```tsx
|
|
123
|
+
* import { useDialog, DialogResult } from '@cratis/arc.react/dialogs';
|
|
124
|
+
* import { CommandDialog } from '@cratis/components/CommandDialog';
|
|
125
|
+
* import { RegisterAuthor } from './RegisterAuthor'; // proxy from C#
|
|
126
|
+
*
|
|
127
|
+
* type RegisterAuthorResponse = { authorId: string };
|
|
128
|
+
*
|
|
129
|
+
* const RegisterAuthorDialog = () => {
|
|
130
|
+
* const { closeDialog } = useDialogContext<CommandResult<RegisterAuthorResponse>>();
|
|
131
|
+
* return (
|
|
132
|
+
* <CommandDialog<RegisterAuthor, RegisterAuthorResponse>
|
|
133
|
+
* command={RegisterAuthor}
|
|
134
|
+
* title="Register author"
|
|
135
|
+
* okLabel="Register"
|
|
136
|
+
* onSuccess={(response) => closeDialog(DialogResult.Ok)}
|
|
137
|
+
* onCancel={() => closeDialog(DialogResult.Cancelled)}>
|
|
138
|
+
* <InputTextField value={c => c.name} title="Name" />
|
|
139
|
+
* <InputTextField value={c => c.email} title="Email" />
|
|
140
|
+
* </CommandDialog>
|
|
141
|
+
* );
|
|
142
|
+
* };
|
|
143
|
+
* ```
|
|
144
|
+
*
|
|
145
|
+
* ## What's special vs. raw Dialog + CommandForm
|
|
146
|
+
*
|
|
147
|
+
* - Confirm wiring (`onConfirm` → `commandInstance.execute()`) is handled
|
|
148
|
+
* internally; you only supply `onSuccess` / `onValidationFailure` / `onFailed`.
|
|
149
|
+
* - The dialog's `isBusy` state tracks the in-flight command without manual
|
|
150
|
+
* `useState`.
|
|
151
|
+
* - Field error propagation from `CommandResult.validationResults` to the
|
|
152
|
+
* form context is automatic.
|
|
153
|
+
*
|
|
154
|
+
* @typeParam TCommand - The command class (proxy generated from C# `[Command]`).
|
|
155
|
+
* @typeParam TResponse - The success payload type returned by the command's `Handle()` method on the backend.
|
|
156
|
+
* @param props - {@link CommandDialogProps}.
|
|
157
|
+
*/
|
|
68
158
|
const CommandDialogComponent = (props) => {
|
|
69
|
-
const { title, visible, width, style, contentStyle, resizable, buttons = dialogs.DialogButtons.OkCancel, okLabel, cancelLabel, yesLabel, noLabel, isValid, onClose, onConfirm, onCancel, children, ...commandFormProps } = props;
|
|
70
|
-
return (jsxRuntime.jsx(commands.CommandForm, { ...commandFormProps, children: jsxRuntime.jsx(CommandDialogWrapper, { title: title, visible: visible, width: width, style: style, contentStyle: contentStyle, resizable: resizable, buttons: buttons, okLabel: okLabel, cancelLabel: cancelLabel, yesLabel: yesLabel, noLabel: noLabel, isValid: isValid, onClose: onClose, onConfirm: onConfirm, onCancel: onCancel, onSuccess: props.onSuccess, onValidationFailure: props.onValidationFailure, onFailed: props.onFailed, onBeforeExecute: commandFormProps.onBeforeExecute, children: children }) }));
|
|
159
|
+
const { title, visible, width, style, contentStyle, resizable, buttons = dialogs.DialogButtons.OkCancel, okLabel, cancelLabel, yesLabel, noLabel, isValid, onClose, onConfirm, onCancel, className, pt, ptOptions, unstyled, children, ...commandFormProps } = props;
|
|
160
|
+
return (jsxRuntime.jsx(commands.CommandForm, { ...commandFormProps, children: jsxRuntime.jsx(CommandDialogWrapper, { title: title, visible: visible, width: width, style: style, contentStyle: contentStyle, resizable: resizable, buttons: buttons, okLabel: okLabel, cancelLabel: cancelLabel, yesLabel: yesLabel, noLabel: noLabel, isValid: isValid, onClose: onClose, onConfirm: onConfirm, onCancel: onCancel, onSuccess: props.onSuccess, onValidationFailure: props.onValidationFailure, onFailed: props.onFailed, onBeforeExecute: commandFormProps.onBeforeExecute, className: className, pt: pt, ptOptions: ptOptions, unstyled: unstyled, children: children }) }));
|
|
71
161
|
};
|
|
72
162
|
const CommandDialogColumnWrapper = ({ children }) => (jsxRuntime.jsx(commands.CommandForm.Column, { children: children }));
|
|
73
163
|
CommandDialogColumnWrapper.displayName = 'CommandFormColumn';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CommandDialog.js","sources":["../../../CommandDialog/CommandDialog.tsx"],"sourcesContent":[null],"names":["useCommandFormContext","useCommandInstance","useState","DialogResult","_jsx","CommandFormFieldWrapper","Dialog","DialogButtons","CommandForm"],"mappings":";;;;;;;;
|
|
1
|
+
{"version":3,"file":"CommandDialog.js","sources":["../../../CommandDialog/CommandDialog.tsx"],"sourcesContent":[null],"names":["useCommandFormContext","useCommandInstance","useState","DialogResult","_jsx","CommandFormFieldWrapper","Dialog","DialogButtons","CommandForm"],"mappings":"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"}
|