@rebasepro/plugin-data-enhancement 0.2.3 → 0.2.5

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 (117) hide show
  1. package/dist/admin/src/collection_editor/ConfigControllerProvider.d.ts +0 -5
  2. package/dist/admin/src/collection_editor/index.d.ts +0 -1
  3. package/dist/admin/src/collection_editor/types/collection_editor_controller.d.ts +0 -2
  4. package/dist/admin/src/collection_editor/ui/collection_editor/CollectionPropertiesEditorForm.d.ts +3 -3
  5. package/dist/admin/src/components/ArrayContainer.d.ts +2 -2
  6. package/dist/admin/src/components/DefaultAppBar.d.ts +18 -1
  7. package/dist/admin/src/components/DefaultDrawer.d.ts +51 -3
  8. package/dist/admin/src/components/EntityCollectionTable/fields/TableStorageUpload.d.ts +2 -2
  9. package/dist/admin/src/components/EntityCollectionTable/internal/EntityTableCell.d.ts +2 -2
  10. package/dist/admin/src/components/EntityCollectionTable/table_bindings.d.ts +4 -3
  11. package/dist/admin/src/components/EntityCollectionView/hooks/useKanbanDragAndDrop.d.ts +4 -3
  12. package/dist/admin/src/components/EntityEditView.d.ts +2 -1
  13. package/dist/admin/src/components/HomePage/HomePageDnD.d.ts +3 -3
  14. package/dist/admin/src/components/PropertyCollectionView.d.ts +1 -1
  15. package/dist/admin/src/components/PropertyIdCopyTooltip.d.ts +1 -1
  16. package/dist/admin/src/components/RebaseRouteDefs.d.ts +1 -1
  17. package/dist/admin/src/components/SelectableTable/SelectionStore.d.ts +4 -1
  18. package/dist/admin/src/components/SelectableTable/filters/BooleanFilterField.d.ts +2 -2
  19. package/dist/admin/src/components/SelectableTable/filters/DateTimeFilterField.d.ts +2 -2
  20. package/dist/admin/src/components/SelectableTable/filters/ReferenceFilterField.d.ts +2 -2
  21. package/dist/admin/src/components/SelectableTable/filters/StringNumberFilterField.d.ts +2 -2
  22. package/dist/admin/src/components/app/Drawer.d.ts +8 -1
  23. package/dist/admin/src/data_export/export/export.d.ts +3 -3
  24. package/dist/admin/src/editor/components/editor-bubble.d.ts +5 -1
  25. package/dist/admin/src/editor/components/image-bubble.d.ts +5 -1
  26. package/dist/admin/src/editor/components/index.d.ts +3 -3
  27. package/dist/admin/src/editor/components/table-bubble.d.ts +5 -1
  28. package/dist/admin/src/editor/nodeViews/ReactNodeView.d.ts +4 -1
  29. package/dist/admin/src/editor/utils/remove_classes.d.ts +1 -1
  30. package/dist/admin/src/form/EntityForm.d.ts +2 -2
  31. package/dist/admin/src/form/components/StorageUploadProgress.d.ts +2 -2
  32. package/dist/admin/src/form/field_bindings/MultiSelectFieldBinding.d.ts +1 -1
  33. package/dist/admin/src/form/field_bindings/StorageUploadFieldBinding.d.ts +1 -1
  34. package/dist/admin/src/form/validation.d.ts +3 -3
  35. package/dist/admin/src/hooks/navigation/useBuildNavigationStateController.d.ts +1 -1
  36. package/dist/admin/src/hooks/navigation/useResolvedCollections.d.ts +6 -0
  37. package/dist/admin/src/hooks/navigation/useResolvedViews.d.ts +3 -7
  38. package/dist/admin/src/index.d.ts +1 -3
  39. package/dist/admin/src/preview/components/UrlComponentPreview.d.ts +1 -0
  40. package/dist/admin/src/types/components/EntityFormActionsProps.d.ts +1 -1
  41. package/dist/admin/src/types/components/EntityFormProps.d.ts +2 -2
  42. package/dist/admin/src/types/fields.d.ts +1 -1
  43. package/dist/common/src/collections/default-collections.d.ts +9 -0
  44. package/dist/common/src/collections/index.d.ts +1 -0
  45. package/dist/common/src/util/permissions.d.ts +1 -0
  46. package/dist/core/src/components/LoginView/LoginView.d.ts +25 -1
  47. package/dist/core/src/components/common/types.d.ts +10 -7
  48. package/dist/core/src/components/common/useDebouncedData.d.ts +1 -1
  49. package/dist/core/src/core/RebaseProps.d.ts +13 -2
  50. package/dist/core/src/core/RebaseRouter.d.ts +1 -1
  51. package/dist/core/src/hooks/data/useCollectionFetch.d.ts +12 -1
  52. package/dist/core/src/hooks/index.d.ts +0 -1
  53. package/dist/core/src/util/entity_cache.d.ts +0 -5
  54. package/dist/core/src/util/index.d.ts +0 -2
  55. package/dist/core/src/util/useStorageUploadController.d.ts +2 -2
  56. package/dist/formex/src/utils.d.ts +2 -2
  57. package/dist/index.es.js +7 -4
  58. package/dist/index.es.js.map +1 -1
  59. package/dist/index.umd.js +7 -4
  60. package/dist/index.umd.js.map +1 -1
  61. package/dist/plugin-data-enhancement/src/api.d.ts +2 -2
  62. package/dist/plugin-data-enhancement/src/components/DataEnhancementControllerProvider.d.ts +1 -1
  63. package/dist/plugin-data-enhancement/src/index.d.ts +0 -1
  64. package/dist/plugin-data-enhancement/src/utils/suggestions.d.ts +1 -1
  65. package/dist/types/src/controllers/auth.d.ts +4 -26
  66. package/dist/types/src/controllers/client.d.ts +25 -43
  67. package/dist/types/src/controllers/collection_registry.d.ts +1 -1
  68. package/dist/types/src/controllers/data.d.ts +4 -0
  69. package/dist/types/src/controllers/data_driver.d.ts +23 -0
  70. package/dist/types/src/controllers/registry.d.ts +5 -4
  71. package/dist/types/src/rebase_context.d.ts +1 -1
  72. package/dist/types/src/types/auth_adapter.d.ts +5 -60
  73. package/dist/types/src/types/backend.d.ts +2 -2
  74. package/dist/types/src/types/backend_hooks.d.ts +2 -17
  75. package/dist/types/src/types/collections.d.ts +0 -4
  76. package/dist/types/src/types/component_ref.d.ts +1 -1
  77. package/dist/types/src/types/cron.d.ts +1 -1
  78. package/dist/types/src/types/entity_views.d.ts +1 -0
  79. package/dist/types/src/types/export_import.d.ts +1 -1
  80. package/dist/types/src/types/formex.d.ts +2 -2
  81. package/dist/types/src/types/properties.d.ts +9 -7
  82. package/dist/types/src/types/translations.d.ts +28 -12
  83. package/dist/types/src/types/user_management_delegate.d.ts +22 -57
  84. package/dist/types/src/users/index.d.ts +0 -1
  85. package/dist/types/src/users/user.d.ts +0 -1
  86. package/dist/ui/src/components/Button.d.ts +2 -2
  87. package/dist/ui/src/components/ErrorBoundary.d.ts +25 -3
  88. package/dist/ui/src/components/VirtualTable/VirtualTable.d.ts +1 -1
  89. package/dist/ui/src/components/VirtualTable/VirtualTableCell.d.ts +6 -6
  90. package/dist/ui/src/components/VirtualTable/VirtualTableHeader.d.ts +8 -8
  91. package/dist/ui/src/components/VirtualTable/VirtualTableHeaderRow.d.ts +1 -1
  92. package/dist/ui/src/components/VirtualTable/VirtualTableProps.d.ts +11 -11
  93. package/dist/ui/src/components/VirtualTable/VirtualTableRow.d.ts +1 -1
  94. package/dist/ui/src/components/VirtualTable/types.d.ts +9 -9
  95. package/dist/ui/src/hooks/useDebounceCallback.d.ts +1 -1
  96. package/dist/ui/src/util/debounce.d.ts +1 -1
  97. package/package.json +7 -7
  98. package/src/api.ts +4 -4
  99. package/src/components/DataEnhancementControllerProvider.tsx +10 -7
  100. package/src/index.ts +0 -1
  101. package/src/tests/strings_counter.test.ts +101 -0
  102. package/src/tests/suggestions.test.ts +53 -0
  103. package/src/tests/values.test.ts +83 -0
  104. package/src/utils/properties.ts +3 -3
  105. package/src/utils/suggestions.ts +1 -1
  106. package/dist/admin/src/collection_editor/types/config_permissions.d.ts +0 -19
  107. package/dist/admin/src/components/admin/RoleChip.d.ts +0 -4
  108. package/dist/admin/src/components/admin/RolesFilterSelect.d.ts +0 -2
  109. package/dist/admin/src/components/admin/RolesView.d.ts +0 -4
  110. package/dist/admin/src/components/admin/UserRolesSelectField.d.ts +0 -2
  111. package/dist/admin/src/components/admin/UsersView.d.ts +0 -4
  112. package/dist/core/src/hooks/useValidateAuthenticator.d.ts +0 -21
  113. package/dist/core/src/util/icon_synonyms.d.ts +0 -1
  114. package/dist/core/src/util/useTraceUpdate.d.ts +0 -2
  115. package/dist/plugin-data-enhancement/src/types/subscriptions_message_props.d.ts +0 -3
  116. package/dist/types/src/users/roles.d.ts +0 -22
  117. package/src/types/subscriptions_message_props.tsx +0 -1
