@almadar/shell-web 0.1.0 → 1.0.0

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 (118) hide show
  1. package/dist/{ArbitraryClassCompiler-Mzabq-UB.d.ts → ArbitraryClassCompiler-CO_iASBn.d.ts} +99 -4
  2. package/dist/AvlGlyph-EPJKFEO3.js +6 -0
  3. package/dist/AvlStateMachine-RKZIKNGC.js +9 -0
  4. package/dist/AvlTransitionDetail-63SD6GZF.js +11 -0
  5. package/dist/AvlTransitionExplainer-ZBTLOM3T.js +12 -0
  6. package/dist/BehaviorView-YS5G4GNB.js +11 -0
  7. package/dist/{Canvas3DHost-_Y-5uLM_.d.ts → Canvas3DHost-BkZQB5l2.d.ts} +1 -1
  8. package/dist/{EventBusProvider-CVwjkV_2.d.ts → EventBusProvider-BFFHfN4O.d.ts} +12 -0
  9. package/dist/FlowCanvas-AUMTWMNG.js +26 -0
  10. package/dist/{GameAudioProvider-Cm9BnvmP.d.ts → GameAudioProvider-ceM_n0ey.d.ts} +4 -7
  11. package/dist/KernelEngineContext-CcxGYtlr.d.ts +33 -0
  12. package/dist/LayersPanel-M2LHWUFF.js +6 -0
  13. package/dist/ModuleCard-QHDGK5XK.js +7 -0
  14. package/dist/OrbInspector-QCPEPUPH.js +26 -0
  15. package/dist/{Select-mDZIwNqN.d.ts → Select-B-iDdnvE.d.ts} +16 -30
  16. package/dist/ServerBridge-Bqsj-lOU.d.ts +124 -0
  17. package/dist/UISlotRenderer-C7WWOK43.js +26 -0
  18. package/dist/auth/browser/index.js +1 -0
  19. package/dist/auth/react/index.d.ts +8 -1
  20. package/dist/auth/react/index.js +40 -2
  21. package/dist/avl/index.d.ts +89 -79
  22. package/dist/avl/index.js +38 -38
  23. package/dist/{avl-3d-context-BIRKWpaL.d.ts → avl-3d-context-BycmO6tG.d.ts} +9 -12
  24. package/dist/{chunk-GKIFONTE.js → chunk-3S54FWRC.js} +2 -2
  25. package/dist/{chunk-DYEKAA4L.js → chunk-3VZ36ZKO.js} +240 -252
  26. package/dist/{chunk-PC7K4SK7.js → chunk-4T3P43NS.js} +18 -269
  27. package/dist/{chunk-MBQAMMSE.js → chunk-4YXBKHHM.js} +269 -658
  28. package/dist/{chunk-YDNJLLG6.js → chunk-57DC34LY.js} +19 -10
  29. package/dist/{chunk-SJGJJKBY.js → chunk-AB3X7QTE.js} +6 -3
  30. package/dist/{chunk-AILY3XPS.js → chunk-AE7VCQB6.js} +5 -6
  31. package/dist/{chunk-FAJDTHWC.js → chunk-AGXD77SL.js} +2 -2
  32. package/dist/chunk-AU7O65OX.js +66 -0
  33. package/dist/{chunk-L677XGY3.js → chunk-CPLN6NBQ.js} +5 -5
  34. package/dist/{chunk-DZ42OJQC.js → chunk-DZBQA2OW.js} +1 -1
  35. package/dist/{chunk-2PY54Z44.js → chunk-E6KA4J6N.js} +5 -5
  36. package/dist/{chunk-DJ433ET5.js → chunk-GFXCPUMX.js} +11 -4
  37. package/dist/{chunk-FP3WIKTC.js → chunk-HH5KSMH5.js} +9 -1
  38. package/dist/{chunk-U6QRZASX.js → chunk-ILQXJ2AR.js} +1 -1
  39. package/dist/{chunk-B4BU77LT.js → chunk-ILZ7ORX7.js} +1 -1
  40. package/dist/{chunk-SGM3FASH.js → chunk-K4MOPSEL.js} +14 -12
  41. package/dist/{chunk-GYTPOFVC.js → chunk-LHP2TK7O.js} +7402 -6970
  42. package/dist/{chunk-VFF5OO47.js → chunk-PCR37T3U.js} +15 -38
  43. package/dist/{chunk-R5O5AUPI.js → chunk-PRXQGGCO.js} +93 -86
  44. package/dist/{chunk-42FY4RYA.js → chunk-REXYVBUO.js} +2 -2
  45. package/dist/{chunk-DLZF4PVE.js → chunk-ROICKAU7.js} +3 -3
  46. package/dist/{chunk-KVQS4GXU.js → chunk-SP5CDJ6K.js} +18 -8
  47. package/dist/{chunk-P4LNHAFI.js → chunk-TUPZWTRE.js} +2 -2
  48. package/dist/chunk-TXAUOLWZ.js +490 -0
  49. package/dist/{chunk-EQAMU2ZC.js → chunk-UTDC2NEA.js} +1 -1
  50. package/dist/{chunk-73SRAB4P.js → chunk-UU57VNS2.js} +2 -2
  51. package/dist/{chunk-DFNZUYX4.js → chunk-UXLE3IPR.js} +70 -27
  52. package/dist/{chunk-L2DEKY4J.js → chunk-VO2TTLS5.js} +3 -6
  53. package/dist/{chunk-TESBIVUA.js → chunk-X3DMMX27.js} +2 -2
  54. package/dist/components/index.d.ts +331 -125
  55. package/dist/components/index.js +28 -28
  56. package/dist/context/index.d.ts +2 -3
  57. package/dist/context/index.js +4 -3
  58. package/dist/core.d.ts +93 -17
  59. package/dist/core.js +2 -1
  60. package/dist/design-classes/index.cjs +3 -1
  61. package/dist/design-classes/index.js +3 -1
  62. package/dist/hooks/index.d.ts +40 -5
  63. package/dist/hooks/index.js +5 -4
  64. package/dist/index.d.ts +36 -114
  65. package/dist/index.js +174 -34
  66. package/dist/kernel-client-TZKGHJRY.js +516 -0
  67. package/dist/kernel-wire-wNdAPfhJ.d.ts +88 -0
  68. package/dist/lib/index.d.ts +3 -3
  69. package/dist/lib/index.js +5 -4
  70. package/dist/{paintDispatch-ChW5mVuK.d.ts → paintDispatch-CuJLsr9Y.d.ts} +5 -15
  71. package/dist/{prism-AIWGN2X5.js → prism-X5YWKXO5.js} +5 -3
  72. package/dist/providers/index.d.ts +42 -27
  73. package/dist/providers/index.js +22 -23
  74. package/dist/renderer/index.d.ts +0 -2
  75. package/dist/renderer/index.js +1 -0
  76. package/dist/runtime/index.d.ts +52 -253
  77. package/dist/runtime/index.js +21 -24
  78. package/dist/ssr/index.cjs +2643 -535
  79. package/dist/ssr/index.d.cts +0 -23
  80. package/dist/ssr/index.d.ts +0 -23
  81. package/dist/ssr/index.js +2639 -535
  82. package/dist/storage/browser/index.js +1 -0
  83. package/dist/test-support.d.ts +15 -8
  84. package/dist/test-support.js +91 -24
  85. package/dist/three/index.d.ts +6 -6
  86. package/dist/three/index.js +49 -37
  87. package/dist/{verificationRegistry-CabxhfTv.d.ts → verificationRegistry-CVrcxG1s.d.ts} +3 -3
  88. package/package.json +13 -9
  89. package/src/core/lib/band-shapes.json +7 -0
  90. package/src/core/locales/ar.json +18 -5
  91. package/src/core/locales/en.json +18 -5
  92. package/src/core/locales/sl.json +18 -5
  93. package/tailwind-preset.cjs +30 -1
  94. package/dist/AvlGlyph-JKJOAH23.js +0 -6
  95. package/dist/AvlStateMachine-PI4YGREK.js +0 -8
  96. package/dist/AvlTransitionDetail-ZH7V24UG.js +0 -12
  97. package/dist/AvlTransitionExplainer-ZSRT7L6Y.js +0 -13
  98. package/dist/BehaviorValueFrame-6RUJXT4A.js +0 -29
  99. package/dist/BehaviorValueFrame-SSEMEBTG.css +0 -1756
  100. package/dist/BehaviorView-RFEE5J6E.js +0 -10
  101. package/dist/FlowCanvas-STDC4OWK.js +0 -27
  102. package/dist/KernelEngineContext-BOCQoFwk.d.ts +0 -43
  103. package/dist/LayersPanel-BBQ54IVG.js +0 -7
  104. package/dist/ModuleCard-3TT2X7IW.js +0 -7
  105. package/dist/OrbInspector-K6T6O7GI.js +0 -27
  106. package/dist/ServerBridge-Cm1On51b.d.ts +0 -233
  107. package/dist/TraitValueFrame-2PJGLLVI.js +0 -28
  108. package/dist/TraitValueFrame-4G3KOUBR.css +0 -1756
  109. package/dist/UISlotRenderer-JKFSX24W.js +0 -27
  110. package/dist/UserContext-DqWeZkUZ.d.ts +0 -100
  111. package/dist/chunk-2QOH2HWM.js +0 -95
  112. package/dist/chunk-6P3MWXYE.js +0 -440
  113. package/dist/chunk-FIW6WN23.js +0 -508
  114. package/dist/chunk-GAR5TQ5B.js +0 -199
  115. package/dist/chunk-ZO6MXAS3.js +0 -69
  116. package/dist/kernel-client-ZH4PSMCN.js +0 -367
  117. package/dist/kernel-wire-B4S8pnP3.d.ts +0 -65
  118. package/dist/useKeyboardRouter-Dsq553Ur.d.ts +0 -42
