@almadar/ui 6.58.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 (30) hide show
  1. package/dist/{Canvas3DHost-BTvRPfsr.d.ts → Canvas3DHost-CNjANoaU.d.ts} +1 -1
  2. package/dist/{GameAudioProvider-kXbonWTv.d.ts → GameAudioProvider-Dv_L-PHt.d.ts} +1 -1
  3. package/dist/{UISlotRenderer-N5DFYE6K.js → UISlotRenderer-YNY7V2UJ.js} +2 -2
  4. package/dist/avl/index.cjs +25 -14
  5. package/dist/avl/index.js +24 -8
  6. package/dist/{chunk-GZGDBS4S.js → chunk-7CVXM2KS.js} +1 -1
  7. package/dist/{chunk-I2ZNE5TD.js → chunk-E6MWYQVZ.js} +7 -3
  8. package/dist/{chunk-HA7CJWQX.js → chunk-J755QADM.js} +1184 -1184
  9. package/dist/{chunk-VHTJRS2N.js → chunk-L3MTZ3RH.js} +7 -0
  10. package/dist/{chunk-HB3D3HUJ.js → chunk-QJIAJ6EH.js} +9 -18
  11. package/dist/components/index.cjs +33 -0
  12. package/dist/components/index.d.ts +6 -6
  13. package/dist/components/index.js +5 -5
  14. package/dist/context/index.cjs +7 -0
  15. package/dist/context/index.js +1 -1
  16. package/dist/hooks/index.cjs +7 -0
  17. package/dist/hooks/index.js +1 -1
  18. package/dist/lib/drawable/three/index.d.ts +3 -3
  19. package/dist/lib/drawable/three/index.js +3 -3
  20. package/dist/lib/index.d.ts +2 -2
  21. package/dist/{paintDispatch-BN8Vbzgs.d.ts → paintDispatch-Cp1_S93j.d.ts} +30 -2
  22. package/dist/providers/index.cjs +8 -14
  23. package/dist/providers/index.d.ts +3 -3
  24. package/dist/providers/index.js +7 -17
  25. package/dist/runtime/index.cjs +8 -13
  26. package/dist/runtime/index.js +4 -4
  27. package/dist/ssr/index.cjs +2 -0
  28. package/dist/ssr/index.js +2 -0
  29. package/dist/{verificationRegistry-CK76GUfH.d.ts → verificationRegistry-B3dj1Zl8.d.ts} +1 -1
  30. package/package.json +6 -6
