@almadar/ui 1.0.34 → 2.0.1
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.
- package/LICENSE +21 -72
- package/dist/components/atoms/Avatar.d.ts +58 -0
- package/dist/components/atoms/Badge.d.ts +8 -0
- package/dist/components/atoms/Box.d.ts +57 -0
- package/dist/components/atoms/Button.d.ts +24 -0
- package/dist/components/atoms/Card.d.ts +18 -0
- package/dist/components/atoms/Center.d.ts +33 -0
- package/dist/components/atoms/Checkbox.d.ts +5 -0
- package/dist/components/atoms/ConditionalWrapper.d.ts +68 -0
- package/dist/components/atoms/Divider.d.ts +29 -0
- package/dist/components/atoms/Icon.d.ts +38 -0
- package/dist/components/atoms/Input.d.ts +26 -0
- package/dist/components/atoms/Label.d.ts +5 -0
- package/dist/components/atoms/LawReferenceTooltip.d.ts +48 -0
- package/dist/components/atoms/Overlay.d.ts +16 -0
- package/dist/components/atoms/ProgressBar.d.ts +63 -0
- package/dist/components/atoms/Radio.d.ts +26 -0
- package/dist/components/atoms/Select.d.ts +12 -0
- package/dist/components/atoms/Spacer.d.ts +25 -0
- package/dist/components/atoms/Spinner.d.ts +6 -0
- package/dist/components/atoms/Stack.d.ts +64 -0
- package/dist/components/atoms/Switch.d.ts +12 -0
- package/dist/components/atoms/TextHighlight.d.ts +53 -0
- package/dist/components/atoms/Textarea.d.ts +5 -0
- package/dist/components/atoms/ThemeSelector.d.ts +21 -0
- package/dist/components/atoms/ThemeToggle.d.ts +33 -0
- package/dist/components/atoms/Typography.d.ts +57 -0
- package/dist/components/atoms/game/ControlButton.d.ts +31 -0
- package/dist/components/atoms/game/HealthBar.d.ts +18 -0
- package/dist/components/atoms/game/ScoreDisplay.d.ts +21 -0
- package/dist/components/atoms/game/Sprite.d.ts +63 -0
- package/dist/components/atoms/game/StateIndicator.d.ts +31 -0
- package/dist/components/atoms/game/index.d.ts +12 -0
- package/dist/components/atoms/index.d.ts +27 -0
- package/dist/components/index.css +11 -9
- package/dist/components/index.d.ts +6 -6951
- package/dist/components/index.js +5 -5
- package/dist/components/molecules/Accordion.d.ts +67 -0
- package/dist/components/molecules/Alert.d.ts +24 -0
- package/dist/components/molecules/Breadcrumb.d.ts +55 -0
- package/dist/components/molecules/ButtonGroup.d.ts +67 -0
- package/dist/components/molecules/Card.d.ts +44 -0
- package/dist/components/molecules/Container.d.ts +30 -0
- package/dist/components/molecules/Drawer.d.ts +46 -0
- package/dist/components/molecules/EmptyState.d.ts +25 -0
- package/dist/components/molecules/ErrorBoundary.d.ts +55 -0
- package/dist/components/molecules/ErrorState.d.ts +13 -0
- package/dist/components/molecules/FilterGroup.d.ts +54 -0
- package/dist/components/molecules/Flex.d.ts +43 -0
- package/dist/components/molecules/FloatingActionButton.d.ts +69 -0
- package/dist/components/molecules/FormField.d.ts +16 -0
- package/dist/components/molecules/FormSectionHeader.d.ts +30 -0
- package/dist/components/molecules/Grid.d.ts +54 -0
- package/dist/components/molecules/InputGroup.d.ts +24 -0
- package/dist/components/molecules/LoadingState.d.ts +7 -0
- package/dist/components/molecules/Menu.d.ts +40 -0
- package/dist/components/molecules/Modal.d.ts +26 -0
- package/dist/components/molecules/Pagination.d.ts +66 -0
- package/dist/components/molecules/Popover.d.ts +39 -0
- package/dist/components/molecules/QuizBlock.d.ts +20 -0
- package/dist/components/molecules/RelationSelect.d.ts +48 -0
- package/dist/components/molecules/RepeatableFormSection.d.ts +58 -0
- package/dist/components/molecules/ScaledDiagram.d.ts +20 -0
- package/dist/components/molecules/SearchInput.d.ts +60 -0
- package/dist/components/molecules/SidePanel.d.ts +47 -0
- package/dist/components/molecules/SimpleGrid.d.ts +27 -0
- package/dist/components/molecules/Skeleton.d.ts +35 -0
- package/dist/components/molecules/Tabs.d.ts +45 -0
- package/dist/components/molecules/Toast.d.ts +35 -0
- package/dist/components/molecules/Tooltip.d.ts +25 -0
- package/dist/components/molecules/ViolationAlert.d.ts +49 -0
- package/dist/components/molecules/WizardNavigation.d.ts +51 -0
- package/dist/components/molecules/WizardProgress.d.ts +42 -0
- package/dist/components/molecules/game/StatBadge.d.ts +27 -0
- package/dist/components/molecules/index.d.ts +38 -0
- package/dist/components/molecules/markdown/CodeBlock.d.ts +25 -0
- package/dist/components/molecules/markdown/MarkdownContent.d.ts +26 -0
- package/dist/components/organisms/CardGrid.d.ts +72 -0
- package/dist/components/organisms/Chart.d.ts +59 -0
- package/dist/components/organisms/CodeViewer.d.ts +67 -0
- package/dist/components/organisms/ComponentPatterns.d.ts +441 -0
- package/dist/components/organisms/ConfirmDialog.d.ts +50 -0
- package/dist/components/organisms/ContentRenderer.d.ts +23 -0
- package/dist/components/organisms/CustomPattern.d.ts +104 -0
- package/dist/components/organisms/DataTable.d.ts +63 -0
- package/dist/components/organisms/DetailPanel.d.ts +71 -0
- package/dist/components/organisms/DocumentViewer.d.ts +60 -0
- package/dist/components/organisms/DrawerSlot.d.ts +39 -0
- package/dist/components/organisms/Form.d.ts +203 -0
- package/dist/components/organisms/FormSection.d.ts +59 -0
- package/dist/components/organisms/GraphCanvas.d.ts +69 -0
- package/dist/components/organisms/Header.d.ts +110 -0
- package/dist/components/organisms/JazariStateMachine.d.ts +60 -0
- package/dist/components/organisms/LayoutPatterns.d.ts +181 -0
- package/dist/components/organisms/List.d.ts +76 -0
- package/dist/components/organisms/MasterDetail.d.ts +43 -0
- package/dist/components/organisms/MediaGallery.d.ts +66 -0
- package/dist/components/organisms/Meter.d.ts +58 -0
- package/dist/components/organisms/ModalSlot.d.ts +35 -0
- package/dist/components/organisms/Navigation.d.ts +68 -0
- package/dist/components/organisms/OrbitalVisualization.d.ts +48 -0
- package/dist/components/organisms/PageHeader.d.ts +59 -0
- package/dist/components/organisms/Section.d.ts +44 -0
- package/dist/components/organisms/Sidebar.d.ts +65 -0
- package/dist/components/organisms/SignaturePad.d.ts +44 -0
- package/dist/components/organisms/Split.d.ts +42 -0
- package/dist/components/organisms/StatCard.d.ts +66 -0
- package/dist/components/organisms/StateMachineView.d.ts +36 -0
- package/dist/components/organisms/Table.d.ts +99 -0
- package/dist/components/organisms/Timeline.d.ts +58 -0
- package/dist/components/organisms/ToastSlot.d.ts +38 -0
- package/dist/components/organisms/UISlotRenderer.d.ts +112 -0
- package/dist/components/organisms/WizardContainer.d.ts +160 -0
- package/dist/components/organisms/book/BookChapterView.d.ts +17 -0
- package/dist/components/organisms/book/BookCoverPage.d.ts +19 -0
- package/dist/components/organisms/book/BookNavBar.d.ts +18 -0
- package/dist/components/organisms/book/BookTableOfContents.d.ts +18 -0
- package/dist/components/organisms/book/BookViewer.d.ts +28 -0
- package/dist/components/organisms/book/index.d.ts +7 -0
- package/dist/components/organisms/book/types.d.ts +77 -0
- package/dist/components/organisms/game/BattleBoard.d.ts +167 -0
- package/dist/components/organisms/game/CanvasEffect.d.ts +68 -0
- package/dist/components/organisms/game/CastleBoard.d.ts +85 -0
- package/dist/components/organisms/game/DialogueBox.d.ts +73 -0
- package/dist/components/organisms/game/GameAudioProvider.d.ts +47 -0
- package/dist/components/organisms/game/GameAudioToggle.d.ts +28 -0
- package/dist/components/organisms/game/GameHud.d.ts +40 -0
- package/dist/components/organisms/game/GameMenu.d.ts +43 -0
- package/dist/components/organisms/game/GameOverScreen.d.ts +56 -0
- package/dist/components/organisms/game/InventoryPanel.d.ts +67 -0
- package/dist/components/organisms/game/IsometricCanvas.d.ts +123 -0
- package/dist/components/organisms/game/TraitSlot.d.ts +86 -0
- package/dist/components/organisms/game/TraitStateViewer.d.ts +53 -0
- package/dist/components/organisms/game/UncontrolledBattleBoard.d.ts +26 -0
- package/dist/components/organisms/game/WorldMapBoard.d.ts +147 -0
- package/dist/components/organisms/game/editor/editorUtils.d.ts +109 -0
- package/dist/components/organisms/game/editor/index.d.ts +9 -0
- package/dist/components/organisms/game/hooks/useBattleState.d.ts +35 -0
- package/dist/components/organisms/game/hooks/useCamera.d.ts +41 -0
- package/dist/components/organisms/game/hooks/useGameAudio.d.ts +47 -0
- package/dist/components/organisms/game/hooks/useImageCache.d.ts +16 -0
- package/dist/components/organisms/game/hooks/usePhysics2D.d.ts +45 -0
- package/dist/components/organisms/game/hooks/useSpriteAnimations.d.ts +43 -0
- package/dist/components/organisms/game/index.d.ts +36 -0
- package/dist/components/organisms/game/managers/PhysicsManager.d.ts +103 -0
- package/dist/components/organisms/game/types/effects.d.ts +253 -0
- package/dist/{isometric-ynNHVPZx.d.ts → components/organisms/game/types/isometric.d.ts} +4 -6
- package/dist/components/organisms/game/types/spriteAnimation.d.ts +73 -0
- package/dist/components/organisms/game/utils/canvasEffects.d.ts +50 -0
- package/dist/components/organisms/game/utils/combatPresets.d.ts +15 -0
- package/dist/components/organisms/game/utils/isometric.d.ts +61 -0
- package/dist/components/organisms/game/utils/spriteAnimation.d.ts +57 -0
- package/dist/components/organisms/game/utils/spriteSheetConstants.d.ts +16 -0
- package/dist/components/organisms/index.d.ts +37 -0
- package/dist/components/organisms/layout/DashboardGrid.d.ts +34 -0
- package/dist/components/organisms/layout/MasterDetail.d.ts +32 -0
- package/dist/components/organisms/layout/SplitPane.d.ts +34 -0
- package/dist/components/organisms/layout/TabbedContainer.d.ts +42 -0
- package/dist/components/organisms/layout/index.d.ts +9 -0
- package/dist/components/organisms/types.d.ts +65 -0
- package/dist/components/templates/AuthLayout.d.ts +14 -0
- package/dist/components/templates/BattleTemplate.d.ts +25 -0
- package/dist/components/templates/CastleTemplate.d.ts +23 -0
- package/dist/components/templates/CounterTemplate.d.ts +44 -0
- package/dist/components/templates/DashboardLayout.d.ts +32 -0
- package/dist/components/templates/GameShell.d.ts +33 -0
- package/dist/components/templates/GameTemplate.d.ts +36 -0
- package/dist/components/templates/GenericAppTemplate.d.ts +30 -0
- package/dist/components/templates/WorldMapTemplate.d.ts +29 -0
- package/dist/components/templates/index.d.ts +10 -0
- package/dist/components/templates/types.d.ts +17 -0
- package/dist/context/DesignThemeContext.d.ts +21 -0
- package/dist/{ThemeContext-D9xUORq5.d.ts → context/ThemeContext.d.ts} +15 -16
- package/dist/context/UISlotContext.d.ts +75 -0
- package/dist/context/UserContext.d.ts +111 -0
- package/dist/context/index.d.ts +6 -206
- package/dist/{event-bus-types-CjJduURa.d.ts → hooks/event-bus-types.d.ts} +4 -6
- package/dist/hooks/index.d.ts +24 -1090
- package/dist/hooks/useAgentChat.d.ts +104 -0
- package/dist/hooks/useAuthContext.d.ts +25 -0
- package/dist/hooks/useCompile.d.ts +22 -0
- package/dist/hooks/useDeepAgentGeneration.d.ts +46 -0
- package/dist/hooks/useEntities.d.ts +52 -0
- package/dist/hooks/useEntityData.d.ts +155 -0
- package/dist/hooks/useEntityMutations.d.ts +80 -0
- package/dist/hooks/useEventBus.d.ts +96 -0
- package/dist/hooks/useExtensions.d.ts +32 -0
- package/dist/hooks/useFileEditor.d.ts +32 -0
- package/dist/hooks/useFileSystem.d.ts +40 -0
- package/dist/hooks/useGitHub.d.ts +58 -0
- package/dist/hooks/useOrbitalHistory.d.ts +39 -0
- package/dist/hooks/useOrbitalMutations.d.ts +95 -0
- package/dist/hooks/usePreview.d.ts +57 -0
- package/dist/hooks/useQuerySingleton.d.ts +78 -0
- package/dist/hooks/useResolvedEntity.d.ts +32 -0
- package/dist/hooks/useTranslate.d.ts +35 -0
- package/dist/hooks/useUIEvents.d.ts +35 -0
- package/dist/{useUISlots-D0mttBSP.d.ts → hooks/useUISlots.d.ts} +8 -9
- package/dist/hooks/useValidation.d.ts +46 -0
- package/dist/lib/api-client.d.ts +42 -0
- package/dist/lib/cn.d.ts +6 -0
- package/dist/lib/debug.d.ts +43 -0
- package/dist/lib/debugRegistry.d.ts +29 -0
- package/dist/lib/debugUtils.d.ts +27 -0
- package/dist/lib/entityDebug.d.ts +38 -0
- package/dist/lib/getNestedValue.d.ts +33 -0
- package/dist/lib/guardRegistry.d.ts +32 -0
- package/dist/lib/index.d.ts +17 -426
- package/dist/lib/jazari/svg-paths.d.ts +61 -0
- package/dist/lib/parseContentSegments.d.ts +41 -0
- package/dist/lib/tickRegistry.d.ts +40 -0
- package/dist/lib/traitRegistry.d.ts +34 -0
- package/dist/lib/verificationRegistry.d.ts +107 -0
- package/dist/{cn-BoBXsxuX.d.ts → lib/visualizer/index.d.ts} +18 -69
- package/dist/locales/index.d.ts +5 -7
- package/dist/providers/EventBusProvider.d.ts +60 -0
- package/dist/providers/FetchedDataProvider.d.ts +105 -0
- package/dist/providers/OfflineModeProvider.d.ts +79 -0
- package/dist/providers/OrbitalProvider.d.ts +101 -0
- package/dist/providers/SelectionProvider.d.ts +81 -0
- package/dist/providers/VerificationProvider.d.ts +63 -0
- package/dist/providers/index.css +11 -9
- package/dist/providers/index.d.ts +16 -464
- package/dist/providers/index.js +3 -3
- package/dist/renderer/client-effect-executor.d.ts +68 -0
- package/dist/renderer/data-resolver.d.ts +68 -0
- package/dist/renderer/index.d.ts +22 -519
- package/dist/renderer/index.js +1 -1
- package/dist/renderer/init.d.ts +14 -0
- package/dist/renderer/navigation.d.ts +142 -0
- package/dist/{offline-executor-CHr4uAhf.d.ts → renderer/offline-executor.d.ts} +9 -172
- package/dist/renderer/pattern-resolver.d.ts +91 -0
- package/dist/renderer/slot-definitions.d.ts +45 -0
- package/dist/renderer/types.d.ts +160 -0
- package/dist/renderer/useClientEffects.d.ts +88 -0
- package/dist/stores/entityStore.d.ts +99 -0
- package/dist/stores/filtering.d.ts +51 -0
- package/dist/stores/index.d.ts +4 -148
- package/package.json +12 -10
- package/dist/components/organisms/game/three/index.d.ts +0 -1162
- package/dist/{chunk-FZJ73RDM.js → chunk-RIZ76XRF.js} +1 -1
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pattern Resolver Initialization
|
|
3
|
+
*
|
|
4
|
+
* Loads pattern registry and component mapping from orbital-shared/patterns/
|
|
5
|
+
* and initializes the pattern resolver at app startup.
|
|
6
|
+
*
|
|
7
|
+
* @packageDocumentation
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Initialize the pattern resolver with shared pattern data.
|
|
11
|
+
* Must be called once at app startup before any pattern rendering.
|
|
12
|
+
* @returns The number of patterns initialized
|
|
13
|
+
*/
|
|
14
|
+
export declare function initializePatterns(): number;
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* NavigationContext - Schema-Driven Navigation for Orbital Runtime
|
|
3
|
+
*
|
|
4
|
+
* Provides navigation within the orbital schema without react-router dependency.
|
|
5
|
+
* Navigation works by:
|
|
6
|
+
* 1. Matching path to a page in the schema
|
|
7
|
+
* 2. Extracting route params (e.g., /inspection/:id → { id: "123" })
|
|
8
|
+
* 3. Switching active page
|
|
9
|
+
* 4. Triggering INIT with merged payload
|
|
10
|
+
*
|
|
11
|
+
* This approach works whether OrbitalRuntime is standalone or embedded in another app.
|
|
12
|
+
*
|
|
13
|
+
* Used by both:
|
|
14
|
+
* - Builder runtime (interpreted execution)
|
|
15
|
+
* - Compiled shells (generated applications)
|
|
16
|
+
*
|
|
17
|
+
* @packageDocumentation
|
|
18
|
+
*/
|
|
19
|
+
import React from 'react';
|
|
20
|
+
import type { OrbitalSchema, OrbitalPage } from '@almadar/core';
|
|
21
|
+
/**
|
|
22
|
+
* Match a concrete path against a pattern with :param placeholders.
|
|
23
|
+
* Returns null if no match, or the extracted params if match.
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* matchPath('/inspection/:id', '/inspection/123') // { id: '123' }
|
|
27
|
+
* matchPath('/users/:userId/posts/:postId', '/users/42/posts/7') // { userId: '42', postId: '7' }
|
|
28
|
+
* matchPath('/about', '/about') // {}
|
|
29
|
+
* matchPath('/about', '/contact') // null
|
|
30
|
+
*/
|
|
31
|
+
export declare function matchPath(pattern: string, path: string): Record<string, string> | null;
|
|
32
|
+
/**
|
|
33
|
+
* Extract route params from a path given its pattern.
|
|
34
|
+
* Wrapper around matchPath for explicit use.
|
|
35
|
+
*/
|
|
36
|
+
export declare function extractRouteParams(pattern: string, path: string): Record<string, string>;
|
|
37
|
+
/**
|
|
38
|
+
* Check if a path matches a pattern.
|
|
39
|
+
*/
|
|
40
|
+
export declare function pathMatches(pattern: string, path: string): boolean;
|
|
41
|
+
/**
|
|
42
|
+
* Find a page in the schema by matching its path pattern against a concrete path.
|
|
43
|
+
* Returns the page and extracted route params.
|
|
44
|
+
*/
|
|
45
|
+
export declare function findPageByPath(schema: OrbitalSchema, path: string): {
|
|
46
|
+
page: OrbitalPage;
|
|
47
|
+
params: Record<string, string>;
|
|
48
|
+
orbitalName: string;
|
|
49
|
+
} | null;
|
|
50
|
+
/**
|
|
51
|
+
* Find a page by name.
|
|
52
|
+
*/
|
|
53
|
+
export declare function findPageByName(schema: OrbitalSchema, pageName: string): {
|
|
54
|
+
page: OrbitalPage;
|
|
55
|
+
orbitalName: string;
|
|
56
|
+
} | null;
|
|
57
|
+
/**
|
|
58
|
+
* Get the first page in the schema (default page).
|
|
59
|
+
*/
|
|
60
|
+
export declare function getDefaultPage(schema: OrbitalSchema): {
|
|
61
|
+
page: OrbitalPage;
|
|
62
|
+
orbitalName: string;
|
|
63
|
+
} | null;
|
|
64
|
+
/**
|
|
65
|
+
* Get all pages from the schema.
|
|
66
|
+
*/
|
|
67
|
+
export declare function getAllPages(schema: OrbitalSchema): Array<{
|
|
68
|
+
page: OrbitalPage;
|
|
69
|
+
orbitalName: string;
|
|
70
|
+
}>;
|
|
71
|
+
export interface NavigationState {
|
|
72
|
+
/** Current active page name */
|
|
73
|
+
activePage: string;
|
|
74
|
+
/** Current path (for URL sync) */
|
|
75
|
+
currentPath: string;
|
|
76
|
+
/** Payload to pass to INIT when page loads */
|
|
77
|
+
initPayload: Record<string, unknown>;
|
|
78
|
+
/** Navigation counter (increments on each navigation) */
|
|
79
|
+
navigationId: number;
|
|
80
|
+
}
|
|
81
|
+
export interface NavigationContextValue {
|
|
82
|
+
/** Current navigation state */
|
|
83
|
+
state: NavigationState;
|
|
84
|
+
/** Navigate to a path with optional payload */
|
|
85
|
+
navigateTo: (path: string, payload?: Record<string, unknown>) => void;
|
|
86
|
+
/** Navigate to a page by name with optional payload */
|
|
87
|
+
navigateToPage: (pageName: string, payload?: Record<string, unknown>) => void;
|
|
88
|
+
/** The schema being navigated */
|
|
89
|
+
schema: OrbitalSchema;
|
|
90
|
+
/** Whether navigation is ready (schema loaded) */
|
|
91
|
+
isReady: boolean;
|
|
92
|
+
}
|
|
93
|
+
export interface NavigationProviderProps {
|
|
94
|
+
/** The schema to navigate within */
|
|
95
|
+
schema: OrbitalSchema;
|
|
96
|
+
/** Initial page name (optional, defaults to first page) */
|
|
97
|
+
initialPage?: string;
|
|
98
|
+
/** Whether to update browser URL on navigation (default: true) */
|
|
99
|
+
updateUrl?: boolean;
|
|
100
|
+
/** Callback when navigation occurs */
|
|
101
|
+
onNavigate?: (pageName: string, path: string, payload: Record<string, unknown>) => void;
|
|
102
|
+
/** Children */
|
|
103
|
+
children: React.ReactNode;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* NavigationProvider - Provides schema-driven navigation context
|
|
107
|
+
*
|
|
108
|
+
* @example
|
|
109
|
+
* ```tsx
|
|
110
|
+
* <NavigationProvider schema={mySchema}>
|
|
111
|
+
* <OrbitalRuntimeContent />
|
|
112
|
+
* </NavigationProvider>
|
|
113
|
+
* ```
|
|
114
|
+
*/
|
|
115
|
+
export declare function NavigationProvider({ schema, initialPage, updateUrl, onNavigate, children, }: NavigationProviderProps): React.ReactElement;
|
|
116
|
+
/**
|
|
117
|
+
* Hook to access navigation context.
|
|
118
|
+
* Returns null if not within NavigationProvider.
|
|
119
|
+
*/
|
|
120
|
+
export declare function useNavigation(): NavigationContextValue | null;
|
|
121
|
+
/**
|
|
122
|
+
* Hook to get the navigateTo function.
|
|
123
|
+
* Returns a no-op function if not within NavigationProvider.
|
|
124
|
+
*/
|
|
125
|
+
export declare function useNavigateTo(): (path: string, payload?: Record<string, unknown>) => void;
|
|
126
|
+
/**
|
|
127
|
+
* Hook to get current navigation state.
|
|
128
|
+
*/
|
|
129
|
+
export declare function useNavigationState(): NavigationState | null;
|
|
130
|
+
/**
|
|
131
|
+
* Hook to get the current INIT payload (for passing to trait INIT events).
|
|
132
|
+
*/
|
|
133
|
+
export declare function useInitPayload(): Record<string, unknown>;
|
|
134
|
+
/**
|
|
135
|
+
* Hook to get current active page name.
|
|
136
|
+
*/
|
|
137
|
+
export declare function useActivePage(): string | null;
|
|
138
|
+
/**
|
|
139
|
+
* Hook to get navigation ID (changes on each navigation, useful for triggering effects).
|
|
140
|
+
*/
|
|
141
|
+
export declare function useNavigationId(): number;
|
|
142
|
+
export default NavigationProvider;
|
|
@@ -1,164 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Shared Renderer Types
|
|
3
|
-
*
|
|
4
|
-
* Type definitions used by both Builder and compiled shells for
|
|
5
|
-
* the dual execution model. These types define the contract between
|
|
6
|
-
* server and client for effect execution.
|
|
7
|
-
*
|
|
8
|
-
* @packageDocumentation
|
|
9
|
-
*/
|
|
10
|
-
/**
|
|
11
|
-
* A client effect is a tuple where the first element is the effect type
|
|
12
|
-
* and the remaining elements are the arguments.
|
|
13
|
-
*
|
|
14
|
-
* @example
|
|
15
|
-
* ['render-ui', 'main', { type: 'entity-table', ... }]
|
|
16
|
-
* ['navigate', '/tasks/123']
|
|
17
|
-
* ['notify', 'Task created!', { type: 'success' }]
|
|
18
|
-
* ['emit', 'TASK_CREATED', { id: '123' }]
|
|
19
|
-
*/
|
|
20
|
-
type ClientEffect = ['render-ui', string, PatternConfig | null] | ['navigate', string, Record<string, unknown>?] | ['notify', string, NotifyOptions?] | ['emit', string, unknown?];
|
|
21
|
-
/**
|
|
22
|
-
* Options for notify effect
|
|
23
|
-
*/
|
|
24
|
-
interface NotifyOptions {
|
|
25
|
-
type?: 'success' | 'error' | 'info' | 'warning';
|
|
26
|
-
duration?: number;
|
|
27
|
-
}
|
|
28
|
-
/**
|
|
29
|
-
* Configuration for a pattern to render in a slot.
|
|
30
|
-
* This is what render-ui effects carry as their payload.
|
|
31
|
-
*/
|
|
32
|
-
interface PatternConfig {
|
|
33
|
-
/** Pattern type from registry (e.g., 'entity-table', 'form-section') */
|
|
34
|
-
type: string;
|
|
35
|
-
/** Entity name for data binding */
|
|
36
|
-
entity?: string;
|
|
37
|
-
/** Additional props for the pattern component */
|
|
38
|
-
[key: string]: unknown;
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* Resolved pattern with component information from component-mapping.json
|
|
42
|
-
*/
|
|
43
|
-
interface ResolvedPattern {
|
|
44
|
-
/** Component name (e.g., 'DataTable') */
|
|
45
|
-
component: string;
|
|
46
|
-
/** Import path for the component */
|
|
47
|
-
importPath: string;
|
|
48
|
-
/** Pattern category (e.g., 'display', 'form') */
|
|
49
|
-
category: string;
|
|
50
|
-
/** Validated and normalized props */
|
|
51
|
-
validatedProps: Record<string, unknown>;
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* Response from server after processing an event.
|
|
55
|
-
* This is the unified response format for both Builder and compiled shells.
|
|
56
|
-
*/
|
|
57
|
-
interface EventResponse {
|
|
58
|
-
/** Whether the event was processed successfully */
|
|
59
|
-
success: boolean;
|
|
60
|
-
/** New state after transition (if transition occurred) */
|
|
61
|
-
newState?: string;
|
|
62
|
-
/** Data fetched by server effects (e.g., { Task: [...] }) */
|
|
63
|
-
data?: Record<string, unknown[]>;
|
|
64
|
-
/** Client effects to execute (render-ui, navigate, notify, emit) */
|
|
65
|
-
clientEffects?: ClientEffect[];
|
|
66
|
-
/** Results of individual effect executions (for debugging) */
|
|
67
|
-
effectResults?: Array<{
|
|
68
|
-
effect: string;
|
|
69
|
-
success: boolean;
|
|
70
|
-
data?: unknown;
|
|
71
|
-
error?: string;
|
|
72
|
-
}>;
|
|
73
|
-
/** Error message if success is false */
|
|
74
|
-
error?: string;
|
|
75
|
-
}
|
|
76
|
-
/**
|
|
77
|
-
* Configuration for the client effect executor.
|
|
78
|
-
* Provides implementations for each effect type.
|
|
79
|
-
*/
|
|
80
|
-
interface ClientEffectExecutorConfig {
|
|
81
|
-
/**
|
|
82
|
-
* Render a pattern to a slot.
|
|
83
|
-
* Called for 'render-ui' effects.
|
|
84
|
-
*/
|
|
85
|
-
renderToSlot: (slot: string, pattern: PatternConfig | null) => void;
|
|
86
|
-
/**
|
|
87
|
-
* Navigate to a route.
|
|
88
|
-
* Called for 'navigate' effects.
|
|
89
|
-
*/
|
|
90
|
-
navigate: (path: string, params?: Record<string, unknown>) => void;
|
|
91
|
-
/**
|
|
92
|
-
* Show a notification.
|
|
93
|
-
* Called for 'notify' effects.
|
|
94
|
-
*/
|
|
95
|
-
notify: (message: string, options?: NotifyOptions) => void;
|
|
96
|
-
/**
|
|
97
|
-
* Emit an event to the event bus.
|
|
98
|
-
* Called for 'emit' effects.
|
|
99
|
-
*/
|
|
100
|
-
eventBus: {
|
|
101
|
-
emit: (event: string, payload?: unknown) => void;
|
|
102
|
-
};
|
|
103
|
-
/**
|
|
104
|
-
* Optional: Data from server response for render-ui.
|
|
105
|
-
* Components can use this to access fetched entity data.
|
|
106
|
-
*/
|
|
107
|
-
data?: Record<string, unknown[]>;
|
|
108
|
-
/**
|
|
109
|
-
* Optional: Callback when all effects have been executed.
|
|
110
|
-
*/
|
|
111
|
-
onComplete?: () => void;
|
|
112
|
-
}
|
|
113
|
-
/**
|
|
114
|
-
* Valid UI slot names
|
|
115
|
-
*/
|
|
116
|
-
type UISlot = 'main' | 'sidebar' | 'modal' | 'drawer' | 'overlay' | 'center' | 'toast' | 'hud-top' | 'hud-bottom' | 'floating';
|
|
117
|
-
/**
|
|
118
|
-
* Slot type classification
|
|
119
|
-
*/
|
|
120
|
-
type SlotType = 'inline' | 'portal';
|
|
121
|
-
/**
|
|
122
|
-
* Definition of a slot including its rendering behavior
|
|
123
|
-
*/
|
|
124
|
-
interface SlotDefinition {
|
|
125
|
-
/** Slot name */
|
|
126
|
-
name: UISlot;
|
|
127
|
-
/** Whether to render inline or via portal */
|
|
128
|
-
type: SlotType;
|
|
129
|
-
/** For portal slots: where to render (default: document.body) */
|
|
130
|
-
portalTarget?: string;
|
|
131
|
-
/** Z-index for portal slots */
|
|
132
|
-
zIndex?: number;
|
|
133
|
-
}
|
|
134
|
-
/**
|
|
135
|
-
* Context for resolving entity data.
|
|
136
|
-
* Supports multiple data sources with priority.
|
|
137
|
-
*/
|
|
138
|
-
interface DataContext {
|
|
139
|
-
/** Server-provided data (highest priority) */
|
|
140
|
-
fetchedData?: Record<string, unknown[]>;
|
|
141
|
-
/** In-memory mock data (for Builder preview) */
|
|
142
|
-
entityStore?: {
|
|
143
|
-
getRecords: (entityName: string) => unknown[];
|
|
144
|
-
};
|
|
145
|
-
/** Query singleton for filtering */
|
|
146
|
-
querySingleton?: {
|
|
147
|
-
getFilters: (queryRef: string) => Record<string, unknown>;
|
|
148
|
-
};
|
|
149
|
-
}
|
|
150
|
-
/**
|
|
151
|
-
* Result of data resolution
|
|
152
|
-
*/
|
|
153
|
-
interface DataResolution {
|
|
154
|
-
/** Resolved data array */
|
|
155
|
-
data: unknown[];
|
|
156
|
-
/** Whether data is still loading */
|
|
157
|
-
loading: boolean;
|
|
158
|
-
/** Error if resolution failed */
|
|
159
|
-
error?: Error;
|
|
160
|
-
}
|
|
161
|
-
|
|
162
1
|
/**
|
|
163
2
|
* Offline Effect Executor
|
|
164
3
|
*
|
|
@@ -172,11 +11,11 @@ interface DataResolution {
|
|
|
172
11
|
*
|
|
173
12
|
* @packageDocumentation
|
|
174
13
|
*/
|
|
175
|
-
|
|
14
|
+
import type { ClientEffect, ClientEffectExecutorConfig, EventResponse } from './types';
|
|
176
15
|
/**
|
|
177
16
|
* Effect that needs to be synced to server when online
|
|
178
17
|
*/
|
|
179
|
-
interface PendingSyncEffect {
|
|
18
|
+
export interface PendingSyncEffect {
|
|
180
19
|
/** Unique ID for this effect */
|
|
181
20
|
id: string;
|
|
182
21
|
/** Timestamp when effect was queued */
|
|
@@ -193,7 +32,7 @@ interface PendingSyncEffect {
|
|
|
193
32
|
/**
|
|
194
33
|
* Configuration for offline executor
|
|
195
34
|
*/
|
|
196
|
-
interface OfflineExecutorConfig extends ClientEffectExecutorConfig {
|
|
35
|
+
export interface OfflineExecutorConfig extends ClientEffectExecutorConfig {
|
|
197
36
|
/**
|
|
198
37
|
* Mock data provider for simulating fetch responses.
|
|
199
38
|
* Returns data for a given entity name.
|
|
@@ -221,7 +60,7 @@ interface OfflineExecutorConfig extends ClientEffectExecutorConfig {
|
|
|
221
60
|
/**
|
|
222
61
|
* Offline executor state
|
|
223
62
|
*/
|
|
224
|
-
interface OfflineExecutorState {
|
|
63
|
+
export interface OfflineExecutorState {
|
|
225
64
|
/** Whether we're in offline mode */
|
|
226
65
|
isOffline: boolean;
|
|
227
66
|
/** Pending effects waiting for sync */
|
|
@@ -261,7 +100,7 @@ interface OfflineExecutorState {
|
|
|
261
100
|
* await executor.syncPendingEffects(serverUrl);
|
|
262
101
|
* ```
|
|
263
102
|
*/
|
|
264
|
-
declare class OfflineExecutor {
|
|
103
|
+
export declare class OfflineExecutor {
|
|
265
104
|
private config;
|
|
266
105
|
private state;
|
|
267
106
|
private storage;
|
|
@@ -341,11 +180,11 @@ declare class OfflineExecutor {
|
|
|
341
180
|
* });
|
|
342
181
|
* ```
|
|
343
182
|
*/
|
|
344
|
-
declare function createOfflineExecutor(config: OfflineExecutorConfig): OfflineExecutor;
|
|
183
|
+
export declare function createOfflineExecutor(config: OfflineExecutorConfig): OfflineExecutor;
|
|
345
184
|
/**
|
|
346
185
|
* Options for useOfflineExecutor hook
|
|
347
186
|
*/
|
|
348
|
-
interface UseOfflineExecutorOptions extends OfflineExecutorConfig {
|
|
187
|
+
export interface UseOfflineExecutorOptions extends OfflineExecutorConfig {
|
|
349
188
|
/** Server URL for syncing */
|
|
350
189
|
serverUrl?: string;
|
|
351
190
|
/** Auth token for server requests */
|
|
@@ -356,7 +195,7 @@ interface UseOfflineExecutorOptions extends OfflineExecutorConfig {
|
|
|
356
195
|
/**
|
|
357
196
|
* Result of useOfflineExecutor hook
|
|
358
197
|
*/
|
|
359
|
-
interface UseOfflineExecutorResult {
|
|
198
|
+
export interface UseOfflineExecutorResult {
|
|
360
199
|
/** Current executor state */
|
|
361
200
|
state: OfflineExecutorState;
|
|
362
201
|
/** Whether we're offline */
|
|
@@ -396,6 +235,4 @@ interface UseOfflineExecutorResult {
|
|
|
396
235
|
* }
|
|
397
236
|
* ```
|
|
398
237
|
*/
|
|
399
|
-
declare function useOfflineExecutor(options: UseOfflineExecutorOptions): UseOfflineExecutorResult;
|
|
400
|
-
|
|
401
|
-
export { type ClientEffect as C, type DataContext as D, type EventResponse as E, type NotifyOptions as N, OfflineExecutor as O, type PatternConfig as P, type ResolvedPattern as R, type SlotDefinition as S, type UseOfflineExecutorResult as U, type UseOfflineExecutorOptions as a, type ClientEffectExecutorConfig as b, type DataResolution as c, type UISlot as d, type SlotType as e, type OfflineExecutorConfig as f, type OfflineExecutorState as g, type PendingSyncEffect as h, createOfflineExecutor as i, useOfflineExecutor as u };
|
|
238
|
+
export declare function useOfflineExecutor(options: UseOfflineExecutorOptions): UseOfflineExecutorResult;
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pattern Resolver
|
|
3
|
+
*
|
|
4
|
+
* Resolves pattern configurations to component information.
|
|
5
|
+
* Uses the central pattern registry and component mapping from orbital-shared/patterns/.
|
|
6
|
+
*
|
|
7
|
+
* This is the shared logic used by both Builder's PatternRenderer and
|
|
8
|
+
* the compiled shell's UISlotRenderer.
|
|
9
|
+
*
|
|
10
|
+
* @packageDocumentation
|
|
11
|
+
*/
|
|
12
|
+
import type { PatternConfig, ResolvedPattern } from './types';
|
|
13
|
+
/**
|
|
14
|
+
* Component mapping entry from component-mapping.json
|
|
15
|
+
*/
|
|
16
|
+
interface ComponentMappingEntry {
|
|
17
|
+
component: string;
|
|
18
|
+
importPath: string;
|
|
19
|
+
category: string;
|
|
20
|
+
deprecated?: boolean;
|
|
21
|
+
replacedBy?: string;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Pattern definition from registry.json
|
|
25
|
+
*/
|
|
26
|
+
interface PatternDefinition {
|
|
27
|
+
type: string;
|
|
28
|
+
category: string;
|
|
29
|
+
description: string;
|
|
30
|
+
propsSchema?: Record<string, {
|
|
31
|
+
required?: boolean;
|
|
32
|
+
types?: string[];
|
|
33
|
+
description?: string;
|
|
34
|
+
}>;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Initialize the pattern resolver with mappings.
|
|
38
|
+
* Called at app startup with data from JSON files.
|
|
39
|
+
*/
|
|
40
|
+
export declare function initializePatternResolver(config: {
|
|
41
|
+
componentMapping: Record<string, ComponentMappingEntry>;
|
|
42
|
+
patternRegistry: Record<string, PatternDefinition>;
|
|
43
|
+
}): void;
|
|
44
|
+
/**
|
|
45
|
+
* Set component mapping (alternative to full initialization).
|
|
46
|
+
*/
|
|
47
|
+
export declare function setComponentMapping(mapping: Record<string, ComponentMappingEntry>): void;
|
|
48
|
+
/**
|
|
49
|
+
* Set pattern registry (alternative to full initialization).
|
|
50
|
+
*/
|
|
51
|
+
export declare function setPatternRegistry(registry: Record<string, PatternDefinition>): void;
|
|
52
|
+
/**
|
|
53
|
+
* Resolve a pattern configuration to component information.
|
|
54
|
+
*
|
|
55
|
+
* @param config - Pattern configuration from render-ui effect
|
|
56
|
+
* @returns Resolved pattern with component name, import path, and validated props
|
|
57
|
+
* @throws Error if pattern type is unknown
|
|
58
|
+
*
|
|
59
|
+
* @example
|
|
60
|
+
* ```typescript
|
|
61
|
+
* const resolved = resolvePattern({
|
|
62
|
+
* type: 'entity-table',
|
|
63
|
+
* entity: 'Task',
|
|
64
|
+
* columns: ['title', 'status']
|
|
65
|
+
* });
|
|
66
|
+
* // resolved.component === 'DataTable'
|
|
67
|
+
* // resolved.importPath === '@/components/organisms/DataTable'
|
|
68
|
+
* ```
|
|
69
|
+
*/
|
|
70
|
+
export declare function resolvePattern(config: PatternConfig): ResolvedPattern;
|
|
71
|
+
/**
|
|
72
|
+
* Check if a pattern type is known.
|
|
73
|
+
*/
|
|
74
|
+
export declare function isKnownPattern(type: string): boolean;
|
|
75
|
+
/**
|
|
76
|
+
* Get all known pattern types.
|
|
77
|
+
*/
|
|
78
|
+
export declare function getKnownPatterns(): string[];
|
|
79
|
+
/**
|
|
80
|
+
* Get patterns by category.
|
|
81
|
+
*/
|
|
82
|
+
export declare function getPatternsByCategory(category: string): string[];
|
|
83
|
+
/**
|
|
84
|
+
* Get the component mapping for a pattern type.
|
|
85
|
+
*/
|
|
86
|
+
export declare function getPatternMapping(type: string): ComponentMappingEntry | undefined;
|
|
87
|
+
/**
|
|
88
|
+
* Get the pattern definition from the registry.
|
|
89
|
+
*/
|
|
90
|
+
export declare function getPatternDefinition(type: string): PatternDefinition | undefined;
|
|
91
|
+
export {};
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Slot Definitions
|
|
3
|
+
*
|
|
4
|
+
* Defines the available UI slots and their rendering behavior.
|
|
5
|
+
* Slots are either inline (rendered in the component tree) or
|
|
6
|
+
* portal (rendered to document.body via React Portal).
|
|
7
|
+
*
|
|
8
|
+
* @packageDocumentation
|
|
9
|
+
*/
|
|
10
|
+
import type { UISlot, SlotDefinition, SlotType } from './types';
|
|
11
|
+
/**
|
|
12
|
+
* Definitions for all available UI slots.
|
|
13
|
+
*
|
|
14
|
+
* Inline slots render within the component hierarchy.
|
|
15
|
+
* Portal slots render to document.body, breaking out of overflow containers.
|
|
16
|
+
*/
|
|
17
|
+
export declare const SLOT_DEFINITIONS: Record<UISlot, SlotDefinition>;
|
|
18
|
+
/**
|
|
19
|
+
* Get the slot definition for a slot name.
|
|
20
|
+
*/
|
|
21
|
+
export declare function getSlotDefinition(slot: UISlot): SlotDefinition;
|
|
22
|
+
/**
|
|
23
|
+
* Check if a slot is a portal slot.
|
|
24
|
+
*/
|
|
25
|
+
export declare function isPortalSlot(slot: UISlot): boolean;
|
|
26
|
+
/**
|
|
27
|
+
* Check if a slot is an inline slot.
|
|
28
|
+
*/
|
|
29
|
+
export declare function isInlineSlot(slot: UISlot): boolean;
|
|
30
|
+
/**
|
|
31
|
+
* Get all slots of a specific type.
|
|
32
|
+
*/
|
|
33
|
+
export declare function getSlotsByType(type: SlotType): UISlot[];
|
|
34
|
+
/**
|
|
35
|
+
* Get all inline slots.
|
|
36
|
+
*/
|
|
37
|
+
export declare function getInlineSlots(): UISlot[];
|
|
38
|
+
/**
|
|
39
|
+
* Get all portal slots.
|
|
40
|
+
*/
|
|
41
|
+
export declare function getPortalSlots(): UISlot[];
|
|
42
|
+
/**
|
|
43
|
+
* All valid slot names.
|
|
44
|
+
*/
|
|
45
|
+
export declare const ALL_SLOTS: UISlot[];
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared Renderer Types
|
|
3
|
+
*
|
|
4
|
+
* Type definitions used by both Builder and compiled shells for
|
|
5
|
+
* the dual execution model. These types define the contract between
|
|
6
|
+
* server and client for effect execution.
|
|
7
|
+
*
|
|
8
|
+
* @packageDocumentation
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* A client effect is a tuple where the first element is the effect type
|
|
12
|
+
* and the remaining elements are the arguments.
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ['render-ui', 'main', { type: 'entity-table', ... }]
|
|
16
|
+
* ['navigate', '/tasks/123']
|
|
17
|
+
* ['notify', 'Task created!', { type: 'success' }]
|
|
18
|
+
* ['emit', 'TASK_CREATED', { id: '123' }]
|
|
19
|
+
*/
|
|
20
|
+
export type ClientEffect = ['render-ui', string, PatternConfig | null] | ['navigate', string, Record<string, unknown>?] | ['notify', string, NotifyOptions?] | ['emit', string, unknown?];
|
|
21
|
+
/**
|
|
22
|
+
* Options for notify effect
|
|
23
|
+
*/
|
|
24
|
+
export interface NotifyOptions {
|
|
25
|
+
type?: 'success' | 'error' | 'info' | 'warning';
|
|
26
|
+
duration?: number;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Configuration for a pattern to render in a slot.
|
|
30
|
+
* This is what render-ui effects carry as their payload.
|
|
31
|
+
*/
|
|
32
|
+
export interface PatternConfig {
|
|
33
|
+
/** Pattern type from registry (e.g., 'entity-table', 'form-section') */
|
|
34
|
+
type: string;
|
|
35
|
+
/** Entity name for data binding */
|
|
36
|
+
entity?: string;
|
|
37
|
+
/** Additional props for the pattern component */
|
|
38
|
+
[key: string]: unknown;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Resolved pattern with component information from component-mapping.json
|
|
42
|
+
*/
|
|
43
|
+
export interface ResolvedPattern {
|
|
44
|
+
/** Component name (e.g., 'DataTable') */
|
|
45
|
+
component: string;
|
|
46
|
+
/** Import path for the component */
|
|
47
|
+
importPath: string;
|
|
48
|
+
/** Pattern category (e.g., 'display', 'form') */
|
|
49
|
+
category: string;
|
|
50
|
+
/** Validated and normalized props */
|
|
51
|
+
validatedProps: Record<string, unknown>;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Response from server after processing an event.
|
|
55
|
+
* This is the unified response format for both Builder and compiled shells.
|
|
56
|
+
*/
|
|
57
|
+
export interface EventResponse {
|
|
58
|
+
/** Whether the event was processed successfully */
|
|
59
|
+
success: boolean;
|
|
60
|
+
/** New state after transition (if transition occurred) */
|
|
61
|
+
newState?: string;
|
|
62
|
+
/** Data fetched by server effects (e.g., { Task: [...] }) */
|
|
63
|
+
data?: Record<string, unknown[]>;
|
|
64
|
+
/** Client effects to execute (render-ui, navigate, notify, emit) */
|
|
65
|
+
clientEffects?: ClientEffect[];
|
|
66
|
+
/** Results of individual effect executions (for debugging) */
|
|
67
|
+
effectResults?: Array<{
|
|
68
|
+
effect: string;
|
|
69
|
+
success: boolean;
|
|
70
|
+
data?: unknown;
|
|
71
|
+
error?: string;
|
|
72
|
+
}>;
|
|
73
|
+
/** Error message if success is false */
|
|
74
|
+
error?: string;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Configuration for the client effect executor.
|
|
78
|
+
* Provides implementations for each effect type.
|
|
79
|
+
*/
|
|
80
|
+
export interface ClientEffectExecutorConfig {
|
|
81
|
+
/**
|
|
82
|
+
* Render a pattern to a slot.
|
|
83
|
+
* Called for 'render-ui' effects.
|
|
84
|
+
*/
|
|
85
|
+
renderToSlot: (slot: string, pattern: PatternConfig | null) => void;
|
|
86
|
+
/**
|
|
87
|
+
* Navigate to a route.
|
|
88
|
+
* Called for 'navigate' effects.
|
|
89
|
+
*/
|
|
90
|
+
navigate: (path: string, params?: Record<string, unknown>) => void;
|
|
91
|
+
/**
|
|
92
|
+
* Show a notification.
|
|
93
|
+
* Called for 'notify' effects.
|
|
94
|
+
*/
|
|
95
|
+
notify: (message: string, options?: NotifyOptions) => void;
|
|
96
|
+
/**
|
|
97
|
+
* Emit an event to the event bus.
|
|
98
|
+
* Called for 'emit' effects.
|
|
99
|
+
*/
|
|
100
|
+
eventBus: {
|
|
101
|
+
emit: (event: string, payload?: unknown) => void;
|
|
102
|
+
};
|
|
103
|
+
/**
|
|
104
|
+
* Optional: Data from server response for render-ui.
|
|
105
|
+
* Components can use this to access fetched entity data.
|
|
106
|
+
*/
|
|
107
|
+
data?: Record<string, unknown[]>;
|
|
108
|
+
/**
|
|
109
|
+
* Optional: Callback when all effects have been executed.
|
|
110
|
+
*/
|
|
111
|
+
onComplete?: () => void;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Valid UI slot names
|
|
115
|
+
*/
|
|
116
|
+
export type UISlot = 'main' | 'sidebar' | 'modal' | 'drawer' | 'overlay' | 'center' | 'toast' | 'hud-top' | 'hud-bottom' | 'floating';
|
|
117
|
+
/**
|
|
118
|
+
* Slot type classification
|
|
119
|
+
*/
|
|
120
|
+
export type SlotType = 'inline' | 'portal';
|
|
121
|
+
/**
|
|
122
|
+
* Definition of a slot including its rendering behavior
|
|
123
|
+
*/
|
|
124
|
+
export interface SlotDefinition {
|
|
125
|
+
/** Slot name */
|
|
126
|
+
name: UISlot;
|
|
127
|
+
/** Whether to render inline or via portal */
|
|
128
|
+
type: SlotType;
|
|
129
|
+
/** For portal slots: where to render (default: document.body) */
|
|
130
|
+
portalTarget?: string;
|
|
131
|
+
/** Z-index for portal slots */
|
|
132
|
+
zIndex?: number;
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Context for resolving entity data.
|
|
136
|
+
* Supports multiple data sources with priority.
|
|
137
|
+
*/
|
|
138
|
+
export interface DataContext {
|
|
139
|
+
/** Server-provided data (highest priority) */
|
|
140
|
+
fetchedData?: Record<string, unknown[]>;
|
|
141
|
+
/** In-memory mock data (for Builder preview) */
|
|
142
|
+
entityStore?: {
|
|
143
|
+
getRecords: (entityName: string) => unknown[];
|
|
144
|
+
};
|
|
145
|
+
/** Query singleton for filtering */
|
|
146
|
+
querySingleton?: {
|
|
147
|
+
getFilters: (queryRef: string) => Record<string, unknown>;
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Result of data resolution
|
|
152
|
+
*/
|
|
153
|
+
export interface DataResolution {
|
|
154
|
+
/** Resolved data array */
|
|
155
|
+
data: unknown[];
|
|
156
|
+
/** Whether data is still loading */
|
|
157
|
+
loading: boolean;
|
|
158
|
+
/** Error if resolution failed */
|
|
159
|
+
error?: Error;
|
|
160
|
+
}
|