@ximatai/muyun-web-app 0.26.5 → 0.26.7

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 (123) hide show
  1. package/dist/{EmployeeDetailWorkspaceView-rm9ujeiQ.js → EmployeeDetailWorkspaceView-DYJLlkSz.js} +1 -1
  2. package/dist/EmployeeManagementView-taxWUa7g.js +1778 -0
  3. package/dist/{MetadataOrchestrationView-DaPNQML7.js → MetadataOrchestrationView-B-CPudJl.js} +151 -151
  4. package/dist/ModuleActionManagementView-CmVj0e0C.js +597 -0
  5. package/dist/{RoleAuthorizationView-qQvn7M75.js → RoleAuthorizationView-q_6CsBYq.js} +194 -194
  6. package/dist/{RoleDetailWorkspaceView-C-vaKeZM.js → RoleDetailWorkspaceView-DmJlJgAj.js} +1 -1
  7. package/dist/{RoleManagementView-C3nxfub2.js → RoleManagementView-HCa9rH0f.js} +466 -466
  8. package/dist/{SystemUserDetailWorkspaceView-FIbfff00.js → SystemUserDetailWorkspaceView-U6Ij0US1.js} +1 -1
  9. package/dist/SystemUserManagementView-C1CkKivH.js +758 -0
  10. package/dist/{UserDetailWorkspaceView-M--ndn6x.js → UserDetailWorkspaceView-OPYvD6mH.js} +1 -1
  11. package/dist/{UserManagementView-MSXf4fno.js → UserManagementView-gbCL9SnC.js} +226 -226
  12. package/dist/index.css +1 -1
  13. package/dist/index.js +3309 -2288
  14. package/dist/pageRealtime-CzJlr9hs.js +225 -0
  15. package/dist/{platform-components-_3KlZZf5.js → platform-components-DKKWbNrz.js} +4196 -1790
  16. package/dist/types/app/CurrentUserProfileDialog.vue.d.ts +33 -0
  17. package/dist/types/app/LoginView.vue.d.ts +4 -1
  18. package/dist/types/app/ThemeSkinPreferencesDialog.vue.d.ts +20 -0
  19. package/dist/types/app/lockedTabPreference.d.ts +6 -0
  20. package/dist/types/app/themeSkinPreference.d.ts +11 -0
  21. package/dist/types/app/workbenchRouteSync.d.ts +13 -0
  22. package/dist/types/app/workbenchStartup.d.ts +14 -1
  23. package/dist/types/consumer/AppWorkbenchShell.vue.d.ts +43 -0
  24. package/dist/types/consumer/index.d.ts +24 -1
  25. package/dist/types/consumer/userPreferencePersistence.d.ts +7 -0
  26. package/dist/types/consumer/workbenchNavigation.d.ts +8 -0
  27. package/dist/types/dynamic-page-runtime/DynamicModuleHost.vue.d.ts +8 -1
  28. package/dist/types/dynamic-page-runtime/index.d.ts +5 -0
  29. package/dist/types/dynamic-page-runtime/modulePageEnhancements.d.ts +144 -0
  30. package/dist/types/dynamic-page-runtime/modulePageListRefresh.d.ts +12 -0
  31. package/dist/types/dynamic-page-runtime/modulePageNavigation.d.ts +11 -0
  32. package/dist/types/platform-admin-runtime/PlatformAdminOutlet.vue.d.ts +1 -0
  33. package/dist/types/platform-admin-runtime/backendHttp.d.ts +1 -1
  34. package/dist/types/platform-admin-runtime/index.d.ts +3 -0
  35. package/dist/types/platform-admin-runtime/realtime.d.ts +9 -5
  36. package/dist/types/platform-admin-runtime/workspaceViewContract.d.ts +1 -36
  37. package/dist/types/platform-admin-runtime/workspaceViewHost.d.ts +2 -10
  38. package/dist/types/platform-admin-runtime/workspaceViews.d.ts +1 -17
  39. package/dist/types/platform-components/CrudRecordListExplorer.vue.d.ts +2 -2
  40. package/dist/types/platform-components/DateTimeText.vue.d.ts +1 -1
  41. package/dist/types/platform-components/FileSizeText.vue.d.ts +10 -0
  42. package/dist/types/platform-components/FileTransferUploader.vue.d.ts +70 -0
  43. package/dist/types/platform-components/ManagementPanelHeader.vue.d.ts +30 -0
  44. package/dist/types/platform-components/RecordDetailExtensionSection.vue.d.ts +16 -0
  45. package/dist/types/platform-components/RecordDetailFields.vue.d.ts +1 -1
  46. package/dist/types/platform-components/RecordDetailLayout.vue.d.ts +8 -6
  47. package/dist/types/platform-components/RecordDetailPanel.vue.d.ts +5 -5
  48. package/dist/types/platform-components/RecordExplorerPanel.vue.d.ts +6 -6
  49. package/dist/types/platform-components/RecordFileReferenceTransfer.vue.d.ts +29 -0
  50. package/dist/types/platform-components/RecordFormFields.vue.d.ts +8 -0
  51. package/dist/types/platform-components/RecordListExplorer.vue.d.ts +2 -2
  52. package/dist/types/platform-components/RecordModeDrawer.vue.d.ts +1 -0
  53. package/dist/types/platform-components/RecordMultiPicker.vue.d.ts +33 -0
  54. package/dist/types/platform-components/RecordPanelButton.vue.d.ts +33 -0
  55. package/dist/types/platform-components/RecordPanelState.vue.d.ts +11 -0
  56. package/dist/types/platform-components/RecordPicker.vue.d.ts +1 -1
  57. package/dist/types/platform-components/RecordQueryListPanel.vue.d.ts +47 -2
  58. package/dist/types/platform-components/RecordStatusTag.vue.d.ts +6 -1
  59. package/dist/types/platform-components/RecordTagList.vue.d.ts +7 -0
  60. package/dist/types/platform-components/SingleImageFileReferenceField.vue.d.ts +23 -0
  61. package/dist/types/platform-components/TreeRecordExplorer.vue.d.ts +2 -2
  62. package/dist/types/platform-components/fileReferenceTransfer.d.ts +25 -0
  63. package/dist/types/platform-components/fileTransferUpload.d.ts +43 -0
  64. package/dist/types/platform-components/index.d.ts +15 -1
  65. package/dist/types/platform-components/platformErrorFeedback.d.ts +4 -0
  66. package/dist/types/platform-components/platformFileSize.d.ts +10 -0
  67. package/dist/types/platform-components/recordActionBarModel.d.ts +12 -1
  68. package/dist/types/platform-components/recordFormFieldModel.d.ts +24 -3
  69. package/dist/types/platform-components/scopedTreeModuleContext.d.ts +1 -1
  70. package/dist/types/platform-components/staticCrudManagementState.d.ts +1 -1
  71. package/dist/types/platform-workbench/Workbench.vue.d.ts +12 -2
  72. package/dist/types/platform-workbench/WorkbenchBrandControl.vue.d.ts +41 -0
  73. package/dist/types/platform-workbench/WorkbenchMenu.vue.d.ts +39 -1
  74. package/dist/types/platform-workbench/WorkbenchMenuTree.vue.d.ts +2 -0
  75. package/dist/types/platform-workbench/WorkbenchSidebarMenuEntry.vue.d.ts +19 -0
  76. package/dist/types/platform-workbench/WorkspaceViewOutlet.vue.d.ts +7 -0
  77. package/dist/types/platform-workbench/index.d.ts +7 -0
  78. package/dist/types/platform-workbench/menuHoverClickIntent.d.ts +10 -0
  79. package/dist/types/platform-workbench/menuPointerAim.d.ts +11 -0
  80. package/dist/types/platform-workbench/workbenchLayout.d.ts +4 -0
  81. package/dist/types/platform-workbench/workspaceViewContract.d.ts +20 -0
  82. package/dist/types/platform-workbench/workspaceViewHost.d.ts +8 -0
  83. package/dist/types/platform-workbench/workspaceViews.d.ts +21 -0
  84. package/dist/types/views/applicationManagementState.d.ts +1 -1
  85. package/dist/types/views/employeeDetailWorkspaceView.d.ts +1 -1
  86. package/dist/types/views/fieldSpecManagementState.d.ts +1 -1
  87. package/dist/types/views/fieldUiControlManagementState.d.ts +1 -1
  88. package/dist/types/views/metadataOrchestrationWorkspaceView.d.ts +1 -1
  89. package/dist/types/views/moduleActionManagementWorkspaceView.d.ts +1 -1
  90. package/dist/types/views/roleAuthorizationWorkspaceView.d.ts +1 -1
  91. package/dist/types/views/roleDetailWorkspaceView.d.ts +1 -1
  92. package/dist/types/views/systemUserDetailWorkspaceView.d.ts +1 -1
  93. package/dist/types/views/tenantManagementState.d.ts +11 -1
  94. package/dist/types/views/userDetailWorkspaceView.d.ts +1 -1
  95. package/dist/types/vue-ui-antdv/components/UiColorPicker.vue.d.ts +14 -0
  96. package/dist/types/vue-ui-antdv/components/UiDataTable.vue.d.ts +1 -1
  97. package/dist/types/vue-ui-antdv/components/UiIcon.vue.d.ts +1 -1
  98. package/dist/types/vue-ui-antdv/components/UiRecordExplorerItem.vue.d.ts +3 -3
  99. package/dist/types/vue-ui-antdv/components/UiSelect.vue.d.ts +1 -1
  100. package/dist/types/vue-ui-antdv/components/UiTabs.vue.d.ts +6 -0
  101. package/dist/types/vue-ui-antdv/components/UiTagList.vue.d.ts +17 -0
  102. package/dist/types/vue-ui-antdv/components/UiThemeProvider.vue.d.ts +21 -0
  103. package/dist/types/vue-ui-antdv/components/UiTree.vue.d.ts +3 -3
  104. package/dist/types/vue-ui-antdv/components/UiTreeSelect.vue.d.ts +1 -1
  105. package/dist/types/vue-ui-antdv/index.d.ts +6 -0
  106. package/dist/types/vue-ui-antdv/theme.d.ts +58 -0
  107. package/dist/types/vue-ui-antdv/themeGlobalScope.d.ts +2 -0
  108. package/dist/types/vue-ui-antdv/types.d.ts +4 -9
  109. package/dist/types/web-contracts/index.d.ts +168 -0
  110. package/dist/types/web-core/clients.d.ts +14 -1
  111. package/dist/types/web-core/http.d.ts +12 -1
  112. package/dist/types/web-core/index.d.ts +2 -0
  113. package/dist/types/web-core/mock.d.ts +3 -1
  114. package/dist/types/web-core/module/staticModuleClient.d.ts +1 -0
  115. package/dist/types/web-core/userPreferences.d.ts +24 -0
  116. package/dist/{useUserSessionRows-iAqK_cUy.js → useUserSessionRows-CBHEzRFQ.js} +2 -2
  117. package/dist/workspaceViewSessions-DkB9myrq.js +3252 -0
  118. package/package.json +1 -1
  119. package/dist/EmployeeManagementView-DyYMWQ64.js +0 -1706
  120. package/dist/ModuleActionManagementView-BFoPGqzC.js +0 -597
  121. package/dist/SystemUserManagementView-m6vwJDxI.js +0 -761
  122. package/dist/pageRealtime-4LXXvVW7.js +0 -140
  123. package/dist/workspaceViewSessions-DW0wbyQ_.js +0 -1448
