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

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 (234) hide show
  1. package/README.md +7 -7
  2. package/dist/{CollectionEditorDialog-B-7uW3iJ.js → CollectionEditorDialog-DbPpDDwb.js} +33 -11
  3. package/dist/CollectionEditorDialog-DbPpDDwb.js.map +1 -0
  4. package/dist/{PropertyEditView-7KMTcrqi.js → PropertyEditView-DfJbZ67t.js} +5 -5
  5. package/dist/PropertyEditView-DfJbZ67t.js.map +1 -0
  6. package/dist/{RouterCollectionsStudioView-epqIbZrJ.js → RouterCollectionsStudioView-C6XQ7Il5.js} +5 -5
  7. package/dist/RouterCollectionsStudioView-C6XQ7Il5.js.map +1 -0
  8. package/dist/collection_editor/api/generateCollectionApi.d.ts +4 -4
  9. package/dist/collection_editor/ui/collection_editor/PropertyEditView.d.ts +1 -1
  10. package/dist/collection_editor/ui/collection_editor/SwitchControl.d.ts +1 -1
  11. package/dist/collection_editor/useSafeSnackbarController.d.ts +1 -1
  12. package/dist/collection_editor_ui.js +5 -5
  13. package/dist/collection_editor_ui.js.map +1 -1
  14. package/dist/components/CollectionTableBinding/CollectionTableBindingProps.d.ts +1 -1
  15. package/dist/components/CollectionTableBinding/internal/EntityTableCell.d.ts +1 -1
  16. package/dist/components/CollectionTableBinding/internal/popup_field/PopupFormField.d.ts +1 -1
  17. package/dist/components/CollectionTableBinding/table_bindings.d.ts +1 -1
  18. package/dist/components/CollectionViewBinding/hooks/useCollectionInlineEditor.d.ts +1 -1
  19. package/dist/components/{RebaseCMS.d.ts → RebaseAdmin.d.ts} +2 -2
  20. package/dist/components/RebaseLayout.d.ts +5 -4
  21. package/dist/components/RebaseShell.d.ts +1 -0
  22. package/dist/components/SelectableTable/SelectableTable.d.ts +1 -1
  23. package/dist/components/SelectableTable/SelectableTableContext.d.ts +1 -1
  24. package/dist/components/SidePanelProvider.d.ts +1 -1
  25. package/dist/components/index.d.ts +1 -1
  26. package/dist/editor.js +1 -1
  27. package/dist/editor.js.map +1 -1
  28. package/dist/form/components/LocalChangesMenu.d.ts +1 -1
  29. package/dist/form/components/StorageUploadProgress.d.ts +1 -1
  30. package/dist/form/field_bindings/StorageUploadFieldBinding.d.ts +1 -1
  31. package/dist/{history-7X5bON_n.js → history-GSa4BgDt.js} +5 -5
  32. package/dist/history-GSa4BgDt.js.map +1 -0
  33. package/dist/index.d.ts +1 -1
  34. package/dist/index.js +2 -2
  35. package/dist/{src-sUZfe29F.js → src-B8WuGSPZ.js} +160 -56
  36. package/dist/src-B8WuGSPZ.js.map +1 -0
  37. package/dist/types/components/formex.d.ts +1 -1
  38. package/package.json +12 -17
  39. package/src/collection_editor/ConfigControllerProvider.tsx +1 -1
  40. package/src/collection_editor/api/generateCollectionApi.ts +4 -4
  41. package/src/collection_editor/ui/AddKanbanColumnAction.tsx +1 -1
  42. package/src/collection_editor/ui/CollectionViewHeaderAction.tsx +1 -1
  43. package/src/collection_editor/ui/EditorCollectionAction.tsx +1 -1
  44. package/src/collection_editor/ui/EditorCollectionActionStart.tsx +1 -1
  45. package/src/collection_editor/ui/EditorEntityAction.tsx +1 -1
  46. package/src/collection_editor/ui/HomePageEditorCollectionAction.tsx +1 -1
  47. package/src/collection_editor/ui/KanbanSetupAction.tsx +1 -1
  48. package/src/collection_editor/ui/MissingReferenceWidget.tsx +1 -1
  49. package/src/collection_editor/ui/NewCollectionButton.tsx +1 -1
  50. package/src/collection_editor/ui/NewCollectionCard.tsx +1 -1
  51. package/src/collection_editor/ui/PropertyAddColumnComponent.tsx +1 -1
  52. package/src/collection_editor/ui/collection_editor/AICollectionGeneratorPopover.tsx +1 -1
  53. package/src/collection_editor/ui/collection_editor/CollectionDetailsForm.tsx +3 -3
  54. package/src/collection_editor/ui/collection_editor/CollectionEditorDialog.tsx +3 -3
  55. package/src/collection_editor/ui/collection_editor/CollectionEditorWelcomeView.tsx +2 -2
  56. package/src/collection_editor/ui/collection_editor/CollectionPropertiesEditorForm.tsx +2 -2
  57. package/src/collection_editor/ui/collection_editor/CollectionRLSTab.tsx +37 -6
  58. package/src/collection_editor/ui/collection_editor/CollectionRelationsTab.tsx +1 -1
  59. package/src/collection_editor/ui/collection_editor/CollectionStudioView.tsx +1 -1
  60. package/src/collection_editor/ui/collection_editor/CollectionsStudioView.tsx +1 -1
  61. package/src/collection_editor/ui/collection_editor/DisplaySettingsForm.tsx +2 -2
  62. package/src/collection_editor/ui/collection_editor/EntityActionsEditTab.tsx +2 -2
  63. package/src/collection_editor/ui/collection_editor/EntityActionsSelectDialog.tsx +1 -1
  64. package/src/collection_editor/ui/collection_editor/EntityCustomViewsSelectDialog.tsx +1 -1
  65. package/src/collection_editor/ui/collection_editor/EnumForm.tsx +2 -2
  66. package/src/collection_editor/ui/collection_editor/GeneralSettingsForm.tsx +2 -2
  67. package/src/collection_editor/ui/collection_editor/GetCodeDialog.tsx +2 -2
  68. package/src/collection_editor/ui/collection_editor/KanbanConfigSection.tsx +2 -2
  69. package/src/collection_editor/ui/collection_editor/PropertyEditView.tsx +2 -2
  70. package/src/collection_editor/ui/collection_editor/PropertyFieldPreview.tsx +1 -1
  71. package/src/collection_editor/ui/collection_editor/PropertyTree.tsx +1 -1
  72. package/src/collection_editor/ui/collection_editor/RouterCollectionStudioView.tsx +1 -1
  73. package/src/collection_editor/ui/collection_editor/SubcollectionsEditTab.tsx +2 -2
  74. package/src/collection_editor/ui/collection_editor/SwitchControl.tsx +1 -1
  75. package/src/collection_editor/ui/collection_editor/import/CollectionEditorImportDataPreview.tsx +1 -1
  76. package/src/collection_editor/ui/collection_editor/import/CollectionEditorImportMapping.tsx +2 -2
  77. package/src/collection_editor/ui/collection_editor/properties/BlockPropertyField.tsx +1 -1
  78. package/src/collection_editor/ui/collection_editor/properties/BooleanPropertyField.tsx +1 -1
  79. package/src/collection_editor/ui/collection_editor/properties/CommonPropertyFields.tsx +2 -2
  80. package/src/collection_editor/ui/collection_editor/properties/DateTimePropertyField.tsx +2 -2
  81. package/src/collection_editor/ui/collection_editor/properties/EnumPropertyField.tsx +2 -2
  82. package/src/collection_editor/ui/collection_editor/properties/MapPropertyField.tsx +2 -2
  83. package/src/collection_editor/ui/collection_editor/properties/MarkdownPropertyField.tsx +2 -2
  84. package/src/collection_editor/ui/collection_editor/properties/NumberPropertyField.tsx +2 -2
  85. package/src/collection_editor/ui/collection_editor/properties/ReferencePropertyField.tsx +2 -2
  86. package/src/collection_editor/ui/collection_editor/properties/RelationPropertyField.tsx +1 -1
  87. package/src/collection_editor/ui/collection_editor/properties/RepeatPropertyField.tsx +1 -1
  88. package/src/collection_editor/ui/collection_editor/properties/StoragePropertyField.tsx +2 -2
  89. package/src/collection_editor/ui/collection_editor/properties/StringPropertyField.tsx +2 -2
  90. package/src/collection_editor/ui/collection_editor/properties/UrlPropertyField.tsx +1 -1
  91. package/src/collection_editor/ui/collection_editor/properties/VectorPropertyField.tsx +1 -1
  92. package/src/collection_editor/ui/collection_editor/properties/advanced/AdvancedPropertyValidation.tsx +1 -1
  93. package/src/collection_editor/ui/collection_editor/properties/conditions/ConditionsEditor.tsx +1 -1
  94. package/src/collection_editor/ui/collection_editor/properties/conditions/EnumConditionsEditor.tsx +1 -1
  95. package/src/collection_editor/ui/collection_editor/properties/validation/ArrayPropertyValidation.tsx +2 -2
  96. package/src/collection_editor/ui/collection_editor/properties/validation/GeneralPropertyValidation.tsx +2 -2
  97. package/src/collection_editor/ui/collection_editor/properties/validation/NumberPropertyValidation.tsx +2 -2
  98. package/src/collection_editor/ui/collection_editor/properties/validation/StringPropertyValidation.tsx +2 -2
  99. package/src/collection_editor/useSafeSnackbarController.ts +1 -1
  100. package/src/components/AdminModeSyncer.tsx +1 -1
  101. package/src/components/ArrayContainer.tsx +1 -1
  102. package/src/components/ClearFilterSortButton.tsx +1 -1
  103. package/src/components/CollectionPanel.tsx +1 -1
  104. package/src/components/CollectionTableBinding/CollectionRowActions.tsx +2 -2
  105. package/src/components/CollectionTableBinding/CollectionTableBinding.tsx +3 -3
  106. package/src/components/CollectionTableBinding/CollectionTableBindingProps.tsx +1 -1
  107. package/src/components/CollectionTableBinding/PropertyTableCell.tsx +1 -1
  108. package/src/components/CollectionTableBinding/column_utils.tsx +1 -1
  109. package/src/components/CollectionTableBinding/fields/TableMultipleRelationField.tsx +2 -2
  110. package/src/components/CollectionTableBinding/fields/TableReferenceField.tsx +1 -1
  111. package/src/components/CollectionTableBinding/fields/TableRelationField.tsx +2 -2
  112. package/src/components/CollectionTableBinding/fields/TableStorageUpload.tsx +1 -1
  113. package/src/components/CollectionTableBinding/internal/CollectionTableToolbar.tsx +1 -1
  114. package/src/components/CollectionTableBinding/internal/EntityTableCell.tsx +2 -2
  115. package/src/components/CollectionTableBinding/internal/EntityTableCellActions.tsx +1 -1
  116. package/src/components/CollectionTableBinding/internal/popup_field/PopupFormField.tsx +4 -4
  117. package/src/components/CollectionTableBinding/table_bindings.tsx +1 -1
  118. package/src/components/CollectionViewBinding/BoardCardBinding.tsx +2 -2
  119. package/src/components/CollectionViewBinding/CollectionBoardViewBinding.tsx +3 -3
  120. package/src/components/CollectionViewBinding/CollectionCardViewBinding.tsx +1 -1
  121. package/src/components/CollectionViewBinding/CollectionListViewBinding.tsx +3 -3
  122. package/src/components/CollectionViewBinding/CollectionViewActions.tsx +2 -2
  123. package/src/components/CollectionViewBinding/CollectionViewBinding.tsx +1 -1
  124. package/src/components/CollectionViewBinding/CollectionViewStartActions.tsx +1 -1
  125. package/src/components/CollectionViewBinding/EntityCardBinding.tsx +3 -3
  126. package/src/components/CollectionViewBinding/FiltersDialog.tsx +19 -1
  127. package/src/components/CollectionViewBinding/SplitListView.tsx +1 -1
  128. package/src/components/CollectionViewBinding/ViewModeToggle.tsx +1 -1
  129. package/src/components/CollectionViewBinding/hooks/useCollectionInlineEditor.ts +2 -2
  130. package/src/components/CollectionViewBinding/hooks/useKanbanDragAndDrop.ts +2 -2
  131. package/src/components/CollectionViewBinding/useBoardDataController.tsx +9 -3
  132. package/src/components/CollectionViewBinding/usePreviewSlots.ts +1 -1
  133. package/src/components/DefaultAppBar.tsx +3 -3
  134. package/src/components/DefaultDrawer.tsx +3 -3
  135. package/src/components/DeleteEntityDialog.tsx +1 -1
  136. package/src/components/DetailViewBinding.tsx +3 -3
  137. package/src/components/DrawerNavigationGroup.tsx +2 -2
  138. package/src/components/EditFormActions.tsx +4 -4
  139. package/src/components/EditViewBinding.tsx +6 -6
  140. package/src/components/EntityPreviewBinding.tsx +3 -3
  141. package/src/components/EntityViewBinding.tsx +2 -2
  142. package/src/components/HomePage/ContentHomePage.tsx +4 -4
  143. package/src/components/HomePage/FavouritesView.tsx +1 -1
  144. package/src/components/HomePage/NavigationCardBinding.tsx +3 -3
  145. package/src/components/HomePage/NavigationGroup.tsx +1 -1
  146. package/src/components/HomePage/RenameGroupDialog.tsx +1 -1
  147. package/src/components/JsonPreviewBinding.tsx +1 -1
  148. package/src/components/{RebaseCMS.tsx → RebaseAdmin.tsx} +3 -3
  149. package/src/components/RebaseAuthGate.tsx +2 -2
  150. package/src/components/RebaseLayout.tsx +7 -13
  151. package/src/components/RebaseNavigation.tsx +18 -3
  152. package/src/components/RebaseRouteDefs.tsx +2 -2
  153. package/src/components/RebaseShell.tsx +2 -1
  154. package/src/components/ReferenceTable/SelectionTableBinding.tsx +5 -5
  155. package/src/components/RelationSelector.tsx +1 -1
  156. package/src/components/SearchIconsView.tsx +2 -2
  157. package/src/components/SelectableTable/SelectableTable.tsx +2 -2
  158. package/src/components/SelectableTable/SelectableTableContext.tsx +1 -1
  159. package/src/components/SelectableTable/filters/BooleanFilterField.tsx +1 -1
  160. package/src/components/SelectableTable/filters/DateTimeFilterField.tsx +1 -1
  161. package/src/components/SelectableTable/filters/FilterFieldBinding.tsx +1 -1
  162. package/src/components/SelectableTable/filters/ReferenceFilterField.tsx +1 -1
  163. package/src/components/SelectableTable/filters/StringNumberFilterField.tsx +1 -1
  164. package/src/components/SideDialogs.tsx +1 -1
  165. package/src/components/SidePanelBinding.tsx +1 -1
  166. package/src/components/SidePanelProvider.tsx +2 -2
  167. package/src/components/UserSelector.tsx +1 -1
  168. package/src/components/admin/CreationResultDialog.tsx +6 -3
  169. package/src/components/app/Scaffold.tsx +6 -2
  170. package/src/components/common/default_entity_actions.tsx +123 -25
  171. package/src/components/field_configs.tsx +1 -1
  172. package/src/components/history/EntityHistoryEntry.tsx +1 -1
  173. package/src/components/history/EntityHistoryView.tsx +4 -4
  174. package/src/components/history/LastEditedByIndicator.tsx +2 -2
  175. package/src/components/index.ts +1 -1
  176. package/src/data_export/export/BasicExportAction.tsx +1 -1
  177. package/src/data_export/export/ExportCollectionAction.tsx +1 -1
  178. package/src/data_import/components/DataNewPropertiesMapping.tsx +1 -1
  179. package/src/data_import/components/ImportFileUpload.tsx +1 -1
  180. package/src/data_import/components/ImportNewPropertyFieldPreview.tsx +1 -1
  181. package/src/data_import/components/ImportSaveInProgress.tsx +1 -1
  182. package/src/data_import/import/ImportCollectionAction.tsx +2 -2
  183. package/src/data_import/utils/data.ts +2 -2
  184. package/src/data_import/utils/get_properties_mapping.ts +1 -1
  185. package/src/editor/components/image-bubble.tsx +1 -1
  186. package/src/editor/components/table-bubble.tsx +1 -1
  187. package/src/editor/editor.tsx +1 -1
  188. package/src/editor/selectors/link-selector.tsx +1 -1
  189. package/src/editor/selectors/node-selector.tsx +1 -1
  190. package/src/form/EntityForm.tsx +4 -4
  191. package/src/form/EntityFormActions.tsx +1 -1
  192. package/src/form/EntityFormBinding.tsx +4 -4
  193. package/src/form/PropertyFieldBinding.tsx +3 -3
  194. package/src/form/components/ErrorFocus.tsx +1 -1
  195. package/src/form/components/LocalChangesMenu.tsx +3 -3
  196. package/src/form/components/StorageItemPreview.tsx +1 -1
  197. package/src/form/components/StorageUploadProgress.tsx +3 -3
  198. package/src/form/field_bindings/ArrayCustomShapedFieldBinding.tsx +1 -1
  199. package/src/form/field_bindings/ArrayOfReferencesFieldBinding.tsx +1 -1
  200. package/src/form/field_bindings/BlockFieldBinding.tsx +2 -2
  201. package/src/form/field_bindings/DateTimeFieldBinding.tsx +1 -1
  202. package/src/form/field_bindings/KeyValueFieldBinding.tsx +2 -2
  203. package/src/form/field_bindings/MapFieldBinding.tsx +1 -1
  204. package/src/form/field_bindings/MarkdownEditorFieldBinding.tsx +2 -2
  205. package/src/form/field_bindings/MultipleRelationFieldBinding.tsx +1 -1
  206. package/src/form/field_bindings/ReferenceFieldBinding.tsx +2 -2
  207. package/src/form/field_bindings/RelationFieldBinding.tsx +1 -1
  208. package/src/form/field_bindings/RepeatFieldBinding.tsx +1 -1
  209. package/src/form/field_bindings/StorageUploadFieldBinding.tsx +3 -3
  210. package/src/form/form_utils.ts +1 -1
  211. package/src/hooks/navigation/useNavigationResolution.ts +19 -4
  212. package/src/hooks/useBuildSidePanel.tsx +2 -2
  213. package/src/hooks/useCMSContext.tsx +1 -1
  214. package/src/hooks/useHistory.ts +1 -1
  215. package/src/hooks/useResolvedNavigationFrom.tsx +4 -2
  216. package/src/index.ts +3 -3
  217. package/src/preview/PropertyPreview.tsx +2 -2
  218. package/src/preview/components/DatePreview.tsx +1 -1
  219. package/src/preview/components/EnumValuesChip.tsx +1 -1
  220. package/src/preview/components/ImagePreview.tsx +1 -1
  221. package/src/preview/components/ReferencePreview.tsx +2 -2
  222. package/src/preview/components/RelationPreview.tsx +1 -1
  223. package/src/preview/components/StorageThumbnail.tsx +1 -1
  224. package/src/preview/property_previews/ArrayOfStorageComponentsPreview.tsx +1 -1
  225. package/src/preview/property_previews/ArrayOneOfPreview.tsx +1 -1
  226. package/src/preview/property_previews/ArrayPropertyPreview.tsx +1 -1
  227. package/src/routes/RebaseRoute.tsx +2 -2
  228. package/src/types/components/formex.tsx +1 -1
  229. package/src/util/previews.ts +4 -2
  230. package/dist/CollectionEditorDialog-B-7uW3iJ.js.map +0 -1
  231. package/dist/PropertyEditView-7KMTcrqi.js.map +0 -1
  232. package/dist/RouterCollectionsStudioView-epqIbZrJ.js.map +0 -1
  233. package/dist/history-7X5bON_n.js.map +0 -1
  234. package/dist/src-sUZfe29F.js.map +0 -1
