@rebasepro/admin 0.4.0 → 0.6.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 (353) hide show
  1. package/README.md +135 -0
  2. package/dist/CollectionEditorDialog-jA-PLh6N.js +3549 -0
  3. package/dist/CollectionEditorDialog-jA-PLh6N.js.map +1 -0
  4. package/dist/CollectionsStudioView-UKouBPOm.js +170 -0
  5. package/dist/CollectionsStudioView-UKouBPOm.js.map +1 -0
  6. package/dist/PropertyEditView-DEUddmg_.js +3660 -0
  7. package/dist/PropertyEditView-DEUddmg_.js.map +1 -0
  8. package/dist/collection_editor/ConfigControllerProvider.d.ts +2 -2
  9. package/dist/collection_editor/ui/AddKanbanColumnAction.d.ts +2 -1
  10. package/dist/collection_editor/ui/CollectionViewHeaderAction.d.ts +2 -1
  11. package/dist/collection_editor/ui/EditorCollectionAction.d.ts +1 -1
  12. package/dist/collection_editor/ui/EditorCollectionActionStart.d.ts +1 -1
  13. package/dist/collection_editor/ui/EditorEntityAction.d.ts +1 -1
  14. package/dist/collection_editor/ui/HomePageEditorCollectionAction.d.ts +1 -1
  15. package/dist/collection_editor/ui/KanbanSetupAction.d.ts +2 -1
  16. package/dist/collection_editor/ui/MissingReferenceWidget.d.ts +1 -1
  17. package/dist/collection_editor/ui/NewCollectionButton.d.ts +1 -1
  18. package/dist/collection_editor/ui/NewCollectionCard.d.ts +1 -1
  19. package/dist/collection_editor/ui/PropertyAddColumnComponent.d.ts +1 -1
  20. package/dist/collection_editor/ui/collection_editor/AICollectionGeneratorPopover.d.ts +1 -1
  21. package/dist/collection_editor/ui/collection_editor/AIModifiedPathsContext.d.ts +1 -1
  22. package/dist/collection_editor/ui/collection_editor/CollectionDetailsForm.d.ts +2 -1
  23. package/dist/collection_editor/ui/collection_editor/CollectionEditorDialog.d.ts +2 -2
  24. package/dist/collection_editor/ui/collection_editor/CollectionEditorWelcomeView.d.ts +2 -2
  25. package/dist/collection_editor/ui/collection_editor/CollectionJsonImportDialog.d.ts +2 -1
  26. package/dist/collection_editor/ui/collection_editor/CollectionPropertiesEditorForm.d.ts +1 -1
  27. package/dist/collection_editor/ui/collection_editor/CollectionRLSTab.d.ts +2 -1
  28. package/dist/collection_editor/ui/collection_editor/CollectionRelationsTab.d.ts +2 -1
  29. package/dist/collection_editor/ui/collection_editor/CollectionStudioView.d.ts +2 -1
  30. package/dist/collection_editor/ui/collection_editor/CollectionYupValidation.d.ts +1 -9
  31. package/dist/collection_editor/ui/collection_editor/CollectionsStudioView.d.ts +2 -1
  32. package/dist/collection_editor/ui/collection_editor/DisplaySettingsForm.d.ts +2 -1
  33. package/dist/collection_editor/ui/collection_editor/EntityActionsEditTab.d.ts +2 -1
  34. package/dist/collection_editor/ui/collection_editor/EntityActionsSelectDialog.d.ts +2 -1
  35. package/dist/collection_editor/ui/collection_editor/EntityCustomViewsSelectDialog.d.ts +2 -1
  36. package/dist/collection_editor/ui/collection_editor/EnumForm.d.ts +2 -1
  37. package/dist/collection_editor/ui/collection_editor/GeneralSettingsForm.d.ts +2 -1
  38. package/dist/collection_editor/ui/collection_editor/GetCodeDialog.d.ts +2 -1
  39. package/dist/collection_editor/ui/collection_editor/KanbanConfigSection.d.ts +2 -1
  40. package/dist/collection_editor/ui/collection_editor/LayoutModeSwitch.d.ts +1 -1
  41. package/dist/collection_editor/ui/collection_editor/PropertyEditView.d.ts +4 -3
  42. package/dist/collection_editor/ui/collection_editor/PropertyFieldPreview.d.ts +2 -2
  43. package/dist/collection_editor/ui/collection_editor/PropertyTree.d.ts +2 -2
  44. package/dist/collection_editor/ui/collection_editor/SubcollectionsEditTab.d.ts +2 -1
  45. package/dist/collection_editor/ui/collection_editor/SwitchControl.d.ts +2 -1
  46. package/dist/collection_editor/ui/collection_editor/ViewModeSwitch.d.ts +1 -1
  47. package/dist/collection_editor/ui/collection_editor/import/CollectionEditorImportDataPreview.d.ts +1 -1
  48. package/dist/collection_editor/ui/collection_editor/import/CollectionEditorImportMapping.d.ts +3 -2
  49. package/dist/collection_editor/ui/collection_editor/properties/BlockPropertyField.d.ts +2 -1
  50. package/dist/collection_editor/ui/collection_editor/properties/BooleanPropertyField.d.ts +2 -1
  51. package/dist/collection_editor/ui/collection_editor/properties/DateTimePropertyField.d.ts +2 -1
  52. package/dist/collection_editor/ui/collection_editor/properties/EnumPropertyField.d.ts +2 -1
  53. package/dist/collection_editor/ui/collection_editor/properties/KeyValuePropertyField.d.ts +2 -1
  54. package/dist/collection_editor/ui/collection_editor/properties/MapPropertyField.d.ts +2 -1
  55. package/dist/collection_editor/ui/collection_editor/properties/MarkdownPropertyField.d.ts +2 -1
  56. package/dist/collection_editor/ui/collection_editor/properties/NumberPropertyField.d.ts +2 -1
  57. package/dist/collection_editor/ui/collection_editor/properties/ReferencePropertyField.d.ts +3 -2
  58. package/dist/collection_editor/ui/collection_editor/properties/RelationPropertyField.d.ts +2 -1
  59. package/dist/collection_editor/ui/collection_editor/properties/RepeatPropertyField.d.ts +2 -1
  60. package/dist/collection_editor/ui/collection_editor/properties/StoragePropertyField.d.ts +2 -1
  61. package/dist/collection_editor/ui/collection_editor/properties/StringPropertyField.d.ts +2 -1
  62. package/dist/collection_editor/ui/collection_editor/properties/UrlPropertyField.d.ts +2 -1
  63. package/dist/collection_editor/ui/collection_editor/properties/VectorPropertyField.d.ts +2 -1
  64. package/dist/collection_editor/ui/collection_editor/properties/advanced/AdvancedPropertyValidation.d.ts +2 -1
  65. package/dist/collection_editor/ui/collection_editor/properties/conditions/ConditionsEditor.d.ts +2 -1
  66. package/dist/collection_editor/ui/collection_editor/properties/conditions/ConditionsPanel.d.ts +1 -1
  67. package/dist/collection_editor/ui/collection_editor/properties/conditions/EnumConditionsEditor.d.ts +2 -1
  68. package/dist/collection_editor/ui/collection_editor/properties/validation/ArrayPropertyValidation.d.ts +2 -1
  69. package/dist/collection_editor/ui/collection_editor/properties/validation/GeneralPropertyValidation.d.ts +2 -1
  70. package/dist/collection_editor/ui/collection_editor/properties/validation/NumberPropertyValidation.d.ts +2 -1
  71. package/dist/collection_editor/ui/collection_editor/properties/validation/StringPropertyValidation.d.ts +2 -1
  72. package/dist/collection_editor/ui/collection_editor/properties/validation/ValidationPanel.d.ts +1 -1
  73. package/dist/collection_editor/ui/collection_editor/templates/blog_template.d.ts +1 -1
  74. package/dist/collection_editor/ui/collection_editor/templates/pages_template.d.ts +1 -1
  75. package/dist/collection_editor/ui/collection_editor/templates/products_template.d.ts +1 -1
  76. package/dist/collection_editor/ui/collection_editor/templates/users_template.d.ts +1 -1
  77. package/dist/collection_editor_ui.js +4 -11
  78. package/dist/components/ArrayContainer.d.ts +3 -3
  79. package/dist/components/ClearFilterSortButton.d.ts +1 -1
  80. package/dist/components/CollectionEditorDialogs.d.ts +2 -1
  81. package/dist/components/CollectionPanel.d.ts +2 -27
  82. package/dist/components/DefaultAppBar.d.ts +1 -1
  83. package/dist/components/DefaultDrawer.d.ts +4 -4
  84. package/dist/components/DeleteEntityDialog.d.ts +2 -1
  85. package/dist/components/DrawerNavigationGroup.d.ts +1 -1
  86. package/dist/components/DrawerNavigationItem.d.ts +1 -1
  87. package/dist/components/EntityCollectionTable/EntityCollectionRowActions.d.ts +1 -1
  88. package/dist/components/EntityCollectionTable/EntityCollectionTable.d.ts +2 -1
  89. package/dist/components/EntityCollectionTable/fields/TableMultipleRelationField.d.ts +3 -3
  90. package/dist/components/EntityCollectionTable/fields/TableReferenceField.d.ts +3 -3
  91. package/dist/components/EntityCollectionTable/fields/TableRelationField.d.ts +3 -3
  92. package/dist/components/EntityCollectionTable/fields/TableRelationSelectorField.d.ts +2 -1
  93. package/dist/components/EntityCollectionTable/fields/TableStorageUpload.d.ts +2 -2
  94. package/dist/components/EntityCollectionTable/fields/VirtualTableDateField.d.ts +1 -1
  95. package/dist/components/EntityCollectionTable/fields/VirtualTableInput.d.ts +2 -1
  96. package/dist/components/EntityCollectionTable/fields/VirtualTableNumberInput.d.ts +2 -1
  97. package/dist/components/EntityCollectionTable/fields/VirtualTableSelect.d.ts +1 -1
  98. package/dist/components/EntityCollectionTable/fields/VirtualTableSwitch.d.ts +2 -1
  99. package/dist/components/EntityCollectionTable/fields/VirtualTableUserSelect.d.ts +1 -1
  100. package/dist/components/EntityCollectionTable/internal/CollectionTableToolbar.d.ts +1 -1
  101. package/dist/components/EntityCollectionTable/internal/EntityTableCellActions.d.ts +1 -1
  102. package/dist/components/EntityCollectionTable/internal/popup_field/PopupFormField.d.ts +4 -3
  103. package/dist/components/EntityCollectionView/Board.d.ts +2 -1
  104. package/dist/components/EntityCollectionView/BoardColumnTitle.d.ts +1 -1
  105. package/dist/components/EntityCollectionView/BoardSortableList.d.ts +1 -1
  106. package/dist/components/EntityCollectionView/EntityBoardCard.d.ts +1 -1
  107. package/dist/components/EntityCollectionView/EntityCard.d.ts +2 -1
  108. package/dist/components/EntityCollectionView/EntityCollectionBoardView.d.ts +1 -1
  109. package/dist/components/EntityCollectionView/EntityCollectionCardView.d.ts +1 -1
  110. package/dist/components/EntityCollectionView/EntityCollectionListView.d.ts +1 -1
  111. package/dist/components/EntityCollectionView/EntityCollectionView.d.ts +0 -24
  112. package/dist/components/EntityCollectionView/EntityCollectionViewActions.d.ts +1 -1
  113. package/dist/components/EntityCollectionView/EntityCollectionViewStartActions.d.ts +2 -1
  114. package/dist/components/EntityCollectionView/FilterPresetsButton.d.ts +2 -1
  115. package/dist/components/EntityCollectionView/FiltersDialog.d.ts +2 -1
  116. package/dist/components/EntityCollectionView/SplitListView.d.ts +1 -1
  117. package/dist/components/EntityCollectionView/ViewModeToggle.d.ts +2 -1
  118. package/dist/components/EntityDetailView.d.ts +1 -1
  119. package/dist/components/EntityEditView.d.ts +2 -2
  120. package/dist/components/EntityEditViewFormActions.d.ts +2 -1
  121. package/dist/components/EntityJsonPreview.d.ts +2 -1
  122. package/dist/components/EntityPreview.d.ts +3 -3
  123. package/dist/components/EntitySidePanel.d.ts +2 -1
  124. package/dist/components/EntityView.d.ts +2 -1
  125. package/dist/components/FieldCaption.d.ts +1 -1
  126. package/dist/components/HomePage/ContentHomePage.d.ts +1 -1
  127. package/dist/components/HomePage/FavouritesView.d.ts +1 -1
  128. package/dist/components/HomePage/HomePageDnD.d.ts +4 -4
  129. package/dist/components/HomePage/NavigationCard.d.ts +1 -1
  130. package/dist/components/HomePage/NavigationCardBinding.d.ts +2 -1
  131. package/dist/components/HomePage/NavigationGroup.d.ts +2 -2
  132. package/dist/components/HomePage/RenameGroupDialog.d.ts +2 -1
  133. package/dist/components/HomePage/SmallNavigationCard.d.ts +1 -1
  134. package/dist/components/PropertyCollectionView.d.ts +2 -1
  135. package/dist/components/PropertyIdCopyTooltip.d.ts +2 -2
  136. package/dist/components/RebaseAuthGate.d.ts +1 -1
  137. package/dist/components/RebaseLayout.d.ts +1 -1
  138. package/dist/components/RebaseNavigation.d.ts +1 -1
  139. package/dist/components/RebaseRouteDefs.d.ts +1 -1
  140. package/dist/components/RebaseShell.d.ts +1 -1
  141. package/dist/components/ReferenceTable/EntitySelectionTable.d.ts +1 -1
  142. package/dist/components/ReferenceWidget.d.ts +2 -1
  143. package/dist/components/SearchIconsView.d.ts +2 -1
  144. package/dist/components/SelectableTable/SelectableTable.d.ts +2 -2
  145. package/dist/components/SelectableTable/filters/BooleanFilterField.d.ts +2 -1
  146. package/dist/components/SelectableTable/filters/DateTimeFilterField.d.ts +2 -1
  147. package/dist/components/SelectableTable/filters/ReferenceFilterField.d.ts +2 -1
  148. package/dist/components/SelectableTable/filters/RelationFilterField.d.ts +2 -1
  149. package/dist/components/SelectableTable/filters/StringNumberFilterField.d.ts +2 -1
  150. package/dist/components/SideDialogs.d.ts +1 -1
  151. package/dist/components/SideEntityProvider.d.ts +1 -1
  152. package/dist/components/admin/CreationResultDialog.d.ts +2 -1
  153. package/dist/components/app/AppBar.d.ts +1 -1
  154. package/dist/components/app/Drawer.d.ts +1 -1
  155. package/dist/components/common/default_entity_actions.d.ts +2 -1
  156. package/dist/components/history/EntityHistoryEntry.d.ts +1 -1
  157. package/dist/components/history/EntityHistoryView.d.ts +1 -1
  158. package/dist/components/history/LastEditedByFormAction.d.ts +2 -1
  159. package/dist/components/history/LastEditedByIndicator.d.ts +2 -1
  160. package/dist/components/history/UserChip.d.ts +1 -1
  161. package/dist/data_export/export/BasicExportAction.d.ts +2 -1
  162. package/dist/data_export/export/ExportCollectionAction.d.ts +1 -1
  163. package/dist/data_import/components/DataNewPropertiesMapping.d.ts +1 -1
  164. package/dist/data_import/components/ImportFileUpload.d.ts +1 -1
  165. package/dist/data_import/components/ImportNewPropertyFieldPreview.d.ts +2 -1
  166. package/dist/data_import/components/ImportSaveInProgress.d.ts +1 -1
  167. package/dist/data_import/import/ImportCollectionAction.d.ts +4 -3
  168. package/dist/editor/components/SlashCommandMenu.d.ts +2 -1
  169. package/dist/editor/editor.d.ts +1 -1
  170. package/dist/editor/selectors/color-selector.d.ts +1 -1
  171. package/dist/editor/selectors/link-selector.d.ts +1 -1
  172. package/dist/editor/selectors/node-selector.d.ts +1 -1
  173. package/dist/editor/selectors/text-buttons.d.ts +1 -1
  174. package/dist/editor.js +2621 -3574
  175. package/dist/editor.js.map +1 -1
  176. package/dist/form/EntityForm.d.ts +2 -1
  177. package/dist/form/EntityFormActions.d.ts +2 -1
  178. package/dist/form/components/FieldHelperText.d.ts +1 -1
  179. package/dist/form/components/FormEntry.d.ts +1 -1
  180. package/dist/form/components/FormLayout.d.ts +1 -1
  181. package/dist/form/components/LabelWithIconAndTooltip.d.ts +1 -1
  182. package/dist/form/components/LocalChangesMenu.d.ts +2 -1
  183. package/dist/form/components/StorageItemPreview.d.ts +2 -1
  184. package/dist/form/components/StorageUploadProgress.d.ts +2 -1
  185. package/dist/form/field_bindings/ArrayCustomShapedFieldBinding.d.ts +2 -1
  186. package/dist/form/field_bindings/ArrayOfReferencesFieldBinding.d.ts +2 -1
  187. package/dist/form/field_bindings/BlockFieldBinding.d.ts +2 -1
  188. package/dist/form/field_bindings/DateTimeFieldBinding.d.ts +2 -1
  189. package/dist/form/field_bindings/KeyValueFieldBinding.d.ts +2 -1
  190. package/dist/form/field_bindings/MapFieldBinding.d.ts +2 -1
  191. package/dist/form/field_bindings/MarkdownEditorFieldBinding.d.ts +2 -1
  192. package/dist/form/field_bindings/MultiSelectFieldBinding.d.ts +2 -1
  193. package/dist/form/field_bindings/MultipleRelationFieldBinding.d.ts +2 -1
  194. package/dist/form/field_bindings/ReadOnlyFieldBinding.d.ts +2 -1
  195. package/dist/form/field_bindings/ReferenceAsStringFieldBinding.d.ts +2 -1
  196. package/dist/form/field_bindings/ReferenceFieldBinding.d.ts +2 -1
  197. package/dist/form/field_bindings/RelationFieldBinding.d.ts +2 -1
  198. package/dist/form/field_bindings/RepeatFieldBinding.d.ts +2 -1
  199. package/dist/form/field_bindings/SelectFieldBinding.d.ts +2 -1
  200. package/dist/form/field_bindings/StorageUploadFieldBinding.d.ts +3 -2
  201. package/dist/form/field_bindings/SwitchFieldBinding.d.ts +2 -1
  202. package/dist/form/field_bindings/TextFieldBinding.d.ts +2 -1
  203. package/dist/form/field_bindings/UserSelectFieldBinding.d.ts +2 -1
  204. package/dist/form/field_bindings/VectorFieldBinding.d.ts +2 -1
  205. package/dist/history-BL49TIDb.js +311 -0
  206. package/dist/history-BL49TIDb.js.map +1 -0
  207. package/dist/hooks/navigation/useBuildNavigationStateController.d.ts +0 -2
  208. package/dist/hooks/navigation/useNavigationResolution.d.ts +5 -6
  209. package/dist/hooks/navigation/useResolvedCollections.d.ts +0 -2
  210. package/dist/hooks/useBreadcrumbsController.d.ts +2 -32
  211. package/dist/index.js +2 -3393
  212. package/dist/markdown-CklalUUk.js +526 -0
  213. package/dist/markdown-CklalUUk.js.map +1 -0
  214. package/dist/preview/components/ArrayEnumPreview.d.ts +2 -1
  215. package/dist/preview/components/EmptyValue.d.ts +2 -1
  216. package/dist/preview/components/EnumValuesChip.d.ts +1 -1
  217. package/dist/preview/components/ImagePreview.d.ts +2 -1
  218. package/dist/preview/components/ReferencePreview.d.ts +2 -1
  219. package/dist/preview/components/RelationPreview.d.ts +2 -1
  220. package/dist/preview/components/StorageThumbnail.d.ts +1 -1
  221. package/dist/preview/components/UserPreview.d.ts +6 -3
  222. package/dist/preview/property_previews/ArrayOfMapsPreview.d.ts +2 -1
  223. package/dist/preview/property_previews/ArrayOfReferencesPreview.d.ts +1 -1
  224. package/dist/preview/property_previews/ArrayOfRelationsPreview.d.ts +1 -1
  225. package/dist/preview/property_previews/ArrayOfStorageComponentsPreview.d.ts +2 -1
  226. package/dist/preview/property_previews/ArrayOfStringsPreview.d.ts +2 -1
  227. package/dist/preview/property_previews/ArrayOneOfPreview.d.ts +2 -1
  228. package/dist/preview/property_previews/ArrayPropertyEnumPreview.d.ts +1 -1
  229. package/dist/preview/property_previews/ArrayPropertyPreview.d.ts +2 -1
  230. package/dist/preview/property_previews/MapPropertyPreview.d.ts +3 -2
  231. package/dist/preview/property_previews/SkeletonPropertyComponent.d.ts +5 -4
  232. package/dist/rolldown-runtime-D7D4PA-g.js +13 -0
  233. package/dist/routes/RebaseRoute.d.ts +1 -1
  234. package/dist/src-BJ8fkM8y.js +24010 -0
  235. package/dist/src-BJ8fkM8y.js.map +1 -0
  236. package/dist/types/components/PropertyPreviewProps.d.ts +4 -0
  237. package/dist/types/components/formex.d.ts +1 -40
  238. package/dist/types/fields.d.ts +9 -1
  239. package/dist/util/navigation_utils.d.ts +2 -1
  240. package/dist/util/previews.d.ts +5 -0
  241. package/dist/util/property_utils.d.ts +1 -1
  242. package/package.json +29 -27
  243. package/src/collection_editor/ConfigControllerProvider.tsx +10 -7
  244. package/src/collection_editor/ui/CollectionViewHeaderAction.tsx +2 -1
  245. package/src/collection_editor/ui/EditorCollectionAction.tsx +2 -1
  246. package/src/collection_editor/ui/EditorCollectionActionStart.tsx +2 -1
  247. package/src/collection_editor/ui/EditorEntityAction.tsx +2 -1
  248. package/src/collection_editor/ui/KanbanSetupAction.tsx +2 -1
  249. package/src/collection_editor/ui/MissingReferenceWidget.tsx +2 -1
  250. package/src/collection_editor/ui/PropertyAddColumnComponent.tsx +2 -1
  251. package/src/collection_editor/ui/collection_editor/CollectionDetailsForm.tsx +2 -3
  252. package/src/collection_editor/ui/collection_editor/CollectionEditorDialog.tsx +0 -1
  253. package/src/collection_editor/ui/collection_editor/CollectionPropertiesEditorForm.tsx +8 -4
  254. package/src/collection_editor/ui/collection_editor/CollectionRelationsTab.tsx +2 -2
  255. package/src/collection_editor/ui/collection_editor/DisplaySettingsForm.tsx +2 -1
  256. package/src/collection_editor/ui/collection_editor/PropertyEditView.tsx +2 -1
  257. package/src/collection_editor/ui/collection_editor/PropertyFieldPreview.tsx +2 -2
  258. package/src/collection_editor/ui/collection_editor/properties/RelationPropertyField.tsx +5 -2
  259. package/src/collection_editor/ui/collection_editor/properties/conditions/ConditionsEditor.tsx +2 -1
  260. package/src/collection_editor/ui/collection_editor/properties/conditions/EnumConditionsEditor.tsx +1 -1
  261. package/src/collection_editor/ui/collection_editor/templates/blog_template.ts +1 -1
  262. package/src/collection_editor/ui/collection_editor/templates/pages_template.ts +1 -1
  263. package/src/collection_editor/ui/collection_editor/templates/products_template.ts +1 -1
  264. package/src/collection_editor/ui/collection_editor/templates/users_template.ts +1 -1
  265. package/src/collection_editor/useLocalCollectionsConfigController.tsx +7 -2
  266. package/src/collection_editor/validateCollectionJson.ts +2 -2
  267. package/src/components/CollectionPanel.tsx +51 -25
  268. package/src/components/DefaultAppBar.tsx +1 -2
  269. package/src/components/DefaultDrawer.tsx +3 -2
  270. package/src/components/DrawerNavigationGroup.tsx +3 -2
  271. package/src/components/EntityCollectionTable/fields/TableReferenceField.tsx +30 -9
  272. package/src/components/EntityCollectionTable/internal/EntityTableCell.tsx +1 -1
  273. package/src/components/EntityCollectionTable/internal/popup_field/PopupFormField.tsx +1 -0
  274. package/src/components/EntityCollectionTable/internal/popup_field/useDraggable.tsx +5 -2
  275. package/src/components/EntityCollectionView/Board.tsx +10 -8
  276. package/src/components/EntityCollectionView/BoardSortableList.tsx +2 -2
  277. package/src/components/EntityCollectionView/EntityCollectionBoardView.tsx +4 -2
  278. package/src/components/EntityCollectionView/EntityCollectionCardView.tsx +14 -4
  279. package/src/components/EntityCollectionView/EntityCollectionListView.tsx +48 -26
  280. package/src/components/EntityCollectionView/EntityCollectionView.tsx +146 -73
  281. package/src/components/EntityCollectionView/EntityCollectionViewActions.tsx +2 -1
  282. package/src/components/EntityCollectionView/EntityCollectionViewStartActions.tsx +3 -2
  283. package/src/components/EntityCollectionView/FilterPresetsButton.tsx +4 -2
  284. package/src/components/EntityCollectionView/ViewModeToggle.tsx +0 -1
  285. package/src/components/EntityCollectionView/useBoardDataController.tsx +17 -15
  286. package/src/components/EntityCollectionView/useEntityPreviewSlots.ts +32 -23
  287. package/src/components/EntityDetailView.tsx +72 -39
  288. package/src/components/EntityEditView.tsx +79 -47
  289. package/src/components/EntitySidePanel.tsx +9 -3
  290. package/src/components/HomePage/ContentHomePage.tsx +3 -3
  291. package/src/components/HomePage/NavigationCard.tsx +5 -5
  292. package/src/components/HomePage/NavigationCardBinding.tsx +1 -1
  293. package/src/components/RebaseLayout.tsx +5 -2
  294. package/src/components/RebaseNavigation.tsx +1 -4
  295. package/src/components/RebaseRouteDefs.tsx +5 -3
  296. package/src/components/SearchIconsView.tsx +1 -1
  297. package/src/components/SelectableTable/SelectableTable.tsx +2 -3
  298. package/src/components/SelectableTable/SelectionStore.ts +9 -3
  299. package/src/components/UserSelector.tsx +92 -2
  300. package/src/components/common/default_entity_actions.tsx +23 -6
  301. package/src/components/field_configs.tsx +6 -3
  302. package/src/editor/editor.tsx +1 -1
  303. package/src/editor/extensions/Image/index.ts +2 -2
  304. package/src/editor/extensions/Image.ts +2 -2
  305. package/src/editor/extensions/clipboard.ts +2 -2
  306. package/src/editor/markdown-it-plugins.d.ts +24 -0
  307. package/src/editor/markdown.ts +2 -3
  308. package/src/form/EntityForm.tsx +21 -15
  309. package/src/form/PropertyFieldBinding.tsx +1 -1
  310. package/src/form/field_bindings/KeyValueFieldBinding.tsx +1 -1
  311. package/src/form/field_bindings/MapFieldBinding.tsx +5 -47
  312. package/src/form/field_bindings/VectorFieldBinding.tsx +3 -3
  313. package/src/form/validation.ts +17 -15
  314. package/src/hooks/navigation/useBuildNavigationStateController.tsx +3 -6
  315. package/src/hooks/navigation/useNavigationResolution.ts +143 -19
  316. package/src/hooks/navigation/useResolvedCollections.ts +4 -6
  317. package/src/hooks/useBreadcrumbsController.tsx +2 -34
  318. package/src/hooks/useBuildSideEntityController.tsx +25 -3
  319. package/src/preview/PropertyPreview.tsx +6 -2
  320. package/src/preview/components/ReferencePreview.tsx +64 -13
  321. package/src/preview/components/RelationPreview.tsx +101 -13
  322. package/src/preview/components/UserPreview.tsx +5 -14
  323. package/src/preview/property_previews/ArrayOfMapsPreview.tsx +1 -1
  324. package/src/routes/RebaseRoute.tsx +5 -4
  325. package/src/types/components/PropertyPreviewProps.tsx +5 -0
  326. package/src/types/components/formex.tsx +1 -45
  327. package/src/types/fields.tsx +10 -1
  328. package/src/util/navigation_utils.ts +14 -4
  329. package/src/util/previews.ts +101 -4
  330. package/dist/CollectionEditorDialog-Bo86h-d-.js +0 -4574
  331. package/dist/CollectionEditorDialog-Bo86h-d-.js.map +0 -1
  332. package/dist/CollectionsStudioView-bsg4AT_Z.js +0 -217
  333. package/dist/CollectionsStudioView-bsg4AT_Z.js.map +0 -1
  334. package/dist/ExportCollectionAction-Cf-Id5uO.js +0 -446
  335. package/dist/ExportCollectionAction-Cf-Id5uO.js.map +0 -1
  336. package/dist/ImportCollectionAction-LN5sreK9.js +0 -685
  337. package/dist/ImportCollectionAction-LN5sreK9.js.map +0 -1
  338. package/dist/PropertyEditView-jCWCxmCz.js +0 -8197
  339. package/dist/PropertyEditView-jCWCxmCz.js.map +0 -1
  340. package/dist/collection_editor_ui.js.map +0 -1
  341. package/dist/index-BrqSvMG0.js +0 -8
  342. package/dist/index-BrqSvMG0.js.map +0 -1
  343. package/dist/index-Cb0bPnzZ.js +0 -12
  344. package/dist/index-Cb0bPnzZ.js.map +0 -1
  345. package/dist/index-z3H8iqsj.js +0 -462
  346. package/dist/index-z3H8iqsj.js.map +0 -1
  347. package/dist/index.js.map +0 -1
  348. package/dist/markdown-DD2JDU1X.js +0 -618
  349. package/dist/markdown-DD2JDU1X.js.map +0 -1
  350. package/dist/useEntityHistory-UVsSclfZ.js +0 -123
  351. package/dist/useEntityHistory-UVsSclfZ.js.map +0 -1
  352. package/dist/util-CvNp6A-r.js +0 -30505
  353. package/dist/util-CvNp6A-r.js.map +0 -1
