@pilotiq/pilotiq 0.1.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/.turbo/turbo-build.log +4 -0
- package/CHANGELOG.md +11 -0
- package/CLAUDE.md +207 -0
- package/LICENSE +21 -0
- package/dist/Cluster.d.ts +56 -0
- package/dist/Cluster.d.ts.map +1 -0
- package/dist/Cluster.js +62 -0
- package/dist/Cluster.js.map +1 -0
- package/dist/Column.d.ts +378 -0
- package/dist/Column.d.ts.map +1 -0
- package/dist/Column.js +434 -0
- package/dist/Column.js.map +1 -0
- package/dist/Global.d.ts +123 -0
- package/dist/Global.d.ts.map +1 -0
- package/dist/Global.js +124 -0
- package/dist/Global.js.map +1 -0
- package/dist/Page.d.ts +90 -0
- package/dist/Page.d.ts.map +1 -0
- package/dist/Page.js +107 -0
- package/dist/Page.js.map +1 -0
- package/dist/Pilotiq.d.ts +505 -0
- package/dist/Pilotiq.d.ts.map +1 -0
- package/dist/Pilotiq.js +463 -0
- package/dist/Pilotiq.js.map +1 -0
- package/dist/PilotiqRegistry.d.ts +10 -0
- package/dist/PilotiqRegistry.d.ts.map +1 -0
- package/dist/PilotiqRegistry.js +32 -0
- package/dist/PilotiqRegistry.js.map +1 -0
- package/dist/PilotiqServiceProvider.d.ts +16 -0
- package/dist/PilotiqServiceProvider.d.ts.map +1 -0
- package/dist/PilotiqServiceProvider.js +57 -0
- package/dist/PilotiqServiceProvider.js.map +1 -0
- package/dist/RelationManager.d.ts +372 -0
- package/dist/RelationManager.d.ts.map +1 -0
- package/dist/RelationManager.js +342 -0
- package/dist/RelationManager.js.map +1 -0
- package/dist/RenderHook.d.ts +86 -0
- package/dist/RenderHook.d.ts.map +1 -0
- package/dist/RenderHook.js +116 -0
- package/dist/RenderHook.js.map +1 -0
- package/dist/Resource.d.ts +290 -0
- package/dist/Resource.d.ts.map +1 -0
- package/dist/Resource.js +362 -0
- package/dist/Resource.js.map +1 -0
- package/dist/RightPanel.d.ts +92 -0
- package/dist/RightPanel.d.ts.map +1 -0
- package/dist/RightPanel.js +61 -0
- package/dist/RightPanel.js.map +1 -0
- package/dist/Tab.d.ts +92 -0
- package/dist/Tab.d.ts.map +1 -0
- package/dist/Tab.js +93 -0
- package/dist/Tab.js.map +1 -0
- package/dist/UserMenuItem.d.ts +76 -0
- package/dist/UserMenuItem.d.ts.map +1 -0
- package/dist/UserMenuItem.js +87 -0
- package/dist/UserMenuItem.js.map +1 -0
- package/dist/actions/Action.d.ts +888 -0
- package/dist/actions/Action.d.ts.map +1 -0
- package/dist/actions/Action.js +1652 -0
- package/dist/actions/Action.js.map +1 -0
- package/dist/actions/ActionGroup.d.ts +85 -0
- package/dist/actions/ActionGroup.d.ts.map +1 -0
- package/dist/actions/ActionGroup.js +132 -0
- package/dist/actions/ActionGroup.js.map +1 -0
- package/dist/actions/attachFactory.d.ts +67 -0
- package/dist/actions/attachFactory.d.ts.map +1 -0
- package/dist/actions/attachFactory.js +115 -0
- package/dist/actions/attachFactory.js.map +1 -0
- package/dist/actions/exportFactory.d.ts +88 -0
- package/dist/actions/exportFactory.d.ts.map +1 -0
- package/dist/actions/exportFactory.js +144 -0
- package/dist/actions/exportFactory.js.map +1 -0
- package/dist/actions/importFactory.d.ts +97 -0
- package/dist/actions/importFactory.d.ts.map +1 -0
- package/dist/actions/importFactory.js +143 -0
- package/dist/actions/importFactory.js.map +1 -0
- package/dist/actions/index.d.ts +3 -0
- package/dist/actions/index.d.ts.map +1 -0
- package/dist/actions/index.js +3 -0
- package/dist/actions/index.js.map +1 -0
- package/dist/applyPageHooks.d.ts +54 -0
- package/dist/applyPageHooks.d.ts.map +1 -0
- package/dist/applyPageHooks.js +149 -0
- package/dist/applyPageHooks.js.map +1 -0
- package/dist/cells/coerce.d.ts +25 -0
- package/dist/cells/coerce.d.ts.map +1 -0
- package/dist/cells/coerce.js +87 -0
- package/dist/cells/coerce.js.map +1 -0
- package/dist/clusterPaths.d.ts +9 -0
- package/dist/clusterPaths.d.ts.map +1 -0
- package/dist/clusterPaths.js +19 -0
- package/dist/clusterPaths.js.map +1 -0
- package/dist/columns/BadgeColumn.d.ts +16 -0
- package/dist/columns/BadgeColumn.d.ts.map +1 -0
- package/dist/columns/BadgeColumn.js +25 -0
- package/dist/columns/BadgeColumn.js.map +1 -0
- package/dist/columns/BooleanColumn.d.ts +10 -0
- package/dist/columns/BooleanColumn.d.ts.map +1 -0
- package/dist/columns/BooleanColumn.js +18 -0
- package/dist/columns/BooleanColumn.js.map +1 -0
- package/dist/columns/ColorColumn.d.ts +27 -0
- package/dist/columns/ColorColumn.d.ts.map +1 -0
- package/dist/columns/ColorColumn.js +35 -0
- package/dist/columns/ColorColumn.js.map +1 -0
- package/dist/columns/IconColumn.d.ts +22 -0
- package/dist/columns/IconColumn.d.ts.map +1 -0
- package/dist/columns/IconColumn.js +28 -0
- package/dist/columns/IconColumn.js.map +1 -0
- package/dist/columns/ImageColumn.d.ts +17 -0
- package/dist/columns/ImageColumn.d.ts.map +1 -0
- package/dist/columns/ImageColumn.js +24 -0
- package/dist/columns/ImageColumn.js.map +1 -0
- package/dist/columns/SelectColumn.d.ts +36 -0
- package/dist/columns/SelectColumn.d.ts.map +1 -0
- package/dist/columns/SelectColumn.js +52 -0
- package/dist/columns/SelectColumn.js.map +1 -0
- package/dist/columns/TextColumn.d.ts +18 -0
- package/dist/columns/TextColumn.d.ts.map +1 -0
- package/dist/columns/TextColumn.js +20 -0
- package/dist/columns/TextColumn.js.map +1 -0
- package/dist/columns/TextInputColumn.d.ts +47 -0
- package/dist/columns/TextInputColumn.d.ts.map +1 -0
- package/dist/columns/TextInputColumn.js +60 -0
- package/dist/columns/TextInputColumn.js.map +1 -0
- package/dist/columns/ToggleColumn.d.ts +32 -0
- package/dist/columns/ToggleColumn.d.ts.map +1 -0
- package/dist/columns/ToggleColumn.js +45 -0
- package/dist/columns/ToggleColumn.js.map +1 -0
- package/dist/columns/index.d.ts +10 -0
- package/dist/columns/index.d.ts.map +1 -0
- package/dist/columns/index.js +10 -0
- package/dist/columns/index.js.map +1 -0
- package/dist/defaultGlobalPages.d.ts +11 -0
- package/dist/defaultGlobalPages.d.ts.map +1 -0
- package/dist/defaultGlobalPages.js +87 -0
- package/dist/defaultGlobalPages.js.map +1 -0
- package/dist/defaultPages.d.ts +247 -0
- package/dist/defaultPages.d.ts.map +1 -0
- package/dist/defaultPages.js +558 -0
- package/dist/defaultPages.js.map +1 -0
- package/dist/elements/Form.d.ts +219 -0
- package/dist/elements/Form.d.ts.map +1 -0
- package/dist/elements/Form.js +259 -0
- package/dist/elements/Form.js.map +1 -0
- package/dist/elements/ListTabs.d.ts +17 -0
- package/dist/elements/ListTabs.d.ts.map +1 -0
- package/dist/elements/ListTabs.js +23 -0
- package/dist/elements/ListTabs.js.map +1 -0
- package/dist/elements/Table.d.ts +535 -0
- package/dist/elements/Table.d.ts.map +1 -0
- package/dist/elements/Table.js +481 -0
- package/dist/elements/Table.js.map +1 -0
- package/dist/elements/TableGroup.d.ts +121 -0
- package/dist/elements/TableGroup.d.ts.map +1 -0
- package/dist/elements/TableGroup.js +162 -0
- package/dist/elements/TableGroup.js.map +1 -0
- package/dist/elements/dispatchAction.d.ts +127 -0
- package/dist/elements/dispatchAction.d.ts.map +1 -0
- package/dist/elements/dispatchAction.js +254 -0
- package/dist/elements/dispatchAction.js.map +1 -0
- package/dist/elements/dispatchForm.d.ts +220 -0
- package/dist/elements/dispatchForm.d.ts.map +1 -0
- package/dist/elements/dispatchForm.js +1645 -0
- package/dist/elements/dispatchForm.js.map +1 -0
- package/dist/elements/dispatchTable.d.ts +69 -0
- package/dist/elements/dispatchTable.d.ts.map +1 -0
- package/dist/elements/dispatchTable.js +606 -0
- package/dist/elements/dispatchTable.js.map +1 -0
- package/dist/elements/index.d.ts +3 -0
- package/dist/elements/index.d.ts.map +1 -0
- package/dist/elements/index.js +3 -0
- package/dist/elements/index.js.map +1 -0
- package/dist/entries/BadgeEntry.d.ts +21 -0
- package/dist/entries/BadgeEntry.d.ts.map +1 -0
- package/dist/entries/BadgeEntry.js +32 -0
- package/dist/entries/BadgeEntry.js.map +1 -0
- package/dist/entries/CodeEntry.d.ts +38 -0
- package/dist/entries/CodeEntry.d.ts.map +1 -0
- package/dist/entries/CodeEntry.js +44 -0
- package/dist/entries/CodeEntry.js.map +1 -0
- package/dist/entries/ColorEntry.d.ts +32 -0
- package/dist/entries/ColorEntry.d.ts.map +1 -0
- package/dist/entries/ColorEntry.js +48 -0
- package/dist/entries/ColorEntry.js.map +1 -0
- package/dist/entries/ComponentEntry.d.ts +66 -0
- package/dist/entries/ComponentEntry.d.ts.map +1 -0
- package/dist/entries/ComponentEntry.js +86 -0
- package/dist/entries/ComponentEntry.js.map +1 -0
- package/dist/entries/Entry.d.ts +175 -0
- package/dist/entries/Entry.d.ts.map +1 -0
- package/dist/entries/Entry.js +233 -0
- package/dist/entries/Entry.js.map +1 -0
- package/dist/entries/IconEntry.d.ts +30 -0
- package/dist/entries/IconEntry.d.ts.map +1 -0
- package/dist/entries/IconEntry.js +34 -0
- package/dist/entries/IconEntry.js.map +1 -0
- package/dist/entries/ImageEntry.d.ts +33 -0
- package/dist/entries/ImageEntry.d.ts.map +1 -0
- package/dist/entries/ImageEntry.js +47 -0
- package/dist/entries/ImageEntry.js.map +1 -0
- package/dist/entries/KeyValueEntry.d.ts +30 -0
- package/dist/entries/KeyValueEntry.d.ts.map +1 -0
- package/dist/entries/KeyValueEntry.js +38 -0
- package/dist/entries/KeyValueEntry.js.map +1 -0
- package/dist/entries/RepeatableEntry.d.ts +122 -0
- package/dist/entries/RepeatableEntry.d.ts.map +1 -0
- package/dist/entries/RepeatableEntry.js +121 -0
- package/dist/entries/RepeatableEntry.js.map +1 -0
- package/dist/entries/TextEntry.d.ts +38 -0
- package/dist/entries/TextEntry.d.ts.map +1 -0
- package/dist/entries/TextEntry.js +49 -0
- package/dist/entries/TextEntry.js.map +1 -0
- package/dist/entries/index.d.ts +2 -0
- package/dist/entries/index.d.ts.map +1 -0
- package/dist/entries/index.js +8 -0
- package/dist/entries/index.js.map +1 -0
- package/dist/entries/registry.d.ts +41 -0
- package/dist/entries/registry.d.ts.map +1 -0
- package/dist/entries/registry.js +17 -0
- package/dist/entries/registry.js.map +1 -0
- package/dist/fields/BuilderField.d.ts +420 -0
- package/dist/fields/BuilderField.d.ts.map +1 -0
- package/dist/fields/BuilderField.js +359 -0
- package/dist/fields/BuilderField.js.map +1 -0
- package/dist/fields/CheckboxField.d.ts +18 -0
- package/dist/fields/CheckboxField.d.ts.map +1 -0
- package/dist/fields/CheckboxField.js +23 -0
- package/dist/fields/CheckboxField.js.map +1 -0
- package/dist/fields/CheckboxListField.d.ts +25 -0
- package/dist/fields/CheckboxListField.d.ts.map +1 -0
- package/dist/fields/CheckboxListField.js +46 -0
- package/dist/fields/CheckboxListField.js.map +1 -0
- package/dist/fields/ColorPickerField.d.ts +16 -0
- package/dist/fields/ColorPickerField.d.ts.map +1 -0
- package/dist/fields/ColorPickerField.js +21 -0
- package/dist/fields/ColorPickerField.js.map +1 -0
- package/dist/fields/DateField.d.ts +29 -0
- package/dist/fields/DateField.d.ts.map +1 -0
- package/dist/fields/DateField.js +45 -0
- package/dist/fields/DateField.js.map +1 -0
- package/dist/fields/EmailField.d.ts +8 -0
- package/dist/fields/EmailField.d.ts.map +1 -0
- package/dist/fields/EmailField.js +13 -0
- package/dist/fields/EmailField.js.map +1 -0
- package/dist/fields/Field.d.ts +485 -0
- package/dist/fields/Field.d.ts.map +1 -0
- package/dist/fields/Field.js +539 -0
- package/dist/fields/Field.js.map +1 -0
- package/dist/fields/FileUploadField.d.ts +43 -0
- package/dist/fields/FileUploadField.d.ts.map +1 -0
- package/dist/fields/FileUploadField.js +60 -0
- package/dist/fields/FileUploadField.js.map +1 -0
- package/dist/fields/HiddenField.d.ts +19 -0
- package/dist/fields/HiddenField.d.ts.map +1 -0
- package/dist/fields/HiddenField.js +24 -0
- package/dist/fields/HiddenField.js.map +1 -0
- package/dist/fields/KeyValueField.d.ts +36 -0
- package/dist/fields/KeyValueField.d.ts.map +1 -0
- package/dist/fields/KeyValueField.js +47 -0
- package/dist/fields/KeyValueField.js.map +1 -0
- package/dist/fields/MarkdownField.d.ts +79 -0
- package/dist/fields/MarkdownField.d.ts.map +1 -0
- package/dist/fields/MarkdownField.js +117 -0
- package/dist/fields/MarkdownField.js.map +1 -0
- package/dist/fields/NumberField.d.ts +17 -0
- package/dist/fields/NumberField.d.ts.map +1 -0
- package/dist/fields/NumberField.js +27 -0
- package/dist/fields/NumberField.js.map +1 -0
- package/dist/fields/RadioField.d.ts +26 -0
- package/dist/fields/RadioField.d.ts.map +1 -0
- package/dist/fields/RadioField.js +47 -0
- package/dist/fields/RadioField.js.map +1 -0
- package/dist/fields/RepeaterField.d.ts +594 -0
- package/dist/fields/RepeaterField.d.ts.map +1 -0
- package/dist/fields/RepeaterField.js +504 -0
- package/dist/fields/RepeaterField.js.map +1 -0
- package/dist/fields/RowButton.d.ts +86 -0
- package/dist/fields/RowButton.d.ts.map +1 -0
- package/dist/fields/RowButton.js +85 -0
- package/dist/fields/RowButton.js.map +1 -0
- package/dist/fields/SelectField.d.ts +127 -0
- package/dist/fields/SelectField.d.ts.map +1 -0
- package/dist/fields/SelectField.js +160 -0
- package/dist/fields/SelectField.js.map +1 -0
- package/dist/fields/SliderField.d.ts +31 -0
- package/dist/fields/SliderField.d.ts.map +1 -0
- package/dist/fields/SliderField.js +45 -0
- package/dist/fields/SliderField.js.map +1 -0
- package/dist/fields/SlugField.d.ts +11 -0
- package/dist/fields/SlugField.d.ts.map +1 -0
- package/dist/fields/SlugField.js +19 -0
- package/dist/fields/SlugField.js.map +1 -0
- package/dist/fields/TagsInputField.d.ts +65 -0
- package/dist/fields/TagsInputField.d.ts.map +1 -0
- package/dist/fields/TagsInputField.js +104 -0
- package/dist/fields/TagsInputField.js.map +1 -0
- package/dist/fields/TextField.d.ts +11 -0
- package/dist/fields/TextField.d.ts.map +1 -0
- package/dist/fields/TextField.js +19 -0
- package/dist/fields/TextField.js.map +1 -0
- package/dist/fields/TextareaField.d.ts +40 -0
- package/dist/fields/TextareaField.d.ts.map +1 -0
- package/dist/fields/TextareaField.js +51 -0
- package/dist/fields/TextareaField.js.map +1 -0
- package/dist/fields/ToggleButtonsField.d.ts +24 -0
- package/dist/fields/ToggleButtonsField.d.ts.map +1 -0
- package/dist/fields/ToggleButtonsField.js +41 -0
- package/dist/fields/ToggleButtonsField.js.map +1 -0
- package/dist/fields/ToggleField.d.ts +8 -0
- package/dist/fields/ToggleField.d.ts.map +1 -0
- package/dist/fields/ToggleField.js +13 -0
- package/dist/fields/ToggleField.js.map +1 -0
- package/dist/fields/optionsResolver.d.ts +54 -0
- package/dist/fields/optionsResolver.d.ts.map +1 -0
- package/dist/fields/optionsResolver.js +62 -0
- package/dist/fields/optionsResolver.js.map +1 -0
- package/dist/fields/resolveField.d.ts +21 -0
- package/dist/fields/resolveField.d.ts.map +1 -0
- package/dist/fields/resolveField.js +26 -0
- package/dist/fields/resolveField.js.map +1 -0
- package/dist/filters/BooleanFilter.d.ts +20 -0
- package/dist/filters/BooleanFilter.d.ts.map +1 -0
- package/dist/filters/BooleanFilter.js +31 -0
- package/dist/filters/BooleanFilter.js.map +1 -0
- package/dist/filters/DateRangeFilter.d.ts +68 -0
- package/dist/filters/DateRangeFilter.d.ts.map +1 -0
- package/dist/filters/DateRangeFilter.js +137 -0
- package/dist/filters/DateRangeFilter.js.map +1 -0
- package/dist/filters/Filter.d.ts +140 -0
- package/dist/filters/Filter.d.ts.map +1 -0
- package/dist/filters/Filter.js +99 -0
- package/dist/filters/Filter.js.map +1 -0
- package/dist/filters/FormFilter.d.ts +103 -0
- package/dist/filters/FormFilter.d.ts.map +1 -0
- package/dist/filters/FormFilter.js +180 -0
- package/dist/filters/FormFilter.js.map +1 -0
- package/dist/filters/MultiSelectFilter.d.ts +41 -0
- package/dist/filters/MultiSelectFilter.d.ts.map +1 -0
- package/dist/filters/MultiSelectFilter.js +67 -0
- package/dist/filters/MultiSelectFilter.js.map +1 -0
- package/dist/filters/QueryBuilderFilter.d.ts +145 -0
- package/dist/filters/QueryBuilderFilter.d.ts.map +1 -0
- package/dist/filters/QueryBuilderFilter.js +323 -0
- package/dist/filters/QueryBuilderFilter.js.map +1 -0
- package/dist/filters/SelectFilter.d.ts +26 -0
- package/dist/filters/SelectFilter.d.ts.map +1 -0
- package/dist/filters/SelectFilter.js +35 -0
- package/dist/filters/SelectFilter.js.map +1 -0
- package/dist/filters/TernaryFilter.d.ts +35 -0
- package/dist/filters/TernaryFilter.d.ts.map +1 -0
- package/dist/filters/TernaryFilter.js +71 -0
- package/dist/filters/TernaryFilter.js.map +1 -0
- package/dist/filters/TrashedFilter.d.ts +28 -0
- package/dist/filters/TrashedFilter.d.ts.map +1 -0
- package/dist/filters/TrashedFilter.js +52 -0
- package/dist/filters/TrashedFilter.js.map +1 -0
- package/dist/filters/queryBuilder/BooleanConstraint.d.ts +13 -0
- package/dist/filters/queryBuilder/BooleanConstraint.d.ts.map +1 -0
- package/dist/filters/queryBuilder/BooleanConstraint.js +27 -0
- package/dist/filters/queryBuilder/BooleanConstraint.js.map +1 -0
- package/dist/filters/queryBuilder/Constraint.d.ts +74 -0
- package/dist/filters/queryBuilder/Constraint.d.ts.map +1 -0
- package/dist/filters/queryBuilder/Constraint.js +45 -0
- package/dist/filters/queryBuilder/Constraint.js.map +1 -0
- package/dist/filters/queryBuilder/DateConstraint.d.ts +18 -0
- package/dist/filters/queryBuilder/DateConstraint.d.ts.map +1 -0
- package/dist/filters/queryBuilder/DateConstraint.js +63 -0
- package/dist/filters/queryBuilder/DateConstraint.js.map +1 -0
- package/dist/filters/queryBuilder/NumberConstraint.d.ts +12 -0
- package/dist/filters/queryBuilder/NumberConstraint.d.ts.map +1 -0
- package/dist/filters/queryBuilder/NumberConstraint.js +61 -0
- package/dist/filters/queryBuilder/NumberConstraint.js.map +1 -0
- package/dist/filters/queryBuilder/SelectConstraint.d.ts +22 -0
- package/dist/filters/queryBuilder/SelectConstraint.d.ts.map +1 -0
- package/dist/filters/queryBuilder/SelectConstraint.js +66 -0
- package/dist/filters/queryBuilder/SelectConstraint.js.map +1 -0
- package/dist/filters/queryBuilder/TextConstraint.d.ts +18 -0
- package/dist/filters/queryBuilder/TextConstraint.d.ts.map +1 -0
- package/dist/filters/queryBuilder/TextConstraint.js +58 -0
- package/dist/filters/queryBuilder/TextConstraint.js.map +1 -0
- package/dist/filters/queryBuilder/index.d.ts +7 -0
- package/dist/filters/queryBuilder/index.d.ts.map +1 -0
- package/dist/filters/queryBuilder/index.js +7 -0
- package/dist/filters/queryBuilder/index.js.map +1 -0
- package/dist/icons/index.d.ts +3 -0
- package/dist/icons/index.d.ts.map +1 -0
- package/dist/icons/index.js +3 -0
- package/dist/icons/index.js.map +1 -0
- package/dist/icons/lucide.d.ts +16 -0
- package/dist/icons/lucide.d.ts.map +1 -0
- package/dist/icons/lucide.js +173 -0
- package/dist/icons/lucide.js.map +1 -0
- package/dist/icons/registry.d.ts +27 -0
- package/dist/icons/registry.d.ts.map +1 -0
- package/dist/icons/registry.js +35 -0
- package/dist/icons/registry.js.map +1 -0
- package/dist/icons/types.d.ts +38 -0
- package/dist/icons/types.d.ts.map +1 -0
- package/dist/icons/types.js +23 -0
- package/dist/icons/types.js.map +1 -0
- package/dist/index.d.ts +118 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +135 -0
- package/dist/index.js.map +1 -0
- package/dist/io/csv.d.ts +51 -0
- package/dist/io/csv.d.ts.map +1 -0
- package/dist/io/csv.js +168 -0
- package/dist/io/csv.js.map +1 -0
- package/dist/notifications/Notification.d.ts +181 -0
- package/dist/notifications/Notification.d.ts.map +1 -0
- package/dist/notifications/Notification.js +290 -0
- package/dist/notifications/Notification.js.map +1 -0
- package/dist/notifications/broadcast.d.ts +58 -0
- package/dist/notifications/broadcast.d.ts.map +1 -0
- package/dist/notifications/broadcast.js +72 -0
- package/dist/notifications/broadcast.js.map +1 -0
- package/dist/notifications/database.d.ts +164 -0
- package/dist/notifications/database.d.ts.map +1 -0
- package/dist/notifications/database.js +321 -0
- package/dist/notifications/database.js.map +1 -0
- package/dist/notifications/dispatchNotificationAction.d.ts +48 -0
- package/dist/notifications/dispatchNotificationAction.d.ts.map +1 -0
- package/dist/notifications/dispatchNotificationAction.js +100 -0
- package/dist/notifications/dispatchNotificationAction.js.map +1 -0
- package/dist/notifications/flash.d.ts +34 -0
- package/dist/notifications/flash.d.ts.map +1 -0
- package/dist/notifications/flash.js +51 -0
- package/dist/notifications/flash.js.map +1 -0
- package/dist/notifications/index.d.ts +8 -0
- package/dist/notifications/index.d.ts.map +1 -0
- package/dist/notifications/index.js +6 -0
- package/dist/notifications/index.js.map +1 -0
- package/dist/notifications/registerBroadcastAuth.d.ts +45 -0
- package/dist/notifications/registerBroadcastAuth.d.ts.map +1 -0
- package/dist/notifications/registerBroadcastAuth.js +86 -0
- package/dist/notifications/registerBroadcastAuth.js.map +1 -0
- package/dist/notifications/resolveSavedNotification.d.ts +21 -0
- package/dist/notifications/resolveSavedNotification.d.ts.map +1 -0
- package/dist/notifications/resolveSavedNotification.js +43 -0
- package/dist/notifications/resolveSavedNotification.js.map +1 -0
- package/dist/notifications/types.d.ts +87 -0
- package/dist/notifications/types.d.ts.map +1 -0
- package/dist/notifications/types.js +2 -0
- package/dist/notifications/types.js.map +1 -0
- package/dist/orm/m2mAccessor.d.ts +49 -0
- package/dist/orm/m2mAccessor.d.ts.map +1 -0
- package/dist/orm/m2mAccessor.js +45 -0
- package/dist/orm/m2mAccessor.js.map +1 -0
- package/dist/orm/modelDefaults.d.ts +347 -0
- package/dist/orm/modelDefaults.d.ts.map +1 -0
- package/dist/orm/modelDefaults.js +375 -0
- package/dist/orm/modelDefaults.js.map +1 -0
- package/dist/pageData.d.ts +778 -0
- package/dist/pageData.d.ts.map +1 -0
- package/dist/pageData.js +3725 -0
- package/dist/pageData.js.map +1 -0
- package/dist/plugins/index.d.ts +2 -0
- package/dist/plugins/index.d.ts.map +1 -0
- package/dist/plugins/index.js +2 -0
- package/dist/plugins/index.js.map +1 -0
- package/dist/plugins/themeEditor.d.ts +17 -0
- package/dist/plugins/themeEditor.d.ts.map +1 -0
- package/dist/plugins/themeEditor.js +23 -0
- package/dist/plugins/themeEditor.js.map +1 -0
- package/dist/react/AppShell.d.ts +58 -0
- package/dist/react/AppShell.d.ts.map +1 -0
- package/dist/react/AppShell.js +58 -0
- package/dist/react/AppShell.js.map +1 -0
- package/dist/react/CommandPalette.d.ts +21 -0
- package/dist/react/CommandPalette.d.ts.map +1 -0
- package/dist/react/CommandPalette.js +236 -0
- package/dist/react/CommandPalette.js.map +1 -0
- package/dist/react/FormStateContext.d.ts +83 -0
- package/dist/react/FormStateContext.d.ts.map +1 -0
- package/dist/react/FormStateContext.js +284 -0
- package/dist/react/FormStateContext.js.map +1 -0
- package/dist/react/HeadHooks.d.ts +26 -0
- package/dist/react/HeadHooks.d.ts.map +1 -0
- package/dist/react/HeadHooks.js +141 -0
- package/dist/react/HeadHooks.js.map +1 -0
- package/dist/react/NotificationActionStrip.d.ts +39 -0
- package/dist/react/NotificationActionStrip.d.ts.map +1 -0
- package/dist/react/NotificationActionStrip.js +129 -0
- package/dist/react/NotificationActionStrip.js.map +1 -0
- package/dist/react/NotificationBell.d.ts +20 -0
- package/dist/react/NotificationBell.d.ts.map +1 -0
- package/dist/react/NotificationBell.js +273 -0
- package/dist/react/NotificationBell.js.map +1 -0
- package/dist/react/RenderHookSlot.d.ts +20 -0
- package/dist/react/RenderHookSlot.d.ts.map +1 -0
- package/dist/react/RenderHookSlot.js +24 -0
- package/dist/react/RenderHookSlot.js.map +1 -0
- package/dist/react/RightSidebar.d.ts +33 -0
- package/dist/react/RightSidebar.d.ts.map +1 -0
- package/dist/react/RightSidebar.js +82 -0
- package/dist/react/RightSidebar.js.map +1 -0
- package/dist/react/RightSidebarContext.d.ts +62 -0
- package/dist/react/RightSidebarContext.d.ts.map +1 -0
- package/dist/react/RightSidebarContext.js +178 -0
- package/dist/react/RightSidebarContext.js.map +1 -0
- package/dist/react/RightSidebarTrigger.d.ts +16 -0
- package/dist/react/RightSidebarTrigger.d.ts.map +1 -0
- package/dist/react/RightSidebarTrigger.js +24 -0
- package/dist/react/RightSidebarTrigger.js.map +1 -0
- package/dist/react/SchemaRenderer.d.ts +63 -0
- package/dist/react/SchemaRenderer.d.ts.map +1 -0
- package/dist/react/SchemaRenderer.js +3458 -0
- package/dist/react/SchemaRenderer.js.map +1 -0
- package/dist/react/SearchTrigger.d.ts +13 -0
- package/dist/react/SearchTrigger.d.ts.map +1 -0
- package/dist/react/SearchTrigger.js +30 -0
- package/dist/react/SearchTrigger.js.map +1 -0
- package/dist/react/ThemeProvider.d.ts +18 -0
- package/dist/react/ThemeProvider.d.ts.map +1 -0
- package/dist/react/ThemeProvider.js +66 -0
- package/dist/react/ThemeProvider.js.map +1 -0
- package/dist/react/ThemeSettingsPage.d.ts +10 -0
- package/dist/react/ThemeSettingsPage.d.ts.map +1 -0
- package/dist/react/ThemeSettingsPage.js +293 -0
- package/dist/react/ThemeSettingsPage.js.map +1 -0
- package/dist/react/ThemeToggle.d.ts +2 -0
- package/dist/react/ThemeToggle.d.ts.map +1 -0
- package/dist/react/ThemeToggle.js +8 -0
- package/dist/react/ThemeToggle.js.map +1 -0
- package/dist/react/Toaster.d.ts +25 -0
- package/dist/react/Toaster.d.ts.map +1 -0
- package/dist/react/Toaster.js +89 -0
- package/dist/react/Toaster.js.map +1 -0
- package/dist/react/UserMenu.d.ts +23 -0
- package/dist/react/UserMenu.d.ts.map +1 -0
- package/dist/react/UserMenu.js +78 -0
- package/dist/react/UserMenu.js.map +1 -0
- package/dist/react/WidgetDataContext.d.ts +64 -0
- package/dist/react/WidgetDataContext.d.ts.map +1 -0
- package/dist/react/WidgetDataContext.js +89 -0
- package/dist/react/WidgetDataContext.js.map +1 -0
- package/dist/react/cells/EditableCell.d.ts +20 -0
- package/dist/react/cells/EditableCell.d.ts.map +1 -0
- package/dist/react/cells/EditableCell.js +251 -0
- package/dist/react/cells/EditableCell.js.map +1 -0
- package/dist/react/fieldJsHandler.d.ts +33 -0
- package/dist/react/fieldJsHandler.d.ts.map +1 -0
- package/dist/react/fieldJsHandler.js +61 -0
- package/dist/react/fieldJsHandler.js.map +1 -0
- package/dist/react/fields/BuilderInput.d.ts +21 -0
- package/dist/react/fields/BuilderInput.d.ts.map +1 -0
- package/dist/react/fields/BuilderInput.js +553 -0
- package/dist/react/fields/BuilderInput.js.map +1 -0
- package/dist/react/fields/CheckboxInput.d.ts +9 -0
- package/dist/react/fields/CheckboxInput.d.ts.map +1 -0
- package/dist/react/fields/CheckboxInput.js +23 -0
- package/dist/react/fields/CheckboxInput.js.map +1 -0
- package/dist/react/fields/CheckboxListInput.d.ts +19 -0
- package/dist/react/fields/CheckboxListInput.d.ts.map +1 -0
- package/dist/react/fields/CheckboxListInput.js +53 -0
- package/dist/react/fields/CheckboxListInput.js.map +1 -0
- package/dist/react/fields/ColorInput.d.ts +12 -0
- package/dist/react/fields/ColorInput.d.ts.map +1 -0
- package/dist/react/fields/ColorInput.js +29 -0
- package/dist/react/fields/ColorInput.js.map +1 -0
- package/dist/react/fields/DateFieldInput.d.ts +8 -0
- package/dist/react/fields/DateFieldInput.d.ts.map +1 -0
- package/dist/react/fields/DateFieldInput.js +39 -0
- package/dist/react/fields/DateFieldInput.js.map +1 -0
- package/dist/react/fields/DateTimeInput.d.ts +13 -0
- package/dist/react/fields/DateTimeInput.d.ts.map +1 -0
- package/dist/react/fields/DateTimeInput.js +29 -0
- package/dist/react/fields/DateTimeInput.js.map +1 -0
- package/dist/react/fields/FieldShell.d.ts +23 -0
- package/dist/react/fields/FieldShell.d.ts.map +1 -0
- package/dist/react/fields/FieldShell.js +46 -0
- package/dist/react/fields/FieldShell.js.map +1 -0
- package/dist/react/fields/FileUploadInput.d.ts +21 -0
- package/dist/react/fields/FileUploadInput.d.ts.map +1 -0
- package/dist/react/fields/FileUploadInput.js +120 -0
- package/dist/react/fields/FileUploadInput.js.map +1 -0
- package/dist/react/fields/HiddenInput.d.ts +11 -0
- package/dist/react/fields/HiddenInput.d.ts.map +1 -0
- package/dist/react/fields/HiddenInput.js +14 -0
- package/dist/react/fields/HiddenInput.js.map +1 -0
- package/dist/react/fields/KeyValueInput.d.ts +18 -0
- package/dist/react/fields/KeyValueInput.d.ts.map +1 -0
- package/dist/react/fields/KeyValueInput.js +122 -0
- package/dist/react/fields/KeyValueInput.js.map +1 -0
- package/dist/react/fields/MarkdownInput.d.ts +29 -0
- package/dist/react/fields/MarkdownInput.d.ts.map +1 -0
- package/dist/react/fields/MarkdownInput.js +250 -0
- package/dist/react/fields/MarkdownInput.js.map +1 -0
- package/dist/react/fields/RadioInput.d.ts +18 -0
- package/dist/react/fields/RadioInput.d.ts.map +1 -0
- package/dist/react/fields/RadioInput.js +34 -0
- package/dist/react/fields/RadioInput.js.map +1 -0
- package/dist/react/fields/RepeaterInput.d.ts +92 -0
- package/dist/react/fields/RepeaterInput.d.ts.map +1 -0
- package/dist/react/fields/RepeaterInput.js +705 -0
- package/dist/react/fields/RepeaterInput.js.map +1 -0
- package/dist/react/fields/SelectFieldInput.d.ts +23 -0
- package/dist/react/fields/SelectFieldInput.d.ts.map +1 -0
- package/dist/react/fields/SelectFieldInput.js +146 -0
- package/dist/react/fields/SelectFieldInput.js.map +1 -0
- package/dist/react/fields/SliderInput.d.ts +16 -0
- package/dist/react/fields/SliderInput.d.ts.map +1 -0
- package/dist/react/fields/SliderInput.js +37 -0
- package/dist/react/fields/SliderInput.js.map +1 -0
- package/dist/react/fields/TagsInput.d.ts +27 -0
- package/dist/react/fields/TagsInput.d.ts.map +1 -0
- package/dist/react/fields/TagsInput.js +189 -0
- package/dist/react/fields/TagsInput.js.map +1 -0
- package/dist/react/fields/TextLikeInput.d.ts +18 -0
- package/dist/react/fields/TextLikeInput.d.ts.map +1 -0
- package/dist/react/fields/TextLikeInput.js +46 -0
- package/dist/react/fields/TextLikeInput.js.map +1 -0
- package/dist/react/fields/ToggleButtonsInput.d.ts +20 -0
- package/dist/react/fields/ToggleButtonsInput.d.ts.map +1 -0
- package/dist/react/fields/ToggleButtonsInput.js +42 -0
- package/dist/react/fields/ToggleButtonsInput.js.map +1 -0
- package/dist/react/fields/ToggleFieldInput.d.ts +7 -0
- package/dist/react/fields/ToggleFieldInput.d.ts.map +1 -0
- package/dist/react/fields/ToggleFieldInput.js +30 -0
- package/dist/react/fields/ToggleFieldInput.js.map +1 -0
- package/dist/react/fields/rowChromeButton.d.ts +84 -0
- package/dist/react/fields/rowChromeButton.d.ts.map +1 -0
- package/dist/react/fields/rowChromeButton.js +111 -0
- package/dist/react/fields/rowChromeButton.js.map +1 -0
- package/dist/react/fields/syncRowGates.d.ts +11 -0
- package/dist/react/fields/syncRowGates.d.ts.map +1 -0
- package/dist/react/fields/syncRowGates.js +55 -0
- package/dist/react/fields/syncRowGates.js.map +1 -0
- package/dist/react/formStateHelpers.d.ts +44 -0
- package/dist/react/formStateHelpers.d.ts.map +1 -0
- package/dist/react/formStateHelpers.js +230 -0
- package/dist/react/formStateHelpers.js.map +1 -0
- package/dist/react/hooks/use-mobile.d.ts +2 -0
- package/dist/react/hooks/use-mobile.d.ts.map +1 -0
- package/dist/react/hooks/use-mobile.js +16 -0
- package/dist/react/hooks/use-mobile.js.map +1 -0
- package/dist/react/icon-context.d.ts +35 -0
- package/dist/react/icon-context.d.ts.map +1 -0
- package/dist/react/icon-context.js +45 -0
- package/dist/react/icon-context.js.map +1 -0
- package/dist/react/index.d.ts +26 -0
- package/dist/react/index.d.ts.map +1 -0
- package/dist/react/index.js +28 -0
- package/dist/react/index.js.map +1 -0
- package/dist/react/layouts/SidebarLayout.d.ts +3 -0
- package/dist/react/layouts/SidebarLayout.d.ts.map +1 -0
- package/dist/react/layouts/SidebarLayout.js +85 -0
- package/dist/react/layouts/SidebarLayout.js.map +1 -0
- package/dist/react/layouts/TopbarLayout.d.ts +3 -0
- package/dist/react/layouts/TopbarLayout.d.ts.map +1 -0
- package/dist/react/layouts/TopbarLayout.js +103 -0
- package/dist/react/layouts/TopbarLayout.js.map +1 -0
- package/dist/react/navigate.d.ts +22 -0
- package/dist/react/navigate.d.ts.map +1 -0
- package/dist/react/navigate.js +30 -0
- package/dist/react/navigate.js.map +1 -0
- package/dist/react/registry.d.ts +35 -0
- package/dist/react/registry.d.ts.map +1 -0
- package/dist/react/registry.js +22 -0
- package/dist/react/registry.js.map +1 -0
- package/dist/react/right-panel-registry.d.ts +32 -0
- package/dist/react/right-panel-registry.d.ts.map +1 -0
- package/dist/react/right-panel-registry.js +20 -0
- package/dist/react/right-panel-registry.js.map +1 -0
- package/dist/react/theme-preview/apply.d.ts +11 -0
- package/dist/react/theme-preview/apply.d.ts.map +1 -0
- package/dist/react/theme-preview/apply.js +93 -0
- package/dist/react/theme-preview/apply.js.map +1 -0
- package/dist/react/theme-preview/build-html.d.ts +3 -0
- package/dist/react/theme-preview/build-html.d.ts.map +1 -0
- package/dist/react/theme-preview/build-html.js +437 -0
- package/dist/react/theme-preview/build-html.js.map +1 -0
- package/dist/react/ui/button.d.ts +9 -0
- package/dist/react/ui/button.d.ts.map +1 -0
- package/dist/react/ui/button.js +35 -0
- package/dist/react/ui/button.js.map +1 -0
- package/dist/react/ui/calendar.d.ts +5 -0
- package/dist/react/ui/calendar.d.ts.map +1 -0
- package/dist/react/ui/calendar.js +34 -0
- package/dist/react/ui/calendar.js.map +1 -0
- package/dist/react/ui/checkbox.d.ts +4 -0
- package/dist/react/ui/checkbox.d.ts.map +1 -0
- package/dist/react/ui/checkbox.js +9 -0
- package/dist/react/ui/checkbox.js.map +1 -0
- package/dist/react/ui/dialog.d.ts +12 -0
- package/dist/react/ui/dialog.d.ts.map +1 -0
- package/dist/react/ui/dialog.js +34 -0
- package/dist/react/ui/dialog.js.map +1 -0
- package/dist/react/ui/dropdown-menu.d.ts +12 -0
- package/dist/react/ui/dropdown-menu.d.ts.map +1 -0
- package/dist/react/ui/dropdown-menu.js +23 -0
- package/dist/react/ui/dropdown-menu.js.map +1 -0
- package/dist/react/ui/input.d.ts +4 -0
- package/dist/react/ui/input.d.ts.map +1 -0
- package/dist/react/ui/input.js +8 -0
- package/dist/react/ui/input.js.map +1 -0
- package/dist/react/ui/label.d.ts +4 -0
- package/dist/react/ui/label.d.ts.map +1 -0
- package/dist/react/ui/label.js +7 -0
- package/dist/react/ui/label.js.map +1 -0
- package/dist/react/ui/popover.d.ts +6 -0
- package/dist/react/ui/popover.d.ts.map +1 -0
- package/dist/react/ui/popover.js +14 -0
- package/dist/react/ui/popover.js.map +1 -0
- package/dist/react/ui/select.d.ts +17 -0
- package/dist/react/ui/select.d.ts.map +1 -0
- package/dist/react/ui/select.js +39 -0
- package/dist/react/ui/select.js.map +1 -0
- package/dist/react/ui/separator.d.ts +4 -0
- package/dist/react/ui/separator.d.ts.map +1 -0
- package/dist/react/ui/separator.js +9 -0
- package/dist/react/ui/separator.js.map +1 -0
- package/dist/react/ui/sheet.d.ts +15 -0
- package/dist/react/ui/sheet.d.ts.map +1 -0
- package/dist/react/ui/sheet.js +37 -0
- package/dist/react/ui/sheet.js.map +1 -0
- package/dist/react/ui/sidebar.d.ts +64 -0
- package/dist/react/ui/sidebar.d.ts.map +1 -0
- package/dist/react/ui/sidebar.js +257 -0
- package/dist/react/ui/sidebar.js.map +1 -0
- package/dist/react/ui/skeleton.d.ts +3 -0
- package/dist/react/ui/skeleton.d.ts.map +1 -0
- package/dist/react/ui/skeleton.js +7 -0
- package/dist/react/ui/skeleton.js.map +1 -0
- package/dist/react/ui/slider.d.ts +4 -0
- package/dist/react/ui/slider.d.ts.map +1 -0
- package/dist/react/ui/slider.js +8 -0
- package/dist/react/ui/slider.js.map +1 -0
- package/dist/react/ui/switch.d.ts +4 -0
- package/dist/react/ui/switch.d.ts.map +1 -0
- package/dist/react/ui/switch.js +8 -0
- package/dist/react/ui/switch.js.map +1 -0
- package/dist/react/ui/table.d.ts +11 -0
- package/dist/react/ui/table.d.ts.map +1 -0
- package/dist/react/ui/table.js +28 -0
- package/dist/react/ui/table.js.map +1 -0
- package/dist/react/ui/tabs.d.ts +7 -0
- package/dist/react/ui/tabs.d.ts.map +1 -0
- package/dist/react/ui/tabs.js +17 -0
- package/dist/react/ui/tabs.js.map +1 -0
- package/dist/react/ui/textarea.d.ts +4 -0
- package/dist/react/ui/textarea.d.ts.map +1 -0
- package/dist/react/ui/textarea.js +7 -0
- package/dist/react/ui/textarea.js.map +1 -0
- package/dist/react/ui/tooltip.d.ts +7 -0
- package/dist/react/ui/tooltip.d.ts.map +1 -0
- package/dist/react/ui/tooltip.js +17 -0
- package/dist/react/ui/tooltip.js.map +1 -0
- package/dist/react/useResizableWidth.d.ts +47 -0
- package/dist/react/useResizableWidth.d.ts.map +1 -0
- package/dist/react/useResizableWidth.js +99 -0
- package/dist/react/useResizableWidth.js.map +1 -0
- package/dist/react/utils.d.ts +3 -0
- package/dist/react/utils.d.ts.map +1 -0
- package/dist/react/utils.js +6 -0
- package/dist/react/utils.js.map +1 -0
- package/dist/react/widgetRegistry.d.ts +33 -0
- package/dist/react/widgetRegistry.d.ts.map +1 -0
- package/dist/react/widgetRegistry.js +15 -0
- package/dist/react/widgetRegistry.js.map +1 -0
- package/dist/react/widgets/StatsOverviewRenderer.d.ts +6 -0
- package/dist/react/widgets/StatsOverviewRenderer.d.ts.map +1 -0
- package/dist/react/widgets/StatsOverviewRenderer.js +124 -0
- package/dist/react/widgets/StatsOverviewRenderer.js.map +1 -0
- package/dist/react/widgets/TableWidgetRenderer.d.ts +6 -0
- package/dist/react/widgets/TableWidgetRenderer.d.ts.map +1 -0
- package/dist/react/widgets/TableWidgetRenderer.js +123 -0
- package/dist/react/widgets/TableWidgetRenderer.js.map +1 -0
- package/dist/react/widgets/ViewRenderer.d.ts +16 -0
- package/dist/react/widgets/ViewRenderer.d.ts.map +1 -0
- package/dist/react/widgets/ViewRenderer.js +26 -0
- package/dist/react/widgets/ViewRenderer.js.map +1 -0
- package/dist/richtext/index.d.ts +2 -0
- package/dist/richtext/index.d.ts.map +1 -0
- package/dist/richtext/index.js +2 -0
- package/dist/richtext/index.js.map +1 -0
- package/dist/richtext/registry.d.ts +55 -0
- package/dist/richtext/registry.d.ts.map +1 -0
- package/dist/richtext/registry.js +66 -0
- package/dist/richtext/registry.js.map +1 -0
- package/dist/routes.d.ts +9 -0
- package/dist/routes.d.ts.map +1 -0
- package/dist/routes.js +3116 -0
- package/dist/routes.js.map +1 -0
- package/dist/schema/Alert.d.ts +33 -0
- package/dist/schema/Alert.d.ts.map +1 -0
- package/dist/schema/Alert.js +41 -0
- package/dist/schema/Alert.js.map +1 -0
- package/dist/schema/Block.d.ts +112 -0
- package/dist/schema/Block.d.ts.map +1 -0
- package/dist/schema/Block.js +136 -0
- package/dist/schema/Block.js.map +1 -0
- package/dist/schema/Breadcrumbs.d.ts +31 -0
- package/dist/schema/Breadcrumbs.d.ts.map +1 -0
- package/dist/schema/Breadcrumbs.js +30 -0
- package/dist/schema/Breadcrumbs.js.map +1 -0
- package/dist/schema/Card.d.ts +17 -0
- package/dist/schema/Card.d.ts.map +1 -0
- package/dist/schema/Card.js +31 -0
- package/dist/schema/Card.js.map +1 -0
- package/dist/schema/Divider.d.ts +12 -0
- package/dist/schema/Divider.d.ts.map +1 -0
- package/dist/schema/Divider.js +19 -0
- package/dist/schema/Divider.js.map +1 -0
- package/dist/schema/Element.d.ts +150 -0
- package/dist/schema/Element.d.ts.map +1 -0
- package/dist/schema/Element.js +124 -0
- package/dist/schema/Element.js.map +1 -0
- package/dist/schema/EmptyState.d.ts +48 -0
- package/dist/schema/EmptyState.d.ts.map +1 -0
- package/dist/schema/EmptyState.js +57 -0
- package/dist/schema/EmptyState.js.map +1 -0
- package/dist/schema/Fieldset.d.ts +25 -0
- package/dist/schema/Fieldset.d.ts.map +1 -0
- package/dist/schema/Fieldset.js +39 -0
- package/dist/schema/Fieldset.js.map +1 -0
- package/dist/schema/Grid.d.ts +23 -0
- package/dist/schema/Grid.d.ts.map +1 -0
- package/dist/schema/Grid.js +36 -0
- package/dist/schema/Grid.js.map +1 -0
- package/dist/schema/Group.d.ts +19 -0
- package/dist/schema/Group.d.ts.map +1 -0
- package/dist/schema/Group.js +26 -0
- package/dist/schema/Group.js.map +1 -0
- package/dist/schema/Heading.d.ts +25 -0
- package/dist/schema/Heading.d.ts.map +1 -0
- package/dist/schema/Heading.js +34 -0
- package/dist/schema/Heading.js.map +1 -0
- package/dist/schema/Html.d.ts +48 -0
- package/dist/schema/Html.d.ts.map +1 -0
- package/dist/schema/Html.js +60 -0
- package/dist/schema/Html.js.map +1 -0
- package/dist/schema/Icon.d.ts +34 -0
- package/dist/schema/Icon.d.ts.map +1 -0
- package/dist/schema/Icon.js +40 -0
- package/dist/schema/Icon.js.map +1 -0
- package/dist/schema/Image.d.ts +38 -0
- package/dist/schema/Image.d.ts.map +1 -0
- package/dist/schema/Image.js +48 -0
- package/dist/schema/Image.js.map +1 -0
- package/dist/schema/LinkTag.d.ts +48 -0
- package/dist/schema/LinkTag.d.ts.map +1 -0
- package/dist/schema/LinkTag.js +16 -0
- package/dist/schema/LinkTag.js.map +1 -0
- package/dist/schema/Markdown.d.ts +57 -0
- package/dist/schema/Markdown.d.ts.map +1 -0
- package/dist/schema/Markdown.js +75 -0
- package/dist/schema/Markdown.js.map +1 -0
- package/dist/schema/MetaTag.d.ts +41 -0
- package/dist/schema/MetaTag.d.ts.map +1 -0
- package/dist/schema/MetaTag.js +16 -0
- package/dist/schema/MetaTag.js.map +1 -0
- package/dist/schema/RelationTabs.d.ts +50 -0
- package/dist/schema/RelationTabs.d.ts.map +1 -0
- package/dist/schema/RelationTabs.js +48 -0
- package/dist/schema/RelationTabs.js.map +1 -0
- package/dist/schema/ScriptTag.d.ts +63 -0
- package/dist/schema/ScriptTag.d.ts.map +1 -0
- package/dist/schema/ScriptTag.js +16 -0
- package/dist/schema/ScriptTag.js.map +1 -0
- package/dist/schema/Section.d.ts +93 -0
- package/dist/schema/Section.d.ts.map +1 -0
- package/dist/schema/Section.js +127 -0
- package/dist/schema/Section.js.map +1 -0
- package/dist/schema/ServerDataElement.d.ts +101 -0
- package/dist/schema/ServerDataElement.d.ts.map +1 -0
- package/dist/schema/ServerDataElement.js +135 -0
- package/dist/schema/ServerDataElement.js.map +1 -0
- package/dist/schema/Split.d.ts +31 -0
- package/dist/schema/Split.d.ts.map +1 -0
- package/dist/schema/Split.js +41 -0
- package/dist/schema/Split.js.map +1 -0
- package/dist/schema/Stat.d.ts +92 -0
- package/dist/schema/Stat.d.ts.map +1 -0
- package/dist/schema/Stat.js +116 -0
- package/dist/schema/Stat.js.map +1 -0
- package/dist/schema/StatsOverview.d.ts +76 -0
- package/dist/schema/StatsOverview.d.ts.map +1 -0
- package/dist/schema/StatsOverview.js +71 -0
- package/dist/schema/StatsOverview.js.map +1 -0
- package/dist/schema/StyleTag.d.ts +32 -0
- package/dist/schema/StyleTag.d.ts.map +1 -0
- package/dist/schema/StyleTag.js +38 -0
- package/dist/schema/StyleTag.js.map +1 -0
- package/dist/schema/TableWidget.d.ts +148 -0
- package/dist/schema/TableWidget.d.ts.map +1 -0
- package/dist/schema/TableWidget.js +190 -0
- package/dist/schema/TableWidget.js.map +1 -0
- package/dist/schema/Tabs.d.ts +40 -0
- package/dist/schema/Tabs.d.ts.map +1 -0
- package/dist/schema/Tabs.js +66 -0
- package/dist/schema/Tabs.js.map +1 -0
- package/dist/schema/Text.d.ts +33 -0
- package/dist/schema/Text.d.ts.map +1 -0
- package/dist/schema/Text.js +40 -0
- package/dist/schema/Text.js.map +1 -0
- package/dist/schema/UnorderedList.d.ts +36 -0
- package/dist/schema/UnorderedList.d.ts.map +1 -0
- package/dist/schema/UnorderedList.js +42 -0
- package/dist/schema/UnorderedList.js.map +1 -0
- package/dist/schema/View.d.ts +81 -0
- package/dist/schema/View.d.ts.map +1 -0
- package/dist/schema/View.js +81 -0
- package/dist/schema/View.js.map +1 -0
- package/dist/schema/Wizard.d.ts +67 -0
- package/dist/schema/Wizard.d.ts.map +1 -0
- package/dist/schema/Wizard.js +94 -0
- package/dist/schema/Wizard.js.map +1 -0
- package/dist/schema/index.d.ts +26 -0
- package/dist/schema/index.d.ts.map +1 -0
- package/dist/schema/index.js +26 -0
- package/dist/schema/index.js.map +1 -0
- package/dist/schema/resolveSchema.d.ts +122 -0
- package/dist/schema/resolveSchema.d.ts.map +1 -0
- package/dist/schema/resolveSchema.js +648 -0
- package/dist/schema/resolveSchema.js.map +1 -0
- package/dist/schema/sanitize.d.ts +21 -0
- package/dist/schema/sanitize.d.ts.map +1 -0
- package/dist/schema/sanitize.js +46 -0
- package/dist/schema/sanitize.js.map +1 -0
- package/dist/search.d.ts +53 -0
- package/dist/search.d.ts.map +1 -0
- package/dist/search.js +114 -0
- package/dist/search.js.map +1 -0
- package/dist/sessionFilters.d.ts +8 -0
- package/dist/sessionFilters.d.ts.map +1 -0
- package/dist/sessionFilters.js +115 -0
- package/dist/sessionFilters.js.map +1 -0
- package/dist/summarizers/Summarizer.d.ts +65 -0
- package/dist/summarizers/Summarizer.d.ts.map +1 -0
- package/dist/summarizers/Summarizer.js +98 -0
- package/dist/summarizers/Summarizer.js.map +1 -0
- package/dist/summarizers/index.d.ts +2 -0
- package/dist/summarizers/index.d.ts.map +1 -0
- package/dist/summarizers/index.js +2 -0
- package/dist/summarizers/index.js.map +1 -0
- package/dist/theme/base-colors.d.ts +3 -0
- package/dist/theme/base-colors.d.ts.map +1 -0
- package/dist/theme/base-colors.js +64 -0
- package/dist/theme/base-colors.js.map +1 -0
- package/dist/theme/chart-colors.d.ts +3 -0
- package/dist/theme/chart-colors.d.ts.map +1 -0
- package/dist/theme/chart-colors.js +46 -0
- package/dist/theme/chart-colors.js.map +1 -0
- package/dist/theme/colors.d.ts +56 -0
- package/dist/theme/colors.d.ts.map +1 -0
- package/dist/theme/colors.js +410 -0
- package/dist/theme/colors.js.map +1 -0
- package/dist/theme/generate-css.d.ts +9 -0
- package/dist/theme/generate-css.d.ts.map +1 -0
- package/dist/theme/generate-css.js +36 -0
- package/dist/theme/generate-css.js.map +1 -0
- package/dist/theme/generate-scale.d.ts +3 -0
- package/dist/theme/generate-scale.d.ts.map +1 -0
- package/dist/theme/generate-scale.js +89 -0
- package/dist/theme/generate-scale.js.map +1 -0
- package/dist/theme/icon-map.d.ts +9 -0
- package/dist/theme/icon-map.d.ts.map +1 -0
- package/dist/theme/icon-map.js +40 -0
- package/dist/theme/icon-map.js.map +1 -0
- package/dist/theme/index.d.ts +15 -0
- package/dist/theme/index.d.ts.map +1 -0
- package/dist/theme/index.js +13 -0
- package/dist/theme/index.js.map +1 -0
- package/dist/theme/migrate.d.ts +14 -0
- package/dist/theme/migrate.d.ts.map +1 -0
- package/dist/theme/migrate.js +79 -0
- package/dist/theme/migrate.js.map +1 -0
- package/dist/theme/presets.d.ts +30 -0
- package/dist/theme/presets.d.ts.map +1 -0
- package/dist/theme/presets.js +128 -0
- package/dist/theme/presets.js.map +1 -0
- package/dist/theme/radius.d.ts +11 -0
- package/dist/theme/radius.d.ts.map +1 -0
- package/dist/theme/radius.js +17 -0
- package/dist/theme/radius.js.map +1 -0
- package/dist/theme/resolve.d.ts +13 -0
- package/dist/theme/resolve.d.ts.map +1 -0
- package/dist/theme/resolve.js +91 -0
- package/dist/theme/resolve.js.map +1 -0
- package/dist/theme/spacing.d.ts +14 -0
- package/dist/theme/spacing.d.ts.map +1 -0
- package/dist/theme/spacing.js +17 -0
- package/dist/theme/spacing.js.map +1 -0
- package/dist/theme/theme-colors.d.ts +9 -0
- package/dist/theme/theme-colors.d.ts.map +1 -0
- package/dist/theme/theme-colors.js +84 -0
- package/dist/theme/theme-colors.js.map +1 -0
- package/dist/theme/types.d.ts +94 -0
- package/dist/theme/types.d.ts.map +1 -0
- package/dist/theme/types.js +2 -0
- package/dist/theme/types.js.map +1 -0
- package/dist/uploads/UploadAdapter.d.ts +34 -0
- package/dist/uploads/UploadAdapter.d.ts.map +1 -0
- package/dist/uploads/UploadAdapter.js +2 -0
- package/dist/uploads/UploadAdapter.js.map +1 -0
- package/dist/uploads/index.d.ts +3 -0
- package/dist/uploads/index.d.ts.map +1 -0
- package/dist/uploads/index.js +2 -0
- package/dist/uploads/index.js.map +1 -0
- package/dist/uploads/localUpload.d.ts +25 -0
- package/dist/uploads/localUpload.d.ts.map +1 -0
- package/dist/uploads/localUpload.js +65 -0
- package/dist/uploads/localUpload.js.map +1 -0
- package/dist/validation/Validator.d.ts +40 -0
- package/dist/validation/Validator.d.ts.map +1 -0
- package/dist/validation/Validator.js +25 -0
- package/dist/validation/Validator.js.map +1 -0
- package/dist/validation/index.d.ts +5 -0
- package/dist/validation/index.d.ts.map +1 -0
- package/dist/validation/index.js +5 -0
- package/dist/validation/index.js.map +1 -0
- package/dist/validation/rules.d.ts +9 -0
- package/dist/validation/rules.d.ts.map +1 -0
- package/dist/validation/rules.js +61 -0
- package/dist/validation/rules.js.map +1 -0
- package/dist/validation/runValidators.d.ts +30 -0
- package/dist/validation/runValidators.d.ts.map +1 -0
- package/dist/validation/runValidators.js +438 -0
- package/dist/validation/runValidators.js.map +1 -0
- package/dist/validation/uniqueValidator.d.ts +61 -0
- package/dist/validation/uniqueValidator.d.ts.map +1 -0
- package/dist/validation/uniqueValidator.js +80 -0
- package/dist/validation/uniqueValidator.js.map +1 -0
- package/dist/vite.d.ts +19 -0
- package/dist/vite.d.ts.map +1 -0
- package/dist/vite.js +696 -0
- package/dist/vite.js.map +1 -0
- package/dist/widgets/index.d.ts +2 -0
- package/dist/widgets/index.d.ts.map +1 -0
- package/dist/widgets/index.js +7 -0
- package/dist/widgets/index.js.map +1 -0
- package/dist/widgets/registry.d.ts +32 -0
- package/dist/widgets/registry.d.ts.map +1 -0
- package/dist/widgets/registry.js +17 -0
- package/dist/widgets/registry.js.map +1 -0
- package/package.json +101 -0
- package/src/Cluster.test.ts +283 -0
- package/src/Cluster.ts +83 -0
- package/src/Column.test.ts +140 -0
- package/src/Column.ts +612 -0
- package/src/Global.test.ts +367 -0
- package/src/Global.ts +169 -0
- package/src/Page.test.ts +50 -0
- package/src/Page.ts +139 -0
- package/src/Pilotiq.test.ts +47 -0
- package/src/Pilotiq.ts +705 -0
- package/src/PilotiqRegistry.ts +36 -0
- package/src/PilotiqServiceProvider.ts +69 -0
- package/src/RelationManager.test.ts +400 -0
- package/src/RelationManager.ts +527 -0
- package/src/RenderHook.test.ts +252 -0
- package/src/RenderHook.ts +226 -0
- package/src/Resource.test.ts +240 -0
- package/src/Resource.ts +439 -0
- package/src/RightPanel.test.ts +202 -0
- package/src/RightPanel.ts +132 -0
- package/src/Tab.test.ts +91 -0
- package/src/Tab.ts +156 -0
- package/src/UserMenuItem.ts +145 -0
- package/src/actions/Action.test.ts +2479 -0
- package/src/actions/Action.ts +2124 -0
- package/src/actions/ActionGroup.test.ts +112 -0
- package/src/actions/ActionGroup.ts +173 -0
- package/src/actions/attachFactory.ts +172 -0
- package/src/actions/exportFactory.ts +215 -0
- package/src/actions/importFactory.ts +222 -0
- package/src/actions/index.ts +17 -0
- package/src/applyPageHooks.test.ts +298 -0
- package/src/applyPageHooks.ts +242 -0
- package/src/authorization.test.ts +483 -0
- package/src/breadcrumbs.test.ts +238 -0
- package/src/cells/coerce.test.ts +85 -0
- package/src/cells/coerce.ts +84 -0
- package/src/clusterPaths.ts +35 -0
- package/src/columns/BadgeColumn.test.ts +54 -0
- package/src/columns/BadgeColumn.ts +32 -0
- package/src/columns/BooleanColumn.test.ts +41 -0
- package/src/columns/BooleanColumn.ts +18 -0
- package/src/columns/ColorColumn.test.ts +37 -0
- package/src/columns/ColorColumn.ts +38 -0
- package/src/columns/IconColumn.test.ts +54 -0
- package/src/columns/IconColumn.ts +37 -0
- package/src/columns/ImageColumn.test.ts +41 -0
- package/src/columns/ImageColumn.ts +28 -0
- package/src/columns/SelectColumn.ts +60 -0
- package/src/columns/TextColumn.test.ts +190 -0
- package/src/columns/TextColumn.ts +20 -0
- package/src/columns/TextInputColumn.ts +68 -0
- package/src/columns/ToggleColumn.ts +46 -0
- package/src/columns/editableColumns.test.ts +193 -0
- package/src/columns/index.ts +9 -0
- package/src/defaultGlobalPages.ts +95 -0
- package/src/defaultPages.test.ts +634 -0
- package/src/defaultPages.ts +614 -0
- package/src/defaultViewPage.test.ts +147 -0
- package/src/elements/Form.test.ts +223 -0
- package/src/elements/Form.ts +397 -0
- package/src/elements/ListTabs.ts +28 -0
- package/src/elements/Table.test.ts +422 -0
- package/src/elements/Table.ts +816 -0
- package/src/elements/TableGroup.test.ts +149 -0
- package/src/elements/TableGroup.ts +199 -0
- package/src/elements/dispatchAction.test.ts +463 -0
- package/src/elements/dispatchAction.ts +355 -0
- package/src/elements/dispatchForm.test.ts +455 -0
- package/src/elements/dispatchForm.ts +1855 -0
- package/src/elements/dispatchTable.test.ts +1247 -0
- package/src/elements/dispatchTable.ts +666 -0
- package/src/elements/index.ts +21 -0
- package/src/entries/BadgeEntry.ts +39 -0
- package/src/entries/CodeEntry.test.ts +40 -0
- package/src/entries/CodeEntry.ts +52 -0
- package/src/entries/ColorEntry.ts +63 -0
- package/src/entries/ComponentEntry.test.ts +173 -0
- package/src/entries/ComponentEntry.ts +95 -0
- package/src/entries/Entry.ts +304 -0
- package/src/entries/IconEntry.ts +49 -0
- package/src/entries/ImageEntry.ts +61 -0
- package/src/entries/KeyValueEntry.ts +47 -0
- package/src/entries/RepeatableEntry.test.ts +239 -0
- package/src/entries/RepeatableEntry.ts +173 -0
- package/src/entries/TextEntry.test.ts +394 -0
- package/src/entries/TextEntry.ts +60 -0
- package/src/entries/index.ts +12 -0
- package/src/entries/leaves.test.ts +306 -0
- package/src/entries/registry.ts +54 -0
- package/src/fields/BuilderField.test.ts +1188 -0
- package/src/fields/BuilderField.ts +568 -0
- package/src/fields/BuilderRelationship.test.ts +811 -0
- package/src/fields/CheckboxField.test.ts +44 -0
- package/src/fields/CheckboxField.ts +27 -0
- package/src/fields/CheckboxListField.test.ts +99 -0
- package/src/fields/CheckboxListField.ts +66 -0
- package/src/fields/ColorPickerField.test.ts +33 -0
- package/src/fields/ColorPickerField.ts +25 -0
- package/src/fields/DateField.ts +54 -0
- package/src/fields/DateTimeField.test.ts +55 -0
- package/src/fields/EmailField.ts +16 -0
- package/src/fields/Field.test.ts +639 -0
- package/src/fields/Field.ts +773 -0
- package/src/fields/FileUploadField.test.ts +97 -0
- package/src/fields/FileUploadField.ts +71 -0
- package/src/fields/HiddenField.test.ts +27 -0
- package/src/fields/HiddenField.ts +28 -0
- package/src/fields/KeyValueField.test.ts +105 -0
- package/src/fields/KeyValueField.ts +55 -0
- package/src/fields/MarkdownField.test.ts +167 -0
- package/src/fields/MarkdownField.ts +151 -0
- package/src/fields/NumberField.ts +33 -0
- package/src/fields/RadioField.test.ts +94 -0
- package/src/fields/RadioField.ts +67 -0
- package/src/fields/RepeaterField.test.ts +1806 -0
- package/src/fields/RepeaterField.ts +791 -0
- package/src/fields/RepeaterRelationship.test.ts +1630 -0
- package/src/fields/RepeaterSimple.test.ts +248 -0
- package/src/fields/RowButton.test.ts +149 -0
- package/src/fields/RowButton.ts +125 -0
- package/src/fields/SelectField.test.ts +192 -0
- package/src/fields/SelectField.ts +235 -0
- package/src/fields/SliderField.test.ts +50 -0
- package/src/fields/SliderField.ts +53 -0
- package/src/fields/SlugField.ts +24 -0
- package/src/fields/TagsInputField.test.ts +154 -0
- package/src/fields/TagsInputField.ts +133 -0
- package/src/fields/TextField.ts +24 -0
- package/src/fields/TextareaField.test.ts +58 -0
- package/src/fields/TextareaField.ts +59 -0
- package/src/fields/ToggleButtonsField.test.ts +106 -0
- package/src/fields/ToggleButtonsField.ts +59 -0
- package/src/fields/ToggleField.ts +16 -0
- package/src/fields/disableOptionsWhenSelectedInSiblingRepeaterItems.test.ts +319 -0
- package/src/fields/optionsResolver.ts +95 -0
- package/src/fields/resolveField.ts +28 -0
- package/src/filters/BooleanFilter.ts +35 -0
- package/src/filters/DateRangeFilter.test.ts +194 -0
- package/src/filters/DateRangeFilter.ts +148 -0
- package/src/filters/Filter.test.ts +268 -0
- package/src/filters/Filter.ts +184 -0
- package/src/filters/FormFilter.test.ts +238 -0
- package/src/filters/FormFilter.ts +215 -0
- package/src/filters/MultiSelectFilter.test.ts +119 -0
- package/src/filters/MultiSelectFilter.ts +78 -0
- package/src/filters/QueryBuilderFilter.test.ts +644 -0
- package/src/filters/QueryBuilderFilter.ts +398 -0
- package/src/filters/SelectFilter.ts +46 -0
- package/src/filters/TernaryFilter.test.ts +160 -0
- package/src/filters/TernaryFilter.ts +72 -0
- package/src/filters/TrashedFilter.test.ts +149 -0
- package/src/filters/TrashedFilter.ts +55 -0
- package/src/filters/queryBuilder/BooleanConstraint.ts +31 -0
- package/src/filters/queryBuilder/Constraint.ts +115 -0
- package/src/filters/queryBuilder/DateConstraint.ts +69 -0
- package/src/filters/queryBuilder/NumberConstraint.ts +66 -0
- package/src/filters/queryBuilder/SelectConstraint.ts +72 -0
- package/src/filters/queryBuilder/TextConstraint.ts +65 -0
- package/src/filters/queryBuilder/index.ts +12 -0
- package/src/icons/index.ts +2 -0
- package/src/icons/lucide.ts +204 -0
- package/src/icons/registry.test.ts +56 -0
- package/src/icons/registry.ts +41 -0
- package/src/icons/types.ts +47 -0
- package/src/index.ts +521 -0
- package/src/io/csv.test.ts +142 -0
- package/src/io/csv.ts +170 -0
- package/src/nestedRelationManagerData.test.ts +526 -0
- package/src/notifications/Notification.test.ts +210 -0
- package/src/notifications/Notification.ts +354 -0
- package/src/notifications/broadcast.test.ts +110 -0
- package/src/notifications/broadcast.ts +95 -0
- package/src/notifications/database.test.ts +383 -0
- package/src/notifications/database.ts +398 -0
- package/src/notifications/databaseNotifications.test.ts +187 -0
- package/src/notifications/dispatchNotificationAction.test.ts +341 -0
- package/src/notifications/dispatchNotificationAction.ts +142 -0
- package/src/notifications/flash.test.ts +89 -0
- package/src/notifications/flash.ts +71 -0
- package/src/notifications/index.ts +45 -0
- package/src/notifications/registerBroadcastAuth.test.ts +134 -0
- package/src/notifications/registerBroadcastAuth.ts +100 -0
- package/src/notifications/resolveSavedNotification.test.ts +82 -0
- package/src/notifications/resolveSavedNotification.ts +59 -0
- package/src/notifications/types.ts +93 -0
- package/src/orm/m2mAccessor.ts +66 -0
- package/src/orm/modelDefaults.test.ts +633 -0
- package/src/orm/modelDefaults.ts +632 -0
- package/src/pageData.test.ts +1121 -0
- package/src/pageData.ts +4662 -0
- package/src/plugins/index.ts +1 -0
- package/src/plugins/themeEditor.ts +24 -0
- package/src/react/AppShell.tsx +148 -0
- package/src/react/CommandPalette.tsx +375 -0
- package/src/react/FormStateContext.tsx +398 -0
- package/src/react/HeadHooks.tsx +126 -0
- package/src/react/NotificationActionStrip.tsx +263 -0
- package/src/react/NotificationBell.tsx +426 -0
- package/src/react/RenderHookSlot.tsx +32 -0
- package/src/react/RightSidebar.tsx +257 -0
- package/src/react/RightSidebarContext.tsx +211 -0
- package/src/react/RightSidebarTrigger.tsx +53 -0
- package/src/react/SchemaRenderer.tsx +6128 -0
- package/src/react/SearchTrigger.tsx +46 -0
- package/src/react/ThemeProvider.tsx +93 -0
- package/src/react/ThemeSettingsPage.tsx +579 -0
- package/src/react/ThemeToggle.tsx +20 -0
- package/src/react/Toaster.tsx +158 -0
- package/src/react/UserMenu.tsx +196 -0
- package/src/react/WidgetDataContext.tsx +157 -0
- package/src/react/cells/EditableCell.tsx +376 -0
- package/src/react/fieldJsHandler.test.ts +166 -0
- package/src/react/fieldJsHandler.ts +79 -0
- package/src/react/fields/BuilderInput.tsx +995 -0
- package/src/react/fields/CheckboxInput.tsx +39 -0
- package/src/react/fields/CheckboxListInput.tsx +81 -0
- package/src/react/fields/ColorInput.tsx +51 -0
- package/src/react/fields/DateFieldInput.tsx +70 -0
- package/src/react/fields/DateTimeInput.tsx +42 -0
- package/src/react/fields/FieldShell.tsx +107 -0
- package/src/react/fields/FileUploadInput.tsx +189 -0
- package/src/react/fields/HiddenInput.tsx +17 -0
- package/src/react/fields/KeyValueInput.tsx +200 -0
- package/src/react/fields/MarkdownInput.tsx +333 -0
- package/src/react/fields/RadioInput.tsx +60 -0
- package/src/react/fields/RepeaterInput.test.ts +116 -0
- package/src/react/fields/RepeaterInput.tsx +1313 -0
- package/src/react/fields/SelectFieldInput.tsx +257 -0
- package/src/react/fields/SliderInput.tsx +63 -0
- package/src/react/fields/TagsInput.tsx +265 -0
- package/src/react/fields/TextLikeInput.tsx +54 -0
- package/src/react/fields/ToggleButtonsInput.tsx +60 -0
- package/src/react/fields/ToggleFieldInput.tsx +35 -0
- package/src/react/fields/rowChromeButton.tsx +225 -0
- package/src/react/fields/syncRowGates.test.ts +202 -0
- package/src/react/fields/syncRowGates.ts +66 -0
- package/src/react/formStateHelpers.test.ts +295 -0
- package/src/react/formStateHelpers.ts +218 -0
- package/src/react/hooks/use-mobile.ts +19 -0
- package/src/react/icon-context.tsx +60 -0
- package/src/react/index.ts +85 -0
- package/src/react/layouts/SidebarLayout.tsx +239 -0
- package/src/react/layouts/TopbarLayout.tsx +245 -0
- package/src/react/navigate.tsx +37 -0
- package/src/react/registry.ts +48 -0
- package/src/react/right-panel-registry.tsx +47 -0
- package/src/react/theme-preview/apply.ts +99 -0
- package/src/react/theme-preview/build-html.ts +436 -0
- package/src/react/ui/button.tsx +51 -0
- package/src/react/ui/calendar.tsx +67 -0
- package/src/react/ui/checkbox.tsx +29 -0
- package/src/react/ui/dialog.tsx +108 -0
- package/src/react/ui/dropdown-menu.tsx +97 -0
- package/src/react/ui/input.tsx +20 -0
- package/src/react/ui/label.tsx +21 -0
- package/src/react/ui/popover.tsx +50 -0
- package/src/react/ui/select.tsx +169 -0
- package/src/react/ui/separator.tsx +25 -0
- package/src/react/ui/sheet.tsx +136 -0
- package/src/react/ui/sidebar.tsx +723 -0
- package/src/react/ui/skeleton.tsx +13 -0
- package/src/react/ui/slider.tsx +34 -0
- package/src/react/ui/switch.tsx +28 -0
- package/src/react/ui/table.tsx +105 -0
- package/src/react/ui/tabs.tsx +63 -0
- package/src/react/ui/textarea.tsx +18 -0
- package/src/react/ui/tooltip.tsx +64 -0
- package/src/react/useResizableWidth.ts +139 -0
- package/src/react/utils.ts +6 -0
- package/src/react/widgetRegistry.test.ts +43 -0
- package/src/react/widgetRegistry.ts +50 -0
- package/src/react/widgets/StatsOverviewRenderer.tsx +232 -0
- package/src/react/widgets/TableWidgetRenderer.tsx +231 -0
- package/src/react/widgets/ViewRenderer.tsx +71 -0
- package/src/relationManagerData.test.ts +1146 -0
- package/src/richtext/index.ts +8 -0
- package/src/richtext/registry.ts +89 -0
- package/src/routes-nested-relations.test.ts +676 -0
- package/src/routes-relations.test.ts +972 -0
- package/src/routes.test.ts +1886 -0
- package/src/routes.ts +3262 -0
- package/src/schema/Alert.test.ts +63 -0
- package/src/schema/Alert.ts +49 -0
- package/src/schema/Block.ts +169 -0
- package/src/schema/Breadcrumbs.ts +40 -0
- package/src/schema/Card.ts +35 -0
- package/src/schema/Divider.ts +20 -0
- package/src/schema/Element.ts +219 -0
- package/src/schema/EmptyState.test.ts +37 -0
- package/src/schema/EmptyState.ts +63 -0
- package/src/schema/Fieldset.ts +43 -0
- package/src/schema/Grid.ts +43 -0
- package/src/schema/Group.ts +30 -0
- package/src/schema/Heading.ts +39 -0
- package/src/schema/Html.ts +67 -0
- package/src/schema/Icon.ts +54 -0
- package/src/schema/Image.ts +57 -0
- package/src/schema/LinkTag.ts +41 -0
- package/src/schema/Markdown.ts +85 -0
- package/src/schema/MetaTag.ts +41 -0
- package/src/schema/RelationTabs.ts +71 -0
- package/src/schema/ScriptTag.ts +55 -0
- package/src/schema/Section.ts +143 -0
- package/src/schema/ServerDataElement.test.ts +140 -0
- package/src/schema/ServerDataElement.ts +156 -0
- package/src/schema/Split.ts +50 -0
- package/src/schema/Stat.test.ts +118 -0
- package/src/schema/Stat.ts +154 -0
- package/src/schema/StatsOverview.test.ts +141 -0
- package/src/schema/StatsOverview.ts +119 -0
- package/src/schema/StyleTag.ts +35 -0
- package/src/schema/TableWidget.test.ts +297 -0
- package/src/schema/TableWidget.ts +289 -0
- package/src/schema/Tabs.ts +79 -0
- package/src/schema/Text.ts +58 -0
- package/src/schema/UnorderedList.ts +49 -0
- package/src/schema/View.test.ts +111 -0
- package/src/schema/View.ts +127 -0
- package/src/schema/Wizard.ts +108 -0
- package/src/schema/containers.test.ts +446 -0
- package/src/schema/headTags.test.ts +134 -0
- package/src/schema/index.ts +39 -0
- package/src/schema/primes.test.ts +269 -0
- package/src/schema/resolveSchema.test.ts +329 -0
- package/src/schema/resolveSchema.ts +807 -0
- package/src/schema/sanitize.ts +49 -0
- package/src/search.test.ts +446 -0
- package/src/search.ts +178 -0
- package/src/sessionFilters.test.ts +352 -0
- package/src/sessionFilters.ts +133 -0
- package/src/summarizers/Summarizer.test.ts +84 -0
- package/src/summarizers/Summarizer.ts +123 -0
- package/src/summarizers/index.ts +11 -0
- package/src/theme/base-colors.ts +68 -0
- package/src/theme/chart-colors.ts +50 -0
- package/src/theme/colors.ts +447 -0
- package/src/theme/generate-css.test.ts +139 -0
- package/src/theme/generate-css.ts +44 -0
- package/src/theme/generate-scale.test.ts +106 -0
- package/src/theme/generate-scale.ts +97 -0
- package/src/theme/icon-map.ts +42 -0
- package/src/theme/index.ts +28 -0
- package/src/theme/migrate.ts +81 -0
- package/src/theme/presets.ts +135 -0
- package/src/theme/radius.ts +18 -0
- package/src/theme/resolve.test.ts +238 -0
- package/src/theme/resolve.ts +96 -0
- package/src/theme/spacing.ts +18 -0
- package/src/theme/theme-colors.ts +88 -0
- package/src/theme/types.ts +125 -0
- package/src/uploads/UploadAdapter.ts +35 -0
- package/src/uploads/index.ts +2 -0
- package/src/uploads/localUpload.test.ts +70 -0
- package/src/uploads/localUpload.ts +84 -0
- package/src/validation/Validator.ts +49 -0
- package/src/validation/index.ts +28 -0
- package/src/validation/rules.ts +78 -0
- package/src/validation/runValidators.ts +435 -0
- package/src/validation/uniqueValidator.test.ts +196 -0
- package/src/validation/uniqueValidator.ts +133 -0
- package/src/validation/validators.test.ts +268 -0
- package/src/vite.ts +758 -0
- package/src/widgets/index.ts +10 -0
- package/src/widgets/registry.ts +45 -0
- package/src/widgets.test.ts +592 -0
- package/tsconfig.build.json +11 -0
- package/tsconfig.json +4 -0
- package/tsconfig.test.json +10 -0
- package/views/react/Dashboard.tsx +27 -0
- package/views/react/Resources/Form.tsx +102 -0
- package/views/react/Resources/Index.tsx +49 -0
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
import { describe, it } from 'node:test'
|
|
2
|
+
import assert from 'node:assert/strict'
|
|
3
|
+
|
|
4
|
+
import { Resource } from './Resource.js'
|
|
5
|
+
import { Form } from './elements/Form.js'
|
|
6
|
+
import { Table } from './elements/Table.js'
|
|
7
|
+
import { Column } from './Column.js'
|
|
8
|
+
import { TextField } from './fields/TextField.js'
|
|
9
|
+
|
|
10
|
+
describe('Resource (static API)', () => {
|
|
11
|
+
it('default form/table/detail are no-ops', () => {
|
|
12
|
+
class EmptyResource extends Resource {}
|
|
13
|
+
const f = EmptyResource.form(Form.make())
|
|
14
|
+
const t = EmptyResource.table(Table.make())
|
|
15
|
+
assert.equal(f.getChildren(), undefined)
|
|
16
|
+
assert.equal(t.getChildren(), undefined)
|
|
17
|
+
assert.deepEqual(EmptyResource.detail({}), [])
|
|
18
|
+
assert.deepEqual(EmptyResource.pages(), {})
|
|
19
|
+
assert.deepEqual(EmptyResource.relations(), [])
|
|
20
|
+
})
|
|
21
|
+
|
|
22
|
+
it('subclass overrides receive the builder and configure it', () => {
|
|
23
|
+
class ArticleResource extends Resource {
|
|
24
|
+
static override label = 'Articles'
|
|
25
|
+
|
|
26
|
+
static override form(form: Form): Form {
|
|
27
|
+
return form.schema([TextField.make('title').required()])
|
|
28
|
+
}
|
|
29
|
+
static override table(table: Table): Table {
|
|
30
|
+
return table.columns([Column.make('title').sortable()])
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
const form = ArticleResource.form(Form.make())
|
|
35
|
+
assert.equal((form.getChildren() ?? []).length, 1)
|
|
36
|
+
|
|
37
|
+
const table = ArticleResource.table(Table.make())
|
|
38
|
+
assert.equal(table.getColumns().length, 1)
|
|
39
|
+
assert.equal(table.getColumns()[0]!.name, 'title')
|
|
40
|
+
})
|
|
41
|
+
|
|
42
|
+
it('getSlug derives from label when slug is unset', () => {
|
|
43
|
+
class ArticleResource extends Resource {
|
|
44
|
+
static override label = 'Article Drafts'
|
|
45
|
+
}
|
|
46
|
+
assert.equal(ArticleResource.getSlug(), 'article-drafts')
|
|
47
|
+
})
|
|
48
|
+
|
|
49
|
+
it('getSlug honors explicit slug', () => {
|
|
50
|
+
class ArticleResource extends Resource {
|
|
51
|
+
static override slug = 'articles'
|
|
52
|
+
static override label = 'Articles'
|
|
53
|
+
}
|
|
54
|
+
assert.equal(ArticleResource.getSlug(), 'articles')
|
|
55
|
+
})
|
|
56
|
+
|
|
57
|
+
// ─── Plan #9: navigation metadata ──────────────────────────
|
|
58
|
+
|
|
59
|
+
it('navigation fields default sanely', () => {
|
|
60
|
+
class R extends Resource { static override label = 'Things' }
|
|
61
|
+
assert.equal(R.navigationGroup, undefined)
|
|
62
|
+
assert.equal(R.navigationSort, undefined)
|
|
63
|
+
assert.equal(R.navigationLabel, undefined)
|
|
64
|
+
assert.equal(R.navigationIcon, undefined)
|
|
65
|
+
assert.equal(R.navigationBadge, undefined)
|
|
66
|
+
assert.equal(R.navigationBadgeColor, 'default')
|
|
67
|
+
assert.equal(R.navigationParentItem, undefined)
|
|
68
|
+
assert.equal(R.recordTitleAttribute, undefined)
|
|
69
|
+
})
|
|
70
|
+
|
|
71
|
+
it('getNavigationLabel falls through to label when override is unset', () => {
|
|
72
|
+
class R extends Resource { static override label = 'Articles' }
|
|
73
|
+
assert.equal(R.getNavigationLabel(), 'Articles')
|
|
74
|
+
})
|
|
75
|
+
|
|
76
|
+
it('getNavigationLabel returns the override when set', () => {
|
|
77
|
+
class R extends Resource {
|
|
78
|
+
static override label = 'Articles'
|
|
79
|
+
static override navigationLabel = 'Posts'
|
|
80
|
+
}
|
|
81
|
+
assert.equal(R.getNavigationLabel(), 'Posts')
|
|
82
|
+
})
|
|
83
|
+
|
|
84
|
+
it('getNavigationIcon falls through to icon when override is unset', () => {
|
|
85
|
+
class R extends Resource {
|
|
86
|
+
static override label = 'Articles'
|
|
87
|
+
static override icon = 'newspaper'
|
|
88
|
+
}
|
|
89
|
+
assert.equal(R.getNavigationIcon(), 'newspaper')
|
|
90
|
+
})
|
|
91
|
+
|
|
92
|
+
it('getNavigationIcon returns the override when set', () => {
|
|
93
|
+
class R extends Resource {
|
|
94
|
+
static override label = 'Articles'
|
|
95
|
+
static override icon = 'newspaper'
|
|
96
|
+
static override navigationIcon = 'pencil'
|
|
97
|
+
}
|
|
98
|
+
assert.equal(R.getNavigationIcon(), 'pencil')
|
|
99
|
+
})
|
|
100
|
+
|
|
101
|
+
// ─── Plan #12: global search ───────────────────────────────
|
|
102
|
+
|
|
103
|
+
it('globalSearch defaults to false (opt-in)', () => {
|
|
104
|
+
class R extends Resource { static override label = 'Articles' }
|
|
105
|
+
assert.equal(R.globalSearch, false)
|
|
106
|
+
})
|
|
107
|
+
|
|
108
|
+
it('globallySearchableAttributes() defaults to recordTitleAttribute + searchable columns', () => {
|
|
109
|
+
class R extends Resource {
|
|
110
|
+
static override label = 'Articles'
|
|
111
|
+
static override recordTitleAttribute = 'title'
|
|
112
|
+
static override table(table: Table): Table {
|
|
113
|
+
return table.columns([
|
|
114
|
+
Column.make('title').searchable(),
|
|
115
|
+
Column.make('excerpt').searchable(),
|
|
116
|
+
Column.make('createdAt'),
|
|
117
|
+
])
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
const attrs = R.globallySearchableAttributes()
|
|
121
|
+
assert.deepEqual([...attrs].sort(), ['excerpt', 'title'])
|
|
122
|
+
})
|
|
123
|
+
|
|
124
|
+
it('globallySearchableAttributes() returns [] when no recordTitle and no searchable columns', () => {
|
|
125
|
+
class R extends Resource { static override label = 'Things' }
|
|
126
|
+
assert.deepEqual(R.globallySearchableAttributes(), [])
|
|
127
|
+
})
|
|
128
|
+
|
|
129
|
+
it('globallySearchableAttributes() honors override', () => {
|
|
130
|
+
class R extends Resource {
|
|
131
|
+
static override label = 'Things'
|
|
132
|
+
static override globallySearchableAttributes(): string[] {
|
|
133
|
+
return ['custom_search_index']
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
assert.deepEqual(R.globallySearchableAttributes(), ['custom_search_index'])
|
|
137
|
+
})
|
|
138
|
+
|
|
139
|
+
it('getGlobalSearchResultTitle resolves through recordTitleAttribute → name → title → id', () => {
|
|
140
|
+
class R1 extends Resource {
|
|
141
|
+
static override label = 'Articles'
|
|
142
|
+
static override recordTitleAttribute = 'headline'
|
|
143
|
+
}
|
|
144
|
+
assert.equal(R1.getGlobalSearchResultTitle({ headline: 'Hello', name: 'fallback' }), 'Hello')
|
|
145
|
+
|
|
146
|
+
class R2 extends Resource { static override label = 'Things' }
|
|
147
|
+
assert.equal(R2.getGlobalSearchResultTitle({ name: 'Bob' }), 'Bob')
|
|
148
|
+
assert.equal(R2.getGlobalSearchResultTitle({ title: 'Doc' }), 'Doc')
|
|
149
|
+
assert.equal(R2.getGlobalSearchResultTitle({ id: 42 }), '42')
|
|
150
|
+
assert.equal(R2.getGlobalSearchResultTitle({}), '')
|
|
151
|
+
assert.equal(R2.getGlobalSearchResultTitle(null), '')
|
|
152
|
+
})
|
|
153
|
+
|
|
154
|
+
it('getGlobalSearchResultSubtitle defaults to undefined', () => {
|
|
155
|
+
class R extends Resource { static override label = 'Things' }
|
|
156
|
+
assert.equal(R.getGlobalSearchResultSubtitle({ status: 'draft' }), undefined)
|
|
157
|
+
})
|
|
158
|
+
|
|
159
|
+
it('getGlobalSearchResultUrl defaults to ${base}/${slug}/${id}', () => {
|
|
160
|
+
class R extends Resource {
|
|
161
|
+
static override label = 'Articles'
|
|
162
|
+
static override slug = 'articles'
|
|
163
|
+
}
|
|
164
|
+
assert.equal(R.getGlobalSearchResultUrl({ id: '42' }, '/admin'), '/admin/articles/42')
|
|
165
|
+
assert.equal(R.getGlobalSearchResultUrl({ id: 42 }, '/admin'), '/admin/articles/42')
|
|
166
|
+
assert.equal(R.getGlobalSearchResultUrl({}, '/admin'), '/admin/articles')
|
|
167
|
+
assert.equal(R.getGlobalSearchResultUrl(null, '/admin'), '/admin/articles')
|
|
168
|
+
})
|
|
169
|
+
|
|
170
|
+
it('getGlobalSearchQuery defaults to undefined (use built-in LIKE chain)', () => {
|
|
171
|
+
class R extends Resource { static override label = 'Things' }
|
|
172
|
+
assert.equal(R.getGlobalSearchQuery('alice'), undefined)
|
|
173
|
+
})
|
|
174
|
+
|
|
175
|
+
describe('soft-delete opt-in (Plan #13)', () => {
|
|
176
|
+
it('softDeletes defaults to false', () => {
|
|
177
|
+
class R extends Resource { static override label = 'Things' }
|
|
178
|
+
assert.equal(R.softDeletes, false)
|
|
179
|
+
})
|
|
180
|
+
|
|
181
|
+
it('deletedAtColumn defaults to "deletedAt"', () => {
|
|
182
|
+
class R extends Resource { static override label = 'Things' }
|
|
183
|
+
assert.equal(R.deletedAtColumn, 'deletedAt')
|
|
184
|
+
})
|
|
185
|
+
|
|
186
|
+
it('subclass can opt in by setting softDeletes = true', () => {
|
|
187
|
+
class R extends Resource {
|
|
188
|
+
static override label = 'Posts'
|
|
189
|
+
static override softDeletes = true
|
|
190
|
+
}
|
|
191
|
+
assert.equal(R.softDeletes, true)
|
|
192
|
+
})
|
|
193
|
+
|
|
194
|
+
it('subclass can override the column name', () => {
|
|
195
|
+
class R extends Resource {
|
|
196
|
+
static override label = 'Posts'
|
|
197
|
+
static override softDeletes = true
|
|
198
|
+
static override deletedAtColumn = 'archivedAt'
|
|
199
|
+
}
|
|
200
|
+
assert.equal(R.deletedAtColumn, 'archivedAt')
|
|
201
|
+
})
|
|
202
|
+
})
|
|
203
|
+
|
|
204
|
+
describe('canRestore / canForceDelete predicates (Plan #13)', () => {
|
|
205
|
+
it('canRestore defaults to true', async () => {
|
|
206
|
+
class R extends Resource { static override label = 'Posts' }
|
|
207
|
+
assert.equal(await R.canRestore(null, { id: 1 }), true)
|
|
208
|
+
})
|
|
209
|
+
|
|
210
|
+
it('canForceDelete inherits from canDelete by default', async () => {
|
|
211
|
+
class R extends Resource {
|
|
212
|
+
static override label = 'Posts'
|
|
213
|
+
static override async canDelete(_user: unknown, _record: unknown): Promise<boolean> { return false }
|
|
214
|
+
}
|
|
215
|
+
assert.equal(await R.canForceDelete(null, { id: 1 }), false,
|
|
216
|
+
'force-delete should fall through to canDelete when not overridden')
|
|
217
|
+
})
|
|
218
|
+
|
|
219
|
+
it('canForceDelete override wins independently of canDelete', async () => {
|
|
220
|
+
class R extends Resource {
|
|
221
|
+
static override label = 'Posts'
|
|
222
|
+
static override async canDelete(_user: unknown, _record: unknown): Promise<boolean> { return true }
|
|
223
|
+
static override async canForceDelete(_user: unknown, _record: unknown): Promise<boolean> { return false }
|
|
224
|
+
}
|
|
225
|
+
assert.equal(await R.canForceDelete(null, { id: 1 }), false)
|
|
226
|
+
assert.equal(await R.canDelete(null, { id: 1 }), true)
|
|
227
|
+
})
|
|
228
|
+
|
|
229
|
+
it('canRestore override wins', async () => {
|
|
230
|
+
class R extends Resource {
|
|
231
|
+
static override label = 'Posts'
|
|
232
|
+
static override async canRestore(_user: unknown, record: unknown): Promise<boolean> {
|
|
233
|
+
return (record as { ownedBy?: string }).ownedBy === 'me'
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
assert.equal(await R.canRestore(null, { ownedBy: 'me' }), true)
|
|
237
|
+
assert.equal(await R.canRestore(null, { ownedBy: 'other' }), false)
|
|
238
|
+
})
|
|
239
|
+
})
|
|
240
|
+
})
|
package/src/Resource.ts
ADDED
|
@@ -0,0 +1,439 @@
|
|
|
1
|
+
import type { Element } from './schema/Element.js'
|
|
2
|
+
import type { Form } from './elements/Form.js'
|
|
3
|
+
import { Table } from './elements/Table.js'
|
|
4
|
+
import type { Page } from './Page.js'
|
|
5
|
+
import type { ModelLike, ModelQuery, QueryContext } from './orm/modelDefaults.js'
|
|
6
|
+
import type { IconValue } from './icons/types.js'
|
|
7
|
+
import { defaultPages } from './defaultPages.js'
|
|
8
|
+
import type { RelationManager } from './RelationManager.js'
|
|
9
|
+
import type { SchemaContext } from './schema/resolveSchema.js'
|
|
10
|
+
import type { ClusterClass } from './Cluster.js'
|
|
11
|
+
import { resourceBasePath } from './clusterPaths.js'
|
|
12
|
+
|
|
13
|
+
/** Map of resource page roles to Page subclasses. */
|
|
14
|
+
export interface ResourcePages {
|
|
15
|
+
index?: typeof Page
|
|
16
|
+
create?: typeof Page
|
|
17
|
+
edit?: typeof Page
|
|
18
|
+
view?: typeof Page
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/** Pill color tokens for `navigationBadgeColor`. Matches the shared color
|
|
22
|
+
* palette used by `ListTab.badgeColor` so the renderer can re-use the
|
|
23
|
+
* same Tailwind utility map. */
|
|
24
|
+
export type NavigationBadgeColor =
|
|
25
|
+
| 'default' | 'primary' | 'success' | 'warning' | 'destructive' | 'info'
|
|
26
|
+
|
|
27
|
+
/** Returned by `navigationBadge`: a string/number to render as a pill,
|
|
28
|
+
* or undefined to render no pill. May be async. Errors thrown from this
|
|
29
|
+
* handler are swallowed by `panelInfo()` so a flaky count never blanks
|
|
30
|
+
* the page. */
|
|
31
|
+
export type NavigationBadgeHandler =
|
|
32
|
+
() => string | number | undefined | Promise<string | number | undefined>
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Abstract Resource base class. **All methods are static** — resources are
|
|
36
|
+
* registered by class, not by instance. Routes look up the class and call
|
|
37
|
+
* statics directly.
|
|
38
|
+
*
|
|
39
|
+
* Subclasses override `form()`, `table()`, `detail()`, and `pages()` to
|
|
40
|
+
* shape the resource. Defaults make the most-common case (CRUD with a
|
|
41
|
+
* form + a table) work with minimal boilerplate; 2.2 will fill in
|
|
42
|
+
* auto-generated default Page classes.
|
|
43
|
+
*/
|
|
44
|
+
export abstract class Resource {
|
|
45
|
+
/** Human-readable plural label, e.g. `'Articles'`. */
|
|
46
|
+
static label: string = 'Resources'
|
|
47
|
+
|
|
48
|
+
/** Singular label, e.g. `'Article'`. */
|
|
49
|
+
static labelSingular: string = 'Resource'
|
|
50
|
+
|
|
51
|
+
/** Breadcrumb label override. Falls through to `label`. Use this when
|
|
52
|
+
* the breadcrumb chain reads better with a different word than the
|
|
53
|
+
* sidebar / page-title plural — e.g. `label = 'Blog Posts'` paired
|
|
54
|
+
* with `breadcrumb = 'Posts'` for a tighter chain. */
|
|
55
|
+
static breadcrumb: string | undefined = undefined
|
|
56
|
+
|
|
57
|
+
/** URL slug. Derived from `label` when unset. */
|
|
58
|
+
static slug: string = ''
|
|
59
|
+
|
|
60
|
+
/** Sidebar / nav icon. Either a kebab-case registry name (e.g.,
|
|
61
|
+
* `'file'`) or a React component reference imported from any icon
|
|
62
|
+
* library (e.g., `import { Newspaper } from 'lucide-react'`).
|
|
63
|
+
* See `@pilotiq/pilotiq/icons` for the registry; component refs
|
|
64
|
+
* resolve via the Vite-plugin `_components.ts` manifest. */
|
|
65
|
+
static icon: IconValue = 'file'
|
|
66
|
+
|
|
67
|
+
// ─── Plan #9: navigation metadata ──────────────────────────
|
|
68
|
+
// Static fields evaluated once at panel-config time; only
|
|
69
|
+
// `navigationBadge` runs per request. See docs/plans/resource-navigation.md.
|
|
70
|
+
|
|
71
|
+
/** Group label this resource renders under in the sidebar. Items
|
|
72
|
+
* without a group land in an unnamed top section. */
|
|
73
|
+
static navigationGroup: string | undefined = undefined
|
|
74
|
+
|
|
75
|
+
/** Sort key within a group. Lower sorts first; ties fall back to
|
|
76
|
+
* registration order. Items without a sort go after sorted items. */
|
|
77
|
+
static navigationSort: number | undefined = undefined
|
|
78
|
+
|
|
79
|
+
/** Sidebar label override. `Resource.label` still drives page titles. */
|
|
80
|
+
static navigationLabel: string | undefined = undefined
|
|
81
|
+
|
|
82
|
+
/** Sidebar icon override. Same `IconValue` contract as `icon`. */
|
|
83
|
+
static navigationIcon: IconValue = undefined
|
|
84
|
+
|
|
85
|
+
/** Server-eval'd badge handler; rendered as a small pill next to the
|
|
86
|
+
* label. Errors thrown here are swallowed so a broken count never
|
|
87
|
+
* breaks page render. */
|
|
88
|
+
static navigationBadge: NavigationBadgeHandler | undefined = undefined
|
|
89
|
+
|
|
90
|
+
/** Pill color for the badge. */
|
|
91
|
+
static navigationBadgeColor: NavigationBadgeColor = 'default'
|
|
92
|
+
|
|
93
|
+
/** Class name (`Resource.name` / `Global.name` / `Page.name`) of a
|
|
94
|
+
* parent nav item. Renders nested under the parent when set; renders
|
|
95
|
+
* at top level when the name doesn't resolve. */
|
|
96
|
+
static navigationParentItem: string | undefined = undefined
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* Cluster this resource belongs to. When set, the resource's URLs gain
|
|
100
|
+
* the cluster's slug as a prefix segment (e.g. `/admin/content/articles`
|
|
101
|
+
* instead of `/admin/articles`) and the resource nests under the
|
|
102
|
+
* cluster's nav entry instead of appearing at the panel top level.
|
|
103
|
+
*
|
|
104
|
+
* The referenced class must be registered via `Pilotiq.clusters([…])`;
|
|
105
|
+
* boot fails otherwise.
|
|
106
|
+
*/
|
|
107
|
+
static cluster?: ClusterClass
|
|
108
|
+
|
|
109
|
+
/** Column that names a record when referring to it in search results,
|
|
110
|
+
* breadcrumbs, or relation pickers. Resolution order at the call site
|
|
111
|
+
* is `recordTitleAttribute` → `'name'` → `'title'` → `'id'`. */
|
|
112
|
+
static recordTitleAttribute: string | undefined = undefined
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* Optional ORM model. When set, `defaultPages` auto-fills `Form.save`,
|
|
116
|
+
* `Form.loadRecord`, `Table.records`, and `Resource.deleteRecord` so
|
|
117
|
+
* the common CRUD case needs no manual wiring. Anything explicitly
|
|
118
|
+
* configured on `form()` / `table()` still wins.
|
|
119
|
+
*
|
|
120
|
+
* Any object satisfying `ModelLike` works — `@rudderjs/orm` `Model`
|
|
121
|
+
* subclasses do so structurally via their static methods.
|
|
122
|
+
*/
|
|
123
|
+
static model?: ModelLike
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* Hook for scoping every query against this resource's table — list
|
|
127
|
+
* pages, global search, find-by-PK loads (record load for view / edit
|
|
128
|
+
* pages, policy lookups). Default returns `this.model.query()`.
|
|
129
|
+
*
|
|
130
|
+
* Override to install tenant scopes, default ordering, eager-load
|
|
131
|
+
* defaults, or any other always-on filter:
|
|
132
|
+
*
|
|
133
|
+
* @example
|
|
134
|
+
* static override query(ctx) {
|
|
135
|
+
* return super.query(ctx).where('tenantId', (ctx?.user as any)?.tenantId)
|
|
136
|
+
* }
|
|
137
|
+
*
|
|
138
|
+
* @example
|
|
139
|
+
* static override query(ctx) {
|
|
140
|
+
* return super.query(ctx).orderBy('createdAt', 'DESC')
|
|
141
|
+
* }
|
|
142
|
+
*
|
|
143
|
+
* Soft-delete restore / force-delete routes deliberately bypass this
|
|
144
|
+
* — they build their own `query().withTrashed()` chain so a scope that
|
|
145
|
+
* hides trashed rows doesn't hide records the operator is trying to
|
|
146
|
+
* recover. Everything else routes through here.
|
|
147
|
+
*
|
|
148
|
+
* Throws when `static model` isn't set; subclasses without a model
|
|
149
|
+
* must override `query()` directly to return whatever query builder
|
|
150
|
+
* they're driving.
|
|
151
|
+
*/
|
|
152
|
+
static query(_ctx?: QueryContext): ModelQuery {
|
|
153
|
+
if (!this.model) {
|
|
154
|
+
throw new Error(
|
|
155
|
+
`[Pilotiq] ${this.name}.query() requires \`static model = …\` to be set, ` +
|
|
156
|
+
`or override \`static query(ctx)\` directly to return a custom ModelQuery.`,
|
|
157
|
+
)
|
|
158
|
+
}
|
|
159
|
+
return this.model.query()
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
// ─── Plan #13: soft deletes ────────────────────────────────
|
|
163
|
+
// Opt-in: when true, pilotiq routes the standard delete action
|
|
164
|
+
// through `model.delete()` (which writes `deletedAt`), surfaces a
|
|
165
|
+
// TrashedFilter on the list page, swaps the row-action set on
|
|
166
|
+
// trashed rows (Restore + Force-delete instead of Edit + Delete),
|
|
167
|
+
// and exposes two new POST routes: `/:id/restore` and
|
|
168
|
+
// `/:id/force-delete`. The rudder ORM side must also opt in
|
|
169
|
+
// (`Model.softDeletes = true`) for the underlying behavior to
|
|
170
|
+
// engage — pilotiq throws a clear boot error when the flag is
|
|
171
|
+
// set here but the model lacks `restore` / `forceDelete`.
|
|
172
|
+
|
|
173
|
+
/** Enable soft-delete UX (TrashedFilter, Restore action,
|
|
174
|
+
* Force-delete action, soft-delete-aware row visibility). Default
|
|
175
|
+
* `false`. Requires `Resource.model` to be set, with
|
|
176
|
+
* `Model.softDeletes = true` on the rudder side. */
|
|
177
|
+
static softDeletes: boolean = false
|
|
178
|
+
|
|
179
|
+
/** Column name carrying the soft-delete timestamp on each row.
|
|
180
|
+
* Per-row visibility predicates and the trashed-row branch in
|
|
181
|
+
* `Action.delete` consult `record[deletedAtColumn]`. Default
|
|
182
|
+
* matches rudder's `'deletedAt'`. */
|
|
183
|
+
static deletedAtColumn: string = 'deletedAt'
|
|
184
|
+
|
|
185
|
+
/** Persist the active list filter / search / sort slice on the
|
|
186
|
+
* user's session so revisiting the resource lands on the same view.
|
|
187
|
+
* No-ops silently when `@rudderjs/session` isn't mounted. */
|
|
188
|
+
static persistFiltersInSession: boolean = false
|
|
189
|
+
|
|
190
|
+
/** Skip server-side row loading on list pages; the client paints a
|
|
191
|
+
* skeleton and fetches rows from `GET {base}/{slug}/_table` after
|
|
192
|
+
* mount. URL chrome (filters / search / page / group) still mirrors
|
|
193
|
+
* on the SSR pass so the skeleton frame doesn't reset visible state. */
|
|
194
|
+
static deferLoading: boolean = false
|
|
195
|
+
|
|
196
|
+
// ─── Plan #12: global search ───────────────────────────────
|
|
197
|
+
// Opt-in: resources with `globalSearch = false` are skipped by the
|
|
198
|
+
// panel-level Cmd+K palette. Defaults below derive everything from
|
|
199
|
+
// already-shipped surfaces (`recordTitleAttribute`, `Column.searchable()`,
|
|
200
|
+
// the standard view URL) so the common case needs zero overrides.
|
|
201
|
+
|
|
202
|
+
/** Include this resource in Cmd+K palette results. Default `false` —
|
|
203
|
+
* quiet resources don't pollute results until users opt in. */
|
|
204
|
+
static globalSearch: boolean = false
|
|
205
|
+
|
|
206
|
+
/**
|
|
207
|
+
* Columns the default search query LIKE-matches against. The default
|
|
208
|
+
* dedupes `recordTitleAttribute` (Plan #9) with every searchable
|
|
209
|
+
* column on the resource's table. Override to constrain or extend.
|
|
210
|
+
* Returning an empty array effectively opts the resource out even
|
|
211
|
+
* when `globalSearch=true`.
|
|
212
|
+
*/
|
|
213
|
+
static globallySearchableAttributes(): string[] {
|
|
214
|
+
const attrs = new Set<string>()
|
|
215
|
+
if (this.recordTitleAttribute) attrs.add(this.recordTitleAttribute)
|
|
216
|
+
// Materialise the resource's configured table once and read every
|
|
217
|
+
// `searchable()` column off it. The Table builder is a pure
|
|
218
|
+
// configuration call (no DB hits, no I/O), so doing this per
|
|
219
|
+
// search request is fine; resources that don't want this can
|
|
220
|
+
// override `globallySearchableAttributes()` directly.
|
|
221
|
+
try {
|
|
222
|
+
const table = this.table(Table.make())
|
|
223
|
+
for (const col of table.getColumns()) {
|
|
224
|
+
if (col.isSearchable()) attrs.add(col.name)
|
|
225
|
+
}
|
|
226
|
+
} catch { /* defensive — bad user table()? skip */ }
|
|
227
|
+
return [...attrs]
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
/**
|
|
231
|
+
* Title shown in the palette result row. Default resolution chain:
|
|
232
|
+
* `record[recordTitleAttribute]` → `record.name` → `record.title` →
|
|
233
|
+
* `record.id`. Override to customise (e.g. include the id).
|
|
234
|
+
*/
|
|
235
|
+
static getGlobalSearchResultTitle(record: unknown): string {
|
|
236
|
+
const r = record as Record<string, unknown> | null | undefined
|
|
237
|
+
if (!r) return ''
|
|
238
|
+
if (this.recordTitleAttribute && r[this.recordTitleAttribute] !== undefined) {
|
|
239
|
+
return String(r[this.recordTitleAttribute])
|
|
240
|
+
}
|
|
241
|
+
if (r['name'] !== undefined) return String(r['name'])
|
|
242
|
+
if (r['title'] !== undefined) return String(r['title'])
|
|
243
|
+
if (r['id'] !== undefined) return String(r['id'])
|
|
244
|
+
return ''
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
/**
|
|
248
|
+
* Optional second-line text under the title. Returning `undefined`
|
|
249
|
+
* tells the renderer to skip the subtitle row. Useful for status,
|
|
250
|
+
* timestamps, or category pills.
|
|
251
|
+
*/
|
|
252
|
+
static getGlobalSearchResultSubtitle(_record: unknown): string | undefined {
|
|
253
|
+
return undefined
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
/**
|
|
257
|
+
* URL the palette navigates to on Enter. Default uses the View page
|
|
258
|
+
* when one exists, else the Edit page, else the resource list. Pass
|
|
259
|
+
* `base` (the panel base path) so overrides don't have to thread it
|
|
260
|
+
* through the panel config.
|
|
261
|
+
*/
|
|
262
|
+
static getGlobalSearchResultUrl(record: unknown, base: string): string {
|
|
263
|
+
const r = record as Record<string, unknown> | null | undefined
|
|
264
|
+
const prefix = resourceBasePath(base, this)
|
|
265
|
+
if (!r) return prefix
|
|
266
|
+
const id = r['id']
|
|
267
|
+
if (id === undefined || id === null) return prefix
|
|
268
|
+
return `${prefix}/${String(id)}`
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
/**
|
|
272
|
+
* Override the default LIKE-on-attributes search query. Return a
|
|
273
|
+
* `ModelQuery` (still chainable through `paginate(1, limit)`) for
|
|
274
|
+
* advanced cases — joins, full-text, `pg_trgm`. Returning `undefined`
|
|
275
|
+
* (the default) falls through to the framework-built query.
|
|
276
|
+
*/
|
|
277
|
+
static getGlobalSearchQuery(_needle: string): ModelQuery | undefined {
|
|
278
|
+
return undefined
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
// ─── Plan #10: authorization predicates ────────────────────
|
|
282
|
+
// All async, all default `true`. Routes call them with the resolved
|
|
283
|
+
// user (from `Pilotiq.user(fn)`); the renderer threads the same user
|
|
284
|
+
// into nav-tree filtering and `Action.create/edit/view/delete`
|
|
285
|
+
// factories. Override per-resource with role/policy logic. The user
|
|
286
|
+
// argument is whatever `Pilotiq.user(req => …)` returns — opaque to
|
|
287
|
+
// pilotiq, your shape.
|
|
288
|
+
|
|
289
|
+
/** Coarse "should this resource exist for this user at all" gate.
|
|
290
|
+
* Failing `canAccess` drops the resource from the nav tree entirely
|
|
291
|
+
* and 403s every route under it. */
|
|
292
|
+
static async canAccess(_user: unknown): Promise<boolean> { return true }
|
|
293
|
+
|
|
294
|
+
/** Allowed to load the index/list page. Item still appears in nav
|
|
295
|
+
* when `canAccess` passes but `canViewAny` fails — the URL just 403s. */
|
|
296
|
+
static async canViewAny(_user: unknown): Promise<boolean> { return true }
|
|
297
|
+
|
|
298
|
+
/** Allowed to load the read-only view page for a given record. */
|
|
299
|
+
static async canView(_user: unknown, _record: unknown): Promise<boolean> { return true }
|
|
300
|
+
|
|
301
|
+
/** Allowed to access the create page + invoke the create form.
|
|
302
|
+
* Auto-hides `Action.create(R, …)` triggers that haven't set an
|
|
303
|
+
* explicit `.visible()` rule. */
|
|
304
|
+
static async canCreate(_user: unknown): Promise<boolean> { return true }
|
|
305
|
+
|
|
306
|
+
/** Allowed to edit a given record. Auto-hides `Action.edit(R, …)`
|
|
307
|
+
* triggers without an explicit `.visible()` rule. */
|
|
308
|
+
static async canEdit(_user: unknown, _record: unknown): Promise<boolean> { return true }
|
|
309
|
+
|
|
310
|
+
/** Allowed to delete a given record. Auto-hides `Action.delete(R, …)`
|
|
311
|
+
* triggers without an explicit `.visible()` rule. */
|
|
312
|
+
static async canDelete(_user: unknown, _record: unknown): Promise<boolean> { return true }
|
|
313
|
+
|
|
314
|
+
/** Plan #13 — allowed to restore a soft-deleted record. Defaults
|
|
315
|
+
* `true`; auto-hides `Action.restore(R, …)` when false. Only
|
|
316
|
+
* checked on resources with `softDeletes = true`. */
|
|
317
|
+
static async canRestore(_user: unknown, _record: unknown): Promise<boolean> { return true }
|
|
318
|
+
|
|
319
|
+
/** Plan #13 — allowed to permanently delete a soft-deleted record.
|
|
320
|
+
* Defaults to whatever `canDelete` returns when this method is *not*
|
|
321
|
+
* overridden — soft-delete restore is generally lower-privilege
|
|
322
|
+
* than force-delete, but force-delete inheriting from delete is the
|
|
323
|
+
* conservative starting point. Override this to tighten or loosen
|
|
324
|
+
* independently. Only checked on resources with `softDeletes = true`.
|
|
325
|
+
*
|
|
326
|
+
* The `safeForceDeletePolicy` helper (used by routes + `Action.forceDelete`
|
|
327
|
+
* visibility) detects the un-overridden case via reference equality
|
|
328
|
+
* against `Resource.canForceDelete` — same trick Plan #11 uses for
|
|
329
|
+
* `safeManagerPolicy`. Don't reassign `Resource.canForceDelete`
|
|
330
|
+
* outside of subclass overrides; it'd break the detection globally. */
|
|
331
|
+
static async canForceDelete(this: ResourceClass, user: unknown, record: unknown): Promise<boolean> {
|
|
332
|
+
return this.canDelete(user, record)
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
/**
|
|
336
|
+
* Configure the form used by `create` and `edit` pages by default.
|
|
337
|
+
* Receives a fresh `Form` instance; return the configured form.
|
|
338
|
+
*/
|
|
339
|
+
static form(form: Form): Form { return form }
|
|
340
|
+
|
|
341
|
+
/**
|
|
342
|
+
* Configure the table used by the `index` page by default.
|
|
343
|
+
* Receives a fresh `Table` instance; return the configured table.
|
|
344
|
+
*/
|
|
345
|
+
static table(table: Table): Table { return table }
|
|
346
|
+
|
|
347
|
+
/**
|
|
348
|
+
* Schema for the read-only `view` page. Receives the loaded record.
|
|
349
|
+
* Returns an array of Elements (typically Sections + display elements).
|
|
350
|
+
*/
|
|
351
|
+
static detail(_record: unknown): Element[] { return [] }
|
|
352
|
+
|
|
353
|
+
/**
|
|
354
|
+
* Plan #15 — schema rendered above the list-page table. Default `[]`.
|
|
355
|
+
* Typical use: dashboard widgets that contextualize the list (KPI cards,
|
|
356
|
+
* charts, status alerts). Anything Element-typed is allowed —
|
|
357
|
+
* `Group / Card / Section` for layout, `Stat / StatsOverview / Chart /
|
|
358
|
+
* TableWidget / View` for server-data widgets, `Heading / Alert` for
|
|
359
|
+
* static chrome. Resolves with the same `SchemaContext` passed to the
|
|
360
|
+
* list page's schema (carries `mode: 'table'`, `basePath`, `user`).
|
|
361
|
+
* Server-data widgets inside resolve in parallel via the shared
|
|
362
|
+
* `_widgetData` map and re-fetch through `POST {base}/{slug}/_widget/:id`.
|
|
363
|
+
* The hook only fires after `Resource.canAccess(user)` passes (route-level
|
|
364
|
+
* gate) — there's no extra per-hook authorization.
|
|
365
|
+
*/
|
|
366
|
+
static headerSchema(_ctx?: SchemaContext): Element[] | Promise<Element[]> { return [] }
|
|
367
|
+
|
|
368
|
+
/**
|
|
369
|
+
* Plan #15 — schema rendered below the list-page table. Default `[]`.
|
|
370
|
+
* Same shape and posture as `headerSchema()`; useful for footnotes,
|
|
371
|
+
* legends, or "longest-running…" tables that contextualize the list
|
|
372
|
+
* from below.
|
|
373
|
+
*/
|
|
374
|
+
static footerSchema(_ctx?: SchemaContext): Element[] | Promise<Element[]> { return [] }
|
|
375
|
+
|
|
376
|
+
/**
|
|
377
|
+
* Delete a record by id. Falls through to `model.delete(id)` when
|
|
378
|
+
* `static model` is set; otherwise throws so the user knows to wire
|
|
379
|
+
* something up. Override on the subclass for custom delete logic.
|
|
380
|
+
* Wired up by the `POST {base}/{slug}/{id}/delete` route.
|
|
381
|
+
*/
|
|
382
|
+
static async deleteRecord(id: string): Promise<void> {
|
|
383
|
+
if (this.model) {
|
|
384
|
+
await this.model.delete(id)
|
|
385
|
+
return
|
|
386
|
+
}
|
|
387
|
+
throw new Error(
|
|
388
|
+
`[Pilotiq] ${this.name}: no deleteRecord(id) implementation. Set Resource.model = … or override Resource.deleteRecord to wire up deletion.`,
|
|
389
|
+
)
|
|
390
|
+
}
|
|
391
|
+
|
|
392
|
+
/**
|
|
393
|
+
* User-overridable page map. Return any subset of `{ index, create, edit, view }`
|
|
394
|
+
* to override the auto-generated defaults; missing keys fall through to
|
|
395
|
+
* defaults via `resolvePages()`.
|
|
396
|
+
*/
|
|
397
|
+
static pages(): ResourcePages { return {} }
|
|
398
|
+
|
|
399
|
+
/**
|
|
400
|
+
* Resolved page map: defaults from `defaultPages(this)` overlaid with whatever
|
|
401
|
+
* `pages()` returns. This is what routing consumes (wired in 2.3).
|
|
402
|
+
*/
|
|
403
|
+
static resolvePages(): ResourcePages {
|
|
404
|
+
const defaults = defaultPages(this as unknown as ResourceClass)
|
|
405
|
+
const overrides = this.pages()
|
|
406
|
+
return { ...defaults, ...overrides }
|
|
407
|
+
}
|
|
408
|
+
|
|
409
|
+
/**
|
|
410
|
+
* Plan #11 — relation managers mounted under this resource's edit /
|
|
411
|
+
* view pages. Each entry is a `RelationManager` subclass; routes are
|
|
412
|
+
* registered under `${base}/${slug}/:id/${manager.relationship}`.
|
|
413
|
+
* Default empty.
|
|
414
|
+
*/
|
|
415
|
+
static relations(): Array<typeof RelationManager> { return [] }
|
|
416
|
+
|
|
417
|
+
/** URL slug, derived from `label` when not set explicitly. */
|
|
418
|
+
static getSlug(): string {
|
|
419
|
+
return this.slug || this.label.toLowerCase().replace(/\s+/g, '-')
|
|
420
|
+
}
|
|
421
|
+
|
|
422
|
+
/** Sidebar label: `navigationLabel` override falls through to `label`. */
|
|
423
|
+
static getNavigationLabel(): string {
|
|
424
|
+
return this.navigationLabel ?? this.label
|
|
425
|
+
}
|
|
426
|
+
|
|
427
|
+
/** Breadcrumb label: `breadcrumb` override falls through to `label`. */
|
|
428
|
+
static getBreadcrumb(): string {
|
|
429
|
+
return this.breadcrumb ?? this.label
|
|
430
|
+
}
|
|
431
|
+
|
|
432
|
+
/** Sidebar icon: `navigationIcon` override falls through to `icon`. */
|
|
433
|
+
static getNavigationIcon(): IconValue {
|
|
434
|
+
return this.navigationIcon ?? this.icon
|
|
435
|
+
}
|
|
436
|
+
}
|
|
437
|
+
|
|
438
|
+
/** Constructor type for `Resource` subclasses. Used in panel registration. */
|
|
439
|
+
export type ResourceClass = typeof Resource
|