@rebasepro/admin 0.0.1-canary.eae7889 → 0.0.1-canary.eb08332

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.
Files changed (716) hide show
  1. package/LICENSE +21 -6
  2. package/README.md +139 -0
  3. package/dist/CollectionEditorDialog-DKGlYDPc.js +3630 -0
  4. package/dist/CollectionEditorDialog-DKGlYDPc.js.map +1 -0
  5. package/dist/PropertyEditView-h0N-AMCY.js +3808 -0
  6. package/dist/PropertyEditView-h0N-AMCY.js.map +1 -0
  7. package/dist/RouterCollectionsStudioView-DdEStpFk.js +192 -0
  8. package/dist/RouterCollectionsStudioView-DdEStpFk.js.map +1 -0
  9. package/dist/collection_editor/ConfigControllerProvider.d.ts +2 -11
  10. package/dist/collection_editor/_cms_internals.d.ts +4 -4
  11. package/dist/collection_editor/api/generateCollectionApi.d.ts +10 -9
  12. package/dist/collection_editor/extensibility_types.d.ts +135 -0
  13. package/dist/collection_editor/index.d.ts +6 -1
  14. package/dist/collection_editor/pgColumnToProperty.d.ts +3 -3
  15. package/dist/collection_editor/serializable_types.d.ts +370 -0
  16. package/dist/collection_editor/serializable_utils.d.ts +50 -0
  17. package/dist/collection_editor/types/collection_editor_controller.d.ts +11 -10
  18. package/dist/collection_editor/types/collection_inference.d.ts +2 -2
  19. package/dist/collection_editor/types/config_controller.d.ts +21 -14
  20. package/dist/collection_editor/ui/AddKanbanColumnAction.d.ts +7 -5
  21. package/dist/collection_editor/ui/CollectionViewHeaderAction.d.ts +7 -5
  22. package/dist/collection_editor/ui/EditorCollectionAction.d.ts +1 -1
  23. package/dist/collection_editor/ui/EditorCollectionActionStart.d.ts +1 -1
  24. package/dist/collection_editor/ui/EditorEntityAction.d.ts +1 -1
  25. package/dist/collection_editor/ui/HomePageEditorCollectionAction.d.ts +1 -1
  26. package/dist/collection_editor/ui/KanbanSetupAction.d.ts +7 -5
  27. package/dist/collection_editor/ui/MissingReferenceWidget.d.ts +1 -1
  28. package/dist/collection_editor/ui/NewCollectionButton.d.ts +1 -1
  29. package/dist/collection_editor/ui/NewCollectionCard.d.ts +1 -1
  30. package/dist/collection_editor/ui/PropertyAddColumnComponent.d.ts +6 -5
  31. package/dist/collection_editor/ui/collection_editor/AICollectionGeneratorPopover.d.ts +4 -4
  32. package/dist/collection_editor/ui/collection_editor/AIModifiedPathsContext.d.ts +1 -1
  33. package/dist/collection_editor/ui/collection_editor/CollectionDetailsForm.d.ts +7 -7
  34. package/dist/collection_editor/ui/collection_editor/CollectionEditorDialog.d.ts +10 -11
  35. package/dist/collection_editor/ui/collection_editor/CollectionEditorWelcomeView.d.ts +4 -4
  36. package/dist/collection_editor/ui/collection_editor/CollectionJsonImportDialog.d.ts +4 -3
  37. package/dist/collection_editor/ui/collection_editor/CollectionPropertiesEditorForm.d.ts +17 -7
  38. package/dist/collection_editor/ui/collection_editor/CollectionRLSTab.d.ts +2 -1
  39. package/dist/collection_editor/ui/collection_editor/CollectionRelationsTab.d.ts +2 -1
  40. package/dist/collection_editor/ui/collection_editor/CollectionStudioView.d.ts +14 -1
  41. package/dist/collection_editor/ui/collection_editor/CollectionYupValidation.d.ts +1 -9
  42. package/dist/collection_editor/ui/collection_editor/CollectionsStudioView.d.ts +25 -2
  43. package/dist/collection_editor/ui/collection_editor/DisplaySettingsForm.d.ts +4 -2
  44. package/dist/collection_editor/ui/collection_editor/EntityActionsEditTab.d.ts +4 -3
  45. package/dist/collection_editor/ui/collection_editor/EntityActionsSelectDialog.d.ts +2 -1
  46. package/dist/collection_editor/ui/collection_editor/EntityCustomViewsSelectDialog.d.ts +2 -1
  47. package/dist/collection_editor/ui/collection_editor/EnumForm.d.ts +2 -1
  48. package/dist/collection_editor/ui/collection_editor/GeneralSettingsForm.d.ts +8 -4
  49. package/dist/collection_editor/ui/collection_editor/GetCodeDialog.d.ts +4 -3
  50. package/dist/collection_editor/ui/collection_editor/KanbanConfigSection.d.ts +2 -1
  51. package/dist/collection_editor/ui/collection_editor/LayoutModeSwitch.d.ts +3 -3
  52. package/dist/collection_editor/ui/collection_editor/PropertyEditView.d.ts +17 -5
  53. package/dist/collection_editor/ui/collection_editor/PropertyFieldPreview.d.ts +2 -2
  54. package/dist/collection_editor/ui/collection_editor/PropertyTree.d.ts +2 -2
  55. package/dist/collection_editor/ui/collection_editor/RouterCollectionStudioView.d.ts +15 -0
  56. package/dist/collection_editor/ui/collection_editor/RouterCollectionsStudioView.d.ts +14 -0
  57. package/dist/collection_editor/ui/collection_editor/SubcollectionsEditTab.d.ts +8 -6
  58. package/dist/collection_editor/ui/collection_editor/SwitchControl.d.ts +3 -2
  59. package/dist/collection_editor/ui/collection_editor/ViewModeSwitch.d.ts +1 -1
  60. package/dist/collection_editor/ui/collection_editor/import/CollectionEditorImportDataPreview.d.ts +1 -1
  61. package/dist/collection_editor/ui/collection_editor/import/CollectionEditorImportMapping.d.ts +3 -2
  62. package/dist/collection_editor/ui/collection_editor/properties/BlockPropertyField.d.ts +2 -1
  63. package/dist/collection_editor/ui/collection_editor/properties/BooleanPropertyField.d.ts +2 -1
  64. package/dist/collection_editor/ui/collection_editor/properties/DateTimePropertyField.d.ts +2 -1
  65. package/dist/collection_editor/ui/collection_editor/properties/EnumPropertyField.d.ts +2 -1
  66. package/dist/collection_editor/ui/collection_editor/properties/KeyValuePropertyField.d.ts +2 -1
  67. package/dist/collection_editor/ui/collection_editor/properties/MapPropertyField.d.ts +2 -1
  68. package/dist/collection_editor/ui/collection_editor/properties/MarkdownPropertyField.d.ts +2 -1
  69. package/dist/collection_editor/ui/collection_editor/properties/NumberPropertyField.d.ts +2 -1
  70. package/dist/collection_editor/ui/collection_editor/properties/ReferencePropertyField.d.ts +3 -2
  71. package/dist/collection_editor/ui/collection_editor/properties/RelationPropertyField.d.ts +3 -8
  72. package/dist/collection_editor/ui/collection_editor/properties/RepeatPropertyField.d.ts +2 -1
  73. package/dist/collection_editor/ui/collection_editor/properties/StoragePropertyField.d.ts +2 -1
  74. package/dist/collection_editor/ui/collection_editor/properties/StringPropertyField.d.ts +2 -1
  75. package/dist/collection_editor/ui/collection_editor/properties/UrlPropertyField.d.ts +2 -1
  76. package/dist/collection_editor/ui/collection_editor/properties/VectorPropertyField.d.ts +4 -0
  77. package/dist/collection_editor/ui/collection_editor/properties/advanced/AdvancedPropertyValidation.d.ts +2 -1
  78. package/dist/collection_editor/ui/collection_editor/properties/conditions/ConditionsEditor.d.ts +2 -1
  79. package/dist/collection_editor/ui/collection_editor/properties/conditions/ConditionsPanel.d.ts +1 -1
  80. package/dist/collection_editor/ui/collection_editor/properties/conditions/EnumConditionsEditor.d.ts +2 -1
  81. package/dist/collection_editor/ui/collection_editor/properties/validation/ArrayPropertyValidation.d.ts +2 -1
  82. package/dist/collection_editor/ui/collection_editor/properties/validation/GeneralPropertyValidation.d.ts +2 -1
  83. package/dist/collection_editor/ui/collection_editor/properties/validation/NumberPropertyValidation.d.ts +2 -1
  84. package/dist/collection_editor/ui/collection_editor/properties/validation/StringPropertyValidation.d.ts +2 -1
  85. package/dist/collection_editor/ui/collection_editor/properties/validation/ValidationPanel.d.ts +1 -1
  86. package/dist/collection_editor/ui/collection_editor/templates/blog_template.d.ts +2 -2
  87. package/dist/collection_editor/ui/collection_editor/templates/pages_template.d.ts +2 -2
  88. package/dist/collection_editor/ui/collection_editor/templates/products_template.d.ts +2 -2
  89. package/dist/collection_editor/ui/collection_editor/templates/users_template.d.ts +2 -2
  90. package/dist/collection_editor/useJsonCollectionsConfigController.d.ts +37 -0
  91. package/dist/collection_editor/useLocalCollectionsConfigController.d.ts +2 -2
  92. package/dist/collection_editor/useSafeSnackbarController.d.ts +2 -0
  93. package/dist/collection_editor/validateCollectionJson.d.ts +2 -2
  94. package/dist/collection_editor_ui.d.ts +4 -0
  95. package/dist/collection_editor_ui.js +33 -11
  96. package/dist/collection_editor_ui.js.map +1 -1
  97. package/dist/components/ArrayContainer.d.ts +5 -5
  98. package/dist/components/ClearFilterSortButton.d.ts +1 -1
  99. package/dist/components/CollectionEditorDialogs.d.ts +2 -1
  100. package/dist/components/CollectionPanel.d.ts +58 -0
  101. package/dist/components/{EntityCollectionTable/EntityCollectionRowActions.d.ts → CollectionTableBinding/CollectionRowActions.d.ts} +5 -5
  102. package/dist/components/CollectionTableBinding/CollectionTableBinding.d.ts +28 -0
  103. package/dist/components/{EntityCollectionTable/EntityCollectionTableProps.d.ts → CollectionTableBinding/CollectionTableBindingProps.d.ts} +4 -4
  104. package/dist/components/{EntityCollectionTable → CollectionTableBinding}/column_utils.d.ts +2 -2
  105. package/dist/components/{EntityCollectionTable → CollectionTableBinding}/fields/TableMultipleRelationField.d.ts +6 -6
  106. package/dist/components/{EntityCollectionTable → CollectionTableBinding}/fields/TableReferenceField.d.ts +6 -6
  107. package/dist/components/{EntityCollectionTable → CollectionTableBinding}/fields/TableRelationField.d.ts +6 -6
  108. package/dist/components/{EntityCollectionTable → CollectionTableBinding}/fields/TableRelationSelectorField.d.ts +3 -2
  109. package/dist/components/{EntityCollectionTable → CollectionTableBinding}/fields/TableStorageUpload.d.ts +4 -4
  110. package/dist/components/{EntityCollectionTable → CollectionTableBinding}/fields/VirtualTableSelect.d.ts +1 -1
  111. package/dist/components/{EntityCollectionTable → CollectionTableBinding}/fields/VirtualTableUserSelect.d.ts +1 -1
  112. package/dist/components/CollectionTableBinding/index.d.ts +6 -0
  113. package/dist/components/{EntityCollectionTable → CollectionTableBinding}/internal/CollectionTableToolbar.d.ts +5 -1
  114. package/dist/components/{EntityCollectionTable → CollectionTableBinding}/internal/EntityTableCell.d.ts +3 -3
  115. package/dist/components/{EntityCollectionTable → CollectionTableBinding}/internal/EntityTableCellActions.d.ts +1 -1
  116. package/dist/components/{EntityCollectionTable → CollectionTableBinding}/internal/common.d.ts +2 -2
  117. package/dist/components/{EntityCollectionTable → CollectionTableBinding}/internal/popup_field/PopupFormField.d.ts +7 -6
  118. package/dist/components/{EntityCollectionTable → CollectionTableBinding}/table_bindings.d.ts +4 -3
  119. package/dist/components/CollectionViewBinding/BoardCardBinding.d.ts +31 -0
  120. package/dist/components/CollectionViewBinding/CollectionBoardViewBinding.d.ts +22 -0
  121. package/dist/components/{EntityCollectionView/EntityCollectionCardView.d.ts → CollectionViewBinding/CollectionCardViewBinding.d.ts} +5 -5
  122. package/dist/components/CollectionViewBinding/CollectionListViewBinding.d.ts +50 -0
  123. package/dist/components/CollectionViewBinding/CollectionViewActions.d.ts +20 -0
  124. package/dist/components/CollectionViewBinding/CollectionViewBinding.d.ts +41 -0
  125. package/dist/components/CollectionViewBinding/CollectionViewStartActions.d.ts +21 -0
  126. package/dist/components/CollectionViewBinding/EntityCardBinding.d.ts +21 -0
  127. package/dist/components/CollectionViewBinding/FilterPresetsButton.d.ts +22 -0
  128. package/dist/components/{EntityCollectionView → CollectionViewBinding}/FiltersDialog.d.ts +3 -2
  129. package/dist/components/{EntityCollectionView → CollectionViewBinding}/SplitListView.d.ts +6 -5
  130. package/dist/components/{EntityCollectionView → CollectionViewBinding}/ViewModeToggle.d.ts +2 -1
  131. package/dist/components/{EntityCollectionView → CollectionViewBinding}/hooks/useCollectionInlineEditor.d.ts +3 -3
  132. package/dist/components/{EntityCollectionView → CollectionViewBinding}/hooks/useKanbanDragAndDrop.d.ts +7 -6
  133. package/dist/components/{EntityCollectionView → CollectionViewBinding}/useBoardDataController.d.ts +2 -2
  134. package/dist/components/{EntityCollectionView/useEntityPreviewSlots.d.ts → CollectionViewBinding/usePreviewSlots.d.ts} +5 -5
  135. package/dist/components/DefaultAppBar.d.ts +18 -1
  136. package/dist/components/DefaultDrawer.d.ts +53 -5
  137. package/dist/components/DeleteEntityDialog.d.ts +6 -5
  138. package/dist/components/DetailViewBinding.d.ts +28 -0
  139. package/dist/components/DrawerNavigationGroup.d.ts +1 -1
  140. package/dist/components/DrawerNavigationItem.d.ts +1 -1
  141. package/dist/components/EditFormActions.d.ts +3 -0
  142. package/dist/components/EditViewBinding.d.ts +58 -0
  143. package/dist/components/{EntityPreview.d.ts → EntityPreviewBinding.d.ts} +14 -14
  144. package/dist/components/EntityViewBinding.d.ts +13 -0
  145. package/dist/components/FieldCaption.d.ts +1 -1
  146. package/dist/components/HomePage/ContentHomePage.d.ts +1 -1
  147. package/dist/components/HomePage/FavouritesView.d.ts +1 -1
  148. package/dist/components/HomePage/HomePageDnD.d.ts +7 -7
  149. package/dist/components/HomePage/NavigationCard.d.ts +1 -1
  150. package/dist/components/HomePage/NavigationCardBinding.d.ts +2 -1
  151. package/dist/components/HomePage/NavigationGroup.d.ts +2 -2
  152. package/dist/components/HomePage/RenameGroupDialog.d.ts +2 -1
  153. package/dist/components/HomePage/SmallNavigationCard.d.ts +1 -1
  154. package/dist/components/JsonPreviewBinding.d.ts +4 -0
  155. package/dist/components/PropertyCollectionView.d.ts +3 -2
  156. package/dist/components/PropertyIdCopyTooltip.d.ts +3 -3
  157. package/dist/components/{RebaseCMS.d.ts → RebaseAdmin.d.ts} +2 -2
  158. package/dist/components/RebaseAuthGate.d.ts +1 -1
  159. package/dist/components/RebaseLayout.d.ts +6 -5
  160. package/dist/components/RebaseNavigation.d.ts +2 -2
  161. package/dist/components/RebaseRouteDefs.d.ts +2 -2
  162. package/dist/components/RebaseShell.d.ts +2 -1
  163. package/dist/components/ReferenceTable/{EntitySelectionTable.d.ts → SelectionTableBinding.d.ts} +6 -6
  164. package/dist/components/ReferenceWidget.d.ts +3 -2
  165. package/dist/components/RelationSelector.d.ts +1 -1
  166. package/dist/components/SearchIconsView.d.ts +2 -1
  167. package/dist/components/SelectableTable/SelectableTable.d.ts +11 -11
  168. package/dist/components/SelectableTable/SelectableTableContext.d.ts +3 -3
  169. package/dist/components/SelectableTable/SelectionStore.d.ts +16 -22
  170. package/dist/components/SelectableTable/filters/BooleanFilterField.d.ts +9 -3
  171. package/dist/components/SelectableTable/filters/DateTimeFilterField.d.ts +10 -3
  172. package/dist/components/SelectableTable/filters/FilterFieldBinding.d.ts +40 -0
  173. package/dist/components/SelectableTable/filters/ReferenceFilterField.d.ts +10 -3
  174. package/dist/components/SelectableTable/filters/RelationFilterField.d.ts +8 -1
  175. package/dist/components/SelectableTable/filters/StringNumberFilterField.d.ts +10 -3
  176. package/dist/components/SideDialogs.d.ts +2 -2
  177. package/dist/components/SidePanelBinding.d.ts +11 -0
  178. package/dist/components/{SideEntityProvider.d.ts → SidePanelProvider.d.ts} +8 -8
  179. package/dist/components/admin/CreationResultDialog.d.ts +6 -0
  180. package/dist/components/admin/index.d.ts +1 -3
  181. package/dist/components/app/AppBar.d.ts +1 -1
  182. package/dist/components/app/Drawer.d.ts +9 -2
  183. package/dist/components/common/default_entity_actions.d.ts +8 -1
  184. package/dist/components/field_configs.d.ts +1 -1
  185. package/dist/components/history/EntityHistoryEntry.d.ts +3 -3
  186. package/dist/components/history/EntityHistoryView.d.ts +1 -1
  187. package/dist/components/history/LastEditedByFormAction.d.ts +2 -1
  188. package/dist/components/history/LastEditedByIndicator.d.ts +4 -3
  189. package/dist/components/history/UserChip.d.ts +1 -1
  190. package/dist/components/index.d.ts +16 -13
  191. package/dist/contexts/SidePanelControllerContext.d.ts +3 -0
  192. package/dist/data_export/export/BasicExportAction.d.ts +2 -1
  193. package/dist/data_export/export/ExportCollectionAction.d.ts +4 -4
  194. package/dist/data_export/export/export.d.ts +3 -3
  195. package/dist/data_import/components/DataNewPropertiesMapping.d.ts +1 -1
  196. package/dist/data_import/components/ImportFileUpload.d.ts +1 -1
  197. package/dist/data_import/components/ImportNewPropertyFieldPreview.d.ts +2 -1
  198. package/dist/data_import/components/ImportSaveInProgress.d.ts +3 -3
  199. package/dist/data_import/import/ImportCollectionAction.d.ts +4 -3
  200. package/dist/data_import/utils/data.d.ts +1 -1
  201. package/dist/data_import/utils/file_headers.d.ts +6 -1
  202. package/dist/data_import/utils/file_to_json.d.ts +1 -11
  203. package/dist/data_import/utils/transforms.d.ts +11 -0
  204. package/dist/editor/components/SlashCommandMenu.d.ts +2 -1
  205. package/dist/editor/components/editor-bubble.d.ts +5 -1
  206. package/dist/editor/components/image-bubble.d.ts +5 -1
  207. package/dist/editor/components/index.d.ts +3 -3
  208. package/dist/editor/components/table-bubble.d.ts +5 -1
  209. package/dist/editor/editor.d.ts +4 -4
  210. package/dist/editor/nodeViews/ReactNodeView.d.ts +4 -1
  211. package/dist/editor/selectors/color-selector.d.ts +1 -1
  212. package/dist/editor/selectors/link-selector.d.ts +1 -1
  213. package/dist/editor/selectors/node-selector.d.ts +1 -1
  214. package/dist/editor/selectors/text-buttons.d.ts +1 -1
  215. package/dist/editor/useProseMirror.d.ts +2 -2
  216. package/dist/editor/utils/remove_classes.d.ts +1 -1
  217. package/dist/editor.js +2625 -3569
  218. package/dist/editor.js.map +1 -1
  219. package/dist/form/EntityForm.d.ts +11 -9
  220. package/dist/form/EntityFormActions.d.ts +2 -1
  221. package/dist/form/EntityFormBinding.d.ts +27 -0
  222. package/dist/form/PropertyFieldBinding.d.ts +1 -1
  223. package/dist/form/components/FieldHelperText.d.ts +1 -1
  224. package/dist/form/components/FormEntry.d.ts +1 -1
  225. package/dist/form/components/FormLayout.d.ts +1 -1
  226. package/dist/form/components/LabelWithIconAndTooltip.d.ts +1 -1
  227. package/dist/form/components/LocalChangesMenu.d.ts +3 -2
  228. package/dist/form/components/StorageItemPreview.d.ts +2 -1
  229. package/dist/form/components/StorageUploadProgress.d.ts +10 -4
  230. package/dist/form/field_bindings/ArrayCustomShapedFieldBinding.d.ts +2 -1
  231. package/dist/form/field_bindings/ArrayOfReferencesFieldBinding.d.ts +2 -1
  232. package/dist/form/field_bindings/BlockFieldBinding.d.ts +2 -1
  233. package/dist/form/field_bindings/DateTimeFieldBinding.d.ts +2 -1
  234. package/dist/form/field_bindings/KeyValueFieldBinding.d.ts +2 -1
  235. package/dist/form/field_bindings/MapFieldBinding.d.ts +2 -1
  236. package/dist/form/field_bindings/MarkdownEditorFieldBinding.d.ts +4 -3
  237. package/dist/form/field_bindings/MultiSelectFieldBinding.d.ts +2 -1
  238. package/dist/form/field_bindings/MultipleRelationFieldBinding.d.ts +2 -1
  239. package/dist/form/field_bindings/ReadOnlyFieldBinding.d.ts +2 -1
  240. package/dist/form/field_bindings/ReferenceFieldBinding.d.ts +2 -1
  241. package/dist/form/field_bindings/RelationFieldBinding.d.ts +2 -1
  242. package/dist/form/field_bindings/RepeatFieldBinding.d.ts +2 -1
  243. package/dist/form/field_bindings/SelectFieldBinding.d.ts +2 -1
  244. package/dist/form/field_bindings/StorageUploadFieldBinding.d.ts +5 -4
  245. package/dist/form/field_bindings/SwitchFieldBinding.d.ts +2 -1
  246. package/dist/form/field_bindings/TextFieldBinding.d.ts +2 -1
  247. package/dist/form/field_bindings/UserSelectFieldBinding.d.ts +2 -1
  248. package/dist/form/field_bindings/VectorFieldBinding.d.ts +12 -0
  249. package/dist/form/form_utils.d.ts +8 -0
  250. package/dist/form/index.d.ts +6 -2
  251. package/dist/form/validation.d.ts +3 -3
  252. package/dist/history-C0FdqGNz.js +311 -0
  253. package/dist/history-C0FdqGNz.js.map +1 -0
  254. package/dist/hooks/index.d.ts +4 -4
  255. package/dist/hooks/navigation/contexts/CollectionRegistryContext.d.ts +2 -2
  256. package/dist/hooks/navigation/useAsyncResolver.d.ts +26 -0
  257. package/dist/hooks/navigation/useBuildCollectionRegistryController.d.ts +2 -0
  258. package/dist/hooks/navigation/useBuildNavigationStateController.d.ts +6 -8
  259. package/dist/hooks/navigation/useNavigationResolution.d.ts +6 -7
  260. package/dist/hooks/navigation/useResolvedCollections.d.ts +11 -7
  261. package/dist/hooks/navigation/useResolvedViews.d.ts +2 -5
  262. package/dist/hooks/navigation/useTopLevelNavigation.d.ts +3 -3
  263. package/dist/hooks/navigation/utils.d.ts +5 -5
  264. package/dist/hooks/useBreadcrumbsController.d.ts +2 -32
  265. package/dist/hooks/useBuildSidePanel.d.ts +6 -0
  266. package/dist/hooks/useCMSContext.d.ts +2 -2
  267. package/dist/hooks/{useEntityHistory.d.ts → useHistory.d.ts} +2 -2
  268. package/dist/hooks/useResolvedNavigationFrom.d.ts +3 -3
  269. package/dist/hooks/{useEntitySelectionDialog.d.ts → useSelectionDialog.d.ts} +2 -2
  270. package/dist/hooks/useSideDialogsController.d.ts +1 -1
  271. package/dist/hooks/useSidePanel.d.ts +11 -0
  272. package/dist/index.d.ts +6 -3
  273. package/dist/index.js +2 -799
  274. package/dist/markdown-CklalUUk.js +526 -0
  275. package/dist/markdown-CklalUUk.js.map +1 -0
  276. package/dist/preview/components/ArrayEnumPreview.d.ts +2 -1
  277. package/dist/preview/components/EmptyValue.d.ts +2 -1
  278. package/dist/preview/components/EnumValuesChip.d.ts +1 -1
  279. package/dist/preview/components/ImagePreview.d.ts +2 -1
  280. package/dist/preview/components/ReferencePreview.d.ts +2 -1
  281. package/dist/preview/components/RelationPreview.d.ts +2 -1
  282. package/dist/preview/components/StorageThumbnail.d.ts +3 -1
  283. package/dist/preview/components/UrlComponentPreview.d.ts +1 -0
  284. package/dist/preview/components/UserPreview.d.ts +6 -3
  285. package/dist/preview/property_previews/ArrayOfMapsPreview.d.ts +2 -1
  286. package/dist/preview/property_previews/ArrayOfReferencesPreview.d.ts +1 -1
  287. package/dist/preview/property_previews/ArrayOfRelationsPreview.d.ts +1 -1
  288. package/dist/preview/property_previews/ArrayOfStorageComponentsPreview.d.ts +2 -1
  289. package/dist/preview/property_previews/ArrayOfStringsPreview.d.ts +2 -1
  290. package/dist/preview/property_previews/ArrayOneOfPreview.d.ts +2 -1
  291. package/dist/preview/property_previews/ArrayPropertyEnumPreview.d.ts +1 -1
  292. package/dist/preview/property_previews/ArrayPropertyPreview.d.ts +2 -1
  293. package/dist/preview/property_previews/MapPropertyPreview.d.ts +3 -2
  294. package/dist/preview/property_previews/SkeletonPropertyComponent.d.ts +5 -4
  295. package/dist/rolldown-runtime-D7D4PA-g.js +13 -0
  296. package/dist/routes/CustomViewRoute.d.ts +2 -1
  297. package/dist/routes/RebaseRoute.d.ts +1 -1
  298. package/dist/src-DLAFyeZI.js +24222 -0
  299. package/dist/src-DLAFyeZI.js.map +1 -0
  300. package/dist/types/components/EntityFormActionsProps.d.ts +4 -4
  301. package/dist/types/components/EntityFormProps.d.ts +65 -5
  302. package/dist/types/components/PropertyPreviewProps.d.ts +6 -1
  303. package/dist/types/components/formex.d.ts +1 -40
  304. package/dist/types/fields.d.ts +23 -12
  305. package/dist/util/dataControllerAdapter.d.ts +27 -0
  306. package/dist/util/navigation_utils.d.ts +16 -6
  307. package/dist/util/previews.d.ts +8 -3
  308. package/dist/util/propertyConfigMapper.d.ts +17 -0
  309. package/dist/util/property_utils.d.ts +3 -3
  310. package/dist/util/resolutions.d.ts +1 -2
  311. package/dist/util/view_constants.d.ts +6 -0
  312. package/package.json +56 -55
  313. package/src/collection_editor/ConfigControllerProvider.tsx +37 -53
  314. package/src/collection_editor/_cms_internals.ts +4 -4
  315. package/src/collection_editor/api/generateCollectionApi.ts +10 -9
  316. package/src/collection_editor/extensibility_types.ts +168 -0
  317. package/src/collection_editor/index.ts +47 -3
  318. package/src/collection_editor/pgColumnToProperty.ts +23 -6
  319. package/src/collection_editor/serializable_types.ts +474 -0
  320. package/src/collection_editor/serializable_utils.ts +576 -0
  321. package/src/collection_editor/types/collection_editor_controller.tsx +8 -11
  322. package/src/collection_editor/types/collection_inference.ts +2 -2
  323. package/src/collection_editor/types/config_controller.tsx +14 -14
  324. package/src/collection_editor/ui/AddKanbanColumnAction.tsx +21 -9
  325. package/src/collection_editor/ui/CollectionViewHeaderAction.tsx +8 -8
  326. package/src/collection_editor/ui/EditorCollectionAction.tsx +9 -14
  327. package/src/collection_editor/ui/EditorCollectionActionStart.tsx +13 -18
  328. package/src/collection_editor/ui/EditorEntityAction.tsx +9 -14
  329. package/src/collection_editor/ui/HomePageEditorCollectionAction.tsx +13 -19
  330. package/src/collection_editor/ui/KanbanSetupAction.tsx +8 -6
  331. package/src/collection_editor/ui/MissingReferenceWidget.tsx +5 -3
  332. package/src/collection_editor/ui/NewCollectionButton.tsx +4 -4
  333. package/src/collection_editor/ui/NewCollectionCard.tsx +8 -13
  334. package/src/collection_editor/ui/PropertyAddColumnComponent.tsx +11 -16
  335. package/src/collection_editor/ui/collection_editor/AICollectionGeneratorPopover.tsx +20 -12
  336. package/src/collection_editor/ui/collection_editor/CollectionDetailsForm.tsx +29 -59
  337. package/src/collection_editor/ui/collection_editor/CollectionEditorDialog.tsx +213 -135
  338. package/src/collection_editor/ui/collection_editor/CollectionEditorWelcomeView.tsx +21 -7
  339. package/src/collection_editor/ui/collection_editor/CollectionJsonImportDialog.tsx +29 -23
  340. package/src/collection_editor/ui/collection_editor/CollectionPropertiesEditorForm.tsx +142 -112
  341. package/src/collection_editor/ui/collection_editor/CollectionRLSTab.tsx +49 -12
  342. package/src/collection_editor/ui/collection_editor/CollectionRelationsTab.tsx +29 -10
  343. package/src/collection_editor/ui/collection_editor/CollectionStudioView.tsx +26 -23
  344. package/src/collection_editor/ui/collection_editor/CollectionsStudioView.tsx +104 -37
  345. package/src/collection_editor/ui/collection_editor/DisplaySettingsForm.tsx +26 -14
  346. package/src/collection_editor/ui/collection_editor/EntityActionsEditTab.tsx +21 -8
  347. package/src/collection_editor/ui/collection_editor/EntityActionsSelectDialog.tsx +1 -1
  348. package/src/collection_editor/ui/collection_editor/EntityCustomViewsSelectDialog.tsx +1 -1
  349. package/src/collection_editor/ui/collection_editor/EnumForm.tsx +20 -5
  350. package/src/collection_editor/ui/collection_editor/GeneralSettingsForm.tsx +45 -12
  351. package/src/collection_editor/ui/collection_editor/GetCodeDialog.tsx +10 -12
  352. package/src/collection_editor/ui/collection_editor/KanbanConfigSection.tsx +5 -6
  353. package/src/collection_editor/ui/collection_editor/LayoutModeSwitch.tsx +17 -5
  354. package/src/collection_editor/ui/collection_editor/PropertyEditView.tsx +190 -27
  355. package/src/collection_editor/ui/collection_editor/PropertyFieldPreview.tsx +58 -49
  356. package/src/collection_editor/ui/collection_editor/PropertyTree.tsx +17 -4
  357. package/src/collection_editor/ui/collection_editor/RouterCollectionStudioView.tsx +44 -0
  358. package/src/collection_editor/ui/collection_editor/RouterCollectionsStudioView.tsx +41 -0
  359. package/src/collection_editor/ui/collection_editor/SubcollectionsEditTab.tsx +27 -13
  360. package/src/collection_editor/ui/collection_editor/SwitchControl.tsx +1 -1
  361. package/src/collection_editor/ui/collection_editor/ViewModeSwitch.tsx +9 -2
  362. package/src/collection_editor/ui/collection_editor/import/CollectionEditorImportDataPreview.tsx +4 -4
  363. package/src/collection_editor/ui/collection_editor/import/CollectionEditorImportMapping.tsx +4 -4
  364. package/src/collection_editor/ui/collection_editor/properties/BlockPropertyField.tsx +5 -6
  365. package/src/collection_editor/ui/collection_editor/properties/BooleanPropertyField.tsx +1 -1
  366. package/src/collection_editor/ui/collection_editor/properties/CommonPropertyFields.tsx +5 -5
  367. package/src/collection_editor/ui/collection_editor/properties/DateTimePropertyField.tsx +10 -10
  368. package/src/collection_editor/ui/collection_editor/properties/EnumPropertyField.tsx +10 -9
  369. package/src/collection_editor/ui/collection_editor/properties/MapPropertyField.tsx +7 -8
  370. package/src/collection_editor/ui/collection_editor/properties/MarkdownPropertyField.tsx +17 -10
  371. package/src/collection_editor/ui/collection_editor/properties/NumberPropertyField.tsx +7 -7
  372. package/src/collection_editor/ui/collection_editor/properties/ReferencePropertyField.tsx +19 -53
  373. package/src/collection_editor/ui/collection_editor/properties/RelationPropertyField.tsx +43 -60
  374. package/src/collection_editor/ui/collection_editor/properties/RepeatPropertyField.tsx +3 -3
  375. package/src/collection_editor/ui/collection_editor/properties/StoragePropertyField.tsx +56 -13
  376. package/src/collection_editor/ui/collection_editor/properties/StringPropertyField.tsx +7 -7
  377. package/src/collection_editor/ui/collection_editor/properties/UrlPropertyField.tsx +4 -3
  378. package/src/collection_editor/ui/collection_editor/properties/VectorPropertyField.tsx +34 -0
  379. package/src/collection_editor/ui/collection_editor/properties/advanced/AdvancedPropertyValidation.tsx +5 -6
  380. package/src/collection_editor/ui/collection_editor/properties/conditions/ConditionsEditor.tsx +18 -9
  381. package/src/collection_editor/ui/collection_editor/properties/conditions/ConditionsPanel.tsx +1 -2
  382. package/src/collection_editor/ui/collection_editor/properties/conditions/EnumConditionsEditor.tsx +17 -5
  383. package/src/collection_editor/ui/collection_editor/properties/conditions/property_paths.ts +1 -1
  384. package/src/collection_editor/ui/collection_editor/properties/validation/ArrayPropertyValidation.tsx +4 -4
  385. package/src/collection_editor/ui/collection_editor/properties/validation/GeneralPropertyValidation.tsx +3 -3
  386. package/src/collection_editor/ui/collection_editor/properties/validation/NumberPropertyValidation.tsx +6 -9
  387. package/src/collection_editor/ui/collection_editor/properties/validation/StringPropertyValidation.tsx +6 -6
  388. package/src/collection_editor/ui/collection_editor/properties/validation/ValidationPanel.tsx +1 -2
  389. package/src/collection_editor/ui/collection_editor/templates/blog_template.ts +3 -3
  390. package/src/collection_editor/ui/collection_editor/templates/pages_template.ts +3 -3
  391. package/src/collection_editor/ui/collection_editor/templates/products_template.ts +4 -4
  392. package/src/collection_editor/ui/collection_editor/templates/users_template.ts +2 -2
  393. package/src/collection_editor/ui/collection_editor/utils/supported_fields.tsx +0 -1
  394. package/src/collection_editor/ui/collection_editor/utils/update_property_for_widget.ts +7 -29
  395. package/src/collection_editor/useJsonCollectionsConfigController.tsx +286 -0
  396. package/src/collection_editor/useLocalCollectionsConfigController.tsx +11 -8
  397. package/src/collection_editor/useSafeSnackbarController.ts +9 -0
  398. package/src/collection_editor/validateCollectionJson.ts +111 -24
  399. package/src/collection_editor_ui.ts +6 -0
  400. package/src/components/AdminModeSyncer.tsx +2 -2
  401. package/src/components/ArrayContainer.tsx +28 -24
  402. package/src/components/ClearFilterSortButton.tsx +2 -3
  403. package/src/components/CollectionEditorDialogs.tsx +1 -1
  404. package/src/components/CollectionPanel.tsx +178 -0
  405. package/src/components/{EntityCollectionTable/EntityCollectionRowActions.tsx → CollectionTableBinding/CollectionRowActions.tsx} +26 -16
  406. package/src/components/{EntityCollectionTable/EntityCollectionTable.tsx → CollectionTableBinding/CollectionTableBinding.tsx} +34 -31
  407. package/src/components/{EntityCollectionTable/EntityCollectionTableProps.tsx → CollectionTableBinding/CollectionTableBindingProps.tsx} +4 -4
  408. package/src/components/{EntityCollectionTable → CollectionTableBinding}/PropertyTableCell.tsx +14 -12
  409. package/src/components/{EntityCollectionTable → CollectionTableBinding}/column_utils.tsx +4 -4
  410. package/src/components/{EntityCollectionTable → CollectionTableBinding}/fields/TableMultipleRelationField.tsx +13 -13
  411. package/src/components/{EntityCollectionTable → CollectionTableBinding}/fields/TableReferenceField.tsx +39 -19
  412. package/src/components/{EntityCollectionTable → CollectionTableBinding}/fields/TableRelationField.tsx +14 -14
  413. package/src/components/{EntityCollectionTable → CollectionTableBinding}/fields/TableRelationSelectorField.tsx +3 -3
  414. package/src/components/{EntityCollectionTable → CollectionTableBinding}/fields/TableStorageUpload.tsx +29 -27
  415. package/src/components/{EntityCollectionTable → CollectionTableBinding}/fields/VirtualTableSelect.tsx +0 -1
  416. package/src/components/CollectionTableBinding/index.tsx +14 -0
  417. package/src/components/{EntityCollectionTable → CollectionTableBinding}/internal/CollectionTableToolbar.tsx +22 -28
  418. package/src/components/{EntityCollectionTable → CollectionTableBinding}/internal/EntityTableCell.tsx +8 -9
  419. package/src/components/{EntityCollectionTable → CollectionTableBinding}/internal/EntityTableCellActions.tsx +2 -3
  420. package/src/components/{EntityCollectionTable → CollectionTableBinding}/internal/common.tsx +7 -7
  421. package/src/components/{EntityCollectionTable → CollectionTableBinding}/internal/popup_field/PopupFormField.tsx +12 -13
  422. package/src/components/{EntityCollectionTable → CollectionTableBinding}/internal/popup_field/useDraggable.tsx +5 -2
  423. package/src/components/{EntityCollectionTable → CollectionTableBinding}/table_bindings.tsx +101 -104
  424. package/src/components/{EntityCollectionView/EntityBoardCard.tsx → CollectionViewBinding/BoardCardBinding.tsx} +39 -40
  425. package/src/components/{EntityCollectionView/EntityCollectionBoardView.tsx → CollectionViewBinding/CollectionBoardViewBinding.tsx} +88 -52
  426. package/src/components/CollectionViewBinding/CollectionCardViewBinding.tsx +157 -0
  427. package/src/components/{EntityCollectionView/EntityCollectionListView.tsx → CollectionViewBinding/CollectionListViewBinding.tsx} +234 -151
  428. package/src/components/{EntityCollectionView/EntityCollectionViewActions.tsx → CollectionViewBinding/CollectionViewActions.tsx} +36 -26
  429. package/src/components/{EntityCollectionView/EntityCollectionView.tsx → CollectionViewBinding/CollectionViewBinding.tsx} +392 -213
  430. package/src/components/{EntityCollectionView/EntityCollectionViewStartActions.tsx → CollectionViewBinding/CollectionViewStartActions.tsx} +42 -23
  431. package/src/components/{EntityCollectionView/EntityCard.tsx → CollectionViewBinding/EntityCardBinding.tsx} +14 -14
  432. package/src/components/CollectionViewBinding/FilterPresetsButton.tsx +294 -0
  433. package/src/components/{EntityCollectionView → CollectionViewBinding}/FiltersDialog.tsx +37 -79
  434. package/src/components/{EntityCollectionView → CollectionViewBinding}/SplitListView.tsx +97 -30
  435. package/src/components/{EntityCollectionView → CollectionViewBinding}/ViewModeToggle.tsx +20 -8
  436. package/src/components/{EntityCollectionView → CollectionViewBinding}/hooks/useCollectionInlineEditor.ts +9 -8
  437. package/src/components/{EntityCollectionView → CollectionViewBinding}/hooks/useKanbanDragAndDrop.ts +17 -16
  438. package/src/components/{EntityCollectionView → CollectionViewBinding}/useBoardDataController.tsx +118 -70
  439. package/src/components/{EntityCollectionView/useEntityPreviewSlots.ts → CollectionViewBinding/usePreviewSlots.ts} +136 -48
  440. package/src/components/DefaultAppBar.tsx +73 -41
  441. package/src/components/DefaultDrawer.tsx +317 -85
  442. package/src/components/DeleteEntityDialog.tsx +7 -7
  443. package/src/components/DetailViewBinding.tsx +670 -0
  444. package/src/components/DrawerNavigationGroup.tsx +11 -11
  445. package/src/components/DrawerNavigationItem.tsx +6 -6
  446. package/src/components/{EntityEditViewFormActions.tsx → EditFormActions.tsx} +78 -59
  447. package/src/components/EditViewBinding.tsx +761 -0
  448. package/src/components/{EntityPreview.tsx → EntityPreviewBinding.tsx} +53 -39
  449. package/src/components/{EntityView.tsx → EntityViewBinding.tsx} +8 -9
  450. package/src/components/HomePage/ContentHomePage.tsx +35 -17
  451. package/src/components/HomePage/FavouritesView.tsx +2 -3
  452. package/src/components/HomePage/HomePageDnD.tsx +3 -2
  453. package/src/components/HomePage/NavigationCard.tsx +9 -16
  454. package/src/components/HomePage/NavigationCardBinding.tsx +6 -7
  455. package/src/components/HomePage/NavigationGroup.tsx +4 -5
  456. package/src/components/HomePage/RenameGroupDialog.tsx +1 -1
  457. package/src/components/HomePage/SmallNavigationCard.tsx +0 -5
  458. package/src/components/{EntityJsonPreview.tsx → JsonPreviewBinding.tsx} +2 -2
  459. package/src/components/PropertyCollectionView.tsx +2 -1
  460. package/src/components/PropertyIdCopyTooltip.tsx +2 -3
  461. package/src/components/{RebaseCMS.tsx → RebaseAdmin.tsx} +8 -6
  462. package/src/components/RebaseAuthGate.tsx +5 -3
  463. package/src/components/RebaseLayout.tsx +10 -9
  464. package/src/components/RebaseNavigation.tsx +107 -31
  465. package/src/components/RebaseRouteDefs.tsx +10 -13
  466. package/src/components/RebaseShell.tsx +18 -14
  467. package/src/components/ReferenceTable/{EntitySelectionTable.tsx → SelectionTableBinding.tsx} +40 -33
  468. package/src/components/ReferenceWidget.tsx +7 -7
  469. package/src/components/RelationSelector.tsx +82 -24
  470. package/src/components/SearchIconsView.tsx +13 -12
  471. package/src/components/SelectableTable/SelectableTable.tsx +68 -115
  472. package/src/components/SelectableTable/SelectableTableContext.tsx +4 -3
  473. package/src/components/SelectableTable/SelectionStore.ts +20 -44
  474. package/src/components/SelectableTable/filters/BooleanFilterField.tsx +13 -5
  475. package/src/components/SelectableTable/filters/DateTimeFilterField.tsx +37 -16
  476. package/src/components/SelectableTable/filters/FilterFieldBinding.tsx +187 -0
  477. package/src/components/SelectableTable/filters/ReferenceFilterField.tsx +27 -13
  478. package/src/components/SelectableTable/filters/RelationFilterField.tsx +17 -3
  479. package/src/components/SelectableTable/filters/StringNumberFilterField.tsx +95 -35
  480. package/src/components/SideDialogs.tsx +58 -40
  481. package/src/components/SidePanelBinding.tsx +261 -0
  482. package/src/components/{SideEntityProvider.tsx → SidePanelProvider.tsx} +17 -16
  483. package/src/components/UserSelector.tsx +123 -9
  484. package/src/components/admin/CreationResultDialog.tsx +138 -0
  485. package/src/components/admin/index.ts +1 -3
  486. package/src/components/app/Drawer.tsx +9 -1
  487. package/src/components/app/Scaffold.tsx +16 -9
  488. package/src/components/common/default_entity_actions.tsx +270 -29
  489. package/src/components/field_configs.tsx +68 -46
  490. package/src/components/history/EntityHistoryEntry.tsx +4 -5
  491. package/src/components/history/EntityHistoryView.tsx +18 -8
  492. package/src/components/history/LastEditedByIndicator.tsx +4 -4
  493. package/src/components/index.ts +20 -17
  494. package/src/contexts/BreacrumbsContext.tsx +15 -6
  495. package/src/contexts/SidePanelControllerContext.tsx +5 -0
  496. package/src/data_export/export/BasicExportAction.tsx +42 -43
  497. package/src/data_export/export/ExportCollectionAction.tsx +55 -54
  498. package/src/data_export/export/export.ts +17 -17
  499. package/src/data_import/components/DataNewPropertiesMapping.tsx +17 -4
  500. package/src/data_import/components/ImportFileUpload.tsx +2 -3
  501. package/src/data_import/components/ImportNewPropertyFieldPreview.tsx +2 -3
  502. package/src/data_import/components/ImportSaveInProgress.tsx +4 -4
  503. package/src/data_import/import/ImportCollectionAction.tsx +26 -13
  504. package/src/data_import/utils/data.ts +26 -8
  505. package/src/data_import/utils/file_headers.ts +13 -89
  506. package/src/data_import/utils/file_to_json.ts +43 -68
  507. package/src/data_import/utils/get_properties_mapping.ts +1 -1
  508. package/src/data_import/utils/transforms.ts +47 -0
  509. package/src/editor/components/SlashCommandMenu.tsx +17 -2
  510. package/src/editor/components/editor-bubble-item.tsx +1 -1
  511. package/src/editor/components/editor-bubble.tsx +32 -9
  512. package/src/editor/components/image-bubble.tsx +28 -12
  513. package/src/editor/components/index.ts +3 -3
  514. package/src/editor/components/table-bubble.tsx +80 -18
  515. package/src/editor/editor.tsx +34 -15
  516. package/src/editor/extensions/HighlightDecorationExtension.ts +3 -2
  517. package/src/editor/extensions/Image/index.ts +3 -3
  518. package/src/editor/extensions/Image.ts +3 -3
  519. package/src/editor/extensions/clipboard.ts +2 -2
  520. package/src/editor/markdown-it-plugins.d.ts +24 -0
  521. package/src/editor/markdown.ts +2 -3
  522. package/src/editor/nodeViews/ReactNodeView.tsx +1 -1
  523. package/src/editor/nodeViews/TaskItemComponent.tsx +9 -8
  524. package/src/editor/schema.ts +135 -59
  525. package/src/editor/selectors/ai-selector.tsx +0 -1
  526. package/src/editor/selectors/color-selector.tsx +1 -2
  527. package/src/editor/selectors/link-selector.tsx +9 -7
  528. package/src/editor/selectors/node-selector.tsx +17 -3
  529. package/src/editor/selectors/text-buttons.tsx +1 -2
  530. package/src/editor/useProseMirror.ts +2 -2
  531. package/src/editor/utils/prosemirror-utils.ts +1 -1
  532. package/src/editor/utils/remove_classes.ts +6 -5
  533. package/src/form/EntityForm.tsx +222 -442
  534. package/src/form/EntityFormActions.tsx +49 -55
  535. package/src/form/EntityFormBinding.tsx +323 -0
  536. package/src/form/PropertyFieldBinding.tsx +81 -84
  537. package/src/form/components/ErrorFocus.tsx +1 -1
  538. package/src/form/components/FieldHelperText.tsx +6 -7
  539. package/src/form/components/FormLayout.tsx +1 -1
  540. package/src/form/components/LocalChangesMenu.tsx +20 -5
  541. package/src/form/components/StorageItemPreview.tsx +2 -3
  542. package/src/form/components/StorageUploadProgress.tsx +14 -7
  543. package/src/form/field_bindings/ArrayCustomShapedFieldBinding.tsx +5 -5
  544. package/src/form/field_bindings/ArrayOfReferencesFieldBinding.tsx +12 -13
  545. package/src/form/field_bindings/BlockFieldBinding.tsx +59 -58
  546. package/src/form/field_bindings/DateTimeFieldBinding.tsx +2 -2
  547. package/src/form/field_bindings/KeyValueFieldBinding.tsx +319 -303
  548. package/src/form/field_bindings/MapFieldBinding.tsx +14 -56
  549. package/src/form/field_bindings/MarkdownEditorFieldBinding.tsx +28 -10
  550. package/src/form/field_bindings/MultiSelectFieldBinding.tsx +3 -4
  551. package/src/form/field_bindings/MultipleRelationFieldBinding.tsx +11 -12
  552. package/src/form/field_bindings/ReadOnlyFieldBinding.tsx +9 -2
  553. package/src/form/field_bindings/ReferenceFieldBinding.tsx +17 -15
  554. package/src/form/field_bindings/RelationFieldBinding.tsx +157 -156
  555. package/src/form/field_bindings/RepeatFieldBinding.tsx +8 -8
  556. package/src/form/field_bindings/SelectFieldBinding.tsx +3 -4
  557. package/src/form/field_bindings/StorageUploadFieldBinding.tsx +107 -103
  558. package/src/form/field_bindings/SwitchFieldBinding.tsx +17 -17
  559. package/src/form/field_bindings/TextFieldBinding.tsx +90 -78
  560. package/src/form/field_bindings/UserSelectFieldBinding.tsx +18 -18
  561. package/src/form/field_bindings/VectorFieldBinding.tsx +202 -0
  562. package/src/form/form_utils.ts +163 -0
  563. package/src/form/index.tsx +15 -6
  564. package/src/form/useClearRestoreValue.tsx +1 -1
  565. package/src/form/validation.ts +104 -50
  566. package/src/hooks/index.ts +4 -4
  567. package/src/hooks/navigation/contexts/CollectionRegistryContext.tsx +5 -4
  568. package/src/hooks/navigation/contexts/NavigationStateContext.tsx +2 -2
  569. package/src/hooks/navigation/contexts/UrlContext.tsx +1 -2
  570. package/src/hooks/navigation/useAsyncResolver.ts +100 -0
  571. package/src/hooks/navigation/useBuildCollectionRegistryController.tsx +40 -21
  572. package/src/hooks/navigation/useBuildNavigationStateController.tsx +21 -22
  573. package/src/hooks/navigation/useNavigationResolution.ts +193 -21
  574. package/src/hooks/navigation/useResolvedCollections.ts +45 -77
  575. package/src/hooks/navigation/useResolvedViews.tsx +44 -123
  576. package/src/hooks/navigation/useTopLevelNavigation.ts +22 -18
  577. package/src/hooks/navigation/utils.ts +12 -9
  578. package/src/hooks/useBreadcrumbsController.tsx +2 -34
  579. package/src/hooks/{useBuildSideEntityController.tsx → useBuildSidePanel.tsx} +63 -24
  580. package/src/hooks/useCMSContext.tsx +7 -7
  581. package/src/hooks/{useEntityHistory.ts → useHistory.ts} +9 -4
  582. package/src/hooks/useResolvedNavigationFrom.tsx +8 -5
  583. package/src/hooks/{useEntitySelectionDialog.tsx → useSelectionDialog.tsx} +7 -7
  584. package/src/hooks/useSideDialogsController.tsx +1 -1
  585. package/src/hooks/useSidePanel.tsx +13 -0
  586. package/src/index.ts +34 -20
  587. package/src/preview/PropertyPreview.tsx +34 -41
  588. package/src/preview/components/DatePreview.tsx +1 -1
  589. package/src/preview/components/EnumValuesChip.tsx +1 -1
  590. package/src/preview/components/ImagePreview.tsx +4 -3
  591. package/src/preview/components/ReferencePreview.tsx +69 -18
  592. package/src/preview/components/RelationPreview.tsx +107 -18
  593. package/src/preview/components/StorageThumbnail.tsx +28 -8
  594. package/src/preview/components/UrlComponentPreview.tsx +12 -4
  595. package/src/preview/components/UserPreview.tsx +6 -15
  596. package/src/preview/property_previews/ArrayOfMapsPreview.tsx +5 -5
  597. package/src/preview/property_previews/ArrayOfReferencesPreview.tsx +5 -5
  598. package/src/preview/property_previews/ArrayOfRelationsPreview.tsx +4 -4
  599. package/src/preview/property_previews/ArrayOfStorageComponentsPreview.tsx +4 -4
  600. package/src/preview/property_previews/ArrayOfStringsPreview.tsx +3 -2
  601. package/src/preview/property_previews/ArrayOneOfPreview.tsx +7 -9
  602. package/src/preview/property_previews/ArrayPropertyEnumPreview.tsx +1 -1
  603. package/src/preview/property_previews/ArrayPropertyPreview.tsx +4 -4
  604. package/src/preview/property_previews/MapPropertyPreview.tsx +4 -3
  605. package/src/preview/property_previews/NumberPropertyPreview.tsx +5 -3
  606. package/src/preview/property_previews/SkeletonPropertyComponent.tsx +24 -25
  607. package/src/preview/property_previews/StringPropertyPreview.tsx +13 -11
  608. package/src/routes/CustomViewRoute.tsx +14 -6
  609. package/src/routes/RebaseRoute.tsx +112 -36
  610. package/src/types/components/EntityFormActionsProps.tsx +4 -4
  611. package/src/types/components/EntityFormProps.tsx +75 -5
  612. package/src/types/components/PropertyPreviewProps.tsx +6 -1
  613. package/src/types/components/formex.tsx +1 -45
  614. package/src/types/fields.tsx +26 -15
  615. package/src/util/dataControllerAdapter.ts +87 -0
  616. package/src/util/navigation_utils.ts +43 -13
  617. package/src/util/previews.ts +149 -13
  618. package/src/util/propertyConfigMapper.ts +134 -0
  619. package/src/util/property_utils.tsx +24 -9
  620. package/src/util/resolutions.ts +4 -8
  621. package/src/util/view_constants.ts +6 -0
  622. package/dist/CollectionEditorDialog-B2M9lCyL.js +0 -4720
  623. package/dist/CollectionEditorDialog-B2M9lCyL.js.map +0 -1
  624. package/dist/CollectionsStudioView-WG6soyfs.js +0 -218
  625. package/dist/CollectionsStudioView-WG6soyfs.js.map +0 -1
  626. package/dist/ContentHomePage-CDF_a6Lp.js +0 -1786
  627. package/dist/ContentHomePage-CDF_a6Lp.js.map +0 -1
  628. package/dist/ExportCollectionAction-Dc0VOWMN.js +0 -439
  629. package/dist/ExportCollectionAction-Dc0VOWMN.js.map +0 -1
  630. package/dist/ImportCollectionAction-DpCagAOy.js +0 -686
  631. package/dist/ImportCollectionAction-DpCagAOy.js.map +0 -1
  632. package/dist/PropertyEditView-DS67DxoT.js +0 -8138
  633. package/dist/PropertyEditView-DS67DxoT.js.map +0 -1
  634. package/dist/RoleChip-QtUFXeTp.js +0 -67
  635. package/dist/RoleChip-QtUFXeTp.js.map +0 -1
  636. package/dist/RolesView-CIuYBimF.js +0 -424
  637. package/dist/RolesView-CIuYBimF.js.map +0 -1
  638. package/dist/UsersView-B5zelXnH.js +0 -493
  639. package/dist/UsersView-B5zelXnH.js.map +0 -1
  640. package/dist/collection_editor/types/config_permissions.d.ts +0 -19
  641. package/dist/components/EntityCollectionTable/EntityCollectionTable.d.ts +0 -27
  642. package/dist/components/EntityCollectionTable/fields/VirtualTableDateField.d.ts +0 -12
  643. package/dist/components/EntityCollectionTable/fields/VirtualTableInput.d.ts +0 -9
  644. package/dist/components/EntityCollectionTable/fields/VirtualTableNumberInput.d.ts +0 -8
  645. package/dist/components/EntityCollectionTable/fields/VirtualTableSwitch.d.ts +0 -7
  646. package/dist/components/EntityCollectionTable/index.d.ts +0 -6
  647. package/dist/components/EntityCollectionView/Board.d.ts +0 -2
  648. package/dist/components/EntityCollectionView/BoardColumn.d.ts +0 -42
  649. package/dist/components/EntityCollectionView/BoardColumnTitle.d.ts +0 -9
  650. package/dist/components/EntityCollectionView/BoardSortableList.d.ts +0 -14
  651. package/dist/components/EntityCollectionView/EntityBoardCard.d.ts +0 -31
  652. package/dist/components/EntityCollectionView/EntityCard.d.ts +0 -20
  653. package/dist/components/EntityCollectionView/EntityCollectionBoardView.d.ts +0 -21
  654. package/dist/components/EntityCollectionView/EntityCollectionListView.d.ts +0 -34
  655. package/dist/components/EntityCollectionView/EntityCollectionView.d.ts +0 -64
  656. package/dist/components/EntityCollectionView/EntityCollectionViewActions.d.ts +0 -18
  657. package/dist/components/EntityCollectionView/EntityCollectionViewStartActions.d.ts +0 -18
  658. package/dist/components/EntityCollectionView/board_types.d.ts +0 -105
  659. package/dist/components/EntityEditView.d.ts +0 -49
  660. package/dist/components/EntityEditViewFormActions.d.ts +0 -2
  661. package/dist/components/EntityJsonPreview.d.ts +0 -3
  662. package/dist/components/EntitySidePanel.d.ts +0 -10
  663. package/dist/components/EntityView.d.ts +0 -12
  664. package/dist/components/admin/RoleChip.d.ts +0 -4
  665. package/dist/components/admin/RolesView.d.ts +0 -4
  666. package/dist/components/admin/UsersView.d.ts +0 -4
  667. package/dist/contexts/SideEntityControllerContext.d.ts +0 -3
  668. package/dist/form/field_bindings/ReferenceAsStringFieldBinding.d.ts +0 -10
  669. package/dist/hooks/navigation/useNavigationRegistry.d.ts +0 -11
  670. package/dist/hooks/navigation/useNavigationURLs.d.ts +0 -11
  671. package/dist/hooks/useBuildSideEntityController.d.ts +0 -6
  672. package/dist/hooks/useSideEntityController.d.ts +0 -11
  673. package/dist/index-CBhrgpR7.js +0 -12
  674. package/dist/index-CBhrgpR7.js.map +0 -1
  675. package/dist/index-CHxgwt6E.js +0 -456
  676. package/dist/index-CHxgwt6E.js.map +0 -1
  677. package/dist/index-Dey5WJpO.js +0 -8
  678. package/dist/index-Dey5WJpO.js.map +0 -1
  679. package/dist/index.js.map +0 -1
  680. package/dist/markdown-z2Ir7Cgo.js +0 -618
  681. package/dist/markdown-z2Ir7Cgo.js.map +0 -1
  682. package/dist/useEntityHistory-Dcj4zhGj.js +0 -121
  683. package/dist/useEntityHistory-Dcj4zhGj.js.map +0 -1
  684. package/dist/util-BQ82ySL3.js +0 -27720
  685. package/dist/util-BQ82ySL3.js.map +0 -1
  686. package/src/collection_editor/types/config_permissions.ts +0 -20
  687. package/src/components/EntityCollectionTable/fields/VirtualTableDateField.tsx +0 -39
  688. package/src/components/EntityCollectionTable/fields/VirtualTableInput.tsx +0 -90
  689. package/src/components/EntityCollectionTable/fields/VirtualTableNumberInput.tsx +0 -80
  690. package/src/components/EntityCollectionTable/fields/VirtualTableSwitch.tsx +0 -32
  691. package/src/components/EntityCollectionTable/index.tsx +0 -14
  692. package/src/components/EntityCollectionView/Board.tsx +0 -474
  693. package/src/components/EntityCollectionView/BoardColumn.tsx +0 -158
  694. package/src/components/EntityCollectionView/BoardColumnTitle.tsx +0 -45
  695. package/src/components/EntityCollectionView/BoardSortableList.tsx +0 -177
  696. package/src/components/EntityCollectionView/EntityCollectionCardView.tsx +0 -267
  697. package/src/components/EntityCollectionView/board_types.ts +0 -113
  698. package/src/components/EntityEditView.tsx +0 -632
  699. package/src/components/EntitySidePanel.tsx +0 -160
  700. package/src/components/admin/RoleChip.tsx +0 -23
  701. package/src/components/admin/RolesView.tsx +0 -419
  702. package/src/components/admin/UsersView.tsx +0 -782
  703. package/src/contexts/SideEntityControllerContext.tsx +0 -5
  704. package/src/form/field_bindings/ReferenceAsStringFieldBinding.tsx +0 -141
  705. package/src/hooks/navigation/useNavigationRegistry.ts +0 -153
  706. package/src/hooks/navigation/useNavigationURLs.ts +0 -56
  707. package/src/hooks/useSideEntityController.tsx +0 -13
  708. /package/dist/components/{EntityCollectionTable → CollectionTableBinding}/PropertyTableCell.d.ts +0 -0
  709. /package/dist/components/{EntityCollectionTable → CollectionTableBinding}/internal/popup_field/useDraggable.d.ts +0 -0
  710. /package/dist/components/{EntityCollectionTable → CollectionTableBinding}/internal/popup_field/useWindowSize.d.ts +0 -0
  711. /package/dist/components/{EntityCollectionView → CollectionViewBinding}/useSelectionController.d.ts +0 -0
  712. /package/dist/components/{EntityCollectionView → CollectionViewBinding}/utils.d.ts +0 -0
  713. /package/src/components/{EntityCollectionTable → CollectionTableBinding}/fields/VirtualTableUserSelect.tsx +0 -0
  714. /package/src/components/{EntityCollectionTable → CollectionTableBinding}/internal/popup_field/useWindowSize.tsx +0 -0
  715. /package/src/components/{EntityCollectionView → CollectionViewBinding}/useSelectionController.tsx +0 -0
  716. /package/src/components/{EntityCollectionView → CollectionViewBinding}/utils.ts +0 -0
