@almadar/ui 2.56.0 → 2.57.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,7 +1,7 @@
1
1
  import { clsx } from 'clsx';
2
2
  import { twMerge } from 'tailwind-merge';
3
- import * as React90 from 'react';
4
- import React90__default, { useCallback, createContext, useState, useRef, useEffect, useMemo, useLayoutEffect, lazy, useContext, useId, Suspense, useSyncExternalStore } from 'react';
3
+ import * as React91 from 'react';
4
+ import React91__default, { useCallback, createContext, useState, useRef, useEffect, useMemo, useLayoutEffect, lazy, useContext, useId, Suspense, useSyncExternalStore } from 'react';
5
5
  import { EventBusContext, useEntityRef, SelectionContext } from '@almadar/ui/providers';
6
6
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
7
7
  import * as LucideIcons from 'lucide-react';
@@ -547,7 +547,7 @@ function resolveIconProp(value, sizeClass) {
547
547
  const IconComp = value;
548
548
  return /* @__PURE__ */ jsx(IconComp, { className: sizeClass });
549
549
  }
550
- if (React90__default.isValidElement(value)) {
550
+ if (React91__default.isValidElement(value)) {
551
551
  return value;
552
552
  }
553
553
  if (typeof value === "object" && value !== null && "render" in value) {
@@ -556,7 +556,7 @@ function resolveIconProp(value, sizeClass) {
556
556
  }
557
557
  return value;
558
558
  }
559
- var Button = React90__default.forwardRef(
559
+ var Button = React91__default.forwardRef(
560
560
  ({
561
561
  className,
562
562
  variant = "primary",
@@ -618,7 +618,7 @@ Button.displayName = "Button";
618
618
 
619
619
  // components/atoms/Input.tsx
620
620
  init_cn();
621
- var Input = React90__default.forwardRef(
621
+ var Input = React91__default.forwardRef(
622
622
  ({
623
623
  className,
624
624
  inputType,
@@ -733,7 +733,7 @@ Input.displayName = "Input";
733
733
 
734
734
  // components/atoms/Label.tsx
735
735
  init_cn();
736
- var Label = React90__default.forwardRef(
736
+ var Label = React91__default.forwardRef(
737
737
  ({ className, required, children, ...props }, ref) => {
738
738
  return /* @__PURE__ */ jsxs(
739
739
  "label",
@@ -756,7 +756,7 @@ Label.displayName = "Label";
756
756
 
757
757
  // components/atoms/Textarea.tsx
758
758
  init_cn();
759
- var Textarea = React90__default.forwardRef(
759
+ var Textarea = React91__default.forwardRef(
760
760
  ({ className, error, ...props }, ref) => {
761
761
  return /* @__PURE__ */ jsx(
762
762
  "textarea",
@@ -782,7 +782,7 @@ Textarea.displayName = "Textarea";
782
782
 
783
783
  // components/atoms/Select.tsx
784
784
  init_cn();
785
- var Select = React90__default.forwardRef(
785
+ var Select = React91__default.forwardRef(
786
786
  ({ className, options, placeholder, error, ...props }, ref) => {
787
787
  return /* @__PURE__ */ jsxs("div", { className: "relative", children: [
788
788
  /* @__PURE__ */ jsxs(
@@ -821,7 +821,7 @@ Select.displayName = "Select";
821
821
 
822
822
  // components/atoms/Checkbox.tsx
823
823
  init_cn();
824
- var Checkbox = React90__default.forwardRef(
824
+ var Checkbox = React91__default.forwardRef(
825
825
  ({ className, label, id, ...props }, ref) => {
826
826
  const inputId = id || `checkbox-${Math.random().toString(36).substr(2, 9)}`;
827
827
  return /* @__PURE__ */ jsxs("div", { className: "flex items-center", children: [
@@ -900,7 +900,7 @@ var shadowStyles = {
900
900
  md: "shadow",
901
901
  lg: "shadow-lg"
902
902
  };
903
- var Card = React90__default.forwardRef(
903
+ var Card = React91__default.forwardRef(
904
904
  ({
905
905
  className,
906
906
  variant = "bordered",
@@ -936,9 +936,9 @@ var Card = React90__default.forwardRef(
936
936
  }
937
937
  );
938
938
  Card.displayName = "Card";
939
- var CardHeader = React90__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn("mb-4", className), ...props }));
939
+ var CardHeader = React91__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn("mb-4", className), ...props }));
940
940
  CardHeader.displayName = "CardHeader";
941
- var CardTitle = React90__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
941
+ var CardTitle = React91__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
942
942
  "h3",
943
943
  {
944
944
  ref,
@@ -951,11 +951,11 @@ var CardTitle = React90__default.forwardRef(({ className, ...props }, ref) => /*
951
951
  }
952
952
  ));
953
953
  CardTitle.displayName = "CardTitle";
954
- var CardContent = React90__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn("", className), ...props }));
954
+ var CardContent = React91__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn("", className), ...props }));
955
955
  CardContent.displayName = "CardContent";
956
956
  var CardBody = CardContent;
957
957
  CardBody.displayName = "CardBody";
958
- var CardFooter = React90__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
958
+ var CardFooter = React91__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
959
959
  "div",
960
960
  {
961
961
  ref,
@@ -1004,7 +1004,7 @@ var sizeStyles2 = {
1004
1004
  md: "px-2.5 py-1 text-sm",
1005
1005
  lg: "px-3 py-1.5 text-base"
1006
1006
  };
1007
- var Badge = React90__default.forwardRef(
1007
+ var Badge = React91__default.forwardRef(
1008
1008
  ({ className, variant = "default", size = "sm", amount, label, icon, children, ...props }, ref) => {
1009
1009
  const iconSizes2 = { sm: "w-3 h-3", md: "w-3.5 h-3.5", lg: "w-4 h-4" };
1010
1010
  const resolvedIcon = typeof icon === "string" ? (() => {
@@ -1040,7 +1040,7 @@ var sizeStyles3 = {
1040
1040
  md: "h-6 w-6",
1041
1041
  lg: "h-8 w-8"
1042
1042
  };
1043
- var Spinner = React90__default.forwardRef(
1043
+ var Spinner = React91__default.forwardRef(
1044
1044
  ({ className, size = "md", ...props }, ref) => {
1045
1045
  return /* @__PURE__ */ jsx(
1046
1046
  "div",
@@ -1313,7 +1313,7 @@ var positionStyles = {
1313
1313
  fixed: "fixed",
1314
1314
  sticky: "sticky"
1315
1315
  };
1316
- var Box = React90__default.forwardRef(
1316
+ var Box = React91__default.forwardRef(
1317
1317
  ({
1318
1318
  padding,
1319
1319
  paddingX,
@@ -1674,7 +1674,7 @@ ProgressBar.displayName = "ProgressBar";
1674
1674
 
1675
1675
  // components/atoms/Radio.tsx
1676
1676
  init_cn();
1677
- var Radio = React90__default.forwardRef(
1677
+ var Radio = React91__default.forwardRef(
1678
1678
  ({
1679
1679
  label,
1680
1680
  helperText,
@@ -1781,7 +1781,7 @@ Radio.displayName = "Radio";
1781
1781
 
1782
1782
  // components/atoms/Switch.tsx
1783
1783
  init_cn();
1784
- var Switch = React90.forwardRef(
1784
+ var Switch = React91.forwardRef(
1785
1785
  ({
1786
1786
  checked,
1787
1787
  defaultChecked = false,
@@ -1792,10 +1792,10 @@ var Switch = React90.forwardRef(
1792
1792
  name,
1793
1793
  className
1794
1794
  }, ref) => {
1795
- const [isChecked, setIsChecked] = React90.useState(
1795
+ const [isChecked, setIsChecked] = React91.useState(
1796
1796
  checked !== void 0 ? checked : defaultChecked
1797
1797
  );
1798
- React90.useEffect(() => {
1798
+ React91.useEffect(() => {
1799
1799
  if (checked !== void 0) {
1800
1800
  setIsChecked(checked);
1801
1801
  }
@@ -2469,8 +2469,8 @@ var LawReferenceTooltip = ({
2469
2469
  position = "top",
2470
2470
  className
2471
2471
  }) => {
2472
- const [isVisible, setIsVisible] = React90__default.useState(false);
2473
- const timeoutRef = React90__default.useRef(null);
2472
+ const [isVisible, setIsVisible] = React91__default.useState(false);
2473
+ const timeoutRef = React91__default.useRef(null);
2474
2474
  const handleMouseEnter = () => {
2475
2475
  if (timeoutRef.current) clearTimeout(timeoutRef.current);
2476
2476
  timeoutRef.current = setTimeout(() => setIsVisible(true), 200);
@@ -2479,7 +2479,7 @@ var LawReferenceTooltip = ({
2479
2479
  if (timeoutRef.current) clearTimeout(timeoutRef.current);
2480
2480
  setIsVisible(false);
2481
2481
  };
2482
- React90__default.useEffect(() => {
2482
+ React91__default.useEffect(() => {
2483
2483
  return () => {
2484
2484
  if (timeoutRef.current) clearTimeout(timeoutRef.current);
2485
2485
  };
@@ -2677,7 +2677,7 @@ var sizeStyles5 = {
2677
2677
  md: "w-2.5 h-2.5",
2678
2678
  lg: "w-3 h-3"
2679
2679
  };
2680
- var StatusDot = React90__default.forwardRef(
2680
+ var StatusDot = React91__default.forwardRef(
2681
2681
  ({ className, status = "offline", pulse = false, size = "md", label, ...props }, ref) => {
2682
2682
  return /* @__PURE__ */ jsx(
2683
2683
  "span",
@@ -2727,7 +2727,7 @@ var iconMap = {
2727
2727
  down: TrendingDown,
2728
2728
  flat: ArrowRight
2729
2729
  };
2730
- var TrendIndicator = React90__default.forwardRef(
2730
+ var TrendIndicator = React91__default.forwardRef(
2731
2731
  ({
2732
2732
  className,
2733
2733
  value,
@@ -2790,7 +2790,7 @@ var thumbSizes = {
2790
2790
  md: "w-4 h-4",
2791
2791
  lg: "w-5 h-5"
2792
2792
  };
2793
- var RangeSlider = React90__default.forwardRef(
2793
+ var RangeSlider = React91__default.forwardRef(
2794
2794
  ({
2795
2795
  className,
2796
2796
  min = 0,
@@ -3350,7 +3350,7 @@ var paddingClasses = {
3350
3350
  md: "py-16",
3351
3351
  lg: "py-24"
3352
3352
  };
3353
- var ContentSection = React90__default.forwardRef(
3353
+ var ContentSection = React91__default.forwardRef(
3354
3354
  ({ children, background = "default", padding = "lg", id, className }, ref) => {
3355
3355
  return /* @__PURE__ */ jsx(
3356
3356
  Box,
@@ -3874,7 +3874,7 @@ var animatedStyles = {
3874
3874
  "scale-up": { opacity: 1, transform: "scale(1) translateY(0)" },
3875
3875
  "none": {}
3876
3876
  };
3877
- var AnimatedReveal = React90__default.forwardRef(
3877
+ var AnimatedReveal = React91__default.forwardRef(
3878
3878
  ({
3879
3879
  trigger = "scroll",
3880
3880
  animation = "fade-up",
@@ -4030,7 +4030,7 @@ function applyMorphAnimation(container, animate, duration, delay, easing) {
4030
4030
  el.style.opacity = animate ? "1" : "0";
4031
4031
  });
4032
4032
  }
4033
- var AnimatedGraphic = React90__default.forwardRef(
4033
+ var AnimatedGraphic = React91__default.forwardRef(
4034
4034
  ({
4035
4035
  src,
4036
4036
  svgContent,
@@ -4053,7 +4053,7 @@ var AnimatedGraphic = React90__default.forwardRef(
4053
4053
  const fetchedSvg = useFetchedSvg(svgContent ? void 0 : src);
4054
4054
  const resolvedSvg = svgContent ?? fetchedSvg;
4055
4055
  const prevAnimateRef = useRef(animate);
4056
- const setRef = React90__default.useCallback(
4056
+ const setRef = React91__default.useCallback(
4057
4057
  (node) => {
4058
4058
  containerRef.current = node;
4059
4059
  if (typeof ref === "function") ref(node);
@@ -4230,9 +4230,9 @@ function ScoreDisplay({
4230
4230
  ...rest
4231
4231
  }) {
4232
4232
  const resolvedValue = typeof value === "number" && !Number.isNaN(value) ? value : typeof rest.score === "number" && !Number.isNaN(rest.score) ? rest.score : 0;
4233
- const [displayValue, setDisplayValue] = React90.useState(resolvedValue);
4234
- const [isAnimating, setIsAnimating] = React90.useState(false);
4235
- React90.useEffect(() => {
4233
+ const [displayValue, setDisplayValue] = React91.useState(resolvedValue);
4234
+ const [isAnimating, setIsAnimating] = React91.useState(false);
4235
+ React91.useEffect(() => {
4236
4236
  if (!animated || displayValue === resolvedValue) {
4237
4237
  setDisplayValue(resolvedValue);
4238
4238
  return;
@@ -4309,9 +4309,9 @@ function ControlButton({
4309
4309
  className
4310
4310
  }) {
4311
4311
  const eventBus = useEventBus();
4312
- const [isPressed, setIsPressed] = React90.useState(false);
4312
+ const [isPressed, setIsPressed] = React91.useState(false);
4313
4313
  const actualPressed = pressed ?? isPressed;
4314
- const handlePointerDown = React90.useCallback(
4314
+ const handlePointerDown = React91.useCallback(
4315
4315
  (e) => {
4316
4316
  e.preventDefault();
4317
4317
  if (disabled) return;
@@ -4321,7 +4321,7 @@ function ControlButton({
4321
4321
  },
4322
4322
  [disabled, pressEvent, eventBus, onPress]
4323
4323
  );
4324
- const handlePointerUp = React90.useCallback(
4324
+ const handlePointerUp = React91.useCallback(
4325
4325
  (e) => {
4326
4326
  e.preventDefault();
4327
4327
  if (disabled) return;
@@ -4331,7 +4331,7 @@ function ControlButton({
4331
4331
  },
4332
4332
  [disabled, releaseEvent, eventBus, onRelease]
4333
4333
  );
4334
- const handlePointerLeave = React90.useCallback(
4334
+ const handlePointerLeave = React91.useCallback(
4335
4335
  (e) => {
4336
4336
  if (isPressed) {
4337
4337
  setIsPressed(false);
@@ -5202,9 +5202,9 @@ function MiniMap({
5202
5202
  viewportRect,
5203
5203
  className
5204
5204
  }) {
5205
- const canvasRef = React90.useRef(null);
5206
- const frameRef = React90.useRef(0);
5207
- React90.useEffect(() => {
5205
+ const canvasRef = React91.useRef(null);
5206
+ const frameRef = React91.useRef(0);
5207
+ React91.useEffect(() => {
5208
5208
  const canvas = canvasRef.current;
5209
5209
  if (!canvas) return;
5210
5210
  const ctx = canvas.getContext("2d");
@@ -5453,7 +5453,7 @@ var ErrorState = ({
5453
5453
  );
5454
5454
  };
5455
5455
  ErrorState.displayName = "ErrorState";
5456
- var ErrorBoundary = class extends React90__default.Component {
5456
+ var ErrorBoundary = class extends React91__default.Component {
5457
5457
  constructor(props) {
5458
5458
  super(props);
5459
5459
  __publicField(this, "reset", () => {
@@ -5494,6 +5494,127 @@ var ErrorBoundary = class extends React90__default.Component {
5494
5494
  }
5495
5495
  };
5496
5496
  __publicField(ErrorBoundary, "displayName", "ErrorBoundary");
5497
+ init_Typography();
5498
+ function fileIcon(name) {
5499
+ const ext = name.split(".").pop()?.toLowerCase() ?? "";
5500
+ switch (ext) {
5501
+ case "ts":
5502
+ case "tsx":
5503
+ return "file-code";
5504
+ case "js":
5505
+ case "jsx":
5506
+ return "file-code";
5507
+ case "json":
5508
+ case "orb":
5509
+ return "file-json";
5510
+ case "css":
5511
+ case "scss":
5512
+ return "file-text";
5513
+ case "md":
5514
+ return "file-text";
5515
+ case "py":
5516
+ return "file-code";
5517
+ case "html":
5518
+ return "file-code";
5519
+ default:
5520
+ return "file";
5521
+ }
5522
+ }
5523
+ var TreeNodeItem = ({
5524
+ node,
5525
+ depth,
5526
+ indent,
5527
+ selectedPath,
5528
+ onFileSelect,
5529
+ defaultExpanded = false
5530
+ }) => {
5531
+ const [expanded, setExpanded] = useState(defaultExpanded || depth < 1);
5532
+ const isDir = node.type === "dir";
5533
+ const isSelected = node.path === selectedPath;
5534
+ const handleClick = useCallback(() => {
5535
+ if (isDir) {
5536
+ setExpanded((prev) => !prev);
5537
+ } else {
5538
+ onFileSelect?.(node.path);
5539
+ }
5540
+ }, [isDir, node.path, onFileSelect]);
5541
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
5542
+ /* @__PURE__ */ jsxs(
5543
+ Box,
5544
+ {
5545
+ className: `flex items-center gap-1.5 py-0.5 px-2 cursor-pointer rounded-sm transition-colors ${isSelected ? "bg-[var(--color-primary)] bg-opacity-15 text-[var(--color-primary)]" : "hover:bg-[var(--color-muted)] hover:bg-opacity-30"}`,
5546
+ style: { paddingLeft: depth * indent + 8 },
5547
+ onClick: handleClick,
5548
+ role: "treeitem",
5549
+ "aria-selected": isSelected,
5550
+ "aria-expanded": isDir ? expanded : void 0,
5551
+ children: [
5552
+ isDir ? /* @__PURE__ */ jsx(
5553
+ Icon,
5554
+ {
5555
+ name: expanded ? "chevron-down" : "chevron-right",
5556
+ size: "xs",
5557
+ className: "text-[var(--color-muted-foreground)] flex-shrink-0"
5558
+ }
5559
+ ) : /* @__PURE__ */ jsx(Box, { style: { width: 12, flexShrink: 0 } }),
5560
+ /* @__PURE__ */ jsx(
5561
+ Icon,
5562
+ {
5563
+ name: isDir ? expanded ? "folder-open" : "folder" : fileIcon(node.name),
5564
+ size: "xs",
5565
+ className: isDir ? "text-[var(--color-warning)]" : "text-[var(--color-muted-foreground)]"
5566
+ }
5567
+ ),
5568
+ /* @__PURE__ */ jsx(
5569
+ Typography,
5570
+ {
5571
+ variant: "caption",
5572
+ className: `truncate font-mono text-[11px] ${isSelected ? "font-semibold" : ""}`,
5573
+ children: node.name
5574
+ }
5575
+ ),
5576
+ !isDir && node.size !== void 0 && /* @__PURE__ */ jsx(Typography, { variant: "caption", className: "text-[var(--color-muted-foreground)] text-[9px] ml-auto flex-shrink-0", children: node.size < 1024 ? `${node.size}B` : `${Math.round(node.size / 1024)}KB` })
5577
+ ]
5578
+ }
5579
+ ),
5580
+ isDir && expanded && node.children && /* @__PURE__ */ jsx(Box, { role: "group", children: node.children.map((child) => /* @__PURE__ */ jsx(
5581
+ TreeNodeItem,
5582
+ {
5583
+ node: child,
5584
+ depth: depth + 1,
5585
+ indent,
5586
+ selectedPath,
5587
+ onFileSelect,
5588
+ defaultExpanded: depth < 0
5589
+ },
5590
+ child.path
5591
+ )) })
5592
+ ] });
5593
+ };
5594
+ var FileTree = ({
5595
+ tree,
5596
+ selectedPath,
5597
+ onFileSelect,
5598
+ className,
5599
+ indent = 16
5600
+ }) => {
5601
+ if (tree.length === 0) {
5602
+ return /* @__PURE__ */ jsx(Box, { className: `p-4 ${className ?? ""}`, children: /* @__PURE__ */ jsx(Typography, { variant: "caption", color: "muted", children: "No files" }) });
5603
+ }
5604
+ return /* @__PURE__ */ jsx(Box, { className: `py-1 overflow-y-auto ${className ?? ""}`, role: "tree", children: tree.map((node) => /* @__PURE__ */ jsx(
5605
+ TreeNodeItem,
5606
+ {
5607
+ node,
5608
+ depth: 0,
5609
+ indent,
5610
+ selectedPath,
5611
+ onFileSelect,
5612
+ defaultExpanded: true
5613
+ },
5614
+ node.path
5615
+ )) });
5616
+ };
5617
+ FileTree.displayName = "FileTree";
5497
5618
 
5498
5619
  // components/molecules/FormField.tsx
5499
5620
  init_cn();
@@ -7246,8 +7367,8 @@ var Menu = ({
7246
7367
  "bottom-start": "top-full left-0 mt-2",
7247
7368
  "bottom-end": "top-full right-0 mt-2"
7248
7369
  };
7249
- const triggerChild = React90__default.isValidElement(trigger) ? trigger : /* @__PURE__ */ jsx("span", { children: trigger });
7250
- const triggerElement = React90__default.cloneElement(
7370
+ const triggerChild = React91__default.isValidElement(trigger) ? trigger : /* @__PURE__ */ jsx("span", { children: trigger });
7371
+ const triggerElement = React91__default.cloneElement(
7251
7372
  triggerChild,
7252
7373
  {
7253
7374
  ref: triggerRef,
@@ -7780,8 +7901,8 @@ var Popover = ({
7780
7901
  onMouseEnter: handleOpen,
7781
7902
  onMouseLeave: handleClose
7782
7903
  };
7783
- const childElement = React90__default.isValidElement(children) ? children : /* @__PURE__ */ jsx("span", { children });
7784
- const triggerElement = React90__default.cloneElement(
7904
+ const childElement = React91__default.isValidElement(children) ? children : /* @__PURE__ */ jsx("span", { children });
7905
+ const triggerElement = React91__default.cloneElement(
7785
7906
  childElement,
7786
7907
  {
7787
7908
  ref: triggerRef,
@@ -8558,8 +8679,8 @@ var Tooltip = ({
8558
8679
  if (hideTimeoutRef.current) clearTimeout(hideTimeoutRef.current);
8559
8680
  };
8560
8681
  }, []);
8561
- const triggerElement = React90__default.isValidElement(children) ? children : /* @__PURE__ */ jsx("span", { children });
8562
- const trigger = React90__default.cloneElement(triggerElement, {
8682
+ const triggerElement = React91__default.isValidElement(children) ? children : /* @__PURE__ */ jsx("span", { children });
8683
+ const trigger = React91__default.cloneElement(triggerElement, {
8563
8684
  ref: triggerRef,
8564
8685
  onMouseEnter: handleMouseEnter,
8565
8686
  onMouseLeave: handleMouseLeave,
@@ -8816,7 +8937,7 @@ var WizardProgress = ({
8816
8937
  children: /* @__PURE__ */ jsx("div", { className: "flex items-center gap-2", children: steps.map((step, index) => {
8817
8938
  const isActive = index === currentStep;
8818
8939
  const isCompleted = index < currentStep;
8819
- return /* @__PURE__ */ jsxs(React90__default.Fragment, { children: [
8940
+ return /* @__PURE__ */ jsxs(React91__default.Fragment, { children: [
8820
8941
  /* @__PURE__ */ jsx(
8821
8942
  "button",
8822
8943
  {
@@ -8950,7 +9071,7 @@ var WizardNavigation = ({
8950
9071
  };
8951
9072
  WizardNavigation.displayName = "WizardNavigation";
8952
9073
  init_cn();
8953
- var MarkdownContent = React90__default.memo(
9074
+ var MarkdownContent = React91__default.memo(
8954
9075
  ({ content, direction, className }) => {
8955
9076
  const { t: _t } = useTranslate();
8956
9077
  const safeContent = typeof content === "string" ? content : String(content ?? "");
@@ -9156,7 +9277,7 @@ function computeFoldRegions(code) {
9156
9277
  }
9157
9278
  var LINE_PROPS_FN = (n) => ({ "data-line": String(n - 1) });
9158
9279
  var HIDDEN_LINE_NUMBERS = { display: "none" };
9159
- var CodeBlock = React90__default.memo(
9280
+ var CodeBlock = React91__default.memo(
9160
9281
  ({
9161
9282
  code: rawCode,
9162
9283
  language = "text",
@@ -10578,8 +10699,8 @@ function DPad({
10578
10699
  }) {
10579
10700
  const eventBus = useEventBus();
10580
10701
  const sizes = sizeMap15[size];
10581
- const [activeDirections, setActiveDirections] = React90.useState(/* @__PURE__ */ new Set());
10582
- const handlePress = React90.useCallback(
10702
+ const [activeDirections, setActiveDirections] = React91.useState(/* @__PURE__ */ new Set());
10703
+ const handlePress = React91.useCallback(
10583
10704
  (direction) => {
10584
10705
  setActiveDirections((prev) => new Set(prev).add(direction));
10585
10706
  if (directionEvent) eventBus.emit(`UI:${directionEvent}`, { direction, pressed: true });
@@ -10587,7 +10708,7 @@ function DPad({
10587
10708
  },
10588
10709
  [directionEvent, eventBus, onDirection]
10589
10710
  );
10590
- const handleRelease = React90.useCallback(
10711
+ const handleRelease = React91.useCallback(
10591
10712
  (direction) => {
10592
10713
  setActiveDirections((prev) => {
10593
10714
  const next = new Set(prev);
@@ -10649,8 +10770,8 @@ function ActionButtons({
10649
10770
  disabled
10650
10771
  }) {
10651
10772
  const eventBus = useEventBus();
10652
- const [activeButtons, setActiveButtons] = React90.useState(/* @__PURE__ */ new Set());
10653
- const handlePress = React90.useCallback(
10773
+ const [activeButtons, setActiveButtons] = React91.useState(/* @__PURE__ */ new Set());
10774
+ const handlePress = React91.useCallback(
10654
10775
  (id) => {
10655
10776
  setActiveButtons((prev) => new Set(prev).add(id));
10656
10777
  if (actionEvent) eventBus.emit(`UI:${actionEvent}`, { id, pressed: true });
@@ -10658,7 +10779,7 @@ function ActionButtons({
10658
10779
  },
10659
10780
  [actionEvent, eventBus, onAction]
10660
10781
  );
10661
- const handleRelease = React90.useCallback(
10782
+ const handleRelease = React91.useCallback(
10662
10783
  (id) => {
10663
10784
  setActiveButtons((prev) => {
10664
10785
  const next = new Set(prev);
@@ -10850,7 +10971,7 @@ function InventoryGrid({
10850
10971
  const eventBus = useEventBus();
10851
10972
  const slotCount = totalSlots ?? items.length;
10852
10973
  const emptySlotCount = Math.max(0, slotCount - items.length);
10853
- const handleSelect = React90.useCallback(
10974
+ const handleSelect = React91.useCallback(
10854
10975
  (id) => {
10855
10976
  onSelect?.(id);
10856
10977
  if (selectEvent) {
@@ -10982,7 +11103,7 @@ function CraftingRecipe({
10982
11103
  className
10983
11104
  }) {
10984
11105
  const eventBus = useEventBus();
10985
- const handleCraft = React90.useCallback(() => {
11106
+ const handleCraft = React91.useCallback(() => {
10986
11107
  onCraft?.();
10987
11108
  if (craftEvent) {
10988
11109
  eventBus.emit(craftEvent, { output: output.label });
@@ -10999,7 +11120,7 @@ function CraftingRecipe({
10999
11120
  children: [
11000
11121
  /* @__PURE__ */ jsx(HStack, { gap: "xs", className: "flex-wrap items-center", children: inputs.map((ingredient, index) => {
11001
11122
  const hasSufficient = ingredient.available >= ingredient.required;
11002
- return /* @__PURE__ */ jsxs(React90.Fragment, { children: [
11123
+ return /* @__PURE__ */ jsxs(React91.Fragment, { children: [
11003
11124
  /* @__PURE__ */ jsx(Box, { className: "relative", children: /* @__PURE__ */ jsx(
11004
11125
  ItemSlot,
11005
11126
  {
@@ -11108,15 +11229,15 @@ function GameCanvas2D({
11108
11229
  fps = 60,
11109
11230
  className
11110
11231
  }) {
11111
- const canvasRef = React90.useRef(null);
11112
- const rafRef = React90.useRef(0);
11113
- const frameRef = React90.useRef(0);
11114
- const lastTimeRef = React90.useRef(0);
11115
- const onDrawRef = React90.useRef(onDraw);
11232
+ const canvasRef = React91.useRef(null);
11233
+ const rafRef = React91.useRef(0);
11234
+ const frameRef = React91.useRef(0);
11235
+ const lastTimeRef = React91.useRef(0);
11236
+ const onDrawRef = React91.useRef(onDraw);
11116
11237
  onDrawRef.current = onDraw;
11117
- const onTickRef = React90.useRef(onTick);
11238
+ const onTickRef = React91.useRef(onTick);
11118
11239
  onTickRef.current = onTick;
11119
- React90.useEffect(() => {
11240
+ React91.useEffect(() => {
11120
11241
  const canvas = canvasRef.current;
11121
11242
  if (!canvas) return;
11122
11243
  const ctx = canvas.getContext("2d");
@@ -11383,7 +11504,7 @@ function TurnPanel({
11383
11504
  className
11384
11505
  }) {
11385
11506
  const eventBus = useEventBus();
11386
- const handleAction = React90.useCallback(
11507
+ const handleAction = React91.useCallback(
11387
11508
  (event) => {
11388
11509
  if (event) {
11389
11510
  eventBus.emit(event, { turn: currentTurn, phase, activeTeam });
@@ -11517,7 +11638,7 @@ function UnitCommandBar({
11517
11638
  className
11518
11639
  }) {
11519
11640
  const eventBus = useEventBus();
11520
- const handleCommand = React90.useCallback(
11641
+ const handleCommand = React91.useCallback(
11521
11642
  (event) => {
11522
11643
  if (event) {
11523
11644
  eventBus.emit(event, { unitId: selectedUnitId });
@@ -12072,7 +12193,7 @@ function GameMenu({
12072
12193
  } catch {
12073
12194
  }
12074
12195
  const eventBus = eventBusProp || eventBusFromHook;
12075
- const handleOptionClick = React90.useCallback(
12196
+ const handleOptionClick = React91.useCallback(
12076
12197
  (option) => {
12077
12198
  if (option.event && eventBus) {
12078
12199
  eventBus.emit(`UI:${option.event}`, { option });
@@ -12199,7 +12320,7 @@ function GameOverScreen({
12199
12320
  } catch {
12200
12321
  }
12201
12322
  const eventBus = eventBusProp || eventBusFromHook;
12202
- const handleActionClick = React90.useCallback(
12323
+ const handleActionClick = React91.useCallback(
12203
12324
  (action) => {
12204
12325
  if (action.event && eventBus) {
12205
12326
  eventBus.emit(`UI:${action.event}`, { action });
@@ -13858,7 +13979,7 @@ var MapViewImpl = lazy(async () => {
13858
13979
  shadowSize: [41, 41]
13859
13980
  });
13860
13981
  L.Marker.prototype.options.icon = defaultIcon;
13861
- const { useEffect: useEffect66, useRef: useRef64, useCallback: useCallback113, useState: useState98 } = React90__default;
13982
+ const { useEffect: useEffect66, useRef: useRef64, useCallback: useCallback114, useState: useState99 } = React91__default;
13862
13983
  const { Typography: Typography2 } = await Promise.resolve().then(() => (init_Typography(), Typography_exports));
13863
13984
  const { useEventBus: useEventBus2 } = await Promise.resolve().then(() => (init_useEventBus(), useEventBus_exports));
13864
13985
  function MapUpdater({ centerLat, centerLng, zoom }) {
@@ -13902,8 +14023,8 @@ var MapViewImpl = lazy(async () => {
13902
14023
  showAttribution = true
13903
14024
  }) {
13904
14025
  const eventBus = useEventBus2();
13905
- const [clickedPosition, setClickedPosition] = useState98(null);
13906
- const handleMapClick = useCallback113((lat, lng) => {
14026
+ const [clickedPosition, setClickedPosition] = useState99(null);
14027
+ const handleMapClick = useCallback114((lat, lng) => {
13907
14028
  if (showClickedPin) {
13908
14029
  setClickedPosition({ lat, lng });
13909
14030
  }
@@ -13912,7 +14033,7 @@ var MapViewImpl = lazy(async () => {
13912
14033
  eventBus.emit(`UI:${mapClickEvent}`, { latitude: lat, longitude: lng });
13913
14034
  }
13914
14035
  }, [onMapClick, mapClickEvent, eventBus, showClickedPin]);
13915
- const handleMarkerClick = useCallback113((marker) => {
14036
+ const handleMarkerClick = useCallback114((marker) => {
13916
14037
  onMarkerClick?.(marker);
13917
14038
  if (markerClickEvent) {
13918
14039
  eventBus.emit(`UI:${markerClickEvent}`, { ...marker });
@@ -15088,7 +15209,7 @@ var DataList = ({
15088
15209
  }) => {
15089
15210
  const eventBus = useEventBus();
15090
15211
  const { t } = useTranslate();
15091
- const [visibleCount, setVisibleCount] = React90__default.useState(pageSize || Infinity);
15212
+ const [visibleCount, setVisibleCount] = React91__default.useState(pageSize || Infinity);
15092
15213
  const fields = fieldsProp ?? columnsProp ?? [];
15093
15214
  const allData = Array.isArray(entity) ? entity : entity ? [entity] : [];
15094
15215
  const data = pageSize > 0 ? allData.slice(0, visibleCount) : allData;
@@ -15125,7 +15246,7 @@ var DataList = ({
15125
15246
  const items2 = data.map((item) => item);
15126
15247
  const groups2 = groupBy ? groupData(items2, groupBy) : [{ label: "", items: items2 }];
15127
15248
  const contentField = titleField?.name ?? fields[0]?.name ?? "";
15128
- return /* @__PURE__ */ jsx(VStack, { gap: "sm", className: cn("py-2", className), children: groups2.map((group, gi) => /* @__PURE__ */ jsxs(React90__default.Fragment, { children: [
15249
+ return /* @__PURE__ */ jsx(VStack, { gap: "sm", className: cn("py-2", className), children: groups2.map((group, gi) => /* @__PURE__ */ jsxs(React91__default.Fragment, { children: [
15129
15250
  group.label && /* @__PURE__ */ jsx(Divider, { label: group.label, className: "my-2" }),
15130
15251
  group.items.map((itemData, index) => {
15131
15252
  const id = itemData.id || `${gi}-${index}`;
@@ -15328,7 +15449,7 @@ var DataList = ({
15328
15449
  className
15329
15450
  ),
15330
15451
  children: [
15331
- groups.map((group, gi) => /* @__PURE__ */ jsxs(React90__default.Fragment, { children: [
15452
+ groups.map((group, gi) => /* @__PURE__ */ jsxs(React91__default.Fragment, { children: [
15332
15453
  group.label && /* @__PURE__ */ jsx(Divider, { label: group.label, className: gi > 0 ? "mt-4" : "mt-0" }),
15333
15454
  group.items.map(
15334
15455
  (itemData, index) => renderItem(itemData, index, gi === groups.length - 1 && index === group.items.length - 1)
@@ -17138,7 +17259,7 @@ var StepFlow = ({
17138
17259
  className
17139
17260
  }) => {
17140
17261
  if (orientation === "vertical") {
17141
- 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: [
17262
+ return /* @__PURE__ */ jsx(VStack, { gap: "none", className: cn("w-full", className), children: steps.map((step, index) => /* @__PURE__ */ jsx(React91__default.Fragment, { children: /* @__PURE__ */ jsxs(HStack, { gap: "md", align: "start", className: "w-full", children: [
17142
17263
  /* @__PURE__ */ jsxs(VStack, { gap: "none", align: "center", children: [
17143
17264
  /* @__PURE__ */ jsx(StepCircle, { step, index }),
17144
17265
  showConnectors && index < steps.length - 1 && /* @__PURE__ */ jsx(Box, { className: "w-px h-8 bg-border" })
@@ -17149,7 +17270,7 @@ var StepFlow = ({
17149
17270
  ] })
17150
17271
  ] }) }, index)) });
17151
17272
  }
17152
- 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: [
17273
+ 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(React91__default.Fragment, { children: [
17153
17274
  /* @__PURE__ */ jsxs(VStack, { gap: "sm", align: "center", className: "flex-1 w-full md:w-auto", children: [
17154
17275
  /* @__PURE__ */ jsx(StepCircle, { step, index }),
17155
17276
  /* @__PURE__ */ jsx(Typography, { variant: "h4", className: "text-center", children: step.title }),
@@ -18349,7 +18470,7 @@ var StatCard = ({
18349
18470
  const labelToUse = propLabel ?? propTitle;
18350
18471
  const eventBus = useEventBus();
18351
18472
  const { t } = useTranslate();
18352
- const handleActionClick = React90__default.useCallback(() => {
18473
+ const handleActionClick = React91__default.useCallback(() => {
18353
18474
  if (action?.event) {
18354
18475
  eventBus.emit(`UI:${action.event}`, {});
18355
18476
  }
@@ -18360,7 +18481,7 @@ var StatCard = ({
18360
18481
  const data = Array.isArray(entity) ? entity : entity ? [entity] : [];
18361
18482
  const isLoading = externalLoading ?? false;
18362
18483
  const error = externalError;
18363
- const computeMetricValue = React90__default.useCallback(
18484
+ const computeMetricValue = React91__default.useCallback(
18364
18485
  (metric, items) => {
18365
18486
  if (metric.value !== void 0) {
18366
18487
  return metric.value;
@@ -18399,7 +18520,7 @@ var StatCard = ({
18399
18520
  },
18400
18521
  []
18401
18522
  );
18402
- const schemaStats = React90__default.useMemo(() => {
18523
+ const schemaStats = React91__default.useMemo(() => {
18403
18524
  if (!metrics || metrics.length === 0) return null;
18404
18525
  return metrics.map((metric) => ({
18405
18526
  label: metric.label,
@@ -18407,7 +18528,7 @@ var StatCard = ({
18407
18528
  format: metric.format
18408
18529
  }));
18409
18530
  }, [metrics, data, computeMetricValue]);
18410
- const calculatedTrend = React90__default.useMemo(() => {
18531
+ const calculatedTrend = React91__default.useMemo(() => {
18411
18532
  if (manualTrend !== void 0) return manualTrend;
18412
18533
  if (previousValue === void 0 || currentValue === void 0)
18413
18534
  return void 0;
@@ -18576,7 +18697,7 @@ var PageHeader = ({
18576
18697
  info: "bg-info/10 text-info"
18577
18698
  };
18578
18699
  return /* @__PURE__ */ jsxs(Box, { className: cn("mb-6", className), children: [
18579
- 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: [
18700
+ 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(React91__default.Fragment, { children: [
18580
18701
  idx > 0 && /* @__PURE__ */ jsx(Typography, { variant: "small", color: "muted", children: "/" }),
18581
18702
  crumb.href ? /* @__PURE__ */ jsx(
18582
18703
  "a",
@@ -19109,7 +19230,7 @@ var FormSection = ({
19109
19230
  columns = 1,
19110
19231
  className
19111
19232
  }) => {
19112
- const [collapsed, setCollapsed] = React90__default.useState(defaultCollapsed);
19233
+ const [collapsed, setCollapsed] = React91__default.useState(defaultCollapsed);
19113
19234
  const { t } = useTranslate();
19114
19235
  const eventBus = useEventBus();
19115
19236
  const gridClass = {
@@ -19117,7 +19238,7 @@ var FormSection = ({
19117
19238
  2: "grid-cols-1 md:grid-cols-2",
19118
19239
  3: "grid-cols-1 md:grid-cols-2 lg:grid-cols-3"
19119
19240
  }[columns];
19120
- React90__default.useCallback(() => {
19241
+ React91__default.useCallback(() => {
19121
19242
  if (collapsible) {
19122
19243
  setCollapsed((prev) => !prev);
19123
19244
  eventBus.emit("UI:TOGGLE_COLLAPSE", { collapsed: !collapsed });
@@ -19334,7 +19455,7 @@ var Form = ({
19334
19455
  const normalizedInitialData = initialData ?? {};
19335
19456
  const resolvedEntity = entity && typeof entity === "object" && !Array.isArray(entity) ? entity : void 0;
19336
19457
  const entityName = typeof entity === "string" ? entity : resolvedEntity?.name;
19337
- const entityDerivedFields = React90__default.useMemo(() => {
19458
+ const entityDerivedFields = React91__default.useMemo(() => {
19338
19459
  if (fields && fields.length > 0) return void 0;
19339
19460
  if (!resolvedEntity) return void 0;
19340
19461
  return resolvedEntity.fields.map(
@@ -19353,14 +19474,14 @@ var Form = ({
19353
19474
  const conditionalFields = typeof conditionalFieldsRaw === "boolean" ? {} : conditionalFieldsRaw;
19354
19475
  const hiddenCalculations = typeof hiddenCalculationsRaw === "boolean" ? [] : hiddenCalculationsRaw;
19355
19476
  const violationTriggers = typeof violationTriggersRaw === "boolean" ? [] : violationTriggersRaw;
19356
- const [formData, setFormData] = React90__default.useState(
19477
+ const [formData, setFormData] = React91__default.useState(
19357
19478
  normalizedInitialData
19358
19479
  );
19359
- const [collapsedSections, setCollapsedSections] = React90__default.useState(
19480
+ const [collapsedSections, setCollapsedSections] = React91__default.useState(
19360
19481
  /* @__PURE__ */ new Set()
19361
19482
  );
19362
19483
  const shouldShowCancel = showCancel ?? (fields && fields.length > 0);
19363
- const evalContext = React90__default.useMemo(
19484
+ const evalContext = React91__default.useMemo(
19364
19485
  () => ({
19365
19486
  formValues: formData,
19366
19487
  globalVariables: externalContext?.globalVariables ?? {},
@@ -19369,13 +19490,13 @@ var Form = ({
19369
19490
  }),
19370
19491
  [formData, externalContext]
19371
19492
  );
19372
- React90__default.useEffect(() => {
19493
+ React91__default.useEffect(() => {
19373
19494
  const data = initialData;
19374
19495
  if (data && Object.keys(data).length > 0) {
19375
19496
  setFormData(data);
19376
19497
  }
19377
19498
  }, [initialData]);
19378
- const processCalculations = React90__default.useCallback(
19499
+ const processCalculations = React91__default.useCallback(
19379
19500
  (changedFieldId, newFormData) => {
19380
19501
  if (!hiddenCalculations.length) return;
19381
19502
  const context = {
@@ -19400,7 +19521,7 @@ var Form = ({
19400
19521
  },
19401
19522
  [hiddenCalculations, externalContext, eventBus]
19402
19523
  );
19403
- const checkViolations = React90__default.useCallback(
19524
+ const checkViolations = React91__default.useCallback(
19404
19525
  (changedFieldId, newFormData) => {
19405
19526
  if (!violationTriggers.length) return;
19406
19527
  const context = {
@@ -19437,7 +19558,7 @@ var Form = ({
19437
19558
  processCalculations(name, newFormData);
19438
19559
  checkViolations(name, newFormData);
19439
19560
  };
19440
- const isFieldVisible = React90__default.useCallback(
19561
+ const isFieldVisible = React91__default.useCallback(
19441
19562
  (fieldName) => {
19442
19563
  const condition = conditionalFields[fieldName];
19443
19564
  if (!condition) return true;
@@ -19445,7 +19566,7 @@ var Form = ({
19445
19566
  },
19446
19567
  [conditionalFields, evalContext]
19447
19568
  );
19448
- const isSectionVisible = React90__default.useCallback(
19569
+ const isSectionVisible = React91__default.useCallback(
19449
19570
  (section) => {
19450
19571
  if (!section.condition) return true;
19451
19572
  return Boolean(evaluateFormExpression(section.condition, evalContext));
@@ -19477,7 +19598,7 @@ var Form = ({
19477
19598
  eventBus.emit(`UI:${onCancel}`);
19478
19599
  }
19479
19600
  };
19480
- const renderField = React90__default.useCallback(
19601
+ const renderField = React91__default.useCallback(
19481
19602
  (field) => {
19482
19603
  const fieldName = field.name || field.field;
19483
19604
  if (!fieldName) return null;
@@ -19498,7 +19619,7 @@ var Form = ({
19498
19619
  [formData, isFieldVisible, relationsData, relationsLoading, isLoading]
19499
19620
  );
19500
19621
  const effectiveFields = entityDerivedFields ?? fields;
19501
- const normalizedFields = React90__default.useMemo(() => {
19622
+ const normalizedFields = React91__default.useMemo(() => {
19502
19623
  if (!effectiveFields || effectiveFields.length === 0) return [];
19503
19624
  return effectiveFields.map((field) => {
19504
19625
  if (typeof field === "string") {
@@ -19520,7 +19641,7 @@ var Form = ({
19520
19641
  return field;
19521
19642
  });
19522
19643
  }, [effectiveFields, resolvedEntity]);
19523
- const schemaFields = React90__default.useMemo(() => {
19644
+ const schemaFields = React91__default.useMemo(() => {
19524
19645
  if (normalizedFields.length === 0) return null;
19525
19646
  if (isDebugEnabled()) {
19526
19647
  debugGroup(`Form: ${entityName || "unknown"}`);
@@ -19530,7 +19651,7 @@ var Form = ({
19530
19651
  }
19531
19652
  return normalizedFields.map(renderField).filter(Boolean);
19532
19653
  }, [normalizedFields, renderField, entityName, conditionalFields]);
19533
- const sectionElements = React90__default.useMemo(() => {
19654
+ const sectionElements = React91__default.useMemo(() => {
19534
19655
  if (!sections || sections.length === 0) return null;
19535
19656
  return sections.map((section) => {
19536
19657
  if (!isSectionVisible(section)) {
@@ -20675,7 +20796,7 @@ var List = ({
20675
20796
  if (entity && typeof entity === "object" && "id" in entity) return [entity];
20676
20797
  return [];
20677
20798
  }, [entity]);
20678
- const getItemActions = React90__default.useCallback(
20799
+ const getItemActions = React91__default.useCallback(
20679
20800
  (item) => {
20680
20801
  if (!itemActions) return [];
20681
20802
  if (typeof itemActions === "function") {
@@ -21450,7 +21571,7 @@ var WizardContainer = ({
21450
21571
  const isCompleted = index < currentStep;
21451
21572
  const stepKey = step.id ?? step.tabId ?? `step-${index}`;
21452
21573
  const stepTitle = step.title ?? step.name ?? `Step ${index + 1}`;
21453
- return /* @__PURE__ */ jsxs(React90__default.Fragment, { children: [
21574
+ return /* @__PURE__ */ jsxs(React91__default.Fragment, { children: [
21454
21575
  /* @__PURE__ */ jsx(
21455
21576
  Button,
21456
21577
  {
@@ -22679,7 +22800,7 @@ var StateMachineView = ({
22679
22800
  style: { top: title ? 30 : 0 },
22680
22801
  children: [
22681
22802
  entity && /* @__PURE__ */ jsx(EntityBox, { entity, config }),
22682
- states.map((state) => renderStateNode ? /* @__PURE__ */ jsx(React90__default.Fragment, { children: renderStateNode(state, config) }, state.id) : /* @__PURE__ */ jsx(
22803
+ states.map((state) => renderStateNode ? /* @__PURE__ */ jsx(React91__default.Fragment, { children: renderStateNode(state, config) }, state.id) : /* @__PURE__ */ jsx(
22683
22804
  StateNode,
22684
22805
  {
22685
22806
  state,
@@ -27190,7 +27311,7 @@ function LinearView({
27190
27311
  /* @__PURE__ */ jsx(HStack, { className: "flex-wrap items-center", gap: "xs", children: trait.states.map((state, i) => {
27191
27312
  const isDone = i < currentIdx;
27192
27313
  const isCurrent = i === currentIdx;
27193
- return /* @__PURE__ */ jsxs(React90__default.Fragment, { children: [
27314
+ return /* @__PURE__ */ jsxs(React91__default.Fragment, { children: [
27194
27315
  i > 0 && /* @__PURE__ */ jsx(
27195
27316
  Typography,
27196
27317
  {
@@ -27857,7 +27978,7 @@ function SequenceBar({
27857
27978
  onSlotRemove(index);
27858
27979
  }, [onSlotRemove, playing]);
27859
27980
  const paddedSlots = Array.from({ length: maxSlots }, (_, i) => slots[i]);
27860
- return /* @__PURE__ */ jsx(HStack, { className: cn("items-center", className), gap: "sm", children: paddedSlots.map((slot, i) => /* @__PURE__ */ jsxs(React90__default.Fragment, { children: [
27981
+ return /* @__PURE__ */ jsx(HStack, { className: cn("items-center", className), gap: "sm", children: paddedSlots.map((slot, i) => /* @__PURE__ */ jsxs(React91__default.Fragment, { children: [
27861
27982
  i > 0 && /* @__PURE__ */ jsx(
27862
27983
  Typography,
27863
27984
  {
@@ -30382,7 +30503,7 @@ function InputPattern({
30382
30503
  className
30383
30504
  }) {
30384
30505
  const { emit } = useEventBus();
30385
- const [localValue, setLocalValue] = React90__default.useState(value);
30506
+ const [localValue, setLocalValue] = React91__default.useState(value);
30386
30507
  const handleChange = (e) => {
30387
30508
  setLocalValue(e.target.value);
30388
30509
  if (onChange) {
@@ -30419,7 +30540,7 @@ function TextareaPattern({
30419
30540
  className
30420
30541
  }) {
30421
30542
  const { emit } = useEventBus();
30422
- const [localValue, setLocalValue] = React90__default.useState(value);
30543
+ const [localValue, setLocalValue] = React91__default.useState(value);
30423
30544
  const handleChange = (e) => {
30424
30545
  setLocalValue(e.target.value);
30425
30546
  if (onChange) {
@@ -30450,7 +30571,7 @@ function SelectPattern({
30450
30571
  className
30451
30572
  }) {
30452
30573
  const { emit } = useEventBus();
30453
- const [localValue, setLocalValue] = React90__default.useState(value);
30574
+ const [localValue, setLocalValue] = React91__default.useState(value);
30454
30575
  const handleChange = (e) => {
30455
30576
  setLocalValue(e.target.value);
30456
30577
  if (onChange) {
@@ -30479,7 +30600,7 @@ function CheckboxPattern({
30479
30600
  className
30480
30601
  }) {
30481
30602
  const { emit } = useEventBus();
30482
- const [localChecked, setLocalChecked] = React90__default.useState(checked);
30603
+ const [localChecked, setLocalChecked] = React91__default.useState(checked);
30483
30604
  const handleChange = (e) => {
30484
30605
  setLocalChecked(e.target.checked);
30485
30606
  if (onChange) {
@@ -32391,7 +32512,7 @@ var DocumentViewer = ({
32391
32512
  DocumentViewer.displayName = "DocumentViewer";
32392
32513
  init_useEventBus();
32393
32514
  function extractTitle(children) {
32394
- if (!React90__default.isValidElement(children)) return void 0;
32515
+ if (!React91__default.isValidElement(children)) return void 0;
32395
32516
  const props = children.props;
32396
32517
  if (typeof props.title === "string") {
32397
32518
  return props.title;
@@ -33009,7 +33130,7 @@ var MediaGallery = ({
33009
33130
  [selectable, selectedItems, selectionEvent, eventBus]
33010
33131
  );
33011
33132
  const entityData = Array.isArray(entity) ? entity : [];
33012
- const items = React90__default.useMemo(() => {
33133
+ const items = React91__default.useMemo(() => {
33013
33134
  if (propItems) return propItems;
33014
33135
  if (entityData.length === 0) return [];
33015
33136
  return entityData.map((record, idx) => ({
@@ -33172,7 +33293,7 @@ var MediaGallery = ({
33172
33293
  MediaGallery.displayName = "MediaGallery";
33173
33294
  init_useEventBus();
33174
33295
  function extractTitle2(children) {
33175
- if (!React90__default.isValidElement(children)) return void 0;
33296
+ if (!React91__default.isValidElement(children)) return void 0;
33176
33297
  const props = children.props;
33177
33298
  if (typeof props.title === "string") {
33178
33299
  return props.title;
@@ -33261,7 +33382,7 @@ function subscribeToDebugEvents(listener) {
33261
33382
 
33262
33383
  // components/organisms/debug/hooks/useDebugData.ts
33263
33384
  function useDebugData() {
33264
- const [data, setData] = React90.useState(() => ({
33385
+ const [data, setData] = React91.useState(() => ({
33265
33386
  traits: [],
33266
33387
  ticks: [],
33267
33388
  guards: [],
@@ -33275,7 +33396,7 @@ function useDebugData() {
33275
33396
  },
33276
33397
  lastUpdate: Date.now()
33277
33398
  }));
33278
- React90.useEffect(() => {
33399
+ React91.useEffect(() => {
33279
33400
  const updateData = () => {
33280
33401
  setData({
33281
33402
  traits: getAllTraits(),
@@ -33372,12 +33493,12 @@ function layoutGraph(states, transitions, initialState, width, height) {
33372
33493
  return positions;
33373
33494
  }
33374
33495
  function WalkMinimap() {
33375
- const [walkStep, setWalkStep] = React90.useState(null);
33376
- const [traits2, setTraits] = React90.useState([]);
33377
- const [coveredEdges, setCoveredEdges] = React90.useState([]);
33378
- const [completedTraits, setCompletedTraits] = React90.useState(/* @__PURE__ */ new Set());
33379
- const prevTraitRef = React90.useRef(null);
33380
- React90.useEffect(() => {
33496
+ const [walkStep, setWalkStep] = React91.useState(null);
33497
+ const [traits2, setTraits] = React91.useState([]);
33498
+ const [coveredEdges, setCoveredEdges] = React91.useState([]);
33499
+ const [completedTraits, setCompletedTraits] = React91.useState(/* @__PURE__ */ new Set());
33500
+ const prevTraitRef = React91.useRef(null);
33501
+ React91.useEffect(() => {
33381
33502
  const interval = setInterval(() => {
33382
33503
  const w = window;
33383
33504
  const step = w.__orbitalWalkStep;
@@ -33806,15 +33927,15 @@ var TYPE_BADGES = {
33806
33927
  state: { variant: "danger", icon: "\u{1F4CA}" }
33807
33928
  };
33808
33929
  function EventFlowTab({ events: events2 }) {
33809
- const [filter, setFilter] = React90.useState("all");
33810
- const containerRef = React90.useRef(null);
33811
- const [autoScroll, setAutoScroll] = React90.useState(true);
33812
- React90.useEffect(() => {
33930
+ const [filter, setFilter] = React91.useState("all");
33931
+ const containerRef = React91.useRef(null);
33932
+ const [autoScroll, setAutoScroll] = React91.useState(true);
33933
+ React91.useEffect(() => {
33813
33934
  if (autoScroll && containerRef.current) {
33814
33935
  containerRef.current.scrollTop = containerRef.current.scrollHeight;
33815
33936
  }
33816
33937
  }, [events2.length, autoScroll]);
33817
- const filteredEvents = React90.useMemo(() => {
33938
+ const filteredEvents = React91.useMemo(() => {
33818
33939
  if (filter === "all") return events2;
33819
33940
  return events2.filter((e) => e.type === filter);
33820
33941
  }, [events2, filter]);
@@ -33914,7 +34035,7 @@ function EventFlowTab({ events: events2 }) {
33914
34035
  EventFlowTab.displayName = "EventFlowTab";
33915
34036
  init_Typography();
33916
34037
  function GuardsPanel({ guards }) {
33917
- const [filter, setFilter] = React90.useState("all");
34038
+ const [filter, setFilter] = React91.useState("all");
33918
34039
  if (guards.length === 0) {
33919
34040
  return /* @__PURE__ */ jsx(
33920
34041
  EmptyState,
@@ -33927,7 +34048,7 @@ function GuardsPanel({ guards }) {
33927
34048
  }
33928
34049
  const passedCount = guards.filter((g) => g.result).length;
33929
34050
  const failedCount = guards.length - passedCount;
33930
- const filteredGuards = React90.useMemo(() => {
34051
+ const filteredGuards = React91.useMemo(() => {
33931
34052
  if (filter === "all") return guards;
33932
34053
  if (filter === "passed") return guards.filter((g) => g.result);
33933
34054
  return guards.filter((g) => !g.result);
@@ -34075,10 +34196,10 @@ function EffectBadge({ effect }) {
34075
34196
  ] });
34076
34197
  }
34077
34198
  function TransitionTimeline({ transitions }) {
34078
- const containerRef = React90.useRef(null);
34079
- const [autoScroll, setAutoScroll] = React90.useState(true);
34080
- const [expandedId, setExpandedId] = React90.useState(null);
34081
- React90.useEffect(() => {
34199
+ const containerRef = React91.useRef(null);
34200
+ const [autoScroll, setAutoScroll] = React91.useState(true);
34201
+ const [expandedId, setExpandedId] = React91.useState(null);
34202
+ React91.useEffect(() => {
34082
34203
  if (autoScroll && containerRef.current) {
34083
34204
  containerRef.current.scrollTop = containerRef.current.scrollHeight;
34084
34205
  }
@@ -34344,9 +34465,9 @@ function getAllEvents(traits2) {
34344
34465
  }
34345
34466
  function EventDispatcherTab({ traits: traits2, schema }) {
34346
34467
  const eventBus = useEventBus();
34347
- const [log3, setLog] = React90.useState([]);
34348
- const prevStatesRef = React90.useRef(/* @__PURE__ */ new Map());
34349
- React90.useEffect(() => {
34468
+ const [log3, setLog] = React91.useState([]);
34469
+ const prevStatesRef = React91.useRef(/* @__PURE__ */ new Map());
34470
+ React91.useEffect(() => {
34350
34471
  for (const trait of traits2) {
34351
34472
  const prev = prevStatesRef.current.get(trait.id);
34352
34473
  if (prev && prev !== trait.currentState) {
@@ -34499,9 +34620,9 @@ function VerifyModePanel({
34499
34620
  serverCount,
34500
34621
  localCount
34501
34622
  }) {
34502
- const scrollRef = React90.useRef(null);
34503
- const prevCountRef = React90.useRef(0);
34504
- React90.useEffect(() => {
34623
+ const scrollRef = React91.useRef(null);
34624
+ const prevCountRef = React91.useRef(0);
34625
+ React91.useEffect(() => {
34505
34626
  if (transitions.length > prevCountRef.current && scrollRef.current) {
34506
34627
  scrollRef.current.scrollTop = scrollRef.current.scrollHeight;
34507
34628
  }
@@ -34549,10 +34670,10 @@ function RuntimeDebugger({
34549
34670
  defaultTab,
34550
34671
  schema
34551
34672
  }) {
34552
- const [isCollapsed, setIsCollapsed] = React90.useState(mode === "verify" ? true : defaultCollapsed);
34553
- const [isVisible, setIsVisible] = React90.useState(mode === "inline" || mode === "verify" || isDebugEnabled2());
34673
+ const [isCollapsed, setIsCollapsed] = React91.useState(mode === "verify" ? true : defaultCollapsed);
34674
+ const [isVisible, setIsVisible] = React91.useState(mode === "inline" || mode === "verify" || isDebugEnabled2());
34554
34675
  const debugData = useDebugData();
34555
- React90.useEffect(() => {
34676
+ React91.useEffect(() => {
34556
34677
  if (mode === "inline") return;
34557
34678
  return onDebugToggle((enabled) => {
34558
34679
  setIsVisible(enabled);
@@ -34561,7 +34682,7 @@ function RuntimeDebugger({
34561
34682
  }
34562
34683
  });
34563
34684
  }, [mode]);
34564
- React90.useEffect(() => {
34685
+ React91.useEffect(() => {
34565
34686
  if (mode === "inline") return;
34566
34687
  const handleKeyDown = (e) => {
34567
34688
  if (e.key === "`" && isVisible) {
@@ -34982,7 +35103,7 @@ var Timeline = ({
34982
35103
  }) => {
34983
35104
  const { t } = useTranslate();
34984
35105
  const entityData = Array.isArray(entity) ? entity : [];
34985
- const items = React90__default.useMemo(() => {
35106
+ const items = React91__default.useMemo(() => {
34986
35107
  if (propItems) return propItems;
34987
35108
  if (entityData.length === 0) return [];
34988
35109
  return entityData.map((record, idx) => {
@@ -35085,7 +35206,7 @@ var Timeline = ({
35085
35206
  Timeline.displayName = "Timeline";
35086
35207
  init_useEventBus();
35087
35208
  function extractToastProps(children) {
35088
- if (!React90__default.isValidElement(children)) {
35209
+ if (!React91__default.isValidElement(children)) {
35089
35210
  if (typeof children === "string") {
35090
35211
  return { message: children };
35091
35212
  }
@@ -35116,7 +35237,7 @@ var ToastSlot = ({
35116
35237
  eventBus.emit("UI:CLOSE");
35117
35238
  };
35118
35239
  if (!isVisible) return null;
35119
- const isCustomContent = React90__default.isValidElement(children) && !message;
35240
+ const isCustomContent = React91__default.isValidElement(children) && !message;
35120
35241
  return /* @__PURE__ */ jsx(Box, { className: "fixed bottom-4 right-4 z-50", children: isCustomContent ? children : /* @__PURE__ */ jsx(
35121
35242
  Toast,
35122
35243
  {
@@ -35161,12 +35282,12 @@ WorldMapTemplate.displayName = "WorldMapTemplate";
35161
35282
 
35162
35283
  // components/organisms/component-registry.generated.ts
35163
35284
  function lazyThree(name, loader) {
35164
- const Lazy = React90__default.lazy(() => loader().then((m) => ({ default: m[name] })));
35285
+ const Lazy = React91__default.lazy(() => loader().then((m) => ({ default: m[name] })));
35165
35286
  function ThreeWrapper(props) {
35166
- return React90__default.createElement(
35167
- React90__default.Suspense,
35287
+ return React91__default.createElement(
35288
+ React91__default.Suspense,
35168
35289
  { fallback: null },
35169
- React90__default.createElement(Lazy, props)
35290
+ React91__default.createElement(Lazy, props)
35170
35291
  );
35171
35292
  }
35172
35293
  ThreeWrapper.displayName = `Lazy(${name})`;
@@ -35454,7 +35575,7 @@ function SuspenseConfigProvider({
35454
35575
  config,
35455
35576
  children
35456
35577
  }) {
35457
- return React90__default.createElement(
35578
+ return React91__default.createElement(
35458
35579
  SuspenseConfigContext.Provider,
35459
35580
  { value: config },
35460
35581
  children
@@ -37953,7 +38074,7 @@ function EntityDataProvider({
37953
38074
  adapter,
37954
38075
  children
37955
38076
  }) {
37956
- return React90__default.createElement(
38077
+ return React91__default.createElement(
37957
38078
  EntityDataContext.Provider,
37958
38079
  { value: adapter },
37959
38080
  children
@@ -38877,4 +38998,4 @@ function useGitHubBranches(owner, repo, enabled = true) {
38877
38998
  });
38878
38999
  }
38879
39000
 
38880
- export { ALL_PRESETS, ALMADAR_DND_MIME, 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, useDraggable, useDropZone, 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 };
39001
+ export { ALL_PRESETS, ALMADAR_DND_MIME, 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, FileTree, 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, useDraggable, useDropZone, 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 };