@@ -0,0 +1,33 @@
1
+ import type { ModuleContext } from '../web-core/index';
2
+ import type { CurrentUserProfile } from '../web-contracts/index';
3
+ type __VLS_Props = {
4
+ open?: boolean;
5
+ profile?: CurrentUserProfile;
6
+ loading?: boolean;
7
+ saving?: boolean;
8
+ error?: string;
9
+ avatarContext: ModuleContext<unknown>;
10
+ };
11
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
12
+ close: () => any;
13
+ submit: (value: {
14
+ mobile: string;
15
+ email: string;
16
+ avatarAssetId?: string;
17
+ }) => any;
18
+ }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
19
+ onClose?: (() => any) | undefined;
20
+ onSubmit?: ((value: {
21
+ mobile: string;
22
+ email: string;
23
+ avatarAssetId?: string;
24
+ }) => any) | undefined;
25
+ }>, {
26
+ loading: boolean;
27
+ open: boolean;
28
+ error: string;
29
+ profile: CurrentUserProfile;
30
+ saving: boolean;
31
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
32
+ declare const _default: typeof __VLS_export;
33
+ export default _default;
@@ -1,9 +1,12 @@
1
- import type { AuthClient } from '../web-core/index';
1
+ import type { AuthClient, LoginContextClient } from '../web-core/index';
2
2
  import type { LoginResult } from '../web-contracts/index';
3
3
  type __VLS_Props = {
4
4
  authClient: AuthClient;
5
+ loginContextClient?: LoginContextClient;
5
6
  loading?: boolean;
6
7
  error?: string;
8
+ /** Used only when the form is first created; URL-locked tenants always take precedence. */
9
+ initialUsername?: string;
7
10
  };
8
11
  declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
9
12
  authenticated: (result: LoginResult) => any;
@@ -0,0 +1,20 @@
1
+ import { type UiThemeSkin, type UiThemeSkinId } from '../vue-ui-antdv/index';
2
+ type __VLS_Props = {
3
+ open: boolean;
4
+ skins: readonly UiThemeSkin[];
5
+ activeSkinId: UiThemeSkinId;
6
+ saving?: boolean;
7
+ error?: string;
8
+ };
9
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
10
+ close: () => any;
11
+ select: (skinId: UiThemeSkinId) => any;
12
+ }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
13
+ onClose?: (() => any) | undefined;
14
+ onSelect?: ((skinId: UiThemeSkinId) => any) | undefined;
15
+ }>, {
16
+ error: string;
17
+ saving: boolean;
18
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
19
+ declare const _default: typeof __VLS_export;
20
+ export default _default;
@@ -0,0 +1,6 @@
1
+ import type { MenuTab } from '../web-contracts/index';
2
+ import type { UserPreferenceStore } from '../web-core/index';
3
+ export declare const lockedTabPreferenceKey = "workbench.locked-tabs";
4
+ export declare function restoreLockedTabPreference(store: UserPreferenceStore): Promise<MenuTab[]>;
5
+ export declare function saveLockedTabPreference(store: UserPreferenceStore, tabs: MenuTab[]): Promise<void>;
6
+ export declare function normalizeLockedTabs(value: unknown): MenuTab[];
@@ -0,0 +1,11 @@
1
+ import { type UiThemeSkinId } from '../vue-ui-antdv/index';
2
+ import type { UserPreferenceStore } from '../web-core/index';
3
+ export declare const themeSkinPreferenceKey = "workbench.theme-skin";
4
+ export declare function restoreThemeSkinPreference(store: UserPreferenceStore, fallback: UiThemeSkinId): Promise<UiThemeSkinId>;
5
+ export declare function saveThemeSkinPreference(store: UserPreferenceStore, skinId: UiThemeSkinId, previousSkinId: UiThemeSkinId): Promise<{
6
+ skinId: UiThemeSkinId;
7
+ error?: undefined;
8
+ } | {
9
+ skinId: UiThemeSkinId;
10
+ error: string;
11
+ }>;
@@ -0,0 +1,13 @@
1
+ import type { WorkbenchStartupState } from '../web-contracts/index';
2
+ export type WorkbenchRouteWriteMode = 'push' | 'replace';
3
+ export interface WorkbenchRouteWrite {
4
+ url: string;
5
+ mode: WorkbenchRouteWriteMode;
6
+ }
7
+ /**
8
+ * Keeps browser history decisions at the workbench boundary: user navigation is
9
+ * navigable history, while state normalization only replaces the current entry.
10
+ */
11
+ export declare function workbenchRouteWriteFor(state: WorkbenchStartupState, currentUrl: string, mode: WorkbenchRouteWriteMode): WorkbenchRouteWrite | undefined;
12
+ /** A route written from the workbench already has matching in-memory tab state. */
13
+ export declare function shouldRestoreWorkbenchFromRoute(url: string, pendingWorkbenchNavigation: string | undefined, isSpecialRoute: boolean): boolean;
@@ -1,5 +1,5 @@
1
1
  import type { MenuClient, SessionClient } from '../web-core/index';
2
- import type { MenuNavigationTarget, MenuRecord, MenuTab, PageDescriptor, WorkbenchStartupState } from '../web-contracts/index';
2
+ import type { MenuNavigationTarget, MenuRecord, MenuTab, MenuTreeNode, PageDescriptor, WorkbenchStartupState } from '../web-contracts/index';
3
3
  import { type PageDescriptorResolveOptions } from '../platform-workbench/index';
4
4
  export interface WorkbenchStartupClients {
5
5
  sessionClient: SessionClient;
@@ -22,3 +22,16 @@ export declare function closeMenuTab(tabs: MenuTab[], activeTabKey: string | und
22
22
  tabs: MenuTab[];
23
23
  activeTabKey: string | undefined;
24
24
  };
25
+ /** Closes the selected closable tabs and chooses the nearest remaining tab when the active one closes. */
26
+ export declare function closeMenuTabs(tabs: MenuTab[], activeTabKey: string | undefined, closedTabKeys: string[]): {
27
+ tabs: MenuTab[];
28
+ activeTabKey: string | undefined;
29
+ };
30
+ /** Keeps account-pinned tabs at the left while ordinary tab order remains a browser-session concern. */
31
+ export declare function arrangeLockedMenuTabs(tabs: MenuTab[], lockedTabs: MenuTab[], includeMissingLockedTabs?: boolean): MenuTab[];
32
+ /** Restores only currently visible tab menus, rebuilding their descriptors from the active menu scheme. */
33
+ export declare function restoreLockedMenuTabs(lockedTabs: MenuTab[], menus: MenuTreeNode[], options?: PageDescriptorResolveOptions): MenuTab[];
34
+ export declare function updateLockedMenuTabs(lockedTabs: MenuTab[], tab: MenuTab): MenuTab[];
35
+ export declare function removeLockedMenuTabs(lockedTabs: MenuTab[], keys: string[]): MenuTab[];
36
+ /** Reorders the open tabs for the current browser session without affecting URL restoration. */
37
+ export declare function reorderMenuTabs(tabs: MenuTab[], keys: string[], lockedTabKeys?: string[]): MenuTab[];
@@ -0,0 +1,43 @@
1
+ import type { PageDescriptor, WorkbenchStartupState } from '../web-contracts';
2
+ import { type PageDescriptorResolveOptions } from '../platform-workbench/menuNavigation';
3
+ import type { WorkbenchRealtimeStatus } from '../platform-workbench/realtimeStatus';
4
+ import type { AppWorkbenchNavigation } from './workbenchNavigation';
5
+ type __VLS_Props = {
6
+ startup: WorkbenchStartupState;
7
+ /** The consumer router's current full path, including search and hash. */
8
+ location: string;
9
+ resolveOptions?: PageDescriptorResolveOptions;
10
+ loading?: boolean;
11
+ error?: string;
12
+ realtimeStatus?: WorkbenchRealtimeStatus;
13
+ themeAppearance?: 'light' | 'dark';
14
+ };
15
+ declare var __VLS_17: {
16
+ pageDescriptor: PageDescriptor | undefined;
17
+ };
18
+ type __VLS_Slots = {} & {
19
+ default?: (props: typeof __VLS_17) => any;
20
+ };
21
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
22
+ userCommand: (key: string) => any;
23
+ navigate: (navigation: AppWorkbenchNavigation) => any;
24
+ "update:startup": (value: WorkbenchStartupState) => any;
25
+ }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
26
+ onUserCommand?: ((key: string) => any) | undefined;
27
+ onNavigate?: ((navigation: AppWorkbenchNavigation) => any) | undefined;
28
+ "onUpdate:startup"?: ((value: WorkbenchStartupState) => any) | undefined;
29
+ }>, {
30
+ loading: boolean;
31
+ error: string;
32
+ realtimeStatus: WorkbenchRealtimeStatus;
33
+ themeAppearance: "light" | "dark";
34
+ resolveOptions: PageDescriptorResolveOptions;
35
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
36
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
37
+ declare const _default: typeof __VLS_export;
38
+ export default _default;
39
+ type __VLS_WithSlots<T, S> = T & {
40
+ new (): {
41
+ $slots: S;
42
+ };
43
+ };
@@ -5,10 +5,33 @@
5
5
  *
6
6
  * Consumers must import `@ximatai/muyun-web-app/style.css` explicitly.
7
7
  */
8
+ import '../vue-ui-antdv/styles.css';
8
9
  import '../styles.css';
9
10
  export * from '../web-contracts/index';
10
11
  export * from '../web-core/index';
11
12
  export * from '../platform-workbench/index';
12
13
  export * from '../platform-admin-runtime/index';
13
- export { UiButton, UiInput, UiSwitch } from '../vue-ui-antdv/index';
14
+ export { activeTabUrlOf, arrangeLockedMenuTabs, removeLockedMenuTabs, restoreWorkbenchStartupStateFromUrl, restoreLockedMenuTabs, updateLockedMenuTabs, } from '../app/workbenchStartup';
15
+ export { restoreLockedTabPreference, saveLockedTabPreference } from '../app/lockedTabPreference';
16
+ export { configureModulePageEnhancements, createModulePageEnhancementRegistry, modulePageWorkspaceViews, } from '../dynamic-page-runtime/modulePageEnhancements';
17
+ export { refreshModulePageList } from '../dynamic-page-runtime/modulePageListRefresh';
18
+ export type { ModuleListEnhancement, ModuleDetailEnhancement, ModulePageActionContext, ModulePageActionContribution, ModulePageActionStateContext, ModulePageBatchActionContext, ModulePageBatchActionContribution, ModulePageColumnContribution, ModulePageDetailSection, ModulePageDetailSectionContext, ModulePageDrawer, ModulePageDrawerContext, ModulePageEnhancement, ModulePageEnhancementTarget, ModulePageRecordActionContext, ModulePageRecordActionContribution, ModulePageScopeContext, ModulePageWorkspaceView, ModulePageWorkspaceViewInput, } from '../dynamic-page-runtime/modulePageEnhancements';
19
+ export { UiButton, confirmAction, UiDataTable, UiInput, UiSidePanel, UiSwitch, UiTextArea, UiTree, } from '../vue-ui-antdv/index';
14
20
  export { default as PlatformAdminOutlet } from './PlatformAdminOutlet.vue';
21
+ export { default as AppWorkbenchShell } from './AppWorkbenchShell.vue';
22
+ export { default as LoginView } from '../app/LoginView.vue';
23
+ export type { AppWorkbenchNavigation } from './workbenchNavigation';
24
+ export { configureUserPreferencePersistence } from './userPreferencePersistence';
25
+ export { default as ChangeOwnPasswordDialog } from '../app/ChangeOwnPasswordDialog.vue';
26
+ export { default as ThemeSkinPreferencesDialog } from '../app/ThemeSkinPreferencesDialog.vue';
27
+ export { restoreThemeSkinPreference, saveThemeSkinPreference, themeSkinPreferenceKey, } from '../app/themeSkinPreference';
28
+ export { defaultUiThemeSkinId, UiThemeProvider, uiThemeSkinById, uiThemeSkins } from '../vue-ui-antdv/index';
29
+ export type { UiThemeSkin, UiThemeSkinId } from '../vue-ui-antdv/index';
30
+ export { default as DateTimeText } from '../platform-components/DateTimeText.vue';
31
+ export { default as FileSizeText } from '../platform-components/FileSizeText.vue';
32
+ export { default as FileTransferUploader } from '../platform-components/FileTransferUploader.vue';
33
+ export { default as SingleImageFileReferenceField } from '../platform-components/SingleImageFileReferenceField.vue';
34
+ export { uploadedFileId } from '../platform-components/fileReferenceTransfer';
35
+ export { presentPlatformError, presentPlatformInfo, presentPlatformMessage, presentPlatformSuccess, } from '../platform-components/platformErrorFeedback';
36
+ export { createBrowserFileTransferUpload, unwrapResponsePayload, } from '../platform-components/fileTransferUpload';
37
+ export type { FileTransferUploadAccess, FileTransferUploadReceipt, FileTransferUploadTask, } from '../platform-components/fileTransferUpload';
@@ -0,0 +1,7 @@
1
+ import type { HttpClient } from '../web-core/http';
2
+ /**
3
+ * Connects the consumer App's authenticated HTTP factory to the platform's
4
+ * account-scoped preference endpoints. Consumers retain ownership of their
5
+ * authentication lifecycle without depending on web-core's internal bridge.
6
+ */
7
+ export declare function configureUserPreferencePersistence(httpFactory: () => HttpClient): void;
@@ -0,0 +1,8 @@
1
+ /**
2
+ * A workbench navigation request. The consuming App owns the router and must
3
+ * apply this request with its own `router.push` or `router.replace`.
4
+ */
5
+ export interface AppWorkbenchNavigation {
6
+ url: string;
7
+ mode: 'push' | 'replace';
8
+ }
@@ -2,6 +2,13 @@ import type { DynamicModulePageDescriptor } from '../web-contracts/index';
2
2
  type __VLS_Props = {
3
3
  descriptor: DynamicModulePageDescriptor;
4
4
  };
5
- declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
5
+ /**
6
+ * Public, state-preserving list refresh for business-owned triggers.
7
+ * RecordQueryListPanel observes reloadKey and only re-runs loadRecords().
8
+ */
9
+ declare function refreshList(): void;
10
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {
11
+ refreshList: typeof refreshList;
12
+ }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
6
13
  declare const _default: typeof __VLS_export;
7
14
  export default _default;
@@ -1,3 +1,8 @@
1
1
  export { default as DynamicModuleHost } from './DynamicModuleHost.vue';
2
2
  export { default as DynamicModulePage } from './DynamicModulePage.vue';
3
3
  export { customerDescriptor } from './mockDescriptor';
4
+ export { configureModulePageEnhancements, createModulePageEnhancementRegistry, modulePageWorkspaceViews, resolveModulePageEnhancement, } from './modulePageEnhancements';
5
+ export { provideModulePageNavigation, useModulePageNavigation } from './modulePageNavigation';
6
+ export { createModulePageListRefreshRegistry, modulePageListRefreshRegistry, refreshModulePageList, } from './modulePageListRefresh';
7
+ export type { ModulePageListRefreshRegistry } from './modulePageListRefresh';
8
+ export type { ModuleListEnhancement, ModuleDetailEnhancement, ModulePageActionContext, ModulePageActionContribution, ModulePageActionStateContext, ModulePageBatchActionContext, ModulePageBatchActionContribution, ModulePageColumnContribution, ModulePageDetailSection, ModulePageDetailSectionContext, ModulePageDrawer, ModulePageDrawerContext, ModulePageEnhancement, ModulePageEnhancementRegistry, ModulePageEnhancementTarget, ModulePageRecordActionContext, ModulePageRecordActionContribution, ModulePageScopeContext, ModulePageWorkspaceView, ModulePageWorkspaceViewInput, } from './modulePageEnhancements';
@@ -0,0 +1,144 @@
1
+ import type { Component } from 'vue';
2
+ import type { PageLayoutMode, RouteQueryValue } from '../web-contracts/index';
3
+ import type { ModuleContext } from '../web-core/index';
4
+ import type { RecordActionItem, RecordQueryListColumn, QueryListRecord } from '../platform-components/index';
5
+ /**
6
+ * Frontend-owned, constrained composition for a descriptor-driven module page.
7
+ *
8
+ * This deliberately lives in application source instead of the backend UI DSL:
9
+ * the descriptor remains the source of data and platform facts, while a business
10
+ * application may contribute small Vue capabilities at named platform regions.
11
+ */
12
+ export interface ModulePageEnhancement {
13
+ id: string;
14
+ target: ModulePageEnhancementTarget;
15
+ list?: ModuleListEnhancement;
16
+ detail?: ModuleDetailEnhancement;
17
+ workspaceViews?: ModulePageWorkspaceView[];
18
+ }
19
+ export interface ModulePageEnhancementTarget {
20
+ moduleAlias: string;
21
+ /** Omit to apply to every list view of the module. */
22
+ viewCode?: string;
23
+ }
24
+ export interface ModuleListEnhancement {
25
+ actions?: ModulePageActionContribution[];
26
+ columns?: ModulePageColumnContribution[];
27
+ /** Replaces the visual renderer of a descriptor-owned column without adding a duplicate column. */
28
+ cellComponents?: ModulePageCellComponentContribution[];
29
+ /** Width of the list's fixed operation column; defaults to the platform compact width. */
30
+ actionColumnWidth?: string | number;
31
+ rowActions?: ModulePageRecordActionContribution[];
32
+ batchActions?: ModulePageBatchActionContribution[];
33
+ }
34
+ /** Actions appended to the standard record-detail operation area in view mode. */
35
+ export interface ModuleDetailEnhancement {
36
+ actions?: ModulePageRecordActionContribution[];
37
+ sections?: ModulePageDetailSection[];
38
+ }
39
+ export interface ModulePageActionContribution extends RecordActionItem {
40
+ key: string;
41
+ /** Authorizes this toolbar action against the selected scoped-list record instead of the page module. */
42
+ authorization?: 'scope-record';
43
+ /** Derives the action state from the current scoped-list selection when the page has one. */
44
+ state?(context: ModulePageActionStateContext): Partial<Pick<RecordActionItem, 'visible' | 'disabled' | 'disabledReason'>> | undefined;
45
+ run(context: ModulePageActionContext): void | Promise<void>;
46
+ }
47
+ export interface ModulePageRecordActionContribution extends RecordActionItem {
48
+ key: string;
49
+ /** Resolves record-specific visibility or enabled state without letting business code own the table shell. */
50
+ state?(record: QueryListRecord): Partial<Pick<RecordActionItem, 'visible' | 'disabled'>> | undefined;
51
+ run(context: ModulePageRecordActionContext): void | Promise<void>;
52
+ }
53
+ export interface ModulePageBatchActionContribution extends RecordActionItem {
54
+ key: string;
55
+ run(context: ModulePageBatchActionContext): void | Promise<void>;
56
+ }
57
+ export interface ModulePageDetailSection {
58
+ key: string;
59
+ title: string;
60
+ component: Component;
61
+ }
62
+ export interface ModulePageColumnContribution extends RecordQueryListColumn {
63
+ key: string;
64
+ /** Insert adjacent to a descriptor column. Omit to append after descriptor columns. */
65
+ before?: string;
66
+ after?: string;
67
+ /** A normal Vue component, constrained to one table cell by the platform table shell. */
68
+ cell: Component;
69
+ }
70
+ export interface ModulePageCellComponentContribution {
71
+ key: string;
72
+ cell: Component;
73
+ }
74
+ export interface ModulePageDrawer {
75
+ title: string;
76
+ width?: number | string;
77
+ /** The component receives only the documented ModulePageDrawerContext prop. */
78
+ component: Component;
79
+ }
80
+ export type ModulePageWorkspaceViewInput = Record<string, RouteQueryValue>;
81
+ /** A business-owned view with stable, serializable identity. */
82
+ export interface ModulePageWorkspaceView<TInput extends ModulePageWorkspaceViewInput = ModulePageWorkspaceViewInput> {
83
+ type: string;
84
+ moduleAlias: string;
85
+ /** Optional business route used for restoration; platform generates a stable workspace route by default. */
86
+ route?: string;
87
+ component: Component;
88
+ titleOf(input: TInput): string;
89
+ parse(query: Record<string, RouteQueryValue>): TInput | undefined;
90
+ layout?: PageLayoutMode;
91
+ }
92
+ export interface ModulePageDrawerContext {
93
+ module: ModuleContext<QueryListRecord>;
94
+ record?: QueryListRecord;
95
+ /** The currently selected scope record for a scoped list workspace, if applicable. */
96
+ scope?: ModulePageScopeContext;
97
+ /** Reloads only the current list query and preserves its query and editor state. */
98
+ refreshList(): void;
99
+ close(): void;
100
+ reload(): void;
101
+ }
102
+ export interface ModulePageActionContext {
103
+ module: ModuleContext<QueryListRecord>;
104
+ /** The currently selected scope record for a scoped list workspace, if applicable. */
105
+ scope?: ModulePageScopeContext;
106
+ /** Reloads only the current list query and preserves its query and editor state. */
107
+ refreshList(): void;
108
+ openDrawer(drawer: ModulePageDrawer): void;
109
+ openWorkspaceTab<TInput extends ModulePageWorkspaceViewInput>(view: ModulePageWorkspaceView<TInput>, input: TInput): void;
110
+ reload(): void;
111
+ }
112
+ /** Read-only scope state supplied by a descriptor-owned scoped list workspace. */
113
+ export interface ModulePageScopeContext {
114
+ moduleAlias: string;
115
+ record?: QueryListRecord;
116
+ }
117
+ /** Small state-only context used while resolving a toolbar action's visibility or enabled state. */
118
+ export interface ModulePageActionStateContext {
119
+ module: ModuleContext<QueryListRecord>;
120
+ scope?: ModulePageScopeContext;
121
+ }
122
+ export interface ModulePageRecordActionContext extends ModulePageActionContext {
123
+ record: QueryListRecord;
124
+ }
125
+ export interface ModulePageBatchActionContext extends ModulePageActionContext {
126
+ records: QueryListRecord[];
127
+ clearSelection(): void;
128
+ }
129
+ export interface ModulePageDetailSectionContext {
130
+ module: ModuleContext<QueryListRecord>;
131
+ record: QueryListRecord;
132
+ /** Reloads only the current list query and preserves its query and editor state. */
133
+ refreshList(): void;
134
+ reload(): void;
135
+ }
136
+ export interface ModulePageEnhancementRegistry {
137
+ resolve(moduleAlias: string, viewCode?: string): ModulePageEnhancement | undefined;
138
+ workspaceViews(): readonly ModulePageWorkspaceView[];
139
+ }
140
+ export declare function createModulePageEnhancementRegistry(enhancements: readonly ModulePageEnhancement[]): ModulePageEnhancementRegistry;
141
+ /** Configure once from the consuming application's composition root. */
142
+ export declare function configureModulePageEnhancements(enhancements: readonly ModulePageEnhancement[]): void;
143
+ export declare function resolveModulePageEnhancement(moduleAlias: string, viewCode?: string): ModulePageEnhancement | undefined;
144
+ export declare function modulePageWorkspaceViews(): readonly ModulePageWorkspaceView<ModulePageWorkspaceViewInput>[];
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Application-local registry for business-owned refresh triggers.
3
+ * It deliberately knows nothing about realtime transports or business events.
4
+ */
5
+ export interface ModulePageListRefreshRegistry {
6
+ register(moduleAlias: string, refresh: () => void): () => void;
7
+ refresh(moduleAlias: string): boolean;
8
+ }
9
+ export declare function createModulePageListRefreshRegistry(): ModulePageListRefreshRegistry;
10
+ /** Shared application facade for business-owned triggers. */
11
+ export declare const modulePageListRefreshRegistry: ModulePageListRefreshRegistry;
12
+ export declare function refreshModulePageList(moduleAlias: string): boolean;
@@ -0,0 +1,11 @@
1
+ import type { PageDescriptor } from '../web-contracts/index';
2
+ import type { ModulePageWorkspaceView, ModulePageWorkspaceViewInput } from './modulePageEnhancements';
3
+ /** Workbench bridge owned by the host, so module runtime does not depend on a concrete Workbench implementation. */
4
+ export interface ModulePageNavigation {
5
+ openPage(descriptor: PageDescriptor): {
6
+ created: boolean;
7
+ };
8
+ openWorkspaceTab<TInput extends ModulePageWorkspaceViewInput>(view: ModulePageWorkspaceView<TInput>, input: TInput): void;
9
+ }
10
+ export declare function provideModulePageNavigation(navigation: ModulePageNavigation | undefined): void;
11
+ export declare function useModulePageNavigation(): ModulePageNavigation | undefined;
@@ -1,4 +1,5 @@
1
1
  import type { BusinessRoutePageDescriptor } from '../web-contracts/index';
2
+ import './workspaceViews';
2
3
  type __VLS_Props = {
3
4
  descriptor: BusinessRoutePageDescriptor;
4
5
  };
@@ -1,3 +1,3 @@
1
1
  export declare function createBackendHttpClient(options?: {
2
2
  withAuth?: boolean;
3
- }): import("../web-core/index").HttpClient;
3
+ }): import("../web-core/index").StreamingHttpClient;
@@ -10,3 +10,6 @@ export { isPlatformAdminRoutePage, platformAdminModuleRoutes, platformAdminRoute
10
10
  export type { PlatformAdminRoute } from './platformAdminRoutes';
11
11
  export { provideCurrentUserContext, useCurrentUserContext } from './currentUserContext';
12
12
  export { createBackendHttpClient } from './backendHttp';
13
+ export { connectAppRealtime, disconnectAppRealtime, subscribeAppBusinessEvents, subscribeAppDataChanges, subscribeAppModuleDataChanges, } from './realtime';
14
+ export type { AppRealtimeConnection, AppRealtimeOptions } from './realtime';
15
+ export { clearAuthToken, effectiveAuthToken, saveAuthSessionId, saveAuthToken, storedAuthSessionId, storedAuthToken, } from './authSession';
@@ -1,16 +1,20 @@
1
- import { type RealtimeClient, type RealtimeConnectionState } from '../web-core/index';
1
+ import { type RealtimeConnectionState } from '../web-core/index';
2
2
  import type { WebBusinessRealtimeEvent, WebCommittedChangeSet, WebUserNotification } from '../web-contracts/index';
3
3
  export declare const appDataChangeDispatcher: import("../web-core/index").DataChangeDispatcher;
4
4
  export interface AppRealtimeOptions {
5
+ /** Backend origin supplied by the consuming App at runtime. */
6
+ baseUrl?: string;
7
+ /** Current authentication token supplied by the consuming App at runtime. */
8
+ token?: string;
5
9
  onUnauthorized?: () => void;
6
10
  onUserNotification?: (notification: WebUserNotification) => void;
7
11
  onStateChange?: (state: RealtimeConnectionState) => void;
8
12
  }
9
- export declare function createAppRealtimeClient(options?: AppRealtimeOptions): RealtimeClient;
10
- export declare function connectAppRealtime(options?: AppRealtimeOptions): {
11
- realtime: RealtimeClient;
13
+ export interface AppRealtimeConnection {
12
14
  disconnect(): Promise<void>;
13
- };
15
+ }
16
+ export declare function connectAppRealtime(options?: AppRealtimeOptions): AppRealtimeConnection;
17
+ export declare function disconnectAppRealtime(): Promise<void>;
14
18
  export declare function subscribeAppModuleDataChanges(moduleAlias: string): {
15
19
  unsubscribe(): void;
16
20
  };
@@ -1,36 +1 @@
1
- import type { Component } from 'vue';
2
- import type { PageLayoutMode, RouteQueryValue } from '../web-contracts/index';
3
- export type WorkspaceViewInput = object;
4
- export type WorkspaceViewPresentation = 'drawer' | 'tab';
5
- /**
6
- * Semantic drawer capacities owned by the workbench, rather than by a
7
- * particular business page. A work view declares the amount of workspace it
8
- * needs; the host decides the actual pixel value and narrow-screen fallback.
9
- */
10
- export type WorkspaceDrawerProfile = 'detail' | 'wide-work';
11
- /** Stable declaration shared by all workbench view hosts. */
12
- export interface WorkspaceViewDefinition<TInput extends WorkspaceViewInput> {
13
- type: string;
14
- route: string;
15
- moduleAlias: string;
16
- component: Component;
17
- /** Vertical layout contract used when the work view is opened in a tab. */
18
- layout?: PageLayoutMode;
19
- /** Drawer capacity used when this view is opened as a drawer. */
20
- drawerProfile?: WorkspaceDrawerProfile;
21
- /** Title restored when a URL-addressable drawer returns to its ordinary route. */
22
- routeTitle?: string;
23
- titleOf(input: TInput): string;
24
- /**
25
- * Route context that remains after a drawer is closed.
26
- *
27
- * A work view may need parent-page context (for example a role ownership
28
- * scope) both to identify the view and to return the user to the same
29
- * ordinary route. This keeps that context distinct from the transient
30
- * work-view presentation and record identity.
31
- */
32
- parentRouteQueryOf?(input: TInput): Record<string, RouteQueryValue>;
33
- parse(query: Record<string, RouteQueryValue>): TInput | undefined;
34
- presentations: readonly WorkspaceViewPresentation[];
35
- }
36
- export declare function defineWorkspaceView<TInput extends WorkspaceViewInput>(definition: WorkspaceViewDefinition<TInput>): WorkspaceViewDefinition<TInput>;
1
+ export { defineWorkspaceView, type WorkspaceDrawerProfile, type WorkspaceViewDefinition, type WorkspaceViewInput, type WorkspaceViewPresentation, } from '../platform-workbench/index';
@@ -1,10 +1,2 @@
1
- import type { WorkspaceViewPresentation } from './workspaceViewContract';
2
- /** Runtime host facts shared with a view without exposing workbench navigation to business code. */
3
- export interface WorkspaceViewHost {
4
- presentation: WorkspaceViewPresentation;
5
- /** Updates the host tab label without leaking workbench navigation into business views. */
6
- setTitle(title: string): void;
7
- dismiss(): void;
8
- }
9
- export declare function provideWorkspaceViewHost(host: WorkspaceViewHost): void;
10
- export declare function useWorkspaceViewHost(): WorkspaceViewHost | undefined;
1
+ export { provideWorkspaceViewHost, useWorkspaceViewHost } from '../platform-workbench/index';
2
+ export type { WorkspaceViewHost } from '../platform-workbench/index';
@@ -1,18 +1,2 @@
1
- import type { BusinessRoutePageDescriptor } from '../web-contracts/index';
2
- import type { WorkspaceViewDefinition, WorkspaceViewInput, WorkspaceViewPresentation } from './workspaceViewContract';
1
+ export { createWorkspaceViewDescriptor, createWorkspaceViewRegistry, dismissWorkspaceViewDescriptor, resolveWorkspaceView, type ResolvedWorkspaceView, type WorkspaceViewRegistry, } from '../platform-workbench/index';
3
2
  export { defineWorkspaceView, type WorkspaceViewDefinition, type WorkspaceViewInput, type WorkspaceViewPresentation, } from './workspaceViewContract';
4
- export interface ResolvedWorkspaceView {
5
- view: WorkspaceViewDefinition<WorkspaceViewInput>;
6
- input: WorkspaceViewInput;
7
- presentation: WorkspaceViewPresentation;
8
- }
9
- export interface WorkspaceViewRegistry {
10
- definitions: readonly WorkspaceViewDefinition<WorkspaceViewInput>[];
11
- resolve(descriptor: BusinessRoutePageDescriptor): ResolvedWorkspaceView | undefined;
12
- }
13
- export declare function createWorkspaceViewRegistry(definitions: readonly WorkspaceViewDefinition<WorkspaceViewInput>[]): WorkspaceViewRegistry;
14
- export declare const workspaceViewRegistry: WorkspaceViewRegistry;
15
- export declare function createWorkspaceViewDescriptor<TInput extends WorkspaceViewInput>(view: WorkspaceViewDefinition<TInput>, input: TInput, presentation?: WorkspaceViewPresentation, title?: string): BusinessRoutePageDescriptor;
16
- /** Returns the ordinary route descriptor after a URL-restored drawer is dismissed. */
17
- export declare function dismissWorkspaceViewDescriptor(descriptor: BusinessRoutePageDescriptor, view: WorkspaceViewDefinition<WorkspaceViewInput>): BusinessRoutePageDescriptor;
18
- export declare function resolveWorkspaceView(descriptor: BusinessRoutePageDescriptor): ResolvedWorkspaceView | undefined;
@@ -22,13 +22,13 @@ type __VLS_Props = {
22
22
  };
23
23
  declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
24
24
  select: (record: CrudRecordListBase) => any;
25
- action: (action: UiRecordInlineAction, record: CrudRecordListBase) => any;
25
+ action: (action: import("../web-contracts/index.ts").RecordInlineAction, record: CrudRecordListBase) => any;
26
26
  loaded: (records: CrudRecordListBase[]) => any;
27
27
  restored: () => any;
28
28
  recycleBinSummary: (total: number | undefined) => any;
29
29
  }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
30
30
  onSelect?: ((record: CrudRecordListBase) => any) | undefined;
31
- onAction?: ((action: UiRecordInlineAction, record: CrudRecordListBase) => any) | undefined;
31
+ onAction?: ((action: import("../web-contracts/index.ts").RecordInlineAction, record: CrudRecordListBase) => any) | undefined;
32
32
  onLoaded?: ((records: CrudRecordListBase[]) => any) | undefined;
33
33
  onRestored?: (() => any) | undefined;
34
34
  onRecycleBinSummary?: ((total: number | undefined) => any) | undefined;
@@ -6,8 +6,8 @@ type __VLS_Props = {
6
6
  timeZone?: string;
7
7
  };
8
8
  declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
9
- value: string | number | Date | null;
10
9
  emptyText: string;
10
+ value: string | number | Date | null;
11
11
  precision: PlatformDateTimePrecision;
12
12
  timeZone: string;
13
13
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
@@ -0,0 +1,10 @@
1
+ type __VLS_Props = {
2
+ value?: number | string | bigint | null;
3
+ emptyText?: string;
4
+ };
5
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
6
+ emptyText: string;
7
+ value: number | string | bigint | null;
8
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
9
+ declare const _default: typeof __VLS_export;
10
+ export default _default;