@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.
Files changed (241) hide show
  1. package/LICENSE +21 -72
  2. package/dist/components/atoms/Avatar.d.ts +58 -0
  3. package/dist/components/atoms/Badge.d.ts +8 -0
  4. package/dist/components/atoms/Box.d.ts +57 -0
  5. package/dist/components/atoms/Button.d.ts +24 -0
  6. package/dist/components/atoms/Card.d.ts +18 -0
  7. package/dist/components/atoms/Center.d.ts +33 -0
  8. package/dist/components/atoms/Checkbox.d.ts +5 -0
  9. package/dist/components/atoms/ConditionalWrapper.d.ts +68 -0
  10. package/dist/components/atoms/Divider.d.ts +29 -0
  11. package/dist/components/atoms/Icon.d.ts +38 -0
  12. package/dist/components/atoms/Input.d.ts +26 -0
  13. package/dist/components/atoms/Label.d.ts +5 -0
  14. package/dist/components/atoms/LawReferenceTooltip.d.ts +48 -0
  15. package/dist/components/atoms/Overlay.d.ts +16 -0
  16. package/dist/components/atoms/ProgressBar.d.ts +63 -0
  17. package/dist/components/atoms/Radio.d.ts +26 -0
  18. package/dist/components/atoms/Select.d.ts +12 -0
  19. package/dist/components/atoms/Spacer.d.ts +25 -0
  20. package/dist/components/atoms/Spinner.d.ts +6 -0
  21. package/dist/components/atoms/Stack.d.ts +64 -0
  22. package/dist/components/atoms/Switch.d.ts +12 -0
  23. package/dist/components/atoms/TextHighlight.d.ts +53 -0
  24. package/dist/components/atoms/Textarea.d.ts +5 -0
  25. package/dist/components/atoms/ThemeSelector.d.ts +21 -0
  26. package/dist/components/atoms/ThemeToggle.d.ts +33 -0
  27. package/dist/components/atoms/Typography.d.ts +57 -0
  28. package/dist/components/atoms/game/ControlButton.d.ts +31 -0
  29. package/dist/components/atoms/game/HealthBar.d.ts +18 -0
  30. package/dist/components/atoms/game/ScoreDisplay.d.ts +21 -0
  31. package/dist/components/atoms/game/Sprite.d.ts +63 -0
  32. package/dist/components/atoms/game/StateIndicator.d.ts +31 -0
  33. package/dist/components/atoms/game/index.d.ts +12 -0
  34. package/dist/components/atoms/index.d.ts +27 -0
  35. package/dist/components/index.css +11 -9
  36. package/dist/components/index.d.ts +6 -6951
  37. package/dist/components/index.js +5 -5
  38. package/dist/components/molecules/Accordion.d.ts +67 -0
  39. package/dist/components/molecules/Alert.d.ts +24 -0
  40. package/dist/components/molecules/Breadcrumb.d.ts +55 -0
  41. package/dist/components/molecules/ButtonGroup.d.ts +67 -0
  42. package/dist/components/molecules/Card.d.ts +44 -0
  43. package/dist/components/molecules/Container.d.ts +30 -0
  44. package/dist/components/molecules/Drawer.d.ts +46 -0
  45. package/dist/components/molecules/EmptyState.d.ts +25 -0
  46. package/dist/components/molecules/ErrorBoundary.d.ts +55 -0
  47. package/dist/components/molecules/ErrorState.d.ts +13 -0
  48. package/dist/components/molecules/FilterGroup.d.ts +54 -0
  49. package/dist/components/molecules/Flex.d.ts +43 -0
  50. package/dist/components/molecules/FloatingActionButton.d.ts +69 -0
  51. package/dist/components/molecules/FormField.d.ts +16 -0
  52. package/dist/components/molecules/FormSectionHeader.d.ts +30 -0
  53. package/dist/components/molecules/Grid.d.ts +54 -0
  54. package/dist/components/molecules/InputGroup.d.ts +24 -0
  55. package/dist/components/molecules/LoadingState.d.ts +7 -0
  56. package/dist/components/molecules/Menu.d.ts +40 -0
  57. package/dist/components/molecules/Modal.d.ts +26 -0
  58. package/dist/components/molecules/Pagination.d.ts +66 -0
  59. package/dist/components/molecules/Popover.d.ts +39 -0
  60. package/dist/components/molecules/QuizBlock.d.ts +20 -0
  61. package/dist/components/molecules/RelationSelect.d.ts +48 -0
  62. package/dist/components/molecules/RepeatableFormSection.d.ts +58 -0
  63. package/dist/components/molecules/ScaledDiagram.d.ts +20 -0
  64. package/dist/components/molecules/SearchInput.d.ts +60 -0
  65. package/dist/components/molecules/SidePanel.d.ts +47 -0
  66. package/dist/components/molecules/SimpleGrid.d.ts +27 -0
  67. package/dist/components/molecules/Skeleton.d.ts +35 -0
  68. package/dist/components/molecules/Tabs.d.ts +45 -0
  69. package/dist/components/molecules/Toast.d.ts +35 -0
  70. package/dist/components/molecules/Tooltip.d.ts +25 -0
  71. package/dist/components/molecules/ViolationAlert.d.ts +49 -0
  72. package/dist/components/molecules/WizardNavigation.d.ts +51 -0
  73. package/dist/components/molecules/WizardProgress.d.ts +42 -0
  74. package/dist/components/molecules/game/StatBadge.d.ts +27 -0
  75. package/dist/components/molecules/index.d.ts +38 -0
  76. package/dist/components/molecules/markdown/CodeBlock.d.ts +25 -0
  77. package/dist/components/molecules/markdown/MarkdownContent.d.ts +26 -0
  78. package/dist/components/organisms/CardGrid.d.ts +72 -0
  79. package/dist/components/organisms/Chart.d.ts +59 -0
  80. package/dist/components/organisms/CodeViewer.d.ts +67 -0
  81. package/dist/components/organisms/ComponentPatterns.d.ts +441 -0
  82. package/dist/components/organisms/ConfirmDialog.d.ts +50 -0
  83. package/dist/components/organisms/ContentRenderer.d.ts +23 -0
  84. package/dist/components/organisms/CustomPattern.d.ts +104 -0
  85. package/dist/components/organisms/DataTable.d.ts +63 -0
  86. package/dist/components/organisms/DetailPanel.d.ts +71 -0
  87. package/dist/components/organisms/DocumentViewer.d.ts +60 -0
  88. package/dist/components/organisms/DrawerSlot.d.ts +39 -0
  89. package/dist/components/organisms/Form.d.ts +203 -0
  90. package/dist/components/organisms/FormSection.d.ts +59 -0
  91. package/dist/components/organisms/GraphCanvas.d.ts +69 -0
  92. package/dist/components/organisms/Header.d.ts +110 -0
  93. package/dist/components/organisms/JazariStateMachine.d.ts +60 -0
  94. package/dist/components/organisms/LayoutPatterns.d.ts +181 -0
  95. package/dist/components/organisms/List.d.ts +76 -0
  96. package/dist/components/organisms/MasterDetail.d.ts +43 -0
  97. package/dist/components/organisms/MediaGallery.d.ts +66 -0
  98. package/dist/components/organisms/Meter.d.ts +58 -0
  99. package/dist/components/organisms/ModalSlot.d.ts +35 -0
  100. package/dist/components/organisms/Navigation.d.ts +68 -0
  101. package/dist/components/organisms/OrbitalVisualization.d.ts +48 -0
  102. package/dist/components/organisms/PageHeader.d.ts +59 -0
  103. package/dist/components/organisms/Section.d.ts +44 -0
  104. package/dist/components/organisms/Sidebar.d.ts +65 -0
  105. package/dist/components/organisms/SignaturePad.d.ts +44 -0
  106. package/dist/components/organisms/Split.d.ts +42 -0
  107. package/dist/components/organisms/StatCard.d.ts +66 -0
  108. package/dist/components/organisms/StateMachineView.d.ts +36 -0
  109. package/dist/components/organisms/Table.d.ts +99 -0
  110. package/dist/components/organisms/Timeline.d.ts +58 -0
  111. package/dist/components/organisms/ToastSlot.d.ts +38 -0
  112. package/dist/components/organisms/UISlotRenderer.d.ts +112 -0
  113. package/dist/components/organisms/WizardContainer.d.ts +160 -0
  114. package/dist/components/organisms/book/BookChapterView.d.ts +17 -0
  115. package/dist/components/organisms/book/BookCoverPage.d.ts +19 -0
  116. package/dist/components/organisms/book/BookNavBar.d.ts +18 -0
  117. package/dist/components/organisms/book/BookTableOfContents.d.ts +18 -0
  118. package/dist/components/organisms/book/BookViewer.d.ts +28 -0
  119. package/dist/components/organisms/book/index.d.ts +7 -0
  120. package/dist/components/organisms/book/types.d.ts +77 -0
  121. package/dist/components/organisms/game/BattleBoard.d.ts +167 -0
  122. package/dist/components/organisms/game/CanvasEffect.d.ts +68 -0
  123. package/dist/components/organisms/game/CastleBoard.d.ts +85 -0
  124. package/dist/components/organisms/game/DialogueBox.d.ts +73 -0
  125. package/dist/components/organisms/game/GameAudioProvider.d.ts +47 -0
  126. package/dist/components/organisms/game/GameAudioToggle.d.ts +28 -0
  127. package/dist/components/organisms/game/GameHud.d.ts +40 -0
  128. package/dist/components/organisms/game/GameMenu.d.ts +43 -0
  129. package/dist/components/organisms/game/GameOverScreen.d.ts +56 -0
  130. package/dist/components/organisms/game/InventoryPanel.d.ts +67 -0
  131. package/dist/components/organisms/game/IsometricCanvas.d.ts +123 -0
  132. package/dist/components/organisms/game/TraitSlot.d.ts +86 -0
  133. package/dist/components/organisms/game/TraitStateViewer.d.ts +53 -0
  134. package/dist/components/organisms/game/UncontrolledBattleBoard.d.ts +26 -0
  135. package/dist/components/organisms/game/WorldMapBoard.d.ts +147 -0
  136. package/dist/components/organisms/game/editor/editorUtils.d.ts +109 -0
  137. package/dist/components/organisms/game/editor/index.d.ts +9 -0
  138. package/dist/components/organisms/game/hooks/useBattleState.d.ts +35 -0
  139. package/dist/components/organisms/game/hooks/useCamera.d.ts +41 -0
  140. package/dist/components/organisms/game/hooks/useGameAudio.d.ts +47 -0
  141. package/dist/components/organisms/game/hooks/useImageCache.d.ts +16 -0
  142. package/dist/components/organisms/game/hooks/usePhysics2D.d.ts +45 -0
  143. package/dist/components/organisms/game/hooks/useSpriteAnimations.d.ts +43 -0
  144. package/dist/components/organisms/game/index.d.ts +36 -0
  145. package/dist/components/organisms/game/managers/PhysicsManager.d.ts +103 -0
  146. package/dist/components/organisms/game/types/effects.d.ts +253 -0
  147. package/dist/{isometric-ynNHVPZx.d.ts → components/organisms/game/types/isometric.d.ts} +4 -6
  148. package/dist/components/organisms/game/types/spriteAnimation.d.ts +73 -0
  149. package/dist/components/organisms/game/utils/canvasEffects.d.ts +50 -0
  150. package/dist/components/organisms/game/utils/combatPresets.d.ts +15 -0
  151. package/dist/components/organisms/game/utils/isometric.d.ts +61 -0
  152. package/dist/components/organisms/game/utils/spriteAnimation.d.ts +57 -0
  153. package/dist/components/organisms/game/utils/spriteSheetConstants.d.ts +16 -0
  154. package/dist/components/organisms/index.d.ts +37 -0
  155. package/dist/components/organisms/layout/DashboardGrid.d.ts +34 -0
  156. package/dist/components/organisms/layout/MasterDetail.d.ts +32 -0
  157. package/dist/components/organisms/layout/SplitPane.d.ts +34 -0
  158. package/dist/components/organisms/layout/TabbedContainer.d.ts +42 -0
  159. package/dist/components/organisms/layout/index.d.ts +9 -0
  160. package/dist/components/organisms/types.d.ts +65 -0
  161. package/dist/components/templates/AuthLayout.d.ts +14 -0
  162. package/dist/components/templates/BattleTemplate.d.ts +25 -0
  163. package/dist/components/templates/CastleTemplate.d.ts +23 -0
  164. package/dist/components/templates/CounterTemplate.d.ts +44 -0
  165. package/dist/components/templates/DashboardLayout.d.ts +32 -0
  166. package/dist/components/templates/GameShell.d.ts +33 -0
  167. package/dist/components/templates/GameTemplate.d.ts +36 -0
  168. package/dist/components/templates/GenericAppTemplate.d.ts +30 -0
  169. package/dist/components/templates/WorldMapTemplate.d.ts +29 -0
  170. package/dist/components/templates/index.d.ts +10 -0
  171. package/dist/components/templates/types.d.ts +17 -0
  172. package/dist/context/DesignThemeContext.d.ts +21 -0
  173. package/dist/{ThemeContext-D9xUORq5.d.ts → context/ThemeContext.d.ts} +15 -16
  174. package/dist/context/UISlotContext.d.ts +75 -0
  175. package/dist/context/UserContext.d.ts +111 -0
  176. package/dist/context/index.d.ts +6 -206
  177. package/dist/{event-bus-types-CjJduURa.d.ts → hooks/event-bus-types.d.ts} +4 -6
  178. package/dist/hooks/index.d.ts +24 -1090
  179. package/dist/hooks/useAgentChat.d.ts +104 -0
  180. package/dist/hooks/useAuthContext.d.ts +25 -0
  181. package/dist/hooks/useCompile.d.ts +22 -0
  182. package/dist/hooks/useDeepAgentGeneration.d.ts +46 -0
  183. package/dist/hooks/useEntities.d.ts +52 -0
  184. package/dist/hooks/useEntityData.d.ts +155 -0
  185. package/dist/hooks/useEntityMutations.d.ts +80 -0
  186. package/dist/hooks/useEventBus.d.ts +96 -0
  187. package/dist/hooks/useExtensions.d.ts +32 -0
  188. package/dist/hooks/useFileEditor.d.ts +32 -0
  189. package/dist/hooks/useFileSystem.d.ts +40 -0
  190. package/dist/hooks/useGitHub.d.ts +58 -0
  191. package/dist/hooks/useOrbitalHistory.d.ts +39 -0
  192. package/dist/hooks/useOrbitalMutations.d.ts +95 -0
  193. package/dist/hooks/usePreview.d.ts +57 -0
  194. package/dist/hooks/useQuerySingleton.d.ts +78 -0
  195. package/dist/hooks/useResolvedEntity.d.ts +32 -0
  196. package/dist/hooks/useTranslate.d.ts +35 -0
  197. package/dist/hooks/useUIEvents.d.ts +35 -0
  198. package/dist/{useUISlots-D0mttBSP.d.ts → hooks/useUISlots.d.ts} +8 -9
  199. package/dist/hooks/useValidation.d.ts +46 -0
  200. package/dist/lib/api-client.d.ts +42 -0
  201. package/dist/lib/cn.d.ts +6 -0
  202. package/dist/lib/debug.d.ts +43 -0
  203. package/dist/lib/debugRegistry.d.ts +29 -0
  204. package/dist/lib/debugUtils.d.ts +27 -0
  205. package/dist/lib/entityDebug.d.ts +38 -0
  206. package/dist/lib/getNestedValue.d.ts +33 -0
  207. package/dist/lib/guardRegistry.d.ts +32 -0
  208. package/dist/lib/index.d.ts +17 -426
  209. package/dist/lib/jazari/svg-paths.d.ts +61 -0
  210. package/dist/lib/parseContentSegments.d.ts +41 -0
  211. package/dist/lib/tickRegistry.d.ts +40 -0
  212. package/dist/lib/traitRegistry.d.ts +34 -0
  213. package/dist/lib/verificationRegistry.d.ts +107 -0
  214. package/dist/{cn-BoBXsxuX.d.ts → lib/visualizer/index.d.ts} +18 -69
  215. package/dist/locales/index.d.ts +5 -7
  216. package/dist/providers/EventBusProvider.d.ts +60 -0
  217. package/dist/providers/FetchedDataProvider.d.ts +105 -0
  218. package/dist/providers/OfflineModeProvider.d.ts +79 -0
  219. package/dist/providers/OrbitalProvider.d.ts +101 -0
  220. package/dist/providers/SelectionProvider.d.ts +81 -0
  221. package/dist/providers/VerificationProvider.d.ts +63 -0
  222. package/dist/providers/index.css +11 -9
  223. package/dist/providers/index.d.ts +16 -464
  224. package/dist/providers/index.js +3 -3
  225. package/dist/renderer/client-effect-executor.d.ts +68 -0
  226. package/dist/renderer/data-resolver.d.ts +68 -0
  227. package/dist/renderer/index.d.ts +22 -519
  228. package/dist/renderer/index.js +1 -1
  229. package/dist/renderer/init.d.ts +14 -0
  230. package/dist/renderer/navigation.d.ts +142 -0
  231. package/dist/{offline-executor-CHr4uAhf.d.ts → renderer/offline-executor.d.ts} +9 -172
  232. package/dist/renderer/pattern-resolver.d.ts +91 -0
  233. package/dist/renderer/slot-definitions.d.ts +45 -0
  234. package/dist/renderer/types.d.ts +160 -0
  235. package/dist/renderer/useClientEffects.d.ts +88 -0
  236. package/dist/stores/entityStore.d.ts +99 -0
  237. package/dist/stores/filtering.d.ts +51 -0
  238. package/dist/stores/index.d.ts +4 -148
  239. package/package.json +12 -10
  240. package/dist/components/organisms/game/three/index.d.ts +0 -1162
  241. 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
+ }