@rebasepro/admin 0.7.0 → 0.9.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.
Files changed (350) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +20 -20
  3. package/dist/{CollectionEditorDialog-iGgS4rLX.js → CollectionEditorDialog-B-7uW3iJ.js} +15 -15
  4. package/dist/CollectionEditorDialog-B-7uW3iJ.js.map +1 -0
  5. package/dist/{PropertyEditView-C9yhLyja.js → PropertyEditView-7KMTcrqi.js} +140 -106
  6. package/dist/PropertyEditView-7KMTcrqi.js.map +1 -0
  7. package/dist/{RouterCollectionsStudioView-Dqx27GD8.js → RouterCollectionsStudioView-epqIbZrJ.js} +4 -4
  8. package/dist/{RouterCollectionsStudioView-Dqx27GD8.js.map → RouterCollectionsStudioView-epqIbZrJ.js.map} +1 -1
  9. package/dist/collection_editor/_cms_internals.d.ts +4 -4
  10. package/dist/collection_editor/api/generateCollectionApi.d.ts +7 -6
  11. package/dist/collection_editor/extensibility_types.d.ts +3 -3
  12. package/dist/collection_editor/index.d.ts +2 -2
  13. package/dist/collection_editor/pgColumnToProperty.d.ts +3 -3
  14. package/dist/collection_editor/serializable_types.d.ts +12 -16
  15. package/dist/collection_editor/serializable_utils.d.ts +8 -8
  16. package/dist/collection_editor/types/collection_editor_controller.d.ts +5 -5
  17. package/dist/collection_editor/types/collection_inference.d.ts +2 -2
  18. package/dist/collection_editor/types/config_controller.d.ts +7 -7
  19. package/dist/collection_editor/ui/AddKanbanColumnAction.d.ts +2 -2
  20. package/dist/collection_editor/ui/CollectionViewHeaderAction.d.ts +2 -2
  21. package/dist/collection_editor/ui/KanbanSetupAction.d.ts +2 -2
  22. package/dist/collection_editor/ui/PropertyAddColumnComponent.d.ts +2 -2
  23. package/dist/collection_editor/ui/collection_editor/AICollectionGeneratorPopover.d.ts +3 -3
  24. package/dist/collection_editor/ui/collection_editor/CollectionDetailsForm.d.ts +2 -2
  25. package/dist/collection_editor/ui/collection_editor/CollectionEditorDialog.d.ts +4 -5
  26. package/dist/collection_editor/ui/collection_editor/CollectionEditorWelcomeView.d.ts +2 -2
  27. package/dist/collection_editor/ui/collection_editor/CollectionJsonImportDialog.d.ts +2 -2
  28. package/dist/collection_editor/ui/collection_editor/CollectionPropertiesEditorForm.d.ts +4 -4
  29. package/dist/collection_editor/ui/collection_editor/CollectionStudioView.d.ts +2 -2
  30. package/dist/collection_editor/ui/collection_editor/CollectionsStudioView.d.ts +2 -2
  31. package/dist/collection_editor/ui/collection_editor/EntityActionsEditTab.d.ts +2 -2
  32. package/dist/collection_editor/ui/collection_editor/GeneralSettingsForm.d.ts +2 -2
  33. package/dist/collection_editor/ui/collection_editor/GetCodeDialog.d.ts +2 -2
  34. package/dist/collection_editor/ui/collection_editor/PropertyEditView.d.ts +4 -4
  35. package/dist/collection_editor/ui/collection_editor/SubcollectionsEditTab.d.ts +3 -3
  36. package/dist/collection_editor/ui/collection_editor/templates/blog_template.d.ts +2 -2
  37. package/dist/collection_editor/ui/collection_editor/templates/pages_template.d.ts +2 -2
  38. package/dist/collection_editor/ui/collection_editor/templates/products_template.d.ts +2 -2
  39. package/dist/collection_editor/ui/collection_editor/templates/users_template.d.ts +2 -2
  40. package/dist/collection_editor/useLocalCollectionsConfigController.d.ts +2 -2
  41. package/dist/collection_editor/validateCollectionJson.d.ts +2 -2
  42. package/dist/collection_editor_ui.js +4 -4
  43. package/dist/components/CollectionPanel.d.ts +4 -4
  44. package/dist/components/{EntityCollectionTable/EntityCollectionRowActions.d.ts → CollectionTableBinding/CollectionRowActions.d.ts} +3 -3
  45. package/dist/components/CollectionTableBinding/CollectionTableBinding.d.ts +28 -0
  46. package/dist/components/{EntityCollectionTable/EntityCollectionTableProps.d.ts → CollectionTableBinding/CollectionTableBindingProps.d.ts} +1 -1
  47. package/dist/components/{EntityCollectionTable → CollectionTableBinding}/fields/TableMultipleRelationField.d.ts +2 -2
  48. package/dist/components/{EntityCollectionTable → CollectionTableBinding}/fields/TableReferenceField.d.ts +2 -2
  49. package/dist/components/{EntityCollectionTable → CollectionTableBinding}/fields/TableRelationField.d.ts +2 -2
  50. package/dist/components/CollectionTableBinding/index.d.ts +6 -0
  51. package/dist/components/{EntityCollectionTable → CollectionTableBinding}/internal/common.d.ts +2 -2
  52. package/dist/components/{EntityCollectionTable → CollectionTableBinding}/internal/popup_field/PopupFormField.d.ts +2 -2
  53. package/dist/components/{EntityCollectionView/EntityBoardCard.d.ts → CollectionViewBinding/BoardCardBinding.d.ts} +8 -8
  54. package/dist/components/{EntityCollectionView/EntityCollectionBoardView.d.ts → CollectionViewBinding/CollectionBoardViewBinding.d.ts} +4 -4
  55. package/dist/components/{EntityCollectionView/EntityCollectionCardView.d.ts → CollectionViewBinding/CollectionCardViewBinding.d.ts} +5 -5
  56. package/dist/components/{EntityCollectionView/EntityCollectionListView.d.ts → CollectionViewBinding/CollectionListViewBinding.d.ts} +4 -4
  57. package/dist/components/{EntityCollectionView/EntityCollectionViewActions.d.ts → CollectionViewBinding/CollectionViewActions.d.ts} +4 -4
  58. package/dist/components/{EntityCollectionView/EntityCollectionView.d.ts → CollectionViewBinding/CollectionViewBinding.d.ts} +4 -4
  59. package/dist/components/{EntityCollectionView/EntityCollectionViewStartActions.d.ts → CollectionViewBinding/CollectionViewStartActions.d.ts} +4 -4
  60. package/dist/components/CollectionViewBinding/EntityCardBinding.d.ts +21 -0
  61. package/dist/components/{EntityCollectionView → CollectionViewBinding}/SplitListView.d.ts +3 -3
  62. package/dist/components/{EntityCollectionView → CollectionViewBinding}/hooks/useCollectionInlineEditor.d.ts +2 -2
  63. package/dist/components/{EntityCollectionView → CollectionViewBinding}/hooks/useKanbanDragAndDrop.d.ts +2 -2
  64. package/dist/components/{EntityCollectionView → CollectionViewBinding}/useBoardDataController.d.ts +2 -2
  65. package/dist/components/{EntityCollectionView/useEntityPreviewSlots.d.ts → CollectionViewBinding/usePreviewSlots.d.ts} +5 -5
  66. package/dist/components/DeleteEntityDialog.d.ts +4 -4
  67. package/dist/components/{EntityDetailView.d.ts → DetailViewBinding.d.ts} +5 -5
  68. package/dist/components/EditFormActions.d.ts +3 -0
  69. package/dist/components/{EntityEditView.d.ts → EditViewBinding.d.ts} +9 -9
  70. package/dist/components/{EntityPreview.d.ts → EntityPreviewBinding.d.ts} +13 -13
  71. package/dist/components/EntityViewBinding.d.ts +13 -0
  72. package/dist/components/{EntityJsonPreview.d.ts → JsonPreviewBinding.d.ts} +1 -1
  73. package/dist/components/RebaseCMS.d.ts +1 -1
  74. package/dist/components/RebaseNavigation.d.ts +1 -1
  75. package/dist/components/ReferenceTable/{EntitySelectionTable.d.ts → SelectionTableBinding.d.ts} +5 -5
  76. package/dist/components/SelectableTable/SelectableTable.d.ts +5 -5
  77. package/dist/components/SelectableTable/SelectableTableContext.d.ts +3 -3
  78. package/dist/components/SelectableTable/SelectionStore.d.ts +13 -22
  79. package/dist/components/SelectableTable/filters/BooleanFilterField.d.ts +6 -1
  80. package/dist/components/SelectableTable/filters/DateTimeFilterField.d.ts +7 -1
  81. package/dist/components/SelectableTable/filters/FilterFieldBinding.d.ts +40 -0
  82. package/dist/components/SelectableTable/filters/ReferenceFilterField.d.ts +7 -1
  83. package/dist/components/SelectableTable/filters/RelationFilterField.d.ts +7 -1
  84. package/dist/components/SelectableTable/filters/StringNumberFilterField.d.ts +7 -1
  85. package/dist/components/SideDialogs.d.ts +1 -1
  86. package/dist/components/SidePanelBinding.d.ts +11 -0
  87. package/dist/components/{SideEntityProvider.d.ts → SidePanelProvider.d.ts} +7 -7
  88. package/dist/components/field_configs.d.ts +1 -1
  89. package/dist/components/history/EntityHistoryEntry.d.ts +2 -2
  90. package/dist/components/history/LastEditedByIndicator.d.ts +2 -2
  91. package/dist/components/index.d.ts +14 -13
  92. package/dist/contexts/SidePanelControllerContext.d.ts +3 -0
  93. package/dist/data_export/export/ExportCollectionAction.d.ts +3 -3
  94. package/dist/data_import/components/ImportSaveInProgress.d.ts +2 -2
  95. package/dist/editor/editor.d.ts +0 -6
  96. package/dist/editor.js +1 -3
  97. package/dist/editor.js.map +1 -1
  98. package/dist/form/EntityForm.d.ts +1 -1
  99. package/dist/form/PropertyFieldBinding.d.ts +1 -1
  100. package/dist/form/components/StorageUploadProgress.d.ts +6 -1
  101. package/dist/form/form_utils.d.ts +2 -2
  102. package/dist/form/index.d.ts +0 -1
  103. package/dist/{history-ChHgyyvM.js → history-7X5bON_n.js} +4 -4
  104. package/dist/history-7X5bON_n.js.map +1 -0
  105. package/dist/hooks/index.d.ts +4 -4
  106. package/dist/hooks/navigation/contexts/CollectionRegistryContext.d.ts +2 -2
  107. package/dist/hooks/navigation/useBuildNavigationStateController.d.ts +5 -5
  108. package/dist/hooks/navigation/useNavigationResolution.d.ts +4 -4
  109. package/dist/hooks/navigation/useResolvedCollections.d.ts +7 -7
  110. package/dist/hooks/navigation/useTopLevelNavigation.d.ts +2 -2
  111. package/dist/hooks/navigation/utils.d.ts +5 -5
  112. package/dist/hooks/useBuildSidePanel.d.ts +6 -0
  113. package/dist/hooks/useCMSContext.d.ts +2 -2
  114. package/dist/hooks/{useEntityHistory.d.ts → useHistory.d.ts} +1 -1
  115. package/dist/hooks/useResolvedNavigationFrom.d.ts +3 -3
  116. package/dist/hooks/{useEntitySelectionDialog.d.ts → useSelectionDialog.d.ts} +2 -2
  117. package/dist/hooks/useSideDialogsController.d.ts +1 -1
  118. package/dist/hooks/useSidePanel.d.ts +11 -0
  119. package/dist/index.d.ts +3 -3
  120. package/dist/index.js +2 -2
  121. package/dist/preview/components/StorageThumbnail.d.ts +3 -1
  122. package/dist/{src-DOX2nOyh.js → src-sUZfe29F.js} +904 -1096
  123. package/dist/src-sUZfe29F.js.map +1 -0
  124. package/dist/types/components/EntityFormActionsProps.d.ts +2 -2
  125. package/dist/types/components/EntityFormProps.d.ts +3 -3
  126. package/dist/types/components/PropertyPreviewProps.d.ts +2 -1
  127. package/dist/types/fields.d.ts +6 -8
  128. package/dist/util/dataControllerAdapter.d.ts +2 -5
  129. package/dist/util/navigation_utils.d.ts +6 -6
  130. package/dist/util/previews.d.ts +3 -3
  131. package/dist/util/property_utils.d.ts +2 -2
  132. package/dist/util/{entity_view_constants.d.ts → view_constants.d.ts} +1 -1
  133. package/package.json +18 -18
  134. package/src/collection_editor/ConfigControllerProvider.tsx +10 -10
  135. package/src/collection_editor/_cms_internals.ts +4 -4
  136. package/src/collection_editor/api/generateCollectionApi.ts +7 -6
  137. package/src/collection_editor/extensibility_types.ts +3 -3
  138. package/src/collection_editor/index.ts +3 -3
  139. package/src/collection_editor/pgColumnToProperty.ts +4 -4
  140. package/src/collection_editor/serializable_types.ts +22 -35
  141. package/src/collection_editor/serializable_utils.ts +40 -52
  142. package/src/collection_editor/types/collection_editor_controller.tsx +5 -5
  143. package/src/collection_editor/types/collection_inference.ts +2 -2
  144. package/src/collection_editor/types/config_controller.tsx +7 -7
  145. package/src/collection_editor/ui/AddKanbanColumnAction.tsx +2 -2
  146. package/src/collection_editor/ui/CollectionViewHeaderAction.tsx +2 -2
  147. package/src/collection_editor/ui/EditorCollectionAction.tsx +2 -2
  148. package/src/collection_editor/ui/EditorCollectionActionStart.tsx +2 -2
  149. package/src/collection_editor/ui/EditorEntityAction.tsx +2 -2
  150. package/src/collection_editor/ui/KanbanSetupAction.tsx +2 -2
  151. package/src/collection_editor/ui/PropertyAddColumnComponent.tsx +2 -2
  152. package/src/collection_editor/ui/collection_editor/AICollectionGeneratorPopover.tsx +5 -5
  153. package/src/collection_editor/ui/collection_editor/CollectionDetailsForm.tsx +3 -3
  154. package/src/collection_editor/ui/collection_editor/CollectionEditorDialog.tsx +63 -46
  155. package/src/collection_editor/ui/collection_editor/CollectionEditorWelcomeView.tsx +3 -3
  156. package/src/collection_editor/ui/collection_editor/CollectionJsonImportDialog.tsx +2 -2
  157. package/src/collection_editor/ui/collection_editor/CollectionPropertiesEditorForm.tsx +8 -8
  158. package/src/collection_editor/ui/collection_editor/CollectionRLSTab.tsx +2 -2
  159. package/src/collection_editor/ui/collection_editor/CollectionRelationsTab.tsx +2 -2
  160. package/src/collection_editor/ui/collection_editor/CollectionStudioView.tsx +2 -2
  161. package/src/collection_editor/ui/collection_editor/CollectionsStudioView.tsx +2 -2
  162. package/src/collection_editor/ui/collection_editor/DisplaySettingsForm.tsx +2 -2
  163. package/src/collection_editor/ui/collection_editor/EntityActionsEditTab.tsx +3 -3
  164. package/src/collection_editor/ui/collection_editor/GeneralSettingsForm.tsx +5 -5
  165. package/src/collection_editor/ui/collection_editor/GetCodeDialog.tsx +4 -4
  166. package/src/collection_editor/ui/collection_editor/KanbanConfigSection.tsx +2 -2
  167. package/src/collection_editor/ui/collection_editor/PropertyEditView.tsx +7 -16
  168. package/src/collection_editor/ui/collection_editor/PropertyFieldPreview.tsx +45 -36
  169. package/src/collection_editor/ui/collection_editor/PropertyTree.tsx +1 -1
  170. package/src/collection_editor/ui/collection_editor/SubcollectionsEditTab.tsx +5 -5
  171. package/src/collection_editor/ui/collection_editor/import/CollectionEditorImportDataPreview.tsx +3 -3
  172. package/src/collection_editor/ui/collection_editor/import/CollectionEditorImportMapping.tsx +2 -2
  173. package/src/collection_editor/ui/collection_editor/properties/RelationPropertyField.tsx +2 -2
  174. package/src/collection_editor/ui/collection_editor/properties/StoragePropertyField.tsx +35 -1
  175. package/src/collection_editor/ui/collection_editor/templates/blog_template.ts +3 -3
  176. package/src/collection_editor/ui/collection_editor/templates/pages_template.ts +2 -2
  177. package/src/collection_editor/ui/collection_editor/templates/products_template.ts +2 -2
  178. package/src/collection_editor/ui/collection_editor/templates/users_template.ts +2 -2
  179. package/src/collection_editor/ui/collection_editor/utils/supported_fields.tsx +0 -1
  180. package/src/collection_editor/ui/collection_editor/utils/update_property_for_widget.ts +7 -29
  181. package/src/collection_editor/useJsonCollectionsConfigController.tsx +14 -14
  182. package/src/collection_editor/useLocalCollectionsConfigController.tsx +4 -4
  183. package/src/collection_editor/validateCollectionJson.ts +3 -3
  184. package/src/components/CollectionPanel.tsx +14 -17
  185. package/src/components/{EntityCollectionTable/EntityCollectionRowActions.tsx → CollectionTableBinding/CollectionRowActions.tsx} +6 -6
  186. package/src/components/{EntityCollectionTable/EntityCollectionTable.tsx → CollectionTableBinding/CollectionTableBinding.tsx} +19 -17
  187. package/src/components/{EntityCollectionTable/EntityCollectionTableProps.tsx → CollectionTableBinding/CollectionTableBindingProps.tsx} +1 -1
  188. package/src/components/{EntityCollectionTable → CollectionTableBinding}/fields/TableMultipleRelationField.tsx +7 -6
  189. package/src/components/{EntityCollectionTable → CollectionTableBinding}/fields/TableReferenceField.tsx +10 -10
  190. package/src/components/{EntityCollectionTable → CollectionTableBinding}/fields/TableRelationField.tsx +7 -6
  191. package/src/components/{EntityCollectionTable → CollectionTableBinding}/fields/TableStorageUpload.tsx +23 -20
  192. package/src/components/CollectionTableBinding/index.tsx +14 -0
  193. package/src/components/{EntityCollectionTable → CollectionTableBinding}/internal/common.tsx +2 -2
  194. package/src/components/{EntityCollectionTable → CollectionTableBinding}/internal/popup_field/PopupFormField.tsx +2 -2
  195. package/src/components/{EntityCollectionTable → CollectionTableBinding}/table_bindings.tsx +24 -44
  196. package/src/components/{EntityCollectionView/EntityBoardCard.tsx → CollectionViewBinding/BoardCardBinding.tsx} +15 -15
  197. package/src/components/{EntityCollectionView/EntityCollectionBoardView.tsx → CollectionViewBinding/CollectionBoardViewBinding.tsx} +15 -14
  198. package/src/components/{EntityCollectionView/EntityCollectionCardView.tsx → CollectionViewBinding/CollectionCardViewBinding.tsx} +8 -8
  199. package/src/components/{EntityCollectionView/EntityCollectionListView.tsx → CollectionViewBinding/CollectionListViewBinding.tsx} +24 -13
  200. package/src/components/{EntityCollectionView/EntityCollectionViewActions.tsx → CollectionViewBinding/CollectionViewActions.tsx} +5 -5
  201. package/src/components/{EntityCollectionView/EntityCollectionView.tsx → CollectionViewBinding/CollectionViewBinding.tsx} +112 -114
  202. package/src/components/{EntityCollectionView/EntityCollectionViewStartActions.tsx → CollectionViewBinding/CollectionViewStartActions.tsx} +5 -5
  203. package/src/components/{EntityCollectionView/EntityCard.tsx → CollectionViewBinding/EntityCardBinding.tsx} +9 -9
  204. package/src/components/{EntityCollectionView → CollectionViewBinding}/FiltersDialog.tsx +31 -72
  205. package/src/components/{EntityCollectionView → CollectionViewBinding}/SplitListView.tsx +9 -9
  206. package/src/components/{EntityCollectionView → CollectionViewBinding}/hooks/useCollectionInlineEditor.ts +6 -6
  207. package/src/components/{EntityCollectionView → CollectionViewBinding}/hooks/useKanbanDragAndDrop.ts +4 -4
  208. package/src/components/{EntityCollectionView → CollectionViewBinding}/useBoardDataController.tsx +28 -50
  209. package/src/components/{EntityCollectionView/useEntityPreviewSlots.ts → CollectionViewBinding/usePreviewSlots.ts} +11 -11
  210. package/src/components/DefaultDrawer.tsx +1 -1
  211. package/src/components/DeleteEntityDialog.tsx +6 -6
  212. package/src/components/{EntityDetailView.tsx → DetailViewBinding.tsx} +28 -31
  213. package/src/components/{EntityEditViewFormActions.tsx → EditFormActions.tsx} +15 -15
  214. package/src/components/{EntityEditView.tsx → EditViewBinding.tsx} +31 -34
  215. package/src/components/{EntityPreview.tsx → EntityPreviewBinding.tsx} +27 -27
  216. package/src/components/{EntityView.tsx → EntityViewBinding.tsx} +5 -5
  217. package/src/components/HomePage/ContentHomePage.tsx +1 -1
  218. package/src/components/HomePage/NavigationCardBinding.tsx +1 -1
  219. package/src/components/{EntityJsonPreview.tsx → JsonPreviewBinding.tsx} +1 -1
  220. package/src/components/RebaseCMS.tsx +4 -4
  221. package/src/components/RebaseNavigation.tsx +20 -10
  222. package/src/components/ReferenceTable/{EntitySelectionTable.tsx → SelectionTableBinding.tsx} +22 -19
  223. package/src/components/ReferenceWidget.tsx +4 -4
  224. package/src/components/RelationSelector.tsx +16 -14
  225. package/src/components/SelectableTable/SelectableTable.tsx +44 -89
  226. package/src/components/SelectableTable/SelectableTableContext.tsx +3 -3
  227. package/src/components/SelectableTable/SelectionStore.ts +22 -52
  228. package/src/components/SelectableTable/filters/BooleanFilterField.tsx +9 -1
  229. package/src/components/SelectableTable/filters/DateTimeFilterField.tsx +33 -12
  230. package/src/components/SelectableTable/filters/FilterFieldBinding.tsx +187 -0
  231. package/src/components/SelectableTable/filters/ReferenceFilterField.tsx +21 -7
  232. package/src/components/SelectableTable/filters/RelationFilterField.tsx +17 -3
  233. package/src/components/SelectableTable/filters/StringNumberFilterField.tsx +66 -12
  234. package/src/components/SideDialogs.tsx +3 -3
  235. package/src/components/{EntitySidePanel.tsx → SidePanelBinding.tsx} +19 -19
  236. package/src/components/{SideEntityProvider.tsx → SidePanelProvider.tsx} +16 -16
  237. package/src/components/common/default_entity_actions.tsx +24 -13
  238. package/src/components/field_configs.tsx +0 -14
  239. package/src/components/history/EntityHistoryEntry.tsx +2 -2
  240. package/src/components/history/EntityHistoryView.tsx +3 -3
  241. package/src/components/history/LastEditedByIndicator.tsx +2 -2
  242. package/src/components/index.ts +15 -14
  243. package/src/contexts/SidePanelControllerContext.tsx +5 -0
  244. package/src/data_export/export/ExportCollectionAction.tsx +4 -4
  245. package/src/data_import/components/ImportSaveInProgress.tsx +3 -3
  246. package/src/data_import/import/ImportCollectionAction.tsx +4 -4
  247. package/src/data_import/utils/data.ts +2 -2
  248. package/src/editor/editor.tsx +4 -7
  249. package/src/form/EntityForm.tsx +2 -2
  250. package/src/form/EntityFormActions.tsx +4 -4
  251. package/src/form/EntityFormBinding.tsx +7 -7
  252. package/src/form/PropertyFieldBinding.tsx +4 -4
  253. package/src/form/components/StorageUploadProgress.tsx +9 -2
  254. package/src/form/field_bindings/ArrayOfReferencesFieldBinding.tsx +4 -4
  255. package/src/form/field_bindings/KeyValueFieldBinding.tsx +19 -19
  256. package/src/form/field_bindings/MarkdownEditorFieldBinding.tsx +12 -1
  257. package/src/form/field_bindings/MultipleRelationFieldBinding.tsx +6 -6
  258. package/src/form/field_bindings/ReferenceFieldBinding.tsx +5 -5
  259. package/src/form/field_bindings/RelationFieldBinding.tsx +8 -10
  260. package/src/form/field_bindings/StorageUploadFieldBinding.tsx +19 -15
  261. package/src/form/form_utils.ts +2 -2
  262. package/src/form/index.tsx +0 -1
  263. package/src/hooks/index.ts +4 -4
  264. package/src/hooks/navigation/contexts/CollectionRegistryContext.tsx +2 -2
  265. package/src/hooks/navigation/useBuildCollectionRegistryController.tsx +11 -11
  266. package/src/hooks/navigation/useBuildNavigationStateController.tsx +5 -5
  267. package/src/hooks/navigation/useNavigationResolution.ts +10 -10
  268. package/src/hooks/navigation/useResolvedCollections.ts +8 -8
  269. package/src/hooks/navigation/useTopLevelNavigation.ts +2 -2
  270. package/src/hooks/navigation/utils.ts +5 -5
  271. package/src/hooks/{useBuildSideEntityController.tsx → useBuildSidePanel.tsx} +28 -28
  272. package/src/hooks/useCMSContext.tsx +6 -6
  273. package/src/hooks/{useEntityHistory.ts → useHistory.ts} +1 -1
  274. package/src/hooks/useResolvedNavigationFrom.tsx +8 -5
  275. package/src/hooks/{useEntitySelectionDialog.tsx → useSelectionDialog.tsx} +7 -7
  276. package/src/hooks/useSideDialogsController.tsx +1 -1
  277. package/src/hooks/useSidePanel.tsx +13 -0
  278. package/src/index.ts +13 -13
  279. package/src/preview/PropertyPreview.tsx +1 -16
  280. package/src/preview/components/ReferencePreview.tsx +10 -10
  281. package/src/preview/components/RelationPreview.tsx +13 -12
  282. package/src/preview/components/StorageThumbnail.tsx +24 -7
  283. package/src/routes/RebaseRoute.tsx +10 -10
  284. package/src/types/components/EntityFormActionsProps.tsx +2 -2
  285. package/src/types/components/EntityFormProps.tsx +3 -3
  286. package/src/types/components/PropertyPreviewProps.tsx +1 -1
  287. package/src/types/fields.tsx +4 -9
  288. package/src/util/dataControllerAdapter.ts +9 -15
  289. package/src/util/navigation_utils.ts +7 -7
  290. package/src/util/previews.ts +23 -3
  291. package/src/util/propertyConfigMapper.ts +3 -3
  292. package/src/util/property_utils.tsx +2 -3
  293. package/src/util/{entity_view_constants.ts → view_constants.ts} +1 -1
  294. package/dist/CollectionEditorDialog-iGgS4rLX.js.map +0 -1
  295. package/dist/PropertyEditView-C9yhLyja.js.map +0 -1
  296. package/dist/components/EntityCollectionTable/EntityCollectionTable.d.ts +0 -28
  297. package/dist/components/EntityCollectionTable/fields/VirtualTableDateField.d.ts +0 -12
  298. package/dist/components/EntityCollectionTable/fields/VirtualTableInput.d.ts +0 -10
  299. package/dist/components/EntityCollectionTable/fields/VirtualTableNumberInput.d.ts +0 -9
  300. package/dist/components/EntityCollectionTable/fields/VirtualTableSwitch.d.ts +0 -8
  301. package/dist/components/EntityCollectionTable/index.d.ts +0 -6
  302. package/dist/components/EntityCollectionView/EntityCard.d.ts +0 -21
  303. package/dist/components/EntityEditViewFormActions.d.ts +0 -3
  304. package/dist/components/EntitySidePanel.d.ts +0 -11
  305. package/dist/components/EntityView.d.ts +0 -13
  306. package/dist/contexts/SideEntityControllerContext.d.ts +0 -3
  307. package/dist/form/field_bindings/ReferenceAsStringFieldBinding.d.ts +0 -11
  308. package/dist/history-ChHgyyvM.js.map +0 -1
  309. package/dist/hooks/useBuildSideEntityController.d.ts +0 -6
  310. package/dist/hooks/useSideEntityController.d.ts +0 -11
  311. package/dist/src-DOX2nOyh.js.map +0 -1
  312. package/src/components/EntityCollectionTable/fields/VirtualTableDateField.tsx +0 -39
  313. package/src/components/EntityCollectionTable/fields/VirtualTableInput.tsx +0 -90
  314. package/src/components/EntityCollectionTable/fields/VirtualTableNumberInput.tsx +0 -83
  315. package/src/components/EntityCollectionTable/fields/VirtualTableSwitch.tsx +0 -32
  316. package/src/components/EntityCollectionTable/index.tsx +0 -14
  317. package/src/contexts/SideEntityControllerContext.tsx +0 -5
  318. package/src/form/field_bindings/ReferenceAsStringFieldBinding.tsx +0 -141
  319. package/src/hooks/useSideEntityController.tsx +0 -13
  320. /package/dist/components/{EntityCollectionTable → CollectionTableBinding}/PropertyTableCell.d.ts +0 -0
  321. /package/dist/components/{EntityCollectionTable → CollectionTableBinding}/column_utils.d.ts +0 -0
  322. /package/dist/components/{EntityCollectionTable → CollectionTableBinding}/fields/TableRelationSelectorField.d.ts +0 -0
  323. /package/dist/components/{EntityCollectionTable → CollectionTableBinding}/fields/TableStorageUpload.d.ts +0 -0
  324. /package/dist/components/{EntityCollectionTable → CollectionTableBinding}/fields/VirtualTableSelect.d.ts +0 -0
  325. /package/dist/components/{EntityCollectionTable → CollectionTableBinding}/fields/VirtualTableUserSelect.d.ts +0 -0
  326. /package/dist/components/{EntityCollectionTable → CollectionTableBinding}/internal/CollectionTableToolbar.d.ts +0 -0
  327. /package/dist/components/{EntityCollectionTable → CollectionTableBinding}/internal/EntityTableCell.d.ts +0 -0
  328. /package/dist/components/{EntityCollectionTable → CollectionTableBinding}/internal/EntityTableCellActions.d.ts +0 -0
  329. /package/dist/components/{EntityCollectionTable → CollectionTableBinding}/internal/popup_field/useDraggable.d.ts +0 -0
  330. /package/dist/components/{EntityCollectionTable → CollectionTableBinding}/internal/popup_field/useWindowSize.d.ts +0 -0
  331. /package/dist/components/{EntityCollectionTable → CollectionTableBinding}/table_bindings.d.ts +0 -0
  332. /package/dist/components/{EntityCollectionView → CollectionViewBinding}/FilterPresetsButton.d.ts +0 -0
  333. /package/dist/components/{EntityCollectionView → CollectionViewBinding}/FiltersDialog.d.ts +0 -0
  334. /package/dist/components/{EntityCollectionView → CollectionViewBinding}/ViewModeToggle.d.ts +0 -0
  335. /package/dist/components/{EntityCollectionView → CollectionViewBinding}/useSelectionController.d.ts +0 -0
  336. /package/dist/components/{EntityCollectionView → CollectionViewBinding}/utils.d.ts +0 -0
  337. /package/src/components/{EntityCollectionTable → CollectionTableBinding}/PropertyTableCell.tsx +0 -0
  338. /package/src/components/{EntityCollectionTable → CollectionTableBinding}/column_utils.tsx +0 -0
  339. /package/src/components/{EntityCollectionTable → CollectionTableBinding}/fields/TableRelationSelectorField.tsx +0 -0
  340. /package/src/components/{EntityCollectionTable → CollectionTableBinding}/fields/VirtualTableSelect.tsx +0 -0
  341. /package/src/components/{EntityCollectionTable → CollectionTableBinding}/fields/VirtualTableUserSelect.tsx +0 -0
  342. /package/src/components/{EntityCollectionTable → CollectionTableBinding}/internal/CollectionTableToolbar.tsx +0 -0
  343. /package/src/components/{EntityCollectionTable → CollectionTableBinding}/internal/EntityTableCell.tsx +0 -0
  344. /package/src/components/{EntityCollectionTable → CollectionTableBinding}/internal/EntityTableCellActions.tsx +0 -0
  345. /package/src/components/{EntityCollectionTable → CollectionTableBinding}/internal/popup_field/useDraggable.tsx +0 -0
  346. /package/src/components/{EntityCollectionTable → CollectionTableBinding}/internal/popup_field/useWindowSize.tsx +0 -0
  347. /package/src/components/{EntityCollectionView → CollectionViewBinding}/FilterPresetsButton.tsx +0 -0
  348. /package/src/components/{EntityCollectionView → CollectionViewBinding}/ViewModeToggle.tsx +0 -0
  349. /package/src/components/{EntityCollectionView → CollectionViewBinding}/useSelectionController.tsx +0 -0
  350. /package/src/components/{EntityCollectionView → CollectionViewBinding}/utils.ts +0 -0
