@almadar/ui 6.57.0 → 6.59.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 (32) hide show
  1. package/dist/{AwaitingSkeletonContext-DPgW__WV.d.ts → AwaitingSkeletonContext-Bh399p1x.d.ts} +1 -3
  2. package/dist/{Canvas3DHost-DfAhg6EH.d.ts → Canvas3DHost-CNjANoaU.d.ts} +1 -1
  3. package/dist/{GameAudioProvider-DyBvYP2c.d.ts → GameAudioProvider-Dv_L-PHt.d.ts} +1 -1
  4. package/dist/{UISlotRenderer-NCGDIXN4.js → UISlotRenderer-YNY7V2UJ.js} +2 -2
  5. package/dist/avl/index.cjs +137 -71
  6. package/dist/avl/index.js +24 -8
  7. package/dist/{chunk-GZGDBS4S.js → chunk-7CVXM2KS.js} +1 -1
  8. package/dist/{chunk-PYJ2UQWM.js → chunk-E6MWYQVZ.js} +42 -35
  9. package/dist/{chunk-HA7CJWQX.js → chunk-J755QADM.js} +1184 -1184
  10. package/dist/{chunk-VHTJRS2N.js → chunk-L3MTZ3RH.js} +7 -0
  11. package/dist/{chunk-RHP5WL55.js → chunk-QJIAJ6EH.js} +77 -42
  12. package/dist/components/index.cjs +76 -32
  13. package/dist/components/index.d.ts +9 -7
  14. package/dist/components/index.js +5 -5
  15. package/dist/context/index.cjs +7 -0
  16. package/dist/context/index.js +1 -1
  17. package/dist/hooks/index.cjs +7 -0
  18. package/dist/hooks/index.js +1 -1
  19. package/dist/lib/drawable/three/index.d.ts +3 -3
  20. package/dist/lib/drawable/three/index.js +3 -3
  21. package/dist/lib/index.d.ts +2 -2
  22. package/dist/{paintDispatch-_6EhJCiL.d.ts → paintDispatch-Cp1_S93j.d.ts} +30 -2
  23. package/dist/providers/index.cjs +51 -50
  24. package/dist/providers/index.d.ts +4 -4
  25. package/dist/providers/index.js +8 -21
  26. package/dist/runtime/index.cjs +120 -70
  27. package/dist/runtime/index.d.ts +4 -4
  28. package/dist/runtime/index.js +4 -4
  29. package/dist/ssr/index.cjs +2 -0
  30. package/dist/ssr/index.js +2 -0
  31. package/dist/{verificationRegistry-CD7Xb40L.d.ts → verificationRegistry-B3dj1Zl8.d.ts} +1 -1
  32. package/package.json +9 -8
