@rebasepro/admin 0.8.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 (316) hide show
  1. package/README.md +20 -20
  2. package/dist/{CollectionEditorDialog-BO_aQ-Z4.js → CollectionEditorDialog-B-7uW3iJ.js} +11 -11
  3. package/dist/CollectionEditorDialog-B-7uW3iJ.js.map +1 -0
  4. package/dist/{PropertyEditView-DKzOpMjR.js → PropertyEditView-7KMTcrqi.js} +78 -70
  5. package/dist/PropertyEditView-7KMTcrqi.js.map +1 -0
  6. package/dist/{RouterCollectionsStudioView-BQTIExjA.js → RouterCollectionsStudioView-epqIbZrJ.js} +4 -4
  7. package/dist/{RouterCollectionsStudioView-BQTIExjA.js.map → RouterCollectionsStudioView-epqIbZrJ.js.map} +1 -1
  8. package/dist/collection_editor/_cms_internals.d.ts +3 -3
  9. package/dist/collection_editor/api/generateCollectionApi.d.ts +4 -4
  10. package/dist/collection_editor/extensibility_types.d.ts +3 -3
  11. package/dist/collection_editor/index.d.ts +2 -2
  12. package/dist/collection_editor/pgColumnToProperty.d.ts +3 -3
  13. package/dist/collection_editor/serializable_types.d.ts +7 -7
  14. package/dist/collection_editor/serializable_utils.d.ts +8 -8
  15. package/dist/collection_editor/types/collection_editor_controller.d.ts +5 -5
  16. package/dist/collection_editor/types/collection_inference.d.ts +2 -2
  17. package/dist/collection_editor/types/config_controller.d.ts +7 -7
  18. package/dist/collection_editor/ui/AddKanbanColumnAction.d.ts +2 -2
  19. package/dist/collection_editor/ui/CollectionViewHeaderAction.d.ts +2 -2
  20. package/dist/collection_editor/ui/KanbanSetupAction.d.ts +2 -2
  21. package/dist/collection_editor/ui/PropertyAddColumnComponent.d.ts +2 -2
  22. package/dist/collection_editor/ui/collection_editor/AICollectionGeneratorPopover.d.ts +3 -3
  23. package/dist/collection_editor/ui/collection_editor/CollectionDetailsForm.d.ts +2 -2
  24. package/dist/collection_editor/ui/collection_editor/CollectionEditorDialog.d.ts +4 -4
  25. package/dist/collection_editor/ui/collection_editor/CollectionEditorWelcomeView.d.ts +2 -2
  26. package/dist/collection_editor/ui/collection_editor/CollectionJsonImportDialog.d.ts +2 -2
  27. package/dist/collection_editor/ui/collection_editor/CollectionPropertiesEditorForm.d.ts +4 -4
  28. package/dist/collection_editor/ui/collection_editor/CollectionStudioView.d.ts +2 -2
  29. package/dist/collection_editor/ui/collection_editor/CollectionsStudioView.d.ts +2 -2
  30. package/dist/collection_editor/ui/collection_editor/EntityActionsEditTab.d.ts +2 -2
  31. package/dist/collection_editor/ui/collection_editor/GeneralSettingsForm.d.ts +2 -2
  32. package/dist/collection_editor/ui/collection_editor/GetCodeDialog.d.ts +2 -2
  33. package/dist/collection_editor/ui/collection_editor/PropertyEditView.d.ts +4 -4
  34. package/dist/collection_editor/ui/collection_editor/SubcollectionsEditTab.d.ts +3 -3
  35. package/dist/collection_editor/ui/collection_editor/templates/blog_template.d.ts +2 -2
  36. package/dist/collection_editor/ui/collection_editor/templates/pages_template.d.ts +2 -2
  37. package/dist/collection_editor/ui/collection_editor/templates/products_template.d.ts +2 -2
  38. package/dist/collection_editor/ui/collection_editor/templates/users_template.d.ts +2 -2
  39. package/dist/collection_editor/useLocalCollectionsConfigController.d.ts +2 -2
  40. package/dist/collection_editor/validateCollectionJson.d.ts +2 -2
  41. package/dist/collection_editor_ui.js +4 -4
  42. package/dist/components/CollectionPanel.d.ts +4 -4
  43. package/dist/components/{EntityCollectionTable/EntityCollectionRowActions.d.ts → CollectionTableBinding/CollectionRowActions.d.ts} +3 -3
  44. package/dist/components/CollectionTableBinding/CollectionTableBinding.d.ts +28 -0
  45. package/dist/components/{EntityCollectionTable/EntityCollectionTableProps.d.ts → CollectionTableBinding/CollectionTableBindingProps.d.ts} +1 -1
  46. package/dist/components/{EntityCollectionTable → CollectionTableBinding}/fields/TableMultipleRelationField.d.ts +2 -2
  47. package/dist/components/{EntityCollectionTable → CollectionTableBinding}/fields/TableReferenceField.d.ts +2 -2
  48. package/dist/components/{EntityCollectionTable → CollectionTableBinding}/fields/TableRelationField.d.ts +2 -2
  49. package/dist/components/CollectionTableBinding/index.d.ts +6 -0
  50. package/dist/components/{EntityCollectionTable → CollectionTableBinding}/internal/common.d.ts +2 -2
  51. package/dist/components/{EntityCollectionTable → CollectionTableBinding}/internal/popup_field/PopupFormField.d.ts +2 -2
  52. package/dist/components/{EntityCollectionView/EntityBoardCard.d.ts → CollectionViewBinding/BoardCardBinding.d.ts} +8 -8
  53. package/dist/components/{EntityCollectionView/EntityCollectionBoardView.d.ts → CollectionViewBinding/CollectionBoardViewBinding.d.ts} +4 -4
  54. package/dist/components/{EntityCollectionView/EntityCollectionCardView.d.ts → CollectionViewBinding/CollectionCardViewBinding.d.ts} +5 -5
  55. package/dist/components/{EntityCollectionView/EntityCollectionListView.d.ts → CollectionViewBinding/CollectionListViewBinding.d.ts} +4 -4
  56. package/dist/components/{EntityCollectionView/EntityCollectionViewActions.d.ts → CollectionViewBinding/CollectionViewActions.d.ts} +4 -4
  57. package/dist/components/{EntityCollectionView/EntityCollectionView.d.ts → CollectionViewBinding/CollectionViewBinding.d.ts} +4 -4
  58. package/dist/components/{EntityCollectionView/EntityCollectionViewStartActions.d.ts → CollectionViewBinding/CollectionViewStartActions.d.ts} +4 -4
  59. package/dist/components/CollectionViewBinding/EntityCardBinding.d.ts +21 -0
  60. package/dist/components/{EntityCollectionView → CollectionViewBinding}/SplitListView.d.ts +3 -3
  61. package/dist/components/{EntityCollectionView → CollectionViewBinding}/hooks/useCollectionInlineEditor.d.ts +2 -2
  62. package/dist/components/{EntityCollectionView → CollectionViewBinding}/hooks/useKanbanDragAndDrop.d.ts +2 -2
  63. package/dist/components/{EntityCollectionView → CollectionViewBinding}/useBoardDataController.d.ts +2 -2
  64. package/dist/components/{EntityCollectionView/useEntityPreviewSlots.d.ts → CollectionViewBinding/usePreviewSlots.d.ts} +5 -5
  65. package/dist/components/DeleteEntityDialog.d.ts +4 -4
  66. package/dist/components/{EntityDetailView.d.ts → DetailViewBinding.d.ts} +5 -5
  67. package/dist/components/EditFormActions.d.ts +3 -0
  68. package/dist/components/{EntityEditView.d.ts → EditViewBinding.d.ts} +9 -9
  69. package/dist/components/{EntityPreview.d.ts → EntityPreviewBinding.d.ts} +13 -13
  70. package/dist/components/EntityViewBinding.d.ts +13 -0
  71. package/dist/components/{EntityJsonPreview.d.ts → JsonPreviewBinding.d.ts} +1 -1
  72. package/dist/components/RebaseCMS.d.ts +1 -1
  73. package/dist/components/RebaseNavigation.d.ts +1 -1
  74. package/dist/components/ReferenceTable/{EntitySelectionTable.d.ts → SelectionTableBinding.d.ts} +5 -5
  75. package/dist/components/SelectableTable/SelectableTable.d.ts +5 -5
  76. package/dist/components/SelectableTable/SelectableTableContext.d.ts +3 -3
  77. package/dist/components/SelectableTable/SelectionStore.d.ts +2 -2
  78. package/dist/components/SelectableTable/filters/BooleanFilterField.d.ts +6 -1
  79. package/dist/components/SelectableTable/filters/DateTimeFilterField.d.ts +7 -1
  80. package/dist/components/SelectableTable/filters/FilterFieldBinding.d.ts +40 -0
  81. package/dist/components/SelectableTable/filters/ReferenceFilterField.d.ts +7 -1
  82. package/dist/components/SelectableTable/filters/RelationFilterField.d.ts +7 -1
  83. package/dist/components/SelectableTable/filters/StringNumberFilterField.d.ts +7 -1
  84. package/dist/components/SideDialogs.d.ts +1 -1
  85. package/dist/components/SidePanelBinding.d.ts +11 -0
  86. package/dist/components/{SideEntityProvider.d.ts → SidePanelProvider.d.ts} +7 -7
  87. package/dist/components/history/EntityHistoryEntry.d.ts +2 -2
  88. package/dist/components/history/LastEditedByIndicator.d.ts +2 -2
  89. package/dist/components/index.d.ts +14 -13
  90. package/dist/contexts/SidePanelControllerContext.d.ts +3 -0
  91. package/dist/data_export/export/ExportCollectionAction.d.ts +3 -3
  92. package/dist/data_import/components/ImportSaveInProgress.d.ts +2 -2
  93. package/dist/form/EntityForm.d.ts +1 -1
  94. package/dist/form/PropertyFieldBinding.d.ts +1 -1
  95. package/dist/form/form_utils.d.ts +2 -2
  96. package/dist/{history-B3cqBzEV.js → history-7X5bON_n.js} +4 -4
  97. package/dist/history-7X5bON_n.js.map +1 -0
  98. package/dist/hooks/index.d.ts +4 -4
  99. package/dist/hooks/navigation/contexts/CollectionRegistryContext.d.ts +2 -2
  100. package/dist/hooks/navigation/useBuildNavigationStateController.d.ts +5 -5
  101. package/dist/hooks/navigation/useNavigationResolution.d.ts +4 -4
  102. package/dist/hooks/navigation/useResolvedCollections.d.ts +7 -7
  103. package/dist/hooks/navigation/useTopLevelNavigation.d.ts +2 -2
  104. package/dist/hooks/navigation/utils.d.ts +5 -5
  105. package/dist/hooks/useBuildSidePanel.d.ts +6 -0
  106. package/dist/hooks/useCMSContext.d.ts +2 -2
  107. package/dist/hooks/{useEntityHistory.d.ts → useHistory.d.ts} +1 -1
  108. package/dist/hooks/useResolvedNavigationFrom.d.ts +3 -3
  109. package/dist/hooks/{useEntitySelectionDialog.d.ts → useSelectionDialog.d.ts} +2 -2
  110. package/dist/hooks/useSideDialogsController.d.ts +1 -1
  111. package/dist/hooks/useSidePanel.d.ts +11 -0
  112. package/dist/index.d.ts +2 -2
  113. package/dist/index.js +2 -2
  114. package/dist/{src-cxV1ODRG.js → src-sUZfe29F.js} +737 -647
  115. package/dist/src-sUZfe29F.js.map +1 -0
  116. package/dist/types/components/EntityFormActionsProps.d.ts +2 -2
  117. package/dist/types/components/EntityFormProps.d.ts +3 -3
  118. package/dist/types/fields.d.ts +2 -2
  119. package/dist/util/dataControllerAdapter.d.ts +2 -5
  120. package/dist/util/navigation_utils.d.ts +6 -6
  121. package/dist/util/previews.d.ts +3 -3
  122. package/dist/util/property_utils.d.ts +2 -2
  123. package/dist/util/{entity_view_constants.d.ts → view_constants.d.ts} +1 -1
  124. package/package.json +8 -8
  125. package/src/collection_editor/ConfigControllerProvider.tsx +10 -10
  126. package/src/collection_editor/_cms_internals.ts +3 -3
  127. package/src/collection_editor/api/generateCollectionApi.ts +4 -4
  128. package/src/collection_editor/extensibility_types.ts +3 -3
  129. package/src/collection_editor/index.ts +3 -3
  130. package/src/collection_editor/pgColumnToProperty.ts +3 -3
  131. package/src/collection_editor/serializable_types.ts +8 -8
  132. package/src/collection_editor/serializable_utils.ts +17 -17
  133. package/src/collection_editor/types/collection_editor_controller.tsx +5 -5
  134. package/src/collection_editor/types/collection_inference.ts +2 -2
  135. package/src/collection_editor/types/config_controller.tsx +7 -7
  136. package/src/collection_editor/ui/AddKanbanColumnAction.tsx +2 -2
  137. package/src/collection_editor/ui/CollectionViewHeaderAction.tsx +2 -2
  138. package/src/collection_editor/ui/EditorCollectionAction.tsx +2 -2
  139. package/src/collection_editor/ui/EditorCollectionActionStart.tsx +2 -2
  140. package/src/collection_editor/ui/EditorEntityAction.tsx +2 -2
  141. package/src/collection_editor/ui/KanbanSetupAction.tsx +2 -2
  142. package/src/collection_editor/ui/PropertyAddColumnComponent.tsx +2 -2
  143. package/src/collection_editor/ui/collection_editor/AICollectionGeneratorPopover.tsx +5 -5
  144. package/src/collection_editor/ui/collection_editor/CollectionDetailsForm.tsx +3 -3
  145. package/src/collection_editor/ui/collection_editor/CollectionEditorDialog.tsx +26 -26
  146. package/src/collection_editor/ui/collection_editor/CollectionEditorWelcomeView.tsx +3 -3
  147. package/src/collection_editor/ui/collection_editor/CollectionJsonImportDialog.tsx +2 -2
  148. package/src/collection_editor/ui/collection_editor/CollectionPropertiesEditorForm.tsx +8 -8
  149. package/src/collection_editor/ui/collection_editor/CollectionRLSTab.tsx +2 -2
  150. package/src/collection_editor/ui/collection_editor/CollectionRelationsTab.tsx +2 -2
  151. package/src/collection_editor/ui/collection_editor/CollectionStudioView.tsx +2 -2
  152. package/src/collection_editor/ui/collection_editor/CollectionsStudioView.tsx +2 -2
  153. package/src/collection_editor/ui/collection_editor/DisplaySettingsForm.tsx +2 -2
  154. package/src/collection_editor/ui/collection_editor/EntityActionsEditTab.tsx +3 -3
  155. package/src/collection_editor/ui/collection_editor/GeneralSettingsForm.tsx +5 -5
  156. package/src/collection_editor/ui/collection_editor/GetCodeDialog.tsx +4 -4
  157. package/src/collection_editor/ui/collection_editor/KanbanConfigSection.tsx +2 -2
  158. package/src/collection_editor/ui/collection_editor/PropertyEditView.tsx +7 -7
  159. package/src/collection_editor/ui/collection_editor/PropertyFieldPreview.tsx +45 -36
  160. package/src/collection_editor/ui/collection_editor/PropertyTree.tsx +1 -1
  161. package/src/collection_editor/ui/collection_editor/SubcollectionsEditTab.tsx +5 -5
  162. package/src/collection_editor/ui/collection_editor/import/CollectionEditorImportDataPreview.tsx +3 -3
  163. package/src/collection_editor/ui/collection_editor/import/CollectionEditorImportMapping.tsx +2 -2
  164. package/src/collection_editor/ui/collection_editor/properties/RelationPropertyField.tsx +2 -2
  165. package/src/collection_editor/ui/collection_editor/templates/blog_template.ts +2 -2
  166. package/src/collection_editor/ui/collection_editor/templates/pages_template.ts +2 -2
  167. package/src/collection_editor/ui/collection_editor/templates/products_template.ts +2 -2
  168. package/src/collection_editor/ui/collection_editor/templates/users_template.ts +2 -2
  169. package/src/collection_editor/useJsonCollectionsConfigController.tsx +13 -13
  170. package/src/collection_editor/useLocalCollectionsConfigController.tsx +4 -4
  171. package/src/collection_editor/validateCollectionJson.ts +3 -3
  172. package/src/components/CollectionPanel.tsx +14 -17
  173. package/src/components/{EntityCollectionTable/EntityCollectionRowActions.tsx → CollectionTableBinding/CollectionRowActions.tsx} +6 -6
  174. package/src/components/{EntityCollectionTable/EntityCollectionTable.tsx → CollectionTableBinding/CollectionTableBinding.tsx} +10 -10
  175. package/src/components/{EntityCollectionTable/EntityCollectionTableProps.tsx → CollectionTableBinding/CollectionTableBindingProps.tsx} +1 -1
  176. package/src/components/{EntityCollectionTable → CollectionTableBinding}/fields/TableMultipleRelationField.tsx +5 -5
  177. package/src/components/{EntityCollectionTable → CollectionTableBinding}/fields/TableReferenceField.tsx +10 -10
  178. package/src/components/{EntityCollectionTable → CollectionTableBinding}/fields/TableRelationField.tsx +5 -5
  179. package/src/components/CollectionTableBinding/index.tsx +14 -0
  180. package/src/components/{EntityCollectionTable → CollectionTableBinding}/internal/common.tsx +2 -2
  181. package/src/components/{EntityCollectionTable → CollectionTableBinding}/internal/popup_field/PopupFormField.tsx +2 -2
  182. package/src/components/{EntityCollectionView/EntityBoardCard.tsx → CollectionViewBinding/BoardCardBinding.tsx} +15 -15
  183. package/src/components/{EntityCollectionView/EntityCollectionBoardView.tsx → CollectionViewBinding/CollectionBoardViewBinding.tsx} +14 -13
  184. package/src/components/{EntityCollectionView/EntityCollectionCardView.tsx → CollectionViewBinding/CollectionCardViewBinding.tsx} +8 -8
  185. package/src/components/{EntityCollectionView/EntityCollectionListView.tsx → CollectionViewBinding/CollectionListViewBinding.tsx} +12 -12
  186. package/src/components/{EntityCollectionView/EntityCollectionViewActions.tsx → CollectionViewBinding/CollectionViewActions.tsx} +5 -5
  187. package/src/components/{EntityCollectionView/EntityCollectionView.tsx → CollectionViewBinding/CollectionViewBinding.tsx} +106 -91
  188. package/src/components/{EntityCollectionView/EntityCollectionViewStartActions.tsx → CollectionViewBinding/CollectionViewStartActions.tsx} +5 -5
  189. package/src/components/{EntityCollectionView/EntityCard.tsx → CollectionViewBinding/EntityCardBinding.tsx} +9 -9
  190. package/src/components/{EntityCollectionView → CollectionViewBinding}/FiltersDialog.tsx +31 -72
  191. package/src/components/{EntityCollectionView → CollectionViewBinding}/SplitListView.tsx +9 -9
  192. package/src/components/{EntityCollectionView → CollectionViewBinding}/hooks/useCollectionInlineEditor.ts +5 -5
  193. package/src/components/{EntityCollectionView → CollectionViewBinding}/hooks/useKanbanDragAndDrop.ts +4 -4
  194. package/src/components/{EntityCollectionView → CollectionViewBinding}/useBoardDataController.tsx +16 -10
  195. package/src/components/{EntityCollectionView/useEntityPreviewSlots.ts → CollectionViewBinding/usePreviewSlots.ts} +8 -8
  196. package/src/components/DeleteEntityDialog.tsx +6 -6
  197. package/src/components/{EntityDetailView.tsx → DetailViewBinding.tsx} +26 -29
  198. package/src/components/{EntityEditViewFormActions.tsx → EditFormActions.tsx} +12 -12
  199. package/src/components/{EntityEditView.tsx → EditViewBinding.tsx} +29 -32
  200. package/src/components/{EntityPreview.tsx → EntityPreviewBinding.tsx} +27 -27
  201. package/src/components/{EntityView.tsx → EntityViewBinding.tsx} +5 -5
  202. package/src/components/HomePage/NavigationCardBinding.tsx +1 -1
  203. package/src/components/{EntityJsonPreview.tsx → JsonPreviewBinding.tsx} +1 -1
  204. package/src/components/RebaseCMS.tsx +4 -3
  205. package/src/components/RebaseNavigation.tsx +17 -8
  206. package/src/components/ReferenceTable/{EntitySelectionTable.tsx → SelectionTableBinding.tsx} +22 -19
  207. package/src/components/ReferenceWidget.tsx +4 -4
  208. package/src/components/RelationSelector.tsx +14 -12
  209. package/src/components/SelectableTable/SelectableTable.tsx +34 -87
  210. package/src/components/SelectableTable/SelectableTableContext.tsx +3 -3
  211. package/src/components/SelectableTable/SelectionStore.ts +4 -4
  212. package/src/components/SelectableTable/filters/BooleanFilterField.tsx +9 -1
  213. package/src/components/SelectableTable/filters/DateTimeFilterField.tsx +33 -12
  214. package/src/components/SelectableTable/filters/FilterFieldBinding.tsx +187 -0
  215. package/src/components/SelectableTable/filters/ReferenceFilterField.tsx +21 -7
  216. package/src/components/SelectableTable/filters/RelationFilterField.tsx +17 -3
  217. package/src/components/SelectableTable/filters/StringNumberFilterField.tsx +66 -12
  218. package/src/components/SideDialogs.tsx +3 -3
  219. package/src/components/{EntitySidePanel.tsx → SidePanelBinding.tsx} +19 -19
  220. package/src/components/{SideEntityProvider.tsx → SidePanelProvider.tsx} +16 -16
  221. package/src/components/common/default_entity_actions.tsx +9 -9
  222. package/src/components/history/EntityHistoryEntry.tsx +2 -2
  223. package/src/components/history/EntityHistoryView.tsx +3 -3
  224. package/src/components/history/LastEditedByIndicator.tsx +2 -2
  225. package/src/components/index.ts +15 -14
  226. package/src/contexts/SidePanelControllerContext.tsx +5 -0
  227. package/src/data_export/export/ExportCollectionAction.tsx +4 -4
  228. package/src/data_import/components/ImportSaveInProgress.tsx +3 -3
  229. package/src/data_import/import/ImportCollectionAction.tsx +4 -4
  230. package/src/data_import/utils/data.ts +2 -2
  231. package/src/form/EntityForm.tsx +2 -2
  232. package/src/form/EntityFormActions.tsx +3 -3
  233. package/src/form/EntityFormBinding.tsx +6 -6
  234. package/src/form/PropertyFieldBinding.tsx +4 -4
  235. package/src/form/field_bindings/ArrayOfReferencesFieldBinding.tsx +4 -4
  236. package/src/form/field_bindings/KeyValueFieldBinding.tsx +19 -19
  237. package/src/form/field_bindings/MultipleRelationFieldBinding.tsx +2 -2
  238. package/src/form/field_bindings/ReferenceFieldBinding.tsx +5 -5
  239. package/src/form/field_bindings/RelationFieldBinding.tsx +3 -3
  240. package/src/form/form_utils.ts +2 -2
  241. package/src/hooks/index.ts +4 -4
  242. package/src/hooks/navigation/contexts/CollectionRegistryContext.tsx +2 -2
  243. package/src/hooks/navigation/useBuildCollectionRegistryController.tsx +11 -11
  244. package/src/hooks/navigation/useBuildNavigationStateController.tsx +5 -5
  245. package/src/hooks/navigation/useNavigationResolution.ts +10 -10
  246. package/src/hooks/navigation/useResolvedCollections.ts +8 -8
  247. package/src/hooks/navigation/useTopLevelNavigation.ts +2 -2
  248. package/src/hooks/navigation/utils.ts +5 -5
  249. package/src/hooks/{useBuildSideEntityController.tsx → useBuildSidePanel.tsx} +28 -28
  250. package/src/hooks/useCMSContext.tsx +6 -6
  251. package/src/hooks/{useEntityHistory.ts → useHistory.ts} +1 -1
  252. package/src/hooks/useResolvedNavigationFrom.tsx +8 -5
  253. package/src/hooks/{useEntitySelectionDialog.tsx → useSelectionDialog.tsx} +7 -7
  254. package/src/hooks/useSideDialogsController.tsx +1 -1
  255. package/src/hooks/useSidePanel.tsx +13 -0
  256. package/src/index.ts +12 -12
  257. package/src/preview/components/ReferencePreview.tsx +10 -10
  258. package/src/preview/components/RelationPreview.tsx +13 -12
  259. package/src/routes/RebaseRoute.tsx +10 -10
  260. package/src/types/components/EntityFormActionsProps.tsx +2 -2
  261. package/src/types/components/EntityFormProps.tsx +3 -3
  262. package/src/types/fields.tsx +2 -2
  263. package/src/util/dataControllerAdapter.ts +9 -15
  264. package/src/util/navigation_utils.ts +7 -7
  265. package/src/util/previews.ts +3 -3
  266. package/src/util/property_utils.tsx +2 -2
  267. package/src/util/{entity_view_constants.ts → view_constants.ts} +1 -1
  268. package/dist/CollectionEditorDialog-BO_aQ-Z4.js.map +0 -1
  269. package/dist/PropertyEditView-DKzOpMjR.js.map +0 -1
  270. package/dist/components/EntityCollectionTable/EntityCollectionTable.d.ts +0 -28
  271. package/dist/components/EntityCollectionTable/index.d.ts +0 -6
  272. package/dist/components/EntityCollectionView/EntityCard.d.ts +0 -21
  273. package/dist/components/EntityEditViewFormActions.d.ts +0 -3
  274. package/dist/components/EntitySidePanel.d.ts +0 -11
  275. package/dist/components/EntityView.d.ts +0 -13
  276. package/dist/contexts/SideEntityControllerContext.d.ts +0 -3
  277. package/dist/history-B3cqBzEV.js.map +0 -1
  278. package/dist/hooks/useBuildSideEntityController.d.ts +0 -6
  279. package/dist/hooks/useSideEntityController.d.ts +0 -11
  280. package/dist/src-cxV1ODRG.js.map +0 -1
  281. package/src/components/EntityCollectionTable/index.tsx +0 -14
  282. package/src/contexts/SideEntityControllerContext.tsx +0 -5
  283. package/src/hooks/useSideEntityController.tsx +0 -13
  284. /package/dist/components/{EntityCollectionTable → CollectionTableBinding}/PropertyTableCell.d.ts +0 -0
  285. /package/dist/components/{EntityCollectionTable → CollectionTableBinding}/column_utils.d.ts +0 -0
  286. /package/dist/components/{EntityCollectionTable → CollectionTableBinding}/fields/TableRelationSelectorField.d.ts +0 -0
  287. /package/dist/components/{EntityCollectionTable → CollectionTableBinding}/fields/TableStorageUpload.d.ts +0 -0
  288. /package/dist/components/{EntityCollectionTable → CollectionTableBinding}/fields/VirtualTableSelect.d.ts +0 -0
  289. /package/dist/components/{EntityCollectionTable → CollectionTableBinding}/fields/VirtualTableUserSelect.d.ts +0 -0
  290. /package/dist/components/{EntityCollectionTable → CollectionTableBinding}/internal/CollectionTableToolbar.d.ts +0 -0
  291. /package/dist/components/{EntityCollectionTable → CollectionTableBinding}/internal/EntityTableCell.d.ts +0 -0
  292. /package/dist/components/{EntityCollectionTable → CollectionTableBinding}/internal/EntityTableCellActions.d.ts +0 -0
  293. /package/dist/components/{EntityCollectionTable → CollectionTableBinding}/internal/popup_field/useDraggable.d.ts +0 -0
  294. /package/dist/components/{EntityCollectionTable → CollectionTableBinding}/internal/popup_field/useWindowSize.d.ts +0 -0
  295. /package/dist/components/{EntityCollectionTable → CollectionTableBinding}/table_bindings.d.ts +0 -0
  296. /package/dist/components/{EntityCollectionView → CollectionViewBinding}/FilterPresetsButton.d.ts +0 -0
  297. /package/dist/components/{EntityCollectionView → CollectionViewBinding}/FiltersDialog.d.ts +0 -0
  298. /package/dist/components/{EntityCollectionView → CollectionViewBinding}/ViewModeToggle.d.ts +0 -0
  299. /package/dist/components/{EntityCollectionView → CollectionViewBinding}/useSelectionController.d.ts +0 -0
  300. /package/dist/components/{EntityCollectionView → CollectionViewBinding}/utils.d.ts +0 -0
  301. /package/src/components/{EntityCollectionTable → CollectionTableBinding}/PropertyTableCell.tsx +0 -0
  302. /package/src/components/{EntityCollectionTable → CollectionTableBinding}/column_utils.tsx +0 -0
  303. /package/src/components/{EntityCollectionTable → CollectionTableBinding}/fields/TableRelationSelectorField.tsx +0 -0
  304. /package/src/components/{EntityCollectionTable → CollectionTableBinding}/fields/TableStorageUpload.tsx +0 -0
  305. /package/src/components/{EntityCollectionTable → CollectionTableBinding}/fields/VirtualTableSelect.tsx +0 -0
  306. /package/src/components/{EntityCollectionTable → CollectionTableBinding}/fields/VirtualTableUserSelect.tsx +0 -0
  307. /package/src/components/{EntityCollectionTable → CollectionTableBinding}/internal/CollectionTableToolbar.tsx +0 -0
  308. /package/src/components/{EntityCollectionTable → CollectionTableBinding}/internal/EntityTableCell.tsx +0 -0
  309. /package/src/components/{EntityCollectionTable → CollectionTableBinding}/internal/EntityTableCellActions.tsx +0 -0
  310. /package/src/components/{EntityCollectionTable → CollectionTableBinding}/internal/popup_field/useDraggable.tsx +0 -0
  311. /package/src/components/{EntityCollectionTable → CollectionTableBinding}/internal/popup_field/useWindowSize.tsx +0 -0
  312. /package/src/components/{EntityCollectionTable → CollectionTableBinding}/table_bindings.tsx +0 -0
  313. /package/src/components/{EntityCollectionView → CollectionViewBinding}/FilterPresetsButton.tsx +0 -0
  314. /package/src/components/{EntityCollectionView → CollectionViewBinding}/ViewModeToggle.tsx +0 -0
  315. /package/src/components/{EntityCollectionView → CollectionViewBinding}/useSelectionController.tsx +0 -0
  316. /package/src/components/{EntityCollectionView → CollectionViewBinding}/utils.ts +0 -0