@@ -1,7 +1,7 @@
1
1
  import * as React from 'react';
2
2
  import React__default, { ReactNode, ReactElement } from 'react';
3
- import { ThemeRef, OrbitalSchema } from '@almadar/core';
4
- import './EventBusProvider-CVwjkV_2.js';
3
+ import { ThemeRef, UserContext as UserContext$1, FieldValue, OrbitalSchema } from '@almadar/core';
4
+ import './EventBusProvider-BFFHfN4O.js';
5
5
  import { T as ThemeProviderProps } from './ThemeContext-DJmO59xd.js';
6
6
 
7
7
  /**
@@ -75,6 +75,101 @@ interface CurrentPagePathProviderProps {
75
75
  declare const CurrentPagePathProvider: React__default.FC<CurrentPagePathProviderProps>;
76
76
  declare const useCurrentPagePath: () => string | undefined;
77
77
 
78
+ /**
79
+ * UserContext
80
+ *
81
+ * React context for providing user data throughout the application.
82
+ * Enables @user bindings in S-expressions for role-based UI and permissions.
83
+ *
84
+ * Usage:
85
+ * ```tsx
86
+ * // In App.tsx or layout
87
+ * <UserProvider user={{ id: '123', role: 'admin', permissions: ['read', 'write'] }}>
88
+ * <App />
89
+ * </UserProvider>
90
+ *
91
+ * // In components - access via hook
92
+ * const { user, hasRole, hasPermission } = useUser();
93
+ * if (hasRole('admin')) { ... }
94
+ * if (hasPermission('delete')) { ... }
95
+ * ```
96
+ *
97
+ * @packageDocumentation
98
+ */
99
+
100
+ /**
101
+ * User data for `@user` bindings — the canonical `UserContext` from
102
+ * `@almadar/core`, kept under this name for existing consumers. Declaring the
103
+ * shape locally let it drift from the type both execution paths resolve against.
104
+ */
105
+ type UserData = UserContext$1;
106
+ /**
107
+ * User context value.
108
+ */
109
+ interface UserContextValue {
110
+ /** Current user data (null if not logged in) */
111
+ user: UserData | null;
112
+ /** Check if user is logged in */
113
+ isLoggedIn: boolean;
114
+ /** Check if user has a specific role */
115
+ hasRole: (role: string) => boolean;
116
+ /** Check if user has a specific permission */
117
+ hasPermission: (permission: string) => boolean;
118
+ /** Check if user has any of the specified roles */
119
+ hasAnyRole: (roles: string[]) => boolean;
120
+ /** Check if user has all of the specified permissions */
121
+ hasAllPermissions: (permissions: string[]) => boolean;
122
+ /** Get a user field by path (for @user.field bindings) */
123
+ getUserField: (path: string) => FieldValue | undefined;
124
+ }
125
+ declare const UserContext: React__default.Context<UserContextValue | null>;
126
+ interface UserProviderProps {
127
+ /** User data (null if not logged in) */
128
+ user?: UserData | null;
129
+ /** Children to render */
130
+ children: React__default.ReactNode;
131
+ }
132
+ /**
133
+ * Provider component that provides user context to the application.
134
+ *
135
+ * Provides RBAC helpers and field access for @user bindings.
136
+ */
137
+ declare function UserProvider({ user, children, }: UserProviderProps): React__default.ReactElement;
138
+ /**
139
+ * Hook to access the user context.
140
+ *
141
+ * Returns default values if used outside of UserProvider (for resilience).
142
+ *
143
+ * @example
144
+ * ```tsx
145
+ * function AdminPanel() {
146
+ * const { user, hasRole, hasPermission } = useUser();
147
+ *
148
+ * if (!hasRole('admin') && !hasPermission('admin:access')) {
149
+ * return <AccessDenied />;
150
+ * }
151
+ *
152
+ * return <div>Welcome, {user?.name}</div>;
153
+ * }
154
+ * ```
155
+ */
156
+ declare function useUser(): UserContextValue;
157
+ /**
158
+ * Hook to check if user has a specific role.
159
+ * Convenience wrapper around useUser().hasRole().
160
+ */
161
+ declare function useHasRole(role: string): boolean;
162
+ /**
163
+ * Hook to check if user has a specific permission.
164
+ * Convenience wrapper around useUser().hasPermission().
165
+ */
166
+ declare function useHasPermission(permission: string): boolean;
167
+ /**
168
+ * Hook to get user data for @user bindings in S-expressions.
169
+ * Returns the user data object compatible with EvaluationContext.user
170
+ */
171
+ declare function useUserForEvaluation(): UserData | undefined;
172
+
78
173
  /**
79
174
  * Arbitrary-value Tailwind classes (`w-[243px]`) in a schema exist only as
80
175
  * data, so build-time Tailwind never compiled them. A host that renders
@@ -96,5 +191,5 @@ declare function ArbitraryClassCompilerProvider({ compile, children }: Arbitrary
96
191
  declare function resetArbitraryClassStyles(): void;
97
192
  declare function useArbitraryClassStyles(schema: OrbitalSchema | null | undefined): void;
98
193
 
99
- export { ARBITRARY_CLASS_STYLE_ID as A, CurrentPagePathContext as C, DesignThemeProvider as D, OrbitalThemeProvider as O, ArbitraryClassCompilerProvider as b, CurrentPagePathProvider as d, useCurrentPagePath as g, useDesignTheme as h, resetArbitraryClassStyles as r, useArbitraryClassStyles as u };
100
- export type { ArbitraryClassCompiler as a, ArbitraryClassCompilerProviderProps as c, CurrentPagePathProviderProps as e, OrbitalThemeProviderProps as f };
194
+ export { ARBITRARY_CLASS_STYLE_ID as A, CurrentPagePathContext as C, DesignThemeProvider as D, OrbitalThemeProvider as O, UserContext as U, ArbitraryClassCompilerProvider as b, CurrentPagePathProvider as d, UserProvider as i, useCurrentPagePath as k, useDesignTheme as l, useHasPermission as m, useHasRole as n, useUser as o, useUserForEvaluation as p, resetArbitraryClassStyles as r, useArbitraryClassStyles as u };
195
+ export type { ArbitraryClassCompiler as a, ArbitraryClassCompilerProviderProps as c, CurrentPagePathProviderProps as e, OrbitalThemeProviderProps as f, UserContextValue as g, UserData as h, UserProviderProps as j };
@@ -0,0 +1,6 @@
1
+ export { AVL_GLYPH_KINDS, AvlGlyph } from './chunk-CPLN6NBQ.js';
2
+ import './chunk-HH5KSMH5.js';
3
+ import './chunk-DZBQA2OW.js';
4
+ import './chunk-UXLE3IPR.js';
5
+ import './chunk-4YXBKHHM.js';
6
+ import './chunk-G7DCAZ22.js';
@@ -0,0 +1,9 @@
1
+ export { AvlStateMachine, BODY_CHAR, MARGIN, MAX_SCALE, MIN_SCALE, MONO_CHAR, PILL_H, metricsFor, pillWidth } from './chunk-SP5CDJ6K.js';
2
+ import './chunk-TXAUOLWZ.js';
3
+ import './chunk-AB3X7QTE.js';
4
+ import './chunk-DZBQA2OW.js';
5
+ import './chunk-TZZBINQY.js';
6
+ import './chunk-PCR37T3U.js';
7
+ import './chunk-UXLE3IPR.js';
8
+ import './chunk-4YXBKHHM.js';
9
+ import './chunk-G7DCAZ22.js';
@@ -0,0 +1,11 @@
1
+ export { AvlTransitionDetail } from './chunk-K4MOPSEL.js';
2
+ import './chunk-ILQXJ2AR.js';
3
+ import './chunk-REXYVBUO.js';
4
+ import './chunk-AGXD77SL.js';
5
+ import './chunk-TXAUOLWZ.js';
6
+ import './chunk-AB3X7QTE.js';
7
+ import './chunk-DZBQA2OW.js';
8
+ import './chunk-PCR37T3U.js';
9
+ import './chunk-UXLE3IPR.js';
10
+ import './chunk-4YXBKHHM.js';
11
+ import './chunk-G7DCAZ22.js';
@@ -0,0 +1,12 @@
1
+ export { AvlTransitionExplainer } from './chunk-X3DMMX27.js';
2
+ import './chunk-K4MOPSEL.js';
3
+ import './chunk-ILQXJ2AR.js';
4
+ import './chunk-REXYVBUO.js';
5
+ import './chunk-AGXD77SL.js';
6
+ import './chunk-TXAUOLWZ.js';
7
+ import './chunk-AB3X7QTE.js';
8
+ import './chunk-DZBQA2OW.js';
9
+ import './chunk-PCR37T3U.js';
10
+ import './chunk-UXLE3IPR.js';
11
+ import './chunk-4YXBKHHM.js';
12
+ import './chunk-G7DCAZ22.js';
@@ -0,0 +1,11 @@
1
+ export { BehaviorView } from './chunk-ROICKAU7.js';
2
+ import './chunk-SP5CDJ6K.js';
3
+ import './chunk-AGXD77SL.js';
4
+ import './chunk-TXAUOLWZ.js';
5
+ import './chunk-AB3X7QTE.js';
6
+ import './chunk-DZBQA2OW.js';
7
+ import './chunk-TZZBINQY.js';
8
+ import './chunk-PCR37T3U.js';
9
+ import './chunk-UXLE3IPR.js';
10
+ import './chunk-4YXBKHHM.js';
11
+ import './chunk-G7DCAZ22.js';
@@ -1,7 +1,7 @@
1
1
  import { AnimationName, Asset, ScenePos, EventEmit, EventKey } from '@almadar/core';
2
2
  import React__default from 'react';
3
3
  import * as THREE from 'three';
4
- import { D as DrawableNode } from './paintDispatch-ChW5mVuK.js';
4
+ import { D as DrawableNode } from './paintDispatch-CuJLsr9Y.js';
5
5
 
6
6
  /**
7
7
  * Sprite Sheet Animation Types
@@ -24,6 +24,18 @@ interface VideoEmbedProps extends A11yProps {
24
24
  src?: string;
25
25
  /** Accessible name of the player */