@@ -1,31 +1,50 @@
1
-
2
- import { useUnsavedChangesDialog, UnsavedChangesDialog } from "@rebasepro/core";
3
- import { useNavigationStateController, useCollectionRegistryController, useUrlController } from "../../_cms_internals";
4
1
  import * as React from "react";
5
2
  import { useEffect, useRef, useState } from "react";
6
- import { ConfirmationDialog, ErrorView, useAuthController, useCustomizationController, useSnackbarController } from "@rebasepro/core";
3
+ import {
4
+ ConfirmationDialog,
5
+ ErrorView,
6
+ UnsavedChangesDialog,
7
+ useAuthController,
8
+ useCustomizationController,
9
+ useUnsavedChangesDialog
10
+ } from "@rebasepro/core";
11
+ import {
12
+ getInferenceType,
13
+ ImportSaveInProgress,
14
+ useCollectionRegistryController,
15
+ useImportConfig,
16
+ useNavigationStateController,
17
+ useUrlController
18
+ } from "../../_cms_internals";
7
19
  import { useSafeSnackbarController } from "../../useSafeSnackbarController";
8
- import { CircularProgressCenter } from "@rebasepro/ui";
9
20
  import {
10
21
  ArrowLeftIcon,
11
22
  Button,
12
23
  CheckIcon,
24
+ CircularProgressCenter,
13
25
  cls,
14
26
  coolIconKeys,
15
27
  defaultBorderMixin,
16
28
  Dialog,
17
- DialogActions,
18
- DialogContent,
19
29
  DialogTitle,
20
30
  IconButton,
21
31
  LoadingButton,
22
32
  Tab,
23
- Tabs,
24
- Typography
33
+ Tabs
25
34
  } from "@rebasepro/ui";
