@rebasepro/admin 0.9.0 → 0.9.1-canary.0de22e0

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 (264) hide show
  1. package/README.md +7 -7
  2. package/dist/{CollectionEditorDialog-B-7uW3iJ.js → CollectionEditorDialog-D7odTn0N.js} +150 -36
  3. package/dist/CollectionEditorDialog-D7odTn0N.js.map +1 -0
  4. package/dist/{PropertyEditView-7KMTcrqi.js → PropertyEditView-i51tFOfM.js} +6 -6
  5. package/dist/PropertyEditView-i51tFOfM.js.map +1 -0
  6. package/dist/{RouterCollectionsStudioView-epqIbZrJ.js → RouterCollectionsStudioView-B9AjTCjT.js} +5 -5
  7. package/dist/RouterCollectionsStudioView-B9AjTCjT.js.map +1 -0
  8. package/dist/collection_editor/api/generateCollectionApi.d.ts +4 -4
  9. package/dist/collection_editor/ui/collection_editor/PropertyEditView.d.ts +1 -1
  10. package/dist/collection_editor/ui/collection_editor/SwitchControl.d.ts +1 -1
  11. package/dist/collection_editor/useSafeSnackbarController.d.ts +1 -1
  12. package/dist/collection_editor_ui.js +5 -5
  13. package/dist/collection_editor_ui.js.map +1 -1
  14. package/dist/components/CollectionTableBinding/CollectionTableBindingProps.d.ts +1 -1
  15. package/dist/components/CollectionTableBinding/internal/EntityTableCell.d.ts +1 -1
  16. package/dist/components/CollectionTableBinding/internal/popup_field/PopupFormField.d.ts +1 -1
  17. package/dist/components/CollectionTableBinding/table_bindings.d.ts +1 -1
  18. package/dist/components/CollectionViewBinding/hooks/useCollectionInlineEditor.d.ts +1 -1
  19. package/dist/components/{RebaseCMS.d.ts → RebaseAdmin.d.ts} +2 -2
  20. package/dist/components/RebaseLayout.d.ts +5 -4
  21. package/dist/components/RebaseShell.d.ts +1 -0
  22. package/dist/components/SelectableTable/SelectableTable.d.ts +1 -1
  23. package/dist/components/SelectableTable/SelectableTableContext.d.ts +1 -1
  24. package/dist/components/SidePanelProvider.d.ts +1 -1
  25. package/dist/components/field_configs.d.ts +17 -0
  26. package/dist/components/index.d.ts +1 -1
  27. package/dist/contexts/BreacrumbsContext.d.ts +1 -1
  28. package/dist/editor.js +1 -1
  29. package/dist/editor.js.map +1 -1
  30. package/dist/export-BM6HPujv.js +518 -0
  31. package/dist/export-BM6HPujv.js.map +1 -0
  32. package/dist/form/components/LocalChangesMenu.d.ts +1 -1
  33. package/dist/form/components/StorageUploadProgress.d.ts +1 -1
  34. package/dist/form/field_bindings/StorageUploadFieldBinding.d.ts +1 -1
  35. package/dist/{history-7X5bON_n.js → history-CtIPJxvQ.js} +6 -6
  36. package/dist/history-CtIPJxvQ.js.map +1 -0
  37. package/dist/hooks/useSelectionDialog.d.ts +1 -1
  38. package/dist/import-DzQnT03v.js +328 -0
  39. package/dist/import-DzQnT03v.js.map +1 -0
  40. package/dist/index.d.ts +1 -1
  41. package/dist/index.js +3300 -2
  42. package/dist/index.js.map +1 -0
  43. package/dist/preview/components/UrlComponentPreview.d.ts +2 -1
  44. package/dist/preview/util.d.ts +1 -0
  45. package/dist/types/components/formex.d.ts +1 -1
  46. package/dist/util/view_mode.d.ts +54 -0
  47. package/dist/{src-sUZfe29F.js → util-XFwQ9FEc.js} +17554 -21391
  48. package/dist/util-XFwQ9FEc.js.map +1 -0
  49. package/package.json +12 -17
  50. package/src/collection_editor/ConfigControllerProvider.tsx +1 -1
  51. package/src/collection_editor/api/generateCollectionApi.ts +4 -4
  52. package/src/collection_editor/ui/AddKanbanColumnAction.tsx +1 -1
  53. package/src/collection_editor/ui/CollectionViewHeaderAction.tsx +1 -1
  54. package/src/collection_editor/ui/EditorCollectionAction.tsx +1 -1
  55. package/src/collection_editor/ui/EditorCollectionActionStart.tsx +1 -1
  56. package/src/collection_editor/ui/EditorEntityAction.tsx +1 -1
  57. package/src/collection_editor/ui/HomePageEditorCollectionAction.tsx +1 -1
  58. package/src/collection_editor/ui/KanbanSetupAction.tsx +1 -1
  59. package/src/collection_editor/ui/MissingReferenceWidget.tsx +1 -1
  60. package/src/collection_editor/ui/NewCollectionButton.tsx +1 -1
  61. package/src/collection_editor/ui/NewCollectionCard.tsx +1 -1
  62. package/src/collection_editor/ui/PropertyAddColumnComponent.tsx +1 -1
  63. package/src/collection_editor/ui/collection_editor/AICollectionGeneratorPopover.tsx +1 -1
  64. package/src/collection_editor/ui/collection_editor/CollectionDetailsForm.tsx +3 -3
  65. package/src/collection_editor/ui/collection_editor/CollectionEditorDialog.tsx +3 -3
  66. package/src/collection_editor/ui/collection_editor/CollectionEditorWelcomeView.tsx +2 -2
  67. package/src/collection_editor/ui/collection_editor/CollectionPropertiesEditorForm.tsx +2 -2
  68. package/src/collection_editor/ui/collection_editor/CollectionRLSTab.tsx +139 -13
  69. package/src/collection_editor/ui/collection_editor/CollectionRelationsTab.tsx +1 -1
  70. package/src/collection_editor/ui/collection_editor/CollectionStudioView.tsx +1 -1
  71. package/src/collection_editor/ui/collection_editor/CollectionsStudioView.tsx +1 -1
  72. package/src/collection_editor/ui/collection_editor/DisplaySettingsForm.tsx +2 -2
  73. package/src/collection_editor/ui/collection_editor/EntityActionsEditTab.tsx +2 -2
  74. package/src/collection_editor/ui/collection_editor/EntityActionsSelectDialog.tsx +1 -1
  75. package/src/collection_editor/ui/collection_editor/EntityCustomViewsSelectDialog.tsx +1 -1
  76. package/src/collection_editor/ui/collection_editor/EnumForm.tsx +2 -2
  77. package/src/collection_editor/ui/collection_editor/GeneralSettingsForm.tsx +2 -2
  78. package/src/collection_editor/ui/collection_editor/GetCodeDialog.tsx +2 -2
  79. package/src/collection_editor/ui/collection_editor/KanbanConfigSection.tsx +2 -2
  80. package/src/collection_editor/ui/collection_editor/PropertyEditView.tsx +2 -2
  81. package/src/collection_editor/ui/collection_editor/PropertyFieldPreview.tsx +1 -1
  82. package/src/collection_editor/ui/collection_editor/PropertyTree.tsx +1 -1
  83. package/src/collection_editor/ui/collection_editor/RouterCollectionStudioView.tsx +1 -1
  84. package/src/collection_editor/ui/collection_editor/SubcollectionsEditTab.tsx +2 -2
  85. package/src/collection_editor/ui/collection_editor/SwitchControl.tsx +1 -1
  86. package/src/collection_editor/ui/collection_editor/import/CollectionEditorImportDataPreview.tsx +1 -1
  87. package/src/collection_editor/ui/collection_editor/import/CollectionEditorImportMapping.tsx +2 -2
  88. package/src/collection_editor/ui/collection_editor/properties/BlockPropertyField.tsx +1 -1
  89. package/src/collection_editor/ui/collection_editor/properties/BooleanPropertyField.tsx +1 -1
  90. package/src/collection_editor/ui/collection_editor/properties/CommonPropertyFields.tsx +3 -3
  91. package/src/collection_editor/ui/collection_editor/properties/DateTimePropertyField.tsx +2 -2
  92. package/src/collection_editor/ui/collection_editor/properties/EnumPropertyField.tsx +3 -3
  93. package/src/collection_editor/ui/collection_editor/properties/MapPropertyField.tsx +2 -2
  94. package/src/collection_editor/ui/collection_editor/properties/MarkdownPropertyField.tsx +2 -2
  95. package/src/collection_editor/ui/collection_editor/properties/NumberPropertyField.tsx +2 -2
  96. package/src/collection_editor/ui/collection_editor/properties/ReferencePropertyField.tsx +2 -2
  97. package/src/collection_editor/ui/collection_editor/properties/RelationPropertyField.tsx +1 -1
  98. package/src/collection_editor/ui/collection_editor/properties/RepeatPropertyField.tsx +1 -1
  99. package/src/collection_editor/ui/collection_editor/properties/StoragePropertyField.tsx +2 -2
  100. package/src/collection_editor/ui/collection_editor/properties/StringPropertyField.tsx +2 -2
  101. package/src/collection_editor/ui/collection_editor/properties/UrlPropertyField.tsx +1 -1
  102. package/src/collection_editor/ui/collection_editor/properties/VectorPropertyField.tsx +1 -1
  103. package/src/collection_editor/ui/collection_editor/properties/advanced/AdvancedPropertyValidation.tsx +1 -1
  104. package/src/collection_editor/ui/collection_editor/properties/conditions/ConditionsEditor.tsx +1 -1
  105. package/src/collection_editor/ui/collection_editor/properties/conditions/EnumConditionsEditor.tsx +1 -1
  106. package/src/collection_editor/ui/collection_editor/properties/validation/ArrayPropertyValidation.tsx +2 -2
  107. package/src/collection_editor/ui/collection_editor/properties/validation/GeneralPropertyValidation.tsx +2 -2
  108. package/src/collection_editor/ui/collection_editor/properties/validation/NumberPropertyValidation.tsx +2 -2
  109. package/src/collection_editor/ui/collection_editor/properties/validation/StringPropertyValidation.tsx +2 -2
  110. package/src/collection_editor/useSafeSnackbarController.ts +1 -1
  111. package/src/components/AdminModeSyncer.tsx +1 -1
  112. package/src/components/ArrayContainer.tsx +1 -1
  113. package/src/components/ClearFilterSortButton.tsx +1 -1
  114. package/src/components/CollectionPanel.tsx +1 -1
  115. package/src/components/CollectionTableBinding/CollectionRowActions.tsx +3 -3
  116. package/src/components/CollectionTableBinding/CollectionTableBinding.tsx +3 -3
  117. package/src/components/CollectionTableBinding/CollectionTableBindingProps.tsx +1 -1
  118. package/src/components/CollectionTableBinding/PropertyTableCell.tsx +1 -1
  119. package/src/components/CollectionTableBinding/column_utils.tsx +1 -1
  120. package/src/components/CollectionTableBinding/fields/TableMultipleRelationField.tsx +2 -2
  121. package/src/components/CollectionTableBinding/fields/TableReferenceField.tsx +2 -2
  122. package/src/components/CollectionTableBinding/fields/TableRelationField.tsx +2 -2
  123. package/src/components/CollectionTableBinding/fields/TableStorageUpload.tsx +1 -1
  124. package/src/components/CollectionTableBinding/internal/CollectionTableToolbar.tsx +1 -1
  125. package/src/components/CollectionTableBinding/internal/EntityTableCell.tsx +2 -2
  126. package/src/components/CollectionTableBinding/internal/EntityTableCellActions.tsx +1 -1
  127. package/src/components/CollectionTableBinding/internal/popup_field/PopupFormField.tsx +4 -4
  128. package/src/components/CollectionTableBinding/table_bindings.tsx +1 -1
  129. package/src/components/CollectionViewBinding/BoardCardBinding.tsx +2 -2
  130. package/src/components/CollectionViewBinding/CollectionBoardViewBinding.tsx +4 -4
  131. package/src/components/CollectionViewBinding/CollectionCardViewBinding.tsx +1 -1
  132. package/src/components/CollectionViewBinding/CollectionListViewBinding.tsx +3 -3
  133. package/src/components/CollectionViewBinding/CollectionViewActions.tsx +3 -3
  134. package/src/components/CollectionViewBinding/CollectionViewBinding.tsx +77 -127
  135. package/src/components/CollectionViewBinding/CollectionViewStartActions.tsx +5 -9
  136. package/src/components/CollectionViewBinding/EntityCardBinding.tsx +3 -3
  137. package/src/components/CollectionViewBinding/FiltersDialog.tsx +19 -1
  138. package/src/components/CollectionViewBinding/SplitListView.tsx +114 -63
  139. package/src/components/CollectionViewBinding/ViewModeToggle.tsx +1 -1
  140. package/src/components/CollectionViewBinding/hooks/useCollectionInlineEditor.ts +2 -2
  141. package/src/components/CollectionViewBinding/hooks/useKanbanDragAndDrop.ts +2 -2
  142. package/src/components/CollectionViewBinding/useBoardDataController.tsx +9 -3
  143. package/src/components/CollectionViewBinding/usePreviewSlots.ts +1 -1
  144. package/src/components/DefaultAppBar.tsx +3 -3
  145. package/src/components/DefaultDrawer.tsx +3 -3
  146. package/src/components/DeleteEntityDialog.tsx +1 -1
  147. package/src/components/DetailViewBinding.tsx +7 -5
  148. package/src/components/DrawerNavigationGroup.tsx +2 -2
  149. package/src/components/EditFormActions.tsx +6 -6
  150. package/src/components/EditViewBinding.tsx +9 -8
  151. package/src/components/EntityPreviewBinding.tsx +5 -4
  152. package/src/components/EntityViewBinding.tsx +2 -2
  153. package/src/components/HomePage/ContentHomePage.tsx +6 -5
  154. package/src/components/HomePage/FavouritesView.tsx +2 -2
  155. package/src/components/HomePage/NavigationCardBinding.tsx +3 -3
  156. package/src/components/HomePage/NavigationGroup.tsx +1 -1
  157. package/src/components/HomePage/RenameGroupDialog.tsx +1 -1
  158. package/src/components/JsonPreviewBinding.tsx +1 -1
  159. package/src/components/{RebaseCMS.tsx → RebaseAdmin.tsx} +3 -3
  160. package/src/components/RebaseAuthGate.tsx +2 -2
  161. package/src/components/RebaseLayout.tsx +7 -13
  162. package/src/components/RebaseNavigation.tsx +18 -3
  163. package/src/components/RebaseRouteDefs.tsx +3 -3
  164. package/src/components/RebaseShell.tsx +2 -1
  165. package/src/components/ReferenceTable/SelectionTableBinding.tsx +7 -6
  166. package/src/components/ReferenceWidget.tsx +1 -1
  167. package/src/components/RelationSelector.tsx +1 -1
  168. package/src/components/SearchIconsView.tsx +2 -2
  169. package/src/components/SelectableTable/SelectableTable.tsx +2 -2
  170. package/src/components/SelectableTable/SelectableTableContext.tsx +1 -1
  171. package/src/components/SelectableTable/filters/BooleanFilterField.tsx +1 -1
  172. package/src/components/SelectableTable/filters/DateTimeFilterField.tsx +1 -1
  173. package/src/components/SelectableTable/filters/FilterFieldBinding.tsx +1 -1
  174. package/src/components/SelectableTable/filters/ReferenceFilterField.tsx +2 -2
  175. package/src/components/SelectableTable/filters/StringNumberFilterField.tsx +1 -1
  176. package/src/components/SideDialogs.tsx +1 -1
  177. package/src/components/SidePanelBinding.tsx +47 -9
  178. package/src/components/SidePanelProvider.tsx +15 -12
  179. package/src/components/UserSelector.tsx +1 -1
  180. package/src/components/admin/CreationResultDialog.tsx +6 -3
  181. package/src/components/app/Scaffold.tsx +6 -2
  182. package/src/components/common/default_entity_actions.tsx +123 -25
  183. package/src/components/field_configs.tsx +42 -25
  184. package/src/components/history/EntityHistoryEntry.tsx +1 -1
  185. package/src/components/history/EntityHistoryView.tsx +5 -5
  186. package/src/components/history/LastEditedByIndicator.tsx +2 -2
  187. package/src/components/index.ts +1 -1
  188. package/src/contexts/BreacrumbsContext.tsx +1 -1
  189. package/src/data_export/export/BasicExportAction.tsx +1 -1
  190. package/src/data_export/export/ExportCollectionAction.tsx +1 -1
  191. package/src/data_import/components/DataNewPropertiesMapping.tsx +1 -1
  192. package/src/data_import/components/ImportFileUpload.tsx +1 -1
  193. package/src/data_import/components/ImportNewPropertyFieldPreview.tsx +3 -5
  194. package/src/data_import/components/ImportSaveInProgress.tsx +1 -1
  195. package/src/data_import/import/ImportCollectionAction.tsx +8 -8
  196. package/src/data_import/utils/data.ts +2 -2
  197. package/src/data_import/utils/get_properties_mapping.ts +1 -1
  198. package/src/editor/components/image-bubble.tsx +1 -1
  199. package/src/editor/components/table-bubble.tsx +1 -1
  200. package/src/editor/editor.tsx +1 -1
  201. package/src/editor/selectors/color-selector.tsx +1 -1
  202. package/src/editor/selectors/link-selector.tsx +1 -1
  203. package/src/editor/selectors/node-selector.tsx +2 -2
  204. package/src/editor/selectors/text-buttons.tsx +1 -1
  205. package/src/form/EntityForm.tsx +8 -5
  206. package/src/form/EntityFormActions.tsx +1 -1
  207. package/src/form/EntityFormBinding.tsx +7 -5
  208. package/src/form/PropertyFieldBinding.tsx +3 -3
  209. package/src/form/components/ErrorFocus.tsx +1 -1
  210. package/src/form/components/LocalChangesMenu.tsx +3 -3
  211. package/src/form/components/StorageItemPreview.tsx +1 -1
  212. package/src/form/components/StorageUploadProgress.tsx +3 -3
  213. package/src/form/field_bindings/ArrayCustomShapedFieldBinding.tsx +3 -2
  214. package/src/form/field_bindings/ArrayOfReferencesFieldBinding.tsx +4 -3
  215. package/src/form/field_bindings/BlockFieldBinding.tsx +4 -3
  216. package/src/form/field_bindings/DateTimeFieldBinding.tsx +3 -2
  217. package/src/form/field_bindings/KeyValueFieldBinding.tsx +4 -3
  218. package/src/form/field_bindings/MapFieldBinding.tsx +3 -2
  219. package/src/form/field_bindings/MarkdownEditorFieldBinding.tsx +4 -3
  220. package/src/form/field_bindings/MultiSelectFieldBinding.tsx +2 -1
  221. package/src/form/field_bindings/MultipleRelationFieldBinding.tsx +3 -2
  222. package/src/form/field_bindings/ReadOnlyFieldBinding.tsx +2 -1
  223. package/src/form/field_bindings/ReferenceFieldBinding.tsx +5 -4
  224. package/src/form/field_bindings/RelationFieldBinding.tsx +3 -2
  225. package/src/form/field_bindings/RepeatFieldBinding.tsx +3 -2
  226. package/src/form/field_bindings/SelectFieldBinding.tsx +2 -1
  227. package/src/form/field_bindings/StorageUploadFieldBinding.tsx +5 -4
  228. package/src/form/field_bindings/SwitchFieldBinding.tsx +2 -1
  229. package/src/form/field_bindings/TextFieldBinding.tsx +2 -1
  230. package/src/form/field_bindings/UserSelectFieldBinding.tsx +2 -1
  231. package/src/form/field_bindings/VectorFieldBinding.tsx +2 -1
  232. package/src/form/form_utils.ts +1 -1
  233. package/src/hooks/navigation/useNavigationResolution.ts +19 -4
  234. package/src/hooks/useBuildSidePanel.tsx +10 -2
  235. package/src/hooks/useCMSContext.tsx +1 -1
  236. package/src/hooks/useHistory.ts +1 -1
  237. package/src/hooks/useResolvedNavigationFrom.tsx +4 -2
  238. package/src/hooks/useSelectionDialog.tsx +3 -3
  239. package/src/index.ts +3 -3
  240. package/src/preview/PropertyPreview.tsx +2 -2
  241. package/src/preview/components/DatePreview.tsx +1 -1
  242. package/src/preview/components/EnumValuesChip.tsx +1 -1
  243. package/src/preview/components/ImagePreview.tsx +2 -2
  244. package/src/preview/components/ReferencePreview.tsx +3 -3
  245. package/src/preview/components/RelationPreview.tsx +3 -3
  246. package/src/preview/components/StorageThumbnail.tsx +1 -1
  247. package/src/preview/components/UrlComponentPreview.tsx +2 -9
  248. package/src/preview/property_previews/ArrayOfStorageComponentsPreview.tsx +1 -1
  249. package/src/preview/property_previews/ArrayOfStringsPreview.tsx +1 -1
  250. package/src/preview/property_previews/ArrayOneOfPreview.tsx +1 -1
  251. package/src/preview/property_previews/ArrayPropertyPreview.tsx +1 -1
  252. package/src/preview/property_previews/NumberPropertyPreview.tsx +1 -1
  253. package/src/preview/util.ts +9 -0
  254. package/src/routes/CustomViewRoute.tsx +2 -1
  255. package/src/routes/RebaseRoute.tsx +21 -26
  256. package/src/types/components/formex.tsx +1 -1
  257. package/src/util/navigation_utils.ts +2 -5
  258. package/src/util/previews.ts +4 -2
  259. package/src/util/view_mode.ts +102 -0
  260. package/dist/CollectionEditorDialog-B-7uW3iJ.js.map +0 -1
  261. package/dist/PropertyEditView-7KMTcrqi.js.map +0 -1
  262. package/dist/RouterCollectionsStudioView-epqIbZrJ.js.map +0 -1
  263. package/dist/history-7X5bON_n.js.map +0 -1
  264. package/dist/src-sUZfe29F.js.map +0 -1
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@rebasepro/admin",
3
3
  "type": "module",