26
26
  title?: string;
27
+ /** Text shown when no video is selected */
28
+ noVideoLabel?: string;
29
+ /** Text for a YouTube API loading failure */
30
+ apiUnavailableMessage?: string;
31
+ /** Text for YouTube error code 2 */
32
+ invalidVideoMessage?: string;
33
+ /** Text for YouTube error code 5 or an unknown code */
34
+ playbackFailedMessage?: string;
35
+ /** Text for YouTube error code 100 */
36
+ notFoundMessage?: string;
37
+ /** Text for YouTube error codes 101 and 150 */
38
+ notEmbeddableMessage?: string;
27
39
  /** Start playback as soon as the player is ready (YouTube ids only) */
28
40
  autoplay?: boolean;
29
41
  /** Show the player's own controls (YouTube ids only) */
@@ -0,0 +1,26 @@
1
+ export { FlowCanvas } from './chunk-LHP2TK7O.js';
2
+ import './chunk-57DC34LY.js';
3
+ import './chunk-SP5CDJ6K.js';
4
+ import './chunk-CPLN6NBQ.js';
5
+ import './chunk-HH5KSMH5.js';
6
+ import './chunk-REXYVBUO.js';
7
+ import './chunk-AGXD77SL.js';
8
+ import './chunk-TXAUOLWZ.js';
9
+ import './chunk-AB3X7QTE.js';
10
+ import './chunk-DZBQA2OW.js';
11
+ import './chunk-TUPZWTRE.js';
12
+ import './chunk-TZZBINQY.js';
13
+ import './chunk-4T3P43NS.js';
14
+ import './chunk-PCR37T3U.js';
15
+ import './chunk-UXLE3IPR.js';
16
+ import './chunk-ILZ7ORX7.js';
17
+ import './chunk-3VZ36ZKO.js';
18
+ import './chunk-PRXQGGCO.js';
19
+ import './chunk-VO2TTLS5.js';
20
+ import './chunk-AE7VCQB6.js';
21
+ import './chunk-3BBUBJFF.js';
22
+ import './chunk-YHMRX6YA.js';
23
+ import './chunk-4YXBKHHM.js';
24
+ import './chunk-A2LR6VQQ.js';
25
+ import './chunk-P4ZFUQFF.js';
26
+ import './chunk-G7DCAZ22.js';
@@ -1,7 +1,7 @@
1
1
  import React__default from 'react';
