@rebasepro/admin 0.4.0 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (353) hide show
  1. package/README.md +135 -0
  2. package/dist/CollectionEditorDialog-jA-PLh6N.js +3549 -0
  3. package/dist/CollectionEditorDialog-jA-PLh6N.js.map +1 -0
  4. package/dist/CollectionsStudioView-UKouBPOm.js +170 -0
  5. package/dist/CollectionsStudioView-UKouBPOm.js.map +1 -0
  6. package/dist/PropertyEditView-DEUddmg_.js +3660 -0
  7. package/dist/PropertyEditView-DEUddmg_.js.map +1 -0
  8. package/dist/collection_editor/ConfigControllerProvider.d.ts +2 -2
  9. package/dist/collection_editor/ui/AddKanbanColumnAction.d.ts +2 -1
  10. package/dist/collection_editor/ui/CollectionViewHeaderAction.d.ts +2 -1
  11. package/dist/collection_editor/ui/EditorCollectionAction.d.ts +1 -1
  12. package/dist/collection_editor/ui/EditorCollectionActionStart.d.ts +1 -1
  13. package/dist/collection_editor/ui/EditorEntityAction.d.ts +1 -1
  14. package/dist/collection_editor/ui/HomePageEditorCollectionAction.d.ts +1 -1
  15. package/dist/collection_editor/ui/KanbanSetupAction.d.ts +2 -1
  16. package/dist/collection_editor/ui/MissingReferenceWidget.d.ts +1 -1
  17. package/dist/collection_editor/ui/NewCollectionButton.d.ts +1 -1
  18. package/dist/collection_editor/ui/NewCollectionCard.d.ts +1 -1
  19. package/dist/collection_editor/ui/PropertyAddColumnComponent.d.ts +1 -1
  20. package/dist/collection_editor/ui/collection_editor/AICollectionGeneratorPopover.d.ts +1 -1
  21. package/dist/collection_editor/ui/collection_editor/AIModifiedPathsContext.d.ts +1 -1
  22. package/dist/collection_editor/ui/collection_editor/CollectionDetailsForm.d.ts +2 -1
  23. package/dist/collection_editor/ui/collection_editor/CollectionEditorDialog.d.ts +2 -2
  24. package/dist/collection_editor/ui/collection_editor/CollectionEditorWelcomeView.d.ts +2 -2
  25. package/dist/collection_editor/ui/collection_editor/CollectionJsonImportDialog.d.ts +2 -1
  26. package/dist/collection_editor/ui/collection_editor/CollectionPropertiesEditorForm.d.ts +1 -1
  27. package/dist/collection_editor/ui/collection_editor/CollectionRLSTab.d.ts +2 -1
  28. package/dist/collection_editor/ui/collection_editor/CollectionRelationsTab.d.ts +2 -1
  29. package/dist/collection_editor/ui/collection_editor/CollectionStudioView.d.ts +2 -1
  30. package/dist/collection_editor/ui/collection_editor/CollectionYupValidation.d.ts +1 -9
  31. package/dist/collection_editor/ui/collection_editor/CollectionsStudioView.d.ts +2 -1
  32. package/dist/collection_editor/ui/collection_editor/DisplaySettingsForm.d.ts +2 -1
  33. package/dist/collection_editor/ui/collection_editor/EntityActionsEditTab.d.ts +2 -1
  34. package/dist/collection_editor/ui/collection_editor/EntityActionsSelectDialog.d.ts +2 -1
  35. package/dist/collection_editor/ui/collection_editor/EntityCustomViewsSelectDialog.d.ts +2 -1
  36. package/dist/collection_editor/ui/collection_editor/EnumForm.d.ts +2 -1
  37. package/dist/collection_editor/ui/collection_editor/GeneralSettingsForm.d.ts +2 -1
  38. package/dist/collection_editor/ui/collection_editor/GetCodeDialog.d.ts +2 -1
  39. package/dist/collection_editor/ui/collection_editor/KanbanConfigSection.d.ts +2 -1
  40. package/dist/collection_editor/ui/collection_editor/LayoutModeSwitch.d.ts +1 -1
  41. package/dist/collection_editor/ui/collection_editor/PropertyEditView.d.ts +4 -3
  42. package/dist/collection_editor/ui/collection_editor/PropertyFieldPreview.d.ts +2 -2
  43. package/dist/collection_editor/ui/collection_editor/PropertyTree.d.ts +2 -2
  44. package/dist/collection_editor/ui/collection_editor/SubcollectionsEditTab.d.ts +2 -1
  45. package/dist/collection_editor/ui/collection_editor/SwitchControl.d.ts +2 -1
  46. package/dist/collection_editor/ui/collection_editor/ViewModeSwitch.d.ts +1 -1
  47. package/dist/collection_editor/ui/collection_editor/import/CollectionEditorImportDataPreview.d.ts +1 -1
  48. package/dist/collection_editor/ui/collection_editor/import/CollectionEditorImportMapping.d.ts +3 -2
  49. package/dist/collection_editor/ui/collection_editor/properties/BlockPropertyField.d.ts +2 -1
  50. package/dist/collection_editor/ui/collection_editor/properties/BooleanPropertyField.d.ts +2 -1
  51. package/dist/collection_editor/ui/collection_editor/properties/DateTimePropertyField.d.ts +2 -1
  52. package/dist/collection_editor/ui/collection_editor/properties/EnumPropertyField.d.ts +2 -1
  53. package/dist/collection_editor/ui/collection_editor/properties/KeyValuePropertyField.d.ts +2 -1
  54. package/dist/collection_editor/ui/collection_editor/properties/MapPropertyField.d.ts +2 -1
  55. package/dist/collection_editor/ui/collection_editor/properties/MarkdownPropertyField.d.ts +2 -1
  56. package/dist/collection_editor/ui/collection_editor/properties/NumberPropertyField.d.ts +2 -1
  57. package/dist/collection_editor/ui/collection_editor/properties/ReferencePropertyField.d.ts +3 -2
  58. package/dist/collection_editor/ui/collection_editor/properties/RelationPropertyField.d.ts +2 -1
  59. package/dist/collection_editor/ui/collection_editor/properties/RepeatPropertyField.d.ts +2 -1
  60. package/dist/collection_editor/ui/collection_editor/properties/StoragePropertyField.d.ts +2 -1
  61. package/dist/collection_editor/ui/collection_editor/properties/StringPropertyField.d.ts +2 -1
  62. package/dist/collection_editor/ui/collection_editor/properties/UrlPropertyField.d.ts +2 -1
  63. package/dist/collection_editor/ui/collection_editor/properties/VectorPropertyField.d.ts +2 -1
  64. package/dist/collection_editor/ui/collection_editor/properties/advanced/AdvancedPropertyValidation.d.ts +2 -1
  65. package/dist/collection_editor/ui/collection_editor/properties/conditions/ConditionsEditor.d.ts +2 -1
  66. package/dist/collection_editor/ui/collection_editor/properties/conditions/ConditionsPanel.d.ts +1 -1
  67. package/dist/collection_editor/ui/collection_editor/properties/conditions/EnumConditionsEditor.d.ts +2 -1
  68. package/dist/collection_editor/ui/collection_editor/properties/validation/ArrayPropertyValidation.d.ts +2 -1
  69. package/dist/collection_editor/ui/collection_editor/properties/validation/GeneralPropertyValidation.d.ts +2 -1
  70. package/dist/collection_editor/ui/collection_editor/properties/validation/NumberPropertyValidation.d.ts +2 -1
  71. package/dist/collection_editor/ui/collection_editor/properties/validation/StringPropertyValidation.d.ts +2 -1
  72. package/dist/collection_editor/ui/collection_editor/properties/validation/ValidationPanel.d.ts +1 -1
  73. package/dist/collection_editor/ui/collection_editor/templates/blog_template.d.ts +1 -1
  74. package/dist/collection_editor/ui/collection_editor/templates/pages_template.d.ts +1 -1
  75. package/dist/collection_editor/ui/collection_editor/templates/products_template.d.ts +1 -1
  76. package/dist/collection_editor/ui/collection_editor/templates/users_template.d.ts +1 -1
  77. package/dist/collection_editor_ui.js +4 -11
  78. package/dist/components/ArrayContainer.d.ts +3 -3
  79. package/dist/components/ClearFilterSortButton.d.ts +1 -1
  80. package/dist/components/CollectionEditorDialogs.d.ts +2 -1
  81. package/dist/components/CollectionPanel.d.ts +2 -27
  82. package/dist/components/DefaultAppBar.d.ts +1 -1
  83. package/dist/components/DefaultDrawer.d.ts +4 -4
  84. package/dist/components/DeleteEntityDialog.d.ts +2 -1
  85. package/dist/components/DrawerNavigationGroup.d.ts +1 -1
  86. package/dist/components/DrawerNavigationItem.d.ts +1 -1
  87. package/dist/components/EntityCollectionTable/EntityCollectionRowActions.d.ts +1 -1
  88. package/dist/components/EntityCollectionTable/EntityCollectionTable.d.ts +2 -1
  89. package/dist/components/EntityCollectionTable/fields/TableMultipleRelationField.d.ts +3 -3
  90. package/dist/components/EntityCollectionTable/fields/TableReferenceField.d.ts +3 -3
  91. package/dist/components/EntityCollectionTable/fields/TableRelationField.d.ts +3 -3
  92. package/dist/components/EntityCollectionTable/fields/TableRelationSelectorField.d.ts +2 -1
  93. package/dist/components/EntityCollectionTable/fields/TableStorageUpload.d.ts +2 -2
  94. package/dist/components/EntityCollectionTable/fields/VirtualTableDateField.d.ts +1 -1
  95. package/dist/components/EntityCollectionTable/fields/VirtualTableInput.d.ts +2 -1
  96. package/dist/components/EntityCollectionTable/fields/VirtualTableNumberInput.d.ts +2 -1
  97. package/dist/components/EntityCollectionTable/fields/VirtualTableSelect.d.ts +1 -1
  98. package/dist/components/EntityCollectionTable/fields/VirtualTableSwitch.d.ts +2 -1
  99. package/dist/components/EntityCollectionTable/fields/VirtualTableUserSelect.d.ts +1 -1
  100. package/dist/components/EntityCollectionTable/internal/CollectionTableToolbar.d.ts +1 -1
  101. package/dist/components/EntityCollectionTable/internal/EntityTableCellActions.d.ts +1 -1
  102. package/dist/components/EntityCollectionTable/internal/popup_field/PopupFormField.d.ts +4 -3
  103. package/dist/components/EntityCollectionView/Board.d.ts +2 -1
  104. package/dist/components/EntityCollectionView/BoardColumnTitle.d.ts +1 -1
  105. package/dist/components/EntityCollectionView/BoardSortableList.d.ts +1 -1
  106. package/dist/components/EntityCollectionView/EntityBoardCard.d.ts +1 -1
  107. package/dist/components/EntityCollectionView/EntityCard.d.ts +2 -1
  108. package/dist/components/EntityCollectionView/EntityCollectionBoardView.d.ts +1 -1
  109. package/dist/components/EntityCollectionView/EntityCollectionCardView.d.ts +1 -1
  110. package/dist/components/EntityCollectionView/EntityCollectionListView.d.ts +1 -1
  111. package/dist/components/EntityCollectionView/EntityCollectionView.d.ts +0 -24
  112. package/dist/components/EntityCollectionView/EntityCollectionViewActions.d.ts +1 -1
  113. package/dist/components/EntityCollectionView/EntityCollectionViewStartActions.d.ts +2 -1
  114. package/dist/components/EntityCollectionView/FilterPresetsButton.d.ts +2 -1
  115. package/dist/components/EntityCollectionView/FiltersDialog.d.ts +2 -1
  116. package/dist/components/EntityCollectionView/SplitListView.d.ts +1 -1
  117. package/dist/components/EntityCollectionView/ViewModeToggle.d.ts +2 -1
  118. package/dist/components/EntityDetailView.d.ts +1 -1
  119. package/dist/components/EntityEditView.d.ts +2 -2
  120. package/dist/components/EntityEditViewFormActions.d.ts +2 -1
  121. package/dist/components/EntityJsonPreview.d.ts +2 -1
  122. package/dist/components/EntityPreview.d.ts +3 -3
  123. package/dist/components/EntitySidePanel.d.ts +2 -1
  124. package/dist/components/EntityView.d.ts +2 -1
  125. package/dist/components/FieldCaption.d.ts +1 -1
  126. package/dist/components/HomePage/ContentHomePage.d.ts +1 -1
  127. package/dist/components/HomePage/FavouritesView.d.ts +1 -1
  128. package/dist/components/HomePage/HomePageDnD.d.ts +4 -4
  129. package/dist/components/HomePage/NavigationCard.d.ts +1 -1
  130. package/dist/components/HomePage/NavigationCardBinding.d.ts +2 -1
  131. package/dist/components/HomePage/NavigationGroup.d.ts +2 -2
  132. package/dist/components/HomePage/RenameGroupDialog.d.ts +2 -1
  133. package/dist/components/HomePage/SmallNavigationCard.d.ts +1 -1
  134. package/dist/components/PropertyCollectionView.d.ts +2 -1
  135. package/dist/components/PropertyIdCopyTooltip.d.ts +2 -2
  136. package/dist/components/RebaseAuthGate.d.ts +1 -1
  137. package/dist/components/RebaseLayout.d.ts +1 -1
  138. package/dist/components/RebaseNavigation.d.ts +1 -1
  139. package/dist/components/RebaseRouteDefs.d.ts +1 -1
  140. package/dist/components/RebaseShell.d.ts +1 -1
  141. package/dist/components/ReferenceTable/EntitySelectionTable.d.ts +1 -1
  142. package/dist/components/ReferenceWidget.d.ts +2 -1
  143. package/dist/components/SearchIconsView.d.ts +2 -1
  144. package/dist/components/SelectableTable/SelectableTable.d.ts +2 -2
  145. package/dist/components/SelectableTable/filters/BooleanFilterField.d.ts +2 -1
  146. package/dist/components/SelectableTable/filters/DateTimeFilterField.d.ts +2 -1
  147. package/dist/components/SelectableTable/filters/ReferenceFilterField.d.ts +2 -1
  148. package/dist/components/SelectableTable/filters/RelationFilterField.d.ts +2 -1
  149. package/dist/components/SelectableTable/filters/StringNumberFilterField.d.ts +2 -1
  150. package/dist/components/SideDialogs.d.ts +1 -1
  151. package/dist/components/SideEntityProvider.d.ts +1 -1
  152. package/dist/components/admin/CreationResultDialog.d.ts +2 -1
  153. package/dist/components/app/AppBar.d.ts +1 -1
  154. package/dist/components/app/Drawer.d.ts +1 -1
  155. package/dist/components/common/default_entity_actions.d.ts +2 -1
  156. package/dist/components/history/EntityHistoryEntry.d.ts +1 -1
  157. package/dist/components/history/EntityHistoryView.d.ts +1 -1
  158. package/dist/components/history/LastEditedByFormAction.d.ts +2 -1
  159. package/dist/components/history/LastEditedByIndicator.d.ts +2 -1
  160. package/dist/components/history/UserChip.d.ts +1 -1
  161. package/dist/data_export/export/BasicExportAction.d.ts +2 -1
  162. package/dist/data_export/export/ExportCollectionAction.d.ts +1 -1
  163. package/dist/data_import/components/DataNewPropertiesMapping.d.ts +1 -1
  164. package/dist/data_import/components/ImportFileUpload.d.ts +1 -1
  165. package/dist/data_import/components/ImportNewPropertyFieldPreview.d.ts +2 -1
  166. package/dist/data_import/components/ImportSaveInProgress.d.ts +1 -1
  167. package/dist/data_import/import/ImportCollectionAction.d.ts +4 -3
  168. package/dist/editor/components/SlashCommandMenu.d.ts +2 -1
  169. package/dist/editor/editor.d.ts +1 -1
  170. package/dist/editor/selectors/color-selector.d.ts +1 -1
  171. package/dist/editor/selectors/link-selector.d.ts +1 -1
  172. package/dist/editor/selectors/node-selector.d.ts +1 -1
  173. package/dist/editor/selectors/text-buttons.d.ts +1 -1
  174. package/dist/editor.js +2621 -3574
  175. package/dist/editor.js.map +1 -1
  176. package/dist/form/EntityForm.d.ts +2 -1
  177. package/dist/form/EntityFormActions.d.ts +2 -1
  178. package/dist/form/components/FieldHelperText.d.ts +1 -1
  179. package/dist/form/components/FormEntry.d.ts +1 -1
  180. package/dist/form/components/FormLayout.d.ts +1 -1
  181. package/dist/form/components/LabelWithIconAndTooltip.d.ts +1 -1
  182. package/dist/form/components/LocalChangesMenu.d.ts +2 -1
  183. package/dist/form/components/StorageItemPreview.d.ts +2 -1
  184. package/dist/form/components/StorageUploadProgress.d.ts +2 -1
  185. package/dist/form/field_bindings/ArrayCustomShapedFieldBinding.d.ts +2 -1
  186. package/dist/form/field_bindings/ArrayOfReferencesFieldBinding.d.ts +2 -1
  187. package/dist/form/field_bindings/BlockFieldBinding.d.ts +2 -1
  188. package/dist/form/field_bindings/DateTimeFieldBinding.d.ts +2 -1
  189. package/dist/form/field_bindings/KeyValueFieldBinding.d.ts +2 -1
  190. package/dist/form/field_bindings/MapFieldBinding.d.ts +2 -1
  191. package/dist/form/field_bindings/MarkdownEditorFieldBinding.d.ts +2 -1
  192. package/dist/form/field_bindings/MultiSelectFieldBinding.d.ts +2 -1
  193. package/dist/form/field_bindings/MultipleRelationFieldBinding.d.ts +2 -1
  194. package/dist/form/field_bindings/ReadOnlyFieldBinding.d.ts +2 -1
  195. package/dist/form/field_bindings/ReferenceAsStringFieldBinding.d.ts +2 -1
  196. package/dist/form/field_bindings/ReferenceFieldBinding.d.ts +2 -1
  197. package/dist/form/field_bindings/RelationFieldBinding.d.ts +2 -1
  198. package/dist/form/field_bindings/RepeatFieldBinding.d.ts +2 -1
  199. package/dist/form/field_bindings/SelectFieldBinding.d.ts +2 -1
  200. package/dist/form/field_bindings/StorageUploadFieldBinding.d.ts +3 -2
  201. package/dist/form/field_bindings/SwitchFieldBinding.d.ts +2 -1
  202. package/dist/form/field_bindings/TextFieldBinding.d.ts +2 -1
  203. package/dist/form/field_bindings/UserSelectFieldBinding.d.ts +2 -1
  204. package/dist/form/field_bindings/VectorFieldBinding.d.ts +2 -1
  205. package/dist/history-BL49TIDb.js +311 -0
  206. package/dist/history-BL49TIDb.js.map +1 -0
  207. package/dist/hooks/navigation/useBuildNavigationStateController.d.ts +0 -2
  208. package/dist/hooks/navigation/useNavigationResolution.d.ts +5 -6
  209. package/dist/hooks/navigation/useResolvedCollections.d.ts +0 -2
  210. package/dist/hooks/useBreadcrumbsController.d.ts +2 -32
  211. package/dist/index.js +2 -3393
  212. package/dist/markdown-CklalUUk.js +526 -0
  213. package/dist/markdown-CklalUUk.js.map +1 -0
  214. package/dist/preview/components/ArrayEnumPreview.d.ts +2 -1
  215. package/dist/preview/components/EmptyValue.d.ts +2 -1
  216. package/dist/preview/components/EnumValuesChip.d.ts +1 -1
  217. package/dist/preview/components/ImagePreview.d.ts +2 -1
  218. package/dist/preview/components/ReferencePreview.d.ts +2 -1
  219. package/dist/preview/components/RelationPreview.d.ts +2 -1
  220. package/dist/preview/components/StorageThumbnail.d.ts +1 -1
  221. package/dist/preview/components/UserPreview.d.ts +6 -3
  222. package/dist/preview/property_previews/ArrayOfMapsPreview.d.ts +2 -1
  223. package/dist/preview/property_previews/ArrayOfReferencesPreview.d.ts +1 -1
  224. package/dist/preview/property_previews/ArrayOfRelationsPreview.d.ts +1 -1
  225. package/dist/preview/property_previews/ArrayOfStorageComponentsPreview.d.ts +2 -1
  226. package/dist/preview/property_previews/ArrayOfStringsPreview.d.ts +2 -1
  227. package/dist/preview/property_previews/ArrayOneOfPreview.d.ts +2 -1
  228. package/dist/preview/property_previews/ArrayPropertyEnumPreview.d.ts +1 -1
  229. package/dist/preview/property_previews/ArrayPropertyPreview.d.ts +2 -1
  230. package/dist/preview/property_previews/MapPropertyPreview.d.ts +3 -2
  231. package/dist/preview/property_previews/SkeletonPropertyComponent.d.ts +5 -4
  232. package/dist/rolldown-runtime-D7D4PA-g.js +13 -0
  233. package/dist/routes/RebaseRoute.d.ts +1 -1
  234. package/dist/src-BJ8fkM8y.js +24010 -0
  235. package/dist/src-BJ8fkM8y.js.map +1 -0
  236. package/dist/types/components/PropertyPreviewProps.d.ts +4 -0
  237. package/dist/types/components/formex.d.ts +1 -40
  238. package/dist/types/fields.d.ts +9 -1
  239. package/dist/util/navigation_utils.d.ts +2 -1
  240. package/dist/util/previews.d.ts +5 -0
  241. package/dist/util/property_utils.d.ts +1 -1
  242. package/package.json +29 -27
  243. package/src/collection_editor/ConfigControllerProvider.tsx +10 -7
  244. package/src/collection_editor/ui/CollectionViewHeaderAction.tsx +2 -1
  245. package/src/collection_editor/ui/EditorCollectionAction.tsx +2 -1
  246. package/src/collection_editor/ui/EditorCollectionActionStart.tsx +2 -1
  247. package/src/collection_editor/ui/EditorEntityAction.tsx +2 -1
  248. package/src/collection_editor/ui/KanbanSetupAction.tsx +2 -1
  249. package/src/collection_editor/ui/MissingReferenceWidget.tsx +2 -1
  250. package/src/collection_editor/ui/PropertyAddColumnComponent.tsx +2 -1
  251. package/src/collection_editor/ui/collection_editor/CollectionDetailsForm.tsx +2 -3
  252. package/src/collection_editor/ui/collection_editor/CollectionEditorDialog.tsx +0 -1
  253. package/src/collection_editor/ui/collection_editor/CollectionPropertiesEditorForm.tsx +8 -4
  254. package/src/collection_editor/ui/collection_editor/CollectionRelationsTab.tsx +2 -2
  255. package/src/collection_editor/ui/collection_editor/DisplaySettingsForm.tsx +2 -1
  256. package/src/collection_editor/ui/collection_editor/PropertyEditView.tsx +2 -1
  257. package/src/collection_editor/ui/collection_editor/PropertyFieldPreview.tsx +2 -2
  258. package/src/collection_editor/ui/collection_editor/properties/RelationPropertyField.tsx +5 -2
  259. package/src/collection_editor/ui/collection_editor/properties/conditions/ConditionsEditor.tsx +2 -1
  260. package/src/collection_editor/ui/collection_editor/properties/conditions/EnumConditionsEditor.tsx +1 -1
  261. package/src/collection_editor/ui/collection_editor/templates/blog_template.ts +1 -1
  262. package/src/collection_editor/ui/collection_editor/templates/pages_template.ts +1 -1
  263. package/src/collection_editor/ui/collection_editor/templates/products_template.ts +1 -1
  264. package/src/collection_editor/ui/collection_editor/templates/users_template.ts +1 -1
  265. package/src/collection_editor/useLocalCollectionsConfigController.tsx +7 -2
  266. package/src/collection_editor/validateCollectionJson.ts +2 -2
  267. package/src/components/CollectionPanel.tsx +51 -25
  268. package/src/components/DefaultAppBar.tsx +1 -2
  269. package/src/components/DefaultDrawer.tsx +3 -2
  270. package/src/components/DrawerNavigationGroup.tsx +3 -2
  271. package/src/components/EntityCollectionTable/fields/TableReferenceField.tsx +30 -9
  272. package/src/components/EntityCollectionTable/internal/EntityTableCell.tsx +1 -1
  273. package/src/components/EntityCollectionTable/internal/popup_field/PopupFormField.tsx +1 -0
  274. package/src/components/EntityCollectionTable/internal/popup_field/useDraggable.tsx +5 -2
  275. package/src/components/EntityCollectionView/Board.tsx +10 -8
  276. package/src/components/EntityCollectionView/BoardSortableList.tsx +2 -2
  277. package/src/components/EntityCollectionView/EntityCollectionBoardView.tsx +4 -2
  278. package/src/components/EntityCollectionView/EntityCollectionCardView.tsx +14 -4
  279. package/src/components/EntityCollectionView/EntityCollectionListView.tsx +48 -26
  280. package/src/components/EntityCollectionView/EntityCollectionView.tsx +146 -73
  281. package/src/components/EntityCollectionView/EntityCollectionViewActions.tsx +2 -1
  282. package/src/components/EntityCollectionView/EntityCollectionViewStartActions.tsx +3 -2
  283. package/src/components/EntityCollectionView/FilterPresetsButton.tsx +4 -2
  284. package/src/components/EntityCollectionView/ViewModeToggle.tsx +0 -1
  285. package/src/components/EntityCollectionView/useBoardDataController.tsx +17 -15
  286. package/src/components/EntityCollectionView/useEntityPreviewSlots.ts +32 -23
  287. package/src/components/EntityDetailView.tsx +72 -39
  288. package/src/components/EntityEditView.tsx +79 -47
  289. package/src/components/EntitySidePanel.tsx +9 -3
  290. package/src/components/HomePage/ContentHomePage.tsx +3 -3
  291. package/src/components/HomePage/NavigationCard.tsx +5 -5
  292. package/src/components/HomePage/NavigationCardBinding.tsx +1 -1
  293. package/src/components/RebaseLayout.tsx +5 -2
  294. package/src/components/RebaseNavigation.tsx +1 -4
  295. package/src/components/RebaseRouteDefs.tsx +5 -3
  296. package/src/components/SearchIconsView.tsx +1 -1
  297. package/src/components/SelectableTable/SelectableTable.tsx +2 -3
  298. package/src/components/SelectableTable/SelectionStore.ts +9 -3
  299. package/src/components/UserSelector.tsx +92 -2
  300. package/src/components/common/default_entity_actions.tsx +23 -6
  301. package/src/components/field_configs.tsx +6 -3
  302. package/src/editor/editor.tsx +1 -1
  303. package/src/editor/extensions/Image/index.ts +2 -2
  304. package/src/editor/extensions/Image.ts +2 -2
  305. package/src/editor/extensions/clipboard.ts +2 -2
  306. package/src/editor/markdown-it-plugins.d.ts +24 -0
  307. package/src/editor/markdown.ts +2 -3
  308. package/src/form/EntityForm.tsx +21 -15
  309. package/src/form/PropertyFieldBinding.tsx +1 -1
  310. package/src/form/field_bindings/KeyValueFieldBinding.tsx +1 -1
  311. package/src/form/field_bindings/MapFieldBinding.tsx +5 -47
  312. package/src/form/field_bindings/VectorFieldBinding.tsx +3 -3
  313. package/src/form/validation.ts +17 -15
  314. package/src/hooks/navigation/useBuildNavigationStateController.tsx +3 -6
  315. package/src/hooks/navigation/useNavigationResolution.ts +143 -19
  316. package/src/hooks/navigation/useResolvedCollections.ts +4 -6
  317. package/src/hooks/useBreadcrumbsController.tsx +2 -34
  318. package/src/hooks/useBuildSideEntityController.tsx +25 -3
  319. package/src/preview/PropertyPreview.tsx +6 -2
  320. package/src/preview/components/ReferencePreview.tsx +64 -13
  321. package/src/preview/components/RelationPreview.tsx +101 -13
  322. package/src/preview/components/UserPreview.tsx +5 -14
  323. package/src/preview/property_previews/ArrayOfMapsPreview.tsx +1 -1
  324. package/src/routes/RebaseRoute.tsx +5 -4
  325. package/src/types/components/PropertyPreviewProps.tsx +5 -0
  326. package/src/types/components/formex.tsx +1 -45
  327. package/src/types/fields.tsx +10 -1
  328. package/src/util/navigation_utils.ts +14 -4
  329. package/src/util/previews.ts +101 -4
  330. package/dist/CollectionEditorDialog-Bo86h-d-.js +0 -4574
  331. package/dist/CollectionEditorDialog-Bo86h-d-.js.map +0 -1
  332. package/dist/CollectionsStudioView-bsg4AT_Z.js +0 -217
  333. package/dist/CollectionsStudioView-bsg4AT_Z.js.map +0 -1
  334. package/dist/ExportCollectionAction-Cf-Id5uO.js +0 -446
  335. package/dist/ExportCollectionAction-Cf-Id5uO.js.map +0 -1
  336. package/dist/ImportCollectionAction-LN5sreK9.js +0 -685
  337. package/dist/ImportCollectionAction-LN5sreK9.js.map +0 -1
  338. package/dist/PropertyEditView-jCWCxmCz.js +0 -8197
  339. package/dist/PropertyEditView-jCWCxmCz.js.map +0 -1
  340. package/dist/collection_editor_ui.js.map +0 -1
  341. package/dist/index-BrqSvMG0.js +0 -8
  342. package/dist/index-BrqSvMG0.js.map +0 -1
  343. package/dist/index-Cb0bPnzZ.js +0 -12
  344. package/dist/index-Cb0bPnzZ.js.map +0 -1
  345. package/dist/index-z3H8iqsj.js +0 -462
  346. package/dist/index-z3H8iqsj.js.map +0 -1
  347. package/dist/index.js.map +0 -1
  348. package/dist/markdown-DD2JDU1X.js +0 -618
  349. package/dist/markdown-DD2JDU1X.js.map +0 -1
  350. package/dist/useEntityHistory-UVsSclfZ.js +0 -123
  351. package/dist/useEntityHistory-UVsSclfZ.js.map +0 -1
  352. package/dist/util-CvNp6A-r.js +0 -30505
  353. package/dist/util-CvNp6A-r.js.map +0 -1
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":["../src/hooks/useResolvedNavigationFrom.tsx","../src/components/ReferenceWidget.tsx","../src/components/AdminModeSyncer.tsx","../src/components/RebaseCMS.tsx","../src/components/RebaseAuthGate.tsx","../src/components/RebaseLayout.tsx","../src/components/HomePage/FavouritesView.tsx","../src/components/HomePage/NavigationGroup.tsx","../src/components/HomePage/NavigationCardBinding.tsx","../src/components/HomePage/HomePageDnD.tsx","../src/components/HomePage/RenameGroupDialog.tsx","../src/components/HomePage/ContentHomePage.tsx","../src/routes/RebaseRoute.tsx","../src/routes/CustomViewRoute.tsx","../src/components/RebaseRouteDefs.tsx","../src/components/RebaseShell.tsx","../src/components/CollectionPanel.tsx","../src/preview/property_previews/ArrayOfMapsPreview.tsx","../src/collection_editor/ui/MissingReferenceWidget.tsx"],"sourcesContent":["import type { EntityCollection, EntityCustomView } from \"@rebasepro/types\";\nimport { Entity, RebaseContext, User } from \"@rebasepro/types\";\nimport { useEffect, useState, useMemo } from \"react\";\nimport { getNavigationEntriesFromPath } from \"@rebasepro/common\";\nimport { useCMSContext } from \"./useCMSContext\";\n\n/**\n * @see resolveNavigationFrom\n * @group Hooks and utilities\n */\nexport type ResolvedNavigationEntry<M extends Record<string, unknown>> =\n | ResolvedNavigationEntity<M>\n | ResolvedNavigationCollection<M>\n | ResolvedNavigationEntityCustom<M>;\n\n/**\n * @see resolveNavigationFrom\n * @group Hooks and utilities\n */\nexport interface ResolvedNavigationEntity<M extends Record<string, unknown>> {\n type: \"entity\";\n entity: Entity<M>;\n entityId: string | number;\n path: string;\n parentCollection: EntityCollection<M>;\n}\n\n/**\n * @see resolveNavigationFrom\n * @group Hooks and utilities\n */\nexport interface ResolvedNavigationCollection<M extends Record<string, unknown>> {\n type: \"collection\";\n path: string;\n collection: EntityCollection<M>;\n}\n\n/**\n * @see resolveNavigationFrom\n * @group Hooks and utilities\n */\ninterface ResolvedNavigationEntityCustom<M extends Record<string, unknown>> {\n type: \"custom_view\";\n path: string;\n view: EntityCustomView<M>;\n}\n\n/**\n * Use this function to retrieve an array of navigation entries (resolved\n * collection, entity or entity custom_view) for the given path. You need to pass the app context\n * that you receive in different callbacks, such as the save hooks.\n *\n * It will take into account the `navigation` provided at the `Rebase` level.\n *\n * @param path\n * @param context\n * @group Hooks and utilities\n */\nexport function resolveNavigationFrom<M extends Record<string, unknown>, USER extends User>({\n path,\n context\n}: {\n path: string,\n context: RebaseContext<USER>\n}): Promise<ResolvedNavigationEntry<M>[]> {\n\n const data = context.data;\n const { navigationStateController, collectionRegistryController } = context;\n\n if (!navigationStateController || !collectionRegistryController) {\n throw Error(\"Calling resolveNavigationFrom, but main navigation has not yet been initialised\");\n }\n\n const navigationEntries = getNavigationEntriesFromPath({\n path,\n collections: collectionRegistryController.collections ?? []\n });\n\n const resultPromises: Promise<ResolvedNavigationEntry<any>>[] = navigationEntries\n .map((entry) => {\n if (entry.type === \"collection\") {\n return Promise.resolve(entry);\n } else if (entry.type === \"entity\") {\n const collection = collectionRegistryController.getCollection(entry.slug);\n if (!collection) {\n throw Error(`No collection defined in the navigation for the entity with path ${entry.slug}`);\n }\n return data.collection(entry.slug).findById(entry.entityId)\n .then((entity) => {\n if (!entity) return undefined;\n return { ...entry,\nentity };\n });\n } else if (entry.type === \"custom_view\") {\n return Promise.resolve(entry);\n } else {\n throw Error(\"Unmapped element in useEntitiesFromPath\");\n }\n })\n .filter(v => Boolean(v)) as Promise<ResolvedNavigationEntry<any>>[];\n\n return Promise.all(resultPromises);\n}\n\n/**\n * @group Hooks and utilities\n */\nexport interface NavigationFromProps {\n path: string;\n}\n\n/**\n * @group Hooks and utilities\n */\nexport interface NavigationFrom<M extends Record<string, unknown>> {\n data?: ResolvedNavigationEntry<M>[]\n dataLoading: boolean,\n dataLoadingError?: Error\n}\n\n/**\n * Use this hook to retrieve an array of navigation entries (resolved\n * collection or entity) for the given path. You can use this hook\n * in any React component that lives under `Rebase`\n * @group Hooks and utilities\n */\nexport function useResolvedNavigationFrom<M extends Record<string, unknown>>(\n {\n path\n }: NavigationFromProps): NavigationFrom<M> {\n\n const context = useCMSContext();\n const { navigationStateController, collectionRegistryController } = context;\n\n const [data, setData] = useState<ResolvedNavigationEntry<M>[] | undefined>();\n const [dataLoading, setDataLoading] = useState<boolean>(false);\n const [dataLoadingError, setDataLoadingError] = useState<Error | undefined>();\n\n useEffect(() => {\n if (navigationStateController && collectionRegistryController) {\n setDataLoading(true);\n setDataLoadingError(undefined);\n resolveNavigationFrom<M, User>({ path,\ncontext })\n .then(setData)\n .catch((e) => setDataLoadingError(e))\n .finally(() => setDataLoading(false));\n }\n\n }, [path, context]);\n\n return useMemo(() => {\n if (!navigationStateController) {\n return { dataLoading: true };\n }\n return { data,\ndataLoading,\ndataLoadingError };\n }, [navigationStateController, data, dataLoading, dataLoadingError]);\n}\n","import { useEntitySelectionDialog } from \"../hooks/useEntitySelectionDialog\";\nimport type { EntityCollection } from \"@rebasepro/types\";\nimport React, { useCallback, useMemo } from \"react\";\n\nimport { Entity, EntityReference, FilterValues } from \"@rebasepro/types\";\nimport type { PreviewSize } from \"../types/components/PropertyPreviewProps\";\nimport { getReferenceFrom } from \"@rebasepro/common\";\nimport { ReferencePreview } from \"../preview\";\nimport { Button, cls } from \"@rebasepro/ui\";\nimport { useCollectionRegistryController } from \"../index\";\n\nexport type ReferenceWidgetProps<M extends Record<string, unknown>> = {\n name?: string,\n multiselect?: boolean,\n value: EntityReference | EntityReference[] | null,\n onReferenceSelected?: (params: {\n reference: EntityReference | null,\n entity: Entity<M> | null\n }) => void,\n onMultipleReferenceSelected?: (params: {\n references: EntityReference[] | null,\n entities: Entity<M>[] | null\n }) => void,\n path: string,\n disabled?: boolean,\n previewProperties?: string[];\n /**\n * Allow selection of entities that pass the given filter only.\n */\n fixedFilter?: FilterValues<string>;\n size: PreviewSize;\n className?: string;\n includeId?: boolean;\n includeEntityLink?: boolean;\n};\n\n/**\n * This field allows selecting reference/s.\n */\nexport function ReferenceWidget<M extends Record<string, unknown>>({\n name,\n multiselect = false,\n path,\n disabled,\n value,\n onReferenceSelected,\n onMultipleReferenceSelected,\n previewProperties,\n fixedFilter,\n size,\n className,\n includeId,\n includeEntityLink\n}: ReferenceWidgetProps<M>) {\n\n const collectionRegistryController = useCollectionRegistryController();\n\n const collection: EntityCollection | undefined = useMemo(() => {\n return collectionRegistryController.getCollection(path);\n }, [path, collectionRegistryController.getCollection]);\n\n const onSingleEntitySelected = useCallback((entity: Entity<M> | null) => {\n if (disabled)\n return;\n if (onReferenceSelected) {\n const reference = entity ? getReferenceFrom(entity) : null;\n onReferenceSelected?.({\n reference,\n entity\n });\n }\n }, [disabled, onReferenceSelected]);\n\n const onMultipleEntitiesSelected = useCallback((entities: Entity<M>[]) => {\n if (disabled)\n return;\n if (onMultipleReferenceSelected) {\n const references = entities ? entities.map(e => getReferenceFrom(e)) : null;\n onMultipleReferenceSelected({\n references,\n entities\n });\n }\n }, [disabled, onReferenceSelected]);\n\n const referenceDialogController = useEntitySelectionDialog({\n multiselect,\n path,\n collection,\n onSingleEntitySelected,\n onMultipleEntitiesSelected,\n fixedFilter\n }\n );\n\n const clearValue = useCallback((e: React.MouseEvent) => {\n e.stopPropagation();\n if (multiselect) {\n onMultipleEntitiesSelected([]);\n } else {\n onSingleEntitySelected(null);\n }\n }, [onReferenceSelected]);\n\n let child: React.ReactNode;\n\n const onEntryClick = () => {\n if (disabled)\n return;\n referenceDialogController.open();\n };\n\n if (Array.isArray(value)) {\n child = <div className={\"flex flex-col gap-4\"}>\n {value.map((ref, index) => {\n return <ReferencePreview\n key={`reference_preview_${index}`}\n onClick={onEntryClick}\n reference={ref}\n disabled={disabled}\n previewProperties={previewProperties}\n size={size}\n includeId={includeId}\n includeEntityLink={includeEntityLink}/>\n })}\n </div>\n } else if (value?.isEntityReference && value?.isEntityReference()) {\n child = <ReferencePreview\n reference={value}\n onClick={onEntryClick}\n disabled={disabled}\n previewProperties={previewProperties}\n size={size}\n includeId={includeId}\n includeEntityLink={includeEntityLink}/>\n\n }\n return <div className={cls(\"text-sm font-medium\",\n \"min-w-80 flex flex-col gap-4\",\n \"relative transition-colors duration-200 ease-in rounded-xs font-medium\",\n disabled ? \"bg-opacity-50\" : \"hover:bg-opacity-75\",\n \"dark:text-white/50 text-text-primary/50 dark:text-text-primary-dark/50 dark:text-white/50\",\n className\n )}>\n\n {child}\n {!value && <div className=\"justify-center text-left\">\n <Button disabled={disabled}\n onClick={onEntryClick}>\n Edit {name}\n </Button>\n </div>}\n\n </div>;\n}\n","import type { AppView } from \"@rebasepro/types\";\nimport React, { useEffect } from \"react\";\nimport { useLocation } from \"react-router-dom\";\n;\nimport { useUrlController } from \"../hooks/navigation/contexts/UrlContext\";\nimport { useAdminModeController } from \"@rebasepro/core\";\nexport interface AdminModeSyncerProps {\n /**\n * Map of views designated as 'Studio' views.\n * Navigating to any of these views will automatically flag the admin mode as \"studio\".\n */\n devViews?: AppView[];\n}\n\n/**\n * A highly customizable utility component that observes react-router routes and\n * actively shifts the internal Rebase `adminModeController` context to match\n * the user's active window segment (e.g., Content vs Studio mode).\n *\n * Placing this anywhere safely inside the Rebase layout automatically triggers\n * UI mode synchronization.\n */\nexport function AdminModeSyncer({ devViews }: AdminModeSyncerProps) {\n const location = useLocation();\n const urlController = useUrlController();\n const adminModeController = useAdminModeController();\n\n // Keep track of the current mode using a ref to avoid adding it to the dependency array\n const currentModeRef = React.useRef(adminModeController.mode);\n currentModeRef.current = adminModeController.mode;\n\n // Stable ref for setMode so it doesn't trigger the effect\n const setModeRef = React.useRef(adminModeController.setMode);\n setModeRef.current = adminModeController.setMode;\n\n useEffect(() => {\n const path = location.pathname;\n const isContentRoute = urlController.isUrlCollectionPath(path) || path === urlController.basePath;\n\n // Check both devViews slugs AND the studio home path (/s or basePath/s)\n const studioHomePath = urlController.basePath === \"/\" ? \"/s\" : `${urlController.basePath}/s`;\n const isStudioRoute = path === studioHomePath || path.startsWith(studioHomePath + \"/\") || devViews?.some(view => {\n const viewPath = urlController.buildAppUrlPath(view.slug);\n return path.startsWith(`${viewPath}/`) || path === viewPath;\n });\n\n if (isStudioRoute && currentModeRef.current !== \"studio\") {\n setModeRef.current(\"studio\");\n } else if (isContentRoute && currentModeRef.current !== \"content\") {\n setModeRef.current(\"content\");\n }\n }, [location.pathname, urlController, devViews]);\n\n return null;\n}\n\n","import React, { useLayoutEffect } from \"react\";\nimport { useRebaseRegistryDispatch } from \"@rebasepro/core\";\nimport type { RebaseCMSConfig } from \"@rebasepro/types\";\n\n/**\n * Declarative component to configure the CMS in Rebase.\n * Renders nothing — purely registers config into the RebaseRegistry.\n *\n * When `collectionEditor` is provided, the built-in visual schema editor\n * is auto-wired as a native feature (slots, provider, Studio view) without\n * needing any external plugin.\n */\nexport function RebaseCMS({ collections, homePage, entityViews, entityActions, plugins, collectionEditor, navigationGroupMappings }: RebaseCMSConfig) {\n const dispatch = useRebaseRegistryDispatch();\n\n useLayoutEffect(() => {\n dispatch.registerCMS({ collections,\nhomePage,\nentityViews,\nentityActions,\nplugins,\ncollectionEditor,\nnavigationGroupMappings });\n return () => dispatch.unregisterCMS();\n }, [dispatch, collections, homePage, entityViews, entityActions, plugins, collectionEditor, navigationGroupMappings]);\n\n return null;\n}\n","import React from \"react\";\nimport {\n useRebaseRegistry,\n useAuthController\n} from \"@rebasepro/core\";\nimport { CircularProgressCenter } from \"@rebasepro/ui\";\nimport { LoginView } from \"@rebasepro/core\";\nimport type { AuthControllerExtended } from \"@rebasepro/types\";\n\n/**\n * Auth gate component that handles the authentication flow.\n *\n * - Shows a loading spinner while `authController.initialLoading` is true.\n * - Shows the login view when no user is authenticated.\n * - Renders `children` when a user is authenticated.\n *\n * **Independently usable**: Use this alone when you want auth gating\n * without the full CMS layout or navigation.\n *\n * @example\n * ```tsx\n * <RebaseAuthGate>\n * <MyCustomApp />\n * </RebaseAuthGate>\n * ```\n */\nexport function RebaseAuthGate({ children }: { children: React.ReactNode }) {\n const registry = useRebaseRegistry();\n const authController = useAuthController();\n\n\n if (authController?.initialLoading) {\n return <CircularProgressCenter size={\"large\"}/>;\n }\n\n if (!authController?.user) {\n const ActiveLoginView = registry.authConfig?.loginView ?? (\n <LoginView authController={authController as AuthControllerExtended}/>\n );\n return <>{ActiveLoginView}</>;\n }\n\n return <>{children}</>;\n}\n","import React from \"react\";\nimport { Outlet } from \"react-router-dom\";\nimport {\n useAdminModeController,\n useRebaseRegistry\n} from \"@rebasepro/core\";\n\nimport { Scaffold } from \"./app/Scaffold\";\nimport { AppBar } from \"./app/AppBar\";\nimport { Drawer } from \"./app/Drawer\";\nimport { SideDialogs } from \"./SideDialogs\";\nimport { AdminModeSyncer } from \"./AdminModeSyncer\";\nimport type { AppView } from \"@rebasepro/types\";\n\nexport interface RebaseLayoutProps {\n /** Title shown in the drawer. */\n title?: string;\n /** Custom AppBar to override the default. */\n appBar?: React.ReactNode;\n /** Custom Drawer to override the default. */\n drawer?: React.ReactNode;\n /** Whether to auto-open the drawer on load. */\n autoOpenDrawer?: boolean;\n /** Dev views passed to AdminModeSyncer (resolved from RebaseNavigation). */\n devViews?: AppView[];\n}\n\n/**\n * Layout layer — provides the Scaffold, AppBar, Drawer, and SideDialogs.\n *\n * Wraps the route outlet with the standard Rebase admin layout.\n * Override individual pieces (appBar, drawer) via props.\n *\n * **Independently usable**: Use this when you want the Rebase layout\n * without its default route definitions.\n *\n * @example\n * ```tsx\n * <RebaseLayout title=\"My Admin\">\n * <Route path=\"/\" element={<MyHomePage />} />\n * <Route path=\"/custom\" element={<CustomView />} />\n * </RebaseLayout>\n * ```\n */\nexport function RebaseLayout(props: RebaseLayoutProps) {\n const {\n title = \"Rebase\",\n appBar,\n drawer,\n autoOpenDrawer = false,\n devViews = []\n } = props;\n\n const adminModeController = useAdminModeController();\n\n const ActiveAppBar = appBar ?? <AppBar\n includeLanguageToggle={false}\n includeModeToggle={false}\n includeUserMenu={false}\n />;\n const ActiveDrawer = drawer ?? (\n <Drawer\n title={title}\n logoDestination={adminModeController.mode === \"studio\" ? \"/s\" : \"/\"}\n />\n );\n\n return (\n <Scaffold autoOpenDrawer={autoOpenDrawer}>\n <AdminModeSyncer devViews={devViews}/>\n {ActiveAppBar}\n {ActiveDrawer}\n <Outlet/>\n <SideDialogs/>\n </Scaffold>\n );\n}\n","import type { NavigationEntry } from \"@rebasepro/types\";\nimport { useNavigate } from \"react-router-dom\";\n;\nimport { Chip, Collapse, StarIcon } from \"@rebasepro/ui\";\nimport { useUserConfigurationPersistence } from \"@rebasepro/core\";\nimport { useNavigationStateController } from \"../../index\";\n\nfunction NavigationChip({ entry }: { entry: NavigationEntry }) {\n\n const navigate = useNavigate();\n const userConfigurationPersistence = useUserConfigurationPersistence();\n\n if (!userConfigurationPersistence)\n return null;\n\n const favourite = userConfigurationPersistence.favouritePaths.includes(entry.slug);\n const onIconClick = (e: React.SyntheticEvent) => {\n e.preventDefault();\n e.stopPropagation();\n if (favourite) {\n userConfigurationPersistence.setFavouritePaths(\n userConfigurationPersistence.favouritePaths.filter(p => p !== entry.slug)\n );\n } else {\n userConfigurationPersistence.setFavouritePaths(\n [...userConfigurationPersistence.favouritePaths, entry.slug]\n );\n }\n };\n return <Chip\n key={entry.slug}\n onClick={() => navigate(entry.url)}\n icon={<StarIcon\n onClick={onIconClick}\n size={\"small\"}\n className={favourite ? \"text-secondary\" : \"text-surface-400 dark:text-surface-500\"}/>\n }>\n {entry.name}\n </Chip>;\n}\n\nexport function FavouritesView({ hidden }: { hidden: boolean }) {\n\n const navigationStateController = useNavigationStateController();\n const userConfigurationPersistence = useUserConfigurationPersistence();\n\n if (!userConfigurationPersistence)\n return null;\n\n const favouriteCollections = (userConfigurationPersistence?.favouritePaths ?? [])\n .map((path) => navigationStateController.topLevelNavigation?.navigationEntries.find((entry) => entry.slug === path))\n .filter(Boolean) as NavigationEntry[];\n\n return <Collapse in={favouriteCollections.length > 0}>\n <div className=\"flex flex-row flex-wrap gap-2 pb-2 min-h-[32px]\">\n {favouriteCollections.map((entry) => <NavigationChip key={entry.slug}\n entry={entry}/>)}\n </div>\n </Collapse>;\n}\n","import React, { PropsWithChildren, useState } from \"react\";\nimport { cls, ExpandablePanel, IconButton, iconSize, PencilIcon, Typography } from \"@rebasepro/ui\";\nimport { useTranslation } from \"@rebasepro/core\";\n\nexport function NavigationGroup({\n children,\n group,\n minimised,\n isPreview,\n isPotentialCardDropTarget,\n onEditGroup,\n dndDisabled,\n collapsed,\n onToggleCollapsed\n}: PropsWithChildren<{\n group: string | undefined,\n minimised?: boolean,\n isPreview?: boolean,\n isPotentialCardDropTarget?: boolean,\n onEditGroup?: (groupName: string) => void;\n dndDisabled?: boolean;\n collapsed?: boolean;\n onToggleCollapsed?: () => void;\n}>) {\n\n const { t } = useTranslation();\n const [isHovered, setIsHovered] = useState(false);\n const currentGroupName = group ?? t(\"views_group\");\n\n // Show caret only when not in preview and there is a toggle handler\n const showCaret = !isPreview && !!onToggleCollapsed;\n\n // Helper for the title content (left side)\n const TitleContent = (\n <div className={cls(\"flex items-center\", isPreview ? \"px-1 py-0.5\" : \"\")}\n >\n <Typography\n variant={isPreview ? \"body2\" : \"caption\"}\n component={\"h2\"}\n color=\"secondary\"\n className={cls(\n \"px-4 py-1 rounded\",\n \"font-semibold text-[11px] uppercase tracking-wider text-surface-400 dark:text-surface-400\"\n )}\n >\n {currentGroupName}\n </Typography>\n {!isPreview && onEditGroup && !dndDisabled && (\n <IconButton\n size=\"smallest\"\n onClick={(e) => {\n e.stopPropagation(); // Prevent toggle on click\n onEditGroup(currentGroupName);\n }}\n className={cls(\"ml-2 \", isHovered ? \"opacity-100\" : \"opacity-0\", \"transition-opacity duration-100\")}\n >\n <PencilIcon size={iconSize.smallest}/>\n </IconButton>\n )}\n </div>\n );\n\n return (\n <div className={cls(\n !isPotentialCardDropTarget ? \"my-10\" : \"my-6\",\n \"transition-all duration-200 ease-in-out\"\n )}\n >\n {/* Preview: static header + content (no caret / no collapse) */}\n {isPreview && (\n <>\n <div\n className={cls(\n \"flex items-center justify-between w-full\",\n \"p-4 py-2\"\n )}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n >\n {TitleContent}\n </div>\n {children}\n </>\n )}\n\n {/* Interactive collapsible version when a toggle handler is provided */}\n {!isPreview && showCaret && (\n <ExpandablePanel\n invisible\n expanded={!collapsed}\n onExpandedChange={(open) => {\n if (open !== !collapsed) {\n onToggleCollapsed?.();\n }\n }}\n className={cls(\"mt-6\")}\n titleClassName={cls(\n \"min-h-0 p-0 border-none\",\n \"rounded flex items-center justify-between w-full\",\n \"hover:bg-transparent\",\n \"cursor-pointer select-none\",\n collapsed && \"bg-surface-100 dark:bg-surface-900/50\"\n )}\n innerClassName={cls(\"mt-4\", !minimised ? \"pt-0\" : \"\")}\n title={\n <div\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n className=\"flex items-center\"\n >\n {TitleContent}\n </div>\n }\n >\n {minimised ? (\n <div className={cls(\"mt-4 p-8 bg-surface-accent-200 dark:bg-surface-accent-800 rounded-lg\")}\n style={{ minHeight: \"50px\" }}>\n </div>\n ) : (\n <div className={cls(\"mt-4\", !minimised ? \"pt-0\" : \"\")}>\n {children}\n </div>\n )}\n </ExpandablePanel>\n )}\n\n {/* Non-collapsible (no caret) runtime, keep old behavior */}\n {!isPreview && !showCaret && (\n <>\n <div\n className={cls(\n \"flex items-center justify-between w-full\",\n \"mt-6\"\n )}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n >\n {TitleContent}\n </div>\n\n {!collapsed && (\n minimised ? (\n <div className={cls(\"mt-4 p-8 bg-surface-accent-200 dark:bg-surface-accent-800 rounded-lg\")}\n style={{ minHeight: \"50px\" }}>\n </div>\n ) : (\n <div className={cls(\"mt-4\", !minimised ? \"pt-0\" : \"\")}>\n {children}\n </div>\n )\n )}\n </>\n )}\n </div>\n );\n}\n","import type { NavigationEntry, EntityCollection } from \"@rebasepro/types\";\nimport { useNavigate } from \"react-router-dom\";\n;\nimport { IconButton, StarIcon, Tooltip } from \"@rebasepro/ui\";\nimport { NavigationCard } from \"./NavigationCard\";\nimport { SmallNavigationCard } from \"./SmallNavigationCard\";\nimport React from \"react\";\nimport { useRebaseContext, useSlot } from \"@rebasepro/core\";\nimport { IconForView } from \"@rebasepro/core\";\nimport { useUserConfigurationPersistence } from \"@rebasepro/core\";\n\n/**\n * This is the component used in the home page to render a card for each\n * collection or view.\n * @group Components\n * @param view\n * @param path\n * @param collection\n * @param url\n * @param name\n * @param description\n * @param onClick\n\n */\nexport function NavigationCardBinding({\n slug,\n collection,\n view,\n url,\n name,\n description,\n onClick,\n type,\n shrink\n}: NavigationEntry & {\n onClick?: () => void,\n shrink?: boolean // <-- add shrink prop type\n}) {\n\n const userConfigurationPersistence = useUserConfigurationPersistence();\n const collectionIcon = <IconForView collectionOrView={collection ?? view}/>;\n\n const navigate = useNavigate();\n const context = useRebaseContext();\n\n const favourite = (userConfigurationPersistence?.favouritePaths ?? []).includes(slug);\n\n const actionsArray: React.ReactNode[] = userConfigurationPersistence\n ? [\n <IconButton\n key={\"favourite\"}\n size={\"small\"}\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n if (favourite) {\n userConfigurationPersistence.setFavouritePaths(\n userConfigurationPersistence.favouritePaths.filter(p => p !== slug)\n );\n } else {\n userConfigurationPersistence.setFavouritePaths(\n [...userConfigurationPersistence.favouritePaths, slug]\n );\n }\n }}>\n <StarIcon\n className={favourite ? \"text-secondary\" : \"text-surface-400 dark:text-surface-500\"}/>\n </IconButton>\n ]\n : [];\n\n const pluginCardActions = useSlot(\"home.collection.actions\", {\n slug: slug,\n collection: collection!,\n context\n });\n\n const pluginCardInsights = useSlot(\"home.card.insight\", {\n slug: slug,\n collection: collection!,\n context\n });\n\n\n const actions: React.ReactNode | undefined = <>\n {actionsArray}\n {pluginCardActions}\n </>\n\n return <NavigationCard\n icon={collectionIcon}\n name={name}\n description={description}\n actions={actions}\n additionalContent={pluginCardInsights.length > 0 ? <>{pluginCardInsights}</> : undefined}\n onClick={() => {\n onClick?.();\n navigate(url);\n if (userConfigurationPersistence) {\n userConfigurationPersistence.setRecentlyVisitedPaths(\n [slug, ...(userConfigurationPersistence.recentlyVisitedPaths ?? []).filter(p => p !== slug)]\n );\n }\n }}\n shrink={shrink}\n />;\n}\n","import type { NavigationEntry } from \"@rebasepro/types\";\nimport React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport {\n Active,\n Over,\n closestCenter,\n closestCorners,\n CollisionDetection,\n DropAnimation,\n getFirstCollision,\n KeyboardSensor,\n MouseSensor,\n pointerWithin,\n rectIntersection,\n TouchSensor,\n UniqueIdentifier,\n useDndMonitor,\n useDroppable,\n useSensor,\n useSensors\n} from \"@dnd-kit/core\";\nimport {\n AnimateLayoutChanges,\n arrayMove,\n defaultAnimateLayoutChanges,\n rectSortingStrategy,\n SortableContext,\n useSortable\n} from \"@dnd-kit/sortable\";\nimport { CSS } from \"@dnd-kit/utilities\";\n\nimport { NavigationCardBinding } from \"./NavigationCardBinding\";\n;\nimport { cls } from \"@rebasepro/ui\";\n\nconst animateLayoutChanges: AnimateLayoutChanges = (args) =>\n defaultAnimateLayoutChanges({\n ...args,\n wasDragging: true\n });\n\nconst dropAnimationConfig: DropAnimation = {};\n\nconst cloneSerializableNavigationEntry = (entry: NavigationEntry): NavigationEntry => {\n const clonedEntry: Partial<NavigationEntry> = {\n id: entry.id,\n slug: entry.slug,\n url: entry.url,\n name: entry.name,\n type: entry.type,\n collection: entry.collection ? { ...entry.collection } : undefined,\n view: entry.view ? { ...entry.view } : undefined,\n ...(entry.group && { group: entry.group }),\n ...(entry.description && { description: entry.description })\n };\n return clonedEntry as NavigationEntry;\n};\n\nconst cloneItemsForDnd = (items: { name: string; entries: NavigationEntry[] }[]) =>\n items.map((g) => ({\n name: g.name,\n entries: g.entries.map(cloneSerializableNavigationEntry)\n }));\n\n/* ─────────────────────────────────────────────────────────── */\n/* Sortable card & group */\n\n/* ─────────────────────────────────────────────────────────── */\nexport function SortableNavigationCard({\n entry,\n onClick\n}: {\n entry: NavigationEntry;\n onClick?: () => void;\n}) {\n const {\n setNodeRef,\n listeners,\n attributes,\n transform,\n transition,\n isDragging\n } =\n useSortable({\n id: entry.url,\n animateLayoutChanges\n });\n\n const style = {\n transform: transform ? CSS.Transform.toString(transform) : undefined,\n transition,\n opacity: isDragging ? 0 : 1\n };\n\n return (\n <div ref={setNodeRef} style={style} {...attributes} {...listeners}>\n <NavigationCardBinding {...entry} onClick={onClick}/>\n </div>\n );\n}\n\nexport function NavigationGroupDroppable({\n id,\n itemIds,\n children,\n isPotentialCardDropTarget = false\n}: {\n id: UniqueIdentifier;\n itemIds: UniqueIdentifier[];\n children: React.ReactNode;\n isPotentialCardDropTarget?: boolean;\n}) {\n const { setNodeRef } = useDroppable({ id });\n\n return (\n <div\n ref={setNodeRef}\n className={cls(\n isPotentialCardDropTarget\n ? \"p-2 bg-surface-accent-200 dark:bg-surface-accent-800 rounded-lg\"\n : undefined,\n \"transition-all duration-200 ease-in-out\"\n )}\n >\n <SortableContext items={itemIds} strategy={rectSortingStrategy}>\n {children}\n </SortableContext>\n </div>\n );\n}\n\nexport function SortableNavigationGroup({\n groupName,\n children,\n disabled\n}: {\n groupName: string;\n children: React.ReactNode;\n disabled?: boolean;\n}) {\n const {\n attributes,\n listeners,\n setNodeRef,\n transform,\n transition,\n isDragging\n } =\n useSortable({\n id: groupName,\n animateLayoutChanges,\n disabled\n });\n\n const style = {\n transform: transform ? CSS.Transform.toString(transform) : undefined,\n transition,\n opacity: isDragging ? 0 : 1\n };\n\n return (\n <div ref={setNodeRef} style={style} {...attributes} {...listeners}>\n {children}\n </div>\n );\n}\n\nexport function useHomePageDnd({\n items,\n setItems,\n disabled,\n onCardMovedBetweenGroups,\n onGroupMoved,\n onNewGroupDrop,\n onPersist\n}: {\n items: { name: string; entries: NavigationEntry[] }[];\n setItems: (\n newItemsOrUpdater:\n | { name: string; entries: NavigationEntry[] }[]\n | ((\n currentItems: { name: string; entries: NavigationEntry[] }[]\n ) => { name: string; entries: NavigationEntry[] }[])\n ) => void;\n disabled: boolean;\n onCardMovedBetweenGroups?: (card: NavigationEntry) => void;\n onGroupMoved?: (groupName: string, oldIndex: number, newIndex: number) => void;\n onNewGroupDrop?: () => void;\n onPersist?: (latest: { name: string; entries: NavigationEntry[] }[]) => void;\n}) {\n /* ---------------- local state ---------------- */\n const dndItems = items;\n const setDndItems = setItems;\n\n const [activeId, setActiveId] = useState<UniqueIdentifier | null>(null);\n const [activeIsGroup, setActiveIsGroup] = useState(false);\n const [currentDraggingGroupId, setCurrentDraggingGroupId] =\n useState<UniqueIdentifier | null>(null);\n const [dndKitActiveNode, setDndKitActiveNode] = useState<Active | null>(null);\n const [isDraggingCardOnly, setIsDraggingCardOnly] = useState(false);\n const [dialogOpenForGroup, setDialogOpenForGroup] = useState<string | null>(null);\n const [isHoveringNewGroupDropZone, setIsHoveringNewGroupDropZone] =\n useState(false);\n const [pendingNewGroupName, setPendingNewGroupName] = useState<string | null>(null);\n const [stateBeforeNewGroup, setStateBeforeNewGroup] = useState<\n { name: string; entries: NavigationEntry[] }[] | null\n >(null);\n\n /* store the original state before any drag modifications */\n const preDragItemsRef = useRef<\n { name: string; entries: NavigationEntry[] }[] | null\n >(null);\n\n /* store interim state for cross-group moves */\n const interimItemsRef = useRef<\n { name: string; entries: NavigationEntry[] }[] | null\n >(null);\n useEffect(() => {\n interimItemsRef.current = dndItems;\n }, [dndItems]);\n\n /* ---------------- sensors ---------------- */\n const mouseSensor = useSensor(MouseSensor, { activationConstraint: { distance: 10 } });\n const touchSensor = useSensor(TouchSensor, {\n activationConstraint: {\n delay: 150,\n tolerance: 5\n }\n });\n const keyboardSensor = useSensor(KeyboardSensor);\n const sensors = useSensors(mouseSensor, touchSensor, keyboardSensor);\n\n /* ---------------- helpers ---------------- */\n const dndContainers = dndItems.map((g) => g.name);\n\n const findDndContainer = useCallback(\n (id: UniqueIdentifier): string | undefined => {\n if (!id) return undefined;\n const group = dndItems.find((g) => g.name === id);\n if (group) return group.name;\n for (const g of dndItems) {\n if (g.entries.some((e) => e.url === id)) return g.name;\n }\n return undefined;\n },\n [dndItems]\n );\n\n /* ---------------- collision detection ---------------- */\n const lastOverId = useRef<UniqueIdentifier | null>(null);\n const recentlyMovedToNewContainer = useRef(false);\n\n const collisionDetection: CollisionDetection = useCallback(\n (args) => {\n if (disabled || !activeId) return [];\n if (activeIsGroup) {\n const groups = args.droppableContainers.filter((c) =>\n dndItems.some((g) => g.name === c.id)\n );\n if (!groups.length) return [];\n return closestCenter({\n ...args,\n droppableContainers: groups\n });\n }\n\n const pointer = pointerWithin(args);\n if (pointer.length) {\n const zone = pointer.find((c) => c.id === \"new-group-drop-zone\");\n if (zone) return [zone];\n\n const container = pointer.find((c) =>\n dndItems.some((g) => g.name === c.id)\n );\n if (container) {\n const itemsIn = dndItems.find((g) => g.name === container.id)\n ?.entries;\n if (itemsIn?.length) {\n const closest = closestCorners({\n ...args,\n droppableContainers: args.droppableContainers.filter(\n (c) => itemsIn.some((e) => e.url === c.id)\n )\n });\n if (closest.length) return closest;\n }\n return [container];\n }\n const first = getFirstCollision(pointer, \"id\");\n if (first) return [{ id: first }];\n }\n\n const rects = rectIntersection(args);\n const zoneRect = rects.find((c) => c.id === \"new-group-drop-zone\");\n if (zoneRect) return [zoneRect];\n\n let overId = getFirstCollision(rects, \"id\");\n if (overId != null) {\n const overIsContainer = dndItems.some((g) => g.name === overId);\n if (overIsContainer) {\n const itemsIn = dndItems.find((g) => g.name === overId)\n ?.entries;\n if (itemsIn?.length) {\n const closestItem = closestCorners({\n ...args,\n droppableContainers: args.droppableContainers.filter(\n (c) => itemsIn.some((e) => e.url === c.id)\n )\n })[0]?.id;\n if (closestItem) overId = closestItem;\n }\n }\n lastOverId.current = overId;\n return [{ id: overId }];\n }\n\n if (\n recentlyMovedToNewContainer.current &&\n lastOverId.current &&\n !activeIsGroup\n )\n return [{ id: lastOverId.current }];\n\n return [];\n },\n [activeId, dndItems, disabled, activeIsGroup]\n );\n\n /* ---------------- drag handlers ---------------- */\n const handleDragStart = ({ active }: { active: Active }) => {\n setDndKitActiveNode(active);\n if (disabled) return;\n\n // Capture the original state before any drag modifications\n preDragItemsRef.current = cloneItemsForDnd(dndItems);\n\n const isGroup = dndItems.some((g) => g.name === active.id);\n if (!active.data.current) active.data.current = {};\n active.data.current.type = isGroup ? \"group\" : \"item\";\n\n setActiveId(active.id);\n setActiveIsGroup(isGroup);\n setIsDraggingCardOnly(!isGroup);\n if (isGroup) setCurrentDraggingGroupId(active.id);\n recentlyMovedToNewContainer.current = false;\n };\n\n const handleDragOver = ({\n active,\n over\n }: { active: Active; over: Over | null }) => {\n if (disabled || !over) return;\n\n const activeIdNow = active.id;\n const overIdNow = over.id;\n if (activeIdNow === overIdNow) return;\n if (activeIsGroup) return;\n\n const activeCont = findDndContainer(activeIdNow);\n const overCont = findDndContainer(overIdNow);\n if (!activeCont) return;\n\n if (overCont && activeCont !== overCont) {\n recentlyMovedToNewContainer.current = true;\n lastOverId.current = overIdNow;\n\n // Update state for visual feedback during drag\n setDndItems((current) => {\n const newState = cloneItemsForDnd(current);\n const srcIdx = newState.findIndex((g) => g.name === activeCont);\n const tgtIdx = newState.findIndex((g) => g.name === overCont);\n if (srcIdx === -1 || tgtIdx === -1) return current;\n const src = newState[srcIdx];\n const tgt = newState[tgtIdx];\n const idxInSrc = src.entries.findIndex((e) => e.url === activeIdNow);\n if (idxInSrc === -1) return current;\n const [moved] = src.entries.splice(idxInSrc, 1);\n\n // Calculate insertion position - SAME logic as handleDragEnd\n const overIsContainer = overIdNow === overCont;\n if (overIsContainer) {\n tgt.entries.push(moved);\n } else {\n const overIdx = tgt.entries.findIndex((e) => e.url === overIdNow);\n if (overIdx !== -1) {\n tgt.entries.splice(overIdx, 0, moved);\n } else {\n tgt.entries.push(moved);\n }\n }\n\n return newState;\n });\n } else if (activeCont === overCont) {\n recentlyMovedToNewContainer.current = false;\n }\n };\n\n const handleDragEnd = ({\n active,\n over\n }: { active: Active; over: Over | null }) => {\n if (disabled || !over) {\n resetDragState();\n return;\n }\n\n const activeIdNow = active.id;\n const overIdNow = over.id;\n\n /* ─── group reorder ─── */\n if (activeIsGroup) {\n if (\n activeIdNow !== overIdNow &&\n dndItems.some((g) => g.name === overIdNow)\n ) {\n const from = dndItems.findIndex((g) => g.name === activeIdNow);\n const to = dndItems.findIndex((g) => g.name === overIdNow);\n if (from !== -1 && to !== -1) {\n const newState = arrayMove(dndItems, from, to);\n setDndItems(newState);\n onPersist?.(newState);\n onGroupMoved?.(activeIdNow as string, from, to);\n }\n }\n }\n /* ─── card move ─── */\n else {\n // CRITICAL: Find source container from ORIGINAL pre-drag state, not current (potentially stale) dndItems\n const findContainerInState = (id: string, state: { name: string; entries: NavigationEntry[] }[]): string | undefined => {\n const group = state.find((g) => g.name === id);\n if (group) return group.name;\n for (const g of state) {\n if (g.entries.some((e) => e.url === id)) return g.name;\n }\n return undefined;\n };\n\n const sourceState = preDragItemsRef.current || dndItems;\n const activeCont = findContainerInState(activeIdNow as string, sourceState);\n const overCont = findDndContainer(overIdNow);\n\n /* drop on new-group zone */\n if (overIdNow === \"new-group-drop-zone\") {\n if (activeCont) {\n // Save current state before making changes\n setStateBeforeNewGroup(cloneItemsForDnd(dndItems));\n\n const newState = cloneItemsForDnd(dndItems);\n const srcIdx = newState.findIndex((g) => g.name === activeCont);\n if (srcIdx !== -1) {\n const src = newState[srcIdx];\n const idxInSrc = src.entries.findIndex(\n (e) => e.url === activeIdNow\n );\n if (idxInSrc !== -1) {\n const [dragged] = src.entries.splice(idxInSrc, 1);\n if (src.entries.length === 0) newState.splice(srcIdx, 1);\n\n let tentative = \"New Group\";\n let counter = 1;\n while (newState.some((g) => g.name === tentative))\n tentative = `New Group ${counter++}`;\n\n newState.push({\n name: tentative,\n entries: [dragged]\n });\n\n // Update local state but DON'T persist yet\n setDndItems(newState);\n setPendingNewGroupName(tentative);\n setDialogOpenForGroup(tentative);\n onNewGroupDrop?.();\n }\n }\n }\n }\n /* reorder inside same container */\n else {\n const overCont = findDndContainer(overIdNow);\n if (activeCont === overCont) {\n const grpIdx = dndItems.findIndex((g) => g.name === activeCont);\n if (grpIdx !== -1) {\n const group = dndItems[grpIdx];\n const oldIdx = group.entries.findIndex(\n (e) => e.url === activeIdNow\n );\n let newIdx = group.entries.findIndex(\n (e) => e.url === overIdNow\n );\n if (newIdx === -1 && overIdNow === activeCont)\n newIdx = group.entries.length - 1;\n if (\n oldIdx !== -1 &&\n newIdx !== -1 &&\n oldIdx !== newIdx\n ) {\n const reordered = arrayMove(group.entries, oldIdx, newIdx);\n const newState = [...dndItems];\n newState[grpIdx] = {\n ...group,\n entries: reordered\n };\n setDndItems(newState);\n onPersist?.(newState);\n }\n }\n } else if (overCont && activeCont !== overCont) {\n // Card moved between different groups - use CLEAN pre-drag state\n const finalState = cloneItemsForDnd(sourceState);\n\n // Find target container from clean state too\n const finalOverId = lastOverId.current || overIdNow;\n const cleanOverCont = findContainerInState(finalOverId as string, sourceState) || overCont;\n\n const srcIdx = finalState.findIndex((g) => g.name === activeCont);\n const tgtIdx = finalState.findIndex((g) => g.name === cleanOverCont);\n\n if (srcIdx !== -1 && tgtIdx !== -1) {\n const src = finalState[srcIdx];\n const tgt = finalState[tgtIdx];\n const idxInSrc = src.entries.findIndex((e) => e.url === activeIdNow);\n\n if (idxInSrc !== -1) {\n // Remove from source\n const [moved] = src.entries.splice(idxInSrc, 1);\n\n // Calculate insertion position in target\n const overIsContainer = finalOverId === cleanOverCont;\n if (overIsContainer) {\n tgt.entries.push(moved);\n } else {\n const overIdx = tgt.entries.findIndex((e) => e.url === finalOverId);\n if (overIdx !== -1) {\n tgt.entries.splice(overIdx, 0, moved);\n } else {\n tgt.entries.push(moved);\n }\n }\n\n // Remove empty source group if needed\n if (src.entries.length === 0) {\n finalState.splice(srcIdx, 1);\n }\n\n setDndItems(finalState);\n onPersist?.(finalState);\n\n onCardMovedBetweenGroups?.(moved);\n }\n }\n } else if (recentlyMovedToNewContainer.current) {\n // This shouldn't happen but log it for debugging\n console.error(\"Move between containers detected but conditions not met\", {\n activeCont,\n overCont,\n activeIdNow,\n overIdNow\n });\n }\n }\n }\n\n resetDragState();\n };\n\n const resetDragState = () => {\n setDndKitActiveNode(null);\n setActiveId(null);\n setActiveIsGroup(false);\n setCurrentDraggingGroupId(null);\n setIsDraggingCardOnly(false);\n recentlyMovedToNewContainer.current = false;\n };\n\n const handleDragCancel = () => resetDragState();\n\n /* ---------------- group rename ---------------- */\n const handleRenameGroup = (oldName: string, newName: string) => {\n setDndItems((current) => {\n const idx = current.findIndex((g) => g.name === oldName);\n if (idx === -1) return current;\n if (current.some((g) => g.name === newName && g.name !== oldName))\n return current;\n\n const updated = [...current];\n updated[idx] = {\n ...updated[idx],\n name: newName\n };\n\n // Persist after successful rename\n onPersist?.(updated);\n return updated;\n });\n\n // Clear all pending state\n setPendingNewGroupName(null);\n setStateBeforeNewGroup(null);\n setDialogOpenForGroup(null);\n };\n\n /* Handle dialog close without renaming */\n const handleDialogClose = () => {\n // If there's a pending new group that wasn't renamed, restore previous state\n if (pendingNewGroupName && dialogOpenForGroup === pendingNewGroupName && stateBeforeNewGroup) {\n // Restore the state from before the new group was created\n setDndItems(stateBeforeNewGroup);\n }\n\n // Clear all pending state\n setPendingNewGroupName(null);\n setStateBeforeNewGroup(null);\n setDialogOpenForGroup(null);\n };\n\n /* ---------------- public API ---------------- */\n const activeItemForOverlay =\n disabled || !activeId || activeIsGroup\n ? null\n : dndItems.flatMap((g) => g.entries).find((e) => e.url === activeId) || null;\n\n const activeGroupData =\n disabled || !activeId || !activeIsGroup\n ? null\n : dndItems.find((g) => g.name === activeId) || null;\n\n return {\n sensors,\n collisionDetection,\n onDragStart: handleDragStart,\n onDragOver: handleDragOver,\n onDragEnd: handleDragEnd,\n onDragCancel: handleDragCancel,\n dropAnimation: dropAnimationConfig,\n activeItemForOverlay,\n activeGroupData,\n draggingGroupId: currentDraggingGroupId,\n containers: dndContainers,\n dndKitActiveNode,\n isDraggingCardOnly,\n dialogOpenForGroup,\n setDialogOpenForGroup,\n handleRenameGroup,\n handleDialogClose,\n isHoveringNewGroupDropZone,\n setIsHoveringNewGroupDropZone\n };\n}\n\nexport function NewGroupDropZone({\n disabled,\n setIsHovering\n}: {\n disabled: boolean;\n setIsHovering: (v: boolean) => void;\n}) {\n const {\n setNodeRef,\n isOver\n } = useDroppable({\n id: \"new-group-drop-zone\",\n disabled\n });\n const [isVisible, setIsVisible] = useState(false);\n\n useDndMonitor({\n onDragStart({ active }) {\n if (disabled) return;\n const tp = active.data.current?.type;\n setIsVisible(tp === \"item\");\n },\n onDragEnd() {\n setIsVisible(false);\n },\n onDragCancel() {\n setIsVisible(false);\n }\n });\n\n useEffect(() => {\n setIsHovering(isOver && isVisible);\n }, [isOver, isVisible, setIsHovering]);\n\n if (!isVisible || disabled) return null;\n\n return (\n <div\n ref={setNodeRef}\n className={cls(\n \"fixed right-8 top-1/2 -translate-y-1/2 w-[200px] h-[120px] border border-dashed rounded-lg flex items-center justify-center transition-all\",\n isOver\n ? \"bg-surface-accent-100 dark:bg-surface-accent-800 border-surface-300 dark:border-surface-600\"\n : \"bg-surface-50 dark:bg-surface-900 border-surface-200 dark:border-surface-700\"\n )}>\n <div className=\"text-center p-4\">\n <span className=\"block font-medium text-sm\">\n Drop here to create a new group\n </span>\n </div>\n </div>\n );\n}\n","import React, { useEffect, useRef, useState } from \"react\";\nimport { Button, Dialog, DialogActions, DialogContent, DialogTitle, TextField } from \"@rebasepro/ui\";\nimport { useTranslation } from \"@rebasepro/core\";\n\ninterface RenameGroupDialogProps {\n open: boolean;\n initialName: string;\n existingGroupNames: string[]; // Names of other existing groups to check for duplicates\n onClose: () => void;\n onRename: (newName: string) => void;\n}\n\nexport function RenameGroupDialog({\n open,\n initialName,\n existingGroupNames,\n onClose,\n onRename\n}: RenameGroupDialogProps) {\n const { t } = useTranslation();\n const [name, setName] = useState(initialName);\n const [error, setError] = useState<string | null>(null);\n const inputRef = useRef<HTMLInputElement | HTMLTextAreaElement | null>(null); // Create a ref for the input\n\n useEffect(() => {\n if (open) {\n setName(initialName);\n setError(null);\n // Focus and select text when dialog opens\n setTimeout(() => { // setTimeout to ensure the input is rendered and focusable\n if (inputRef.current) {\n inputRef.current.focus();\n inputRef.current.select();\n }\n }, 100);\n }\n }, [initialName, open]);\n\n const handleNameChange = (event: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>) => {\n const newName = event.target.value;\n setName(newName);\n if (!newName.trim()) {\n setError(t(\"group_name_empty_error\"));\n } else if (existingGroupNames.includes(newName.trim())) {\n setError(t(\"group_name_exists_error\"));\n } else {\n setError(null);\n }\n };\n\n const handleSave = () => {\n const trimmedName = name.trim();\n if (!trimmedName) {\n setError(t(\"group_name_empty_error\"));\n return;\n }\n if (existingGroupNames.includes(trimmedName)) {\n setError(t(\"group_name_exists_error\"));\n return;\n }\n if (!error) {\n onRename(trimmedName);\n onClose();\n }\n };\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement | HTMLTextAreaElement>) => {\n if (event.key === \"Enter\") {\n event.preventDefault(); // Prevent default form submission behavior\n const trimmedName = name.trim();\n // We need to check the error state directly as well,\n // because the error state might not have updated if the user types and immediately hits enter.\n let currentError = null;\n if (!trimmedName) {\n currentError = t(\"group_name_empty_error\");\n } else if (existingGroupNames.includes(trimmedName)) {\n currentError = t(\"group_name_exists_error\");\n }\n\n if (!currentError && trimmedName) {\n handleSave();\n } else if (currentError) {\n setError(currentError); // Ensure error is displayed if trying to submit with Enter\n }\n }\n };\n\n const handleClose = () => {\n setName(initialName);\n setError(null);\n onClose();\n };\n\n if (!open) return null;\n\n return (\n <Dialog open={open}>\n <DialogTitle>{t(\"rename_group\")}</DialogTitle>\n <DialogContent>\n <TextField\n inputRef={inputRef} // Pass the ref to the TextField\n label={t(\"group_name_label\")}\n value={name}\n onChange={handleNameChange}\n onKeyDown={handleKeyDown} // Added onKeyDown handler\n error={!!error}\n aria-describedby={error ? \"group-name-error\" : undefined}\n />\n {error && <p id=\"group-name-error\" style={{ display: \"none\" }}>{error}</p>}\n </DialogContent>\n <DialogActions>\n <Button onClick={onClose}\n variant=\"text\">\n {t(\"cancel\")}\n </Button>\n <Button onClick={handleSave}\n disabled={!!error || !name.trim()}>\n {t(\"save\")}\n </Button>\n </DialogActions>\n </Dialog>\n );\n}\n","import type { HomePageSection, NavigationEntry, NavigationGroupMapping, PluginGenericProps } from \"@rebasepro/types\";\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport Fuse from \"fuse.js\";\nimport { Container, SearchBar } from \"@rebasepro/ui\";\nimport { AnalyticsEvent } from \"@rebasepro/types\";\nimport { FavouritesView } from \"./FavouritesView\";\nimport { ErrorBoundary } from \"@rebasepro/ui\";\nimport { NavigationGroup } from \"./NavigationGroup\";\nimport {\n NavigationGroupDroppable,\n NewGroupDropZone,\n SortableNavigationCard,\n SortableNavigationGroup,\n useHomePageDnd\n} from \"./HomePageDnD\";\nimport { DndContext, DragOverlay, MeasuringStrategy } from \"@dnd-kit/core\";\nimport { NavigationCardBinding } from \"./NavigationCardBinding\";\nimport { SortableContext, verticalListSortingStrategy } from \"@dnd-kit/sortable\";\nimport { restrictToVerticalAxis, restrictToWindowEdges } from \"@dnd-kit/modifiers\";\nimport { RenameGroupDialog } from \"./RenameGroupDialog\";\nimport { toArray } from \"@rebasepro/utils\";\nimport { useCollapsedGroups, buildCollapsedDefaults, useCustomizationController, useTranslation, useSlot, useAdminModeController, useRebaseRegistry } from \"@rebasepro/core\";\nimport { useRestoreScroll } from \"@rebasepro/core\";\n\nimport { BootstrapAdminBanner } from \"@rebasepro/core\";\nimport { useBreadcrumbsController, useCMSContext } from \"../../index\";\n\nexport const DEFAULT_GROUP_NAME = \"Views\";\nexport const ADMIN_GROUP_NAME = \"Admin\";\n\nexport function ContentHomePage({\n additionalActions,\n additionalChildrenStart,\n additionalChildrenEnd,\n sections,\n hiddenGroups\n}: {\n additionalActions?: React.ReactNode;\n additionalChildrenStart?: React.ReactNode;\n additionalChildrenEnd?: React.ReactNode;\n sections?: HomePageSection[];\n hiddenGroups?: string[];\n}) {\n\n const context = useCMSContext();\n const { navigationStateController } = context;\n const customizationController = useCustomizationController();\n const adminModeController = useAdminModeController();\n const registry = useRebaseRegistry();\n\n const { resolvedSlots } = customizationController;\n const breadcrumbs = useBreadcrumbsController();\n const { t } = useTranslation();\n\n useEffect(() => {\n breadcrumbs.set({ breadcrumbs: [] });\n }, [breadcrumbs.set]);\n\n const {\n allowDragAndDrop = false,\n navigationEntries: unFilteredNavigationEntries = [],\n groups: unFilteredGroupOrder = [],\n onNavigationEntriesUpdate = () => {}\n } = navigationStateController.topLevelNavigation || {};\n\n // Studio mode shows view-type entries (devViews) + admin entries (Users/Roles).\n // Content mode shows collections, admin entries (Users/Roles), and custom entries — but not studio views.\n const rawNavigationEntries = useMemo(() => {\n if (adminModeController.mode === \"studio\") {\n return unFilteredNavigationEntries.filter(e => e.type === \"view\" || e.type === \"admin\");\n }\n return unFilteredNavigationEntries.filter(e => e.type !== \"view\");\n }, [unFilteredNavigationEntries, adminModeController.mode]);\n\n const groupOrderFromNavController = useMemo(() => {\n const entryGroups = new Set(rawNavigationEntries.map(e => e.group).filter(Boolean));\n return unFilteredGroupOrder.filter(g => entryGroups.has(g));\n }, [unFilteredGroupOrder, rawNavigationEntries]);\n\n const fuse = useRef<Fuse<NavigationEntry> | null>(null);\n const [filteredUrls, setFilteredUrls] = useState<string[] | null>(null);\n const performingSearch = Boolean(filteredUrls);\n\n // Memoize filtered navigation entries to prevent unnecessary recalculations\n const filteredNavigationEntries = useMemo(() => {\n return filteredUrls\n ? rawNavigationEntries.filter((e) => filteredUrls.includes(e.url))\n : rawNavigationEntries;\n }, [filteredUrls, rawNavigationEntries]);\n\n useEffect(() => {\n fuse.current = new Fuse(rawNavigationEntries, {\n keys: [\"name\", \"description\", \"group\", \"path\"]\n });\n }, [rawNavigationEntries]);\n\n const updateSearch = useCallback((v?: string) => {\n if (!v?.trim()) {\n setFilteredUrls(null);\n return;\n }\n const results = fuse.current?.search(v.trim());\n setFilteredUrls(results ? results.map((x) => x.item.url) : []);\n }, []);\n\n /* ───────────────────────────────────────────────────────────────\n Build groups (all items) + isolate Admin\n ─────────────────────────────────────────────────────────────── */\n const [items, setItems] = useState<\n { name: string; entries: NavigationEntry[] }[]\n >([]);\n const [adminGroupData, setAdminGroupData] = useState<{\n name: string;\n entries: NavigationEntry[];\n } | null>(null);\n\n // Flag to prevent useEffect from overwriting local DnD state\n const isDndDirtyRef = useRef(false);\n const dndDirtyTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n // Memoize the processed groups to avoid unnecessary recalculations\n const processedGroups = useMemo(() => {\n const src = filteredNavigationEntries;\n const entriesByGroup: Record<string, NavigationEntry[]> = {};\n\n src.forEach((e) => {\n const g =\n e.type === \"admin\"\n ? ADMIN_GROUP_NAME\n : e.group ?? DEFAULT_GROUP_NAME;\n (entriesByGroup[g] ??= []).push(e);\n });\n\n // Check if there are custom additional card components from plugins\n const hasPluginAdditionalCards = customizationController.resolvedSlots.some(s => s.slot === \"home.cards\");\n\n let allProcessed: { name: string; entries: NavigationEntry[] }[];\n\n if (performingSearch) {\n const ordered = [\n ...new Set(src.map((e) => e.group ?? DEFAULT_GROUP_NAME))\n ];\n allProcessed = ordered\n .map((name) => ({\n name,\n entries: entriesByGroup[name] || []\n }))\n .filter((g) => g.entries.length);\n } else {\n allProcessed = groupOrderFromNavController.map((g) => ({\n name: g,\n entries: entriesByGroup[g] || []\n }));\n Object.keys(entriesByGroup).forEach((g) => {\n if (!groupOrderFromNavController.includes(g))\n allProcessed.push({\n name: g,\n entries: entriesByGroup[g]\n });\n });\n\n // Ensure default group exists if there are plugin additional cards but no collections\n if (hasPluginAdditionalCards && !allProcessed.some(g => g.name === DEFAULT_GROUP_NAME)) {\n allProcessed.push({\n name: DEFAULT_GROUP_NAME,\n entries: []\n });\n }\n\n allProcessed = allProcessed.filter(\n (g) =>\n g.entries.length ||\n (g.name === DEFAULT_GROUP_NAME && hasPluginAdditionalCards)\n );\n }\n\n const admin = allProcessed.find((g) => g.name === ADMIN_GROUP_NAME);\n return {\n adminGroupData: admin || null,\n items: allProcessed.filter((g) => g.name !== ADMIN_GROUP_NAME && !hiddenGroups?.includes(g.name))\n };\n }, [filteredNavigationEntries, performingSearch, groupOrderFromNavController, customizationController.resolvedSlots, hiddenGroups]);\n\n // Update state only when processedGroups actually changes\n // Skip update if DnD just made a local change (dirty flag is set)\n useEffect(() => {\n if (isDndDirtyRef.current) {\n // DnD just updated the state, skip this sync\n return;\n }\n setAdminGroupData(processedGroups.adminGroupData);\n setItems(processedGroups.items);\n }, [processedGroups]);\n\n /* ───────────────────────────────────────────────────────────────\n Local update vs. persistence helpers\n ─────────────────────────────────────────────────────────────── */\n const updateItems = (\n updater:\n | { name: string; entries: NavigationEntry[] }[]\n | ((\n prev: { name: string; entries: NavigationEntry[] }[]\n ) => { name: string; entries: NavigationEntry[] }[])\n ) => {\n setItems(updater); // local only\n };\n\n const persistNavigationGroups = (\n latest: { name: string; entries: NavigationEntry[] }[]\n ) => {\n // Set dirty flag to prevent useEffect from overwriting local state\n isDndDirtyRef.current = true;\n\n // Clear any existing timeout\n if (dndDirtyTimeoutRef.current) {\n clearTimeout(dndDirtyTimeoutRef.current);\n }\n\n // Clear dirty flag after a delay to allow navigation to update\n dndDirtyTimeoutRef.current = setTimeout(() => {\n isDndDirtyRef.current = false;\n }, 1000);\n\n // Map ALL groups including \"Views\"\n const draggable: NavigationGroupMapping[] = latest.map((g) => ({\n name: g.name,\n entries: g.entries.map((e) => e.slug)\n }));\n\n const all: NavigationGroupMapping[] = adminGroupData\n ? [\n ...draggable,\n {\n name: adminGroupData.name,\n entries: adminGroupData.entries.map((e) => e.slug)\n }\n ]\n : draggable;\n\n onNavigationEntriesUpdate(all);\n };\n\n // Use custom hook for collapsed groups with localStorage persistence\n const groupNames = useMemo(() => [\n ...items.map(item => item.name),\n ...(adminGroupData ? [adminGroupData.name] : [])\n ], [items, adminGroupData]);\n\n const collapsedDefaults = useMemo(\n () => buildCollapsedDefaults(registry.cmsConfig?.navigationGroupMappings, \"home\"),\n [registry.cmsConfig?.navigationGroupMappings]\n );\n const { isGroupCollapsed, toggleGroupCollapsed } = useCollapsedGroups(groupNames, \"home\", collapsedDefaults);\n\n const {\n sensors,\n collisionDetection,\n onDragStart,\n onDragOver,\n onDragEnd,\n dropAnimation,\n activeItemForOverlay,\n activeGroupData,\n draggingGroupId,\n containers,\n dndKitActiveNode,\n onDragCancel,\n isDraggingCardOnly,\n dialogOpenForGroup,\n setDialogOpenForGroup,\n handleRenameGroup,\n handleDialogClose,\n isHoveringNewGroupDropZone,\n setIsHoveringNewGroupDropZone\n } = useHomePageDnd({\n items,\n setItems: updateItems,\n disabled: !allowDragAndDrop || performingSearch,\n onPersist: persistNavigationGroups,\n onGroupMoved: (g) =>\n context.analyticsController?.onAnalyticsEvent?.(\"home_move_group\", {\n name: g\n }),\n onCardMovedBetweenGroups: (card) =>\n context.analyticsController?.onAnalyticsEvent?.(\"home_move_card\", {\n id: card.id\n }),\n onNewGroupDrop: () =>\n context.analyticsController?.onAnalyticsEvent?.(\n \"home_drop_new_group\"\n )\n });\n\n const {\n containerRef,\n direction\n } = useRestoreScroll();\n\n const dndDisabled = !allowDragAndDrop || performingSearch;\n\n const dndModifiers = dndKitActiveNode?.data.current?.type === \"group\"\n ? [restrictToVerticalAxis, restrictToWindowEdges]\n : [restrictToWindowEdges];\n\n const sectionProps: PluginGenericProps = { context };\n const additionalPluginChildrenStart = useSlot(\"home.children.start\", sectionProps);\n const additionalPluginChildrenEnd = useSlot(\"home.children.end\", sectionProps);\n const additionalPluginActions = useSlot(\"home.actions\", sectionProps);\n\n // Pre-compute home.cards slot contributions (cannot call useSlot inside .map loop)\n const homeCardContributions = useMemo(() => {\n return resolvedSlots\n .filter(s => s.slot === \"home.cards\")\n .sort((a, b) => (a.order ?? 50) - (b.order ?? 50));\n }, [resolvedSlots]);\n\n /* ───────────────────────────────────────────────────────────────\n Render\n ─────────────────────────────────────────────────────────────── */\n return (\n <div ref={containerRef} className=\"py-2 overflow-auto h-full w-full bg-surface-50 dark:bg-surface-800\">\n <Container maxWidth=\"6xl\">\n <div className=\"mb-4\">\n <BootstrapAdminBanner />\n </div>\n {/* search & actions */}\n <div\n className=\"w-full sticky py-4 transition-all duration-400 ease-in-out top-0 z-10 flex flex-row gap-4\"\n style={{ top: direction === \"down\" ? -84 : 0 }}\n >\n <SearchBar\n onTextSearch={updateSearch}\n placeholder={t(\"search_collections\")}\n autoFocus\n size=\"small\"\n innerClassName=\"w-full\"\n className=\"w-full grow\"\n />\n {additionalActions}\n {additionalPluginActions}\n </div>\n\n <FavouritesView hidden={performingSearch}/>\n\n {additionalChildrenStart}\n {additionalPluginChildrenStart}\n\n {/* ─────── DND context ─────── */}\n <DndContext\n sensors={sensors}\n collisionDetection={collisionDetection}\n measuring={{\n droppable: {\n strategy: MeasuringStrategy.Always,\n frequency: 500\n }\n }}\n onDragStart={onDragStart}\n onDragOver={onDragOver}\n onDragEnd={onDragEnd}\n onDragCancel={onDragCancel}\n modifiers={dndModifiers}\n >\n <SortableContext\n key={containers.join(\",\")}\n items={containers}\n strategy={verticalListSortingStrategy}\n >\n {items.map((groupData, groupIndex) => {\n const groupKey = groupData.name;\n const entriesInGroup = groupData.entries;\n\n const homeCardsProps = {\n group:\n groupKey === DEFAULT_GROUP_NAME\n ? undefined\n : groupKey,\n context\n };\n // Render home.cards contributions inline (no hook call inside loop)\n const additionalCards = homeCardContributions.map((s, i) => (\n <ErrorBoundary key={`home_cards_${groupKey}_${i}`}>\n <s.Component {...homeCardsProps} {...(s.props ?? {})}/>\n </ErrorBoundary>\n ));\n\n if (\n entriesInGroup.length === 0 &&\n (additionalCards.length === 0 || performingSearch)\n )\n return null;\n\n return (\n <SortableNavigationGroup\n key={`group-${groupIndex}`}\n groupName={groupKey}\n disabled={dndDisabled}\n >\n <NavigationGroup\n group={\n groupKey === DEFAULT_GROUP_NAME\n ? undefined\n : groupKey\n }\n minimised={\n draggingGroupId === groupKey &&\n !isDraggingCardOnly\n }\n isPotentialCardDropTarget={\n isDraggingCardOnly\n }\n dndDisabled={dndDisabled}\n onEditGroup={() => {\n if (dndDisabled) return;\n setDialogOpenForGroup(groupKey);\n }}\n collapsed={isGroupCollapsed(groupKey)}\n onToggleCollapsed={() => toggleGroupCollapsed(groupKey)}\n >\n <NavigationGroupDroppable\n id={groupKey}\n itemIds={entriesInGroup.map(\n (e) => e.url\n )}\n isPotentialCardDropTarget={\n isDraggingCardOnly\n }\n >\n <div className=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4 \">\n {entriesInGroup.map(\n (entry) => (\n <SortableNavigationCard\n key={entry.url}\n entry={entry}\n onClick={() => {\n let event: AnalyticsEvent =\n \"unmapped_event\";\n if (\n entry.type ===\n \"collection\"\n )\n event =\n \"home_navigate_to_collection\";\n else if (\n entry.type ===\n \"view\"\n )\n event =\n \"home_navigate_to_view\";\n else if (\n entry.type ===\n \"admin\"\n )\n event =\n \"home_navigate_to_admin_view\";\n\n context.analyticsController?.onAnalyticsEvent?.(\n event,\n {\n path: entry.slug\n }\n );\n }}\n />\n )\n )}\n {!performingSearch &&\n groupKey.toLowerCase() !==\n ADMIN_GROUP_NAME.toLowerCase() &&\n additionalCards}\n </div>\n </NavigationGroupDroppable>\n </NavigationGroup>\n </SortableNavigationGroup>\n );\n })}\n </SortableContext>\n\n <NewGroupDropZone\n disabled={dndDisabled}\n setIsHovering={setIsHoveringNewGroupDropZone}\n />\n\n <DragOverlay adjustScale={false} dropAnimation={dropAnimation}>\n {activeGroupData &&\n draggingGroupId === activeGroupData.name ? (\n <div\n className=\"rounded-lg bg-transparent\"\n style={{\n padding: 0,\n margin: 0\n }}\n >\n <NavigationGroup\n group={\n activeGroupData.name ===\n DEFAULT_GROUP_NAME\n ? undefined\n : activeGroupData.name\n }\n isPreview={false}\n minimised\n />\n </div>\n ) : activeItemForOverlay ? (\n <NavigationCardBinding\n {...activeItemForOverlay}\n shrink={isHoveringNewGroupDropZone}\n />\n ) : null}\n </DragOverlay>\n </DndContext>\n\n {!performingSearch && adminGroupData && (\n <NavigationGroup\n group={adminGroupData.name}\n collapsed={isGroupCollapsed(adminGroupData.name)}\n onToggleCollapsed={() => toggleGroupCollapsed(adminGroupData.name)}\n >\n <div className=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4 \">\n {adminGroupData.entries.map((entry) => (\n <NavigationCardBinding\n key={entry.url}\n {...entry}\n onClick={() => {\n let event: AnalyticsEvent =\n \"unmapped_event\";\n if (entry.type === \"collection\")\n event =\n \"home_navigate_to_collection\";\n else if (entry.type === \"view\")\n event = \"home_navigate_to_view\";\n else if (entry.type === \"admin\")\n event =\n \"home_navigate_to_admin_view\";\n\n context.analyticsController?.onAnalyticsEvent?.(\n event,\n { path: entry.slug }\n );\n }}\n />\n ))}\n </div>\n </NavigationGroup>\n )}\n\n {sections && sections.map((section) => (\n <NavigationGroup\n key={section.key}\n group={section.title}\n >\n {section.children}\n </NavigationGroup>\n ))}\n\n {additionalPluginChildrenEnd}\n {additionalChildrenEnd}\n </Container>\n\n {dialogOpenForGroup && (\n <RenameGroupDialog\n open\n initialName={dialogOpenForGroup}\n existingGroupNames={items\n .map((g) => g.name)\n .filter((n) => n !== dialogOpenForGroup)}\n onClose={handleDialogClose}\n onRename={(newName) => {\n handleRenameGroup(dialogOpenForGroup, newName);\n }}\n />\n )}\n </div>\n );\n}\n","import type { EntityCollection, ViewMode } from \"@rebasepro/types\";\nimport { Blocker, useBlocker, useLocation } from \"react-router-dom\";\nimport { EntityEditView } from \"../components/EntityEditView\";\nimport { EntityDetailView } from \"../components/EntityDetailView\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { useNavigate } from \"react-router-dom\";\nimport { EntityCollectionView } from \"../components\";\nimport { NotFoundPage, useUserConfigurationPersistence } from \"@rebasepro/core\";\nimport { UnsavedChangesDialog } from \"@rebasepro/core\";\nimport { CircularProgressCenter } from \"@rebasepro/ui\";\nimport { getNavigationEntriesFromPath, NavigationViewCollectionInternal, NavigationViewEntityCustomInternal, NavigationViewInternal } from \"@rebasepro/common\";\nimport { toArray } from \"@rebasepro/utils\";\nimport { useCollectionRegistryController, useUrlController } from \"../index\";\nimport { useBreadcrumbsController } from \"../index\";\n\nexport function RebaseRoute() {\n\n const location = useLocation();\n const collectionRegistry = useCollectionRegistryController();\n const urlController = useUrlController();\n const breadcrumbs = useBreadcrumbsController();\n const userConfigPersistence = useUserConfigurationPersistence();\n\n const hash = location.hash;\n const isSidePanel = hash.includes(\"#side\");\n const isNew = hash.includes(\"#new\") || hash.includes(\"#new_side\");\n const isCopy = hash.includes(\"#copy\");\n const isFullScreen = hash.includes(\"#full\");\n\n const pathname = location.pathname;\n const navigationPath = urlController.urlPathToDataPath(pathname);\n\n const navigationEntries = getNavigationEntriesFromPath({\n path: navigationPath,\n collections: collectionRegistry.collections ?? []\n });\n\n useEffect(() => {\n const lastEntry = navigationEntries[navigationEntries.length - 1];\n const isViewingCollection = lastEntry?.type === \"collection\";\n\n breadcrumbs.set({\n breadcrumbs: navigationEntries.map((entry, index) => {\n const isLastEntry = index === navigationEntries.length - 1;\n\n if (entry.type === \"entity\") {\n return ({\n title: String(entry.entityId),\n url: urlController.buildUrlCollectionPath(entry.path)\n // count: undefined (not applicable for entities)\n });\n } else if (entry.type === \"custom_view\") {\n return ({\n title: String(entry.view.name ?? entry.view.key),\n url: urlController.buildUrlCollectionPath(entry.path)\n // count: undefined (not applicable for custom views)\n });\n } else if (entry.type === \"collection\") {\n const showCount = isLastEntry && isViewingCollection;\n return ({\n title: entry.collection.name,\n url: urlController.buildUrlCollectionPath(entry.path),\n id: entry.path,\n ...(showCount ? { count: null } : {})\n });\n } else {\n throw new Error(\"Unexpected navigation entry type\");\n }\n })\n });\n }, [navigationEntries.map(entry => entry.path).join(\",\")]);\n\n if (isNew) {\n // New entities always use full-screen mode, even for split-layout collections\n return <EntityFullScreenRoute\n pathname={pathname}\n navigationEntries={navigationEntries}\n isNew={true}\n isCopy={false}\n />;\n }\n\n if (navigationEntries.length === 1 && navigationEntries[0].type === \"collection\") {\n let collection: EntityCollection<any> | undefined;\n collection = collectionRegistry.getCollection(navigationEntries[0].id);\n if (!collection)\n collection = collectionRegistry.getCollection(navigationEntries[0].slug);\n if (!collection) {\n if (!collectionRegistry.initialised) {\n return <CircularProgressCenter/>;\n }\n return null;\n }\n return <EntityCollectionView\n key={`collection_view_${collection.slug}`}\n {...collection}\n parentCollectionSlugs={[]} parentEntityIds={[]}\n path={collection.slug}\n updateUrl={true}\n Actions={toArray(collection.Actions)}/>\n }\n\n if (isSidePanel) {\n const lastCollectionEntry = [...navigationEntries].reverse().find((entry) => entry.type === \"collection\");\n if (lastCollectionEntry) {\n let collection: EntityCollection<any> | undefined;\n const firstEntry = navigationEntries[0] as NavigationViewCollectionInternal<any>;\n collection = collectionRegistry.getCollection(firstEntry.id);\n if (!collection)\n collection = collectionRegistry.getCollection(firstEntry.slug);\n if (!collection) {\n if (!collectionRegistry.initialised) {\n return <CircularProgressCenter/>;\n }\n return null;\n }\n return <EntityCollectionView\n key={`collection_view_${collection.slug}`}\n {...collection}\n parentCollectionSlugs={[]} parentEntityIds={[]}\n path={collection.slug}\n updateUrl={true}\n Actions={toArray(collection.Actions)}/>;\n }\n }\n\n // Check if this is a simple entity route (collection + entity) for a split-layout collection.\n // If so, render the collection view with the entity shown in the split detail panel\n // instead of the full-screen editor. This keeps the master-detail UX with clean URLs.\n //\n // Also handles subcollection tabs: /c/customers/39/orders produces 3 entries\n // (collection→entity→subcollection). We extract the subcollection slug as selectedTab.\n const lastEntityEntry = navigationEntries.find((entry) => entry.type === \"entity\");\n const firstCollectionEntry = navigationEntries[0];\n if (\n !isFullScreen &&\n !isCopy &&\n firstCollectionEntry?.type === \"collection\" &&\n lastEntityEntry?.type === \"entity\" &&\n (navigationEntries.length === 2 || navigationEntries.length === 3)\n ) {\n let collection: EntityCollection<any> | undefined;\n collection = collectionRegistry.getCollection(firstCollectionEntry.id);\n if (!collection)\n collection = collectionRegistry.getCollection(firstCollectionEntry.slug);\n\n // Resolve the effective openEntityMode based on the current view mode.\n // Priority: collection.openEntityMode (explicit) > view-mode-based default.\n // View mode priority: URL __view param > saved user config > collection default.\n let effectiveOpenMode: \"side_panel\" | \"full_screen\" | \"split\" | \"dialog\" | undefined = collection?.openEntityMode;\n if (!effectiveOpenMode && collection) {\n const urlViewParam = new URLSearchParams(location.search).get(\"__view\");\n let currentViewMode: ViewMode = collection.defaultViewMode ?? \"list\";\n if (urlViewParam && [\"list\", \"table\", \"kanban\", \"cards\"].includes(urlViewParam)) {\n currentViewMode = urlViewParam as ViewMode;\n } else {\n const savedView = userConfigPersistence?.getCollectionConfig(collection.slug)?.defaultViewMode;\n if (savedView) currentViewMode = savedView as ViewMode;\n }\n if (currentViewMode === \"kanban\") effectiveOpenMode = \"side_panel\";\n else if (currentViewMode === \"table\" || currentViewMode === \"cards\") effectiveOpenMode = \"full_screen\";\n else effectiveOpenMode = \"split\";\n }\n if (collection && effectiveOpenMode === \"split\") {\n // Extract subcollection tab from the 3rd entry if present\n let selectedTab: string | undefined;\n if (navigationEntries.length === 3) {\n const thirdEntry = navigationEntries[2];\n if (thirdEntry.type === \"collection\") {\n selectedTab = thirdEntry.collection.slug;\n } else if (thirdEntry.type === \"custom_view\") {\n selectedTab = thirdEntry.view.key;\n }\n }\n // Fallback: check for unregistered tabs (e.g. __json, __rebase_history)\n // that aren't parsed as navigation entries\n if (!selectedTab && (navigationEntries.length === 2) && lastEntityEntry) {\n const entityIdStr = String(lastEntityEntry.entityId);\n const entityIdIdx = pathname.lastIndexOf(`/${entityIdStr}`);\n if (entityIdIdx >= 0) {\n const afterEntity = pathname.substring(entityIdIdx + 1 + entityIdStr.length);\n const trailingSegment = afterEntity.startsWith(\"/\") ? afterEntity.substring(1) : afterEntity;\n if (trailingSegment.length > 0) {\n selectedTab = trailingSegment;\n }\n }\n }\n return <EntityCollectionView\n key={`collection_view_${collection.slug}`}\n {...collection}\n parentCollectionSlugs={[]} parentEntityIds={[]}\n path={collection.slug}\n updateUrl={true}\n selectedEntityId={lastEntityEntry.entityId}\n selectedTab={selectedTab}\n Actions={toArray(collection.Actions)}/>;\n }\n }\n\n return <EntityFullScreenRoute\n pathname={pathname}\n navigationEntries={navigationEntries}\n isNew={isNew}\n isCopy={isCopy}\n />;\n\n}\n\nfunction getSelectedTabFromUrl(isNew: boolean, lastCustomView: NavigationViewCollectionInternal<any> | NavigationViewEntityCustomInternal<any> | undefined) {\n if (isNew) {\n return undefined;\n } else if (lastCustomView) {\n if (lastCustomView.type === \"custom_view\") {\n return lastCustomView.view.key;\n } else if (lastCustomView.type === \"collection\") {\n return lastCustomView.id ?? lastCustomView.slug;\n }\n }\n return undefined;\n}\n\nfunction EntityFullScreenRoute({\n pathname,\n navigationEntries,\n isNew,\n isCopy\n}: {\n pathname: string;\n navigationEntries: NavigationViewInternal[],\n isNew: boolean,\n isCopy: boolean\n}) {\n\n const collectionRegistry = useCollectionRegistryController();\n const urlController = useUrlController();\n const navigate = useNavigate();\n const location = useLocation();\n\n // defaultValues may be carried via location.state when openNewDocument() is called\n // for full-screen mode. We read it once on mount — after that, the form owns its state.\n const defaultValues = (location.state as { defaultValues?: Record<string, unknown> } | null)?.defaultValues;\n\n // Preserve the current hash (e.g. #full) across tab/save navigations\n const hash = location.hash;\n\n const navigationPath = urlController.urlPathToDataPath(pathname);\n\n // is navigating away blocked\n const blocked = useRef(false);\n\n const lastEntityEntry = [...navigationEntries].reverse().find((entry) => entry.type === \"entity\");\n const navigationEntriesAfterEntity = lastEntityEntry ? navigationEntries.slice(navigationEntries.indexOf(lastEntityEntry) + 1) : [];\n\n const lastCustomView = [...navigationEntriesAfterEntity].reverse().find(\n (entry) => entry.type === \"custom_view\" || entry.type === \"collection\"\n ) as NavigationViewCollectionInternal<any> | NavigationViewEntityCustomInternal<any> | undefined;\n\n const entityId = lastEntityEntry && \"entityId\" in lastEntityEntry ? lastEntityEntry.entityId : undefined;\n\n // Derive tab from navigation entries (works for registered custom views)\n let urlTab = getSelectedTabFromUrl(isNew, lastCustomView);\n\n // Fallback: internal tabs like __json or __rebase_history aren't registered as\n // entity views, so the navigation parser ignores them. Check the raw pathname\n // for a trailing segment after the entity ID to catch those cases.\n if (!urlTab && entityId && !isNew) {\n const entityIdStr = String(entityId);\n const entityIdIdx = pathname.lastIndexOf(`/${entityIdStr}`);\n if (entityIdIdx >= 0) {\n const afterEntity = pathname.substring(entityIdIdx + 1 + entityIdStr.length);\n const trailingSegment = afterEntity.startsWith(\"/\") ? afterEntity.substring(1) : afterEntity;\n if (trailingSegment.length > 0 && trailingSegment !== \"edit\") {\n urlTab = trailingSegment;\n }\n }\n }\n\n const [selectedTab, setSelectedTab] = useState<string | undefined>(urlTab);\n\n const parentCollectionSlugs = collectionRegistry.getParentCollectionSlugs(navigationPath);\n const parentEntityIds = collectionRegistry.getParentEntityIds(navigationPath);\n useEffect(() => {\n if (urlTab !== selectedTab) {\n setSelectedTab(urlTab);\n }\n }, [urlTab]);\n\n const basePath = !entityId || isNew\n ? pathname\n : pathname.substring(0, pathname.lastIndexOf(`/${entityId}`));\n\n const entityPath = basePath + `/${entityId}`;\n\n const blocker = useBlocker(({\n currentLocation,\n nextLocation\n }) => {\n if (nextLocation.pathname.startsWith(entityPath))\n return false;\n\n // Side panel overlay navigations preserve the underlying form via\n // base_location in router state — no data is lost in either direction.\n\n // Opening a side panel (e.g. clicking a relation arrow)\n const nextHash = nextLocation.hash;\n if (nextHash === \"#side\" || nextHash === \"#new_side\")\n return false;\n\n // Closing a side panel (navigate(-1) back to the form's own path)\n const currentHash = currentLocation.hash;\n if ((currentHash === \"#side\" || currentHash === \"#new_side\") &&\n (nextLocation.pathname === basePath ||\n nextLocation.pathname.startsWith(entityPath)))\n return false;\n\n return blocked.current;\n });\n\n const lastCollectionEntry = [...navigationEntries].reverse().find((entry) => entry.type === \"collection\");\n\n if (isNew && !lastCollectionEntry) {\n if (!collectionRegistry.initialised) {\n return <CircularProgressCenter/>;\n }\n throw new Error(\"INTERNAL: No collection found in the navigation\");\n }\n\n if (!isNew && !lastEntityEntry) {\n if (!collectionRegistry.initialised) {\n return <CircularProgressCenter/>;\n }\n return <NotFoundPage/>;\n }\n\n const rawCollection = isNew\n ? (lastCollectionEntry && \"collection\" in lastCollectionEntry ? lastCollectionEntry.collection : undefined)!\n : (lastEntityEntry && \"parentCollection\" in lastEntityEntry ? lastEntityEntry.parentCollection : undefined)!;\n const collection = collectionRegistry.getCollection(rawCollection.slug) || rawCollection;\n const fullIdPath = isNew ? lastCollectionEntry!.slug : lastEntityEntry!.slug;\n const collectionPath = urlController.resolveDatabasePathsFrom(fullIdPath);\n const isEditRoute = pathname.endsWith(\"/edit\") || pathname.split(\"/\").pop() === \"edit\";\n // Determine if this is a detail-view-first collection showing the view page\n const isDetailMode = collection.defaultEntityAction === \"view\" && !isNew && !isCopy && entityId && !isEditRoute;\n\n if (isDetailMode) {\n return <>\n <EntityDetailView\n key={collection.slug + \"_view_\" + entityId}\n entityId={entityId}\n collection={collection}\n layout={\"full_screen\"}\n path={collectionPath}\n selectedTab={selectedTab ?? undefined}\n onEditClick={() => {\n const editUrl = urlController.buildUrlCollectionPath(`${collectionPath}/${entityId}`) + \"/edit\";\n navigate(editUrl + hash);\n }}\n onTabChange={(params) => {\n setSelectedTab(params.selectedTab);\n const newSelectedTab = params.selectedTab;\n if (newSelectedTab) {\n navigate(`${basePath}/${entityId}/${newSelectedTab}${hash}`, { replace: true });\n } else {\n navigate(`${basePath}/${entityId}${hash}`, { replace: true });\n }\n }}\n parentCollectionSlugs={parentCollectionSlugs}\n parentEntityIds={parentEntityIds}\n />\n </>;\n }\n\n return <>\n <EntityEditView\n key={collection.slug + \"_\" + (isNew ? \"new\" : (isCopy ? entityId + \"_copy\" : entityId))}\n entityId={isNew ? undefined : entityId}\n collection={collection}\n layout={\"full_screen\"}\n path={collectionPath}\n copy={isCopy}\n selectedTab={selectedTab ?? undefined}\n defaultValues={isNew ? defaultValues : undefined}\n onValuesModified={(modified) => blocked.current = modified}\n navigateBack={() => {\n const detailUrl = urlController.buildUrlCollectionPath(`${collectionPath}/${entityId}`);\n navigate(detailUrl + hash);\n }}\n onSaved={(params) => {\n const newSelectedTab = params.selectedTab;\n const newEntityId = params.entityId;\n const savedHash = isNew ? \"\" : hash;\n if (newSelectedTab) {\n navigate(`${basePath}/${newEntityId}/${newSelectedTab}${savedHash}`, { replace: true });\n } else {\n navigate(`${basePath}/${newEntityId}${savedHash}`, { replace: true });\n }\n }}\n onTabChange={(params) => {\n setSelectedTab(params.selectedTab);\n if (isNew) {\n return;\n }\n const newSelectedTab = params.selectedTab;\n if (newSelectedTab) {\n navigate(`${basePath}/${entityId}/${newSelectedTab}${hash}`, { replace: true });\n } else {\n navigate(`${basePath}/${entityId}${hash}`, { replace: true });\n }\n }}\n parentCollectionSlugs={parentCollectionSlugs} parentEntityIds={parentEntityIds}\n />\n\n <UnsavedChangesDialog\n open={blocker?.state === \"blocked\"}\n handleOk={() => blocker?.proceed?.()}\n handleCancel={() => blocker?.reset?.()}\n body={\"You have unsaved changes in this entity.\"}/>\n </>;\n}\n","import type { AppView } from \"@rebasepro/types\";\n;\nimport { useEffect } from \"react\";\nimport { useBreadcrumbsController } from \"../index\";\nimport { useUrlController } from \"../index\";\n\nexport function CustomViewRoute({ view }: {\n view: AppView\n}) {\n\n const breadcrumbs = useBreadcrumbsController();\n const urlController = useUrlController();\n\n useEffect(() => {\n breadcrumbs.set({\n breadcrumbs: [{\n title: view.name,\n url: urlController.buildAppUrlPath(view.slug)\n }]\n });\n }, [view.slug, urlController]);\n\n return view.view;\n}\n","import React, { lazy, Suspense, useMemo } from \"react\";\nimport { Route } from \"react-router-dom\";\nimport {\n useRebaseRegistry,\n RebaseRoutes,\n UserSettingsView,\n UIReferenceView,\n NotFoundPage\n} from \"@rebasepro/core\";\nimport { CircularProgressCenter } from \"@rebasepro/ui\";\n\nimport { ContentHomePage } from \"./HomePage/ContentHomePage\";\n\nimport { RebaseRoute } from \"../routes/RebaseRoute\";\nimport { CustomViewRoute } from \"../routes/CustomViewRoute\";\nimport { useNavigationStateController } from \"../hooks/navigation/contexts/NavigationStateContext\";\nimport { CollectionEditorDialogs } from \"./CollectionEditorDialogs\";\nimport { useEffect } from \"react\";\nimport { useTranslation } from \"@rebasepro/core\";\nimport { useBreadcrumbsController } from \"../index\";\n\nfunction SettingsView() {\n const { t } = useTranslation();\n const breadcrumbs = useBreadcrumbsController();\n useEffect(() => {\n breadcrumbs.set({\n breadcrumbs: [{ title: t(\"account_settings\"),\nurl: \"/settings\" }]\n });\n\n }, []);\n return <UserSettingsView/>;\n}\n\nexport interface RebaseRouteDefsProps {\n /** User-provided custom routes to include. */\n children?: React.ReactNode;\n /**\n * Wrap function — receives the route tree and lets you wrap it in a layout.\n * If provided, the routes are rendered inside this wrapper.\n * If not provided, routes are rendered directly inside <RebaseRoutes>.\n */\n layout?: React.ReactElement;\n}\n\n/**\n * Route definitions for the CMS.\n *\n * Defines all standard routes: home, studio home, collection view,\n * settings, debug, custom views, and a catch-all 404.\n *\n * **Independently usable**: Use this when you want Rebase routes\n * inside your own layout/navigation setup.\n *\n * @example\n * ```tsx\n * <RebaseNavigation>\n * <RebaseRouteDefs layout={<MyCustomLayout />}>\n * <Route path=\"/my-custom\" element={<MyView />} />\n * </RebaseRouteDefs>\n * </RebaseNavigation>\n * ```\n */\nexport function RebaseRouteDefs({ children, layout }: RebaseRouteDefsProps) {\n const registry = useRebaseRegistry();\n const navigationStateController = useNavigationStateController();\n\n const cmsHomePage = registry.cmsConfig?.homePage ?? <Suspense fallback={<CircularProgressCenter/>}><ContentHomePage/></Suspense>;\n const studioHomePage = registry.studioConfig?.homePage;\n\n const combinedViews = useMemo(() => [\n ...(navigationStateController.views ?? []),\n ...(navigationStateController.adminViews ?? [])\n ], [navigationStateController.views, navigationStateController.adminViews]);\n\n const routeContents = (\n <>\n {/* Core CMS Routes */}\n <Route path={\"/\"} element={cmsHomePage}/>\n {registry.studioConfig && (\n <Route path={\"/s\"} element={studioHomePage}/>\n )}\n\n <Route path={\"/c/*\"} element={<RebaseRoute/>}/>\n <Route path={\"/settings\"} element={<SettingsView/>}/>\n\n\n {/* Hidden debug route */}\n <Route path={\"/debug/ui\"} element={<UIReferenceView/>}/>\n\n {/* Custom Registered Views */}\n {combinedViews.map(view => {\n const slugs = Array.isArray(view.slug) ? view.slug : [view.slug];\n return slugs.flatMap(slug => {\n const routes = [\n <Route key={slug} path={slug} element={<CustomViewRoute view={view}/>}/>\n ];\n if (view.nestedRoutes) {\n routes.push(\n <Route key={slug + \"/*\"} path={slug + \"/*\"} element={<CustomViewRoute view={view}/>}/>\n );\n }\n return routes;\n });\n })}\n\n {/* User Provided Custom Routes */}\n {children}\n\n <Route path={\"*\"} element={navigationStateController.loading ? <CircularProgressCenter/> : <NotFoundPage/>}/>\n </>\n );\n\n return (\n <>\n <RebaseRoutes>\n {layout\n ? <Route element={layout}>{routeContents}</Route>\n : <Route element={<>{routeContents}</>}>{routeContents}</Route>\n }\n </RebaseRoutes>\n <CollectionEditorDialogs/>\n </>\n );\n}\n","import React, { useMemo } from \"react\";\nimport {\n useRebaseRegistry\n} from \"@rebasepro/core\";\nimport { ErrorBoundary } from \"@rebasepro/ui\";\n\nimport { RebaseAuthGate } from \"./RebaseAuthGate\";\nimport { RebaseNavigation } from \"./RebaseNavigation\";\nimport { RebaseLayout } from \"./RebaseLayout\";\nimport { RebaseRouteDefs } from \"./RebaseRouteDefs\";\n\nexport interface RebaseShellProps {\n title?: string;\n appBar?: React.ReactNode;\n drawer?: React.ReactNode;\n autoOpenDrawer?: boolean;\n children?: React.ReactNode;\n}\n\n/**\n * Convenience component that composes all four CMS layers:\n *\n * ```\n * <RebaseAuthGate>\n * <RebaseNavigation>\n * <RebaseRouteDefs layout={<RebaseLayout>}>\n * {children}\n * </RebaseRouteDefs>\n * </RebaseNavigation>\n * </RebaseAuthGate>\n * ```\n *\n * Each layer is independently usable — see their individual docs.\n * RebaseShell is sugar that composes them all with sensible defaults.\n */\nexport function RebaseShell(props: RebaseShellProps) {\n const {\n title = \"Rebase\",\n appBar,\n drawer,\n autoOpenDrawer = false,\n children\n } = props;\n\n const registry = useRebaseRegistry();\n\n // Compute devViews for the layout's AdminModeSyncer\n const devViews = useMemo(() => {\n return registry.studioConfig?.devViews ?? [];\n }, [registry.studioConfig?.devViews]);\n\n return (\n <RebaseAuthGate>\n <RebaseNavigation>\n <ErrorBoundary fullPage>\n <RebaseRouteDefs\n layout={\n <RebaseLayout\n title={title}\n appBar={appBar}\n drawer={drawer}\n autoOpenDrawer={autoOpenDrawer}\n devViews={devViews}\n />\n }\n >\n {children}\n </RebaseRouteDefs>\n </ErrorBoundary>\n </RebaseNavigation>\n </RebaseAuthGate>\n );\n}\n","import type { EntityCollection, ViewMode } from \"@rebasepro/types\";\nimport React, { useMemo } from \"react\";\nimport { EntityCollectionView } from \"./EntityCollectionView/EntityCollectionView\";\nimport { useCollectionRegistryController } from \"../hooks/navigation/contexts/CollectionRegistryContext\";\nimport { Typography } from \"@rebasepro/ui\";\n\n/**\n * Props for the {@link CollectionPanel} component.\n *\n * This is a high-level, consumer-friendly wrapper around {@link EntityCollectionView}\n * designed for embedding collection views inside custom pages (home pages,\n * dashboards, entity detail views, etc.).\n *\n * At minimum, provide the `path` (collection slug). All other props are optional\n * overrides that take precedence over the collection's default configuration.\n *\n * @group Components\n */\nexport type CollectionPanelProps = {\n /**\n * The collection slug / path to display (e.g. \"tasks\", \"clients\").\n * The collection must be registered in the Rebase context.\n */\n path: string;\n\n /**\n * Optional title displayed above the collection.\n * Set to `false` to hide the title entirely.\n * Defaults to the collection's `name`.\n */\n title?: string | false;\n\n /**\n * Force a specific view mode, overriding the collection's default.\n */\n viewMode?: ViewMode;\n\n /**\n * Override the sort field.\n */\n sort?: [string, \"asc\" | \"desc\"];\n\n /**\n * Maximum number of entities to display.\n */\n limit?: number;\n\n /**\n * Whether to sync filter/sort state with URL query params.\n * Defaults to `false` (embedded panels shouldn't hijack the URL).\n */\n updateUrl?: boolean;\n\n /**\n * Override the entity open mode when clicking an entity.\n */\n openEntityMode?: \"side_panel\" | \"full_screen\" | \"split\" | \"dialog\";\n\n /**\n * Additional CSS class name for the container.\n */\n className?: string;\n\n /**\n * Any additional collection-level overrides (e.g. `previewProperties`,\n * `enabledViews`, `entityActions`, `defaultFilter`, etc.).\n */\n collectionOverrides?: Partial<EntityCollection>;\n};\n\n/**\n * A high-level, reusable wrapper for embedding a Rebase collection view\n * inside custom pages (dashboards, home pages, entity detail views, etc.).\n *\n * Usage:\n * ```tsx\n * import { CollectionPanel } from \"@rebasepro/admin\";\n *\n * function MyDashboard() {\n * return (\n * <div>\n * <CollectionPanel path=\"tasks\" title=\"Pending Tasks\" />\n * <CollectionPanel\n * path=\"clients\"\n * viewMode=\"table\"\n * collectionOverrides={{\n * defaultFilter: { status: [\"!=\", \"completed\"] }\n * }}\n * />\n * </div>\n * );\n * }\n * ```\n *\n * @group Components\n */\nexport function CollectionPanel({\n path,\n title,\n viewMode,\n sort,\n limit,\n updateUrl = false,\n openEntityMode,\n className,\n collectionOverrides\n}: CollectionPanelProps) {\n const collectionRegistry = useCollectionRegistryController();\n const registeredCollection = collectionRegistry.getCollection(path);\n\n const mergedCollection = useMemo(() => {\n if (!registeredCollection) return undefined;\n\n // Build overrides object from shorthand props + explicit overrides\n const propOverrides: Record<string, unknown> = {};\n if (viewMode) propOverrides.defaultViewMode = viewMode;\n if (sort) propOverrides.sort = sort;\n if (limit) propOverrides.pagination = limit;\n if (openEntityMode) propOverrides.openEntityMode = openEntityMode;\n\n return {\n ...registeredCollection,\n ...(collectionOverrides ?? {}),\n ...propOverrides\n } as EntityCollection;\n }, [registeredCollection, collectionOverrides, viewMode, sort, limit, openEntityMode]);\n\n if (!mergedCollection) {\n return (\n <div className={className}>\n <Typography variant=\"body2\" color=\"secondary\">\n Collection &quot;{path}&quot; not found.\n </Typography>\n </div>\n );\n }\n\n return (\n <div className={className}>\n {title !== false && (\n <Typography\n variant=\"subtitle2\"\n className=\"font-bold mb-2 text-surface-700 dark:text-surface-300\"\n >\n {title ?? mergedCollection.name}\n </Typography>\n )}\n <EntityCollectionView\n {...mergedCollection}\n path={path}\n updateUrl={updateUrl}\n />\n </div>\n );\n}\n","import type { ArrayProperty, MapProperty, Property } from \"@rebasepro/types\";\nimport React from \"react\";\nimport { ErrorBoundary } from \"@rebasepro/ui\";\nimport type { PropertyPreviewProps } from \"../../types/components/PropertyPreviewProps\";\nimport { PropertyPreview } from \"../PropertyPreview\";\n\n/**\n * @group Preview components\n */\nexport function ArrayOfMapsPreview({\n propertyKey,\n value,\n property,\n size\n // entity\n}: PropertyPreviewProps<ArrayProperty>) {\n\n if (Array.isArray(property?.of)) {\n throw Error(\"Using array properties instead of single one in `of` in ArrayProperty\");\n }\n\n if (property?.type !== \"array\" || !property.of || property.of.type !== \"map\")\n throw Error(\"Picked wrong preview component ArrayOfMapsPreview\");\n\n const mapProperty = property.of;\n const properties = mapProperty.properties;\n if (!properties) {\n throw Error(`You need to specify a 'properties' prop (or specify a custom field) in your map property ${propertyKey}`);\n }\n const values = value as Record<string, unknown>[];\n const previewProperties: string[] | undefined = (mapProperty as MapProperty).previewProperties;\n\n if (!values) return null;\n\n let mapProperties = previewProperties;\n if (!mapProperties || !mapProperties.length) {\n mapProperties = Object.keys(properties);\n if (size)\n mapProperties = mapProperties.slice(0, 3);\n }\n\n return (\n <div className=\"table-auto text-xs\">\n <div>\n {values &&\n values.map((v, index: number) => {\n return (\n <div key={`table_${v}_${index}`}\n className=\"border-b last:border-b-0 py-2\">\n {mapProperties && mapProperties.map(\n (key) => (\n <div\n key={`table-cell-${key as string}`}\n className=\"table-cell\"\n >\n <ErrorBoundary>\n <PropertyPreview\n propertyKey={key as string}\n value={(v)[key]}\n property={properties[key as string] as Property}\n // entity={entity}\n size={\"small\"}/>\n </ErrorBoundary>\n </div>\n )\n )}\n </div>\n );\n })}\n </div>\n </div>\n );\n}\n","import { useCollectionRegistryController } from \"../_cms_internals\";\nimport { ErrorView, useTranslation } from \"@rebasepro/core\";\nimport { useCollectionEditorController } from \"../useCollectionEditorController\";\nimport { Button } from \"@rebasepro/ui\";\nimport { prettifyIdentifier } from \"@rebasepro/utils\";\nimport { getLastSegment } from \"@rebasepro/common\";\n\nexport function MissingReferenceWidget({ path: pathProp }: {\n path: string\n}) {\n const registry = useCollectionRegistryController();\n const path = getLastSegment(pathProp);\n const parentCollectionSlugs = registry.getParentCollectionSlugs(pathProp);\n const parentEntityIds = registry.getParentEntityIds(pathProp);\n const collectionEditor = useCollectionEditorController();\n const { t } = useTranslation();\n return <div className={\"p-1 flex flex-col items-center\"}>\n <ErrorView error={t(\"studio_missing_reference_error\", { path })}/>\n <Button className={\"mx-2\"}\n size={\"small\"}\n onClick={() => {\n collectionEditor.createCollection({\n initialValues: { path,\nname: prettifyIdentifier(path) },\n parentCollectionSlugs, parentEntityIds,\n redirect: false,\n sourceClick: \"missing_reference\"\n });\n }}>\n {t(\"studio_missing_reference_create\")}\n </Button>\n </div>;\n}\n\n"],"names":["resolveNavigationFrom","path","context","data","navigationStateController","collectionRegistryController","Error","navigationEntries","getNavigationEntriesFromPath","collections","resultPromises","map","entry","type","Promise","resolve","collection","getCollection","slug","findById","entityId","then","entity","undefined","filter","v","Boolean","all","useResolvedNavigationFrom","t0","$","_c","useCMSContext","setData","useState","dataLoading","setDataLoading","dataLoadingError","setDataLoadingError","t1","catch","e","finally","t2","useEffect","t3","bb0","t4","Symbol","for","ReferenceWidget","name","multiselect","disabled","value","onReferenceSelected","onMultipleReferenceSelected","previewProperties","fixedFilter","size","className","includeId","includeEntityLink","useCollectionRegistryController","useMemo","onSingleEntitySelected","useCallback","reference","getReferenceFrom","onMultipleEntitiesSelected","entities","references","referenceDialogController","useEntitySelectionDialog","stopPropagation","child","onEntryClick","open","Array","isArray","ref","index","isEntityReference","cls","AdminModeSyncer","devViews","location","useLocation","urlController","useUrlController","adminModeController","useAdminModeController","currentModeRef","React","useRef","mode","current","setModeRef","setMode","pathname","isContentRoute","isUrlCollectionPath","basePath","studioHomePath","isStudioRoute","startsWith","some","view","viewPath","buildAppUrlPath","RebaseCMS","homePage","entityViews","entityActions","plugins","collectionEditor","navigationGroupMappings","dispatch","useRebaseRegistryDispatch","registerCMS","unregisterCMS","useLayoutEffect","RebaseAuthGate","children","registry","useRebaseRegistry","authController","useAuthController","initialLoading","user","authConfig","loginView","ActiveLoginView","RebaseLayout","props","title","appBar","drawer","autoOpenDrawer","ActiveAppBar","t5","ActiveDrawer","t6","t7","t8","t9","NavigationChip","navigate","useNavigate","userConfigurationPersistence","useUserConfigurationPersistence","favouritePaths","includes","favourite","preventDefault","setFavouritePaths","p","onIconClick","url","FavouritesView","useNavigationStateController","T0","topLevelNavigation","find","favouriteCollections","Collapse","length","_temp","entry_0","NavigationGroup","group","minimised","isPreview","isPotentialCardDropTarget","onEditGroup","dndDisabled","collapsed","onToggleCollapsed","t","useTranslation","isHovered","setIsHovered","currentGroupName","showCaret","iconSize","smallest","TitleContent","t10","t11","t12","minHeight","t13","t14","NavigationCardBinding","description","onClick","shrink","collectionIcon","useRebaseContext","actionsArray","pluginCardActions","useSlot","pluginCardInsights","actions","setRecentlyVisitedPaths","recentlyVisitedPaths","p_0","animateLayoutChanges","args","defaultAnimateLayoutChanges","wasDragging","dropAnimationConfig","cloneSerializableNavigationEntry","clonedEntry","id","cloneItemsForDnd","items","g","entries","SortableNavigationCard","setNodeRef","listeners","attributes","transform","transition","isDragging","useSortable","CSS","Transform","toString","opacity","style","NavigationGroupDroppable","itemIds","useDroppable","rectSortingStrategy","SortableNavigationGroup","groupName","useHomePageDnd","setItems","onCardMovedBetweenGroups","onGroupMoved","onNewGroupDrop","onPersist","dndItems","setDndItems","activeId","setActiveId","activeIsGroup","setActiveIsGroup","currentDraggingGroupId","setCurrentDraggingGroupId","dndKitActiveNode","setDndKitActiveNode","isDraggingCardOnly","setIsDraggingCardOnly","dialogOpenForGroup","setDialogOpenForGroup","isHoveringNewGroupDropZone","setIsHoveringNewGroupDropZone","pendingNewGroupName","setPendingNewGroupName","stateBeforeNewGroup","setStateBeforeNewGroup","preDragItemsRef","interimItemsRef","mouseSensor","useSensor","MouseSensor","activationConstraint","distance","touchSensor","TouchSensor","delay","tolerance","keyboardSensor","KeyboardSensor","sensors","useSensors","dndContainers","findDndContainer","lastOverId","recentlyMovedToNewContainer","collisionDetection","groups","droppableContainers","c","closestCenter","pointer","pointerWithin","zone","container","itemsIn","closest","closestCorners","first","getFirstCollision","rects","rectIntersection","zoneRect","overId","overIsContainer","closestItem","handleDragStart","active","isGroup","handleDragOver","over","activeIdNow","overIdNow","activeCont","overCont","newState","srcIdx","findIndex","tgtIdx","src","tgt","idxInSrc","moved","splice","push","overIdx","handleDragEnd","resetDragState","from","to","arrayMove","findContainerInState","state","sourceState","dragged","tentative","counter","grpIdx","oldIdx","newIdx","reordered","finalState","finalOverId","cleanOverCont","console","error","handleDragCancel","handleRenameGroup","oldName","newName","idx","updated","handleDialogClose","activeItemForOverlay","flatMap","activeGroupData","onDragStart","onDragOver","onDragEnd","onDragCancel","dropAnimation","draggingGroupId","containers","NewGroupDropZone","setIsHovering","isOver","isVisible","setIsVisible","tp","useDndMonitor","RenameGroupDialog","initialName","existingGroupNames","onClose","onRename","setName","setError","inputRef","setTimeout","focus","select","event","target","trim","handleNameChange","trimmedName","handleSave","event_0","key","trimmedName_0","currentError","handleKeyDown","display","t15","t16","t17","t18","t19","t20","DEFAULT_GROUP_NAME","ADMIN_GROUP_NAME","ContentHomePage","additionalActions","additionalChildrenStart","additionalChildrenEnd","sections","hiddenGroups","customizationController","useCustomizationController","resolvedSlots","breadcrumbs","useBreadcrumbsController","set","allowDragAndDrop","unFilteredNavigationEntries","unFilteredGroupOrder","onNavigationEntriesUpdate","rawNavigationEntries","groupOrderFromNavController","entryGroups","Set","has","fuse","filteredUrls","setFilteredUrls","performingSearch","filteredNavigationEntries","Fuse","keys","updateSearch","results","search","x","item","adminGroupData","setAdminGroupData","isDndDirtyRef","dndDirtyTimeoutRef","processedGroups","entriesByGroup","forEach","hasPluginAdditionalCards","s","slot","allProcessed","ordered","Object","admin","updateItems","updater","persistNavigationGroups","latest","clearTimeout","draggable","groupNames","collapsedDefaults","buildCollapsedDefaults","cmsConfig","isGroupCollapsed","toggleGroupCollapsed","useCollapsedGroups","analyticsController","onAnalyticsEvent","card","containerRef","direction","useRestoreScroll","dndModifiers","restrictToVerticalAxis","restrictToWindowEdges","sectionProps","additionalPluginChildrenStart","additionalPluginChildrenEnd","additionalPluginActions","homeCardContributions","sort","a","b","order","top","droppable","strategy","MeasuringStrategy","Always","frequency","verticalListSortingStrategy","groupData","groupIndex","groupKey","entriesInGroup","homeCardsProps","additionalCards","i","toLowerCase","join","padding","margin","section","n","RebaseRoute","collectionRegistry","userConfigPersistence","hash","isSidePanel","isNew","isCopy","isFullScreen","navigationPath","urlPathToDataPath","lastEntry","isViewingCollection","isLastEntry","String","buildUrlCollectionPath","showCount","count","initialised","toArray","Actions","lastCollectionEntry","reverse","_temp2","bb1","firstEntry","_temp3","lastEntityEntry","firstCollectionEntry","bb2","effectiveOpenMode","openEntityMode","urlViewParam","URLSearchParams","get","currentViewMode","defaultViewMode","savedView","getCollectionConfig","selectedTab","thirdEntry","entityIdStr","entityIdIdx","lastIndexOf","afterEntity","substring","trailingSegment","entry_2","entry_1","getSelectedTabFromUrl","lastCustomView","EntityFullScreenRoute","defaultValues","blocked","_temp4","navigationEntriesAfterEntity","slice","indexOf","_temp5","urlTab","setSelectedTab","parentCollectionSlugs","getParentCollectionSlugs","parentEntityIds","getParentEntityIds","entityPath","currentLocation","nextLocation","nextHash","currentHash","blocker","useBlocker","_temp6","rawCollection","parentCollection","fullIdPath","collectionPath","resolveDatabasePathsFrom","isEditRoute","endsWith","split","pop","isDetailMode","defaultEntityAction","editUrl","params","newSelectedTab","replace","modified","detailUrl","params_0","newSelectedTab_0","newEntityId","savedHash","params_1","newSelectedTab_1","proceed","reset","CustomViewRoute","SettingsView","RebaseRouteDefs","layout","cmsHomePage","studioHomePage","studioConfig","combinedViews","views","adminViews","routeContents","slugs","routes","nestedRoutes","loading","RebaseShell","CollectionPanel","viewMode","limit","updateUrl","collectionOverrides","registeredCollection","propOverrides","pagination","mergedCollection","ArrayOfMapsPreview","propertyKey","property","of","mapProperty","properties","values","mapProperties","MissingReferenceWidget","pathProp","getLastSegment","useCollectionEditorController","ErrorView","createCollection","initialValues","prettifyIdentifier","redirect","sourceClick"],"mappings":"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"}