@@ -44,4 +44,8 @@ export interface PropertyPreviewProps<P extends Property | Property, CustomProps
44
44
  * Only applies to image type properties.
45
45
  */
46
46
  fill?: boolean;
47
+ /**
48
+ * If true, relations/references will render as plain text strings rather than full cards.
49
+ */
50
+ textOnly?: boolean;
47
51
  }
@@ -1,40 +1 @@
1
- import React, { FormEvent } from "react";
2
- export type FormexController<T extends object> = {
3
- values: T;
4
- initialValues: T;
5
- setValues: (values: T) => void;
6
- setFieldValue: (key: string, value: unknown, shouldValidate?: boolean) => void;
7
- touched: Record<string, boolean>;
8
- setFieldTouched: (key: string, touched: boolean, shouldValidate?: boolean) => void;
9
- setTouched: (touched: Record<string, boolean>) => void;
10
- dirty: boolean;
11
- setDirty: (dirty: boolean) => void;
12
- setSubmitCount: (submitCount: number) => void;
13
- errors: Record<string, string>;
14
- setFieldError: (key: string, error?: string) => void;
15
- handleChange: (event: React.SyntheticEvent) => void;
16
- handleBlur: (event: React.FocusEvent) => void;
17
- handleSubmit: (event?: FormEvent<HTMLFormElement>) => void;
18
- validate: () => void;
19
- resetForm: (props?: FormexResetProps<T>) => void;
20
- submitCount: number;
21
- isSubmitting: boolean;
22
- setSubmitting: (isSubmitting: boolean) => void;
23
- isValidating: boolean;
24
- /**
25
- * The version of the form. This is incremented every time the form is reset
26
- * or the form is submitted.
27
- */
28
- version: number;
29
- debugId?: string;
30
- undo: () => void;
31
- redo: () => void;
32
- canUndo: boolean;
33
- canRedo: boolean;
34
- };
35
- export type FormexResetProps<T extends object> = {
36
- values?: T;
37
- submitCount?: number;
38
- errors?: Record<string, string>;
39
- touched?: Record<string, boolean>;
40
- };
1
+ export type { FormexController, FormexResetProps } from "@rebasepro/formex";
@@ -123,9 +123,17 @@ export interface FormContext<M extends Record<string, unknown> = Record<string,
123
123
  */
