@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
@@ -6,10 +6,10 @@ import { Formex, FormexController, getIn, useCreateFormex } from "@rebasepro/for
6
6
  import { ConfirmationDialog } from "@rebasepro/core";
7
7
  import { DEFAULT_FIELD_CONFIGS, getFieldConfig, getFieldId } from "../../../components/field_configs";
8
8
  import { PropertyConfigBadge } from "../../../components/PropertyConfigBadge";
9
- import { EntityCollection, Property, PropertyConfig, PropertyConfigId } from "@rebasepro/types";
9
+ import { CollectionConfig, Property, PropertyConfig, PropertyConfigId } from "@rebasepro/types";
10
10
  import type { PropertyTypePreset, PropertyType } from "../../extensibility_types";
11
- import { toSerializableProperty, toSerializableCollection } from "../../serializable_utils";
12
- import type { SerializableProperty, SerializableCollection } from "../../serializable_types";
11
+ import { toSerializableProperty, toSerializableCollectionConfig } from "../../serializable_utils";
12
+ import type { SerializableProperty, SerializableCollectionConfig } from "../../serializable_types";
13
13
  import { isPropertyBuilder } from "@rebasepro/common";
14
14
  import {
15
15
  AlertTriangleIcon,
@@ -91,9 +91,9 @@ export type PropertyFormProps = {
91
91
  metadata: Record<string, unknown>;
92
92
  onMetadataChange: (key: string, value: unknown) => void;
93
93
  property: SerializableProperty;
94
- collection: SerializableCollection;
94
+ collection: SerializableCollectionConfig;
95
95
  }) => React.ReactNode;
96
- collectionValues?: EntityCollection;
96
+ collectionValues?: CollectionConfig;
97
97
 
98
98
  };
99
99
 
@@ -368,7 +368,7 @@ function PropertyEditFormFields({
368
368
  propertyTypePresets?: PropertyTypePreset[];
369
369
  hiddenPropertyTypes?: PropertyType[];
370
370
  renderExtraPropertyFields?: PropertyFormProps["renderExtraPropertyFields"];
371
- collectionValues?: EntityCollection;
371
+ collectionValues?: CollectionConfig;
372
372
 
373
373
  } & FormexController<PropertyWithId>) {
374
374
 
@@ -505,13 +505,6 @@ function PropertyEditFormFields({
505
505
  existing={existing}
506
506
  multiple={false}
507
507
  disabled={disabled}/>;
508
- } else if (selectedFieldConfigId === "reference_as_string") {
509
- childComponent =
510
- <ReferencePropertyField showErrors={showErrors}
511
- existing={existing}
512
- asString={true}
513
- multiple={false}
514
- disabled={disabled}/>;
515
508
  } else if (selectedFieldConfigId === "date_time") {
516
509
  childComponent = <DateTimePropertyField disabled={disabled}/>;
517
510
  } else if (selectedFieldConfigId === "multi_references") {
@@ -619,7 +612,7 @@ function PropertyEditFormFields({
619
612
  } as PropertyWithId);
620
613
  },
621
614
  property: toSerializableProperty(values as Property),
622
- collection: toSerializableCollection(collectionValues),
615
+ collection: toSerializableCollectionConfig(collectionValues),
623
616
  })}
624
617
  </div>
625
618
  )}
