@almadar/ui 4.6.6 → 4.6.10

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 React110 from 'react';
4
- import React110__default, { useContext, useRef, useEffect, useCallback, createContext, useState, Suspense, useMemo, lazy, useSyncExternalStore, useLayoutEffect, useId } from 'react';
3
+ import * as React111 from 'react';
4
+ import React111__default, { useContext, useRef, useEffect, useCallback, createContext, useState, Suspense, useMemo, lazy, useSyncExternalStore, useLayoutEffect, useId } from 'react';
5
5
  import { EventBusContext, SelectionContext } from '@almadar/ui/providers';
6
6
  import * as LucideIcons from 'lucide-react';
7
7
  import { Loader2, X, AlertTriangle, Info, AlertCircle, CheckCircle, ChevronDown, List, Printer, ChevronRight, ChevronLeft, XCircle, Wrench, RotateCcw, Send, Code, FileText, WrapText, Check, Copy, Zap, Sword, Move, Heart, Shield, Trash2, Settings, Menu as Menu$1, Search, Bell, LogOut, ChevronUp, MoreHorizontal, Bug, ZoomOut, ZoomIn, Download, Pause, Play, Package, Calendar, Pencil, Eye, Image as Image$1, Upload, ArrowRight, ArrowLeft, Eraser, SkipForward, TrendingUp, TrendingDown, Minus, ArrowUp, ArrowDown, MoreVertical, Circle, Clock, CheckCircle2, HelpCircle, FileQuestion, Inbox, Plus, User, Filter, Star, FileWarning, Tag, DollarSign, Sun, Moon } from 'lucide-react';
@@ -338,7 +338,7 @@ function resolveIconProp(value, sizeClass) {
338
338
  const IconComp = value;
339
339
  return /* @__PURE__ */ jsx(IconComp, { className: sizeClass });
340
340
  }