124
124
  setFieldValue: (key: string, value: unknown, shouldValidate?: boolean) => void;
125
125
  /**
126
- * Save the entity.
126
+ * Quietly persist the entity to the database without any UI feedback
127
+ * (no validation, no snackbar, no form reset).
128
+ * Use this for programmatic/background saves from custom views.
127
129
  */
128
130
  save: (values: M) => void;
131
+ /**
132
+ * Submit the form — validates, saves, resets the form, and shows
133
+ * a success snackbar. This is what the Save button calls.
134
+ * Use this from custom views when you want the full "user saved" experience.
135
+ */
136
+ submit: () => void;
129
137
  /**
130
138
  * Collection of the entity being modified
131
139
  */
@@ -4,7 +4,7 @@ export { removeInitialAndTrailingSlashes, removeInitialSlash, removeTrailingSlas
4
4
  * Navigate to an entity using either a side panel or full-screen mode.
5
5
  * This is an admin-specific UI concern and lives here (not in common).
6
6
  */
7
- export declare function navigateToEntity({ openEntityMode, collection, entityId, copy, path, selectedTab, defaultValues, sideEntityController, onClose, navigation }: {
7
+ export declare function navigateToEntity({ openEntityMode, collection, entityId, copy, path, selectedTab, defaultValues, sideEntityController, onClose, navigation, replace }: {
8
8
  openEntityMode: "side_panel" | "full_screen" | "split" | "dialog";
9
9
  collection?: EntityCollection;
10
10
  entityId?: string | number;
@@ -23,4 +23,5 @@ export declare function navigateToEntity({ openEntityMode, collection, entityId,
23
23
  sideEntityController: SideEntityController;
24
24
  onClose?: () => void;
25
25
  navigation: UrlController;
26
+ replace?: boolean;
26
27
  }): void;
@@ -2,3 +2,8 @@ import type { EntityCollection, PropertyConfig } from "@rebasepro/types";
2
2
  import { AuthController } from "@rebasepro/types";
3
3
  export declare function getEntityPreviewKeys(authController: AuthController, targetCollection: EntityCollection<any>, fields: Record<string, PropertyConfig>, previewProperties?: string[], limit?: number): string[];
4
4
  export declare function getEntityTitlePropertyKey<M extends Record<string, unknown>>(collection: EntityCollection<M>, propertyConfigs: Record<string, PropertyConfig>): string | undefined;
5
+ /**
6
+ * Attempt to turn a title value (which might be a relation, reference, date, array, or other complex object)
7
+ * into a renderable, human-readable string.
8
+ */
9
+ export declare function resolveTitleToString(title: any): string;
@@ -4,7 +4,7 @@ import React from "react";
4
4
  import type { IconSize } from "@rebasepro/ui";
5
5
  export declare function isReferenceProperty(property: Property): boolean | null;
6
6
  export declare function isRelationProperty(property: Property): boolean | null;
7
- export declare function getIconForWidget(widget: PropertyConfig | undefined, size: IconSize | number): import("react/jsx-runtime").JSX.Element;
7
+ export declare function getIconForWidget(widget: PropertyConfig | undefined, size: IconSize | number): React.JSX.Element;
8
8
  export declare function getIconForProperty(property: Property, size?: IconSize | number, fields?: Record<string, PropertyConfig>): React.ReactNode;
9
9
  /**
10
10
  * Get a property in a property tree from a path like
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@rebasepro/admin",
3
3
  "type": "module",
4
- "version": "0.4.0",
4
+ "version": "0.6.0",
5
5
  "description": "Rebase CMS — content management views, forms, and routing",
6
6
  "funding": {
7
7
  "url": "https://github.com/sponsors/rebaseco"
@@ -56,13 +56,13 @@
56
56
  "@dnd-kit/utilities": "^3.2.2",
57
57
  "@floating-ui/dom": "^1.7.6",
58
58
  "cmdk": "^1.1.1",
59
- "date-fns": "^3.6.0",
59
+ "date-fns": "^4.4.0",
60
60
  "exceljs": "^4.4.0",
61
61
  "fast-equals": "6.0.0",
62
62
  "fractional-indexing": "3.2.0",
63
- "fuse.js": "^7.3.0",
63
+ "fuse.js": "^7.4.2",
64
64
  "json5": "^2.2.3",
65
- "markdown-it": "^14.1.1",
65
+ "markdown-it": "^14.2.0",
66
66
  "markdown-it-ins": "^4.0.0",
67
67
  "markdown-it-mark": "^4.0.0",
68
68
  "markdown-it-task-lists": "^2.1.1",
@@ -74,23 +74,22 @@
74
74
  "prosemirror-inputrules": "^1.5.1",
75
75
  "prosemirror-keymap": "^1.2.3",
76
76
  "prosemirror-markdown": "^1.13.4",
77
- "prosemirror-model": "^1.25.7",
77
+ "prosemirror-model": "^1.25.8",
78
78
  "prosemirror-schema-list": "^1.5.1",
79
79
  "prosemirror-state": "^1.4.4",
80
80
  "prosemirror-tables": "^1.8.5",
81
81
  "prosemirror-transform": "^1.12.0",
82
- "prosemirror-view": "^1.41.8",
83
- "react-compiler-runtime": "1.0.0",
84
- "react-dropzone": "^14.4.1",
82
+ "prosemirror-view": "^1.41.9",
83
+ "react-dropzone": "^15.0.0",
85
84
  "react-use-measure": "^2.1.7",
86
- "zod": "^3.25.76",
87
- "@rebasepro/core": "0.4.0",
88
- "@rebasepro/common": "0.4.0",
89
- "@rebasepro/formex": "0.4.0",
90
- "@rebasepro/schema-inference": "0.4.0",
91
- "@rebasepro/types": "0.4.0",
92
- "@rebasepro/utils": "0.4.0",
93
- "@rebasepro/ui": "0.4.0"
85
+ "zod": "^4.4.3",
86
+ "@rebasepro/common": "0.6.0",
87
+ "@rebasepro/core": "0.6.0",
88
+ "@rebasepro/formex": "0.6.0",
89
+ "@rebasepro/schema-inference": "0.6.0",
90
+ "@rebasepro/types": "0.6.0",
91
+ "@rebasepro/ui": "0.6.0",
92
+ "@rebasepro/utils": "0.6.0"
94
93
  },
95
94
  "peerDependencies": {
96
95
  "react": ">=19.0.0",
@@ -101,19 +100,19 @@
101
100
  "devDependencies": {
102
101
  "@jest/globals": "^30.4.1",
103
102
  "@testing-library/react": "^16.3.2",
104
- "@types/jest": "^29.5.14",
103
+ "@types/jest": "^30.0.0",
105
104
  "@types/markdown-it": "^14.1.2",
106
- "@types/node": "^20.19.41",
107
- "@types/react": "^19.2.15",
105
+ "@types/node": "^25.9.3",
106
+ "@types/react": "^19.2.17",
108
107
  "@types/react-dom": "^19.2.3",
109
108
  "@types/react-measure": "^2.0.12",
110
- "@vitejs/plugin-react": "^4.7.0",
111
- "jest": "^29.7.0",
112
- "react-router": "^7.15.1",
113
- "react-router-dom": "^7.15.1",
114
- "ts-jest": "^29.4.10",
115
- "typescript": "^5.9.3",
116
- "vite": "^7.3.3"
109
+ "@vitejs/plugin-react": "^6.0.2",
110
+ "jest": "^30.4.2",
111
+ "react-router": "^7.17.0",
112
+ "react-router-dom": "^7.17.0",
113
+ "ts-jest": "^29.4.11",
114
+ "typescript": "^6.0.3",
115
+ "vite": "^8.0.16"
117
116
  },
118
117
  "files": [
119
118
  "dist",
@@ -131,7 +130,7 @@
131
130
  },
132
131
  "jest": {
133
132
  "transform": {
134
- "^.+\\.tsx?$": "ts-jest"
133
+ "^.+\\.[jt]sx?$": "ts-jest"
135
134
  },
136
135
  "testRegex": "(/__tests__/.*|(\\.|/)(test|spec))\\.tsx?$",
137
136
  "moduleFileExtensions": [
@@ -146,6 +145,9 @@
146
145
  "testPathIgnorePatterns": [
147
146
  "/node_modules/"
148
147
  ],
148
+ "transformIgnorePatterns": [
149
+ "node_modules/(?!.*fractional-indexing)/"
150
+ ],
149
151
  "setupFilesAfterEnv": [
150
152
  "<rootDir>/test/setupTests.ts"
151
153
  ],
@@ -27,7 +27,6 @@ export interface ConfigControllerProviderProps {
27
27
  collectionInference?: CollectionInference;
28
28
 
29
29
 
30
-
31
30
  extraView?: {
32
31
  View: React.ComponentType<{
33
32
  path: string
@@ -119,7 +118,6 @@ export const ConfigControllerProvider = React.memo(
119
118
  }>();
120
119
 
121
120
 
122
-
123
121
  const editCollection = useCallback(({
124
122
  id,
125
123
  path,
@@ -145,7 +143,8 @@ export const ConfigControllerProvider = React.memo(
145
143
  setCurrentDialog({
146
144
  editedCollectionId: id,
147
145
  path,
148
- parentCollectionSlugs, parentEntityIds,
146
+ parentCollectionSlugs,
147
+ parentEntityIds,
149
148
  isNewCollection: false,
150
149
  parentCollection,
151
150
  redirect: false,
@@ -191,7 +190,8 @@ export const ConfigControllerProvider = React.memo(
191
190
  namespace,
192
191
  currentPropertiesOrder,
193
192
  editedCollectionId,
194
- parentCollectionSlugs, parentEntityIds,
193
+ parentCollectionSlugs,
194
+ parentEntityIds,
195
195
 
196
196
  existingEntities,
197
197
  collection
@@ -217,7 +217,8 @@ export const ConfigControllerProvider = React.memo(
217
217
  sourceClick?: string
218
218
  }) => {
219
219
  console.debug("Create collection", {
220
- parentCollectionSlugs, parentEntityIds,
220
+ parentCollectionSlugs,
221
+ parentEntityIds,
221
222
  parentCollection,
222
223
  initialValues,
223
224
  copyFrom,
@@ -225,7 +226,8 @@ export const ConfigControllerProvider = React.memo(
225
226
  sourceClick
226
227
  });
227
228
  onAnalyticsEvent?.(copyFrom ? "duplicate_collection" : "create_collection", {
228
- parentCollectionSlugs, parentEntityIds,
229
+ parentCollectionSlugs,
230
+ parentEntityIds,
229
231
  parentCollection,
230
232
  initialValues,
231
233
  redirect,
@@ -233,7 +235,8 @@ export const ConfigControllerProvider = React.memo(
233
235
  });
234
236
  setCurrentDialog({
235
237
  isNewCollection: true,
236
- parentCollectionSlugs, parentEntityIds,
238
+ parentCollectionSlugs,
239
+ parentEntityIds,
237
240
  parentCollection,
238
241
  initialValues,
239
242
  copyFrom,
@@ -36,7 +36,8 @@ export function CollectionViewHeaderAction({
36
36
  propertyKey,
37
37
  property,
38
38
  editedCollectionId: collection.slug,
39
- parentCollectionSlugs, parentEntityIds,
39
+ parentCollectionSlugs,
40
+ parentEntityIds,
40
41
  collection,
41
42
  existingEntities: tableController.data ?? []
42
43
  });
@@ -36,7 +36,8 @@ export function EditorCollectionAction({
36
36
  ? () => collectionEditorController?.editCollection({
37
37
  id: collection.slug,
38
38
  path,
39
- parentCollectionSlugs, parentEntityIds,
39
+ parentCollectionSlugs,
40
+ parentEntityIds,
40
41
  parentCollection: parentCollection as EntityCollection,
41
42
  existingEntities: tableController?.data ?? []
42
43
  })
@@ -40,7 +40,8 @@ export function EditorCollectionActionStart({
40
40
  onClick={() => configController
41
41
  ?.saveCollection({
42
42
  id: collection.slug,
43
- parentCollectionSlugs, parentEntityIds,
43
+ parentCollectionSlugs,
44
+ parentEntityIds,
44
45
  collectionData: mergeDeep(collection as EntityCollection,
45
46
  {
46
47
  defaultFilter: tableController.filterValues ?? null,
@@ -33,7 +33,8 @@ export function EditorEntityAction({
33
33
  ? () => collectionEditorController?.editCollection({
34
34
  id: collection.slug,
35
35
  path,
36
- parentCollectionSlugs, parentEntityIds,
36
+ parentCollectionSlugs,
37
+ parentEntityIds,
37
38
  parentCollection: parentCollection as EntityCollection
38
39
  })
39
40
  : undefined}>
@@ -24,7 +24,8 @@ export function KanbanSetupAction({
24
24
  const handleConfigureClick = () => {
25
25
  collectionEditorController.editCollection({
26
26
  id: collection.slug,
27
- parentCollectionSlugs, parentEntityIds,
27
+ parentCollectionSlugs,
28
+ parentEntityIds,
28
29
  initialView: "display",
29
30
  expandKanban: true
30
31
  });
@@ -22,7 +22,8 @@ export function MissingReferenceWidget({ path: pathProp }: {
22
22
  collectionEditor.createCollection({
23
23
  initialValues: { path,
24
24
  name: prettifyIdentifier(path) },
25
- parentCollectionSlugs, parentEntityIds,
25
+ parentCollectionSlugs,
26
+ parentEntityIds,
26
27
  redirect: false,
27
28
  sourceClick: "missing_reference"
28
29
  });
@@ -34,7 +34,8 @@ export function PropertyAddColumnComponent({
34
34
  onClick={canEditCollection ? () => {
35
35
  collectionEditorController.editProperty({
36
36
  editedCollectionId: collection.slug,
37
- parentCollectionSlugs, parentEntityIds,
37
+ parentCollectionSlugs,
38
+ parentEntityIds,
38
39
  currentPropertiesOrder: getDefaultPropertiesOrder(collection),
39
40
  collection,
40
41
  existingEntities: tableController.data
@@ -111,7 +111,6 @@ export function CollectionDetailsForm({
111
111
  const collectionIcon = <IconForView collectionOrView={values}/>;
112
112
 
113
113
 
114
-
115
114
  const isSubcollection = !!parentCollection;
116
115
 
117
116
  const showErrors = submitCount > 0;
@@ -177,7 +176,6 @@ export function CollectionDetailsForm({
177
176
  </div>
178
177
 
179
178
 
180
-
181
179
  <LayoutModeSwitch
182
180
  className={"col-span-12"}
183
181
  value={values.openEntityMode ?? "side_panel"}
@@ -296,7 +294,8 @@ export function CollectionDetailsForm({
296
294
  property={{
297
295
  type: "string",
298
296
  name: dialogPropertyName,
299
- ui: { disabled: true, hideFromCollection: true }
297
+ ui: { disabled: true,
298
+ hideFromCollection: true }
300
299
  }}
301
300
  propertyKey={dialogPropertyKey}
302
301
  existingProperty={false}
@@ -212,7 +212,6 @@ export function CollectionEditor(props: CollectionEditorDialogProps & {
212
212
  }, [props.editedCollectionId, props.parentCollectionSlugs, props.parentEntityIds, collectionRegistry.initialised, collectionRegistry.getRawCollection]);
213
213
 
214
214
 
215
-
216
215
  const initialCollection = collection
217
216
  ? {
218
217
  ...collection,
@@ -100,15 +100,19 @@ export function CollectionPropertiesEditorForm({
100
100
 
101
101
  const inferPropertiesFromData = doCollectionInference
102
102
  ? (): void => {
103
- if (!doCollectionInference || configController?.readOnly)
103
+ const inferenceFn = doCollectionInference;
104
+ if (!inferenceFn || configController?.readOnly)
104
105
  return;
105
106
 
106
107
  setInferringProperties(true);
107
108
 
108
109
  console.debug("CollectionEditor: inferring properties from data", values);
109
- // @ts-ignore
110
- doCollectionInference(values)
111
- .then((newCollection) => {
110
+ const promise = inferenceFn(values);
111
+ if (!promise) {
112
+ setInferringProperties(false);
113
+ return;
114
+ }
115
+ promise.then((newCollection) => {
112
116
 
113
117
  if (!newCollection) {
114
118
  snackbarController.open({
@@ -85,7 +85,7 @@ export function CollectionRelationsTab() {
85
85
  <Button variant="filled" color="neutral" onClick={() => {
86
86
  setEditingRelationIndex(-1);
87
87
  setEditingRelationState({ relationName: "",
88
- target: "" as unknown as Relation["target"],
88
+ target: "",
89
89
  cardinality: "many",
90
90
  direction: "owning" });
91
91
  }}>
@@ -134,7 +134,7 @@ direction: "owning" });
134
134
  <Button variant="text" onClick={() => {
135
135
  setEditingRelationIndex(-1);
136
136
  setEditingRelationState({ relationName: "",
137
- target: "" as unknown as Relation["target"],
137
+ target: "",
138
138
  cardinality: "many",
139
139
  direction: "owning" });
140
140
  }}>Create your first relation</Button>
@@ -196,7 +196,8 @@ export function DisplaySettingsForm({
196
196
  property={{
197
197
  type: "string",
198
198
  name: dialogPropertyName,
199
- ui: { disabled: true, hideFromCollection: true }
199
+ ui: { disabled: true,
200
+ hideFromCollection: true }
200
201
  }}
201
202
  propertyKey={dialogPropertyKey}
202
203
  existingProperty={false}
@@ -50,7 +50,8 @@ import { MarkdownPropertyField } from "./properties/MarkdownPropertyField";
50
50
  import { isValidRegExp, mergeDeep } from "@rebasepro/utils";
51
51
 
52
52
  export type PropertyWithId = Property & {
53
- id?: string
53
+ id?: string;
54
+ conditions?: import("@rebasepro/types").PropertyConditions;
54
55
  };
55
56
 
56
57
  export type OnPropertyChangedParams = {
@@ -76,7 +76,7 @@ export function PropertyFieldPreview({
76
76
 
77
77
  <ErrorBoundary>
78
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 Property & { columnType?: string }).columnType : undefined) || property.type}
79
+ {"columnType" in property ? (property as { columnType?: string }).columnType ?? property.type : property.type}
80
80
  </Typography>
81
81
  </ErrorBoundary>
82
82
 
@@ -146,7 +146,7 @@ export function NonEditablePropertyPreview({
146
146
 
147
147
  {property && !isPropertyBuilder(property) && <ErrorBoundary>
148
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 Property & { columnType?: string }).columnType : undefined) || property.type}
149
+ {"columnType" in property ? (property as { columnType?: string }).columnType ?? property.type : property.type}
150
150
  </Typography>
151
151
  </ErrorBoundary>}
152
152
  </Paper>
@@ -71,8 +71,11 @@ export function RelationPropertyField({
71
71
 
72
72
  const updateThrough = useCallback(
73
73
  (patch: Record<string, unknown>) => {
74
- const currentThrough = values.through ?? { table: "", sourceColumn: "", targetColumn: "" };
75
- setFieldValue("through", { ...currentThrough, ...patch });
74
+ const currentThrough = values.through ?? { table: "",
75
+ sourceColumn: "",
76
+ targetColumn: "" };
77
+ setFieldValue("through", { ...currentThrough,
78
+ ...patch });
76
79
  },
77
80
  [values.through, setFieldValue]
78
81
  );
@@ -18,6 +18,7 @@ import {
18
18
  } from "@rebasepro/ui";
19
19
  import { getFieldConfig, DEFAULT_FIELD_CONFIGS } from "../../../../_cms_internals";
20
20
  import { Properties, Property, EnumValueConfig } from "@rebasepro/types";
21
+ import type { PropertyConditions } from "@rebasepro/types";
21
22
  import { isPropertyBuilder } from "@rebasepro/common";
22
23
  import { PropertyWithId } from "../../PropertyEditView";
23
24
  import { getPropertyPaths } from "./property_paths";
@@ -817,7 +818,7 @@ export function ConditionsEditor({ disabled, collectionProperties }: ConditionsE
817
818
  : [];
818
819
 
819
820
  // Get current conditions from form values
820
- const conditions: Record<string, unknown> = (values as PropertyWithId & { conditions?: Record<string, unknown> }).conditions ?? {};
821
+ const conditions: PropertyConditions = values.conditions ?? {};
821
822
 
822
823
  const activeConditions: { type: ConditionType; group: ConditionGroup }[] = [];
823
824
 
@@ -528,7 +528,7 @@ export function EnumConditionsEditor({ disabled, collectionProperties }: EnumCon
528
528
  const allEnumIds = propertyEnumValues.map(ev => String(ev.id));
529
529
 
530
530
  // Get conditions from the correct path: values.conditions
531
- const conditions = (values as PropertyWithId & { conditions?: Record<string, unknown> }).conditions ?? {};
531
+ const conditions = values.conditions ?? {};
532
532
 
533
533
  // Parse existing enum conditions
534
534
  const activeConditions: { type: EnumConditionType; config: EnumConditionConfig }[] = [];
@@ -1,4 +1,4 @@
1
- import { EntityCollection } from "@rebasepro/types";
1
+ import type { EntityCollection } from "@rebasepro/types";
2
2
 
3
3
  export const blogCollectionTemplate = {
4
4
  slug: "blog",
@@ -1,4 +1,4 @@
1
- import { EntityCollection } from "@rebasepro/types";
1
+ import type { EntityCollection } from "@rebasepro/types";
2
2
 
3
3
  export const pagesCollectionTemplate = {
4
4
  slug: "pages",
@@ -1,4 +1,4 @@
1
- import { EntityCollection } from "@rebasepro/types";
1
+ import type { EntityCollection } from "@rebasepro/types";
2
2
 
3
3
  export const productsCollectionTemplate = {
4
4
  slug: "products",
@@ -1,4 +1,4 @@
1
- import { EntityCollection } from "@rebasepro/types";
1
+ import type { EntityCollection } from "@rebasepro/types";
2
2
 
3
3
  export const usersCollectionTemplate = {
4
4
  slug: "users",
@@ -3,7 +3,7 @@ import { EntityCollection, Properties } from "@rebasepro/types";
3
3
  import { getSubcollections } from "@rebasepro/common";
4
4
 
5
5
 
6
- import React, { useMemo } from "react";
6
+ import React, { useMemo, useRef } from "react";
7
7
  export function useLocalCollectionsConfigController(
8
8
  clientOrUrl: any,
9
9
  baseCollections: EntityCollection[] = [],
@@ -14,10 +14,15 @@ export function useLocalCollectionsConfigController(
14
14
  ): CollectionsConfigController {
15
15
 
16
16
  const parsedCollections = baseCollections;
17
+
18
+ // Store latest options in a ref to prevent stale closures in the `request` function
19
+ // due to useMemo caching the saveCollection function.
20
+ const optionsRef = useRef(options);
21
+ optionsRef.current = options;
17
22
 
18
23
  const request = async (endpoint: string, payload: Record<string, unknown>) => {
19
24
  try {
20
- let token = options?.getAuthToken ? await options.getAuthToken() : null;
25
+ let token = optionsRef.current?.getAuthToken ? await optionsRef.current.getAuthToken() : null;
21
26
  let baseUrl = typeof clientOrUrl === "string" ? clientOrUrl : "";
22
27
 
23
28
  if (typeof clientOrUrl === "object" && clientOrUrl !== null) {
@@ -1,4 +1,5 @@
1
- import { EntityCollection } from "@rebasepro/types";
1
+ import { DataType, EntityCollection } from "@rebasepro/types";
2
+
2
3
 
3
4
  /**
4
5
  * Valid dataType values for properties
@@ -17,7 +18,6 @@ const VALID_DATA_TYPES = [
17
18
  "binary"
18
19
  ] as const;
19
20
 
20
- type DataType = typeof VALID_DATA_TYPES[number];
21
21
 
22
22
  /**
23
23
  * Validation error with path and message