@@ -686,7 +679,6 @@ const WIDGET_TYPE_MAP: Record<PropertyConfigId, string> = {
686
679
  multi_file_upload: "File",
687
680
  relation: "Relation",
688
681
  reference: "Reference",
689
- reference_as_string: "Text",
690
682
  multi_references: "Reference",
691
683
  date_time: "Date",
692
684
  group: "Group",
@@ -707,7 +699,6 @@ const WIDGET_BASE_TYPE_MAP: Record<string, PropertyType> = {
707
699
  multi_select: "string",
708
700
  file_upload: "string",
709
701
  multi_file_upload: "string",
710
- reference_as_string: "string",
711
702
  user_select: "string",
712
703
  number_input: "number",
713
704
  number_select: "number",
@@ -47,39 +47,49 @@ export function PropertyFieldPreview({
47
47
  >
48
48
  <PropertyConfigBadge propertyConfig={propertyConfig} size="small"/>
49
49
 
50
- <div className="flex-1 flex flex-col min-w-0 pr-8">
50
+ <div className="flex-1 flex flex-col min-w-0 mr-16">
51
51
  {includeName &&
52
52
  <ErrorBoundary>
53
- <div className="flex items-center gap-2">
54
- <Typography variant="body2" component="span">
53
+ <div className="flex items-center gap-2 min-w-0">
54
+ <Typography variant="body2" component="span" className="truncate font-medium">
55
55
  {property.name || propertyKey || "\u00a0"}
56
56
  </Typography>
57
- {property.name && propertyKey && property.name !== propertyKey && (
58
- <Typography variant="caption" component="span" color="secondary" className="font-mono">
57
+ {propertyConfig?.name && (
58
+ <Typography
59
+ variant={"caption"}
60
+ component="span"
61
+ className="text-text-secondary dark:text-text-secondary-dark shrink-0">
62
+ {propertyConfig.name}
63
+ </Typography>
64
+ )}
65
+ </div>
66
+ <div className="flex items-center gap-1.5 mt-0.5 min-w-0">
67
+ {propertyKey && (
68
+ <Typography variant="caption" component="span" color="secondary" className="font-mono truncate">
59
69
  {propertyKey}
60
70
  </Typography>
61
71
  )}
72
+ <ErrorBoundary>
73
+ <Typography variant="caption" component="span" className="shrink-0 text-text-disabled dark:text-text-disabled-dark font-mono">
74
+ · {"columnType" in property ? (property as { columnType?: string }).columnType ?? property.type : property.type}
75
+ </Typography>
76
+ </ErrorBoundary>
62
77
  </div>
63
78
  </ErrorBoundary>}
64
79
 
65
- <div className="flex flex-row items-center gap-2 mt-0.5">
66
- <ErrorBoundary>
67
- <Typography
68
- variant={"caption"}
69
- component="span"
70
- className="text-text-secondary dark:text-text-secondary-dark font-medium">
71
- {propertyConfig?.name}
72
- </Typography>
73
- </ErrorBoundary>
74
- </div>
80
+ {!includeName &&
81
+ <div className="flex flex-row items-center gap-2">
82
+ <ErrorBoundary>
83
+ <Typography
84
+ variant={"caption"}
85
+ component="span"
86
+ className="text-text-secondary dark:text-text-secondary-dark font-medium">
87
+ {propertyConfig?.name}
88
+ </Typography>
89
+ </ErrorBoundary>
90
+ </div>}
75
91
  </div>
76
92
 
77
- <ErrorBoundary>
78
- <Typography variant="caption" component="span" className="ml-auto shrink-0 text-text-disabled dark:text-text-disabled-dark font-mono bg-surface-100 dark:bg-surface-900 px-1.5 py-0.5 rounded mr-8">
79
- {"columnType" in property ? (property as { columnType?: string }).columnType ?? property.type : property.type}
80
- </Typography>
81
- </ErrorBoundary>
82
-
83
93
  {includeEditButton && <Typography variant={"button"}>EDIT</Typography>}
84
94
  </div>
85
95
  </div>
@@ -120,35 +130,34 @@ export function NonEditablePropertyPreview({
120
130
  <MinusCircleIcon className={"text-surface-accent-400 absolute -right-2 -top-2 bg-surface-50 dark:bg-surface-900 rounded-full"} size={iconSize.small}/>
121
131
  </div>
122
132
 
123
- <div className="flex-1 flex flex-col min-w-0 pr-8">
124
- <Typography variant="label" component="span" className="grow pr-2">
125
- {property?.name ? property.name : name}
126
- </Typography>
127
-
128
- <div className="flex flex-row items-center gap-2 mt-0.5">
129
- {propertyConfig && <Typography variant={"caption"} component="span" className="text-text-secondary dark:text-text-secondary-dark font-medium">
133
+ <div className="flex-1 flex flex-col min-w-0 mr-16">
134
+ <div className="flex items-center gap-2 min-w-0">
135
+ <Typography variant="label" component="span" className="truncate">
136
+ {property?.name ? property.name : name}
137
+ </Typography>
138
+ {propertyConfig && <Typography variant={"caption"} component="span" className="text-text-secondary dark:text-text-secondary-dark shrink-0">
130
139
  {propertyConfig?.name}
131
140
  </Typography>}
141
+ </div>
142
+
143
+ <div className="flex flex-row items-center gap-1.5 mt-0.5 min-w-0">
144
+ <Typography variant="caption" component="span" color="secondary" className="font-mono truncate">
145
+ {name}
146
+ </Typography>
132
147
 
133
148
  {property && isPropertyBuilder(property) && <ErrorBoundary>
134
149
  <Typography variant="caption" component="span" className="text-text-disabled dark:text-text-disabled-dark">
135
- Defined in code
150
+ · Defined in code
136
151
  </Typography>
137
152
  </ErrorBoundary>}
138
153
 
139
154
  {!property && <ErrorBoundary>
140
155
  <Typography variant="caption" component="span" className="text-text-disabled dark:text-text-disabled-dark">
141
- Additional field
156
+ · Additional field
142
157
  </Typography>
143
158
  </ErrorBoundary>}
144
159
  </div>
145
160
  </div>
146
-
147
- {property && !isPropertyBuilder(property) && <ErrorBoundary>
148
- <Typography variant="caption" component="span" className="ml-auto shrink-0 text-text-disabled dark:text-text-disabled-dark font-mono bg-surface-100 dark:bg-surface-900 px-1.5 py-0.5 rounded mr-8">
149
- {"columnType" in property ? (property as { columnType?: string }).columnType ?? property.type : property.type}
150
- </Typography>
151
- </ErrorBoundary>}
152
161
  </div>
153
162
  </div>
154
163
  )
@@ -287,7 +287,7 @@ export function PropertyTreeEntry({
287
287
  selected={selected}/>}
288
288
  </div>
289
289
 
290
- <div className="absolute top-1/2 -translate-y-1/2 right-3 flex flex-row items-center gap-1">
290
+ <div className="absolute top-1/2 -translate-y-1/2 right-2 flex flex-row items-center gap-1">
291
291
  {isAIModified && <AIModifiedIndicator/>}
292
292
  {isPropertyInferred && <>
293
293
  <Tooltip title={"Inferred property"} asChild={true}>
@@ -5,7 +5,7 @@ import {
5
5
  useCustomizationController
6
6
  } from "@rebasepro/core";
7
7
  import { resolveEntityView } from "../../_cms_internals";
8
- import { EntityCollection, EntityCustomView, User } from "@rebasepro/types";
8
+ import { CollectionConfig, EntityCustomView, User } from "@rebasepro/types";
9
9
  import { getSubcollections } from "@rebasepro/common";
10
10
  import {
11
11
  Alert,
@@ -37,8 +37,8 @@ export function SubcollectionsEditTab({
37
37
  getUser,
38
38
  parentCollectionSlugs
39
39
  }: {
40
- collection: EntityCollection,
41
- parentCollection?: EntityCollection,
40
+ collection: CollectionConfig,
41
+ parentCollection?: CollectionConfig,
42
42
  configController: CollectionsConfigController;
43
43
  collectionInference?: CollectionInference;
44
44
  getUser?: (uid: string) => User | null;
@@ -59,9 +59,9 @@ export function SubcollectionsEditTab({
59
59
  const {
60
60
  values,
61
61
  setFieldValue
62
- } = useFormex<EntityCollection>();
62
+ } = useFormex<CollectionConfig>();
63
63
 
64
- const [subcollections, setSubcollections] = React.useState<EntityCollection[]>(getSubcollections(collection) ?? []);
64
+ const [subcollections, setSubcollections] = React.useState<CollectionConfig[]>(getSubcollections(collection) ?? []);
65
65
  const resolvedEntityViews = values.entityViews?.filter(e => typeof e === "string")
66
66
  .map(e => resolveEntityView(e, contextEntityViews))
67
67
  .filter(Boolean) as EntityCustomView[] ?? [];
@@ -1,8 +1,8 @@
1
1
  import { useCollectionRegistryController } from "../../../_cms_internals";
2
2
  import { convertDataToEntity, ImportConfig } from "../../../_cms_internals";
3
3
  import { useAuthController } from "@rebasepro/core";
4
- import { EntityCollectionTable } from "../../../../components/EntityCollectionTable/EntityCollectionTable";
5
- import { useSelectionController } from "../../../../components/EntityCollectionView/useSelectionController";
4
+ import { CollectionTableBinding } from "../../../../components/CollectionTableBinding/CollectionTableBinding";
5
+ import { useSelectionController } from "../../../../components/CollectionViewBinding/useSelectionController";
6
6
  import { CircularProgressCenter } from "@rebasepro/ui";
7
7
  import { Properties } from "@rebasepro/types";
8
8
  import { useEffect, useState } from "react";
@@ -42,7 +42,7 @@ export function CollectionEditorImportDataPreview({
42
42
  if (loading)
43
43
  return <CircularProgressCenter/>
44
44
 
45
- return <EntityCollectionTable
45
+ return <CollectionTableBinding
46
46
  title={<div>
47
47
  <Typography variant={"subtitle2"}>Imported data preview</Typography>
48
48
  <Typography variant={"caption"}>Entities with the same id will be overwritten</Typography>
@@ -6,7 +6,7 @@ import { getIn, useFormex } from "@rebasepro/formex";
6
6
 
7
7
  import { getFieldConfig, getFieldId } from "../../../../components/field_configs";
8
8
  import { PropertyConfigBadge } from "../../../../components/PropertyConfigBadge";
9
- import { EntityCollection, Properties, Property, PropertyConfig } from "@rebasepro/types";
9
+ import { CollectionConfig, Properties, Property, PropertyConfig } from "@rebasepro/types";
10
10
  import { cls, Container, Select, SelectItem, Tooltip, Typography } from "@rebasepro/ui";
11
11
  import React, { useState } from "react";
12
12
  import { OnPropertyChangedParams, PropertyFormDialog, PropertyWithId } from "../PropertyEditView";
@@ -36,7 +36,7 @@ export function CollectionEditorImportMapping({
36
36
  setFieldValue,
37
37
  setFieldTouched,
38
38
  values
39
- } = useFormex<EntityCollection>();
39
+ } = useFormex<CollectionConfig>();
40
40
  const [selectedProperty, setSelectedProperty] = useState<PropertyWithId | undefined>(undefined);
41
41
 
42
42
  const currentPropertiesOrderRef = React.useRef<{
@@ -8,7 +8,7 @@ import {
8
8
  TextField,
9
9
  Typography
10
10
  } from "@rebasepro/ui";
11
- import { EntityCollection, OnAction, RelationProperty } from "@rebasepro/types";
11
+ import { CollectionConfig, OnAction, RelationProperty } from "@rebasepro/types";
12
12
 
13
13
  import { CollectionsSelect } from "./ReferencePropertyField";
14
14
 
@@ -87,7 +87,7 @@ targetColumn: "" };
87
87
  }
88
88
  }, [targetSlug, relationName, setFieldValue]);
89
89
 
90
- const collections: EntityCollection[] = collectionRegistry?.collections ?? [];
90
+ const collections: CollectionConfig[] = collectionRegistry?.collections ?? [];
91
91
 
92
92
  return (
93
93
  <>
@@ -13,7 +13,8 @@ import {
13
13
  } from "@rebasepro/ui";
14
14
 
15
15
  import { Field, FormexFieldProps, getIn, useFormex } from "@rebasepro/formex";
16
- import { useTranslation } from "@rebasepro/core";
16
+ import { useStorageSources, useTranslation } from "@rebasepro/core";
17
+ import { DEFAULT_STORAGE_SOURCE_KEY } from "@rebasepro/types";
17
18
  import { GeneralPropertyValidation } from "./validation/GeneralPropertyValidation";
18
19
  import { ArrayPropertyValidation } from "./validation/ArrayPropertyValidation";
19
20
  import { ValidationPanel } from "./validation/ValidationPanel";
@@ -42,9 +43,11 @@ export function StoragePropertyField({
42
43
  setFieldValue
43
44
  } = useFormex();
44
45
  const { t } = useTranslation();
46
+ const storageSources = useStorageSources();
45
47
 
46
48
  const baseStoragePath = multiple ? "of.storage" : "storage";
47
49
  const acceptedFiles = `${baseStoragePath}.acceptedFiles`;
50
+ const storageSource = `${baseStoragePath}.storageSource`;
48
51
 
49
52
  const metadata = `${baseStoragePath}.metadata`;
50
53
  const fileName = `${baseStoragePath}.fileName`;
@@ -76,6 +79,11 @@ export function StoragePropertyField({
76
79
  const fileTypesValue: string[] | undefined = Array.isArray(storedValue) ? storedValue : undefined;
77
80
  const allFileTypesSelected = !fileTypesValue || fileTypesValue.length === 0;
78
81
 
82
+ // Available storage backends (from `<Rebase storageSources={...}>`).
83
+ const sourceKeys = Object.keys(storageSources.sources)
84
+ .filter((key) => key !== DEFAULT_STORAGE_SOURCE_KEY);
85
+ const storageSourceValue = (getIn(values, storageSource) as string | undefined) ?? DEFAULT_STORAGE_SOURCE_KEY;
86
+
79
87
  const handleTypesChange = (value: string[]) => {
80
88
  if (!value) setFieldValue(acceptedFiles, undefined);
81
89
  else setFieldValue(acceptedFiles, value);
@@ -102,6 +110,32 @@ export function StoragePropertyField({
102
110
 
103
111
  <div className={"grid grid-cols-12 gap-2 p-4"}>
104
112
 
113
+ {sourceKeys.length > 0 && (
114
+ <div className={"col-span-12"}>
115
+ <Select
116
+ className={"w-full"}
117
+ disabled={disabled}
118
+ name={storageSource}
119
+ value={storageSourceValue}
120
+ onValueChange={(value) =>
121
+ setFieldValue(storageSource, !value || value === DEFAULT_STORAGE_SOURCE_KEY ? undefined : value)}
122
+ label={"Storage backend"}
123
+ renderValue={(key) => {
124
+ const label = storageSources.registry[key]?.label;
125
+ return label ?? (key === DEFAULT_STORAGE_SOURCE_KEY ? "Default" : key);
126
+ }}>
127
+ <SelectItem value={DEFAULT_STORAGE_SOURCE_KEY}>
128
+ Default
129
+ </SelectItem>
130
+ {sourceKeys.map((key) => (
131
+ <SelectItem key={key} value={key}>
132
+ {storageSources.registry[key]?.label ?? key}
133
+ </SelectItem>
134
+ ))}
135
+ </Select>
136
+ </div>
137
+ )}
138
+
105
139
  <div className={"col-span-12"}>
106
140
 
107
141
  <MultiSelect
@@ -1,4 +1,4 @@
1
- import type { EntityCollection } from "@rebasepro/types";
1
+ import type { CollectionConfig } from "@rebasepro/types";
2
2
 
3
3
  export const blogCollectionTemplate = {
4
4
  slug: "blog",
@@ -93,7 +93,7 @@ export const blogCollectionTemplate = {
93
93
  publish_date: {
94
94
  name: "Publish date",
95
95
  type: "date",
96
- clearable: true
96
+ ui: { clearable: true }
97
97
  },
98
98
  reviewed: {
99
99
  name: "Reviewed",
@@ -109,4 +109,4 @@ export const blogCollectionTemplate = {
109
109
  }
110
110
  }
111
111
  }
112
- } as unknown as EntityCollection;
112
+ } as unknown as CollectionConfig;
@@ -1,4 +1,4 @@
1
- import type { EntityCollection } from "@rebasepro/types";
1
+ import type { CollectionConfig } from "@rebasepro/types";
2
2
 
3
3
  export const pagesCollectionTemplate = {
4
4
  slug: "pages",
@@ -180,4 +180,4 @@ export const pagesCollectionTemplate = {
180
180
  description: "Should this page be live on the site?"
181
181
  }
182
182
  }
183
- } as unknown as EntityCollection;
183
+ } as unknown as CollectionConfig;
@@ -1,4 +1,4 @@
1
- import type { EntityCollection } from "@rebasepro/types";
1
+ import type { CollectionConfig } from "@rebasepro/types";
2
2
 
3
3
  export const productsCollectionTemplate = {
4
4
  slug: "products",
@@ -85,4 +85,4 @@ export const productsCollectionTemplate = {
85
85
  autoValue: "on_create"
86
86
  }
87
87
  }
88
- } as unknown as EntityCollection;
88
+ } as unknown as CollectionConfig;
@@ -1,4 +1,4 @@
1
- import type { EntityCollection } from "@rebasepro/types";
1
+ import type { CollectionConfig } from "@rebasepro/types";
2
2
 
3
3
  export const usersCollectionTemplate = {
4
4
  slug: "users",
@@ -39,4 +39,4 @@ export const usersCollectionTemplate = {
39
39
  url: "image"
40
40
  }
41
41
  }
42
- } as unknown as EntityCollection;
42
+ } as unknown as CollectionConfig;
@@ -16,7 +16,6 @@ export const supportedFieldsIds: PropertyConfigId[] = [
16
16
  "file_upload",
17
17
  "multi_file_upload",
18
18
  "reference",
19
- "reference_as_string",
20
19
  "multi_references",
21
20
  "relation",
22
21
  "switch",
@@ -14,10 +14,8 @@ export function updatePropertyFromWidget(propertyData: any,
14
14
  type: "string",
15
15
  propertyConfig: "text_field",
16
16
  storage: undefined,
17
- multiline: undefined,
18
- markdown: undefined,
17
+ ui: { multiline: undefined, markdown: undefined, url: undefined },
19
18
  email: undefined,
20
- url: undefined,
21
19
  enum: undefined,
22
20
  userSelect: undefined
23
21
  } as StringProperty
@@ -29,10 +27,8 @@ export function updatePropertyFromWidget(propertyData: any,
29
27
  type: "string",
30
28
  propertyConfig: "user_select",
31
29
  storage: undefined,
32
- multiline: undefined,
33
- markdown: undefined,
30
+ ui: { multiline: undefined, markdown: undefined, url: undefined },
34
31
  email: undefined,
35
- url: undefined,
36
32
  enum: undefined,
37
33
  userSelect: true
38
34
  } as StringProperty
@@ -43,11 +39,9 @@ export function updatePropertyFromWidget(propertyData: any,
43
39
  {
44
40
  type: "string",
45
41
  propertyConfig: "multiline",
46
- multiline: true,
42
+ ui: { multiline: true, markdown: undefined, url: undefined },
47
43
  storage: undefined,
48
- markdown: undefined,
49
44
  email: undefined,
50
- url: undefined,
51
45
  enum: undefined,
52
46
  userSelect: undefined
53
47
  } as StringProperty
@@ -59,10 +53,8 @@ export function updatePropertyFromWidget(propertyData: any,
59
53
  type: "string",
60
54
  propertyConfig: "markdown",
61
55
  storage: undefined,
62
- multiline: undefined,
63
- markdown: true,
56
+ ui: { multiline: undefined, markdown: true, url: undefined },
64
57
  email: undefined,
65
- url: undefined,
66
58
  userSelect: undefined
67
59
  } as StringProperty
68
60
  );
@@ -73,10 +65,8 @@ export function updatePropertyFromWidget(propertyData: any,
73
65
  type: "string",
74
66
  propertyConfig: "url",
75
67
  storage: undefined,
76
- multiline: undefined,
77
- markdown: undefined,
68
+ ui: { multiline: undefined, markdown: undefined, url: true },
78
69
  email: undefined,
79
- url: true,
80
70
  enum: undefined,
81
71
  userSelect: undefined
82
72
  } as StringProperty
@@ -88,10 +78,8 @@ export function updatePropertyFromWidget(propertyData: any,
88
78
  type: "string",
89
79
  propertyConfig: "email",
90
80
  storage: undefined,
91
- multiline: undefined,
92
- markdown: undefined,
81
+ ui: { multiline: undefined, markdown: undefined, url: undefined },
93
82
  email: true,
94
- url: undefined,
95
83
  enum: undefined,
96
84
  userSelect: undefined
97
85
  } as StringProperty
@@ -103,10 +91,8 @@ export function updatePropertyFromWidget(propertyData: any,
103
91
  type: "string",
104
92
  propertyConfig: "select",
105
93
  storage: undefined,
106
- multiline: undefined,
107
- markdown: undefined,
94
+ ui: { multiline: undefined, markdown: undefined, url: undefined },
108
95
  email: undefined,
109
- url: undefined,
110
96
  enum: propertyData.enum ?? [],
111
97
  userSelect: undefined
112
98
  } as StringProperty
@@ -206,14 +192,6 @@ export function updatePropertyFromWidget(propertyData: any,
206
192
  propertyConfig: "reference"
207
193
  } as Property
208
194
  );
209
- } else if (selectedWidgetId === "reference_as_string") {
210
- updatedProperty = mergeDeep(
211
- propertyData,
212
- {
213
- type: "string",
214
- propertyConfig: "reference_as_string"
215
- } as Property
216
- );
217
195
  } else if (selectedWidgetId === "multi_references") {
218
196
  updatedProperty = mergeDeep(
219
197
  propertyData,
@@ -1,5 +1,5 @@
1
1
  import { useCallback, useEffect, useMemo, useRef, useState } from "react";
2
- import type { EntityCollection, NavigationGroupMapping, Property } from "@rebasepro/types";
2
+ import type { EngineProperties, CollectionConfig, NavigationGroupMapping, Property } from "@rebasepro/types";
3
3
  import type {
4
4
  CollectionsConfigController,
5
5
  SaveCollectionParams,
@@ -10,8 +10,8 @@ import type {
10
10
  UpdatePropertiesOrderParams,
11
11
  UpdateKanbanColumnsOrderParams,
12
12
  } from "./types/config_controller";
13
- import type { JsonCollectionStore, SerializableCollection } from "./serializable_types";
14
- import { toSerializableCollection, toSerializableProperty, fromSerializableCollection } from "./serializable_utils";
13
+ import type { JsonCollectionStore, SerializableCollectionConfig } from "./serializable_types";
14
+ import { toSerializableCollectionConfig, toSerializableProperty, fromSerializableCollectionConfig } from "./serializable_utils";
15
15
 
16
16
  export interface UseJsonCollectionsConfigControllerOptions {
17
17
  /**
@@ -55,7 +55,7 @@ export function useJsonCollectionsConfigController({
55
55
  readOnly = false,
56
56
  autoLoad = true,
57
57
  }: UseJsonCollectionsConfigControllerOptions): CollectionsConfigController {
58
- const [collections, setCollections] = useState<EntityCollection[]>([]);
58
+ const [collections, setCollections] = useState<CollectionConfig[]>([]);
59
59
  const [loading, setLoading] = useState(autoLoad);
60
60
  const [navigationEntries, setNavigationEntries] = useState<NavigationGroupMapping[]>([]);
61
61
 
@@ -75,7 +75,7 @@ export function useJsonCollectionsConfigController({
75
75
  storeRef.current.loadNavigationEntries?.() ?? Promise.resolve([]),
76
76
  ]);
77
77
  if (cancelled) return;
78
- setCollections(serialized.map(fromSerializableCollection));
78
+ setCollections(serialized.map(fromSerializableCollectionConfig));
79
79
  setNavigationEntries(navEntries);
80
80
  } catch (e) {
81
81
  console.error("useJsonCollectionsConfigController: failed to load collections", e);
@@ -92,15 +92,15 @@ export function useJsonCollectionsConfigController({
92
92
  /**
93
93
  * Update local state and persist a collection to the store.
94
94
  */
95
- const persistCollection = useCallback(async (collection: EntityCollection) => {
96
- const serializable = toSerializableCollection(collection);
95
+ const persistCollection = useCallback(async (collection: CollectionConfig) => {
96
+ const serializable = toSerializableCollectionConfig(collection);
97
97
  await storeRef.current.save(collection.slug, serializable);
98
98
  }, []);
99
99
 
100
100
  /**
101
101
  * Find collection by id (slug).
102
102
  */
103
- const getCollection = useCallback((id: string): EntityCollection => {
103
+ const getCollection = useCallback((id: string): CollectionConfig => {
104
104
  const found = collections.find(c => c.slug === id);
105
105
  if (found) return found;
106
106
  throw new Error(`Collection "${id}" not found`);
@@ -111,7 +111,7 @@ export function useJsonCollectionsConfigController({
111
111
  const saveCollection = useCallback(async <M extends Record<string, unknown>>(
112
112
  { id, collectionData }: SaveCollectionParams<M>
113
113
  ) => {
114
- const collection = collectionData as EntityCollection;
114
+ const collection = collectionData as CollectionConfig;
115
115
  await persistCollection(collection);
116
116
  setCollections(prev => {
117
117
  const idx = prev.findIndex(c => c.slug === id);
@@ -132,7 +132,7 @@ export function useJsonCollectionsConfigController({
132
132
  const idx = prev.findIndex(c => c.slug === lookupId);
133
133
  if (idx < 0) return prev;
134
134
 
135
- const merged = { ...prev[idx], ...collectionData } as EntityCollection;
135
+ const merged = { ...prev[idx], ...collectionData } as CollectionConfig;
136
136
  const next = [...prev];
137
137
  next[idx] = merged;
138
138
 
@@ -171,13 +171,13 @@ export function useJsonCollectionsConfigController({
171
171
  collection.properties = {
172
172
  ...collection.properties,
173
173
  [propertyKey]: property,
174
- };
174
+ } as EngineProperties;
175
175
  if (newPropertiesOrder) {
176
176
  collection.propertiesOrder = newPropertiesOrder as typeof collection.propertiesOrder;
177
177
  }
178
178
 
179
179
  const next = [...prev];
180
- next[idx] = collection as EntityCollection;
180
+ next[idx] = collection as CollectionConfig;
181
181
 
182
182
  persistCollection(next[idx]).catch(e =>
183
183
  console.error("useJsonCollectionsConfigController: failed to save property", e)
@@ -204,7 +204,7 @@ export function useJsonCollectionsConfigController({
204
204
  }
205
205
 
206
206
  const next = [...prev];
207
- next[idx] = collection as EntityCollection;
207
+ next[idx] = collection as CollectionConfig;
208
208
 
209
209
  persistCollection(next[idx]).catch(e =>
210
210
  console.error("useJsonCollectionsConfigController: failed to delete property", e)
@@ -221,7 +221,7 @@ export function useJsonCollectionsConfigController({
221
221
  const updated = {
222
222
  ...collection,
223
223
  propertiesOrder: newPropertiesOrder,
224
- } as EntityCollection;
224
+ } as CollectionConfig;
225
225
 
226
226
  setCollections(prev => {
227
227
  const idx = prev.findIndex(c => c.slug === collection.slug);