@almadar/ui 5.140.0 → 5.142.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 React93 from 'react';
3
- import React93__default, { createContext, useState, useMemo, useRef, useEffect, useContext, useCallback, Suspense, useLayoutEffect, Profiler, useReducer, useSyncExternalStore, lazy, useId } from 'react';
2
+ import * as React94 from 'react';
3
+ import React94__default, { createContext, useState, useMemo, useRef, useEffect, useContext, useCallback, Suspense, useLayoutEffect, Profiler, useReducer, useSyncExternalStore, lazy, useId } from 'react';
4
4
  import { getAllPages, matchPathAmong, OrbitalProvider, EventBusContext, useTraitScopeChain, ServerBridgeProvider, VerificationProvider, EntitySchemaProvider, OrbitalThemeProvider, useServerBridge, EntityBindingContext, useEntitySchema, useEntitySchemaOptional, useEntityBindingSnapshot, TraitScopeProvider, useTraitScope, useCurrentPagePath, useGameAudioContextOptional } from '@almadar/ui/providers';
5
5
  import { createLogger, setNamespaceLevel, isLogLevelEnabled } from '@almadar/logger';
6
6
  import ELK from 'elkjs/lib/elk.bundled.js';
@@ -3301,7 +3301,7 @@ var init_Typography = __esm({
3301
3301
  if (format !== void 0 && format !== "none" && (typeof body === "string" || typeof body === "number" || body instanceof Date)) {
3302
3302
  body = formatValue(body, format);
3303
3303
  }
3304
- return React93__default.createElement(
3304
+ return React94__default.createElement(
3305
3305
  Component,
3306
3306
  {
3307
3307
  id,
@@ -3647,7 +3647,7 @@ var init_Box = __esm({
3647
3647
  fixed: "fixed",
3648
3648
  sticky: "sticky"
3649
3649
  };
3650
- Box = React93__default.forwardRef(
3650
+ Box = React94__default.forwardRef(
3651
3651
  ({
3652
3652
  padding,
3653
3653
  paddingX,
@@ -3712,7 +3712,7 @@ var init_Box = __esm({
3712
3712
  onPointerDown?.(e);
3713
3713
  }, [hoverEvent, tapReveal, triggerProps, onPointerDown]);
3714
3714
  const isClickable = action || onClick;
3715
- return React93__default.createElement(
3715
+ return React94__default.createElement(
3716
3716
  Component,
3717
3717
  {
3718
3718
  ref,
@@ -3808,7 +3808,7 @@ var init_Stack = __esm({
3808
3808
  };
3809
3809
  const isHorizontal = direction === "horizontal";
3810
3810
  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";
3811
- return React93__default.createElement(
3811
+ return React94__default.createElement(
3812
3812
  Component,
3813
3813
  {
3814
3814
  className: cn(
@@ -4300,7 +4300,7 @@ var init_MiniStateMachine = __esm({
4300
4300
  const x = 2 + i * (NODE_W + GAP + ARROW_W + GAP);
4301
4301
  const tc = transitionCounts[s.name] ?? 0;
4302
4302
  const role = getStateRole(s.name, s.isInitial ?? void 0, s.isTerminal ?? void 0, tc, maxTC);
4303
- return /* @__PURE__ */ jsxs(React93__default.Fragment, { children: [
4303
+ return /* @__PURE__ */ jsxs(React94__default.Fragment, { children: [
4304
4304
  /* @__PURE__ */ jsx(
4305
4305
  AvlState,
4306
4306
  {
@@ -4583,7 +4583,7 @@ function resolveMarkerExpression(expression, entity, config, state) {
4583
4583
  function isPlainObject(value) {
4584
4584
  if (value === null || value === void 0 || typeof value !== "object") return false;
4585
4585
  if (Array.isArray(value)) return false;
4586
- if (React93__default.isValidElement(value)) return false;
4586
+ if (React94__default.isValidElement(value)) return false;
4587
4587
  if (value instanceof Date) return false;
4588
4588
  if (typeof value === "function") return false;
4589
4589
  return true;
@@ -4820,7 +4820,7 @@ var init_Icon = __esm({
4820
4820
  const effectiveName = typeof icon === "string" && icon !== "" ? icon : name;
4821
4821
  const effectiveStrokeWidth = strokeWidth != null && strokeWidth > 0 ? strokeWidth : void 0;
4822
4822
  const family = useIconFamily();
4823
- const RenderedComponent = React93__default.useMemo(() => {
4823
+ const RenderedComponent = React94__default.useMemo(() => {
4824
4824
  if (directIcon) return null;
4825
4825
  return effectiveName ? resolveIconForFamily(effectiveName) : null;
4826
4826
  }, [directIcon, effectiveName, family]);
@@ -4944,7 +4944,7 @@ var init_atlasSlice = __esm({
4944
4944
  }
4945
4945
  });
4946
4946
  function useAtlasSliceDataUrl(asset) {
4947
- const [, bump] = React93.useReducer((x) => x + 1, 0);
4947
+ const [, bump] = React94.useReducer((x) => x + 1, 0);
4948
4948
  if (!isAtlasAsset(asset)) return void 0;
4949
4949
  const key = `${asset.atlas}#${asset.sprite}`;
4950
4950
  const cached = sliceDataUrlCache.get(key);
@@ -5007,13 +5007,13 @@ function AtlasImage({
5007
5007
  style,
5008
5008
  "aria-hidden": ariaHidden
5009
5009
  }) {
5010
- const [, bump] = React93.useReducer((x) => x + 1, 0);
5011
- const canvasRef = React93.useRef(null);
5010
+ const [, bump] = React94.useReducer((x) => x + 1, 0);
5011
+ const canvasRef = React94.useRef(null);
5012
5012
  const sliced = isAtlasAsset(asset);
5013
5013
  const atlas = sliced ? getAtlas(asset.atlas, bump) : void 0;
5014
5014
  const img = sliced && asset?.url ? getSheetImage(asset.url, bump) : null;
5015
5015
  const rect = sliced && atlas ? subRectFor(atlas, asset.sprite) : null;
5016
- React93.useEffect(() => {
5016
+ React94.useEffect(() => {
5017
5017
  const canvas = canvasRef.current;
5018
5018
  if (!canvas || !img || !rect) return;
5019
5019
  canvas.width = rect.sw;
@@ -5089,7 +5089,7 @@ function resolveIconProp(value, sizeClass) {
5089
5089
  const IconComp = value;
5090
5090
  return /* @__PURE__ */ jsx(IconComp, { className: sizeClass });
5091
5091
  }
5092
- if (React93__default.isValidElement(value)) {
5092
+ if (React94__default.isValidElement(value)) {
5093
5093
  return value;
5094
5094
  }
5095
5095
  if (typeof value === "object" && value !== null && isIconLike(value)) {
@@ -5166,7 +5166,7 @@ var init_Button = __esm({
5166
5166
  md: "h-icon-default w-icon-default",
5167
5167
  lg: "h-icon-default w-icon-default"
5168
5168
  };
5169
- Button = React93__default.forwardRef(
5169
+ Button = React94__default.forwardRef(
5170
5170
  ({
5171
5171
  className,
5172
5172
  variant = "primary",
@@ -5236,7 +5236,7 @@ var Dialog;
5236
5236
  var init_Dialog = __esm({
5237
5237
  "components/core/atoms/Dialog.tsx"() {
5238
5238
  init_cn();
5239
- Dialog = React93__default.forwardRef(
5239
+ Dialog = React94__default.forwardRef(
5240
5240
  ({
5241
5241
  role = "dialog",
5242
5242
  "aria-modal": ariaModal = true,
@@ -5799,7 +5799,7 @@ var init_Badge = __esm({
5799
5799
  md: "px-2.5 py-1 text-sm",
5800
5800
  lg: "px-3 py-1.5 text-base"
5801
5801
  };
5802
- Badge = React93__default.forwardRef(
5802
+ Badge = React94__default.forwardRef(
5803
5803
  ({ className, variant = "default", size = "sm", amount, label, icon, iconAsset, children, onRemove, removeLabel, ...props }, ref) => {
5804
5804
  const iconSizes3 = {
5805
5805
  sm: "h-icon-default w-icon-default",
@@ -6149,7 +6149,7 @@ var init_SvgFlow = __esm({
6149
6149
  width = 100,
6150
6150
  height = 100
6151
6151
  }) => {
6152
- const markerId = React93__default.useMemo(() => {
6152
+ const markerId = React94__default.useMemo(() => {
6153
6153
  flowIdCounter += 1;
6154
6154
  return `almadar-flow-arrow-${flowIdCounter}`;
6155
6155
  }, []);
@@ -6742,7 +6742,7 @@ var init_SvgRing = __esm({
6742
6742
  width = 100,
6743
6743
  height = 100
6744
6744
  }) => {
6745
- const gradientId = React93__default.useMemo(() => {
6745
+ const gradientId = React94__default.useMemo(() => {
6746
6746
  ringIdCounter += 1;
6747
6747
  return `almadar-ring-glow-${ringIdCounter}`;
6748
6748
  }, []);
@@ -6923,7 +6923,7 @@ var init_Input = __esm({
6923
6923
  init_cn();
6924
6924
  init_Icon();
6925
6925
  init_useEventBus();
6926
- Input = React93__default.forwardRef(
6926
+ Input = React94__default.forwardRef(
6927
6927
  ({
6928
6928
  className,
6929
6929
  inputType,
@@ -6947,9 +6947,9 @@ var init_Input = __esm({
6947
6947
  const eventBus = useEventBus();
6948
6948
  const type = inputType || htmlType || "text";
6949
6949
  const isDeclarative = typeof onChange === "string";
6950
- const [localValue, setLocalValue] = React93__default.useState(value);
6951
- const pendingEchoRef = React93__default.useRef(/* @__PURE__ */ new Set());
6952
- React93__default.useEffect(() => {
6950
+ const [localValue, setLocalValue] = React94__default.useState(value);
6951
+ const pendingEchoRef = React94__default.useRef(/* @__PURE__ */ new Set());
6952
+ React94__default.useEffect(() => {
6953
6953
  if (!isDeclarative) return;
6954
6954
  const incoming = value == null ? "" : String(value);
6955
6955
  if (pendingEchoRef.current.has(incoming)) {
@@ -7109,7 +7109,7 @@ var Label;
7109
7109
  var init_Label = __esm({
7110
7110
  "components/core/atoms/Label.tsx"() {
7111
7111
  init_cn();
7112
- Label = React93__default.forwardRef(
7112
+ Label = React94__default.forwardRef(
7113
7113
  ({ className, required, children, ...props }, ref) => {
7114
7114
  return /* @__PURE__ */ jsxs(
7115
7115
  "label",
@@ -7136,7 +7136,7 @@ var init_Textarea = __esm({
7136
7136
  "components/core/atoms/Textarea.tsx"() {
7137
7137
  init_cn();
7138
7138
  init_useEventBus();
7139
- Textarea = React93__default.forwardRef(
7139
+ Textarea = React94__default.forwardRef(
7140
7140
  ({ className, error, onChange, ...props }, ref) => {
7141
7141
  const eventBus = useEventBus();
7142
7142
  const handleChange = (e) => {
@@ -7375,7 +7375,7 @@ var init_Select = __esm({
7375
7375
  init_cn();
7376
7376
  init_Icon();
7377
7377
  init_useEventBus();
7378
- Select = React93__default.forwardRef(
7378
+ Select = React94__default.forwardRef(
7379
7379
  (props, _ref) => {
7380
7380
  const { multiple, searchable, clearable } = props;
7381
7381
  if (multiple || searchable || clearable) {
@@ -7392,7 +7392,7 @@ var init_Checkbox = __esm({
7392
7392
  "components/core/atoms/Checkbox.tsx"() {
7393
7393
  init_cn();
7394
7394
  init_useEventBus();
7395
- Checkbox = React93__default.forwardRef(
7395
+ Checkbox = React94__default.forwardRef(
7396
7396
  ({ className, label, id, onChange, ...props }, ref) => {
7397
7397
  const inputId = id || `checkbox-${Math.random().toString(36).substr(2, 9)}`;
7398
7398
  const eventBus = useEventBus();
@@ -7446,7 +7446,7 @@ var init_Spinner = __esm({
7446
7446
  md: "h-6 w-6",
7447
7447
  lg: "h-8 w-8"
7448
7448
  };
7449
- Spinner = React93__default.forwardRef(
7449
+ Spinner = React94__default.forwardRef(
7450
7450
  ({ className, size = "md", overlay, ...props }, ref) => {
7451
7451
  if (overlay) {
7452
7452
  return /* @__PURE__ */ jsx(
@@ -7536,7 +7536,7 @@ var init_Card = __esm({
7536
7536
  chip: "shadow-none rounded-pill border-[length:var(--border-width)] border-border",
7537
7537
  "tile-image-first": "p-0 overflow-hidden"
7538
7538
  };
7539
- Card = React93__default.forwardRef(
7539
+ Card = React94__default.forwardRef(
7540
7540
  ({
7541
7541
  className,
7542
7542
  variant = "bordered",
@@ -7585,9 +7585,9 @@ var init_Card = __esm({
7585
7585
  }
7586
7586
  );
7587
7587
  Card.displayName = "Card";
7588
- CardHeader = React93__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn("mb-4", className), ...props }));
7588
+ CardHeader = React94__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn("mb-4", className), ...props }));
7589
7589
  CardHeader.displayName = "CardHeader";
7590
- CardTitle = React93__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
7590
+ CardTitle = React94__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
7591
7591
  "h3",
7592
7592
  {
7593
7593
  ref,
@@ -7600,11 +7600,11 @@ var init_Card = __esm({
7600
7600
  }
7601
7601
  ));
7602
7602
  CardTitle.displayName = "CardTitle";
7603
- CardContent = React93__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn("", className), ...props }));
7603
+ CardContent = React94__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn("", className), ...props }));
7604
7604
  CardContent.displayName = "CardContent";
7605
7605
  CardBody = CardContent;
7606
7606
  CardBody.displayName = "CardBody";
7607
- CardFooter = React93__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
7607
+ CardFooter = React94__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
7608
7608
  "div",
7609
7609
  {
7610
7610
  ref,
@@ -7691,7 +7691,7 @@ var init_FilterPill = __esm({
7691
7691
  md: "w-3.5 h-3.5",
7692
7692
  lg: "w-4 h-4"
7693
7693
  };
7694
- FilterPill = React93__default.forwardRef(
7694
+ FilterPill = React94__default.forwardRef(
7695
7695
  ({
7696
7696
  className,
7697
7697
  variant = "default",
@@ -7820,8 +7820,8 @@ var init_Avatar = __esm({
7820
7820
  actionPayload
7821
7821
  }) => {
7822
7822
  const eventBus = useEventBus();
7823
- const [imgFailed, setImgFailed] = React93__default.useState(false);
7824
- React93__default.useEffect(() => {
7823
+ const [imgFailed, setImgFailed] = React94__default.useState(false);
7824
+ React94__default.useEffect(() => {
7825
7825
  setImgFailed(false);
7826
7826
  }, [src]);
7827
7827
  const initials = providedInitials ?? (name ? generateInitials(name) : void 0);
@@ -7934,7 +7934,7 @@ var init_Center = __esm({
7934
7934
  as: Component = "div"
7935
7935
  }) => {
7936
7936
  const mergedStyle = minHeight ? { minHeight, ...style } : style;
7937
- return React93__default.createElement(Component, {
7937
+ return React94__default.createElement(Component, {
7938
7938
  className: cn(
7939
7939
  inline ? "inline-flex" : "flex",
7940
7940
  horizontal && "justify-center",
@@ -8202,7 +8202,7 @@ var init_Radio = __esm({
8202
8202
  md: "w-2.5 h-2.5",
8203
8203
  lg: "w-3 h-3"
8204
8204
  };
8205
- Radio = React93__default.forwardRef(
8205
+ Radio = React94__default.forwardRef(
8206
8206
  ({
8207
8207
  label,
8208
8208
  helperText,
@@ -8219,12 +8219,12 @@ var init_Radio = __esm({
8219
8219
  onChange,
8220
8220
  ...props
8221
8221
  }, ref) => {
8222
- const reactId = React93__default.useId();
8222
+ const reactId = React94__default.useId();
8223
8223
  const baseId = id || `radio-${reactId}`;
8224
8224
  const hasError = !!error;
8225
8225
  const eventBus = useEventBus();
8226
- const [selected, setSelected] = React93__default.useState(value);
8227
- React93__default.useEffect(() => {
8226
+ const [selected, setSelected] = React94__default.useState(value);
8227
+ React94__default.useEffect(() => {
8228
8228
  if (value !== void 0) setSelected(value);
8229
8229
  }, [value]);
8230
8230
  const pick = (next, e) => {
@@ -8406,7 +8406,7 @@ var init_Switch = __esm({
8406
8406
  "components/core/atoms/Switch.tsx"() {
8407
8407
  "use client";
8408
8408
  init_cn();
8409
- Switch = React93.forwardRef(
8409
+ Switch = React94.forwardRef(
8410
8410
  ({
8411
8411
  checked,
8412
8412
  defaultChecked = false,
@@ -8417,10 +8417,10 @@ var init_Switch = __esm({
8417
8417
  name,
8418
8418
  className
8419
8419
  }, ref) => {
8420
- const [isChecked, setIsChecked] = React93.useState(
8420
+ const [isChecked, setIsChecked] = React94.useState(
8421
8421
  checked !== void 0 ? checked : defaultChecked
8422
8422
  );
8423
- React93.useEffect(() => {
8423
+ React94.useEffect(() => {
8424
8424
  if (checked !== void 0) {
8425
8425
  setIsChecked(checked);
8426
8426
  }
@@ -8698,7 +8698,7 @@ var Aside;
8698
8698
  var init_Aside = __esm({
8699
8699
  "components/core/atoms/Aside.tsx"() {
8700
8700
  init_cn();
8701
- Aside = React93__default.forwardRef(
8701
+ Aside = React94__default.forwardRef(
8702
8702
  ({ className, children, ...rest }, ref) => /* @__PURE__ */ jsx("aside", { ref, className: cn(className), ...rest, children })
8703
8703
  );
8704
8704
  Aside.displayName = "Aside";
@@ -8777,9 +8777,9 @@ var init_LawReferenceTooltip = __esm({
8777
8777
  className
8778
8778
  }) => {
8779
8779
  const { t } = useTranslate();
8780
- const [isVisible, setIsVisible] = React93__default.useState(false);
8781
- const timeoutRef = React93__default.useRef(null);
8782
- const triggerRef = React93__default.useRef(null);
8780
+ const [isVisible, setIsVisible] = React94__default.useState(false);
8781
+ const timeoutRef = React94__default.useRef(null);
8782
+ const triggerRef = React94__default.useRef(null);
8783
8783
  const handleMouseEnter = () => {
8784
8784
  if (timeoutRef.current) clearTimeout(timeoutRef.current);
8785
8785
  timeoutRef.current = setTimeout(() => setIsVisible(true), 200);
@@ -8790,7 +8790,7 @@ var init_LawReferenceTooltip = __esm({
8790
8790
  };
8791
8791
  const { revealed, triggerProps } = useTapReveal({ refs: [triggerRef] });
8792
8792
  const open = isVisible || revealed;
8793
- React93__default.useEffect(() => {
8793
+ React94__default.useEffect(() => {
8794
8794
  return () => {
8795
8795
  if (timeoutRef.current) clearTimeout(timeoutRef.current);
8796
8796
  };
@@ -9000,7 +9000,7 @@ var init_StatusDot = __esm({
9000
9000
  md: "w-2.5 h-2.5",
9001
9001
  lg: "w-3 h-3"
9002
9002
  };
9003
- StatusDot = React93__default.forwardRef(
9003
+ StatusDot = React94__default.forwardRef(
9004
9004
  ({ className, status = "offline", pulse = false, size = "md", label, ...props }, ref) => {
9005
9005
  return /* @__PURE__ */ jsx(
9006
9006
  "span",
@@ -9054,7 +9054,7 @@ var init_TrendIndicator = __esm({
9054
9054
  down: "trending-down",
9055
9055
  flat: "arrow-right"
9056
9056
  };
9057
- TrendIndicator = React93__default.forwardRef(
9057
+ TrendIndicator = React94__default.forwardRef(
9058
9058
  ({
9059
9059
  className,
9060
9060
  value,
@@ -9123,7 +9123,7 @@ var init_RangeSlider = __esm({
9123
9123
  md: "w-4 h-4",
9124
9124
  lg: "w-5 h-5"
9125
9125
  };
9126
- RangeSlider = React93__default.forwardRef(
9126
+ RangeSlider = React94__default.forwardRef(
9127
9127
  ({
9128
9128
  className,
9129
9129
  min = 0,
@@ -9734,7 +9734,7 @@ var init_ContentSection = __esm({
9734
9734
  md: "py-16",
9735
9735
  lg: "py-24"
9736
9736
  };
9737
- ContentSection = React93__default.forwardRef(
9737
+ ContentSection = React94__default.forwardRef(
9738
9738
  ({ children, background = "default", padding = "lg", id, className }, ref) => {
9739
9739
  return /* @__PURE__ */ jsx(
9740
9740
  Box,
@@ -10268,7 +10268,7 @@ var init_AnimatedReveal = __esm({
10268
10268
  "scale-up": { opacity: 1, transform: "scale(1) translateY(0)" },
10269
10269
  "none": {}
10270
10270
  };
10271
- AnimatedReveal = React93__default.forwardRef(
10271
+ AnimatedReveal = React94__default.forwardRef(
10272
10272
  ({
10273
10273
  trigger = "scroll",
10274
10274
  animation = "fade-up",
@@ -10428,7 +10428,7 @@ var init_AnimatedGraphic = __esm({
10428
10428
  "components/marketing/atoms/AnimatedGraphic.tsx"() {
10429
10429
  "use client";
10430
10430
  init_cn();
10431
- AnimatedGraphic = React93__default.forwardRef(
10431
+ AnimatedGraphic = React94__default.forwardRef(
10432
10432
  ({
10433
10433
  src,
10434
10434
  svgContent,
@@ -10451,7 +10451,7 @@ var init_AnimatedGraphic = __esm({
10451
10451
  const fetchedSvg = useFetchedSvg(svgContent ? void 0 : src);
10452
10452
  const resolvedSvg = svgContent ?? fetchedSvg;
10453
10453
  const prevAnimateRef = useRef(animate);
10454
- const setRef = React93__default.useCallback(
10454
+ const setRef = React94__default.useCallback(
10455
10455
  (node) => {
10456
10456
  containerRef.current = node;
10457
10457
  if (typeof ref === "function") ref(node);
@@ -11178,9 +11178,9 @@ function ControlButton({
11178
11178
  className
11179
11179
  }) {
11180
11180
  const eventBus = useEventBus();
11181
- const [isPressed, setIsPressed] = React93.useState(false);
11181
+ const [isPressed, setIsPressed] = React94.useState(false);
11182
11182
  const actualPressed = pressed ?? isPressed;
11183
- const handlePointerDown = React93.useCallback(
11183
+ const handlePointerDown = React94.useCallback(
11184
11184
  (e) => {
11185
11185
  e.preventDefault();
11186
11186
  if (disabled) return;
@@ -11190,7 +11190,7 @@ function ControlButton({
11190
11190
  },
11191
11191
  [disabled, pressEvent, eventBus, onPress]
11192
11192
  );
11193
- const handlePointerUp = React93.useCallback(
11193
+ const handlePointerUp = React94.useCallback(
11194
11194
  (e) => {
11195
11195
  e.preventDefault();
11196
11196
  if (disabled) return;
@@ -11200,7 +11200,7 @@ function ControlButton({
11200
11200
  },
11201
11201
  [disabled, releaseEvent, eventBus, onRelease]
11202
11202
  );
11203
- const handlePointerLeave = React93.useCallback(
11203
+ const handlePointerLeave = React94.useCallback(
11204
11204
  (e) => {
11205
11205
  if (isPressed) {
11206
11206
  setIsPressed(false);
@@ -11458,8 +11458,8 @@ function ControlGrid({
11458
11458
  className
11459
11459
  }) {
11460
11460
  const eventBus = useEventBus();
11461
- const [active, setActive] = React93.useState(/* @__PURE__ */ new Set());
11462
- const handlePress = React93.useCallback(
11461
+ const [active, setActive] = React94.useState(/* @__PURE__ */ new Set());
11462
+ const handlePress = React94.useCallback(
11463
11463
  (id) => {
11464
11464
  setActive((prev) => new Set(prev).add(id));
11465
11465
  if (actionEvent) eventBus.emit(`UI:${actionEvent}`, { id, pressed: true });
@@ -11473,7 +11473,7 @@ function ControlGrid({
11473
11473
  },
11474
11474
  [kind, actionEvent, directionEvent, directionEvents, eventBus, onAction, onDirection]
11475
11475
  );
11476
- const handleRelease = React93.useCallback(
11476
+ const handleRelease = React94.useCallback(
11477
11477
  (id) => {
11478
11478
  setActive((prev) => {
11479
11479
  const next = new Set(prev);
@@ -11831,7 +11831,7 @@ function GameMenu({
11831
11831
  }) {
11832
11832
  const resolvedOptions = (options?.length ? options : void 0) ?? (menuItems?.length ? menuItems : void 0) ?? DEFAULT_MENU_OPTIONS;
11833
11833
  const eventBus = useEventBus();
11834
- const handleOptionClick = React93.useCallback(
11834
+ const handleOptionClick = React94.useCallback(
11835
11835
  (option) => {
11836
11836
  if (option.event) {
11837
11837
  eventBus.emit(`UI:${option.event}`, { option });
@@ -12067,7 +12067,7 @@ function StateGraph({
12067
12067
  }) {
12068
12068
  const eventBus = useEventBus();
12069
12069
  const nodes = states ?? [];
12070
- const positions = React93.useMemo(() => layoutStates(nodes, width, height), [nodes, width, height]);
12070
+ const positions = React94.useMemo(() => layoutStates(nodes, width, height), [nodes, width, height]);
12071
12071
  return /* @__PURE__ */ jsxs(
12072
12072
  Box,
12073
12073
  {
@@ -12138,8 +12138,8 @@ function MiniMap({
12138
12138
  tileAssets,
12139
12139
  unitAssets
12140
12140
  }) {
12141
- const canvasRef = React93.useRef(null);
12142
- const imgCacheRef = React93.useRef(/* @__PURE__ */ new Map());
12141
+ const canvasRef = React94.useRef(null);
12142
+ const imgCacheRef = React94.useRef(/* @__PURE__ */ new Map());
12143
12143
  function loadImg(url) {
12144
12144
  const cached = imgCacheRef.current.get(url);
12145
12145
  if (cached) return cached.complete ? cached : null;
@@ -12155,7 +12155,7 @@ function MiniMap({
12155
12155
  imgCacheRef.current.set(url, img);
12156
12156
  return null;
12157
12157
  }
12158
- React93.useEffect(() => {
12158
+ React94.useEffect(() => {
12159
12159
  const canvas = canvasRef.current;
12160
12160
  if (!canvas) return;
12161
12161
  const ctx = canvas.getContext("2d");
@@ -12553,9 +12553,26 @@ var init_imageCache = __esm({
12553
12553
  });
12554
12554
 
12555
12555
  // lib/webPainter2d.ts
12556
+ function makeNoiseTile(alpha, color) {
12557
+ const tile = document.createElement("canvas");
12558
+ tile.width = NOISE_CELLS;
12559
+ tile.height = NOISE_CELLS;
12560
+ const t = tile.getContext("2d");
12561
+ if (t) {
12562
+ t.fillStyle = color;
12563
+ for (let y = 0; y < NOISE_CELLS; y++) {
12564
+ for (let x = 0; x < NOISE_CELLS; x++) {
12565
+ t.globalAlpha = noiseHash(x, y) * alpha;
12566
+ t.fillRect(x, y, 1, 1);
12567
+ }
12568
+ }
12569
+ }
12570
+ return tile;
12571
+ }
12556
12572
  function createWebPainter(ctx, onAssetLoad) {
12557
12573
  let vw = 0;
12558
12574
  let vh = 0;
12575
+ const patternCache = /* @__PURE__ */ new Map();
12559
12576
  const tracePoly = (points, closed) => {
12560
12577
  if (points.length === 0) return;
12561
12578
  ctx.beginPath();
@@ -12563,9 +12580,28 @@ function createWebPainter(ctx, onAssetLoad) {
12563
12580
  for (let i = 1; i < points.length; i++) ctx.lineTo(points[i].x, points[i].y);
12564
12581
  if (closed) ctx.closePath();
12565
12582
  };
12583
+ const toCanvasPattern = (style) => {
12584
+ const key = JSON.stringify(style);
12585
+ let pattern = patternCache.get(key);
12586
+ if (pattern === void 0) {
12587
+ if (style.kind === "noise") {
12588
+ pattern = ctx.createPattern(makeNoiseTile(style.alpha ?? 0.12, style.color ?? "#000000"), "repeat");
12589
+ } else {
12590
+ const img = getOrLoadImage(style.url, onAssetLoad);
12591
+ if (!img) return "rgba(0,0,0,0)";
12592
+ pattern = ctx.createPattern(img, "repeat");
12593
+ }
12594
+ if (pattern && style.scale !== void 0 && style.scale !== 1) {
12595
+ pattern.setTransform(new DOMMatrix().scale(style.scale));
12596
+ }
12597
+ patternCache.set(key, pattern);
12598
+ }
12599
+ return pattern ?? "rgba(0,0,0,0)";
12600
+ };
12566
12601
  const toCanvasStyle = (style) => {
12567
12602
  if (typeof style === "string") return style;
12568
- const g = style.kind === "linear" ? ctx.createLinearGradient(style.x1, style.y1, style.x2, style.y2) : ctx.createRadialGradient(style.cx, style.cy, 0, style.cx, style.cy, style.r);
12603
+ if (style.kind === "noise" || style.kind === "image") return toCanvasPattern(style);
12604
+ const g = style.kind === "linear" ? ctx.createLinearGradient(style.x1, style.y1, style.x2, style.y2) : style.kind === "conic" ? ctx.createConicGradient(style.angle, style.cx, style.cy) : ctx.createRadialGradient(style.cx, style.cy, 0, style.cx, style.cy, style.r);
12569
12605
  for (const stop of style.stops) g.addColorStop(stop.offset, stop.color);
12570
12606
  return g;
12571
12607
  };
@@ -12600,6 +12636,19 @@ function createWebPainter(ctx, onAssetLoad) {
12600
12636
  ctx.shadowColor = shadow ? shadow.color : "transparent";
12601
12637
  ctx.shadowBlur = shadow ? shadow.blur : 0;
12602
12638
  },
12639
+ setBlend(mode) {
12640
+ ctx.globalCompositeOperation = mode ?? "source-over";
12641
+ },
12642
+ setLineDash(pattern, offset = 0) {
12643
+ ctx.setLineDash(pattern ? [...pattern] : []);
12644
+ ctx.lineDashOffset = offset;
12645
+ },
12646
+ setBlur(px) {
12647
+ ctx.filter = px && px > 0 ? `blur(${px}px)` : "none";
12648
+ },
12649
+ clipPath(d) {
12650
+ ctx.clip(new Path2D(d));
12651
+ },
12603
12652
  resolveTexture(url) {
12604
12653
  const img = getOrLoadImage(url, onAssetLoad);
12605
12654
  if (!img) return null;
@@ -12675,13 +12724,18 @@ function createWebPainter(ctx, onAssetLoad) {
12675
12724
  }
12676
12725
  };
12677
12726
  }
12678
- var handleByImage, imageByHandle;
12727
+ var handleByImage, imageByHandle, noiseHash, NOISE_CELLS;
12679
12728
  var init_webPainter2d = __esm({
12680
12729
  "lib/webPainter2d.ts"() {
12681
12730
  "use client";
12682
12731
  init_imageCache();
12683
12732
  handleByImage = /* @__PURE__ */ new WeakMap();
12684
12733
  imageByHandle = /* @__PURE__ */ new WeakMap();
12734
+ noiseHash = (x, y) => {
12735
+ const s = Math.sin(x * 12.9898 + y * 78.233) * 43758.5453;
12736
+ return s - Math.floor(s);
12737
+ };
12738
+ NOISE_CELLS = 32;
12685
12739
  }
12686
12740
  });
12687
12741
 
@@ -12906,6 +12960,16 @@ function gradientStyle(g, ox, oy, scale) {
12906
12960
  stops: g.stops
12907
12961
  };
12908
12962
  }
12963
+ if (g.kind === "conic") {
12964
+ if (!g.center) return void 0;
12965
+ return {
12966
+ kind: "conic",
12967
+ cx: ox + g.center.x * scale,
12968
+ cy: oy + g.center.y * scale,
12969
+ angle: g.angle ?? 0,
12970
+ stops: g.stops
12971
+ };
12972
+ }
12909
12973
  if (!g.center || g.radius === void 0) return void 0;
12910
12974
  return {
12911
12975
  kind: "radial",
@@ -12915,6 +12979,13 @@ function gradientStyle(g, ox, oy, scale) {
12915
12979
  stops: g.stops
12916
12980
  };
12917
12981
  }
12982
+ function patternStyle(p, unit) {
12983
+ if (p.kind === "image") {
12984
+ if (!p.url) return void 0;
12985
+ return { kind: "image", url: p.url, scale: (p.scale ?? 1) / unit };
12986
+ }
12987
+ return { kind: "noise", scale: (p.scale ?? 2) / unit, alpha: p.alpha, color: p.color };
12988
+ }
12918
12989
  function DrawShape(props) {
12919
12990
  const register = useContext(DrawableRegistryContext);
12920
12991
  if (register) {
@@ -12943,7 +13014,9 @@ var init_DrawShape = __esm({
12943
13014
  "radiusY",
12944
13015
  "width",
12945
13016
  "height",
12946
- "strokeWidth"
13017
+ "strokeWidth",
13018
+ "strokeDashOffset",
13019
+ "blur"
12947
13020
  ];
12948
13021
  lerp = (a, b, k) => a + (b - a) * k;
12949
13022
  paintShape = (painter, rawNode, dctx) => {
@@ -12953,6 +13026,16 @@ var init_DrawShape = __esm({
12953
13026
  if (node.opacity !== void 0 && node.opacity !== 1) painter.setAlpha(node.opacity);
12954
13027
  const origin = dctx.projector.project(node.position);
12955
13028
  const tileWidth = dctx.projector.tileWidth;
13029
+ const groupScale = dctx.groupScale ?? 1;
13030
+ const strokePx = (node.strokeWidth ?? 1) / groupScale;
13031
+ if (node.blendMode) painter.setBlend(node.blendMode);
13032
+ if (node.strokeDash && node.strokeDash.length > 0) {
13033
+ painter.setLineDash(
13034
+ node.strokeDash.map((v) => v / groupScale),
13035
+ (node.strokeDashOffset ?? 0) / groupScale
13036
+ );
13037
+ }
13038
+ if (node.blur !== void 0 && node.blur > 0) painter.setBlur(node.blur / groupScale);
12956
13039
  if (node.rotate) {
12957
13040
  const pivot = node.pivot ?? { x: 0.5, y: 0.5 };
12958
13041
  const px = origin.x + pivot.x * tileWidth;
@@ -12961,15 +13044,18 @@ var init_DrawShape = __esm({
12961
13044
  painter.rotate(node.rotate);
12962
13045
  painter.translate(-px, -py);
12963
13046
  }
12964
- if (node.shadow) painter.setShadow({ color: node.shadow.color, blur: node.shadow.blur * tileWidth });
13047
+ if (node.shadow) painter.setShadow({ color: node.shadow.color, blur: node.shadow.blur * tileWidth * groupScale });
12965
13048
  const fill = node.fill === "none" ? void 0 : node.fill;
12966
13049
  const stroke = node.stroke === "none" ? void 0 : node.stroke;
12967
13050
  const pxFill = node.gradient ? gradientStyle(node.gradient, origin.x, origin.y, tileWidth) ?? fill : fill;
13051
+ const pxStroke = node.strokeGradient ? gradientStyle(node.strokeGradient, origin.x, origin.y, tileWidth) ?? stroke : stroke;
13052
+ const patFill = node.fillPattern ? patternStyle(node.fillPattern, groupScale) : void 0;
12968
13053
  switch (node.shape) {
12969
13054
  case "cell": {
12970
13055
  const pts = dctx.projector.cellPath(node.position);
12971
13056
  if (pxFill) painter.fillPoly(pts, pxFill);
12972
- if (stroke) painter.strokePoly(pts, stroke, node.strokeWidth ?? 1, true);
13057
+ if (patFill) painter.fillPoly(pts, patFill);
13058
+ if (pxStroke) painter.strokePoly(pts, pxStroke, strokePx, true);
12973
13059
  break;
12974
13060
  }
12975
13061
  case "rect": {
@@ -12980,7 +13066,8 @@ var init_DrawShape = __esm({
12980
13066
  const w = (node.width ?? 0) * tw;
12981
13067
  const h = (node.height ?? 0) * tw;
12982
13068
  if (pxFill) painter.fillRect(x, y, w, h, pxFill);
12983
- if (stroke) painter.strokeRect(x, y, w, h, stroke, node.strokeWidth ?? 1);
13069
+ if (patFill) painter.fillRect(x, y, w, h, patFill);
13070
+ if (pxStroke) painter.strokeRect(x, y, w, h, pxStroke, strokePx);
12984
13071
  break;
12985
13072
  }
12986
13073
  case "ellipse": {
@@ -12991,7 +13078,8 @@ var init_DrawShape = __esm({
12991
13078
  const rx = (node.radiusX ?? 0) * tw;
12992
13079
  const ry = (node.radiusY ?? rx) * tw;
12993
13080
  if (pxFill) painter.fillEllipse(cx, cy, rx, ry, pxFill);
12994
- if (stroke) painter.strokeEllipse(cx, cy, rx, ry, stroke, node.strokeWidth ?? 1);
13081
+ if (patFill) painter.fillEllipse(cx, cy, rx, ry, patFill);
13082
+ if (pxStroke) painter.strokeEllipse(cx, cy, rx, ry, pxStroke, strokePx);
12995
13083
  break;
12996
13084
  }
12997
13085
  case "poly": {
@@ -13000,16 +13088,27 @@ var init_DrawShape = __esm({
13000
13088
  y: origin.y + ((node.offsetY ?? 0) + pt.y) * tileWidth
13001
13089
  }));
13002
13090
  if (pxFill) painter.fillPoly(pts, pxFill);
13003
- if (stroke) painter.strokePoly(pts, stroke, node.strokeWidth ?? 1, true);
13091
+ if (patFill) painter.fillPoly(pts, patFill);
13092
+ if (pxStroke) painter.strokePoly(pts, pxStroke, strokePx, true);
13004
13093
  break;
13005
13094
  }
13006
13095
  case "path": {
13007
13096
  if (!node.d) break;
13008
13097
  painter.translate(origin.x + (node.offsetX ?? 0) * tileWidth, origin.y + (node.offsetY ?? 0) * tileWidth);
13009
13098
  painter.scale(tileWidth, tileWidth);
13099
+ if (node.strokeDash && node.strokeDash.length > 0) {
13100
+ painter.setLineDash(
13101
+ node.strokeDash.map((v) => v / (groupScale * tileWidth)),
13102
+ (node.strokeDashOffset ?? 0) / (groupScale * tileWidth)
13103
+ );
13104
+ }
13105
+ if (node.blur !== void 0 && node.blur > 0) painter.setBlur(node.blur / (groupScale * tileWidth));
13010
13106
  const localFill = node.gradient ? gradientStyle(node.gradient, 0, 0, 1) ?? fill : fill;
13107
+ const localStroke = node.strokeGradient ? gradientStyle(node.strokeGradient, 0, 0, 1) ?? stroke : stroke;
13108
+ const localPat = node.fillPattern ? patternStyle(node.fillPattern, groupScale * tileWidth) : void 0;
13011
13109
  if (localFill) painter.fillPath(node.d, localFill);
13012
- if (stroke) painter.strokePath(node.d, stroke, (node.strokeWidth ?? 1) / tileWidth);
13110
+ if (localPat) painter.fillPath(node.d, localPat);
13111
+ if (localStroke) painter.strokePath(node.d, localStroke, strokePx / tileWidth);
13013
13112
  break;
13014
13113
  }
13015
13114
  }
@@ -13090,8 +13189,6 @@ var init_DrawTextLayer = __esm({
13090
13189
  };
13091
13190
  }
13092
13191
  });
13093
-
13094
- // lib/drawable/paintDispatch.ts
13095
13192
  function paintDrawable(painter, node, dctx) {
13096
13193
  switch (node.type) {
13097
13194
  case "draw-sprite":
@@ -13112,10 +13209,20 @@ function paintDrawable(painter, node, dctx) {
13112
13209
  if (node.scale !== void 0) painter.scale(node.scale, node.scale);
13113
13210
  if (node.rotate !== void 0) painter.rotate(node.rotate);
13114
13211
  if (node.opacity !== void 0 && node.opacity !== 1) painter.setAlpha(node.opacity);
13115
- for (const item of node.items) paintDrawable(painter, item, dctx);
13212
+ if (node.clip) {
13213
+ const tw = dctx.projector.tileWidth;
13214
+ painter.scale(tw, tw);
13215
+ painter.clipPath(node.clip);
13216
+ painter.scale(1 / tw, 1 / tw);
13217
+ }
13218
+ const childCtx = node.scale !== void 0 && node.scale !== 1 ? { ...dctx, groupScale: (dctx.groupScale ?? 1) * node.scale } : dctx;
13219
+ for (const item of node.items) paintDrawable(painter, item, childCtx);
13116
13220
  painter.restore();
13117
13221
  break;
13118
13222
  }
13223
+ case "draw-mesh":
13224
+ warnUnsupported2d("draw-mesh");
13225
+ break;
13119
13226
  case "draw-sprite-layer":
13120
13227
  paintSpriteLayer(painter, node, dctx);
13121
13228
  break;
@@ -13127,6 +13234,7 @@ function paintDrawable(painter, node, dctx) {
13127
13234
  break;
13128
13235
  }
13129
13236
  }
13237
+ var paint2dLog, warnedUnsupported2d, warnUnsupported2d;
13130
13238
  var init_paintDispatch = __esm({
13131
13239
  "lib/drawable/paintDispatch.ts"() {
13132
13240
  init_contract();
@@ -13136,6 +13244,13 @@ var init_paintDispatch = __esm({
13136
13244
  init_DrawSpriteLayer();
13137
13245
  init_DrawShapeLayer();
13138
13246
  init_DrawTextLayer();
13247
+ paint2dLog = createLogger("almadar:ui:drawable-2d");
13248
+ warnedUnsupported2d = /* @__PURE__ */ new Set();
13249
+ warnUnsupported2d = (kind) => {
13250
+ if (warnedUnsupported2d.has(kind)) return;
13251
+ warnedUnsupported2d.add(kind);
13252
+ paint2dLog.warn("unsupported drawable kind on the 2D painter \u2014 skipped", { kind });
13253
+ };
13139
13254
  }
13140
13255
  });
13141
13256
 
@@ -13150,6 +13265,7 @@ function collectDrawnItems(nodes) {
13150
13265
  case "draw-shape":
13151
13266
  case "draw-text":
13152
13267
  case "draw-group":
13268
+ case "draw-mesh":
13153
13269
  if (isValidScenePos(n.position)) out.push({ pos: n.position, id: n.id });
13154
13270
  break;
13155
13271
  case "draw-sprite-layer":
@@ -13220,7 +13336,7 @@ function Canvas2D({
13220
13336
  const registerChildDrawable = useCallback((node) => {
13221
13337
  childDrawablesRef.current.push(node);
13222
13338
  }, []);
13223
- const hasJsxChildren = React93.Children.count(children) > 0;
13339
+ const hasJsxChildren = React94.Children.count(children) > 0;
13224
13340
  function isDrawableLayer(node) {
13225
13341
  return node.type === "draw-sprite-layer" || node.type === "draw-shape-layer" || node.type === "draw-text-layer";
13226
13342
  }
@@ -13749,6 +13865,8 @@ function Canvas({
13749
13865
  showCoordinates,
13750
13866
  showTileInfo,
13751
13867
  fogOfWar,
13868
+ lighting,
13869
+ post,
13752
13870
  tileClickEvent,
13753
13871
  unitClickEvent,
13754
13872
  tileHoverEvent,
@@ -13760,13 +13878,29 @@ function Canvas({
13760
13878
  }) {
13761
13879
  canvasLog.debug("Canvas render", { mode, drawablesCount: drawables?.length, projection, camera: camera ? JSON.stringify(camera) : void 0 });
13762
13880
  const zoom = camera?.zoom;
13881
+ const childDrawablesRef = useRef([]);
13882
+ if (mode === "3d") childDrawablesRef.current = [];
13883
+ const registerChildDrawable = useCallback((node) => {
13884
+ childDrawablesRef.current.push(node);
13885
+ }, []);
13886
+ const [childDrawables, setChildDrawables] = useState([]);
13887
+ useEffect(() => {
13888
+ if (mode !== "3d") return;
13889
+ const next = childDrawablesRef.current;
13890
+ canvasLog.debug("children:adopt", { registered: next.length, adopted: childDrawables.length });
13891
+ if (next.length === 0 && React94.Children.count(children) > 0) return;
13892
+ setChildDrawables(
13893
+ (prev) => prev.length === next.length && JSON.stringify(prev) === JSON.stringify(next) ? prev : [...next]
13894
+ );
13895
+ });
13763
13896
  if (mode === "3d") {
13764
13897
  const props3d = {
13765
13898
  className,
13766
- drawables,
13899
+ drawables: [...drawables ?? [], ...childDrawables],
13767
13900
  isLoading,
13768
13901
  cameraMode: to3DCameraMode(camera?.mode),
13769
13902
  ...zoom !== void 0 ? { scale: zoom } : {},
13903
+ ...camera?.fov !== void 0 ? { fov: camera.fov } : {},
13770
13904
  ...camera?.target !== void 0 ? { followTarget: camera.target } : {},
13771
13905
  unitScale,
13772
13906
  backgroundColor,
@@ -13778,6 +13912,8 @@ function Canvas({
13778
13912
  showCoordinates,
13779
13913
  showTileInfo,
13780
13914
  fogOfWar,
13915
+ lighting,
13916
+ post,
13781
13917
  tileClickEvent,
13782
13918
  unitClickEvent,
13783
13919
  tileHoverEvent,
@@ -13786,7 +13922,10 @@ function Canvas({
13786
13922
  keyMap,
13787
13923
  keyUpMap
13788
13924
  };
13789
- return /* @__PURE__ */ jsx(Suspense, { fallback: null, children: /* @__PURE__ */ jsx(Canvas3DHost, { ...props3d }) });
13925
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
13926
+ /* @__PURE__ */ jsx(Suspense, { fallback: null, children: /* @__PURE__ */ jsx(Canvas3DHost, { ...props3d }) }),
13927
+ React94.Children.count(children) > 0 && /* @__PURE__ */ jsx(DrawableRegistryContext.Provider, { value: registerChildDrawable, children: /* @__PURE__ */ jsx("div", { "aria-hidden": "true", style: { position: "absolute", width: 0, height: 0, overflow: "hidden" }, children }) })
13928
+ ] });
13790
13929
  }
13791
13930
  return /* @__PURE__ */ jsx(
13792
13931
  Canvas2D,
@@ -13818,6 +13957,7 @@ var Canvas3DHost, canvasLog;
13818
13957
  var init_Canvas = __esm({
13819
13958
  "components/game/molecules/Canvas.tsx"() {
13820
13959
  "use client";
13960
+ init_registry();
13821
13961
  init_Canvas2D();
13822
13962
  Canvas3DHost = lazy(
13823
13963
  () => import('@almadar/ui/components/molecules/game/three').then((m) => ({ default: m.Canvas3DHost }))
@@ -13942,7 +14082,7 @@ function LinearView({
13942
14082
  /* @__PURE__ */ jsx(HStack, { className: "flex-wrap items-center", gap: "xs", children: trait.states.map((state, i) => {
13943
14083
  const isDone = i < currentIdx;
13944
14084
  const isCurrent = i === currentIdx;
13945
- return /* @__PURE__ */ jsxs(React93__default.Fragment, { children: [
14085
+ return /* @__PURE__ */ jsxs(React94__default.Fragment, { children: [
13946
14086
  i > 0 && /* @__PURE__ */ jsx(
13947
14087
  Typography,
13948
14088
  {
@@ -14477,7 +14617,7 @@ function SequenceBar({
14477
14617
  else onSlotRemove?.(index);
14478
14618
  }, [emit, slotRemoveEvent, onSlotRemove, playing]);
14479
14619
  const paddedSlots = Array.from({ length: maxSlots }, (_, i) => slots[i]);
14480
- return /* @__PURE__ */ jsx(HStack, { className: cn("items-center", className), gap: "sm", children: paddedSlots.map((slot, i) => /* @__PURE__ */ jsxs(React93__default.Fragment, { children: [
14620
+ return /* @__PURE__ */ jsx(HStack, { className: cn("items-center", className), gap: "sm", children: paddedSlots.map((slot, i) => /* @__PURE__ */ jsxs(React94__default.Fragment, { children: [
14481
14621
  i > 0 && /* @__PURE__ */ jsx(
14482
14622
  Typography,
14483
14623
  {
@@ -15126,7 +15266,7 @@ var init_ErrorBoundary = __esm({
15126
15266
  }
15127
15267
  );
15128
15268
  };
15129
- ErrorBoundary = class extends React93__default.Component {
15269
+ ErrorBoundary = class extends React94__default.Component {
15130
15270
  constructor(props) {
15131
15271
  super(props);
15132
15272
  __publicField(this, "reset", () => {
@@ -15395,7 +15535,7 @@ var init_Container = __esm({
15395
15535
  as: Component = "div"
15396
15536
  }) => {
15397
15537
  const resolvedSize = maxWidth ?? size ?? "lg";
15398
- return React93__default.createElement(
15538
+ return React94__default.createElement(
15399
15539
  Component,
15400
15540
  {
15401
15541
  className: cn(
@@ -17533,7 +17673,7 @@ var init_CodeBlock = __esm({
17533
17673
  DIFF_STYLE_FALLBACK = { bg: "", prefix: " ", text: "text-foreground" };
17534
17674
  LINE_PROPS_FN = (n) => ({ "data-line": String(n - 1) });
17535
17675
  HIDDEN_LINE_NUMBERS = { display: "none" };
17536
- CodeBlock = React93__default.memo(
17676
+ CodeBlock = React94__default.memo(
17537
17677
  ({
17538
17678
  code: rawCode,
17539
17679
  language = "text",
@@ -18121,7 +18261,7 @@ var init_MarkdownContent = __esm({
18121
18261
  init_Box();
18122
18262
  init_CodeBlock();
18123
18263
  init_cn();
18124
- MarkdownContent = React93__default.memo(
18264
+ MarkdownContent = React94__default.memo(
18125
18265
  ({ content, direction = "ltr", className }) => {
18126
18266
  const { t: _t } = useTranslate();
18127
18267
  const safeContent = typeof content === "string" ? content : String(content ?? "");
@@ -19448,7 +19588,7 @@ var init_StateMachineView = __esm({
19448
19588
  style: { top: title ? 30 : 0 },
19449
19589
  children: [
19450
19590
  entity && /* @__PURE__ */ jsx(EntityBox, { entity, config }),
19451
- states.map((state) => renderStateNode ? /* @__PURE__ */ jsx(React93__default.Fragment, { children: renderStateNode(state, config) }, state.id) : /* @__PURE__ */ jsx(
19591
+ states.map((state) => renderStateNode ? /* @__PURE__ */ jsx(React94__default.Fragment, { children: renderStateNode(state, config) }, state.id) : /* @__PURE__ */ jsx(
19452
19592
  StateNode2,
19453
19593
  {
19454
19594
  state,
@@ -25270,8 +25410,8 @@ var init_Menu = __esm({
25270
25410
  "bottom-end": "bottom-start"
25271
25411
  };
25272
25412
  const effectivePosition = direction === "rtl" ? rtlMirror[position] ?? position : position;
25273
- const triggerChild = React93__default.isValidElement(trigger) ? trigger : /* @__PURE__ */ jsx(Typography, { variant: "small", as: "span", children: trigger });
25274
- const triggerElement = React93__default.cloneElement(
25413
+ const triggerChild = React94__default.isValidElement(trigger) ? trigger : /* @__PURE__ */ jsx(Typography, { variant: "small", as: "span", children: trigger });
25414
+ const triggerElement = React94__default.cloneElement(
25275
25415
  triggerChild,
25276
25416
  {
25277
25417
  ref: triggerRef,
@@ -25366,14 +25506,14 @@ function useDataDnd(args) {
25366
25506
  const isZone = Boolean(dragGroup || accepts || sortable);
25367
25507
  const enabled = isZone || Boolean(dndRoot);
25368
25508
  const eventBus = useEventBus();
25369
- const parentRoot = React93__default.useContext(RootCtx);
25509
+ const parentRoot = React94__default.useContext(RootCtx);
25370
25510
  const isRoot = enabled && parentRoot === null;
25371
- const zoneId = React93__default.useId();
25511
+ const zoneId = React94__default.useId();
25372
25512
  const ownGroup = dragGroup ?? accepts ?? zoneId;
25373
- const [optimisticOrders, setOptimisticOrders] = React93__default.useState(() => /* @__PURE__ */ new Map());
25374
- const optimisticOrdersRef = React93__default.useRef(optimisticOrders);
25513
+ const [optimisticOrders, setOptimisticOrders] = React94__default.useState(() => /* @__PURE__ */ new Map());
25514
+ const optimisticOrdersRef = React94__default.useRef(optimisticOrders);
25375
25515
  optimisticOrdersRef.current = optimisticOrders;
25376
- const clearOptimisticOrder = React93__default.useCallback((group) => {
25516
+ const clearOptimisticOrder = React94__default.useCallback((group) => {
25377
25517
  setOptimisticOrders((prev) => {
25378
25518
  if (!prev.has(group)) return prev;
25379
25519
  const next = new Map(prev);
@@ -25398,7 +25538,7 @@ function useDataDnd(args) {
25398
25538
  const raw = it[dndItemIdField];
25399
25539
  return raw != null ? String(raw) : `__idx_${idx}`;
25400
25540
  }).join("|");
25401
- const itemIds = React93__default.useMemo(
25541
+ const itemIds = React94__default.useMemo(
25402
25542
  () => orderedItems.map((it, idx) => {
25403
25543
  const raw = it[dndItemIdField];
25404
25544
  return raw != null ? String(raw) : `__idx_${idx}`;
@@ -25409,7 +25549,7 @@ function useDataDnd(args) {
25409
25549
  const raw = it[dndItemIdField];
25410
25550
  return raw != null ? String(raw) : `__${idx}`;
25411
25551
  }).join("|");
25412
- React93__default.useEffect(() => {
25552
+ React94__default.useEffect(() => {
25413
25553
  const root = isRoot ? null : parentRoot;
25414
25554
  if (root) {
25415
25555
  root.clearOptimisticOrder(ownGroup);
@@ -25417,20 +25557,20 @@ function useDataDnd(args) {
25417
25557
  clearOptimisticOrder(ownGroup);
25418
25558
  }
25419
25559
  }, [itemsContentSig, ownGroup]);
25420
- const zonesRef = React93__default.useRef(/* @__PURE__ */ new Map());
25421
- const registerZone = React93__default.useCallback((zoneId2, meta2) => {
25560
+ const zonesRef = React94__default.useRef(/* @__PURE__ */ new Map());
25561
+ const registerZone = React94__default.useCallback((zoneId2, meta2) => {
25422
25562
  zonesRef.current.set(zoneId2, meta2);
25423
25563
  }, []);
25424
- const unregisterZone = React93__default.useCallback((zoneId2) => {
25564
+ const unregisterZone = React94__default.useCallback((zoneId2) => {
25425
25565
  zonesRef.current.delete(zoneId2);
25426
25566
  }, []);
25427
- const [activeDrag, setActiveDrag] = React93__default.useState(null);
25428
- const [overZoneGroup, setOverZoneGroup] = React93__default.useState(null);
25429
- const meta = React93__default.useMemo(
25567
+ const [activeDrag, setActiveDrag] = React94__default.useState(null);
25568
+ const [overZoneGroup, setOverZoneGroup] = React94__default.useState(null);
25569
+ const meta = React94__default.useMemo(
25430
25570
  () => ({ group: ownGroup, dropEvent, reorderEvent, positionEvent, itemIds, rawItems: items, idField: dndItemIdField }),
25431
25571
  [ownGroup, dropEvent, reorderEvent, positionEvent, itemIds, items, dndItemIdField]
25432
25572
  );
25433
- React93__default.useEffect(() => {
25573
+ React94__default.useEffect(() => {
25434
25574
  const target = isRoot ? null : parentRoot;
25435
25575
  if (!target) {
25436
25576
  zonesRef.current.set(zoneId, meta);
@@ -25449,7 +25589,7 @@ function useDataDnd(args) {
25449
25589
  }, [parentRoot, isRoot, zoneId, meta]);
25450
25590
  const sensors = useAlmadarDndSensors(true);
25451
25591
  const collisionDetection = almadarDndCollisionDetection;
25452
- const findZoneByItem = React93__default.useCallback(
25592
+ const findZoneByItem = React94__default.useCallback(
25453
25593
  (id) => {
25454
25594
  for (const z of zonesRef.current.values()) {
25455
25595
  if (z.itemIds.includes(id)) return z;
@@ -25458,7 +25598,7 @@ function useDataDnd(args) {
25458
25598
  },
25459
25599
  []
25460
25600
  );
25461
- React93__default.useCallback(
25601
+ React94__default.useCallback(
25462
25602
  (group) => {
25463
25603
  for (const z of zonesRef.current.values()) {
25464
25604
  if (z.group === group) return z;
@@ -25467,7 +25607,7 @@ function useDataDnd(args) {
25467
25607
  },
25468
25608
  []
25469
25609
  );
25470
- const handleDragEnd = React93__default.useCallback(
25610
+ const handleDragEnd = React94__default.useCallback(
25471
25611
  (event) => {
25472
25612
  const { active, over } = event;
25473
25613
  const activeIdStr = String(active.id);
@@ -25558,8 +25698,8 @@ function useDataDnd(args) {
25558
25698
  },
25559
25699
  [eventBus]
25560
25700
  );
25561
- const sortableData = React93__default.useMemo(() => ({ dndGroup: ownGroup }), [ownGroup]);
25562
- const SortableItem = React93__default.useCallback(
25701
+ const sortableData = React94__default.useMemo(() => ({ dndGroup: ownGroup }), [ownGroup]);
25702
+ const SortableItem = React94__default.useCallback(
25563
25703
  ({ id, children }) => {
25564
25704
  const {
25565
25705
  attributes,
@@ -25599,7 +25739,7 @@ function useDataDnd(args) {
25599
25739
  id: droppableId,
25600
25740
  data: sortableData
25601
25741
  });
25602
- const ctx = React93__default.useContext(RootCtx);
25742
+ const ctx = React94__default.useContext(RootCtx);
25603
25743
  const activeDrag2 = ctx?.activeDrag ?? null;
25604
25744
  const overZoneGroup2 = ctx?.overZoneGroup ?? null;
25605
25745
  const isThisZoneOver = overZoneGroup2 === ownGroup;
@@ -25614,7 +25754,7 @@ function useDataDnd(args) {
25614
25754
  showForeignPlaceholder,
25615
25755
  ctxAvailable: ctx != null
25616
25756
  });
25617
- React93__default.useEffect(() => {
25757
+ React94__default.useEffect(() => {
25618
25758
  dndLog.info("dropzone:isOver:change", { droppableId, group: ownGroup, isOver, isThisZoneOver, showForeignPlaceholder, activeDragSourceGroup: activeDrag2?.sourceGroup ?? null });
25619
25759
  }, [droppableId, isOver, isThisZoneOver, showForeignPlaceholder]);
25620
25760
  return /* @__PURE__ */ jsx(
@@ -25628,11 +25768,11 @@ function useDataDnd(args) {
25628
25768
  }
25629
25769
  );
25630
25770
  };
25631
- const rootContextValue = React93__default.useMemo(
25771
+ const rootContextValue = React94__default.useMemo(
25632
25772
  () => ({ registerZone, unregisterZone, activeDrag, overZoneGroup, optimisticOrders, clearOptimisticOrder }),
25633
25773
  [registerZone, unregisterZone, activeDrag, overZoneGroup, optimisticOrders, clearOptimisticOrder]
25634
25774
  );
25635
- const handleDragStart = React93__default.useCallback((event) => {
25775
+ const handleDragStart = React94__default.useCallback((event) => {
25636
25776
  const sourceZone = findZoneByItem(event.active.id);
25637
25777
  const rect = event.active.rect.current.initial;
25638
25778
  const height = rect?.height && rect.height > 0 ? rect.height : 64;
@@ -25651,7 +25791,7 @@ function useDataDnd(args) {
25651
25791
  isRoot
25652
25792
  });
25653
25793
  }, [findZoneByItem, isRoot, zoneId]);
25654
- const handleDragOver = React93__default.useCallback((event) => {
25794
+ const handleDragOver = React94__default.useCallback((event) => {
25655
25795
  const { active, over } = event;
25656
25796
  const overData = over?.data?.current;
25657
25797
  const overGroup = overData?.dndGroup ?? null;
@@ -25721,7 +25861,7 @@ function useDataDnd(args) {
25721
25861
  return next;
25722
25862
  });
25723
25863
  }, []);
25724
- const handleDragCancel = React93__default.useCallback((event) => {
25864
+ const handleDragCancel = React94__default.useCallback((event) => {
25725
25865
  setActiveDrag(null);
25726
25866
  setOverZoneGroup(null);
25727
25867
  dndLog.warn("dragCancel", {
@@ -25729,12 +25869,12 @@ function useDataDnd(args) {
25729
25869
  reason: "dnd-kit cancelled the drag (escape key, pointer interrupted, or external)"
25730
25870
  });
25731
25871
  }, []);
25732
- const handleDragEndWithCleanup = React93__default.useCallback((event) => {
25872
+ const handleDragEndWithCleanup = React94__default.useCallback((event) => {
25733
25873
  handleDragEnd(event);
25734
25874
  setActiveDrag(null);
25735
25875
  setOverZoneGroup(null);
25736
25876
  }, [handleDragEnd]);
25737
- const wrapContainer = React93__default.useCallback(
25877
+ const wrapContainer = React94__default.useCallback(
25738
25878
  (children) => {
25739
25879
  if (!enabled) return children;
25740
25880
  const strategy = layout === "grid" ? rectSortingStrategy : verticalListSortingStrategy;
@@ -25788,7 +25928,7 @@ var init_useDataDnd = __esm({
25788
25928
  init_useAlmadarDndCollision();
25789
25929
  init_Box();
25790
25930
  dndLog = createLogger("almadar:ui:dnd");
25791
- RootCtx = React93__default.createContext(null);
25931
+ RootCtx = React94__default.createContext(null);
25792
25932
  }
25793
25933
  });
25794
25934
  function renderIconInput(icon, props) {
@@ -26330,7 +26470,7 @@ function DataList({
26330
26470
  }) {
26331
26471
  const eventBus = useEventBus();
26332
26472
  const { t } = useTranslate();
26333
- const [visibleCount, setVisibleCount] = React93__default.useState(pageSize || Infinity);
26473
+ const [visibleCount, setVisibleCount] = React94__default.useState(pageSize || Infinity);
26334
26474
  const fieldDefs = fields ?? columns ?? [];
26335
26475
  const allDataRaw = Array.isArray(entity) ? entity : entity ? [entity] : [];
26336
26476
  const dnd = useDataDnd({
@@ -26346,14 +26486,14 @@ function DataList({
26346
26486
  dndRoot
26347
26487
  });
26348
26488
  const orderedData = dnd.orderedItems;
26349
- const allData = React93__default.useMemo(
26489
+ const allData = React94__default.useMemo(
26350
26490
  () => sortRows(orderedData, sortBy, sortDirection),
26351
26491
  [orderedData, sortBy, sortDirection]
26352
26492
  );
26353
26493
  const data = pageSize > 0 ? allData.slice(0, visibleCount) : allData;
26354
26494
  const hasMoreLocal = pageSize > 0 && visibleCount < allData.length;
26355
26495
  const hasRenderProp = typeof children === "function";
26356
- React93__default.useEffect(() => {
26496
+ React94__default.useEffect(() => {
26357
26497
  const renderItemTypeOf = typeof schemaRenderItem;
26358
26498
  const childrenTypeOf = typeof children;
26359
26499
  if (data.length > 0 && !hasRenderProp) {
@@ -26468,7 +26608,7 @@ function DataList({
26468
26608
  return v === void 0 || v === null || v === "" ? raw : String(v);
26469
26609
  };
26470
26610
  return /* @__PURE__ */ jsxs(VStack, { gap: "sm", className: cn("py-2", className), children: [
26471
- groups2.map((group, gi) => /* @__PURE__ */ jsxs(React93__default.Fragment, { children: [
26611
+ groups2.map((group, gi) => /* @__PURE__ */ jsxs(React94__default.Fragment, { children: [
26472
26612
  group.label && /* @__PURE__ */ jsx(Divider, { label: group.label, className: "my-2" }),
26473
26613
  group.items.map((itemData, index) => {
26474
26614
  const id = itemData.id || `${gi}-${index}`;
@@ -26667,7 +26807,7 @@ function DataList({
26667
26807
  className
26668
26808
  ),
26669
26809
  children: [
26670
- groups.map((group, gi) => /* @__PURE__ */ jsxs(React93__default.Fragment, { children: [
26810
+ groups.map((group, gi) => /* @__PURE__ */ jsxs(React94__default.Fragment, { children: [
26671
26811
  group.label && /* @__PURE__ */ jsx(Divider, { label: group.label, className: gi > 0 ? "mt-4" : "mt-0" }),
26672
26812
  group.items.map(
26673
26813
  (itemData, index) => renderItem(itemData, index, gi === groups.length - 1 && index === group.items.length - 1)
@@ -26754,7 +26894,7 @@ var init_FormSection = __esm({
26754
26894
  columns = 1,
26755
26895
  className
26756
26896
  }) => {
26757
- const [collapsed, setCollapsed] = React93__default.useState(defaultCollapsed);
26897
+ const [collapsed, setCollapsed] = React94__default.useState(defaultCollapsed);
26758
26898
  const { t } = useTranslate();
26759
26899
  const eventBus = useEventBus();
26760
26900
  const gridClass = {
@@ -26762,7 +26902,7 @@ var init_FormSection = __esm({
26762
26902
  2: "grid-cols-1 md:grid-cols-2",
26763
26903
  3: "grid-cols-1 md:grid-cols-2 lg:grid-cols-3"
26764
26904
  }[columns];
26765
- React93__default.useCallback(() => {
26905
+ React94__default.useCallback(() => {
26766
26906
  if (collapsible) {
26767
26907
  setCollapsed((prev) => !prev);
26768
26908
  eventBus.emit("UI:TOGGLE_COLLAPSE", { collapsed: !collapsed });
@@ -27807,7 +27947,7 @@ var init_Flex = __esm({
27807
27947
  flexStyle.flexBasis = typeof basis === "number" ? `${basis}px` : basis;
27808
27948
  }
27809
27949
  }
27810
- return React93__default.createElement(Component, {
27950
+ return React94__default.createElement(Component, {
27811
27951
  className: cn(
27812
27952
  inline ? "inline-flex" : "flex",
27813
27953
  directionStyles[direction],
@@ -27926,7 +28066,7 @@ var init_Grid = __esm({
27926
28066
  as: Component = "div"
27927
28067
  }) => {
27928
28068
  const mergedStyle = rows ? { gridTemplateRows: `repeat(${rows}, minmax(0, 1fr))`, ...style } : style;
27929
- return React93__default.createElement(
28069
+ return React94__default.createElement(
27930
28070
  Component,
27931
28071
  {
27932
28072
  className: cn(
@@ -28158,9 +28298,9 @@ var init_Popover = __esm({
28158
28298
  onMouseLeave: handleClose,
28159
28299
  onPointerDown: tapTriggerProps.onPointerDown
28160
28300
  };
28161
- const childElement = React93__default.isValidElement(children) ? children : /* @__PURE__ */ jsx("span", { children });
28301
+ const childElement = React94__default.isValidElement(children) ? children : /* @__PURE__ */ jsx("span", { children });
28162
28302
  const childPointerDown = childElement.props.onPointerDown;
28163
- const triggerElement = React93__default.cloneElement(
28303
+ const triggerElement = React94__default.cloneElement(
28164
28304
  childElement,
28165
28305
  {
28166
28306
  ref: triggerRef,
@@ -28769,9 +28909,9 @@ var init_Tooltip = __esm({
28769
28909
  if (hideTimeoutRef.current) clearTimeout(hideTimeoutRef.current);
28770
28910
  };
28771
28911
  }, []);
28772
- const triggerElement = React93__default.isValidElement(children) ? children : /* @__PURE__ */ jsx("span", { children });
28912
+ const triggerElement = React94__default.isValidElement(children) ? children : /* @__PURE__ */ jsx("span", { children });
28773
28913
  const childPointerDown = triggerElement.props.onPointerDown;
28774
- const trigger = React93__default.cloneElement(triggerElement, {
28914
+ const trigger = React94__default.cloneElement(triggerElement, {
28775
28915
  ref: triggerRef,
28776
28916
  onMouseEnter: handleMouseEnter,
28777
28917
  onMouseLeave: handleMouseLeave,
@@ -28861,7 +29001,7 @@ var init_WizardProgress = __esm({
28861
29001
  children: /* @__PURE__ */ jsx("div", { className: "flex items-center gap-2", children: normalizedSteps.map((step, index) => {
28862
29002
  const isActive = index === currentStep;
28863
29003
  const isCompleted = index < currentStep;
28864
- return /* @__PURE__ */ jsxs(React93__default.Fragment, { children: [
29004
+ return /* @__PURE__ */ jsxs(React94__default.Fragment, { children: [
28865
29005
  /* @__PURE__ */ jsx(
28866
29006
  "button",
28867
29007
  {
@@ -30496,13 +30636,13 @@ var init_MapView = __esm({
30496
30636
  shadowSize: [41, 41]
30497
30637
  });
30498
30638
  L.Marker.prototype.options.icon = defaultIcon;
30499
- const { useEffect: useEffect63, useRef: useRef63, useCallback: useCallback95, useState: useState99 } = React93__default;
30639
+ const { useEffect: useEffect64, useRef: useRef64, useCallback: useCallback96, useState: useState100 } = React94__default;
30500
30640
  const { Typography: Typography2 } = await Promise.resolve().then(() => (init_Typography(), Typography_exports));
30501
30641
  const { useEventBus: useEventBus2 } = await Promise.resolve().then(() => (init_useEventBus(), useEventBus_exports));
30502
30642
  function MapUpdater({ centerLat, centerLng, zoom }) {
30503
30643
  const map = useMap();
30504
- const prevRef = useRef63({ centerLat, centerLng, zoom });
30505
- useEffect63(() => {
30644
+ const prevRef = useRef64({ centerLat, centerLng, zoom });
30645
+ useEffect64(() => {
30506
30646
  const prev = prevRef.current;
30507
30647
  if (prev.centerLat !== centerLat || prev.centerLng !== centerLng || prev.zoom !== zoom) {
30508
30648
  map.setView([centerLat, centerLng], zoom);
@@ -30513,7 +30653,7 @@ var init_MapView = __esm({
30513
30653
  }
30514
30654
  function MapClickHandler({ onMapClick }) {
30515
30655
  const map = useMap();
30516
- useEffect63(() => {
30656
+ useEffect64(() => {
30517
30657
  if (!onMapClick) return;
30518
30658
  const handler = (e) => {
30519
30659
  onMapClick(e.latlng.lat, e.latlng.lng);
@@ -30541,8 +30681,8 @@ var init_MapView = __esm({
30541
30681
  showAttribution = true
30542
30682
  }) {
30543
30683
  const eventBus = useEventBus2();
30544
- const [clickedPosition, setClickedPosition] = useState99(null);
30545
- const handleMapClick = useCallback95((lat, lng) => {
30684
+ const [clickedPosition, setClickedPosition] = useState100(null);
30685
+ const handleMapClick = useCallback96((lat, lng) => {
30546
30686
  if (showClickedPin) {
30547
30687
  setClickedPosition({ lat, lng });
30548
30688
  }
@@ -30551,7 +30691,7 @@ var init_MapView = __esm({
30551
30691
  eventBus.emit(`UI:${mapClickEvent}`, { latitude: lat, longitude: lng });
30552
30692
  }
30553
30693
  }, [onMapClick, mapClickEvent, eventBus, showClickedPin]);
30554
- const handleMarkerClick = useCallback95((marker) => {
30694
+ const handleMarkerClick = useCallback96((marker) => {
30555
30695
  onMarkerClick?.(marker);
30556
30696
  if (markerClickEvent) {
30557
30697
  eventBus.emit(`UI:${markerClickEvent}`, { ...marker });
@@ -31414,8 +31554,8 @@ function TableView({
31414
31554
  }) {
31415
31555
  const eventBus = useEventBus();
31416
31556
  const { t } = useTranslate();
31417
- const [visibleCount, setVisibleCount] = React93__default.useState(pageSize > 0 ? pageSize : Infinity);
31418
- const [localSelected, setLocalSelected] = React93__default.useState(/* @__PURE__ */ new Set());
31557
+ const [visibleCount, setVisibleCount] = React94__default.useState(pageSize > 0 ? pageSize : Infinity);
31558
+ const [localSelected, setLocalSelected] = React94__default.useState(/* @__PURE__ */ new Set());
31419
31559
  const colDefs = (Array.isArray(columns) ? columns : void 0) ?? (Array.isArray(fields) ? fields : void 0) ?? [];
31420
31560
  const actionDefs = Array.isArray(itemActions) ? itemActions : [];
31421
31561
  const allDataRaw = Array.isArray(entity) ? entity : entity ? [entity] : [];
@@ -31437,7 +31577,7 @@ function TableView({
31437
31577
  const hasRenderProp = typeof children === "function";
31438
31578
  const idField = dndItemIdField ?? "id";
31439
31579
  const isCoarsePointer = useMediaQuery("(pointer: coarse)");
31440
- React93__default.useEffect(() => {
31580
+ React94__default.useEffect(() => {
31441
31581
  tableViewLog.debug("render", {
31442
31582
  rowCount: data.length,
31443
31583
  colCount: colDefs.length,
@@ -31494,7 +31634,7 @@ function TableView({
31494
31634
  };
31495
31635
  eventBus.emit(`UI:${itemClickEvent}`, payload);
31496
31636
  };
31497
- const colFloors = React93__default.useMemo(
31637
+ const colFloors = React94__default.useMemo(
31498
31638
  () => colDefs.map((col) => {
31499
31639
  const longest = data.reduce((widest, row) => {
31500
31640
  const cell = formatCell(asFieldValue(getNestedValue(row, col.field ?? col.key)), col.format);
@@ -31656,12 +31796,12 @@ function TableView({
31656
31796
  ]
31657
31797
  }
31658
31798
  );
31659
- return dnd.isZone ? /* @__PURE__ */ jsx(dnd.SortableItem, { id: row[idField] ?? id, children: rowInner }, id) : /* @__PURE__ */ jsx(React93__default.Fragment, { children: rowInner }, id);
31799
+ return dnd.isZone ? /* @__PURE__ */ jsx(dnd.SortableItem, { id: row[idField] ?? id, children: rowInner }, id) : /* @__PURE__ */ jsx(React94__default.Fragment, { children: rowInner }, id);
31660
31800
  };
31661
31801
  const items = Array.from(data);
31662
31802
  const groups = groupBy ? groupData2(items, groupBy) : [{ label: "", items }];
31663
31803
  let runningIndex = 0;
31664
- const body = /* @__PURE__ */ jsx(Box, { role: "rowgroup", children: groups.map((group, gi) => /* @__PURE__ */ jsxs(React93__default.Fragment, { children: [
31804
+ const body = /* @__PURE__ */ jsx(Box, { role: "rowgroup", children: groups.map((group, gi) => /* @__PURE__ */ jsxs(React94__default.Fragment, { children: [
31665
31805
  group.label && /* @__PURE__ */ jsx(Divider, { label: group.label, className: gi > 0 ? "mt-3" : "mt-0" }),
31666
31806
  group.items.map((row) => renderRow(row, runningIndex++))
31667
31807
  ] }, gi)) });
@@ -33024,7 +33164,7 @@ var init_StepFlow = __esm({
33024
33164
  className
33025
33165
  }) => {
33026
33166
  if (orientation === "vertical") {
33027
- return /* @__PURE__ */ jsx(VStack, { gap: "none", className: cn("w-full", className), children: steps.map((step, index) => /* @__PURE__ */ jsx(React93__default.Fragment, { children: /* @__PURE__ */ jsxs(HStack, { gap: "md", align: "start", className: "w-full", children: [
33167
+ return /* @__PURE__ */ jsx(VStack, { gap: "none", className: cn("w-full", className), children: steps.map((step, index) => /* @__PURE__ */ jsx(React94__default.Fragment, { children: /* @__PURE__ */ jsxs(HStack, { gap: "md", align: "start", className: "w-full", children: [
33028
33168
  /* @__PURE__ */ jsxs(VStack, { gap: "none", align: "center", children: [
33029
33169
  /* @__PURE__ */ jsx(StepCircle, { step, index }),
33030
33170
  showConnectors && index < steps.length - 1 && /* @__PURE__ */ jsx(Box, { className: "w-px h-8 bg-border" })
@@ -33035,7 +33175,7 @@ var init_StepFlow = __esm({
33035
33175
  ] })
33036
33176
  ] }) }, index)) });
33037
33177
  }
33038
- 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(React93__default.Fragment, { children: [
33178
+ 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(React94__default.Fragment, { children: [
33039
33179
  /* @__PURE__ */ jsxs(VStack, { gap: "sm", align: "center", className: "flex-1 w-full md:w-auto", children: [
33040
33180
  /* @__PURE__ */ jsx(StepCircle, { step, index }),
33041
33181
  /* @__PURE__ */ jsx(Typography, { variant: "h4", className: "text-center", children: step.title }),
@@ -34025,7 +34165,7 @@ var init_LikertScale = __esm({
34025
34165
  md: "text-base",
34026
34166
  lg: "text-lg"
34027
34167
  };
34028
- LikertScale = React93__default.forwardRef(
34168
+ LikertScale = React94__default.forwardRef(
34029
34169
  ({
34030
34170
  question,
34031
34171
  options = DEFAULT_LIKERT_OPTIONS,
@@ -34037,7 +34177,7 @@ var init_LikertScale = __esm({
34037
34177
  variant = "radios",
34038
34178
  className
34039
34179
  }, ref) => {
34040
- const groupId = React93__default.useId();
34180
+ const groupId = React94__default.useId();
34041
34181
  const eventBus = useEventBus();
34042
34182
  const handleSelect = useCallback(
34043
34183
  (next) => {
@@ -36326,7 +36466,7 @@ var init_DocBreadcrumb = __esm({
36326
36466
  "aria-label": t("aria.breadcrumb"),
36327
36467
  children: /* @__PURE__ */ jsx(HStack, { gap: "xs", align: "center", wrap: true, children: items.map((item, idx) => {
36328
36468
  const isLast = idx === items.length - 1;
36329
- return /* @__PURE__ */ jsxs(React93__default.Fragment, { children: [
36469
+ return /* @__PURE__ */ jsxs(React94__default.Fragment, { children: [
36330
36470
  idx > 0 && /* @__PURE__ */ jsx(
36331
36471
  Icon,
36332
36472
  {
@@ -36990,7 +37130,7 @@ var init_PageHeader = __esm({
36990
37130
  info: "bg-info/10 text-info"
36991
37131
  };
36992
37132
  return /* @__PURE__ */ jsxs(Box, { className: cn("mb-6", className), children: [
36993
- 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(React93__default.Fragment, { children: [
37133
+ 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(React94__default.Fragment, { children: [
36994
37134
  idx > 0 && /* @__PURE__ */ jsx(Typography, { variant: "small", color: "muted", children: "/" }),
36995
37135
  crumb.href ? /* @__PURE__ */ jsx(
36996
37136
  "a",
@@ -37348,7 +37488,7 @@ var init_Section = __esm({
37348
37488
  as: Component = "section"
37349
37489
  }) => {
37350
37490
  const hasHeader = title || description || action;
37351
- return React93__default.createElement(
37491
+ return React94__default.createElement(
37352
37492
  Component,
37353
37493
  {
37354
37494
  className: cn(
@@ -37722,7 +37862,7 @@ var init_WizardContainer = __esm({
37722
37862
  const isCompleted = index < currentStep;
37723
37863
  const stepKey = step.id ?? step.tabId ?? `step-${index}`;
37724
37864
  const stepTitle = step.title ?? step.name ?? `Step ${index + 1}`;
37725
- return /* @__PURE__ */ jsxs(React93__default.Fragment, { children: [
37865
+ return /* @__PURE__ */ jsxs(React94__default.Fragment, { children: [
37726
37866
  /* @__PURE__ */ jsx(
37727
37867
  Button,
37728
37868
  {
@@ -39509,7 +39649,7 @@ var init_ImportPreviewTree = __esm({
39509
39649
  const renderUnit = (unit, childrenByParent, depth) => {
39510
39650
  const summary = fieldSummary(unit);
39511
39651
  const children = childrenByParent.get(unit.ref) ?? [];
39512
- return /* @__PURE__ */ jsxs(React93__default.Fragment, { children: [
39652
+ return /* @__PURE__ */ jsxs(React94__default.Fragment, { children: [
39513
39653
  /* @__PURE__ */ jsxs(
39514
39654
  Box,
39515
39655
  {
@@ -39606,7 +39746,7 @@ var init_ImportProgress = __esm({
39606
39746
  PIPELINE.map((key, index) => {
39607
39747
  const isComplete = index < currentIndex;
39608
39748
  const isActive = index === currentIndex;
39609
- return /* @__PURE__ */ jsxs(React93__default.Fragment, { children: [
39749
+ return /* @__PURE__ */ jsxs(React94__default.Fragment, { children: [
39610
39750
  index > 0 ? /* @__PURE__ */ jsx(Box, { className: "h-px w-4 bg-border" }) : null,
39611
39751
  /* @__PURE__ */ jsxs(Box, { className: "flex items-center gap-1", "data-testid": `import-progress-step-${key}`, children: [
39612
39752
  /* @__PURE__ */ jsx(
@@ -40708,18 +40848,30 @@ var init_DetailPanel = __esm({
40708
40848
  DetailPanel.displayName = "DetailPanel";
40709
40849
  }
40710
40850
  });
40711
-
40712
- // components/game/atoms/DrawGroup.tsx
40713
- function DrawGroup(_props) {
40851
+ function DrawGroup(props) {
40852
+ const register = useContext(DrawableRegistryContext);
40853
+ if (register) register({ ...props, type: "draw-group" });
40714
40854
  return null;
40715
40855
  }
40716
40856
  var init_DrawGroup = __esm({
40717
40857
  "components/game/atoms/DrawGroup.tsx"() {
40718
40858
  "use client";
40859
+ init_registry();
40860
+ }
40861
+ });
40862
+ function DrawMesh(props) {
40863
+ const register = useContext(DrawableRegistryContext);
40864
+ if (register) register({ ...props, type: "draw-mesh" });
40865
+ return null;
40866
+ }
40867
+ var init_DrawMesh = __esm({
40868
+ "components/game/atoms/DrawMesh.tsx"() {
40869
+ "use client";
40870
+ init_registry();
40719
40871
  }
40720
40872
  });
40721
40873
  function extractTitle(children) {
40722
- if (!React93__default.isValidElement(children)) return void 0;
40874
+ if (!React94__default.isValidElement(children)) return void 0;
40723
40875
  const props = children.props;
40724
40876
  if (typeof props.title === "string") {
40725
40877
  return props.title;
@@ -41069,12 +41221,12 @@ var init_Form = __esm({
41069
41221
  const isSchemaEntity = isOrbitalEntitySchema(entity);
41070
41222
  const resolvedEntity = isSchemaEntity ? entity : void 0;
41071
41223
  const entityName = typeof entity === "string" ? entity : resolvedEntity?.name;
41072
- const normalizedInitialData = React93__default.useMemo(() => {
41224
+ const normalizedInitialData = React94__default.useMemo(() => {
41073
41225
  const entityRowAsInitial = isPlainEntityRow(entity) ? entity : void 0;
41074
41226
  const callerInitial = initialData !== null && typeof initialData === "object" && !Array.isArray(initialData) ? initialData : {};
41075
41227
  return entityRowAsInitial !== void 0 ? { ...entityRowAsInitial, ...callerInitial } : callerInitial;
41076
41228
  }, [entity, initialData]);
41077
- const entityDerivedFields = React93__default.useMemo(() => {
41229
+ const entityDerivedFields = React94__default.useMemo(() => {
41078
41230
  if (fields && fields.length > 0) return void 0;
41079
41231
  if (!resolvedEntity) return void 0;
41080
41232
  return resolvedEntity.fields.map(
@@ -41095,16 +41247,16 @@ var init_Form = __esm({
41095
41247
  const conditionalFields = typeof conditionalFieldsRaw === "boolean" ? {} : conditionalFieldsRaw;
41096
41248
  const hiddenCalculations = typeof hiddenCalculationsRaw === "boolean" ? [] : hiddenCalculationsRaw;
41097
41249
  const violationTriggers = typeof violationTriggersRaw === "boolean" ? [] : violationTriggersRaw;
41098
- const [formData, setFormData] = React93__default.useState(
41250
+ const [formData, setFormData] = React94__default.useState(
41099
41251
  normalizedInitialData
41100
41252
  );
41101
- const [collapsedSections, setCollapsedSections] = React93__default.useState(
41253
+ const [collapsedSections, setCollapsedSections] = React94__default.useState(
41102
41254
  /* @__PURE__ */ new Set()
41103
41255
  );
41104
- const [submitError, setSubmitError] = React93__default.useState(null);
41105
- const formRef = React93__default.useRef(null);
41256
+ const [submitError, setSubmitError] = React94__default.useState(null);
41257
+ const formRef = React94__default.useRef(null);
41106
41258
  const formMode = props.mode;
41107
- const mountedRef = React93__default.useRef(false);
41259
+ const mountedRef = React94__default.useRef(false);
41108
41260
  if (!mountedRef.current) {
41109
41261
  mountedRef.current = true;
41110
41262
  debug("forms", "mount", {
@@ -41117,7 +41269,7 @@ var init_Form = __esm({
41117
41269
  });
41118
41270
  }
41119
41271
  const shouldShowCancel = showCancel ?? (fields && fields.length > 0);
41120
- const evalContext = React93__default.useMemo(
41272
+ const evalContext = React94__default.useMemo(
41121
41273
  () => ({
41122
41274
  formValues: formData,
41123
41275
  globalVariables: externalContext?.globalVariables ?? {},
@@ -41126,7 +41278,7 @@ var init_Form = __esm({
41126
41278
  }),
41127
41279
  [formData, externalContext]
41128
41280
  );
41129
- React93__default.useEffect(() => {
41281
+ React94__default.useEffect(() => {
41130
41282
  debug("forms", "initialData-sync", {
41131
41283
  mode: formMode,
41132
41284
  normalizedInitialData,
@@ -41137,7 +41289,7 @@ var init_Form = __esm({
41137
41289
  setFormData(normalizedInitialData);
41138
41290
  }
41139
41291
  }, [normalizedInitialData]);
41140
- const processCalculations = React93__default.useCallback(
41292
+ const processCalculations = React94__default.useCallback(
41141
41293
  (changedFieldId, newFormData) => {
41142
41294
  if (!hiddenCalculations.length) return;
41143
41295
  const context = {
@@ -41162,7 +41314,7 @@ var init_Form = __esm({
41162
41314
  },
41163
41315
  [hiddenCalculations, externalContext, eventBus]
41164
41316
  );
41165
- const checkViolations = React93__default.useCallback(
41317
+ const checkViolations = React94__default.useCallback(
41166
41318
  (changedFieldId, newFormData) => {
41167
41319
  if (!violationTriggers.length) return;
41168
41320
  const context = {
@@ -41200,7 +41352,7 @@ var init_Form = __esm({
41200
41352
  processCalculations(name, newFormData);
41201
41353
  checkViolations(name, newFormData);
41202
41354
  };
41203
- const isFieldVisible = React93__default.useCallback(
41355
+ const isFieldVisible = React94__default.useCallback(
41204
41356
  (fieldName) => {
41205
41357
  const condition = conditionalFields[fieldName];
41206
41358
  if (!condition) return true;
@@ -41208,7 +41360,7 @@ var init_Form = __esm({
41208
41360
  },
41209
41361
  [conditionalFields, evalContext]
41210
41362
  );
41211
- const isSectionVisible = React93__default.useCallback(
41363
+ const isSectionVisible = React94__default.useCallback(
41212
41364
  (section) => {
41213
41365
  if (!section.condition) return true;
41214
41366
  return Boolean(evaluateFormExpression(section.condition, evalContext));
@@ -41284,7 +41436,7 @@ var init_Form = __esm({
41284
41436
  eventBus.emit(`UI:${onCancel}`);
41285
41437
  }
41286
41438
  };
41287
- const renderField = React93__default.useCallback(
41439
+ const renderField = React94__default.useCallback(
41288
41440
  (field) => {
41289
41441
  const fieldName = field.name || field.field;
41290
41442
  if (!fieldName) return null;
@@ -41305,7 +41457,7 @@ var init_Form = __esm({
41305
41457
  [formData, isFieldVisible, relationsData, relationsLoading, isLoading]
41306
41458
  );
41307
41459
  const effectiveFields = entityDerivedFields ?? fields;
41308
- const normalizedFields = React93__default.useMemo(() => {
41460
+ const normalizedFields = React94__default.useMemo(() => {
41309
41461
  if (!effectiveFields || effectiveFields.length === 0) return [];
41310
41462
  return effectiveFields.map((field) => {
41311
41463
  if (typeof field === "string") {
@@ -41329,7 +41481,7 @@ var init_Form = __esm({
41329
41481
  return field;
41330
41482
  });
41331
41483
  }, [effectiveFields, resolvedEntity]);
41332
- const schemaFields = React93__default.useMemo(() => {
41484
+ const schemaFields = React94__default.useMemo(() => {
41333
41485
  if (normalizedFields.length === 0) return null;
41334
41486
  if (isDebugEnabled()) {
41335
41487
  debugGroup(`Form: ${entityName || "unknown"}`);
@@ -41339,7 +41491,7 @@ var init_Form = __esm({
41339
41491
  }
41340
41492
  return normalizedFields.map(renderField).filter(Boolean);
41341
41493
  }, [normalizedFields, renderField, entityName, conditionalFields]);
41342
- const sectionElements = React93__default.useMemo(() => {
41494
+ const sectionElements = React94__default.useMemo(() => {
41343
41495
  if (!sections || sections.length === 0) return null;
41344
41496
  return sections.map((section) => {
41345
41497
  if (!isSectionVisible(section)) {
@@ -42065,7 +42217,7 @@ var init_List = __esm({
42065
42217
  if (entity && typeof entity === "object" && "id" in entity) return [entity];
42066
42218
  return [];
42067
42219
  }, [entity]);
42068
- const getItemActions = React93__default.useCallback(
42220
+ const getItemActions = React94__default.useCallback(
42069
42221
  (item) => {
42070
42222
  if (!itemActions) return [];
42071
42223
  if (typeof itemActions === "function") {
@@ -42546,7 +42698,7 @@ var init_MediaGallery = __esm({
42546
42698
  [selectable, selectedItems, selectionEvent, eventBus]
42547
42699
  );
42548
42700
  const entityData = Array.isArray(entity) ? entity : [];
42549
- const items = React93__default.useMemo(() => {
42701
+ const items = React94__default.useMemo(() => {
42550
42702
  if (propItems && propItems.length > 0) return propItems;
42551
42703
  if (entityData.length === 0) return [];
42552
42704
  return entityData.map((record, idx) => {
@@ -42711,7 +42863,7 @@ var init_MediaGallery = __esm({
42711
42863
  }
42712
42864
  });
42713
42865
  function extractTitle2(children) {
42714
- if (!React93__default.isValidElement(children)) return void 0;
42866
+ if (!React94__default.isValidElement(children)) return void 0;
42715
42867
  const props = children.props;
42716
42868
  if (typeof props.title === "string") {
42717
42869
  return props.title;
@@ -42985,7 +43137,7 @@ var init_debugRegistry = __esm({
42985
43137
  }
42986
43138
  });
42987
43139
  function useDebugData() {
42988
- const [data, setData] = React93.useState(() => ({
43140
+ const [data, setData] = React94.useState(() => ({
42989
43141
  traits: [],
42990
43142
  ticks: [],
42991
43143
  guards: [],
@@ -42999,7 +43151,7 @@ function useDebugData() {
42999
43151
  },
43000
43152
  lastUpdate: Date.now()
43001
43153
  }));
43002
- React93.useEffect(() => {
43154
+ React94.useEffect(() => {
43003
43155
  const updateData = () => {
43004
43156
  setData({
43005
43157
  traits: getAllTraits(),
@@ -43108,12 +43260,12 @@ function layoutGraph(states, transitions, initialState, width, height) {
43108
43260
  return positions;
43109
43261
  }
43110
43262
  function WalkMinimap() {
43111
- const [walkStep, setWalkStep] = React93.useState(null);
43112
- const [traits2, setTraits] = React93.useState([]);
43113
- const [coveredEdges, setCoveredEdges] = React93.useState([]);
43114
- const [completedTraits, setCompletedTraits] = React93.useState(/* @__PURE__ */ new Set());
43115
- const prevTraitRef = React93.useRef(null);
43116
- React93.useEffect(() => {
43263
+ const [walkStep, setWalkStep] = React94.useState(null);
43264
+ const [traits2, setTraits] = React94.useState([]);
43265
+ const [coveredEdges, setCoveredEdges] = React94.useState([]);
43266
+ const [completedTraits, setCompletedTraits] = React94.useState(/* @__PURE__ */ new Set());
43267
+ const prevTraitRef = React94.useRef(null);
43268
+ React94.useEffect(() => {
43117
43269
  const interval = setInterval(() => {
43118
43270
  const w = window;
43119
43271
  const step = w.__orbitalWalkStep;
@@ -43549,15 +43701,15 @@ var init_EntitiesTab = __esm({
43549
43701
  });
43550
43702
  function EventFlowTab({ events: events2 }) {
43551
43703
  const { t } = useTranslate();
43552
- const [filter, setFilter] = React93.useState("all");
43553
- const containerRef = React93.useRef(null);
43554
- const [autoScroll, setAutoScroll] = React93.useState(true);
43555
- React93.useEffect(() => {
43704
+ const [filter, setFilter] = React94.useState("all");
43705
+ const containerRef = React94.useRef(null);
43706
+ const [autoScroll, setAutoScroll] = React94.useState(true);
43707
+ React94.useEffect(() => {
43556
43708
  if (autoScroll && containerRef.current) {
43557
43709
  containerRef.current.scrollTop = containerRef.current.scrollHeight;
43558
43710
  }
43559
43711
  }, [events2.length, autoScroll]);
43560
- const filteredEvents = React93.useMemo(() => {
43712
+ const filteredEvents = React94.useMemo(() => {
43561
43713
  if (filter === "all") return events2;
43562
43714
  return events2.filter((e) => e.type === filter);
43563
43715
  }, [events2, filter]);
@@ -43673,7 +43825,7 @@ var init_EventFlowTab = __esm({
43673
43825
  });
43674
43826
  function GuardsPanel({ guards }) {
43675
43827
  const { t } = useTranslate();
43676
- const [filter, setFilter] = React93.useState("all");
43828
+ const [filter, setFilter] = React94.useState("all");
43677
43829
  if (guards.length === 0) {
43678
43830
  return /* @__PURE__ */ jsx(
43679
43831
  EmptyState,
@@ -43686,7 +43838,7 @@ function GuardsPanel({ guards }) {
43686
43838
  }
43687
43839
  const passedCount = guards.filter((g) => g.result).length;
43688
43840
  const failedCount = guards.length - passedCount;
43689
- const filteredGuards = React93.useMemo(() => {
43841
+ const filteredGuards = React94.useMemo(() => {
43690
43842
  if (filter === "all") return guards;
43691
43843
  if (filter === "passed") return guards.filter((g) => g.result);
43692
43844
  return guards.filter((g) => !g.result);
@@ -43849,10 +44001,10 @@ function EffectBadge({ effect }) {
43849
44001
  }
43850
44002
  function TransitionTimeline({ transitions }) {
43851
44003
  const { t } = useTranslate();
43852
- const containerRef = React93.useRef(null);
43853
- const [autoScroll, setAutoScroll] = React93.useState(true);
43854
- const [expandedId, setExpandedId] = React93.useState(null);
43855
- React93.useEffect(() => {
44004
+ const containerRef = React94.useRef(null);
44005
+ const [autoScroll, setAutoScroll] = React94.useState(true);
44006
+ const [expandedId, setExpandedId] = React94.useState(null);
44007
+ React94.useEffect(() => {
43856
44008
  if (autoScroll && containerRef.current) {
43857
44009
  containerRef.current.scrollTop = containerRef.current.scrollHeight;
43858
44010
  }
@@ -44132,9 +44284,9 @@ function getAllEvents(traits2) {
44132
44284
  function EventDispatcherTab({ traits: traits2, schema }) {
44133
44285
  const eventBus = useEventBus();
44134
44286
  const { t } = useTranslate();
44135
- const [log11, setLog] = React93.useState([]);
44136
- const prevStatesRef = React93.useRef(/* @__PURE__ */ new Map());
44137
- React93.useEffect(() => {
44287
+ const [log11, setLog] = React94.useState([]);
44288
+ const prevStatesRef = React94.useRef(/* @__PURE__ */ new Map());
44289
+ React94.useEffect(() => {
44138
44290
  for (const trait of traits2) {
44139
44291
  const prev = prevStatesRef.current.get(trait.id);
44140
44292
  if (prev && prev !== trait.currentState) {
@@ -44303,10 +44455,10 @@ function VerifyModePanel({
44303
44455
  localCount
44304
44456
  }) {
44305
44457
  const { t } = useTranslate();
44306
- const [expanded, setExpanded] = React93.useState(true);
44307
- const scrollRef = React93.useRef(null);
44308
- const prevCountRef = React93.useRef(0);
44309
- React93.useEffect(() => {
44458
+ const [expanded, setExpanded] = React94.useState(true);
44459
+ const scrollRef = React94.useRef(null);
44460
+ const prevCountRef = React94.useRef(0);
44461
+ React94.useEffect(() => {
44310
44462
  if (expanded && transitions.length > prevCountRef.current && scrollRef.current) {
44311
44463
  scrollRef.current.scrollTop = scrollRef.current.scrollHeight;
44312
44464
  }
@@ -44363,10 +44515,10 @@ function RuntimeDebugger({
44363
44515
  schema
44364
44516
  }) {
44365
44517
  const { t } = useTranslate();
44366
- const [isCollapsed, setIsCollapsed] = React93.useState(mode === "verify" ? true : defaultCollapsed);
44367
- const [isVisible, setIsVisible] = React93.useState(mode === "inline" || mode === "verify" || isDebugEnabled2());
44518
+ const [isCollapsed, setIsCollapsed] = React94.useState(mode === "verify" ? true : defaultCollapsed);
44519
+ const [isVisible, setIsVisible] = React94.useState(mode === "inline" || mode === "verify" || isDebugEnabled2());
44368
44520
  const debugData = useDebugData();
44369
- React93.useEffect(() => {
44521
+ React94.useEffect(() => {
44370
44522
  if (mode === "inline") return;
44371
44523
  return onDebugToggle((enabled) => {
44372
44524
  setIsVisible(enabled);
@@ -44375,7 +44527,7 @@ function RuntimeDebugger({
44375
44527
  }
44376
44528
  });
44377
44529
  }, [mode]);
44378
- React93.useEffect(() => {
44530
+ React94.useEffect(() => {
44379
44531
  if (mode === "inline") return;
44380
44532
  const handleKeyDown = (e) => {
44381
44533
  if (e.key === "`" && isVisible) {
@@ -44895,7 +45047,7 @@ var init_StatCard = __esm({
44895
45047
  const labelToUse = propLabel ?? propTitle;
44896
45048
  const eventBus = useEventBus();
44897
45049
  const { t } = useTranslate();
44898
- const handleActionClick = React93__default.useCallback(() => {
45050
+ const handleActionClick = React94__default.useCallback(() => {
44899
45051
  if (action?.event) {
44900
45052
  eventBus.emit(`UI:${action.event}`, {});
44901
45053
  }
@@ -44906,7 +45058,7 @@ var init_StatCard = __esm({
44906
45058
  const data = Array.isArray(entity) ? entity : entity ? [entity] : [];
44907
45059
  const isLoading = externalLoading ?? false;
44908
45060
  const error = externalError;
44909
- const computeMetricValue = React93__default.useCallback(
45061
+ const computeMetricValue = React94__default.useCallback(
44910
45062
  (metric, items) => {
44911
45063
  if (metric.value !== void 0) {
44912
45064
  return metric.value;
@@ -44945,7 +45097,7 @@ var init_StatCard = __esm({
44945
45097
  },
44946
45098
  []
44947
45099
  );
44948
- const schemaStats = React93__default.useMemo(() => {
45100
+ const schemaStats = React94__default.useMemo(() => {
44949
45101
  if (!metrics || metrics.length === 0) return null;
44950
45102
  return metrics.map((metric) => ({
44951
45103
  label: metric.label,
@@ -44953,7 +45105,7 @@ var init_StatCard = __esm({
44953
45105
  format: metric.format
44954
45106
  }));
44955
45107
  }, [metrics, data, computeMetricValue]);
44956
- const calculatedTrend = React93__default.useMemo(() => {
45108
+ const calculatedTrend = React94__default.useMemo(() => {
44957
45109
  if (manualTrend !== void 0) return manualTrend;
44958
45110
  if (previousValue === void 0 || currentValue === void 0)
44959
45111
  return void 0;
@@ -45593,8 +45745,8 @@ var init_SubagentTracePanel = __esm({
45593
45745
  ] });
45594
45746
  };
45595
45747
  InlineActivityStream = ({ activities, autoScroll = true, className }) => {
45596
- const endRef = React93__default.useRef(null);
45597
- React93__default.useEffect(() => {
45748
+ const endRef = React94__default.useRef(null);
45749
+ React94__default.useEffect(() => {
45598
45750
  if (!autoScroll) return;
45599
45751
  endRef.current?.scrollIntoView({ behavior: "smooth", block: "end" });
45600
45752
  }, [activities.length, autoScroll]);
@@ -45688,7 +45840,7 @@ var init_SubagentTracePanel = __esm({
45688
45840
  };
45689
45841
  SubagentRichCard = ({ subagent }) => {
45690
45842
  const { t } = useTranslate();
45691
- const activities = React93__default.useMemo(
45843
+ const activities = React94__default.useMemo(
45692
45844
  () => subagentMessagesToActivities(subagent.messages),
45693
45845
  [subagent.messages]
45694
45846
  );
@@ -45765,8 +45917,8 @@ var init_SubagentTracePanel = __esm({
45765
45917
  ] });
45766
45918
  };
45767
45919
  CoordinatorConversation = ({ messages, autoScroll = true, className }) => {
45768
- const endRef = React93__default.useRef(null);
45769
- React93__default.useEffect(() => {
45920
+ const endRef = React94__default.useRef(null);
45921
+ React94__default.useEffect(() => {
45770
45922
  if (!autoScroll) return;
45771
45923
  endRef.current?.scrollIntoView({ behavior: "smooth", block: "end" });
45772
45924
  }, [messages.length, autoScroll]);
@@ -46201,7 +46353,7 @@ var init_Timeline = __esm({
46201
46353
  }) => {
46202
46354
  const { t } = useTranslate();
46203
46355
  const entityData = entity ?? [];
46204
- const items = React93__default.useMemo(() => {
46356
+ const items = React94__default.useMemo(() => {
46205
46357
  if (propItems) return propItems;
46206
46358
  if (entityData.length === 0) return [];
46207
46359
  return entityData.map((record, idx) => {
@@ -46303,7 +46455,7 @@ var init_Timeline = __esm({
46303
46455
  }
46304
46456
  });
46305
46457
  function extractToastProps(children) {
46306
- if (!React93__default.isValidElement(children)) {
46458
+ if (!React94__default.isValidElement(children)) {
46307
46459
  if (typeof children === "string") {
46308
46460
  return { message: children };
46309
46461
  }
@@ -46345,7 +46497,7 @@ var init_ToastSlot = __esm({
46345
46497
  eventBus.emit(`${prefix}CLOSE`);
46346
46498
  };
46347
46499
  if (!isVisible) return null;
46348
- const isCustomContent = React93__default.isValidElement(children) && !message;
46500
+ const isCustomContent = React94__default.isValidElement(children) && !message;
46349
46501
  return /* @__PURE__ */ jsx(Box, { className: "fixed bottom-4 right-4 z-50", children: isCustomContent ? children : /* @__PURE__ */ jsx(
46350
46502
  Toast,
46351
46503
  {
@@ -46441,6 +46593,7 @@ var init_component_registry_generated = __esm({
46441
46593
  init_DocTOC();
46442
46594
  init_DocumentViewer();
46443
46595
  init_DrawGroup();
46596
+ init_DrawMesh();
46444
46597
  init_DrawShape();
46445
46598
  init_DrawShapeLayer();
46446
46599
  init_DrawSprite();
@@ -46709,6 +46862,7 @@ var init_component_registry_generated = __esm({
46709
46862
  "DocTOC": DocTOC,
46710
46863
  "DocumentViewer": DocumentViewer,
46711
46864
  "DrawGroup": DrawGroup,
46865
+ "DrawMesh": DrawMesh,
46712
46866
  "DrawShape": DrawShape,
46713
46867
  "DrawShapeLayer": DrawShapeLayer,
46714
46868
  "DrawSprite": DrawSprite,
@@ -46918,7 +47072,7 @@ function SuspenseConfigProvider({
46918
47072
  config,
46919
47073
  children
46920
47074
  }) {
46921
- return React93__default.createElement(
47075
+ return React94__default.createElement(
46922
47076
  SuspenseConfigContext.Provider,
46923
47077
  { value: config },
46924
47078
  children
@@ -46960,7 +47114,7 @@ function enrichFormFields(fields, entityDef) {
46960
47114
  }
46961
47115
  return { name: field, label: humanizeFieldName(field) };
46962
47116
  }
46963
- if (field && typeof field === "object" && !Array.isArray(field) && !React93__default.isValidElement(field) && !(field instanceof Date)) {
47117
+ if (field && typeof field === "object" && !Array.isArray(field) && !React94__default.isValidElement(field) && !(field instanceof Date)) {
46964
47118
  const obj = field;
46965
47119
  const fieldName = typeof obj.name === "string" ? obj.name : typeof obj.field === "string" ? obj.field : void 0;
46966
47120
  if (!fieldName) return field;
@@ -47432,7 +47586,7 @@ function renderPatternChildren(children, onDismiss, parentId = "root", parentPat
47432
47586
  const key = `${parentId}-${index}-trait:${traitName}`;
47433
47587
  return /* @__PURE__ */ jsx(TraitFrame, { traitName }, key);
47434
47588
  }
47435
- return /* @__PURE__ */ jsx(React93__default.Fragment, { children: child }, `${parentId}-${index}`);
47589
+ return /* @__PURE__ */ jsx(React94__default.Fragment, { children: child }, `${parentId}-${index}`);
47436
47590
  }
47437
47591
  if (!child || typeof child !== "object") return null;
47438
47592
  const childId = `${parentId}-${index}`;
@@ -47489,14 +47643,14 @@ function isPatternConfig(value) {
47489
47643
  if (value === null || value === void 0) return false;
47490
47644
  if (typeof value !== "object") return false;
47491
47645
  if (Array.isArray(value)) return false;
47492
- if (React93__default.isValidElement(value)) return false;
47646
+ if (React94__default.isValidElement(value)) return false;
47493
47647
  if (value instanceof Date) return false;
47494
47648
  if (typeof value === "function") return false;
47495
47649
  const record = value;
47496
47650
  return "type" in record && typeof record.type === "string" && getComponentForPattern$1(record.type) !== null;
47497
47651
  }
47498
47652
  function isPlainConfigObject(value) {
47499
- if (React93__default.isValidElement(value)) return false;
47653
+ if (React94__default.isValidElement(value)) return false;
47500
47654
  if (value instanceof Date) return false;
47501
47655
  const proto = Object.getPrototypeOf(value);
47502
47656
  return proto === Object.prototype || proto === null;
@@ -47637,7 +47791,7 @@ function SlotContentRenderer({
47637
47791
  for (const slotKey of CONTENT_NODE_SLOTS) {
47638
47792
  const slotVal = restProps[slotKey];
47639
47793
  if (slotVal === void 0 || slotVal === null) continue;
47640
- if (React93__default.isValidElement(slotVal) || typeof slotVal === "string" || typeof slotVal === "number" || typeof slotVal === "boolean") continue;
47794
+ if (React94__default.isValidElement(slotVal) || typeof slotVal === "string" || typeof slotVal === "number" || typeof slotVal === "boolean") continue;
47641
47795
  const typelessChildren = !Array.isArray(slotVal) && typeof slotVal === "object" && !("type" in slotVal) && Array.isArray(slotVal.children) ? slotVal.children : void 0;
47642
47796
  if (typelessChildren !== void 0 || Array.isArray(slotVal) || typeof slotVal === "object" && "type" in slotVal) {
47643
47797
  nodeSlotOverrides[slotKey] = renderPatternChildren(
@@ -47691,7 +47845,7 @@ function SlotContentRenderer({
47691
47845
  const resolvedItems = Array.isArray(entityVal) && entityVal[0] !== "fn" ? entityVal : null;
47692
47846
  if (resolvedItems && resolvedItems.length > 0 && !finalProps.fields && !finalProps.columns) {
47693
47847
  const sample = resolvedItems[0];
47694
- if (sample && typeof sample === "object" && !Array.isArray(sample) && !React93__default.isValidElement(sample) && !(sample instanceof Date)) {
47848
+ if (sample && typeof sample === "object" && !Array.isArray(sample) && !React94__default.isValidElement(sample) && !(sample instanceof Date)) {
47695
47849
  const keys = Object.keys(sample).filter((k) => k !== "id" && k !== "_id");
47696
47850
  finalProps.fields = keys.map((k, i) => ({ name: k, variant: i === 0 ? "h4" : "body" }));
47697
47851
  }
@@ -48060,7 +48214,7 @@ var AvlTransition = ({
48060
48214
  opacity = 1,
48061
48215
  className
48062
48216
  }) => {
48063
- const ids = React93__default.useMemo(() => {
48217
+ const ids = React94__default.useMemo(() => {
48064
48218
  avlTransitionId += 1;
48065
48219
  return { arrow: `avl-tr-${avlTransitionId}-arrow` };
48066
48220
  }, []);
@@ -48621,7 +48775,7 @@ var AvlStateMachine = ({
48621
48775
  color = "var(--color-primary)",
48622
48776
  animated = false
48623
48777
  }) => {
48624
- const ids = React93__default.useMemo(() => {
48778
+ const ids = React94__default.useMemo(() => {
48625
48779
  avlSmId += 1;
48626
48780
  const base = `avl-sm-${avlSmId}`;
48627
48781
  return { glow: `${base}-glow`, grad: `${base}-grad` };
@@ -48820,7 +48974,7 @@ var AvlOrbitalUnit = ({
48820
48974
  color = "var(--color-primary)",
48821
48975
  animated = false
48822
48976
  }) => {
48823
- const ids = React93__default.useMemo(() => {
48977
+ const ids = React94__default.useMemo(() => {
48824
48978
  avlOuId += 1;
48825
48979
  const base = `avl-ou-${avlOuId}`;
48826
48980
  return { glow: `${base}-glow`, grad: `${base}-grad` };
@@ -48916,7 +49070,7 @@ var AvlClosedCircuit = ({
48916
49070
  color = "var(--color-primary)",
48917
49071
  animated = false
48918
49072
  }) => {
48919
- const ids = React93__default.useMemo(() => {
49073
+ const ids = React94__default.useMemo(() => {
48920
49074
  avlCcId += 1;
48921
49075
  const base = `avl-cc-${avlCcId}`;
48922
49076
  return { glow: `${base}-glow`, grad: `${base}-grad`, arrow: `${base}-arrow` };
@@ -49071,7 +49225,7 @@ var AvlEmitListen = ({
49071
49225
  color = "var(--color-primary)",
49072
49226
  animated = false
49073
49227
  }) => {
49074
- const ids = React93__default.useMemo(() => {
49228
+ const ids = React94__default.useMemo(() => {
49075
49229
  avlElId += 1;
49076
49230
  const base = `avl-el-${avlElId}`;
49077
49231
  return { arrow: `${base}-arrow`, grad: `${base}-grad` };
@@ -49345,7 +49499,7 @@ function renderNode(node, color, glowId) {
49345
49499
  const baseR = node.type === "operator" ? 20 : 16;
49346
49500
  const r2 = Math.max(baseR, labelLen * 3.5 + 6);
49347
49501
  const nc = nodeColor(node.type, color);
49348
- return /* @__PURE__ */ jsxs(React93__default.Fragment, { children: [
49502
+ return /* @__PURE__ */ jsxs(React94__default.Fragment, { children: [
49349
49503
  node.children.map((child, i) => {
49350
49504
  const childR = Math.max(
49351
49505
  child.type === "operator" ? 20 : 16,
@@ -49402,7 +49556,7 @@ var AvlExprTree = ({
49402
49556
  className,
49403
49557
  color = "var(--color-primary)"
49404
49558
  }) => {
49405
- const ids = React93__default.useMemo(() => {
49559
+ const ids = React94__default.useMemo(() => {
49406
49560
  avlEtId += 1;
49407
49561
  return { glow: `avl-et-${avlEtId}-glow` };
49408
49562
  }, []);
@@ -50237,7 +50391,7 @@ var SystemNode = ({ data }) => {
50237
50391
  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) => {
50238
50392
  const tc = transitionCounts[s.name] ?? 0;
50239
50393
  const role = getStateRole(s.name, s.isInitial ?? void 0, s.isTerminal ?? void 0, tc, maxTC);
50240
- return /* @__PURE__ */ jsxs(React93__default.Fragment, { children: [
50394
+ return /* @__PURE__ */ jsxs(React94__default.Fragment, { children: [
50241
50395
  /* @__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 }),
50242
50396
  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 })
50243
50397
  ] }, s.name);
@@ -51324,7 +51478,7 @@ function resolveLambdaBindings(body, params, item, index) {
51324
51478
  }
51325
51479
  return substituted;
51326
51480
  }
51327
- if (body !== null && typeof body === "object" && !React93__default.isValidElement(body) && !(body instanceof Date) && typeof body !== "function") {
51481
+ if (body !== null && typeof body === "object" && !React94__default.isValidElement(body) && !(body instanceof Date) && typeof body !== "function") {
51328
51482
  const out = {};
51329
51483
  for (const [k, v] of Object.entries(body)) {
51330
51484
  out[k] = recur(v);
@@ -51357,7 +51511,7 @@ function deferLambdaEntityExprs(value) {
51357
51511
  }
51358
51512
  return arr.map((v) => deferLambdaEntityExprs(v));
51359
51513
  }
51360
- if (value !== null && typeof value === "object" && !React93__default.isValidElement(value) && !(value instanceof Date) && typeof value !== "function" && !isRenderBindingMarker(value)) {
51514
+ if (value !== null && typeof value === "object" && !React94__default.isValidElement(value) && !(value instanceof Date) && typeof value !== "function" && !isRenderBindingMarker(value)) {
51361
51515
  const out = {};
51362
51516
  for (const [k, v] of Object.entries(value)) {
51363
51517
  out[k] = deferLambdaEntityExprs(v);
@@ -51371,7 +51525,7 @@ function makeLambdaFn(params, lambdaBody, callerKey) {
51371
51525
  const resolvedBody = deferLambdaEntityExprs(
51372
51526
  resolveLambdaBindings(lambdaBody, params, item, index)
51373
51527
  );
51374
- if (resolvedBody === null || typeof resolvedBody !== "object" || Array.isArray(resolvedBody) || typeof resolvedBody === "function" || React93__default.isValidElement(resolvedBody) || resolvedBody instanceof Date) {
51528
+ if (resolvedBody === null || typeof resolvedBody !== "object" || Array.isArray(resolvedBody) || typeof resolvedBody === "function" || React94__default.isValidElement(resolvedBody) || resolvedBody instanceof Date) {
51375
51529
  return null;
51376
51530
  }
51377
51531
  const record = resolvedBody;
@@ -51390,7 +51544,7 @@ function makeLambdaFn(params, lambdaBody, callerKey) {
51390
51544
  props: childProps,
51391
51545
  priority: 0
51392
51546
  };
51393
- return React93__default.createElement(SlotContentRenderer2, { content: childContent });
51547
+ return React94__default.createElement(SlotContentRenderer2, { content: childContent });
51394
51548
  };
51395
51549
  }
51396
51550
  function convertNode(node, callerKey) {
@@ -51410,7 +51564,7 @@ function convertNode(node, callerKey) {
51410
51564
  });
51411
51565
  return anyChanged ? mapped : node;
51412
51566
  }
51413
- if (typeof node === "object" && !React93__default.isValidElement(node) && !(node instanceof Date)) {
51567
+ if (typeof node === "object" && !React94__default.isValidElement(node) && !(node instanceof Date)) {
51414
51568
  return convertObjectProps(node);
51415
51569
  }
51416
51570
  return node;
@@ -53333,8 +53487,8 @@ function CanvasDndProvider({
53333
53487
  }) {
53334
53488
  const eventBus = useEventBus();
53335
53489
  const sensors = useAlmadarDndSensors(false);
53336
- const [activePayload, setActivePayload] = React93__default.useState(null);
53337
- const handleDragStart = React93__default.useCallback((e) => {
53490
+ const [activePayload, setActivePayload] = React94__default.useState(null);
53491
+ const handleDragStart = React94__default.useCallback((e) => {
53338
53492
  const data = e.active.data.current;
53339
53493
  const payload = data?.payload;
53340
53494
  if (payload) {
@@ -53345,7 +53499,7 @@ function CanvasDndProvider({
53345
53499
  log9.warn("dragStart:missing-payload", { id: e.active.id });
53346
53500
  }
53347
53501
  }, [eventBus]);
53348
- const handleDragEnd = React93__default.useCallback((e) => {
53502
+ const handleDragEnd = React94__default.useCallback((e) => {
53349
53503
  setActivePayload(null);
53350
53504
  const activeData = e.active.data.current;
53351
53505
  const payload = activeData?.payload;
@@ -53374,7 +53528,7 @@ function CanvasDndProvider({
53374
53528
  const suppressed = onDrop ? onDrop(drop) === true : false;
53375
53529
  if (!suppressed) defaultEmit(eventBus, drop);
53376
53530
  }, [eventBus, onDrop]);
53377
- const handleDragCancel = React93__default.useCallback(() => {
53531
+ const handleDragCancel = React94__default.useCallback(() => {
53378
53532
  setActivePayload(null);
53379
53533
  log9.info("dragCancel");
53380
53534
  }, []);
@@ -54132,7 +54286,7 @@ var OrbPreviewNodeInner = (props) => {
54132
54286
  }
54133
54287
  );
54134
54288
  };
54135
- var OrbPreviewNode = React93__default.memo(OrbPreviewNodeInner);
54289
+ var OrbPreviewNode = React94__default.memo(OrbPreviewNodeInner);
54136
54290
  OrbPreviewNode.displayName = "OrbPreviewNode";
54137
54291
  orbPreviewLog.debug("export-resolved", () => ({
54138
54292
  type: typeof OrbPreviewNode,
@@ -54237,7 +54391,7 @@ var EventFlowEdgeInner = (props) => {
54237
54391
  ) })
54238
54392
  ] });
54239
54393
  };
54240
- var EventFlowEdge = React93__default.memo(EventFlowEdgeInner);
54394
+ var EventFlowEdge = React94__default.memo(EventFlowEdgeInner);
54241
54395
  EventFlowEdge.displayName = "EventFlowEdge";
54242
54396
 
54243
54397
  // components/avl/molecules/BehaviorComposeNode.tsx
@@ -54384,7 +54538,7 @@ var BehaviorComposeNodeInner = (props) => {
54384
54538
  }
54385
54539
  );
54386
54540
  };
54387
- var BehaviorComposeNode = React93__default.memo(BehaviorComposeNodeInner);
54541
+ var BehaviorComposeNode = React94__default.memo(BehaviorComposeNodeInner);
54388
54542
  BehaviorComposeNode.displayName = "BehaviorComposeNode";
54389
54543
 
54390
54544
  // components/avl/lib/avl-behavior-compose-converter.ts
@@ -55410,7 +55564,7 @@ var TraitCardNodeInner = (props) => {
55410
55564
  }
55411
55565
  );
55412
55566
  };
55413
- var TraitCardNode = React93__default.memo(TraitCardNodeInner);
55567
+ var TraitCardNode = React94__default.memo(TraitCardNodeInner);
55414
55568
  TraitCardNode.displayName = "TraitCardNode";
55415
55569
 
55416
55570
  // components/avl/organisms/FlowCanvas.tsx
@@ -55491,7 +55645,7 @@ function FlowCanvasInner({
55491
55645
  initialOrbital
55492
55646
  );
55493
55647
  const [expandedBehaviorAlias, setExpandedBehaviorAlias] = useState(void 0);
55494
- const screenSizeUserOverrideRef = React93__default.useRef(false);
55648
+ const screenSizeUserOverrideRef = React94__default.useRef(false);
55495
55649
  const [screenSize, setScreenSize] = useState(
55496
55650
  () => typeof window === "undefined" ? "laptop" : detectScreenSize(window.innerWidth)
55497
55651
  );
@@ -55875,7 +56029,7 @@ var ZoomBreadcrumb = ({
55875
56029
  if (eventName && band === "detail") {
55876
56030
  segments.push({ icon: "\u26A1", label: eventName });
55877
56031
  }
55878
- 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(React93__default.Fragment, { children: [
56032
+ 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(React94__default.Fragment, { children: [
55879
56033
  i > 0 && /* @__PURE__ */ jsx("span", { className: "opacity-40", children: ">" }),
55880
56034
  /* @__PURE__ */ jsx("span", { className: "opacity-60", children: seg.icon }),
55881
56035
  /* @__PURE__ */ jsx("span", { children: seg.label })
@@ -56216,7 +56370,7 @@ var EventWireOverlay = ({
56216
56370
  containerW,
56217
56371
  containerH
56218
56372
  }) => {
56219
- const ids = React93__default.useMemo(() => {
56373
+ const ids = React94__default.useMemo(() => {
56220
56374
  avlOczWireId += 1;
56221
56375
  return { arrow: `avl-ocz-wire-${avlOczWireId}-arrow` };
56222
56376
  }, []);
@@ -56583,7 +56737,7 @@ var AvlOrbitalsCosmicZoom = ({
56583
56737
  borderRadius: 6,
56584
56738
  border: `1px solid ${color}`
56585
56739
  },
56586
- children: /* @__PURE__ */ jsx(HStack, { gap: "xs", align: "center", children: breadcrumbs.map((crumb, i) => /* @__PURE__ */ jsxs(React93__default.Fragment, { children: [
56740
+ children: /* @__PURE__ */ jsx(HStack, { gap: "xs", align: "center", children: breadcrumbs.map((crumb, i) => /* @__PURE__ */ jsxs(React94__default.Fragment, { children: [
56587
56741
  i > 0 && /* @__PURE__ */ jsx(Typography, { variant: "small", style: { opacity: 0.5, color }, children: "/" }),
56588
56742
  i < breadcrumbs.length - 1 ? /* @__PURE__ */ jsx(
56589
56743
  Box,