26
- import { Entity, EntityCollection, MapProperty, Properties, Property, PropertyConfig, User, getDataSourceCapabilities } from "@rebasepro/types";
27
- import type { PostgresCollection } from "@rebasepro/types";
28
- import { getSubcollections, isPropertyBuilder, removeInitialAndTrailingSlashes, getTableName } from "@rebasepro/common";
35
+ import {
36
+ EngineProperties,
37
+ Entity,
38
+ CollectionConfig,
39
+ getDataSourceCapabilities,
40
+ MapProperty,
41
+ Properties,
42
+ Property,
43
+ PropertyConfig,
44
+ TableMetadata,
45
+ User
46
+ } from "@rebasepro/types";
47
+ import { getSubcollections, getTableName, isPropertyBuilder, removeInitialAndTrailingSlashes } from "@rebasepro/common";
29
48
  import { CollectionEditorSchema } from "./CollectionYupValidation";
30
49
  import { GeneralSettingsForm } from "./GeneralSettingsForm";
31
50
  import { DisplaySettingsForm } from "./DisplaySettingsForm";
@@ -33,7 +52,6 @@ import { CollectionPropertiesEditorForm } from "./CollectionPropertiesEditorForm
33
52
  import { CollectionsConfigController } from "../../types/config_controller";