@@ -1,11 +1,12 @@
1
- import type { EntityCollection } from "@rebasepro/types";
2
- import { Blocker, useBlocker, useLocation } from "react-router";
3
- import { EntityEditView } from "../components/EntityEditView";
1
+ import type { CollectionConfig, ViewMode } from "@rebasepro/types";
2
+ import { Blocker, useBlocker, useLocation } from "react-router-dom";
3
+ import { EditViewBinding } from "../components/EditViewBinding";
4
+ import { DetailViewBinding } from "../components/DetailViewBinding";
4
5
  import { useEffect, useRef, useState } from "react";
5
6
  import { useNavigate } from "react-router-dom";
6
- import { EntityCollectionView } from "../components";
7
- import { NotFoundPage } from "@rebasepro/core";
8
- import { UnsavedChangesDialog } from "@rebasepro/core";
7
+ import { CollectionViewBinding } from "../components";
8
+ import { NotFoundPage, useUserConfigurationPersistence, useComponentOverride } from "@rebasepro/app";
9
+ import { UnsavedChangesDialog } from "@rebasepro/app";
9
10
  import { CircularProgressCenter } from "@rebasepro/ui";
10
11
  import { getNavigationEntriesFromPath, NavigationViewCollectionInternal, NavigationViewEntityCustomInternal, NavigationViewInternal } from "@rebasepro/common";