@@ -2,7 +2,6 @@ import React from "react";
2
2
  import { User } from "@rebasepro/types";
3
3
  import { CollectionsConfigController } from "./types/config_controller";
4
4
  import { CollectionEditorController } from "./types/collection_editor_controller";
5
- import { CollectionEditorPermissionsBuilder } from "./types/config_permissions";
6
5
  import { CollectionInference } from "./types/collection_inference";
7
6
  import { CollectionGenerationCallback } from "./api/generateCollectionApi";
8
7
  export declare const ConfigControllerContext: React.Context<CollectionsConfigController>;
@@ -16,10 +15,6 @@ export interface ConfigControllerProviderProps {
16
15
  * Callback used to infer the schema from the data.
17
16
  */
18
17
  collectionInference?: CollectionInference;
19
- /**
20
- * Use this builder to define the permissions for the configuration per user.
21
- */
22
- configPermissions?: CollectionEditorPermissionsBuilder;
23
18
  extraView?: {
24
19
  View: React.ComponentType<{
25
20
  path: string;
@@ -4,7 +4,6 @@ export { useLocalCollectionsConfigController } from "./useLocalCollectionsConfig
4
4
  export { validateCollectionJson, type CollectionValidationError, type CollectionValidationResult } from "./validateCollectionJson";
5
5
  export type { CollectionsConfigController, DeleteCollectionParams, SaveCollectionParams, UpdateCollectionParams, CollectionsSetupInfo, UpdatePropertiesOrderParams, UpdateKanbanColumnsOrderParams } from "./types/config_controller";
6
6
  export type { CollectionEditorController } from "./types/collection_editor_controller";
7
- export type { CollectionEditorPermissions, CollectionEditorPermissionsBuilder } from "./types/config_permissions";
8
7
  export type { CollectionInference } from "./types/collection_inference";
9
8
  export { buildCollectionGenerationCallback, CollectionGenerationApiError, DEFAULT_COLLECTION_GENERATION_ENDPOINT } from "./api/generateCollectionApi";
10
9
  export type { CollectionGenerationCallback, GenerateCollectionRequest, GenerateCollectionResult, CollectionOperation, CollectionOperationType, BuildCollectionGenerationCallbackProps } from "./api/generateCollectionApi";
@@ -1,4 +1,3 @@
1
- import { CollectionEditorPermissionsBuilder } from "./config_permissions";
2
1
  import { CollectionsConfigController } from "./config_controller";
3
2
  import { Entity, EntityCollection, Property } from "@rebasepro/types";
4
3
  /**
@@ -54,6 +53,5 @@ export interface CollectionEditorController {
54
53
  * The config controller that this editor represents.
55
54
  */
56
55
  configController: CollectionsConfigController;
57
- configPermissions: CollectionEditorPermissionsBuilder;
58
56
  pathSuggestions: string[] | undefined;
59
57
  }
@@ -3,10 +3,10 @@ import { EntityCollection, PropertyConfig, User } from "@rebasepro/types";
3
3
  type CollectionEditorFormProps = {
4
4
  showErrors: boolean;
5
5
  isNewCollection: boolean;
6
- propertyErrorsRef?: React.MutableRefObject<any>;
7
- onPropertyError: (propertyKey: string, namespace: string | undefined, error?: Record<string, any>) => void;
6
+ propertyErrorsRef?: React.MutableRefObject<Record<string, unknown> | undefined>;
7
+ onPropertyError: (propertyKey: string, namespace: string | undefined, error?: Record<string, unknown>) => void;
8
8
  setDirty?: (dirty: boolean) => void;
9
- extraIcon: React.ReactNode | any;
9
+ extraIcon: React.ReactNode;
10
10
  getUser?: (uid: string) => User | null;
11
11
  getData?: () => Promise<object[]>;
12
12
  doCollectionInference?: (collection: EntityCollection) => Promise<Partial<EntityCollection> | null> | undefined;
@@ -26,7 +26,7 @@ export interface ArrayContainerProps<T> {
26
26
  type ArrayContainerItemProps = {
27
27
  nodeRef: (node: HTMLElement | null) => void;
28
28
  style: React.CSSProperties;
29
- dragHandleProps: any;
29
+ dragHandleProps: Record<string, unknown>;
30
30
  index: number;
31
31
  internalId: number;
32
32
  size?: "small" | "medium";
@@ -43,7 +43,7 @@ type ArrayContainerItemProps = {
43
43
  };
44
44
  export declare function ArrayContainerItem({ nodeRef, style, dragHandleProps, index, internalId, size, disabled, buildEntry, remove, copy, addInIndex, canAddElements, sortable, isDragging, storedProps, updateItemCustomProps }: ArrayContainerItemProps): import("react/jsx-runtime").JSX.Element;
45
45
  export declare function ArrayItemOptions({ dragHandleProps, direction, disabled, remove, index, copy, canAddElements, sortable, addInIndex }: {
46
- dragHandleProps: any;
46
+ dragHandleProps: Record<string, unknown>;
47
47
  direction?: "row" | "column";
48
48
  disabled: boolean;
49
49
  remove: (index: number) => void;
@@ -14,7 +14,24 @@ export type DefaultAppBarProps<ADDITIONAL_PROPS = object> = {
14
14
  */
15
15
  startAdornment?: React.ReactNode;
16
16
  dropDownActions?: React.ReactNode;
17
+ /**
18
+ * Whether to render the dark/light/system mode toggle in the app bar.
19
+ * Set to `false` when the drawer owns this action.
20
+ * @default true
21
+ */
17
22
  includeModeToggle?: boolean;
23
+ /**
24
+ * Whether to render the language switcher in the app bar.
25
+ * Set to `false` when the drawer owns this action.
26
+ * @default true
27
+ */
28
+ includeLanguageToggle?: boolean;
29
+ /**
30
+ * Whether to render the user avatar / menu in the app bar.
31
+ * Set to `false` when the drawer owns this action.
32
+ * @default true
33
+ */
34
+ includeUserMenu?: boolean;
18
35
  className?: string;
19
36
  style?: React.CSSProperties;
20
37
  logo?: string;
@@ -26,4 +43,4 @@ export type DefaultAppBarProps<ADDITIONAL_PROPS = object> = {
26
43
  *
27
44
 
28
45
  */
29
- export declare const DefaultAppBar: ({ title, endAdornment, startAdornment, dropDownActions, includeModeToggle, className, style, user: userProp, logo: logoProp }: DefaultAppBarProps) => import("react/jsx-runtime").JSX.Element;
46
+ export declare const DefaultAppBar: ({ title, endAdornment, startAdornment, dropDownActions, includeModeToggle, includeLanguageToggle, includeUserMenu, className, style, user: userProp, logo: logoProp }: DefaultAppBarProps) => import("react/jsx-runtime").JSX.Element;
@@ -1,15 +1,39 @@
1
1
  import React from "react";
2
2
  /**
3
- * Default drawer used in the CMS
3
+ * Default drawer used in the CMS.
4
+ *
5
+ * When no `children` are provided, renders the full CMS navigation
6
+ * (collection groups, mode switch, plugin slots).
7
+ *
8
+ * When `children` **are** provided, renders the shared drawer shell
9
+ * (logo, scrollable area, footer actions, collapse toggle) with the
10
+ * custom content injected in the scrollable area. This lets consumers
11
+ * like the SaaS dashboard reuse the identical structural layout while
12
+ * supplying their own navigation items.
13
+ *
4
14
  * @group Core
5
15
  */
6
- export declare function DefaultDrawer({ title, logo, logoDestination, className, style }: {
16
+ export declare function DefaultDrawer({ title, logo, logoDestination, children, footerActions, className, style }: {
7
17
  title?: React.ReactNode;
8
18
  logo?: string;
9
19
  logoDestination?: string;
20
+ /**
21
+ * Custom navigation content for the drawer.
22
+ * When provided, replaces the default CMS navigation (collection groups,
23
+ * mode switch, slots). The shared shell (logo, scroll area, footer
24
+ * actions, collapse toggle) is still rendered around it.
25
+ */
26
+ children?: React.ReactNode;
27
+ /**
28
+ * Custom content for the drawer footer actions area (language, theme, user menu).
29
+ * - `undefined` — renders the default `DrawerFooterActions`.
30
+ * - `null` — renders nothing (hides the footer actions).
31
+ * - `ReactNode` — renders the provided custom content.
32
+ */
33
+ footerActions?: React.ReactNode | null;
10
34
  className?: string;
11
35
  style?: React.CSSProperties;
12
- }): import("react/jsx-runtime").JSX.Element | null;
36
+ }): import("react/jsx-runtime").JSX.Element;
13
37
  export declare function DrawerLogo({ logo, title, logoDestination, drawerOpen, drawerHovered }: {
14
38
  logo?: string;
15
39
  title?: React.ReactNode;
@@ -27,3 +51,27 @@ export declare function DrawerToggle({ drawerOpen, drawerHovered, openDrawer, cl
27
51
  openDrawer: () => void;
28
52
  closeDrawer: () => void;
29
53
  }): import("react/jsx-runtime").JSX.Element;
54
+ /**
55
+ * Footer actions rendered at the bottom of the drawer, above the collapse/expand toggle.
56
+ * Replaces the app bar icons (language, theme, user avatar) with a drawer-native layout
57
+ * that adapts between collapsed (icons only) and expanded (full labels + user bar) states.
58
+ *
59
+ * @group Core
60
+ */
61
+ export declare function DrawerFooterActions({ drawerOpen, drawerHovered,
62
+ /**
63
+ * Custom content to render inside the user dropdown menu.
64
+ * When provided, these items are appended after the user info header
65
+ * and before the default Sign Out item.
66
+ */
67
+ dropDownActions,
68
+ /**
69
+ * Override the user object displayed in the footer.
70
+ * When omitted, falls back to `authController.user`.
71
+ */
72
+ user: userProp }: {
73
+ drawerOpen: boolean;
74
+ drawerHovered: boolean;
75
+ dropDownActions?: React.ReactNode;
76
+ user?: import("@rebasepro/types").User;
77
+ }): import("react/jsx-runtime").JSX.Element;
@@ -18,7 +18,7 @@ export declare function TableStorageUpload(props: {
18
18
  selected: boolean;
19
19
  focused: boolean;
20
20
  property: StringProperty | ArrayProperty;
21
- entity: Entity<any>;
21
+ entity: Entity<Record<string, unknown>>;
22
22
  path: string;
23
23
  previewSize: PreviewSize;
24
24
  openPopup?: (cellRect?: DOMRect) => void;
@@ -29,7 +29,7 @@ interface TableStorageItemPreviewProps {
29
29
  property: StringProperty;
30
30
  value: string;
31
31
  size: PreviewSize;
32
- entity: Entity<any>;
32
+ entity: Entity<Record<string, unknown>>;
33
33
  }
34
34
  export declare function TableStorageItemPreview({ propertyKey, property, value, size, entity }: TableStorageItemPreviewProps): import("react/jsx-runtime").JSX.Element;
35
35
  export {};
@@ -6,7 +6,7 @@ interface EntityTableCellProps {
6
6
  /**
7
7
  * The value is used only to check changes and force re-renders
8
8
  */
9
- value?: any;
9
+ value?: unknown;
10
10
  disabled: boolean;
11
11
  savedTimestamp?: number;
12
12
  error?: Error;
@@ -23,7 +23,7 @@ interface EntityTableCellProps {
23
23
  onSelect?: (cellRect: DOMRect | undefined) => void;
24
24
  sortableNodeRef?: (node: HTMLElement | null) => void;
25
25
  sortableStyle?: React.CSSProperties;
26
- sortableAttributes?: Record<string, any>;
26
+ sortableAttributes?: Record<string, string | number | undefined>;
27
27
  isDragging?: boolean;
28
28
  isDraggable?: boolean;
29
29
  frozen?: boolean;
@@ -1,6 +1,7 @@
1
1
  import React from "react";
2
2
  import { Entity, Property } from "@rebasepro/types";
3
- export interface TableFieldBindingProps<T = any> {
3
+ import { TableSize } from "@rebasepro/core";
4
+ export interface TableFieldBindingProps<T = unknown> {
4
5
  propertyKey: string;
5
6
  property: Property;
6
7
  internalValue: T;
@@ -9,9 +10,9 @@ export interface TableFieldBindingProps<T = any> {
9
10
  validationError?: Error;
10
11
  disabled: boolean;
11
12
  selected: boolean;
12
- size: any;
13
+ size: TableSize;
13
14
  align: "left" | "center" | "right";
14
- entity: Entity<any>;
15
+ entity: Entity<Record<string, unknown>>;
15
16
  path: string;
16
17
  openPopup?: (cellRect: DOMRect | undefined) => void;
17
18
  }
@@ -1,5 +1,6 @@
1
- import { EntityCollection, RebaseData, RebaseContext } from "@rebasepro/types";
1
+ import { EntityCollection, RebaseData, RebaseContext, AnalyticsController } from "@rebasepro/types";
2
2
  import { BoardItem } from "../board_types";
3
+ import { BoardDataController } from "../useBoardDataController";
3
4
  export interface UseKanbanDragAndDropParams<M extends Record<string, unknown>> {
4
5
  collection: EntityCollection<M>;
5
6
  fullPath: string;
@@ -7,8 +8,8 @@ export interface UseKanbanDragAndDropParams<M extends Record<string, unknown>> {
7
8
  orderProperty?: string;
8
9
  dataClient: RebaseData;
9
10
  context: RebaseContext;
10
- boardDataController: any;
11
- analyticsController: any;
11
+ boardDataController: BoardDataController<M>;
12
+ analyticsController: AnalyticsController;
12
13
  }
13
14
  export declare function useKanbanDragAndDrop<M extends Record<string, unknown>>({ collection, fullPath, columnProperty, orderProperty, dataClient, context, boardDataController, analyticsController }: UseKanbanDragAndDropParams<M>): {
14
15
  handleItemsReorder: (items: BoardItem<M>[], moveInfo?: {
@@ -1,4 +1,5 @@
1
1
  import type { EntityCollection } from "@rebasepro/types";
2
+ import React from "react";
2
3
  import { Entity, EntityStatus } from "@rebasepro/types";
3
4
  import type { EntityFormProps, OnUpdateParams } from "../types/components/EntityFormProps";
4
5
  export declare const MAIN_TAB_VALUE = "__main_##Q$SC^#S6";
@@ -33,7 +34,7 @@ export interface EntityEditViewProps<M extends Record<string, unknown> = Record<
33
34
  onTabChange?: (props: OnTabChangeParams<M>) => void;
34
35
  navigateBack?: () => void;
35
36
  layout?: "side_panel" | "full_screen" | "split" | "dialog";
36
- barActions?: (params: BarActionsParams) => any;
37
+ barActions?: (params: BarActionsParams) => React.ReactNode;
37
38
  formProps?: Partial<EntityFormProps<M>>;
38
39
  /**
39
40
  * Pre-populate the form with these values when creating a new entity.
@@ -1,6 +1,6 @@
1
1
  import type { NavigationEntry } from "@rebasepro/types";
2
2
  import React from "react";
3
- import { Active, CollisionDetection, DropAnimation, UniqueIdentifier } from "@dnd-kit/core";
3
+ import { Active, Over, CollisionDetection, DropAnimation, UniqueIdentifier } from "@dnd-kit/core";
4
4
  export declare function SortableNavigationCard({ entry, onClick }: {
5
5
  entry: NavigationEntry;
6
6
  onClick?: () => void;
@@ -47,11 +47,11 @@ export declare function useHomePageDnd({ items, setItems, disabled, onCardMovedB
47
47
  }) => void;
48
48
  onDragOver: ({ active, over }: {
49
49
  active: Active;
50
- over: any;
50
+ over: Over | null;
51
51
  }) => void;
52
52
  onDragEnd: ({ active, over }: {
53
53
  active: Active;
54
- over: any;
54
+ over: Over | null;
55
55
  }) => void;
56
56
  onDragCancel: () => void;
57
57
  dropAnimation: DropAnimation;
@@ -15,7 +15,7 @@ export declare function buildPropertyLabelAndGetProperty(properties: Properties,
15
15
  * - Leaf or Array-of-Primitives -> single row with label and value
16
16
  */
17
17
  export declare const PropertyCollectionView: ({ data, properties, baseKey, suppressHeader, size }: {
18
- data: any;
18
+ data: unknown;
19
19
  properties: Properties;
20
20
  baseKey?: string;
21
21
  suppressHeader?: boolean;
@@ -1,7 +1,7 @@
1
1
  export declare function PropertyIdCopyTooltip({ propertyKey, className, children }: {
2
2
  propertyKey: string;
3
3
  className?: string;
4
- children: any;
4
+ children: React.ReactNode;
5
5
  }): import("react/jsx-runtime").JSX.Element;
6
6
  export declare function PropertyIdCopyTooltipContent({ propertyKey }: {
7
7
  propertyKey: string;
@@ -13,7 +13,7 @@ export interface RebaseRouteDefsProps {
13
13
  * Route definitions for the CMS.
14
14
  *
15
15
  * Defines all standard routes: home, studio home, collection view,
16
- * settings, users, roles, debug, custom views, and a catch-all 404.
16
+ * settings, debug, custom views, and a catch-all 404.
17
17
  *
18
18
  * **Independently usable**: Use this when you want Rebase routes
19
19
  * inside your own layout/navigation setup.
@@ -23,4 +23,7 @@ export type SelectionStore = ReturnType<typeof createSelectionStore>;
23
23
  * whether THIS cell is selected. Only re-renders when the cell's
24
24
  * `selected` boolean actually changes (not on every store update).
25
25
  */
26
- export declare function useCellSelected(store: SelectionStore, propertyKey: string, entityPath: string, entityId: string | number): boolean;
26
+ export declare function useCellSelected(store: {
27
+ getSnapshot: () => SelectedCellProps<any> | undefined;
28
+ subscribe: (listener: () => void) => () => void;
29
+ }, propertyKey: string, entityPath: string, entityId: string | number): boolean;
@@ -1,8 +1,8 @@
1
1
  import { VirtualTableWhereFilterOp } from "@rebasepro/ui";
2
2
  interface BooleanFieldProps {
3
3
  name: string;
4
- value?: [op: VirtualTableWhereFilterOp, fieldValue: any];
5
- setValue: (value?: [op: VirtualTableWhereFilterOp, newValue: any]) => void;
4
+ value?: [op: VirtualTableWhereFilterOp, fieldValue: unknown];
5
+ setValue: (value?: [op: VirtualTableWhereFilterOp, newValue: unknown]) => void;
6
6
  title?: string;
7
7
  }
8
8
  export declare function BooleanFilterField({ name, title, value, setValue }: BooleanFieldProps): import("react/jsx-runtime").JSX.Element;
@@ -2,8 +2,8 @@ import { VirtualTableWhereFilterOp } from "@rebasepro/ui";
2
2
  interface DateTimeFilterFieldProps {
3
3
  name: string;
4
4
  mode?: "date" | "date_time";
5
- value?: [op: VirtualTableWhereFilterOp, fieldValue: any];
6
- setValue: (value?: [op: VirtualTableWhereFilterOp, newValue: any]) => void;
5
+ value?: [op: VirtualTableWhereFilterOp, fieldValue: unknown];
6
+ setValue: (value?: [op: VirtualTableWhereFilterOp, newValue: unknown]) => void;
7
7
  isArray?: boolean;
8
8
  title?: string;
9
9
  timezone?: string;
@@ -1,8 +1,8 @@
1
1
  import { VirtualTableWhereFilterOp } from "@rebasepro/ui";
2
2
  interface ReferenceFilterFieldProps {
3
3
  name: string;
4
- value?: [op: VirtualTableWhereFilterOp, fieldValue: any];
5
- setValue: (filterValue?: [VirtualTableWhereFilterOp, any]) => void;
4
+ value?: [op: VirtualTableWhereFilterOp, fieldValue: unknown];
5
+ setValue: (filterValue?: [VirtualTableWhereFilterOp, unknown]) => void;
6
6
  isArray?: boolean;
7
7
  path?: string;
8
8
  title?: string;
@@ -3,8 +3,8 @@ import { EnumValueConfig } from "@rebasepro/types";
3
3
  interface StringNumberFilterFieldProps {
4
4
  name: string;
5
5
  type: "string" | "number";
6
- value?: [op: VirtualTableWhereFilterOp, fieldValue: any];
7
- setValue: (value?: [op: VirtualTableWhereFilterOp, newValue: any]) => void;
6
+ value?: [op: VirtualTableWhereFilterOp, fieldValue: unknown];
7
+ setValue: (value?: [op: VirtualTableWhereFilterOp, newValue: unknown]) => void;
8
8
  isArray?: boolean;
9
9
  enumValues?: EnumValueConfig[];
10
10
  title?: string;
@@ -6,11 +6,18 @@
6
6
  * For custom drawers, you can use the {@link useApp} to open and close the drawer.
7
7
  *
8
8
  */
9
- export declare function Drawer({ children, title, logo, logoDestination, className, style }: {
9
+ export declare function Drawer({ children, title, logo, logoDestination, footerActions, className, style }: {
10
10
  children?: React.ReactNode;
11
11
  title?: React.ReactNode;
12
12
  logo?: string;
13
13
  logoDestination?: string;
14
+ /**
15
+ * Custom content for the drawer footer actions area (language, theme, user menu).
16
+ * - `undefined` — renders the default `DrawerFooterActions`.
17
+ * - `null` — renders nothing (hides the footer actions).
18
+ * - `ReactNode` — renders the provided custom content.
19
+ */
20
+ footerActions?: React.ReactNode | null;
14
21
  className?: string;
15
22
  style?: React.CSSProperties;
16
23
  }): import("react/jsx-runtime").JSX.Element;
@@ -5,7 +5,7 @@ interface Header {
5
5
  }
6
6
  export interface DownloadEntitiesExportParams<M extends Record<string, unknown>> {
7
7
  data: Entity<M>[];
8
- additionalData: Record<string, any>[] | undefined;
8
+ additionalData: Record<string, unknown>[] | undefined;
9
9
  properties: Properties;
10
10
  propertiesOrder: string[] | undefined;
11
11
  name: string;
@@ -15,8 +15,8 @@ export interface DownloadEntitiesExportParams<M extends Record<string, unknown>>
15
15
  dateExportType: "timestamp" | "string";
16
16
  }
17
17
  export declare function downloadEntitiesExport<M extends Record<string, unknown>>({ data, additionalData, properties, propertiesOrder, name, flattenArrays, additionalHeaders, exportType, dateExportType }: DownloadEntitiesExportParams<M>): void;
18
- export declare function getEntityCSVExportableData(data: Entity<any>[], additionalData: Record<string, any>[] | undefined, properties: Properties, headers: Header[], dateExportType: "timestamp" | "string"): unknown[][];
19
- export declare function getEntityJsonExportableData(data: Entity<any>[], additionalData: Record<string, any>[] | undefined, properties: Properties, dateExportType: "timestamp" | "string"): any[];
18
+ export declare function getEntityCSVExportableData(data: Entity<Record<string, unknown>>[], additionalData: Record<string, unknown>[] | undefined, properties: Properties, headers: Header[], dateExportType: "timestamp" | "string"): unknown[][];
19
+ export declare function getEntityJsonExportableData(data: Entity<Record<string, unknown>>[], additionalData: Record<string, unknown>[] | undefined, properties: Properties, dateExportType: "timestamp" | "string"): Record<string, unknown>[];
20
20
  export declare function downloadBlob(content: BlobPart[], filename: string, contentType: string): void;
21
21
  export declare function downloadDataAsCsv(data: object[], name: string): void;
22
22
  export {};
@@ -1,7 +1,11 @@
1
1
  import { type ReactNode } from "react";
2
+ import { type Placement } from "@floating-ui/dom";
2
3
  export interface EditorBubbleProps {
3
4
  children: ReactNode;
4
- options?: any;
5
+ options?: {
6
+ placement?: Placement;
7
+ offset?: number;
8
+ };
5
9
  className?: string;
6
10
  }
7
11
  export declare const EditorBubble: import("react").ForwardRefExoticComponent<EditorBubbleProps & import("react").RefAttributes<HTMLDivElement>>;
@@ -1,5 +1,9 @@
1
+ import { type Placement } from "@floating-ui/dom";
1
2
  export interface ImageBubbleProps {
2
- options?: any;
3
+ options?: {
4
+ placement?: Placement;
5
+ offset?: number;
6
+ };
3
7
  className?: string;
4
8
  }
5
9
  export declare const ImageBubble: import("react").ForwardRefExoticComponent<ImageBubbleProps & import("react").RefAttributes<HTMLDivElement>>;
@@ -5,12 +5,12 @@ export { ImageBubble } from "./image-bubble";
5
5
  export { TableBubble } from "./table-bubble";
6
6
  export type JSONContent = {
7
7
  type?: string;
8
- attrs?: Record<string, any>;
8
+ attrs?: Record<string, unknown>;
9
9
  content?: JSONContent[];
10
10
  marks?: {
11
11
  type: string;
12
- attrs?: Record<string, any>;
12
+ attrs?: Record<string, unknown>;
13
13
  }[];
14
14
  text?: string;
15
- [key: string]: any;
15
+ [key: string]: unknown;
16
16
  };
@@ -1,5 +1,9 @@
1
+ import { type Placement } from "@floating-ui/dom";
1
2
  export interface TableBubbleProps {
2
- options?: any;
3
+ options?: {
4
+ placement?: Placement;
5
+ offset?: number;
6
+ };
3
7
  className?: string;
4
8
  }
5
9
  export declare const TableBubble: import("react").ForwardRefExoticComponent<TableBubbleProps & import("react").RefAttributes<HTMLDivElement>>;
@@ -25,5 +25,8 @@ export declare class ReactNodeView implements NodeView {
25
25
  private render;
26
26
  update(node: ProseMirrorNode): boolean;
27
27
  destroy(): void;
28
- ignoreMutation(mutation: any): boolean;
28
+ ignoreMutation(mutation: MutationRecord | {
29
+ type: "selection";
30
+ target: Node;
31
+ }): boolean;
29
32
  }
@@ -1 +1 @@
1
- export declare function removeClassesFromJson(jsonObj: any): any;
1
+ export declare function removeClassesFromJson(jsonObj: unknown): unknown;
@@ -3,8 +3,8 @@ import type { PropertyConfig } from "@rebasepro/types";
3
3
  import { AuthController, Entity, EntityValues } from "@rebasepro/types";
4
4
  import type { EntityFormProps } from "../types/components/EntityFormProps";
5
5
  import { z } from "zod";
6
- export declare function extractTouchedValues(values: any, touched: Record<string, boolean>): Record<string, any>;
6
+ export declare function extractTouchedValues(values: unknown, touched: Record<string, boolean>): Record<string, unknown>;
7
7
  export declare function getChanges<T extends object>(source: Partial<T>, comparison: Partial<T>): Partial<T>;
8
8
  export declare function EntityForm<M extends Record<string, unknown>>({ path, entityId: entityIdProp, collection, onValuesModified, onIdChange, onSaved, entity, initialDirtyValues, onFormContextReady, forceActionsAtTheBottom, initialStatus, className, onStatusChange, onEntityChange, openEntityMode, formex: formexProp, disabled: disabledProp, Builder, EntityFormActionsComponent, showDefaultActions, showEntityPath, navigateBack: navigateBackProp, children }: EntityFormProps<M>): import("react/jsx-runtime").JSX.Element;
9
9
  export declare function getInitialEntityValues<M extends Record<string, unknown>>(authController: AuthController, collection: EntityCollection, path: string, status: "new" | "existing" | "copy", entity: Entity<M> | undefined, propertyConfigs?: Record<string, PropertyConfig>): Partial<EntityValues<M>>;
10
- export declare function zodToFormErrors(zodError: z.ZodError): Record<string, any>;
10
+ export declare function zodToFormErrors(zodError: z.ZodError): Record<string, string>;
@@ -1,9 +1,9 @@
1
1
  import { StorageFieldItem } from "@rebasepro/core";
2
2
  export interface StorageUploadItemProps {
3
3
  storagePath: string;
4
- metadata?: any;
4
+ metadata?: Record<string, unknown>;
5
5
  entry: StorageFieldItem;
6
- onFileUploadComplete: (value: string, entry: StorageFieldItem, metadata?: any, uploadedUrl?: string) => Promise<void>;
6
+ onFileUploadComplete: (value: string, entry: StorageFieldItem, metadata?: Record<string, unknown>, uploadedUrl?: string) => Promise<void>;
7
7
  imageSize: number;
8
8
  simple: boolean;
9
9
  }
@@ -7,4 +7,4 @@ import type { ArrayProperty } from "@rebasepro/types";
7
7
  * and tables to the specified properties.
8
8
  * @group Form fields
9
9
  */
10
- export declare function MultiSelectFieldBinding({ propertyKey, value, setValue, error, showError, disabled, property, includeDescription, size, autoFocus }: FieldProps<ArrayProperty, any, any>): import("react/jsx-runtime").JSX.Element;
10
+ export declare function MultiSelectFieldBinding({ propertyKey, value, setValue, error, showError, disabled, property, includeDescription, size, autoFocus }: FieldProps<ArrayProperty, unknown, Record<string, unknown>>): import("react/jsx-runtime").JSX.Element;
@@ -15,7 +15,7 @@ export interface StorageUploadProps {
15
15
  storage: StorageConfig;
16
16
  onFilesAdded: (acceptedFiles: File[]) => Promise<void>;
17
17
  storagePathBuilder: (file: File) => string;
18
- onFileUploadComplete: (uploadedPath: string, entry: StorageFieldItem, fileMetadata?: any) => Promise<void>;
18
+ onFileUploadComplete: (uploadedPath: string, entry: StorageFieldItem, fileMetadata?: Record<string, unknown>) => Promise<void>;
19
19
  }
20
20
  export declare function StorageUpload({ property, name, value, // This is internalValue from useStorageUploadController
21
21
  setInternalValue, onChange, multipleFilesSupported, onFileUploadComplete, disabled, onFilesAdded, autoFocus, storage, storagePathBuilder }: StorageUploadProps): import("react/jsx-runtime").JSX.Element;
@@ -3,7 +3,7 @@ import type { ArrayProperty, MapProperty, Property } from "@rebasepro/types";
3
3
  import { z, ZodTypeAny } from "zod";
4
4
  export type CustomFieldValidator = (props: {
5
5
  name: string;
6
- value: any;
6
+ value: unknown;
7
7
  property: Property;
8
8
  entityId?: string | number;
9
9
  parentProperty?: MapProperty | ArrayProperty;
@@ -13,9 +13,9 @@ interface PropertyContext<P extends Property> {
13
13
  parentProperty?: MapProperty | ArrayProperty;
14
14
  entityId?: string | number;
15
15
  customFieldValidator?: CustomFieldValidator;
16
- name?: any;
16
+ name?: string;
17
17
  }
18
- export declare function getEntitySchema<M extends Record<string, unknown>>(entityId: string | number | undefined, properties: Properties, customFieldValidator?: CustomFieldValidator): z.ZodObject<any>;
18
+ export declare function getEntitySchema<M extends Record<string, unknown>>(entityId: string | number | undefined, properties: Properties, customFieldValidator?: CustomFieldValidator): z.ZodObject<Record<string, ZodTypeAny>>;
19
19
  export declare function mapPropertyToZod(propertyContext: PropertyContext<Property>): ZodTypeAny;
20
20
  export declare function getZodMapObjectSchema({ property, entityId, customFieldValidator, name }: PropertyContext<MapProperty>): ZodTypeAny;
21
21
  export {};
@@ -26,7 +26,7 @@ export type BuildNavigationStateProps<EC extends EntityCollection, USER extends
26
26
  * NavigationStateController. This is a thin composition of three focused hooks:
27
27
  *
28
28
  * - useResolvedCollections: resolves collection props and registers with CollectionRegistry
29
- * - useResolvedViews: resolves view/admin view props and injects Users/Roles views
29
+ * - useResolvedViews: resolves view/admin view props
30
30
  * - useTopLevelNavigation: computes the NavigationResult from resolved data
31
31
  *
32
32
  * The NavigationStateController type is preserved as a public API.
@@ -2,6 +2,7 @@ import type { EntityCollection, RebasePlugin } from "@rebasepro/types";
2
2
  import { AuthController, CollectionRegistryController, RebaseData, User } from "@rebasepro/types";
3
3
  import type { EntityCollectionsBuilder } from "@rebasepro/types";
4
4
  import { CollectionRegistry } from "@rebasepro/common";
5
+ import { UserManagementDelegate } from "@rebasepro/types";
5
6
  export type UseResolvedCollectionsProps<EC extends EntityCollection, USER extends User> = {
6
7
  authController: AuthController<USER>;
7
8
  collections?: EC[] | EntityCollectionsBuilder<EC>;
@@ -11,6 +12,7 @@ export type UseResolvedCollectionsProps<EC extends EntityCollection, USER extend
11
12
  collectionRegistryController: CollectionRegistryController<EC> & {
12
13
  collectionRegistryRef: React.MutableRefObject<CollectionRegistry>;
13
14
  };
15
+ userManagement?: UserManagementDelegate<USER>;
14
16
  };
15
17
  export type UseResolvedCollectionsResult = {
16
18
  collections: EntityCollection[];
@@ -22,6 +24,10 @@ export type UseResolvedCollectionsResult = {
22
24
  * Hook that resolves collection props (which may be async builders or arrays)
23
25
  * into concrete EntityCollection[], and registers them with the CollectionRegistry.
24
26
  *
27
+ * When userManagement is provided, the default users collection is always
28
+ * prepended. Developer collections override via generic slug-based dedup
29
+ * (Map keyed by slug, last-write-wins). No hardcoded string checks.
30
+ *
25
31
  * Uses refs for potentially-unstable dependencies (driver, authController,
26
32
  * plugins) to avoid re-triggering effects when their object identity changes.
27
33
  */
@@ -1,6 +1,5 @@
1
- import type { AppView, AppViewsBuilder, EffectiveRoleController, EntityCollection, RebasePlugin } from "@rebasepro/types";
2
- import { AuthController, RebaseData, User } from "@rebasepro/types";
3
- import { UserManagementDelegate } from "@rebasepro/types";
1
+ import type { AppView, AppViewsBuilder, EffectiveRoleController, RebasePlugin } from "@rebasepro/types";
2
+ import type { AuthController, RebaseData, User } from "@rebasepro/types";
4
3
  export type UseResolvedViewsProps<USER extends User> = {
5
4
  authController: AuthController<USER>;
6
5
  views?: AppView[] | AppViewsBuilder;
@@ -9,8 +8,6 @@ export type UseResolvedViewsProps<USER extends User> = {
9
8
  plugins?: RebasePlugin[];
10
9
  adminMode?: "content" | "studio" | "settings";
11
10
  effectiveRoleController?: EffectiveRoleController;
12
- userManagement?: UserManagementDelegate<USER>;
13
- collections?: EntityCollection[];
14
11
  };
15
12
  export type UseResolvedViewsResult = {
16
13
  views: AppView[] | undefined;
@@ -21,8 +18,7 @@ export type UseResolvedViewsResult = {
21
18
  };
22
19
  /**
23
20
  * Hook that resolves view and admin view props (which may be async builders or arrays)
24
- * into concrete AppView[]. Also injects Users/Roles admin views when userManagement
25
- * is provided.
21
+ * into concrete AppView[].
26
22
  *
27
23
  * Uses refs for potentially-unstable dependencies (driver, authController,
28
24
  * plugins) to avoid re-triggering effects when their object identity changes.