34
53
  import { CollectionEditorWelcomeView } from "./CollectionEditorWelcomeView";
35
54
  import { CollectionInference } from "../../types/collection_inference";
36
- import { getInferenceType, ImportSaveInProgress, useImportConfig } from "../../_cms_internals";
37
55
  import { buildEntityPropertiesFromData } from "@rebasepro/schema-inference";
38
56
  import { CollectionEditorImportMapping } from "./import/CollectionEditorImportMapping";
39
57
  import { CollectionEditorImportDataPreview } from "./import/CollectionEditorImportDataPreview";
@@ -42,10 +60,9 @@ import { Formex, FormexController, useCreateFormex } from "@rebasepro/formex";
42
60
  import { getFullIdPath } from "./util";
43
61
  import { AICollectionGeneratorPopover } from "./AICollectionGeneratorPopover";
44
62
  import { AIModifiedPathsProvider, useAIModifiedPaths } from "./AIModifiedPathsContext";
45
- import { CollectionOperation, CollectionGenerationCallback } from "../../api/generateCollectionApi";
63
+ import { CollectionGenerationCallback, CollectionOperation } from "../../api/generateCollectionApi";
46
64
  import { CollectionRLSTab } from "./CollectionRLSTab";
47
65
  import { buildCollectionFromTableMetadata } from "../../pgColumnToProperty";