11
12
  import { toArray } from "@rebasepro/utils";
@@ -18,6 +19,8 @@ export function RebaseRoute() {
18
19
  const collectionRegistry = useCollectionRegistryController();
19
20
  const urlController = useUrlController();
20
21
  const breadcrumbs = useBreadcrumbsController();
22
+ const userConfigPersistence = useUserConfigurationPersistence();
23
+ const ResolvedCollectionView = useComponentOverride("Collection.View", CollectionViewBinding);
21
24
 
22
25
  const hash = location.hash;
23
26
  const isSidePanel = hash.includes("#side");
@@ -79,7 +82,7 @@ export function RebaseRoute() {
79
82
  }
80
83
 
81
84
  if (navigationEntries.length === 1 && navigationEntries[0].type === "collection") {
82
- let collection: EntityCollection<any> | undefined;
85
+ let collection: CollectionConfig<any> | undefined;
83
86
  collection = collectionRegistry.getCollection(navigationEntries[0].id);
84
87
  if (!collection)
85
88
  collection = collectionRegistry.getCollection(navigationEntries[0].slug);
@@ -89,10 +92,10 @@ export function RebaseRoute() {
89
92
  }
90
93
  return null;
91
94
  }
92
- return <EntityCollectionView
95
+ return <ResolvedCollectionView
93
96
  key={`collection_view_${collection.slug}`}
94
97
  {...collection}
95
- parentCollectionIds={[]}
98
+ parentCollectionSlugs={[]} parentEntityIds={[]}
96
99
  path={collection.slug}
97
100
  updateUrl={true}
98
101
  Actions={toArray(collection.Actions)}/>
@@ -101,7 +104,7 @@ export function RebaseRoute() {
101
104
  if (isSidePanel) {
102
105
  const lastCollectionEntry = [...navigationEntries].reverse().find((entry) => entry.type === "collection");
103
106
  if (lastCollectionEntry) {
104
- let collection: EntityCollection<any> | undefined;
107
+ let collection: CollectionConfig<any> | undefined;
105
108
  const firstEntry = navigationEntries[0] as NavigationViewCollectionInternal<any>;
106
109
  collection = collectionRegistry.getCollection(firstEntry.id);
107
110
  if (!collection)
@@ -112,10 +115,10 @@ export function RebaseRoute() {
112
115
  }
113
116
  return null;
114
117
  }
115
- return <EntityCollectionView
118
+ return <ResolvedCollectionView
116
119
  key={`collection_view_${collection.slug}`}
117
120
  {...collection}
118
- parentCollectionIds={[]}
121
+ parentCollectionSlugs={[]} parentEntityIds={[]}
119
122
  path={collection.slug}
120
123
  updateUrl={true}
121
124
  Actions={toArray(collection.Actions)}/>;
@@ -137,11 +140,29 @@ export function RebaseRoute() {
137
140
  lastEntityEntry?.type === "entity" &&
138
141
  (navigationEntries.length === 2 || navigationEntries.length === 3)
139
142
  ) {
140
- let collection: EntityCollection<any> | undefined;
143
+ let collection: CollectionConfig<any> | undefined;
141
144
  collection = collectionRegistry.getCollection(firstCollectionEntry.id);
142
145
  if (!collection)
143
146
  collection = collectionRegistry.getCollection(firstCollectionEntry.slug);
144
- if (collection && (collection.openEntityMode ?? "split") === "split") {
147
+
148
+ // Resolve the effective openEntityMode based on the current view mode.
149
+ // Priority: collection.openEntityMode (explicit) > view-mode-based default.
150
+ // View mode priority: URL __view param > saved user config > collection default.
151
+ let effectiveOpenMode: "side_panel" | "full_screen" | "split" | "dialog" | undefined = collection?.openEntityMode;
152
+ if (!effectiveOpenMode && collection) {
153
+ const urlViewParam = new URLSearchParams(location.search).get("__view");
154
+ let currentViewMode: ViewMode = collection.defaultViewMode ?? "list";
155
+ if (urlViewParam && ["list", "table", "kanban", "cards"].includes(urlViewParam)) {
156
+ currentViewMode = urlViewParam as ViewMode;
157
+ } else {
158
+ const savedView = userConfigPersistence?.getCollectionConfig(collection.slug)?.defaultViewMode;
159
+ if (savedView) currentViewMode = savedView as ViewMode;
160
+ }
161
+ if (currentViewMode === "kanban") effectiveOpenMode = "side_panel";
162
+ else if (currentViewMode === "table" || currentViewMode === "cards") effectiveOpenMode = "full_screen";
163
+ else effectiveOpenMode = "split";
164
+ }
165
+ if (collection && effectiveOpenMode === "split") {
145
166
  // Extract subcollection tab from the 3rd entry if present
146
167
  let selectedTab: string | undefined;
147
168
  if (navigationEntries.length === 3) {
@@ -165,10 +186,10 @@ export function RebaseRoute() {
165
186
  }
166
187
  }
167
188
  }
168
- return <EntityCollectionView
189
+ return <ResolvedCollectionView
169
190
  key={`collection_view_${collection.slug}`}
170
191
  {...collection}
171
- parentCollectionIds={[]}
192
+ parentCollectionSlugs={[]} parentEntityIds={[]}
172
193
  path={collection.slug}
173
194
  updateUrl={true}
174
195
  selectedEntityId={lastEntityEntry.entityId}
@@ -216,6 +237,10 @@ function EntityFullScreenRoute({
216
237
  const navigate = useNavigate();
217
238
  const location = useLocation();
218
239
 
240
+ // defaultValues may be carried via location.state when openNewDocument() is called
241
+ // for full-screen mode. We read it once on mount — after that, the form owns its state.
242
+ const defaultValues = (location.state as { defaultValues?: Record<string, unknown> } | null)?.defaultValues;
243
+
219
244
  // Preserve the current hash (e.g. #full) across tab/save navigations
220
245
  const hash = location.hash;
221
246
 
@@ -245,7 +270,7 @@ function EntityFullScreenRoute({
245
270
  if (entityIdIdx >= 0) {
246
271
  const afterEntity = pathname.substring(entityIdIdx + 1 + entityIdStr.length);
247
272
  const trailingSegment = afterEntity.startsWith("/") ? afterEntity.substring(1) : afterEntity;
248
- if (trailingSegment.length > 0) {
273
+ if (trailingSegment.length > 0 && trailingSegment !== "edit") {
249
274
  urlTab = trailingSegment;
250
275
  }
251
276
  }
@@ -253,7 +278,8 @@ function EntityFullScreenRoute({
253
278
 
254
279
  const [selectedTab, setSelectedTab] = useState<string | undefined>(urlTab);
255
280
 
256
- const parentCollectionIds = collectionRegistry.getParentCollectionIds(navigationPath);
281
+ const parentCollectionSlugs = collectionRegistry.getParentCollectionSlugs(navigationPath);
282
+ const parentEntityIds = collectionRegistry.getParentEntityIds(navigationPath);
257
283
  useEffect(() => {
258
284
  if (urlTab !== selectedTab) {
259
285
  setSelectedTab(urlTab);
@@ -266,18 +292,30 @@ function EntityFullScreenRoute({
266
292
 
267
293
  const entityPath = basePath + `/${entityId}`;
268
294
 
269
- let blocker: Blocker | undefined = undefined;
270
- try {
271
- blocker = useBlocker(({
272
- nextLocation
273
- }) => {
274
- if (nextLocation.pathname.startsWith(entityPath))
275
- return false;
276
- return blocked.current;
277
- });
278
- } catch (e) {
279
- // console.warn("Blocker not available, navigation will not be blocked");
280
- }
295
+ const blocker = useBlocker(({
296
+ currentLocation,
297
+ nextLocation
298
+ }) => {
299
+ if (nextLocation.pathname.startsWith(entityPath))
300
+ return false;
301
+
302
+ // Side panel overlay navigations preserve the underlying form via
303
+ // base_location in router state — no data is lost in either direction.
304
+
305
+ // Opening a side panel (e.g. clicking a relation arrow)
306
+ const nextHash = nextLocation.hash;
307
+ if (nextHash === "#side" || nextHash === "#new_side")
308
+ return false;
309
+
310
+ // Closing a side panel (navigate(-1) back to the form's own path)
311
+ const currentHash = currentLocation.hash;
312
+ if ((currentHash === "#side" || currentHash === "#new_side") &&
313
+ (nextLocation.pathname === basePath ||
314
+ nextLocation.pathname.startsWith(entityPath)))
315
+ return false;
316
+
317
+ return blocked.current;
318
+ });
281
319
 
282
320
  const lastCollectionEntry = [...navigationEntries].reverse().find((entry) => entry.type === "collection");
283
321
 
@@ -295,13 +333,46 @@ function EntityFullScreenRoute({
295
333
  return <NotFoundPage/>;
296
334
  }
297
335
 
298
- const collection = isNew
336
+ const rawCollection = isNew
299
337
  ? (lastCollectionEntry && "collection" in lastCollectionEntry ? lastCollectionEntry.collection : undefined)!
300
338
  : (lastEntityEntry && "parentCollection" in lastEntityEntry ? lastEntityEntry.parentCollection : undefined)!;
339
+ const collection = collectionRegistry.getCollection(rawCollection.slug) || rawCollection;
301
340
  const fullIdPath = isNew ? lastCollectionEntry!.slug : lastEntityEntry!.slug;
302
341
  const collectionPath = urlController.resolveDatabasePathsFrom(fullIdPath);
342
+ const isEditRoute = pathname.endsWith("/edit") || pathname.split("/").pop() === "edit";
343
+ // Determine if this is a detail-view-first collection showing the view page
344
+ const isDetailMode = collection.defaultEntityAction === "view" && !isNew && !isCopy && entityId && !isEditRoute;
345
+
346
+ if (isDetailMode) {
347
+ return <>
348
+ <DetailViewBinding
349
+ key={collection.slug + "_view_" + entityId}
350
+ entityId={entityId}
351
+ collection={collection}
352
+ layout={"full_screen"}
353
+ path={collectionPath}
354
+ selectedTab={selectedTab ?? undefined}
355
+ onEditClick={() => {
356
+ const editUrl = urlController.buildUrlCollectionPath(`${collectionPath}/${entityId}`) + "/edit";
357
+ navigate(editUrl + hash);
358
+ }}
359
+ onTabChange={(params) => {
360
+ setSelectedTab(params.selectedTab);
361
+ const newSelectedTab = params.selectedTab;
362
+ if (newSelectedTab) {
363
+ navigate(`${basePath}/${entityId}/${newSelectedTab}${hash}`, { replace: true });
364
+ } else {
365
+ navigate(`${basePath}/${entityId}${hash}`, { replace: true });
366
+ }
367
+ }}
368
+ parentCollectionSlugs={parentCollectionSlugs}
369
+ parentEntityIds={parentEntityIds}
370
+ />
371
+ </>;
372
+ }
373
+
303
374
  return <>
304
- <EntityEditView
375
+ <EditViewBinding
305
376
  key={collection.slug + "_" + (isNew ? "new" : (isCopy ? entityId + "_copy" : entityId))}
306
377
  entityId={isNew ? undefined : entityId}
307
378
  collection={collection}
@@ -309,14 +380,20 @@ function EntityFullScreenRoute({
309
380
  path={collectionPath}
310
381
  copy={isCopy}
311
382
  selectedTab={selectedTab ?? undefined}
383
+ defaultValues={isNew ? defaultValues : undefined}
312
384
  onValuesModified={(modified) => blocked.current = modified}
385
+ navigateBack={() => {
386
+ const detailUrl = urlController.buildUrlCollectionPath(`${collectionPath}/${entityId}`);
387
+ navigate(detailUrl + hash);
388
+ }}
313
389
  onSaved={(params) => {
314
390
  const newSelectedTab = params.selectedTab;
315
391
  const newEntityId = params.entityId;
392
+ const savedHash = isNew ? "" : hash;
316
393
  if (newSelectedTab) {
317
- navigate(`${basePath}/${newEntityId}/${newSelectedTab}${hash}`, { replace: true });
394
+ navigate(`${basePath}/${newEntityId}/${newSelectedTab}${savedHash}`, { replace: true });
318
395
  } else {
319
- navigate(`${basePath}/${newEntityId}${hash}`, { replace: true });
396
+ navigate(`${basePath}/${newEntityId}${savedHash}`, { replace: true });
320
397
  }
321
398
  }}
322
399
  onTabChange={(params) => {
@@ -331,7 +408,7 @@ function EntityFullScreenRoute({
331
408
  navigate(`${basePath}/${entityId}${hash}`, { replace: true });
332
409
  }
333
410
  }}
334
- parentCollectionIds={parentCollectionIds}
411
+ parentCollectionSlugs={parentCollectionSlugs} parentEntityIds={parentEntityIds}
335
412
  />
336
413
 
337
414
  <UnsavedChangesDialog
@@ -339,6 +416,5 @@ function EntityFullScreenRoute({
339
416
  handleOk={() => blocker?.proceed?.()}
340
417
  handleCancel={() => blocker?.reset?.()}
341
418
  body={"You have unsaved changes in this entity."}/>
342
-
343
419
  </>;
344
420
  }
@@ -1,19 +1,19 @@
1
1
  import { Entity } from "@rebasepro/types";
2
- import { EntityCollection } from "@rebasepro/types";
2
+ import { CollectionConfig } from "@rebasepro/types";
3
3
  import { FormContext } from "../fields";
4
4
  import { FormexController } from "./formex";
5
5
 
6
6
  export interface EntityFormActionsProps {
7
7
  path: string;
8
- collection: EntityCollection;
8
+ collection: CollectionConfig;
9
9
  entity?: Entity;
10
10
  layout: "bottom" | "side" | "responsive";
11
11
  savingError?: Error;
12
- formex: FormexController<any>;
12
+ formex: FormexController<Record<string, unknown>>;
13
13
  disabled: boolean;
14
14
  status: "new" | "existing" | "copy";
15
15
  pluginActions: React.ReactNode[];
16
- openEntityMode: "side_panel" | "full_screen" | "split";
16
+ openEntityMode?: "side_panel" | "full_screen" | "split" | "dialog";
17
17
  showDefaultActions?: boolean;
18
18
  navigateBack: () => void;
19
19
  formContext: FormContext
@@ -1,13 +1,18 @@
1
1
  import { Entity, EntityStatus } from "@rebasepro/types";
2
- import { EntityCollection, EntityCustomViewParams } from "@rebasepro/types";
2
+ import { CollectionConfig, EntityCustomViewParams } from "@rebasepro/types";
3
3
  import { FormContext } from "../fields";
4
4
  import { FormexController } from "./formex";
5
5
  import { EntityFormActionsProps } from "./EntityFormActionsProps";
6
6
 
7
+ /**
8
+ * Props for the headless EntityForm component.
9
+ * This form can be used without CMS context — all backend concerns
10
+ * (save, caching, analytics, plugin slots) are provided via callbacks.
11
+ */
7
12
  export type EntityFormProps<M extends Record<string, unknown>> = {
8
13
  path: string;
9
14
  fullIdPath?: string;
10
- collection: EntityCollection<M>;
15
+ collection: CollectionConfig<M>;
11
16
  entityId?: string | number;
12
17
  entity?: Entity<M>;
13
18
  databaseId?: string;
@@ -22,7 +27,7 @@ export type EntityFormProps<M extends Record<string, unknown>> = {
22
27
  onStatusChange?: (status: EntityStatus) => void;
23
28
  onEntityChange?: (entity: Entity<M>) => void;
24
29
  formex?: FormexController<M>;
25
- openEntityMode?: "side_panel" | "full_screen" | "split";
30
+ openEntityMode?: "side_panel" | "full_screen" | "split" | "dialog";
26
31
  /**
27
32
  * If true, the form will be disabled and no actions will be available
28
33
  */
@@ -39,16 +44,81 @@ export type EntityFormProps<M extends Record<string, unknown>> = {
39
44
 
40
45
  EntityFormActionsComponent?: React.FC<EntityFormActionsProps>;
41
46
 
47
+ navigateBack?: () => void;
48
+
42
49
  Builder?: React.ComponentType<EntityCustomViewParams<M>>;
43
50
 
44
51
  children?: React.ReactNode;
52
+
53
+ // --- Headless callbacks (replace internal CMS hooks) ---
54
+
55
+ /**
56
+ * Called on form submit with the values to save.
57
+ * The EntityFormBinding wrapper provides this automatically.
58
+ * When using EntityForm standalone, provide your own save logic.
59
+ */
60
+ onSubmit?: (values: M, formex: FormexController<M>) => Promise<Entity<M> | void> | void;
61
+
62
+ /**
63
+ * Called when form values change (deferred).
64
+ * The EntityFormBinding wrapper uses this for entity caching.
65
+ */
66
+ onValuesChangeDeferred?: (values: M, controller: FormexController<M>) => void;
67
+
68
+ /**
69
+ * Called when the form is reset.
70
+ */
71
+ onReset?: () => void;
72
+
73
+ /**
74
+ * Validate that a field value is unique.
75
+ * The EntityFormBinding wrapper provides this via the data layer.
76
+ */
77
+ uniqueFieldValidator?: (params: { name: string; value: unknown }) => Promise<boolean>;
78
+
79
+ // --- Slots (replace useSlot) ---
80
+
81
+ /** Content rendered before the form fields */
82
+ beforeFields?: React.ReactNode;
83
+ /** Content rendered after the form fields */
84
+ afterFields?: React.ReactNode;
85
+ /** Plugin-provided action elements */
86
+ pluginActions?: React.ReactNode[];
87
+
88
+ // --- Local changes (managed externally in binding) ---
89
+
90
+ /**
91
+ * Initial values for the form, after applying local changes.
92
+ * If not provided, computed from entity + collection defaults.
93
+ */
94
+ computedInitialValues?: Partial<M>;
95
+ /**
96
+ * Whether there are unsaved local changes in the cache.
97
+ */
98
+ hasLocalChanges?: boolean;
99
+ /**
100
+ * The local changes data for the manual-apply menu.
101
+ */
102
+ localChangesData?: Partial<M>;
103
+ /**
104
+ * Whether manual-apply local changes mode is enabled.
105
+ */
106
+ manualApplyLocalChanges?: boolean;
107
+ /**
108
+ * Cache key for the local changes menu.
109
+ */
110
+ localChangesCacheKey?: string;
111
+ /**
112
+ * Callback when local changes are cleared.
113
+ */
114
+ onClearLocalChanges?: () => void;
45
115
  };
46
116
 
47
117
  export type OnUpdateParams = {
48
- entity: Entity<any>,
118
+ entity: Entity<Record<string, unknown>>,
49
119
  status: EntityStatus,
50
120
  path: string,
51
121
  entityId?: string | number;
52
122
  selectedTab?: string;
53
- collection: EntityCollection<any>
123
+ collection: CollectionConfig<Record<string, unknown>>
54
124
  };
@@ -15,7 +15,7 @@ export interface PropertyPreviewProps<P extends Property | Property, CustomProps
15
15
  */
16
16
  propertyKey?: string;
17
17
 
18
- value: any;
18
+ value: InferPropertyType<P> | any;
19
19
 
20
20
  /**
21
21
  * Property this display is related to, now strongly typed to P
@@ -56,4 +56,9 @@ export interface PropertyPreviewProps<P extends Property | Property, CustomProps
56
56
  */
57
57
  fill?: boolean;
58
58
 
59
+ /**
60
+ * If true, relations/references will render as plain text strings rather than full cards.
61
+ */
62
+ textOnly?: boolean;
63
+
59
64
  }
@@ -1,46 +1,2 @@
1
- import React, { FormEvent } from "react";
1
+ export type { FormexController, FormexResetProps } from "@rebasepro/forms";
2
2
 
3
- // this is duplicated from the formex package
4
- export type FormexController<T extends object> = {
5
- values: T;
6
- initialValues: T;
7
- setValues: (values: T) => void;
8
- setFieldValue: (key: string, value: unknown, shouldValidate?: boolean) => void;
9
- touched: Record<string, boolean>;
10
- setFieldTouched: (key: string, touched: boolean, shouldValidate?: boolean) => void;
11
- setTouched: (touched: Record<string, boolean>) => void;
12
- dirty: boolean;
13
- setDirty: (dirty: boolean) => void;
14
- setSubmitCount: (submitCount: number) => void;
15
- errors: Record<string, string>;
16
- setFieldError: (key: string, error?: string) => void;
17
- handleChange: (event: React.SyntheticEvent) => void,
18
- handleBlur: (event: React.FocusEvent) => void,
19
- handleSubmit: (event?: FormEvent<HTMLFormElement>) => void;
20
- validate: () => void;
21
- resetForm: (props?: FormexResetProps<T>) => void;
22
- submitCount: number;
23
- isSubmitting: boolean;
24
- setSubmitting: (isSubmitting: boolean) => void;
25
- isValidating: boolean;
26
- /**
27
- * The version of the form. This is incremented every time the form is reset
28
- * or the form is submitted.
29
- */
30
- version: number;
31
-
32
- debugId?: string;
33
-
34
- undo: () => void;
35
- redo: () => void;
36
-
37
- canUndo: boolean;
38
- canRedo: boolean;
39
- }
40
-
41
- export type FormexResetProps<T extends object> = {
42
- values?: T;
43
- submitCount?: number;
44
- errors?: Record<string, string>;
45
- touched?: Record<string, boolean>;
46
- };
@@ -1,7 +1,7 @@
1
1
  import { InferPropertyType } from "@rebasepro/types";
2
2
  import { Entity } from "@rebasepro/types";
3
3
  import { FormexController } from "./components/formex";
4
- import { EntityCollection } from "@rebasepro/types";
4
+ import { CollectionConfig } from "@rebasepro/types";
5
5
  import { Property } from "@rebasepro/types";
6
6
 
7
7
  export type DefaultFieldConfig =
@@ -19,7 +19,6 @@ export type DefaultFieldConfig =
19
19
  | "multi_number_select"
20
20
  | "file_upload"
21
21
  | "multi_file_upload"
22
- | "reference_as_string"
23
22
  | "reference"
24
23
  | "multi_references"
25
24
  | "relation"
@@ -28,7 +27,8 @@ export type DefaultFieldConfig =
28
27
  | "key_value"
29
28
  | "repeat"
30
29
  | "custom_array"
31
- | "block";
30
+ | "block"
31
+ | "vector_input";
32
32
 
33
33
  /**
34
34
  * When building a custom field you need to create a React component that takes
@@ -38,8 +38,8 @@ export type DefaultFieldConfig =
38
38
  */
39
39
  export interface FieldProps<
40
40
  P extends Property | Property = Property,
41
- CustomProps = any,
42
- M extends Record<string, any> = any> {
41
+ CustomProps = unknown,
42
+ M extends Record<string, unknown> = Record<string, unknown>> {
43
43
 
44
44
  /**
45
45
  * Key of the property
@@ -50,12 +50,8 @@ export interface FieldProps<
50
50
  /**
51
51
  * Current value of this field, inferred from the property type P
52
52
  */
53
- value: any;
54
-
55
- /**
56
- * Set value of field directly
57
- */
58
- setValue: (value: any | null, shouldValidate?: boolean) => void;
53
+ value: InferPropertyType<P> | any;
54
+ setValue: (value: InferPropertyType<P> | null | any, shouldValidate?: boolean) => void;
59
55
 
60
56
  /**
61
57
  * Set value of a different field directly
@@ -130,7 +126,7 @@ export interface FieldProps<
130
126
  /**
131
127
  * Additional properties set by the developer
132
128
  */
133
- customProps: CustomProps
129
+ customProps?: CustomProps;
134
130
 
135
131
  /**
136
132
  * Additional values related to the state of the form or the entity
@@ -178,14 +174,23 @@ export interface FormContext<M extends Record<string, unknown> = Record<string,
178
174
  setFieldValue: (key: string, value: unknown, shouldValidate?: boolean) => void;
179
175
 
180
176
  /**
181
- * Save the entity.
177
+ * Quietly persist the entity to the database without any UI feedback
178
+ * (no validation, no snackbar, no form reset).
179
+ * Use this for programmatic/background saves from custom views.
182
180
  */
183
181
  save: (values: M) => void;
184
182
 
183
+ /**
184
+ * Submit the form — validates, saves, resets the form, and shows
185
+ * a success snackbar. This is what the Save button calls.
186
+ * Use this from custom views when you want the full "user saved" experience.
187
+ */
188
+ submit: () => void;
189
+
185
190
  /**
186
191
  * Collection of the entity being modified
187
192
  */
188
- collection?: EntityCollection<M>;
193
+ collection?: CollectionConfig<M>;
189
194
 
190
195
  /**
191
196
  * Entity id, it can be undefined if it's a new entity
@@ -203,7 +208,7 @@ export interface FormContext<M extends Record<string, unknown> = Record<string,
203
208
 
204
209
  savingError?: Error;
205
210
 
206
- openEntityMode: "side_panel" | "full_screen" | "split";
211
+ openEntityMode?: "side_panel" | "full_screen" | "split" | "dialog";
207
212
 
208
213
  /**
209
214
  * This is the underlying formex controller that powers the form.
@@ -213,6 +218,12 @@ export interface FormContext<M extends Record<string, unknown> = Record<string,
213
218
  formex: FormexController<M>;
214
219
 
215
220
  disabled: boolean;
221
+
222
+ /**
223
+ * Whether the form context is in read-only detail view mode.
224
+ * Custom entity views can use this to adjust their rendering.
225
+ */
226
+ readOnly?: boolean;
216
227
  }
217
228
 
218
229
  /**
@@ -0,0 +1,87 @@
1
+ /**
2
+ * Adapts an `EntityTableController<M>` (from @rebasepro/types) to a
3
+ * `CollectionDataController<T>` (from @rebasepro/ui), bridging the
4
+ * entity-aware data layer to the headless collection view.
5
+ */
6
+
7
+ import { useMemo } from "react";
8
+ import type { Entity, EntityTableController } from "@rebasepro/types";
9
+ import type { CollectionDataController } from "@rebasepro/ui";
10
+
11
+ /**
12
+ * Unwrap `Entity<M>` objects to flat rows for the headless view.
13
+ * The entity system uses `{ id, path, values: M }`; `values` is already the
14
+ * flat row `M` carrying its real primary key, so unwrapping is just `.values` —
15
+ * no `id`/`path` merge (those are view-model metadata, not row columns).
16
+ */
17
+ function flattenEntities<M extends Record<string, unknown>>(
18
+ entities: Entity<M>[]
19
+ ): M[] {
20
+ return entities.map(entity => entity.values);
21
+ }
22
+
23
+ /**
24
+ * React hook that adapts a EntityTableController to a CollectionDataController.
25
+ *
26
+ * Usage:
27
+ * ```tsx
28
+ * const tableController = useDataTableController({ path, collection });
29
+ * const dataController = useCollectionDataController(tableController);
30
+ *
31
+ * <CollectionView dataController={dataController} ... />
32
+ * ```
33
+ */
34
+ export function useCollectionDataController<M extends Record<string, unknown>>(
35
+ tableController: EntityTableController<M>
36
+ ): CollectionDataController<M> {
37
+ const flatData = useMemo(
38
+ () => flattenEntities(tableController.data),
39
+ [tableController.data]
40
+ );
41
+
42
+ return useMemo((): CollectionDataController<M> => ({
43
+ data: flatData,
44
+ loading: tableController.dataLoading,
45
+ noMoreToLoad: tableController.noMoreToLoad,
46
+ error: tableController.dataLoadingError,
47
+
48
+ filterValues: tableController.filterValues as Record<string, [string, unknown]> | undefined,
49
+ setFilterValues: tableController.setFilterValues as
50
+ ((values: Record<string, [string, unknown]> | undefined) => void) | undefined,
51
+
52
+ sortBy: tableController.sortBy,
53
+ setSortBy: tableController.setSortBy,
54
+
55
+ searchString: tableController.searchString,
56
+ setSearchString: tableController.setSearchString,
57
+
58
+ clearFilter: tableController.clearFilter,
59
+
60
+ initialScroll: tableController.initialScroll,
61
+ onScroll: tableController.onScroll,
62
+
63
+ paginationEnabled: tableController.paginationEnabled,
64
+ pageSize: tableController.pageSize,
65
+ itemCount: tableController.itemCount,
66
+ setItemCount: tableController.setItemCount,
67
+ }), [flatData, tableController]);
68
+ }
69
+
70
+ /**
71
+ * Non-hook version for cases where you already have the data
72
+ * and just need to build a static controller.
73
+ */
74
+ export function createStaticDataController<T extends Record<string, unknown>>(
75
+ data: T[],
76
+ options?: {
77
+ loading?: boolean;
78
+ error?: Error;
79
+ }
80
+ ): CollectionDataController<T> {
81
+ return {
82
+ data,
83
+ loading: options?.loading ?? false,
84
+ noMoreToLoad: true,
85
+ error: options?.error,
86
+ };
87
+ }