@rebasepro/cms 0.17.3 → 0.18.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 (449) hide show
  1. package/README.md +4 -0
  2. package/dist/{CollectionEditorDialog-B-akreOU.js → CollectionEditorDialog-BeX4b92r.js} +13 -7
  3. package/dist/{CollectionEditorDialog-B-akreOU.js.map → CollectionEditorDialog-BeX4b92r.js.map} +1 -1
  4. package/dist/{PropertyEditView-CiY84wkR.js → PropertyEditView-C7thfj4L.js} +3 -3
  5. package/dist/{PropertyEditView-CiY84wkR.js.map → PropertyEditView-C7thfj4L.js.map} +1 -1
  6. package/dist/{RouterCollectionsStudioView-DkAWda4N.js → RouterCollectionsStudioView-BtjzvB6E.js} +4 -4
  7. package/dist/{RouterCollectionsStudioView-DkAWda4N.js.map → RouterCollectionsStudioView-BtjzvB6E.js.map} +1 -1
  8. package/dist/{SchemaChangeDialog-DceT8QFX.js → SchemaChangeDialog-CkqK6KOC.js} +4 -2
  9. package/dist/{SchemaChangeDialog-DceT8QFX.js.map → SchemaChangeDialog-CkqK6KOC.js.map} +1 -1
  10. package/dist/collection_editor/api/generateCollectionApi.d.ts +1 -2
  11. package/dist/collection_editor_ui.d.ts +2 -0
  12. package/dist/collection_editor_ui.js +6 -5
  13. package/dist/collection_editor_ui.js.map +1 -1
  14. package/dist/components/DeleteEntityDialog.d.ts +2 -3
  15. package/dist/components/RebaseLayout.d.ts +11 -4
  16. package/dist/components/field_configs.d.ts +1 -1
  17. package/dist/editor/sanitize-html.d.ts +15 -0
  18. package/dist/editor.js +195 -10
  19. package/dist/editor.js.map +1 -1
  20. package/dist/{export-Ben8E355.js → export--arni_VY.js} +2 -2
  21. package/dist/{export-Ben8E355.js.map → export--arni_VY.js.map} +1 -1
  22. package/dist/form/components/LabelWithIcon.d.ts +10 -0
  23. package/dist/{history-DIEVd26f.js → history-C2TpoQwi.js} +2 -2
  24. package/dist/{history-DIEVd26f.js.map → history-C2TpoQwi.js.map} +1 -1
  25. package/dist/hooks/navigation/useBuildNavigationStateController.d.ts +1 -1
  26. package/dist/hooks/navigation/useResolvedViews.d.ts +1 -1
  27. package/dist/hooks/navigation/useTopLevelNavigation.d.ts +1 -1
  28. package/dist/{import-D25x7ko-.js → import-DTkXNoBg.js} +2 -2
  29. package/dist/{import-D25x7ko-.js.map → import-DTkXNoBg.js.map} +1 -1
  30. package/dist/index.js +78 -33
  31. package/dist/index.js.map +1 -1
  32. package/dist/util/propertyConfigMapper.d.ts +1 -1
  33. package/dist/util-CfLFggP7.js +57 -0
  34. package/dist/util-CfLFggP7.js.map +1 -0
  35. package/dist/{util-DVqnqlLn.js → util-DE1WQW6h.js} +134 -112
  36. package/dist/util-DE1WQW6h.js.map +1 -0
  37. package/package.json +42 -34
  38. package/dist/util-DVqnqlLn.js.map +0 -1
  39. package/src/collection_editor/CollectionEditorDialogsContext.tsx +0 -25
  40. package/src/collection_editor/ConfigControllerProvider.tsx +0 -395
  41. package/src/collection_editor/_cms_internals.ts +0 -41
  42. package/src/collection_editor/api/generateCollectionApi.ts +0 -126
  43. package/src/collection_editor/api/index.ts +0 -1
  44. package/src/collection_editor/extensibility_types.ts +0 -168
  45. package/src/collection_editor/index.ts +0 -108
  46. package/src/collection_editor/liveSchemaClient.ts +0 -285
  47. package/src/collection_editor/relation_kinds.ts +0 -44
  48. package/src/collection_editor/serializable_types.ts +0 -535
  49. package/src/collection_editor/serializable_utils.ts +0 -729
  50. package/src/collection_editor/types/collection_editor_controller.tsx +0 -62
  51. package/src/collection_editor/types/collection_inference.ts +0 -18
  52. package/src/collection_editor/types/config_controller.tsx +0 -121
  53. package/src/collection_editor/ui/AddKanbanColumnAction.tsx +0 -199
  54. package/src/collection_editor/ui/CollectionViewHeaderAction.tsx +0 -51
  55. package/src/collection_editor/ui/EditorCollectionAction.tsx +0 -54
  56. package/src/collection_editor/ui/EditorCollectionActionStart.tsx +0 -90
  57. package/src/collection_editor/ui/EditorEntityAction.tsx +0 -50
  58. package/src/collection_editor/ui/HomePageEditorCollectionAction.tsx +0 -114
  59. package/src/collection_editor/ui/KanbanSetupAction.tsx +0 -43
  60. package/src/collection_editor/ui/MissingReferenceWidget.tsx +0 -35
  61. package/src/collection_editor/ui/NewCollectionButton.tsx +0 -27
  62. package/src/collection_editor/ui/NewCollectionCard.tsx +0 -48
  63. package/src/collection_editor/ui/PropertyAddColumnComponent.tsx +0 -49
  64. package/src/collection_editor/ui/collection_editor/AICollectionGeneratorPopover.tsx +0 -260
  65. package/src/collection_editor/ui/collection_editor/AIModifiedPathsContext.tsx +0 -90
  66. package/src/collection_editor/ui/collection_editor/CollectionDetailsForm.tsx +0 -388
  67. package/src/collection_editor/ui/collection_editor/CollectionEditorDialog.tsx +0 -1098
  68. package/src/collection_editor/ui/collection_editor/CollectionEditorWelcomeView.tsx +0 -301
  69. package/src/collection_editor/ui/collection_editor/CollectionJsonImportDialog.tsx +0 -172
  70. package/src/collection_editor/ui/collection_editor/CollectionPropertiesEditorForm.tsx +0 -620
  71. package/src/collection_editor/ui/collection_editor/CollectionRLSTab.tsx +0 -530
  72. package/src/collection_editor/ui/collection_editor/CollectionRelationsTab.tsx +0 -462
  73. package/src/collection_editor/ui/collection_editor/CollectionStudioView.tsx +0 -104
  74. package/src/collection_editor/ui/collection_editor/CollectionYupValidation.tsx +0 -9
  75. package/src/collection_editor/ui/collection_editor/CollectionsStudioView.tsx +0 -199
  76. package/src/collection_editor/ui/collection_editor/DisplaySettingsForm.tsx +0 -315
  77. package/src/collection_editor/ui/collection_editor/EntityActionsEditTab.tsx +0 -164
  78. package/src/collection_editor/ui/collection_editor/EntityActionsSelectDialog.tsx +0 -40
  79. package/src/collection_editor/ui/collection_editor/EntityCustomViewsSelectDialog.tsx +0 -39
  80. package/src/collection_editor/ui/collection_editor/EnumForm.tsx +0 -373
  81. package/src/collection_editor/ui/collection_editor/GeneralSettingsForm.tsx +0 -288
  82. package/src/collection_editor/ui/collection_editor/GetCodeDialog.tsx +0 -141
  83. package/src/collection_editor/ui/collection_editor/KanbanConfigSection.tsx +0 -194
  84. package/src/collection_editor/ui/collection_editor/LayoutModeSwitch.tsx +0 -53
  85. package/src/collection_editor/ui/collection_editor/PropertyEditView.tsx +0 -980
  86. package/src/collection_editor/ui/collection_editor/PropertyFieldPreview.tsx +0 -164
  87. package/src/collection_editor/ui/collection_editor/PropertyTree.tsx +0 -364
  88. package/src/collection_editor/ui/collection_editor/RouterCollectionStudioView.tsx +0 -44
  89. package/src/collection_editor/ui/collection_editor/RouterCollectionsStudioView.tsx +0 -41
  90. package/src/collection_editor/ui/collection_editor/SchemaChangeDialog.tsx +0 -470
  91. package/src/collection_editor/ui/collection_editor/SubcollectionsEditTab.tsx +0 -256
  92. package/src/collection_editor/ui/collection_editor/SwitchControl.tsx +0 -39
  93. package/src/collection_editor/ui/collection_editor/ViewModeSwitch.tsx +0 -68
  94. package/src/collection_editor/ui/collection_editor/import/CollectionEditorImportDataPreview.tsx +0 -67
  95. package/src/collection_editor/ui/collection_editor/import/CollectionEditorImportMapping.tsx +0 -296
  96. package/src/collection_editor/ui/collection_editor/import/clean_import_data.ts +0 -57
  97. package/src/collection_editor/ui/collection_editor/properties/BlockPropertyField.tsx +0 -147
  98. package/src/collection_editor/ui/collection_editor/properties/BooleanPropertyField.tsx +0 -41
  99. package/src/collection_editor/ui/collection_editor/properties/CommonPropertyFields.tsx +0 -113
  100. package/src/collection_editor/ui/collection_editor/properties/DateTimePropertyField.tsx +0 -250
  101. package/src/collection_editor/ui/collection_editor/properties/EnumPropertyField.tsx +0 -126
  102. package/src/collection_editor/ui/collection_editor/properties/KeyValuePropertyField.tsx +0 -20
  103. package/src/collection_editor/ui/collection_editor/properties/MapPropertyField.tsx +0 -153
  104. package/src/collection_editor/ui/collection_editor/properties/MarkdownPropertyField.tsx +0 -217
  105. package/src/collection_editor/ui/collection_editor/properties/NumberPropertyField.tsx +0 -117
  106. package/src/collection_editor/ui/collection_editor/properties/ReferencePropertyField.tsx +0 -129
  107. package/src/collection_editor/ui/collection_editor/properties/RelationPropertyField.tsx +0 -335
  108. package/src/collection_editor/ui/collection_editor/properties/RepeatPropertyField.tsx +0 -107
  109. package/src/collection_editor/ui/collection_editor/properties/StoragePropertyField.tsx +0 -403
  110. package/src/collection_editor/ui/collection_editor/properties/StringPropertyField.tsx +0 -148
  111. package/src/collection_editor/ui/collection_editor/properties/UrlPropertyField.tsx +0 -91
  112. package/src/collection_editor/ui/collection_editor/properties/VectorPropertyField.tsx +0 -34
  113. package/src/collection_editor/ui/collection_editor/properties/advanced/AdvancedPropertyValidation.tsx +0 -49
  114. package/src/collection_editor/ui/collection_editor/properties/conditions/ConditionsEditor.tsx +0 -925
  115. package/src/collection_editor/ui/collection_editor/properties/conditions/ConditionsPanel.tsx +0 -28
  116. package/src/collection_editor/ui/collection_editor/properties/conditions/EnumConditionsEditor.tsx +0 -626
  117. package/src/collection_editor/ui/collection_editor/properties/conditions/index.ts +0 -6
  118. package/src/collection_editor/ui/collection_editor/properties/conditions/property_paths.ts +0 -93
  119. package/src/collection_editor/ui/collection_editor/properties/validation/ArrayPropertyValidation.tsx +0 -52
  120. package/src/collection_editor/ui/collection_editor/properties/validation/GeneralPropertyValidation.tsx +0 -63
  121. package/src/collection_editor/ui/collection_editor/properties/validation/NumberPropertyValidation.tsx +0 -114
  122. package/src/collection_editor/ui/collection_editor/properties/validation/StringPropertyValidation.tsx +0 -154
  123. package/src/collection_editor/ui/collection_editor/properties/validation/ValidationPanel.tsx +0 -28
  124. package/src/collection_editor/ui/collection_editor/templates/blog_template.ts +0 -112
  125. package/src/collection_editor/ui/collection_editor/templates/pages_template.ts +0 -183
  126. package/src/collection_editor/ui/collection_editor/templates/products_template.ts +0 -88
  127. package/src/collection_editor/ui/collection_editor/templates/users_template.ts +0 -42
  128. package/src/collection_editor/ui/collection_editor/util.ts +0 -28
  129. package/src/collection_editor/ui/collection_editor/utils/strings.ts +0 -1
  130. package/src/collection_editor/ui/collection_editor/utils/supported_fields.tsx +0 -39
  131. package/src/collection_editor/ui/collection_editor/utils/update_property_for_widget.ts +0 -276
  132. package/src/collection_editor/useCollectionEditorController.tsx +0 -9
  133. package/src/collection_editor/useCollectionsConfigController.tsx +0 -9
  134. package/src/collection_editor/useJsonCollectionsConfigController.tsx +0 -297
  135. package/src/collection_editor/useLiveSchemaEditing.tsx +0 -315
  136. package/src/collection_editor/useLocalCollectionsConfigController.tsx +0 -341
  137. package/src/collection_editor/useSafeSnackbarController.ts +0 -9
  138. package/src/collection_editor/validateCollectionJson.ts +0 -440
  139. package/src/collection_editor_ui.ts +0 -21
  140. package/src/components/AdditionalFieldValue.tsx +0 -68
  141. package/src/components/AdminModeSyncer.tsx +0 -56
  142. package/src/components/ArrayContainer.tsx +0 -542
  143. package/src/components/ClearFilterSortButton.tsx +0 -56
  144. package/src/components/CollectionEditorDialogs.tsx +0 -69
  145. package/src/components/CollectionPanel.tsx +0 -179
  146. package/src/components/CollectionTableBinding/CollectionRowActions.tsx +0 -244
  147. package/src/components/CollectionTableBinding/CollectionTableBinding.tsx +0 -394
  148. package/src/components/CollectionTableBinding/CollectionTableBindingProps.tsx +0 -172
  149. package/src/components/CollectionTableBinding/PropertyTableCell.tsx +0 -350
  150. package/src/components/CollectionTableBinding/column_utils.tsx +0 -155
  151. package/src/components/CollectionTableBinding/fields/TableMultipleRelationField.tsx +0 -131
  152. package/src/components/CollectionTableBinding/fields/TableReferenceField.tsx +0 -193
  153. package/src/components/CollectionTableBinding/fields/TableRelationField.tsx +0 -192
  154. package/src/components/CollectionTableBinding/fields/TableRelationSelectorField.tsx +0 -42
  155. package/src/components/CollectionTableBinding/fields/TableStorageUpload.tsx +0 -324
  156. package/src/components/CollectionTableBinding/fields/VirtualTableSelect.tsx +0 -132
  157. package/src/components/CollectionTableBinding/fields/VirtualTableUserSelect.tsx +0 -41
  158. package/src/components/CollectionTableBinding/index.tsx +0 -14
  159. package/src/components/CollectionTableBinding/internal/CollectionTableToolbar.tsx +0 -96
  160. package/src/components/CollectionTableBinding/internal/EntityTableCell.tsx +0 -309
  161. package/src/components/CollectionTableBinding/internal/EntityTableCellActions.tsx +0 -80
  162. package/src/components/CollectionTableBinding/internal/common.tsx +0 -74
  163. package/src/components/CollectionTableBinding/internal/popup_field/PopupFormField.tsx +0 -422
  164. package/src/components/CollectionTableBinding/internal/popup_field/useDraggable.tsx +0 -99
  165. package/src/components/CollectionTableBinding/internal/popup_field/useWindowSize.tsx +0 -22
  166. package/src/components/CollectionTableBinding/table_bindings.tsx +0 -350
  167. package/src/components/CollectionViewBinding/BoardCardBinding.tsx +0 -263
  168. package/src/components/CollectionViewBinding/CollectionBoardViewBinding.tsx +0 -662
  169. package/src/components/CollectionViewBinding/CollectionCardViewBinding.tsx +0 -159
  170. package/src/components/CollectionViewBinding/CollectionListViewBinding.tsx +0 -1430
  171. package/src/components/CollectionViewBinding/CollectionViewActions.tsx +0 -227
  172. package/src/components/CollectionViewBinding/CollectionViewBinding.tsx +0 -1603
  173. package/src/components/CollectionViewBinding/CollectionViewStartActions.tsx +0 -240
  174. package/src/components/CollectionViewBinding/EntityCardBinding.tsx +0 -239
  175. package/src/components/CollectionViewBinding/FilterPresetsButton.tsx +0 -298
  176. package/src/components/CollectionViewBinding/FiltersDialog.tsx +0 -218
  177. package/src/components/CollectionViewBinding/SearchExplanation.tsx +0 -106
  178. package/src/components/CollectionViewBinding/SearchHighlight.tsx +0 -311
  179. package/src/components/CollectionViewBinding/SlotValue.tsx +0 -156
  180. package/src/components/CollectionViewBinding/SortButton.tsx +0 -354
  181. package/src/components/CollectionViewBinding/SplitListCloseButton.tsx +0 -49
  182. package/src/components/CollectionViewBinding/SplitListShowButton.tsx +0 -28
  183. package/src/components/CollectionViewBinding/SplitListView.tsx +0 -488
  184. package/src/components/CollectionViewBinding/SplitViewContext.tsx +0 -34
  185. package/src/components/CollectionViewBinding/ViewModeToggle.tsx +0 -250
  186. package/src/components/CollectionViewBinding/hooks/useCollectionInlineEditor.ts +0 -81
  187. package/src/components/CollectionViewBinding/hooks/useKanbanDragAndDrop.ts +0 -181
  188. package/src/components/CollectionViewBinding/useBoardDataController.tsx +0 -802
  189. package/src/components/CollectionViewBinding/usePreviewSlots.ts +0 -703
  190. package/src/components/CollectionViewBinding/useSelectionController.tsx +0 -40
  191. package/src/components/CollectionViewBinding/utils.ts +0 -22
  192. package/src/components/DefaultAppBar.tsx +0 -264
  193. package/src/components/DefaultDrawer.tsx +0 -593
  194. package/src/components/DeleteEntityDialog.tsx +0 -205
  195. package/src/components/DetailViewBinding.tsx +0 -731
  196. package/src/components/DrawerNavigationGroup.tsx +0 -141
  197. package/src/components/DrawerNavigationItem.tsx +0 -115
  198. package/src/components/EditFormActions.tsx +0 -303
  199. package/src/components/EditViewBinding.tsx +0 -1069
  200. package/src/components/EntityDisplayHeader.tsx +0 -170
  201. package/src/components/EntityIdentityBar.tsx +0 -428
  202. package/src/components/EntityInspector.tsx +0 -156
  203. package/src/components/EntityPreviewBinding.tsx +0 -432
  204. package/src/components/EntityPreviewNesting.tsx +0 -50
  205. package/src/components/EntityViewBinding.tsx +0 -374
  206. package/src/components/FieldCaption.tsx +0 -14
  207. package/src/components/HomePage/ContentHomePage.tsx +0 -586
  208. package/src/components/HomePage/FavouritesView.tsx +0 -60
  209. package/src/components/HomePage/HomePageDnD.tsx +0 -704
  210. package/src/components/HomePage/NavigationCard.tsx +0 -81
  211. package/src/components/HomePage/NavigationCardBinding.tsx +0 -107
  212. package/src/components/HomePage/NavigationGroup.tsx +0 -156
  213. package/src/components/HomePage/RenameGroupDialog.tsx +0 -123
  214. package/src/components/HomePage/SmallNavigationCard.tsx +0 -41
  215. package/src/components/HomePage/index.tsx +0 -5
  216. package/src/components/InlineEntityPreview.tsx +0 -149
  217. package/src/components/JsonPreviewBinding.tsx +0 -66
  218. package/src/components/PropertyCollectionView.tsx +0 -336
  219. package/src/components/PropertyConfigBadge.tsx +0 -28
  220. package/src/components/PropertyIdCopyTooltip.tsx +0 -47
  221. package/src/components/RebaseAuthGate.tsx +0 -44
  222. package/src/components/RebaseCMS.tsx +0 -30
  223. package/src/components/RebaseLayout.tsx +0 -80
  224. package/src/components/RebaseNavigation.tsx +0 -369
  225. package/src/components/RebaseRouteDefs.tsx +0 -127
  226. package/src/components/RebaseShell.tsx +0 -83
  227. package/src/components/ReferenceTable/SelectionTableBinding.tsx +0 -389
  228. package/src/components/ReferenceWidget.tsx +0 -156
  229. package/src/components/RelationSelector.tsx +0 -926
  230. package/src/components/SearchIconsView.tsx +0 -78
  231. package/src/components/SelectableTable/SelectableTable.tsx +0 -309
  232. package/src/components/SelectableTable/SelectableTableContext.tsx +0 -7
  233. package/src/components/SelectableTable/SelectionStore.ts +0 -43
  234. package/src/components/SelectableTable/filters/BooleanFilterField.tsx +0 -59
  235. package/src/components/SelectableTable/filters/DateTimeFilterField.tsx +0 -146
  236. package/src/components/SelectableTable/filters/FilterFieldBinding.tsx +0 -190
  237. package/src/components/SelectableTable/filters/ReferenceFilterField.tsx +0 -250
  238. package/src/components/SelectableTable/filters/RelationFilterField.tsx +0 -238
  239. package/src/components/SelectableTable/filters/StringNumberFilterField.tsx +0 -282
  240. package/src/components/SelectableTable/filters/null_filter.ts +0 -63
  241. package/src/components/SideDialogs.tsx +0 -238
  242. package/src/components/SidePanelBinding.tsx +0 -361
  243. package/src/components/SidePanelProvider.tsx +0 -80
  244. package/src/components/UserSelector.tsx +0 -513
  245. package/src/components/admin/CreationResultDialog.tsx +0 -138
  246. package/src/components/admin/index.ts +0 -1
  247. package/src/components/app/AppBar.tsx +0 -17
  248. package/src/components/app/Drawer.tsx +0 -38
  249. package/src/components/app/Scaffold.tsx +0 -366
  250. package/src/components/app/index.ts +0 -4
  251. package/src/components/app/useApp.tsx +0 -36
  252. package/src/components/common/default_entity_actions.tsx +0 -440
  253. package/src/components/common/index.ts +0 -1
  254. package/src/components/field_configs.tsx +0 -506
  255. package/src/components/history/EntityHistoryEntry.tsx +0 -203
  256. package/src/components/history/EntityHistoryView.tsx +0 -206
  257. package/src/components/history/LastEditedByFormAction.tsx +0 -24
  258. package/src/components/history/LastEditedByIndicator.tsx +0 -95
  259. package/src/components/history/UserChip.tsx +0 -15
  260. package/src/components/history/index.tsx +0 -5
  261. package/src/components/index.ts +0 -63
  262. package/src/contexts/BreacrumbsContext.tsx +0 -45
  263. package/src/contexts/SideDialogsControllerContext.tsx +0 -5
  264. package/src/contexts/SidePanelControllerContext.tsx +0 -5
  265. package/src/data_export/export/BasicExportAction.tsx +0 -142
  266. package/src/data_export/export/ExportCollectionAction.tsx +0 -321
  267. package/src/data_export/export/export.ts +0 -295
  268. package/src/data_export/export/fetch_export_data.ts +0 -90
  269. package/src/data_export/export/index.ts +0 -4
  270. package/src/data_export/index.ts +0 -1
  271. package/src/data_import/components/DataNewPropertiesMapping.tsx +0 -261
  272. package/src/data_import/components/ImportFileUpload.tsx +0 -42
  273. package/src/data_import/components/ImportNewPropertyFieldPreview.tsx +0 -58
  274. package/src/data_import/components/ImportSaveInProgress.tsx +0 -121
  275. package/src/data_import/components/index.ts +0 -4
  276. package/src/data_import/hooks/index.ts +0 -1
  277. package/src/data_import/hooks/useImportConfig.tsx +0 -34
  278. package/src/data_import/import/ImportCollectionAction.tsx +0 -461
  279. package/src/data_import/import/index.ts +0 -1
  280. package/src/data_import/index.ts +0 -5
  281. package/src/data_import/types/column_mapping.ts +0 -32
  282. package/src/data_import/types/index.ts +0 -1
  283. package/src/data_import/utils/csv.ts +0 -153
  284. package/src/data_import/utils/data.ts +0 -181
  285. package/src/data_import/utils/file_headers.ts +0 -14
  286. package/src/data_import/utils/file_to_json.ts +0 -149
  287. package/src/data_import/utils/get_import_inference_type.ts +0 -33
  288. package/src/data_import/utils/get_properties_mapping.ts +0 -67
  289. package/src/data_import/utils/index.ts +0 -5
  290. package/src/data_import/utils/save_entities.ts +0 -138
  291. package/src/data_import/utils/transforms.ts +0 -70
  292. package/src/editor/components/SlashCommandMenu.tsx +0 -532
  293. package/src/editor/components/editor-bubble-item.tsx +0 -32
  294. package/src/editor/components/editor-bubble.tsx +0 -143
  295. package/src/editor/components/image-bubble.tsx +0 -183
  296. package/src/editor/components/index.ts +0 -14
  297. package/src/editor/components/table-bubble.tsx +0 -233
  298. package/src/editor/editor.tsx +0 -529
  299. package/src/editor/extensions/HighlightDecorationExtension.ts +0 -115
  300. package/src/editor/extensions/Image.ts +0 -159
  301. package/src/editor/extensions/TextLoadingDecorationExtension.tsx +0 -107
  302. package/src/editor/extensions/clipboard.ts +0 -72
  303. package/src/editor/extensions/custom-keymap.ts +0 -25
  304. package/src/editor/extensions/drag-and-drop.tsx +0 -508
  305. package/src/editor/hooks/useProseMirror.ts +0 -126
  306. package/src/editor/hooks/useProseMirrorContext.ts +0 -15
  307. package/src/editor/index.ts +0 -2
  308. package/src/editor/markdown-it-plugins.d.ts +0 -24
  309. package/src/editor/markdown.ts +0 -204
  310. package/src/editor/nodeViews/ImageComponent.tsx +0 -20
  311. package/src/editor/nodeViews/ReactNodeView.tsx +0 -89
  312. package/src/editor/nodeViews/TaskItemComponent.tsx +0 -30
  313. package/src/editor/nodeViews/index.ts +0 -35
  314. package/src/editor/plugins/index.ts +0 -58
  315. package/src/editor/plugins/inputrules.ts +0 -82
  316. package/src/editor/plugins/placeholderPlugin.ts +0 -55
  317. package/src/editor/plugins/slashCommandPlugin.ts +0 -65
  318. package/src/editor/schema.ts +0 -339
  319. package/src/editor/selectors/ai-selector.tsx +0 -110
  320. package/src/editor/selectors/color-selector.tsx +0 -199
  321. package/src/editor/selectors/link-selector.tsx +0 -122
  322. package/src/editor/selectors/node-selector.tsx +0 -159
  323. package/src/editor/selectors/text-buttons.tsx +0 -79
  324. package/src/editor/types.ts +0 -6
  325. package/src/editor/useProseMirror.ts +0 -125
  326. package/src/editor/utils/prosemirror-utils.ts +0 -113
  327. package/src/editor/utils/remove_classes.ts +0 -18
  328. package/src/editor/utils/useDebouncedCallback.ts +0 -25
  329. package/src/form/EntityForm.tsx +0 -761
  330. package/src/form/EntityFormActions.tsx +0 -160
  331. package/src/form/EntityFormBinding.tsx +0 -342
  332. package/src/form/PropertyFieldBinding.tsx +0 -348
  333. package/src/form/components/ErrorFocus.tsx +0 -44
  334. package/src/form/components/FieldBlock.tsx +0 -189
  335. package/src/form/components/FieldHelperText.tsx +0 -84
  336. package/src/form/components/FormRail.tsx +0 -153
  337. package/src/form/components/FormSections.tsx +0 -145
  338. package/src/form/components/LabelWithIcon.tsx +0 -43
  339. package/src/form/components/LabelWithIconAndTooltip.tsx +0 -28
  340. package/src/form/components/LocalChangesMenu.tsx +0 -147
  341. package/src/form/components/StorageItemPreview.tsx +0 -81
  342. package/src/form/components/StorageUploadProgress.tsx +0 -118
  343. package/src/form/components/index.tsx +0 -6
  344. package/src/form/components/useRailVisible.tsx +0 -47
  345. package/src/form/field_bindings/ArrayCustomShapedFieldBinding.tsx +0 -109
  346. package/src/form/field_bindings/ArrayOfReferencesFieldBinding.tsx +0 -172
  347. package/src/form/field_bindings/BinaryFieldBinding.tsx +0 -177
  348. package/src/form/field_bindings/BlockFieldBinding.tsx +0 -282
  349. package/src/form/field_bindings/DateTimeFieldBinding.tsx +0 -78
  350. package/src/form/field_bindings/GeopointFieldBinding.tsx +0 -200
  351. package/src/form/field_bindings/KeyValueFieldBinding.tsx +0 -574
  352. package/src/form/field_bindings/MapFieldBinding.tsx +0 -120
  353. package/src/form/field_bindings/MarkdownEditorFieldBinding.tsx +0 -259
  354. package/src/form/field_bindings/MultiSelectFieldBinding.tsx +0 -130
  355. package/src/form/field_bindings/MultipleRelationFieldBinding.tsx +0 -168
  356. package/src/form/field_bindings/ReadOnlyFieldBinding.tsx +0 -94
  357. package/src/form/field_bindings/ReferenceFieldBinding.tsx +0 -146
  358. package/src/form/field_bindings/RelationFieldBinding.tsx +0 -202
  359. package/src/form/field_bindings/RepeatFieldBinding.tsx +0 -143
  360. package/src/form/field_bindings/SelectFieldBinding.tsx +0 -111
  361. package/src/form/field_bindings/StorageUploadFieldBinding.tsx +0 -521
  362. package/src/form/field_bindings/SwitchFieldBinding.tsx +0 -70
  363. package/src/form/field_bindings/TextFieldBinding.tsx +0 -189
  364. package/src/form/field_bindings/UserSelectFieldBinding.tsx +0 -71
  365. package/src/form/field_bindings/VectorFieldBinding.tsx +0 -209
  366. package/src/form/form_utils.ts +0 -243
  367. package/src/form/index.tsx +0 -36
  368. package/src/form/useClearRestoreValue.tsx +0 -36
  369. package/src/form/useUndoableDiscard.ts +0 -39
  370. package/src/form/validation.ts +0 -583
  371. package/src/hooks/index.ts +0 -16
  372. package/src/hooks/navigation/contexts/CollectionRegistryContext.tsx +0 -22
  373. package/src/hooks/navigation/contexts/NavigationStateContext.tsx +0 -16
  374. package/src/hooks/navigation/contexts/UrlContext.tsx +0 -24
  375. package/src/hooks/navigation/contexts/index.ts +0 -14
  376. package/src/hooks/navigation/useAsyncResolver.ts +0 -100
  377. package/src/hooks/navigation/useBuildCollectionRegistryController.tsx +0 -218
  378. package/src/hooks/navigation/useBuildNavigationStateController.tsx +0 -134
  379. package/src/hooks/navigation/useBuildUrlController.tsx +0 -66
  380. package/src/hooks/navigation/useNavigationResolution.ts +0 -271
  381. package/src/hooks/navigation/useResolvedCollections.ts +0 -102
  382. package/src/hooks/navigation/useResolvedViews.tsx +0 -139
  383. package/src/hooks/navigation/useTopLevelNavigation.ts +0 -273
  384. package/src/hooks/navigation/utils.ts +0 -200
  385. package/src/hooks/useAdminContext.tsx +0 -83
  386. package/src/hooks/useBreadcrumbsController.tsx +0 -17
  387. package/src/hooks/useBuildSideDialogsController.tsx +0 -145
  388. package/src/hooks/useBuildSidePanel.tsx +0 -315
  389. package/src/hooks/useChildViewSource.ts +0 -46
  390. package/src/hooks/useEntityDisplay.tsx +0 -262
  391. package/src/hooks/useEntityDisplayTitle.tsx +0 -49
  392. package/src/hooks/useHistory.ts +0 -178
  393. package/src/hooks/useRecordActions.tsx +0 -69
  394. package/src/hooks/useResolvedNavigationFrom.tsx +0 -167
  395. package/src/hooks/useResolvedUsers.ts +0 -148
  396. package/src/hooks/useSelectionDialog.tsx +0 -58
  397. package/src/hooks/useSideDialogsController.tsx +0 -25
  398. package/src/hooks/useSidePanel.tsx +0 -13
  399. package/src/index.ts +0 -124
  400. package/src/preview/PropertyPreview.tsx +0 -331
  401. package/src/preview/compact_text.ts +0 -68
  402. package/src/preview/components/ArrayEnumPreview.tsx +0 -39
  403. package/src/preview/components/BooleanPreview.tsx +0 -28
  404. package/src/preview/components/DatePreview.tsx +0 -106
  405. package/src/preview/components/EmptyValue.tsx +0 -10
  406. package/src/preview/components/EnumValuesChip.tsx +0 -39
  407. package/src/preview/components/ImagePreview.tsx +0 -144
  408. package/src/preview/components/InlineEntityListPreview.tsx +0 -42
  409. package/src/preview/components/ReferencePreview.tsx +0 -235
  410. package/src/preview/components/RelationPreview.tsx +0 -271
  411. package/src/preview/components/StorageThumbnail.tsx +0 -147
  412. package/src/preview/components/UrlComponentPreview.tsx +0 -116
  413. package/src/preview/components/UserPreview.tsx +0 -30
  414. package/src/preview/components/date_fns_locales.ts +0 -125
  415. package/src/preview/index.ts +0 -26
  416. package/src/preview/property_previews/ArrayOfMapsPreview.tsx +0 -73
  417. package/src/preview/property_previews/ArrayOfReferencesPreview.tsx +0 -67
  418. package/src/preview/property_previews/ArrayOfRelationsPreview.tsx +0 -77
  419. package/src/preview/property_previews/ArrayOfStorageComponentsPreview.tsx +0 -49
  420. package/src/preview/property_previews/ArrayOfStringsPreview.tsx +0 -70
  421. package/src/preview/property_previews/ArrayOneOfPreview.tsx +0 -79
  422. package/src/preview/property_previews/ArrayPropertyEnumPreview.tsx +0 -35
  423. package/src/preview/property_previews/ArrayPropertyPreview.tsx +0 -79
  424. package/src/preview/property_previews/MapPropertyPreview.tsx +0 -198
  425. package/src/preview/property_previews/NumberPropertyPreview.tsx +0 -39
  426. package/src/preview/property_previews/SkeletonPropertyComponent.tsx +0 -276
  427. package/src/preview/property_previews/StringPropertyPreview.tsx +0 -70
  428. package/src/preview/util.ts +0 -39
  429. package/src/routes/CustomViewRoute.tsx +0 -33
  430. package/src/routes/RebaseRoute.tsx +0 -467
  431. package/src/routes/index.ts +0 -2
  432. package/src/types/components/EntityFormActionsProps.tsx +0 -20
  433. package/src/types/components/EntityFormProps.tsx +0 -119
  434. package/src/types/components/PropertyPreviewProps.tsx +0 -85
  435. package/src/types/components/formex.tsx +0 -2
  436. package/src/types/components/index.ts +0 -3
  437. package/src/types/fields.tsx +0 -340
  438. package/src/types/index.ts +0 -4
  439. package/src/util/dataControllerAdapter.ts +0 -88
  440. package/src/util/entity_actions.ts +0 -28
  441. package/src/util/index.ts +0 -5
  442. package/src/util/navigation_utils.ts +0 -89
  443. package/src/util/number_format.ts +0 -46
  444. package/src/util/previews.ts +0 -131
  445. package/src/util/propertyConfigMapper.ts +0 -134
  446. package/src/util/property_utils.tsx +0 -236
  447. package/src/util/resolutions.ts +0 -96
  448. package/src/util/view_constants.ts +0 -33
  449. package/src/util/view_mode.ts +0 -176