48
- import { TableMetadata } from "@rebasepro/types";
49
66
  import { mergeDeep, randomString, removeUndefined } from "@rebasepro/utils";
50
67
  import type { CollectionEditorExtensionProps, CollectionEditorTab } from "../../extensibility_types";
51
68
 
@@ -60,11 +77,11 @@ export interface CollectionEditorDialogProps extends CollectionEditorExtensionPr
60
77
  * A collection to duplicate from. If provided, the new collection will be
61
78
  * pre-populated with the same properties (but with empty name, path, and id).
62
79
  */
63
- copyFrom?: EntityCollection;
80
+ copyFrom?: CollectionConfig;
64
81
  editedCollectionId?: string;
65
82
  path?: string; // full path of this particular collection, like `products/123/locales`
66
83
  parentCollectionSlugs?: string[], parentEntityIds?: string[]; // path ids of the parent collection, like [`products`]
67
- handleClose: (collection?: EntityCollection) => void;
84
+ handleClose: (collection?: CollectionConfig) => void;
68
85
  configController: CollectionsConfigController;
69
86
  collectionInference?: CollectionInference;
70
87
  extraView?: {
@@ -75,7 +92,7 @@ export interface CollectionEditorDialogProps extends CollectionEditorExtensionPr
75
92
  };
76
93
  getUser?: (uid: string) => User | null;
77
94
  getData?: (path: string, parentPaths: string[]) => Promise<object[]>;
78
- parentCollection?: EntityCollection;
95
+ parentCollection?: CollectionConfig;
79
96
  existingEntities?: Entity<any>[];
