@almadar/ui 2.61.1 → 3.1.2

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 (48) hide show
  1. package/dist/avl/index.cjs +1344 -1507
  2. package/dist/avl/index.css +7 -2
  3. package/dist/avl/index.js +268 -431
  4. package/dist/components/index.cjs +40 -38
  5. package/dist/components/index.css +7 -2
  6. package/dist/components/index.js +41 -39
  7. package/dist/components/organisms/DataTable.d.ts +3 -2
  8. package/dist/components/organisms/JazariStateMachine.d.ts +10 -37
  9. package/dist/components/organisms/MasterDetail.d.ts +4 -3
  10. package/dist/components/organisms/MediaGallery.d.ts +3 -2
  11. package/dist/components/organisms/Sidebar.d.ts +7 -2
  12. package/dist/components/organisms/StateMachineView.d.ts +7 -2
  13. package/dist/components/organisms/Table.d.ts +2 -1
  14. package/dist/components/organisms/Timeline.d.ts +15 -2
  15. package/dist/components/organisms/book/BookChapterView.d.ts +3 -2
  16. package/dist/components/organisms/book/BookCoverPage.d.ts +3 -3
  17. package/dist/components/organisms/book/BookNavBar.d.ts +3 -3
  18. package/dist/components/organisms/book/BookTableOfContents.d.ts +3 -2
  19. package/dist/components/organisms/book/BookViewer.d.ts +2 -2
  20. package/dist/components/organisms/book/types.d.ts +9 -4
  21. package/dist/components/organisms/game/WorldMapBoard.d.ts +9 -3
  22. package/dist/components/organisms/game/three/index.cjs +8 -4
  23. package/dist/components/organisms/game/three/index.js +8 -4
  24. package/dist/components/organisms/marketing-types.d.ts +22 -12
  25. package/dist/components/organisms/types.d.ts +24 -12
  26. package/dist/components/templates/types.d.ts +7 -2
  27. package/dist/docs/index.cjs +6 -2
  28. package/dist/docs/index.d.cts +1 -1
  29. package/dist/docs/index.js +6 -2
  30. package/dist/hooks/event-bus-types.d.ts +19 -27
  31. package/dist/hooks/index.cjs +13 -6
  32. package/dist/hooks/index.d.ts +1 -1
  33. package/dist/hooks/index.js +13 -6
  34. package/dist/hooks/useEventBus.d.ts +3 -3
  35. package/dist/lib/index.cjs +5 -2
  36. package/dist/lib/index.js +5 -2
  37. package/dist/lib/verificationRegistry.d.ts +3 -5
  38. package/dist/marketing/index.cjs +6 -2
  39. package/dist/marketing/index.js +6 -2
  40. package/dist/providers/index.cjs +997 -1168
  41. package/dist/providers/index.css +7 -2
  42. package/dist/providers/index.d.ts +0 -2
  43. package/dist/providers/index.js +241 -406
  44. package/dist/runtime/index.cjs +47 -70
  45. package/dist/runtime/index.css +7 -2
  46. package/dist/runtime/index.js +48 -71
  47. package/package.json +4 -4
  48. package/dist/providers/EntityStoreProvider.d.ts +0 -63
package/dist/avl/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
2
2
  import { Html, RoundedBox, OrbitControls as OrbitControls$1, Grid as Grid$1, Stars, Sparkles } from '@react-three/drei';
3
- import * as React127 from 'react';
4
- import React127__default, { createContext, useContext, useRef, useState, useCallback, useMemo, useEffect, Suspense, useSyncExternalStore, useLayoutEffect, useReducer, lazy, useId, forwardRef, useImperativeHandle, Component } from 'react';
3
+ import * as React126 from 'react';
4
+ import React126__default, { createContext, useContext, useRef, useState, useCallback, useMemo, useEffect, Suspense, useLayoutEffect, useReducer, lazy, useId, forwardRef, useImperativeHandle, Component } from 'react';
5
5
  import * as LucideIcons from 'lucide-react';
6
6
  import { Loader2, ChevronDown, X, Check, Copy, AlertTriangle, Info, AlertCircle, CheckCircle, List, Printer, ChevronRight, ChevronLeft, Code, FileText, WrapText, Trash2, Settings, Menu as Menu$1, Search, Bell, LogOut, ZoomOut, ZoomIn, Download, FileQuestion, Inbox, XCircle, Filter, Plus, Pause, Play, RotateCcw, Package, Calendar, Pencil, Eye, MoreHorizontal, Image as Image$1, Upload, Minus, ArrowLeft, HelpCircle, ChevronUp, Eraser, Star, TrendingUp, TrendingDown, ArrowUp, ArrowDown, MoreVertical, Sun, Moon, Circle, Clock, CheckCircle2, ArrowRight, FileWarning, SkipForward, Bug, Send, Wrench, User, Tag, DollarSign, Zap, Sword, Move, Heart, Shield } from 'lucide-react';
7
7
  import { evaluate, createMinimalContext } from '@almadar/evaluator';
@@ -31,6 +31,7 @@ import langDiff from 'react-syntax-highlighter/dist/esm/languages/prism/diff.js'
31
31
  import langToml from 'react-syntax-highlighter/dist/esm/languages/prism/toml.js';
32
32
  import langGo from 'react-syntax-highlighter/dist/esm/languages/prism/go.js';
33
33
  import langGraphql from 'react-syntax-highlighter/dist/esm/languages/prism/graphql.js';
34
+ import { FieldTypeSchema, isEntityCall, schemaToIR, getPage, isCircuitEvent, isInlineTrait } from '@almadar/core';
34
35
  import { useFrame, useThree, Canvas } from '@react-three/fiber';
35
36
  import * as THREE6 from 'three';
36
37
  import { MathUtils, Vector3, Quaternion, QuadraticBezierCurve3 } from 'three';
@@ -41,7 +42,6 @@ import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js';
41
42
  import { EffectComposer, Bloom, DepthOfField, Vignette } from '@react-three/postprocessing';
42
43
  import ELK from 'elkjs/lib/elk.bundled.js';
43
44
  import { MarkerType, Handle, Position, getBezierPath, EdgeLabelRenderer, BaseEdge, ReactFlowProvider, useNodesState, useEdgesState, useReactFlow, ReactFlow, Controls, Background, BackgroundVariant } from '@xyflow/react';
44
- import { FieldTypeSchema, isEntityCall, schemaToIR, getPage, isCircuitEvent } from '@almadar/core';
45
45
  import '@tanstack/react-query';
46
46
  import { StateMachineManager, createContextFromBindings, interpolateValue, EffectExecutor } from '@almadar/runtime';
47
47
 
@@ -2907,11 +2907,15 @@ function EventBusProvider({ children, debug: debug2 = false }) {
2907
2907
  deprecationWarningShown.current = true;
2908
2908
  }
2909
2909
  }, []);
