@almadar/ui 5.91.0 → 5.93.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/avl/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
- import * as React105 from 'react';
3
- import React105__default, { createContext, useState, useMemo, useRef, useEffect, useContext, useCallback, Suspense, useLayoutEffect, Profiler, useReducer, useSyncExternalStore, lazy, useId } from 'react';
2
+ import * as React104 from 'react';
3
+ import React104__default, { createContext, useState, useMemo, useRef, useEffect, useContext, useCallback, Suspense, useLayoutEffect, Profiler, useReducer, useSyncExternalStore, lazy, useId } from 'react';
4
4
  import { getAllPages, OrbitalProvider, EventBusContext, useTraitScope, ServerBridgeProvider, VerificationProvider, EntitySchemaProvider, OrbitalThemeProvider, useServerBridge, useEntitySchema, useEntitySchemaOptional, TraitScopeProvider, useCurrentPagePath } from '@almadar/ui/providers';
5
5
  import { createLogger, isLogLevelEnabled } from '@almadar/logger';
6
6
  import ELK from 'elkjs/lib/elk.bundled.js';
@@ -41,7 +41,7 @@ import { sortableKeyboardCoordinates, useSortable, arrayMove, SortableContext, r
41
41
  import { CSS } from '@dnd-kit/utilities';
42
42
  import { getPatternDefinition, getComponentForPattern as getComponentForPattern$1, isEntityAwarePattern } from '@almadar/patterns';
43
43
  import { OrbitalServerRuntime } from '@almadar/runtime/OrbitalServerRuntime';
44
- import { InMemoryPersistence, StateMachineManager, collectDeclaredConfigDefaults, createServerEffectHandlers, EffectExecutor, createContextFromBindings } from '@almadar/runtime';
44
+ import { InMemoryPersistence, StateMachineManager, collectDeclaredConfigDefaults, createServerEffectHandlers, EffectExecutor, createContextFromBindings, createTickScheduler } from '@almadar/runtime';
45
45
 
46
46
  var __defProp = Object.defineProperty;
47
47
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
@@ -3174,7 +3174,7 @@ var init_Typography = __esm({
3174
3174
  }) => {
3175
3175
  const variant = variantProp ?? (level ? `h${level}` : "body1");
3176
3176
  const Component = as || defaultElements[variant];
3177
- return React105__default.createElement(
3177
+ return React104__default.createElement(
3178
3178
  Component,
3179
3179
  {
3180
3180
  id,
@@ -3511,7 +3511,7 @@ var init_Box = __esm({
3511
3511
  fixed: "fixed",
3512
3512
  sticky: "sticky"
3513
3513
  };
3514
- Box = React105__default.forwardRef(
3514
+ Box = React104__default.forwardRef(
3515
3515
  ({
3516
3516
  padding,
3517
3517
  paddingX,
@@ -3576,7 +3576,7 @@ var init_Box = __esm({
3576
3576
  onPointerDown?.(e);
3577
3577
  }, [hoverEvent, tapReveal, triggerProps, onPointerDown]);
3578
3578
  const isClickable = action || onClick;
3579
- return React105__default.createElement(
3579
+ return React104__default.createElement(
3580
3580
  Component,
3581
3581
  {
3582
3582
  ref,
@@ -3672,7 +3672,7 @@ var init_Stack = __esm({
3672
3672
  };
3673
3673
  const isHorizontal = direction === "horizontal";
3674
3674
  const directionClass = responsive && isHorizontal ? reverse ? "flex-col-reverse md:flex-row-reverse" : "flex-col md:flex-row" : isHorizontal ? reverse ? "flex-row-reverse" : "flex-row" : reverse ? "flex-col-reverse" : "flex-col";
3675
- return React105__default.createElement(
3675
+ return React104__default.createElement(
3676
3676
  Component,
3677
3677
  {
3678
3678
  className: cn(
@@ -4164,7 +4164,7 @@ var init_MiniStateMachine = __esm({
4164
4164
  const x = 2 + i * (NODE_W + GAP + ARROW_W + GAP);
4165
4165
  const tc = transitionCounts[s.name] ?? 0;
4166
4166
  const role = getStateRole(s.name, s.isInitial ?? void 0, s.isTerminal ?? void 0, tc, maxTC);
4167
- return /* @__PURE__ */ jsxs(React105__default.Fragment, { children: [
4167
+ return /* @__PURE__ */ jsxs(React104__default.Fragment, { children: [
4168
4168
  /* @__PURE__ */ jsx(
4169
4169
  AvlState,
4170
4170
  {
@@ -4494,7 +4494,7 @@ function loadLib(key, importer) {
4494
4494
  return p;
4495
4495
  }
4496
4496
  function lazyFamilyIcon(libKey, importer, pick, fallbackName, family) {
4497
- const Lazy = React105__default.lazy(async () => {
4497
+ const Lazy = React104__default.lazy(async () => {
4498
4498
  const lib = await loadLib(libKey, importer);
4499
4499
  const Comp = pick(lib);
4500
4500
  if (!Comp) {
@@ -4504,7 +4504,7 @@ function lazyFamilyIcon(libKey, importer, pick, fallbackName, family) {
4504
4504
  return { default: Comp };
4505
4505
  });
4506
4506
  const Wrapped = (props) => /* @__PURE__ */ jsx(
4507
- React105__default.Suspense,
4507
+ React104__default.Suspense,
4508
4508
  {
4509
4509
  fallback: /* @__PURE__ */ jsx(
4510
4510
  "span",
@@ -5235,7 +5235,7 @@ var init_Icon = __esm({
5235
5235
  const directIcon = typeof icon === "string" ? void 0 : icon;
5236
5236
  const effectiveName = typeof icon === "string" ? icon : name;
5237
5237
  const family = useIconFamily();
5238
- const RenderedComponent = React105__default.useMemo(() => {
5238
+ const RenderedComponent = React104__default.useMemo(() => {
5239
5239
  if (directIcon) return null;
5240
5240
  return effectiveName ? resolveIconForFamily(effectiveName, family) : null;
5241
5241
  }, [directIcon, effectiveName, family]);
@@ -5297,7 +5297,7 @@ function resolveIconProp(value, sizeClass) {
5297
5297
  const IconComp = value;
5298
5298
  return /* @__PURE__ */ jsx(IconComp, { className: sizeClass });
5299
5299
  }
5300
- if (React105__default.isValidElement(value)) {
5300
+ if (React104__default.isValidElement(value)) {
5301
5301
  return value;
5302
5302
  }
5303
5303
  if (typeof value === "object" && value !== null && isIconLike(value)) {
@@ -5373,7 +5373,7 @@ var init_Button = __esm({
5373
5373
  md: "h-icon-default w-icon-default",
5374
5374
  lg: "h-icon-default w-icon-default"
5375
5375
  };
5376
- Button = React105__default.forwardRef(
5376
+ Button = React104__default.forwardRef(
5377
5377
  ({
5378
5378
  className,
5379
5379
  variant = "primary",
@@ -5441,7 +5441,7 @@ var Dialog;
5441
5441
  var init_Dialog = __esm({
5442
5442
  "components/core/atoms/Dialog.tsx"() {
5443
5443
  init_cn();
5444
- Dialog = React105__default.forwardRef(
5444
+ Dialog = React104__default.forwardRef(
5445
5445
  ({
5446
5446
  role = "dialog",
5447
5447
  "aria-modal": ariaModal = true,
@@ -5936,7 +5936,7 @@ var init_Badge = __esm({
5936
5936
  md: "px-2.5 py-1 text-sm",
5937
5937
  lg: "px-3 py-1.5 text-base"
5938
5938
  };
5939
- Badge = React105__default.forwardRef(
5939
+ Badge = React104__default.forwardRef(
5940
5940
  ({ className, variant = "default", size = "sm", amount, label, icon, iconAsset, children, onRemove, removeLabel, ...props }, ref) => {
5941
5941
  const iconSizes3 = {
5942
5942
  sm: "h-icon-default w-icon-default",
@@ -6273,7 +6273,7 @@ var init_SvgFlow = __esm({
6273
6273
  width = 100,
6274
6274
  height = 100
6275
6275
  }) => {
6276
- const markerId = React105__default.useMemo(() => {
6276
+ const markerId = React104__default.useMemo(() => {
6277
6277
  flowIdCounter += 1;
6278
6278
  return `almadar-flow-arrow-${flowIdCounter}`;
6279
6279
  }, []);
@@ -6866,7 +6866,7 @@ var init_SvgRing = __esm({
6866
6866
  width = 100,
6867
6867
  height = 100
6868
6868
  }) => {
6869
- const gradientId = React105__default.useMemo(() => {
6869
+ const gradientId = React104__default.useMemo(() => {
6870
6870
  ringIdCounter += 1;
6871
6871
  return `almadar-ring-glow-${ringIdCounter}`;
6872
6872
  }, []);
@@ -7047,7 +7047,7 @@ var init_Input = __esm({
7047
7047
  init_cn();
7048
7048
  init_Icon();
7049
7049
  init_useEventBus();
7050
- Input = React105__default.forwardRef(
7050
+ Input = React104__default.forwardRef(
7051
7051
  ({
7052
7052
  className,
7053
7053
  inputType,
@@ -7207,7 +7207,7 @@ var Label;
7207
7207
  var init_Label = __esm({
7208
7208
  "components/core/atoms/Label.tsx"() {
7209
7209
  init_cn();
7210
- Label = React105__default.forwardRef(
7210
+ Label = React104__default.forwardRef(
7211
7211
  ({ className, required, children, ...props }, ref) => {
7212
7212
  return /* @__PURE__ */ jsxs(
7213
7213
  "label",
@@ -7234,7 +7234,7 @@ var init_Textarea = __esm({
7234
7234
  "components/core/atoms/Textarea.tsx"() {
7235
7235
  init_cn();
7236
7236
  init_useEventBus();
7237
- Textarea = React105__default.forwardRef(
7237
+ Textarea = React104__default.forwardRef(
7238
7238
  ({ className, error, onChange, ...props }, ref) => {
7239
7239
  const eventBus = useEventBus();
7240
7240
  const handleChange = (e) => {
@@ -7473,7 +7473,7 @@ var init_Select = __esm({
7473
7473
  init_cn();
7474
7474
  init_Icon();
7475
7475
  init_useEventBus();
7476
- Select = React105__default.forwardRef(
7476
+ Select = React104__default.forwardRef(
7477
7477
  (props, _ref) => {
7478
7478
  const { multiple, searchable, clearable } = props;
7479
7479
  if (multiple || searchable || clearable) {
@@ -7490,7 +7490,7 @@ var init_Checkbox = __esm({
7490
7490
  "components/core/atoms/Checkbox.tsx"() {
7491
7491
  init_cn();
7492
7492
  init_useEventBus();
7493
- Checkbox = React105__default.forwardRef(
7493
+ Checkbox = React104__default.forwardRef(
7494
7494
  ({ className, label, id, onChange, ...props }, ref) => {
7495
7495
  const inputId = id || `checkbox-${Math.random().toString(36).substr(2, 9)}`;
7496
7496
  const eventBus = useEventBus();
@@ -7544,7 +7544,7 @@ var init_Spinner = __esm({
7544
7544
  md: "h-6 w-6",
7545
7545
  lg: "h-8 w-8"
7546
7546
  };
7547
- Spinner = React105__default.forwardRef(
7547
+ Spinner = React104__default.forwardRef(
7548
7548
  ({ className, size = "md", overlay, ...props }, ref) => {
7549
7549
  if (overlay) {
7550
7550
  return /* @__PURE__ */ jsx(
@@ -7634,7 +7634,7 @@ var init_Card = __esm({
7634
7634
  chip: "shadow-none rounded-pill border-[length:var(--border-width)] border-border",
7635
7635
  "tile-image-first": "p-0 overflow-hidden"
7636
7636
  };
7637
- Card = React105__default.forwardRef(
7637
+ Card = React104__default.forwardRef(
7638
7638
  ({
7639
7639
  className,
7640
7640
  variant = "bordered",
@@ -7682,9 +7682,9 @@ var init_Card = __esm({
7682
7682
  }
7683
7683
  );
7684
7684
  Card.displayName = "Card";
7685
- CardHeader = React105__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn("mb-4", className), ...props }));
7685
+ CardHeader = React104__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn("mb-4", className), ...props }));
7686
7686
  CardHeader.displayName = "CardHeader";
7687
- CardTitle = React105__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
7687
+ CardTitle = React104__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
7688
7688
  "h3",
7689
7689
  {
7690
7690
  ref,
@@ -7697,11 +7697,11 @@ var init_Card = __esm({
7697
7697
  }
7698
7698
  ));
7699
7699
  CardTitle.displayName = "CardTitle";
7700
- CardContent = React105__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn("", className), ...props }));
7700
+ CardContent = React104__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn("", className), ...props }));
7701
7701
  CardContent.displayName = "CardContent";
7702
7702
  CardBody = CardContent;
7703
7703
  CardBody.displayName = "CardBody";
7704
- CardFooter = React105__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
7704
+ CardFooter = React104__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
7705
7705
  "div",
7706
7706
  {
7707
7707
  ref,
@@ -7756,7 +7756,7 @@ var init_FilterPill = __esm({
7756
7756
  md: "w-3.5 h-3.5",
7757
7757
  lg: "w-4 h-4"
7758
7758
  };
7759
- FilterPill = React105__default.forwardRef(
7759
+ FilterPill = React104__default.forwardRef(
7760
7760
  ({
7761
7761
  className,
7762
7762
  variant = "default",
@@ -7885,8 +7885,8 @@ var init_Avatar = __esm({
7885
7885
  actionPayload
7886
7886
  }) => {
7887
7887
  const eventBus = useEventBus();
7888
- const [imgFailed, setImgFailed] = React105__default.useState(false);
7889
- React105__default.useEffect(() => {
7888
+ const [imgFailed, setImgFailed] = React104__default.useState(false);
7889
+ React104__default.useEffect(() => {
7890
7890
  setImgFailed(false);
7891
7891
  }, [src]);
7892
7892
  const initials = providedInitials ?? (name ? generateInitials(name) : void 0);
@@ -7999,7 +7999,7 @@ var init_Center = __esm({
7999
7999
  as: Component = "div"
8000
8000
  }) => {
8001
8001
  const mergedStyle = minHeight ? { minHeight, ...style } : style;
8002
- return React105__default.createElement(Component, {
8002
+ return React104__default.createElement(Component, {
8003
8003
  className: cn(
8004
8004
  inline ? "inline-flex" : "flex",
8005
8005
  horizontal && "justify-center",
@@ -8267,7 +8267,7 @@ var init_Radio = __esm({
8267
8267
  md: "w-2.5 h-2.5",
8268
8268
  lg: "w-3 h-3"
8269
8269
  };
8270
- Radio = React105__default.forwardRef(
8270
+ Radio = React104__default.forwardRef(
8271
8271
  ({
8272
8272
  label,
8273
8273
  helperText,
@@ -8284,12 +8284,12 @@ var init_Radio = __esm({
8284
8284
  onChange,
8285
8285
  ...props
8286
8286
  }, ref) => {
8287
- const reactId = React105__default.useId();
8287
+ const reactId = React104__default.useId();
8288
8288
  const baseId = id || `radio-${reactId}`;
8289
8289
  const hasError = !!error;
8290
8290
  const eventBus = useEventBus();
8291
- const [selected, setSelected] = React105__default.useState(value);
8292
- React105__default.useEffect(() => {
8291
+ const [selected, setSelected] = React104__default.useState(value);
8292
+ React104__default.useEffect(() => {
8293
8293
  if (value !== void 0) setSelected(value);
8294
8294
  }, [value]);
8295
8295
  const pick = (next, e) => {
@@ -8471,7 +8471,7 @@ var init_Switch = __esm({
8471
8471
  "components/core/atoms/Switch.tsx"() {
8472
8472
  "use client";
8473
8473
  init_cn();
8474
- Switch = React105.forwardRef(
8474
+ Switch = React104.forwardRef(
8475
8475
  ({
8476
8476
  checked,
8477
8477
  defaultChecked = false,
@@ -8482,10 +8482,10 @@ var init_Switch = __esm({
8482
8482
  name,
8483
8483
  className
8484
8484
  }, ref) => {
8485
- const [isChecked, setIsChecked] = React105.useState(
8485
+ const [isChecked, setIsChecked] = React104.useState(
8486
8486
  checked !== void 0 ? checked : defaultChecked
8487
8487
  );
8488
- React105.useEffect(() => {
8488
+ React104.useEffect(() => {
8489
8489
  if (checked !== void 0) {
8490
8490
  setIsChecked(checked);
8491
8491
  }
@@ -8763,7 +8763,7 @@ var Aside;
8763
8763
  var init_Aside = __esm({
8764
8764
  "components/core/atoms/Aside.tsx"() {
8765
8765
  init_cn();
8766
- Aside = React105__default.forwardRef(
8766
+ Aside = React104__default.forwardRef(
8767
8767
  ({ className, children, ...rest }, ref) => /* @__PURE__ */ jsx("aside", { ref, className: cn(className), ...rest, children })
8768
8768
  );
8769
8769
  Aside.displayName = "Aside";
@@ -8842,9 +8842,9 @@ var init_LawReferenceTooltip = __esm({
8842
8842
  className
8843
8843
  }) => {
8844
8844
  const { t } = useTranslate();
8845
- const [isVisible, setIsVisible] = React105__default.useState(false);
8846
- const timeoutRef = React105__default.useRef(null);
8847
- const triggerRef = React105__default.useRef(null);
8845
+ const [isVisible, setIsVisible] = React104__default.useState(false);
8846
+ const timeoutRef = React104__default.useRef(null);
8847
+ const triggerRef = React104__default.useRef(null);
8848
8848
  const handleMouseEnter = () => {
8849
8849
  if (timeoutRef.current) clearTimeout(timeoutRef.current);
8850
8850
  timeoutRef.current = setTimeout(() => setIsVisible(true), 200);
@@ -8855,7 +8855,7 @@ var init_LawReferenceTooltip = __esm({
8855
8855
  };
8856
8856
  const { revealed, triggerProps } = useTapReveal({ refs: [triggerRef] });
8857
8857
  const open = isVisible || revealed;
8858
- React105__default.useEffect(() => {
8858
+ React104__default.useEffect(() => {
8859
8859
  return () => {
8860
8860
  if (timeoutRef.current) clearTimeout(timeoutRef.current);
8861
8861
  };
@@ -9065,7 +9065,7 @@ var init_StatusDot = __esm({
9065
9065
  md: "w-2.5 h-2.5",
9066
9066
  lg: "w-3 h-3"
9067
9067
  };
9068
- StatusDot = React105__default.forwardRef(
9068
+ StatusDot = React104__default.forwardRef(
9069
9069
  ({ className, status = "offline", pulse = false, size = "md", label, ...props }, ref) => {
9070
9070
  return /* @__PURE__ */ jsx(
9071
9071
  "span",
@@ -9119,7 +9119,7 @@ var init_TrendIndicator = __esm({
9119
9119
  down: "trending-down",
9120
9120
  flat: "arrow-right"
9121
9121
  };
9122
- TrendIndicator = React105__default.forwardRef(
9122
+ TrendIndicator = React104__default.forwardRef(
9123
9123
  ({
9124
9124
  className,
9125
9125
  value,
@@ -9186,7 +9186,7 @@ var init_RangeSlider = __esm({
9186
9186
  md: "w-4 h-4",
9187
9187
  lg: "w-5 h-5"
9188
9188
  };
9189
- RangeSlider = React105__default.forwardRef(
9189
+ RangeSlider = React104__default.forwardRef(
9190
9190
  ({
9191
9191
  className,
9192
9192
  min = 0,
@@ -9780,7 +9780,7 @@ var init_ContentSection = __esm({
9780
9780
  md: "py-16",
9781
9781
  lg: "py-24"
9782
9782
  };
9783
- ContentSection = React105__default.forwardRef(
9783
+ ContentSection = React104__default.forwardRef(
9784
9784
  ({ children, background = "default", padding = "lg", id, className }, ref) => {
9785
9785
  return /* @__PURE__ */ jsx(
9786
9786
  Box,
@@ -10314,7 +10314,7 @@ var init_AnimatedReveal = __esm({
10314
10314
  "scale-up": { opacity: 1, transform: "scale(1) translateY(0)" },
10315
10315
  "none": {}
10316
10316
  };
10317
- AnimatedReveal = React105__default.forwardRef(
10317
+ AnimatedReveal = React104__default.forwardRef(
10318
10318
  ({
10319
10319
  trigger = "scroll",
10320
10320
  animation = "fade-up",
@@ -10474,7 +10474,7 @@ var init_AnimatedGraphic = __esm({
10474
10474
  "components/marketing/atoms/AnimatedGraphic.tsx"() {
10475
10475
  "use client";
10476
10476
  init_cn();
10477
- AnimatedGraphic = React105__default.forwardRef(
10477
+ AnimatedGraphic = React104__default.forwardRef(
10478
10478
  ({
10479
10479
  src,
10480
10480
  svgContent,
@@ -10497,7 +10497,7 @@ var init_AnimatedGraphic = __esm({
10497
10497
  const fetchedSvg = useFetchedSvg(svgContent ? void 0 : src);
10498
10498
  const resolvedSvg = svgContent ?? fetchedSvg;
10499
10499
  const prevAnimateRef = useRef(animate);
10500
- const setRef = React105__default.useCallback(
10500
+ const setRef = React104__default.useCallback(
10501
10501
  (node) => {
10502
10502
  containerRef.current = node;
10503
10503
  if (typeof ref === "function") ref(node);
@@ -11099,12 +11099,13 @@ function GameCard({
11099
11099
  selected = false,
11100
11100
  disabled = false,
11101
11101
  size = "md",
11102
+ animState = "idle",
11102
11103
  onClick,
11103
11104
  clickEvent,
11104
11105
  className
11105
11106
  }) {
11106
11107
  const eventBus = useEventBus();
11107
- const handleClick = React105.useCallback(() => {
11108
+ const handleClick = React104.useCallback(() => {
11108
11109
  if (disabled) return;
11109
11110
  onClick?.(id);
11110
11111
  if (clickEvent) eventBus.emit(`UI:${clickEvent}`, { cardId: id });
@@ -11126,6 +11127,7 @@ function GameCard({
11126
11127
  cardSizeMap[size],
11127
11128
  disabled ? "border-border opacity-50 cursor-not-allowed" : "border-accent hover:brightness-125 hover:-translate-y-1 cursor-pointer",
11128
11129
  selected && "ring-2 ring-foreground ring-offset-1 ring-offset-background -translate-y-1",
11130
+ ANIM_STATE_CLASS[animState],
11129
11131
  className
11130
11132
  ),
11131
11133
  children: [
@@ -11158,7 +11160,7 @@ function GameCard({
11158
11160
  }
11159
11161
  );
11160
11162
  }
11161
- var cardSizeMap, artPxMap;
11163
+ var cardSizeMap, artPxMap, ANIM_STATE_CLASS;
11162
11164
  var init_GameCard = __esm({
11163
11165
  "components/game/2d/atoms/GameCard.tsx"() {
11164
11166
  "use client";
@@ -11174,6 +11176,12 @@ var init_GameCard = __esm({
11174
11176
  lg: "w-24 h-36"
11175
11177
  };
11176
11178
  artPxMap = { sm: 40, md: 52, lg: 64 };
11179
+ ANIM_STATE_CLASS = {
11180
+ idle: "",
11181
+ drawn: "scale-105",
11182
+ played: "-translate-y-2 opacity-80",
11183
+ flipped: "scale-x-0"
11184
+ };
11177
11185
  GameCard.displayName = "GameCard";
11178
11186
  }
11179
11187
  });
@@ -11386,9 +11394,9 @@ function ControlButton({
11386
11394
  className
11387
11395
  }) {
11388
11396
  const eventBus = useEventBus();
11389
- const [isPressed, setIsPressed] = React105.useState(false);
11397
+ const [isPressed, setIsPressed] = React104.useState(false);
11390
11398
  const actualPressed = pressed ?? isPressed;
11391
- const handlePointerDown = React105.useCallback(
11399
+ const handlePointerDown = React104.useCallback(
11392
11400
  (e) => {
11393
11401
  e.preventDefault();
11394
11402
  if (disabled) return;
@@ -11398,7 +11406,7 @@ function ControlButton({
11398
11406
  },
11399
11407
  [disabled, pressEvent, eventBus, onPress]
11400
11408
  );
11401
- const handlePointerUp = React105.useCallback(
11409
+ const handlePointerUp = React104.useCallback(
11402
11410
  (e) => {
11403
11411
  e.preventDefault();
11404
11412
  if (disabled) return;
@@ -11408,7 +11416,7 @@ function ControlButton({
11408
11416
  },
11409
11417
  [disabled, releaseEvent, eventBus, onRelease]
11410
11418
  );
11411
- const handlePointerLeave = React105.useCallback(
11419
+ const handlePointerLeave = React104.useCallback(
11412
11420
  (e) => {
11413
11421
  if (isPressed) {
11414
11422
  setIsPressed(false);
@@ -12214,8 +12222,11 @@ function DialogueBubble({
12214
12222
  text = "The dungeon awaits. Choose your path wisely.",
12215
12223
  portrait = DEFAULT_PORTRAIT,
12216
12224
  position = "bottom",
12225
+ mood = "neutral",
12226
+ revealedChars,
12217
12227
  className
12218
12228
  }) {
12229
+ const visibleText = revealedChars === void 0 ? text : text.slice(0, revealedChars);
12219
12230
  return /* @__PURE__ */ jsxs(
12220
12231
  Box,
12221
12232
  {
@@ -12225,16 +12236,16 @@ function DialogueBubble({
12225
12236
  className
12226
12237
  ),
12227
12238
  children: [
12228
- portrait && /* @__PURE__ */ jsx(Box, { className: "flex-shrink-0 w-12 h-12 rounded-full overflow-hidden border-2 border-warning/60", children: /* @__PURE__ */ jsx(GameIcon, { assetUrl: portrait, icon: "image", size: 48, alt: speaker ?? "speaker", className: "w-full h-full object-cover" }) }),
12239
+ portrait && /* @__PURE__ */ jsx(Box, { className: cn("flex-shrink-0 w-12 h-12 rounded-full overflow-hidden border-2 transition-colors duration-300", MOOD_RING_CLASS[mood]), children: /* @__PURE__ */ jsx(GameIcon, { assetUrl: portrait, icon: "image", size: 48, alt: speaker ?? "speaker", className: "w-full h-full object-cover" }) }),
12229
12240
  /* @__PURE__ */ jsxs(Box, { className: "flex flex-col gap-1 min-w-0", children: [
12230
12241
  speaker && /* @__PURE__ */ jsx(Typography, { as: "span", className: "text-sm font-bold text-warning", children: speaker }),
12231
- /* @__PURE__ */ jsx(Typography, { as: "span", className: "text-sm text-foreground leading-relaxed", children: text })
12242
+ /* @__PURE__ */ jsx(Typography, { as: "span", className: "text-sm text-foreground leading-relaxed", children: visibleText })
12232
12243
  ] })
12233
12244
  ]
12234
12245
  }
12235
12246
  );
12236
12247
  }
12237
- var DEFAULT_PORTRAIT;
12248
+ var DEFAULT_PORTRAIT, MOOD_RING_CLASS;
12238
12249
  var init_DialogueBubble = __esm({
12239
12250
  "components/game/2d/atoms/DialogueBubble.tsx"() {
12240
12251
  init_cn();
@@ -12246,6 +12257,12 @@ var init_DialogueBubble = __esm({
12246
12257
  role: "effect",
12247
12258
  category: "character"
12248
12259
  };
12260
+ MOOD_RING_CLASS = {
12261
+ neutral: "border-warning/60",
12262
+ happy: "border-success/70",
12263
+ concerned: "border-info/70",
12264
+ angry: "border-error/70"
12265
+ };
12249
12266
  DialogueBubble.displayName = "DialogueBubble";
12250
12267
  }
12251
12268
  });
@@ -12427,8 +12444,8 @@ function MiniMap({
12427
12444
  tileAssets,
12428
12445
  unitAssets
12429
12446
  }) {
12430
- const canvasRef = React105.useRef(null);
12431
- const imgCacheRef = React105.useRef(/* @__PURE__ */ new Map());
12447
+ const canvasRef = React104.useRef(null);
12448
+ const imgCacheRef = React104.useRef(/* @__PURE__ */ new Map());
12432
12449
  function loadImg(url) {
12433
12450
  const cached = imgCacheRef.current.get(url);
12434
12451
  if (cached) return cached.complete ? cached : null;
@@ -12443,7 +12460,7 @@ function MiniMap({
12443
12460
  imgCacheRef.current.set(url, img);
12444
12461
  return null;
12445
12462
  }
12446
- React105.useEffect(() => {
12463
+ React104.useEffect(() => {
12447
12464
  const canvas = canvasRef.current;
12448
12465
  if (!canvas) return;
12449
12466
  const ctx = canvas.getContext("2d");
@@ -12578,8 +12595,8 @@ function ControlGrid({
12578
12595
  className
12579
12596
  }) {
12580
12597
  const eventBus = useEventBus();
12581
- const [active, setActive] = React105.useState(/* @__PURE__ */ new Set());
12582
- const handlePress = React105.useCallback(
12598
+ const [active, setActive] = React104.useState(/* @__PURE__ */ new Set());
12599
+ const handlePress = React104.useCallback(
12583
12600
  (id) => {
12584
12601
  setActive((prev) => new Set(prev).add(id));
12585
12602
  if (actionEvent) eventBus.emit(`UI:${actionEvent}`, { id, pressed: true });
@@ -12593,7 +12610,7 @@ function ControlGrid({
12593
12610
  },
12594
12611
  [kind, actionEvent, directionEvent, directionEvents, eventBus, onAction, onDirection]
12595
12612
  );
12596
- const handleRelease = React105.useCallback(
12613
+ const handleRelease = React104.useCallback(
12597
12614
  (id) => {
12598
12615
  setActive((prev) => {
12599
12616
  const next = new Set(prev);
@@ -12851,7 +12868,7 @@ function InventoryGrid({
12851
12868
  const eventBus = useEventBus();
12852
12869
  const slotCount = totalSlots ?? items.length;
12853
12870
  const emptySlotCount = Math.max(0, slotCount - items.length);
12854
- const handleSelect = React105.useCallback(
12871
+ const handleSelect = React104.useCallback(
12855
12872
  (id) => {
12856
12873
  onSelect?.(id);
12857
12874
  if (selectEvent) {
@@ -13068,7 +13085,7 @@ function GameMenu({
13068
13085
  }) {
13069
13086
  const resolvedOptions = options ?? menuItems ?? DEFAULT_MENU_OPTIONS;
13070
13087
  const eventBus = useEventBus();
13071
- const handleOptionClick = React105.useCallback(
13088
+ const handleOptionClick = React104.useCallback(
13072
13089
  (option) => {
13073
13090
  if (option.event) {
13074
13091
  eventBus.emit(`UI:${option.event}`, { option });
@@ -13294,7 +13311,7 @@ function StateGraph({
13294
13311
  }) {
13295
13312
  const eventBus = useEventBus();
13296
13313
  const nodes = states ?? [];
13297
- const positions = React105.useMemo(() => layoutStates(nodes, width, height), [nodes, width, height]);
13314
+ const positions = React104.useMemo(() => layoutStates(nodes, width, height), [nodes, width, height]);
13298
13315
  return /* @__PURE__ */ jsxs(
13299
13316
  Box,
13300
13317
  {
@@ -14060,6 +14077,7 @@ function Canvas2D({
14060
14077
  unitScale = 1,
14061
14078
  showMinimap = true,
14062
14079
  animate,
14080
+ interpolateUnits = false,
14063
14081
  // Tuning
14064
14082
  debug: debug2 = false,
14065
14083
  spriteHeightRatio = 1.5,
@@ -14094,6 +14112,8 @@ function Canvas2D({
14094
14112
  const containerRef = useRef(null);
14095
14113
  const lerpRafRef = useRef(0);
14096
14114
  const animRafRef = useRef(0);
14115
+ const unitInterp = useRenderInterpolation();
14116
+ const interpolatedUnitPositionsRef = useRef(/* @__PURE__ */ new Map());
14097
14117
  const [viewportSize, setViewportSize] = useState({ width: 800, height: 600 });
14098
14118
  useEffect(() => {
14099
14119
  const el = containerRef.current;
@@ -14408,7 +14428,8 @@ function Canvas2D({
14408
14428
  return depthA !== depthB ? depthA - depthB : a.position.y - b.position.y;
14409
14429
  });
14410
14430
  for (const unit of sortedUnits) {
14411
- const pos = project(unit.position.x, unit.position.y, baseOffsetX);
14431
+ const interpolated = interpolateUnits ? interpolatedUnitPositionsRef.current.get(unit.id) : void 0;
14432
+ const pos = project(interpolated?.x ?? unit.position.x, interpolated?.y ?? unit.position.y, baseOffsetX);
14412
14433
  if (pos.x + scaledTileWidth < visLeft || pos.x > visRight || pos.y + scaledTileHeight < visTop || pos.y > visBottom) {
14413
14434
  continue;
14414
14435
  }
@@ -14560,7 +14581,8 @@ function Canvas2D({
14560
14581
  unitScale,
14561
14582
  assetManifest,
14562
14583
  spriteHeightRatio,
14563
- spriteMaxWidthRatio
14584
+ spriteMaxWidthRatio,
14585
+ interpolateUnits
14564
14586
  ]);
14565
14587
  useEffect(() => {
14566
14588
  if (camera === "fixed") return;
@@ -14575,6 +14597,19 @@ function Canvas2D({
14575
14597
  y: centerY - viewportSize.height / 2
14576
14598
  };
14577
14599
  }, [camera, selectedUnitId, units, project, baseOffsetX, scaledTileWidth, scaledDiamondTopY, scaledFloorHeight, viewportSize, targetCameraRef]);
14600
+ useEffect(() => {
14601
+ if (isSide || !interpolateUnits) return;
14602
+ unitInterp.onSnapshot(
14603
+ units.filter((u) => !!u.position).map((u) => ({ id: u.id, x: u.position.x, y: u.position.y }))
14604
+ );
14605
+ }, [isSide, interpolateUnits, units, unitInterp]);
14606
+ useEffect(() => {
14607
+ if (isSide || !interpolateUnits) return;
14608
+ return unitInterp.startLoop((positions) => {
14609
+ interpolatedUnitPositionsRef.current = positions;
14610
+ draw();
14611
+ });
14612
+ }, [isSide, interpolateUnits, unitInterp, draw]);
14578
14613
  useEffect(() => {
14579
14614
  if (isSide) return;
14580
14615
  draw();
@@ -14950,7 +14985,7 @@ function LinearView({
14950
14985
  /* @__PURE__ */ jsx(HStack, { className: "flex-wrap items-center", gap: "xs", children: trait.states.map((state, i) => {
14951
14986
  const isDone = i < currentIdx;
14952
14987
  const isCurrent = i === currentIdx;
14953
- return /* @__PURE__ */ jsxs(React105__default.Fragment, { children: [
14988
+ return /* @__PURE__ */ jsxs(React104__default.Fragment, { children: [
14954
14989
  i > 0 && /* @__PURE__ */ jsx(
14955
14990
  Typography,
14956
14991
  {
@@ -15464,6 +15499,8 @@ function SequenceBar({
15464
15499
  maxSlots,
15465
15500
  onSlotDrop,
15466
15501
  onSlotRemove,
15502
+ slotDropEvent,
15503
+ slotRemoveEvent,
15467
15504
  playing = false,
15468
15505
  currentStep = -1,
15469
15506
  categoryColors,
@@ -15471,16 +15508,19 @@ function SequenceBar({
15471
15508
  size = "lg",
15472
15509
  className
15473
15510
  }) {
15511
+ const { emit } = useEventBus();
15474
15512
  const handleDrop = useCallback((index) => (item) => {
15475
15513
  if (playing) return;
15476
- onSlotDrop(index, item);
15477
- }, [onSlotDrop, playing]);
15514
+ if (slotDropEvent) emit(`UI:${slotDropEvent}`, { slotNumber: index, itemId: item.id });
15515
+ else onSlotDrop?.(index, item);
15516
+ }, [emit, slotDropEvent, onSlotDrop, playing]);
15478
15517
  const handleRemove = useCallback((index) => () => {
15479
15518
  if (playing) return;
15480
- onSlotRemove(index);
15481
- }, [onSlotRemove, playing]);
15519
+ if (slotRemoveEvent) emit(`UI:${slotRemoveEvent}`, { slotNumber: index });
15520
+ else onSlotRemove?.(index);
15521
+ }, [emit, slotRemoveEvent, onSlotRemove, playing]);
15482
15522
  const paddedSlots = Array.from({ length: maxSlots }, (_, i) => slots[i]);
15483
- return /* @__PURE__ */ jsx(HStack, { className: cn("items-center", className), gap: "sm", children: paddedSlots.map((slot, i) => /* @__PURE__ */ jsxs(React105__default.Fragment, { children: [
15523
+ return /* @__PURE__ */ jsx(HStack, { className: cn("items-center", className), gap: "sm", children: paddedSlots.map((slot, i) => /* @__PURE__ */ jsxs(React104__default.Fragment, { children: [
15484
15524
  i > 0 && /* @__PURE__ */ jsx(
15485
15525
  Typography,
15486
15526
  {
@@ -15510,9 +15550,10 @@ function SequenceBar({
15510
15550
  ] }, i)) });
15511
15551
  }
15512
15552
  var init_SequenceBar = __esm({
15513
- "components/game/2d/organisms/SequenceBar.tsx"() {
15553
+ "components/game/2d/molecules/SequenceBar.tsx"() {
15514
15554
  init_atoms();
15515
15555
  init_cn();
15556
+ init_useEventBus();
15516
15557
  init_TraitSlot();
15517
15558
  SequenceBar.displayName = "SequenceBar";
15518
15559
  }
@@ -17517,227 +17558,6 @@ var init_NegotiatorBoard = __esm({
17517
17558
  NegotiatorBoard.displayName = "NegotiatorBoard";
17518
17559
  }
17519
17560
  });
17520
-
17521
- // components/game/shared/lib/mechanics.ts
17522
- var projectileMotion, pendulum, springOscillator;
17523
- var init_mechanics = __esm({
17524
- "components/game/shared/lib/mechanics.ts"() {
17525
- projectileMotion = {
17526
- id: "mechanics-projectile",
17527
- name: "Projectile Motion",
17528
- description: "Launch a ball and observe parabolic trajectory under gravity.",
17529
- domain: "natural",
17530
- gravity: { x: 0, y: 9.81 },
17531
- bodies: [
17532
- { id: "ball", x: 50, y: 350, vx: 80, vy: -120, mass: 1, radius: 10, color: "#e94560", fixed: false },
17533
- { id: "ground", x: 300, y: 390, vx: 0, vy: 0, mass: 1e3, radius: 400, color: "#333", fixed: true }
17534
- ],
17535
- showVelocity: true,
17536
- parameters: {
17537
- angle: { value: 45, min: 0, max: 90, step: 1, label: "Launch angle (deg)" },
17538
- velocity: { value: 100, min: 10, max: 200, step: 5, label: "Initial velocity (m/s)" },
17539
- gravity: { value: 9.81, min: 0, max: 20, step: 0.1, label: "Gravity (m/s\xB2)" }
17540
- }
17541
- };
17542
- pendulum = {
17543
- id: "mechanics-pendulum",
17544
- name: "Simple Pendulum",
17545
- description: "A mass on a string swinging under gravity.",
17546
- domain: "natural",
17547
- gravity: { x: 0, y: 9.81 },
17548
- bodies: [
17549
- { id: "pivot", x: 300, y: 50, vx: 0, vy: 0, mass: 1e3, radius: 5, color: "#888", fixed: true },
17550
- { id: "bob", x: 400, y: 200, vx: 0, vy: 0, mass: 5, radius: 15, color: "#e94560", fixed: false }
17551
- ],
17552
- constraints: [{ bodyA: 0, bodyB: 1, length: 180, stiffness: 1 }],
17553
- parameters: {
17554
- length: { value: 180, min: 50, max: 300, step: 10, label: "String length (px)" },
17555
- mass: { value: 5, min: 1, max: 20, step: 0.5, label: "Mass (kg)" },
17556
- gravity: { value: 9.81, min: 0, max: 20, step: 0.1, label: "Gravity (m/s\xB2)" }
17557
- }
17558
- };
17559
- springOscillator = {
17560
- id: "mechanics-spring",
17561
- name: "Spring Oscillator",
17562
- description: "A mass bouncing on a spring \u2014 simple harmonic motion.",
17563
- domain: "natural",
17564
- gravity: { x: 0, y: 0 },
17565
- bodies: [
17566
- { id: "anchor", x: 300, y: 50, vx: 0, vy: 0, mass: 1e3, radius: 8, color: "#888", fixed: true },
17567
- { id: "mass", x: 300, y: 250, vx: 0, vy: 0, mass: 2, radius: 20, color: "#0f3460", fixed: false }
17568
- ],
17569
- constraints: [{ bodyA: 0, bodyB: 1, length: 150, stiffness: 0.5 }],
17570
- parameters: {
17571
- stiffness: { value: 0.5, min: 0.1, max: 2, step: 0.05, label: "Spring stiffness (k)" },
17572
- mass: { value: 2, min: 0.5, max: 10, step: 0.5, label: "Mass (kg)" },
17573
- damping: { value: 0, min: 0, max: 0.5, step: 0.01, label: "Damping" }
17574
- }
17575
- };
17576
- }
17577
- });
17578
-
17579
- // components/game/shared/lib/physicsPresets.ts
17580
- var init_physicsPresets = __esm({
17581
- "components/game/shared/lib/physicsPresets.ts"() {
17582
- init_mechanics();
17583
- }
17584
- });
17585
- function resolvePreset(preset) {
17586
- if (typeof preset !== "string") return preset;
17587
- return PRESET_BY_ID[preset] ?? projectileMotion;
17588
- }
17589
- function SimulationCanvas({
17590
- preset: presetProp,
17591
- width = 600,
17592
- height = 400,
17593
- bodies: externalBodies,
17594
- className
17595
- }) {
17596
- const preset = useMemo(() => resolvePreset(presetProp), [presetProp]);
17597
- const canvasRef = useRef(null);
17598
- const bodiesRef = useRef(structuredClone(preset.bodies));
17599
- const interp = useRenderInterpolation();
17600
- useEffect(() => {
17601
- bodiesRef.current = structuredClone(preset.bodies);
17602
- }, [preset]);
17603
- const draw = useCallback(() => {
17604
- const canvas = canvasRef.current;
17605
- if (!canvas) return;
17606
- const ctx = canvas.getContext("2d");
17607
- if (!ctx) return;
17608
- const bodies = bodiesRef.current;
17609
- ctx.clearRect(0, 0, width, height);
17610
- ctx.fillStyle = preset.backgroundColor ?? "#1a1a2e";
17611
- ctx.fillRect(0, 0, width, height);
17612
- if (preset.constraints) {
17613
- for (const c of preset.constraints) {
17614
- const a = bodies[c.bodyA];
17615
- const b = bodies[c.bodyB];
17616
- if (a && b) {
17617
- ctx.beginPath();
17618
- ctx.moveTo(a.x, a.y);
17619
- ctx.lineTo(b.x, b.y);
17620
- ctx.strokeStyle = "#533483";
17621
- ctx.lineWidth = 1;
17622
- ctx.setLineDash([4, 4]);
17623
- ctx.stroke();
17624
- ctx.setLineDash([]);
17625
- }
17626
- }
17627
- }
17628
- for (const body of bodies) {
17629
- ctx.beginPath();
17630
- ctx.arc(body.x, body.y, body.radius, 0, Math.PI * 2);
17631
- ctx.fillStyle = body.color ?? "#e94560";
17632
- ctx.fill();
17633
- if (preset.showVelocity) {
17634
- ctx.beginPath();
17635
- ctx.moveTo(body.x, body.y);
17636
- ctx.lineTo(body.x + body.vx * 0.1, body.y + body.vy * 0.1);
17637
- ctx.strokeStyle = "#16213e";
17638
- ctx.lineWidth = 2;
17639
- ctx.stroke();
17640
- }
17641
- }
17642
- }, [width, height, preset]);
17643
- useEffect(() => {
17644
- if (!externalBodies) return;
17645
- interp.onSnapshot(externalBodies.map((b) => ({ id: b.id, x: b.x, y: b.y })));
17646
- }, [externalBodies]);
17647
- const presetRef = useRef(preset);
17648
- presetRef.current = preset;
17649
- const widthRef = useRef(width);
17650
- widthRef.current = width;
17651
- const heightRef = useRef(height);
17652
- heightRef.current = height;
17653
- useEffect(() => {
17654
- if (!externalBodies) return;
17655
- const drawInterpolated = (positions) => {
17656
- const canvas = canvasRef.current;
17657
- if (!canvas) return;
17658
- const ctx = canvas.getContext("2d");
17659
- if (!ctx) return;
17660
- const bodies = bodiesRef.current;
17661
- const p = presetRef.current;
17662
- const w = widthRef.current;
17663
- const h = heightRef.current;
17664
- ctx.clearRect(0, 0, w, h);
17665
- ctx.fillStyle = p.backgroundColor ?? "#1a1a2e";
17666
- ctx.fillRect(0, 0, w, h);
17667
- if (p.constraints) {
17668
- for (const c of p.constraints) {
17669
- const a = bodies[c.bodyA];
17670
- const b = bodies[c.bodyB];
17671
- if (a && b) {
17672
- const aPos = positions.get(a.id) ?? a;
17673
- const bPos = positions.get(b.id) ?? b;
17674
- ctx.beginPath();
17675
- ctx.moveTo(aPos.x, aPos.y);
17676
- ctx.lineTo(bPos.x, bPos.y);
17677
- ctx.strokeStyle = "#533483";
17678
- ctx.lineWidth = 1;
17679
- ctx.setLineDash([4, 4]);
17680
- ctx.stroke();
17681
- ctx.setLineDash([]);
17682
- }
17683
- }
17684
- }
17685
- for (const body of bodies) {
17686
- const pos = positions.get(body.id) ?? body;
17687
- ctx.beginPath();
17688
- ctx.arc(pos.x, pos.y, body.radius, 0, Math.PI * 2);
17689
- ctx.fillStyle = body.color ?? "#e94560";
17690
- ctx.fill();
17691
- if (p.showVelocity) {
17692
- ctx.beginPath();
17693
- ctx.moveTo(pos.x, pos.y);
17694
- ctx.lineTo(pos.x + body.vx * 0.1, pos.y + body.vy * 0.1);
17695
- ctx.strokeStyle = "#16213e";
17696
- ctx.lineWidth = 2;
17697
- ctx.stroke();
17698
- }
17699
- }
17700
- };
17701
- return interp.startLoop(drawInterpolated);
17702
- }, [externalBodies !== void 0, interp.startLoop]);
17703
- useEffect(() => {
17704
- draw();
17705
- }, [draw]);
17706
- useEffect(() => {
17707
- if (typeof window === "undefined") return;
17708
- const canvas = canvasRef.current;
17709
- if (!canvas) return;
17710
- bindCanvasCapture(() => canvas.toDataURL("image/png"));
17711
- return () => {
17712
- bindCanvasCapture(() => null);
17713
- };
17714
- }, []);
17715
- return /* @__PURE__ */ jsx(Box, { className: cn("flex justify-center", className), children: /* @__PURE__ */ jsx(
17716
- "canvas",
17717
- {
17718
- ref: canvasRef,
17719
- width,
17720
- height,
17721
- className: "rounded-container block max-w-full h-auto"
17722
- }
17723
- ) });
17724
- }
17725
- var PRESET_BY_ID;
17726
- var init_SimulationCanvas = __esm({
17727
- "components/game/2d/organisms/SimulationCanvas.tsx"() {
17728
- init_cn();
17729
- init_atoms();
17730
- init_verificationRegistry();
17731
- init_physicsPresets();
17732
- init_useRenderInterpolation();
17733
- PRESET_BY_ID = {
17734
- "mechanics-projectile": projectileMotion,
17735
- "mechanics-pendulum": pendulum,
17736
- "mechanics-spring": springOscillator
17737
- };
17738
- SimulationCanvas.displayName = "SimulationCanvas";
17739
- }
17740
- });
17741
17561
  var GameTemplate;
17742
17562
  var init_GameTemplate = __esm({
17743
17563
  "components/game/2d/templates/GameTemplate.tsx"() {
@@ -18346,7 +18166,7 @@ var init_ErrorBoundary = __esm({
18346
18166
  }
18347
18167
  );
18348
18168
  };
18349
- ErrorBoundary = class extends React105__default.Component {
18169
+ ErrorBoundary = class extends React104__default.Component {
18350
18170
  constructor(props) {
18351
18171
  super(props);
18352
18172
  __publicField(this, "reset", () => {
@@ -18628,7 +18448,7 @@ var init_Container = __esm({
18628
18448
  as: Component = "div"
18629
18449
  }) => {
18630
18450
  const resolvedSize = maxWidth ?? size ?? "lg";
18631
- return React105__default.createElement(
18451
+ return React104__default.createElement(
18632
18452
  Component,
18633
18453
  {
18634
18454
  className: cn(
@@ -20469,7 +20289,7 @@ var init_CodeBlock = __esm({
20469
20289
  DIFF_STYLE_FALLBACK = { bg: "", prefix: " ", text: "text-foreground" };
20470
20290
  LINE_PROPS_FN = (n) => ({ "data-line": String(n - 1) });
20471
20291
  HIDDEN_LINE_NUMBERS = { display: "none" };
20472
- CodeBlock = React105__default.memo(
20292
+ CodeBlock = React104__default.memo(
20473
20293
  ({
20474
20294
  code: rawCode,
20475
20295
  language = "text",
@@ -21056,7 +20876,7 @@ var init_MarkdownContent = __esm({
21056
20876
  init_Box();
21057
20877
  init_CodeBlock();
21058
20878
  init_cn();
21059
- MarkdownContent = React105__default.memo(
20879
+ MarkdownContent = React104__default.memo(
21060
20880
  ({ content, direction = "ltr", className }) => {
21061
20881
  const { t: _t } = useTranslate();
21062
20882
  const safeContent = typeof content === "string" ? content : String(content ?? "");
@@ -22383,7 +22203,7 @@ var init_StateMachineView = __esm({
22383
22203
  style: { top: title ? 30 : 0 },
22384
22204
  children: [
22385
22205
  entity && /* @__PURE__ */ jsx(EntityBox, { entity, config }),
22386
- states.map((state) => renderStateNode ? /* @__PURE__ */ jsx(React105__default.Fragment, { children: renderStateNode(state, config) }, state.id) : /* @__PURE__ */ jsx(
22206
+ states.map((state) => renderStateNode ? /* @__PURE__ */ jsx(React104__default.Fragment, { children: renderStateNode(state, config) }, state.id) : /* @__PURE__ */ jsx(
22387
22207
  StateNode2,
22388
22208
  {
22389
22209
  state,
@@ -28021,8 +27841,8 @@ var init_Menu = __esm({
28021
27841
  "bottom-end": "bottom-start"
28022
27842
  };
28023
27843
  const effectivePosition = direction === "rtl" ? rtlMirror[position] ?? position : position;
28024
- const triggerChild = React105__default.isValidElement(trigger) ? trigger : /* @__PURE__ */ jsx(Typography, { variant: "small", as: "span", children: trigger });
28025
- const triggerElement = React105__default.cloneElement(
27844
+ const triggerChild = React104__default.isValidElement(trigger) ? trigger : /* @__PURE__ */ jsx(Typography, { variant: "small", as: "span", children: trigger });
27845
+ const triggerElement = React104__default.cloneElement(
28026
27846
  triggerChild,
28027
27847
  {
28028
27848
  ref: triggerRef,
@@ -28117,14 +27937,14 @@ function useDataDnd(args) {
28117
27937
  const isZone = Boolean(dragGroup || accepts || sortable);
28118
27938
  const enabled = isZone || Boolean(dndRoot);
28119
27939
  const eventBus = useEventBus();
28120
- const parentRoot = React105__default.useContext(RootCtx);
27940
+ const parentRoot = React104__default.useContext(RootCtx);
28121
27941
  const isRoot = enabled && parentRoot === null;
28122
- const zoneId = React105__default.useId();
27942
+ const zoneId = React104__default.useId();
28123
27943
  const ownGroup = dragGroup ?? accepts ?? zoneId;
28124
- const [optimisticOrders, setOptimisticOrders] = React105__default.useState(() => /* @__PURE__ */ new Map());
28125
- const optimisticOrdersRef = React105__default.useRef(optimisticOrders);
27944
+ const [optimisticOrders, setOptimisticOrders] = React104__default.useState(() => /* @__PURE__ */ new Map());
27945
+ const optimisticOrdersRef = React104__default.useRef(optimisticOrders);
28126
27946
  optimisticOrdersRef.current = optimisticOrders;
28127
- const clearOptimisticOrder = React105__default.useCallback((group) => {
27947
+ const clearOptimisticOrder = React104__default.useCallback((group) => {
28128
27948
  setOptimisticOrders((prev) => {
28129
27949
  if (!prev.has(group)) return prev;
28130
27950
  const next = new Map(prev);
@@ -28149,7 +27969,7 @@ function useDataDnd(args) {
28149
27969
  const raw = it[dndItemIdField];
28150
27970
  return raw != null ? String(raw) : `__idx_${idx}`;
28151
27971
  }).join("|");
28152
- const itemIds = React105__default.useMemo(
27972
+ const itemIds = React104__default.useMemo(
28153
27973
  () => orderedItems.map((it, idx) => {
28154
27974
  const raw = it[dndItemIdField];
28155
27975
  return raw != null ? String(raw) : `__idx_${idx}`;
@@ -28160,7 +27980,7 @@ function useDataDnd(args) {
28160
27980
  const raw = it[dndItemIdField];
28161
27981
  return raw != null ? String(raw) : `__${idx}`;
28162
27982
  }).join("|");
28163
- React105__default.useEffect(() => {
27983
+ React104__default.useEffect(() => {
28164
27984
  const root = isRoot ? null : parentRoot;
28165
27985
  if (root) {
28166
27986
  root.clearOptimisticOrder(ownGroup);
@@ -28168,20 +27988,20 @@ function useDataDnd(args) {
28168
27988
  clearOptimisticOrder(ownGroup);
28169
27989
  }
28170
27990
  }, [itemsContentSig, ownGroup]);
28171
- const zonesRef = React105__default.useRef(/* @__PURE__ */ new Map());
28172
- const registerZone = React105__default.useCallback((zoneId2, meta2) => {
27991
+ const zonesRef = React104__default.useRef(/* @__PURE__ */ new Map());
27992
+ const registerZone = React104__default.useCallback((zoneId2, meta2) => {
28173
27993
  zonesRef.current.set(zoneId2, meta2);
28174
27994
  }, []);
28175
- const unregisterZone = React105__default.useCallback((zoneId2) => {
27995
+ const unregisterZone = React104__default.useCallback((zoneId2) => {
28176
27996
  zonesRef.current.delete(zoneId2);
28177
27997
  }, []);
28178
- const [activeDrag, setActiveDrag] = React105__default.useState(null);
28179
- const [overZoneGroup, setOverZoneGroup] = React105__default.useState(null);
28180
- const meta = React105__default.useMemo(
27998
+ const [activeDrag, setActiveDrag] = React104__default.useState(null);
27999
+ const [overZoneGroup, setOverZoneGroup] = React104__default.useState(null);
28000
+ const meta = React104__default.useMemo(
28181
28001
  () => ({ group: ownGroup, dropEvent, reorderEvent, positionEvent, itemIds, rawItems: items, idField: dndItemIdField }),
28182
28002
  [ownGroup, dropEvent, reorderEvent, positionEvent, itemIds, items, dndItemIdField]
28183
28003
  );
28184
- React105__default.useEffect(() => {
28004
+ React104__default.useEffect(() => {
28185
28005
  const target = isRoot ? null : parentRoot;
28186
28006
  if (!target) {
28187
28007
  zonesRef.current.set(zoneId, meta);
@@ -28200,7 +28020,7 @@ function useDataDnd(args) {
28200
28020
  }, [parentRoot, isRoot, zoneId, meta]);
28201
28021
  const sensors = useAlmadarDndSensors(true);
28202
28022
  const collisionDetection = almadarDndCollisionDetection;
28203
- const findZoneByItem = React105__default.useCallback(
28023
+ const findZoneByItem = React104__default.useCallback(
28204
28024
  (id) => {
28205
28025
  for (const z of zonesRef.current.values()) {
28206
28026
  if (z.itemIds.includes(id)) return z;
@@ -28209,7 +28029,7 @@ function useDataDnd(args) {
28209
28029
  },
28210
28030
  []
28211
28031
  );
28212
- React105__default.useCallback(
28032
+ React104__default.useCallback(
28213
28033
  (group) => {
28214
28034
  for (const z of zonesRef.current.values()) {
28215
28035
  if (z.group === group) return z;
@@ -28218,7 +28038,7 @@ function useDataDnd(args) {
28218
28038
  },
28219
28039
  []
28220
28040
  );
28221
- const handleDragEnd = React105__default.useCallback(
28041
+ const handleDragEnd = React104__default.useCallback(
28222
28042
  (event) => {
28223
28043
  const { active, over } = event;
28224
28044
  const activeIdStr = String(active.id);
@@ -28309,8 +28129,8 @@ function useDataDnd(args) {
28309
28129
  },
28310
28130
  [eventBus]
28311
28131
  );
28312
- const sortableData = React105__default.useMemo(() => ({ dndGroup: ownGroup }), [ownGroup]);
28313
- const SortableItem = React105__default.useCallback(
28132
+ const sortableData = React104__default.useMemo(() => ({ dndGroup: ownGroup }), [ownGroup]);
28133
+ const SortableItem = React104__default.useCallback(
28314
28134
  ({ id, children }) => {
28315
28135
  const {
28316
28136
  attributes,
@@ -28350,7 +28170,7 @@ function useDataDnd(args) {
28350
28170
  id: droppableId,
28351
28171
  data: sortableData
28352
28172
  });
28353
- const ctx = React105__default.useContext(RootCtx);
28173
+ const ctx = React104__default.useContext(RootCtx);
28354
28174
  const activeDrag2 = ctx?.activeDrag ?? null;
28355
28175
  const overZoneGroup2 = ctx?.overZoneGroup ?? null;
28356
28176
  const isThisZoneOver = overZoneGroup2 === ownGroup;
@@ -28365,7 +28185,7 @@ function useDataDnd(args) {
28365
28185
  showForeignPlaceholder,
28366
28186
  ctxAvailable: ctx != null
28367
28187
  });
28368
- React105__default.useEffect(() => {
28188
+ React104__default.useEffect(() => {
28369
28189
  dndLog.info("dropzone:isOver:change", { droppableId, group: ownGroup, isOver, isThisZoneOver, showForeignPlaceholder, activeDragSourceGroup: activeDrag2?.sourceGroup ?? null });
28370
28190
  }, [droppableId, isOver, isThisZoneOver, showForeignPlaceholder]);
28371
28191
  return /* @__PURE__ */ jsx(
@@ -28379,11 +28199,11 @@ function useDataDnd(args) {
28379
28199
  }
28380
28200
  );
28381
28201
  };
28382
- const rootContextValue = React105__default.useMemo(
28202
+ const rootContextValue = React104__default.useMemo(
28383
28203
  () => ({ registerZone, unregisterZone, activeDrag, overZoneGroup, optimisticOrders, clearOptimisticOrder }),
28384
28204
  [registerZone, unregisterZone, activeDrag, overZoneGroup, optimisticOrders, clearOptimisticOrder]
28385
28205
  );
28386
- const handleDragStart = React105__default.useCallback((event) => {
28206
+ const handleDragStart = React104__default.useCallback((event) => {
28387
28207
  const sourceZone = findZoneByItem(event.active.id);
28388
28208
  const rect = event.active.rect.current.initial;
28389
28209
  const height = rect?.height && rect.height > 0 ? rect.height : 64;
@@ -28402,7 +28222,7 @@ function useDataDnd(args) {
28402
28222
  isRoot
28403
28223
  });
28404
28224
  }, [findZoneByItem, isRoot, zoneId]);
28405
- const handleDragOver = React105__default.useCallback((event) => {
28225
+ const handleDragOver = React104__default.useCallback((event) => {
28406
28226
  const { active, over } = event;
28407
28227
  const overData = over?.data?.current;
28408
28228
  const overGroup = overData?.dndGroup ?? null;
@@ -28472,7 +28292,7 @@ function useDataDnd(args) {
28472
28292
  return next;
28473
28293
  });
28474
28294
  }, []);
28475
- const handleDragCancel = React105__default.useCallback((event) => {
28295
+ const handleDragCancel = React104__default.useCallback((event) => {
28476
28296
  setActiveDrag(null);
28477
28297
  setOverZoneGroup(null);
28478
28298
  dndLog.warn("dragCancel", {
@@ -28480,12 +28300,12 @@ function useDataDnd(args) {
28480
28300
  reason: "dnd-kit cancelled the drag (escape key, pointer interrupted, or external)"
28481
28301
  });
28482
28302
  }, []);
28483
- const handleDragEndWithCleanup = React105__default.useCallback((event) => {
28303
+ const handleDragEndWithCleanup = React104__default.useCallback((event) => {
28484
28304
  handleDragEnd(event);
28485
28305
  setActiveDrag(null);
28486
28306
  setOverZoneGroup(null);
28487
28307
  }, [handleDragEnd]);
28488
- const wrapContainer = React105__default.useCallback(
28308
+ const wrapContainer = React104__default.useCallback(
28489
28309
  (children) => {
28490
28310
  if (!enabled) return children;
28491
28311
  const strategy = layout === "grid" ? rectSortingStrategy : verticalListSortingStrategy;
@@ -28539,7 +28359,7 @@ var init_useDataDnd = __esm({
28539
28359
  init_useAlmadarDndCollision();
28540
28360
  init_Box();
28541
28361
  dndLog = createLogger("almadar:ui:dnd");
28542
- RootCtx = React105__default.createContext(null);
28362
+ RootCtx = React104__default.createContext(null);
28543
28363
  }
28544
28364
  });
28545
28365
  function renderIconInput(icon, props) {
@@ -29065,7 +28885,7 @@ function DataList({
29065
28885
  }) {
29066
28886
  const eventBus = useEventBus();
29067
28887
  const { t } = useTranslate();
29068
- const [visibleCount, setVisibleCount] = React105__default.useState(pageSize || Infinity);
28888
+ const [visibleCount, setVisibleCount] = React104__default.useState(pageSize || Infinity);
29069
28889
  const fieldDefs = fields ?? columns ?? [];
29070
28890
  const allDataRaw = Array.isArray(entity) ? entity : entity ? [entity] : [];
29071
28891
  const dnd = useDataDnd({
@@ -29084,7 +28904,7 @@ function DataList({
29084
28904
  const data = pageSize > 0 ? allData.slice(0, visibleCount) : allData;
29085
28905
  const hasMoreLocal = pageSize > 0 && visibleCount < allData.length;
29086
28906
  const hasRenderProp = typeof children === "function";
29087
- React105__default.useEffect(() => {
28907
+ React104__default.useEffect(() => {
29088
28908
  const renderItemTypeOf = typeof schemaRenderItem;
29089
28909
  const childrenTypeOf = typeof children;
29090
28910
  if (data.length > 0 && !hasRenderProp) {
@@ -29188,7 +29008,7 @@ function DataList({
29188
29008
  const items2 = [...data];
29189
29009
  const groups2 = groupBy ? groupData(items2, groupBy) : [{ label: "", items: items2 }];
29190
29010
  const contentField = titleField?.name ?? fieldDefs[0]?.name ?? "";
29191
- return /* @__PURE__ */ jsx(VStack, { gap: "sm", className: cn("py-2", className), children: groups2.map((group, gi) => /* @__PURE__ */ jsxs(React105__default.Fragment, { children: [
29011
+ return /* @__PURE__ */ jsx(VStack, { gap: "sm", className: cn("py-2", className), children: groups2.map((group, gi) => /* @__PURE__ */ jsxs(React104__default.Fragment, { children: [
29192
29012
  group.label && /* @__PURE__ */ jsx(Divider, { label: group.label, className: "my-2" }),
29193
29013
  group.items.map((itemData, index) => {
29194
29014
  const id = itemData.id || `${gi}-${index}`;
@@ -29329,7 +29149,7 @@ function DataList({
29329
29149
  className
29330
29150
  ),
29331
29151
  children: [
29332
- groups.map((group, gi) => /* @__PURE__ */ jsxs(React105__default.Fragment, { children: [
29152
+ groups.map((group, gi) => /* @__PURE__ */ jsxs(React104__default.Fragment, { children: [
29333
29153
  group.label && /* @__PURE__ */ jsx(Divider, { label: group.label, className: gi > 0 ? "mt-4" : "mt-0" }),
29334
29154
  group.items.map(
29335
29155
  (itemData, index) => renderItem(itemData, index, gi === groups.length - 1 && index === group.items.length - 1)
@@ -29414,7 +29234,7 @@ var init_FormSection = __esm({
29414
29234
  columns = 1,
29415
29235
  className
29416
29236
  }) => {
29417
- const [collapsed, setCollapsed] = React105__default.useState(defaultCollapsed);
29237
+ const [collapsed, setCollapsed] = React104__default.useState(defaultCollapsed);
29418
29238
  const { t } = useTranslate();
29419
29239
  const eventBus = useEventBus();
29420
29240
  const gridClass = {
@@ -29422,7 +29242,7 @@ var init_FormSection = __esm({
29422
29242
  2: "grid-cols-1 md:grid-cols-2",
29423
29243
  3: "grid-cols-1 md:grid-cols-2 lg:grid-cols-3"
29424
29244
  }[columns];
29425
- React105__default.useCallback(() => {
29245
+ React104__default.useCallback(() => {
29426
29246
  if (collapsible) {
29427
29247
  setCollapsed((prev) => !prev);
29428
29248
  eventBus.emit("UI:TOGGLE_COLLAPSE", { collapsed: !collapsed });
@@ -30372,7 +30192,7 @@ var init_Flex = __esm({
30372
30192
  flexStyle.flexBasis = typeof basis === "number" ? `${basis}px` : basis;
30373
30193
  }
30374
30194
  }
30375
- return React105__default.createElement(Component, {
30195
+ return React104__default.createElement(Component, {
30376
30196
  className: cn(
30377
30197
  inline ? "inline-flex" : "flex",
30378
30198
  directionStyles[direction],
@@ -30491,7 +30311,7 @@ var init_Grid = __esm({
30491
30311
  as: Component = "div"
30492
30312
  }) => {
30493
30313
  const mergedStyle = rows2 ? { gridTemplateRows: `repeat(${rows2}, minmax(0, 1fr))`, ...style } : style;
30494
- return React105__default.createElement(
30314
+ return React104__default.createElement(
30495
30315
  Component,
30496
30316
  {
30497
30317
  className: cn(
@@ -30687,9 +30507,9 @@ var init_Popover = __esm({
30687
30507
  onMouseLeave: handleClose,
30688
30508
  onPointerDown: tapTriggerProps.onPointerDown
30689
30509
  };
30690
- const childElement = React105__default.isValidElement(children) ? children : /* @__PURE__ */ jsx("span", { children });
30510
+ const childElement = React104__default.isValidElement(children) ? children : /* @__PURE__ */ jsx("span", { children });
30691
30511
  const childPointerDown = childElement.props.onPointerDown;
30692
- const triggerElement = React105__default.cloneElement(
30512
+ const triggerElement = React104__default.cloneElement(
30693
30513
  childElement,
30694
30514
  {
30695
30515
  ref: triggerRef,
@@ -31291,9 +31111,9 @@ var init_Tooltip = __esm({
31291
31111
  if (hideTimeoutRef.current) clearTimeout(hideTimeoutRef.current);
31292
31112
  };
31293
31113
  }, []);
31294
- const triggerElement = React105__default.isValidElement(children) ? children : /* @__PURE__ */ jsx("span", { children });
31114
+ const triggerElement = React104__default.isValidElement(children) ? children : /* @__PURE__ */ jsx("span", { children });
31295
31115
  const childPointerDown = triggerElement.props.onPointerDown;
31296
- const trigger = React105__default.cloneElement(triggerElement, {
31116
+ const trigger = React104__default.cloneElement(triggerElement, {
31297
31117
  ref: triggerRef,
31298
31118
  onMouseEnter: handleMouseEnter,
31299
31119
  onMouseLeave: handleMouseLeave,
@@ -31383,7 +31203,7 @@ var init_WizardProgress = __esm({
31383
31203
  children: /* @__PURE__ */ jsx("div", { className: "flex items-center gap-2", children: normalizedSteps.map((step, index) => {
31384
31204
  const isActive = index === currentStep;
31385
31205
  const isCompleted = index < currentStep;
31386
- return /* @__PURE__ */ jsxs(React105__default.Fragment, { children: [
31206
+ return /* @__PURE__ */ jsxs(React104__default.Fragment, { children: [
31387
31207
  /* @__PURE__ */ jsx(
31388
31208
  "button",
31389
31209
  {
@@ -32943,13 +32763,13 @@ var init_MapView = __esm({
32943
32763
  shadowSize: [41, 41]
32944
32764
  });
32945
32765
  L.Marker.prototype.options.icon = defaultIcon;
32946
- const { useEffect: useEffect71, useRef: useRef67, useCallback: useCallback105, useState: useState105 } = React105__default;
32766
+ const { useEffect: useEffect70, useRef: useRef66, useCallback: useCallback104, useState: useState105 } = React104__default;
32947
32767
  const { Typography: Typography2 } = await Promise.resolve().then(() => (init_Typography(), Typography_exports));
32948
32768
  const { useEventBus: useEventBus2 } = await Promise.resolve().then(() => (init_useEventBus(), useEventBus_exports));
32949
32769
  function MapUpdater({ centerLat, centerLng, zoom }) {
32950
32770
  const map = useMap();
32951
- const prevRef = useRef67({ centerLat, centerLng, zoom });
32952
- useEffect71(() => {
32771
+ const prevRef = useRef66({ centerLat, centerLng, zoom });
32772
+ useEffect70(() => {
32953
32773
  const prev = prevRef.current;
32954
32774
  if (prev.centerLat !== centerLat || prev.centerLng !== centerLng || prev.zoom !== zoom) {
32955
32775
  map.setView([centerLat, centerLng], zoom);
@@ -32960,7 +32780,7 @@ var init_MapView = __esm({
32960
32780
  }
32961
32781
  function MapClickHandler({ onMapClick }) {
32962
32782
  const map = useMap();
32963
- useEffect71(() => {
32783
+ useEffect70(() => {
32964
32784
  if (!onMapClick) return;
32965
32785
  const handler = (e) => {
32966
32786
  onMapClick(e.latlng.lat, e.latlng.lng);
@@ -32989,7 +32809,7 @@ var init_MapView = __esm({
32989
32809
  }) {
32990
32810
  const eventBus = useEventBus2();
32991
32811
  const [clickedPosition, setClickedPosition] = useState105(null);
32992
- const handleMapClick = useCallback105((lat, lng) => {
32812
+ const handleMapClick = useCallback104((lat, lng) => {
32993
32813
  if (showClickedPin) {
32994
32814
  setClickedPosition({ lat, lng });
32995
32815
  }
@@ -32998,7 +32818,7 @@ var init_MapView = __esm({
32998
32818
  eventBus.emit(`UI:${mapClickEvent}`, { latitude: lat, longitude: lng });
32999
32819
  }
33000
32820
  }, [onMapClick, mapClickEvent, eventBus, showClickedPin]);
33001
- const handleMarkerClick = useCallback105((marker) => {
32821
+ const handleMarkerClick = useCallback104((marker) => {
33002
32822
  onMarkerClick?.(marker);
33003
32823
  if (markerClickEvent) {
33004
32824
  eventBus.emit(`UI:${markerClickEvent}`, { ...marker });
@@ -33858,8 +33678,8 @@ function TableView({
33858
33678
  }) {
33859
33679
  const eventBus = useEventBus();
33860
33680
  const { t } = useTranslate();
33861
- const [visibleCount, setVisibleCount] = React105__default.useState(pageSize > 0 ? pageSize : Infinity);
33862
- const [localSelected, setLocalSelected] = React105__default.useState(/* @__PURE__ */ new Set());
33681
+ const [visibleCount, setVisibleCount] = React104__default.useState(pageSize > 0 ? pageSize : Infinity);
33682
+ const [localSelected, setLocalSelected] = React104__default.useState(/* @__PURE__ */ new Set());
33863
33683
  const colDefs = columns ?? fields ?? [];
33864
33684
  const allDataRaw = Array.isArray(entity) ? entity : entity ? [entity] : [];
33865
33685
  const dnd = useDataDnd({
@@ -34054,12 +33874,12 @@ function TableView({
34054
33874
  ]
34055
33875
  }
34056
33876
  );
34057
- return dnd.isZone ? /* @__PURE__ */ jsx(dnd.SortableItem, { id: row[idField] ?? id, children: rowInner }, id) : /* @__PURE__ */ jsx(React105__default.Fragment, { children: rowInner }, id);
33877
+ return dnd.isZone ? /* @__PURE__ */ jsx(dnd.SortableItem, { id: row[idField] ?? id, children: rowInner }, id) : /* @__PURE__ */ jsx(React104__default.Fragment, { children: rowInner }, id);
34058
33878
  };
34059
33879
  const items = Array.from(data);
34060
33880
  const groups = groupBy ? groupData2(items, groupBy) : [{ label: "", items }];
34061
33881
  let runningIndex = 0;
34062
- const body = /* @__PURE__ */ jsx(Box, { role: "rowgroup", children: groups.map((group, gi) => /* @__PURE__ */ jsxs(React105__default.Fragment, { children: [
33882
+ const body = /* @__PURE__ */ jsx(Box, { role: "rowgroup", children: groups.map((group, gi) => /* @__PURE__ */ jsxs(React104__default.Fragment, { children: [
34063
33883
  group.label && /* @__PURE__ */ jsx(Divider, { label: group.label, className: gi > 0 ? "mt-3" : "mt-0" }),
34064
33884
  group.items.map((row) => renderRow(row, runningIndex++))
34065
33885
  ] }, gi)) });
@@ -35416,7 +35236,7 @@ var init_StepFlow = __esm({
35416
35236
  className
35417
35237
  }) => {
35418
35238
  if (orientation === "vertical") {
35419
- return /* @__PURE__ */ jsx(VStack, { gap: "none", className: cn("w-full", className), children: steps.map((step, index) => /* @__PURE__ */ jsx(React105__default.Fragment, { children: /* @__PURE__ */ jsxs(HStack, { gap: "md", align: "start", className: "w-full", children: [
35239
+ return /* @__PURE__ */ jsx(VStack, { gap: "none", className: cn("w-full", className), children: steps.map((step, index) => /* @__PURE__ */ jsx(React104__default.Fragment, { children: /* @__PURE__ */ jsxs(HStack, { gap: "md", align: "start", className: "w-full", children: [
35420
35240
  /* @__PURE__ */ jsxs(VStack, { gap: "none", align: "center", children: [
35421
35241
  /* @__PURE__ */ jsx(StepCircle, { step, index }),
35422
35242
  showConnectors && index < steps.length - 1 && /* @__PURE__ */ jsx(Box, { className: "w-px h-8 bg-border" })
@@ -35427,7 +35247,7 @@ var init_StepFlow = __esm({
35427
35247
  ] })
35428
35248
  ] }) }, index)) });
35429
35249
  }
35430
- 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(React105__default.Fragment, { children: [
35250
+ 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(React104__default.Fragment, { children: [
35431
35251
  /* @__PURE__ */ jsxs(VStack, { gap: "sm", align: "center", className: "flex-1 w-full md:w-auto", children: [
35432
35252
  /* @__PURE__ */ jsx(StepCircle, { step, index }),
35433
35253
  /* @__PURE__ */ jsx(Typography, { variant: "h4", className: "text-center", children: step.title }),
@@ -36412,7 +36232,7 @@ var init_LikertScale = __esm({
36412
36232
  md: "text-base",
36413
36233
  lg: "text-lg"
36414
36234
  };
36415
- LikertScale = React105__default.forwardRef(
36235
+ LikertScale = React104__default.forwardRef(
36416
36236
  ({
36417
36237
  question,
36418
36238
  options = DEFAULT_LIKERT_OPTIONS,
@@ -36424,7 +36244,7 @@ var init_LikertScale = __esm({
36424
36244
  variant = "radios",
36425
36245
  className
36426
36246
  }, ref) => {
36427
- const groupId = React105__default.useId();
36247
+ const groupId = React104__default.useId();
36428
36248
  const eventBus = useEventBus();
36429
36249
  const handleSelect = useCallback(
36430
36250
  (next) => {
@@ -38706,7 +38526,7 @@ var init_DocBreadcrumb = __esm({
38706
38526
  "aria-label": t("aria.breadcrumb"),
38707
38527
  children: /* @__PURE__ */ jsx(HStack, { gap: "xs", align: "center", wrap: true, children: items.map((item, idx) => {
38708
38528
  const isLast = idx === items.length - 1;
38709
- return /* @__PURE__ */ jsxs(React105__default.Fragment, { children: [
38529
+ return /* @__PURE__ */ jsxs(React104__default.Fragment, { children: [
38710
38530
  idx > 0 && /* @__PURE__ */ jsx(
38711
38531
  Icon,
38712
38532
  {
@@ -39370,7 +39190,7 @@ var init_PageHeader = __esm({
39370
39190
  info: "bg-info/10 text-info"
39371
39191
  };
39372
39192
  return /* @__PURE__ */ jsxs(Box, { className: cn("mb-6", className), children: [
39373
- 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(React105__default.Fragment, { children: [
39193
+ 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(React104__default.Fragment, { children: [
39374
39194
  idx > 0 && /* @__PURE__ */ jsx(Typography, { variant: "small", color: "muted", children: "/" }),
39375
39195
  crumb.href ? /* @__PURE__ */ jsx(
39376
39196
  "a",
@@ -39728,7 +39548,7 @@ var init_Section = __esm({
39728
39548
  as: Component = "section"
39729
39549
  }) => {
39730
39550
  const hasHeader = title || description || action;
39731
- return React105__default.createElement(
39551
+ return React104__default.createElement(
39732
39552
  Component,
39733
39553
  {
39734
39554
  className: cn(
@@ -40102,7 +39922,7 @@ var init_WizardContainer = __esm({
40102
39922
  const isCompleted = index < currentStep;
40103
39923
  const stepKey = step.id ?? step.tabId ?? `step-${index}`;
40104
39924
  const stepTitle = step.title ?? step.name ?? `Step ${index + 1}`;
40105
- return /* @__PURE__ */ jsxs(React105__default.Fragment, { children: [
39925
+ return /* @__PURE__ */ jsxs(React104__default.Fragment, { children: [
40106
39926
  /* @__PURE__ */ jsx(
40107
39927
  Button,
40108
39928
  {
@@ -42535,7 +42355,7 @@ var init_DetailPanel = __esm({
42535
42355
  }
42536
42356
  });
42537
42357
  function extractTitle(children) {
42538
- if (!React105__default.isValidElement(children)) return void 0;
42358
+ if (!React104__default.isValidElement(children)) return void 0;
42539
42359
  const props = children.props;
42540
42360
  if (typeof props.title === "string") {
42541
42361
  return props.title;
@@ -42885,12 +42705,12 @@ var init_Form = __esm({
42885
42705
  const isSchemaEntity = isOrbitalEntitySchema(entity);
42886
42706
  const resolvedEntity = isSchemaEntity ? entity : void 0;
42887
42707
  const entityName = typeof entity === "string" ? entity : resolvedEntity?.name;
42888
- const normalizedInitialData = React105__default.useMemo(() => {
42708
+ const normalizedInitialData = React104__default.useMemo(() => {
42889
42709
  const entityRowAsInitial = isPlainEntityRow(entity) ? entity : void 0;
42890
42710
  const callerInitial = initialData !== null && typeof initialData === "object" && !Array.isArray(initialData) ? initialData : {};
42891
42711
  return entityRowAsInitial !== void 0 ? { ...entityRowAsInitial, ...callerInitial } : callerInitial;
42892
42712
  }, [entity, initialData]);
42893
- const entityDerivedFields = React105__default.useMemo(() => {
42713
+ const entityDerivedFields = React104__default.useMemo(() => {
42894
42714
  if (fields && fields.length > 0) return void 0;
42895
42715
  if (!resolvedEntity) return void 0;
42896
42716
  return resolvedEntity.fields.map(
@@ -42911,16 +42731,16 @@ var init_Form = __esm({
42911
42731
  const conditionalFields = typeof conditionalFieldsRaw === "boolean" ? {} : conditionalFieldsRaw;
42912
42732
  const hiddenCalculations = typeof hiddenCalculationsRaw === "boolean" ? [] : hiddenCalculationsRaw;
42913
42733
  const violationTriggers = typeof violationTriggersRaw === "boolean" ? [] : violationTriggersRaw;
42914
- const [formData, setFormData] = React105__default.useState(
42734
+ const [formData, setFormData] = React104__default.useState(
42915
42735
  normalizedInitialData
42916
42736
  );
42917
- const [collapsedSections, setCollapsedSections] = React105__default.useState(
42737
+ const [collapsedSections, setCollapsedSections] = React104__default.useState(
42918
42738
  /* @__PURE__ */ new Set()
42919
42739
  );
42920
- const [submitError, setSubmitError] = React105__default.useState(null);
42921
- const formRef = React105__default.useRef(null);
42740
+ const [submitError, setSubmitError] = React104__default.useState(null);
42741
+ const formRef = React104__default.useRef(null);
42922
42742
  const formMode = props.mode;
42923
- const mountedRef = React105__default.useRef(false);
42743
+ const mountedRef = React104__default.useRef(false);
42924
42744
  if (!mountedRef.current) {
42925
42745
  mountedRef.current = true;
42926
42746
  debug("forms", "mount", {
@@ -42933,7 +42753,7 @@ var init_Form = __esm({
42933
42753
  });
42934
42754
  }
42935
42755
  const shouldShowCancel = showCancel ?? (fields && fields.length > 0);
42936
- const evalContext = React105__default.useMemo(
42756
+ const evalContext = React104__default.useMemo(
42937
42757
  () => ({
42938
42758
  formValues: formData,
42939
42759
  globalVariables: externalContext?.globalVariables ?? {},
@@ -42942,7 +42762,7 @@ var init_Form = __esm({
42942
42762
  }),
42943
42763
  [formData, externalContext]
42944
42764
  );
42945
- React105__default.useEffect(() => {
42765
+ React104__default.useEffect(() => {
42946
42766
  debug("forms", "initialData-sync", {
42947
42767
  mode: formMode,
42948
42768
  normalizedInitialData,
@@ -42953,7 +42773,7 @@ var init_Form = __esm({
42953
42773
  setFormData(normalizedInitialData);
42954
42774
  }
42955
42775
  }, [normalizedInitialData]);
42956
- const processCalculations = React105__default.useCallback(
42776
+ const processCalculations = React104__default.useCallback(
42957
42777
  (changedFieldId, newFormData) => {
42958
42778
  if (!hiddenCalculations.length) return;
42959
42779
  const context = {
@@ -42978,7 +42798,7 @@ var init_Form = __esm({
42978
42798
  },
42979
42799
  [hiddenCalculations, externalContext, eventBus]
42980
42800
  );
42981
- const checkViolations = React105__default.useCallback(
42801
+ const checkViolations = React104__default.useCallback(
42982
42802
  (changedFieldId, newFormData) => {
42983
42803
  if (!violationTriggers.length) return;
42984
42804
  const context = {
@@ -43016,7 +42836,7 @@ var init_Form = __esm({
43016
42836
  processCalculations(name, newFormData);
43017
42837
  checkViolations(name, newFormData);
43018
42838
  };
43019
- const isFieldVisible = React105__default.useCallback(
42839
+ const isFieldVisible = React104__default.useCallback(
43020
42840
  (fieldName) => {
43021
42841
  const condition = conditionalFields[fieldName];
43022
42842
  if (!condition) return true;
@@ -43024,7 +42844,7 @@ var init_Form = __esm({
43024
42844
  },
43025
42845
  [conditionalFields, evalContext]
43026
42846
  );
43027
- const isSectionVisible = React105__default.useCallback(
42847
+ const isSectionVisible = React104__default.useCallback(
43028
42848
  (section) => {
43029
42849
  if (!section.condition) return true;
43030
42850
  return Boolean(evaluateFormExpression(section.condition, evalContext));
@@ -43100,7 +42920,7 @@ var init_Form = __esm({
43100
42920
  eventBus.emit(`UI:${onCancel}`);
43101
42921
  }
43102
42922
  };
43103
- const renderField = React105__default.useCallback(
42923
+ const renderField = React104__default.useCallback(
43104
42924
  (field) => {
43105
42925
  const fieldName = field.name || field.field;
43106
42926
  if (!fieldName) return null;
@@ -43121,7 +42941,7 @@ var init_Form = __esm({
43121
42941
  [formData, isFieldVisible, relationsData, relationsLoading, isLoading]
43122
42942
  );
43123
42943
  const effectiveFields = entityDerivedFields ?? fields;
43124
- const normalizedFields = React105__default.useMemo(() => {
42944
+ const normalizedFields = React104__default.useMemo(() => {
43125
42945
  if (!effectiveFields || effectiveFields.length === 0) return [];
43126
42946
  return effectiveFields.map((field) => {
43127
42947
  if (typeof field === "string") {
@@ -43145,7 +42965,7 @@ var init_Form = __esm({
43145
42965
  return field;
43146
42966
  });
43147
42967
  }, [effectiveFields, resolvedEntity]);
43148
- const schemaFields = React105__default.useMemo(() => {
42968
+ const schemaFields = React104__default.useMemo(() => {
43149
42969
  if (normalizedFields.length === 0) return null;
43150
42970
  if (isDebugEnabled()) {
43151
42971
  debugGroup(`Form: ${entityName || "unknown"}`);
@@ -43155,7 +42975,7 @@ var init_Form = __esm({
43155
42975
  }
43156
42976
  return normalizedFields.map(renderField).filter(Boolean);
43157
42977
  }, [normalizedFields, renderField, entityName, conditionalFields]);
43158
- const sectionElements = React105__default.useMemo(() => {
42978
+ const sectionElements = React104__default.useMemo(() => {
43159
42979
  if (!sections || sections.length === 0) return null;
43160
42980
  return sections.map((section) => {
43161
42981
  if (!isSectionVisible(section)) {
@@ -43880,7 +43700,7 @@ var init_List = __esm({
43880
43700
  if (entity && typeof entity === "object" && "id" in entity) return [entity];
43881
43701
  return [];
43882
43702
  }, [entity]);
43883
- const getItemActions = React105__default.useCallback(
43703
+ const getItemActions = React104__default.useCallback(
43884
43704
  (item) => {
43885
43705
  if (!itemActions) return [];
43886
43706
  if (typeof itemActions === "function") {
@@ -44355,7 +44175,7 @@ var init_MediaGallery = __esm({
44355
44175
  [selectable, selectedItems, selectionEvent, eventBus]
44356
44176
  );
44357
44177
  const entityData = Array.isArray(entity) ? entity : [];
44358
- const items = React105__default.useMemo(() => {
44178
+ const items = React104__default.useMemo(() => {
44359
44179
  if (propItems) return propItems;
44360
44180
  if (entityData.length === 0) return [];
44361
44181
  return entityData.map((record, idx) => {
@@ -44518,7 +44338,7 @@ var init_MediaGallery = __esm({
44518
44338
  }
44519
44339
  });
44520
44340
  function extractTitle2(children) {
44521
- if (!React105__default.isValidElement(children)) return void 0;
44341
+ if (!React104__default.isValidElement(children)) return void 0;
44522
44342
  const props = children.props;
44523
44343
  if (typeof props.title === "string") {
44524
44344
  return props.title;
@@ -44792,7 +44612,7 @@ var init_debugRegistry = __esm({
44792
44612
  }
44793
44613
  });
44794
44614
  function useDebugData() {
44795
- const [data, setData] = React105.useState(() => ({
44615
+ const [data, setData] = React104.useState(() => ({
44796
44616
  traits: [],
44797
44617
  ticks: [],
44798
44618
  guards: [],
@@ -44806,7 +44626,7 @@ function useDebugData() {
44806
44626
  },
44807
44627
  lastUpdate: Date.now()
44808
44628
  }));
44809
- React105.useEffect(() => {
44629
+ React104.useEffect(() => {
44810
44630
  const updateData = () => {
44811
44631
  setData({
44812
44632
  traits: getAllTraits(),
@@ -44915,12 +44735,12 @@ function layoutGraph(states, transitions, initialState, width, height) {
44915
44735
  return positions;
44916
44736
  }
44917
44737
  function WalkMinimap() {
44918
- const [walkStep, setWalkStep] = React105.useState(null);
44919
- const [traits2, setTraits] = React105.useState([]);
44920
- const [coveredEdges, setCoveredEdges] = React105.useState([]);
44921
- const [completedTraits, setCompletedTraits] = React105.useState(/* @__PURE__ */ new Set());
44922
- const prevTraitRef = React105.useRef(null);
44923
- React105.useEffect(() => {
44738
+ const [walkStep, setWalkStep] = React104.useState(null);
44739
+ const [traits2, setTraits] = React104.useState([]);
44740
+ const [coveredEdges, setCoveredEdges] = React104.useState([]);
44741
+ const [completedTraits, setCompletedTraits] = React104.useState(/* @__PURE__ */ new Set());
44742
+ const prevTraitRef = React104.useRef(null);
44743
+ React104.useEffect(() => {
44924
44744
  const interval = setInterval(() => {
44925
44745
  const w = window;
44926
44746
  const step = w.__orbitalWalkStep;
@@ -45356,15 +45176,15 @@ var init_EntitiesTab = __esm({
45356
45176
  });
45357
45177
  function EventFlowTab({ events: events2 }) {
45358
45178
  const { t } = useTranslate();
45359
- const [filter, setFilter] = React105.useState("all");
45360
- const containerRef = React105.useRef(null);
45361
- const [autoScroll, setAutoScroll] = React105.useState(true);
45362
- React105.useEffect(() => {
45179
+ const [filter, setFilter] = React104.useState("all");
45180
+ const containerRef = React104.useRef(null);
45181
+ const [autoScroll, setAutoScroll] = React104.useState(true);
45182
+ React104.useEffect(() => {
45363
45183
  if (autoScroll && containerRef.current) {
45364
45184
  containerRef.current.scrollTop = containerRef.current.scrollHeight;
45365
45185
  }
45366
45186
  }, [events2.length, autoScroll]);
45367
- const filteredEvents = React105.useMemo(() => {
45187
+ const filteredEvents = React104.useMemo(() => {
45368
45188
  if (filter === "all") return events2;
45369
45189
  return events2.filter((e) => e.type === filter);
45370
45190
  }, [events2, filter]);
@@ -45480,7 +45300,7 @@ var init_EventFlowTab = __esm({
45480
45300
  });
45481
45301
  function GuardsPanel({ guards }) {
45482
45302
  const { t } = useTranslate();
45483
- const [filter, setFilter] = React105.useState("all");
45303
+ const [filter, setFilter] = React104.useState("all");
45484
45304
  if (guards.length === 0) {
45485
45305
  return /* @__PURE__ */ jsx(
45486
45306
  EmptyState,
@@ -45493,7 +45313,7 @@ function GuardsPanel({ guards }) {
45493
45313
  }
45494
45314
  const passedCount = guards.filter((g) => g.result).length;
45495
45315
  const failedCount = guards.length - passedCount;
45496
- const filteredGuards = React105.useMemo(() => {
45316
+ const filteredGuards = React104.useMemo(() => {
45497
45317
  if (filter === "all") return guards;
45498
45318
  if (filter === "passed") return guards.filter((g) => g.result);
45499
45319
  return guards.filter((g) => !g.result);
@@ -45656,10 +45476,10 @@ function EffectBadge({ effect }) {
45656
45476
  }
45657
45477
  function TransitionTimeline({ transitions }) {
45658
45478
  const { t } = useTranslate();
45659
- const containerRef = React105.useRef(null);
45660
- const [autoScroll, setAutoScroll] = React105.useState(true);
45661
- const [expandedId, setExpandedId] = React105.useState(null);
45662
- React105.useEffect(() => {
45479
+ const containerRef = React104.useRef(null);
45480
+ const [autoScroll, setAutoScroll] = React104.useState(true);
45481
+ const [expandedId, setExpandedId] = React104.useState(null);
45482
+ React104.useEffect(() => {
45663
45483
  if (autoScroll && containerRef.current) {
45664
45484
  containerRef.current.scrollTop = containerRef.current.scrollHeight;
45665
45485
  }
@@ -45939,9 +45759,9 @@ function getAllEvents(traits2) {
45939
45759
  function EventDispatcherTab({ traits: traits2, schema }) {
45940
45760
  const eventBus = useEventBus();
45941
45761
  const { t } = useTranslate();
45942
- const [log11, setLog] = React105.useState([]);
45943
- const prevStatesRef = React105.useRef(/* @__PURE__ */ new Map());
45944
- React105.useEffect(() => {
45762
+ const [log11, setLog] = React104.useState([]);
45763
+ const prevStatesRef = React104.useRef(/* @__PURE__ */ new Map());
45764
+ React104.useEffect(() => {
45945
45765
  for (const trait of traits2) {
45946
45766
  const prev = prevStatesRef.current.get(trait.id);
45947
45767
  if (prev && prev !== trait.currentState) {
@@ -46110,10 +45930,10 @@ function VerifyModePanel({
46110
45930
  localCount
46111
45931
  }) {
46112
45932
  const { t } = useTranslate();
46113
- const [expanded, setExpanded] = React105.useState(true);
46114
- const scrollRef = React105.useRef(null);
46115
- const prevCountRef = React105.useRef(0);
46116
- React105.useEffect(() => {
45933
+ const [expanded, setExpanded] = React104.useState(true);
45934
+ const scrollRef = React104.useRef(null);
45935
+ const prevCountRef = React104.useRef(0);
45936
+ React104.useEffect(() => {
46117
45937
  if (expanded && transitions.length > prevCountRef.current && scrollRef.current) {
46118
45938
  scrollRef.current.scrollTop = scrollRef.current.scrollHeight;
46119
45939
  }
@@ -46170,10 +45990,10 @@ function RuntimeDebugger({
46170
45990
  schema
46171
45991
  }) {
46172
45992
  const { t } = useTranslate();
46173
- const [isCollapsed, setIsCollapsed] = React105.useState(mode === "verify" ? true : defaultCollapsed);
46174
- const [isVisible, setIsVisible] = React105.useState(mode === "inline" || mode === "verify" || isDebugEnabled2());
45993
+ const [isCollapsed, setIsCollapsed] = React104.useState(mode === "verify" ? true : defaultCollapsed);
45994
+ const [isVisible, setIsVisible] = React104.useState(mode === "inline" || mode === "verify" || isDebugEnabled2());
46175
45995
  const debugData = useDebugData();
46176
- React105.useEffect(() => {
45996
+ React104.useEffect(() => {
46177
45997
  if (mode === "inline") return;
46178
45998
  return onDebugToggle((enabled) => {
46179
45999
  setIsVisible(enabled);
@@ -46182,7 +46002,7 @@ function RuntimeDebugger({
46182
46002
  }
46183
46003
  });
46184
46004
  }, [mode]);
46185
- React105.useEffect(() => {
46005
+ React104.useEffect(() => {
46186
46006
  if (mode === "inline") return;
46187
46007
  const handleKeyDown = (e) => {
46188
46008
  if (e.key === "`" && isVisible) {
@@ -46702,7 +46522,7 @@ var init_StatCard = __esm({
46702
46522
  const labelToUse = propLabel ?? propTitle;
46703
46523
  const eventBus = useEventBus();
46704
46524
  const { t } = useTranslate();
46705
- const handleActionClick = React105__default.useCallback(() => {
46525
+ const handleActionClick = React104__default.useCallback(() => {
46706
46526
  if (action?.event) {
46707
46527
  eventBus.emit(`UI:${action.event}`, {});
46708
46528
  }
@@ -46713,7 +46533,7 @@ var init_StatCard = __esm({
46713
46533
  const data = Array.isArray(entity) ? entity : entity ? [entity] : [];
46714
46534
  const isLoading = externalLoading ?? false;
46715
46535
  const error = externalError;
46716
- const computeMetricValue = React105__default.useCallback(
46536
+ const computeMetricValue = React104__default.useCallback(
46717
46537
  (metric, items) => {
46718
46538
  if (metric.value !== void 0) {
46719
46539
  return metric.value;
@@ -46752,7 +46572,7 @@ var init_StatCard = __esm({
46752
46572
  },
46753
46573
  []
46754
46574
  );
46755
- const schemaStats = React105__default.useMemo(() => {
46575
+ const schemaStats = React104__default.useMemo(() => {
46756
46576
  if (!metrics || metrics.length === 0) return null;
46757
46577
  return metrics.map((metric) => ({
46758
46578
  label: metric.label,
@@ -46760,7 +46580,7 @@ var init_StatCard = __esm({
46760
46580
  format: metric.format
46761
46581
  }));
46762
46582
  }, [metrics, data, computeMetricValue]);
46763
- const calculatedTrend = React105__default.useMemo(() => {
46583
+ const calculatedTrend = React104__default.useMemo(() => {
46764
46584
  if (manualTrend !== void 0) return manualTrend;
46765
46585
  if (previousValue === void 0 || currentValue === void 0)
46766
46586
  return void 0;
@@ -47400,8 +47220,8 @@ var init_SubagentTracePanel = __esm({
47400
47220
  ] });
47401
47221
  };
47402
47222
  InlineActivityStream = ({ activities, autoScroll = true, className }) => {
47403
- const endRef = React105__default.useRef(null);
47404
- React105__default.useEffect(() => {
47223
+ const endRef = React104__default.useRef(null);
47224
+ React104__default.useEffect(() => {
47405
47225
  if (!autoScroll) return;
47406
47226
  endRef.current?.scrollIntoView({ behavior: "smooth", block: "end" });
47407
47227
  }, [activities.length, autoScroll]);
@@ -47495,7 +47315,7 @@ var init_SubagentTracePanel = __esm({
47495
47315
  };
47496
47316
  SubagentRichCard = ({ subagent }) => {
47497
47317
  const { t } = useTranslate();
47498
- const activities = React105__default.useMemo(
47318
+ const activities = React104__default.useMemo(
47499
47319
  () => subagentMessagesToActivities(subagent.messages),
47500
47320
  [subagent.messages]
47501
47321
  );
@@ -47572,8 +47392,8 @@ var init_SubagentTracePanel = __esm({
47572
47392
  ] });
47573
47393
  };
47574
47394
  CoordinatorConversation = ({ messages, autoScroll = true, className }) => {
47575
- const endRef = React105__default.useRef(null);
47576
- React105__default.useEffect(() => {
47395
+ const endRef = React104__default.useRef(null);
47396
+ React104__default.useEffect(() => {
47577
47397
  if (!autoScroll) return;
47578
47398
  endRef.current?.scrollIntoView({ behavior: "smooth", block: "end" });
47579
47399
  }, [messages.length, autoScroll]);
@@ -48003,7 +47823,7 @@ var init_Timeline = __esm({
48003
47823
  }) => {
48004
47824
  const { t } = useTranslate();
48005
47825
  const entityData = entity ?? [];
48006
- const items = React105__default.useMemo(() => {
47826
+ const items = React104__default.useMemo(() => {
48007
47827
  if (propItems) return propItems;
48008
47828
  if (entityData.length === 0) return [];
48009
47829
  return entityData.map((record, idx) => {
@@ -48105,7 +47925,7 @@ var init_Timeline = __esm({
48105
47925
  }
48106
47926
  });
48107
47927
  function extractToastProps(children) {
48108
- if (!React105__default.isValidElement(children)) {
47928
+ if (!React104__default.isValidElement(children)) {
48109
47929
  if (typeof children === "string") {
48110
47930
  return { message: children };
48111
47931
  }
@@ -48147,7 +47967,7 @@ var init_ToastSlot = __esm({
48147
47967
  eventBus.emit(`${prefix}CLOSE`);
48148
47968
  };
48149
47969
  if (!isVisible) return null;
48150
- const isCustomContent = React105__default.isValidElement(children) && !message;
47970
+ const isCustomContent = React104__default.isValidElement(children) && !message;
48151
47971
  return /* @__PURE__ */ jsx(Box, { className: "fixed bottom-4 right-4 z-50", children: isCustomContent ? children : /* @__PURE__ */ jsx(
48152
47972
  Toast,
48153
47973
  {
@@ -48164,7 +47984,7 @@ var init_ToastSlot = __esm({
48164
47984
  }
48165
47985
  });
48166
47986
  function lazyThree(name, loader) {
48167
- const Lazy = React105__default.lazy(
47987
+ const Lazy = React104__default.lazy(
48168
47988
  () => loader().then((m) => {
48169
47989
  const Resolved = m[name];
48170
47990
  if (!Resolved) {
@@ -48176,13 +47996,13 @@ function lazyThree(name, loader) {
48176
47996
  })
48177
47997
  );
48178
47998
  function ThreeWrapper(props) {
48179
- return React105__default.createElement(
47999
+ return React104__default.createElement(
48180
48000
  ThreeBoundary,
48181
48001
  { name },
48182
- React105__default.createElement(
48183
- React105__default.Suspense,
48002
+ React104__default.createElement(
48003
+ React104__default.Suspense,
48184
48004
  { fallback: null },
48185
- React105__default.createElement(Lazy, props)
48005
+ React104__default.createElement(Lazy, props)
48186
48006
  )
48187
48007
  );
48188
48008
  }
@@ -48389,7 +48209,6 @@ var init_component_registry_generated = __esm({
48389
48209
  init_Sidebar();
48390
48210
  init_SignaturePad();
48391
48211
  init_SimpleGrid();
48392
- init_SimulationCanvas();
48393
48212
  init_SimulatorBoard();
48394
48213
  init_Skeleton();
48395
48214
  init_SocialProof();
@@ -48462,7 +48281,7 @@ var init_component_registry_generated = __esm({
48462
48281
  init_WizardContainer();
48463
48282
  init_WizardNavigation();
48464
48283
  init_WizardProgress();
48465
- ThreeBoundary = class extends React105__default.Component {
48284
+ ThreeBoundary = class extends React104__default.Component {
48466
48285
  constructor() {
48467
48286
  super(...arguments);
48468
48287
  __publicField(this, "state", { failed: false });
@@ -48472,7 +48291,7 @@ var init_component_registry_generated = __esm({
48472
48291
  }
48473
48292
  render() {
48474
48293
  if (this.state.failed) {
48475
- return React105__default.createElement(
48294
+ return React104__default.createElement(
48476
48295
  "div",
48477
48296
  {
48478
48297
  "data-testid": "three-unavailable",
@@ -48701,7 +48520,6 @@ var init_component_registry_generated = __esm({
48701
48520
  "Sidebar": Sidebar,
48702
48521
  "SignaturePad": SignaturePad,
48703
48522
  "SimpleGrid": SimpleGrid,
48704
- "SimulationCanvas": SimulationCanvas,
48705
48523
  "SimulatorBoard": SimulatorBoard,
48706
48524
  "Skeleton": Skeleton,
48707
48525
  "SocialProof": SocialProof,
@@ -48796,7 +48614,7 @@ function SuspenseConfigProvider({
48796
48614
  config,
48797
48615
  children
48798
48616
  }) {
48799
- return React105__default.createElement(
48617
+ return React104__default.createElement(
48800
48618
  SuspenseConfigContext.Provider,
48801
48619
  { value: config },
48802
48620
  children
@@ -48838,7 +48656,7 @@ function enrichFormFields(fields, entityDef) {
48838
48656
  }
48839
48657
  return { name: field, label: field.replace(/([a-z])([A-Z])/g, "$1 $2").replace(/\b\w/g, (c) => c.toUpperCase()) };
48840
48658
  }
48841
- if (field && typeof field === "object" && !Array.isArray(field) && !React105__default.isValidElement(field) && !(field instanceof Date)) {
48659
+ if (field && typeof field === "object" && !Array.isArray(field) && !React104__default.isValidElement(field) && !(field instanceof Date)) {
48842
48660
  const obj = field;
48843
48661
  const fieldName = typeof obj.name === "string" ? obj.name : typeof obj.field === "string" ? obj.field : void 0;
48844
48662
  if (!fieldName) return field;
@@ -49291,7 +49109,7 @@ function renderPatternChildren(children, onDismiss, parentId = "root", parentPat
49291
49109
  const key = `${parentId}-${index}-trait:${traitName}`;
49292
49110
  return /* @__PURE__ */ jsx(TraitFrame, { traitName }, key);
49293
49111
  }
49294
- return /* @__PURE__ */ jsx(React105__default.Fragment, { children: child }, `${parentId}-${index}`);
49112
+ return /* @__PURE__ */ jsx(React104__default.Fragment, { children: child }, `${parentId}-${index}`);
49295
49113
  }
49296
49114
  if (!child || typeof child !== "object") return null;
49297
49115
  const childId = `${parentId}-${index}`;
@@ -49331,14 +49149,14 @@ function isPatternConfig(value) {
49331
49149
  if (value === null || value === void 0) return false;
49332
49150
  if (typeof value !== "object") return false;
49333
49151
  if (Array.isArray(value)) return false;
49334
- if (React105__default.isValidElement(value)) return false;
49152
+ if (React104__default.isValidElement(value)) return false;
49335
49153
  if (value instanceof Date) return false;
49336
49154
  if (typeof value === "function") return false;
49337
49155
  const record = value;
49338
49156
  return "type" in record && typeof record.type === "string" && getComponentForPattern$1(record.type) !== null;
49339
49157
  }
49340
49158
  function isPlainConfigObject(value) {
49341
- if (React105__default.isValidElement(value)) return false;
49159
+ if (React104__default.isValidElement(value)) return false;
49342
49160
  if (value instanceof Date) return false;
49343
49161
  const proto = Object.getPrototypeOf(value);
49344
49162
  return proto === Object.prototype || proto === null;
@@ -49464,7 +49282,7 @@ function SlotContentRenderer({
49464
49282
  for (const slotKey of CONTENT_NODE_SLOTS) {
49465
49283
  const slotVal = restProps[slotKey];
49466
49284
  if (slotVal === void 0 || slotVal === null) continue;
49467
- if (React105__default.isValidElement(slotVal) || typeof slotVal === "string" || typeof slotVal === "number" || typeof slotVal === "boolean") continue;
49285
+ if (React104__default.isValidElement(slotVal) || typeof slotVal === "string" || typeof slotVal === "number" || typeof slotVal === "boolean") continue;
49468
49286
  if (Array.isArray(slotVal) || typeof slotVal === "object" && "type" in slotVal) {
49469
49287
  nodeSlotOverrides[slotKey] = renderPatternChildren(
49470
49288
  slotVal,
@@ -49513,7 +49331,7 @@ function SlotContentRenderer({
49513
49331
  const resolvedItems = Array.isArray(entityVal) && entityVal[0] !== "fn" ? entityVal : null;
49514
49332
  if (resolvedItems && resolvedItems.length > 0 && !finalProps.fields && !finalProps.columns) {
49515
49333
  const sample = resolvedItems[0];
49516
- if (sample && typeof sample === "object" && !Array.isArray(sample) && !React105__default.isValidElement(sample) && !(sample instanceof Date)) {
49334
+ if (sample && typeof sample === "object" && !Array.isArray(sample) && !React104__default.isValidElement(sample) && !(sample instanceof Date)) {
49517
49335
  const keys = Object.keys(sample).filter((k) => k !== "id" && k !== "_id");
49518
49336
  finalProps.fields = keys.map((k, i) => ({ name: k, variant: i === 0 ? "h4" : "body" }));
49519
49337
  }
@@ -49876,7 +49694,7 @@ var AvlTransition = ({
49876
49694
  opacity = 1,
49877
49695
  className
49878
49696
  }) => {
49879
- const ids = React105__default.useMemo(() => {
49697
+ const ids = React104__default.useMemo(() => {
49880
49698
  avlTransitionId += 1;
49881
49699
  return { arrow: `avl-tr-${avlTransitionId}-arrow` };
49882
49700
  }, []);
@@ -50437,7 +50255,7 @@ var AvlStateMachine = ({
50437
50255
  color = "var(--color-primary)",
50438
50256
  animated = false
50439
50257
  }) => {
50440
- const ids = React105__default.useMemo(() => {
50258
+ const ids = React104__default.useMemo(() => {
50441
50259
  avlSmId += 1;
50442
50260
  const base = `avl-sm-${avlSmId}`;
50443
50261
  return { glow: `${base}-glow`, grad: `${base}-grad` };
@@ -50636,7 +50454,7 @@ var AvlOrbitalUnit = ({
50636
50454
  color = "var(--color-primary)",
50637
50455
  animated = false
50638
50456
  }) => {
50639
- const ids = React105__default.useMemo(() => {
50457
+ const ids = React104__default.useMemo(() => {
50640
50458
  avlOuId += 1;
50641
50459
  const base = `avl-ou-${avlOuId}`;
50642
50460
  return { glow: `${base}-glow`, grad: `${base}-grad` };
@@ -50732,7 +50550,7 @@ var AvlClosedCircuit = ({
50732
50550
  color = "var(--color-primary)",
50733
50551
  animated = false
50734
50552
  }) => {
50735
- const ids = React105__default.useMemo(() => {
50553
+ const ids = React104__default.useMemo(() => {
50736
50554
  avlCcId += 1;
50737
50555
  const base = `avl-cc-${avlCcId}`;
50738
50556
  return { glow: `${base}-glow`, grad: `${base}-grad`, arrow: `${base}-arrow` };
@@ -50887,7 +50705,7 @@ var AvlEmitListen = ({
50887
50705
  color = "var(--color-primary)",
50888
50706
  animated = false
50889
50707
  }) => {
50890
- const ids = React105__default.useMemo(() => {
50708
+ const ids = React104__default.useMemo(() => {
50891
50709
  avlElId += 1;
50892
50710
  const base = `avl-el-${avlElId}`;
50893
50711
  return { arrow: `${base}-arrow`, grad: `${base}-grad` };
@@ -51161,7 +50979,7 @@ function renderNode(node, color, glowId) {
51161
50979
  const baseR = node.type === "operator" ? 20 : 16;
51162
50980
  const r2 = Math.max(baseR, labelLen * 3.5 + 6);
51163
50981
  const nc = nodeColor(node.type, color);
51164
- return /* @__PURE__ */ jsxs(React105__default.Fragment, { children: [
50982
+ return /* @__PURE__ */ jsxs(React104__default.Fragment, { children: [
51165
50983
  node.children.map((child, i) => {
51166
50984
  const childR = Math.max(
51167
50985
  child.type === "operator" ? 20 : 16,
@@ -51218,7 +51036,7 @@ var AvlExprTree = ({
51218
51036
  className,
51219
51037
  color = "var(--color-primary)"
51220
51038
  }) => {
51221
- const ids = React105__default.useMemo(() => {
51039
+ const ids = React104__default.useMemo(() => {
51222
51040
  avlEtId += 1;
51223
51041
  return { glow: `avl-et-${avlEtId}-glow` };
51224
51042
  }, []);
@@ -52053,7 +51871,7 @@ var SystemNode = ({ data }) => {
52053
51871
  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) => {
52054
51872
  const tc = transitionCounts[s.name] ?? 0;
52055
51873
  const role = getStateRole(s.name, s.isInitial ?? void 0, s.isTerminal ?? void 0, tc, maxTC);
52056
- return /* @__PURE__ */ jsxs(React105__default.Fragment, { children: [
51874
+ return /* @__PURE__ */ jsxs(React104__default.Fragment, { children: [
52057
51875
  /* @__PURE__ */ jsx(AvlState, { x: i * 14 + 1, y: 1, width: 10, height: 8, name: "", role, isInitial: s.isInitial ?? void 0, isTerminal: s.isTerminal ?? void 0 }),
52058
51876
  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 })
52059
51877
  ] }, s.name);
@@ -53198,7 +53016,7 @@ function resolveLambdaBindings(body, params, item, index) {
53198
53016
  if (Array.isArray(body)) {
53199
53017
  return body.map((b) => recur(b));
53200
53018
  }
53201
- if (body !== null && typeof body === "object" && !React105__default.isValidElement(body) && !(body instanceof Date) && typeof body !== "function") {
53019
+ if (body !== null && typeof body === "object" && !React104__default.isValidElement(body) && !(body instanceof Date) && typeof body !== "function") {
53202
53020
  const out = {};
53203
53021
  for (const [k, v] of Object.entries(body)) {
53204
53022
  out[k] = recur(v);
@@ -53217,7 +53035,7 @@ function getSlotContentRenderer2() {
53217
53035
  function makeLambdaFn(params, lambdaBody, callerKey) {
53218
53036
  return (item, index) => {
53219
53037
  const resolvedBody = resolveLambdaBindings(lambdaBody, params, item, index);
53220
- if (resolvedBody === null || typeof resolvedBody !== "object" || Array.isArray(resolvedBody) || typeof resolvedBody === "function" || React105__default.isValidElement(resolvedBody) || resolvedBody instanceof Date) {
53038
+ if (resolvedBody === null || typeof resolvedBody !== "object" || Array.isArray(resolvedBody) || typeof resolvedBody === "function" || React104__default.isValidElement(resolvedBody) || resolvedBody instanceof Date) {
53221
53039
  return null;
53222
53040
  }
53223
53041
  const record = resolvedBody;
@@ -53236,7 +53054,7 @@ function makeLambdaFn(params, lambdaBody, callerKey) {
53236
53054
  props: childProps,
53237
53055
  priority: 0
53238
53056
  };
53239
- return React105__default.createElement(SlotContentRenderer2, { content: childContent });
53057
+ return React104__default.createElement(SlotContentRenderer2, { content: childContent });
53240
53058
  };
53241
53059
  }
53242
53060
  function convertNode(node, callerKey) {
@@ -53255,7 +53073,7 @@ function convertNode(node, callerKey) {
53255
53073
  });
53256
53074
  return anyChanged ? mapped : node;
53257
53075
  }
53258
- if (typeof node === "object" && !React105__default.isValidElement(node) && !(node instanceof Date)) {
53076
+ if (typeof node === "object" && !React104__default.isValidElement(node) && !(node instanceof Date)) {
53259
53077
  return convertObjectProps(node);
53260
53078
  }
53261
53079
  return node;
@@ -53762,42 +53580,14 @@ function useTraitStateMachine(traitBindings, uiSlots, options) {
53762
53580
  });
53763
53581
  }, [executeTransitionEffects]);
53764
53582
  useEffect(() => {
53765
- const hasFrameTicks = traitBindingsRef.current.some(
53766
- (b) => b.trait.ticks?.some((t) => t.interval === "frame")
53767
- );
53768
- if (!hasFrameTicks) return;
53769
- let running = true;
53770
- let rafId = 0;
53771
- const frame = () => {
53772
- if (!running) return;
53773
- for (const binding of traitBindingsRef.current) {
53774
- for (const tick of binding.trait.ticks ?? []) {
53775
- if (tick.interval !== "frame") continue;
53776
- runTickEffects(tick, binding);
53777
- }
53778
- }
53779
- rafId = requestAnimationFrame(frame);
53780
- };
53781
- rafId = requestAnimationFrame(frame);
53782
- return () => {
53783
- running = false;
53784
- cancelAnimationFrame(rafId);
53785
- };
53786
- }, [traitBindings, runTickEffects]);
53787
- useEffect(() => {
53788
- const intervals = [];
53583
+ const scheduler = createTickScheduler();
53789
53584
  for (const binding of traitBindings) {
53790
53585
  for (const tick of binding.trait.ticks ?? []) {
53791
- if (tick.interval === "frame") continue;
53792
- const ms = tick.interval;
53793
- intervals.push(setInterval(() => {
53794
- runTickEffects(tick, binding);
53795
- }, ms));
53586
+ const intervalMs = tick.interval === "frame" ? 0 : tick.interval;
53587
+ scheduler.add(intervalMs, () => runTickEffects(tick, binding));
53796
53588
  }
53797
53589
  }
53798
- return () => {
53799
- for (const id of intervals) clearInterval(id);
53800
- };
53590
+ return () => scheduler.stopAll();
53801
53591
  }, [traitBindings, runTickEffects]);
53802
53592
  const processEventQueued = useCallback(async (eventKey, payload) => {
53803
53593
  const normalizedEvent = normalizeEventKey(eventKey);
@@ -54918,8 +54708,8 @@ function CanvasDndProvider({
54918
54708
  }) {
54919
54709
  const eventBus = useEventBus();
54920
54710
  const sensors = useAlmadarDndSensors(false);
54921
- const [activePayload, setActivePayload] = React105__default.useState(null);
54922
- const handleDragStart = React105__default.useCallback((e) => {
54711
+ const [activePayload, setActivePayload] = React104__default.useState(null);
54712
+ const handleDragStart = React104__default.useCallback((e) => {
54923
54713
  const data = e.active.data.current;
54924
54714
  const payload = data?.payload;
54925
54715
  if (payload) {
@@ -54930,7 +54720,7 @@ function CanvasDndProvider({
54930
54720
  log9.warn("dragStart:missing-payload", { id: e.active.id });
54931
54721
  }
54932
54722
  }, [eventBus]);
54933
- const handleDragEnd = React105__default.useCallback((e) => {
54723
+ const handleDragEnd = React104__default.useCallback((e) => {
54934
54724
  setActivePayload(null);
54935
54725
  const activeData = e.active.data.current;
54936
54726
  const payload = activeData?.payload;
@@ -54959,7 +54749,7 @@ function CanvasDndProvider({
54959
54749
  const suppressed = onDrop ? onDrop(drop) === true : false;
54960
54750
  if (!suppressed) defaultEmit(eventBus, drop);
54961
54751
  }, [eventBus, onDrop]);
54962
- const handleDragCancel = React105__default.useCallback(() => {
54752
+ const handleDragCancel = React104__default.useCallback(() => {
54963
54753
  setActivePayload(null);
54964
54754
  log9.info("dragCancel");
54965
54755
  }, []);
@@ -55717,7 +55507,7 @@ var OrbPreviewNodeInner = (props) => {
55717
55507
  }
55718
55508
  );
55719
55509
  };
55720
- var OrbPreviewNode = React105__default.memo(OrbPreviewNodeInner);
55510
+ var OrbPreviewNode = React104__default.memo(OrbPreviewNodeInner);
55721
55511
  OrbPreviewNode.displayName = "OrbPreviewNode";
55722
55512
  orbPreviewLog.debug("export-resolved", () => ({
55723
55513
  type: typeof OrbPreviewNode,
@@ -55822,7 +55612,7 @@ var EventFlowEdgeInner = (props) => {
55822
55612
  ) })
55823
55613
  ] });
55824
55614
  };
55825
- var EventFlowEdge = React105__default.memo(EventFlowEdgeInner);
55615
+ var EventFlowEdge = React104__default.memo(EventFlowEdgeInner);
55826
55616
  EventFlowEdge.displayName = "EventFlowEdge";
55827
55617
 
55828
55618
  // components/avl/molecules/BehaviorComposeNode.tsx
@@ -55969,7 +55759,7 @@ var BehaviorComposeNodeInner = (props) => {
55969
55759
  }
55970
55760
  );
55971
55761
  };
55972
- var BehaviorComposeNode = React105__default.memo(BehaviorComposeNodeInner);
55762
+ var BehaviorComposeNode = React104__default.memo(BehaviorComposeNodeInner);
55973
55763
  BehaviorComposeNode.displayName = "BehaviorComposeNode";
55974
55764
 
55975
55765
  // components/avl/lib/avl-behavior-compose-converter.ts
@@ -56995,7 +56785,7 @@ var TraitCardNodeInner = (props) => {
56995
56785
  }
56996
56786
  );
56997
56787
  };
56998
- var TraitCardNode = React105__default.memo(TraitCardNodeInner);
56788
+ var TraitCardNode = React104__default.memo(TraitCardNodeInner);
56999
56789
  TraitCardNode.displayName = "TraitCardNode";
57000
56790
 
57001
56791
  // components/avl/organisms/FlowCanvas.tsx
@@ -57068,7 +56858,7 @@ function FlowCanvasInner({
57068
56858
  initialOrbital
57069
56859
  );
57070
56860
  const [expandedBehaviorAlias, setExpandedBehaviorAlias] = useState(void 0);
57071
- const screenSizeUserOverrideRef = React105__default.useRef(false);
56861
+ const screenSizeUserOverrideRef = React104__default.useRef(false);
57072
56862
  const [screenSize, setScreenSize] = useState(
57073
56863
  () => typeof window === "undefined" ? "laptop" : detectScreenSize(window.innerWidth)
57074
56864
  );
@@ -57452,7 +57242,7 @@ var ZoomBreadcrumb = ({
57452
57242
  if (eventName && band === "detail") {
57453
57243
  segments.push({ icon: "\u26A1", label: eventName });
57454
57244
  }
57455
- 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-xs text-muted-foreground backdrop-blur-sm", children: segments.map((seg, i) => /* @__PURE__ */ jsxs(React105__default.Fragment, { children: [
57245
+ 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-xs text-muted-foreground backdrop-blur-sm", children: segments.map((seg, i) => /* @__PURE__ */ jsxs(React104__default.Fragment, { children: [
57456
57246
  i > 0 && /* @__PURE__ */ jsx("span", { className: "opacity-40", children: ">" }),
57457
57247
  /* @__PURE__ */ jsx("span", { className: "opacity-60", children: seg.icon }),
57458
57248
  /* @__PURE__ */ jsx("span", { children: seg.label })
@@ -57793,7 +57583,7 @@ var EventWireOverlay = ({
57793
57583
  containerW,
57794
57584
  containerH
57795
57585
  }) => {
57796
- const ids = React105__default.useMemo(() => {
57586
+ const ids = React104__default.useMemo(() => {
57797
57587
  avlOczWireId += 1;
57798
57588
  return { arrow: `avl-ocz-wire-${avlOczWireId}-arrow` };
57799
57589
  }, []);
@@ -58160,7 +57950,7 @@ var AvlOrbitalsCosmicZoom = ({
58160
57950
  borderRadius: 6,
58161
57951
  border: `1px solid ${color}`
58162
57952
  },
58163
- children: /* @__PURE__ */ jsx(HStack, { gap: "xs", align: "center", children: breadcrumbs.map((crumb, i) => /* @__PURE__ */ jsxs(React105__default.Fragment, { children: [
57953
+ children: /* @__PURE__ */ jsx(HStack, { gap: "xs", align: "center", children: breadcrumbs.map((crumb, i) => /* @__PURE__ */ jsxs(React104__default.Fragment, { children: [
58164
57954
  i > 0 && /* @__PURE__ */ jsx(Typography, { variant: "small", style: { opacity: 0.5, color }, children: "/" }),
58165
57955
  i < breadcrumbs.length - 1 ? /* @__PURE__ */ jsx(
58166
57956
  Box,