80
97
  /**
81
98
  * Initial view to open when editing: "general", "display", or "properties".
@@ -196,7 +213,7 @@ export function CollectionEditor(props: CollectionEditorDialogProps & {
196
213
  const collectionsInThisLevel = (props.parentCollection ? getSubcollections(props.parentCollection) : collections) ?? [];
197
214
  const existingPaths = collectionsInThisLevel.map(col => getTableName(col)?.trim().toLowerCase()).filter(Boolean);
198
215
  const existingIds = collectionsInThisLevel.map(col => col.slug?.trim().toLowerCase()).filter(Boolean) as string[];
199
- const [collection, setCollection] = React.useState<EntityCollection<any> | undefined>();
216
+ const [collection, setCollection] = React.useState<CollectionConfig<any> | undefined>();
200
217
  const [initialLoadingCompleted, setInitialLoadingCompleted] = React.useState(false);
201
218
 
202
219
  useEffect(() => {
@@ -217,7 +234,7 @@ export function CollectionEditor(props: CollectionEditorDialogProps & {
217
234
 
218
235
  const registryCol = getRawCollection ? getRawCollection(collectionPath) : undefined;
219
236
  const configCol = props.configController?.collections?.find(c => c.slug === props.editedCollectionId);
220
- setCollection((registryCol ?? configCol) as EntityCollection<any>);
237
+ setCollection((registryCol ?? configCol) as CollectionConfig<any>);
221
238
  } else {
222
239
  setCollection(undefined);
223
240
  }
@@ -242,8 +259,8 @@ export function CollectionEditor(props: CollectionEditorDialogProps & {
242
259
  }, [collection, fallbackSlug]);
243
260
 
244
261
  // Build initial values - handle copyFrom for duplication
245
- const initialValues: EntityCollection<any> = React.useMemo(() => {
246
- return initialCollection
262
+ const initialValues = React.useMemo((): CollectionConfig<any> => {
263
+ return (initialCollection
247
264
  ? applyPropertyConfigs(initialCollection, propertyConfigs)
248
265
  : copyFromProp
249
266
  ? (() => {
@@ -253,17 +270,17 @@ export function CollectionEditor(props: CollectionEditorDialogProps & {
253
270
  ...rest,
254
271
  name: "",
255
272
  ownerId: authController.user?.uid ?? ""
256
- } as EntityCollection<any>;
273
+ } as CollectionConfig<any>;
257
274
  })()
258
275
  : {
259
276
  slug: initialValuesProp?.slug ?? fallbackSlug,
260
277
  table: initialValuesProp?.slug ?? "",
261
278
  name: initialValuesProp?.name ?? "",
262
- properties: {} as Properties,
279
+ properties: {} as EngineProperties,
263
280
  propertiesOrder: [],
264
281
  icon: initialIcon,
265
282
  ownerId: authController.user?.uid ?? ""
266
- };
283
+ }) as CollectionConfig<any>;
267
284
  }, [initialCollection, propertyConfigs, copyFromProp, initialValuesProp, fallbackSlug, initialIcon, authController.user?.uid]);
268
285
 
269
286
  if (!initialLoadingCompleted) {
@@ -324,12 +341,12 @@ function CollectionEditorInternal<M extends Record<string, unknown>>({
324
341
  }: CollectionEditorDialogProps & {
325
342
  handleCancel: () => void,
326
343
  setFormDirty: (dirty: boolean) => void,
327
- initialValues: EntityCollection<M>,
344
+ initialValues: CollectionConfig<M>,
328
345
  existingPaths: string[],
329
346
  existingIds: string[],
330
347
  includeTemplates: boolean,
331
- collection: EntityCollection<M> | undefined,
332
- setCollection: (collection: EntityCollection<M>) => void,
348
+ collection: CollectionConfig<M> | undefined,
349
+ setCollection: (collection: CollectionConfig<M>) => void,
333
350
  propertyConfigs: Record<string, PropertyConfig>,
334
351
  }
335
352
  ) {
@@ -378,7 +395,7 @@ function CollectionEditorInternal<M extends Record<string, unknown>>({
378
395
 
379
396
  const [error, setError] = React.useState<Error | undefined>();
380
397
 
381
- const saveCollection = (updatedCollection: EntityCollection<M>): Promise<boolean> => {
398
+ const saveCollection = (updatedCollection: CollectionConfig<M>): Promise<boolean> => {
382
399
  const id = updatedCollection.slug;
383
400
 
384
401
  return configController.saveCollection({
@@ -425,7 +442,7 @@ function CollectionEditorInternal<M extends Record<string, unknown>>({
425
442
 
426
443
  };
427
444
 
428
- const doCollectionInference = collectionInference ? (collection: EntityCollection<any>) => {
445
+ const doCollectionInference = collectionInference ? (collection: CollectionConfig<any>) => {
429
446
  if (!collectionInference) return undefined;
430
447
  return collectionInference?.(
431
448
  collection.slug,
@@ -434,7 +451,7 @@ function CollectionEditorInternal<M extends Record<string, unknown>>({
434
451
  );
435
452
  } : undefined;
436
453
 
437
- const inferCollectionFromData = async (newCollection: EntityCollection<M>) => {
454
+ const inferCollectionFromData = async (newCollection: CollectionConfig<M>) => {
438
455
 
439
456
  try {
440
457
  if (!doCollectionInference) {
@@ -455,7 +472,7 @@ function CollectionEditorInternal<M extends Record<string, unknown>>({
455
472
  };
456
473
 
457
474
  if (Object.keys(inferredCollection.properties ?? {}).length > 0) {
458
- values.properties = inferredCollection.properties as Properties;
475
+ values.properties = inferredCollection.properties as EngineProperties;
459
476
  values.propertiesOrder = inferredCollection.propertiesOrder as Extract<keyof M, string>[];
460
477
  }
461
478
 
@@ -480,7 +497,7 @@ function CollectionEditorInternal<M extends Record<string, unknown>>({
480
497
  }
481
498
  };
482
499
 
483
- const onSubmit = async (newCollectionState: EntityCollection<M>, formexController: FormexController<EntityCollection<M>>) => {
500
+ const onSubmit = async (newCollectionState: CollectionConfig<M>, formexController: FormexController<CollectionConfig<M>>) => {
484
501
  console.debug("Submitting collection", newCollectionState);
485
502
  try {
486
503
 
@@ -489,7 +506,7 @@ function CollectionEditorInternal<M extends Record<string, unknown>>({
489
506
  if (success) {
490
507
  aiModifiedPaths?.clearAllPaths();
491
508
  formexController.resetForm({ values: newCollectionState });
492
- handleClose(newCollectionState as EntityCollection);
509
+ handleClose(newCollectionState as CollectionConfig);
493
510
  }
494
511
  return;
495
512
  }
@@ -527,7 +544,7 @@ function CollectionEditorInternal<M extends Record<string, unknown>>({
527
544
  if (success) {
528
545
  formexController.resetForm({ values: initialValues });
529
546
  setNextMode();
530
- handleClose(newCollectionState as EntityCollection);
547
+ handleClose(newCollectionState as CollectionConfig);
531
548
  }
532
549
  } else {
533
550
  setNextMode();
@@ -543,7 +560,7 @@ function CollectionEditorInternal<M extends Record<string, unknown>>({
543
560
  }
544
561
  };
545
562
 
546
- const validation = (col: EntityCollection<M>) => {
563
+ const validation = (col: CollectionConfig<M>) => {
547
564
 
548
565
  let errors: Record<string, string> = {};
549
566
  const schema = (currentView === "properties" || currentView === "general") && CollectionEditorSchema;
@@ -578,7 +595,7 @@ function CollectionEditorInternal<M extends Record<string, unknown>>({
578
595
  return errors;
579
596
  };
580
597
 
581
- const formController = useCreateFormex<EntityCollection<M>>({
598
+ const formController = useCreateFormex<CollectionConfig<M>>({
582
599
  initialValues,
583
600
  onSubmit,
584
601
  validation,
@@ -672,8 +689,8 @@ function CollectionEditorInternal<M extends Record<string, unknown>>({
672
689
 
673
690
  const aiModifiedPaths = useAIModifiedPaths();
674
691
 
675
- const handleAIGenerated = (generatedCollection: EntityCollection, operations?: CollectionOperation[]) => {
676
- formController.setValues(generatedCollection as EntityCollection<M>);
692
+ const handleAIGenerated = (generatedCollection: CollectionConfig, operations?: CollectionOperation[]) => {
693
+ formController.setValues(generatedCollection as CollectionConfig<M>);
677
694
  if (operations && aiModifiedPaths) {
678
695
  aiModifiedPaths.addModifiedPaths(operations);
679
696
  }
@@ -697,7 +714,7 @@ function CollectionEditorInternal<M extends Record<string, unknown>>({
697
714
  {(!visibleTabs || visibleTabs.includes("properties")) && <Tab value={"properties"}>
698
715
  Properties
699
716
  </Tab>}
700
- {(!visibleTabs || visibleTabs.includes("rls")) && getDataSourceCapabilities(values.driver).supportsRLS && <Tab value={"rls"}>
717
+ {(!visibleTabs || visibleTabs.includes("rls")) && getDataSourceCapabilities(values.engine).supportsRLS && <Tab value={"rls"}>
701
718
  RLS
702
719
  </Tab>}
703
720
  </Tabs>
@@ -732,7 +749,7 @@ function CollectionEditorInternal<M extends Record<string, unknown>>({
732
749
  onSubmit={formController.handleSubmit}
733
750
  className="flex-grow flex flex-col min-h-0 relative">
734
751
 
735
- <div className="flex-grow flex flex-col min-h-0 no-scrollbar relative w-full h-full bg-surface-50 dark:bg-surface-800">
752
+ <div className="flex-grow flex flex-col min-h-0 relative w-full h-full bg-surface-50 dark:bg-surface-800">
736
753
 
737
754
  {currentView === "loading" &&
738
755
  <CircularProgressCenter/>}
@@ -759,7 +776,7 @@ function CollectionEditorInternal<M extends Record<string, unknown>>({
759
776
  formController.setValues({
760
777
  ...formController.values,
761
778
  ...collectionData
762
- } as EntityCollection<M>);
779
+ } as CollectionConfig<M>);
763
780
  onWelcomeScreenContinue();
764
781
  } catch (e: unknown) {
765
782
  console.error("Error importing table:", e);
@@ -807,7 +824,7 @@ function CollectionEditorInternal<M extends Record<string, unknown>>({
807
824
  <DisplaySettingsForm expandKanban={expandKanban} standalone={standalone}/>
808
825
  }
809
826
 
810
- {currentView === "rls" && getDataSourceCapabilities(values.driver).supportsRLS &&
827
+ {currentView === "rls" && getDataSourceCapabilities(values.engine).supportsRLS &&
811
828
  <CollectionRLSTab/>
812
829
  }
813
830
 
@@ -958,7 +975,7 @@ function CollectionEditorInternal<M extends Record<string, unknown>>({
958
975
 
959
976
  }
960
977
 
961
- function applyPropertyConfigs<M extends Record<string, unknown> = Record<string, unknown>>(collection: EntityCollection<M>, propertyConfigs: Record<string, PropertyConfig>): EntityCollection<M> {
978
+ function applyPropertyConfigs<M extends Record<string, unknown> = Record<string, unknown>>(collection: CollectionConfig<M>, propertyConfigs: Record<string, PropertyConfig>): CollectionConfig<M> {
962
979
  const {
963
980
  properties,
964
981
  ...rest
@@ -974,8 +991,8 @@ function applyPropertyConfigs<M extends Record<string, unknown> = Record<string,
974
991
 
975
992
  return {
976
993
  ...rest,
977
- properties: propertiesResult
978
- };
994
+ properties: propertiesResult as EngineProperties
995
+ } as CollectionConfig<M>;
979
996
  }
980
997
 
981
998
  function applyPropertiesConfig(property: Property, propertyConfigs: Record<string, PropertyConfig>) {
@@ -2,7 +2,7 @@ import { AIIcon } from "@rebasepro/core";
2
2
  ;
3
3
  import React, { useState } from "react";
4
4
  ;
5
- import { EntityCollection } from "@rebasepro/types";
5
+ import { CollectionConfig } from "@rebasepro/types";
6
6
  import {
7
7
  Button,
8
8
  Card,
@@ -43,7 +43,7 @@ export function CollectionEditorWelcomeView({
43
43
  onImportFromTable
44
44
  }: {
45
45
  path: string;
46
- parentCollection?: EntityCollection;
46
+ parentCollection?: CollectionConfig;
47
47
  onContinue: (importData?: object[], propertiesOrder?: string[]) => void;
48
48
  existingCollectionPaths?: string[];
49
49
  generateCollection?: CollectionGenerationCallback;
@@ -61,7 +61,7 @@ export function CollectionEditorWelcomeView({
61
61
  setFieldValue,
62
62
  setValues,
63
63
  submitCount
64
- } = useFormex<EntityCollection>();
64
+ } = useFormex<CollectionConfig>();
65
65
 
66
66
  const [jsonImportOpen, setJsonImportOpen] = useState(false);
67
67
  const [importingTable, setImportingTable] = useState<string | null>(null);
@@ -13,7 +13,7 @@ import {
13
13
  TextField,
14
14
  Typography
15
15
  } from "@rebasepro/ui";
16
- import { EntityCollection } from "@rebasepro/types";
16
+ import { CollectionConfig } from "@rebasepro/types";
17
17
  import { validateCollectionJson, CollectionValidationError } from "../../validateCollectionJson";
18
18
 
19
19
  const EXAMPLE_JSON = `{
@@ -41,7 +41,7 @@ const EXAMPLE_JSON = `{
41
41
  export interface CollectionJsonImportDialogProps {
42
42
  open: boolean;
43
43
  onClose: () => void;
44
- onImport: (collection: EntityCollection) => void;
44
+ onImport: (collection: CollectionConfig) => void;
45
45
  }
46
46
 
47
47
  export function CollectionJsonImportDialog({
@@ -21,7 +21,7 @@ import {
21
21
  Tooltip,
22
22
  Typography
23
23
  } from "@rebasepro/ui";
24
- import { EntityCollection, MapProperty, Properties, Property, PropertyConfig, User } from "@rebasepro/types";
24
+ import { CollectionConfig, MapProperty, Properties, Property, PropertyConfig, User } from "@rebasepro/types";
25
25
  import { isPropertyBuilder } from "@rebasepro/common";
26
26
 
27
27
  import { getFullId, idToPropertiesPath, namespaceToPropertiesOrderPath } from "./util";
@@ -31,7 +31,7 @@ import { GetCodeDialog } from "./GetCodeDialog";
31
31
  import { useAIModifiedPaths } from "./AIModifiedPathsContext";
32
32
  import { useCollectionsConfigController } from "../../useCollectionsConfigController";
33
33
  import type { PropertyTypePreset, PropertyType } from "../../extensibility_types";
34
- import type { SerializableProperty, SerializableCollection } from "../../serializable_types";
34
+ import type { SerializableProperty, SerializableCollectionConfig } from "../../serializable_types";
35
35
 
36
36
  type PropertyOrBuilder = Property | Record<string, unknown>;
37
37
 
@@ -44,7 +44,7 @@ type CollectionEditorFormProps = {
44
44
  extraIcon: React.ReactNode;
45
45
  getUser?: (uid: string) => User | null;
46
46
  getData?: () => Promise<object[]>;
47
- doCollectionInference?: (collection: EntityCollection) => Promise<Partial<EntityCollection> | null> | undefined;
47
+ doCollectionInference?: (collection: CollectionConfig) => Promise<Partial<CollectionConfig> | null> | undefined;
48
48
  propertyConfigs: Record<string, PropertyConfig>;
49
49
  propertyTypePresets?: PropertyTypePreset[];
50
50
  hiddenPropertyTypes?: PropertyType[];
@@ -52,7 +52,7 @@ type CollectionEditorFormProps = {
52
52
  metadata: Record<string, unknown>;
53
53
  onMetadataChange: (key: string, value: unknown) => void;
54
54
  property: SerializableProperty;
55
- collection: SerializableCollection;
55
+ collection: SerializableCollectionConfig;
56
56
  }) => React.ReactNode;
57
57
  standalone?: boolean;
58
58
  };
@@ -82,7 +82,7 @@ export function CollectionPropertiesEditorForm({
82
82
  setFieldTouched,
83
83
  errors,
84
84
  dirty
85
- } = useFormex<EntityCollection>();
85
+ } = useFormex<CollectionConfig>();
86
86
 
87
87
  const snackbarController = useSafeSnackbarController();
88
88
  const configControllerFromContext = useCollectionsConfigController();
@@ -420,9 +420,9 @@ export function CollectionPropertiesEditorForm({
420
420
  };
421
421
 
422
422
  const body = (
423
- <div className={"grid grid-cols-12 h-full bg-surface-50 dark:bg-surface-800"}>
423
+ <div className={"grid grid-cols-12 h-full min-h-0 bg-surface-50 dark:bg-surface-800"}>
424
424
  <div className={cls(
425
- "col-span-12 lg:col-span-5 h-full flex flex-col bg-surface-50 dark:bg-surface-800",
425
+ "col-span-12 lg:col-span-5 h-full min-h-0 flex flex-col bg-surface-50 dark:bg-surface-800",
426
426
  !asDialog && "border-r " + defaultBorderMixin
427
427
  )}>
428
428
  {/* Sidebar Header */}