2910
- const emit = useCallback((type, payload) => {
2910
+ const emit = useCallback((type, payload, source) => {
2911
2911
  const event = {
2912
2912
  type,
2913
+ // Narrow at the bus boundary: public emit takes Record for ergonomics
2914
+ // (generic UI components pass consumer-defined rows) while the envelope
2915
+ // stores the payload as EventPayload for listeners.
2913
2916
  payload,
2914
- timestamp: Date.now()
2917
+ timestamp: Date.now(),
2918
+ source
2915
2919
  };
2916
2920
  const listeners6 = listenersRef.current.get(type);
2917
2921
  const listenerCount = (listeners6?.size ?? 0) + anyListenersRef.current.size;
@@ -2986,7 +2990,7 @@ function EventBusProvider({ children, debug: debug2 = false }) {
2986
2990
  }
2987
2991
  };
2988
2992
  }, [debug2]);
2989
- const contextValue2 = useMemo(
2993
+ const contextValue = useMemo(
2990
2994
  () => ({
2991
2995
  emit,
2992
2996
  on,
@@ -2999,12 +3003,12 @@ function EventBusProvider({ children, debug: debug2 = false }) {
2999
3003
  [emit, on, once, hasListeners, onAny, getSelectedEntity, clearSelectedEntity]
3000
3004
  );
3001
3005
  useEffect(() => {
3002
- setGlobalEventBus(contextValue2);
3006
+ setGlobalEventBus(contextValue);
3003
3007
  return () => {
3004
3008
  setGlobalEventBus(null);
3005
3009
  };
3006
- }, [contextValue2]);
3007
- return /* @__PURE__ */ jsx(EventBusContext.Provider, { value: contextValue2, children });
3010
+ }, [contextValue]);
3011
+ return /* @__PURE__ */ jsx(EventBusContext.Provider, { value: contextValue, children });
3008
3012
  }
3009
3013
  var busLog, subLog, EventBusContext;
3010
3014
  var init_EventBusProvider = __esm({
@@ -3061,8 +3065,8 @@ function useEventListener(event, handler) {
3061
3065
  function useEmitEvent() {
3062
3066
  const eventBus = useEventBus();
3063
3067
  return useCallback(
3064
- (type, payload) => {
3065
- eventBus.emit(type, payload);
3068
+ (type, payload, source) => {
3069
+ eventBus.emit(type, payload, source);
3066
3070
  },
3067
3071
  [eventBus]
3068
3072
  );
@@ -3078,11 +3082,15 @@ var init_useEventBus = __esm({
3078
3082
  fallbackListeners = /* @__PURE__ */ new Map();
3079
3083
  fallbackAnyListeners = /* @__PURE__ */ new Set();
3080
3084
  fallbackEventBus = {
3081
- emit: (type, payload) => {
3085
+ emit: (type, payload, source) => {
3082
3086
  const event = {
3083
3087
  type,
3088
+ // Narrow at the bus boundary: public emit accepts an opaque object so
3089
+ // generic UI emit sites don't require casts; the envelope stores the
3090
+ // payload as EventPayload which listeners consume directly.
3084
3091
  payload,
3085
- timestamp: Date.now()
3092
+ timestamp: Date.now(),
3093
+ source
3086
3094
  };
3087
3095
  const handlers = fallbackListeners.get(type);
3088
3096
  log.debug("emit", { type, payloadKeys: payload ? Object.keys(payload).length : 0, listenerCount: (handlers?.size ?? 0) + fallbackAnyListeners.size });
@@ -3250,7 +3258,7 @@ var init_Box = __esm({
3250
3258
  fixed: "fixed",
3251
3259
  sticky: "sticky"
3252
3260
  };
3253
- Box = React127__default.forwardRef(
3261
+ Box = React126__default.forwardRef(
3254
3262
  ({
3255
3263
  padding,
3256
3264
  paddingX,
@@ -4018,7 +4026,7 @@ var init_ThemeContext = __esm({
4018
4026
  const newMode = resolvedMode === "dark" ? "light" : "dark";
4019
4027
  setMode(newMode);
4020
4028
  }, [resolvedMode, setMode]);
4021
- const contextValue2 = useMemo(
4029
+ const contextValue = useMemo(
4022
4030
  () => ({
4023
4031
  theme,
4024
4032
  mode,
@@ -4040,151 +4048,10 @@ var init_ThemeContext = __esm({
4040
4048
  appliedTheme
4041
4049
  ]
4042
4050
  );
4043
- return /* @__PURE__ */ jsx(ThemeContext.Provider, { value: contextValue2, children });
4051
+ return /* @__PURE__ */ jsx(ThemeContext.Provider, { value: contextValue, children });
4044
4052
  };
4045
4053
  }
4046
4054
  });
4047
- function extractId(record) {
4048
- const r2 = record;
4049
- return String(r2.id ?? r2._id ?? r2.key ?? "");
4050
- }
4051
- function materialize(snap) {
4052
- return snap.ids.map((id) => snap.entities.get(id));
4053
- }
4054
- function notifyListeners(entityType, prev) {
4055
- for (const listener of storeListeners) {
4056
- listener();
4057
- }
4058
- const cbs = watchCallbacks.get(entityType);
4059
- if (cbs) {
4060
- const oldData = prev ? materialize(prev) : [];
4061
- const cur = store.get(entityType);
4062
- const newData = cur ? materialize(cur) : [];
4063
- for (const cb of cbs) {
4064
- try {
4065
- cb(oldData, newData);
4066
- } catch {
4067
- }
4068
- }
4069
- }
4070
- }
4071
- function setAll(entityType, records) {
4072
- const entities = /* @__PURE__ */ new Map();
4073
- const ids = [];
4074
- for (const r2 of records) {
4075
- const rec = r2;
4076
- const id = extractId(rec);
4077
- if (id) {
4078
- entities.set(id, rec);
4079
- ids.push(id);
4080
- }
4081
- }
4082
- const prev = store.get(entityType);
4083
- const newVersion = (prev?.version ?? 0) + 1;
4084
- store.set(entityType, { entities, ids, version: newVersion });
4085
- storeLog.debug("setAll", { entityType, recordCount: records.length, version: newVersion });
4086
- notifyListeners(entityType, prev);
4087
- }
4088
- function upsertOne(entityType, record) {
4089
- const id = extractId(record);
4090
- if (!id) return;
4091
- const prev = store.get(entityType);
4092
- const snapshot = prev ? { entities: new Map(prev.entities), ids: [...prev.ids], version: prev.version } : { entities: /* @__PURE__ */ new Map(), ids: [], version: 0 };
4093
- snapshot.entities.set(id, record);
4094
- if (!snapshot.ids.includes(id)) snapshot.ids.push(id);
4095
- snapshot.version++;
4096
- store.set(entityType, snapshot);
4097
- storeLog.debug("upsertOne", { entityType, id, version: snapshot.version });
4098
- notifyListeners(entityType, prev);
4099
- }
4100
- function addOne(entityType, record) {
4101
- upsertOne(entityType, record);
4102
- }
4103
- function updateOne(entityType, id, changes) {
4104
- const prev = store.get(entityType);
4105
- if (!prev?.entities.has(id)) return;
4106
- const snapshot = {
4107
- entities: new Map(prev.entities),
4108
- ids: [...prev.ids],
4109
- version: prev.version
4110
- };
4111
- snapshot.entities.set(id, { ...snapshot.entities.get(id), ...changes });
4112
- snapshot.version++;
4113
- store.set(entityType, snapshot);
4114
- storeLog.debug("updateOne", { entityType, id, changedFields: Object.keys(changes), version: snapshot.version });
4115
- notifyListeners(entityType, prev);
4116
- }
4117
- function removeOne(entityType, id) {
4118
- const prev = store.get(entityType);
4119
- if (!prev) return;
4120
- const snapshot = {
4121
- entities: new Map(prev.entities),
4122
- ids: prev.ids.filter((i) => i !== id),
4123
- version: prev.version
4124
- };
4125
- snapshot.entities.delete(id);
4126
- snapshot.version++;
4127
- store.set(entityType, snapshot);
4128
- storeLog.debug("removeOne", { entityType, id, remainingCount: snapshot.ids.length, version: snapshot.version });
4129
- notifyListeners(entityType, prev);
4130
- }
4131
- function getSnapshot(entityType) {
4132
- const snap = store.get(entityType);
4133
- if (!snap) return [];
4134
- return materialize(snap);
4135
- }
4136
- function getById(entityType, id) {
4137
- return store.get(entityType)?.entities.get(id) ?? null;
4138
- }
4139
- function getVersion(entityType) {
4140
- return store.get(entityType)?.version ?? 0;
4141
- }
4142
- function subscribeToStore(listener) {
4143
- storeListeners.add(listener);
4144
- return () => {
4145
- storeListeners.delete(listener);
4146
- };
4147
- }
4148
- function useEntityRef(entityType) {
4149
- const versionRef = useRef(0);
4150
- const dataRef = useRef([]);
4151
- const getSnapshotStable = React127__default.useCallback(() => {
4152
- const currentVersion = getVersion(entityType);
4153
- if (currentVersion !== versionRef.current) {
4154
- versionRef.current = currentVersion;
4155
- dataRef.current = getSnapshot(entityType);
4156
- }
4157
- return dataRef.current;
4158
- }, [entityType]);
4159
- return useSyncExternalStore(subscribeToStore, getSnapshotStable, () => []);
4160
- }
4161
- function useEntityStore() {
4162
- return useContext(EntityStoreContext);
4163
- }
4164
- function EntityStoreProvider({ children }) {
4165
- return /* @__PURE__ */ jsx(EntityStoreContext.Provider, { value: contextValue, children });
4166
- }
4167
- var storeLog, store, storeListeners, watchCallbacks, contextValue, EntityStoreContext;
4168
- var init_EntityStoreProvider = __esm({
4169
- "providers/EntityStoreProvider.tsx"() {
4170
- "use client";
4171
- init_logger();
4172
- storeLog = createLogger("almadar:entity:store");
4173
- store = /* @__PURE__ */ new Map();
4174
- storeListeners = /* @__PURE__ */ new Set();
4175
- watchCallbacks = /* @__PURE__ */ new Map();
4176
- contextValue = {
4177
- setAll,
4178
- upsertOne,
4179
- addOne,
4180
- updateOne,
4181
- removeOne,
4182
- getSnapshot,
4183
- getById
4184
- };
4185
- EntityStoreContext = createContext(contextValue);
4186
- }
4187
- });
4188
4055
  function EntitySchemaProvider({
4189
4056
  entities,
4190
4057
  children
@@ -4196,13 +4063,13 @@ function EntitySchemaProvider({
4196
4063
  }
4197
4064
  return map;
4198
4065
  }, [entities]);
4199
- const contextValue2 = useMemo(
4066
+ const contextValue = useMemo(
4200
4067
  () => ({
4201
4068
  entities: entitiesMap
4202
4069
  }),
4203
4070
  [entitiesMap]
4204
4071
  );
4205
- return /* @__PURE__ */ jsx(EntitySchemaContext.Provider, { value: contextValue2, children });
4072
+ return /* @__PURE__ */ jsx(EntitySchemaContext.Provider, { value: contextValue, children });
4206
4073
  }
4207
4074
  function useEntitySchema() {
4208
4075
  const context = useContext(EntitySchemaContext);
@@ -4440,8 +4307,8 @@ var init_useUISlots = __esm({
4440
4307
  });
4441
4308
  function UISlotProvider({ children }) {
4442
4309
  const slotManager = useUISlotManager();
4443
- const contextValue2 = useMemo(() => slotManager, [slotManager]);
4444
- return /* @__PURE__ */ jsx(UISlotContext.Provider, { value: contextValue2, children });
4310
+ const contextValue = useMemo(() => slotManager, [slotManager]);
4311
+ return /* @__PURE__ */ jsx(UISlotContext.Provider, { value: contextValue, children });
4445
4312
  }
4446
4313
  function useUISlots() {
4447
4314
  const context = useContext(UISlotContext);
@@ -4984,7 +4851,7 @@ function resolveIconProp(value, sizeClass) {
4984
4851
  const IconComp = value;
4985
4852
  return /* @__PURE__ */ jsx(IconComp, { className: sizeClass });
4986
4853
  }
4987
- if (React127__default.isValidElement(value)) {
4854
+ if (React126__default.isValidElement(value)) {
4988
4855
  return value;
4989
4856
  }
4990
4857
  if (typeof value === "object" && value !== null && "render" in value) {
@@ -5060,7 +4927,7 @@ var init_Button = __esm({
5060
4927
  md: "h-4 w-4",
5061
4928
  lg: "h-5 w-5"
5062
4929
  };
5063
- Button = React127__default.forwardRef(
4930
+ Button = React126__default.forwardRef(
5064
4931
  ({
5065
4932
  className,
5066
4933
  variant = "primary",
@@ -5163,7 +5030,7 @@ var init_Badge = __esm({
5163
5030
  md: "px-2.5 py-1 text-sm",
5164
5031
  lg: "px-3 py-1.5 text-base"
5165
5032
  };
5166
- Badge = React127__default.forwardRef(
5033
+ Badge = React126__default.forwardRef(
5167
5034
  ({ className, variant = "default", size = "sm", amount, label, icon, children, ...props }, ref) => {
5168
5035
  const iconSizes2 = { sm: "w-3 h-3", md: "w-3.5 h-3.5", lg: "w-4 h-4" };
5169
5036
  const resolvedIcon = typeof icon === "string" ? (() => {
@@ -5304,7 +5171,7 @@ var Input;
5304
5171
  var init_Input = __esm({
5305
5172
  "components/atoms/Input.tsx"() {
5306
5173
  init_cn();
5307
- Input = React127__default.forwardRef(
5174
+ Input = React126__default.forwardRef(
5308
5175
  ({
5309
5176
  className,
5310
5177
  inputType,
@@ -5422,7 +5289,7 @@ var Label;
5422
5289
  var init_Label = __esm({
5423
5290
  "components/atoms/Label.tsx"() {
5424
5291
  init_cn();
5425
- Label = React127__default.forwardRef(
5292
+ Label = React126__default.forwardRef(
5426
5293
  ({ className, required, children, ...props }, ref) => {
5427
5294
  return /* @__PURE__ */ jsxs(
5428
5295
  "label",
@@ -5448,7 +5315,7 @@ var Textarea;
5448
5315
  var init_Textarea = __esm({
5449
5316
  "components/atoms/Textarea.tsx"() {
5450
5317
  init_cn();
5451
- Textarea = React127__default.forwardRef(
5318
+ Textarea = React126__default.forwardRef(
5452
5319
  ({ className, error, ...props }, ref) => {
5453
5320
  return /* @__PURE__ */ jsx(
5454
5321
  "textarea",
@@ -5477,7 +5344,7 @@ var Select;
5477
5344
  var init_Select = __esm({
5478
5345
  "components/atoms/Select.tsx"() {
5479
5346
  init_cn();
5480
- Select = React127__default.forwardRef(
5347
+ Select = React126__default.forwardRef(
5481
5348
  ({ className, options, placeholder, error, ...props }, ref) => {
5482
5349
  return /* @__PURE__ */ jsxs("div", { className: "relative", children: [
5483
5350
  /* @__PURE__ */ jsxs(
@@ -5519,7 +5386,7 @@ var Checkbox;
5519
5386
  var init_Checkbox = __esm({
5520
5387
  "components/atoms/Checkbox.tsx"() {
5521
5388
  init_cn();
5522
- Checkbox = React127__default.forwardRef(
5389
+ Checkbox = React126__default.forwardRef(
5523
5390
  ({ className, label, id, ...props }, ref) => {
5524
5391
  const inputId = id || `checkbox-${Math.random().toString(36).substr(2, 9)}`;
5525
5392
  return /* @__PURE__ */ jsxs("div", { className: "flex items-center", children: [
@@ -5601,7 +5468,7 @@ var init_Card = __esm({
5601
5468
  md: "shadow",
5602
5469
  lg: "shadow-lg"
5603
5470
  };
5604
- Card = React127__default.forwardRef(
5471
+ Card = React126__default.forwardRef(
5605
5472
  ({
5606
5473
  className,
5607
5474
  variant = "bordered",
@@ -5637,9 +5504,9 @@ var init_Card = __esm({
5637
5504
  }
5638
5505
  );
5639
5506
  Card.displayName = "Card";
5640
- CardHeader = React127__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn("mb-4", className), ...props }));
5507
+ CardHeader = React126__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn("mb-4", className), ...props }));
5641
5508
  CardHeader.displayName = "CardHeader";
5642
- CardTitle = React127__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
5509
+ CardTitle = React126__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
5643
5510
  "h3",
5644
5511
  {
5645
5512
  ref,
@@ -5652,11 +5519,11 @@ var init_Card = __esm({
5652
5519
  }
5653
5520
  ));
5654
5521
  CardTitle.displayName = "CardTitle";
5655
- CardContent = React127__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn("", className), ...props }));
5522
+ CardContent = React126__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn("", className), ...props }));
5656
5523
  CardContent.displayName = "CardContent";
5657
5524
  CardBody = CardContent;
5658
5525
  CardBody.displayName = "CardBody";
5659
- CardFooter = React127__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
5526
+ CardFooter = React126__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
5660
5527
  "div",
5661
5528
  {
5662
5529
  ref,
@@ -5677,7 +5544,7 @@ var init_Spinner = __esm({
5677
5544
  md: "h-6 w-6",
5678
5545
  lg: "h-8 w-8"
5679
5546
  };
5680
- Spinner = React127__default.forwardRef(
5547
+ Spinner = React126__default.forwardRef(
5681
5548
  ({ className, size = "md", ...props }, ref) => {
5682
5549
  return /* @__PURE__ */ jsx(
5683
5550
  "div",
@@ -6125,7 +5992,7 @@ var Radio;
6125
5992
  var init_Radio = __esm({
6126
5993
  "components/atoms/Radio.tsx"() {
6127
5994
  init_cn();
6128
- Radio = React127__default.forwardRef(
5995
+ Radio = React126__default.forwardRef(
6129
5996
  ({
6130
5997
  label,
6131
5998
  helperText,
@@ -6236,7 +6103,7 @@ var init_Switch = __esm({
6236
6103
  "components/atoms/Switch.tsx"() {
6237
6104
  "use client";
6238
6105
  init_cn();
6239
- Switch = React127.forwardRef(
6106
+ Switch = React126.forwardRef(
6240
6107
  ({
6241
6108
  checked,
6242
6109
  defaultChecked = false,
@@ -6247,10 +6114,10 @@ var init_Switch = __esm({
6247
6114
  name,
6248
6115
  className
6249
6116
  }, ref) => {
6250
- const [isChecked, setIsChecked] = React127.useState(
6117
+ const [isChecked, setIsChecked] = React126.useState(
6251
6118
  checked !== void 0 ? checked : defaultChecked
6252
6119
  );
6253
- React127.useEffect(() => {
6120
+ React126.useEffect(() => {
6254
6121
  if (checked !== void 0) {
6255
6122
  setIsChecked(checked);
6256
6123
  }
@@ -6590,8 +6457,8 @@ var init_LawReferenceTooltip = __esm({
6590
6457
  position = "top",
6591
6458
  className
6592
6459
  }) => {
6593
- const [isVisible, setIsVisible] = React127__default.useState(false);
6594
- const timeoutRef = React127__default.useRef(null);
6460
+ const [isVisible, setIsVisible] = React126__default.useState(false);
6461
+ const timeoutRef = React126__default.useRef(null);
6595
6462
  const handleMouseEnter = () => {
6596
6463
  if (timeoutRef.current) clearTimeout(timeoutRef.current);
6597
6464
  timeoutRef.current = setTimeout(() => setIsVisible(true), 200);
@@ -6600,7 +6467,7 @@ var init_LawReferenceTooltip = __esm({
6600
6467
  if (timeoutRef.current) clearTimeout(timeoutRef.current);
6601
6468
  setIsVisible(false);
6602
6469
  };
6603
- React127__default.useEffect(() => {
6470
+ React126__default.useEffect(() => {
6604
6471
  return () => {
6605
6472
  if (timeoutRef.current) clearTimeout(timeoutRef.current);
6606
6473
  };
@@ -6810,7 +6677,7 @@ var init_StatusDot = __esm({
6810
6677
  md: "w-2.5 h-2.5",
6811
6678
  lg: "w-3 h-3"
6812
6679
  };
6813
- StatusDot = React127__default.forwardRef(
6680
+ StatusDot = React126__default.forwardRef(
6814
6681
  ({ className, status = "offline", pulse = false, size = "md", label, ...props }, ref) => {
6815
6682
  return /* @__PURE__ */ jsx(
6816
6683
  "span",
@@ -6863,7 +6730,7 @@ var init_TrendIndicator = __esm({
6863
6730
  down: TrendingDown,
6864
6731
  flat: ArrowRight
6865
6732
  };
6866
- TrendIndicator = React127__default.forwardRef(
6733
+ TrendIndicator = React126__default.forwardRef(
6867
6734
  ({
6868
6735
  className,
6869
6736
  value,
@@ -6930,7 +6797,7 @@ var init_RangeSlider = __esm({
6930
6797
  md: "w-4 h-4",
6931
6798
  lg: "w-5 h-5"
6932
6799
  };
6933
- RangeSlider = React127__default.forwardRef(
6800
+ RangeSlider = React126__default.forwardRef(
6934
6801
  ({
6935
6802
  className,
6936
6803
  min = 0,
@@ -7525,7 +7392,7 @@ var init_ContentSection = __esm({
7525
7392
  md: "py-16",
7526
7393
  lg: "py-24"
7527
7394
  };
7528
- ContentSection = React127__default.forwardRef(
7395
+ ContentSection = React126__default.forwardRef(
7529
7396
  ({ children, background = "default", padding = "lg", id, className }, ref) => {
7530
7397
  return /* @__PURE__ */ jsx(
7531
7398
  Box,
@@ -8059,7 +7926,7 @@ var init_AnimatedReveal = __esm({
8059
7926
  "scale-up": { opacity: 1, transform: "scale(1) translateY(0)" },
8060
7927
  "none": {}
8061
7928
  };
8062
- AnimatedReveal = React127__default.forwardRef(
7929
+ AnimatedReveal = React126__default.forwardRef(
8063
7930
  ({
8064
7931
  trigger = "scroll",
8065
7932
  animation = "fade-up",
@@ -8219,7 +8086,7 @@ var init_AnimatedGraphic = __esm({
8219
8086
  "components/atoms/AnimatedGraphic.tsx"() {
8220
8087
  "use client";
8221
8088
  init_cn();
8222
- AnimatedGraphic = React127__default.forwardRef(
8089
+ AnimatedGraphic = React126__default.forwardRef(
8223
8090
  ({
8224
8091
  src,
8225
8092
  svgContent,
@@ -8242,7 +8109,7 @@ var init_AnimatedGraphic = __esm({
8242
8109
  const fetchedSvg = useFetchedSvg(svgContent ? void 0 : src);
8243
8110
  const resolvedSvg = svgContent ?? fetchedSvg;
8244
8111
  const prevAnimateRef = useRef(animate);
8245
- const setRef = React127__default.useCallback(
8112
+ const setRef = React126__default.useCallback(
8246
8113
  (node) => {
8247
8114
  containerRef.current = node;
8248
8115
  if (typeof ref === "function") ref(node);
@@ -8461,9 +8328,9 @@ function ScoreDisplay({
8461
8328
  ...rest
8462
8329
  }) {
8463
8330
  const resolvedValue = typeof value === "number" && !Number.isNaN(value) ? value : typeof rest.score === "number" && !Number.isNaN(rest.score) ? rest.score : 0;
8464
- const [displayValue, setDisplayValue] = React127.useState(resolvedValue);
8465
- const [isAnimating, setIsAnimating] = React127.useState(false);
8466
- React127.useEffect(() => {
8331
+ const [displayValue, setDisplayValue] = React126.useState(resolvedValue);
8332
+ const [isAnimating, setIsAnimating] = React126.useState(false);
8333
+ React126.useEffect(() => {
8467
8334
  if (!animated || displayValue === resolvedValue) {
8468
8335
  setDisplayValue(resolvedValue);
8469
8336
  return;
@@ -8533,9 +8400,9 @@ function ControlButton({
8533
8400
  className
8534
8401
  }) {
8535
8402
  const eventBus = useEventBus();
8536
- const [isPressed, setIsPressed] = React127.useState(false);
8403
+ const [isPressed, setIsPressed] = React126.useState(false);
8537
8404
  const actualPressed = pressed ?? isPressed;
8538
- const handlePointerDown = React127.useCallback(
8405
+ const handlePointerDown = React126.useCallback(
8539
8406
  (e) => {
8540
8407
  e.preventDefault();
8541
8408
  if (disabled) return;
@@ -8545,7 +8412,7 @@ function ControlButton({
8545
8412
  },
8546
8413
  [disabled, pressEvent, eventBus, onPress]
8547
8414
  );
8548
- const handlePointerUp = React127.useCallback(
8415
+ const handlePointerUp = React126.useCallback(
8549
8416
  (e) => {
8550
8417
  e.preventDefault();
8551
8418
  if (disabled) return;
@@ -8555,7 +8422,7 @@ function ControlButton({
8555
8422
  },
8556
8423
  [disabled, releaseEvent, eventBus, onRelease]
8557
8424
  );
8558
- const handlePointerLeave = React127.useCallback(
8425
+ const handlePointerLeave = React126.useCallback(
8559
8426
  (e) => {
8560
8427
  if (isPressed) {
8561
8428
  setIsPressed(false);
@@ -9453,9 +9320,9 @@ function MiniMap({
9453
9320
  viewportRect,
9454
9321
  className
9455
9322
  }) {
9456
- const canvasRef = React127.useRef(null);
9457
- const frameRef = React127.useRef(0);
9458
- React127.useEffect(() => {
9323
+ const canvasRef = React126.useRef(null);
9324
+ const frameRef = React126.useRef(0);
9325
+ React126.useEffect(() => {
9459
9326
  const canvas = canvasRef.current;
9460
9327
  if (!canvas) return;
9461
9328
  const ctx = canvas.getContext("2d");
@@ -9794,7 +9661,7 @@ var init_ErrorBoundary = __esm({
9794
9661
  "use client";
9795
9662
  init_cn();
9796
9663
  init_ErrorState();
9797
- ErrorBoundary = class extends React127__default.Component {
9664
+ ErrorBoundary = class extends React126__default.Component {
9798
9665
  constructor(props) {
9799
9666
  super(props);
9800
9667
  __publicField(this, "reset", () => {
@@ -10267,8 +10134,8 @@ var init_Tooltip = __esm({
10267
10134
  if (hideTimeoutRef.current) clearTimeout(hideTimeoutRef.current);
10268
10135
  };
10269
10136
  }, []);
10270
- const triggerElement = React127__default.isValidElement(children) ? children : /* @__PURE__ */ jsx("span", { children });
10271
- const trigger = React127__default.cloneElement(triggerElement, {
10137
+ const triggerElement = React126__default.isValidElement(children) ? children : /* @__PURE__ */ jsx("span", { children });
10138
+ const trigger = React126__default.cloneElement(triggerElement, {
10272
10139
  ref: triggerRef,
10273
10140
  onMouseEnter: handleMouseEnter,
10274
10141
  onMouseLeave: handleMouseLeave,
@@ -10389,8 +10256,8 @@ var init_Popover = __esm({
10389
10256
  onMouseEnter: handleOpen,
10390
10257
  onMouseLeave: handleClose
10391
10258
  };
10392
- const childElement = React127__default.isValidElement(children) ? children : /* @__PURE__ */ jsx("span", { children });
10393
- const triggerElement = React127__default.cloneElement(
10259
+ const childElement = React126__default.isValidElement(children) ? children : /* @__PURE__ */ jsx("span", { children });
10260
+ const triggerElement = React126__default.cloneElement(
10394
10261
  childElement,
10395
10262
  {
10396
10263
  ref: triggerRef,
@@ -10507,8 +10374,8 @@ var init_Menu = __esm({
10507
10374
  "bottom-start": "top-full left-0 mt-2",
10508
10375
  "bottom-end": "top-full right-0 mt-2"
10509
10376
  };
10510
- const triggerChild = React127__default.isValidElement(trigger) ? trigger : /* @__PURE__ */ jsx("span", { children: trigger });
10511
- const triggerElement = React127__default.cloneElement(
10377
+ const triggerChild = React126__default.isValidElement(trigger) ? trigger : /* @__PURE__ */ jsx("span", { children: trigger });
10378
+ const triggerElement = React126__default.cloneElement(
10512
10379
  triggerChild,
10513
10380
  {
10514
10381
  ref: triggerRef,
@@ -11022,13 +10889,13 @@ var init_MapView = __esm({
11022
10889
  shadowSize: [41, 41]
11023
10890
  });
11024
10891
  L.Marker.prototype.options.icon = defaultIcon;
11025
- const { useEffect: useEffect89, useRef: useRef88, useCallback: useCallback125, useState: useState126 } = React127__default;
10892
+ const { useEffect: useEffect88, useRef: useRef87, useCallback: useCallback125, useState: useState126 } = React126__default;
11026
10893
  const { Typography: Typography2 } = await Promise.resolve().then(() => (init_Typography(), Typography_exports));
11027
10894
  const { useEventBus: useEventBus3 } = await Promise.resolve().then(() => (init_useEventBus(), useEventBus_exports));
11028
10895
  function MapUpdater({ centerLat, centerLng, zoom }) {
11029
10896
  const map = useMap();
11030
- const prevRef = useRef88({ centerLat, centerLng, zoom });
11031
- useEffect89(() => {
10897
+ const prevRef = useRef87({ centerLat, centerLng, zoom });
10898
+ useEffect88(() => {
11032
10899
  const prev = prevRef.current;
11033
10900
  if (prev.centerLat !== centerLat || prev.centerLng !== centerLng || prev.zoom !== zoom) {
11034
10901
  map.setView([centerLat, centerLng], zoom);
@@ -11039,7 +10906,7 @@ var init_MapView = __esm({
11039
10906
  }
11040
10907
  function MapClickHandler({ onMapClick }) {
11041
10908
  const map = useMap();
11042
- useEffect89(() => {
10909
+ useEffect88(() => {
11043
10910
  if (!onMapClick) return;
11044
10911
  const handler = (e) => {
11045
10912
  onMapClick(e.latlng.lat, e.latlng.lng);
@@ -11274,7 +11141,7 @@ function InputPattern({
11274
11141
  className
11275
11142
  }) {
11276
11143
  const { emit } = useEventBus();
11277
- const [localValue, setLocalValue] = React127__default.useState(value);
11144
+ const [localValue, setLocalValue] = React126__default.useState(value);
11278
11145
  const handleChange = (e) => {
11279
11146
  setLocalValue(e.target.value);
11280
11147
  if (onChange) {
@@ -11310,7 +11177,7 @@ function TextareaPattern({
11310
11177
  className
11311
11178
  }) {
11312
11179
  const { emit } = useEventBus();
11313
- const [localValue, setLocalValue] = React127__default.useState(value);
11180
+ const [localValue, setLocalValue] = React126__default.useState(value);
11314
11181
  const handleChange = (e) => {
11315
11182
  setLocalValue(e.target.value);
11316
11183
  if (onChange) {
@@ -11340,7 +11207,7 @@ function SelectPattern({
11340
11207
  className
11341
11208
  }) {
11342
11209
  const { emit } = useEventBus();
11343
- const [localValue, setLocalValue] = React127__default.useState(value);
11210
+ const [localValue, setLocalValue] = React126__default.useState(value);
11344
11211
  const handleChange = (e) => {
11345
11212
  setLocalValue(e.target.value);
11346
11213
  if (onChange) {
@@ -11368,7 +11235,7 @@ function CheckboxPattern({
11368
11235
  className
11369
11236
  }) {
11370
11237
  const { emit } = useEventBus();
11371
- const [localChecked, setLocalChecked] = React127__default.useState(checked);
11238
+ const [localChecked, setLocalChecked] = React126__default.useState(checked);
11372
11239
  const handleChange = (e) => {
11373
11240
  setLocalChecked(e.target.checked);
11374
11241
  if (onChange) {
@@ -11599,8 +11466,8 @@ function ActionButtons({
11599
11466
  disabled
11600
11467
  }) {
11601
11468
  const eventBus = useEventBus();
11602
- const [activeButtons, setActiveButtons] = React127.useState(/* @__PURE__ */ new Set());
11603
- const handlePress = React127.useCallback(
11469
+ const [activeButtons, setActiveButtons] = React126.useState(/* @__PURE__ */ new Set());
11470
+ const handlePress = React126.useCallback(
11604
11471
  (id) => {
11605
11472
  setActiveButtons((prev) => new Set(prev).add(id));
11606
11473
  if (actionEvent) eventBus.emit(`UI:${actionEvent}`, { id, pressed: true });
@@ -11608,7 +11475,7 @@ function ActionButtons({
11608
11475
  },
11609
11476
  [actionEvent, eventBus, onAction]
11610
11477
  );
11611
- const handleRelease = React127.useCallback(
11478
+ const handleRelease = React126.useCallback(
11612
11479
  (id) => {
11613
11480
  setActiveButtons((prev) => {
11614
11481
  const next = new Set(prev);
@@ -12010,13 +11877,13 @@ function getState() {
12010
11877
  }
12011
11878
  return { checks: /* @__PURE__ */ new Map(), transitions: [], bridgeHealth: null, listeners: /* @__PURE__ */ new Set() };
12012
11879
  }
12013
- function notifyListeners2() {
11880
+ function notifyListeners() {
12014
11881
  getState().listeners.forEach((l) => l());
12015
11882
  exposeOnWindow();
12016
11883
  }
12017
11884
  function registerCheck(id, label, status = "pending", details) {
12018
11885
  getState().checks.set(id, { id, label, status, details, updatedAt: Date.now() });
12019
- notifyListeners2();
11886
+ notifyListeners();
12020
11887
  }
12021
11888
  function getAllChecks() {
12022
11889
  return Array.from(getState().checks.values());
@@ -12061,7 +11928,7 @@ function recordTransition(trace) {
12061
11928
  failedEffects.map((e) => `${e.type}: ${e.error}`).join("; ")
12062
11929
  );
12063
11930
  }
12064
- notifyListeners2();
11931
+ notifyListeners();
12065
11932
  }
12066
11933
  function getTransitions2() {
12067
11934
  return [...getState().transitions];
@@ -12094,7 +11961,7 @@ function recordServerResponse(orbitalName, event, response) {
12094
11961
  response.error
12095
11962
  );
12096
11963
  }
12097
- notifyListeners2();
11964
+ notifyListeners();
12098
11965
  }
12099
11966
  function getBridgeHealth() {
12100
11967
  const bh = getState().bridgeHealth;
@@ -12110,7 +11977,7 @@ function getSummary() {
12110
11977
  pending: allChecks.filter((c) => c.status === "pending").length
12111
11978
  };
12112
11979
  }
12113
- function getSnapshot2() {
11980
+ function getSnapshot() {
12114
11981
  return {
12115
11982
  checks: getAllChecks(),
12116
11983
  transitions: getTransitions2(),
@@ -12126,7 +11993,7 @@ function exposeOnWindow() {
12126
11993
  if (typeof window === "undefined") return;
12127
11994
  if (!window.__orbitalVerification) {
12128
11995
  window.__orbitalVerification = {
12129
- getSnapshot: getSnapshot2,
11996
+ getSnapshot,
12130
11997
  getChecks: getAllChecks,
12131
11998
  getTransitions: getTransitions2,
12132
11999
  getBridge: getBridgeHealth,
@@ -13624,9 +13491,9 @@ var init_ScaledDiagram = __esm({
13624
13491
  }
13625
13492
  });
13626
13493
 
13627
- // node_modules/.pnpm/katex@0.16.33/node_modules/katex/dist/katex.min.css
13494
+ // node_modules/.pnpm/katex@0.16.45/node_modules/katex/dist/katex.min.css
13628
13495
  var init_katex_min = __esm({
13629
- "node_modules/.pnpm/katex@0.16.33/node_modules/katex/dist/katex.min.css"() {
13496
+ "node_modules/.pnpm/katex@0.16.45/node_modules/katex/dist/katex.min.css"() {
13630
13497
  }
13631
13498
  });
13632
13499
  var MarkdownContent;
@@ -13636,7 +13503,7 @@ var init_MarkdownContent = __esm({
13636
13503
  init_Box();
13637
13504
  init_useTranslate();
13638
13505
  init_cn();
13639
- MarkdownContent = React127__default.memo(
13506
+ MarkdownContent = React126__default.memo(
13640
13507
  ({ content, direction, className }) => {
13641
13508
  const { t: _t } = useTranslate();
13642
13509
  const safeContent = typeof content === "string" ? content : String(content ?? "");
@@ -13853,7 +13720,7 @@ var init_CodeBlock = __esm({
13853
13720
  loloStyle = { ...dark, ...loloStyleOverrides };
13854
13721
  LINE_PROPS_FN = (n) => ({ "data-line": String(n - 1) });
13855
13722
  HIDDEN_LINE_NUMBERS = { display: "none" };
13856
- CodeBlock = React127__default.memo(
13723
+ CodeBlock = React126__default.memo(
13857
13724
  ({
13858
13725
  code: rawCode,
13859
13726
  language = "text",
@@ -15162,7 +15029,7 @@ var init_StateMachineView = __esm({
15162
15029
  style: { top: title ? 30 : 0 },
15163
15030
  children: [
15164
15031
  entity && /* @__PURE__ */ jsx(EntityBox, { entity, config }),
15165
- states.map((state) => renderStateNode ? /* @__PURE__ */ jsx(React127__default.Fragment, { children: renderStateNode(state, config) }, state.id) : /* @__PURE__ */ jsx(
15032
+ states.map((state) => renderStateNode ? /* @__PURE__ */ jsx(React126__default.Fragment, { children: renderStateNode(state, config) }, state.id) : /* @__PURE__ */ jsx(
15166
15033
  StateNode,
15167
15034
  {
15168
15035
  state,
@@ -15675,7 +15542,9 @@ function extractTrait(schema, trait, traitIndex) {
15675
15542
  for (const orbital of schema.orbitals) {
15676
15543
  const traits2 = orbital.traits ?? [];
15677
15544
  if (traitIndex < traits2.length) {
15678
- return traits2[traitIndex];
15545
+ const traitRef = traits2[traitIndex];
15546
+ if (isInlineTrait(traitRef)) return traitRef;
15547
+ return null;
15679
15548
  }
15680
15549
  }
15681
15550
  return null;
@@ -15683,8 +15552,10 @@ function extractTrait(schema, trait, traitIndex) {
15683
15552
  function extractEntityFields(schema) {
15684
15553
  if (!schema?.orbitals?.length) return [];
15685
15554
  const entity = schema.orbitals[0].entity;
15686
- if (!entity?.fields) return [];
15687
- return entity.fields.map((f3) => f3.name);
15555
+ if (!entity || typeof entity !== "object" || !("fields" in entity)) return [];
15556
+ const inlineEntity = entity;
15557
+ if (!inlineEntity.fields) return [];
15558
+ return inlineEntity.fields.map((f3) => f3.name);
15688
15559
  }
15689
15560
  function toStateMachineDefinition(sm) {
15690
15561
  return {
@@ -15979,12 +15850,18 @@ var init_ContentRenderer = __esm({
15979
15850
  );
15980
15851
  case "orbital": {
15981
15852
  const parsed = segment.schema;
15853
+ const inlineTrait = {
15854
+ name: "inline",
15855
+ scope: "instance",
15856
+ stateMachine: parsed
15857
+ };
15982
15858
  const schema = Array.isArray(parsed.orbitals) ? parsed : {
15859
+ name: "inline",
15983
15860
  orbitals: [{
15984
- traits: [{
15985
- name: "inline",
15986
- stateMachine: parsed
15987
- }]
15861
+ name: "inline",
15862
+ entity: { name: "inline", fields: [] },
15863
+ traits: [inlineTrait],
15864
+ pages: []
15988
15865
  }]
15989
15866
  };
15990
15867
  return /* @__PURE__ */ jsxs(VStack, { gap: "sm", children: [
@@ -20929,7 +20806,7 @@ function CraftingRecipe({
20929
20806
  className
20930
20807
  }) {
20931
20808
  const eventBus = useEventBus();
20932
- const handleCraft = React127.useCallback(() => {
20809
+ const handleCraft = React126.useCallback(() => {
20933
20810
  onCraft?.();
20934
20811
  if (craftEvent) {
20935
20812
  eventBus.emit(craftEvent, { output: output.label });
@@ -20946,7 +20823,7 @@ function CraftingRecipe({
20946
20823
  children: [
20947
20824
  /* @__PURE__ */ jsx(HStack, { gap: "xs", className: "flex-wrap items-center", children: inputs.map((ingredient, index) => {
20948
20825
  const hasSufficient = ingredient.available >= ingredient.required;
20949
- return /* @__PURE__ */ jsxs(React127.Fragment, { children: [
20826
+ return /* @__PURE__ */ jsxs(React126.Fragment, { children: [
20950
20827
  /* @__PURE__ */ jsx(Box, { className: "relative", children: /* @__PURE__ */ jsx(
20951
20828
  ItemSlot,
20952
20829
  {
@@ -21240,8 +21117,8 @@ function DPad({
21240
21117
  }) {
21241
21118
  const eventBus = useEventBus();
21242
21119
  const sizes = sizeMap15[size];
21243
- const [activeDirections, setActiveDirections] = React127.useState(/* @__PURE__ */ new Set());
21244
- const handlePress = React127.useCallback(
21120
+ const [activeDirections, setActiveDirections] = React126.useState(/* @__PURE__ */ new Set());
21121
+ const handlePress = React126.useCallback(
21245
21122
  (direction) => {
21246
21123
  setActiveDirections((prev) => new Set(prev).add(direction));
21247
21124
  if (directionEvent) eventBus.emit(`UI:${directionEvent}`, { direction, pressed: true });
@@ -21249,7 +21126,7 @@ function DPad({
21249
21126
  },
21250
21127
  [directionEvent, eventBus, onDirection]
21251
21128
  );
21252
- const handleRelease = React127.useCallback(
21129
+ const handleRelease = React126.useCallback(
21253
21130
  (direction) => {
21254
21131
  setActiveDirections((prev) => {
21255
21132
  const next = new Set(prev);
@@ -22116,7 +21993,7 @@ var init_DataList = __esm({
22116
21993
  }) => {
22117
21994
  const eventBus = useEventBus();
22118
21995
  const { t } = useTranslate();
22119
- const [visibleCount, setVisibleCount] = React127__default.useState(pageSize || Infinity);
21996
+ const [visibleCount, setVisibleCount] = React126__default.useState(pageSize || Infinity);
22120
21997
  const fields = fieldsProp ?? columnsProp ?? [];
22121
21998
  const allData = Array.isArray(entity) ? entity : entity ? [entity] : [];
22122
21999
  const data = pageSize > 0 ? allData.slice(0, visibleCount) : allData;
@@ -22153,7 +22030,7 @@ var init_DataList = __esm({
22153
22030
  const items2 = data.map((item) => item);
22154
22031
  const groups2 = groupBy ? groupData(items2, groupBy) : [{ label: "", items: items2 }];
22155
22032
  const contentField = titleField?.name ?? fields[0]?.name ?? "";
22156
- return /* @__PURE__ */ jsx(VStack, { gap: "sm", className: cn("py-2", className), children: groups2.map((group, gi) => /* @__PURE__ */ jsxs(React127__default.Fragment, { children: [
22033
+ return /* @__PURE__ */ jsx(VStack, { gap: "sm", className: cn("py-2", className), children: groups2.map((group, gi) => /* @__PURE__ */ jsxs(React126__default.Fragment, { children: [
22157
22034
  group.label && /* @__PURE__ */ jsx(Divider, { label: group.label, className: "my-2" }),
22158
22035
  group.items.map((itemData, index) => {
22159
22036
  const id = itemData.id || `${gi}-${index}`;
@@ -22356,7 +22233,7 @@ var init_DataList = __esm({
22356
22233
  className
22357
22234
  ),
22358
22235
  children: [
22359
- groups.map((group, gi) => /* @__PURE__ */ jsxs(React127__default.Fragment, { children: [
22236
+ groups.map((group, gi) => /* @__PURE__ */ jsxs(React126__default.Fragment, { children: [
22360
22237
  group.label && /* @__PURE__ */ jsx(Divider, { label: group.label, className: gi > 0 ? "mt-4" : "mt-0" }),
22361
22238
  group.items.map(
22362
22239
  (itemData, index) => renderItem(itemData, index, gi === groups.length - 1 && index === group.items.length - 1)
@@ -22562,43 +22439,43 @@ function useQuerySingleton(query) {
22562
22439
  if (!query) {
22563
22440
  return null;
22564
22441
  }
22565
- const store2 = useMemo(() => getOrCreateStore(query), [query]);
22442
+ const store = useMemo(() => getOrCreateStore(query), [query]);
22566
22443
  useMemo(() => {
22567
22444
  const listener = () => forceUpdate({});
22568
- store2.listeners.add(listener);
22445
+ store.listeners.add(listener);
22569
22446
  return () => {
22570
- store2.listeners.delete(listener);
22447
+ store.listeners.delete(listener);
22571
22448
  };
22572
- }, [store2]);
22573
- const notifyListeners4 = useCallback(() => {
22574
- store2.listeners.forEach((listener) => listener());
22575
- }, [store2]);
22449
+ }, [store]);
22450
+ const notifyListeners3 = useCallback(() => {
22451
+ store.listeners.forEach((listener) => listener());
22452
+ }, [store]);
22576
22453
  const setSearch = useCallback((value) => {
22577
- store2.search = value;
22578
- notifyListeners4();
22579
- }, [store2, notifyListeners4]);
22454
+ store.search = value;
22455
+ notifyListeners3();
22456
+ }, [store, notifyListeners3]);
22580
22457
  const setFilter = useCallback((key, value) => {
22581
- store2.filters = { ...store2.filters, [key]: value };
22582
- notifyListeners4();
22583
- }, [store2, notifyListeners4]);
22458
+ store.filters = { ...store.filters, [key]: value };
22459
+ notifyListeners3();
22460
+ }, [store, notifyListeners3]);
22584
22461
  const clearFilters = useCallback(() => {
22585
- store2.filters = {};
22586
- store2.search = "";
22587
- notifyListeners4();
22588
- }, [store2, notifyListeners4]);
22462
+ store.filters = {};
22463
+ store.search = "";
22464
+ notifyListeners3();
22465
+ }, [store, notifyListeners3]);
22589
22466
  const setSort = useCallback((field, direction) => {
22590
- store2.sortField = field;
22591
- store2.sortDirection = direction;
22592
- notifyListeners4();
22593
- }, [store2, notifyListeners4]);
22467
+ store.sortField = field;
22468
+ store.sortDirection = direction;
22469
+ notifyListeners3();
22470
+ }, [store, notifyListeners3]);
22594
22471
  return {
22595
- search: store2.search,
22472
+ search: store.search,
22596
22473
  setSearch,
22597
- filters: store2.filters,
22474
+ filters: store.filters,
22598
22475
  setFilter,
22599
22476
  clearFilters,
22600
- sortField: store2.sortField,
22601
- sortDirection: store2.sortDirection,
22477
+ sortField: store.sortField,
22478
+ sortDirection: store.sortDirection,
22602
22479
  setSort
22603
22480
  };
22604
22481
  }
@@ -23609,7 +23486,7 @@ var init_WizardProgress = __esm({
23609
23486
  children: /* @__PURE__ */ jsx("div", { className: "flex items-center gap-2", children: steps.map((step, index) => {
23610
23487
  const isActive = index === currentStep;
23611
23488
  const isCompleted = index < currentStep;
23612
- return /* @__PURE__ */ jsxs(React127__default.Fragment, { children: [
23489
+ return /* @__PURE__ */ jsxs(React126__default.Fragment, { children: [
23613
23490
  /* @__PURE__ */ jsx(
23614
23491
  "button",
23615
23492
  {
@@ -24520,7 +24397,7 @@ function InventoryGrid({
24520
24397
  const eventBus = useEventBus();
24521
24398
  const slotCount = totalSlots ?? items.length;
24522
24399
  const emptySlotCount = Math.max(0, slotCount - items.length);
24523
- const handleSelect = React127.useCallback(
24400
+ const handleSelect = React126.useCallback(
24524
24401
  (id) => {
24525
24402
  onSelect?.(id);
24526
24403
  if (selectEvent) {
@@ -24733,15 +24610,15 @@ function GameCanvas2D({
24733
24610
  fps = 60,
24734
24611
  className
24735
24612
  }) {
24736
- const canvasRef = React127.useRef(null);
24737
- const rafRef = React127.useRef(0);
24738
- const frameRef = React127.useRef(0);
24739
- const lastTimeRef = React127.useRef(0);
24740
- const onDrawRef = React127.useRef(onDraw);
24613
+ const canvasRef = React126.useRef(null);
24614
+ const rafRef = React126.useRef(0);
24615
+ const frameRef = React126.useRef(0);
24616
+ const lastTimeRef = React126.useRef(0);
24617
+ const onDrawRef = React126.useRef(onDraw);
24741
24618
  onDrawRef.current = onDraw;
24742
- const onTickRef = React127.useRef(onTick);
24619
+ const onTickRef = React126.useRef(onTick);
24743
24620
  onTickRef.current = onTick;
24744
- React127.useEffect(() => {
24621
+ React126.useEffect(() => {
24745
24622
  const canvas = canvasRef.current;
24746
24623
  if (!canvas) return;
24747
24624
  const ctx = canvas.getContext("2d");
@@ -25030,7 +24907,7 @@ function TurnPanel({
25030
24907
  className
25031
24908
  }) {
25032
24909
  const eventBus = useEventBus();
25033
- const handleAction = React127.useCallback(
24910
+ const handleAction = React126.useCallback(
25034
24911
  (event) => {
25035
24912
  if (event) {
25036
24913
  eventBus.emit(event, { turn: currentTurn, phase, activeTeam });
@@ -25176,7 +25053,7 @@ function UnitCommandBar({
25176
25053
  className
25177
25054
  }) {
25178
25055
  const eventBus = useEventBus();
25179
- const handleCommand = React127.useCallback(
25056
+ const handleCommand = React126.useCallback(
25180
25057
  (event) => {
25181
25058
  if (event) {
25182
25059
  eventBus.emit(event, { unitId: selectedUnitId });
@@ -25661,7 +25538,7 @@ function GameMenu({
25661
25538
  } catch {
25662
25539
  }
25663
25540
  const eventBus = eventBusProp || eventBusFromHook;
25664
- const handleOptionClick = React127.useCallback(
25541
+ const handleOptionClick = React126.useCallback(
25665
25542
  (option) => {
25666
25543
  if (option.event && eventBus) {
25667
25544
  eventBus.emit(`UI:${option.event}`, { option });
@@ -25775,7 +25652,7 @@ function GameOverScreen({
25775
25652
  } catch {
25776
25653
  }
25777
25654
  const eventBus = eventBusProp || eventBusFromHook;
25778
- const handleActionClick = React127.useCallback(
25655
+ const handleActionClick = React126.useCallback(
25779
25656
  (action) => {
25780
25657
  if (action.event && eventBus) {
25781
25658
  eventBus.emit(`UI:${action.event}`, { action });
@@ -28879,7 +28756,7 @@ var init_StepFlow = __esm({
28879
28756
  className
28880
28757
  }) => {
28881
28758
  if (orientation === "vertical") {
28882
- return /* @__PURE__ */ jsx(VStack, { gap: "none", className: cn("w-full", className), children: steps.map((step, index) => /* @__PURE__ */ jsx(React127__default.Fragment, { children: /* @__PURE__ */ jsxs(HStack, { gap: "md", align: "start", className: "w-full", children: [
28759
+ return /* @__PURE__ */ jsx(VStack, { gap: "none", className: cn("w-full", className), children: steps.map((step, index) => /* @__PURE__ */ jsx(React126__default.Fragment, { children: /* @__PURE__ */ jsxs(HStack, { gap: "md", align: "start", className: "w-full", children: [
28883
28760
  /* @__PURE__ */ jsxs(VStack, { gap: "none", align: "center", children: [
28884
28761
  /* @__PURE__ */ jsx(StepCircle, { step, index }),
28885
28762
  showConnectors && index < steps.length - 1 && /* @__PURE__ */ jsx(Box, { className: "w-px h-8 bg-border" })
@@ -28890,7 +28767,7 @@ var init_StepFlow = __esm({
28890
28767
  ] })
28891
28768
  ] }) }, index)) });
28892
28769
  }
28893
- return /* @__PURE__ */ jsx(Box, { className: cn("w-full flex flex-col md:flex-row items-start gap-0", className), children: steps.map((step, index) => /* @__PURE__ */ jsxs(React127__default.Fragment, { children: [
28770
+ return /* @__PURE__ */ jsx(Box, { className: cn("w-full flex flex-col md:flex-row items-start gap-0", className), children: steps.map((step, index) => /* @__PURE__ */ jsxs(React126__default.Fragment, { children: [
28894
28771
  /* @__PURE__ */ jsxs(VStack, { gap: "sm", align: "center", className: "flex-1 w-full md:w-auto", children: [
28895
28772
  /* @__PURE__ */ jsx(StepCircle, { step, index }),
28896
28773
  /* @__PURE__ */ jsx(Typography, { variant: "h4", className: "text-center", children: step.title }),
@@ -31002,7 +30879,7 @@ var init_DocumentViewer = __esm({
31002
30879
  }
31003
30880
  });
31004
30881
  function extractTitle(children) {
31005
- if (!React127__default.isValidElement(children)) return void 0;
30882
+ if (!React126__default.isValidElement(children)) return void 0;
31006
30883
  const props = children.props;
31007
30884
  if (typeof props.title === "string") {
31008
30885
  return props.title;
@@ -31057,7 +30934,7 @@ function LinearView({
31057
30934
  /* @__PURE__ */ jsx(HStack, { className: "flex-wrap items-center", gap: "xs", children: trait.states.map((state, i) => {
31058
30935
  const isDone = i < currentIdx;
31059
30936
  const isCurrent = i === currentIdx;
31060
- return /* @__PURE__ */ jsxs(React127__default.Fragment, { children: [
30937
+ return /* @__PURE__ */ jsxs(React126__default.Fragment, { children: [
31061
30938
  i > 0 && /* @__PURE__ */ jsx(
31062
30939
  Typography,
31063
30940
  {
@@ -31824,7 +31701,7 @@ var init_Form = __esm({
31824
31701
  const normalizedInitialData = initialData ?? {};
31825
31702
  const resolvedEntity = entity && typeof entity === "object" && !Array.isArray(entity) ? entity : void 0;
31826
31703
  const entityName = typeof entity === "string" ? entity : resolvedEntity?.name;
31827
- const entityDerivedFields = React127__default.useMemo(() => {
31704
+ const entityDerivedFields = React126__default.useMemo(() => {
31828
31705
  if (fields && fields.length > 0) return void 0;
31829
31706
  if (!resolvedEntity) return void 0;
31830
31707
  return resolvedEntity.fields.map(
@@ -31843,14 +31720,14 @@ var init_Form = __esm({
31843
31720
  const conditionalFields = typeof conditionalFieldsRaw === "boolean" ? {} : conditionalFieldsRaw;
31844
31721
  const hiddenCalculations = typeof hiddenCalculationsRaw === "boolean" ? [] : hiddenCalculationsRaw;
31845
31722
  const violationTriggers = typeof violationTriggersRaw === "boolean" ? [] : violationTriggersRaw;
31846
- const [formData, setFormData] = React127__default.useState(
31723
+ const [formData, setFormData] = React126__default.useState(
31847
31724
  normalizedInitialData
31848
31725
  );
31849
- const [collapsedSections, setCollapsedSections] = React127__default.useState(
31726
+ const [collapsedSections, setCollapsedSections] = React126__default.useState(
31850
31727
  /* @__PURE__ */ new Set()
31851
31728
  );
31852
31729
  const shouldShowCancel = showCancel ?? (fields && fields.length > 0);
31853
- const evalContext = React127__default.useMemo(
31730
+ const evalContext = React126__default.useMemo(
31854
31731
  () => ({
31855
31732
  formValues: formData,
31856
31733
  globalVariables: externalContext?.globalVariables ?? {},
@@ -31859,13 +31736,13 @@ var init_Form = __esm({
31859
31736
  }),
31860
31737
  [formData, externalContext]
31861
31738
  );
31862
- React127__default.useEffect(() => {
31739
+ React126__default.useEffect(() => {
31863
31740
  const data = initialData;
31864
31741
  if (data && Object.keys(data).length > 0) {
31865
31742
  setFormData(data);
31866
31743
  }
31867
31744
  }, [initialData]);
31868
- const processCalculations = React127__default.useCallback(
31745
+ const processCalculations = React126__default.useCallback(
31869
31746
  (changedFieldId, newFormData) => {
31870
31747
  if (!hiddenCalculations.length) return;
31871
31748
  const context = {
@@ -31890,7 +31767,7 @@ var init_Form = __esm({
31890
31767
  },
31891
31768
  [hiddenCalculations, externalContext, eventBus]
31892
31769
  );
31893
- const checkViolations = React127__default.useCallback(
31770
+ const checkViolations = React126__default.useCallback(
31894
31771
  (changedFieldId, newFormData) => {
31895
31772
  if (!violationTriggers.length) return;
31896
31773
  const context = {
@@ -31927,7 +31804,7 @@ var init_Form = __esm({
31927
31804
  processCalculations(name, newFormData);
31928
31805
  checkViolations(name, newFormData);
31929
31806
  };
31930
- const isFieldVisible = React127__default.useCallback(
31807
+ const isFieldVisible = React126__default.useCallback(
31931
31808
  (fieldName) => {
31932
31809
  const condition = conditionalFields[fieldName];
31933
31810
  if (!condition) return true;
@@ -31935,7 +31812,7 @@ var init_Form = __esm({
31935
31812
  },
31936
31813
  [conditionalFields, evalContext]
31937
31814
  );
31938
- const isSectionVisible = React127__default.useCallback(
31815
+ const isSectionVisible = React126__default.useCallback(
31939
31816
  (section) => {
31940
31817
  if (!section.condition) return true;
31941
31818
  return Boolean(evaluateFormExpression(section.condition, evalContext));
@@ -31967,7 +31844,7 @@ var init_Form = __esm({
31967
31844
  eventBus.emit(`UI:${onCancel}`);
31968
31845
  }
31969
31846
  };
31970
- const renderField = React127__default.useCallback(
31847
+ const renderField = React126__default.useCallback(
31971
31848
  (field) => {
31972
31849
  const fieldName = field.name || field.field;
31973
31850
  if (!fieldName) return null;
@@ -31988,7 +31865,7 @@ var init_Form = __esm({
31988
31865
  [formData, isFieldVisible, relationsData, relationsLoading, isLoading]
31989
31866
  );
31990
31867
  const effectiveFields = entityDerivedFields ?? fields;
31991
- const normalizedFields = React127__default.useMemo(() => {
31868
+ const normalizedFields = React126__default.useMemo(() => {
31992
31869
  if (!effectiveFields || effectiveFields.length === 0) return [];
31993
31870
  return effectiveFields.map((field) => {
31994
31871
  if (typeof field === "string") {
@@ -32010,7 +31887,7 @@ var init_Form = __esm({
32010
31887
  return field;
32011
31888
  });
32012
31889
  }, [effectiveFields, resolvedEntity]);
32013
- const schemaFields = React127__default.useMemo(() => {
31890
+ const schemaFields = React126__default.useMemo(() => {
32014
31891
  if (normalizedFields.length === 0) return null;
32015
31892
  if (isDebugEnabled()) {
32016
31893
  debugGroup(`Form: ${entityName || "unknown"}`);
@@ -32020,7 +31897,7 @@ var init_Form = __esm({
32020
31897
  }
32021
31898
  return normalizedFields.map(renderField).filter(Boolean);
32022
31899
  }, [normalizedFields, renderField, entityName, conditionalFields]);
32023
- const sectionElements = React127__default.useMemo(() => {
31900
+ const sectionElements = React126__default.useMemo(() => {
32024
31901
  if (!sections || sections.length === 0) return null;
32025
31902
  return sections.map((section) => {
32026
31903
  if (!isSectionVisible(section)) {
@@ -33517,7 +33394,7 @@ var init_List = __esm({
33517
33394
  if (entity && typeof entity === "object" && "id" in entity) return [entity];
33518
33395
  return [];
33519
33396
  }, [entity]);
33520
- const getItemActions = React127__default.useCallback(
33397
+ const getItemActions = React126__default.useCallback(
33521
33398
  (item) => {
33522
33399
  if (!itemActions) return [];
33523
33400
  if (typeof itemActions === "function") {
@@ -33964,7 +33841,7 @@ var init_MediaGallery = __esm({
33964
33841
  [selectable, selectedItems, selectionEvent, eventBus]
33965
33842
  );
33966
33843
  const entityData = Array.isArray(entity) ? entity : [];
33967
- const items = React127__default.useMemo(() => {
33844
+ const items = React126__default.useMemo(() => {
33968
33845
  if (propItems) return propItems;
33969
33846
  if (entityData.length === 0) return [];
33970
33847
  return entityData.map((record, idx) => ({
@@ -34128,7 +34005,7 @@ var init_MediaGallery = __esm({
34128
34005
  }
34129
34006
  });
34130
34007
  function extractTitle2(children) {
34131
- if (!React127__default.isValidElement(children)) return void 0;
34008
+ if (!React126__default.isValidElement(children)) return void 0;
34132
34009
  const props = children.props;
34133
34010
  if (typeof props.title === "string") {
34134
34011
  return props.title;
@@ -34841,7 +34718,7 @@ var init_PageHeader = __esm({
34841
34718
  info: "bg-info/10 text-info"
34842
34719
  };
34843
34720
  return /* @__PURE__ */ jsxs(Box, { className: cn("mb-6", className), children: [
34844
- breadcrumbs && breadcrumbs.length > 0 && /* @__PURE__ */ jsx(Box, { as: "nav", className: "mb-4", children: /* @__PURE__ */ jsx(Box, { as: "ol", className: "flex items-center gap-2 text-sm", children: breadcrumbs.map((crumb, idx) => /* @__PURE__ */ jsxs(React127__default.Fragment, { children: [
34721
+ breadcrumbs && breadcrumbs.length > 0 && /* @__PURE__ */ jsx(Box, { as: "nav", className: "mb-4", children: /* @__PURE__ */ jsx(Box, { as: "ol", className: "flex items-center gap-2 text-sm", children: breadcrumbs.map((crumb, idx) => /* @__PURE__ */ jsxs(React126__default.Fragment, { children: [
34845
34722
  idx > 0 && /* @__PURE__ */ jsx(Typography, { variant: "small", color: "muted", children: "/" }),
34846
34723
  crumb.href ? /* @__PURE__ */ jsx(
34847
34724
  "a",
@@ -34930,24 +34807,24 @@ var init_PageHeader = __esm({
34930
34807
  });
34931
34808
 
34932
34809
  // lib/traitRegistry.ts
34933
- function notifyListeners3() {
34810
+ function notifyListeners2() {
34934
34811
  listeners.forEach((listener) => listener());
34935
34812
  }
34936
34813
  function registerTrait(info) {
34937
34814
  traits.set(info.id, info);
34938
- notifyListeners3();
34815
+ notifyListeners2();
34939
34816
  }
34940
34817
  function updateTraitState(id, newState) {
34941
34818
  const trait = traits.get(id);
34942
34819
  if (trait) {
34943
34820
  trait.currentState = newState;
34944
34821
  trait.transitionCount++;
34945
- notifyListeners3();
34822
+ notifyListeners2();
34946
34823
  }
34947
34824
  }
34948
34825
  function unregisterTrait(id) {
34949
34826
  traits.delete(id);
34950
- notifyListeners3();
34827
+ notifyListeners2();
34951
34828
  }
34952
34829
  function getAllTraits() {
34953
34830
  return Array.from(traits.values());
@@ -35034,7 +34911,7 @@ var init_debugRegistry = __esm({
35034
34911
  }
35035
34912
  });
35036
34913
  function useDebugData() {
35037
- const [data, setData] = React127.useState(() => ({
34914
+ const [data, setData] = React126.useState(() => ({
35038
34915
  traits: [],
35039
34916
  ticks: [],
35040
34917
  guards: [],
@@ -35048,7 +34925,7 @@ function useDebugData() {
35048
34925
  },
35049
34926
  lastUpdate: Date.now()
35050
34927
  }));
35051
- React127.useEffect(() => {
34928
+ React126.useEffect(() => {
35052
34929
  const updateData = () => {
35053
34930
  setData({
35054
34931
  traits: getAllTraits(),
@@ -35157,12 +35034,12 @@ function layoutGraph(states, transitions, initialState, width, height) {
35157
35034
  return positions;
35158
35035
  }
35159
35036
  function WalkMinimap() {
35160
- const [walkStep, setWalkStep] = React127.useState(null);
35161
- const [traits2, setTraits] = React127.useState([]);
35162
- const [coveredEdges, setCoveredEdges] = React127.useState([]);
35163
- const [completedTraits, setCompletedTraits] = React127.useState(/* @__PURE__ */ new Set());
35164
- const prevTraitRef = React127.useRef(null);
35165
- React127.useEffect(() => {
35037
+ const [walkStep, setWalkStep] = React126.useState(null);
35038
+ const [traits2, setTraits] = React126.useState([]);
35039
+ const [coveredEdges, setCoveredEdges] = React126.useState([]);
35040
+ const [completedTraits, setCompletedTraits] = React126.useState(/* @__PURE__ */ new Set());
35041
+ const prevTraitRef = React126.useRef(null);
35042
+ React126.useEffect(() => {
35166
35043
  const interval = setInterval(() => {
35167
35044
  const w = window;
35168
35045
  const step = w.__orbitalWalkStep;
@@ -35609,15 +35486,15 @@ var init_EntitiesTab = __esm({
35609
35486
  }
35610
35487
  });
35611
35488
  function EventFlowTab({ events: events2 }) {
35612
- const [filter, setFilter] = React127.useState("all");
35613
- const containerRef = React127.useRef(null);
35614
- const [autoScroll, setAutoScroll] = React127.useState(true);
35615
- React127.useEffect(() => {
35489
+ const [filter, setFilter] = React126.useState("all");
35490
+ const containerRef = React126.useRef(null);
35491
+ const [autoScroll, setAutoScroll] = React126.useState(true);
35492
+ React126.useEffect(() => {
35616
35493
  if (autoScroll && containerRef.current) {
35617
35494
  containerRef.current.scrollTop = containerRef.current.scrollHeight;
35618
35495
  }
35619
35496
  }, [events2.length, autoScroll]);
35620
- const filteredEvents = React127.useMemo(() => {
35497
+ const filteredEvents = React126.useMemo(() => {
35621
35498
  if (filter === "all") return events2;
35622
35499
  return events2.filter((e) => e.type === filter);
35623
35500
  }, [events2, filter]);
@@ -35736,7 +35613,7 @@ var init_EventFlowTab = __esm({
35736
35613
  }
35737
35614
  });
35738
35615
  function GuardsPanel({ guards }) {
35739
- const [filter, setFilter] = React127.useState("all");
35616
+ const [filter, setFilter] = React126.useState("all");
35740
35617
  if (guards.length === 0) {
35741
35618
  return /* @__PURE__ */ jsx(
35742
35619
  EmptyState,
@@ -35749,7 +35626,7 @@ function GuardsPanel({ guards }) {
35749
35626
  }
35750
35627
  const passedCount = guards.filter((g) => g.result).length;
35751
35628
  const failedCount = guards.length - passedCount;
35752
- const filteredGuards = React127.useMemo(() => {
35629
+ const filteredGuards = React126.useMemo(() => {
35753
35630
  if (filter === "all") return guards;
35754
35631
  if (filter === "passed") return guards.filter((g) => g.result);
35755
35632
  return guards.filter((g) => !g.result);
@@ -35910,10 +35787,10 @@ function EffectBadge({ effect }) {
35910
35787
  ] });
35911
35788
  }
35912
35789
  function TransitionTimeline({ transitions }) {
35913
- const containerRef = React127.useRef(null);
35914
- const [autoScroll, setAutoScroll] = React127.useState(true);
35915
- const [expandedId, setExpandedId] = React127.useState(null);
35916
- React127.useEffect(() => {
35790
+ const containerRef = React126.useRef(null);
35791
+ const [autoScroll, setAutoScroll] = React126.useState(true);
35792
+ const [expandedId, setExpandedId] = React126.useState(null);
35793
+ React126.useEffect(() => {
35917
35794
  if (autoScroll && containerRef.current) {
35918
35795
  containerRef.current.scrollTop = containerRef.current.scrollHeight;
35919
35796
  }
@@ -36199,9 +36076,9 @@ function getAllEvents(traits2) {
36199
36076
  }
36200
36077
  function EventDispatcherTab({ traits: traits2, schema }) {
36201
36078
  const eventBus = useEventBus();
36202
- const [log4, setLog] = React127.useState([]);
36203
- const prevStatesRef = React127.useRef(/* @__PURE__ */ new Map());
36204
- React127.useEffect(() => {
36079
+ const [log4, setLog] = React126.useState([]);
36080
+ const prevStatesRef = React126.useRef(/* @__PURE__ */ new Map());
36081
+ React126.useEffect(() => {
36205
36082
  for (const trait of traits2) {
36206
36083
  const prev = prevStatesRef.current.get(trait.id);
36207
36084
  if (prev && prev !== trait.currentState) {
@@ -36371,10 +36248,10 @@ function VerifyModePanel({
36371
36248
  serverCount,
36372
36249
  localCount
36373
36250
  }) {
36374
- const [expanded, setExpanded] = React127.useState(true);
36375
- const scrollRef = React127.useRef(null);
36376
- const prevCountRef = React127.useRef(0);
36377
- React127.useEffect(() => {
36251
+ const [expanded, setExpanded] = React126.useState(true);
36252
+ const scrollRef = React126.useRef(null);
36253
+ const prevCountRef = React126.useRef(0);
36254
+ React126.useEffect(() => {
36378
36255
  if (expanded && transitions.length > prevCountRef.current && scrollRef.current) {
36379
36256
  scrollRef.current.scrollTop = scrollRef.current.scrollHeight;
36380
36257
  }
@@ -36440,10 +36317,10 @@ function RuntimeDebugger({
36440
36317
  defaultTab,
36441
36318
  schema
36442
36319
  }) {
36443
- const [isCollapsed, setIsCollapsed] = React127.useState(mode === "verify" ? true : defaultCollapsed);
36444
- const [isVisible, setIsVisible] = React127.useState(mode === "inline" || mode === "verify" || isDebugEnabled2());
36320
+ const [isCollapsed, setIsCollapsed] = React126.useState(mode === "verify" ? true : defaultCollapsed);
36321
+ const [isVisible, setIsVisible] = React126.useState(mode === "inline" || mode === "verify" || isDebugEnabled2());
36445
36322
  const debugData = useDebugData();
36446
- React127.useEffect(() => {
36323
+ React126.useEffect(() => {
36447
36324
  if (mode === "inline") return;
36448
36325
  return onDebugToggle((enabled) => {
36449
36326
  setIsVisible(enabled);
@@ -36452,7 +36329,7 @@ function RuntimeDebugger({
36452
36329
  }
36453
36330
  });
36454
36331
  }, [mode]);
36455
- React127.useEffect(() => {
36332
+ React126.useEffect(() => {
36456
36333
  if (mode === "inline") return;
36457
36334
  const handleKeyDown = (e) => {
36458
36335
  if (e.key === "`" && isVisible) {
@@ -37001,7 +36878,7 @@ function SequenceBar({
37001
36878
  onSlotRemove(index);
37002
36879
  }, [onSlotRemove, playing]);
37003
36880
  const paddedSlots = Array.from({ length: maxSlots }, (_, i) => slots[i]);
37004
- return /* @__PURE__ */ jsx(HStack, { className: cn("items-center", className), gap: "sm", children: paddedSlots.map((slot, i) => /* @__PURE__ */ jsxs(React127__default.Fragment, { children: [
36881
+ return /* @__PURE__ */ jsx(HStack, { className: cn("items-center", className), gap: "sm", children: paddedSlots.map((slot, i) => /* @__PURE__ */ jsxs(React126__default.Fragment, { children: [
37005
36882
  i > 0 && /* @__PURE__ */ jsx(
37006
36883
  Typography,
37007
36884
  {
@@ -38346,7 +38223,7 @@ var init_StatCard2 = __esm({
38346
38223
  const labelToUse = propLabel ?? propTitle;
38347
38224
  const eventBus = useEventBus();
38348
38225
  const { t } = useTranslate();
38349
- const handleActionClick = React127__default.useCallback(() => {
38226
+ const handleActionClick = React126__default.useCallback(() => {
38350
38227
  if (action?.event) {
38351
38228
  eventBus.emit(`UI:${action.event}`, {});
38352
38229
  }
@@ -38357,7 +38234,7 @@ var init_StatCard2 = __esm({
38357
38234
  const data = Array.isArray(entity) ? entity : entity ? [entity] : [];
38358
38235
  const isLoading = externalLoading ?? false;
38359
38236
  const error = externalError;
38360
- const computeMetricValue = React127__default.useCallback(
38237
+ const computeMetricValue = React126__default.useCallback(
38361
38238
  (metric, items) => {
38362
38239
  if (metric.value !== void 0) {
38363
38240
  return metric.value;
@@ -38396,7 +38273,7 @@ var init_StatCard2 = __esm({
38396
38273
  },
38397
38274
  []
38398
38275
  );
38399
- const schemaStats = React127__default.useMemo(() => {
38276
+ const schemaStats = React126__default.useMemo(() => {
38400
38277
  if (!metrics || metrics.length === 0) return null;
38401
38278
  return metrics.map((metric) => ({
38402
38279
  label: metric.label,
@@ -38404,7 +38281,7 @@ var init_StatCard2 = __esm({
38404
38281
  format: metric.format
38405
38282
  }));
38406
38283
  }, [metrics, data, computeMetricValue]);
38407
- const calculatedTrend = React127__default.useMemo(() => {
38284
+ const calculatedTrend = React126__default.useMemo(() => {
38408
38285
  if (manualTrend !== void 0) return manualTrend;
38409
38286
  if (previousValue === void 0 || currentValue === void 0)
38410
38287
  return void 0;
@@ -39388,7 +39265,7 @@ var init_Timeline = __esm({
39388
39265
  }) => {
39389
39266
  const { t } = useTranslate();
39390
39267
  const entityData = Array.isArray(entity) ? entity : [];
39391
- const items = React127__default.useMemo(() => {
39268
+ const items = React126__default.useMemo(() => {
39392
39269
  if (propItems) return propItems;
39393
39270
  if (entityData.length === 0) return [];
39394
39271
  return entityData.map((record, idx) => {
@@ -39492,7 +39369,7 @@ var init_Timeline = __esm({
39492
39369
  }
39493
39370
  });
39494
39371
  function extractToastProps(children) {
39495
- if (!React127__default.isValidElement(children)) {
39372
+ if (!React126__default.isValidElement(children)) {
39496
39373
  if (typeof children === "string") {
39497
39374
  return { message: children };
39498
39375
  }
@@ -39530,7 +39407,7 @@ var init_ToastSlot = __esm({
39530
39407
  eventBus.emit("UI:CLOSE");
39531
39408
  };
39532
39409
  if (!isVisible) return null;
39533
- const isCustomContent = React127__default.isValidElement(children) && !message;
39410
+ const isCustomContent = React126__default.isValidElement(children) && !message;
39534
39411
  return /* @__PURE__ */ jsx(Box, { className: "fixed bottom-4 right-4 z-50", children: isCustomContent ? children : /* @__PURE__ */ jsx(
39535
39412
  Toast,
39536
39413
  {
@@ -39799,7 +39676,7 @@ var init_WizardContainer = __esm({
39799
39676
  const isCompleted = index < currentStep;
39800
39677
  const stepKey = step.id ?? step.tabId ?? `step-${index}`;
39801
39678
  const stepTitle = step.title ?? step.name ?? `Step ${index + 1}`;
39802
- return /* @__PURE__ */ jsxs(React127__default.Fragment, { children: [
39679
+ return /* @__PURE__ */ jsxs(React126__default.Fragment, { children: [
39803
39680
  /* @__PURE__ */ jsx(
39804
39681
  Button,
39805
39682
  {
@@ -41988,7 +41865,7 @@ function UnitRenderer({
41988
41865
  onAnimationStateChange,
41989
41866
  animationSpeed = 1
41990
41867
  }) {
41991
- const handleUnitClick = React127__default.useCallback(
41868
+ const handleUnitClick = React126__default.useCallback(
41992
41869
  (unit) => {
41993
41870
  onUnitClick?.(unit);
41994
41871
  },
@@ -45182,7 +45059,7 @@ var init_Avl3DViewer = __esm({
45182
45059
  const handleTraitClick = useCallback((name) => {
45183
45060
  dispatch({ type: "ZOOM_INTO_TRAIT", trait: name, targetPosition: { x: 0, y: 0 } });
45184
45061
  }, []);
45185
- const [highlightedTrait, setHighlightedTrait] = React127__default.useState(null);
45062
+ const [highlightedTrait, setHighlightedTrait] = React126__default.useState(null);
45186
45063
  const handleTransitionClick = useCallback((index) => {
45187
45064
  dispatch({ type: "ZOOM_INTO_TRANSITION", transitionIndex: index, targetPosition: { x: 0, y: 0 } });
45188
45065
  }, []);
@@ -45269,7 +45146,7 @@ var init_Avl3DViewer = __esm({
45269
45146
  gap: "xs",
45270
45147
  align: "center",
45271
45148
  className: "absolute top-2 left-2 z-10 bg-surface/80 backdrop-blur rounded-md px-3 py-1.5",
45272
- children: breadcrumbs.map((crumb, i) => /* @__PURE__ */ jsxs(React127__default.Fragment, { children: [
45149
+ children: breadcrumbs.map((crumb, i) => /* @__PURE__ */ jsxs(React126__default.Fragment, { children: [
45273
45150
  i > 0 && /* @__PURE__ */ jsx(Typography, { variant: "small", color: "muted", className: "mx-1", children: "/" }),
45274
45151
  i < breadcrumbs.length - 1 ? /* @__PURE__ */ jsx(
45275
45152
  Box,
@@ -45647,12 +45524,12 @@ var init_three = __esm({
45647
45524
  }
45648
45525
  });
45649
45526
  function lazyThree(name, loader) {
45650
- const Lazy = React127__default.lazy(() => loader().then((m) => ({ default: m[name] })));
45527
+ const Lazy = React126__default.lazy(() => loader().then((m) => ({ default: m[name] })));
45651
45528
  function ThreeWrapper(props) {
45652
- return React127__default.createElement(
45653
- React127__default.Suspense,
45529
+ return React126__default.createElement(
45530
+ React126__default.Suspense,
45654
45531
  { fallback: null },
45655
- React127__default.createElement(Lazy, props)
45532
+ React126__default.createElement(Lazy, props)
45656
45533
  );
45657
45534
  }
45658
45535
  ThreeWrapper.displayName = `Lazy(${name})`;
@@ -46140,7 +46017,7 @@ function SuspenseConfigProvider({
46140
46017
  config,
46141
46018
  children
46142
46019
  }) {
46143
- return React127__default.createElement(
46020
+ return React126__default.createElement(
46144
46021
  SuspenseConfigContext.Provider,
46145
46022
  { value: config },
46146
46023
  children
@@ -46570,7 +46447,7 @@ function renderPatternChildren(children, onDismiss, parentId = "root", parentPat
46570
46447
  const key = `${parentId}-${index}-trait:${traitName}`;
46571
46448
  return /* @__PURE__ */ jsx(TraitFrame, { traitName }, key);
46572
46449
  }
46573
- return /* @__PURE__ */ jsx(React127__default.Fragment, { children: child }, `${parentId}-${index}`);
46450
+ return /* @__PURE__ */ jsx(React126__default.Fragment, { children: child }, `${parentId}-${index}`);
46574
46451
  }
46575
46452
  if (!child || typeof child !== "object") return null;
46576
46453
  const childId = `${parentId}-${index}`;
@@ -46623,19 +46500,15 @@ function SlotContentRenderer({
46623
46500
  patternPath
46624
46501
  }) {
46625
46502
  const entityProp = content.props.entity;
46626
- const entityType = typeof entityProp === "string" ? entityProp : "";
46627
- const storeData = useEntityRef(entityType);
46628
- React127__default.useEffect(() => {
46629
- if (!entityType) return;
46630
- if (typeof process !== "undefined" && process.env && process.env.NODE_ENV === "production") return;
46631
- if (STRING_ENTITY_WARNED.has(entityType)) return;
46632
- STRING_ENTITY_WARNED.add(entityType);
46633
- console.warn(
46634
- `[UISlotRenderer] String-entity binding '${entityType}' is deprecated. Pass 'items' or 'entity' as a value prop resolved from @payload.data. See docs/Almadar_Entity_V2_Plan.md \xA75.`
46635
- );
46636
- }, [entityType]);
46503
+ if (typeof entityProp === "string" && entityProp.length > 0) {
46504
+ if (typeof process !== "undefined" && process.env && process.env.NODE_ENV !== "production") {
46505
+ throw new Error(
46506
+ `[UISlotRenderer] Received string 'entity: "${entityProp}"' at render time. The V2 flow requires pre-resolved data; declare a fetch success listener and pass 'entity: @payload.data'. See docs/Almadar_Entity_V2_Plan.md \xA76.`
46507
+ );
46508
+ }
46509
+ }
46637
46510
  const schemaCtx = useEntitySchemaOptional();
46638
- const entityDef = entityType && schemaCtx ? schemaCtx.entities.get(entityType) : void 0;
46511
+ const entityDef = typeof entityProp === "string" && entityProp.length > 0 && schemaCtx ? schemaCtx.entities.get(entityProp) : void 0;
46639
46512
  const PatternComponent = getComponentForPattern(content.pattern);
46640
46513
  if (PatternComponent) {
46641
46514
  const childrenConfig = content.props.children;
@@ -46644,12 +46517,7 @@ function SlotContentRenderer({
46644
46517
  const renderedChildren = hasChildren ? renderPatternChildren(childrenConfig, onDismiss, content.id, myPath) : void 0;
46645
46518
  const { children: _childrenConfig, ...restProps } = content.props;
46646
46519
  const renderedProps = renderPatternProps(restProps, onDismiss);
46647
- let finalProps;
46648
- if (entityType) {
46649
- finalProps = { ...renderedProps, entity: storeData };
46650
- } else {
46651
- finalProps = renderedProps;
46652
- }
46520
+ const finalProps = renderedProps;
46653
46521
  const resolvedItems = Array.isArray(
46654
46522
  finalProps.entity
46655
46523
  ) ? finalProps.entity : null;
@@ -46663,9 +46531,6 @@ function SlotContentRenderer({
46663
46531
  const isFormPattern = FORM_PATTERNS.has(content.pattern) || content.pattern.includes("form");
46664
46532
  if (isFormPattern && entityDef && Array.isArray(finalProps.fields)) {
46665
46533
  finalProps.fields = enrichFormFields(finalProps.fields, entityDef);
46666
- if (finalProps.mode === "edit" && !finalProps.initialData && storeData.length > 0) {
46667
- finalProps.initialData = storeData[0];
46668
- }
46669
46534
  }
46670
46535
  const acceptsChildren = PATTERNS_WITH_CHILDREN.has(content.pattern);
46671
46536
  return /* @__PURE__ */ jsx(
@@ -46759,11 +46624,10 @@ function UISlotRenderer({
46759
46624
  }
46760
46625
  return wrapped;
46761
46626
  }
46762
- var TRAIT_BINDING_RE, STRING_ENTITY_WARNED, SuspenseConfigContext, SlotContainedContext, SLOT_SKELETON_MAP, FORM_PATTERNS, PATTERNS_WITH_CHILDREN;
46627
+ var TRAIT_BINDING_RE, SuspenseConfigContext, SlotContainedContext, SLOT_SKELETON_MAP, FORM_PATTERNS, PATTERNS_WITH_CHILDREN;
46763
46628
  var init_UISlotRenderer = __esm({
46764
46629
  "components/organisms/UISlotRenderer.tsx"() {
46765
46630
  "use client";
46766
- init_EntityStoreProvider();
46767
46631
  init_EntitySchemaContext();
46768
46632
  init_UISlotContext();
46769
46633
  init_Modal();
@@ -46778,7 +46642,6 @@ var init_UISlotRenderer = __esm({
46778
46642
  init_TraitFrame();
46779
46643
  init_component_registry_generated();
46780
46644
  TRAIT_BINDING_RE = /^@trait\.([A-Z][A-Za-z0-9]*)$/;
46781
- STRING_ENTITY_WARNED = /* @__PURE__ */ new Set();
46782
46645
  SuspenseConfigContext = createContext({ enabled: false });
46783
46646
  SlotContainedContext = createContext(false);
46784
46647
  SuspenseConfigProvider.displayName = "SuspenseConfigProvider";
@@ -47198,7 +47061,7 @@ var AvlTransition = ({
47198
47061
  opacity = 1,
47199
47062
  className
47200
47063
  }) => {
47201
- const ids = React127__default.useMemo(() => {
47064
+ const ids = React126__default.useMemo(() => {
47202
47065
  avlTransitionId += 1;
47203
47066
  return { arrow: `avl-tr-${avlTransitionId}-arrow` };
47204
47067
  }, []);
@@ -47963,7 +47826,7 @@ var AvlStateMachine = ({
47963
47826
  color = "var(--color-primary)",
47964
47827
  animated = false
47965
47828
  }) => {
47966
- const ids = React127__default.useMemo(() => {
47829
+ const ids = React126__default.useMemo(() => {
47967
47830
  avlSmId += 1;
47968
47831
  const base = `avl-sm-${avlSmId}`;
47969
47832
  return { glow: `${base}-glow`, grad: `${base}-grad` };
@@ -48158,7 +48021,7 @@ var AvlOrbitalUnit = ({
48158
48021
  color = "var(--color-primary)",
48159
48022
  animated = false
48160
48023
  }) => {
48161
- const ids = React127__default.useMemo(() => {
48024
+ const ids = React126__default.useMemo(() => {
48162
48025
  avlOuId += 1;
48163
48026
  const base = `avl-ou-${avlOuId}`;
48164
48027
  return { glow: `${base}-glow`, grad: `${base}-grad` };
@@ -48250,7 +48113,7 @@ var AvlClosedCircuit = ({
48250
48113
  color = "var(--color-primary)",
48251
48114
  animated = false
48252
48115
  }) => {
48253
- const ids = React127__default.useMemo(() => {
48116
+ const ids = React126__default.useMemo(() => {
48254
48117
  avlCcId += 1;
48255
48118
  const base = `avl-cc-${avlCcId}`;
48256
48119
  return { glow: `${base}-glow`, grad: `${base}-grad`, arrow: `${base}-arrow` };
@@ -48403,7 +48266,7 @@ var AvlEmitListen = ({
48403
48266
  color = "var(--color-primary)",
48404
48267
  animated = false
48405
48268
  }) => {
48406
- const ids = React127__default.useMemo(() => {
48269
+ const ids = React126__default.useMemo(() => {
48407
48270
  avlElId += 1;
48408
48271
  const base = `avl-el-${avlElId}`;
48409
48272
  return { arrow: `${base}-arrow`, grad: `${base}-grad` };
@@ -48676,7 +48539,7 @@ function renderNode(node, color, glowId) {
48676
48539
  const baseR = node.type === "operator" ? 20 : 16;
48677
48540
  const r2 = Math.max(baseR, labelLen * 3.5 + 6);
48678
48541
  const nc = nodeColor(node.type, color);
48679
- return /* @__PURE__ */ jsxs(React127__default.Fragment, { children: [
48542
+ return /* @__PURE__ */ jsxs(React126__default.Fragment, { children: [
48680
48543
  node.children.map((child, i) => {
48681
48544
  const childR = Math.max(
48682
48545
  child.type === "operator" ? 20 : 16,
@@ -48733,7 +48596,7 @@ var AvlExprTree = ({
48733
48596
  className,
48734
48597
  color = "var(--color-primary)"
48735
48598
  }) => {
48736
- const ids = React127__default.useMemo(() => {
48599
+ const ids = React126__default.useMemo(() => {
48737
48600
  avlEtId += 1;
48738
48601
  return { glow: `avl-et-${avlEtId}-glow` };
48739
48602
  }, []);
@@ -49707,7 +49570,7 @@ var SystemNode = ({ data }) => {
49707
49570
  stateChain.length > 0 && /* @__PURE__ */ jsx("svg", { width: stateChain.length * 14 + 2, height: 10, viewBox: `0 0 ${stateChain.length * 14 + 2} 10`, children: stateChain.map((s, i) => {
49708
49571
  const tc = transitionCounts[s.name] ?? 0;
49709
49572
  const role = getStateRole(s.name, s.isInitial, s.isTerminal, tc, maxTC);
49710
- return /* @__PURE__ */ jsxs(React127__default.Fragment, { children: [
49573
+ return /* @__PURE__ */ jsxs(React126__default.Fragment, { children: [
49711
49574
  /* @__PURE__ */ jsx(AvlState, { x: i * 14 + 1, y: 1, width: 10, height: 8, name: "", role, isInitial: s.isInitial, isTerminal: s.isTerminal }),
49712
49575
  i < stateChain.length - 1 && /* @__PURE__ */ jsx("line", { x1: i * 14 + 12, y1: 5, x2: i * 14 + 15, y2: 5, stroke: "var(--color-border)", strokeWidth: 0.5 })
49713
49576
  ] }, s.name);
@@ -49747,7 +49610,7 @@ var MiniStateMachine = ({ data, className }) => {
49747
49610
  const x = 2 + i * (NODE_W + GAP + ARROW_W + GAP);
49748
49611
  const tc = transitionCounts[s.name] ?? 0;
49749
49612
  const role = getStateRole(s.name, s.isInitial, s.isTerminal, tc, maxTC);
49750
- return /* @__PURE__ */ jsxs(React127__default.Fragment, { children: [
49613
+ return /* @__PURE__ */ jsxs(React126__default.Fragment, { children: [
49751
49614
  /* @__PURE__ */ jsx(
49752
49615
  AvlState,
49753
49616
  {
@@ -50714,7 +50577,6 @@ init_Typography();
50714
50577
 
50715
50578
  // providers/OrbitalProvider.tsx
50716
50579
  init_ThemeContext();
50717
- init_EntityStoreProvider();
50718
50580
  init_EventBusProvider();
50719
50581
 
50720
50582
  // providers/SelectionProvider.tsx
@@ -50787,13 +50649,13 @@ function SelectionProvider({
50787
50649
  unsubCancel();
50788
50650
  };
50789
50651
  }, [eventBus, setSelected, clearSelection, debug2]);
50790
- const contextValue2 = {
50652
+ const contextValue = {
50791
50653
  selected,
50792
50654
  setSelected,
50793
50655
  clearSelection,
50794
50656
  isSelected
50795
50657
  };
50796
- return /* @__PURE__ */ jsx(SelectionContext.Provider, { value: contextValue2, children });
50658
+ return /* @__PURE__ */ jsx(SelectionContext.Provider, { value: contextValue, children });
50797
50659
  }
50798
50660
 
50799
50661
  // providers/OrbitalProvider.tsx
@@ -51000,7 +50862,7 @@ function OrbitalProvider({
51000
50862
  () => ({ enabled: suspense }),
51001
50863
  [suspense]
51002
50864
  );
51003
- const inner = /* @__PURE__ */ jsx(EntityStoreProvider, { children: /* @__PURE__ */ jsx(EventBusProvider, { debug: debug2, children: /* @__PURE__ */ jsx(VerificationProvider, { enabled: verification, children: /* @__PURE__ */ jsx(SelectionProvider, { debug: debug2, children: /* @__PURE__ */ jsx(SuspenseConfigProvider, { config: suspenseConfig, children }) }) }) }) });
50865
+ const inner = /* @__PURE__ */ jsx(EventBusProvider, { debug: debug2, children: /* @__PURE__ */ jsx(VerificationProvider, { enabled: verification, children: /* @__PURE__ */ jsx(SelectionProvider, { debug: debug2, children: /* @__PURE__ */ jsx(SuspenseConfigProvider, { config: suspenseConfig, children }) }) }) });
51004
50866
  if (skipTheme) {
51005
50867
  return inner;
51006
50868
  }
@@ -51243,6 +51105,9 @@ function useTraitStateMachine(traitBindings, slotsActions, options) {
51243
51105
  const currentState = traitStatesRef.current.get(binding.trait.name)?.currentState ?? "";
51244
51106
  if (tick.appliesTo.length > 0 && !tick.appliesTo.includes(currentState)) return;
51245
51107
  const bindingCtx = { entity: {}, payload: {}, state: currentState };
51108
+ if (binding.config) {
51109
+ bindingCtx.config = binding.config;
51110
+ }
51246
51111
  const evalCtx = createContextFromBindings(bindingCtx);
51247
51112
  if (tick.guard !== void 0) {
51248
51113
  const passed = interpolateValue(tick.guard, evalCtx);
@@ -51375,6 +51240,9 @@ function useTraitStateMachine(traitBindings, slotsActions, options) {
51375
51240
  payload: payload || {},
51376
51241
  state: result.previousState
51377
51242
  };
51243
+ if (binding.config) {
51244
+ bindingCtx.config = binding.config;
51245
+ }
51378
51246
  const effectContext = {
51379
51247
  traitName: binding.trait.name,
51380
51248
  state: result.previousState,
@@ -51689,7 +51557,6 @@ function ServerBridgeProvider({
51689
51557
 
51690
51558
  // runtime/OrbPreview.tsx
51691
51559
  init_navigation();
51692
- init_EntityStoreProvider();
51693
51560
  init_verificationRegistry();
51694
51561
  function generateEntityRow(entity, idx) {
51695
51562
  const row = { id: String(idx) };
@@ -51734,7 +51601,7 @@ function buildMockData(schema) {
51734
51601
  }
51735
51602
  return result;
51736
51603
  }
51737
- function isInlineTrait(traitRef) {
51604
+ function isInlineTrait2(traitRef) {
51738
51605
  return typeof traitRef === "object" && traitRef !== null && "stateMachine" in traitRef;
51739
51606
  }
51740
51607
  function findDataState(sm, initialStateName) {
@@ -51766,7 +51633,7 @@ function adjustSchemaForMockData(schema, mockData) {
51766
51633
  const updatedOrbitals = schema.orbitals.map((orbital) => {
51767
51634
  const traits2 = orbital.traits ?? [];
51768
51635
  const updatedTraits = traits2.map((traitRef) => {
51769
- if (!isInlineTrait(traitRef)) return traitRef;
51636
+ if (!isInlineTrait2(traitRef)) return traitRef;
51770
51637
  const updated = rewriteTraitInitialState(traitRef, mockData);
51771
51638
  if (updated !== traitRef) changed = true;
51772
51639
  return updated;
@@ -51844,23 +51711,14 @@ function TraitInitializer({ traits: traits2, orbitalNames, onNavigate, onLocalFa
51844
51711
  const slotsActions = useSlotsActions();
51845
51712
  const bridge = useServerBridge();
51846
51713
  const uiSlots = useUISlots();
51847
- const entityStore = useEntityStore();
51848
51714
  const onEventProcessed = useCallback(async (event, payload) => {
51849
51715
  if (!bridge.connected || !orbitalNames?.length) return;
51850
51716
  for (const name of orbitalNames) {
51851
51717
  const { effects, meta } = await bridge.sendEvent(name, event, payload);
51852
51718
  recordServerResponse(name, event, meta);
51853
- const responseData = meta?.data;
51854
- if (responseData) {
51855
- for (const [entityType, records] of Object.entries(responseData)) {
51856
- if (Array.isArray(records)) {
51857
- entityStore.setAll(entityType, records);
51858
- }
51859
- }
51860
- }
51861
51719
  applyServerEffects(effects, uiSlots, onNavigate);
51862
51720
  }
51863
- }, [bridge.connected, bridge.sendEvent, orbitalNames, uiSlots, onNavigate, entityStore]);
51721
+ }, [bridge.connected, bridge.sendEvent, orbitalNames, uiSlots, onNavigate]);
51864
51722
  const opts = orbitalNames ? { onEventProcessed, navigate: onNavigate } : { navigate: onNavigate };
51865
51723
  const { sendEvent } = useTraitStateMachine(traits2, slotsActions, opts);
51866
51724
  const initSentRef = useRef(false);
@@ -51900,14 +51758,6 @@ function TraitInitializer({ traits: traits2, orbitalNames, onNavigate, onLocalFa
51900
51758
  effects: effectTraces,
51901
51759
  timestamp: Date.now()
51902
51760
  });
51903
- const initResponseData = meta?.data;
51904
- if (initResponseData) {
51905
- for (const [entityType, records] of Object.entries(initResponseData)) {
51906
- if (Array.isArray(records)) {
51907
- entityStore.setAll(entityType, records);
51908
- }
51909
- }
51910
- }
51911
51761
  applyServerEffects(effects, uiSlots, onNavigate);
51912
51762
  }
51913
51763
  })();
@@ -51940,19 +51790,6 @@ function SchemaRunner({ schema, serverUrl, mockData, pageName, onNavigate, onLoc
51940
51790
  if (!orbitals) return [];
51941
51791
  return orbitals.filter((o) => typeof o.name === "string").map((o) => o.name);
51942
51792
  }, [schema]);
51943
- const entityStore = useEntityStore();
51944
- const seededRef = useRef("");
51945
- const mockKey = mockData ? Object.keys(mockData).sort().join(",") : "";
51946
- React127__default.useLayoutEffect(() => {
51947
- if (!serverUrl && mockData && seededRef.current !== mockKey) {
51948
- seededRef.current = mockKey;
51949
- for (const [entityType, records] of Object.entries(mockData)) {
51950
- if (Array.isArray(records)) {
51951
- entityStore.setAll(entityType, records);
51952
- }
51953
- }
51954
- }
51955
- }, [mockKey, serverUrl, mockData, entityStore]);
51956
51793
  const inner = /* @__PURE__ */ jsx(VerificationProvider, { enabled: true, children: /* @__PURE__ */ jsx(SlotsProvider, { children: /* @__PURE__ */ jsxs(EntitySchemaProvider, { entities: Array.from(allEntities.values()), children: [
51957
51794
  /* @__PURE__ */ jsx(
51958
51795
  TraitInitializer,
@@ -52450,7 +52287,7 @@ var OrbPreviewNodeInner = (props) => {
52450
52287
  }
52451
52288
  );
52452
52289
  };
52453
- var OrbPreviewNode = React127__default.memo(OrbPreviewNodeInner);
52290
+ var OrbPreviewNode = React126__default.memo(OrbPreviewNodeInner);
52454
52291
  OrbPreviewNode.displayName = "OrbPreviewNode";
52455
52292
  var EventFlowEdgeInner = (props) => {
52456
52293
  const {
@@ -52527,7 +52364,7 @@ var EventFlowEdgeInner = (props) => {
52527
52364
  ) })
52528
52365
  ] });
52529
52366
  };
52530
- var EventFlowEdge = React127__default.memo(EventFlowEdgeInner);
52367
+ var EventFlowEdge = React126__default.memo(EventFlowEdgeInner);
52531
52368
  EventFlowEdge.displayName = "EventFlowEdge";
52532
52369
 
52533
52370
  // components/molecules/avl/BehaviorComposeNode.tsx
@@ -52666,7 +52503,7 @@ var BehaviorComposeNodeInner = (props) => {
52666
52503
  }
52667
52504
  );
52668
52505
  };
52669
- var BehaviorComposeNode = React127__default.memo(BehaviorComposeNodeInner);
52506
+ var BehaviorComposeNode = React126__default.memo(BehaviorComposeNodeInner);
52670
52507
  BehaviorComposeNode.displayName = "BehaviorComposeNode";
52671
52508
 
52672
52509
  // components/molecules/avl/avl-behavior-compose-converter.ts
@@ -53606,7 +53443,7 @@ var ZoomBreadcrumb = ({
53606
53443
  if (eventName && band === "detail") {
53607
53444
  segments.push({ icon: "\u26A1", label: eventName });
53608
53445
  }
53609
- return /* @__PURE__ */ jsx("div", { className: "absolute top-2 left-2 z-10 flex items-center gap-1 px-2 py-1 rounded-md bg-card/90 border border-border text-[11px] text-muted-foreground backdrop-blur-sm", children: segments.map((seg, i) => /* @__PURE__ */ jsxs(React127__default.Fragment, { children: [
53446
+ return /* @__PURE__ */ jsx("div", { className: "absolute top-2 left-2 z-10 flex items-center gap-1 px-2 py-1 rounded-md bg-card/90 border border-border text-[11px] text-muted-foreground backdrop-blur-sm", children: segments.map((seg, i) => /* @__PURE__ */ jsxs(React126__default.Fragment, { children: [
53610
53447
  i > 0 && /* @__PURE__ */ jsx("span", { className: "opacity-40", children: ">" }),
53611
53448
  /* @__PURE__ */ jsx("span", { className: "opacity-60", children: seg.icon }),
53612
53449
  /* @__PURE__ */ jsx("span", { children: seg.label })
@@ -54065,7 +53902,7 @@ var EventWireOverlay = ({
54065
53902
  containerW,
54066
53903
  containerH
54067
53904
  }) => {
54068
- const ids = React127__default.useMemo(() => {
53905
+ const ids = React126__default.useMemo(() => {
54069
53906
  avlOczWireId += 1;
54070
53907
  return { arrow: `avl-ocz-wire-${avlOczWireId}-arrow` };
54071
53908
  }, []);
@@ -54383,7 +54220,7 @@ var AvlOrbitalsCosmicZoom = ({
54383
54220
  borderRadius: 6,
54384
54221
  border: `1px solid ${color}`
54385
54222
  },
54386
- children: /* @__PURE__ */ jsx(HStack, { gap: "xs", align: "center", children: breadcrumbs.map((crumb, i) => /* @__PURE__ */ jsxs(React127__default.Fragment, { children: [
54223
+ children: /* @__PURE__ */ jsx(HStack, { gap: "xs", align: "center", children: breadcrumbs.map((crumb, i) => /* @__PURE__ */ jsxs(React126__default.Fragment, { children: [
54387
54224
  i > 0 && /* @__PURE__ */ jsx(Typography, { variant: "small", style: { opacity: 0.5, color }, children: "/" }),
54388
54225
  i < breadcrumbs.length - 1 ? /* @__PURE__ */ jsx(
54389
54226
  Box,