@@ -11,7 +11,7 @@ import {
11
11
  XIcon
12
12
  } from "@rebasepro/ui";
13
13
  import { EnumValueConfig } from "@rebasepro/types";
14
- import { useTranslation } from "@rebasepro/core";
14
+ import { useTranslation } from "@rebasepro/app";
15
15
 
16
16
  interface StringNumberFilterFieldProps {
17
17
  name: string,
@@ -2,7 +2,7 @@ import type { SideDialogPanelProps } from "../hooks/useSideDialogsController";
2
2
  import React, { useCallback, useContext, useEffect, useState, useMemo } from "react";
3
3
  import { useSideDialogsController } from "../hooks";
4
4
  import { Sheet, Dialog } from "@rebasepro/ui";
5
- import { useUnsavedChangesDialog, UnsavedChangesDialog } from "@rebasepro/core";
5
+ import { useUnsavedChangesDialog, UnsavedChangesDialog } from "@rebasepro/app";
6
6
  import { ErrorBoundary } from "@rebasepro/ui";
7
7
  import type { SidePanelBindingProps } from "@rebasepro/types";
8
8
 
@@ -9,7 +9,7 @@ import { EditViewBinding } from "./EditViewBinding";
9
9
  import { DetailViewBinding } from "./DetailViewBinding";
10
10
  import { useSideDialogContext } from "./SideDialogs";
11
11
  import { useNavigate } from "react-router-dom";
12
- import { saveEntityToMemoryCache, useComponentOverride } from "@rebasepro/core";
12
+ import { saveEntityToMemoryCache, useComponentOverride } from "@rebasepro/app";
13
13
  import { useCollectionRegistryController, useSidePanel } from "../index";
14
14
  import { useUrlController } from "../index";
15
15
  import { resolveDefaultSelectedView } from "@rebasepro/common";
@@ -8,11 +8,11 @@ import { BreadcrumbsProvider } from "../contexts/BreacrumbsContext";
8
8
  import { useBreadcrumbsController } from "../hooks/useBreadcrumbsController";
9
9
  import { useCollectionRegistryController, useUrlController } from "../index";
10
10
  import { useNavigationStateController } from "../index";
11
- import { useAuthController, useBridgeRegistration } from "@rebasepro/core";
11
+ import { useAuthController, useBridgeRegistration } from "@rebasepro/app";
12
12
 
13
13
  /**
14
14
  * Provider that builds the SidePanelController and makes it available
15
- * via the SidePanelControllerContext from @rebasepro/core.
15
+ * via the SidePanelControllerContext from @rebasepro/app.
16
16
  *
17
17
  * After the CMS extraction refactor, `useBuildSidePanel` lives
18
18
  * in the CMS package while the context it feeds into lives in core.
@@ -21,7 +21,7 @@ import * as React from "react";
21
21
  import { useCallback, useEffect, useRef, useState } from "react";
22
22
  import { Command as CommandPrimitive } from "cmdk";
23
23
  import { User } from "@rebasepro/types";
24
- import { useRebaseClient, useAuthController, UserDisplay } from "@rebasepro/core";
24
+ import { useRebaseClient, useAuthController, UserDisplay } from "@rebasepro/app";
25
25
  import { EmptyValue } from "../preview";
26
26
 
27
27
  interface UserSelectorItem {
@@ -13,7 +13,7 @@ import {
13
13
  Tooltip,
14
14
  Typography
15
15
  } from "@rebasepro/ui";
16
- import { useSnackbarController, useTranslation } from "@rebasepro/core";
16
+ import { useSnackbarController, useTranslation } from "@rebasepro/app";
17
17
  import { UserCreationResult } from "@rebasepro/types";
18
18
 
19
19
  export function CreationResultDialog({
@@ -90,8 +90,11 @@ export function CreationResultDialog({
90
90
  <div className="flex flex-col gap-4 py-2">
91
91
  <Alert color="warning">
92
92
  <Typography variant="body2">
93
- {t("temporary_password_description") ??
94
- "Email is not configured. Share this temporary password with the user securely. It will not be shown again."}
93
+ {result.emailDeliveryFailed
94
+ ? (t("temporary_password_email_failed_description") ??
95
+ "The email could not be delivered. Share this temporary password with the user securely. It will not be shown again.")
96
+ : (t("temporary_password_description") ??
97
+ "Email is not configured. Share this temporary password with the user securely. It will not be shown again.")}
95
98
  </Typography>
96
99
  </Alert>
97
100
 
@@ -3,7 +3,7 @@ import { cls, defaultBorderMixin, IconButton, Sheet, Tooltip } from "@rebasepro/
3
3
  import { ChevronLeftIcon, ErrorBoundary, MenuIcon } from "@rebasepro/ui";
4
4
  import { deepEqual as equal } from "fast-equals"
5
5
 
6
- import { useLargeLayout, useAdminModeController, useTranslation } from "@rebasepro/core";
6
+ import { useLargeLayout, useAdminModeController, useTranslation } from "@rebasepro/app";
7
7
  import { AppContext } from "./useApp";
8
8
 
9
9
  export const DRAWER_WIDTH = 280;
@@ -141,8 +141,12 @@ export const Scaffold = React.memo<PropsWithChildren<ScaffoldProps>>(
141
141
 
142
142
  <div
143
143
  className={cls(defaultBorderMixin, "bg-surface-50 dark:bg-surface-800", "grow overflow-auto m-0", {
144
- "lg:mt-4": !hasAppBar,
145
144
  "mt-1 lg:m-0 lg:mx-2 lg:mb-2 lg:rounded-lg lg:border-t lg:border-x lg:border-solid": padding,
145
+ // No app bar means no DrawerHeader spacer above, so inset the
146
+ // panel by the same amount as its sides and bottom.
147
+ // Must come after the padding classes, which reset lg margins.
148
+ "lg:mt-2": !hasAppBar && padding,
149
+ "lg:mt-4": !hasAppBar && !padding,
146
150
  "border-t": hasAppBar && !padding
147
151
  })}>
148
152
 
@@ -1,12 +1,29 @@
1
- import { CopyIcon, iconSize, KeyRoundIcon, PencilIcon, Trash2Icon } from "@rebasepro/ui";
1
+ import {
2
+ Alert,
3
+ Button,
4
+ CopyIcon,
5
+ Dialog,
6
+ DialogActions,
7
+ DialogContent,
8
+ DialogTitle,
9
+ iconSize,
10
+ KeyRoundIcon,
11
+ Label,
12
+ LoadingButton,
13
+ PencilIcon,
14
+ RadioGroup,
15
+ RadioGroupItem,
16
+ TextField,
17
+ Trash2Icon,
18
+ Typography
19
+ } from "@rebasepro/ui";
2
20
  import type { EntityAction, User, UserCreationResult } from "@rebasepro/types";
3
21
  import {
4
- ConfirmationDialog,
5
22
  useAuthController,
6
23
  useRebaseClient,
7
24
  useSnackbarController,
8
25
  useTranslation
9
- } from "@rebasepro/core";
26
+ } from "@rebasepro/app";
10
27
  import { DeleteEntityDialog } from "../DeleteEntityDialog";
11
28
  import { addRecentId } from "../CollectionViewBinding/utils";
12
29
  import { navigateToEntity } from "../../util/navigation_utils";
@@ -193,9 +210,23 @@ export function ResetPasswordActionDialog({
193
210
  const { t } = useTranslation();
194
211
  const [loading, setLoading] = useState(false);
195
212
  const [creationResult, setCreationResult] = useState<UserCreationResult | null>(null);
213
+ const [mode, setMode] = useState<"email" | "manual">("email");
214
+ const [password, setPassword] = useState("");
215
+ const [confirmPassword, setConfirmPassword] = useState("");
216
+ const [error, setError] = useState<string | null>(null);
217
+
218
+ // Strength rules are enforced server side, and are overridable through auth
219
+ // hooks, so only the match is checked here; the server's message is surfaced.
220
+ const passwordsMatch = password === confirmPassword;
221
+ const canSubmit = mode === "email" || (password.length > 0 && passwordsMatch);
196
222
 
197
223
  const handleConfirm = async () => {
224
+ if (mode === "manual" && !passwordsMatch) {
225
+ setError(t("passwords_dont_match") || "Passwords don't match");
226
+ return;
227
+ }
198
228
  setLoading(true);
229
+ setError(null);
199
230
  try {
200
231
  const baseUrl = client?.baseUrl || "";
201
232
  const token = await getAuthToken?.();
@@ -204,28 +235,32 @@ export function ResetPasswordActionDialog({
204
235
  headers: {
205
236
  "Content-Type": "application/json",
206
237
  ...(token ? { "Authorization": `Bearer ${token}` } : {})
207
- }
238
+ },
239
+ body: JSON.stringify(mode === "manual" ? { password } : {})
208
240
  });
209
241
  if (!response.ok) {
210
- const error = await response.json().catch(() => ({}));
211
- throw new Error(error.message || "Failed to reset password");
242
+ const errorBody = await response.json().catch(() => ({}));
243
+ throw new Error(errorBody.error?.message || errorBody.message || "Failed to reset password");
212
244
  }
213
245
  const data = await response.json();
214
- setCreationResult({
215
- user,
216
- invitationSent: data.invitationSent ?? false,
217
- temporaryPassword: data.temporaryPassword
218
- });
219
246
  snackbarController.open({
220
247
  type: "success",
221
248
  message: t("reset_password_success") || "Password reset successfully"
222
249
  });
223
- } catch (error: unknown) {
224
- snackbarController.open({
225
- type: "error",
226
- message: error instanceof Error ? error.message : (t("error_resetting_password") || "Error resetting password")
227
- });
228
- onClose();
250
+ // Setting a password directly returns neither an invitation nor a
251
+ // temporary password, so there is no result to show.
252
+ if (data.invitationSent || data.temporaryPassword) {
253
+ setCreationResult({
254
+ user,
255
+ invitationSent: data.invitationSent ?? false,
256
+ temporaryPassword: data.temporaryPassword,
257
+ emailDeliveryFailed: data.emailDeliveryFailed ?? false
258
+ });
259
+ } else {
260
+ onClose();
261
+ }
262
+ } catch (e: unknown) {
263
+ setError(e instanceof Error ? e.message : (t("error_resetting_password") || "Error resetting password"));
229
264
  } finally {
230
265
  setLoading(false);
231
266
  }
@@ -244,14 +279,77 @@ export function ResetPasswordActionDialog({
244
279
  }
245
280
 
246
281
  return (
247
- <ConfirmationDialog
248
- open={open}
249
- loading={loading}
250
- onAccept={handleConfirm}
251
- onCancel={onClose}
252
- title={<>{t("reset_password") || "Reset Password"}</>}
253
- body={<>{t("reset_password_confirmation") || "Are you sure you want to reset this user's password?"}</>}
254
- />
282
+ <Dialog open={open} onOpenChange={(o) => !o ? onClose() : undefined} maxWidth="xl">
283
+ <DialogTitle variant="h5" gutterBottom={false}>
284
+ {t("reset_password") || "Reset Password"}
285
+ </DialogTitle>
286
+ <DialogContent>
287
+ <div className="flex flex-col gap-4 py-2">
288
+ <Typography variant="body2" color="secondary">
289
+ {user.email}
290
+ </Typography>
291
+
292
+ <RadioGroup value={mode} onValueChange={(v) => {
293
+ setMode(v as "email" | "manual");
294
+ setError(null);
295
+ }}>
296
+ <div className="flex items-center gap-2">
297
+ <RadioGroupItem value="email" id="reset-password-mode-email"/>
298
+ <Label htmlFor="reset-password-mode-email">
299
+ {t("reset_password_send_email") || "Send a password reset email"}
300
+ </Label>
301
+ </div>
302
+ <div className="flex items-center gap-2">
303
+ <RadioGroupItem value="manual" id="reset-password-mode-manual"/>
304
+ <Label htmlFor="reset-password-mode-manual">
305
+ {t("reset_password_set_manually") || "Set a password manually"}
306
+ </Label>
307
+ </div>
308
+ </RadioGroup>
309
+
310
+ {mode === "manual" && <>
311
+ <TextField
312
+ type="password"
313
+ value={password}
314
+ autoFocus
315
+ autoComplete="new-password"
316
+ label={t("new_password") || "New password"}
317
+ onChange={(e) => {
318
+ setPassword(e.target.value);
319
+ setError(null);
320
+ }}
321
+ />
322
+ <TextField
323
+ type="password"
324
+ value={confirmPassword}
325
+ autoComplete="new-password"
326
+ error={confirmPassword.length > 0 && !passwordsMatch}
327
+ label={t("confirm_password") || "Confirm password"}
328
+ onChange={(e) => {
329
+ setConfirmPassword(e.target.value);
330
+ setError(null);
331
+ }}
332
+ />
333
+ <Typography variant="caption" color="secondary">
334
+ {t("reset_password_set_manually_description") ||
335
+ "The password is updated immediately and no email is sent. Share it with the user securely."}
336
+ </Typography>
337
+ </>}
338
+
339
+ {error && <Alert color="error">
340
+ <Typography variant="body2">{error}</Typography>
341
+ </Alert>}
342
+ </div>
343
+ </DialogContent>
344
+ <DialogActions>
345
+ <Button variant="text" onClick={onClose} disabled={loading}>
346
+ {t("cancel")}
347
+ </Button>
348
+ <LoadingButton variant="filled" onClick={handleConfirm} loading={loading} disabled={!canSubmit}>
349
+ {t("reset_password") || "Reset Password"}
350
+ </LoadingButton>
351
+ </DialogActions>
352
+ </Dialog>
255
353
  );
256
354
  }
257
355
 
@@ -142,7 +142,7 @@ Field: TextFieldBinding }
142
142
  },
143
143
  user_select: {
144
144
  key: "user_select",
145
- name: "UserIcon select",
145
+ name: "User select",
146
146
  description: "Select a user from the user management system. Store the user ID.",
147
147
  Icon: UserIcon,
148
148
  property: {
@@ -7,7 +7,7 @@ import { PreviewSize } from "../../types/components/PropertyPreviewProps";
7
7
  import { getPropertyInPath } from "../../util/property_utils";
8
8
  import { PropertyPreview } from "../../preview/PropertyPreview";
9
9
  import { SkeletonPropertyComponent } from "../../preview/property_previews/SkeletonPropertyComponent";
10
- import { useAuthController } from "@rebasepro/core";
10
+ import { useAuthController } from "@rebasepro/app";
11
11
  import { UserChip } from "./UserChip";
12
12
  import { HistoryEntryData } from "../../hooks";
13
13
  import { getValueInPath } from "@rebasepro/utils";
@@ -4,8 +4,8 @@ import { useRef, useEffect } from "react";
4
4
  import { cls, IconButton, Label, Tooltip, Typography } from "@rebasepro/ui";
5
5
  import { ErrorBoundary, HistoryIcon } from "@rebasepro/ui";
6
6
  import { EntityHistoryEntry } from "./EntityHistoryEntry";
7
- import { useSnackbarController, useAuthController } from "@rebasepro/core";
8
- import { ConfirmationDialog } from "@rebasepro/core";
7
+ import { useSnackbarController, useAuthController } from "@rebasepro/app";
8
+ import { ConfirmationDialog } from "@rebasepro/app";
9
9
  import { useState } from "react";
10
10
  import { useHistory } from "../../index";
11
11
 
@@ -72,7 +72,7 @@ export function EntityHistoryView<M extends Record<string, unknown>>({
72
72
 
73
73
  if (!entity) {
74
74
  return <div className="flex items-center justify-center h-full">
75
- <Label>HistoryIcon is only available for existing entities</Label>
75
+ <Label>History is only available for existing entities</Label>
76
76
  </div>;
77
77
  }
78
78
 
@@ -117,7 +117,7 @@ export function EntityHistoryView<M extends Record<string, unknown>>({
117
117
  <div className="flex flex-col gap-2 max-w-6xl mx-auto w-full">
118
118
 
119
119
  <Typography variant={"h5"} className={"mt-24 ml-4"}>
120
- HistoryIcon
120
+ History
121
121
  </Typography>
122
122
 
123
123
  {isLoading && entries.length === 0 && (
@@ -1,8 +1,8 @@
1
1
  import type { CollectionConfig } from "@rebasepro/types";
2
2
  import React, { useEffect, useState, useCallback } from "react";
3
3
  ;
4
- import { useApiConfig } from "@rebasepro/core";
5
- import { useAuthController } from "@rebasepro/core";
4
+ import { useApiConfig } from "@rebasepro/app";
5
+ import { useAuthController } from "@rebasepro/app";
6
6
  import { HistoryEntryData } from "../../hooks";
7
7
 
8
8
  function getRelativeTimeString(date: Date): string {
@@ -46,7 +46,7 @@ export * from "./DrawerNavigationGroup";
46
46
  export * from "./SideDialogs";
47
47
 
48
48
  export * from "./app/useApp";
49
- export * from "./RebaseCMS";
49
+ export * from "./RebaseAdmin";
50
50
  export * from "./RebaseShell";
51
51
 
52
52
  // Composable shell layers — each independently usable
@@ -1,7 +1,7 @@
1
1
 
2
2
  import React, { useCallback } from "react";
3
3
 
4
- import { useTranslation } from "@rebasepro/core";
4
+ import { useTranslation } from "@rebasepro/app";
5
5
  import { Entity, Properties } from "@rebasepro/types";
6
6
  import {
7
7
  BooleanSwitchWithLabel,
@@ -6,7 +6,7 @@ import {
6
6
  useCustomizationController,
7
7
  useData,
8
8
  useTranslation
9
- } from "@rebasepro/core";
9
+ } from "@rebasepro/app";
10
10
  import { useCMSContext } from "../../hooks";
11
11
  import { CollectionActionsProps, Entity, CollectionConfig, ExportConfig, RebaseContext, User } from "@rebasepro/types";
12
12
  import { getDefaultValuesFor } from "@rebasepro/common";
@@ -16,7 +16,7 @@ import {
16
16
  TextField,
17
17
  Typography
18
18
  } from "@rebasepro/ui";
19
- import { getIn, setIn } from "@rebasepro/formex";
19
+ import { getIn, setIn } from "@rebasepro/forms";
20
20
  import { ImportConfig } from "../types";
21
21
 
22
22
  export interface DataPropertyMappingProps {
@@ -1,6 +1,6 @@
1
1
  import { FileUpload, UploadIcon } from "@rebasepro/ui";
2
2
  import { convertFileToJson } from "../utils/file_to_json";
3
- import { useSnackbarController } from "@rebasepro/core";
3
+ import { useSnackbarController } from "@rebasepro/app";
4
4
 
5
5
  export function ImportFileUpload({ onDataAdded }: {
6
6
  onDataAdded: (data: object[], propertiesOrder?: string[]) => void
@@ -1,5 +1,5 @@
1
1
  import React from "react";
2
- import { useCustomizationController } from "@rebasepro/core";
2
+ import { useCustomizationController } from "@rebasepro/app";
3
3
  import { Property } from "@rebasepro/types";
4
4
  import {
5
5
  getFieldConfig,
@@ -1,4 +1,4 @@
1
- import { useData } from "@rebasepro/core";
1
+ import { useData } from "@rebasepro/app";
2
2
  import { Entity, CollectionConfig } from "@rebasepro/types";
3
3
  import { RebaseData } from "@rebasepro/types";
4
4
  import { Button, CenteredView, CircularProgress, Typography } from "@rebasepro/ui";
@@ -3,7 +3,7 @@ import {
3
3
  useAuthController,
4
4
  useCustomizationController,
5
5
  useSnackbarController
6
- } from "@rebasepro/core";
6
+ } from "@rebasepro/app";
7
7
  import { getPropertiesWithPropertiesOrder, getPropertyInPath } from "../../util";
8
8
  import { CollectionActionsProps, Properties, Property, User, CollectionConfig } from "@rebasepro/types";
9
9
  import {
@@ -29,7 +29,7 @@ import {
29
29
  Typography,
30
30
  UploadIcon
31
31
  } from "@rebasepro/ui";
32
- import { buildEntityPropertiesFromData } from "@rebasepro/schema-inference";
32
+ import { buildEntityPropertiesFromData } from "@rebasepro/inference";
33
33
  import { useImportConfig } from "../hooks";
34
34
  import { convertDataToEntity, getInferenceType } from "../utils";
35
35
  import { DataNewPropertiesMapping, ImportFileUpload, ImportSaveInProgress } from "../components";
@@ -2,8 +2,8 @@ import { getPropertyInPath } from "../../util";
2
2
  import { AuthController, Entity, CollectionConfig, EntityReference, CollectionRegistryController, Properties, Property, Vector } from "@rebasepro/types";
3
3
  import { isPropertyBuilder } from "@rebasepro/common";
4
4
  import { unflattenObject } from "./file_to_json";
5
- import { getIn } from "@rebasepro/formex";
6
- import { inferTypeFromValue } from "@rebasepro/schema-inference";
5
+ import { getIn } from "@rebasepro/forms";
6
+ import { inferTypeFromValue } from "@rebasepro/inference";
7
7
  import { mergeDeep } from "@rebasepro/utils";
8
8
 
9
9
  export function convertDataToEntity(authController: AuthController,
@@ -1,7 +1,7 @@
1
1
  // import {
2
2
  // type,
3
3
  // getPropertyInPath
4
- // } from "@rebasepro/core";
4
+ // } from "@rebasepro/app";
5
5
  import { Properties, Property } from "@rebasepro/types";
6
6
  // import { typeMapping } from "@rebasepro/types";
7
7
  //
@@ -3,7 +3,7 @@ import { useProseMirrorContext } from "../hooks/useProseMirrorContext";
3
3
  import { autoUpdate, computePosition, flip, offset, shift, type VirtualElement, type Placement } from "@floating-ui/dom";
4
4
  import { NodeSelection } from "prosemirror-state";
5
5
  import { TextField, defaultBorderMixin, Typography, cls } from "@rebasepro/ui";
6
- import { useTranslation } from "@rebasepro/core";
6
+ import { useTranslation } from "@rebasepro/app";
7
7
 
8
8
  export interface ImageBubbleProps {
9
9
  options?: { placement?: Placement; offset?: number };
@@ -10,7 +10,7 @@ import {
10
10
  type Placement
11
11
  } from "@floating-ui/dom";
12
12
  import { IconButton, Tooltip, defaultBorderMixin, cls } from "@rebasepro/ui";
13
- import { useTranslation } from "@rebasepro/core";
13
+ import { useTranslation } from "@rebasepro/app";
14
14
  import {
15
15
  addColumnBefore,
16
16
  addColumnAfter,
@@ -2,7 +2,7 @@
2
2
  import React, { useEffect, useState, useRef, useMemo } from "react";
3
3
  import { EditorState, Selection } from "prosemirror-state";
4
4
  import { cls, defaultBorderMixin, Separator, TextareaAutosize, useInjectStyles } from "@rebasepro/ui";
5
- import { useTranslation } from "@rebasepro/core";
5
+ import { useTranslation } from "@rebasepro/app";
6
6
  import { EditorBubble, ImageBubble, SlashCommandMenu, TableBubble, type JSONContent } from "./components";
7
7
  import { NodeSelector } from "./selectors/node-selector";
8
8
  import { LinkSelector } from "./selectors/link-selector";
@@ -1,6 +1,6 @@
1
1
  import { useEffect, useRef } from "react";
2
2
  import { Button, CheckIcon, cls, focusedDisabled, iconSize, Popover, TextField, Trash2Icon } from "@rebasepro/ui";
3
- import { useTranslation } from "@rebasepro/core";
3
+ import { useTranslation } from "@rebasepro/app";
4
4
  import { useProseMirrorContext } from "../hooks/useProseMirrorContext";
5
5
  import { getMarkAttributes, isMarkActive, setMark, unsetMark } from "../utils/prosemirror-utils";
6
6
  import { schema } from "../schema";
@@ -1,7 +1,7 @@
1
1
 
2
2
  import { EditorState, Transaction } from "prosemirror-state";
3
3
  import { EditorBubbleItem } from "../components";
4
- import { useTranslation } from "@rebasepro/core";
4
+ import { useTranslation } from "@rebasepro/app";
5
5
 
6
6
  import {
7
7
  Button,
@@ -10,13 +10,13 @@ import { ErrorBoundary } from "@rebasepro/ui";
10
10
  import { AlignLeftIcon, CheckIcon, LoaderIcon, PencilIcon, useDebouncedCallback } from "@rebasepro/ui";
11
11
  import { getDefaultValuesFor, isHidden, isReadOnly } from "@rebasepro/common";
12
12
 
13
- import { useCustomizationController } from "@rebasepro/core";
14
- import { getFormFieldKeys } from "@rebasepro/core";
13
+ import { useCustomizationController } from "@rebasepro/app";
14
+ import { getFormFieldKeys } from "@rebasepro/app";
15
15
  import { Alert, Button, Chip, cls, Dialog, DialogActions, DialogContent, DialogTitle, iconSize, paperMixin, Tooltip, Typography } from "@rebasepro/ui";
16
- import { Formex, FormexController, useCreateFormex } from "@rebasepro/formex";
16
+ import { Formex, FormexController, useCreateFormex } from "@rebasepro/forms";
17
17
 
18
18
  import { FormEntry, FormLayout, LabelWithIconAndTooltip, PropertyFieldBinding } from "../form";
19
- import { flattenKeys } from "@rebasepro/core";
19
+ import { flattenKeys } from "@rebasepro/app";
20
20
  import { ErrorFocus } from "./components/ErrorFocus";
21
21
  import { CustomFieldValidator, getEntitySchema } from "./validation";
22
22
  import { EntityFormActions } from "./EntityFormActions";
@@ -16,7 +16,7 @@ import {
16
16
  Tooltip,
17
17
  Typography
18
18
  } from "@rebasepro/ui";
19
- import { FormexController } from "@rebasepro/formex";
19
+ import { FormexController } from "@rebasepro/forms";
20
20
 
21
21
  export function EntityFormActions({
22
22
  path,
@@ -15,16 +15,16 @@ import {
15
15
  useSnackbarController,
16
16
  useTranslation,
17
17
  useSlot
18
- } from "@rebasepro/core";
19
- import { FormexController } from "@rebasepro/formex";
20
- import { useAnalyticsController } from "@rebasepro/core";
18
+ } from "@rebasepro/app";
19
+ import { FormexController } from "@rebasepro/forms";
20
+ import { useAnalyticsController } from "@rebasepro/app";
21
21
 
22
22
  import {
23
23
  getEntityFromCache,
24
24
  removeEntityFromCache,
25
25
  removeEntityFromMemoryCache,
26
26
  saveEntityToCache
27
- } from "@rebasepro/core";
27
+ } from "@rebasepro/app";
28
28
 
29
29
  import { useCollectionRegistryController, useSidePanel, useCMSContext } from "../index";
30
30
  import { EntityForm } from "./EntityForm";
@@ -4,15 +4,15 @@ import type { RebasePlugin, PluginFieldBuilderParams, Property } from "@rebasepr
4
4
  import React, { ComponentType, ReactElement, Suspense, useCallback, useRef } from "react";
5
5
  import { deepEqual as equal } from "fast-equals"
6
6
 
7
- import { resolveComponentRef } from "@rebasepro/core";
7
+ import { resolveComponentRef } from "@rebasepro/app";
8
8
 
9
- import { Field, FormexFieldProps, getIn } from "@rebasepro/formex";
9
+ import { Field, FormexFieldProps, getIn } from "@rebasepro/forms";
10
10
 
11
11
  ;
12
12
  import { ReadOnlyFieldBinding } from "./field_bindings/ReadOnlyFieldBinding";
13
13
 
14
14
  import { isHidden, isPropertyBuilder, isReadOnly, resolveProperty } from "@rebasepro/common";
15
- import { useAuthController, useCustomizationController } from "@rebasepro/core";
15
+ import { useAuthController, useCustomizationController } from "@rebasepro/app";
16
16
  import { Typography } from "@rebasepro/ui";
17
17
  import { getFieldConfig, getFieldId } from "../components/field_configs";
18
18
  import { ErrorBoundary } from "@rebasepro/ui";
@@ -1,5 +1,5 @@
1
1
  import React, { useEffect, useRef } from "react";
2
- import { useFormex } from "@rebasepro/formex";
2
+ import { useFormex } from "@rebasepro/forms";
3
3
 
4
4
  export const ErrorFocus = ({ containerRef }:
5
5
  {
@@ -18,9 +18,9 @@ import {
18
18
  Typography,
19
19
  XCircleIcon
20
20
  } from "@rebasepro/ui";
21
- import { FormexController } from "@rebasepro/formex";
22
- import { useSnackbarController, useTranslation } from "@rebasepro/core";
23
- import { flattenKeys, removeEntityFromCache } from "@rebasepro/core";
21
+ import { FormexController } from "@rebasepro/forms";
22
+ import { useSnackbarController, useTranslation } from "@rebasepro/app";
23
+ import { flattenKeys, removeEntityFromCache } from "@rebasepro/app";
24
24
  ;
25
25
  import { PropertyCollectionView } from "../../components/PropertyCollectionView";
26
26
  import { mergeDeep } from "@rebasepro/utils";
@@ -6,7 +6,7 @@ import { PropertyPreview } from "../../preview";
6
6
 
7
7
  import { cls, IconButton, paperMixin, Tooltip } from "@rebasepro/ui";
8
8
  import { ErrorBoundary, FileTextIcon, MinusIcon } from "@rebasepro/ui";
9
- import { useTranslation } from "@rebasepro/core";
9
+ import { useTranslation } from "@rebasepro/app";
10
10
 
11
11
  interface StorageItemPreviewProps {
12
12
  name: string;
@@ -1,8 +1,8 @@
1
1
  import React, { useCallback } from "react";
2
2
 
3
- import { useSnackbarController, useStorageSource } from "@rebasepro/core";
4
- import { StorageFieldItem } from "@rebasepro/core";
5
- import { ErrorView } from "@rebasepro/core";
3
+ import { useSnackbarController, useStorageSource } from "@rebasepro/app";
4
+ import { StorageFieldItem } from "@rebasepro/app";
5
+ import { ErrorView } from "@rebasepro/app";
6
6
  import type { StorageSource } from "@rebasepro/types";
7
7
  import { cls, paperMixin, Skeleton } from "@rebasepro/ui";
8
8