341
- if (React110__default.isValidElement(value)) {
341
+ if (React111__default.isValidElement(value)) {
342
342
  return value;
343
343
  }
344
344
  if (typeof value === "object" && value !== null && "render" in value) {
@@ -414,7 +414,7 @@ var init_Button = __esm({
414
414
  md: "h-4 w-4",
415
415
  lg: "h-5 w-5"
416
416
  };
417
- Button = React110__default.forwardRef(
417
+ Button = React111__default.forwardRef(
418
418
  ({
419
419
  className,
420
420
  variant = "primary",
@@ -479,7 +479,7 @@ var Input;
479
479
  var init_Input = __esm({
480
480
  "components/atoms/Input.tsx"() {
481
481
  init_cn();
482
- Input = React110__default.forwardRef(
482
+ Input = React111__default.forwardRef(
483
483
  ({
484
484
  className,
485
485
  inputType,
@@ -597,7 +597,7 @@ var Label;
597
597
  var init_Label = __esm({
598
598
  "components/atoms/Label.tsx"() {
599
599
  init_cn();
600
- Label = React110__default.forwardRef(
600
+ Label = React111__default.forwardRef(
601
601
  ({ className, required, children, ...props }, ref) => {
602
602
  return /* @__PURE__ */ jsxs(
603
603
  "label",
@@ -623,7 +623,7 @@ var Textarea;
623
623
  var init_Textarea = __esm({
624
624
  "components/atoms/Textarea.tsx"() {
625
625
  init_cn();
626
- Textarea = React110__default.forwardRef(
626
+ Textarea = React111__default.forwardRef(
627
627
  ({ className, error, ...props }, ref) => {
628
628
  return /* @__PURE__ */ jsx(
629
629
  "textarea",
@@ -652,7 +652,7 @@ var Select;
652
652
  var init_Select = __esm({
653
653
  "components/atoms/Select.tsx"() {
654
654
  init_cn();
655
- Select = React110__default.forwardRef(
655
+ Select = React111__default.forwardRef(
656
656
  ({ className, options, placeholder, error, ...props }, ref) => {
657
657
  return /* @__PURE__ */ jsxs("div", { className: "relative", children: [
658
658
  /* @__PURE__ */ jsxs(
@@ -694,7 +694,7 @@ var Checkbox;
694
694
  var init_Checkbox = __esm({
695
695
  "components/atoms/Checkbox.tsx"() {
696
696
  init_cn();
697
- Checkbox = React110__default.forwardRef(
697
+ Checkbox = React111__default.forwardRef(
698
698
  ({ className, label, id, ...props }, ref) => {
699
699
  const inputId = id || `checkbox-${Math.random().toString(36).substr(2, 9)}`;
700
700
  return /* @__PURE__ */ jsxs("div", { className: "flex items-center", children: [
@@ -776,7 +776,7 @@ var init_Card = __esm({
776
776
  md: "shadow",
777
777
  lg: "shadow-lg"
778
778
  };
779
- Card = React110__default.forwardRef(
779
+ Card = React111__default.forwardRef(
780
780
  ({
781
781
  className,
782
782
  variant = "bordered",
@@ -812,9 +812,9 @@ var init_Card = __esm({
812
812
  }
813
813
  );
814
814
  Card.displayName = "Card";
815
- CardHeader = React110__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn("mb-4", className), ...props }));
815
+ CardHeader = React111__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn("mb-4", className), ...props }));
816
816
  CardHeader.displayName = "CardHeader";
817
- CardTitle = React110__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
817
+ CardTitle = React111__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
818
818
  "h3",
819
819
  {
820
820
  ref,
@@ -827,11 +827,11 @@ var init_Card = __esm({
827
827
  }
828
828
  ));
829
829
  CardTitle.displayName = "CardTitle";
830
- CardContent = React110__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn("", className), ...props }));
830
+ CardContent = React111__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn("", className), ...props }));
831
831
  CardContent.displayName = "CardContent";
832
832
  CardBody = CardContent;
833
833
  CardBody.displayName = "CardBody";
834
- CardFooter = React110__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
834
+ CardFooter = React111__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
835
835
  "div",
836
836
  {
837
837
  ref,
@@ -884,7 +884,7 @@ var init_Badge = __esm({
884
884
  md: "px-2.5 py-1 text-sm",
885
885
  lg: "px-3 py-1.5 text-base"
886
886
  };
887
- Badge = React110__default.forwardRef(
887
+ Badge = React111__default.forwardRef(
888
888
  ({ className, variant = "default", size = "sm", amount, label, icon, children, ...props }, ref) => {
889
889
  const iconSizes2 = { sm: "w-3 h-3", md: "w-3.5 h-3.5", lg: "w-4 h-4" };
890
890
  const resolvedIcon = typeof icon === "string" ? (() => {
@@ -923,7 +923,7 @@ var init_Spinner = __esm({
923
923
  md: "h-6 w-6",
924
924
  lg: "h-8 w-8"
925
925
  };
926
- Spinner = React110__default.forwardRef(
926
+ Spinner = React111__default.forwardRef(
927
927
  ({ className, size = "md", ...props }, ref) => {
928
928
  return /* @__PURE__ */ jsx(
929
929
  "div",
@@ -1204,7 +1204,7 @@ var init_Box = __esm({
1204
1204
  fixed: "fixed",
1205
1205
  sticky: "sticky"
1206
1206
  };
1207
- Box = React110__default.forwardRef(
1207
+ Box = React111__default.forwardRef(
1208
1208
  ({
1209
1209
  padding,
1210
1210
  paddingX,
@@ -1577,7 +1577,7 @@ var Radio;
1577
1577
  var init_Radio = __esm({
1578
1578
  "components/atoms/Radio.tsx"() {
1579
1579
  init_cn();
1580
- Radio = React110__default.forwardRef(
1580
+ Radio = React111__default.forwardRef(
1581
1581
  ({
1582
1582
  label,
1583
1583
  helperText,
@@ -1688,7 +1688,7 @@ var init_Switch = __esm({
1688
1688
  "components/atoms/Switch.tsx"() {
1689
1689
  "use client";
1690
1690
  init_cn();
1691
- Switch = React110.forwardRef(
1691
+ Switch = React111.forwardRef(
1692
1692
  ({
1693
1693
  checked,
1694
1694
  defaultChecked = false,
@@ -1699,10 +1699,10 @@ var init_Switch = __esm({
1699
1699
  name,
1700
1700
  className
1701
1701
  }, ref) => {
1702
- const [isChecked, setIsChecked] = React110.useState(
1702
+ const [isChecked, setIsChecked] = React111.useState(
1703
1703
  checked !== void 0 ? checked : defaultChecked
1704
1704
  );
1705
- React110.useEffect(() => {
1705
+ React111.useEffect(() => {
1706
1706
  if (checked !== void 0) {
1707
1707
  setIsChecked(checked);
1708
1708
  }
@@ -2587,8 +2587,8 @@ var init_LawReferenceTooltip = __esm({
2587
2587
  position = "top",
2588
2588
  className
2589
2589
  }) => {
2590
- const [isVisible, setIsVisible] = React110__default.useState(false);
2591
- const timeoutRef = React110__default.useRef(null);
2590
+ const [isVisible, setIsVisible] = React111__default.useState(false);
2591
+ const timeoutRef = React111__default.useRef(null);
2592
2592
  const handleMouseEnter = () => {
2593
2593
  if (timeoutRef.current) clearTimeout(timeoutRef.current);
2594
2594
  timeoutRef.current = setTimeout(() => setIsVisible(true), 200);
@@ -2597,7 +2597,7 @@ var init_LawReferenceTooltip = __esm({
2597
2597
  if (timeoutRef.current) clearTimeout(timeoutRef.current);
2598
2598
  setIsVisible(false);
2599
2599
  };
2600
- React110__default.useEffect(() => {
2600
+ React111__default.useEffect(() => {
2601
2601
  return () => {
2602
2602
  if (timeoutRef.current) clearTimeout(timeoutRef.current);
2603
2603
  };
@@ -2807,7 +2807,7 @@ var init_StatusDot = __esm({
2807
2807
  md: "w-2.5 h-2.5",
2808
2808
  lg: "w-3 h-3"
2809
2809
  };
2810
- StatusDot = React110__default.forwardRef(
2810
+ StatusDot = React111__default.forwardRef(
2811
2811
  ({ className, status = "offline", pulse = false, size = "md", label, ...props }, ref) => {
2812
2812
  return /* @__PURE__ */ jsx(
2813
2813
  "span",
@@ -2860,7 +2860,7 @@ var init_TrendIndicator = __esm({
2860
2860
  down: TrendingDown,
2861
2861
  flat: ArrowRight
2862
2862
  };
2863
- TrendIndicator = React110__default.forwardRef(
2863
+ TrendIndicator = React111__default.forwardRef(
2864
2864
  ({
2865
2865
  className,
2866
2866
  value,
@@ -2927,7 +2927,7 @@ var init_RangeSlider = __esm({
2927
2927
  md: "w-4 h-4",
2928
2928
  lg: "w-5 h-5"
2929
2929
  };
2930
- RangeSlider = React110__default.forwardRef(
2930
+ RangeSlider = React111__default.forwardRef(
2931
2931
  ({
2932
2932
  className,
2933
2933
  min = 0,
@@ -3523,7 +3523,7 @@ var init_ContentSection = __esm({
3523
3523
  md: "py-16",
3524
3524
  lg: "py-24"
3525
3525
  };
3526
- ContentSection = React110__default.forwardRef(
3526
+ ContentSection = React111__default.forwardRef(
3527
3527
  ({ children, background = "default", padding = "lg", id, className }, ref) => {
3528
3528
  return /* @__PURE__ */ jsx(
3529
3529
  Box,
@@ -4057,7 +4057,7 @@ var init_AnimatedReveal = __esm({
4057
4057
  "scale-up": { opacity: 1, transform: "scale(1) translateY(0)" },
4058
4058
  "none": {}
4059
4059
  };
4060
- AnimatedReveal = React110__default.forwardRef(
4060
+ AnimatedReveal = React111__default.forwardRef(
4061
4061
  ({
4062
4062
  trigger = "scroll",
4063
4063
  animation = "fade-up",
@@ -4217,7 +4217,7 @@ var init_AnimatedGraphic = __esm({
4217
4217
  "components/atoms/AnimatedGraphic.tsx"() {
4218
4218
  "use client";
4219
4219
  init_cn();
4220
- AnimatedGraphic = React110__default.forwardRef(
4220
+ AnimatedGraphic = React111__default.forwardRef(
4221
4221
  ({
4222
4222
  src,
4223
4223
  svgContent,
@@ -4240,7 +4240,7 @@ var init_AnimatedGraphic = __esm({
4240
4240
  const fetchedSvg = useFetchedSvg(svgContent ? void 0 : src);
4241
4241
  const resolvedSvg = svgContent ?? fetchedSvg;
4242
4242
  const prevAnimateRef = useRef(animate);
4243
- const setRef = React110__default.useCallback(
4243
+ const setRef = React111__default.useCallback(
4244
4244
  (node) => {
4245
4245
  containerRef.current = node;
4246
4246
  if (typeof ref === "function") ref(node);
@@ -4839,6 +4839,25 @@ var init_Toast = __esm({
4839
4839
  Toast.displayName = "Toast";
4840
4840
  }
4841
4841
  });
4842
+ function refId(obj) {
4843
+ if (obj === null || obj === void 0 || typeof obj !== "object") return null;
4844
+ const existing = refIds.get(obj);
4845
+ if (existing !== void 0) return existing;
4846
+ const id = nextRefId++;
4847
+ refIds.set(obj, id);
4848
+ return id;
4849
+ }
4850
+ var slotLog, refIds, nextRefId;
4851
+ var init_SlotsContext = __esm({
4852
+ "runtime/ui/SlotsContext.tsx"() {
4853
+ init_logger();
4854
+ slotLog = createLogger("almadar:ui:slot-render");
4855
+ refIds = /* @__PURE__ */ new WeakMap();
4856
+ nextRefId = 1;
4857
+ createContext({});
4858
+ createContext(null);
4859
+ }
4860
+ });
4842
4861
 
4843
4862
  // locales/en.json
4844
4863
  var en_default;
@@ -5034,7 +5053,7 @@ var init_ErrorBoundary = __esm({
5034
5053
  "use client";
5035
5054
  init_cn();
5036
5055
  init_ErrorState();
5037
- ErrorBoundary = class extends React110__default.Component {
5056
+ ErrorBoundary = class extends React111__default.Component {
5038
5057
  constructor(props) {
5039
5058
  super(props);
5040
5059
  __publicField(this, "reset", () => {
@@ -5487,8 +5506,8 @@ var init_Tooltip = __esm({
5487
5506
  if (hideTimeoutRef.current) clearTimeout(hideTimeoutRef.current);
5488
5507
  };
5489
5508
  }, []);
5490
- const triggerElement = React110__default.isValidElement(children) ? children : /* @__PURE__ */ jsx("span", { children });
5491
- const trigger = React110__default.cloneElement(triggerElement, {
5509
+ const triggerElement = React111__default.isValidElement(children) ? children : /* @__PURE__ */ jsx("span", { children });
5510
+ const trigger = React111__default.cloneElement(triggerElement, {
5492
5511
  ref: triggerRef,
5493
5512
  onMouseEnter: handleMouseEnter,
5494
5513
  onMouseLeave: handleMouseLeave,
@@ -5609,8 +5628,8 @@ var init_Popover = __esm({
5609
5628
  onMouseEnter: handleOpen,
5610
5629
  onMouseLeave: handleClose
5611
5630
  };
5612
- const childElement = React110__default.isValidElement(children) ? children : /* @__PURE__ */ jsx("span", { children });
5613
- const triggerElement = React110__default.cloneElement(
5631
+ const childElement = React111__default.isValidElement(children) ? children : /* @__PURE__ */ jsx("span", { children });
5632
+ const triggerElement = React111__default.cloneElement(
5614
5633
  childElement,
5615
5634
  {
5616
5635
  ref: triggerRef,
@@ -5727,8 +5746,8 @@ var init_Menu = __esm({
5727
5746
  "bottom-start": "top-full left-0 mt-2",
5728
5747
  "bottom-end": "top-full right-0 mt-2"
5729
5748
  };
5730
- const triggerChild = React110__default.isValidElement(trigger) ? trigger : /* @__PURE__ */ jsx("span", { children: trigger });
5731
- const triggerElement = React110__default.cloneElement(
5749
+ const triggerChild = React111__default.isValidElement(trigger) ? trigger : /* @__PURE__ */ jsx("span", { children: trigger });
5750
+ const triggerElement = React111__default.cloneElement(
5732
5751
  triggerChild,
5733
5752
  {
5734
5753
  ref: triggerRef,
@@ -6247,12 +6266,12 @@ var init_MapView = __esm({
6247
6266
  shadowSize: [41, 41]
6248
6267
  });
6249
6268
  L.Marker.prototype.options.icon = defaultIcon;
6250
- const { useEffect: useEffect66, useRef: useRef64, useCallback: useCallback114, useState: useState99 } = React110__default;
6269
+ const { useEffect: useEffect66, useRef: useRef65, useCallback: useCallback115, useState: useState100 } = React111__default;
6251
6270
  const { Typography: Typography2 } = await Promise.resolve().then(() => (init_Typography(), Typography_exports));
6252
6271
  const { useEventBus: useEventBus2 } = await Promise.resolve().then(() => (init_useEventBus(), useEventBus_exports));
6253
6272
  function MapUpdater({ centerLat, centerLng, zoom }) {
6254
6273
  const map = useMap();
6255
- const prevRef = useRef64({ centerLat, centerLng, zoom });
6274
+ const prevRef = useRef65({ centerLat, centerLng, zoom });
6256
6275
  useEffect66(() => {
6257
6276
  const prev = prevRef.current;
6258
6277
  if (prev.centerLat !== centerLat || prev.centerLng !== centerLng || prev.zoom !== zoom) {
@@ -6291,8 +6310,8 @@ var init_MapView = __esm({
6291
6310
  showAttribution = true
6292
6311
  }) {
6293
6312
  const eventBus = useEventBus2();
6294
- const [clickedPosition, setClickedPosition] = useState99(null);
6295
- const handleMapClick = useCallback114((lat, lng) => {
6313
+ const [clickedPosition, setClickedPosition] = useState100(null);
6314
+ const handleMapClick = useCallback115((lat, lng) => {
6296
6315
  if (showClickedPin) {
6297
6316
  setClickedPosition({ lat, lng });
6298
6317
  }
@@ -6301,7 +6320,7 @@ var init_MapView = __esm({
6301
6320
  eventBus.emit(`UI:${mapClickEvent}`, { latitude: lat, longitude: lng });
6302
6321
  }
6303
6322
  }, [onMapClick, mapClickEvent, eventBus, showClickedPin]);
6304
- const handleMarkerClick = useCallback114((marker) => {
6323
+ const handleMarkerClick = useCallback115((marker) => {
6305
6324
  onMarkerClick?.(marker);
6306
6325
  if (markerClickEvent) {
6307
6326
  eventBus.emit(`UI:${markerClickEvent}`, { ...marker });
@@ -6478,7 +6497,7 @@ function InputPattern({
6478
6497
  fieldName
6479
6498
  }) {
6480
6499
  const { emit } = useEventBus();
6481
- const [localValue, setLocalValue] = React110__default.useState(value);
6500
+ const [localValue, setLocalValue] = React111__default.useState(value);
6482
6501
  const handleChange = (e) => {
6483
6502
  setLocalValue(e.target.value);
6484
6503
  if (onChange) {
@@ -6516,7 +6535,7 @@ function TextareaPattern({
6516
6535
  fieldName
6517
6536
  }) {
6518
6537
  const { emit } = useEventBus();
6519
- const [localValue, setLocalValue] = React110__default.useState(value);
6538
+ const [localValue, setLocalValue] = React111__default.useState(value);
6520
6539
  const handleChange = (e) => {
6521
6540
  setLocalValue(e.target.value);
6522
6541
  if (onChange) {
@@ -6548,7 +6567,7 @@ function SelectPattern({
6548
6567
  fieldName
6549
6568
  }) {
6550
6569
  const { emit } = useEventBus();
6551
- const [localValue, setLocalValue] = React110__default.useState(value);
6570
+ const [localValue, setLocalValue] = React111__default.useState(value);
6552
6571
  const handleChange = (e) => {
6553
6572
  setLocalValue(e.target.value);
6554
6573
  if (onChange) {
@@ -6577,7 +6596,7 @@ function CheckboxPattern({
6577
6596
  className
6578
6597
  }) {
6579
6598
  const { emit } = useEventBus();
6580
- const [localChecked, setLocalChecked] = React110__default.useState(checked);
6599
+ const [localChecked, setLocalChecked] = React111__default.useState(checked);
6581
6600
  const handleChange = (e) => {
6582
6601
  setLocalChecked(e.target.checked);
6583
6602
  if (onChange) {
@@ -6886,9 +6905,9 @@ function ControlButton({
6886
6905
  className
6887
6906
  }) {
6888
6907
  const eventBus = useEventBus();
6889
- const [isPressed, setIsPressed] = React110.useState(false);
6908
+ const [isPressed, setIsPressed] = React111.useState(false);
6890
6909
  const actualPressed = pressed ?? isPressed;
6891
- const handlePointerDown = React110.useCallback(
6910
+ const handlePointerDown = React111.useCallback(
6892
6911
  (e) => {
6893
6912
  e.preventDefault();
6894
6913
  if (disabled) return;
@@ -6898,7 +6917,7 @@ function ControlButton({
6898
6917
  },
6899
6918
  [disabled, pressEvent, eventBus, onPress]
6900
6919
  );
6901
- const handlePointerUp = React110.useCallback(
6920
+ const handlePointerUp = React111.useCallback(
6902
6921
  (e) => {
6903
6922
  e.preventDefault();
6904
6923
  if (disabled) return;
@@ -6908,7 +6927,7 @@ function ControlButton({
6908
6927
  },
6909
6928
  [disabled, releaseEvent, eventBus, onRelease]
6910
6929
  );
6911
- const handlePointerLeave = React110.useCallback(
6930
+ const handlePointerLeave = React111.useCallback(
6912
6931
  (e) => {
6913
6932
  if (isPressed) {
6914
6933
  setIsPressed(false);
@@ -6981,8 +7000,8 @@ function ActionButtons({
6981
7000
  disabled
6982
7001
  }) {
6983
7002
  const eventBus = useEventBus();
6984
- const [activeButtons, setActiveButtons] = React110.useState(/* @__PURE__ */ new Set());
6985
- const handlePress = React110.useCallback(
7003
+ const [activeButtons, setActiveButtons] = React111.useState(/* @__PURE__ */ new Set());
7004
+ const handlePress = React111.useCallback(
6986
7005
  (id) => {
6987
7006
  setActiveButtons((prev) => new Set(prev).add(id));
6988
7007
  if (actionEvent) eventBus.emit(`UI:${actionEvent}`, { id, pressed: true });
@@ -6990,7 +7009,7 @@ function ActionButtons({
6990
7009
  },
6991
7010
  [actionEvent, eventBus, onAction]
6992
7011
  );
6993
- const handleRelease = React110.useCallback(
7012
+ const handleRelease = React111.useCallback(
6994
7013
  (id) => {
6995
7014
  setActiveButtons((prev) => {
6996
7015
  const next = new Set(prev);
@@ -8925,7 +8944,7 @@ var init_MarkdownContent = __esm({
8925
8944
  init_Box();
8926
8945
  init_useTranslate();
8927
8946
  init_cn();
8928
- MarkdownContent = React110__default.memo(
8947
+ MarkdownContent = React111__default.memo(
8929
8948
  ({ content, direction, className }) => {
8930
8949
  const { t: _t } = useTranslate();
8931
8950
  const safeContent = typeof content === "string" ? content : String(content ?? "");
@@ -9142,7 +9161,7 @@ var init_CodeBlock = __esm({
9142
9161
  loloStyle = { ...dark, ...loloStyleOverrides };
9143
9162
  LINE_PROPS_FN = (n) => ({ "data-line": String(n - 1) });
9144
9163
  HIDDEN_LINE_NUMBERS = { display: "none" };
9145
- CodeBlock = React110__default.memo(
9164
+ CodeBlock = React111__default.memo(
9146
9165
  ({
9147
9166
  code: rawCode,
9148
9167
  language = "text",
@@ -10451,7 +10470,7 @@ var init_StateMachineView = __esm({
10451
10470
  style: { top: title ? 30 : 0 },
10452
10471
  children: [
10453
10472
  entity && /* @__PURE__ */ jsx(EntityBox, { entity, config }),
10454
- states.map((state) => renderStateNode ? /* @__PURE__ */ jsx(React110__default.Fragment, { children: renderStateNode(state, config) }, state.id) : /* @__PURE__ */ jsx(
10473
+ states.map((state) => renderStateNode ? /* @__PURE__ */ jsx(React111__default.Fragment, { children: renderStateNode(state, config) }, state.id) : /* @__PURE__ */ jsx(
10455
10474
  StateNode,
10456
10475
  {
10457
10476
  state,
@@ -16412,7 +16431,7 @@ function CraftingRecipe({
16412
16431
  className
16413
16432
  }) {
16414
16433
  const eventBus = useEventBus();
16415
- const handleCraft = React110.useCallback(() => {
16434
+ const handleCraft = React111.useCallback(() => {
16416
16435
  onCraft?.();
16417
16436
  if (craftEvent) {
16418
16437
  eventBus.emit(craftEvent, { output: output.label });
@@ -16429,7 +16448,7 @@ function CraftingRecipe({
16429
16448
  children: [
16430
16449
  /* @__PURE__ */ jsx(HStack, { gap: "xs", className: "flex-wrap items-center", children: inputs.map((ingredient, index) => {
16431
16450
  const hasSufficient = ingredient.available >= ingredient.required;
16432
- return /* @__PURE__ */ jsxs(React110.Fragment, { children: [
16451
+ return /* @__PURE__ */ jsxs(React111.Fragment, { children: [
16433
16452
  /* @__PURE__ */ jsx(Box, { className: "relative", children: /* @__PURE__ */ jsx(
16434
16453
  ItemSlot,
16435
16454
  {
@@ -16723,8 +16742,8 @@ function DPad({
16723
16742
  }) {
16724
16743
  const eventBus = useEventBus();
16725
16744
  const sizes = sizeMap6[size];
16726
- const [activeDirections, setActiveDirections] = React110.useState(/* @__PURE__ */ new Set());
16727
- const handlePress = React110.useCallback(
16745
+ const [activeDirections, setActiveDirections] = React111.useState(/* @__PURE__ */ new Set());
16746
+ const handlePress = React111.useCallback(
16728
16747
  (direction) => {
16729
16748
  setActiveDirections((prev) => new Set(prev).add(direction));
16730
16749
  if (directionEvent) eventBus.emit(`UI:${directionEvent}`, { direction, pressed: true });
@@ -16732,7 +16751,7 @@ function DPad({
16732
16751
  },
16733
16752
  [directionEvent, eventBus, onDirection]
16734
16753
  );
16735
- const handleRelease = React110.useCallback(
16754
+ const handleRelease = React111.useCallback(
16736
16755
  (direction) => {
16737
16756
  setActiveDirections((prev) => {
16738
16757
  const next = new Set(prev);
@@ -17664,7 +17683,7 @@ function DataList({
17664
17683
  }) {
17665
17684
  const eventBus = useEventBus();
17666
17685
  const { t } = useTranslate();
17667
- const [visibleCount, setVisibleCount] = React110__default.useState(pageSize || Infinity);
17686
+ const [visibleCount, setVisibleCount] = React111__default.useState(pageSize || Infinity);
17668
17687
  const fields = fieldsProp ?? columnsProp ?? [];
17669
17688
  const allData = Array.isArray(entity) ? entity : entity ? [entity] : [];
17670
17689
  const data = pageSize > 0 ? allData.slice(0, visibleCount) : allData;
@@ -17705,7 +17724,7 @@ function DataList({
17705
17724
  const items2 = data.map((item) => item);
17706
17725
  const groups2 = groupBy ? groupData(items2, groupBy) : [{ label: "", items: items2 }];
17707
17726
  const contentField = titleField?.name ?? fields[0]?.name ?? "";
17708
- return /* @__PURE__ */ jsx(VStack, { gap: "sm", className: cn("py-2", className), children: groups2.map((group, gi) => /* @__PURE__ */ jsxs(React110__default.Fragment, { children: [
17727
+ return /* @__PURE__ */ jsx(VStack, { gap: "sm", className: cn("py-2", className), children: groups2.map((group, gi) => /* @__PURE__ */ jsxs(React111__default.Fragment, { children: [
17709
17728
  group.label && /* @__PURE__ */ jsx(Divider, { label: group.label, className: "my-2" }),
17710
17729
  group.items.map((itemData, index) => {
17711
17730
  const id = itemData.id || `${gi}-${index}`;
@@ -17897,7 +17916,7 @@ function DataList({
17897
17916
  className
17898
17917
  ),
17899
17918
  children: [
17900
- groups.map((group, gi) => /* @__PURE__ */ jsxs(React110__default.Fragment, { children: [
17919
+ groups.map((group, gi) => /* @__PURE__ */ jsxs(React111__default.Fragment, { children: [
17901
17920
  group.label && /* @__PURE__ */ jsx(Divider, { label: group.label, className: gi > 0 ? "mt-4" : "mt-0" }),
17902
17921
  group.items.map(
17903
17922
  (itemData, index) => renderItem(itemData, index, gi === groups.length - 1 && index === group.items.length - 1)
@@ -18713,20 +18732,21 @@ var init_InputGroup = __esm({
18713
18732
 
18714
18733
  // lib/debug.ts
18715
18734
  function isDebugEnabled() {
18716
- return DEBUG_ENABLED;
18735
+ if (DEBUG_ENABLED) return true;
18736
+ return typeof window !== "undefined" && window.__ALMADAR_DEBUG_VERIFY__ === true;
18717
18737
  }
18718
18738
  function debug(...args) {
18719
- if (DEBUG_ENABLED) {
18739
+ if (isDebugEnabled()) {
18720
18740
  console.log("[DEBUG]", ...args);
18721
18741
  }
18722
18742
  }
18723
18743
  function debugGroup(label) {
18724
- if (DEBUG_ENABLED) {
18744
+ if (isDebugEnabled()) {
18725
18745
  console.group(`[DEBUG] ${label}`);
18726
18746
  }
18727
18747
  }
18728
18748
  function debugGroupEnd() {
18729
- if (DEBUG_ENABLED) {
18749
+ if (isDebugEnabled()) {
18730
18750
  console.groupEnd();
18731
18751
  }
18732
18752
  }
@@ -19177,7 +19197,7 @@ var init_WizardProgress = __esm({
19177
19197
  children: /* @__PURE__ */ jsx("div", { className: "flex items-center gap-2", children: normalizedSteps.map((step, index) => {
19178
19198
  const isActive = index === currentStep;
19179
19199
  const isCompleted = index < currentStep;
19180
- return /* @__PURE__ */ jsxs(React110__default.Fragment, { children: [
19200
+ return /* @__PURE__ */ jsxs(React111__default.Fragment, { children: [
19181
19201
  /* @__PURE__ */ jsx(
19182
19202
  "button",
19183
19203
  {
@@ -20077,9 +20097,9 @@ function ScoreDisplay({
20077
20097
  ...rest
20078
20098
  }) {
20079
20099
  const resolvedValue = typeof value === "number" && !Number.isNaN(value) ? value : typeof rest.score === "number" && !Number.isNaN(rest.score) ? rest.score : 0;
20080
- const [displayValue, setDisplayValue] = React110.useState(resolvedValue);
20081
- const [isAnimating, setIsAnimating] = React110.useState(false);
20082
- React110.useEffect(() => {
20100
+ const [displayValue, setDisplayValue] = React111.useState(resolvedValue);
20101
+ const [isAnimating, setIsAnimating] = React111.useState(false);
20102
+ React111.useEffect(() => {
20083
20103
  if (!animated || displayValue === resolvedValue) {
20084
20104
  setDisplayValue(resolvedValue);
20085
20105
  return;
@@ -20229,7 +20249,7 @@ function InventoryGrid({
20229
20249
  const eventBus = useEventBus();
20230
20250
  const slotCount = totalSlots ?? items.length;
20231
20251
  const emptySlotCount = Math.max(0, slotCount - items.length);
20232
- const handleSelect = React110.useCallback(
20252
+ const handleSelect = React111.useCallback(
20233
20253
  (id) => {
20234
20254
  onSelect?.(id);
20235
20255
  if (selectEvent) {
@@ -20511,15 +20531,15 @@ function GameCanvas2D({
20511
20531
  fps = 60,
20512
20532
  className
20513
20533
  }) {
20514
- const canvasRef = React110.useRef(null);
20515
- const rafRef = React110.useRef(0);
20516
- const frameRef = React110.useRef(0);
20517
- const lastTimeRef = React110.useRef(0);
20518
- const onDrawRef = React110.useRef(onDraw);
20534
+ const canvasRef = React111.useRef(null);
20535
+ const rafRef = React111.useRef(0);
20536
+ const frameRef = React111.useRef(0);
20537
+ const lastTimeRef = React111.useRef(0);
20538
+ const onDrawRef = React111.useRef(onDraw);
20519
20539
  onDrawRef.current = onDraw;
20520
- const onTickRef = React110.useRef(onTick);
20540
+ const onTickRef = React111.useRef(onTick);
20521
20541
  onTickRef.current = onTick;
20522
- React110.useEffect(() => {
20542
+ React111.useEffect(() => {
20523
20543
  const canvas = canvasRef.current;
20524
20544
  if (!canvas) return;
20525
20545
  const ctx = canvas.getContext("2d");
@@ -20860,7 +20880,7 @@ function TurnPanel({
20860
20880
  className
20861
20881
  }) {
20862
20882
  const eventBus = useEventBus();
20863
- const handleAction = React110.useCallback(
20883
+ const handleAction = React111.useCallback(
20864
20884
  (event) => {
20865
20885
  if (event) {
20866
20886
  eventBus.emit(event, { turn: currentTurn, phase, activeTeam });
@@ -21006,7 +21026,7 @@ function UnitCommandBar({
21006
21026
  className
21007
21027
  }) {
21008
21028
  const eventBus = useEventBus();
21009
- const handleCommand = React110.useCallback(
21029
+ const handleCommand = React111.useCallback(
21010
21030
  (event) => {
21011
21031
  if (event) {
21012
21032
  eventBus.emit(event, { unitId: selectedUnitId });
@@ -21491,7 +21511,7 @@ function GameMenu({
21491
21511
  } catch {
21492
21512
  }
21493
21513
  const eventBus = eventBusProp || eventBusFromHook;
21494
- const handleOptionClick = React110.useCallback(
21514
+ const handleOptionClick = React111.useCallback(
21495
21515
  (option) => {
21496
21516
  if (option.event && eventBus) {
21497
21517
  eventBus.emit(`UI:${option.event}`, { option });
@@ -21605,7 +21625,7 @@ function GameOverScreen({
21605
21625
  } catch {
21606
21626
  }
21607
21627
  const eventBus = eventBusProp || eventBusFromHook;
21608
- const handleActionClick = React110.useCallback(
21628
+ const handleActionClick = React111.useCallback(
21609
21629
  (action) => {
21610
21630
  if (action.event && eventBus) {
21611
21631
  eventBus.emit(`UI:${action.event}`, { action });
@@ -24709,7 +24729,7 @@ var init_StepFlow = __esm({
24709
24729
  className
24710
24730
  }) => {
24711
24731
  if (orientation === "vertical") {
24712
- return /* @__PURE__ */ jsx(VStack, { gap: "none", className: cn("w-full", className), children: steps.map((step, index) => /* @__PURE__ */ jsx(React110__default.Fragment, { children: /* @__PURE__ */ jsxs(HStack, { gap: "md", align: "start", className: "w-full", children: [
24732
+ return /* @__PURE__ */ jsx(VStack, { gap: "none", className: cn("w-full", className), children: steps.map((step, index) => /* @__PURE__ */ jsx(React111__default.Fragment, { children: /* @__PURE__ */ jsxs(HStack, { gap: "md", align: "start", className: "w-full", children: [
24713
24733
  /* @__PURE__ */ jsxs(VStack, { gap: "none", align: "center", children: [
24714
24734
  /* @__PURE__ */ jsx(StepCircle, { step, index }),
24715
24735
  showConnectors && index < steps.length - 1 && /* @__PURE__ */ jsx(Box, { className: "w-px h-8 bg-border" })
@@ -24720,7 +24740,7 @@ var init_StepFlow = __esm({
24720
24740
  ] })
24721
24741
  ] }) }, index)) });
24722
24742
  }
24723
- 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(React110__default.Fragment, { children: [
24743
+ 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(React111__default.Fragment, { children: [
24724
24744
  /* @__PURE__ */ jsxs(VStack, { gap: "sm", align: "center", className: "flex-1 w-full md:w-auto", children: [
24725
24745
  /* @__PURE__ */ jsx(StepCircle, { step, index }),
24726
24746
  /* @__PURE__ */ jsx(Typography, { variant: "h4", className: "text-center", children: step.title }),
@@ -26872,7 +26892,7 @@ var init_DocumentViewer = __esm({
26872
26892
  }
26873
26893
  });
26874
26894
  function extractTitle(children) {
26875
- if (!React110__default.isValidElement(children)) return void 0;
26895
+ if (!React111__default.isValidElement(children)) return void 0;
26876
26896
  const props = children.props;
26877
26897
  if (typeof props.title === "string") {
26878
26898
  return props.title;
@@ -26984,7 +27004,7 @@ function LinearView({
26984
27004
  /* @__PURE__ */ jsx(HStack, { className: "flex-wrap items-center", gap: "xs", children: trait.states.map((state, i) => {
26985
27005
  const isDone = i < currentIdx;
26986
27006
  const isCurrent = i === currentIdx;
26987
- return /* @__PURE__ */ jsxs(React110__default.Fragment, { children: [
27007
+ return /* @__PURE__ */ jsxs(React111__default.Fragment, { children: [
26988
27008
  i > 0 && /* @__PURE__ */ jsx(
26989
27009
  Typography,
26990
27010
  {
@@ -27734,7 +27754,14 @@ var init_Form = __esm({
27734
27754
  // Schema-based props
27735
27755
  entity,
27736
27756
  fields,
27737
- initialData = {},
27757
+ // No `= {}` default: a fresh `{}` evaluated inline on every render
27758
+ // would change the prop reference every tick and bust the useMemo
27759
+ // cache below (`[entity, initialData]` deps), reigniting the
27760
+ // setFormData useEffect on every keystroke and producing an
27761
+ // infinite re-render loop with stuck form inputs. The memo and
27762
+ // submit handler both handle `undefined` already via the
27763
+ // `typeof initialData === 'object'` guard.
27764
+ initialData,
27738
27765
  isLoading = false,
27739
27766
  error,
27740
27767
  submitLabel,
@@ -27761,10 +27788,12 @@ var init_Form = __esm({
27761
27788
  const isSchemaEntity = isOrbitalEntitySchema(entity);
27762
27789
  const resolvedEntity = isSchemaEntity ? entity : void 0;
27763
27790
  const entityName = typeof entity === "string" ? entity : resolvedEntity?.name;
27764
- const entityRowAsInitial = isPlainEntityRow(entity) ? entity : void 0;
27765
- const callerInitial = initialData !== null && typeof initialData === "object" && !Array.isArray(initialData) ? initialData : {};
27766
- const normalizedInitialData = entityRowAsInitial !== void 0 ? { ...entityRowAsInitial, ...callerInitial } : callerInitial;
27767
- const entityDerivedFields = React110__default.useMemo(() => {
27791
+ const normalizedInitialData = React111__default.useMemo(() => {
27792
+ const entityRowAsInitial = isPlainEntityRow(entity) ? entity : void 0;
27793
+ const callerInitial = initialData !== null && typeof initialData === "object" && !Array.isArray(initialData) ? initialData : {};
27794
+ return entityRowAsInitial !== void 0 ? { ...entityRowAsInitial, ...callerInitial } : callerInitial;
27795
+ }, [entity, initialData]);
27796
+ const entityDerivedFields = React111__default.useMemo(() => {
27768
27797
  if (fields && fields.length > 0) return void 0;
27769
27798
  if (!resolvedEntity) return void 0;
27770
27799
  return resolvedEntity.fields.map(
@@ -27783,14 +27812,27 @@ var init_Form = __esm({
27783
27812
  const conditionalFields = typeof conditionalFieldsRaw === "boolean" ? {} : conditionalFieldsRaw;
27784
27813
  const hiddenCalculations = typeof hiddenCalculationsRaw === "boolean" ? [] : hiddenCalculationsRaw;
27785
27814
  const violationTriggers = typeof violationTriggersRaw === "boolean" ? [] : violationTriggersRaw;
27786
- const [formData, setFormData] = React110__default.useState(
27815
+ const [formData, setFormData] = React111__default.useState(
27787
27816
  normalizedInitialData
27788
27817
  );
27789
- const [collapsedSections, setCollapsedSections] = React110__default.useState(
27818
+ const [collapsedSections, setCollapsedSections] = React111__default.useState(
27790
27819
  /* @__PURE__ */ new Set()
27791
27820
  );
27821
+ const formMode = props.mode;
27822
+ const mountedRef = React111__default.useRef(false);
27823
+ if (!mountedRef.current) {
27824
+ mountedRef.current = true;
27825
+ debug("forms", "mount", {
27826
+ mode: formMode,
27827
+ submitEvent,
27828
+ cancelEvent,
27829
+ fieldNames: (fields ?? []).map((f3) => f3.name ?? f3.field).filter(Boolean),
27830
+ initialDataKeys: Object.keys(normalizedInitialData),
27831
+ initialData: normalizedInitialData
27832
+ });
27833
+ }
27792
27834
  const shouldShowCancel = showCancel ?? (fields && fields.length > 0);
27793
- const evalContext = React110__default.useMemo(
27835
+ const evalContext = React111__default.useMemo(
27794
27836
  () => ({
27795
27837
  formValues: formData,
27796
27838
  globalVariables: externalContext?.globalVariables ?? {},
@@ -27799,12 +27841,18 @@ var init_Form = __esm({
27799
27841
  }),
27800
27842
  [formData, externalContext]
27801
27843
  );
27802
- React110__default.useEffect(() => {
27844
+ React111__default.useEffect(() => {
27845
+ debug("forms", "initialData-sync", {
27846
+ mode: formMode,
27847
+ normalizedInitialData,
27848
+ prevFormData: formData,
27849
+ willSet: Object.keys(normalizedInitialData).length > 0
27850
+ });
27803
27851
  if (Object.keys(normalizedInitialData).length > 0) {
27804
27852
  setFormData(normalizedInitialData);
27805
27853
  }
27806
27854
  }, [normalizedInitialData]);
27807
- const processCalculations = React110__default.useCallback(
27855
+ const processCalculations = React111__default.useCallback(
27808
27856
  (changedFieldId, newFormData) => {
27809
27857
  if (!hiddenCalculations.length) return;
27810
27858
  const context = {
@@ -27829,7 +27877,7 @@ var init_Form = __esm({
27829
27877
  },
27830
27878
  [hiddenCalculations, externalContext, eventBus]
27831
27879
  );
27832
- const checkViolations = React110__default.useCallback(
27880
+ const checkViolations = React111__default.useCallback(
27833
27881
  (changedFieldId, newFormData) => {
27834
27882
  if (!violationTriggers.length) return;
27835
27883
  const context = {
@@ -27856,6 +27904,7 @@ var init_Form = __esm({
27856
27904
  );
27857
27905
  const handleChange = (name, value) => {
27858
27906
  const newFormData = { ...formData, [name]: value };
27907
+ debug("forms", "field-change", { mode: formMode, name, value, prevFormData: formData, newFormData });
27859
27908
  setFormData(newFormData);
27860
27909
  eventBus.emit("UI:FIELD_CHANGED", {
27861
27910
  fieldId: name,
@@ -27866,7 +27915,7 @@ var init_Form = __esm({
27866
27915
  processCalculations(name, newFormData);
27867
27916
  checkViolations(name, newFormData);
27868
27917
  };
27869
- const isFieldVisible = React110__default.useCallback(
27918
+ const isFieldVisible = React111__default.useCallback(
27870
27919
  (fieldName) => {
27871
27920
  const condition = conditionalFields[fieldName];
27872
27921
  if (!condition) return true;
@@ -27874,7 +27923,7 @@ var init_Form = __esm({
27874
27923
  },
27875
27924
  [conditionalFields, evalContext]
27876
27925
  );
27877
- const isSectionVisible = React110__default.useCallback(
27926
+ const isSectionVisible = React111__default.useCallback(
27878
27927
  (section) => {
27879
27928
  if (!section.condition) return true;
27880
27929
  return Boolean(evaluateFormExpression(section.condition, evalContext));
@@ -27894,11 +27943,18 @@ var init_Form = __esm({
27894
27943
  };
27895
27944
  const handleSubmit = (e) => {
27896
27945
  e.preventDefault();
27946
+ debug("forms", "submit-enter", {
27947
+ mode: formMode,
27948
+ submitEvent,
27949
+ formData,
27950
+ normalizedInitialData
27951
+ });
27897
27952
  const mergedData = {
27898
27953
  ...normalizedInitialData,
27899
27954
  ...formData
27900
27955
  };
27901
27956
  const payload = { data: mergedData };
27957
+ debug("forms", "submit-emit", { mode: formMode, submitEvent: `UI:${submitEvent}`, payloadData: payload.data });
27902
27958
  eventBus.emit(`UI:${submitEvent}`, payload);
27903
27959
  if (onSubmit) {
27904
27960
  eventBus.emit(`UI:${onSubmit}`, payload);
@@ -27911,7 +27967,7 @@ var init_Form = __esm({
27911
27967
  eventBus.emit(`UI:${onCancel}`);
27912
27968
  }
27913
27969
  };
27914
- const renderField = React110__default.useCallback(
27970
+ const renderField = React111__default.useCallback(
27915
27971
  (field) => {
27916
27972
  const fieldName = field.name || field.field;
27917
27973
  if (!fieldName) return null;
@@ -27932,7 +27988,7 @@ var init_Form = __esm({
27932
27988
  [formData, isFieldVisible, relationsData, relationsLoading, isLoading]
27933
27989
  );
27934
27990
  const effectiveFields = entityDerivedFields ?? fields;
27935
- const normalizedFields = React110__default.useMemo(() => {
27991
+ const normalizedFields = React111__default.useMemo(() => {
27936
27992
  if (!effectiveFields || effectiveFields.length === 0) return [];
27937
27993
  return effectiveFields.map((field) => {
27938
27994
  if (typeof field === "string") {
@@ -27954,7 +28010,7 @@ var init_Form = __esm({
27954
28010
  return field;
27955
28011
  });
27956
28012
  }, [effectiveFields, resolvedEntity]);
27957
- const schemaFields = React110__default.useMemo(() => {
28013
+ const schemaFields = React111__default.useMemo(() => {
27958
28014
  if (normalizedFields.length === 0) return null;
27959
28015
  if (isDebugEnabled()) {
27960
28016
  debugGroup(`Form: ${entityName || "unknown"}`);
@@ -27964,7 +28020,7 @@ var init_Form = __esm({
27964
28020
  }
27965
28021
  return normalizedFields.map(renderField).filter(Boolean);
27966
28022
  }, [normalizedFields, renderField, entityName, conditionalFields]);
27967
- const sectionElements = React110__default.useMemo(() => {
28023
+ const sectionElements = React111__default.useMemo(() => {
27968
28024
  if (!sections || sections.length === 0) return null;
27969
28025
  return sections.map((section) => {
27970
28026
  if (!isSectionVisible(section)) {
@@ -29488,7 +29544,7 @@ var init_List = __esm({
29488
29544
  if (entity && typeof entity === "object" && "id" in entity) return [entity];
29489
29545
  return [];
29490
29546
  }, [entity]);
29491
- const getItemActions = React110__default.useCallback(
29547
+ const getItemActions = React111__default.useCallback(
29492
29548
  (item) => {
29493
29549
  if (!itemActions) return [];
29494
29550
  if (typeof itemActions === "function") {
@@ -29925,7 +29981,7 @@ var init_MediaGallery = __esm({
29925
29981
  [selectable, selectedItems, selectionEvent, eventBus]
29926
29982
  );
29927
29983
  const entityData = Array.isArray(entity) ? entity : [];
29928
- const items = React110__default.useMemo(() => {
29984
+ const items = React111__default.useMemo(() => {
29929
29985
  if (propItems) return propItems;
29930
29986
  if (entityData.length === 0) return [];
29931
29987
  return entityData.map((record, idx) => ({
@@ -30098,9 +30154,9 @@ function MiniMap({
30098
30154
  viewportRect,
30099
30155
  className
30100
30156
  }) {
30101
- const canvasRef = React110.useRef(null);
30102
- const frameRef = React110.useRef(0);
30103
- React110.useEffect(() => {
30157
+ const canvasRef = React111.useRef(null);
30158
+ const frameRef = React111.useRef(0);
30159
+ React111.useEffect(() => {
30104
30160
  const canvas = canvasRef.current;
30105
30161
  if (!canvas) return;
30106
30162
  const ctx = canvas.getContext("2d");
@@ -30182,7 +30238,7 @@ var init_MiniMap = __esm({
30182
30238
  }
30183
30239
  });
30184
30240
  function extractTitle2(children) {
30185
- if (!React110__default.isValidElement(children)) return void 0;
30241
+ if (!React111__default.isValidElement(children)) return void 0;
30186
30242
  const props = children.props;
30187
30243
  if (typeof props.title === "string") {
30188
30244
  return props.title;
@@ -30895,7 +30951,7 @@ var init_PageHeader = __esm({
30895
30951
  info: "bg-info/10 text-info"
30896
30952
  };
30897
30953
  return /* @__PURE__ */ jsxs(Box, { className: cn("mb-6", className), children: [
30898
- 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(React110__default.Fragment, { children: [
30954
+ 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(React111__default.Fragment, { children: [
30899
30955
  idx > 0 && /* @__PURE__ */ jsx(Typography, { variant: "small", color: "muted", children: "/" }),
30900
30956
  crumb.href ? /* @__PURE__ */ jsx(
30901
30957
  "a",
@@ -31114,7 +31170,7 @@ var init_debugRegistry = __esm({
31114
31170
  }
31115
31171
  });
31116
31172
  function useDebugData() {
31117
- const [data, setData] = React110.useState(() => ({
31173
+ const [data, setData] = React111.useState(() => ({
31118
31174
  traits: [],
31119
31175
  ticks: [],
31120
31176
  guards: [],
@@ -31128,7 +31184,7 @@ function useDebugData() {
31128
31184
  },
31129
31185
  lastUpdate: Date.now()
31130
31186
  }));
31131
- React110.useEffect(() => {
31187
+ React111.useEffect(() => {
31132
31188
  const updateData = () => {
31133
31189
  setData({
31134
31190
  traits: getAllTraits(),
@@ -31237,12 +31293,12 @@ function layoutGraph(states, transitions, initialState, width, height) {
31237
31293
  return positions;
31238
31294
  }
31239
31295
  function WalkMinimap() {
31240
- const [walkStep, setWalkStep] = React110.useState(null);
31241
- const [traits2, setTraits] = React110.useState([]);
31242
- const [coveredEdges, setCoveredEdges] = React110.useState([]);
31243
- const [completedTraits, setCompletedTraits] = React110.useState(/* @__PURE__ */ new Set());
31244
- const prevTraitRef = React110.useRef(null);
31245
- React110.useEffect(() => {
31296
+ const [walkStep, setWalkStep] = React111.useState(null);
31297
+ const [traits2, setTraits] = React111.useState([]);
31298
+ const [coveredEdges, setCoveredEdges] = React111.useState([]);
31299
+ const [completedTraits, setCompletedTraits] = React111.useState(/* @__PURE__ */ new Set());
31300
+ const prevTraitRef = React111.useRef(null);
31301
+ React111.useEffect(() => {
31246
31302
  const interval = setInterval(() => {
31247
31303
  const w = window;
31248
31304
  const step = w.__orbitalWalkStep;
@@ -31689,15 +31745,15 @@ var init_EntitiesTab = __esm({
31689
31745
  }
31690
31746
  });
31691
31747
  function EventFlowTab({ events: events2 }) {
31692
- const [filter, setFilter] = React110.useState("all");
31693
- const containerRef = React110.useRef(null);
31694
- const [autoScroll, setAutoScroll] = React110.useState(true);
31695
- React110.useEffect(() => {
31748
+ const [filter, setFilter] = React111.useState("all");
31749
+ const containerRef = React111.useRef(null);
31750
+ const [autoScroll, setAutoScroll] = React111.useState(true);
31751
+ React111.useEffect(() => {
31696
31752
  if (autoScroll && containerRef.current) {
31697
31753
  containerRef.current.scrollTop = containerRef.current.scrollHeight;
31698
31754
  }
31699
31755
  }, [events2.length, autoScroll]);
31700
- const filteredEvents = React110.useMemo(() => {
31756
+ const filteredEvents = React111.useMemo(() => {
31701
31757
  if (filter === "all") return events2;
31702
31758
  return events2.filter((e) => e.type === filter);
31703
31759
  }, [events2, filter]);
@@ -31816,7 +31872,7 @@ var init_EventFlowTab = __esm({
31816
31872
  }
31817
31873
  });
31818
31874
  function GuardsPanel({ guards }) {
31819
- const [filter, setFilter] = React110.useState("all");
31875
+ const [filter, setFilter] = React111.useState("all");
31820
31876
  if (guards.length === 0) {
31821
31877
  return /* @__PURE__ */ jsx(
31822
31878
  EmptyState,
@@ -31829,7 +31885,7 @@ function GuardsPanel({ guards }) {
31829
31885
  }
31830
31886
  const passedCount = guards.filter((g) => g.result).length;
31831
31887
  const failedCount = guards.length - passedCount;
31832
- const filteredGuards = React110.useMemo(() => {
31888
+ const filteredGuards = React111.useMemo(() => {
31833
31889
  if (filter === "all") return guards;
31834
31890
  if (filter === "passed") return guards.filter((g) => g.result);
31835
31891
  return guards.filter((g) => !g.result);
@@ -31990,10 +32046,10 @@ function EffectBadge({ effect }) {
31990
32046
  ] });
31991
32047
  }
31992
32048
  function TransitionTimeline({ transitions }) {
31993
- const containerRef = React110.useRef(null);
31994
- const [autoScroll, setAutoScroll] = React110.useState(true);
31995
- const [expandedId, setExpandedId] = React110.useState(null);
31996
- React110.useEffect(() => {
32049
+ const containerRef = React111.useRef(null);
32050
+ const [autoScroll, setAutoScroll] = React111.useState(true);
32051
+ const [expandedId, setExpandedId] = React111.useState(null);
32052
+ React111.useEffect(() => {
31997
32053
  if (autoScroll && containerRef.current) {
31998
32054
  containerRef.current.scrollTop = containerRef.current.scrollHeight;
31999
32055
  }
@@ -32279,9 +32335,9 @@ function getAllEvents(traits2) {
32279
32335
  }
32280
32336
  function EventDispatcherTab({ traits: traits2, schema }) {
32281
32337
  const eventBus = useEventBus();
32282
- const [log3, setLog] = React110.useState([]);
32283
- const prevStatesRef = React110.useRef(/* @__PURE__ */ new Map());
32284
- React110.useEffect(() => {
32338
+ const [log3, setLog] = React111.useState([]);
32339
+ const prevStatesRef = React111.useRef(/* @__PURE__ */ new Map());
32340
+ React111.useEffect(() => {
32285
32341
  for (const trait of traits2) {
32286
32342
  const prev = prevStatesRef.current.get(trait.id);
32287
32343
  if (prev && prev !== trait.currentState) {
@@ -32451,10 +32507,10 @@ function VerifyModePanel({
32451
32507
  serverCount,
32452
32508
  localCount
32453
32509
  }) {
32454
- const [expanded, setExpanded] = React110.useState(true);
32455
- const scrollRef = React110.useRef(null);
32456
- const prevCountRef = React110.useRef(0);
32457
- React110.useEffect(() => {
32510
+ const [expanded, setExpanded] = React111.useState(true);
32511
+ const scrollRef = React111.useRef(null);
32512
+ const prevCountRef = React111.useRef(0);
32513
+ React111.useEffect(() => {
32458
32514
  if (expanded && transitions.length > prevCountRef.current && scrollRef.current) {
32459
32515
  scrollRef.current.scrollTop = scrollRef.current.scrollHeight;
32460
32516
  }
@@ -32520,10 +32576,10 @@ function RuntimeDebugger({
32520
32576
  defaultTab,
32521
32577
  schema
32522
32578
  }) {
32523
- const [isCollapsed, setIsCollapsed] = React110.useState(mode === "verify" ? true : defaultCollapsed);
32524
- const [isVisible, setIsVisible] = React110.useState(mode === "inline" || mode === "verify" || isDebugEnabled2());
32579
+ const [isCollapsed, setIsCollapsed] = React111.useState(mode === "verify" ? true : defaultCollapsed);
32580
+ const [isVisible, setIsVisible] = React111.useState(mode === "inline" || mode === "verify" || isDebugEnabled2());
32525
32581
  const debugData = useDebugData();
32526
- React110.useEffect(() => {
32582
+ React111.useEffect(() => {
32527
32583
  if (mode === "inline") return;
32528
32584
  return onDebugToggle((enabled) => {
32529
32585
  setIsVisible(enabled);
@@ -32532,7 +32588,7 @@ function RuntimeDebugger({
32532
32588
  }
32533
32589
  });
32534
32590
  }, [mode]);
32535
- React110.useEffect(() => {
32591
+ React111.useEffect(() => {
32536
32592
  if (mode === "inline") return;
32537
32593
  const handleKeyDown = (e) => {
32538
32594
  if (e.key === "`" && isVisible) {
@@ -33081,7 +33137,7 @@ function SequenceBar({
33081
33137
  onSlotRemove(index);
33082
33138
  }, [onSlotRemove, playing]);
33083
33139
  const paddedSlots = Array.from({ length: maxSlots }, (_, i) => slots[i]);
33084
- return /* @__PURE__ */ jsx(HStack, { className: cn("items-center", className), gap: "sm", children: paddedSlots.map((slot, i) => /* @__PURE__ */ jsxs(React110__default.Fragment, { children: [
33140
+ return /* @__PURE__ */ jsx(HStack, { className: cn("items-center", className), gap: "sm", children: paddedSlots.map((slot, i) => /* @__PURE__ */ jsxs(React111__default.Fragment, { children: [
33085
33141
  i > 0 && /* @__PURE__ */ jsx(
33086
33142
  Typography,
33087
33143
  {
@@ -34537,7 +34593,7 @@ var init_StatCard2 = __esm({
34537
34593
  const labelToUse = propLabel ?? propTitle;
34538
34594
  const eventBus = useEventBus();
34539
34595
  const { t } = useTranslate();
34540
- const handleActionClick = React110__default.useCallback(() => {
34596
+ const handleActionClick = React111__default.useCallback(() => {
34541
34597
  if (action?.event) {
34542
34598
  eventBus.emit(`UI:${action.event}`, {});
34543
34599
  }
@@ -34548,7 +34604,7 @@ var init_StatCard2 = __esm({
34548
34604
  const data = Array.isArray(entity) ? entity : entity ? [entity] : [];
34549
34605
  const isLoading = externalLoading ?? false;
34550
34606
  const error = externalError;
34551
- const computeMetricValue = React110__default.useCallback(
34607
+ const computeMetricValue = React111__default.useCallback(
34552
34608
  (metric, items) => {
34553
34609
  if (metric.value !== void 0) {
34554
34610
  return metric.value;
@@ -34587,7 +34643,7 @@ var init_StatCard2 = __esm({
34587
34643
  },
34588
34644
  []
34589
34645
  );
34590
- const schemaStats = React110__default.useMemo(() => {
34646
+ const schemaStats = React111__default.useMemo(() => {
34591
34647
  if (!metrics || metrics.length === 0) return null;
34592
34648
  return metrics.map((metric) => ({
34593
34649
  label: metric.label,
@@ -34595,7 +34651,7 @@ var init_StatCard2 = __esm({
34595
34651
  format: metric.format
34596
34652
  }));
34597
34653
  }, [metrics, data, computeMetricValue]);
34598
- const calculatedTrend = React110__default.useMemo(() => {
34654
+ const calculatedTrend = React111__default.useMemo(() => {
34599
34655
  if (manualTrend !== void 0) return manualTrend;
34600
34656
  if (previousValue === void 0 || currentValue === void 0)
34601
34657
  return void 0;
@@ -35650,7 +35706,7 @@ var init_Timeline = __esm({
35650
35706
  }) => {
35651
35707
  const { t } = useTranslate();
35652
35708
  const entityData = Array.isArray(entity) ? entity : [];
35653
- const items = React110__default.useMemo(() => {
35709
+ const items = React111__default.useMemo(() => {
35654
35710
  if (propItems) return propItems;
35655
35711
  if (entityData.length === 0) return [];
35656
35712
  return entityData.map((record, idx) => {
@@ -35807,7 +35863,7 @@ var init_TimerDisplay = __esm({
35807
35863
  }
35808
35864
  });
35809
35865
  function extractToastProps(children) {
35810
- if (!React110__default.isValidElement(children)) {
35866
+ if (!React111__default.isValidElement(children)) {
35811
35867
  if (typeof children === "string") {
35812
35868
  return { message: children };
35813
35869
  }
@@ -35845,7 +35901,7 @@ var init_ToastSlot = __esm({
35845
35901
  eventBus.emit("UI:CLOSE");
35846
35902
  };
35847
35903
  if (!isVisible) return null;
35848
- const isCustomContent = React110__default.isValidElement(children) && !message;
35904
+ const isCustomContent = React111__default.isValidElement(children) && !message;
35849
35905
  return /* @__PURE__ */ jsx(Box, { className: "fixed bottom-4 right-4 z-50", children: isCustomContent ? children : /* @__PURE__ */ jsx(
35850
35906
  Toast,
35851
35907
  {
@@ -36114,7 +36170,7 @@ var init_WizardContainer = __esm({
36114
36170
  const isCompleted = index < currentStep;
36115
36171
  const stepKey = step.id ?? step.tabId ?? `step-${index}`;
36116
36172
  const stepTitle = step.title ?? step.name ?? `Step ${index + 1}`;
36117
- return /* @__PURE__ */ jsxs(React110__default.Fragment, { children: [
36173
+ return /* @__PURE__ */ jsxs(React111__default.Fragment, { children: [
36118
36174
  /* @__PURE__ */ jsx(
36119
36175
  Button,
36120
36176
  {
@@ -36564,12 +36620,12 @@ var init_XPBar = __esm({
36564
36620
  }
36565
36621
  });
36566
36622
  function lazyThree(name, loader) {
36567
- const Lazy = React110__default.lazy(() => loader().then((m) => ({ default: m[name] })));
36623
+ const Lazy = React111__default.lazy(() => loader().then((m) => ({ default: m[name] })));
36568
36624
  function ThreeWrapper(props) {
36569
- return React110__default.createElement(
36570
- React110__default.Suspense,
36625
+ return React111__default.createElement(
36626
+ React111__default.Suspense,
36571
36627
  { fallback: null },
36572
- React110__default.createElement(Lazy, props)
36628
+ React111__default.createElement(Lazy, props)
36573
36629
  );
36574
36630
  }
36575
36631
  ThreeWrapper.displayName = `Lazy(${name})`;
@@ -37057,7 +37113,7 @@ function SuspenseConfigProvider({
37057
37113
  config,
37058
37114
  children
37059
37115
  }) {
37060
- return React110__default.createElement(
37116
+ return React111__default.createElement(
37061
37117
  SuspenseConfigContext.Provider,
37062
37118
  { value: config },
37063
37119
  children
@@ -37521,7 +37577,7 @@ function renderPatternChildren(children, onDismiss, parentId = "root", parentPat
37521
37577
  const key = `${parentId}-${index}-trait:${traitName}`;
37522
37578
  return /* @__PURE__ */ jsx(TraitFrame, { traitName }, key);
37523
37579
  }
37524
- return /* @__PURE__ */ jsx(React110__default.Fragment, { children: child }, `${parentId}-${index}`);
37580
+ return /* @__PURE__ */ jsx(React111__default.Fragment, { children: child }, `${parentId}-${index}`);
37525
37581
  }
37526
37582
  if (!child || typeof child !== "object") return null;
37527
37583
  const childId = `${parentId}-${index}`;
@@ -37583,6 +37639,14 @@ function SlotContentRenderer({
37583
37639
  patternPath
37584
37640
  }) {
37585
37641
  const entityProp = content.props.entity;
37642
+ if (content.pattern === "form-section") {
37643
+ slotLog.debug("SlotContentRenderer:form-section-render", {
37644
+ contentId: content.id,
37645
+ sourceTrait: content.sourceTrait,
37646
+ entityRefId: refId(entityProp),
37647
+ entityIsObject: entityProp !== null && typeof entityProp === "object" && !Array.isArray(entityProp)
37648
+ });
37649
+ }
37586
37650
  if (typeof entityProp === "string" && entityProp.length > 0) {
37587
37651
  if (typeof process !== "undefined" && process.env && process.env.NODE_ENV !== "production") {
37588
37652
  throw new Error(
@@ -37726,6 +37790,7 @@ var init_UISlotRenderer = __esm({
37726
37790
  init_Box();
37727
37791
  init_Typography();
37728
37792
  init_useEventBus();
37793
+ init_SlotsContext();
37729
37794
  init_cn();
37730
37795
  init_ErrorBoundary();
37731
37796
  init_Skeleton();
@@ -37929,7 +37994,7 @@ var FormSection = ({
37929
37994
  columns = 1,
37930
37995
  className
37931
37996
  }) => {
37932
- const [collapsed, setCollapsed] = React110__default.useState(defaultCollapsed);
37997
+ const [collapsed, setCollapsed] = React111__default.useState(defaultCollapsed);
37933
37998
  const { t } = useTranslate();
37934
37999
  const eventBus = useEventBus();
37935
38000
  const gridClass = {
@@ -37937,7 +38002,7 @@ var FormSection = ({
37937
38002
  2: "grid-cols-1 md:grid-cols-2",
37938
38003
  3: "grid-cols-1 md:grid-cols-2 lg:grid-cols-3"
37939
38004
  }[columns];
37940
- React110__default.useCallback(() => {
38005
+ React111__default.useCallback(() => {
37941
38006
  if (collapsible) {
37942
38007
  setCollapsed((prev) => !prev);
37943
38008
  eventBus.emit("UI:TOGGLE_COLLAPSE", { collapsed: !collapsed });