@@ -395,6 +395,13 @@ function useUISlotManager() {
395
395
  setSources((prev) => {
396
396
  const slotSources = prev[slot];
397
397
  if (!slotSources || !(sourceKey in slotSources)) {
398
+ const embedded = traitIndexRef.current.get(sourceTrait);
399
+ if (embedded !== void 0 && embedded.slot === slot) {
400
+ unindexTrait(sourceTrait);
401
+ notifyTraitSubscribers(sourceTrait, null);
402
+ log.info("slot:cleared-embedded", { slot, sourceTrait, lastPatternType: embedded.pattern });
403
+ return prev;
404
+ }
398
405
  log.debug("slot:clear-noop", { slot, sourceTrait, reason: !slotSources ? "no-slot" : "no-source" });
399
406
  return prev;
400
407
  }
@@ -1,4 +1,4 @@
1
- import { useUISlotManager } from '../chunk-VHTJRS2N.js';
1
+ import { useUISlotManager } from '../chunk-L3MTZ3RH.js';
2
2
  export { resolveThemeForRuntime, themeTokensToCssVars } from '../chunk-V3FGTQUE.js';
3
3
  import '../chunk-PEST66PN.js';
4
4
  import '../chunk-QPXIAUJD.js';
@@ -1374,6 +1374,13 @@ function useUISlotManager() {
1374
1374
  setSources((prev) => {
1375
1375
  const slotSources = prev[slot];
1376
1376
  if (!slotSources || !(sourceKey in slotSources)) {
1377
+ const embedded = traitIndexRef.current.get(sourceTrait);
1378
+ if (embedded !== void 0 && embedded.slot === slot) {
1379
+ unindexTrait(sourceTrait);
1380
+ notifyTraitSubscribers(sourceTrait, null);
1381
+ log10.info("slot:cleared-embedded", { slot, sourceTrait, lastPatternType: embedded.pattern });
1382
+ return prev;
1383
+ }
1377
1384
  log10.debug("slot:clear-noop", { slot, sourceTrait, reason: !slotSources ? "no-slot" : "no-source" });
1378
1385
  return prev;
1379
1386
  }
@@ -1,6 +1,6 @@
1
1
  export { keyChord, mergeCaptureTables, useAgentChat, useCompile, useConnectGitHub, useDeepAgentGeneration, useDisconnectGitHub, useExtensions, useFileEditor, useFileSystem, useGitHubBranches, useGitHubRepo, useGitHubRepos, useGitHubStatus, useKeyboardRouter, useNavStack, usePreview, useRenderInterpolation, useTraitListens, useUIEvents, useValidation } from '../chunk-MZIDOJMD.js';
2
2
  export { I18nProvider, SharedEntityStoreContext, createSharedEntityStore, createTranslate, runTickFrame, useFormatContext, useRenderI18n, useSharedEntitySnapshot, useSharedEntityStore, useSharedEntityStoreContext, useTranslate } from '../chunk-N7JIG57B.js';
3
- export { DEFAULT_SLOTS, useUISlotManager } from '../chunk-VHTJRS2N.js';
3
+ export { DEFAULT_SLOTS, useUISlotManager } from '../chunk-L3MTZ3RH.js';
4
4
  import '../chunk-YYYHH5BA.js';
5
5
  export { ALMADAR_DND_MIME, parseQueryBinding, useAuthContext, useCanvasGestures, useDragReorder, useDraggable, useDropZone, useInfiniteScroll, useLongPress, useMediaQuery, usePrefersReducedMotion, usePullToRefresh, useQuerySingleton, useSwipeGesture } from '../chunk-I5QOYW2Z.js';
6
6
  export { useTapReveal } from '../chunk-XJTHMW4G.js';
@@ -1,5 +1,5 @@
1
- import { C as CanvasPointLightConfig, I as IsometricTile, a as IsometricUnit, b as IsometricFeature } from '../../../Canvas3DHost-DfAhg6EH.js';
2
- export { c as Canvas3DHost, d as Canvas3DHostHandle, e as Canvas3DHostProps, c as GameCanvas3D, U as UnitAnimationState } from '../../../Canvas3DHost-DfAhg6EH.js';
1
+ import { C as CanvasPointLightConfig, I as IsometricTile, a as IsometricUnit, b as IsometricFeature } from '../../../Canvas3DHost-CNjANoaU.js';
2
+ export { c as Canvas3DHost, d as Canvas3DHostHandle, e as Canvas3DHostProps, c as GameCanvas3D, U as UnitAnimationState } from '../../../Canvas3DHost-CNjANoaU.js';
3
3
  import React__default, { Component, ReactNode, ErrorInfo } from 'react';
4
4
  import * as THREE from 'three';
5
5
  import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js';
@@ -8,7 +8,7 @@ import { Z as ZoomLevel } from '../../../avl-zoom-state-CKMVuBFg.js';
8
8
  import { b as Avl3DModelOverrides } from '../../../avl-3d-context-BpBKZIbc.js';
9
9
  export { d as AVL_3D_COLORS, A as Avl3DConfig, a as Avl3DContext, C as CAMERA_POSITIONS, P as Position3D, e as arcCurve3D, f as fibonacciSpherePositions, g as goldenSpiralPositions, o as orbitRingPositions, s as selfLoopCurve3D, t as treeLayout3D, u as useAvl3DConfig } from '../../../avl-3d-context-BpBKZIbc.js';
10
10
  import { A as ApplicationLevelData, b as OrbitalLevelData, T as TraitLevelData, c as TransitionLevelData } from '../../../avl-schema-parser-CH1QoZw1.js';
11
- import '../../../paintDispatch-_6EhJCiL.js';
11
+ import '../../../paintDispatch-Cp1_S93j.js';
12
12
  import 'lucide-react';
13
13
 
14
14
  /**
@@ -1,6 +1,6 @@
1
- import { goldenSpiralPositions, forceDirectedPositions, Avl3DOrbitalNode, Avl3DCrossWire, Avl3DEntityCore, fibonacciSpherePositions, Avl3DLabel, Avl3DStateNode, Avl3DTransitionArc, Avl3DExprTree, AVL_3D_COLORS, zoomReducer, initialZoomState, CAMERA_POSITIONS, getBreadcrumbs, Avl3DTooltip } from '../../../chunk-GZGDBS4S.js';
2
- export { AVL_3D_COLORS, CAMERA_POSITIONS, arcCurve3D, fibonacciSpherePositions, goldenSpiralPositions, orbitRingPositions, selfLoopCurve3D, treeLayout3D } from '../../../chunk-GZGDBS4S.js';
3
- import { useCanvasTheme, withSeries, resolveDrawableColors, markColor, applySceneMaterials, collectDrawnItems, buildHitIndex, withPreviewPosition, isValidScenePos, isAnimatedShape, applyShapeAnimation, expandFxLayer, isAnimatedGroup, applyMeshAnimation, spriteAssetState, SPRITE_FALLBACK_FILL, isAnimatedMesh, clampSegments, isAtlasAsset, getAtlas, subRectFor, polyhedronBounds, AVL_INK, parseTransitionLevel, parseTraitLevel, parseOrbitalLevel, parseApplicationLevel, Box, HStack, pressableProps, resolveThemeColor } from '../../../chunk-HA7CJWQX.js';
1
+ import { goldenSpiralPositions, forceDirectedPositions, Avl3DOrbitalNode, Avl3DCrossWire, Avl3DEntityCore, fibonacciSpherePositions, Avl3DLabel, Avl3DStateNode, Avl3DTransitionArc, Avl3DExprTree, AVL_3D_COLORS, zoomReducer, initialZoomState, CAMERA_POSITIONS, getBreadcrumbs, Avl3DTooltip } from '../../../chunk-7CVXM2KS.js';
2
+ export { AVL_3D_COLORS, CAMERA_POSITIONS, arcCurve3D, fibonacciSpherePositions, goldenSpiralPositions, orbitRingPositions, selfLoopCurve3D, treeLayout3D } from '../../../chunk-7CVXM2KS.js';
3
+ import { useCanvasTheme, withSeries, resolveDrawableColors, markColor, applySceneMaterials, collectDrawnItems, buildHitIndex, withPreviewPosition, isValidScenePos, isAnimatedShape, applyShapeAnimation, expandFxLayer, isAnimatedGroup, applyMeshAnimation, spriteAssetState, SPRITE_FALLBACK_FILL, isAnimatedMesh, clampSegments, isAtlasAsset, getAtlas, subRectFor, polyhedronBounds, AVL_INK, parseTransitionLevel, parseTraitLevel, parseOrbitalLevel, parseApplicationLevel, Box, HStack, pressableProps, resolveThemeColor } from '../../../chunk-J755QADM.js';
4
4
  import { Typography } from '../../../chunk-4ZGXIW3B.js';
5
5
  import '../../../chunk-XJTHMW4G.js';
6
6
  import { useEventBus, useEmitEvent } from '../../../chunk-CHNC4UYE.js';
@@ -2,13 +2,13 @@ export { A as ApplyOperatorInput, a as ApplyOperatorResult, C as ContentSegment,
2
2
  import { FieldValue, EntityRow, EventKey, EnterAnimation } from '@almadar/core';
3
3
  export { AssetLoadStatus, BridgeHealth, CheckStatus, EffectTrace, EventLogEntry, OrbitalVerificationAPI, ServerResponseTrace, TraitStateSnapshot, TransitionTrace, VerificationCheck, VerificationSnapshot, VerificationSummary, getNestedValue } from '@almadar/core';
4
4
  export { p as profilerOnRender, u as usePerfBuffer } from '../perf-DaVdsbU0.js';
5
- export { T as TraitSnapshotGetter, b as bindCanvasCapture, a as bindEventBus, c as bindLastDrawables, d as bindTraitStateGetter, e as clearVerification, g as getAllChecks, f as getBridgeHealth, h as getSnapshot, i as getSummary, j as getTraitSnapshots, k as getTransitions, l as getTransitionsForTrait, r as recordOrbitalResponse, m as recordServerResponse, n as recordTransition, o as recordingTransport, p as registerCheck, q as registerTraitSnapshot, s as serverEffectTraces, t as subscribeToVerification, u as updateAssetStatus, v as updateBridgeHealth, w as updateCheck, x as waitForTransition } from '../verificationRegistry-CD7Xb40L.js';
5
+ export { T as TraitSnapshotGetter, b as bindCanvasCapture, a as bindEventBus, c as bindLastDrawables, d as bindTraitStateGetter, e as clearVerification, g as getAllChecks, f as getBridgeHealth, h as getSnapshot, i as getSummary, j as getTraitSnapshots, k as getTransitions, l as getTransitionsForTrait, r as recordOrbitalResponse, m as recordServerResponse, n as recordTransition, o as recordingTransport, p as registerCheck, q as registerTraitSnapshot, s as serverEffectTraces, t as subscribeToVerification, u as updateAssetStatus, v as updateBridgeHealth, w as updateCheck, x as waitForTransition } from '../verificationRegistry-B3dj1Zl8.js';
6
6
  export { B as BooleanLabels, D as DEFAULT_CURRENCY, F as FormatContext, S as SortDirection, V as ValueFormat, c as compareCellValues, f as formatDate, a as formatDateTime, b as formatTime, d as formatValue, p as parseCalendarDate, s as sortRows, t as toDateInputValue, e as toDateTimeInputValue } from '../format-Czimj421.js';
7
7
  export { D as DENSITY_ELEMENT_VARS, a as DENSITY_SPACING_VARS, b as DIAGRAM_VARS, E as ELEVATION_VARS, F as FlatVarEntry, G as GEOMETRY_VARS, I as ICONOGRAPHY_VARS, L as LEGACY_PREFIXES, M as MOTION_DURATION_KEYS, c as MOTION_EASING_KEYS, d as MOTION_INTENT_VARS, e as MOTION_SHAPE_VARS, S as SCENE_VARS, f as SURFACE_VARS, g as StringValueKey, h as TYPE_FAMILY_VARS, i as TYPE_HEADING_VARS, j as TYPE_INTENT_VARS, k as TYPE_SIZE_KEYS, T as ThemeMode, l as enterKeyframe, r as resolveThemeForRuntime, t as themeTokensToCssVars } from '../themeTokens-D6MFwKrC.js';
8
8
  export { PERF_NAMESPACE, PerfEntry, clearPerf, perfEnd, perfGauge, perfStart, perfTime, perfTimeAsync } from '@almadar/runtime/ui';
9
9
  import 'react';
10
10
  import 'clsx';
11
- import '../paintDispatch-_6EhJCiL.js';
11
+ import '../paintDispatch-Cp1_S93j.js';
12
12
  import 'lucide-react';
13
13
  import '@almadar/runtime';
14
14
 
@@ -1,5 +1,5 @@
1
- import { A11yProps, Asset, AssetUrl, ScenePos } from '@almadar/core';
2
1
  import React__default from 'react';
2
+ import { A11yProps, Asset, AssetUrl, ScenePos } from '@almadar/core';
3
3
  import { LucideIcon } from 'lucide-react';
4
4
 
5
5
  type BadgeVariant = "default" | "primary" | "secondary" | "success" | "warning" | "danger" | "error" | "info" | "neutral";
@@ -372,6 +372,10 @@ interface DrawShapeProps extends DrawableBase {
372
372
  /** 0..1 opacity. */
373
373
  opacity?: number;
374
374
  }
375
+ /** Registry/standalone stub — the host paints this atom; the DOM renders nothing.
376
+ * When composed as a React child of a draw-host (Canvas2D), registers its
377
+ * descriptor via context so the host paints it. */
378
+ declare function DrawShape(props: DrawShapeProps): React__default.JSX.Element | null;
375
379
 
376
380
  /**
377
381
  * `draw-sprite` — the neutral image/atlas-frame drawable atom (dimension-agnostic).
@@ -418,6 +422,8 @@ interface DrawSpriteProps extends DrawableBase {
418
422
  /** Drop shadow (e.g. a team-colored glow). */
419
423
  shadow?: DrawShapeShadow;
420
424
  }
425
+ /** Registry/standalone stub — the host paints this atom; the DOM renders nothing. */
426
+ declare function DrawSprite(_props: DrawSpriteProps): React__default.JSX.Element | null;
421
427
 
422
428
  /**
423
429
  * `draw-text` — the neutral text drawable atom (dimension-agnostic).
@@ -453,6 +459,8 @@ interface DrawTextProps extends DrawableBase {
453
459
  baseline?: DrawTextBaseline;
454
460
  opacity?: number;
455
461
  }
462
+ /** Registry/standalone stub — the host paints this atom; the DOM renders nothing. */
463
+ declare function DrawText(_props: DrawTextProps): React__default.JSX.Element | null;
456
464
 
457
465
  /**
458
466
  * `draw-mesh` — the volumetric 3D drawable atom (3D-canvas backend).
@@ -602,6 +610,10 @@ interface DrawMeshProps extends DrawableBase {
602
610
  /** 0..1 opacity; multiplies the material and enclosing group opacity. */
603
611
  opacity?: number;
604
612
  }
613
+ /** Registry/standalone stub — the 3D host renders this atom; the DOM renders nothing.
614
+ * When composed as a React child of a draw-host, registers its descriptor via
615
+ * context so the host paints it — same path as DrawShape. */
616
+ declare function DrawMesh(props: DrawMeshProps): React__default.JSX.Element | null;
605
617
 
606
618
  /**
607
619
  * `draw-group` — the drawable CONTAINER atom (dimension-agnostic).
@@ -647,6 +659,10 @@ interface DrawGroupProps extends DrawableBase {
647
659
  /** The grouped drawables, painted through the normal dispatch. */
648
660
  items: DrawableNode[];
649
661
  }
662
+ /** Registry/standalone stub — the host paints this atom; the DOM renders nothing.
663
+ * When composed as a React child of a draw-host (Canvas2D), registers its
664
+ * descriptor via context so the host paints it — same path as DrawShape. */
665
+ declare function DrawGroup(props: DrawGroupProps): React__default.JSX.Element | null;
650
666
 
651
667
  interface SkinWeight {
652
668
  /** Index into the drawable's `bones` array. */
@@ -725,6 +741,10 @@ interface DrawSkinnedMeshProps extends DrawableBase {
725
741
  opacity: number;
726
742
  };
727
743
  }
744
+ /** Registry/standalone stub — the host paints this atom; the DOM renders nothing.
745
+ * When composed as a React child of a draw-host (Canvas2D), registers its
746
+ * descriptor via context so the host paints it. */
747
+ declare function DrawSkinnedMesh(props: DrawSkinnedMeshProps): React__default.JSX.Element | null;
728
748
 
729
749
  /**
730
750
  * `draw-sprite-layer` — batch multiple sprites in one descriptor for O(layers) rendering.
@@ -740,6 +760,8 @@ interface DrawSpriteLayerProps extends DrawableBase {
740
760
  /** Sprites painted in array order; z-ordering is the caller's responsibility. */
741
761
  items: DrawSpriteProps[];
742
762
  }
763
+ /** Registry/standalone stub — the host paints this molecule; the DOM renders nothing. */
764
+ declare function DrawSpriteLayer(_props: DrawSpriteLayerProps): React__default.JSX.Element | null;
743
765
 
744
766
  /**
745
767
  * `draw-shape-layer` — batch of shapes in one descriptor for O(layers) perf.
@@ -753,6 +775,8 @@ interface DrawShapeLayerProps extends DrawableBase {
753
775
  type: 'draw-shape-layer';
754
776
  items: DrawShapeProps[];
755
777
  }
778
+ /** Registry/standalone stub — the host paints this molecule; the DOM renders nothing. */
779
+ declare function DrawShapeLayer(_props: DrawShapeLayerProps): React__default.JSX.Element | null;
756
780
 
757
781
  /**
758
782
  * `draw-text-layer` — batch of text labels in one descriptor for O(layers) perf.
@@ -769,6 +793,8 @@ interface DrawTextLayerProps extends DrawableBase {
769
793
  type: 'draw-text-layer';
770
794
  items: DrawTextProps[];
771
795
  }
796
+ /** Registry/standalone stub — the host paints this molecule; the DOM renders nothing. */
797
+ declare function DrawTextLayer(_props: DrawTextLayerProps): React__default.JSX.Element | null;
772
798
 
773
799
  /**
774
800
  * fx — the shared transient-effect contract (type-only module + pure helpers).
@@ -949,6 +975,8 @@ interface DrawFxLayerProps extends DrawableBase {
949
975
  /** Floating-message text color when an item declares none. Default `#ffe066`. */
950
976
  textColor?: string;
951
977
  }