@@ -309,6 +309,13 @@ function useUISlotManager() {
309
309
  setSources((prev) => {
310
310
  const slotSources = prev[slot];
311
311
  if (!slotSources || !(sourceKey in slotSources)) {
312
+ const embedded = traitIndexRef.current.get(sourceTrait);
313
+ if (embedded !== void 0 && embedded.slot === slot) {
314
+ unindexTrait(sourceTrait);
315
+ notifyTraitSubscribers(sourceTrait, null);
316
+ log.info("slot:cleared-embedded", { slot, sourceTrait, lastPatternType: embedded.pattern });
317
+ return prev;
318
+ }
312
319
  log.debug("slot:clear-noop", { slot, sourceTrait, reason: !slotSources ? "no-slot" : "no-source" });
313
320
  return prev;
314
321
  }
@@ -1,7 +1,7 @@
1
1
  import { useTranslate, useRenderI18n, runTickFrame } from './chunk-N7JIG57B.js';
2
- import { ALL_SLOTS } from './chunk-VHTJRS2N.js';
3
- import { LoadingState, ErrorState, UISlotRenderer } from './chunk-I2ZNE5TD.js';
4
- import { Box } from './chunk-HA7CJWQX.js';
2
+ import { ALL_SLOTS } from './chunk-L3MTZ3RH.js';
3
+ import { LoadingState, ErrorState, UISlotRenderer } from './chunk-E6MWYQVZ.js';
4
+ import { Box } from './chunk-J755QADM.js';
5
5
  import { Typography } from './chunk-4ZGXIW3B.js';
6
6
  import { beginPending, endPending } from './chunk-I5QOYW2Z.js';
7
7
  import { useEventBus } from './chunk-CHNC4UYE.js';
@@ -16,7 +16,7 @@ import { useUser, useArbitraryClassStyles, getAllPages, matchPathAmong, CurrentP
16
16
  import { evaluateListenPayloadExpr, evaluate, createMinimalContext, evaluateGuard, executeEffects } from '@almadar/evaluator';
17
17
  import { getPatternDefinition } from '@almadar/core/patterns';
18
18
  import { isKnownStdOperator } from '@almadar/std/registry';
19
- import { prepareSchemaForPreview, collectTraitRefsFromResolvedTrait, buildOrbitalsByTrait, collectEmbeddedTraits } from '@almadar/runtime/ui';
19
+ import { prepareSchemaForPreview, collectTraitRefsFromResolvedTrait, buildOrbitalsByTrait, buildTraitLinkedEntities, collectEmbeddedTraits } from '@almadar/runtime/ui';
20
20
  export { adjustSchemaForMockData, buildMockData, collectEmbeddedTraits, prepareSchemaForPreview } from '@almadar/runtime/ui';
21
21
  import { useInRouterContext, useHref } from 'react-router-dom';
22
22
  import { UISlotProvider, useUISlots } from '@almadar/ui/context';
@@ -535,7 +535,7 @@ function resolveLambdaBindings(body, params, item, index) {
535
535
  return body;
536
536
  }
537
537
  var LazySlotContentRenderer = React.lazy(
538
- () => import('./UISlotRenderer-N5DFYE6K.js').then((m) => ({ default: m.SlotContentRenderer }))
538
+ () => import('./UISlotRenderer-YNY7V2UJ.js').then((m) => ({ default: m.SlotContentRenderer }))
539
539
  );
540
540
  function deferLambdaEntityExprs(value) {
541
541
  if (typeof value === "string") {
@@ -1710,19 +1710,10 @@ function SchemaRunner({ schema, serverUrl, transport, getAccessToken, mockData,
1710
1710
  ),
1711
1711
  [schema, ir]
1712
1712
  );
1713
- const traitLinkedEntitiesMap = useMemo(() => {
1714
- const map = /* @__PURE__ */ new Map();
1715
- if (ir) {
1716
- for (const page of ir.pages.values()) {
1717
- for (const binding of page.traits) {
1718
- if (binding.linkedEntity) {
1719
- map.set(binding.trait.name, binding.linkedEntity);
1720
- }
1721
- }
1722
- }
1723
- }
1724
- return map;
1725
- }, [ir]);
1713
+ const traitLinkedEntitiesMap = useMemo(
1714
+ () => ir ? buildTraitLinkedEntities(ir) : /* @__PURE__ */ new Map(),
1715
+ [ir]
1716
+ );
1726
1717
  const orbitalsByTraitMap = useMemo(
1727
1718
  () => new Map(Object.entries(orbitalsByTrait)),
1728
1719
  [orbitalsByTrait]
@@ -5323,6 +5323,7 @@ var init_Avatar = __esm({
5323
5323
  statusClasses[status],
5324
5324
  statusSizeClasses[size2]
5325
5325
  ),
5326
+ role: "img",
5326
5327
  "aria-label": t("avatar.status", { status: t(`avatar.status.${status}`) })
5327
5328
  }
5328
5329
  ),
@@ -8478,6 +8479,7 @@ var init_AnimatedGraphic = __esm({
8478
8479
  "div",
8479
8480
  {
8480
8481
  className: "w-full h-full [&>svg]:w-full [&>svg]:h-full",
8482
+ "aria-hidden": "true",
8481
8483
  dangerouslySetInnerHTML: { __html: resolvedSvg }
8482
8484
  }
8483
8485
  ) : children
@@ -20376,8 +20378,10 @@ var init_AvlFieldType = __esm({
20376
20378
  pattern: "hexagon",
20377
20379
  node: "hexagon",
20378
20380
  event: "hexagon",
20381
+ EventAddress: "hexagon",
20379
20382
  SExpr: "hexagon",
20380
20383
  array: "bars",
20384
+ tuple: "bars",
20381
20385
  relation: "link"
20382
20386
  };
20383
20387
  AvlFieldType = ({
@@ -59089,6 +59093,18 @@ init_AuthLayout();
59089
59093
  init_CounterTemplate();
59090
59094
  init_GenericAppTemplate();
59091
59095
 
59096
+ // components/game/patterns.ts
59097
+ init_DrawSprite();
59098
+ init_DrawShape();
59099
+ init_DrawText();
59100
+ init_DrawGroup();
59101
+ init_DrawMesh();
59102
+ init_DrawSkinnedMesh();
59103
+ init_DrawSpriteLayer();
59104
+ init_DrawShapeLayer();
59105
+ init_DrawTextLayer();
59106
+ init_DrawFxLayer();
59107
+
59092
59108
  // components/index.ts
59093
59109
  init_cn();
59094
59110
  var log12 = logger.createLogger("almadar:ui:filesystem");
@@ -60241,6 +60257,13 @@ function useUISlotManager() {
60241
60257
  setSources((prev) => {
60242
60258
  const slotSources = prev[slot];
60243
60259
  if (!slotSources || !(sourceKey in slotSources)) {
60260
+ const embedded = traitIndexRef.current.get(sourceTrait);
60261
+ if (embedded !== void 0 && embedded.slot === slot) {
60262
+ unindexTrait(sourceTrait);
60263
+ notifyTraitSubscribers(sourceTrait, null);
60264
+ log20.info("slot:cleared-embedded", { slot, sourceTrait, lastPatternType: embedded.pattern });
60265
+ return prev;
60266
+ }
60244
60267
  log20.debug("slot:clear-noop", { slot, sourceTrait, reason: !slotSources ? "no-slot" : "no-source" });
60245
60268
  return prev;
60246
60269
  }
@@ -63311,6 +63334,16 @@ exports.DocSearch = DocSearch;
63311
63334
  exports.DocumentDetails = DocumentDetails;
63312
63335
  exports.DocumentPanel = DocumentPanel;
63313
63336
  exports.DomStateMachineVisualizer = exports.StateMachineView;
63337
+ exports.DrawFxLayer = DrawFxLayer;
63338
+ exports.DrawGroup = DrawGroup;
63339
+ exports.DrawMesh = DrawMesh;
63340
+ exports.DrawShape = DrawShape;
63341
+ exports.DrawShapeLayer = DrawShapeLayer;
63342
+ exports.DrawSkinnedMesh = DrawSkinnedMesh;
63343
+ exports.DrawSprite = DrawSprite;
63344
+ exports.DrawSpriteLayer = DrawSpriteLayer;
63345
+ exports.DrawText = DrawText;
63346
+ exports.DrawTextLayer = DrawTextLayer;
63314
63347
  exports.EditorCheckbox = EditorCheckbox;
63315
63348
  exports.EditorSelect = EditorSelect;
63316
63349
  exports.EditorSlider = EditorSlider;
@@ -2,12 +2,12 @@ import { A11yProps, Asset, EventKey, EventPayload, EventEmit, AssetUrl, FieldVal
2
2
  export { AnimationDef, AnimationName, AudioManifest, BusEvent, BusEventListener, BusEventSource, BusEventListener as EventListener, SkeletonVariant, SoundEntry, SpriteDirection, UISlot, Unsubscribe } from '@almadar/core';
3
3
  import * as React$1 from 'react';
4
4
  import React__default, { ReactNode, ErrorInfo } from 'react';
5
- import { I as IconInput, U as UiError, D as DrawableNode, P as Projector, F as FxOverlayItem, B as BadgeColor, M as MeshShapeKind, a as MeshMaterial, b as DrawGroupProps, c as DrawTextProps, d as DrawMeshProps, e as DisplayField, f as DisplayFieldFormat, g as BadgeVariant, C as ColorToken } from '../paintDispatch-BN8Vbzgs.js';
6
- export { h as Badge, i as BadgeProps, j as FxOverlayKind, k as Icon, l as IconAnimation, m as IconProps, n as IconSize, o as ImageSource, L as LinkAction, p as Point, R as Rect } from '../paintDispatch-BN8Vbzgs.js';
5
+ import { I as IconInput, U as UiError, D as DrawableNode, P as Projector, F as FxOverlayItem, B as BadgeColor, M as MeshShapeKind, a as MeshMaterial, b as DrawGroupProps, c as DrawTextProps, d as DrawMeshProps, e as DisplayField, f as DisplayFieldFormat, g as BadgeVariant, C as ColorToken } from '../paintDispatch-Cp1_S93j.js';
6
+ export { h as Badge, i as BadgeProps, j as DrawFxLayer, k as DrawGroup, l as DrawMesh, m as DrawShape, n as DrawShapeLayer, o as DrawSkinnedMesh, p as DrawSprite, q as DrawSpriteLayer, r as DrawText, s as DrawTextLayer, t as FxOverlayKind, u as Icon, v as IconAnimation, w as IconProps, x as IconSize, y as ImageSource, L as LinkAction, z as Point, R as Rect } from '../paintDispatch-Cp1_S93j.js';
7
7
  import { SExpr } from '@almadar/evaluator';
8
- import { U as UnitAnimationState, F as FacingDirection, S as SpriteSheetUrls, f as SpriteFrameDims, R as ResolvedFrame, g as CanvasLighting, h as CanvasPost, a as IsometricUnit, i as CameraState } from '../Canvas3DHost-BTvRPfsr.js';
9
- export { B as BoardTile, G as GameAction, j as GamePhase, k as GameState, l as GameUnit, b as IsometricFeature, I as IsometricTile, P as Position, m as UnitTrait, n as calculateAttackTargets, o as calculateValidMoves, p as createInitialGameState } from '../Canvas3DHost-BTvRPfsr.js';
10
- export { G as GameAudioContext, a as GameAudioContextValue, e as GameAudioControls, b as GameAudioProvider, c as GameAudioProviderProps, U as UseGameAudioOptions, f as useGameAudio, u as useGameAudioContext } from '../GameAudioProvider-kXbonWTv.js';
8
+ import { U as UnitAnimationState, F as FacingDirection, S as SpriteSheetUrls, f as SpriteFrameDims, R as ResolvedFrame, g as CanvasLighting, h as CanvasPost, a as IsometricUnit, i as CameraState } from '../Canvas3DHost-CNjANoaU.js';
9
+ export { B as BoardTile, G as GameAction, j as GamePhase, k as GameState, l as GameUnit, b as IsometricFeature, I as IsometricTile, P as Position, m as UnitTrait, n as calculateAttackTargets, o as calculateValidMoves, p as createInitialGameState } from '../Canvas3DHost-CNjANoaU.js';
10
+ export { G as GameAudioContext, a as GameAudioContextValue, e as GameAudioControls, b as GameAudioProvider, c as GameAudioProviderProps, U as UseGameAudioOptions, f as useGameAudio, u as useGameAudioContext } from '../GameAudioProvider-Dv_L-PHt.js';
11
11
  import { e as AvlStateMachineProps } from '../FileTree-BSfgp-HH.js';
12
12
  export { B as BehaviorView, f as BehaviorViewProps, g as FileTree, F as FileTreeItem, h as FileTreeNode, i as FileTreeProps, M as ModuleCard, j as ModuleCardProps } from '../FileTree-BSfgp-HH.js';
13
13
  import { LucideIcon } from 'lucide-react';
@@ -18,7 +18,7 @@ import { EmojiPickPayload, ItemActionPayload, SelectionChangePayload } from '@al
18
18
  import { T as TraitLevelData } from '../avl-schema-parser-CH1QoZw1.js';
19
19
  import { a as SlotContent, c as SlotPropValue } from '../useUISlots-1dk2TR4j.js';
20
20
  export { D as DEFAULT_SLOTS, S as SlotChangeCallback, b as SlotRenderConfig, U as UISlotManager, u as useUISlotManager } from '../useUISlots-1dk2TR4j.js';
21
- import '../verificationRegistry-CK76GUfH.js';
21
+ import '../verificationRegistry-B3dj1Zl8.js';
22
22
  export { ALMADAR_DND_MIME, AuthContextValue, AuthUser, CanvasGestureCallbacks, CanvasGestureHandlers, CompileResult, CompileStage, DragReorderResult, DraggablePayload, Extension, ExtensionManifest, FileSystemFile, FileSystemStatus, GitHubRepo, GitHubStatus, I18nContextValue, I18nProvider, InfiniteScrollOptions, InfiniteScrollResult, LongPressHandlers, LongPressOptions, OpenFile, Positioned, PullToRefreshOptions, PullToRefreshResult, QuerySingletonEntity, QuerySingletonResult, QuerySingletonState, QueryState, RenderI18n, RenderInterpolationHandle, RenderInterpolationOptions, SelectedFile, SharedEntityStore, SharedEntityStoreContext, SharedEntitySubscriber, SharedEntityWriter, SwipeGestureOptions, SwipeGestureResult, SwipeHandlers, TapRevealOptions, TapRevealResult, TraitListenSpec, TranslateFunction, UseCanvasGesturesOptions, UseCompileResult, UseDraggableOptions, UseDraggableResult, UseDropZoneOptions, UseDropZoneResult, UseExtensionsOptions, UseExtensionsResult, UseFileEditorOptions, UseFileEditorResult, UseFileSystemResult, createSharedEntityStore, createTranslate, parseQueryBinding, runTickFrame, useAgentChat, useAuthContext, useCanvasGestures, useCompile, useConnectGitHub, useDeepAgentGeneration, useDisconnectGitHub, useDragReorder, useDraggable, useDropZone, useEmitEvent, useEventBus, useEventListener, useExtensions, useFileEditor, useFileSystem, useFormatContext, useGitHubBranches, useGitHubRepo, useGitHubRepos, useGitHubStatus, useInfiniteScroll, useLongPress, useMediaQuery, usePrefersReducedMotion, usePreview, usePullToRefresh, useQuerySingleton, useRenderI18n, useRenderInterpolation, useSharedEntitySnapshot, useSharedEntityStore, useSharedEntityStoreContext, useSwipeGesture, useTapReveal, useTraitListens, useTranslate, useUIEvents, useValidation } from '../hooks/index.js';
23
23
  export { E as EventBusContextType, a as NavStackApi, u as useNavStack } from '../NavStackContext-04NLdXsY.js';
24
24
  export { E as EditorKeyEvent, a as KeyCaptureEntry, K as KeyCaptureTable, U as UseKeyboardRouterOptions, k as keyChord, m as mergeCaptureTables, u as useKeyboardRouter } from '../useKeyboardRouter-BW3rThep.js';
@@ -1,12 +1,12 @@
1
1
  export { assertUniqueSlotsPerHost } from '../chunk-O2EIWXWE.js';
2
2
  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';
3
3
  export { I18nProvider, SharedEntityStoreContext, createSharedEntityStore, createTranslate, runTickFrame, useFormatContext, useRenderI18n, useSharedEntitySnapshot, useSharedEntityStore, useSharedEntityStoreContext, useTranslate } from '../chunk-N7JIG57B.js';
4
- export { DEFAULT_SLOTS, useUISlotManager } from '../chunk-VHTJRS2N.js';
4
+ export { DEFAULT_SLOTS, useUISlotManager } from '../chunk-L3MTZ3RH.js';
5
5
  import '../chunk-YYYHH5BA.js';
6
- import { GridPicker, Icon, Button, FormSection, Select, JsonTreeEditor, ThemedPortal, Switch, Input } from '../chunk-I2ZNE5TD.js';
7
- export { ALL_PRESETS, Accordion, Card2 as ActionCard, ActionPalette, ActionTile, ActivationBlock, AgentActivityFeed, AgentActivityRow, AgentChatFeed, AgentThinkingRow, Alert, AlgoGraphCanvas, AlgorithmCanvas, AnimatedCounter, AnimatedGraphic, AnimatedReveal, Aside, AtlasImage, AtlasPanel, AuthLayout, Avatar, Badge, BehaviorView, BiologyCanvas, BloomQuizBlock, BranchingLogicBuilder, Breadcrumb, Button, ButtonGroup, COMPACT_MEDIA_QUERY, CalendarGrid, Canvas, Canvas2D, Card, CardBody, CardContent, CardFooter, CardHeader, CardTitle, Carousel, Center, ChangeList, Chart, ChartLegend, ChatBar, Checkbox, ChemistryCanvas, ChoiceButton, CodeBlock, CodeRunnerPanel, CollapsibleSection, CommandPalette, CommitRow, ConditionalWrapper, ConfettiEffect, ConfirmDialog, ConnectionBlock, Container, ContentRenderer, ControlButton, ControlGrid, CounterTemplate, DEFAULT_LIKERT_OPTION_KEYS, DEFAULT_MATRIX_COLUMN_KEYS, DIAMOND_TOP_Y, DashboardGrid, DashboardLayout, DataGrid, DataList, DateRangePicker, DateRangeSelector, DayCell, DetailPanel, Dialog, DialogueBubble, Divider, DocBreadcrumb, DocPagination, DocSearch, DocSidebar, DocTOC, DockLayout, DocumentDetails, DocumentPanel, DocumentViewer, StateMachineView as DomStateMachineVisualizer, Drawer, DrawerSlot, ELEMENT_SELECTED_EVENT, EdgeDecoration, EditorCheckbox, EditorSelect, EditorSlider, EditorTextInput, EditorToolbar, EmojiPicker, EmptyState, ErrorBoundary, ErrorState, FEATURE_COLORS, FEATURE_TYPES, FLOOR_HEIGHT, FeatureCard, FeatureGrid, FileTree, FilterGroup, FilterPill, Flex, FlipCard, FlipContainer, FloatingActionButton, FloatingToolbar, Form, FormActions, FormField, FormLayout, FormSection, FormSectionHeader, FxOverlay, GameAudioContext, GameAudioCue, GameAudioProvider, GameAudioToggle, GameHud, GameIcon, GameMenu, GameShell, Gantt, GenericAppTemplate, GeometricPattern, GradientDivider, GraphCanvas, GraphView, Grid, GridPicker, Header, HealthBar, Icon, IconButton, Image, ImportPreviewTree, ImportProgress, ImportSourcePicker, InfiniteScrollSentinel, Input, InputGroup, JazariStateMachine, JsonTreeEditor, Label, LawReferenceTooltip, LearningCanvas, LearningScene3D, Lightbox, LikertScale, LineChart, LoadingState, MapView, MarkdownContent, MasterDetailLayout, MathCanvas, MatrixQuestion, MediaGallery, Menu, Meter, Modal, ModalSlot, ModuleCard, Navigation, NumberStepper, OptionConstraintGroup, StateMachineView as OrbitalStateMachineView, OrbitalVisualization, Overlay, PageHeader, PageTransition, Pagination, PatternTile, PhysicsCanvas, Popover, PositionedCanvas, ProgressBar, ProgressDots, PullToRefresh, QrScanner, QuizBlock, Radio, RangeSlider, ReflectionBlock, RelationSelect, RepeatableFormSection, ReplyTree, RichTextEditor, RuntimeDebugger, SHEET_COLUMNS, SPRITE_SHEET_LAYOUT, ScaledDiagram, ScoreDisplay, SearchInput, Section, SectionHeader, SegmentRenderer, Select, SequenceBar, SidePanel, Sidebar, SignaturePad, SimpleGrid, Skeleton, SkeletonTree, SlotContentRenderer, SocialProof, SortableList, Spacer, Sparkline, Spinner, Split, SplitPane, StarRating, StatBadge, StatCard, StatDisplay, StateGraph, StateJsonView, StateMachineView, StatusBar, StatusDot, SubagentTracePanel, SvgBranch, SvgConnection, SvgFlow, SvgGrid, SvgLobe, SvgMesh, SvgMorph, SvgNode, SvgPulse, SvgRing, SvgShield, SvgStack, SwipeableRow, Switch, TERRAIN_COLORS, TILE_HEIGHT, TILE_WIDTH, TabbedContainer, TableView, Tabs, TagInput, TerrainPalette, TextHighlight, Textarea, ThemeToggle, TimeSlotCell, Timeline, TimerDisplay, Toast, ToastSlot, Tooltip, TopNavItem, TraitFrame, TraitSlot, TraitStateViewer, TrendIndicator, TypewriterText, UISlotComponent, UISlotRenderer, UploadDropZone, VersionDiff, ViolationAlert, VoteStack, WizardContainer, WizardNavigation, WizardProgress, activityRowFacts, applyCompletion, applySuggestions, arrowBetween, billboardLabel, boardEntity, bool, calculateAttackTargets, calculateValidMoves, createInitialGameState, createUnitAnimationState, cylinderBetween, dispatchCommandPaletteCommand, get3DClickPayload, getCurrentFrame, getTileDimensions, groupIntoConversations, inferDirection, isoToScreen, makeAsset, makeAssetMap, meshSphere, num, objAvailableActions, objAvailableEvents, objCurrentState, objIcon, objId, objMaxRules, objName, objRules, objStates, parseEditFocus, pendulum, projectileMotion, registerCodeLanguageLoader, renderPatternValue, resolveFrame, resolveSheetDirection, rows, sanitizeRichHtml, screenToIso, springOscillator, str, tickAnimationState, toCodeLanguage, transitionAnimation, unitHealth, unitPosition, unitTeam, useAtlasSliceDataUrl, useCamera, useCompactLayout, useDockLayout, useGameAudio, useGameAudioContext, useImageCache, useUnitSpriteAtlas, vec2 } from '../chunk-I2ZNE5TD.js';
8
- import { VStack, HStack, Box } from '../chunk-HA7CJWQX.js';
9
- export { Box, HStack, Stack, VStack } from '../chunk-HA7CJWQX.js';
6
+ import { GridPicker, Icon, Button, FormSection, Select, JsonTreeEditor, ThemedPortal, Switch, Input } from '../chunk-E6MWYQVZ.js';
7
+ export { ALL_PRESETS, Accordion, Card2 as ActionCard, ActionPalette, ActionTile, ActivationBlock, AgentActivityFeed, AgentActivityRow, AgentChatFeed, AgentThinkingRow, Alert, AlgoGraphCanvas, AlgorithmCanvas, AnimatedCounter, AnimatedGraphic, AnimatedReveal, Aside, AtlasImage, AtlasPanel, AuthLayout, Avatar, Badge, BehaviorView, BiologyCanvas, BloomQuizBlock, BranchingLogicBuilder, Breadcrumb, Button, ButtonGroup, COMPACT_MEDIA_QUERY, CalendarGrid, Canvas, Canvas2D, Card, CardBody, CardContent, CardFooter, CardHeader, CardTitle, Carousel, Center, ChangeList, Chart, ChartLegend, ChatBar, Checkbox, ChemistryCanvas, ChoiceButton, CodeBlock, CodeRunnerPanel, CollapsibleSection, CommandPalette, CommitRow, ConditionalWrapper, ConfettiEffect, ConfirmDialog, ConnectionBlock, Container, ContentRenderer, ControlButton, ControlGrid, CounterTemplate, DEFAULT_LIKERT_OPTION_KEYS, DEFAULT_MATRIX_COLUMN_KEYS, DIAMOND_TOP_Y, DashboardGrid, DashboardLayout, DataGrid, DataList, DateRangePicker, DateRangeSelector, DayCell, DetailPanel, Dialog, DialogueBubble, Divider, DocBreadcrumb, DocPagination, DocSearch, DocSidebar, DocTOC, DockLayout, DocumentDetails, DocumentPanel, DocumentViewer, StateMachineView as DomStateMachineVisualizer, DrawShapeLayer, DrawSprite, DrawSpriteLayer, DrawText, DrawTextLayer, Drawer, DrawerSlot, ELEMENT_SELECTED_EVENT, EdgeDecoration, EditorCheckbox, EditorSelect, EditorSlider, EditorTextInput, EditorToolbar, EmojiPicker, EmptyState, ErrorBoundary, ErrorState, FEATURE_COLORS, FEATURE_TYPES, FLOOR_HEIGHT, FeatureCard, FeatureGrid, FileTree, FilterGroup, FilterPill, Flex, FlipCard, FlipContainer, FloatingActionButton, FloatingToolbar, Form, FormActions, FormField, FormLayout, FormSection, FormSectionHeader, FxOverlay, GameAudioContext, GameAudioCue, GameAudioProvider, GameAudioToggle, GameHud, GameIcon, GameMenu, GameShell, Gantt, GenericAppTemplate, GeometricPattern, GradientDivider, GraphCanvas, GraphView, Grid, GridPicker, Header, HealthBar, Icon, IconButton, Image, ImportPreviewTree, ImportProgress, ImportSourcePicker, InfiniteScrollSentinel, Input, InputGroup, JazariStateMachine, JsonTreeEditor, Label, LawReferenceTooltip, LearningCanvas, LearningScene3D, Lightbox, LikertScale, LineChart, LoadingState, MapView, MarkdownContent, MasterDetailLayout, MathCanvas, MatrixQuestion, MediaGallery, Menu, Meter, Modal, ModalSlot, ModuleCard, Navigation, NumberStepper, OptionConstraintGroup, StateMachineView as OrbitalStateMachineView, OrbitalVisualization, Overlay, PageHeader, PageTransition, Pagination, PatternTile, PhysicsCanvas, Popover, PositionedCanvas, ProgressBar, ProgressDots, PullToRefresh, QrScanner, QuizBlock, Radio, RangeSlider, ReflectionBlock, RelationSelect, RepeatableFormSection, ReplyTree, RichTextEditor, RuntimeDebugger, SHEET_COLUMNS, SPRITE_SHEET_LAYOUT, ScaledDiagram, ScoreDisplay, SearchInput, Section, SectionHeader, SegmentRenderer, Select, SequenceBar, SidePanel, Sidebar, SignaturePad, SimpleGrid, Skeleton, SkeletonTree, SlotContentRenderer, SocialProof, SortableList, Spacer, Sparkline, Spinner, Split, SplitPane, StarRating, StatBadge, StatCard, StatDisplay, StateGraph, StateJsonView, StateMachineView, StatusBar, StatusDot, SubagentTracePanel, SvgBranch, SvgConnection, SvgFlow, SvgGrid, SvgLobe, SvgMesh, SvgMorph, SvgNode, SvgPulse, SvgRing, SvgShield, SvgStack, SwipeableRow, Switch, TERRAIN_COLORS, TILE_HEIGHT, TILE_WIDTH, TabbedContainer, TableView, Tabs, TagInput, TerrainPalette, TextHighlight, Textarea, ThemeToggle, TimeSlotCell, Timeline, TimerDisplay, Toast, ToastSlot, Tooltip, TopNavItem, TraitFrame, TraitSlot, TraitStateViewer, TrendIndicator, TypewriterText, UISlotComponent, UISlotRenderer, UploadDropZone, VersionDiff, ViolationAlert, VoteStack, WizardContainer, WizardNavigation, WizardProgress, activityRowFacts, applyCompletion, applySuggestions, arrowBetween, billboardLabel, boardEntity, bool, calculateAttackTargets, calculateValidMoves, createInitialGameState, createUnitAnimationState, cylinderBetween, dispatchCommandPaletteCommand, get3DClickPayload, getCurrentFrame, getTileDimensions, groupIntoConversations, inferDirection, isoToScreen, makeAsset, makeAssetMap, meshSphere, num, objAvailableActions, objAvailableEvents, objCurrentState, objIcon, objId, objMaxRules, objName, objRules, objStates, parseEditFocus, pendulum, projectileMotion, registerCodeLanguageLoader, renderPatternValue, resolveFrame, resolveSheetDirection, rows, sanitizeRichHtml, screenToIso, springOscillator, str, tickAnimationState, toCodeLanguage, transitionAnimation, unitHealth, unitPosition, unitTeam, useAtlasSliceDataUrl, useCamera, useCompactLayout, useDockLayout, useGameAudio, useGameAudioContext, useImageCache, useUnitSpriteAtlas, vec2 } from '../chunk-E6MWYQVZ.js';
8
+ import { VStack, HStack, Box } from '../chunk-J755QADM.js';
9
+ export { Box, DrawFxLayer, DrawGroup, DrawMesh, DrawShape, DrawSkinnedMesh, HStack, Stack, VStack } from '../chunk-J755QADM.js';
10
10
  import { Typography } from '../chunk-4ZGXIW3B.js';
11
11
  export { Typography } from '../chunk-4ZGXIW3B.js';
12
12
  export { ALMADAR_DND_MIME, parseQueryBinding, useAuthContext, useCanvasGestures, useDragReorder, useDraggable, useDropZone, useInfiniteScroll, useLongPress, useMediaQuery, usePrefersReducedMotion, usePullToRefresh, useQuerySingleton, useSwipeGesture } from '../chunk-I5QOYW2Z.js';
@@ -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-BTvRPfsr.js';
2
- export { c as Canvas3DHost, d as Canvas3DHostHandle, e as Canvas3DHostProps, c as GameCanvas3D, U as UnitAnimationState } from '../../../Canvas3DHost-BTvRPfsr.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-BN8Vbzgs.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-CK76GUfH.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-BN8Vbzgs.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 DisplayFieldFormat as f, type BadgeVariant as g, Badge as h, type BadgeProps as i, type FxOverlayKind as j, Icon as k, type IconAnimation as l, type IconProps as m, type IconSize as n, type ImageSource as o, type Point as p };
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
@@ -25344,8 +25346,10 @@ var init_AvlFieldType = __esm({
25344
25346
  pattern: "hexagon",
25345
25347
  node: "hexagon",
25346
25348
  event: "hexagon",
25349
+ EventAddress: "hexagon",
25347
25350
  SExpr: "hexagon",
25348
25351
  array: "bars",
25352
+ tuple: "bars",
25349
25353
  relation: "link"
25350
25354
  };
25351
25355
  AvlFieldType = ({
@@ -59061,17 +59065,7 @@ function findPageByName2(schema, pageName) {
59061
59065
  return null;
59062
59066
  }
59063
59067
  function getDefaultPage2(schema) {
59064
- if (!schema.orbitals) return null;
59065
- for (const orbital of schema.orbitals) {
59066
- if (!isInlineOrbital(orbital)) continue;
59067
- if (!orbital.pages) continue;
59068
- for (const pageRef of orbital.pages) {
59069
- if (isInlinePage(pageRef)) {
59070
- return { page: pageRef, orbitalName: orbital.name };
59071
- }
59072
- }
59073
- }
59074
- return null;
59068
+ return core.defaultPage(schema);
59075
59069
  }
59076
59070
  function getAllPages2(schema) {
59077
59071
  const pages = [];
@@ -59106,9 +59100,9 @@ function NavigationProvider2({
59106
59100
  }
59107
59101
  }
59108
59102
  if (!page) {
59109
- const defaultPage = getDefaultPage2(schema);
59110
- if (defaultPage) {
59111
- page = defaultPage.page;
59103
+ const defaultPage2 = getDefaultPage2(schema);
59104
+ if (defaultPage2) {
59105
+ page = defaultPage2.page;
59112
59106
  path = page.path || "/";
59113
59107
  }
59114
59108
  }
@@ -10,11 +10,11 @@ export { N as NavPageDecl, a as NavStackApi, b as NavStackProvider, c as NavStac
10
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-CK76GUfH.js';
14
- export { G as GameAudioContext, a as GameAudioContextValue, b as GameAudioProvider, c as GameAudioProviderProps, u as useGameAudioContext, d as useGameAudioContextOptional } from '../GameAudioProvider-kXbonWTv.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-BN8Vbzgs.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-I2ZNE5TD.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
  }
@@ -7664,6 +7664,7 @@ var init_Avatar = __esm({
7664
7664
  statusClasses[status],
7665
7665
  statusSizeClasses[size2]
7666
7666
  ),
7667
+ role: "img",
7667
7668
  "aria-label": t("avatar.status", { status: t(`avatar.status.${status}`) })
7668
7669
  }
7669
7670
  ),
@@ -10300,6 +10301,7 @@ var init_AnimatedGraphic = __esm({
10300
10301
  "div",
10301
10302
  {
10302
10303
  className: "w-full h-full [&>svg]:w-full [&>svg]:h-full",
10304
+ "aria-hidden": "true",
10303
10305
  dangerouslySetInnerHTML: { __html: resolvedSvg }
10304
10306
  }
10305
10307
  ) : children
@@ -25075,8 +25077,10 @@ var init_AvlFieldType = __esm({
25075
25077
  pattern: "hexagon",
25076
25078
  node: "hexagon",
25077
25079
  event: "hexagon",
25080
+ EventAddress: "hexagon",
25078
25081
  SExpr: "hexagon",
25079
25082
  array: "bars",
25083
+ tuple: "bars",
25080
25084
  relation: "link"
25081
25085
  };
25082
25086
  AvlFieldType = ({
@@ -59496,19 +59500,10 @@ function SchemaRunner({ schema, serverUrl, transport, getAccessToken, mockData,
59496
59500
  ),
59497
59501
  [schema, ir]
59498
59502
  );
59499
- const traitLinkedEntitiesMap = React98.useMemo(() => {
59500
- const map = /* @__PURE__ */ new Map();
59501
- if (ir) {
59502
- for (const page of ir.pages.values()) {
59503
- for (const binding of page.traits) {
59504
- if (binding.linkedEntity) {
59505
- map.set(binding.trait.name, binding.linkedEntity);
59506
- }
59507
- }
59508
- }
59509
- }
59510
- return map;
59511
- }, [ir]);
59503
+ const traitLinkedEntitiesMap = React98.useMemo(
59504
+ () => ir ? ui.buildTraitLinkedEntities(ir) : /* @__PURE__ */ new Map(),
59505
+ [ir]
59506
+ );
59512
59507
  const orbitalsByTraitMap = React98.useMemo(
59513
59508
  () => new Map(Object.entries(orbitalsByTrait)),
59514
59509
  [orbitalsByTrait]
@@ -1,10 +1,10 @@
1
- export { BrowserPlayground, OrbPreview, adjustSchemaForMockData, buildMockData, clearSchemaCache, prepareSchemaForPreview, useResolvedSchema, useTraitStateMachine } from '../chunk-HB3D3HUJ.js';
1
+ export { BrowserPlayground, OrbPreview, adjustSchemaForMockData, buildMockData, clearSchemaCache, prepareSchemaForPreview, useResolvedSchema, useTraitStateMachine } from '../chunk-QJIAJ6EH.js';
2
2
  export { assertUniqueSlotsPerHost } from '../chunk-O2EIWXWE.js';
3
3
  import '../chunk-N7JIG57B.js';
4
- import '../chunk-VHTJRS2N.js';
4
+ import '../chunk-L3MTZ3RH.js';
5
5
  import '../chunk-YYYHH5BA.js';
6
- export { wrapCallbackForEvent } from '../chunk-I2ZNE5TD.js';
7
- import '../chunk-HA7CJWQX.js';
6
+ export { wrapCallbackForEvent } from '../chunk-E6MWYQVZ.js';
7
+ import '../chunk-J755QADM.js';
8
8
  import '../chunk-4ZGXIW3B.js';
9
9
  import '../chunk-I5QOYW2Z.js';
10
10
  import '../chunk-XJTHMW4G.js';