4
- "version": "0.9.0",
4
+ "version": "0.9.1-canary.0de22e0",
5
5
  "description": "Rebase CMS — content management views, forms, and routing",
6
6
  "funding": {
7
7
  "url": "https://github.com/sponsors/rebaseco"
@@ -18,7 +18,7 @@
18
18
  "types": "./dist/index.d.ts",
19
19
  "source": "src/index.ts",
20
20
  "engines": {
21
- "node": ">=14"
21
+ "node": ">=20"
22
22
  },
23
23
  "keywords": [
24
24
  "rebase",
@@ -38,7 +38,7 @@
38
38
  "import": "./dist/index.js"
39
39
  },
40
40
  "./editor": {
41
- "types": "./dist/editor.d.ts",
41
+ "types": "./dist/editor/index.d.ts",
42
42
  "development": "./dist/editor.js",
43
43
  "import": "./dist/editor.js"
44
44
  },
@@ -83,13 +83,13 @@
83
83
  "react-dropzone": "^15.0.0",
84
84
  "react-use-measure": "^2.1.7",
85
85
  "zod": "^4.4.3",
86
- "@rebasepro/common": "0.9.0",
87
- "@rebasepro/schema-inference": "0.9.0",
88
- "@rebasepro/core": "0.9.0",
89
- "@rebasepro/formex": "0.9.0",
90
- "@rebasepro/ui": "0.9.0",
91
- "@rebasepro/types": "0.9.0",
92
- "@rebasepro/utils": "0.9.0"
86
+ "@rebasepro/common": "0.9.1-canary.0de22e0",
87
+ "@rebasepro/app": "0.9.1-canary.0de22e0",
88
+ "@rebasepro/forms": "0.9.1-canary.0de22e0",
89
+ "@rebasepro/ui": "0.9.1-canary.0de22e0",
90
+ "@rebasepro/inference": "0.9.1-canary.0de22e0",
91
+ "@rebasepro/utils": "0.9.1-canary.0de22e0",
92
+ "@rebasepro/types": "0.9.1-canary.0de22e0"
93
93
  },