2
2
  import { AudioManifest } from '@almadar/core';
3
3
  import { U as UiError } from './fx-CmQjnHmT.js';
4
- import './EventBusProvider-CVwjkV_2.js';
4
+ import './EventBusProvider-BFFHfN4O.js';
5
5
 
6
6
  /** Core owns the sound-manifest shape (`@almadar/core` `types/asset.ts`) so the
7
7
  * pattern extractor and the generated `.lolo` factories resolve the same
@@ -41,12 +41,9 @@ declare namespace useGameAudio {
41
41
  /**
42
42
  * GameAudioProvider
43
43
  *
44
- * Context provider that wires the audio system to the Almadar event bus.
45
- * Wrap your game organism with this provider, then emit:
46
- *
47
- * emit('UI:PLAY_SOUND', { key: 'footstep' })
48
- *
49
- * from anywhere inside the tree and the corresponding sound will play.
44
+ * Context provider that owns the game audio. While it is mounted, the kernel's
45
+ * `audio/play-sound`, `audio/stop-sound`, `audio/change-music` and `audio/stop-music`
46
+ * asks drive it.
50
47
  *
51
48
  * The provider also exposes `muted`/`setMuted` and `masterVolume`/
52
49
  * `setMasterVolume` via the `GameAudioContext` for toggle buttons.
@@ -0,0 +1,33 @@
1
+ import * as React$1 from 'react';
2
+ import { ReactNode } from 'react';
3
+ import { K as KernelModule, a as KernelLoader } from './kernel-wire-wNdAPfhJ.js';
4
+ import { OsHostPort } from '@almadar/shell-runtime/kernel/os-port';
5
+
6
+ /** Request the next frame; returns its cancel. `requestAnimationFrame` where the host has one. */
7
+ type FrameScheduler = (callback: (nowMs: number) => void) => () => void;
8
+
9
+ interface KernelEngineValue {
10
+ /** Resolves the initialised `@almadar/kernel` module, its language installed (`@almadar/shell-browser/kernel-loader`); shared by every circuit under the provider. */
11
+ loadModule: () => Promise<KernelModule>;
12
+ /** Supplies the frame clock the kernel's ticks run on; absent = `requestAnimationFrame`. */
13
+ scheduleFrame?: FrameScheduler;
14
+ /** The host's `os` port (`createFetchOsHost(fetch)`) every local-store kernel under the provider is opened with; absent, a program's `os` asks are denied. */
15
+ os?: OsHostPort;
16
+ }
17
+ declare const KernelEngineContext: React$1.Context<KernelEngineValue | null>;
18
+ /** The kernel the nearest `KernelEngineProvider` supplies; `null` with none above. */
19
+ declare function useKernelEngine(): KernelEngineValue | null;
20
+ /** A circuit mounted with no `KernelEngineProvider` (nor an `OrbPreview` `kernelLoader`) above it. */
21
+ declare class KernelLoaderMissingError extends Error {
22
+ constructor();
23
+ }
24
+ interface KernelEngineProviderProps {
25
+ loader: KernelLoader;
26
+ scheduleFrame?: FrameScheduler;
27
+ os?: OsHostPort;
28
+ children?: ReactNode;
29
+ }
30
+ declare function KernelEngineProvider({ loader, scheduleFrame, os, children }: KernelEngineProviderProps): React.ReactElement;
31
+
32
+ export { KernelEngineContext as a, KernelEngineProvider as b, KernelLoaderMissingError as d, useKernelEngine as u };
33
+ export type { KernelEngineValue as K, KernelEngineProviderProps as c };
@@ -0,0 +1,6 @@
1
+ export { LayersPanel, parseLayerId, schemaToLayerItems } from './chunk-3S54FWRC.js';
2
+ import './chunk-57DC34LY.js';
3
+ import './chunk-PCR37T3U.js';
4
+ import './chunk-VO2TTLS5.js';
5
+ import './chunk-4YXBKHHM.js';
6
+ import './chunk-G7DCAZ22.js';
@@ -0,0 +1,7 @@
1
+ export { ModuleCard } from './chunk-E6KA4J6N.js';
2
+ import './chunk-HH5KSMH5.js';
3
+ import './chunk-AB3X7QTE.js';
4
+ import './chunk-DZBQA2OW.js';
5
+ import './chunk-UXLE3IPR.js';
6
+ import './chunk-4YXBKHHM.js';
7
+ import './chunk-G7DCAZ22.js';
@@ -0,0 +1,26 @@
1
+ export { OrbInspector } from './chunk-LHP2TK7O.js';
2
+ import './chunk-57DC34LY.js';
3
+ import './chunk-SP5CDJ6K.js';
4
+ import './chunk-CPLN6NBQ.js';
5
+ import './chunk-HH5KSMH5.js';
6
+ import './chunk-REXYVBUO.js';
7
+ import './chunk-AGXD77SL.js';
8
+ import './chunk-TXAUOLWZ.js';
9
+ import './chunk-AB3X7QTE.js';
10
+ import './chunk-DZBQA2OW.js';
11
+ import './chunk-TUPZWTRE.js';
12
+ import './chunk-TZZBINQY.js';
13
+ import './chunk-4T3P43NS.js';
14
+ import './chunk-PCR37T3U.js';
15
+ import './chunk-UXLE3IPR.js';
16
+ import './chunk-ILZ7ORX7.js';
17
+ import './chunk-3VZ36ZKO.js';
18
+ import './chunk-PRXQGGCO.js';
19
+ import './chunk-VO2TTLS5.js';
20
+ import './chunk-AE7VCQB6.js';
21
+ import './chunk-3BBUBJFF.js';
22
+ import './chunk-YHMRX6YA.js';
23
+ import './chunk-4YXBKHHM.js';
24
+ import './chunk-A2LR6VQQ.js';
25
+ import './chunk-P4ZFUQFF.js';
26
+ import './chunk-G7DCAZ22.js';
@@ -4,7 +4,13 @@ import { I as IconInput } from './fx-CmQjnHmT.js';
4
4
 