978
+ /** Registry/standalone stub — the host paints this molecule; the DOM renders nothing. */
979
+ declare function DrawFxLayer(_props: DrawFxLayerProps): React__default.JSX.Element | null;
952
980
 
953
981
  /**
954
982
  * Drawable paint dispatch (2D) + the `DrawableNode` union.
@@ -964,4 +992,4 @@ interface DrawFxLayerProps extends DrawableBase {
964
992
  /** Every drawable descriptor. The host's `children` are a `DrawableNode[]`. */
965
993
  type DrawableNode = DrawSpriteProps | DrawShapeProps | DrawTextProps | DrawGroupProps | DrawMeshProps | DrawSkinnedMeshProps | DrawSpriteLayerProps | DrawShapeLayerProps | DrawTextLayerProps | DrawFxLayerProps;
966
994
 
967
- export { type BadgeColor as B, type ColorToken as C, type DrawableNode as D, type FxOverlayItem as F, type IconInput as I, type LinkAction as L, type MeshShapeKind as M, type Projector as P, type Rect as R, type UiError as U, type MeshMaterial as a, type DrawGroupProps as b, type DrawTextProps as c, type DrawMeshProps as d, type DisplayField as e, type BadgeVariant as f, Badge as g, type BadgeProps as h, type FxOverlayKind as i, Icon as j, type IconAnimation as k, type IconProps as l, type IconSize as m, type ImageSource as n, type Point as o };
995
+ export { type BadgeColor as B, type ColorToken as C, type DrawableNode as D, type FxOverlayItem as F, type IconInput as I, type LinkAction as L, type MeshShapeKind as M, type Projector as P, type Rect as R, type UiError as U, type MeshMaterial as a, type DrawGroupProps as b, type DrawTextProps as c, type DrawMeshProps as d, type DisplayField as e, type DisplayFieldFormat as f, type BadgeVariant as g, Badge as h, type BadgeProps as i, DrawFxLayer as j, DrawGroup as k, DrawMesh as l, DrawShape as m, DrawShapeLayer as n, DrawSkinnedMesh as o, DrawSprite as p, DrawSpriteLayer as q, DrawText as r, DrawTextLayer as s, type FxOverlayKind as t, Icon as u, type IconAnimation as v, type IconProps as w, type IconSize as x, type ImageSource as y, type Point as z };
@@ -7217,6 +7217,7 @@ var init_Avatar = __esm({
7217
7217
  statusClasses[status],
7218
7218
  statusSizeClasses[size2]
7219
7219
  ),
7220
+ role: "img",
7220
7221
  "aria-label": t("avatar.status", { status: t(`avatar.status.${status}`) })
7221
7222
  }