@@ -1,4 +1,4 @@
1
- import type { EntityCollection } from "@rebasepro/types";
1
+ import type { CollectionConfig } from "@rebasepro/types";
2
2
  import React, { useMemo } from "react";
3
3
  import { CollectionSize, Entity } from "@rebasepro/types";
4
4
  import {
@@ -15,11 +15,11 @@ import {
15
15
  } from "@rebasepro/core";
16
16
  import { useAnalyticsController } from "@rebasepro/core";
17
17
  import { IconForView } from "@rebasepro/core";
18
- import { useCollectionSlotKeys, resolveEntitySlots } from "./useEntityPreviewSlots";
18
+ import { useCollectionSlotKeys, resolveEntitySlots } from "./usePreviewSlots";
19
19
 
20
- export type EntityCardProps<M extends Record<string, unknown> = Record<string, unknown>> = {
20
+ export type EntityCardBindingProps<M extends Record<string, unknown> = Record<string, unknown>> = {
21
21
  entity: Entity<M>;
22
- collection: EntityCollection<M>;
22
+ collection: CollectionConfig<M>;
23
23
  onClick?: (entity: Entity<M>) => void;
24
24
  selected?: boolean;
25
25
  highlighted?: boolean;
@@ -32,10 +32,10 @@ export type EntityCardProps<M extends Record<string, unknown> = Record<string, u
32
32
  };
33
33
 
34
34
  /**
35
- * Card component for displaying an entity in a grid view.
35
+ * Card component for displaying a entity in a grid view.
36
36
  * Shows thumbnail, title, and preview properties via the shared slot system.
37
37
  */
38
- export function EntityCard<M extends Record<string, unknown> = Record<string, unknown>>({
38
+ export function EntityCardBinding<M extends Record<string, unknown> = Record<string, unknown>>({
39
39
  entity,
40
40
  collection,
41
41
  onClick,
@@ -44,13 +44,13 @@ export function EntityCard<M extends Record<string, unknown> = Record<string, un
44
44
  onSelectionChange,
45
45
  selectionEnabled,
46
46
  size = "m"
47
- }: EntityCardProps<M>) {
47
+ }: EntityCardBindingProps<M>) {
48
48
  const authController = useAuthController();
49
49
  const analyticsController = useAnalyticsController();
50
50
  const customizationController = useCustomizationController();
51
51
 
52
52
  const slotKeys = useCollectionSlotKeys(
53
- collection as EntityCollection<Record<string, unknown>>,
53
+ collection as CollectionConfig<Record<string, unknown>>,
54
54
  authController,
55
55
  customizationController.propertyConfigs
56
56
  );
@@ -58,7 +58,7 @@ export function EntityCard<M extends Record<string, unknown> = Record<string, un
58
58
  const slots = useMemo(
59
59
  () => resolveEntitySlots(
60
60
  entity as Entity<Record<string, unknown>>,
61
- collection as EntityCollection<Record<string, unknown>>,
61
+ collection as CollectionConfig<Record<string, unknown>>,
62
62
  slotKeys
63
63
  ),
64
64
  [entity, collection, slotKeys]
@@ -4,12 +4,9 @@ import React, { useCallback, useMemo, useState } from "react";
4
4
  import { FilterValues, WhereFilterOp } from "@rebasepro/types";
5
5
  import { Button, cls, defaultBorderMixin, Dialog, DialogActions, DialogContent, DialogTitle, Typography } from "@rebasepro/ui";
6
6
  import { FilterIcon, VirtualTableWhereFilterOp } from "@rebasepro/ui";
7
- import { StringNumberFilterField } from "../SelectableTable/filters/StringNumberFilterField";
8
- import { BooleanFilterField } from "../SelectableTable/filters/BooleanFilterField";
9
- import { DateTimeFilterField } from "../SelectableTable/filters/DateTimeFilterField";
10
- import { ReferenceFilterField } from "../SelectableTable/filters/ReferenceFilterField";
11
- import { enumToObjectEntries } from "@rebasepro/common";
12
- import { useTranslation } from "@rebasepro/core";
7
+ import { resolveFilterOperators } from "@rebasepro/common";
8
+ import { useCollectionScope, useTranslation } from "@rebasepro/core";
9
+ import { FilterFieldBinding } from "../SelectableTable/filters/FilterFieldBinding";
13
10
 
14
11
  export interface FiltersDialogProps {
15
12
  open: boolean;
@@ -33,6 +30,9 @@ export function FiltersDialog({
33
30
  fixedFilter
34
31
  }: FiltersDialogProps) {
35
32
  const { t } = useTranslation();
33
+ // Engine of the collection this dialog filters — read from the
34
+ // surrounding CollectionScopeProvider mounted by the collection view.
35
+ const engine = useCollectionScope()?.engine;
36
36
  // Local state for filters being edited
37
37
  const [localFilters, setLocalFilters] = useState<FilterValues<any>>(filterValues ?? {});
38
38
 
@@ -52,12 +52,17 @@ export function FiltersDialog({
52
52
  if (!property) return false;
53
53
  // Force filter properties should not be editable
54
54
  if (fixedFilter && key in fixedFilter) return false;
55
- // Check if property type is filterable
56
- const baseProperty = property.type === "array" ? property.of : property;
57
- if (!baseProperty || Array.isArray(baseProperty)) return false;
58
- return ["string", "number", "boolean", "date", "reference"].includes(baseProperty.type);
55
+ const isArray = property.type === "array";
56
+ const ofProp = isArray && "of" in property ? property.of : undefined;
57
+ const baseProperty = isArray ? (Array.isArray(ofProp) ? ofProp[0] : ofProp) as Property | undefined : property;
58
+ if (!baseProperty) return false;
59
+ // A property is filterable when it has a custom filter field, or
60
+ // when at least one operator survives the engine ∩ type ∩
61
+ // property-narrowing resolution.
62
+ if (baseProperty.ui?.Filter) return true;
63
+ return resolveFilterOperators({ property: baseProperty, isArray, engine }).length > 0;
59
64
  });
60
- }, [properties, fixedFilter]);
65
+ }, [properties, fixedFilter, engine]);
61
66
 
62
67
  const handleFilterChange = useCallback((propertyKey: string, value?: [VirtualTableWhereFilterOp, any]) => {
63
68
  setLocalFilters(prev => {
@@ -94,67 +99,21 @@ export function FiltersDialog({
94
99
  const activeFilterCount = Object.keys(localFilters).length;
95
100
 
96
101
  const renderFilterField = useCallback((propertyKey: string, property: Property) => {
97
- const isArray = property.type === "array";
98
- const ofProp = isArray && "of" in property ? property.of : undefined;
99
- const baseProperty: Property | undefined = isArray ? (Array.isArray(ofProp) ? ofProp[0] : ofProp) as Property | undefined : property;
100
-
101
- if (!baseProperty) return null;
102
-
103
- const filterValue = localFilters[propertyKey] as [VirtualTableWhereFilterOp, any] | undefined;
104
- const setValue = (value?: [VirtualTableWhereFilterOp, any]) => handleFilterChange(propertyKey, value);
105
-
106
- if (baseProperty.type === "reference") {
107
- return (
108
- <ReferenceFilterField
109
- value={filterValue}
110
- setValue={setValue}
111
- name={propertyKey}
112
- isArray={isArray}
113
- path={baseProperty.path}
114
- title={property.name}
115
- includeId={baseProperty.includeId}
116
- previewProperties={baseProperty.ui?.previewProperties}
117
- hidden={hiddenFields[propertyKey] ?? false}
118
- setHidden={(hidden) => setHiddenForField(propertyKey, hidden)}
119
- />
120
- );
121
- } else if (baseProperty.type === "number" || baseProperty.type === "string") {
122
- const enumValues = baseProperty.enum ? enumToObjectEntries(baseProperty.enum) : undefined;
123
- return (
124
- <StringNumberFilterField
125
- value={filterValue}
126
- setValue={setValue}
127
- name={propertyKey}
128
- type={baseProperty.type}
129
- isArray={isArray}
130
- enumValues={enumValues}
131
- title={property.name}
132
- />
133
- );
134
- } else if (baseProperty.type === "boolean") {
135
- return (
136
- <BooleanFilterField
137
- value={filterValue}
138
- setValue={setValue}
139
- name={propertyKey}
140
- title={property.name}
141
- />
142
- );
143
- } else if (baseProperty.type === "date") {
144
- return (
145
- <DateTimeFilterField
146
- value={filterValue}
147
- setValue={setValue}
148
- name={propertyKey}
149
- mode={baseProperty.mode}
150
- isArray={isArray}
151
- title={property.name}
152
- />
153
- );
154
- }
155
-
156
- return null;
157
- }, [localFilters, handleFilterChange, hiddenFields, setHiddenForField]);
102
+ const filterValue = localFilters[propertyKey] as [WhereFilterOp, any] | undefined;
103
+ const setValue = (value?: [WhereFilterOp, any]) => handleFilterChange(propertyKey, value as [VirtualTableWhereFilterOp, any] | undefined);
104
+
105
+ return (
106
+ <FilterFieldBinding
107
+ propertyKey={propertyKey}
108
+ property={property}
109
+ engine={engine}
110
+ value={filterValue}
111
+ setValue={setValue}
112
+ hidden={hiddenFields[propertyKey] ?? false}
113
+ setHidden={(hidden) => setHiddenForField(propertyKey, hidden)}
114
+ />
115
+ );
116
+ }, [localFilters, handleFilterChange, hiddenFields, setHiddenForField, engine]);
158
117
 
159
118
  return (
160
119
  <Dialog
@@ -1,8 +1,8 @@
1
- import type { EntityCollection } from "@rebasepro/types";
1
+ import type { CollectionConfig } from "@rebasepro/types";
2
2
  import React, { useCallback, useEffect, useMemo, useRef, useState } from "react";
3
3
  import { CollectionSize, Entity, EntityTableController, SelectionController } from "@rebasepro/types";
4
- import { EntityEditView } from "../EntityEditView";
5
- import { EntityDetailView } from "../EntityDetailView";
4
+ import { EditViewBinding } from "../EditViewBinding";
5
+ import { DetailViewBinding } from "../DetailViewBinding";
6
6
  import {
7
7
  cls,
8
8
  defaultBorderMixin,
@@ -15,7 +15,7 @@ import { useUrlController } from "../../index";
15
15
  import { ErrorBoundary } from "@rebasepro/ui";
16
16
 
17
17
  export type SplitListViewProps<M extends Record<string, unknown> = Record<string, unknown>> = {
18
- collection: EntityCollection<M>;
18
+ collection: CollectionConfig<M>;
19
19
  tableController: EntityTableController<M>;
20
20
  onEntityClick?: (entity: Entity<M>) => void;
21
21
  onNewClick?: () => void;
@@ -84,7 +84,7 @@ function savePanelSize(path: string, size: number) {
84
84
  * State management:
85
85
  * - The selected entity is driven by the URL path (e.g. /c/authors/14).
86
86
  * `selectedEntityId` comes from props via RebaseRoute, NOT from internal state.
87
- * - Clicking an entity navigates to /c/authors/{id} via the standard onEntityClick handler.
87
+ * - Clicking a entity navigates to /c/authors/{id} via the standard onEntityClick handler.
88
88
  * - Closing the detail navigates back to /c/authors.
89
89
  */
90
90
  export function SplitListView<M extends Record<string, unknown> = Record<string, unknown>>({
@@ -292,10 +292,10 @@ export function SplitListView<M extends Record<string, unknown> = Record<string,
292
292
  >
293
293
  <ErrorBoundary>
294
294
  {collection.defaultEntityAction === "view" && !isEditMode
295
- ? <EntityDetailView
295
+ ? <DetailViewBinding
296
296
  key={String(renderedEntityId)}
297
297
  path={path}
298
- collection={collection as EntityCollection<Record<string, unknown>>}
298
+ collection={collection as CollectionConfig<Record<string, unknown>>}
299
299
  entityId={renderedEntityId}
300
300
  parentCollectionSlugs={usedParentCollectionIds}
301
301
  parentEntityIds={usedParentEntityIds}
@@ -323,10 +323,10 @@ export function SplitListView<M extends Record<string, unknown> = Record<string,
323
323
  navigate(entityUrl);
324
324
  }}
325
325
  />
326
- : <EntityEditView
326
+ : <EditViewBinding
327
327
  key={String(renderedEntityId)}
328
328
  path={path}
329
- collection={collection as EntityCollection<Record<string, unknown>>}
329
+ collection={collection as CollectionConfig<Record<string, unknown>>}
330
330
  entityId={renderedEntityId}
331
331
  parentCollectionSlugs={usedParentCollectionIds}
332
332
  parentEntityIds={usedParentEntityIds}
@@ -1,11 +1,11 @@
1
1
  import { useCallback, useMemo } from "react";
2
2
  import { setIn } from "@rebasepro/formex";
3
- import { EntityCollection, SaveEntityProps, RebaseData, RebaseContext } from "@rebasepro/types";
4
- import { OnCellValueChange, saveEntityWithCallbacks, UniqueFieldValidator } from "@rebasepro/core";
3
+ import { CollectionConfig, RebaseData, RebaseContext } from "@rebasepro/types";
4
+ import { OnCellValueChange, saveEntityWithCallbacks, SaveEntityWithCallbacksProps, UniqueFieldValidator } from "@rebasepro/core";
5
5
 
6
6
  export interface UseCollectionInlineEditorParams<M extends Record<string, unknown>> {
7
7
  path: string;
8
- collection: EntityCollection<M>;
8
+ collection: CollectionConfig<M>;
9
9
  dataClient: RebaseData;
10
10
  context: RebaseContext;
11
11
  }
@@ -17,7 +17,7 @@ export function useCollectionInlineEditor<M extends Record<string, unknown>>({
17
17
  context
18
18
  }: UseCollectionInlineEditorParams<M>) {
19
19
 
20
- // Unique field validator (ported from EntityCollectionView)
20
+ // Unique field validator (ported from CollectionViewBinding)
21
21
  const uniqueFieldValidator: UniqueFieldValidator = useCallback(
22
22
  async ({ name, value, property, entityId }: Parameters<UniqueFieldValidator>[0]) => {
23
23
  const accessor = dataClient.collection(path);
@@ -46,7 +46,7 @@ export function useCollectionInlineEditor<M extends Record<string, unknown>>({
46
46
 
47
47
  const updatedValues = setIn({}, propertyKey, value) as Partial<Record<string, unknown>>;
48
48
 
49
- const saveProps: SaveEntityProps = {
49
+ const saveProps: SaveEntityWithCallbacksProps<Record<string, unknown>> = {
50
50
  path: entity.path ?? path,
51
51
  entityId: entity.id,
52
52
  values: updatedValues,
@@ -1,13 +1,13 @@
1
1
  import { useCallback, useMemo } from "react";
2
2
  import { setIn } from "@rebasepro/formex";
3
- import { EntityCollection, SaveEntityProps, RebaseData, RebaseContext, AnalyticsController, Entity } from "@rebasepro/types";
4
- import { saveEntityWithCallbacks } from "@rebasepro/core";
3
+ import { CollectionConfig, RebaseData, RebaseContext, AnalyticsController, Entity } from "@rebasepro/types";
4
+ import { saveEntityWithCallbacks, SaveEntityWithCallbacksProps } from "@rebasepro/core";
5
5
  import { BoardItem } from "@rebasepro/ui";
6
6
  import { BoardDataController } from "../useBoardDataController";
7
7
  import { generateKeyBetween } from "fractional-indexing";
8
8
 
9
9
  export interface UseKanbanDragAndDropParams<M extends Record<string, unknown>> {
10
- collection: EntityCollection<M>;
10
+ collection: CollectionConfig<M>;
11
11
  fullPath: string;
12
12
  columnProperty: string;
13
13
  orderProperty?: string;
@@ -106,7 +106,7 @@ export function useKanbanDragAndDrop<M extends Record<string, unknown>>({
106
106
  );
107
107
  }
108
108
 
109
- const saveProps: SaveEntityProps = {
109
+ const saveProps: SaveEntityWithCallbacksProps<Record<string, unknown>> = {
110
110
  path: entity.path,
111
111
  entityId: entity.id,
112
112
  values: updatedValues as M,
@@ -1,6 +1,6 @@
1
- import type { EntityCollection } from "@rebasepro/types";
2
- import { useCallback, useEffect, useMemo, useRef, useState } from "react";
1
+ import type { CollectionConfig } from "@rebasepro/types";
3
2
  import { Entity, FilterValues } from "@rebasepro/types";
3
+ import { useCallback, useEffect, useMemo, useRef, useState } from "react";
4
4
  import { useData, useRebaseContext } from "@rebasepro/core";
5
5
 
6
6
  const DEFAULT_PAGE_SIZE = 20;
@@ -67,7 +67,7 @@ export interface UseBoardDataControllerProps<M extends Record<string, unknown> =
67
67
  /** Full path to the collection */
68
68
  fullPath: string;
69
69
  /** The entity collection configuration */
70
- collection: EntityCollection<M>;
70
+ collection: CollectionConfig<M>;
71
71
  /** Property key used for column assignment */
72
72
  columnProperty: string;
73
73
  /** Array of column values (enum values from columnProperty) */
@@ -244,7 +244,7 @@ export function useBoardDataController<M extends Record<string, unknown> = any,
244
244
  [currentColumnProperty]: ["==", column]
245
245
  };
246
246
 
247
- const orderByParam = currentOrderProperty ? `${currentOrderProperty}:asc` : undefined;
247
+ const orderByParam: [string, "asc" | "desc"] | undefined = currentOrderProperty ? [currentOrderProperty, "asc"] : undefined;
248
248
 
249
249
  // Mark column as loading
250
250
  setColumnData(prev => ({
@@ -326,18 +326,24 @@ values: { ...e.values,
326
326
  });
327
327
  }
328
328
 
329
- // Apply afterRead callbacks if any
329
+ // Apply afterRead callbacks if any.
330
+ // afterRead operates on flat rows; unwrap the Entity view-model
331
+ // before invoking and re-wrap the processed row after.
330
332
  if (currentCollection.callbacks?.afterRead) {
331
333
  try {
332
334
  processed = await Promise.all(
333
- processed.map(entity =>
334
- currentCollection.callbacks!.afterRead!({
335
+ processed.map(async (entity) => {
336
+ const processedRow = await currentCollection.callbacks!.afterRead!({
335
337
  collection: currentCollection,
336
338
  path: currentResolvedPath,
337
- entity,
339
+ row: { id: entity.id, ...entity.values },
338
340
  context: currentContext
339
- })
340
- )
341
+ });
342
+ return {
343
+ ...entity,
344
+ values: processedRow as M
345
+ };
346
+ })
341
347
  );
342
348
  } catch (e) {
343
349
  console.error("Error in afterRead callback:", e);
@@ -1,5 +1,5 @@
1
1
  import { useMemo } from "react";
2
- import type { EntityCollection, Property, RelationProperty } from "@rebasepro/types";
2
+ import type { CollectionConfig, Property, RelationProperty } from "@rebasepro/types";
3
3
  import type { Entity, PropertyConfig, EntityRelation } from "@rebasepro/types";
4
4
  import { getEntityImagePreviewPropertyKey } from "@rebasepro/common";
5
5
  import { getEntityFromCache } from "@rebasepro/core";
@@ -13,7 +13,7 @@ import { ChipColorScheme, CHIP_COLORS } from "@rebasepro/ui";
13
13
 
14
14
  /**
15
15
  * A resolved "slot" containing the property definition, key, and the
16
- * concrete value extracted from an entity.
16
+ * concrete value extracted from a entity.
17
17
  */
18
18
  export interface PreviewSlot {
19
19
  property: Property;
@@ -102,7 +102,7 @@ export interface CollectionSlotKeys {
102
102
  * Pure function — call inside `useMemo`.
103
103
  */
104
104
  export function resolveCollectionSlotKeys(
105
- collection: EntityCollection<Record<string, unknown>>,
105
+ collection: CollectionConfig<Record<string, unknown>>,
106
106
  authController: AuthController,
107
107
  propertyConfigs: Record<string, PropertyConfig>
108
108
  ): CollectionSlotKeys {
@@ -216,7 +216,7 @@ dateKey };
216
216
  * and value is the first element (for arrays) or the raw value.
217
217
  */
218
218
  function resolveImageSlot(
219
- collection: EntityCollection<Record<string, unknown>>,
219
+ collection: CollectionConfig<Record<string, unknown>>,
220
220
  imageKey: string,
221
221
  entity: Entity<Record<string, unknown>>
222
222
  ): PreviewSlot | undefined {
@@ -277,7 +277,7 @@ function formatDateValue(value: unknown): string {
277
277
  * `resolveEntitySlots` for each entity row.
278
278
  */
279
279
  export function useCollectionSlotKeys(
280
- collection: EntityCollection<Record<string, unknown>>,
280
+ collection: CollectionConfig<Record<string, unknown>>,
281
281
  authController: AuthController,
282
282
  propertyConfigs: Record<string, PropertyConfig>
283
283
  ): CollectionSlotKeys {
@@ -296,7 +296,7 @@ export function useCollectionSlotKeys(
296
296
  */
297
297
  export function resolveEntitySlots(
298
298
  entity: Entity<Record<string, unknown>>,
299
- collection: EntityCollection<Record<string, unknown>>,
299
+ collection: CollectionConfig<Record<string, unknown>>,
300
300
  slotKeys: CollectionSlotKeys
301
301
  ): EntityPreviewSlots {
302
302
  const { titleKey, imageKey, subtitleKey, relationKeys, statusKey, dateKey } = slotKeys;
@@ -441,11 +441,11 @@ function resolveRelationDisplayName(
441
441
  const data = "data" in relation ? (relation as EntityRelation).data : undefined;
442
442
 
443
443
  // Resolve target collection from either `prop.relation.target()` or `prop.target()` (inline API)
444
- let targetCollection: EntityCollection | undefined;
444
+ let targetCollection: CollectionConfig | undefined;
445
445
  try {
446
446
  const resolved = prop.relation?.target?.() ?? (typeof prop.target === "function" ? prop.target() : undefined);
447
447
  if (resolved && typeof resolved === "object") {
448
- targetCollection = resolved as EntityCollection;
448
+ targetCollection = resolved as CollectionConfig;
449
449
  }
450
450
  } catch {
451
451
  // Target collection may not be resolvable
@@ -1,5 +1,5 @@
1
- import type { EntityCollection } from "@rebasepro/types";
2
- import { Entity, EntityCallbacks } from "@rebasepro/types";
1
+ import type { CollectionConfig } from "@rebasepro/types";
2
+ import { Entity, CollectionCallbacks } from "@rebasepro/types";
3
3
  import React, { useCallback, useMemo, useState } from "react";
4
4
  import { Button, CircularProgress, Dialog, DialogActions, DialogContent, DialogTitle } from "@rebasepro/ui";
5
5
  import {
@@ -11,15 +11,15 @@ import {
11
11
  useTranslation
12
12
  } from "@rebasepro/core";
13
13
  import { useCMSContext } from "../hooks";
14
- import { EntityView } from "./EntityView";
14
+ import { EntityViewBinding } from "./EntityViewBinding";
15
15
 
16
16
  export interface DeleteEntityDialogProps<M extends Record<string, unknown>> {
17
17
  entityOrEntitiesToDelete?: Entity<M> | Entity<M>[],
18
18
  path: string,
19
- collection: EntityCollection<M>
19
+ collection: CollectionConfig<M>
20
20
  open: boolean;
21
21
  onClose: () => void;
22
- callbacks?: EntityCallbacks<M>,
22
+ callbacks?: CollectionCallbacks<M>,
23
23
 
24
24
  onEntityDelete?(path: string, entity: Entity<M>): void;
25
25
 
@@ -135,7 +135,7 @@ export function DeleteEntityDialog<M extends Record<string, unknown>>({
135
135
  } else {
136
136
  const entity = entityOrEntities as Entity<M> | undefined;
137
137
  content = entity
138
- ? <EntityView
138
+ ? <EntityViewBinding
139
139
  entity={entity}
140
140
  collection={collection}
141
141
  path={path}/>
@@ -1,11 +1,11 @@
1
- import type { ComponentRef, EntityCollection, EntityCustomViewParams, FormViewConfig } from "@rebasepro/types";
1
+ import type { ComponentRef, CollectionConfig, EntityCustomViewParams, FormViewConfig } from "@rebasepro/types";
2
2
  import type { FormContext } from "../types/fields";
3
3
  import type { PluginFormActionProps } from "@rebasepro/types";
4
4
  import React, { lazy, Suspense, useCallback, useEffect, useMemo, useRef, useState } from "react";
5
5
  import { Entity, EntityStatus, getCollectionDataPath, Property } from "@rebasepro/types";
6
- import { PluginProviderStack, resolveComponentRef, useComponentOverride, CollectionComponentOverrideProvider } from "@rebasepro/core";
6
+ import { PluginProviderStack, resolveComponentRef, useComponentOverride, CollectionScopeProvider } from "@rebasepro/core";
7
7
 
8
- import { EntityCollectionView, EntityView } from "../components";
8
+ import { CollectionViewBinding, EntityViewBinding } from "../components";
9
9
  import { CircularProgressCenter, iconSize } from "@rebasepro/ui";
10
10
  import {
11
11
  Alert,
@@ -34,7 +34,7 @@ import {
34
34
  import { resolvedSelectedEntityView } from "../util/resolutions";
35
35
  import {
36
36
  useCustomizationController,
37
- useEntityFetch,
37
+ useFetch,
38
38
  useRebaseContext,
39
39
  useLargeLayout,
40
40
  useSlot
@@ -43,11 +43,11 @@ import { useUrlController, useCollectionRegistryController } from "../index";
43
43
  import { useNavigate } from "react-router-dom";
44
44
  import { getValueInPath } from "@rebasepro/utils";
45
45
  import { getEntityTitlePropertyKey, resolveTitleToString } from "../util/previews";
46
- import { EntityJsonPreview } from "../components/EntityJsonPreview";
46
+ import { JsonPreviewBinding } from "../components/JsonPreviewBinding";
47
47
 
48
48
  const EntityHistoryView = lazy(() => import("../components/history").then(m => ({ default: m.EntityHistoryView })));
49
49
 
50
- import { MAIN_TAB_VALUE, JSON_TAB_VALUE, HISTORY_TAB_VALUE } from "../util/entity_view_constants";
50
+ import { MAIN_TAB_VALUE, JSON_TAB_VALUE, HISTORY_TAB_VALUE } from "../util/view_constants";
51
51
 
52
52
  export type BarActionsParams = {
53
53
  values: object,
@@ -60,12 +60,12 @@ export type OnTabChangeParams<M extends Record<string, unknown>> = {
60
60
  path: string;
61
61
  entityId?: string | number;
62
62
  selectedTab?: string;
63
- collection: EntityCollection<M>;
63
+ collection: CollectionConfig<M>;
64
64
  };
65
65
 
66
- export interface EntityDetailViewProps<M extends Record<string, unknown> = Record<string, unknown>> {
66
+ export interface DetailViewBindingProps<M extends Record<string, unknown> = Record<string, unknown>> {
67
67
  path: string;
68
- collection: EntityCollection<M>;
68
+ collection: CollectionConfig<M>;
69
69
  entityId: string | number;
70
70
  selectedTab?: string;
71
71
  parentCollectionSlugs: string[];
@@ -76,16 +76,16 @@ export interface EntityDetailViewProps<M extends Record<string, unknown> = Recor
76
76
  barActions?: (params: BarActionsParams) => React.ReactNode;
77
77
  }
78
78
 
79
- export function EntityDetailView<M extends Record<string, unknown>>({
79
+ export function DetailViewBinding<M extends Record<string, unknown>>({
80
80
  entityId,
81
81
  ...props
82
- }: EntityDetailViewProps<M>) {
82
+ }: DetailViewBindingProps<M>) {
83
83
 
84
84
  const {
85
85
  entity,
86
86
  dataLoading,
87
87
  dataLoadingError
88
- } = useEntityFetch<M>({
88
+ } = useFetch<M>({
89
89
  path: props.path,
90
90
  entityId: entityId,
91
91
  collection: props.collection,
@@ -105,7 +105,7 @@ export function EntityDetailView<M extends Record<string, unknown>>({
105
105
  }
106
106
 
107
107
  const content = (
108
- <EntityDetailViewInner<M>
108
+ <DetailViewBindingInner<M>
109
109
  {...props}
110
110
  entityId={entityId}
111
111
  entity={entity}
@@ -113,17 +113,14 @@ export function EntityDetailView<M extends Record<string, unknown>>({
113
113
  />
114
114
  );
115
115
 
116
- if (props.collection.components) {
117
- return (
118
- <CollectionComponentOverrideProvider overrides={props.collection.components}>
119
- {content}
120
- </CollectionComponentOverrideProvider>
121
- );
122
- }
123
- return content;
116
+ return (
117
+ <CollectionScopeProvider collection={props.collection}>
118
+ {content}
119
+ </CollectionScopeProvider>
120
+ );
124
121
  }
125
122
 
126
- function EntityDetailViewInner<M extends Record<string, unknown>>({
123
+ function DetailViewBindingInner<M extends Record<string, unknown>>({
127
124
  path,
128
125
  entityId,
129
126
  selectedTab: selectedTabProp,
@@ -136,11 +133,11 @@ function EntityDetailViewInner<M extends Record<string, unknown>>({
136
133
  dataLoading,
137
134
  layout = "full_screen",
138
135
  barActions
139
- }: EntityDetailViewProps<M> & {
136
+ }: DetailViewBindingProps<M> & {
140
137
  entity?: Entity<M>,
141
138
  dataLoading: boolean,
142
139
  }) {
143
- const ResolvedCollectionView = useComponentOverride("Collection.View", EntityCollectionView);
140
+ const ResolvedCollectionView = useComponentOverride("Collection.View", CollectionViewBinding);
144
141
  const { t } = useTranslation();
145
142
  const context = useRebaseContext();
146
143
  const urlController = useUrlController();
@@ -166,7 +163,7 @@ entityId }
166
163
  ), [collection, entityId]);
167
164
 
168
165
  // Track whether the user has explicitly clicked a tab in this component
169
- // instance. See EntityEditViewInner for full explanation.
166
+ // instance. See EditViewBindingInner for full explanation.
170
167
  const userHasChangedTab = useRef(false);
171
168
 
172
169
  const [selectedTab, setSelectedTab] = useState<string>(() => {
@@ -264,7 +261,7 @@ entityId }
264
261
  const pluginActionsTop = useSlot("form.actions.top", formActionTopProps);
265
262
 
266
263
  // Resolve formView.Builder if provided
267
- const formViewConfig = (collection as EntityCollection<M> & { formView?: FormViewConfig<M> }).formView;
264
+ const formViewConfig = (collection as CollectionConfig<M> & { formView?: FormViewConfig<M> }).formView;
268
265
  const FormViewBuilder = formViewConfig?.Builder ? resolveComponentRef<EntityCustomViewParams>(formViewConfig.Builder as ComponentRef<EntityCustomViewParams>) : null;
269
266
 
270
267
  // Title resolution
@@ -323,7 +320,7 @@ entityId }
323
320
  key={"json_view"}
324
321
  role="tabpanel">
325
322
  <ErrorBoundary>
326
- <EntityJsonPreview values={usedEntity?.values ?? {}} />
323
+ <JsonPreviewBinding values={usedEntity?.values ?? {}} />
327
324
  </ErrorBoundary>
328
325
  </div> : null;
329
326
 
@@ -405,7 +402,7 @@ entityId }
405
402
 
406
403
  return (
407
404
  <>
408
- {usedEntity && <EntityView
405
+ {usedEntity && <EntityViewBinding
409
406
  entity={usedEntity}
410
407
  collection={collection}
411
408
  path={path}
@@ -639,7 +636,7 @@ entityId }
639
636
  return result;
640
637
  }
641
638
 
642
- function DetailViewSkeleton({ collection }: { collection: EntityCollection<Record<string, unknown>> }) {
639
+ function DetailViewSkeleton({ collection }: { collection: CollectionConfig<Record<string, unknown>> }) {
643
640
  return (
644
641
  <div className="flex-1 flex flex-row w-full overflow-y-auto justify-center">
645
642
  <div className="relative flex flex-row max-w-4xl lg:max-w-3xl xl:max-w-4xl 2xl:max-w-6xl w-full h-fit">