@@ -467,7 +467,7 @@ export function CollectionPropertiesEditorForm({
467
467
  </div>
468
468
 
469
469
  {/* Sidebar Content */}
470
- <div className="flex-grow overflow-y-auto p-3 no-scrollbar space-y-3 bg-surface-50 dark:bg-surface-800">
470
+ <div className="flex-grow overflow-y-auto p-3 space-y-3 bg-surface-50 dark:bg-surface-800">
471
471
  {owner && (
472
472
  <div className="px-1 py-0.5">
473
473
  <Typography variant="body2" color="secondary">
@@ -1,5 +1,5 @@
1
1
 
2
- import { EntityCollection } from "@rebasepro/types";
2
+ import { CollectionConfig } from "@rebasepro/types";
3
3
  import React, { useState, useEffect } from "react";
4
4
 
5
5
  /**
@@ -61,7 +61,7 @@ interface SecurityRule {
61
61
  roles?: string[];
62
62
  }
63
63
 
64
- type CollectionWithSecurity = EntityCollection & {
64
+ type CollectionWithSecurity = CollectionConfig & {
65
65
  securityRules?: SecurityRule[];
66
66
  id?: string;
67
67
  table?: string;
@@ -22,11 +22,11 @@ import {
22
22
  Typography
23
23
  } from "@rebasepro/ui";
24
24
  import { useFormex } from "@rebasepro/formex";
25
- import { PostgresCollection, Relation } from "@rebasepro/types";
25
+ import { PostgresCollectionConfig, Relation } from "@rebasepro/types";
26
26
  import { useCollectionsConfigController } from "../../useCollectionsConfigController";
27
27
 
28
28
  export function CollectionRelationsTab() {
29
- const { values, setFieldValue } = useFormex<PostgresCollection>();
29
+ const { values, setFieldValue } = useFormex<PostgresCollectionConfig>();
30
30
  const { collections } = useCollectionsConfigController();
31
31
  const [editingRelationIndex, setEditingRelationIndex] = useState<number | null>(null);
32
32
  const [editingRelationState, setEditingRelationState] = useState<Partial<Relation> | null>(null);
@@ -6,7 +6,7 @@ import { Button, PlusIcon, Typography } from "@rebasepro/ui";
6
6
  import { CollectionEditorDialogProps } from "./CollectionEditorDialog";
7
7
  import { AIModifiedPathsProvider } from "./AIModifiedPathsContext";
8
8
  import { CollectionEditor } from "./CollectionEditorDialog";
9
- import type { EntityCollection } from "@rebasepro/types";
9
+ import type { CollectionConfig } from "@rebasepro/types";
10
10
 
11
11
  export type CollectionStudioViewProps = Omit<CollectionEditorDialogProps, "open" | "isNewCollection" | "editedCollectionId" | "handleClose" | "handleCancel"> & {
12
12
  collectionId?: string | "new";
@@ -16,7 +16,7 @@ export type CollectionStudioViewProps = Omit<CollectionEditorDialogProps, "open"
16
16
  * Receives the saved collection (or undefined if dismissed without saving).
17
17
  * When not provided, save completes silently.
18
18
  */
19
- onSave?: (collection?: EntityCollection) => void;
19
+ onSave?: (collection?: CollectionConfig) => void;
20
20
 
21
21
  /**
22
22
  * Called when the user cancels editing.
@@ -12,7 +12,7 @@ import {
12
12
  Tooltip,
13
13
  Typography
14
14
  } from "@rebasepro/ui";
15
- import type { EntityCollection } from "@rebasepro/types";
15
+ import type { CollectionConfig } from "@rebasepro/types";
16
16
  import { CollectionsConfigController } from "../../types/config_controller";
17
17
  import { CollectionStudioView } from "./CollectionStudioView";
18
18
  import type { CollectionEditorExtensionProps } from "../../extensibility_types";
@@ -25,7 +25,7 @@ export interface CollectionsStudioViewProps extends CollectionEditorExtensionPro
25
25
  * When provided, overrides the collections from `configController`.
26
26
  * Use this to control exactly which collections the editor displays.
27
27
  */
28
- collections?: EntityCollection[];
28
+ collections?: CollectionConfig[];
29
29
 
30
30
  /**
31
31
  * Controlled active collection ID.
@@ -4,7 +4,7 @@ import React, { useMemo, useState } from "react";
4
4
  import { useCustomizationController } from "@rebasepro/core";
5
5
  import { getFieldConfig } from "../../../components/field_configs";
6
6
  import { PropertyConfigBadge } from "../../../components/PropertyConfigBadge";
7
- import { EntityCollection, Property } from "@rebasepro/types";
7
+ import { CollectionConfig, Property } from "@rebasepro/types";
8
8
  import {
9
9
  BooleanSwitchWithLabel,
10
10
  Button,
@@ -39,7 +39,7 @@ export function DisplaySettingsForm({
39
39
  setFieldValue,
40
40
  handleChange,
41
41
  submitCount
42
- } = useFormex<EntityCollection>();
42
+ } = useFormex<CollectionConfig>();
43
43
 
44
44
  const [orderPropertyDialogOpen, setOrderPropertyDialogOpen] = useState(false);
45
45
 
@@ -5,7 +5,7 @@ import {
5
5
  useCustomizationController
6
6
  } from "@rebasepro/core";
7
7
  import { resolveEntityAction } from "../../_cms_internals";
8
- import { type EntityCollection } from "@rebasepro/types";
8
+ import { type CollectionConfig } from "@rebasepro/types";
9
9
  import { EntityAction } from "@rebasepro/types";
10
10
  import {
11
11
  Alert,
@@ -30,7 +30,7 @@ export function EntityActionsEditTab({
30
30
  collection,
31
31
  embedded = false
32
32
  }: {
33
- collection: EntityCollection,
33
+ collection: CollectionConfig,
34
34
  embedded?: boolean;
35
35
  }) {
36
36
 
@@ -42,7 +42,7 @@ export function EntityActionsEditTab({
42
42
  const {
43
43
  values,
44
44
  setFieldValue
45
- } = useFormex<EntityCollection>();
45
+ } = useFormex<CollectionConfig>();
46
46
 
47
47
  const resolvedEntityActions = ((values.entityActions ?? []) as (string | EntityAction<any>)[])
48
48
  .filter((e): e is string => typeof e === "string")
@@ -4,7 +4,7 @@ import { FieldCaption } from "../../_cms_internals";
4
4
  import React, { useState } from "react";
5
5
 
6
6
  import { SearchIconsView } from "../../_cms_internals";
7
- import type { EntityCollection, PostgresCollection } from "@rebasepro/types";
7
+ import type { CollectionConfig, PostgresCollectionConfig } from "@rebasepro/types";
8
8
  import {
9
9
  BooleanSwitchWithLabel,
10
10
  Chip,
@@ -27,7 +27,7 @@ import { Field, getIn, useFormex } from "@rebasepro/formex";
27
27
  import { useCollectionsConfigController } from "../../useCollectionsConfigController";
28
28
  import { singular, toSnakeCase } from "@rebasepro/utils";
29
29
  import type { ExtraCollectionFieldsParams } from "../../extensibility_types";
30
- import { toSerializableCollection } from "../../serializable_utils";
30
+ import { toSerializableCollectionConfig } from "../../serializable_utils";
31
31
 
32
32
  export function GeneralSettingsForm({
33
33
  isNewCollection,
@@ -40,7 +40,7 @@ export function GeneralSettingsForm({
40
40
  isNewCollection: boolean;
41
41
  existingPaths?: string[];
42
42
  existingIds?: string[];
43
- parentCollection?: EntityCollection;
43
+ parentCollection?: CollectionConfig;
44
44
  renderExtraCollectionFields?: (params: ExtraCollectionFieldsParams) => React.ReactNode;
45
45
  standalone?: boolean;
46
46
  }) {
@@ -53,7 +53,7 @@ export function GeneralSettingsForm({
53
53
  errors,
54
54
  setFieldTouched,
55
55
  submitCount
56
- } = useFormex<PostgresCollection>();
56
+ } = useFormex<PostgresCollectionConfig>();
57
57
 
58
58
  const [iconDialogOpen, setIconDialogOpen] = useState(false);
59
59
 
@@ -255,7 +255,7 @@ export function GeneralSettingsForm({
255
255
  onMetadataChange: (key: string, value: unknown) => {
256
256
  setFieldValue(`metadata.${key}`, value);
257
257
  },
258
- collection: toSerializableCollection(values),
258
+ collection: toSerializableCollectionConfig(values),
259
259
  })}
260
260
  </div>
261
261
  )}
@@ -1,5 +1,5 @@
1
1
  import { useSafeSnackbarController } from "../../useSafeSnackbarController";
2
- import { EntityCollection } from "@rebasepro/types";
2
+ import { CollectionConfig } from "@rebasepro/types";
3
3
  import { Button, CopyIcon, Dialog, DialogActions, DialogContent, DialogTitle, Typography } from "@rebasepro/ui";
4
4
  import React from "react";
5
5
  import JSON5 from "json5";
@@ -12,12 +12,12 @@ export function GetCodeDialog({
12
12
  collection,
13
13
  onOpenChange,
14
14
  open
15
- }: { onOpenChange: (open: boolean) => void, collection: EntityCollection, open: boolean }) {
15
+ }: { onOpenChange: (open: boolean) => void, collection: CollectionConfig, open: boolean }) {
16
16
 
17
17
  const snackbarController = useSafeSnackbarController();
18
18
 
19
19
  const code = collection
20
- ? "import { EntityCollection } from \"@rebasepro/core\";\n\nconst " + (collection?.name ? camelCase(collection.name) : "my") + "Collection:EntityCollection = " + JSON5.stringify(collectionToCode({ ...collection }), null, "\t")
20
+ ? "import { CollectionConfig } from \"@rebasepro/core\";\n\nconst " + (collection?.name ? camelCase(collection.name) : "my") + "Collection:CollectionConfig = " + JSON5.stringify(collectionToCode({ ...collection }), null, "\t")
21
21
  : "No collection selected";
22
22
  return <Dialog open={open}
23
23
  onOpenChange={onOpenChange}
@@ -78,7 +78,7 @@ export function GetCodeDialog({
78
78
  </Dialog>;
79
79
  }
80
80
 
81
- function collectionToCode(collection: EntityCollection): object {
81
+ function collectionToCode(collection: CollectionConfig): object {
82
82
 
83
83
  const propertyCleanup = (value: unknown): unknown => {
84
84
  if (value === undefined || value === null) {
@@ -2,7 +2,7 @@
2
2
  import { FieldCaption } from "../../_cms_internals";
3
3
  import React, { useMemo, useRef, useState } from "react";
4
4
  import { useAuthController, useCustomizationController } from "@rebasepro/core";
5
- import { EntityCollection, Property } from "@rebasepro/types";
5
+ import { CollectionConfig, Property } from "@rebasepro/types";
6
6
  import { PropertyConfigBadge } from "../../../components/PropertyConfigBadge";
7
7
  import { getFieldConfig } from "../../../components/field_configs";
8
8
  import { Button, IconButton, iconSize, Select, SelectItem, Typography, XIcon } from "@rebasepro/ui";
@@ -19,7 +19,7 @@ export function KanbanConfigSection({
19
19
  }) {
20
20
  const authController = useAuthController();
21
21
  const customizationController = useCustomizationController();
22
- const { values, setFieldValue } = useFormex<EntityCollection>();
22
+ const { values, setFieldValue } = useFormex<CollectionConfig>();
23
23
  const panelRef = useRef<HTMLDivElement>(null);
24
24
  const [columnPropertyDialogOpen, setColumnPropertyDialogOpen] = useState(false);
25
25