94
94
  "peerDependencies": {
95
95
  "react": ">=19.0.0",
@@ -153,17 +153,12 @@
153
153
  ],
154
154
  "moduleNameMapper": {
155
155
  "\\.(css|less)$": "<rootDir>/test/__mocks__/styleMock.js",
156
- "^@rebasepro/ui$": "<rootDir>/../ui/src/index.ts",
157
- "^@rebasepro/core$": "<rootDir>/../core/src/index.ts",
158
- "^@rebasepro/common$": "<rootDir>/../common/src/index.ts",
159
- "^@rebasepro/types$": "<rootDir>/../types/src/index.ts",
160
- "^@rebasepro/formex$": "<rootDir>/../formex/src/index.ts",
161
- "^@rebasepro/utils$": "<rootDir>/../utils/src/index.ts"
156
+ "^@rebasepro/([a-z0-9-]+)$": "<rootDir>/../$1/src/index.ts"
162
157
  }
163
158
  },
164
159
  "scripts": {
165
160
  "watch": "vite build --watch",
166
- "build": "vite build && tsc --emitDeclarationOnly -p tsconfig.prod.json",
161
+ "build": "vite build && tsc --emitDeclarationOnly -p tsconfig.prod.json && node ../../scripts/assert-build-output.mjs",
167
162
  "test:lint": "eslint \"src/**\" --quiet",
168
163
  "test": "jest --passWithNoTests",
169
164
  "clean": "rm -rf dist && find ./src -name '*.js' -type f | xargs rm -f",
@@ -4,7 +4,7 @@ import { Entity, CollectionConfig, Property, TableMetadata, User } from "@rebase
4
4
  import { deepEqual as equal } from "fast-equals";
5
5
 
6
6
  import { CollectionsConfigController } from "./types/config_controller";
7
- import { useCustomizationController, useRebaseContext, useAuthController, useSnackbarController } from "@rebasepro/core";
7
+ import { useCustomizationController, useRebaseContext, useAuthController, useSnackbarController } from "@rebasepro/app";
8
8
  import { getTableName } from "@rebasepro/common";
9
9
  import { useNavigate } from "react-router-dom";
10
10
  import { CollectionEditorController } from "./types/collection_editor_controller";
@@ -57,7 +57,7 @@ export interface BuildCollectionGenerationCallbackProps {
57
57
  /**
58
58
  * Function to get the auth token.
59
59
  * This is typically `authController.getAuthToken` from `@rebasepro/client`
60
- * (or `@rebasepro/client-firebase` if using Firebase).
60
+ * (or `@rebasepro/firebase` if using Firebase).
61
61
  */
62
62
  getAuthToken: () => Promise<string>;
63
63
 
@@ -75,15 +75,15 @@ export interface BuildCollectionGenerationCallbackProps {
75
75
  *
76
76
  * @example
77
77
  * ```tsx
78
- * import { RebaseCMS } from "@rebasepro/admin";
78
+ * import { RebaseAdmin } from "@rebasepro/admin";
79
79
  * import { buildCollectionGenerationCallback } from "@rebasepro/admin/collection_editor";
80
- * import { useFirebaseAuthController } from "@rebasepro/client-firebase";
80
+ * import { useFirebaseAuthController } from "@rebasepro/firebase";
81
81
  *
82
82
  * const authController = useFirebaseAuthController({ firebaseApp });
83
83
  *
84
84
  * export function App() {
85
85
  * return (
86
- * <RebaseCMS
86
+ * <RebaseAdmin
87
87
  * collectionEditor={{
88
88
  * generateCollection: buildCollectionGenerationCallback({
89
89
  * getAuthToken: authController.getAuthToken
@@ -4,7 +4,7 @@ import {
4
4
  useAuthController,
5
5
  useCustomizationController,
6
6
  useTranslation
7
- } from "@rebasepro/core";
7
+ } from "@rebasepro/app";
8
8
  import { getPropertyInPath } from "../_cms_internals";
9
9
  import { CollectionConfig, EnumValueConfig, StringProperty } from "@rebasepro/types";
10
10
  import { resolveEnumValues } from "@rebasepro/common";
@@ -1,4 +1,4 @@
1
- import { useTranslation } from "@rebasepro/core";
1
+ import { useTranslation } from "@rebasepro/app";
2
2
  import { CollectionConfig, EntityTableController, Property } from "@rebasepro/types";
3
3
  import { IconButton, SettingsIcon, Tooltip } from "@rebasepro/ui";
4
4
  import React from "react";
@@ -1,5 +1,5 @@
1
1
  import { useCollectionRegistryController } from "../_cms_internals";
2
- import { useAuthController, useTranslation } from "@rebasepro/core";
2
+ import { useAuthController, useTranslation } from "@rebasepro/app";
3
3
  import { CollectionConfig, CollectionActionsProps } from "@rebasepro/types";
4
4
  import { IconButton, SettingsIcon, Tooltip } from "@rebasepro/ui";
5
5
 
@@ -4,7 +4,7 @@ import {
4
4
  useAuthController,
5
5
  useSnackbarController,
6
6
  useTranslation
7
- } from "@rebasepro/core";
7
+ } from "@rebasepro/app";
8
8
  import { CollectionConfig, CollectionActionsProps } from "@rebasepro/types";
9
9
  import { Button, SaveIcon, Tooltip, UndoIcon } from "@rebasepro/ui";
10
10
 
@@ -1,5 +1,5 @@
1
1
  import { useCollectionRegistryController } from "../_cms_internals";
2
- import { useAuthController, useTranslation } from "@rebasepro/core";
2
+ import { useAuthController, useTranslation } from "@rebasepro/app";
3
3
  import { CollectionConfig, PluginFormActionProps } from "@rebasepro/types";
4
4
  import { IconButton, SettingsIcon, Tooltip } from "@rebasepro/ui";
5
5
 
@@ -3,7 +3,7 @@ import {
3
3
  useAuthController,
4
4
  useSnackbarController,
5
5
  useTranslation
6
- } from "@rebasepro/core";
6
+ } from "@rebasepro/app";
7
7
  import { PluginHomePageActionsProps } from "@rebasepro/types";
8
8
  import { CopyIcon, IconButton, Menu, MenuItem, MoreVerticalIcon, SettingsIcon, Trash2Icon } from "@rebasepro/ui";
9
9
  import { useCollectionEditorController } from "../useCollectionEditorController";
@@ -1,5 +1,5 @@
1
1
  import React from "react";
2
- import { useTranslation } from "@rebasepro/core";
2
+ import { useTranslation } from "@rebasepro/app";
3
3
  import { CollectionConfig } from "@rebasepro/types";
4
4
  import { Button } from "@rebasepro/ui";
5
5
  import { useCollectionEditorController } from "../useCollectionEditorController";
@@ -1,5 +1,5 @@
1
1
  import { useCollectionRegistryController } from "../_cms_internals";
2
- import { ErrorView, useTranslation } from "@rebasepro/core";
2
+ import { ErrorView, useTranslation } from "@rebasepro/app";
3
3
  import { useCollectionEditorController } from "../useCollectionEditorController";
4
4
  import { Button } from "@rebasepro/ui";
5
5
  import { prettifyIdentifier } from "@rebasepro/utils";
@@ -1,6 +1,6 @@
1
1
  import { Button, PlusIcon } from "@rebasepro/ui";
2
2
  import { useCollectionEditorController } from "../useCollectionEditorController";
3
- import { useAdminModeController, useTranslation } from "@rebasepro/core";
3
+ import { useAdminModeController, useTranslation } from "@rebasepro/app";
4
4
 
5
5
  export function NewCollectionButton() {
6
6
  const adminModeController = useAdminModeController();
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  useAuthController,
3
3
  useTranslation
4
- } from "@rebasepro/core";
4
+ } from "@rebasepro/app";
5
5
  import { PluginHomePageAdditionalCardsProps } from "@rebasepro/types";
6
6
  import { Card, cls, PlusIcon, Typography } from "@rebasepro/ui";
7
7
  import { useCollectionEditorController } from "../useCollectionEditorController";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  useAuthController,
3
3
  useTranslation
4
- } from "@rebasepro/core";
4
+ } from "@rebasepro/app";
5
5
  import { getDefaultPropertiesOrder } from "../_cms_internals";
6
6
  import { CollectionConfig, EntityTableController } from "@rebasepro/types";
7
7
  import { PlusIcon, Tooltip } from "@rebasepro/ui";
@@ -1,5 +1,5 @@
1
1
 
2
- import { AIIcon } from "@rebasepro/core";
2
+ import { AIIcon } from "@rebasepro/app";
3
3
  import { useCollectionRegistryController } from "../../_cms_internals";
4
4
  import React, { useState } from "react";
5
5
  import { useSafeSnackbarController } from "../../useSafeSnackbarController";
@@ -1,8 +1,8 @@
1
1
 
2
- import { IconForView } from "@rebasepro/core";
2
+ import { IconForView } from "@rebasepro/app";
3
3
  import { FieldCaption } from "../../_cms_internals";
4
4
  import React, { useMemo, useState } from "react";
5
- import { useAuthController, useCustomizationController } from "@rebasepro/core";
5
+ import { useAuthController, useCustomizationController } from "@rebasepro/app";
6
6
  import { getFieldConfig, PropertyConfigBadge, SearchIconsView } from "../../_cms_internals";
7
7
  import { CollectionConfig, Property } from "@rebasepro/types";
8
8
  import {
@@ -24,7 +24,7 @@ import {
24
24
  XIcon
25
25
  } from "@rebasepro/ui";
26
26
 
27
- import { Field, getIn, useFormex } from "@rebasepro/formex";
27
+ import { Field, getIn, useFormex } from "@rebasepro/forms";
28
28
  import { useCollectionEditorController } from "../../useCollectionEditorController";
29
29
  import { LayoutModeSwitch } from "./LayoutModeSwitch";
30
30
  import { ViewModeSwitch } from "./ViewModeSwitch";
@@ -7,7 +7,7 @@ import {
7
7
  useAuthController,
8
8
  useCustomizationController,
9
9
  useUnsavedChangesDialog
10
- } from "@rebasepro/core";
10
+ } from "@rebasepro/app";
11
11
  import {
12
12
  getInferenceType,
13
13
  ImportSaveInProgress,
@@ -52,11 +52,11 @@ import { CollectionPropertiesEditorForm } from "./CollectionPropertiesEditorForm
52
52
  import { CollectionsConfigController } from "../../types/config_controller";
53
53
  import { CollectionEditorWelcomeView } from "./CollectionEditorWelcomeView";
54
54
  import { CollectionInference } from "../../types/collection_inference";
55
- import { buildEntityPropertiesFromData } from "@rebasepro/schema-inference";
55
+ import { buildEntityPropertiesFromData } from "@rebasepro/inference";
56
56
  import { CollectionEditorImportMapping } from "./import/CollectionEditorImportMapping";
57
57
  import { CollectionEditorImportDataPreview } from "./import/CollectionEditorImportDataPreview";
58
58
  import { cleanPropertiesFromImport } from "./import/clean_import_data";
59
- import { Formex, FormexController, useCreateFormex } from "@rebasepro/formex";
59
+ import { Formex, FormexController, useCreateFormex } from "@rebasepro/forms";
60
60
  import { getFullIdPath } from "./util";
61
61
  import { AICollectionGeneratorPopover } from "./AICollectionGeneratorPopover";
62
62
  import { AIModifiedPathsProvider, useAIModifiedPaths } from "./AIModifiedPathsContext";
@@ -1,4 +1,4 @@
1
- import { AIIcon } from "@rebasepro/core";
1
+ import { AIIcon } from "@rebasepro/app";
2
2
  ;
3
3
  import React, { useState } from "react";
4
4
  ;
@@ -26,7 +26,7 @@ import { blogCollectionTemplate } from "./templates/blog_template";
26
26
  import { usersCollectionTemplate } from "./templates/users_template";
27
27
  import { ImportFileUpload } from "../../_cms_internals";
28
28
  import { pagesCollectionTemplate } from "./templates/pages_template";
29
- import { useFormex } from "@rebasepro/formex";
29
+ import { useFormex } from "@rebasepro/forms";
30
30
  import { useCollectionEditorController } from "../../useCollectionEditorController";
31
31
  import { AICollectionGeneratorPopover } from "./AICollectionGeneratorPopover";
32
32
  import { CollectionGenerationCallback } from "../../api/generateCollectionApi";
@@ -1,10 +1,10 @@
1
1
 
2
2
  import React, { useEffect, useMemo, useState } from "react";
3
3
 
4
- import { Field, getIn, useFormex } from "@rebasepro/formex";
4
+ import { Field, getIn, useFormex } from "@rebasepro/forms";
5
5
  import {
6
6
  useLargeLayout
7
- } from "@rebasepro/core";
7
+ } from "@rebasepro/app";
8
8
  import { useSafeSnackbarController } from "../../useSafeSnackbarController";
9
9
  import { ErrorBoundary } from "@rebasepro/ui";
10
10
  import {
@@ -1,6 +1,8 @@
1
1
 
2
- import { CollectionConfig } from "@rebasepro/types";
3
- import React, { useState, useEffect } from "react";
2
+ import { CollectionConfig, SecurityRule as GeneratedSecurityRule } from "@rebasepro/types";
3
+ import { getPolicyNamesForRule, getPolicyNamesForRules } from "@rebasepro/utils";
4
+ import { getEffectiveSecurityRules } from "@rebasepro/common";
5
+ import React, { useState, useEffect, useMemo } from "react";
4
6
 
5
7
  /**
6
8
  * Validates and double-quotes a SQL identifier to prevent injection.
@@ -37,8 +39,8 @@ import {
37
39
  Trash2Icon,
38
40
  Typography
39
41
  } from "@rebasepro/ui";
40
- import { useFormex } from "@rebasepro/formex";
41
- import { useRebaseContext } from "@rebasepro/core";
42
+ import { useFormex } from "@rebasepro/forms";
43
+ import { useRebaseContext } from "@rebasepro/app";
42
44
 
43
45
  /** Postgres RLS policy shape — defined inline to avoid depending on @rebasepro/studio */
44
46
  export interface PostgresPolicy {
@@ -130,7 +132,65 @@ export function CollectionRLSTab() {
130
132
  fetchLivePolicies();
131
133
  }, [databaseAdmin, values.id, values.table, values.alias]);
132
134
 
133
- const unmappedPolicies = dbPolicies.filter(dp => !rules.some(r => r.name === dp.policyname));
135
+ /**
136
+ * Application roles available to `SecurityRule.roles`.
137
+ *
138
+ * Deliberately NOT `fetchAvailableRoles` — that returns native pg_roles
139
+ * (postgres, rebase_user, …), which can never satisfy an application-role
140
+ * condition.
141
+ */
142
+ const [availableRoles, setAvailableRoles] = useState<string[]>([]);
143
+ const [rolesUnavailable, setRolesUnavailable] = useState(false);
144
+
145
+ useEffect(() => {
146
+ let mounted = true;
147
+ const fetchRoles = async () => {
148
+ if (!databaseAdmin?.fetchApplicationRoles) {
149
+ // Older backend, or a driver with no application-role concept.
150
+ if (mounted) setRolesUnavailable(true);
151
+ return;
152
+ }
153
+ try {
154
+ const fetched = await databaseAdmin.fetchApplicationRoles();
155
+ if (mounted) {
156
+ setAvailableRoles(fetched);
157
+ setRolesUnavailable(false);
158
+ }
159
+ } catch (e) {
160
+ console.error("Failed to fetch application roles", e);
161
+ if (mounted) setRolesUnavailable(true);
162
+ }
163
+ };
164
+ fetchRoles();
165
+ return () => {
166
+ mounted = false;
167
+ };
168
+ }, [databaseAdmin]);
169
+
170
+ const tableName = values.id || values.table || values.alias;
171
+
172
+ /**
173
+ * Every policy name `rebase db push` would write for this collection.
174
+ *
175
+ * Two things make this more than `rules.map(r => r.name)`:
176
+ * - a rule without an explicit `name` becomes `<table>_<op>_<hash>`, so
177
+ * comparing `rule.name` to `policyname` never matches for it;
178
+ * - the generator also injects the safe-by-default baseline
179
+ * (`<table>_default_admin_*`), which is in no collection's `securityRules`.
180
+ *
181
+ * Missing either made Rebase's own policies look hand-written, and offered to
182
+ * import them back into the codebase that produced them.
183
+ */
184
+ const generatedPolicyNames = useMemo(() => {
185
+ if (!tableName) return new Set<string>();
186
+ const effectiveRules = getEffectiveSecurityRules(values as CollectionConfig);
187
+ return getPolicyNamesForRules(
188
+ [...(rules as unknown as GeneratedSecurityRule[]), ...effectiveRules],
189
+ tableName
190
+ );
191
+ }, [rules, tableName, values]);
192
+
193
+ const unmappedPolicies = dbPolicies.filter(dp => !generatedPolicyNames.has(dp.policyname));
134
194
 
135
195
  const handleSave = async (newPolicy: Partial<PostgresPolicy>) => {
136
196
  const rule: SecurityRule = {
@@ -175,7 +235,13 @@ export function CollectionRLSTab() {
175
235
  <div className="flex flex-col gap-1.5 min-w-0">
176
236
  <div className="flex items-center gap-2">
177
237
  <KeyIcon size={iconSize.smallest} className="text-text-disabled dark:text-text-disabled-dark shrink-0"/>
178
- <Typography variant="subtitle2" className="truncate">{rule.name}</Typography>
238
+ <Typography variant="subtitle2" className="truncate">
239
+ {/* Unnamed rules are still named in Postgres — show what they compile to
240
+ rather than an empty heading. */}
241
+ {rule.name || (tableName
242
+ ? getPolicyNamesForRule(rule as unknown as GeneratedSecurityRule, tableName).join(", ")
243
+ : "Unnamed policy")}
244
+ </Typography>
179
245
  </div>
180
246
  <div className="flex gap-2 text-xs pl-6 overflow-x-auto hide-scrollbar">
181
247
  <Chip size="small" className="bg-surface-100 dark:bg-surface-900 text-text-secondary border-none">Action: {rule.operation || "ALL"}</Chip>
@@ -188,7 +254,7 @@ export function CollectionRLSTab() {
188
254
  tablename: values.id || values.table || values.alias || "your_table",
189
255
  permissive: (rule.mode || "permissive").toUpperCase() as PostgresPolicy["permissive"],
190
256
  cmd: (rule.operation || "ALL").toUpperCase() as PostgresPolicy["cmd"],
191
- roles: rule.roles || ["public"],
257
+ roles: rule.roles || [],
192
258
  qual: rule.using || null,
193
259
  with_check: rule.withCheck || null
194
260
  })}>
@@ -262,6 +328,8 @@ export function CollectionRLSTab() {
262
328
  <InlinePolicyEditor
263
329
  policy={editingPolicy === "new" ? undefined : editingPolicy}
264
330
  table={values.id || values.table || values.alias || "your_table"}
331
+ availableRoles={availableRoles}
332
+ rolesUnavailable={rolesUnavailable}
265
333
  onSave={handleSave}
266
334
  onCancel={() => setEditingPolicy(null)}
267
335
  />
@@ -276,30 +344,57 @@ export function CollectionRLSTab() {
276
344
 
277
345
  type PolicyCommand = "ALL" | "SELECT" | "INSERT" | "UPDATE" | "DELETE";
278
346
  const COMMAND_OPTIONS: PolicyCommand[] = ["ALL", "SELECT", "INSERT", "UPDATE", "DELETE"];
279
- const ROLE_OPTIONS = ["public", "authenticated", "anon", "admin"];
280
347
 
281
348
  function InlinePolicyEditor({
282
349
  policy,
283
350
  table,
351
+ availableRoles,
352
+ rolesUnavailable,
284
353
  onSave,
285
354
  onCancel
286
355
  }: {
287
356
  policy?: PostgresPolicy;
288
357
  table: string;
358
+ availableRoles: string[];
359
+ rolesUnavailable: boolean;
289
360
  onSave: (policyData: Partial<PostgresPolicy>) => void;
290
361
  onCancel: () => void;
291
362
  }) {
292
363
  const [name, setName] = useState(policy?.policyname || "");
293
364
  const [behavior, setBehavior] = useState<"PERMISSIVE" | "RESTRICTIVE">(policy?.permissive || "PERMISSIVE");
294
365
  const [command, setCommand] = useState<PolicyCommand>((policy?.cmd as PolicyCommand) || "ALL");
366
+ // No roles means "not restricted by role". Seeding a value here would
367
+ // silently narrow every new policy to it.
295
368
  const [roles, setRoles] = useState<string[]>(
296
- policy?.roles ? (Array.isArray(policy.roles) ? policy.roles : [policy.roles]) : ["public"]
369
+ policy?.roles ? (Array.isArray(policy.roles) ? policy.roles : [policy.roles]) : []
297
370
  );
371
+ const [customRole, setCustomRole] = useState("");
298
372
  const [usingExpr, setUsingExpr] = useState(policy?.qual || "");
299
373
  const [checkExpr, setCheckExpr] = useState(policy?.with_check || "");
300
374
 
301
375
  const showCheck = command === "ALL" || command === "INSERT" || command === "UPDATE";
302
376
 
377
+ /**
378
+ * Roles offered in the dropdown: those in use in the project, plus any the
379
+ * rule already carries. The union matters — application roles are derived
380
+ * from what users hold, so a role that is referenced here but assigned to
381
+ * nobody would otherwise vanish from its own policy on the next save.
382
+ */
383
+ const roleOptions = useMemo(
384
+ () => Array.from(new Set([...availableRoles, ...roles])).sort(),
385
+ [availableRoles, roles]
386
+ );
387
+
388
+ const addCustomRole = () => {
389
+ const trimmed = customRole.trim();
390
+ if (!trimmed || roles.includes(trimmed)) {
391
+ setCustomRole("");
392
+ return;
393
+ }
394
+ setRoles([...roles, trimmed]);
395
+ setCustomRole("");
396
+ };
397
+
303
398
  return (
304
399
  <>
305
400
  <DialogTitle variant="h6">
@@ -334,10 +429,41 @@ function InlinePolicyEditor({
334
429
  </div>
335
430
  </div>
336
431
  <div className="flex flex-col gap-1.5">
337
- <Typography variant="caption" className="uppercase tracking-wider text-text-secondary">Target Roles</Typography>
338
- <MultiSelect size="small" value={roles} onValueChange={setRoles} placeholder="Select roles">
339
- {ROLE_OPTIONS.map(r => <MultiSelectItem key={r} value={r}>{r}</MultiSelectItem>)}
340
- </MultiSelect>
432
+ <Typography variant="caption" className="uppercase tracking-wider text-text-secondary">Application Roles</Typography>
433
+ <Typography variant="caption" className="text-text-secondary opacity-80 -mt-1">
434
+ Roles held by users of this project, matched via <span className="font-mono">auth.roles()</span>.
435
+ These are not PostgreSQL roles — leave empty to apply the policy to everyone.
436
+ </Typography>
437
+ {roleOptions.length > 0 && (
438
+ <MultiSelect size="small" value={roles} onValueChange={setRoles} placeholder="Select roles">
439
+ {roleOptions.map(r => <MultiSelectItem key={r} value={r}>{r}</MultiSelectItem>)}
440
+ </MultiSelect>
441
+ )}
442
+ {rolesUnavailable && roleOptions.length === 0 && (
443
+ <Typography variant="caption" className="text-text-secondary opacity-80">
444
+ Could not load the project&apos;s roles — enter them manually below.
445
+ </Typography>
446
+ )}
447
+ {!rolesUnavailable && roleOptions.length === 0 && (
448
+ <Typography variant="caption" className="text-text-secondary opacity-80">
449
+ No roles are assigned to any user yet — enter one manually below.
450
+ </Typography>
451
+ )}
452
+ <div className="flex gap-2 items-center">
453
+ <TextField size="small" value={customRole}
454
+ onChange={(e: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>) => setCustomRole(e.target.value)}
455
+ onKeyDown={(e: React.KeyboardEvent) => {
456
+ if (e.key === "Enter") {
457
+ e.preventDefault();
458
+ addCustomRole();
459
+ }
460
+ }}
461
+ placeholder="Add a role not listed, e.g. editor"/>
462
+ <Button size="small" variant="outlined" color="neutral"
463
+ disabled={!customRole.trim()} onClick={addCustomRole}>
464
+ Add
465
+ </Button>
466
+ </div>
341
467
  </div>
342
468
  {command !== "INSERT" && (
343
469
  <div className="flex flex-col gap-1.5">
@@ -21,7 +21,7 @@ import {
21
21
  Trash2Icon,
22
22
  Typography
23
23
  } from "@rebasepro/ui";
24
- import { useFormex } from "@rebasepro/formex";
24
+ import { useFormex } from "@rebasepro/forms";
25
25
  import { PostgresCollectionConfig, Relation } from "@rebasepro/types";
26
26
  import { useCollectionsConfigController } from "../../useCollectionsConfigController";
27
27
 
@@ -1,5 +1,5 @@
1
1
 
2
- import { useUnsavedChangesDialog, UnsavedChangesDialog } from "@rebasepro/core";
2
+ import { useUnsavedChangesDialog, UnsavedChangesDialog } from "@rebasepro/app";
3
3
  import * as React from "react";
4
4
  import { useState } from "react";
5
5
  import { Button, PlusIcon, Typography } from "@rebasepro/ui";
@@ -1,5 +1,5 @@
1
1
 
2
- import { IconForView } from "@rebasepro/core";
2
+ import { IconForView } from "@rebasepro/app";
3
3
  import React, { useState, useEffect } from "react";
4
4
  import {
5
5
  Button,
@@ -1,7 +1,7 @@
1
1
 
2
2
  import { FieldCaption } from "../../_cms_internals";
3
3
  import React, { useMemo, useState } from "react";
4
- import { useCustomizationController } from "@rebasepro/core";
4
+ import { useCustomizationController } from "@rebasepro/app";
5
5
  import { getFieldConfig } from "../../../components/field_configs";
6
6
  import { PropertyConfigBadge } from "../../../components/PropertyConfigBadge";
7
7
  import { CollectionConfig, Property } from "@rebasepro/types";
@@ -18,7 +18,7 @@ import {
18
18
  XIcon
19
19
  } from "@rebasepro/ui";
20
20
 
21
- import { useFormex } from "@rebasepro/formex";
21
+ import { useFormex } from "@rebasepro/forms";
22
22
  import { LayoutModeSwitch } from "./LayoutModeSwitch";
23
23
  import { ViewModeSwitch } from "./ViewModeSwitch";
24
24
  import { KanbanConfigSection } from "./KanbanConfigSection";
@@ -3,7 +3,7 @@ import React from "react";
3
3
  import {
4
4
  ConfirmationDialog,
5
5
  useCustomizationController
6
- } from "@rebasepro/core";
6
+ } from "@rebasepro/app";
7
7
  import { resolveEntityAction } from "../../_cms_internals";
8
8
  import { type CollectionConfig } from "@rebasepro/types";
9
9
  import { EntityAction } from "@rebasepro/types";
@@ -23,7 +23,7 @@ import {
23
23
  Trash2Icon,
24
24
  Typography
25
25
  } from "@rebasepro/ui";
26
- import { useFormex } from "@rebasepro/formex";
26
+ import { useFormex } from "@rebasepro/forms";
27
27
  import { EntityActionsSelectDialog } from "./EntityActionsSelectDialog";
28
28
 
29
29
  export function EntityActionsEditTab({
@@ -1,4 +1,4 @@
1
- import { useCustomizationController } from "@rebasepro/core";
1
+ import { useCustomizationController } from "@rebasepro/app";
2
2
  import { Button, Dialog, DialogActions, DialogContent, DialogTitle, Typography } from "@rebasepro/ui";
3
3
  import React from "react";
4
4
 
@@ -1,4 +1,4 @@
1
- import { useCustomizationController } from "@rebasepro/core";
1
+ import { useCustomizationController } from "@rebasepro/app";
2
2
  import { Button, Dialog, DialogActions, DialogContent, DialogTitle, Typography } from "@rebasepro/ui";
3
3
  import React from "react";
4
4
 
@@ -23,8 +23,8 @@ import {
23
23
  SettingsIcon,
24
24
  Typography
25
25
  } from "@rebasepro/ui";
26
- import { extractEnumFromValues } from "@rebasepro/schema-inference";
27
- import { Field, Formex, getIn, useCreateFormex, useFormex } from "@rebasepro/formex";
26
+ import { extractEnumFromValues } from "@rebasepro/inference";
27
+ import { Field, Formex, getIn, useCreateFormex, useFormex } from "@rebasepro/forms";
28
28
 
29
29
  type EnumFormProps = {
30
30
  enumValues: EnumValueConfig[];
@@ -1,5 +1,5 @@
1
1
 
2
- import { IconForView } from "@rebasepro/core";
2
+ import { IconForView } from "@rebasepro/app";
3
3
  import { FieldCaption } from "../../_cms_internals";
4
4
  import React, { useState } from "react";
5
5
 
@@ -23,7 +23,7 @@ import {
23
23
  Tooltip,
24
24
  Typography
25
25
  } from "@rebasepro/ui";
26
- import { Field, getIn, useFormex } from "@rebasepro/formex";
26
+ import { Field, getIn, useFormex } from "@rebasepro/forms";
27
27
  import { useCollectionsConfigController } from "../../useCollectionsConfigController";
28
28
  import { singular, toSnakeCase } from "@rebasepro/utils";
29
29
  import type { ExtraCollectionFieldsParams } from "../../extensibility_types";