7222
7223
  ),
@@ -9853,6 +9854,7 @@ var init_AnimatedGraphic = __esm({
9853
9854
  "div",
9854
9855
  {
9855
9856
  className: "w-full h-full [&>svg]:w-full [&>svg]:h-full",
9857
+ "aria-hidden": "true",
9856
9858
  dangerouslySetInnerHTML: { __html: resolvedSvg }
9857
9859
  }
9858
9860
  ) : children
@@ -19056,6 +19058,7 @@ var init_Tabs = __esm({
19056
19058
  }
19057
19059
  };
19058
19060
  const activeTabContent = safeItems.find((item) => item.id === activeTab)?.content;
19061
+ const rendersPanel = activeTabContent !== void 0 && activeTabContent !== null;
19059
19062
  if (safeItems.length === 0) {
19060
19063
  return /* @__PURE__ */ jsxRuntime.jsx(Box, { ...domPassthrough(rest), className: cn("w-full", className), children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", color: "muted", className: "py-4", children: t("empty.noItems") }) });
19061
19064
  }
@@ -19106,7 +19109,7 @@ var init_Tabs = __esm({
19106
19109
  id: tabId(item.id),
19107
19110
  role: "tab",
19108
19111
  "aria-selected": isActive,
19109
- "aria-controls": isActive ? panelId(item.id) : void 0,
19112
+ "aria-controls": isActive && rendersPanel ? panelId(item.id) : void 0,
19110
19113
  "aria-disabled": isDisabled,
19111
19114
  tabIndex: isActive ? 0 : -1,
19112
19115
  onClick: () => !isDisabled && handleTabChange(item.id, item.event),
@@ -19166,7 +19169,7 @@ var init_Tabs = __esm({
19166
19169
  )
19167
19170
  ] })
19168
19171
  ] }) : tablist,