5
5
  type ButtonVariant = "primary" | "secondary" | "ghost" | "danger" | "success" | "warning" | "default" | "link";
6
6
  type ButtonSize = "sm" | "md" | "lg";
7
- /** @accessibleName label */
7
+ /**
8
+ * @accessibleName label
9
+ * @role button
10
+ * @tokens --color-primary --color-primary-foreground --color-foreground
11
+ * @contrast primary-foreground primary
12
+ * @motion css
13
+ */
8
14
  interface ButtonProps extends Omit<React__default.ButtonHTMLAttributes<HTMLButtonElement>, keyof A11yProps | 'onClick'>, A11yProps {
9
15
  /** Additional CSS classes applied to the root element. */
10
16
  className?: string;
@@ -34,6 +40,8 @@ interface ButtonProps extends Omit<React__default.ButtonHTMLAttributes<HTMLButto
34
40
  label?: string;
35
41
  /** Disable the button (greys out, blocks click events) */
36
42
  disabled?: boolean;
43
+ /** Native button type. `type` is reserved for the pattern discriminator in schema render specs. */
44
+ htmlType?: "button" | "submit" | "reset";
37
45
  /** Makes the button a link: `#anchor` scrolls, an absolute URL loads, a path navigates in-app */
38
46
  href?: string;
39
47
  /**
@@ -50,7 +58,13 @@ interface SelectOption$1 {
50
58
  value: string;
51
59
  label: string;
52
60
  }
53
- /** @accessibleName label */
61
+ /**
62
+ * @accessibleName label
63
+ * @role textbox
64
+ * @tokens --color-card --color-border --color-foreground --color-muted-foreground
65
+ * @contrast foreground card
66
+ * @motion css
67
+ */
54
68
  interface InputProps extends Omit<React__default.InputHTMLAttributes<HTMLInputElement>, "onChange" | Exclude<keyof A11yProps, "role" | "dir">>, Omit<A11yProps, "role" | "dir"> {
55
69
  /** Additional CSS classes applied to the root element. */
56
70
  className?: string;
@@ -98,43 +112,15 @@ interface InputProps extends Omit<React__default.InputHTMLAttributes<HTMLInputEl
98
112
  }
99
113
  declare const Input: React__default.ForwardRefExoticComponent<InputProps & React__default.RefAttributes<HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement>>;
100
114
 
101
- /**
102
- * PatternTile Atom
103
- *
104
- * Mathematically correct Islamic geometric pattern tiles using the
105
- * Polygons-in-Contact (PIC) method (Hankin 1925, formalized by Kaplan 2005).
106
- *
107
- * Construction: A regular polygon tiling is overlaid with star motifs.
108
- * Each motif touches the enclosing polygon at EDGE MIDPOINTS only.
109
- * Two rays emanate from each midpoint into the polygon at a specific
110
- * CONTACT ANGLE (theta). Where rays from adjacent midpoints intersect,
111
- * they form the star points. Gap tiles (squares, triangles) between
112
- * polygons receive inferred geometry by extending boundary rays inward.
113
- *
114
- * Variants:
115
- * star8 — 8-fold star-and-cross on 4.8.8 tiling (theta = 67.5 deg)
116
- * star6 — 6-fold star on hexagonal tiling (theta = 60 deg)
117
- * khatam — 8-fold rosette with interlocking kites (theta = 72 deg)
118
- * star10 — 10-fold girih on decagonal tiling (theta = 72 deg)
119
- * star12 — 12-fold on dodecagonal tiling (theta = 75 deg)
120
- *
121
- * All tiles use stroke only (no fill), rendering as transparent overlays.
122
- */
123
-
124
115
  type PatternVariant = 'star8' | 'star6' | 'khatam' | 'star10' | 'star12' | 'rosette-double' | 'rosette-filled' | 'seigaiha' | 'greek-key' | 'celtic-knot' | 'kolam' | 'arch' | 'arabesque-vine' | 'arabesque-net';
125
116
  interface PatternTileProps extends A11yProps {
126
- /** Which geometric pattern to render */
127
117
  variant?: PatternVariant;
128
- /** Tile unit size in SVG units */
129
118
  size?: number;
130
- /** Stroke color (CSS variable or hex) */
131
119
  color?: string;
132
- /** Line thickness */
133
120
  strokeWidth?: number;
134
121
  className?: string;
135
122
  }
136
123
  declare const PatternTile: React__default.FC<PatternTileProps>;
137
- /** Returns the tile dimensions for a given variant and size */
138
124
  declare function getTileDimensions(variant: PatternVariant, size: number): {
139
125
  width: number;
140
126
  height: number;
@@ -0,0 +1,124 @@
1
+ import * as React from 'react';
2
+ import React__default, { ReactNode } from 'react';
3
+ import { EntityRow, TraitConfig, SkeletonNode, OrbitalSchema } from '@almadar/core';
4
+ import { EventTransport, AccessTokenProvider } from '@almadar/shell-runtime/client/EventTransport';
5
+ import './verification-C5pTeMJv.js';
6
+
7
+ /**
8
+ * Read + subscribe surface over the live trait binding stores. Snapshots
9
+ * are cached objects — a new reference only when the trait's entity
10
+ * actually changed (the `useSyncExternalStore` contract).
11
+ */
12
+ interface EntityBindingSource {
13
+ /** Current entity snapshot for a trait (shared-entity traits read the shared store). */
14
+ getEntitySnapshot: (traitName: string) => EntityRow;
15
+ /** Merged render-time config (declared defaults < resolved < call-site). */
16
+ getConfig: (traitName: string) => TraitConfig | undefined;
17
+ /** Current state-machine state — evaluation context for `@state` in marked expressions. */
18
+ getState: (traitName: string) => string;
19
+ /** Subscribe to entity commits for a trait. Returns unsubscribe. */
20
+ subscribe: (traitName: string, callback: () => void) => () => void;
21
+ }
22
+ declare const EntityBindingContext: React.Context<EntityBindingSource | null>;
23
+ /**
24
+ * Bridge one trait's live bindings into React. With no provider (compiled
25
+ * shell, static renders) or no owning trait, returns empty bindings and
26
+ * never re-renders — markers resolve to the same `undefined` they would
27
+ * have resolved to at flush time against an empty entity.
28
+ */
29
+ declare function useEntityBindingSnapshot(traitName: string | undefined): {
30
+ entity: EntityRow;
31
+ config: TraitConfig | undefined;
32
+ state: string;
33
+ };
34
+
35
+ interface AwaitingSkeletonSource {
36
+ /** The predicted skeleton for a top-level slot, from a non-embedded awaiting render. */
37
+ forSlot: (slot: string) => SkeletonNode | undefined;
38
+ /** The predicted skeleton for an embedded trait's frame. */
39
+ forTrait: (traitName: string) => SkeletonNode | undefined;
40
+ subscribe: (callback: () => void) => () => void;
41
+ getVersion: () => number;
42
+ }
43
+ declare const AwaitingSkeletonContext: React.Context<AwaitingSkeletonSource | null>;
44
+ declare function useAwaitingSkeleton(target: {
45
+ slot: string;
46
+ } | {
47
+ trait: string;
48
+ }): SkeletonNode | undefined;
49
+
50
+ /**
51
+ * EntitySchemaContext
52
+ *
53
+ * Provides the kernel's answer for which orbital owns each trait on the page.
54
+ * Not a data store: entity rows flow through the state machine's `@payload.data`
55
+ * binding and land on the rendering component's `entity` prop.
56
+ *
57
+ * @packageDocumentation
58
+ */
59
+
60
+ interface EntitySchemaContextValue {
61
+ /** Per-trait owning-orbital name, as the kernel's page circuit answers it; scopes each slot's events. */
62
+ orbitalsByTrait: ReadonlyMap<string, string>;
63
+ }
64
+ interface EntitySchemaProviderProps {
65
+ orbitalsByTrait: ReadonlyMap<string, string>;
66
+ children: React__default.ReactNode;
67
+ }
68
+ declare function EntitySchemaProvider({ orbitalsByTrait, children, }: EntitySchemaProviderProps): React__default.ReactElement;
69
+ declare function useEntitySchema(): EntitySchemaContextValue;
70
+ /** Null when no provider is present (UISlotRenderer may render outside one in compiled mode). */
71
+ declare function useEntitySchemaOptional(): EntitySchemaContextValue | null;
72
+
73
+ interface ServerBridgeContextValue {
74
+ connected: boolean;
75
+ /**
76
+ * From the transport's `register()` result
77
+ * (`EventTransportRegisterResult.carriesCircuitState`, `@almadar/runtime`):
78
+ * `true` = the stateless topology (a posted leg must carry
79
+ * `traits`/`entityByTrait`), `false` = the server (or an in-process
80
+ * evaluator) holds circuit state itself.
81
+ */
82
+ carriesCircuitState: boolean;
83
+ /** `register()` has resolved, so `carriesCircuitState` is the transport's
84
+ * real topology rather than the pre-register guess. */
85
+ topologyKnown: boolean;
86
+ /** The ONE transport this bridge manages the register/unregister
87
+ * lifecycle for — `useCircuitKernel` dispatches through it directly. */
88
+ transport: EventTransport;
89
+ }
90
+ /**
91
+ * @deprecated Alias for `@almadar/runtime`'s `EventTransport` (plan P5) —
92
+ * kept only because in-package consumers (`OrbPreview.tsx`) still import the name.
93
+ * Import `EventTransport` directly in new code.
94
+ */
95
+ type ServerBridgeTransport = EventTransport;
96
+
97
+ /**
98
+ * Access the server bridge. Returns a no-op stub when outside the provider —
99
+ * `useCircuitKernel` treats an absent/no-op transport as offline (plan G7).
100
+ */
101
+ declare function useServerBridge(): ServerBridgeContextValue;
102
+ interface ServerBridgeProviderProps {
103
+ schema: OrbitalSchema;
104
+ /** HTTP server URL (canonical playground-runtime / apps/builder-server). */
105
+ serverUrl?: string;
106
+ /**
107
+ * Custom `EventTransport` (plan P5, `@almadar/runtime`). Use this for
108
+ * in-process execution (e.g. an in-process test harness invokes
109
+ * `OrbitalServerRuntime.processOrbitalEvent` directly via
110
+ * `createInProcessTransport`). Mutually exclusive with `serverUrl`.
111
+ */
112
+ transport?: EventTransport;
113
+ /**
114
+ * Bearer token for the HTTP transport (`Authorization` on every fetch, and on the
115
+ * request that mints the SSE stream's single-use ticket, since EventSource cannot set headers).
116
+ * Ignored with a custom `transport`.
117
+ */
118
+ getAccessToken?: AccessTokenProvider;
119
+ children: ReactNode;
120
+ }
121
+ declare function ServerBridgeProvider({ schema, serverUrl, transport: customTransport, getAccessToken, children, }: ServerBridgeProviderProps): React.JSX.Element;
122
+
123
+ export { EntitySchemaProvider as b, ServerBridgeProvider as e, useEntitySchemaOptional as f, useServerBridge as g, AwaitingSkeletonContext as h, EntityBindingContext as i, useAwaitingSkeleton as k, useEntityBindingSnapshot as l, useEntitySchema as u };
124
+ export type { AwaitingSkeletonSource as A, EntityBindingSource as E, ServerBridgeTransport as S, EntitySchemaContextValue as a, EntitySchemaProviderProps as c, ServerBridgeContextValue as d, ServerBridgeProviderProps as j };
@@ -0,0 +1,26 @@
1
+ export { SlotContainedContext, SlotContentRenderer, SuspenseConfigProvider, UISlotComponent, UISlotRenderer, renderPatternProps, renderPatternValue } from './chunk-LHP2TK7O.js';
2
+ import './chunk-57DC34LY.js';
3
+ import './chunk-SP5CDJ6K.js';
4
+ import './chunk-CPLN6NBQ.js';
5
+ import './chunk-HH5KSMH5.js';
6
+ import './chunk-REXYVBUO.js';
7
+ import './chunk-AGXD77SL.js';
8
+ import './chunk-TXAUOLWZ.js';
9
+ import './chunk-AB3X7QTE.js';
10
+ import './chunk-DZBQA2OW.js';
11
+ import './chunk-TUPZWTRE.js';
12
+ import './chunk-TZZBINQY.js';
13
+ import './chunk-4T3P43NS.js';
14
+ import './chunk-PCR37T3U.js';
15
+ import './chunk-UXLE3IPR.js';
16
+ import './chunk-ILZ7ORX7.js';
17
+ import './chunk-3VZ36ZKO.js';
18
+ import './chunk-PRXQGGCO.js';
19
+ import './chunk-VO2TTLS5.js';
20
+ import './chunk-AE7VCQB6.js';
21
+ import './chunk-3BBUBJFF.js';
22
+ import './chunk-YHMRX6YA.js';
23
+ import './chunk-4YXBKHHM.js';
24
+ import './chunk-A2LR6VQQ.js';
25
+ import './chunk-P4ZFUQFF.js';
26
+ import './chunk-G7DCAZ22.js';
@@ -1 +1,2 @@
1
+ "use client";
1
2
  export * from '@almadar/shell-browser/auth';
@@ -2,6 +2,7 @@ import { ReactNode, ReactElement } from 'react';
2
2
  import { ViewerAuthority, UserContext } from '@almadar/core';
3
3
  import { BrowserAuth, SignedInUser } from '@almadar/shell-browser/auth';
4
4
  export { BrowserAuth, SignedInUser } from '@almadar/shell-browser/auth';
5
+ import { HostSignInRequest, HostSignInAnswer } from '@almadar/shell-runtime/kernel/host';
5
6
 
6
7
  /** The provider's resolved viewer authority — `@almadar/core`'s {@link ViewerAuthority}. */
7
8
  type AuthAuthority = ViewerAuthority;
@@ -44,6 +45,12 @@ interface DevPersonas {
44
45
  * user, so `@user` resolves as in production.
45
46
  */
46
47
  declare function useDevPersonas(apiBase: string): DevPersonas;
48
+ /**
49
+ * The host's `auth/sign-in` action over a connected Firebase auth: each method of the request is the one call the
50
+ * auth surface offers for it. A provider failure keeps the kind its code names (`FIREBASE_FAILURE_KIND`); a code the
51
+ * table does not list is `unavailable`.
52
+ */
53
+ declare function hostSignIn(auth: BrowserAuth): (request: HostSignInRequest) => Promise<HostSignInAnswer>;
47
54
 
48
- export { AuthProvider, useAuth, useDevPersonas, useOptionalAuth };
55
+ export { AuthProvider, hostSignIn, useAuth, useDevPersonas, useOptionalAuth };
49
56
  export type { AuthAuthority, AuthContextValue, AuthProviderProps, DevPersonas };