@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.
- package/dist/{ArbitraryClassCompiler-Mzabq-UB.d.ts → ArbitraryClassCompiler-CO_iASBn.d.ts} +99 -4
- package/dist/AvlGlyph-EPJKFEO3.js +6 -0
- package/dist/AvlStateMachine-RKZIKNGC.js +9 -0
- package/dist/AvlTransitionDetail-63SD6GZF.js +11 -0
- package/dist/AvlTransitionExplainer-ZBTLOM3T.js +12 -0
- package/dist/BehaviorView-YS5G4GNB.js +11 -0
- package/dist/{Canvas3DHost-_Y-5uLM_.d.ts → Canvas3DHost-BkZQB5l2.d.ts} +1 -1
- package/dist/{EventBusProvider-CVwjkV_2.d.ts → EventBusProvider-BFFHfN4O.d.ts} +12 -0
- package/dist/FlowCanvas-AUMTWMNG.js +26 -0
- package/dist/{GameAudioProvider-Cm9BnvmP.d.ts → GameAudioProvider-ceM_n0ey.d.ts} +4 -7
- package/dist/KernelEngineContext-CcxGYtlr.d.ts +33 -0
- package/dist/LayersPanel-M2LHWUFF.js +6 -0
- package/dist/ModuleCard-QHDGK5XK.js +7 -0
- package/dist/OrbInspector-QCPEPUPH.js +26 -0
- package/dist/{Select-mDZIwNqN.d.ts → Select-B-iDdnvE.d.ts} +16 -30
- package/dist/ServerBridge-Bqsj-lOU.d.ts +124 -0
- package/dist/UISlotRenderer-C7WWOK43.js +26 -0
- package/dist/auth/browser/index.js +1 -0
- package/dist/auth/react/index.d.ts +8 -1
- package/dist/auth/react/index.js +40 -2
- package/dist/avl/index.d.ts +89 -79
- package/dist/avl/index.js +38 -38
- package/dist/{avl-3d-context-BIRKWpaL.d.ts → avl-3d-context-BycmO6tG.d.ts} +9 -12
- package/dist/{chunk-GKIFONTE.js → chunk-3S54FWRC.js} +2 -2
- package/dist/{chunk-DYEKAA4L.js → chunk-3VZ36ZKO.js} +240 -252
- package/dist/{chunk-PC7K4SK7.js → chunk-4T3P43NS.js} +18 -269
- package/dist/{chunk-MBQAMMSE.js → chunk-4YXBKHHM.js} +269 -658
- package/dist/{chunk-YDNJLLG6.js → chunk-57DC34LY.js} +19 -10
- package/dist/{chunk-SJGJJKBY.js → chunk-AB3X7QTE.js} +6 -3
- package/dist/{chunk-AILY3XPS.js → chunk-AE7VCQB6.js} +5 -6
- package/dist/{chunk-FAJDTHWC.js → chunk-AGXD77SL.js} +2 -2
- package/dist/chunk-AU7O65OX.js +66 -0
- package/dist/{chunk-L677XGY3.js → chunk-CPLN6NBQ.js} +5 -5
- package/dist/{chunk-DZ42OJQC.js → chunk-DZBQA2OW.js} +1 -1
- package/dist/{chunk-2PY54Z44.js → chunk-E6KA4J6N.js} +5 -5
- package/dist/{chunk-DJ433ET5.js → chunk-GFXCPUMX.js} +11 -4
- package/dist/{chunk-FP3WIKTC.js → chunk-HH5KSMH5.js} +9 -1
- package/dist/{chunk-U6QRZASX.js → chunk-ILQXJ2AR.js} +1 -1
- package/dist/{chunk-B4BU77LT.js → chunk-ILZ7ORX7.js} +1 -1
- package/dist/{chunk-SGM3FASH.js → chunk-K4MOPSEL.js} +14 -12
- package/dist/{chunk-GYTPOFVC.js → chunk-LHP2TK7O.js} +7402 -6970
- package/dist/{chunk-VFF5OO47.js → chunk-PCR37T3U.js} +15 -38
- package/dist/{chunk-R5O5AUPI.js → chunk-PRXQGGCO.js} +93 -86
- package/dist/{chunk-42FY4RYA.js → chunk-REXYVBUO.js} +2 -2
- package/dist/{chunk-DLZF4PVE.js → chunk-ROICKAU7.js} +3 -3
- package/dist/{chunk-KVQS4GXU.js → chunk-SP5CDJ6K.js} +18 -8
- package/dist/{chunk-P4LNHAFI.js → chunk-TUPZWTRE.js} +2 -2
- package/dist/chunk-TXAUOLWZ.js +490 -0
- package/dist/{chunk-EQAMU2ZC.js → chunk-UTDC2NEA.js} +1 -1
- package/dist/{chunk-73SRAB4P.js → chunk-UU57VNS2.js} +2 -2
- package/dist/{chunk-DFNZUYX4.js → chunk-UXLE3IPR.js} +70 -27
- package/dist/{chunk-L2DEKY4J.js → chunk-VO2TTLS5.js} +3 -6
- package/dist/{chunk-TESBIVUA.js → chunk-X3DMMX27.js} +2 -2
- package/dist/components/index.d.ts +331 -125
- package/dist/components/index.js +28 -28
- package/dist/context/index.d.ts +2 -3
- package/dist/context/index.js +4 -3
- package/dist/core.d.ts +93 -17
- package/dist/core.js +2 -1
- package/dist/design-classes/index.cjs +3 -1
- package/dist/design-classes/index.js +3 -1
- package/dist/hooks/index.d.ts +40 -5
- package/dist/hooks/index.js +5 -4
- package/dist/index.d.ts +36 -114
- package/dist/index.js +174 -34
- package/dist/kernel-client-TZKGHJRY.js +516 -0
- package/dist/kernel-wire-wNdAPfhJ.d.ts +88 -0
- package/dist/lib/index.d.ts +3 -3
- package/dist/lib/index.js +5 -4
- package/dist/{paintDispatch-ChW5mVuK.d.ts → paintDispatch-CuJLsr9Y.d.ts} +5 -15
- package/dist/{prism-AIWGN2X5.js → prism-X5YWKXO5.js} +5 -3
- package/dist/providers/index.d.ts +42 -27
- package/dist/providers/index.js +22 -23
- package/dist/renderer/index.d.ts +0 -2
- package/dist/renderer/index.js +1 -0
- package/dist/runtime/index.d.ts +52 -253
- package/dist/runtime/index.js +21 -24
- package/dist/ssr/index.cjs +2643 -535
- package/dist/ssr/index.d.cts +0 -23
- package/dist/ssr/index.d.ts +0 -23
- package/dist/ssr/index.js +2639 -535
- package/dist/storage/browser/index.js +1 -0
- package/dist/test-support.d.ts +15 -8
- package/dist/test-support.js +91 -24
- package/dist/three/index.d.ts +6 -6
- package/dist/three/index.js +49 -37
- package/dist/{verificationRegistry-CabxhfTv.d.ts → verificationRegistry-CVrcxG1s.d.ts} +3 -3
- package/package.json +13 -9
- package/src/core/lib/band-shapes.json +7 -0
- package/src/core/locales/ar.json +18 -5
- package/src/core/locales/en.json +18 -5
- package/src/core/locales/sl.json +18 -5
- package/tailwind-preset.cjs +30 -1
- package/dist/AvlGlyph-JKJOAH23.js +0 -6
- package/dist/AvlStateMachine-PI4YGREK.js +0 -8
- package/dist/AvlTransitionDetail-ZH7V24UG.js +0 -12
- package/dist/AvlTransitionExplainer-ZSRT7L6Y.js +0 -13
- package/dist/BehaviorValueFrame-6RUJXT4A.js +0 -29
- package/dist/BehaviorValueFrame-SSEMEBTG.css +0 -1756
- package/dist/BehaviorView-RFEE5J6E.js +0 -10
- package/dist/FlowCanvas-STDC4OWK.js +0 -27
- package/dist/KernelEngineContext-BOCQoFwk.d.ts +0 -43
- package/dist/LayersPanel-BBQ54IVG.js +0 -7
- package/dist/ModuleCard-3TT2X7IW.js +0 -7
- package/dist/OrbInspector-K6T6O7GI.js +0 -27
- package/dist/ServerBridge-Cm1On51b.d.ts +0 -233
- package/dist/TraitValueFrame-2PJGLLVI.js +0 -28
- package/dist/TraitValueFrame-4G3KOUBR.css +0 -1756
- package/dist/UISlotRenderer-JKFSX24W.js +0 -27
- package/dist/UserContext-DqWeZkUZ.d.ts +0 -100
- package/dist/chunk-2QOH2HWM.js +0 -95
- package/dist/chunk-6P3MWXYE.js +0 -440
- package/dist/chunk-FIW6WN23.js +0 -508
- package/dist/chunk-GAR5TQ5B.js +0 -199
- package/dist/chunk-ZO6MXAS3.js +0 -69
- package/dist/kernel-client-ZH4PSMCN.js +0 -367
- package/dist/kernel-wire-B4S8pnP3.d.ts +0 -65
- 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-
|
|
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
|
|
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,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-
|
|
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-
|
|
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
|
|
45
|
-
*
|
|
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,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
|
-
/**
|
|
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
|
-
/**
|
|
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';
|
|
@@ -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 };
|