19169
- activeTabContent !== void 0 && activeTabContent !== null && /* @__PURE__ */ jsxRuntime.jsx(
19172
+ rendersPanel && /* @__PURE__ */ jsxRuntime.jsx(
19170
19173
  Box,
19171
19174
  {
19172
19175
  role: "tabpanel",
@@ -25343,8 +25346,10 @@ var init_AvlFieldType = __esm({
25343
25346
  pattern: "hexagon",
25344
25347
  node: "hexagon",
25345
25348
  event: "hexagon",
25349
+ EventAddress: "hexagon",
25346
25350
  SExpr: "hexagon",
25347
25351
  array: "bars",
25352
+ tuple: "bars",
25348
25353
  relation: "link"
25349
25354
  };
25350
25355
  AvlFieldType = ({
@@ -34477,8 +34482,11 @@ function DataGrid({
34477
34482
  children: [
34478
34483
  imageField && (() => {
34479
34484
  const imgUrl = resolveImageUrl(core.getNestedValue(itemData, imageField));
34480
- if (!imgUrl) return null;
34481
- return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: asRows ? "w-12 h-12 flex-shrink-0 overflow-hidden rounded-container" : "w-full aspect-video overflow-hidden rounded-t-container", children: /* @__PURE__ */ jsxRuntime.jsx(
34485
+ const mediaClass = asRows ? "w-12 h-12 flex-shrink-0 overflow-hidden rounded-container" : "w-full aspect-video overflow-hidden rounded-t-container";
34486
+ if (!imgUrl) {
34487
+ return /* @__PURE__ */ jsxRuntime.jsx(Box, { "data-media-placeholder": true, "aria-hidden": "true", className: cn(mediaClass, "flex items-center justify-center bg-muted text-muted-foreground"), children: /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "image", size: asRows ? "sm" : "lg" }) });
34488
+ }
34489
+ return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: mediaClass, children: /* @__PURE__ */ jsxRuntime.jsx(
34482
34490
  "img",
34483
34491
  {
34484
34492
  src: imgUrl,
@@ -34511,7 +34519,7 @@ function DataGrid({
34511
34519
  Typography,
34512
34520
  {
34513
34521
  variant: titleField?.variant === "h3" && !asRows ? "h3" : "h4",
34514
- className: "font-semibold truncate min-w-0",
34522
+ className: cn("font-semibold min-w-0", asRows ? "truncate" : "line-clamp-2 break-words"),
34515
34523
  children: titleDisplay
34516
34524
  }
34517
34525
  )
@@ -34640,24 +34648,33 @@ var init_DataGrid = __esm({
34640
34648
  DataGrid.displayName = "DataGrid";
34641
34649
  }
34642
34650
  });
34643
- function renderIconInput2(icon, props) {
34644
- return typeof icon === "string" ? /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: icon, ...props }) : /* @__PURE__ */ jsxRuntime.jsx(Icon, { icon, ...props });
34645
- }
34646
- function formatValue2(value, format, fmt2, relationOptions) {
34647
- const relationDisplay = resolveRelationCellDisplay(value, relationOptions);
34648
- if (relationDisplay !== void 0) return relationDisplay;
34649
- return formatValue(value, format, fmt2);
34650
- }
34651
- function groupData(items, field) {
34651
+
34652
+ // lib/groupRows.ts
34653
+ function groupRows(items, field, format, fmt2 = {}) {
34652
34654
  const groups = /* @__PURE__ */ new Map();
34653
34655
  for (const item of items) {
34654
- const key = String(core.getNestedValue(item, field) ?? "");
34656
+ const raw = core.getNestedValue(item, field);
34657
+ const key = format ? formatValue(raw ?? void 0, format, fmt2) : String(raw ?? "");
34655
34658
  const group = groups.get(key);
34656
34659
  if (group) group.push(item);
34657
34660
  else groups.set(key, [item]);
34658
34661
  }
34659
34662
  return Array.from(groups.entries()).map(([label, groupItems]) => ({ label, items: groupItems }));
34660
34663
  }
34664
+ var init_groupRows = __esm({
34665
+ "lib/groupRows.ts"() {
34666
+ init_format();
34667
+ init_getNestedValue();
34668
+ }
34669
+ });
34670
+ function renderIconInput2(icon, props) {
34671
+ return typeof icon === "string" ? /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: icon, ...props }) : /* @__PURE__ */ jsxRuntime.jsx(Icon, { icon, ...props });
34672
+ }
34673
+ function formatValue2(value, format, fmt2, relationOptions) {
34674
+ const relationDisplay = resolveRelationCellDisplay(value, relationOptions);
34675
+ if (relationDisplay !== void 0) return relationDisplay;
34676
+ return formatValue(value, format, fmt2);
34677
+ }
34661
34678
  function DataList({
34662
34679
  entity,
34663
34680
  fields,
@@ -34668,6 +34685,7 @@ function DataList({
34668
34685
  gap = "none",
34669
34686
  variant = "default",
34670
34687
  groupBy,
34688
+ groupFormat,
34671
34689
  senderField,
34672
34690
  senderLabelField,
34673
34691
  currentUser,
@@ -34775,9 +34793,9 @@ function DataList({
34775
34793
  e.stopPropagation();
34776
34794
  fireRowAction(action, itemData, String(itemData.id ?? ""));
34777
34795
  };
34778
- const renderItemActions = (itemData, onPrimary = false) => {
34796
+ const renderItemActions = (itemData, onPrimary = false, only) => {
34779
34797
  if (!itemActions || itemActions.length === 0) return null;
34780
- const shown = rowActions(itemActions, itemData);
34798
+ const shown = only ?? rowActions(itemActions, itemData);
34781
34799
  if (shown.length === 0) return null;
34782
34800
  const inline = maxInlineActions != null ? shown.slice(0, maxInlineActions) : shown;
34783
34801
  const overflow = maxInlineActions != null ? shown.slice(maxInlineActions) : [];
@@ -34861,7 +34879,7 @@ function DataList({
34861
34879
  const isMessage = variant === "message";
34862
34880
  if (isMessage) {
34863
34881
  const items2 = [...data];
34864
- const groups2 = groupBy ? groupData(items2, groupBy) : [{ label: "", items: items2 }];
34882
+ const groups2 = groupBy ? groupRows(items2, groupBy, groupFormat, fmt2) : [{ label: "", items: items2 }];
34865
34883
  const contentField = (fieldDefs.find((f3) => f3.variant === "body") ?? titleField)?.name ?? "";
34866
34884
  const senderLabel = (itemData, raw) => {
34867
34885
  if (!senderLabelField) return raw;
@@ -34958,7 +34976,7 @@ function DataList({
34958
34976
  ] });
34959
34977
  }
34960
34978
  const items = [...data];
34961
- const groups = groupBy ? groupData(items, groupBy) : [{ label: "", items }];
34979
+ const groups = groupBy ? groupRows(items, groupBy, groupFormat, fmt2) : [{ label: "", items }];
34962
34980
  const idFieldName = dndItemIdField ?? "id";
34963
34981
  const renderItem = (itemData, index, isLast) => {
34964
34982
  const dndId = itemData[idFieldName] ?? `__idx_${index}`;
@@ -34969,7 +34987,11 @@ function DataList({
34969
34987
  const divider = (isCard || isCompact) && !isLast ? /* @__PURE__ */ jsxRuntime.jsx(Box, { className: cn("border-b border-border/40", isCompact ? "mx-4" : "mx-6") }) : null;
34970
34988
  if (hasRenderProp) {
34971
34989
  const id2 = itemData.id || String(index);
34972
- const actions = renderItemActions(itemData);
34990
+ const allActions = itemActions ? rowActions(itemActions, itemData) : [];
34991
+ const primaryActions = allActions.filter((a) => a.variant === "primary");
34992
+ const otherActions = allActions.filter((a) => a.variant !== "primary");
34993
+ const primary = primaryActions.length > 0 ? renderItemActions(itemData, false, primaryActions) : null;
34994
+ const actions = otherActions.length > 0 ? renderItemActions(itemData, false, otherActions) : null;
34973
34995
  return wrapDnd(
34974
34996
  /* @__PURE__ */ jsxRuntime.jsxs(
34975
34997
  Box,
@@ -34990,6 +35012,7 @@ function DataList({
34990
35012
  }
34991
35013
  ),
34992
35014
  /* @__PURE__ */ jsxRuntime.jsx(Box, { className: cn(onOpen && "relative"), children: itemRenderer(itemData, index) }),
35015
+ primary && /* @__PURE__ */ jsxRuntime.jsx(HStack, { justify: "end", className: cn("relative px-4 pb-3", STRETCHED_ABOVE), children: primary }),
34993
35016
  actions && /* @__PURE__ */ jsxRuntime.jsxs(Box, { onClick: (e) => e.stopPropagation(), className: "absolute top-2 right-2 z-10 opacity-0 group-hover/rowactions:opacity-100 focus-within:opacity-100 [@media(pointer:coarse)]:opacity-100 transition-opacity duration-fast", children: [
34994
35017
  /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "rounded-container border border-border bg-card/95 backdrop-blur-sm shadow-elevation-popover surface-material p-0.5 [@media(pointer:coarse)]:hidden", children: actions }),
34995
35018
  /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "hidden [@media(pointer:coarse)]:block rounded-container border border-border bg-card/95 backdrop-blur-sm shadow-elevation-popover surface-material p-0.5", children: /* @__PURE__ */ jsxRuntime.jsx(
@@ -34997,7 +35020,7 @@ function DataList({
34997
35020
  {
34998
35021
  position: "bottom-end",
34999
35022
  trigger: /* @__PURE__ */ jsxRuntime.jsx(Button, { variant: "ghost", size: "sm", "aria-label": t("common.actions"), "data-testid": "action-overflow", children: /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "more-horizontal", size: "xs" }) }),
35000
- items: rowActions(itemActions ?? [], itemData).map((action) => ({
35023
+ items: otherActions.map((action) => ({
35001
35024
  label: action.label,
35002
35025
  icon: action.icon,
35003
35026
  variant: action.variant === "danger" ? "danger" : "default",
@@ -35188,6 +35211,7 @@ var init_DataList = __esm({
35188
35211
  init_format();
35189
35212
  init_relationLabel();
35190
35213
  init_getNestedValue();
35214
+ init_groupRows();
35191
35215
  init_useEventBus();
35192
35216
  init_useRowActions();
35193
35217
  init_Box();
@@ -36281,16 +36305,6 @@ function asFieldValue(v) {
36281
36305
  if (t === "object") return v;
36282
36306
  return void 0;
36283
36307
  }
36284
- function groupData2(items, field) {
36285
- const groups = /* @__PURE__ */ new Map();
36286
- for (const item of items) {
36287
- const key = String(core.getNestedValue(item, field) ?? "");
36288
- const group = groups.get(key);
36289
- if (group) group.push(item);
36290
- else groups.set(key, [item]);
36291
- }
36292
- return Array.from(groups.entries()).map(([label, groupItems]) => ({ label, items: groupItems }));
36293
- }
36294
36308
  function TableView({
36295
36309
  entity,
36296
36310
  columns,
@@ -36601,7 +36615,7 @@ function TableView({
36601
36615
  return dnd.isZone ? /* @__PURE__ */ jsxRuntime.jsx(dnd.SortableItem, { id: row[idField] ?? id, children: rowInner }, id) : /* @__PURE__ */ jsxRuntime.jsx(React99__namespace.default.Fragment, { children: rowInner }, id);
36602
36616
  };
36603
36617
  const items = Array.from(data);
36604
- const groups = groupBy ? groupData2(items, groupBy) : [{ label: "", items }];
36618
+ const groups = groupBy ? groupRows(items, groupBy) : [{ label: "", items }];
36605
36619
  let runningIndex = 0;
36606
36620
  const body = /* @__PURE__ */ jsxRuntime.jsx(Box, { role: "rowgroup", children: groups.map((group, gi) => /* @__PURE__ */ jsxRuntime.jsxs(React99__namespace.default.Fragment, { children: [
36607
36621
  group.label && /* @__PURE__ */ jsxRuntime.jsx(Divider, { label: group.label, className: gi > 0 ? "mt-3" : "mt-0" }),
@@ -36640,6 +36654,7 @@ var init_TableView = __esm({
36640
36654
  init_format();
36641
36655
  init_relationLabel();
36642
36656
  init_getNestedValue();
36657
+ init_groupRows();
36643
36658
  init_useEventBus();
36644
36659
  init_useRowActions();
36645
36660
  init_Box();
@@ -59050,17 +59065,7 @@ function findPageByName2(schema, pageName) {
59050
59065
  return null;
59051
59066
  }
59052
59067
  function getDefaultPage2(schema) {
59053
- if (!schema.orbitals) return null;
59054
- for (const orbital of schema.orbitals) {
59055
- if (!isInlineOrbital(orbital)) continue;
59056
- if (!orbital.pages) continue;
59057
- for (const pageRef of orbital.pages) {
59058
- if (isInlinePage(pageRef)) {
59059
- return { page: pageRef, orbitalName: orbital.name };
59060
- }
59061
- }
59062
- }
59063
- return null;
59068
+ return core.defaultPage(schema);
59064
59069
  }
59065
59070
  function getAllPages2(schema) {
59066
59071
  const pages = [];
@@ -59095,9 +59100,9 @@ function NavigationProvider2({
59095
59100
  }
59096
59101
  }
59097
59102
  if (!page) {
59098
- const defaultPage = getDefaultPage2(schema);
59099
- if (defaultPage) {
59100
- page = defaultPage.page;
59103
+ const defaultPage2 = getDefaultPage2(schema);
59104
+ if (defaultPage2) {
59105
+ page = defaultPage2.page;
59101
59106
  path = page.path || "/";
59102
59107
  }
59103
59108
  }
@@ -59207,9 +59212,6 @@ function useNavigationId2() {
59207
59212
  return context?.state.navigationId || 0;
59208
59213
  }
59209
59214
  var ServerBridgeContext = React99.createContext(null);
59210
- function useHasServerBridge() {
59211
- return React99.useContext(ServerBridgeContext) !== null;
59212
- }
59213
59215
  function useServerBridge() {
59214
59216
  const ctx = React99.useContext(ServerBridgeContext);
59215
59217
  if (!ctx) {
@@ -59976,7 +59978,6 @@ exports.useGameAudioContext = useGameAudioContext2;
59976
59978
  exports.useGameAudioContextOptional = useGameAudioContextOptional2;
59977
59979
  exports.useHasPermission = useHasPermission;
59978
59980
  exports.useHasRole = useHasRole;
59979
- exports.useHasServerBridge = useHasServerBridge;
59980
59981
  exports.useInitPayload = useInitPayload2;
59981
59982
  exports.useNavStack = useNavStack7;
59982
59983
  exports.useNavigateTo = useNavigateTo2;
@@ -7,14 +7,14 @@ import { b as UserData } from '../UserContext-D566nfWA.js';
7
7
  export { U as UserContext, a as UserContextValue, c as UserProvider, d as UserProviderProps, u as useHasPermission, e as useHasRole, f as useUser, g as useUserForEvaluation } from '../UserContext-D566nfWA.js';
8
8
  import { E as EventBusContextType } from '../NavStackContext-04NLdXsY.js';
9
9
  export { N as NavPageDecl, a as NavStackApi, b as NavStackProvider, c as NavStackProviderProps, d as NavStackRouterBridge, e as NavStackRouterBridgeProps, i as isInertNavStack, u as useNavStack } from '../NavStackContext-04NLdXsY.js';
10
- export { n as AwaitingSkeletonContext, A as AwaitingSkeletonSource, o as EntityBindingContext, E as EntityBindingSource, a as EntitySchemaContextValue, b as EntitySchemaProvider, c as EntitySchemaProviderProps, d as ServerBridgeContextValue, e as ServerBridgeProvider, p as ServerBridgeProviderProps, S as ServerBridgeTransport, T as TraitContext, f as TraitContextValue, g as TraitInstance, h as TraitProvider, i as TraitProviderProps, q as useAwaitingSkeleton, r as useEntityBindingSnapshot, u as useEntitySchema, j as useEntitySchemaOptional, s as useHasServerBridge, k as useServerBridge, l as useTrait, m as useTraitContext } from '../AwaitingSkeletonContext-DPgW__WV.js';
10
+ export { n as AwaitingSkeletonContext, A as AwaitingSkeletonSource, o as EntityBindingContext, E as EntityBindingSource, a as EntitySchemaContextValue, b as EntitySchemaProvider, c as EntitySchemaProviderProps, d as ServerBridgeContextValue, e as ServerBridgeProvider, p as ServerBridgeProviderProps, S as ServerBridgeTransport, T as TraitContext, f as TraitContextValue, g as TraitInstance, h as TraitProvider, i as TraitProviderProps, q as useAwaitingSkeleton, r as useEntityBindingSnapshot, u as useEntitySchema, j as useEntitySchemaOptional, k as useServerBridge, l as useTrait, m as useTraitContext } from '../AwaitingSkeletonContext-Bh399p1x.js';
11
11
  import { i as UseOfflineExecutorResult, U as UseOfflineExecutorOptions } from '../offline-executor-C0TWucBj.js';
12
12
  export { N as NavigationContextValue, c as NavigationProvider, d as NavigationProviderProps, e as NavigationState, k as extractRouteParams, l as findPageByName, m as findPageByPath, n as getAllPages, o as getDefaultPage, p as pathMatches, u as useActivePage, q as useInitPayload, r as useNavigateTo, s as useNavigation, t as useNavigationId, v as useNavigationState } from '../offline-executor-C0TWucBj.js';
13
- import '../verificationRegistry-CD7Xb40L.js';
14
- export { G as GameAudioContext, a as GameAudioContextValue, b as GameAudioProvider, c as GameAudioProviderProps, u as useGameAudioContext, d as useGameAudioContextOptional } from '../GameAudioProvider-DyBvYP2c.js';
13
+ import '../verificationRegistry-B3dj1Zl8.js';
14
+ export { G as GameAudioContext, a as GameAudioContextValue, b as GameAudioProvider, c as GameAudioProviderProps, u as useGameAudioContext, d as useGameAudioContextOptional } from '../GameAudioProvider-Dv_L-PHt.js';
15
15
  export { A as Avl3DConfig, a as Avl3DContext, b as Avl3DModelOverrides, u as useAvl3DConfig, c as useAvl3DPalette } from '../avl-3d-context-BpBKZIbc.js';
16
16
  export { AccessTokenProvider } from '@almadar/runtime';
17
- import '../paintDispatch-_6EhJCiL.js';
17
+ import '../paintDispatch-Cp1_S93j.js';
18
18
  import 'lucide-react';
19
19
  import 'three';
20
20
 
@@ -1,6 +1,6 @@
1
1
  import { arbitraryClassesOf } from '../chunk-D2E44ODB.js';
2
- import { useGameAudio, SuspenseConfigProvider } from '../chunk-PYJ2UQWM.js';
3
- import { Box } from '../chunk-HA7CJWQX.js';
2
+ import { useGameAudio, SuspenseConfigProvider } from '../chunk-E6MWYQVZ.js';
3
+ import { Box } from '../chunk-J755QADM.js';
4
4
  import '../chunk-4ZGXIW3B.js';
5
5
  import '../chunk-I5QOYW2Z.js';
6
6
  import '../chunk-XJTHMW4G.js';
@@ -20,7 +20,7 @@ export { DesignThemeProvider, useDesignTheme } from '@almadar/ui/context';
20
20
  import { createLogger } from '@almadar/logger';
21
21
  import { jsx, Fragment } from 'react/jsx-runtime';
22
22
  import { useTranslate } from '@almadar/ui/hooks';
23
- import { ANONYMOUS_USER, isThemeRegistryKey, matchPath, matchPathAmong } from '@almadar/core';
23
+ import { ANONYMOUS_USER, isThemeRegistryKey, matchPath, matchPathAmong, defaultPage } from '@almadar/core';
24
24
  export { ANONYMOUS_USER, comparePathSpecificity, matchPath, matchPathAmong } from '@almadar/core';
25
25
  import { createHttpTransport } from '@almadar/runtime';
26
26
  import { useLocation, useNavigate } from 'react-router-dom';
@@ -737,17 +737,7 @@ function findPageByName(schema, pageName) {
737
737
  return null;
738
738
  }
739
739
  function getDefaultPage(schema) {
740
- if (!schema.orbitals) return null;
741
- for (const orbital of schema.orbitals) {
742
- if (!isInlineOrbital(orbital)) continue;
743
- if (!orbital.pages) continue;
744
- for (const pageRef of orbital.pages) {
745
- if (isInlinePage(pageRef)) {
746
- return { page: pageRef, orbitalName: orbital.name };
747
- }
748
- }
749
- }
750
- return null;
740
+ return defaultPage(schema);
751
741
  }
752
742
  function getAllPages(schema) {
753
743
  const pages = [];
@@ -782,9 +772,9 @@ function NavigationProvider({
782
772
  }
783
773
  }
784
774
  if (!page) {
785
- const defaultPage = getDefaultPage(schema);
786
- if (defaultPage) {
787
- page = defaultPage.page;
775
+ const defaultPage2 = getDefaultPage(schema);
776
+ if (defaultPage2) {
777
+ page = defaultPage2.page;
788
778
  path = page.path || "/";
789
779
  }
790
780
  }
@@ -894,9 +884,6 @@ function useNavigationId() {
894
884
  return context?.state.navigationId || 0;
895
885
  }
896
886
  var ServerBridgeContext = createContext(null);
897
- function useHasServerBridge() {
898
- return useContext(ServerBridgeContext) !== null;
899
- }
900
887
  function useServerBridge() {
901
888
  const ctx = useContext(ServerBridgeContext);
902
889
  if (!ctx) {
@@ -1469,4 +1456,4 @@ function useOnSurface() {
1469
1456
  return React17.useContext(SurfaceContext);
1470
1457
  }
1471
1458
 
1472
- export { ARBITRARY_CLASS_STYLE_ID, ArbitraryClassCompilerProvider, Avl3DContext, AwaitingSkeletonContext, CurrentPagePathContext, CurrentPagePathProvider, EntityBindingContext, EntitySchemaProvider, EventBusContext, EventBusProvider, GameAudioContext, GameAudioProvider, NavStackProvider, NavStackRouterBridge, NavigationProvider, OfflineModeProvider, OrbitalProvider, OrbitalThemeProvider, RenderSlotProvider, SelectionContext, SelectionProvider, ServerBridgeProvider, SurfaceBoundary, TraitContext, TraitProvider, TraitScopeProvider, UserContext, UserProvider, VerificationProvider, extractRouteParams, findPageByName, findPageByPath, getAllPages, getDefaultPage, isInertNavStack, mapServerEffectResults, pathMatches, resetArbitraryClassStyles, useActivePage, useArbitraryClassStyles, useAvl3DConfig, useAvl3DPalette, useAwaitingSkeleton, useContentSurface, useCurrentPagePath, useEntityBindingSnapshot, useEntitySchema, useEntitySchemaOptional, useGameAudioContext, useGameAudioContextOptional, useHasPermission, useHasRole, useHasServerBridge, useInitPayload, useNavStack, useNavigateTo, useNavigation, useNavigationId, useNavigationState, useOfflineMode, useOnSurface, useOptionalOfflineMode, useRenderSlot, useSelection, useSelectionOptional, useServerBridge, useTrait, useTraitContext, useTraitScope, useTraitScopeChain, useUser, useUserForEvaluation };
1459
+ export { ARBITRARY_CLASS_STYLE_ID, ArbitraryClassCompilerProvider, Avl3DContext, AwaitingSkeletonContext, CurrentPagePathContext, CurrentPagePathProvider, EntityBindingContext, EntitySchemaProvider, EventBusContext, EventBusProvider, GameAudioContext, GameAudioProvider, NavStackProvider, NavStackRouterBridge, NavigationProvider, OfflineModeProvider, OrbitalProvider, OrbitalThemeProvider, RenderSlotProvider, SelectionContext, SelectionProvider, ServerBridgeProvider, SurfaceBoundary, TraitContext, TraitProvider, TraitScopeProvider, UserContext, UserProvider, VerificationProvider, extractRouteParams, findPageByName, findPageByPath, getAllPages, getDefaultPage, isInertNavStack, mapServerEffectResults, pathMatches, resetArbitraryClassStyles, useActivePage, useArbitraryClassStyles, useAvl3DConfig, useAvl3DPalette, useAwaitingSkeleton, useContentSurface, useCurrentPagePath, useEntityBindingSnapshot, useEntitySchema, useEntitySchemaOptional, useGameAudioContext, useGameAudioContextOptional, useHasPermission, useHasRole, useInitPayload, useNavStack, useNavigateTo, useNavigation, useNavigationId, useNavigationState, useOfflineMode, useOnSurface, useOptionalOfflineMode, useRenderSlot, useSelection, useSelectionOptional, useServerBridge, useTrait, useTraitContext, useTraitScope, useTraitScopeChain, useUser, useUserForEvaluation };