@almadar/ui 2.26.0 → 2.27.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.
@@ -1,5 +1,5 @@
1
- import * as React88 from 'react';
2
- import React88__default, { useCallback, createContext, useState, useRef, useLayoutEffect, useEffect, lazy, useContext, useMemo, useId, Suspense, useSyncExternalStore } from 'react';
1
+ import * as React90 from 'react';
2
+ import React90__default, { useCallback, createContext, useState, useRef, useEffect, useLayoutEffect, lazy, useContext, useMemo, useId, Suspense, useSyncExternalStore } from 'react';
3
3
  import { clsx } from 'clsx';
4
4
  import { twMerge } from 'tailwind-merge';
5
5
  import * as LucideIcons from 'lucide-react';
@@ -268,7 +268,7 @@ function resolveIconProp(value, sizeClass) {
268
268
  const IconComp = value;
269
269
  return /* @__PURE__ */ jsx(IconComp, { className: sizeClass });
270
270
  }
271
- if (React88__default.isValidElement(value)) {
271
+ if (React90__default.isValidElement(value)) {
272
272
  return value;
273
273
  }
274
274
  if (typeof value === "object" && value !== null && "render" in value) {
@@ -277,7 +277,7 @@ function resolveIconProp(value, sizeClass) {
277
277
  }
278
278
  return value;
279
279
  }
280
- var Button = React88__default.forwardRef(
280
+ var Button = React90__default.forwardRef(
281
281
  ({
282
282
  className,
283
283
  variant = "primary",
@@ -336,7 +336,7 @@ var Button = React88__default.forwardRef(
336
336
  }
337
337
  );
338
338
  Button.displayName = "Button";
339
- var Input = React88__default.forwardRef(
339
+ var Input = React90__default.forwardRef(
340
340
  ({
341
341
  className,
342
342
  inputType,
@@ -448,7 +448,7 @@ var Input = React88__default.forwardRef(
448
448
  }
449
449
  );
450
450
  Input.displayName = "Input";
451
- var Label = React88__default.forwardRef(
451
+ var Label = React90__default.forwardRef(
452
452
  ({ className, required, children, ...props }, ref) => {
453
453
  return /* @__PURE__ */ jsxs(
454
454
  "label",
@@ -468,7 +468,7 @@ var Label = React88__default.forwardRef(
468
468
  }
469
469
  );
470
470
  Label.displayName = "Label";
471
- var Textarea = React88__default.forwardRef(
471
+ var Textarea = React90__default.forwardRef(
472
472
  ({ className, error, ...props }, ref) => {
473
473
  return /* @__PURE__ */ jsx(
474
474
  "textarea",
@@ -491,7 +491,7 @@ var Textarea = React88__default.forwardRef(
491
491
  }
492
492
  );
493
493
  Textarea.displayName = "Textarea";
494
- var Select = React88__default.forwardRef(
494
+ var Select = React90__default.forwardRef(
495
495
  ({ className, options, placeholder, error, ...props }, ref) => {
496
496
  return /* @__PURE__ */ jsxs("div", { className: "relative", children: [
497
497
  /* @__PURE__ */ jsxs(
@@ -527,7 +527,7 @@ var Select = React88__default.forwardRef(
527
527
  }
528
528
  );
529
529
  Select.displayName = "Select";
530
- var Checkbox = React88__default.forwardRef(
530
+ var Checkbox = React90__default.forwardRef(
531
531
  ({ className, label, id, ...props }, ref) => {
532
532
  const inputId = id || `checkbox-${Math.random().toString(36).substr(2, 9)}`;
533
533
  return /* @__PURE__ */ jsxs("div", { className: "flex items-center", children: [
@@ -603,7 +603,7 @@ var shadowStyles = {
603
603
  md: "shadow",
604
604
  lg: "shadow-lg"
605
605
  };
606
- var Card = React88__default.forwardRef(
606
+ var Card = React90__default.forwardRef(
607
607
  ({
608
608
  className,
609
609
  variant = "bordered",
@@ -639,9 +639,9 @@ var Card = React88__default.forwardRef(
639
639
  }
640
640
  );
641
641
  Card.displayName = "Card";
642
- var CardHeader = React88__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn("mb-4", className), ...props }));
642
+ var CardHeader = React90__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn("mb-4", className), ...props }));
643
643
  CardHeader.displayName = "CardHeader";
644
- var CardTitle = React88__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
644
+ var CardTitle = React90__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
645
645
  "h3",
646
646
  {
647
647
  ref,
@@ -654,11 +654,11 @@ var CardTitle = React88__default.forwardRef(({ className, ...props }, ref) => /*
654
654
  }
655
655
  ));
656
656
  CardTitle.displayName = "CardTitle";
657
- var CardContent = React88__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn("", className), ...props }));
657
+ var CardContent = React90__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn("", className), ...props }));
658
658
  CardContent.displayName = "CardContent";
659
659
  var CardBody = CardContent;
660
660
  CardBody.displayName = "CardBody";
661
- var CardFooter = React88__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
661
+ var CardFooter = React90__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
662
662
  "div",
663
663
  {
664
664
  ref,
@@ -704,7 +704,7 @@ var sizeStyles2 = {
704
704
  md: "px-2.5 py-1 text-sm",
705
705
  lg: "px-3 py-1.5 text-base"
706
706
  };
707
- var Badge = React88__default.forwardRef(
707
+ var Badge = React90__default.forwardRef(
708
708
  ({ className, variant = "default", size = "sm", amount, label, icon, children, ...props }, ref) => {
709
709
  const iconSizes2 = { sm: "w-3 h-3", md: "w-3.5 h-3.5", lg: "w-4 h-4" };
710
710
  const resolvedIcon = typeof icon === "string" ? (() => {
@@ -737,7 +737,7 @@ var sizeStyles3 = {
737
737
  md: "h-6 w-6",
738
738
  lg: "h-8 w-8"
739
739
  };
740
- var Spinner = React88__default.forwardRef(
740
+ var Spinner = React90__default.forwardRef(
741
741
  ({ className, size = "md", ...props }, ref) => {
742
742
  return /* @__PURE__ */ jsx(
743
743
  "div",
@@ -1002,7 +1002,7 @@ var positionStyles = {
1002
1002
  fixed: "fixed",
1003
1003
  sticky: "sticky"
1004
1004
  };
1005
- var Box = React88__default.forwardRef(
1005
+ var Box = React90__default.forwardRef(
1006
1006
  ({
1007
1007
  padding,
1008
1008
  paddingX,
@@ -1349,7 +1349,7 @@ var ProgressBar = ({
1349
1349
  return null;
1350
1350
  };
1351
1351
  ProgressBar.displayName = "ProgressBar";
1352
- var Radio = React88__default.forwardRef(
1352
+ var Radio = React90__default.forwardRef(
1353
1353
  ({
1354
1354
  label,
1355
1355
  helperText,
@@ -1453,7 +1453,7 @@ var Radio = React88__default.forwardRef(
1453
1453
  }
1454
1454
  );
1455
1455
  Radio.displayName = "Radio";
1456
- var Switch = React88.forwardRef(
1456
+ var Switch = React90.forwardRef(
1457
1457
  ({
1458
1458
  checked,
1459
1459
  defaultChecked = false,
@@ -1464,10 +1464,10 @@ var Switch = React88.forwardRef(
1464
1464
  name,
1465
1465
  className
1466
1466
  }, ref) => {
1467
- const [isChecked, setIsChecked] = React88.useState(
1467
+ const [isChecked, setIsChecked] = React90.useState(
1468
1468
  checked !== void 0 ? checked : defaultChecked
1469
1469
  );
1470
- React88.useEffect(() => {
1470
+ React90.useEffect(() => {
1471
1471
  if (checked !== void 0) {
1472
1472
  setIsChecked(checked);
1473
1473
  }
@@ -2261,8 +2261,8 @@ var LawReferenceTooltip = ({
2261
2261
  position = "top",
2262
2262
  className
2263
2263
  }) => {
2264
- const [isVisible, setIsVisible] = React88__default.useState(false);
2265
- const timeoutRef = React88__default.useRef(null);
2264
+ const [isVisible, setIsVisible] = React90__default.useState(false);
2265
+ const timeoutRef = React90__default.useRef(null);
2266
2266
  const handleMouseEnter = () => {
2267
2267
  if (timeoutRef.current) clearTimeout(timeoutRef.current);
2268
2268
  timeoutRef.current = setTimeout(() => setIsVisible(true), 200);
@@ -2271,7 +2271,7 @@ var LawReferenceTooltip = ({
2271
2271
  if (timeoutRef.current) clearTimeout(timeoutRef.current);
2272
2272
  setIsVisible(false);
2273
2273
  };
2274
- React88__default.useEffect(() => {
2274
+ React90__default.useEffect(() => {
2275
2275
  return () => {
2276
2276
  if (timeoutRef.current) clearTimeout(timeoutRef.current);
2277
2277
  };
@@ -2459,7 +2459,7 @@ var sizeStyles5 = {
2459
2459
  md: "w-2.5 h-2.5",
2460
2460
  lg: "w-3 h-3"
2461
2461
  };
2462
- var StatusDot = React88__default.forwardRef(
2462
+ var StatusDot = React90__default.forwardRef(
2463
2463
  ({ className, status = "offline", pulse = false, size = "md", label, ...props }, ref) => {
2464
2464
  return /* @__PURE__ */ jsx(
2465
2465
  "span",
@@ -2506,7 +2506,7 @@ var iconMap = {
2506
2506
  down: TrendingDown,
2507
2507
  flat: ArrowRight
2508
2508
  };
2509
- var TrendIndicator = React88__default.forwardRef(
2509
+ var TrendIndicator = React90__default.forwardRef(
2510
2510
  ({
2511
2511
  className,
2512
2512
  value,
@@ -2565,7 +2565,7 @@ var thumbSizes = {
2565
2565
  md: "w-4 h-4",
2566
2566
  lg: "w-5 h-5"
2567
2567
  };
2568
- var RangeSlider = React88__default.forwardRef(
2568
+ var RangeSlider = React90__default.forwardRef(
2569
2569
  ({
2570
2570
  className,
2571
2571
  min = 0,
@@ -3097,7 +3097,7 @@ var paddingClasses = {
3097
3097
  md: "py-16",
3098
3098
  lg: "py-24"
3099
3099
  };
3100
- var ContentSection = React88__default.forwardRef(
3100
+ var ContentSection = React90__default.forwardRef(
3101
3101
  ({ children, background = "default", padding = "lg", id, className }, ref) => {
3102
3102
  return /* @__PURE__ */ jsx(
3103
3103
  Box,
@@ -3598,6 +3598,289 @@ function getTileDimensions(variant, size) {
3598
3598
  }
3599
3599
  return { width: size, height: size };
3600
3600
  }
3601
+ var initialStyles = {
3602
+ "fade-up": { opacity: 0, transform: "translateY(24px)" },
3603
+ "fade-down": { opacity: 0, transform: "translateY(-24px)" },
3604
+ "fade-in": { opacity: 0 },
3605
+ "fade-left": { opacity: 0, transform: "translateX(24px)" },
3606
+ "fade-right": { opacity: 0, transform: "translateX(-24px)" },
3607
+ "scale": { opacity: 0, transform: "scale(0.92)" },
3608
+ "scale-up": { opacity: 0, transform: "scale(0.92) translateY(16px)" },
3609
+ "none": {}
3610
+ };
3611
+ var animatedStyles = {
3612
+ "fade-up": { opacity: 1, transform: "translateY(0)" },
3613
+ "fade-down": { opacity: 1, transform: "translateY(0)" },
3614
+ "fade-in": { opacity: 1 },
3615
+ "fade-left": { opacity: 1, transform: "translateX(0)" },
3616
+ "fade-right": { opacity: 1, transform: "translateX(0)" },
3617
+ "scale": { opacity: 1, transform: "scale(1)" },
3618
+ "scale-up": { opacity: 1, transform: "scale(1) translateY(0)" },
3619
+ "none": {}
3620
+ };
3621
+ var AnimatedReveal = React90__default.forwardRef(
3622
+ ({
3623
+ trigger = "scroll",
3624
+ animation = "fade-up",
3625
+ duration = 600,
3626
+ delay = 0,
3627
+ threshold = 0.15,
3628
+ once = true,
3629
+ animate: manualAnimate,
3630
+ easing = "cubic-bezier(0.16, 1, 0.3, 1)",
3631
+ children,
3632
+ className,
3633
+ style,
3634
+ ...props
3635
+ }, forwardedRef) => {
3636
+ const [isAnimated, setIsAnimated] = useState(false);
3637
+ const internalRef = useRef(null);
3638
+ const hasAnimated = useRef(false);
3639
+ const setRef = useCallback(
3640
+ (node) => {
3641
+ internalRef.current = node;
3642
+ if (typeof forwardedRef === "function") forwardedRef(node);
3643
+ else if (forwardedRef) forwardedRef.current = node;
3644
+ },
3645
+ [forwardedRef]
3646
+ );
3647
+ useEffect(() => {
3648
+ if (trigger !== "scroll") return;
3649
+ const el = internalRef.current;
3650
+ if (!el) return;
3651
+ const observer = new IntersectionObserver(
3652
+ ([entry]) => {
3653
+ if (entry.isIntersecting) {
3654
+ if (once && hasAnimated.current) return;
3655
+ hasAnimated.current = true;
3656
+ setIsAnimated(true);
3657
+ } else if (!once) {
3658
+ setIsAnimated(false);
3659
+ }
3660
+ },
3661
+ { threshold }
3662
+ );
3663
+ observer.observe(el);
3664
+ return () => observer.disconnect();
3665
+ }, [trigger, threshold, once]);
3666
+ const handleMouseEnter = trigger === "hover" ? () => setIsAnimated(true) : void 0;
3667
+ const handleMouseLeave = trigger === "hover" ? () => {
3668
+ if (!once || !hasAnimated.current) {
3669
+ hasAnimated.current = true;
3670
+ setIsAnimated(false);
3671
+ }
3672
+ } : void 0;
3673
+ useEffect(() => {
3674
+ if (trigger === "manual" && manualAnimate !== void 0) {
3675
+ setIsAnimated(manualAnimate);
3676
+ }
3677
+ }, [trigger, manualAnimate]);
3678
+ const active = isAnimated;
3679
+ const currentStyle = active ? animatedStyles[animation] : initialStyles[animation];
3680
+ return /* @__PURE__ */ jsx(
3681
+ "div",
3682
+ {
3683
+ ref: setRef,
3684
+ className: cn("will-change-[opacity,transform]", className),
3685
+ style: {
3686
+ ...currentStyle,
3687
+ transitionProperty: "opacity, transform",
3688
+ transitionDuration: `${duration}ms`,
3689
+ transitionDelay: `${delay}ms`,
3690
+ transitionTimingFunction: easing,
3691
+ ...style
3692
+ },
3693
+ onMouseEnter: handleMouseEnter,
3694
+ onMouseLeave: handleMouseLeave,
3695
+ ...props,
3696
+ children: typeof children === "function" ? children(active) : children
3697
+ }
3698
+ );
3699
+ }
3700
+ );
3701
+ AnimatedReveal.displayName = "AnimatedReveal";
3702
+ function useFetchedSvg(src) {
3703
+ const [svg, setSvg] = useState(null);
3704
+ const cache = useRef({});
3705
+ useEffect(() => {
3706
+ if (!src) {
3707
+ setSvg(null);
3708
+ return;
3709
+ }
3710
+ if (cache.current[src]) {
3711
+ setSvg(cache.current[src]);
3712
+ return;
3713
+ }
3714
+ let cancelled = false;
3715
+ fetch(src).then((res) => {
3716
+ if (!res.ok) throw new Error(`Failed to fetch SVG: ${res.status}`);
3717
+ return res.text();
3718
+ }).then((text) => {
3719
+ if (cancelled) return;
3720
+ cache.current[src] = text;
3721
+ setSvg(text);
3722
+ }).catch(() => {
3723
+ if (!cancelled) setSvg(null);
3724
+ });
3725
+ return () => {
3726
+ cancelled = true;
3727
+ };
3728
+ }, [src]);
3729
+ return svg;
3730
+ }
3731
+ function applyDrawAnimation(container, animate, duration, delay, easing) {
3732
+ const paths = container.querySelectorAll("path, line, polyline, polygon, circle, ellipse, rect");
3733
+ paths.forEach((el) => {
3734
+ if ("getTotalLength" in el && typeof el.getTotalLength === "function") {
3735
+ const len = el.getTotalLength();
3736
+ el.style.strokeDasharray = `${len}`;
3737
+ el.style.strokeDashoffset = animate ? "0" : `${len}`;
3738
+ el.style.transition = `stroke-dashoffset ${duration}ms ${easing} ${delay}ms`;
3739
+ }
3740
+ });
3741
+ }
3742
+ function applyFillAnimation(container, animate, duration, delay, easing, fillColor) {
3743
+ const paths = container.querySelectorAll("path, circle, ellipse, rect, polygon");
3744
+ paths.forEach((el) => {
3745
+ if ("getTotalLength" in el && typeof el.getTotalLength === "function") {
3746
+ const geom = el;
3747
+ const len = geom.getTotalLength();
3748
+ geom.style.strokeDasharray = `${len}`;
3749
+ geom.style.strokeDashoffset = animate ? "0" : `${len}`;
3750
+ geom.style.transition = `stroke-dashoffset ${duration * 0.6}ms ${easing} ${delay}ms, fill-opacity ${duration * 0.4}ms ${easing} ${delay + duration * 0.6}ms`;
3751
+ }
3752
+ if (fillColor) el.style.fill = fillColor;
3753
+ el.style.fillOpacity = animate ? "1" : "0";
3754
+ });
3755
+ }
3756
+ function applyPulseAnimation(container, animate, duration) {
3757
+ const svg = container.querySelector("svg");
3758
+ if (!svg) return;
3759
+ if (animate) {
3760
+ svg.style.animation = `ag-pulse ${duration}ms ease-in-out infinite`;
3761
+ } else {
3762
+ svg.style.animation = "none";
3763
+ }
3764
+ }
3765
+ function applyMorphAnimation(container, animate, duration, delay, easing) {
3766
+ const paths = container.querySelectorAll("path, circle, ellipse, rect, polygon");
3767
+ paths.forEach((el) => {
3768
+ el.style.transition = `all ${duration}ms ${easing} ${delay}ms`;
3769
+ el.style.transform = animate ? "scale(1)" : "scale(0)";
3770
+ el.style.transformOrigin = "center";
3771
+ el.style.opacity = animate ? "1" : "0";
3772
+ });
3773
+ }
3774
+ var AnimatedGraphic = React90__default.forwardRef(
3775
+ ({
3776
+ src,
3777
+ svgContent,
3778
+ animation = "draw",
3779
+ animate = false,
3780
+ duration = 1200,
3781
+ delay = 0,
3782
+ easing = "cubic-bezier(0.16, 1, 0.3, 1)",
3783
+ width,
3784
+ height,
3785
+ strokeColor,
3786
+ fillColor,
3787
+ alt,
3788
+ className,
3789
+ style,
3790
+ children,
3791
+ ...props
3792
+ }, ref) => {
3793
+ const containerRef = useRef(null);
3794
+ const fetchedSvg = useFetchedSvg(svgContent ? void 0 : src);
3795
+ const resolvedSvg = svgContent ?? fetchedSvg;
3796
+ const prevAnimateRef = useRef(animate);
3797
+ const setRef = React90__default.useCallback(
3798
+ (node) => {
3799
+ containerRef.current = node;
3800
+ if (typeof ref === "function") ref(node);
3801
+ else if (ref) ref.current = node;
3802
+ },
3803
+ [ref]
3804
+ );
3805
+ useEffect(() => {
3806
+ const el = containerRef.current;
3807
+ if (!el || !strokeColor) return;
3808
+ const paths = el.querySelectorAll("path, line, polyline, polygon, circle, ellipse, rect");
3809
+ paths.forEach((p2) => {
3810
+ p2.style.stroke = strokeColor;
3811
+ });
3812
+ }, [resolvedSvg, strokeColor]);
3813
+ useEffect(() => {
3814
+ const el = containerRef.current;
3815
+ if (!el || !resolvedSvg) return;
3816
+ if (animation === "draw" || animation === "fill") {
3817
+ const paths = el.querySelectorAll("path, line, polyline, polygon, circle, ellipse, rect");
3818
+ paths.forEach((p2) => {
3819
+ if ("getTotalLength" in p2 && typeof p2.getTotalLength === "function") {
3820
+ const len = p2.getTotalLength();
3821
+ p2.style.strokeDasharray = `${len}`;
3822
+ p2.style.strokeDashoffset = `${len}`;
3823
+ }
3824
+ if (animation === "fill") {
3825
+ p2.style.fillOpacity = "0";
3826
+ }
3827
+ });
3828
+ }
3829
+ if (animation === "morph") {
3830
+ const paths = el.querySelectorAll("path, circle, ellipse, rect, polygon");
3831
+ paths.forEach((p2) => {
3832
+ p2.style.transform = "scale(0)";
3833
+ p2.style.transformOrigin = "center";
3834
+ p2.style.opacity = "0";
3835
+ });
3836
+ }
3837
+ }, [resolvedSvg, animation]);
3838
+ useEffect(() => {
3839
+ const el = containerRef.current;
3840
+ if (!el) return;
3841
+ const id = requestAnimationFrame(() => {
3842
+ switch (animation) {
3843
+ case "draw":
3844
+ applyDrawAnimation(el, animate, duration, delay, easing);
3845
+ break;
3846
+ case "fill":
3847
+ applyFillAnimation(el, animate, duration, delay, easing, fillColor);
3848
+ break;
3849
+ case "pulse":
3850
+ applyPulseAnimation(el, animate, duration);
3851
+ break;
3852
+ case "morph":
3853
+ applyMorphAnimation(el, animate, duration, delay, easing);
3854
+ break;
3855
+ }
3856
+ });
3857
+ prevAnimateRef.current = animate;
3858
+ return () => cancelAnimationFrame(id);
3859
+ }, [animate, animation, duration, delay, easing, fillColor, resolvedSvg]);
3860
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
3861
+ /* @__PURE__ */ jsx("style", { children: `@keyframes ag-pulse { 0%, 100% { transform: scale(1); opacity: 1; } 50% { transform: scale(1.04); opacity: 0.85; } }` }),
3862
+ /* @__PURE__ */ jsx(
3863
+ "div",
3864
+ {
3865
+ ref: setRef,
3866
+ className: cn("inline-flex items-center justify-center", className),
3867
+ style: { width, height, ...style },
3868
+ role: alt ? "img" : void 0,
3869
+ "aria-label": alt,
3870
+ ...props,
3871
+ children: resolvedSvg ? /* @__PURE__ */ jsx(
3872
+ "div",
3873
+ {
3874
+ className: "w-full h-full [&>svg]:w-full [&>svg]:h-full",
3875
+ dangerouslySetInnerHTML: { __html: resolvedSvg }
3876
+ }
3877
+ ) : children
3878
+ }
3879
+ )
3880
+ ] });
3881
+ }
3882
+ );
3883
+ AnimatedGraphic.displayName = "AnimatedGraphic";
3601
3884
  var heartIcon = (filled, size) => /* @__PURE__ */ jsx(
3602
3885
  "svg",
3603
3886
  {
@@ -3682,9 +3965,9 @@ function ScoreDisplay({
3682
3965
  ...rest
3683
3966
  }) {
3684
3967
  const resolvedValue = typeof value === "number" && !Number.isNaN(value) ? value : typeof rest.score === "number" && !Number.isNaN(rest.score) ? rest.score : 0;
3685
- const [displayValue, setDisplayValue] = React88.useState(resolvedValue);
3686
- const [isAnimating, setIsAnimating] = React88.useState(false);
3687
- React88.useEffect(() => {
3968
+ const [displayValue, setDisplayValue] = React90.useState(resolvedValue);
3969
+ const [isAnimating, setIsAnimating] = React90.useState(false);
3970
+ React90.useEffect(() => {
3688
3971
  if (!animated || displayValue === resolvedValue) {
3689
3972
  setDisplayValue(resolvedValue);
3690
3973
  return;
@@ -3757,9 +4040,9 @@ function ControlButton({
3757
4040
  className
3758
4041
  }) {
3759
4042
  const eventBus = useEventBus();
3760
- const [isPressed, setIsPressed] = React88.useState(false);
4043
+ const [isPressed, setIsPressed] = React90.useState(false);
3761
4044
  const actualPressed = pressed ?? isPressed;
3762
- const handlePointerDown = React88.useCallback(
4045
+ const handlePointerDown = React90.useCallback(
3763
4046
  (e) => {
3764
4047
  e.preventDefault();
3765
4048
  if (disabled) return;
@@ -3769,7 +4052,7 @@ function ControlButton({
3769
4052
  },
3770
4053
  [disabled, pressEvent, eventBus, onPress]
3771
4054
  );
3772
- const handlePointerUp = React88.useCallback(
4055
+ const handlePointerUp = React90.useCallback(
3773
4056
  (e) => {
3774
4057
  e.preventDefault();
3775
4058
  if (disabled) return;
@@ -3779,7 +4062,7 @@ function ControlButton({
3779
4062
  },
3780
4063
  [disabled, releaseEvent, eventBus, onRelease]
3781
4064
  );
3782
- const handlePointerLeave = React88.useCallback(
4065
+ const handlePointerLeave = React90.useCallback(
3783
4066
  (e) => {
3784
4067
  if (isPressed) {
3785
4068
  setIsPressed(false);
@@ -4605,9 +4888,9 @@ function MiniMap({
4605
4888
  viewportRect,
4606
4889
  className
4607
4890
  }) {
4608
- const canvasRef = React88.useRef(null);
4609
- const frameRef = React88.useRef(0);
4610
- React88.useEffect(() => {
4891
+ const canvasRef = React90.useRef(null);
4892
+ const frameRef = React90.useRef(0);
4893
+ React90.useEffect(() => {
4611
4894
  const canvas = canvasRef.current;
4612
4895
  if (!canvas) return;
4613
4896
  const ctx = canvas.getContext("2d");
@@ -4848,7 +5131,7 @@ var ErrorState = ({
4848
5131
  );
4849
5132
  };
4850
5133
  ErrorState.displayName = "ErrorState";
4851
- var ErrorBoundary = class extends React88__default.Component {
5134
+ var ErrorBoundary = class extends React90__default.Component {
4852
5135
  constructor(props) {
4853
5136
  super(props);
4854
5137
  __publicField(this, "reset", () => {
@@ -6584,8 +6867,8 @@ var Menu = ({
6584
6867
  "bottom-start": "top-full left-0 mt-2",
6585
6868
  "bottom-end": "top-full right-0 mt-2"
6586
6869
  };
6587
- const triggerChild = React88__default.isValidElement(trigger) ? trigger : /* @__PURE__ */ jsx("span", { children: trigger });
6588
- const triggerElement = React88__default.cloneElement(
6870
+ const triggerChild = React90__default.isValidElement(trigger) ? trigger : /* @__PURE__ */ jsx("span", { children: trigger });
6871
+ const triggerElement = React90__default.cloneElement(
6589
6872
  triggerChild,
6590
6873
  {
6591
6874
  ref: triggerRef,
@@ -7090,8 +7373,8 @@ var Popover = ({
7090
7373
  onMouseEnter: handleOpen,
7091
7374
  onMouseLeave: handleClose
7092
7375
  };
7093
- const childElement = React88__default.isValidElement(children) ? children : /* @__PURE__ */ jsx("span", { children });
7094
- const triggerElement = React88__default.cloneElement(
7376
+ const childElement = React90__default.isValidElement(children) ? children : /* @__PURE__ */ jsx("span", { children });
7377
+ const triggerElement = React90__default.cloneElement(
7095
7378
  childElement,
7096
7379
  {
7097
7380
  ref: triggerRef,
@@ -7846,8 +8129,8 @@ var Tooltip = ({
7846
8129
  if (hideTimeoutRef.current) clearTimeout(hideTimeoutRef.current);
7847
8130
  };
7848
8131
  }, []);
7849
- const triggerElement = React88__default.isValidElement(children) ? children : /* @__PURE__ */ jsx("span", { children });
7850
- const trigger = React88__default.cloneElement(triggerElement, {
8132
+ const triggerElement = React90__default.isValidElement(children) ? children : /* @__PURE__ */ jsx("span", { children });
8133
+ const trigger = React90__default.cloneElement(triggerElement, {
7851
8134
  ref: triggerRef,
7852
8135
  onMouseEnter: handleMouseEnter,
7853
8136
  onMouseLeave: handleMouseLeave,
@@ -8096,7 +8379,7 @@ var WizardProgress = ({
8096
8379
  children: /* @__PURE__ */ jsx("div", { className: "flex items-center gap-2", children: steps.map((step, index) => {
8097
8380
  const isActive = index === currentStep;
8098
8381
  const isCompleted = index < currentStep;
8099
- return /* @__PURE__ */ jsxs(React88__default.Fragment, { children: [
8382
+ return /* @__PURE__ */ jsxs(React90__default.Fragment, { children: [
8100
8383
  /* @__PURE__ */ jsx(
8101
8384
  "button",
8102
8385
  {
@@ -8226,7 +8509,7 @@ var WizardNavigation = ({
8226
8509
  );
8227
8510
  };
8228
8511
  WizardNavigation.displayName = "WizardNavigation";
8229
- var MarkdownContent = React88__default.memo(
8512
+ var MarkdownContent = React90__default.memo(
8230
8513
  ({ content, direction, className }) => {
8231
8514
  const { t: _t } = useTranslate();
8232
8515
  const safeContent = typeof content === "string" ? content : String(content ?? "");
@@ -8328,7 +8611,7 @@ var MarkdownContent = React88__default.memo(
8328
8611
  (prev, next) => prev.content === next.content && prev.className === next.className && prev.direction === next.direction
8329
8612
  );
8330
8613
  MarkdownContent.displayName = "MarkdownContent";
8331
- var CodeBlock = React88__default.memo(
8614
+ var CodeBlock = React90__default.memo(
8332
8615
  ({
8333
8616
  code: rawCode,
8334
8617
  language = "text",
@@ -9390,7 +9673,7 @@ var stateColors = {
9390
9673
  var ProgressDots = ({
9391
9674
  count,
9392
9675
  currentIndex,
9393
- getState,
9676
+ getState: getState2,
9394
9677
  onDotClick,
9395
9678
  className,
9396
9679
  size = "md"
@@ -9402,7 +9685,7 @@ var ProgressDots = ({
9402
9685
  },
9403
9686
  [currentIndex]
9404
9687
  );
9405
- const resolveState = getState ?? defaultGetState;
9688
+ const resolveState = getState2 ?? defaultGetState;
9406
9689
  const dims = sizeMap14[size];
9407
9690
  return /* @__PURE__ */ jsx(HStack, { gap: "xs", align: "center", className: cn(className), children: Array.from({ length: count }, (_, index) => {
9408
9691
  const state = resolveState(index);
@@ -9449,8 +9732,8 @@ function DPad({
9449
9732
  }) {
9450
9733
  const eventBus = useEventBus();
9451
9734
  const sizes = sizeMap15[size];
9452
- const [activeDirections, setActiveDirections] = React88.useState(/* @__PURE__ */ new Set());
9453
- const handlePress = React88.useCallback(
9735
+ const [activeDirections, setActiveDirections] = React90.useState(/* @__PURE__ */ new Set());
9736
+ const handlePress = React90.useCallback(
9454
9737
  (direction) => {
9455
9738
  setActiveDirections((prev) => new Set(prev).add(direction));
9456
9739
  if (directionEvent) eventBus.emit(`UI:${directionEvent}`, { direction, pressed: true });
@@ -9458,7 +9741,7 @@ function DPad({
9458
9741
  },
9459
9742
  [directionEvent, eventBus, onDirection]
9460
9743
  );
9461
- const handleRelease = React88.useCallback(
9744
+ const handleRelease = React90.useCallback(
9462
9745
  (direction) => {
9463
9746
  setActiveDirections((prev) => {
9464
9747
  const next = new Set(prev);
@@ -9516,8 +9799,8 @@ function ActionButtons({
9516
9799
  disabled
9517
9800
  }) {
9518
9801
  const eventBus = useEventBus();
9519
- const [activeButtons, setActiveButtons] = React88.useState(/* @__PURE__ */ new Set());
9520
- const handlePress = React88.useCallback(
9802
+ const [activeButtons, setActiveButtons] = React90.useState(/* @__PURE__ */ new Set());
9803
+ const handlePress = React90.useCallback(
9521
9804
  (id) => {
9522
9805
  setActiveButtons((prev) => new Set(prev).add(id));
9523
9806
  if (actionEvent) eventBus.emit(`UI:${actionEvent}`, { id, pressed: true });
@@ -9525,7 +9808,7 @@ function ActionButtons({
9525
9808
  },
9526
9809
  [actionEvent, eventBus, onAction]
9527
9810
  );
9528
- const handleRelease = React88.useCallback(
9811
+ const handleRelease = React90.useCallback(
9529
9812
  (id) => {
9530
9813
  setActiveButtons((prev) => {
9531
9814
  const next = new Set(prev);
@@ -9710,7 +9993,7 @@ function InventoryGrid({
9710
9993
  const eventBus = useEventBus();
9711
9994
  const slotCount = totalSlots ?? items.length;
9712
9995
  const emptySlotCount = Math.max(0, slotCount - items.length);
9713
- const handleSelect = React88.useCallback(
9996
+ const handleSelect = React90.useCallback(
9714
9997
  (id) => {
9715
9998
  onSelect?.(id);
9716
9999
  if (selectEvent) {
@@ -9834,7 +10117,7 @@ function CraftingRecipe({
9834
10117
  className
9835
10118
  }) {
9836
10119
  const eventBus = useEventBus();
9837
- const handleCraft = React88.useCallback(() => {
10120
+ const handleCraft = React90.useCallback(() => {
9838
10121
  onCraft?.();
9839
10122
  if (craftEvent) {
9840
10123
  eventBus.emit(craftEvent, { output: output.label });
@@ -9851,7 +10134,7 @@ function CraftingRecipe({
9851
10134
  children: [
9852
10135
  /* @__PURE__ */ jsx(HStack, { gap: "xs", className: "flex-wrap items-center", children: inputs.map((ingredient, index) => {
9853
10136
  const hasSufficient = ingredient.available >= ingredient.required;
9854
- return /* @__PURE__ */ jsxs(React88.Fragment, { children: [
10137
+ return /* @__PURE__ */ jsxs(React90.Fragment, { children: [
9855
10138
  /* @__PURE__ */ jsx(Box, { className: "relative", children: /* @__PURE__ */ jsx(
9856
10139
  ItemSlot,
9857
10140
  {
@@ -9953,15 +10236,15 @@ function GameCanvas2D({
9953
10236
  fps = 60,
9954
10237
  className
9955
10238
  }) {
9956
- const canvasRef = React88.useRef(null);
9957
- const rafRef = React88.useRef(0);
9958
- const frameRef = React88.useRef(0);
9959
- const lastTimeRef = React88.useRef(0);
9960
- const onDrawRef = React88.useRef(onDraw);
10239
+ const canvasRef = React90.useRef(null);
10240
+ const rafRef = React90.useRef(0);
10241
+ const frameRef = React90.useRef(0);
10242
+ const lastTimeRef = React90.useRef(0);
10243
+ const onDrawRef = React90.useRef(onDraw);
9961
10244
  onDrawRef.current = onDraw;
9962
- const onTickRef = React88.useRef(onTick);
10245
+ const onTickRef = React90.useRef(onTick);
9963
10246
  onTickRef.current = onTick;
9964
- React88.useEffect(() => {
10247
+ React90.useEffect(() => {
9965
10248
  const canvas = canvasRef.current;
9966
10249
  if (!canvas) return;
9967
10250
  const ctx = canvas.getContext("2d");
@@ -10214,7 +10497,7 @@ function TurnPanel({
10214
10497
  className
10215
10498
  }) {
10216
10499
  const eventBus = useEventBus();
10217
- const handleAction = React88.useCallback(
10500
+ const handleAction = React90.useCallback(
10218
10501
  (event) => {
10219
10502
  if (event) {
10220
10503
  eventBus.emit(event, { turn: currentTurn, phase, activeTeam });
@@ -10339,7 +10622,7 @@ function UnitCommandBar({
10339
10622
  className
10340
10623
  }) {
10341
10624
  const eventBus = useEventBus();
10342
- const handleCommand = React88.useCallback(
10625
+ const handleCommand = React90.useCallback(
10343
10626
  (event) => {
10344
10627
  if (event) {
10345
10628
  eventBus.emit(event, { unitId: selectedUnitId });
@@ -10878,7 +11161,7 @@ function GameMenu({
10878
11161
  } catch {
10879
11162
  }
10880
11163
  const eventBus = eventBusProp || eventBusFromHook;
10881
- const handleOptionClick = React88.useCallback(
11164
+ const handleOptionClick = React90.useCallback(
10882
11165
  (option) => {
10883
11166
  if (option.event && eventBus) {
10884
11167
  eventBus.emit(`UI:${option.event}`, { option });
@@ -11001,7 +11284,7 @@ function GameOverScreen({
11001
11284
  } catch {
11002
11285
  }
11003
11286
  const eventBus = eventBusProp || eventBusFromHook;
11004
- const handleActionClick = React88.useCallback(
11287
+ const handleActionClick = React90.useCallback(
11005
11288
  (action) => {
11006
11289
  if (action.event && eventBus) {
11007
11290
  eventBus.emit(`UI:${action.event}`, { action });
@@ -11084,17 +11367,30 @@ function GameOverScreen({
11084
11367
  GameOverScreen.displayName = "GameOverScreen";
11085
11368
 
11086
11369
  // lib/verificationRegistry.ts
11087
- var checks = /* @__PURE__ */ new Map();
11088
- var transitions = [];
11089
- var listeners = /* @__PURE__ */ new Set();
11370
+ function getState() {
11371
+ if (typeof window !== "undefined") {
11372
+ const w = window;
11373
+ if (!w.__verificationRegistryState) {
11374
+ w.__verificationRegistryState = {
11375
+ checks: /* @__PURE__ */ new Map(),
11376
+ transitions: [],
11377
+ bridgeHealth: null,
11378
+ listeners: /* @__PURE__ */ new Set()
11379
+ };
11380
+ }
11381
+ return w.__verificationRegistryState;
11382
+ }
11383
+ return { checks: /* @__PURE__ */ new Map(), transitions: [], bridgeHealth: null, listeners: /* @__PURE__ */ new Set() };
11384
+ }
11090
11385
  function getAllChecks() {
11091
- return Array.from(checks.values());
11386
+ return Array.from(getState().checks.values());
11092
11387
  }
11093
11388
  function getTransitions() {
11094
- return [...transitions];
11389
+ return [...getState().transitions];
11095
11390
  }
11096
11391
  function getBridgeHealth() {
11097
- return null;
11392
+ const bh = getState().bridgeHealth;
11393
+ return bh ? { ...bh } : null;
11098
11394
  }
11099
11395
  function getSummary() {
11100
11396
  const allChecks = getAllChecks();
@@ -11115,8 +11411,8 @@ function getSnapshot() {
11115
11411
  };
11116
11412
  }
11117
11413
  function subscribeToVerification(listener) {
11118
- listeners.add(listener);
11119
- return () => listeners.delete(listener);
11414
+ getState().listeners.add(listener);
11415
+ return () => getState().listeners.delete(listener);
11120
11416
  }
11121
11417
  function exposeOnWindow() {
11122
11418
  if (typeof window === "undefined") return;
@@ -11133,7 +11429,7 @@ function exposeOnWindow() {
11133
11429
  }
11134
11430
  function waitForTransition(event, timeoutMs = 1e4) {
11135
11431
  return new Promise((resolve) => {
11136
- const existing = transitions.find((t) => t.event === event);
11432
+ const existing = getState().transitions.find((t) => t.event === event);
11137
11433
  if (existing) {
11138
11434
  resolve(existing);
11139
11435
  return;
@@ -11143,7 +11439,7 @@ function waitForTransition(event, timeoutMs = 1e4) {
11143
11439
  resolve(null);
11144
11440
  }, timeoutMs);
11145
11441
  const unsub = subscribeToVerification(() => {
11146
- const found = transitions.find((t) => t.event === event);
11442
+ const found = getState().transitions.find((t) => t.event === event);
11147
11443
  if (found) {
11148
11444
  clearTimeout(timeout);
11149
11445
  unsub();
@@ -13804,7 +14100,7 @@ var DataList = ({
13804
14100
  }) => {
13805
14101
  const eventBus = useEventBus();
13806
14102
  const { t } = useTranslate();
13807
- const [visibleCount, setVisibleCount] = React88__default.useState(pageSize || Infinity);
14103
+ const [visibleCount, setVisibleCount] = React90__default.useState(pageSize || Infinity);
13808
14104
  const fields = fieldsProp ?? columnsProp ?? [];
13809
14105
  const allData = Array.isArray(entity) ? entity : entity ? [entity] : [];
13810
14106
  const data = pageSize > 0 ? allData.slice(0, visibleCount) : allData;
@@ -13841,7 +14137,7 @@ var DataList = ({
13841
14137
  const items2 = data.map((item) => item);
13842
14138
  const groups2 = groupBy ? groupData(items2, groupBy) : [{ label: "", items: items2 }];
13843
14139
  const contentField = titleField?.name ?? fields[0]?.name ?? "";
13844
- return /* @__PURE__ */ jsx(VStack, { gap: "sm", className: cn("py-2", className), children: groups2.map((group, gi) => /* @__PURE__ */ jsxs(React88__default.Fragment, { children: [
14140
+ return /* @__PURE__ */ jsx(VStack, { gap: "sm", className: cn("py-2", className), children: groups2.map((group, gi) => /* @__PURE__ */ jsxs(React90__default.Fragment, { children: [
13845
14141
  group.label && /* @__PURE__ */ jsx(Divider, { label: group.label, className: "my-2" }),
13846
14142
  group.items.map((itemData, index) => {
13847
14143
  const id = itemData.id || `${gi}-${index}`;
@@ -14044,7 +14340,7 @@ var DataList = ({
14044
14340
  className
14045
14341
  ),
14046
14342
  children: [
14047
- groups.map((group, gi) => /* @__PURE__ */ jsxs(React88__default.Fragment, { children: [
14343
+ groups.map((group, gi) => /* @__PURE__ */ jsxs(React90__default.Fragment, { children: [
14048
14344
  group.label && /* @__PURE__ */ jsx(Divider, { label: group.label, className: gi > 0 ? "mt-4" : "mt-0" }),
14049
14345
  group.items.map(
14050
14346
  (itemData, index) => renderItem(itemData, index, gi === groups.length - 1 && index === group.items.length - 1)
@@ -15778,7 +16074,7 @@ var StepFlow = ({
15778
16074
  className
15779
16075
  }) => {
15780
16076
  if (orientation === "vertical") {
15781
- return /* @__PURE__ */ jsx(VStack, { gap: "none", className: cn("w-full", className), children: steps.map((step, index) => /* @__PURE__ */ jsx(React88__default.Fragment, { children: /* @__PURE__ */ jsxs(HStack, { gap: "md", align: "start", className: "w-full", children: [
16077
+ return /* @__PURE__ */ jsx(VStack, { gap: "none", className: cn("w-full", className), children: steps.map((step, index) => /* @__PURE__ */ jsx(React90__default.Fragment, { children: /* @__PURE__ */ jsxs(HStack, { gap: "md", align: "start", className: "w-full", children: [
15782
16078
  /* @__PURE__ */ jsxs(VStack, { gap: "none", align: "center", children: [
15783
16079
  /* @__PURE__ */ jsx(StepCircle, { step, index }),
15784
16080
  showConnectors && index < steps.length - 1 && /* @__PURE__ */ jsx(Box, { className: "w-px h-8 bg-border" })
@@ -15789,7 +16085,7 @@ var StepFlow = ({
15789
16085
  ] })
15790
16086
  ] }) }, index)) });
15791
16087
  }
15792
- 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(React88__default.Fragment, { children: [
16088
+ 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(React90__default.Fragment, { children: [
15793
16089
  /* @__PURE__ */ jsxs(VStack, { gap: "sm", align: "center", className: "flex-1 w-full md:w-auto", children: [
15794
16090
  /* @__PURE__ */ jsx(StepCircle, { step, index }),
15795
16091
  /* @__PURE__ */ jsx(Typography, { variant: "h4", className: "text-center", children: step.title }),
@@ -16956,7 +17252,7 @@ var StatCard = ({
16956
17252
  const labelToUse = propLabel ?? propTitle;
16957
17253
  const eventBus = useEventBus();
16958
17254
  const { t } = useTranslate();
16959
- const handleActionClick = React88__default.useCallback(() => {
17255
+ const handleActionClick = React90__default.useCallback(() => {
16960
17256
  if (action?.event) {
16961
17257
  eventBus.emit(`UI:${action.event}`, {});
16962
17258
  }
@@ -16967,7 +17263,7 @@ var StatCard = ({
16967
17263
  const data = Array.isArray(entity) ? entity : entity ? [entity] : [];
16968
17264
  const isLoading = externalLoading ?? false;
16969
17265
  const error = externalError;
16970
- const computeMetricValue = React88__default.useCallback(
17266
+ const computeMetricValue = React90__default.useCallback(
16971
17267
  (metric, items) => {
16972
17268
  if (metric.value !== void 0) {
16973
17269
  return metric.value;
@@ -17006,7 +17302,7 @@ var StatCard = ({
17006
17302
  },
17007
17303
  []
17008
17304
  );
17009
- const schemaStats = React88__default.useMemo(() => {
17305
+ const schemaStats = React90__default.useMemo(() => {
17010
17306
  if (!metrics || metrics.length === 0) return null;
17011
17307
  return metrics.map((metric) => ({
17012
17308
  label: metric.label,
@@ -17014,7 +17310,7 @@ var StatCard = ({
17014
17310
  format: metric.format
17015
17311
  }));
17016
17312
  }, [metrics, data, computeMetricValue]);
17017
- const calculatedTrend = React88__default.useMemo(() => {
17313
+ const calculatedTrend = React90__default.useMemo(() => {
17018
17314
  if (manualTrend !== void 0) return manualTrend;
17019
17315
  if (previousValue === void 0 || currentValue === void 0)
17020
17316
  return void 0;
@@ -17178,7 +17474,7 @@ var PageHeader = ({
17178
17474
  info: "bg-info/10 text-info"
17179
17475
  };
17180
17476
  return /* @__PURE__ */ jsxs(Box, { className: cn("mb-6", className), children: [
17181
- 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(React88__default.Fragment, { children: [
17477
+ 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(React90__default.Fragment, { children: [
17182
17478
  idx > 0 && /* @__PURE__ */ jsx(Typography, { variant: "small", color: "muted", children: "/" }),
17183
17479
  crumb.href ? /* @__PURE__ */ jsx(
17184
17480
  "a",
@@ -17704,7 +18000,7 @@ var FormSection = ({
17704
18000
  columns = 1,
17705
18001
  className
17706
18002
  }) => {
17707
- const [collapsed, setCollapsed] = React88__default.useState(defaultCollapsed);
18003
+ const [collapsed, setCollapsed] = React90__default.useState(defaultCollapsed);
17708
18004
  const { t } = useTranslate();
17709
18005
  const eventBus = useEventBus();
17710
18006
  const gridClass = {
@@ -17712,7 +18008,7 @@ var FormSection = ({
17712
18008
  2: "grid-cols-1 md:grid-cols-2",
17713
18009
  3: "grid-cols-1 md:grid-cols-2 lg:grid-cols-3"
17714
18010
  }[columns];
17715
- React88__default.useCallback(() => {
18011
+ React90__default.useCallback(() => {
17716
18012
  if (collapsible) {
17717
18013
  setCollapsed((prev) => !prev);
17718
18014
  eventBus.emit("UI:TOGGLE_COLLAPSE", { collapsed: !collapsed });
@@ -17924,7 +18220,7 @@ var Form = ({
17924
18220
  const normalizedInitialData = initialData ?? {};
17925
18221
  const resolvedEntity = entity && typeof entity === "object" && !Array.isArray(entity) ? entity : void 0;
17926
18222
  const entityName = typeof entity === "string" ? entity : resolvedEntity?.name;
17927
- const entityDerivedFields = React88__default.useMemo(() => {
18223
+ const entityDerivedFields = React90__default.useMemo(() => {
17928
18224
  if (fields && fields.length > 0) return void 0;
17929
18225
  if (!resolvedEntity) return void 0;
17930
18226
  return resolvedEntity.fields.map(
@@ -17943,14 +18239,14 @@ var Form = ({
17943
18239
  const conditionalFields = typeof conditionalFieldsRaw === "boolean" ? {} : conditionalFieldsRaw;
17944
18240
  const hiddenCalculations = typeof hiddenCalculationsRaw === "boolean" ? [] : hiddenCalculationsRaw;
17945
18241
  const violationTriggers = typeof violationTriggersRaw === "boolean" ? [] : violationTriggersRaw;
17946
- const [formData, setFormData] = React88__default.useState(
18242
+ const [formData, setFormData] = React90__default.useState(
17947
18243
  normalizedInitialData
17948
18244
  );
17949
- const [collapsedSections, setCollapsedSections] = React88__default.useState(
18245
+ const [collapsedSections, setCollapsedSections] = React90__default.useState(
17950
18246
  /* @__PURE__ */ new Set()
17951
18247
  );
17952
18248
  const shouldShowCancel = showCancel ?? (fields && fields.length > 0);
17953
- const evalContext = React88__default.useMemo(
18249
+ const evalContext = React90__default.useMemo(
17954
18250
  () => ({
17955
18251
  formValues: formData,
17956
18252
  globalVariables: externalContext?.globalVariables ?? {},
@@ -17959,13 +18255,13 @@ var Form = ({
17959
18255
  }),
17960
18256
  [formData, externalContext]
17961
18257
  );
17962
- React88__default.useEffect(() => {
18258
+ React90__default.useEffect(() => {
17963
18259
  const data = initialData;
17964
18260
  if (data && Object.keys(data).length > 0) {
17965
18261
  setFormData(data);
17966
18262
  }
17967
18263
  }, [initialData]);
17968
- const processCalculations = React88__default.useCallback(
18264
+ const processCalculations = React90__default.useCallback(
17969
18265
  (changedFieldId, newFormData) => {
17970
18266
  if (!hiddenCalculations.length) return;
17971
18267
  const context = {
@@ -17990,7 +18286,7 @@ var Form = ({
17990
18286
  },
17991
18287
  [hiddenCalculations, externalContext, eventBus]
17992
18288
  );
17993
- const checkViolations = React88__default.useCallback(
18289
+ const checkViolations = React90__default.useCallback(
17994
18290
  (changedFieldId, newFormData) => {
17995
18291
  if (!violationTriggers.length) return;
17996
18292
  const context = {
@@ -18027,7 +18323,7 @@ var Form = ({
18027
18323
  processCalculations(name, newFormData);
18028
18324
  checkViolations(name, newFormData);
18029
18325
  };
18030
- const isFieldVisible = React88__default.useCallback(
18326
+ const isFieldVisible = React90__default.useCallback(
18031
18327
  (fieldName) => {
18032
18328
  const condition = conditionalFields[fieldName];
18033
18329
  if (!condition) return true;
@@ -18035,7 +18331,7 @@ var Form = ({
18035
18331
  },
18036
18332
  [conditionalFields, evalContext]
18037
18333
  );
18038
- const isSectionVisible = React88__default.useCallback(
18334
+ const isSectionVisible = React90__default.useCallback(
18039
18335
  (section) => {
18040
18336
  if (!section.condition) return true;
18041
18337
  return Boolean(evaluateFormExpression(section.condition, evalContext));
@@ -18067,7 +18363,7 @@ var Form = ({
18067
18363
  eventBus.emit(`UI:${onCancel}`);
18068
18364
  }
18069
18365
  };
18070
- const renderField = React88__default.useCallback(
18366
+ const renderField = React90__default.useCallback(
18071
18367
  (field) => {
18072
18368
  const fieldName = field.name || field.field;
18073
18369
  if (!fieldName) return null;
@@ -18088,7 +18384,7 @@ var Form = ({
18088
18384
  [formData, isFieldVisible, relationsData, relationsLoading, isLoading]
18089
18385
  );
18090
18386
  const effectiveFields = entityDerivedFields ?? fields;
18091
- const normalizedFields = React88__default.useMemo(() => {
18387
+ const normalizedFields = React90__default.useMemo(() => {
18092
18388
  if (!effectiveFields || effectiveFields.length === 0) return [];
18093
18389
  return effectiveFields.map((field) => {
18094
18390
  if (typeof field === "string") {
@@ -18110,7 +18406,7 @@ var Form = ({
18110
18406
  return field;
18111
18407
  });
18112
18408
  }, [effectiveFields, resolvedEntity]);
18113
- const schemaFields = React88__default.useMemo(() => {
18409
+ const schemaFields = React90__default.useMemo(() => {
18114
18410
  if (normalizedFields.length === 0) return null;
18115
18411
  if (isDebugEnabled()) {
18116
18412
  debugGroup(`Form: ${entityName || "unknown"}`);
@@ -18120,7 +18416,7 @@ var Form = ({
18120
18416
  }
18121
18417
  return normalizedFields.map(renderField).filter(Boolean);
18122
18418
  }, [normalizedFields, renderField, entityName, conditionalFields]);
18123
- const sectionElements = React88__default.useMemo(() => {
18419
+ const sectionElements = React90__default.useMemo(() => {
18124
18420
  if (!sections || sections.length === 0) return null;
18125
18421
  return sections.map((section) => {
18126
18422
  if (!isSectionVisible(section)) {
@@ -19245,7 +19541,7 @@ var List = ({
19245
19541
  if (entity && typeof entity === "object" && "id" in entity) return [entity];
19246
19542
  return [];
19247
19543
  }, [entity]);
19248
- const getItemActions = React88__default.useCallback(
19544
+ const getItemActions = React90__default.useCallback(
19249
19545
  (item) => {
19250
19546
  if (!itemActions) return [];
19251
19547
  if (typeof itemActions === "function") {
@@ -20011,7 +20307,7 @@ var WizardContainer = ({
20011
20307
  const isCompleted = index < currentStep;
20012
20308
  const stepKey = step.id ?? step.tabId ?? `step-${index}`;
20013
20309
  const stepTitle = step.title ?? step.name ?? `Step ${index + 1}`;
20014
- return /* @__PURE__ */ jsxs(React88__default.Fragment, { children: [
20310
+ return /* @__PURE__ */ jsxs(React90__default.Fragment, { children: [
20015
20311
  /* @__PURE__ */ jsx(
20016
20312
  Button,
20017
20313
  {
@@ -21235,7 +21531,7 @@ var StateMachineView = ({
21235
21531
  style: { top: title ? 30 : 0 },
21236
21532
  children: [
21237
21533
  entity && /* @__PURE__ */ jsx(EntityBox, { entity, config }),
21238
- states.map((state) => renderStateNode ? /* @__PURE__ */ jsx(React88__default.Fragment, { children: renderStateNode(state, config) }, state.id) : /* @__PURE__ */ jsx(
21534
+ states.map((state) => renderStateNode ? /* @__PURE__ */ jsx(React90__default.Fragment, { children: renderStateNode(state, config) }, state.id) : /* @__PURE__ */ jsx(
21239
21535
  StateNode,
21240
21536
  {
21241
21537
  state,
@@ -21429,9 +21725,9 @@ function getEffectSummary(effects) {
21429
21725
  });
21430
21726
  return summaries.join(" | ");
21431
21727
  }
21432
- function extractOutputsFromTransitions(transitions2) {
21728
+ function extractOutputsFromTransitions(transitions) {
21433
21729
  const outputs = /* @__PURE__ */ new Set();
21434
- transitions2.forEach((t) => {
21730
+ transitions.forEach((t) => {
21435
21731
  if (t.effects) {
21436
21732
  t.effects.forEach((effect) => {
21437
21733
  if (Array.isArray(effect)) {
@@ -21456,7 +21752,7 @@ function getNodeRadius(stateName, config) {
21456
21752
  if (textLength > 6) return baseRadius + 8;
21457
21753
  return baseRadius;
21458
21754
  }
21459
- function calculateLayout(states, transitions2, options, config) {
21755
+ function calculateLayout(states, transitions, options, config) {
21460
21756
  const positions = {};
21461
21757
  const entityBoxWidth = options.hasEntity ? 200 : 0;
21462
21758
  const outputBoxWidth = options.hasOutputs ? 200 : 0;
@@ -21465,7 +21761,7 @@ function calculateLayout(states, transitions2, options, config) {
21465
21761
  states.filter((s) => s.isFinal);
21466
21762
  states.filter((s) => !s.isInitial && !s.isFinal);
21467
21763
  let maxLabelLength = 0;
21468
- transitions2.forEach((t) => {
21764
+ transitions.forEach((t) => {
21469
21765
  if (t.effects && t.effects.length > 0) {
21470
21766
  const summary = getEffectSummary(t.effects);
21471
21767
  maxLabelLength = Math.max(maxLabelLength, summary.length);
@@ -21491,7 +21787,7 @@ function calculateLayout(states, transitions2, options, config) {
21491
21787
  if (stateColumn[name] === void 0) {
21492
21788
  stateColumn[name] = col;
21493
21789
  }
21494
- transitions2.forEach((t) => {
21790
+ transitions.forEach((t) => {
21495
21791
  if (t.from === name && t.from !== t.to && !visited.has(t.to)) {
21496
21792
  queue.push({ name: t.to, col: col + 1 });
21497
21793
  }
@@ -21540,11 +21836,11 @@ function calculateLayout(states, transitions2, options, config) {
21540
21836
  });
21541
21837
  return { positions, width, height: height + 60 };
21542
21838
  }
21543
- function calculateTransitionPathData(from, to, transitions2, positions, config) {
21839
+ function calculateTransitionPathData(from, to, transitions, positions, config) {
21544
21840
  const fromPos = positions[from];
21545
21841
  const toPos = positions[to];
21546
21842
  if (!fromPos || !toPos) return null;
21547
- const relevantTransitions = transitions2.filter((t) => t.from === from && t.to === to);
21843
+ const relevantTransitions = transitions.filter((t) => t.from === from && t.to === to);
21548
21844
  if (relevantTransitions.length === 0) return null;
21549
21845
  const fromRadius = getNodeRadius(from, config);
21550
21846
  const toRadius = getNodeRadius(to, config);
@@ -21575,7 +21871,7 @@ function calculateTransitionPathData(from, to, transitions2, positions, config)
21575
21871
  const startY = fromPos.y + ny * fromRadius;
21576
21872
  const endX = toPos.x - nx * (toRadius + 5);
21577
21873
  const endY = toPos.y - ny * (toRadius + 5);
21578
- const hasReverse = transitions2.some((t) => t.from === to && t.to === from);
21874
+ const hasReverse = transitions.some((t) => t.from === to && t.to === from);
21579
21875
  const isReverse = hasReverse && from > to;
21580
21876
  const baseOffset = hasReverse ? 50 : 30;
21581
21877
  const curveOffset = baseOffset + (relevantTransitions.length > 1 ? 20 : 0);
@@ -21590,15 +21886,15 @@ function calculateTransitionPathData(from, to, transitions2, positions, config)
21590
21886
  }
21591
21887
  function renderStateMachineToDomData(stateMachine, options = {}, config = DEFAULT_CONFIG) {
21592
21888
  const states = stateMachine.states || [];
21593
- const transitions2 = stateMachine.transitions || [];
21889
+ const transitions = stateMachine.transitions || [];
21594
21890
  const title = options.title || "";
21595
21891
  const entity = options.entity;
21596
- const outputs = extractOutputsFromTransitions(transitions2);
21892
+ const outputs = extractOutputsFromTransitions(transitions);
21597
21893
  const layoutOptions = {
21598
21894
  hasEntity: !!entity,
21599
21895
  hasOutputs: outputs.length > 0
21600
21896
  };
21601
- const { positions, width, height } = calculateLayout(states, transitions2, layoutOptions, config);
21897
+ const { positions, width, height } = calculateLayout(states, transitions, layoutOptions, config);
21602
21898
  const domStates = Object.entries(positions).map(([name, pos]) => ({
21603
21899
  id: `state-${name}`,
21604
21900
  name,
@@ -21612,14 +21908,14 @@ function renderStateMachineToDomData(stateMachine, options = {}, config = DEFAUL
21612
21908
  const domPaths = [];
21613
21909
  const domLabels = [];
21614
21910
  const drawnPairs = /* @__PURE__ */ new Set();
21615
- transitions2.forEach((transition, idx) => {
21911
+ transitions.forEach((transition, idx) => {
21616
21912
  const pairKey = `${transition.from}->${transition.to}`;
21617
21913
  if (!drawnPairs.has(pairKey)) {
21618
21914
  drawnPairs.add(pairKey);
21619
21915
  const pathData2 = calculateTransitionPathData(
21620
21916
  transition.from,
21621
21917
  transition.to,
21622
- transitions2,
21918
+ transitions,
21623
21919
  positions,
21624
21920
  config
21625
21921
  );
@@ -21640,7 +21936,7 @@ function renderStateMachineToDomData(stateMachine, options = {}, config = DEFAUL
21640
21936
  const pathData = calculateTransitionPathData(
21641
21937
  transition.from,
21642
21938
  transition.to,
21643
- transitions2,
21939
+ transitions,
21644
21940
  positions,
21645
21941
  config
21646
21942
  );
@@ -24773,7 +25069,7 @@ function usePhysics2D(options = {}) {
24773
25069
  if (!state) return null;
24774
25070
  return { x: state.x, y: state.y };
24775
25071
  }, [manager]);
24776
- const getState = useCallback((unitId) => {
25072
+ const getState2 = useCallback((unitId) => {
24777
25073
  return manager.getState(unitId);
24778
25074
  }, [manager]);
24779
25075
  const applyForce = useCallback((unitId, fx, fy) => {
@@ -24810,7 +25106,7 @@ function usePhysics2D(options = {}) {
24810
25106
  registerUnit,
24811
25107
  unregisterUnit,
24812
25108
  getPosition,
24813
- getState,
25109
+ getState: getState2,
24814
25110
  applyForce,
24815
25111
  setVelocity,
24816
25112
  setPosition,
@@ -25681,7 +25977,7 @@ function LinearView({
25681
25977
  /* @__PURE__ */ jsx(HStack, { className: "flex-wrap items-center", gap: "xs", children: trait.states.map((state, i) => {
25682
25978
  const isDone = i < currentIdx;
25683
25979
  const isCurrent = i === currentIdx;
25684
- return /* @__PURE__ */ jsxs(React88__default.Fragment, { children: [
25980
+ return /* @__PURE__ */ jsxs(React90__default.Fragment, { children: [
25685
25981
  i > 0 && /* @__PURE__ */ jsx(
25686
25982
  Typography,
25687
25983
  {
@@ -26335,7 +26631,7 @@ function SequenceBar({
26335
26631
  onSlotRemove(index);
26336
26632
  }, [onSlotRemove, playing]);
26337
26633
  const paddedSlots = Array.from({ length: maxSlots }, (_, i) => slots[i]);
26338
- return /* @__PURE__ */ jsx(HStack, { className: cn("items-center", className), gap: "sm", children: paddedSlots.map((slot, i) => /* @__PURE__ */ jsxs(React88__default.Fragment, { children: [
26634
+ return /* @__PURE__ */ jsx(HStack, { className: cn("items-center", className), gap: "sm", children: paddedSlots.map((slot, i) => /* @__PURE__ */ jsxs(React90__default.Fragment, { children: [
26339
26635
  i > 0 && /* @__PURE__ */ jsx(
26340
26636
  Typography,
26341
26637
  {
@@ -27139,7 +27435,7 @@ function StateArchitectBoard({
27139
27435
  }) {
27140
27436
  const { emit } = useEventBus();
27141
27437
  const { t } = useTranslate();
27142
- const [transitions2, setTransitions] = useState(entity.transitions);
27438
+ const [transitions, setTransitions] = useState(entity.transitions);
27143
27439
  const [headerError, setHeaderError] = useState(false);
27144
27440
  const [playState, setPlayState] = useState("editing");
27145
27441
  const [currentState, setCurrentState] = useState(entity.initialState);
@@ -27185,13 +27481,13 @@ function StateArchitectBoard({
27185
27481
  description: entity.description,
27186
27482
  states: entity.states,
27187
27483
  currentState,
27188
- transitions: transitions2.map((t2) => ({
27484
+ transitions: transitions.map((t2) => ({
27189
27485
  from: t2.from,
27190
27486
  to: t2.to,
27191
27487
  event: t2.event,
27192
27488
  guardHint: t2.guardHint
27193
27489
  }))
27194
- }), [entity, currentState, transitions2]);
27490
+ }), [entity, currentState, transitions]);
27195
27491
  const handleTest = useCallback(() => {
27196
27492
  if (playState !== "editing") return;
27197
27493
  if (testEvent) emit(`UI:${testEvent}`, {});
@@ -27218,7 +27514,7 @@ function StateArchitectBoard({
27218
27514
  const testCase = entity.testCases[testIdx];
27219
27515
  let state = entity.initialState;
27220
27516
  for (const event of testCase.events) {
27221
- const trans = transitions2.find((t2) => t2.from === state && t2.event === event);
27517
+ const trans = transitions.find((t2) => t2.from === state && t2.event === event);
27222
27518
  if (trans) {
27223
27519
  state = trans.to;
27224
27520
  }
@@ -27234,7 +27530,7 @@ function StateArchitectBoard({
27234
27530
  timerRef.current = setTimeout(runNextTest, stepDurationMs);
27235
27531
  };
27236
27532
  timerRef.current = setTimeout(runNextTest, stepDurationMs);
27237
- }, [playState, transitions2, entity, stepDurationMs, testEvent, completeEvent, emit]);
27533
+ }, [playState, transitions, entity, stepDurationMs, testEvent, completeEvent, emit]);
27238
27534
  const handleTryAgain = useCallback(() => {
27239
27535
  if (timerRef.current) clearTimeout(timerRef.current);
27240
27536
  setPlayState("editing");
@@ -27256,13 +27552,13 @@ function StateArchitectBoard({
27256
27552
  name: entity.entityName,
27257
27553
  states: entity.states,
27258
27554
  initialState: entity.initialState,
27259
- transitions: transitions2.map((t2) => ({
27555
+ transitions: transitions.map((t2) => ({
27260
27556
  from: t2.from,
27261
27557
  to: t2.to,
27262
27558
  event: t2.event,
27263
27559
  ...t2.guardHint ? { guard: t2.guardHint } : {}
27264
27560
  }))
27265
- }), [entity, transitions2]);
27561
+ }), [entity, transitions]);
27266
27562
  return /* @__PURE__ */ jsxs(
27267
27563
  VStack,
27268
27564
  {
@@ -27307,7 +27603,7 @@ function StateArchitectBoard({
27307
27603
  /* @__PURE__ */ jsx("marker", { id: "arrowhead", markerWidth: "10", markerHeight: "7", refX: "10", refY: "3.5", orient: "auto", children: /* @__PURE__ */ jsx("polygon", { points: "0 0, 10 3.5, 0 7", fill: "var(--color-border)" }) }),
27308
27604
  /* @__PURE__ */ jsx("marker", { id: "arrowhead-active", markerWidth: "10", markerHeight: "7", refX: "10", refY: "3.5", orient: "auto", children: /* @__PURE__ */ jsx("polygon", { points: "0 0, 10 3.5, 0 7", fill: "var(--color-primary)" }) })
27309
27605
  ] }),
27310
- transitions2.map((t2) => {
27606
+ transitions.map((t2) => {
27311
27607
  const fromPos = positions[t2.from];
27312
27608
  const toPos = positions[t2.to];
27313
27609
  if (!fromPos || !toPos) return null;
@@ -27351,9 +27647,9 @@ function StateArchitectBoard({
27351
27647
  children: selectedState ? t("stateArchitect.addTransition", { state: selectedState }) : t("stateArchitect.addTransitionPrompt")
27352
27648
  }
27353
27649
  ) }),
27354
- transitions2.length > 0 && /* @__PURE__ */ jsxs(VStack, { gap: "xs", className: "p-3 rounded-lg bg-muted/50 border border-border", children: [
27355
- /* @__PURE__ */ jsx(Typography, { variant: "caption", className: "text-muted-foreground font-medium", children: t("stateArchitect.transitions", { count: transitions2.length }) + ":" }),
27356
- transitions2.map((t2) => /* @__PURE__ */ jsxs(HStack, { className: "items-center text-xs", gap: "xs", children: [
27650
+ transitions.length > 0 && /* @__PURE__ */ jsxs(VStack, { gap: "xs", className: "p-3 rounded-lg bg-muted/50 border border-border", children: [
27651
+ /* @__PURE__ */ jsx(Typography, { variant: "caption", className: "text-muted-foreground font-medium", children: t("stateArchitect.transitions", { count: transitions.length }) + ":" }),
27652
+ transitions.map((t2) => /* @__PURE__ */ jsxs(HStack, { className: "items-center text-xs", gap: "xs", children: [
27357
27653
  /* @__PURE__ */ jsx(Typography, { variant: "caption", className: "text-foreground", children: t2.from }),
27358
27654
  /* @__PURE__ */ jsx(Typography, { variant: "caption", className: "text-muted-foreground", children: "\u2014[" }),
27359
27655
  /* @__PURE__ */ jsx(Typography, { variant: "caption", className: "text-accent font-medium", children: t2.event }),
@@ -28823,7 +29119,7 @@ function InputPattern({
28823
29119
  className
28824
29120
  }) {
28825
29121
  const { emit } = useEventBus();
28826
- const [localValue, setLocalValue] = React88__default.useState(value);
29122
+ const [localValue, setLocalValue] = React90__default.useState(value);
28827
29123
  const handleChange = (e) => {
28828
29124
  setLocalValue(e.target.value);
28829
29125
  if (onChange) {
@@ -28860,7 +29156,7 @@ function TextareaPattern({
28860
29156
  className
28861
29157
  }) {
28862
29158
  const { emit } = useEventBus();
28863
- const [localValue, setLocalValue] = React88__default.useState(value);
29159
+ const [localValue, setLocalValue] = React90__default.useState(value);
28864
29160
  const handleChange = (e) => {
28865
29161
  setLocalValue(e.target.value);
28866
29162
  if (onChange) {
@@ -28891,7 +29187,7 @@ function SelectPattern({
28891
29187
  className
28892
29188
  }) {
28893
29189
  const { emit } = useEventBus();
28894
- const [localValue, setLocalValue] = React88__default.useState(value);
29190
+ const [localValue, setLocalValue] = React90__default.useState(value);
28895
29191
  const handleChange = (e) => {
28896
29192
  setLocalValue(e.target.value);
28897
29193
  if (onChange) {
@@ -28920,7 +29216,7 @@ function CheckboxPattern({
28920
29216
  className
28921
29217
  }) {
28922
29218
  const { emit } = useEventBus();
28923
- const [localChecked, setLocalChecked] = React88__default.useState(checked);
29219
+ const [localChecked, setLocalChecked] = React90__default.useState(checked);
28924
29220
  const handleChange = (e) => {
28925
29221
  setLocalChecked(e.target.checked);
28926
29222
  if (onChange) {
@@ -30802,7 +31098,7 @@ var DocumentViewer = ({
30802
31098
  };
30803
31099
  DocumentViewer.displayName = "DocumentViewer";
30804
31100
  function extractTitle(children) {
30805
- if (!React88__default.isValidElement(children)) return void 0;
31101
+ if (!React90__default.isValidElement(children)) return void 0;
30806
31102
  const props = children.props;
30807
31103
  if (typeof props.title === "string") {
30808
31104
  return props.title;
@@ -31400,7 +31696,7 @@ var MediaGallery = ({
31400
31696
  [selectable, selectedItems, selectionEvent, eventBus]
31401
31697
  );
31402
31698
  const entityData = Array.isArray(entity) ? entity : [];
31403
- const items = React88__default.useMemo(() => {
31699
+ const items = React90__default.useMemo(() => {
31404
31700
  if (propItems) return propItems;
31405
31701
  if (entityData.length === 0) return [];
31406
31702
  return entityData.map((record, idx) => ({
@@ -31562,7 +31858,7 @@ var MediaGallery = ({
31562
31858
  };
31563
31859
  MediaGallery.displayName = "MediaGallery";
31564
31860
  function extractTitle2(children) {
31565
- if (!React88__default.isValidElement(children)) return void 0;
31861
+ if (!React90__default.isValidElement(children)) return void 0;
31566
31862
  const props = children.props;
31567
31863
  if (typeof props.title === "string") {
31568
31864
  return props.title;
@@ -31599,35 +31895,35 @@ ModalSlot.displayName = "ModalSlot";
31599
31895
 
31600
31896
  // lib/traitRegistry.ts
31601
31897
  var traits = /* @__PURE__ */ new Map();
31602
- var listeners2 = /* @__PURE__ */ new Set();
31898
+ var listeners = /* @__PURE__ */ new Set();
31603
31899
  function getAllTraits() {
31604
31900
  return Array.from(traits.values());
31605
31901
  }
31606
31902
  function subscribeToTraitChanges(listener) {
31607
- listeners2.add(listener);
31608
- return () => listeners2.delete(listener);
31903
+ listeners.add(listener);
31904
+ return () => listeners.delete(listener);
31609
31905
  }
31610
31906
 
31611
31907
  // lib/tickRegistry.ts
31612
31908
  var ticks = /* @__PURE__ */ new Map();
31613
- var listeners3 = /* @__PURE__ */ new Set();
31909
+ var listeners2 = /* @__PURE__ */ new Set();
31614
31910
  function getAllTicks() {
31615
31911
  return Array.from(ticks.values());
31616
31912
  }
31617
31913
  function subscribeToTickChanges(listener) {
31618
- listeners3.add(listener);
31619
- return () => listeners3.delete(listener);
31914
+ listeners2.add(listener);
31915
+ return () => listeners2.delete(listener);
31620
31916
  }
31621
31917
 
31622
31918
  // lib/guardRegistry.ts
31623
31919
  var guardHistory = [];
31624
- var listeners4 = /* @__PURE__ */ new Set();
31920
+ var listeners3 = /* @__PURE__ */ new Set();
31625
31921
  function getGuardHistory() {
31626
31922
  return [...guardHistory];
31627
31923
  }
31628
31924
  function subscribeToGuardChanges(listener) {
31629
- listeners4.add(listener);
31630
- return () => listeners4.delete(listener);
31925
+ listeners3.add(listener);
31926
+ return () => listeners3.delete(listener);
31631
31927
  }
31632
31928
  function getEntitySnapshot() {
31633
31929
  {
@@ -31637,18 +31933,18 @@ function getEntitySnapshot() {
31637
31933
 
31638
31934
  // lib/debugRegistry.ts
31639
31935
  var events = [];
31640
- var listeners5 = /* @__PURE__ */ new Set();
31936
+ var listeners4 = /* @__PURE__ */ new Set();
31641
31937
  function getDebugEvents() {
31642
31938
  return [...events];
31643
31939
  }
31644
31940
  function subscribeToDebugEvents(listener) {
31645
- listeners5.add(listener);
31646
- return () => listeners5.delete(listener);
31941
+ listeners4.add(listener);
31942
+ return () => listeners4.delete(listener);
31647
31943
  }
31648
31944
 
31649
31945
  // components/organisms/debug/hooks/useDebugData.ts
31650
31946
  function useDebugData() {
31651
- const [data, setData] = React88.useState(() => ({
31947
+ const [data, setData] = React90.useState(() => ({
31652
31948
  traits: [],
31653
31949
  ticks: [],
31654
31950
  guards: [],
@@ -31662,7 +31958,7 @@ function useDebugData() {
31662
31958
  },
31663
31959
  lastUpdate: Date.now()
31664
31960
  }));
31665
- React88.useEffect(() => {
31961
+ React90.useEffect(() => {
31666
31962
  const updateData = () => {
31667
31963
  setData({
31668
31964
  traits: getAllTraits(),
@@ -31706,14 +32002,14 @@ function useDebugData() {
31706
32002
 
31707
32003
  // lib/debugUtils.ts
31708
32004
  var DEBUG_STORAGE_KEY = "orbital-debug";
31709
- var listeners6 = /* @__PURE__ */ new Set();
32005
+ var listeners5 = /* @__PURE__ */ new Set();
31710
32006
  function isDebugEnabled2() {
31711
32007
  if (typeof window === "undefined") return false;
31712
32008
  return localStorage.getItem(DEBUG_STORAGE_KEY) === "true";
31713
32009
  }
31714
32010
  function onDebugToggle(listener) {
31715
- listeners6.add(listener);
31716
- return () => listeners6.delete(listener);
32011
+ listeners5.add(listener);
32012
+ return () => listeners5.delete(listener);
31717
32013
  }
31718
32014
  function TraitsTab({ traits: traits2 }) {
31719
32015
  if (traits2.length === 0) {
@@ -31931,15 +32227,15 @@ var TYPE_BADGES = {
31931
32227
  state: { variant: "danger", icon: "\u{1F4CA}" }
31932
32228
  };
31933
32229
  function EventFlowTab({ events: events2 }) {
31934
- const [filter, setFilter] = React88.useState("all");
31935
- const containerRef = React88.useRef(null);
31936
- const [autoScroll, setAutoScroll] = React88.useState(true);
31937
- React88.useEffect(() => {
32230
+ const [filter, setFilter] = React90.useState("all");
32231
+ const containerRef = React90.useRef(null);
32232
+ const [autoScroll, setAutoScroll] = React90.useState(true);
32233
+ React90.useEffect(() => {
31938
32234
  if (autoScroll && containerRef.current) {
31939
32235
  containerRef.current.scrollTop = containerRef.current.scrollHeight;
31940
32236
  }
31941
32237
  }, [events2.length, autoScroll]);
31942
- const filteredEvents = React88.useMemo(() => {
32238
+ const filteredEvents = React90.useMemo(() => {
31943
32239
  if (filter === "all") return events2;
31944
32240
  return events2.filter((e) => e.type === filter);
31945
32241
  }, [events2, filter]);
@@ -32038,7 +32334,7 @@ function EventFlowTab({ events: events2 }) {
32038
32334
  }
32039
32335
  EventFlowTab.displayName = "EventFlowTab";
32040
32336
  function GuardsPanel({ guards }) {
32041
- const [filter, setFilter] = React88.useState("all");
32337
+ const [filter, setFilter] = React90.useState("all");
32042
32338
  if (guards.length === 0) {
32043
32339
  return /* @__PURE__ */ jsx(
32044
32340
  EmptyState,
@@ -32051,7 +32347,7 @@ function GuardsPanel({ guards }) {
32051
32347
  }
32052
32348
  const passedCount = guards.filter((g) => g.result).length;
32053
32349
  const failedCount = guards.length - passedCount;
32054
- const filteredGuards = React88.useMemo(() => {
32350
+ const filteredGuards = React90.useMemo(() => {
32055
32351
  if (filter === "all") return guards;
32056
32352
  if (filter === "passed") return guards.filter((g) => g.result);
32057
32353
  return guards.filter((g) => !g.result);
@@ -32116,8 +32412,8 @@ var STATUS_CONFIG = {
32116
32412
  warn: { variant: "warning", icon: "!", label: "WARN" },
32117
32413
  pending: { variant: "default", icon: "?", label: "PENDING" }
32118
32414
  };
32119
- function VerificationTab({ checks: checks2, summary }) {
32120
- if (checks2.length === 0) {
32415
+ function VerificationTab({ checks, summary }) {
32416
+ if (checks.length === 0) {
32121
32417
  return /* @__PURE__ */ jsx(
32122
32418
  EmptyState,
32123
32419
  {
@@ -32128,7 +32424,7 @@ function VerificationTab({ checks: checks2, summary }) {
32128
32424
  );
32129
32425
  }
32130
32426
  const sortOrder = { fail: 0, warn: 1, pending: 2, pass: 3 };
32131
- const sorted = [...checks2].sort(
32427
+ const sorted = [...checks].sort(
32132
32428
  (a, b) => (sortOrder[a.status] ?? 4) - (sortOrder[b.status] ?? 4)
32133
32429
  );
32134
32430
  return /* @__PURE__ */ jsxs("div", { className: "debug-tab debug-tab--verification", children: [
@@ -32194,16 +32490,16 @@ function EffectBadge({ effect }) {
32194
32490
  effect.error && /* @__PURE__ */ jsx("span", { className: "text-red-500 truncate max-w-[120px]", title: effect.error, children: effect.error })
32195
32491
  ] });
32196
32492
  }
32197
- function TransitionTimeline({ transitions: transitions2 }) {
32198
- const containerRef = React88.useRef(null);
32199
- const [autoScroll, setAutoScroll] = React88.useState(true);
32200
- const [expandedId, setExpandedId] = React88.useState(null);
32201
- React88.useEffect(() => {
32493
+ function TransitionTimeline({ transitions }) {
32494
+ const containerRef = React90.useRef(null);
32495
+ const [autoScroll, setAutoScroll] = React90.useState(true);
32496
+ const [expandedId, setExpandedId] = React90.useState(null);
32497
+ React90.useEffect(() => {
32202
32498
  if (autoScroll && containerRef.current) {
32203
32499
  containerRef.current.scrollTop = containerRef.current.scrollHeight;
32204
32500
  }
32205
- }, [transitions2.length, autoScroll]);
32206
- if (transitions2.length === 0) {
32501
+ }, [transitions.length, autoScroll]);
32502
+ if (transitions.length === 0) {
32207
32503
  return /* @__PURE__ */ jsx(
32208
32504
  EmptyState,
32209
32505
  {
@@ -32222,11 +32518,11 @@ function TransitionTimeline({ transitions: transitions2 }) {
32222
32518
  second: "2-digit"
32223
32519
  }) + "." + String(d.getMilliseconds()).padStart(3, "0");
32224
32520
  };
32225
- const sorted = [...transitions2].reverse();
32521
+ const sorted = [...transitions].reverse();
32226
32522
  return /* @__PURE__ */ jsxs("div", { className: "debug-tab debug-tab--timeline", children: [
32227
32523
  /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between mb-2", children: [
32228
32524
  /* @__PURE__ */ jsxs(Typography, { variant: "small", className: "text-gray-500", children: [
32229
- transitions2.length,
32525
+ transitions.length,
32230
32526
  " transitions recorded"
32231
32527
  ] }),
32232
32528
  /* @__PURE__ */ jsxs("label", { className: "flex items-center gap-1 text-xs text-gray-500 cursor-pointer", children: [
@@ -32459,9 +32755,9 @@ function getAllEvents(traits2) {
32459
32755
  }
32460
32756
  function EventDispatcherTab({ traits: traits2, schema }) {
32461
32757
  const eventBus = useEventBus();
32462
- const [log, setLog] = React88.useState([]);
32463
- const prevStatesRef = React88.useRef(/* @__PURE__ */ new Map());
32464
- React88.useEffect(() => {
32758
+ const [log, setLog] = React90.useState([]);
32759
+ const prevStatesRef = React90.useRef(/* @__PURE__ */ new Map());
32760
+ React90.useEffect(() => {
32465
32761
  for (const trait of traits2) {
32466
32762
  const prev = prevStatesRef.current.get(trait.id);
32467
32763
  if (prev && prev !== trait.currentState) {
@@ -32504,7 +32800,7 @@ function EventDispatcherTab({ traits: traits2, schema }) {
32504
32800
  ] }),
32505
32801
  /* @__PURE__ */ jsxs("div", { className: "mb-3", children: [
32506
32802
  /* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: "Available Events" }),
32507
- availableEvents.length === 0 ? /* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-gray-400 italic", children: "No transitions from current state" }) : /* @__PURE__ */ jsx(Stack, { gap: "xs", children: availableEvents.map(({ event, transitions: transitions2 }) => /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
32803
+ availableEvents.length === 0 ? /* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-gray-400 italic", children: "No transitions from current state" }) : /* @__PURE__ */ jsx(Stack, { gap: "xs", children: availableEvents.map(({ event, transitions }) => /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
32508
32804
  /* @__PURE__ */ jsx(
32509
32805
  Button,
32510
32806
  {
@@ -32515,8 +32811,8 @@ function EventDispatcherTab({ traits: traits2, schema }) {
32515
32811
  children: event
32516
32812
  }
32517
32813
  ),
32518
- /* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-gray-500", children: transitions2.map((t) => `${t.from} -> ${t.to}`).join(", ") }),
32519
- transitions2.some((t) => t.guard) && /* @__PURE__ */ jsx(Badge, { variant: "warning", size: "sm", children: "guarded" })
32814
+ /* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-gray-500", children: transitions.map((t) => `${t.from} -> ${t.to}`).join(", ") }),
32815
+ transitions.some((t) => t.guard) && /* @__PURE__ */ jsx(Badge, { variant: "warning", size: "sm", children: "guarded" })
32520
32816
  ] }, event)) })
32521
32817
  ] }),
32522
32818
  unavailableEvents.length > 0 && /* @__PURE__ */ jsxs("div", { className: "mb-3", children: [
@@ -32544,10 +32840,10 @@ function RuntimeDebugger({
32544
32840
  defaultTab,
32545
32841
  schema
32546
32842
  }) {
32547
- const [isCollapsed, setIsCollapsed] = React88.useState(defaultCollapsed);
32548
- const [isVisible, setIsVisible] = React88.useState(mode === "inline" || isDebugEnabled2());
32843
+ const [isCollapsed, setIsCollapsed] = React90.useState(mode === "verify" ? true : defaultCollapsed);
32844
+ const [isVisible, setIsVisible] = React90.useState(mode === "inline" || mode === "verify" || isDebugEnabled2());
32549
32845
  const debugData = useDebugData();
32550
- React88.useEffect(() => {
32846
+ React90.useEffect(() => {
32551
32847
  if (mode === "inline") return;
32552
32848
  return onDebugToggle((enabled) => {
32553
32849
  setIsVisible(enabled);
@@ -32556,7 +32852,7 @@ function RuntimeDebugger({
32556
32852
  }
32557
32853
  });
32558
32854
  }, [mode]);
32559
- React88.useEffect(() => {
32855
+ React90.useEffect(() => {
32560
32856
  if (mode === "inline") return;
32561
32857
  const handleKeyDown = (e) => {
32562
32858
  if (e.key === "`" && isVisible) {
@@ -32683,6 +32979,56 @@ function RuntimeDebugger({
32683
32979
  }
32684
32980
  );
32685
32981
  }
32982
+ if (mode === "verify") {
32983
+ const traitStates = debugData.traits.map((t) => `${t.name}:${t.currentState}`).join(" | ");
32984
+ return /* @__PURE__ */ jsxs(
32985
+ "div",
32986
+ {
32987
+ className: cn(
32988
+ "runtime-debugger runtime-debugger--verify",
32989
+ "h-[35vh] flex flex-col bg-gray-900 text-white border-t-2 border-cyan-500",
32990
+ className
32991
+ ),
32992
+ "data-testid": "debugger-verify",
32993
+ children: [
32994
+ /* @__PURE__ */ jsxs("div", { className: "px-3 py-1.5 flex items-center gap-3 text-xs font-mono border-b border-gray-700 flex-shrink-0", children: [
32995
+ /* @__PURE__ */ jsx(Badge, { variant: failedChecks > 0 ? "danger" : "success", size: "sm", children: failedChecks > 0 ? `${failedChecks} fail` : "OK" }),
32996
+ /* @__PURE__ */ jsxs("span", { className: "text-gray-400", children: [
32997
+ verification.transitions.length,
32998
+ " transitions"
32999
+ ] }),
33000
+ traitStates && /* @__PURE__ */ jsx("span", { className: "text-cyan-400 truncate max-w-[400px]", children: traitStates })
33001
+ ] }),
33002
+ /* @__PURE__ */ jsx("div", { className: "flex-1 overflow-y-auto", children: /* @__PURE__ */ jsx("div", { className: "px-2 py-1", children: verification.transitions.length === 0 ? /* @__PURE__ */ jsx("div", { className: "text-gray-500 text-xs font-mono py-2 text-center", children: "Waiting for transitions..." }) : /* @__PURE__ */ jsx("div", { className: "space-y-0.5", children: verification.transitions.map((trace) => {
33003
+ const hasFailedEffects = trace.effects.some((e) => e.status === "failed");
33004
+ return /* @__PURE__ */ jsxs("div", { className: "flex items-start gap-2 text-xs font-mono py-0.5 border-b border-gray-800 last:border-0", children: [
33005
+ /* @__PURE__ */ jsx("span", { className: cn(
33006
+ "mt-1.5 w-1.5 h-1.5 rounded-full flex-shrink-0",
33007
+ hasFailedEffects ? "bg-red-500" : "bg-green-500"
33008
+ ) }),
33009
+ /* @__PURE__ */ jsx(Badge, { variant: "info", size: "sm", className: "flex-shrink-0", children: trace.event }),
33010
+ /* @__PURE__ */ jsxs("span", { className: "text-gray-400 flex-shrink-0", children: [
33011
+ trace.from,
33012
+ " ",
33013
+ "\u2192",
33014
+ " ",
33015
+ trace.to
33016
+ ] }),
33017
+ /* @__PURE__ */ jsx("span", { className: "flex flex-wrap gap-1 ml-1", children: trace.effects.map((eff, i) => /* @__PURE__ */ jsxs("span", { className: cn(
33018
+ "px-1 rounded text-[10px]",
33019
+ eff.status === "executed" ? "bg-green-900/50 text-green-400" : eff.status === "failed" ? "bg-red-900/50 text-red-400" : "bg-yellow-900/50 text-yellow-400"
33020
+ ), children: [
33021
+ eff.status === "executed" ? "\u2713" : eff.status === "failed" ? "\u2717" : "-",
33022
+ " ",
33023
+ eff.type,
33024
+ eff.args.length > 0 && /* @__PURE__ */ jsx("span", { className: "text-gray-500 ml-0.5", children: JSON.stringify(eff.args).slice(0, 30) })
33025
+ ] }, i)) })
33026
+ ] }, trace.id);
33027
+ }) }) }) })
33028
+ ]
33029
+ }
33030
+ );
33031
+ }
32686
33032
  return /* @__PURE__ */ jsx(
32687
33033
  "div",
32688
33034
  {
@@ -32953,7 +33299,7 @@ var Timeline = ({
32953
33299
  }) => {
32954
33300
  const { t } = useTranslate();
32955
33301
  const entityData = Array.isArray(entity) ? entity : [];
32956
- const items = React88__default.useMemo(() => {
33302
+ const items = React90__default.useMemo(() => {
32957
33303
  if (propItems) return propItems;
32958
33304
  if (entityData.length === 0) return [];
32959
33305
  return entityData.map((record, idx) => {
@@ -33055,7 +33401,7 @@ var Timeline = ({
33055
33401
  };
33056
33402
  Timeline.displayName = "Timeline";
33057
33403
  function extractToastProps(children) {
33058
- if (!React88__default.isValidElement(children)) {
33404
+ if (!React90__default.isValidElement(children)) {
33059
33405
  if (typeof children === "string") {
33060
33406
  return { message: children };
33061
33407
  }
@@ -33086,7 +33432,7 @@ var ToastSlot = ({
33086
33432
  eventBus.emit("UI:CLOSE");
33087
33433
  };
33088
33434
  if (!isVisible) return null;
33089
- const isCustomContent = React88__default.isValidElement(children) && !message;
33435
+ const isCustomContent = React90__default.isValidElement(children) && !message;
33090
33436
  return /* @__PURE__ */ jsx(Box, { className: "fixed bottom-4 right-4 z-50", children: isCustomContent ? children : /* @__PURE__ */ jsx(
33091
33437
  Toast,
33092
33438
  {
@@ -33128,12 +33474,12 @@ WorldMapTemplate.displayName = "WorldMapTemplate";
33128
33474
 
33129
33475
  // components/organisms/component-registry.generated.ts
33130
33476
  function lazyThree(name, loader) {
33131
- const Lazy = React88__default.lazy(() => loader().then((m) => ({ default: m[name] })));
33477
+ const Lazy = React90__default.lazy(() => loader().then((m) => ({ default: m[name] })));
33132
33478
  function ThreeWrapper(props) {
33133
- return React88__default.createElement(
33134
- React88__default.Suspense,
33479
+ return React90__default.createElement(
33480
+ React90__default.Suspense,
33135
33481
  { fallback: null },
33136
- React88__default.createElement(Lazy, props)
33482
+ React90__default.createElement(Lazy, props)
33137
33483
  );
33138
33484
  }
33139
33485
  ThreeWrapper.displayName = `Lazy(${name})`;
@@ -33421,7 +33767,7 @@ function SuspenseConfigProvider({
33421
33767
  config,
33422
33768
  children
33423
33769
  }) {
33424
- return React88__default.createElement(
33770
+ return React90__default.createElement(
33425
33771
  SuspenseConfigContext.Provider,
33426
33772
  { value: config },
33427
33773
  children
@@ -35804,7 +36150,7 @@ function EntityDataProvider({
35804
36150
  adapter,
35805
36151
  children
35806
36152
  }) {
35807
- return React88__default.createElement(
36153
+ return React90__default.createElement(
35808
36154
  EntityDataContext.Provider,
35809
36155
  { value: adapter },
35810
36156
  children
@@ -36383,14 +36729,14 @@ function useEntityMutations(entityName, options) {
36383
36729
 
36384
36730
  // stores/entityStore.ts
36385
36731
  var entities = /* @__PURE__ */ new Map();
36386
- var listeners7 = /* @__PURE__ */ new Set();
36732
+ var listeners6 = /* @__PURE__ */ new Set();
36387
36733
  var idCounter2 = 0;
36388
36734
  function subscribe(listener) {
36389
- listeners7.add(listener);
36390
- return () => listeners7.delete(listener);
36735
+ listeners6.add(listener);
36736
+ return () => listeners6.delete(listener);
36391
36737
  }
36392
36738
  function notify() {
36393
- listeners7.forEach((listener) => listener());
36739
+ listeners6.forEach((listener) => listener());
36394
36740
  }
36395
36741
  function getEntity(id) {
36396
36742
  return entities.get(id);
@@ -36630,4 +36976,4 @@ function useGitHubBranches(owner, repo, enabled = true) {
36630
36976
  });
36631
36977
  }
36632
36978
 
36633
- export { ALL_PRESETS, AR_BOOK_FIELDS, AboutPageTemplate, Accordion, ActionButton, ActionButtons, Card2 as ActionCard, ActionPalette, ActionTile, Alert, AnimatedCounter, ArticleSection, AuthLayout, Avatar, Badge, BattleBoard, BattleTemplate, BookChapterView, BookCoverPage, BookNavBar, BookTableOfContents, BookViewer, Box, Breadcrumb, BuilderBoard, Button, ButtonGroup, CTABanner, CalendarGrid, CanvasEffect, Card, CardBody, CardContent, CardFooter, CardGrid, CardHeader, CardTitle, Carousel, CaseStudyCard, CaseStudyOrganism, CastleBoard, CastleTemplate, Center, Chart, ChartLegend, Checkbox, ChoiceButton, ClassifierBoard, CodeBlock, CodeExample, CodeView, CodeViewer, CollapsibleSection, CombatLog, ComboCounter, CommunityLinks, ConditionalWrapper, ConfettiEffect, ConfirmDialog, Container, ContentRenderer, ContentSection, ControlButton, CounterTemplate, CraftingRecipe, DEFAULT_SLOTS, DIAMOND_TOP_Y, DPad, DamageNumber, DashboardGrid, DashboardLayout, DataGrid, DataList, DataTable, DateRangeSelector, DayCell, DebuggerBoard, DetailPanel, DialogueBox, DialogueBubble, Divider, DocumentViewer, StateMachineView as DomStateMachineVisualizer, Drawer, DrawerSlot, ENTITY_EVENTS, EdgeDecoration, EditorCheckbox, EditorSelect, EditorSlider, EditorTextInput, EditorToolbar, EmptyState, EnemyPlate, EntityDataProvider, EntityDisplayEvents, ErrorBoundary, ErrorState, EventHandlerBoard, EventLog, FEATURE_COLORS, FEATURE_TYPES, FLOOR_HEIGHT, FeatureCard, FeatureDetailPageTemplate, FeatureGrid, FeatureGridOrganism, FilterGroup, Flex, FlipCard, FlipContainer, FloatingActionButton, Form, FormActions, FormField, FormLayout, FormSection, FormSectionHeader, GameAudioContext, GameAudioProvider, GameAudioToggle, GameCanvas2D, GameHud, GameMenu, GameOverScreen, GameShell, GameTemplate, GenericAppTemplate, GeometricPattern, GraphCanvas, GraphView, Grid, HStack, Header, Heading, HealthBar, HealthPanel, HeroOrganism, HeroSection, I18nProvider, IDENTITY_BOOK_FIELDS, Icon, InfiniteScrollSentinel, Input, InputGroup, InstallBox, InventoryGrid, InventoryPanel, IsometricCanvas, ItemSlot, JazariStateMachine, Label, LandingPageTemplate, LawReferenceTooltip, Lightbox, LineChart, List, LoadingState, MapView, MarkdownContent, MarketingStatCard, MasterDetail, MediaGallery, Menu, Meter, MiniMap, Modal, ModalSlot, Navigation, NegotiatorBoard, NotifyListener, NumberStepper, ObjectRulePanel, StateMachineView as OrbitalStateMachineView, OrbitalVisualization, Overlay, PageHeader, Pagination, PatternTile, PhysicsManager, PlatformerCanvas, Popover, PowerupSlots, PricingCard, PricingGrid, PricingOrganism, PricingPageTemplate, ProgressBar, ProgressDots, PullToRefresh, QuestTracker, QuizBlock, Radio, RangeSlider, RelationSelect, RepeatableFormSection, ResourceBar, ResourceCounter, RuleEditor, RuntimeDebugger, SHEET_COLUMNS, SPRITE_SHEET_LAYOUT, ScaledDiagram, ScoreBoard, ScoreDisplay, SearchInput, Section, SectionHeader, Select, SequenceBar, SequencerBoard, ServiceCatalog, ShowcaseCard, ShowcaseOrganism, SidePanel, Sidebar, SignaturePad, SimpleGrid, SimulationCanvas, SimulationControls, SimulationGraph, SimulatorBoard, Skeleton, SlotContentRenderer, SocialProof, SortableList, Spacer, Spinner, Split, SplitPane, SplitSection, Sprite, Stack, StarRating, StatBadge, StatCard, StatDisplay, StateArchitectBoard, StateIndicator, StateMachineView, StateNode2 as StateNode, StatsGrid, StatsOrganism, StatusBar, StatusDot, StatusEffect, StepFlow, StepFlowOrganism, SwipeableRow, Switch, TERRAIN_COLORS, TILE_HEIGHT, TILE_WIDTH, TabbedContainer, Table, Tabs, TagCloud, TeamCard, TeamOrganism, TerrainPalette, Text, TextHighlight, Textarea, ThemeSelector, ThemeToggle, TimeSlotCell, Timeline, TimerDisplay, Toast, ToastSlot, Tooltip, TraitSlot, TraitStateViewer, TransitionArrow, TrendIndicator, TurnIndicator, TurnPanel, TypewriterText, Typography, UISlotComponent, UISlotRenderer, UncontrolledBattleBoard, UnitCommandBar, UploadDropZone, VStack, VariablePanel, ViolationAlert, WaypointMarker, WizardContainer, WizardNavigation, WizardProgress, WorldMapBoard, WorldMapTemplate, XPBar, applyTemporaryEffect, calculateAttackTargets, calculateDamage, calculateValidMoves, clearEntities, cn, combatAnimations, combatClasses, combatEffects, createInitialGameState, createTranslate, createUnitAnimationState, drawSprite, entityDataKeys, generateCombatMessage, getAllEntities, getByType, getCurrentFrame, getEntity, getSingleton, getTileDimensions, inferDirection, isoToScreen, mapBookData, parseQueryBinding, pendulum, projectileMotion, removeEntity, resolveFieldMap, resolveFrame, resolveSheetDirection, screenToIso, spawnEntity, springOscillator, tickAnimationState, transitionAnimation, updateEntity, updateSingleton, useAgentChat, useAuthContext, useBattleState, useCamera, useCompile, useConnectGitHub, useCreateEntity, useDeepAgentGeneration, useDeleteEntity, useDisconnectGitHub, useDragReorder, useEmitEvent, useEntities, useEntitiesByType, useEntity, useEntity2 as useEntityById, useEntityDataAdapter, useEntityDetail, useEntityList, useEntityListSuspense, useEntityMutations, useEntitySuspense, useEventBus, useEventListener, useExtensions, useFileEditor, useFileSystem, useGameAudio, useGameAudioContext, useGitHubBranches, useGitHubRepo, useGitHubRepos, useGitHubStatus, useImageCache, useInfiniteScroll, useInput, useLongPress, useOrbitalHistory, useOrbitalMutations, usePhysics, usePhysics2D, usePinchZoom, usePlayer, usePreview, usePullToRefresh, useQuerySingleton, useResolvedEntity, useSelectedEntity, useSendOrbitalEvent, useSingletonEntity, useSpriteAnimations, useSwipeGesture, useTranslate, useUIEvents, useUISlotManager, useUpdateEntity, useValidation };
36979
+ export { ALL_PRESETS, AR_BOOK_FIELDS, AboutPageTemplate, Accordion, ActionButton, ActionButtons, Card2 as ActionCard, ActionPalette, ActionTile, Alert, AnimatedCounter, AnimatedGraphic, AnimatedReveal, ArticleSection, AuthLayout, Avatar, Badge, BattleBoard, BattleTemplate, BookChapterView, BookCoverPage, BookNavBar, BookTableOfContents, BookViewer, Box, Breadcrumb, BuilderBoard, Button, ButtonGroup, CTABanner, CalendarGrid, CanvasEffect, Card, CardBody, CardContent, CardFooter, CardGrid, CardHeader, CardTitle, Carousel, CaseStudyCard, CaseStudyOrganism, CastleBoard, CastleTemplate, Center, Chart, ChartLegend, Checkbox, ChoiceButton, ClassifierBoard, CodeBlock, CodeExample, CodeView, CodeViewer, CollapsibleSection, CombatLog, ComboCounter, CommunityLinks, ConditionalWrapper, ConfettiEffect, ConfirmDialog, Container, ContentRenderer, ContentSection, ControlButton, CounterTemplate, CraftingRecipe, DEFAULT_SLOTS, DIAMOND_TOP_Y, DPad, DamageNumber, DashboardGrid, DashboardLayout, DataGrid, DataList, DataTable, DateRangeSelector, DayCell, DebuggerBoard, DetailPanel, DialogueBox, DialogueBubble, Divider, DocumentViewer, StateMachineView as DomStateMachineVisualizer, Drawer, DrawerSlot, ENTITY_EVENTS, EdgeDecoration, EditorCheckbox, EditorSelect, EditorSlider, EditorTextInput, EditorToolbar, EmptyState, EnemyPlate, EntityDataProvider, EntityDisplayEvents, ErrorBoundary, ErrorState, EventHandlerBoard, EventLog, FEATURE_COLORS, FEATURE_TYPES, FLOOR_HEIGHT, FeatureCard, FeatureDetailPageTemplate, FeatureGrid, FeatureGridOrganism, FilterGroup, Flex, FlipCard, FlipContainer, FloatingActionButton, Form, FormActions, FormField, FormLayout, FormSection, FormSectionHeader, GameAudioContext, GameAudioProvider, GameAudioToggle, GameCanvas2D, GameHud, GameMenu, GameOverScreen, GameShell, GameTemplate, GenericAppTemplate, GeometricPattern, GraphCanvas, GraphView, Grid, HStack, Header, Heading, HealthBar, HealthPanel, HeroOrganism, HeroSection, I18nProvider, IDENTITY_BOOK_FIELDS, Icon, InfiniteScrollSentinel, Input, InputGroup, InstallBox, InventoryGrid, InventoryPanel, IsometricCanvas, ItemSlot, JazariStateMachine, Label, LandingPageTemplate, LawReferenceTooltip, Lightbox, LineChart, List, LoadingState, MapView, MarkdownContent, MarketingStatCard, MasterDetail, MediaGallery, Menu, Meter, MiniMap, Modal, ModalSlot, Navigation, NegotiatorBoard, NotifyListener, NumberStepper, ObjectRulePanel, StateMachineView as OrbitalStateMachineView, OrbitalVisualization, Overlay, PageHeader, Pagination, PatternTile, PhysicsManager, PlatformerCanvas, Popover, PowerupSlots, PricingCard, PricingGrid, PricingOrganism, PricingPageTemplate, ProgressBar, ProgressDots, PullToRefresh, QuestTracker, QuizBlock, Radio, RangeSlider, RelationSelect, RepeatableFormSection, ResourceBar, ResourceCounter, RuleEditor, RuntimeDebugger, SHEET_COLUMNS, SPRITE_SHEET_LAYOUT, ScaledDiagram, ScoreBoard, ScoreDisplay, SearchInput, Section, SectionHeader, Select, SequenceBar, SequencerBoard, ServiceCatalog, ShowcaseCard, ShowcaseOrganism, SidePanel, Sidebar, SignaturePad, SimpleGrid, SimulationCanvas, SimulationControls, SimulationGraph, SimulatorBoard, Skeleton, SlotContentRenderer, SocialProof, SortableList, Spacer, Spinner, Split, SplitPane, SplitSection, Sprite, Stack, StarRating, StatBadge, StatCard, StatDisplay, StateArchitectBoard, StateIndicator, StateMachineView, StateNode2 as StateNode, StatsGrid, StatsOrganism, StatusBar, StatusDot, StatusEffect, StepFlow, StepFlowOrganism, SwipeableRow, Switch, TERRAIN_COLORS, TILE_HEIGHT, TILE_WIDTH, TabbedContainer, Table, Tabs, TagCloud, TeamCard, TeamOrganism, TerrainPalette, Text, TextHighlight, Textarea, ThemeSelector, ThemeToggle, TimeSlotCell, Timeline, TimerDisplay, Toast, ToastSlot, Tooltip, TraitSlot, TraitStateViewer, TransitionArrow, TrendIndicator, TurnIndicator, TurnPanel, TypewriterText, Typography, UISlotComponent, UISlotRenderer, UncontrolledBattleBoard, UnitCommandBar, UploadDropZone, VStack, VariablePanel, ViolationAlert, WaypointMarker, WizardContainer, WizardNavigation, WizardProgress, WorldMapBoard, WorldMapTemplate, XPBar, applyTemporaryEffect, calculateAttackTargets, calculateDamage, calculateValidMoves, clearEntities, cn, combatAnimations, combatClasses, combatEffects, createInitialGameState, createTranslate, createUnitAnimationState, drawSprite, entityDataKeys, generateCombatMessage, getAllEntities, getByType, getCurrentFrame, getEntity, getSingleton, getTileDimensions, inferDirection, isoToScreen, mapBookData, parseQueryBinding, pendulum, projectileMotion, removeEntity, resolveFieldMap, resolveFrame, resolveSheetDirection, screenToIso, spawnEntity, springOscillator, tickAnimationState, transitionAnimation, updateEntity, updateSingleton, useAgentChat, useAuthContext, useBattleState, useCamera, useCompile, useConnectGitHub, useCreateEntity, useDeepAgentGeneration, useDeleteEntity, useDisconnectGitHub, useDragReorder, useEmitEvent, useEntities, useEntitiesByType, useEntity, useEntity2 as useEntityById, useEntityDataAdapter, useEntityDetail, useEntityList, useEntityListSuspense, useEntityMutations, useEntitySuspense, useEventBus, useEventListener, useExtensions, useFileEditor, useFileSystem, useGameAudio, useGameAudioContext, useGitHubBranches, useGitHubRepo, useGitHubRepos, useGitHubStatus, useImageCache, useInfiniteScroll, useInput, useLongPress, useOrbitalHistory, useOrbitalMutations, usePhysics, usePhysics2D, usePinchZoom, usePlayer, usePreview, usePullToRefresh, useQuerySingleton, useResolvedEntity, useSelectedEntity, useSendOrbitalEvent, useSingletonEntity, useSpriteAnimations, useSwipeGesture, useTranslate, useUIEvents, useUISlotManager, useUpdateEntity, useValidation };