@@ -1,369 +0,0 @@
1
- import React, { useMemo, useRef, useEffect, useCallback, useContext, Suspense } from "react";
2
- import {
3
- useRebaseRegistry,
4
- useRebaseContext,
5
- useAuthController,
6
- useCustomizationController,
7
- useAdminModeController,
8
- useBuildLocalConfigurationPersistence,
9
- useRebaseClient,
10
- useData,
11
- useDataSources,
12
- CollectionResolverRegistrationContext,
13
- StudioBridgeRegistryProvider,
14
- useBridgeRegistration,
15
- CustomizationControllerContext,
16
- RebaseDataContext
17
- } from "@rebasepro/app";
18
- import { buildRoutedRebaseData, resolveDataSource } from "@rebasepro/common";
19
- import { CircularProgressCenter, lazyChunk } from "@rebasepro/ui";
20
-
21
- import type { AppView, CollectionCustomView, CollectionEditorOptions, EntityCustomView, EntityAction, RebasePlugin, AdminCollection } from "@rebasepro/cms-types";
22
- import type { CollectionRegistryController } from "@rebasepro/types";
23
- import type { UrlController, NavigationStateController } from "@rebasepro/cms-types";
24
-
25
- const EMPTY_PLUGINS: RebasePlugin[] = [];
26
- const EMPTY_COLLECTIONS: AdminCollection[] = [];
27
-
28
- import { useBuildNavigationStateController } from "../hooks/navigation/useBuildNavigationStateController";
29
- import { useBuildUrlController } from "../hooks/navigation/useBuildUrlController";
30
- import { useBuildCollectionRegistryController } from "../hooks/navigation/useBuildCollectionRegistryController";
31
-
32
- import { CollectionRegistryContext } from "../hooks/navigation/contexts/CollectionRegistryContext";
33
- import { UrlContext } from "../hooks/navigation/contexts/UrlContext";
34
- import { NavigationStateContext } from "../hooks/navigation/contexts/NavigationStateContext";
35
-
36
- import { SidePanelProvider } from "./SidePanelProvider";
37
-
38
- // Collection editor internals — used when collectionEditor is enabled
39
- import { useLocalCollectionsConfigController } from "../collection_editor/useLocalCollectionsConfigController";
40
- import { ConfigControllerProvider } from "../collection_editor/ConfigControllerProvider";
41
- import { useCollectionsConfigController } from "../collection_editor/useCollectionsConfigController";
42
-
43
- // Lazy-load the schema view — only fetched when studio schema tool is active
44
- const CollectionsStudioView = lazyChunk(() =>
45
- import("../collection_editor/ui/collection_editor/RouterCollectionsStudioView")
46
- .then(m => ({ default: m.RouterCollectionsStudioView }))
47
- );
48
-
49
- export interface RebaseNavigationProps {
50
- children: React.ReactNode;
51
- }
52
-
53
- /**
54
- * Navigation layer — builds and provides all admin navigation controllers:
55
- * collection registry, URL controller, navigation state, side entity,
56
- * and the self-assembling Studio bridge.
57
- *
58
- * Also handles the collection editor config controller when enabled.
59
- *
60
- * **Independently usable**: Use this when you need admin navigation
61
- * (entity tables, side panels) in a custom layout.
62
- *
63
- * @example
64
- * ```tsx
65
- * <RebaseNavigation>
66
- * <MyCustomLayout>
67
- * <CollectionViewBinding ... />
68
- * </MyCustomLayout>
69
- * </RebaseNavigation>
70
- * ```
71
- */
72
- export function RebaseNavigation({ children }: RebaseNavigationProps) {
73
- const registry = useRebaseRegistry();
74
- const context = useRebaseContext();
75
- const adminModeController = useAdminModeController();
76
- const userConfigPersistence = useBuildLocalConfigurationPersistence();
77
-
78
- // ── Collection Editor resolution ──────────────────────────────────
79
- // The collection editor is ALWAYS enabled when Studio is registered.
80
- // The `collectionEditor` admin config is for fine-tuning (readOnly, auth, etc.),
81
- // not for opting-in. When omitted, the editor defaults to enabled
82
- // (read-only in production).
83
- const collectionEditorConfig = registry.cmsConfig?.collectionEditor;
84
- const collectionEditorEnabled = Boolean(collectionEditorConfig) || Boolean(registry.studioConfig);
85
- const collectionEditorOptions: CollectionEditorOptions | undefined = useMemo(() => {
86
- if (collectionEditorConfig === true || !collectionEditorConfig) return {};
87
- return collectionEditorConfig;
88
- }, [collectionEditorConfig]);
89
-
90
- // ── Combine admin and Studio Configs ────────────────────────────────
91
- const cmsCollections = registry.cmsConfig?.collections ?? EMPTY_COLLECTIONS;
92
-
93
- // ── Build the navigation controllers ──────────────────────────────
94
- const collectionsBuilder = useMemo(() => Array.isArray(cmsCollections) ? () => [...cmsCollections] : cmsCollections, [cmsCollections]);
95
-
96
- const dataSources = useDataSources();
97
- const collectionRegistryController = useBuildCollectionRegistryController({ userConfigPersistence, dataSources: dataSources.registry });
98
-
99
- // ── Multi-data-source routing ─────────────────────────────────────
100
- // Combine the default data source (server transport) with the registered
101
- // direct/custom sources from <Rebase> and route each collection by its
102
- // resolved data-source key, looked up by path against the collection
103
- // registry. A stable resolver ref keeps the routed data instance
104
- // referentially stable across registry rebuilds, so data-effect
105
- // dependencies don't thrash.
106
- const defaultData = useData();
107
- const getCollectionRef = useRef(collectionRegistryController.getCollection);
108
- getCollectionRef.current = collectionRegistryController.getCollection;
109
-
110
- // Hand the data layer a way to read this registry. It was built by <Rebase>,
111
- // above us, and needs a collection's primary keys to give its rows an
112
- // address — rows themselves carry only columns.
113
- //
114
- // Registered during render, not in an effect: the views that fetch rows are
115
- // below us, and their effects run before ours, so an effect here would bind
116
- // after the first page had already been converted. The call only assigns a
117
- // ref, so repeating it per render is free.
118
- const registerCollectionResolver = useContext(CollectionResolverRegistrationContext);
119
- const resolveCollection = useCallback(
120
- (slug: string) => getCollectionRef.current(slug),
121
- []);
122
- registerCollectionResolver(resolveCollection);
123
- const routedData = useMemo(() => buildRoutedRebaseData({
124
- defaultData,
125
- sources: dataSources.sources,
126
- resolveKey: (slugOrPath) => resolveDataSource(getCollectionRef.current(slugOrPath), dataSources.registry).key
127
- }), [defaultData, dataSources]);
128
-
129
- // Normalize the configured mount prefix to a leading-slash, no-trailing-slash
130
- // form (e.g. "admin" or "/admin/" -> "/admin"); empty/"/" stays "/".
131
- const basePath = useMemo(() => {
132
- const raw = registry.cmsConfig?.basePath;
133
- if (!raw || raw === "/") return "/";
134
- const trimmed = raw.replace(/^\/+/, "").replace(/\/+$/, "");
135
- return trimmed ? `/${trimmed}` : "/";
136
- }, [registry.cmsConfig?.basePath]);
137
-
138
- const urlController = useBuildUrlController({
139
- basePath,
140
- baseCollectionPath: "/c",
141
- collectionRegistryController
142
- });
143
-
144
- // ── Build config controller internally when collection editor is enabled ──
145
- const rebaseClient = useRebaseClient();
146
- const authController = useAuthController();
147
- const resolvedCollections = useMemo(
148
- () => Array.isArray(cmsCollections) ? cmsCollections : [],
149
- [cmsCollections]
150
- );
151
-
152
- // ── Dev-only data-source sanity check ─────────────────────────────
153
- // Warn about data sources declared with a direct/custom transport that
154
- // have no client-side driver — these silently fall back to the default
155
- // (server) source, a common source of misrouting. Unambiguous: it never
156
- // false-positives on server-mediated sources (which intentionally have
157
- // no client driver).
158
- useEffect(() => {
159
- if (process.env.NODE_ENV === "production") return;
160
- const { registry, sources } = dataSources;
161
- const missing = Object.values(registry)
162
- .filter((d) => (d.transport === "direct" || d.transport === "custom") && !sources[d.key])
163
- .map((d) => d.key);
164
- if (missing.length > 0) {
165
- console.warn(
166
- `[Rebase] These data source(s) declare a direct/custom transport but have no client-side driver and will fall back to the default data source: ${missing.map(k => `"${k}"`).join(", ")}. ` +
167
- `Provide a \`driver\` for them in \`dataSources\` on <Rebase>.`
168
- );
169
- }
170
- }, [dataSources]);
171
-
172
- // `readOnly` is left undefined unless the developer set it: the controller
173
- // asks the backend whether its schema editor will accept a write, which is
174
- // the only process that knows. Deciding it here from `process.env.NODE_ENV`
175
- // — the *frontend bundle's* build mode — is what made the editor offer
176
- // itself against production backends, `baas` projects and servers without
177
- // `ts-morph`, and turned every save into a bare 404.
178
- const internalConfigController = useLocalCollectionsConfigController(
179
- rebaseClient,
180
- resolvedCollections,
181
- collectionEditorEnabled ? {
182
- readOnly: collectionEditorOptions?.readOnly,
183
- getAuthToken: collectionEditorOptions?.getAuthToken ?? authController?.getAuthToken,
184
- authKey: authController?.user?.uid ?? null
185
- } : { readOnly: true }
186
- );
187
-
188
- // ── Auto-inject schema view into Studio devViews ──────────────────
189
- const schemaView: AppView | undefined = useMemo(() => {
190
- if (!collectionEditorEnabled) return undefined;
191
- // Only inject when Studio is registered and includes "schema" tool (or all tools)
192
- const studioTools = registry.studioConfig?.tools ?? ["sql", "js", "rls", "schema", "storage"];
193
- if (!registry.studioConfig || !studioTools.includes("schema")) return undefined;
194
- return {
195
- slug: "schema",
196
- name: "Edit collections",
197
- group: "Database",
198
- icon: "LayoutList",
199
- nestedRoutes: true,
200
- // Reads the controller from context at render time rather than
201
- // capturing it here. A view is a React *element*, and the
202
- // navigation state controller resolves the view list once and holds
203
- // on to the elements it resolved — so a controller passed as a prop
204
- // is frozen at whatever it was on the first render, forever. That
205
- // hid every later change: the editor stayed writable after the
206
- // backend said it was read-only, and the collection list never
207
- // refreshed. Everything else in the editor already reads this from
208
- // `ConfigControllerProvider`, which wraps this subtree.
209
- view: (
210
- <Suspense fallback={<CircularProgressCenter/>}>
211
- <CollectionsStudioViewFromContext/>
212
- </Suspense>
213
- )
214
- };
215
- }, [collectionEditorEnabled, registry.studioConfig]);
216
-
217
- const devViews = useMemo(() => {
218
- const base = registry.studioConfig?.devViews ?? [];
219
- if (schemaView) return [...base, schemaView];
220
- return base;
221
- }, [registry.studioConfig?.devViews, schemaView]);
222
-
223
- // Merge admin-registered views with Studio dev views.
224
- // Order: admin views (developer's primary content) → Studio dev views (tooling).
225
- // Plugin views are merged later inside resolveAppViews.
226
- const cmsViews = registry.cmsConfig?.views;
227
- const mergedViews = useMemo(() => {
228
- if (!cmsViews) return devViews;
229
- if (Array.isArray(cmsViews) && cmsViews.length === 0) return devViews;
230
- // When cmsViews is a builder function, wrap it to append devViews after resolution
231
- if (typeof cmsViews === "function") {
232
- return async (params: Parameters<typeof cmsViews>[0]) => {
233
- const resolved = await cmsViews(params) ?? [];
234
- return [...resolved, ...devViews];
235
- };
236
- }
237
- return [...cmsViews, ...devViews];
238
- }, [cmsViews, devViews]);
239
-
240
- const parentCustomizationController = useCustomizationController();
241
-
242
- const navigationStateController = useBuildNavigationStateController({
243
- plugins: parentCustomizationController.plugins ?? EMPTY_PLUGINS,
244
- collections: collectionsBuilder,
245
- views: mergedViews,
246
- navigationGroupMappings: registry.cmsConfig?.navigationGroupMappings,
247
- authController: context.authController!,
248
- data: routedData,
249
- collectionRegistryController,
250
- urlController,
251
- adminMode: adminModeController?.mode
252
- });
253
-
254
- // ── Merge admin-registered entityViews/entityActions into the customization controller ──
255
- // The <Rebase> component builds the customizationController from its own props,
256
- // but entity views passed to <RebaseCMS> are stored in the registry and not
257
- // automatically merged. We re-provide an enriched controller here so that
258
- // downstream consumers (EditViewBinding, side panels, etc.) can resolve
259
- // string-keyed entity views like "blog_preview".
260
- const enrichedCustomizationController = useMemo(() => {
261
- const cmsEntityViews = (registry.cmsConfig?.entityViews ?? []) as EntityCustomView[];
262
- const cmsEntityActions = (registry.cmsConfig?.entityActions ?? []) as EntityAction[];
263
- // Collection view modes ride the same channel, for the same reason:
264
- // `admin.customViews: ["map"]` has to find the component somewhere.
265
- const cmsCollectionViews = (registry.cmsConfig?.collectionViews ?? []) as CollectionCustomView[];
266
- if (cmsEntityViews.length === 0 && cmsEntityActions.length === 0 && cmsCollectionViews.length === 0) {
267
- return parentCustomizationController;
268
- }
269
- return {
270
- ...parentCustomizationController,
271
- entityViews: [
272
- ...(parentCustomizationController.entityViews ?? []),
273
- ...cmsEntityViews.filter(v => !(parentCustomizationController.entityViews ?? []).some(ev => ev.key === v.key))
274
- ],
275
- entityActions: [
276
- ...(parentCustomizationController.entityActions ?? []),
277
- ...cmsEntityActions.filter(a => !(parentCustomizationController.entityActions ?? []).some(ea => ea.key === a.key))
278
- ],
279
- collectionViews: [
280
- ...(parentCustomizationController.collectionViews ?? []),
281
- ...cmsCollectionViews.filter(v => !(parentCustomizationController.collectionViews ?? []).some(cv => cv.key === v.key))
282
- ]
283
- };
284
- }, [parentCustomizationController, registry.cmsConfig?.entityViews, registry.cmsConfig?.entityActions, registry.cmsConfig?.collectionViews]);
285
-
286
- // ── Inner content with all context providers ──────────────────────
287
- // Re-provide RebaseDataContext with the routed data so that every admin
288
- // consumer (list/entity views, references, board, import/export, and
289
- // `context.data`) is routed to the correct driver by collection path.
290
- const navigationContent = (
291
- <RebaseDataContext.Provider value={routedData}>
292
- <CustomizationControllerContext.Provider value={enrichedCustomizationController}>
293
- <StudioBridgeRegistryProvider>
294
- <CollectionRegistryContext.Provider value={collectionRegistryController}>
295
- <UrlContext.Provider value={urlController}>
296
- <NavigationStateContext.Provider value={navigationStateController}>
297
- <SidePanelProvider>
298
- <BridgeAutoRegistrar
299
- collectionRegistryController={collectionRegistryController}
300
- urlController={urlController}
301
- navigationStateController={navigationStateController}
302
- canWriteToCodebase={!internalConfigController.readOnly}
303
- />
304
- {children}
305
- </SidePanelProvider>
306
- </NavigationStateContext.Provider>
307
- </UrlContext.Provider>
308
- </CollectionRegistryContext.Provider>
309
- </StudioBridgeRegistryProvider>
310
- </CustomizationControllerContext.Provider>
311
- </RebaseDataContext.Provider>
312
- );
313
-
314
- // ── Wrap with ConfigControllerProvider when collection editor is enabled ──
315
- if (collectionEditorEnabled) {
316
- return (
317
- <ConfigControllerProvider
318
- collectionConfigController={internalConfigController}
319
- pathSuggestions={collectionEditorOptions?.pathSuggestions}
320
- >
321
- {navigationContent}
322
- </ConfigControllerProvider>
323
- );
324
- }
325
-
326
- return navigationContent;
327
- }
328
-
329
- /**
330
- * The injected "Edit collections" view, bound to the live config controller.
331
- *
332
- * Exists so the element stored in the navigation state does not close over a
333
- * controller instance — see the comment at its construction site.
334
- */
335
- function CollectionsStudioViewFromContext() {
336
- const configController = useCollectionsConfigController();
337
- return <CollectionsStudioView configController={configController}/>;
338
- }
339
-
340
- /**
341
- * Internal component that auto-registers admin controllers into the
342
- * self-assembling Studio bridge. Must be rendered inside both the
343
- * navigation contexts and the StudioBridgeRegistryProvider.
344
- */
345
- function BridgeAutoRegistrar({
346
- collectionRegistryController,
347
- urlController,
348
- navigationStateController,
349
- canWriteToCodebase
350
- }: {
351
- collectionRegistryController: CollectionRegistryController;
352
- urlController: UrlController;
353
- navigationStateController: NavigationStateController;
354
- canWriteToCodebase: boolean;
355
- }) {
356
- useBridgeRegistration("collectionRegistry", collectionRegistryController);
357
- useBridgeRegistration("urlController", urlController);
358
- useBridgeRegistration("navigationState", navigationStateController);
359
-
360
- // Studio tools that would write into the project's collection source — the
361
- // RLS editor's policy save for a mapped table, its "Import to codebase" —
362
- // ask the bridge whether that write can land. The default is `true`, which
363
- // is what an admin panel sitting next to its own `collectionsDir` assumes;
364
- // it is wrong for exactly the same backends that make the collection editor
365
- // read-only, so the two now answer from one source.
366
- const capabilities = useMemo(() => ({ codebase: canWriteToCodebase }), [canWriteToCodebase]);
367
- useBridgeRegistration("capabilities", capabilities);
368
- return null;
369
- }
@@ -1,127 +0,0 @@
1
- import React, { lazy, Suspense, useMemo } from "react";
2
- import { Route } from "react-router";
3
- import {
4
- useRebaseRegistry,
5
- RebaseRoutes,
6
- UserSettingsView,
7
- UIReferenceView,
8
- NotFoundPage,
9
- useComponentOverride
10
- } from "@rebasepro/app";
11
- import { CircularProgressCenter } from "@rebasepro/ui";
12
-
13
- import { ContentHomePage as DefaultHomePage } from "./HomePage/ContentHomePage";
14
-
15
- import { RebaseRoute } from "../routes/RebaseRoute";
16
- import { CustomViewRoute } from "../routes/CustomViewRoute";
17
- import { useNavigationStateController } from "../hooks/navigation/contexts/NavigationStateContext";
18
- import { CollectionEditorDialogs } from "./CollectionEditorDialogs";
19
- import { useEffect } from "react";
20
- import { useTranslation } from "@rebasepro/app";
21
- import { useBreadcrumbsController } from "../hooks/useBreadcrumbsController";
22
-
23
- function SettingsView() {
24
- const { t } = useTranslation();
25
- const breadcrumbs = useBreadcrumbsController();
26
- useEffect(() => {
27
- breadcrumbs.set({
28
- breadcrumbs: [{ title: t("account_settings"),
29
- url: "/settings" }]
30
- });
31
-
32
- }, []);
33
- return <UserSettingsView/>;
34
- }
35
-
36
- export interface RebaseRouteDefsProps {
37
- /** User-provided custom routes to include. */
38
- children?: React.ReactNode;
39
- /**
40
- * Wrap function — receives the route tree and lets you wrap it in a layout.
41
- * If provided, the routes are rendered inside this wrapper.
42
- * If not provided, routes are rendered directly inside <RebaseRoutes>.
43
- */
44
- layout?: React.ReactElement;
45
- }
46
-
47
- /**
48
- * Route definitions for the admin.
49
- *
50
- * Defines all standard routes: home, studio home, collection view,
51
- * settings, debug, custom views, and a catch-all 404.
52
- *
53
- * **Independently usable**: Use this when you want Rebase routes
54
- * inside your own layout/navigation setup.
55
- *
56
- * @example
57
- * ```tsx
58
- * <RebaseNavigation>
59
- * <RebaseRouteDefs layout={<MyCustomLayout />}>
60
- * <Route path="/my-custom" element={<MyView />} />
61
- * </RebaseRouteDefs>
62
- * </RebaseNavigation>
63
- * ```
64
- */
65
- export function RebaseRouteDefs({ children, layout }: RebaseRouteDefsProps) {
66
- const registry = useRebaseRegistry();
67
- const navigationStateController = useNavigationStateController();
68
-
69
- const ResolvedHomePage = useComponentOverride("HomePage", DefaultHomePage);
70
- const cmsHomePage = registry.cmsConfig?.homePage ?? <Suspense fallback={<CircularProgressCenter/>}><ResolvedHomePage/></Suspense>;
71
- const studioHomePage = registry.studioConfig?.homePage;
72
-
73
- const combinedViews = useMemo(() => [
74
- ...(navigationStateController.views ?? []),
75
- ...(navigationStateController.adminViews ?? [])
76
- ], [navigationStateController.views, navigationStateController.adminViews]);
77
-
78
- const routeContents = (
79
- <>
80
- {/* Core admin Routes */}
81
- <Route path={"/"} element={cmsHomePage}/>
82
- {registry.studioConfig && (
83
- <Route path={"/s"} element={studioHomePage}/>
84
- )}
85
-
86
- <Route path={"/c/*"} element={<RebaseRoute/>}/>
87
- <Route path={"/settings"} element={<SettingsView/>}/>
88
-
89
-
90
- {/* Hidden debug route */}
91
- <Route path={"/debug/ui"} element={<UIReferenceView/>}/>
92
-
93
- {/* Custom Registered Views */}
94
- {combinedViews.map(view => {
95
- const slugs = Array.isArray(view.slug) ? view.slug : [view.slug];
96
- return slugs.flatMap(slug => {
97
- const routes = [
98
- <Route key={slug} path={slug} element={<CustomViewRoute view={view}/>}/>
99
- ];
100
- if (view.nestedRoutes) {
101
- routes.push(
102
- <Route key={slug + "/*"} path={slug + "/*"} element={<CustomViewRoute view={view}/>}/>
103
- );
104
- }
105
- return routes;
106
- });
107
- })}
108
-
109
- {/* User Provided Custom Routes */}
110
- {children}
111
-
112
- <Route path={"*"} element={navigationStateController.loading ? <CircularProgressCenter/> : <NotFoundPage/>}/>
113
- </>
114
- );
115
-
116
- return (
117
- <>
118
- <RebaseRoutes>
119
- {layout
120
- ? <Route element={layout}>{routeContents}</Route>
121
- : <Route element={<>{routeContents}</>}>{routeContents}</Route>
122
- }
123
- </RebaseRoutes>
124
- <CollectionEditorDialogs/>
125
- </>
126
- );
127
- }
@@ -1,83 +0,0 @@
1
- import React, { useMemo } from "react";
2
- import {
3
- useRebaseRegistry
4
- } from "@rebasepro/app";
5
- import { ErrorBoundary } from "@rebasepro/ui";
6
-
7
- import { RebaseAuthGate } from "./RebaseAuthGate";
8
- import { RebaseNavigation } from "./RebaseNavigation";
9
- import { RebaseLayout } from "./RebaseLayout";
10
- import { RebaseRouteDefs } from "./RebaseRouteDefs";
11
-
12
- export interface RebaseShellProps {
13
- title?: string;
14
- /** Top bar. Only rendered if provided — pass `<AppBar/>` for the default one. */
15
- appBar?: React.ReactNode;
16
- drawer?: React.ReactNode;
17
- /** Expand the drawer while the pointer is over it. On by default; pass `false` to opt out. Not a load-time default — that is `defaultDrawerOpen`. */
18
- autoOpenDrawer?: boolean;
19
- /** Start with the drawer expanded instead of collapsed to icons. Ignored on small layouts. */
20
- defaultDrawerOpen?: boolean;
21
- /** Path to the logo shown in the drawer and top bar. Falls back to the Rebase mark. */
22
- logo?: string;
23
- children?: React.ReactNode;
24
- }
25
-
26
- /**
27
- * Convenience component that composes all four admin layers:
28
- *
29
- * ```
30
- * <RebaseAuthGate>
31
- * <RebaseNavigation>
32
- * <RebaseRouteDefs layout={<RebaseLayout>}>
33
- * {children}
34
- * </RebaseRouteDefs>
35
- * </RebaseNavigation>
36
- * </RebaseAuthGate>
37
- * ```
38
- *
39
- * Each layer is independently usable — see their individual docs.
40
- * RebaseShell is sugar that composes them all with sensible defaults.
41
- */
42
- export function RebaseShell(props: RebaseShellProps) {
43
- const {
44
- title = "Rebase",
45
- appBar,
46
- drawer,
47
- autoOpenDrawer = true,
48
- defaultDrawerOpen = false,
49
- logo,
50
- children
51
- } = props;
52
-
53
- const registry = useRebaseRegistry();
54
-
55
- // Compute devViews for the layout's AdminModeSyncer
56
- const devViews = useMemo(() => {
57
- return registry.studioConfig?.devViews ?? [];
58
- }, [registry.studioConfig?.devViews]);
59
-
60
- return (
61
- <RebaseAuthGate>
62
- <RebaseNavigation>
63
- <ErrorBoundary fullPage>
64
- <RebaseRouteDefs
65
- layout={
66
- <RebaseLayout
67
- title={title}
68
- appBar={appBar}
69
- drawer={drawer}
70
- autoOpenDrawer={autoOpenDrawer}
71
- defaultDrawerOpen={defaultDrawerOpen}
72
- logo={logo}
73
- devViews={devViews}
74
- />
75
- }
76
- >
77
- {children}
78
- </RebaseRouteDefs>
79
- </ErrorBoundary>
80
- </RebaseNavigation>
81
- </RebaseAuthGate>
82
- );
83
- }