@almadar/ui 5.24.0 → 5.25.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/avl/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
- import * as React95 from 'react';
3
- import React95__default, { createContext, useState, useMemo, useRef, useEffect, useContext, useCallback, Suspense, useLayoutEffect, Profiler, useReducer, useSyncExternalStore, lazy, useId } from 'react';
2
+ import * as React97 from 'react';
3
+ import React97__default, { createContext, useState, useMemo, useRef, useEffect, useContext, useCallback, Suspense, useLayoutEffect, Profiler, useReducer, useSyncExternalStore, lazy, useId } from 'react';
4
4
  import { OrbitalProvider, EventBusContext, useTraitScope, VerificationProvider, TraitScopeProvider } from '@almadar/ui/providers';
5
5
  import { createLogger, isLogLevelEnabled } from '@almadar/logger';
6
6
  import ELK from 'elkjs/lib/elk.bundled.js';
@@ -3509,7 +3509,7 @@ var init_Box = __esm({
3509
3509
  fixed: "fixed",
3510
3510
  sticky: "sticky"
3511
3511
  };
3512
- Box = React95__default.forwardRef(
3512
+ Box = React97__default.forwardRef(
3513
3513
  ({
3514
3514
  padding,
3515
3515
  paddingX,
@@ -3559,7 +3559,7 @@ var init_Box = __esm({
3559
3559
  onMouseLeave?.(e);
3560
3560
  }, [hoverEvent, eventBus, onMouseLeave]);
3561
3561
  const isClickable = action || onClick;
3562
- return React95__default.createElement(
3562
+ return React97__default.createElement(
3563
3563
  Component,
3564
3564
  {
3565
3565
  ref,
@@ -4149,7 +4149,7 @@ var init_MiniStateMachine = __esm({
4149
4149
  const x = 2 + i * (NODE_W + GAP + ARROW_W + GAP);
4150
4150
  const tc = transitionCounts[s.name] ?? 0;
4151
4151
  const role = getStateRole(s.name, s.isInitial, s.isTerminal, tc, maxTC);
4152
- return /* @__PURE__ */ jsxs(React95__default.Fragment, { children: [
4152
+ return /* @__PURE__ */ jsxs(React97__default.Fragment, { children: [
4153
4153
  /* @__PURE__ */ jsx(
4154
4154
  AvlState,
4155
4155
  {
@@ -5212,7 +5212,7 @@ var init_Icon = __esm({
5212
5212
  const directIcon = typeof icon === "string" ? void 0 : icon;
5213
5213
  const effectiveName = typeof icon === "string" ? icon : name;
5214
5214
  const family = useIconFamily();
5215
- const RenderedComponent = React95__default.useMemo(() => {
5215
+ const RenderedComponent = React97__default.useMemo(() => {
5216
5216
  if (directIcon) return null;
5217
5217
  return effectiveName ? resolveIconForFamily(effectiveName, family) : null;
5218
5218
  }, [directIcon, effectiveName, family]);
@@ -5270,7 +5270,7 @@ function resolveIconProp(value, sizeClass) {
5270
5270
  const IconComp = value;
5271
5271
  return /* @__PURE__ */ jsx(IconComp, { className: sizeClass });
5272
5272
  }
5273
- if (React95__default.isValidElement(value)) {
5273
+ if (React97__default.isValidElement(value)) {
5274
5274
  return value;
5275
5275
  }
5276
5276
  if (typeof value === "object" && value !== null && "render" in value) {
@@ -5346,7 +5346,7 @@ var init_Button = __esm({
5346
5346
  md: "h-icon-default w-icon-default",
5347
5347
  lg: "h-icon-default w-icon-default"
5348
5348
  };
5349
- Button = React95__default.forwardRef(
5349
+ Button = React97__default.forwardRef(
5350
5350
  ({
5351
5351
  className,
5352
5352
  variant = "primary",
@@ -5411,7 +5411,7 @@ var Dialog;
5411
5411
  var init_Dialog = __esm({
5412
5412
  "components/core/atoms/Dialog.tsx"() {
5413
5413
  init_cn();
5414
- Dialog = React95__default.forwardRef(
5414
+ Dialog = React97__default.forwardRef(
5415
5415
  ({
5416
5416
  role = "dialog",
5417
5417
  "aria-modal": ariaModal = true,
@@ -5914,7 +5914,7 @@ var init_Badge = __esm({
5914
5914
  md: "px-2.5 py-1 text-sm",
5915
5915
  lg: "px-3 py-1.5 text-base"
5916
5916
  };
5917
- Badge = React95__default.forwardRef(
5917
+ Badge = React97__default.forwardRef(
5918
5918
  ({ className, variant = "default", size = "sm", amount, label, icon, children, onRemove, removeLabel, ...props }, ref) => {
5919
5919
  const iconSizes3 = {
5920
5920
  sm: "h-icon-default w-icon-default",
@@ -6230,7 +6230,7 @@ var init_SvgFlow = __esm({
6230
6230
  opacity = 1,
6231
6231
  className
6232
6232
  }) => {
6233
- const markerId = React95__default.useMemo(() => {
6233
+ const markerId = React97__default.useMemo(() => {
6234
6234
  flowIdCounter += 1;
6235
6235
  return `almadar-flow-arrow-${flowIdCounter}`;
6236
6236
  }, []);
@@ -6773,7 +6773,7 @@ var init_SvgRing = __esm({
6773
6773
  className,
6774
6774
  label
6775
6775
  }) => {
6776
- const gradientId = React95__default.useMemo(() => {
6776
+ const gradientId = React97__default.useMemo(() => {
6777
6777
  ringIdCounter += 1;
6778
6778
  return `almadar-ring-glow-${ringIdCounter}`;
6779
6779
  }, []);
@@ -6935,7 +6935,7 @@ var init_Input = __esm({
6935
6935
  "components/core/atoms/Input.tsx"() {
6936
6936
  init_cn();
6937
6937
  init_Icon();
6938
- Input = React95__default.forwardRef(
6938
+ Input = React97__default.forwardRef(
6939
6939
  ({
6940
6940
  className,
6941
6941
  inputType,
@@ -7056,7 +7056,7 @@ var Label;
7056
7056
  var init_Label = __esm({
7057
7057
  "components/core/atoms/Label.tsx"() {
7058
7058
  init_cn();
7059
- Label = React95__default.forwardRef(
7059
+ Label = React97__default.forwardRef(
7060
7060
  ({ className, required, children, ...props }, ref) => {
7061
7061
  return /* @__PURE__ */ jsxs(
7062
7062
  "label",
@@ -7082,7 +7082,7 @@ var Textarea;
7082
7082
  var init_Textarea = __esm({
7083
7083
  "components/core/atoms/Textarea.tsx"() {
7084
7084
  init_cn();
7085
- Textarea = React95__default.forwardRef(
7085
+ Textarea = React97__default.forwardRef(
7086
7086
  ({ className, error, ...props }, ref) => {
7087
7087
  return /* @__PURE__ */ jsx(
7088
7088
  "textarea",
@@ -7112,7 +7112,7 @@ var init_Select = __esm({
7112
7112
  "components/core/atoms/Select.tsx"() {
7113
7113
  init_cn();
7114
7114
  init_Icon();
7115
- Select = React95__default.forwardRef(
7115
+ Select = React97__default.forwardRef(
7116
7116
  ({ className, options, placeholder, error, ...props }, ref) => {
7117
7117
  return /* @__PURE__ */ jsxs("div", { className: "relative", children: [
7118
7118
  /* @__PURE__ */ jsxs(
@@ -7154,7 +7154,7 @@ var Checkbox;
7154
7154
  var init_Checkbox = __esm({
7155
7155
  "components/core/atoms/Checkbox.tsx"() {
7156
7156
  init_cn();
7157
- Checkbox = React95__default.forwardRef(
7157
+ Checkbox = React97__default.forwardRef(
7158
7158
  ({ className, label, id, ...props }, ref) => {
7159
7159
  const inputId = id || `checkbox-${Math.random().toString(36).substr(2, 9)}`;
7160
7160
  return /* @__PURE__ */ jsxs("div", { className: "flex items-center", children: [
@@ -7245,7 +7245,7 @@ var init_Card = __esm({
7245
7245
  chip: "shadow-none rounded-pill border-[length:var(--border-width)] border-border",
7246
7246
  "tile-image-first": "p-0 overflow-hidden"
7247
7247
  };
7248
- Card = React95__default.forwardRef(
7248
+ Card = React97__default.forwardRef(
7249
7249
  ({
7250
7250
  className,
7251
7251
  variant = "bordered",
@@ -7283,9 +7283,9 @@ var init_Card = __esm({
7283
7283
  }
7284
7284
  );
7285
7285
  Card.displayName = "Card";
7286
- CardHeader = React95__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn("mb-4", className), ...props }));
7286
+ CardHeader = React97__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn("mb-4", className), ...props }));
7287
7287
  CardHeader.displayName = "CardHeader";
7288
- CardTitle = React95__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
7288
+ CardTitle = React97__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
7289
7289
  "h3",
7290
7290
  {
7291
7291
  ref,
@@ -7298,11 +7298,11 @@ var init_Card = __esm({
7298
7298
  }
7299
7299
  ));
7300
7300
  CardTitle.displayName = "CardTitle";
7301
- CardContent = React95__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn("", className), ...props }));
7301
+ CardContent = React97__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn("", className), ...props }));
7302
7302
  CardContent.displayName = "CardContent";
7303
7303
  CardBody = CardContent;
7304
7304
  CardBody.displayName = "CardBody";
7305
- CardFooter = React95__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
7305
+ CardFooter = React97__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
7306
7306
  "div",
7307
7307
  {
7308
7308
  ref,
@@ -7357,7 +7357,7 @@ var init_FilterPill = __esm({
7357
7357
  md: "w-3.5 h-3.5",
7358
7358
  lg: "w-4 h-4"
7359
7359
  };
7360
- FilterPill = React95__default.forwardRef(
7360
+ FilterPill = React97__default.forwardRef(
7361
7361
  ({
7362
7362
  className,
7363
7363
  variant = "default",
@@ -7434,7 +7434,7 @@ var init_Spinner = __esm({
7434
7434
  md: "h-6 w-6",
7435
7435
  lg: "h-8 w-8"
7436
7436
  };
7437
- Spinner = React95__default.forwardRef(
7437
+ Spinner = React97__default.forwardRef(
7438
7438
  ({ className, size = "md", ...props }, ref) => {
7439
7439
  return /* @__PURE__ */ jsx(
7440
7440
  "div",
@@ -7513,8 +7513,8 @@ var init_Avatar = __esm({
7513
7513
  actionPayload
7514
7514
  }) => {
7515
7515
  const eventBus = useEventBus();
7516
- const [imgFailed, setImgFailed] = React95__default.useState(false);
7517
- React95__default.useEffect(() => {
7516
+ const [imgFailed, setImgFailed] = React97__default.useState(false);
7517
+ React97__default.useEffect(() => {
7518
7518
  setImgFailed(false);
7519
7519
  }, [src]);
7520
7520
  const initials = providedInitials ?? (name ? generateInitials(name) : void 0);
@@ -7899,7 +7899,7 @@ var init_Radio = __esm({
7899
7899
  md: "w-2.5 h-2.5",
7900
7900
  lg: "w-3 h-3"
7901
7901
  };
7902
- Radio = React95__default.forwardRef(
7902
+ Radio = React97__default.forwardRef(
7903
7903
  ({
7904
7904
  label,
7905
7905
  helperText,
@@ -7916,12 +7916,12 @@ var init_Radio = __esm({
7916
7916
  onChange,
7917
7917
  ...props
7918
7918
  }, ref) => {
7919
- const reactId = React95__default.useId();
7919
+ const reactId = React97__default.useId();
7920
7920
  const baseId = id || `radio-${reactId}`;
7921
7921
  const hasError = !!error;
7922
7922
  const eventBus = useEventBus();
7923
- const [selected, setSelected] = React95__default.useState(value);
7924
- React95__default.useEffect(() => {
7923
+ const [selected, setSelected] = React97__default.useState(value);
7924
+ React97__default.useEffect(() => {
7925
7925
  if (value !== void 0) setSelected(value);
7926
7926
  }, [value]);
7927
7927
  const pick = (next, e) => {
@@ -8103,7 +8103,7 @@ var init_Switch = __esm({
8103
8103
  "components/core/atoms/Switch.tsx"() {
8104
8104
  "use client";
8105
8105
  init_cn();
8106
- Switch = React95.forwardRef(
8106
+ Switch = React97.forwardRef(
8107
8107
  ({
8108
8108
  checked,
8109
8109
  defaultChecked = false,
@@ -8114,10 +8114,10 @@ var init_Switch = __esm({
8114
8114
  name,
8115
8115
  className
8116
8116
  }, ref) => {
8117
- const [isChecked, setIsChecked] = React95.useState(
8117
+ const [isChecked, setIsChecked] = React97.useState(
8118
8118
  checked !== void 0 ? checked : defaultChecked
8119
8119
  );
8120
- React95.useEffect(() => {
8120
+ React97.useEffect(() => {
8121
8121
  if (checked !== void 0) {
8122
8122
  setIsChecked(checked);
8123
8123
  }
@@ -8562,7 +8562,7 @@ var Aside;
8562
8562
  var init_Aside = __esm({
8563
8563
  "components/core/atoms/Aside.tsx"() {
8564
8564
  init_cn();
8565
- Aside = React95__default.forwardRef(
8565
+ Aside = React97__default.forwardRef(
8566
8566
  ({ className, children, ...rest }, ref) => /* @__PURE__ */ jsx("aside", { ref, className: cn(className), ...rest, children })
8567
8567
  );
8568
8568
  Aside.displayName = "Aside";
@@ -8640,8 +8640,8 @@ var init_LawReferenceTooltip = __esm({
8640
8640
  className
8641
8641
  }) => {
8642
8642
  const { t } = useTranslate();
8643
- const [isVisible, setIsVisible] = React95__default.useState(false);
8644
- const timeoutRef = React95__default.useRef(null);
8643
+ const [isVisible, setIsVisible] = React97__default.useState(false);
8644
+ const timeoutRef = React97__default.useRef(null);
8645
8645
  const handleMouseEnter = () => {
8646
8646
  if (timeoutRef.current) clearTimeout(timeoutRef.current);
8647
8647
  timeoutRef.current = setTimeout(() => setIsVisible(true), 200);
@@ -8650,7 +8650,7 @@ var init_LawReferenceTooltip = __esm({
8650
8650
  if (timeoutRef.current) clearTimeout(timeoutRef.current);
8651
8651
  setIsVisible(false);
8652
8652
  };
8653
- React95__default.useEffect(() => {
8653
+ React97__default.useEffect(() => {
8654
8654
  return () => {
8655
8655
  if (timeoutRef.current) clearTimeout(timeoutRef.current);
8656
8656
  };
@@ -8860,7 +8860,7 @@ var init_StatusDot = __esm({
8860
8860
  md: "w-2.5 h-2.5",
8861
8861
  lg: "w-3 h-3"
8862
8862
  };
8863
- StatusDot = React95__default.forwardRef(
8863
+ StatusDot = React97__default.forwardRef(
8864
8864
  ({ className, status = "offline", pulse = false, size = "md", label, ...props }, ref) => {
8865
8865
  return /* @__PURE__ */ jsx(
8866
8866
  "span",
@@ -8914,7 +8914,7 @@ var init_TrendIndicator = __esm({
8914
8914
  down: "trending-down",
8915
8915
  flat: "arrow-right"
8916
8916
  };
8917
- TrendIndicator = React95__default.forwardRef(
8917
+ TrendIndicator = React97__default.forwardRef(
8918
8918
  ({
8919
8919
  className,
8920
8920
  value,
@@ -8981,7 +8981,7 @@ var init_RangeSlider = __esm({
8981
8981
  md: "w-4 h-4",
8982
8982
  lg: "w-5 h-5"
8983
8983
  };
8984
- RangeSlider = React95__default.forwardRef(
8984
+ RangeSlider = React97__default.forwardRef(
8985
8985
  ({
8986
8986
  className,
8987
8987
  min = 0,
@@ -9489,7 +9489,7 @@ var init_ContentSection = __esm({
9489
9489
  md: "py-16",
9490
9490
  lg: "py-24"
9491
9491
  };
9492
- ContentSection = React95__default.forwardRef(
9492
+ ContentSection = React97__default.forwardRef(
9493
9493
  ({ children, background = "default", padding = "lg", id, className }, ref) => {
9494
9494
  return /* @__PURE__ */ jsx(
9495
9495
  Box,
@@ -10023,7 +10023,7 @@ var init_AnimatedReveal = __esm({
10023
10023
  "scale-up": { opacity: 1, transform: "scale(1) translateY(0)" },
10024
10024
  "none": {}
10025
10025
  };
10026
- AnimatedReveal = React95__default.forwardRef(
10026
+ AnimatedReveal = React97__default.forwardRef(
10027
10027
  ({
10028
10028
  trigger = "scroll",
10029
10029
  animation = "fade-up",
@@ -10183,7 +10183,7 @@ var init_AnimatedGraphic = __esm({
10183
10183
  "components/marketing/atoms/AnimatedGraphic.tsx"() {
10184
10184
  "use client";
10185
10185
  init_cn();
10186
- AnimatedGraphic = React95__default.forwardRef(
10186
+ AnimatedGraphic = React97__default.forwardRef(
10187
10187
  ({
10188
10188
  src,
10189
10189
  svgContent,
@@ -10206,7 +10206,7 @@ var init_AnimatedGraphic = __esm({
10206
10206
  const fetchedSvg = useFetchedSvg(svgContent ? void 0 : src);
10207
10207
  const resolvedSvg = svgContent ?? fetchedSvg;
10208
10208
  const prevAnimateRef = useRef(animate);
10209
- const setRef = React95__default.useCallback(
10209
+ const setRef = React97__default.useCallback(
10210
10210
  (node) => {
10211
10211
  containerRef.current = node;
10212
10212
  if (typeof ref === "function") ref(node);
@@ -10431,9 +10431,9 @@ function ScoreDisplay({
10431
10431
  ...rest
10432
10432
  }) {
10433
10433
  const resolvedValue = typeof value === "number" && !Number.isNaN(value) ? value : typeof rest.score === "number" && !Number.isNaN(rest.score) ? rest.score : 0;
10434
- const [displayValue, setDisplayValue] = React95.useState(resolvedValue);
10435
- const [isAnimating, setIsAnimating] = React95.useState(false);
10436
- React95.useEffect(() => {
10434
+ const [displayValue, setDisplayValue] = React97.useState(resolvedValue);
10435
+ const [isAnimating, setIsAnimating] = React97.useState(false);
10436
+ React97.useEffect(() => {
10437
10437
  if (!animated || displayValue === resolvedValue) {
10438
10438
  setDisplayValue(resolvedValue);
10439
10439
  return;
@@ -10503,9 +10503,9 @@ function ControlButton({
10503
10503
  className
10504
10504
  }) {
10505
10505
  const eventBus = useEventBus();
10506
- const [isPressed, setIsPressed] = React95.useState(false);
10506
+ const [isPressed, setIsPressed] = React97.useState(false);
10507
10507
  const actualPressed = pressed ?? isPressed;
10508
- const handlePointerDown = React95.useCallback(
10508
+ const handlePointerDown = React97.useCallback(
10509
10509
  (e) => {
10510
10510
  e.preventDefault();
10511
10511
  if (disabled) return;
@@ -10515,7 +10515,7 @@ function ControlButton({
10515
10515
  },
10516
10516
  [disabled, pressEvent, eventBus, onPress]
10517
10517
  );
10518
- const handlePointerUp = React95.useCallback(
10518
+ const handlePointerUp = React97.useCallback(
10519
10519
  (e) => {
10520
10520
  e.preventDefault();
10521
10521
  if (disabled) return;
@@ -10525,7 +10525,7 @@ function ControlButton({
10525
10525
  },
10526
10526
  [disabled, releaseEvent, eventBus, onRelease]
10527
10527
  );
10528
- const handlePointerLeave = React95.useCallback(
10528
+ const handlePointerLeave = React97.useCallback(
10529
10529
  (e) => {
10530
10530
  if (isPressed) {
10531
10531
  setIsPressed(false);
@@ -11014,8 +11014,8 @@ function XPBar({
11014
11014
  }) {
11015
11015
  const sizes = sizeMap9[size];
11016
11016
  const percentage = max > 0 ? Math.max(0, Math.min(100, current / max * 100)) : 0;
11017
- const [fillWidth, setFillWidth] = React95.useState(animated ? 0 : percentage);
11018
- React95.useEffect(() => {
11017
+ const [fillWidth, setFillWidth] = React97.useState(animated ? 0 : percentage);
11018
+ React97.useEffect(() => {
11019
11019
  if (!animated) {
11020
11020
  setFillWidth(percentage);
11021
11021
  return;
@@ -11441,9 +11441,9 @@ function MiniMap({
11441
11441
  viewportRect,
11442
11442
  className
11443
11443
  }) {
11444
- const canvasRef = React95.useRef(null);
11445
- const frameRef = React95.useRef(0);
11446
- React95.useEffect(() => {
11444
+ const canvasRef = React97.useRef(null);
11445
+ const frameRef = React97.useRef(0);
11446
+ React97.useEffect(() => {
11447
11447
  const canvas = canvasRef.current;
11448
11448
  if (!canvas) return;
11449
11449
  const ctx = canvas.getContext("2d");
@@ -11617,7 +11617,7 @@ var init_ErrorBoundary = __esm({
11617
11617
  }
11618
11618
  );
11619
11619
  };
11620
- ErrorBoundary = class extends React95__default.Component {
11620
+ ErrorBoundary = class extends React97__default.Component {
11621
11621
  constructor(props) {
11622
11622
  super(props);
11623
11623
  __publicField(this, "reset", () => {
@@ -12707,8 +12707,8 @@ var init_Tooltip = __esm({
12707
12707
  if (hideTimeoutRef.current) clearTimeout(hideTimeoutRef.current);
12708
12708
  };
12709
12709
  }, []);
12710
- const triggerElement = React95__default.isValidElement(children) ? children : /* @__PURE__ */ jsx("span", { children });
12711
- const trigger = React95__default.cloneElement(triggerElement, {
12710
+ const triggerElement = React97__default.isValidElement(children) ? children : /* @__PURE__ */ jsx("span", { children });
12711
+ const trigger = React97__default.cloneElement(triggerElement, {
12712
12712
  ref: triggerRef,
12713
12713
  onMouseEnter: handleMouseEnter,
12714
12714
  onMouseLeave: handleMouseLeave,
@@ -12855,8 +12855,8 @@ var init_Popover = __esm({
12855
12855
  onMouseEnter: handleOpen,
12856
12856
  onMouseLeave: handleClose
12857
12857
  };
12858
- const childElement = React95__default.isValidElement(children) ? children : /* @__PURE__ */ jsx("span", { children });
12859
- const triggerElement = React95__default.cloneElement(
12858
+ const childElement = React97__default.isValidElement(children) ? children : /* @__PURE__ */ jsx("span", { children });
12859
+ const triggerElement = React97__default.cloneElement(
12860
12860
  childElement,
12861
12861
  {
12862
12862
  ref: triggerRef,
@@ -12982,8 +12982,8 @@ var init_Menu = __esm({
12982
12982
  };
12983
12983
  const effectivePosition = direction === "rtl" ? rtlMirror[position] ?? position : position;
12984
12984
  const subMenuSideClass = direction === "rtl" ? "right-full mr-2" : "left-full ml-2";
12985
- const triggerChild = React95__default.isValidElement(trigger) ? trigger : /* @__PURE__ */ jsx(Typography, { variant: "small", as: "span", children: trigger });
12986
- const triggerElement = React95__default.cloneElement(
12985
+ const triggerChild = React97__default.isValidElement(trigger) ? trigger : /* @__PURE__ */ jsx(Typography, { variant: "small", as: "span", children: trigger });
12986
+ const triggerElement = React97__default.cloneElement(
12987
12987
  triggerChild,
12988
12988
  {
12989
12989
  ref: triggerRef,
@@ -13390,12 +13390,12 @@ var init_MapView = __esm({
13390
13390
  shadowSize: [41, 41]
13391
13391
  });
13392
13392
  L.Marker.prototype.options.icon = defaultIcon;
13393
- const { useEffect: useEffect76, useRef: useRef68, useCallback: useCallback120, useState: useState112 } = React95__default;
13393
+ const { useEffect: useEffect76, useRef: useRef69, useCallback: useCallback122, useState: useState113 } = React97__default;
13394
13394
  const { Typography: Typography2 } = await Promise.resolve().then(() => (init_Typography(), Typography_exports));
13395
13395
  const { useEventBus: useEventBus3 } = await Promise.resolve().then(() => (init_useEventBus(), useEventBus_exports));
13396
13396
  function MapUpdater({ centerLat, centerLng, zoom }) {
13397
13397
  const map = useMap();
13398
- const prevRef = useRef68({ centerLat, centerLng, zoom });
13398
+ const prevRef = useRef69({ centerLat, centerLng, zoom });
13399
13399
  useEffect76(() => {
13400
13400
  const prev = prevRef.current;
13401
13401
  if (prev.centerLat !== centerLat || prev.centerLng !== centerLng || prev.zoom !== zoom) {
@@ -13435,8 +13435,8 @@ var init_MapView = __esm({
13435
13435
  showAttribution = true
13436
13436
  }) {
13437
13437
  const eventBus = useEventBus3();
13438
- const [clickedPosition, setClickedPosition] = useState112(null);
13439
- const handleMapClick = useCallback120((lat, lng) => {
13438
+ const [clickedPosition, setClickedPosition] = useState113(null);
13439
+ const handleMapClick = useCallback122((lat, lng) => {
13440
13440
  if (showClickedPin) {
13441
13441
  setClickedPosition({ lat, lng });
13442
13442
  }
@@ -13445,7 +13445,7 @@ var init_MapView = __esm({
13445
13445
  eventBus.emit(`UI:${mapClickEvent}`, { latitude: lat, longitude: lng });
13446
13446
  }
13447
13447
  }, [onMapClick, mapClickEvent, eventBus, showClickedPin]);
13448
- const handleMarkerClick = useCallback120((marker) => {
13448
+ const handleMarkerClick = useCallback122((marker) => {
13449
13449
  onMarkerClick?.(marker);
13450
13450
  if (markerClickEvent) {
13451
13451
  eventBus.emit(`UI:${markerClickEvent}`, { ...marker });
@@ -13636,7 +13636,7 @@ function InputPattern({
13636
13636
  fieldName
13637
13637
  }) {
13638
13638
  const { emit } = useEventBus();
13639
- const [localValue, setLocalValue] = React95__default.useState(value);
13639
+ const [localValue, setLocalValue] = React97__default.useState(value);
13640
13640
  const handleChange = (e) => {
13641
13641
  setLocalValue(e.target.value);
13642
13642
  if (onChange) {
@@ -13674,7 +13674,7 @@ function TextareaPattern({
13674
13674
  fieldName
13675
13675
  }) {
13676
13676
  const { emit } = useEventBus();
13677
- const [localValue, setLocalValue] = React95__default.useState(value);
13677
+ const [localValue, setLocalValue] = React97__default.useState(value);
13678
13678
  const handleChange = (e) => {
13679
13679
  setLocalValue(e.target.value);
13680
13680
  if (onChange) {
@@ -13706,7 +13706,7 @@ function SelectPattern({
13706
13706
  fieldName
13707
13707
  }) {
13708
13708
  const { emit } = useEventBus();
13709
- const [localValue, setLocalValue] = React95__default.useState(value);
13709
+ const [localValue, setLocalValue] = React97__default.useState(value);
13710
13710
  const handleChange = (e) => {
13711
13711
  setLocalValue(e.target.value);
13712
13712
  if (onChange) {
@@ -13735,7 +13735,7 @@ function CheckboxPattern({
13735
13735
  className
13736
13736
  }) {
13737
13737
  const { emit } = useEventBus();
13738
- const [localChecked, setLocalChecked] = React95__default.useState(checked);
13738
+ const [localChecked, setLocalChecked] = React97__default.useState(checked);
13739
13739
  const handleChange = (e) => {
13740
13740
  setLocalChecked(e.target.checked);
13741
13741
  if (onChange) {
@@ -13966,8 +13966,8 @@ function ActionButtons({
13966
13966
  disabled
13967
13967
  }) {
13968
13968
  const eventBus = useEventBus();
13969
- const [activeButtons, setActiveButtons] = React95.useState(/* @__PURE__ */ new Set());
13970
- const handlePress = React95.useCallback(
13969
+ const [activeButtons, setActiveButtons] = React97.useState(/* @__PURE__ */ new Set());
13970
+ const handlePress = React97.useCallback(
13971
13971
  (id) => {
13972
13972
  setActiveButtons((prev) => new Set(prev).add(id));
13973
13973
  if (actionEvent) eventBus.emit(`UI:${actionEvent}`, { id, pressed: true });
@@ -13975,7 +13975,7 @@ function ActionButtons({
13975
13975
  },
13976
13976
  [actionEvent, eventBus, onAction]
13977
13977
  );
13978
- const handleRelease = React95.useCallback(
13978
+ const handleRelease = React97.useCallback(
13979
13979
  (id) => {
13980
13980
  setActiveButtons((prev) => {
13981
13981
  const next = new Set(prev);
@@ -14256,9 +14256,262 @@ var init_AnimatedCounter = __esm({
14256
14256
  AnimatedCounter.displayName = "AnimatedCounter";
14257
14257
  }
14258
14258
  });
14259
+ var ALL_CATEGORY, GridPicker;
14260
+ var init_GridPicker = __esm({
14261
+ "components/core/molecules/GridPicker.tsx"() {
14262
+ "use client";
14263
+ init_cn();
14264
+ init_Input();
14265
+ init_Badge();
14266
+ init_Stack();
14267
+ ALL_CATEGORY = "__all__";
14268
+ GridPicker = ({
14269
+ items,
14270
+ value,
14271
+ onChange,
14272
+ categories,
14273
+ searchPlaceholder,
14274
+ renderThumbnail,
14275
+ cellSize = 32,
14276
+ className
14277
+ }) => {
14278
+ const [search, setSearch] = useState("");
14279
+ const [activeCategory, setActiveCategory] = useState(ALL_CATEGORY);
14280
+ const gridRef = useRef(null);
14281
+ const categoryChips = useMemo(() => {
14282
+ if (categories !== void 0) return categories;
14283
+ const seen = [];
14284
+ for (const item of items) {
14285
+ if (!seen.includes(item.category)) seen.push(item.category);
14286
+ }
14287
+ return seen;
14288
+ }, [categories, items]);
14289
+ const filtered = useMemo(() => {
14290
+ const needle = search.trim().toLowerCase();
14291
+ return items.filter((item) => {
14292
+ const matchesCategory = activeCategory === ALL_CATEGORY || item.category === activeCategory;
14293
+ const matchesSearch = needle === "" || item.label.toLowerCase().includes(needle);
14294
+ return matchesCategory && matchesSearch;
14295
+ });
14296
+ }, [items, search, activeCategory]);
14297
+ const select = useCallback(
14298
+ (item) => {
14299
+ onChange(item.id);
14300
+ },
14301
+ [onChange]
14302
+ );
14303
+ const handleKeyDown = useCallback(
14304
+ (e, index) => {
14305
+ const cells = gridRef.current?.querySelectorAll(
14306
+ "[data-gridpicker-cell]"
14307
+ );
14308
+ if (cells === void 0 || cells.length === 0) return;
14309
+ const columns = (() => {
14310
+ const grid = gridRef.current;
14311
+ if (grid === null) return 1;
14312
+ const style = window.getComputedStyle(grid);
14313
+ const cols = style.gridTemplateColumns.split(" ").filter(Boolean).length;
14314
+ return cols > 0 ? cols : 1;
14315
+ })();
14316
+ let next = -1;
14317
+ if (e.key === "ArrowRight") next = index + 1;
14318
+ else if (e.key === "ArrowLeft") next = index - 1;
14319
+ else if (e.key === "ArrowDown") next = index + columns;
14320
+ else if (e.key === "ArrowUp") next = index - columns;
14321
+ else if (e.key === "Enter" || e.key === " ") {
14322
+ e.preventDefault();
14323
+ select(filtered[index]);
14324
+ return;
14325
+ } else {
14326
+ return;
14327
+ }
14328
+ e.preventDefault();
14329
+ if (next >= 0 && next < cells.length) {
14330
+ cells[next].focus();
14331
+ }
14332
+ },
14333
+ [filtered, select]
14334
+ );
14335
+ return /* @__PURE__ */ jsxs(VStack, { gap: "sm", className: cn("w-full", className), children: [
14336
+ /* @__PURE__ */ jsx(
14337
+ Input,
14338
+ {
14339
+ type: "search",
14340
+ icon: "search",
14341
+ value: search,
14342
+ placeholder: searchPlaceholder,
14343
+ clearable: true,
14344
+ onClear: () => setSearch(""),
14345
+ onChange: (e) => setSearch(e.target.value)
14346
+ }
14347
+ ),
14348
+ categoryChips.length > 0 && /* @__PURE__ */ jsxs(HStack, { gap: "xs", wrap: true, children: [
14349
+ /* @__PURE__ */ jsx(
14350
+ Badge,
14351
+ {
14352
+ variant: activeCategory === ALL_CATEGORY ? "primary" : "neutral",
14353
+ size: "sm",
14354
+ role: "button",
14355
+ tabIndex: 0,
14356
+ "aria-pressed": activeCategory === ALL_CATEGORY,
14357
+ className: "cursor-pointer",
14358
+ onClick: () => setActiveCategory(ALL_CATEGORY),
14359
+ onKeyDown: (e) => {
14360
+ if (e.key === "Enter" || e.key === " ") {
14361
+ e.preventDefault();
14362
+ setActiveCategory(ALL_CATEGORY);
14363
+ }
14364
+ },
14365
+ children: "All"
14366
+ }
14367
+ ),
14368
+ categoryChips.map((category) => /* @__PURE__ */ jsx(
14369
+ Badge,
14370
+ {
14371
+ variant: activeCategory === category ? "primary" : "neutral",
14372
+ size: "sm",
14373
+ role: "button",
14374
+ tabIndex: 0,
14375
+ "aria-pressed": activeCategory === category,
14376
+ className: "cursor-pointer",
14377
+ onClick: () => setActiveCategory(category),
14378
+ onKeyDown: (e) => {
14379
+ if (e.key === "Enter" || e.key === " ") {
14380
+ e.preventDefault();
14381
+ setActiveCategory(category);
14382
+ }
14383
+ },
14384
+ children: category
14385
+ },
14386
+ category
14387
+ ))
14388
+ ] }),
14389
+ /* @__PURE__ */ jsx(
14390
+ "div",
14391
+ {
14392
+ ref: gridRef,
14393
+ role: "listbox",
14394
+ className: "grid gap-1 overflow-y-auto max-h-64 p-1",
14395
+ style: {
14396
+ gridTemplateColumns: `repeat(auto-fill, minmax(${cellSize}px, 1fr))`
14397
+ },
14398
+ children: filtered.map((item, index) => {
14399
+ const selected = item.id === value;
14400
+ return /* @__PURE__ */ jsx(
14401
+ "button",
14402
+ {
14403
+ type: "button",
14404
+ role: "option",
14405
+ "aria-selected": selected,
14406
+ "aria-label": item.label,
14407
+ title: item.label,
14408
+ "data-gridpicker-cell": true,
14409
+ tabIndex: selected || value === void 0 && index === 0 ? 0 : -1,
14410
+ onClick: () => select(item),
14411
+ onKeyDown: (e) => handleKeyDown(e, index),
14412
+ className: cn(
14413
+ "flex items-center justify-center rounded-sm",
14414
+ "transition-colors hover:bg-muted",
14415
+ "focus:outline-none focus:ring-1 focus:ring-ring",
14416
+ selected && "bg-primary/10 ring-1 ring-primary"
14417
+ ),
14418
+ style: { width: cellSize, height: cellSize },
14419
+ children: renderThumbnail(item)
14420
+ },
14421
+ item.id
14422
+ );
14423
+ })
14424
+ }
14425
+ )
14426
+ ] });
14427
+ };
14428
+ GridPicker.displayName = "GridPicker";
14429
+ }
14430
+ });
14431
+ function iconForKind(kind) {
14432
+ if (kind === "audio") return "music";
14433
+ if (kind === "model") return "box";
14434
+ return "file";
14435
+ }
14436
+ var THUMB_PX, IMAGE_KINDS, AssetPicker;
14437
+ var init_AssetPicker = __esm({
14438
+ "components/core/molecules/AssetPicker.tsx"() {
14439
+ "use client";
14440
+ init_GridPicker();
14441
+ init_Icon();
14442
+ THUMB_PX = 32;
14443
+ IMAGE_KINDS = /* @__PURE__ */ new Set([
14444
+ "image",
14445
+ "spritesheet",
14446
+ "scene",
14447
+ "portrait"
14448
+ ]);
14449
+ AssetPicker = ({
14450
+ assets,
14451
+ value,
14452
+ onChange,
14453
+ className
14454
+ }) => {
14455
+ const byUrl = useMemo(() => {
14456
+ const map = /* @__PURE__ */ new Map();
14457
+ for (const entry of assets) map.set(entry.url, entry);
14458
+ return map;
14459
+ }, [assets]);
14460
+ const items = useMemo(
14461
+ () => assets.map((entry) => ({
14462
+ id: entry.url,
14463
+ label: entry.name,
14464
+ category: entry.category
14465
+ })),
14466
+ [assets]
14467
+ );
14468
+ const categories = useMemo(() => {
14469
+ const seen = [];
14470
+ for (const entry of assets) {
14471
+ if (!seen.includes(entry.category)) seen.push(entry.category);
14472
+ }
14473
+ return seen;
14474
+ }, [assets]);
14475
+ const renderThumbnail = useCallback(
14476
+ (item) => {
14477
+ const entry = byUrl.get(item.id);
14478
+ if (entry === void 0) return null;
14479
+ if (IMAGE_KINDS.has(entry.kind)) {
14480
+ return /* @__PURE__ */ jsx(
14481
+ "img",
14482
+ {
14483
+ src: entry.thumbnailUrl ?? entry.url,
14484
+ alt: entry.name,
14485
+ loading: "lazy",
14486
+ width: THUMB_PX,
14487
+ height: THUMB_PX,
14488
+ style: { width: THUMB_PX, height: THUMB_PX, objectFit: "cover" }
14489
+ }
14490
+ );
14491
+ }
14492
+ return /* @__PURE__ */ jsx(Icon, { name: iconForKind(entry.kind), size: "sm" });
14493
+ },
14494
+ [byUrl]
14495
+ );
14496
+ return /* @__PURE__ */ jsx(
14497
+ GridPicker,
14498
+ {
14499
+ items,
14500
+ value,
14501
+ onChange,
14502
+ categories,
14503
+ renderThumbnail,
14504
+ cellSize: THUMB_PX,
14505
+ className
14506
+ }
14507
+ );
14508
+ };
14509
+ AssetPicker.displayName = "AssetPicker";
14510
+ }
14511
+ });
14259
14512
  var AuthLayout;
14260
14513
  var init_AuthLayout = __esm({
14261
- "components/core/templates/AuthLayout.tsx"() {
14514
+ "components/marketing/templates/AuthLayout.tsx"() {
14262
14515
  "use client";
14263
14516
  init_cn();
14264
14517
  init_Box();
@@ -16287,7 +16540,7 @@ var init_CodeBlock = __esm({
16287
16540
  CODE_LANGUAGE_SET = new Set(CODE_LANGUAGES);
16288
16541
  LINE_PROPS_FN = (n) => ({ "data-line": String(n - 1) });
16289
16542
  HIDDEN_LINE_NUMBERS = { display: "none" };
16290
- CodeBlock = React95__default.memo(
16543
+ CodeBlock = React97__default.memo(
16291
16544
  ({
16292
16545
  code: rawCode,
16293
16546
  language = "text",
@@ -16724,7 +16977,7 @@ var init_MarkdownContent = __esm({
16724
16977
  init_Box();
16725
16978
  init_CodeBlock();
16726
16979
  init_cn();
16727
- MarkdownContent = React95__default.memo(
16980
+ MarkdownContent = React97__default.memo(
16728
16981
  ({ content, direction, className }) => {
16729
16982
  const { t: _t } = useTranslate();
16730
16983
  const safeContent = typeof content === "string" ? content : String(content ?? "");
@@ -17820,7 +18073,7 @@ var init_StateMachineView = __esm({
17820
18073
  style: { top: title ? 30 : 0 },
17821
18074
  children: [
17822
18075
  entity && /* @__PURE__ */ jsx(EntityBox, { entity, config }),
17823
- states.map((state) => renderStateNode ? /* @__PURE__ */ jsx(React95__default.Fragment, { children: renderStateNode(state, config) }, state.id) : /* @__PURE__ */ jsx(
18076
+ states.map((state) => renderStateNode ? /* @__PURE__ */ jsx(React97__default.Fragment, { children: renderStateNode(state, config) }, state.id) : /* @__PURE__ */ jsx(
17824
18077
  StateNode,
17825
18078
  {
17826
18079
  state,
@@ -19425,7 +19678,7 @@ var init_Grid = __esm({
19425
19678
  as: Component = "div"
19426
19679
  }) => {
19427
19680
  const mergedStyle = rows2 ? { gridTemplateRows: `repeat(${rows2}, minmax(0, 1fr))`, ...style } : style;
19428
- return React95__default.createElement(
19681
+ return React97__default.createElement(
19429
19682
  Component,
19430
19683
  {
19431
19684
  className: cn(
@@ -22743,7 +22996,7 @@ var init_Carousel = __esm({
22743
22996
  });
22744
22997
  var CaseStudyOrganism;
22745
22998
  var init_CaseStudyOrganism = __esm({
22746
- "components/core/organisms/CaseStudyOrganism.tsx"() {
22999
+ "components/marketing/organisms/CaseStudyOrganism.tsx"() {
22747
23000
  "use client";
22748
23001
  init_cn();
22749
23002
  init_useEventBus();
@@ -24785,7 +25038,7 @@ function CraftingRecipe({
24785
25038
  className
24786
25039
  }) {
24787
25040
  const eventBus = useEventBus();
24788
- const handleCraft = React95.useCallback(() => {
25041
+ const handleCraft = React97.useCallback(() => {
24789
25042
  onCraft?.();
24790
25043
  if (craftEvent) {
24791
25044
  eventBus.emit(craftEvent, { output: output.label });
@@ -24802,7 +25055,7 @@ function CraftingRecipe({
24802
25055
  children: [
24803
25056
  /* @__PURE__ */ jsx(HStack, { gap: "xs", className: "flex-wrap items-center", children: inputs.map((ingredient, index) => {
24804
25057
  const hasSufficient = ingredient.available >= ingredient.required;
24805
- return /* @__PURE__ */ jsxs(React95.Fragment, { children: [
25058
+ return /* @__PURE__ */ jsxs(React97.Fragment, { children: [
24806
25059
  /* @__PURE__ */ jsx(Box, { className: "relative", children: /* @__PURE__ */ jsx(
24807
25060
  ItemSlot,
24808
25061
  {
@@ -24865,8 +25118,8 @@ function DPad({
24865
25118
  }) {
24866
25119
  const eventBus = useEventBus();
24867
25120
  const sizes = sizeMap15[size];
24868
- const [activeDirections, setActiveDirections] = React95.useState(/* @__PURE__ */ new Set());
24869
- const handlePress = React95.useCallback(
25121
+ const [activeDirections, setActiveDirections] = React97.useState(/* @__PURE__ */ new Set());
25122
+ const handlePress = React97.useCallback(
24870
25123
  (direction) => {
24871
25124
  setActiveDirections((prev) => new Set(prev).add(direction));
24872
25125
  if (directionEvent) eventBus.emit(`UI:${directionEvent}`, { direction, pressed: true });
@@ -24874,7 +25127,7 @@ function DPad({
24874
25127
  },
24875
25128
  [directionEvent, eventBus, onDirection]
24876
25129
  );
24877
- const handleRelease = React95.useCallback(
25130
+ const handleRelease = React97.useCallback(
24878
25131
  (direction) => {
24879
25132
  setActiveDirections((prev) => {
24880
25133
  const next = new Set(prev);
@@ -25560,14 +25813,14 @@ function useDataDnd(args) {
25560
25813
  const isZone = Boolean(dragGroup || accepts || sortable);
25561
25814
  const enabled = isZone || Boolean(dndRoot);
25562
25815
  const eventBus = useEventBus();
25563
- const parentRoot = React95__default.useContext(RootCtx);
25816
+ const parentRoot = React97__default.useContext(RootCtx);
25564
25817
  const isRoot = enabled && parentRoot === null;
25565
- const zoneId = React95__default.useId();
25818
+ const zoneId = React97__default.useId();
25566
25819
  const ownGroup = dragGroup ?? accepts ?? zoneId;
25567
- const [optimisticOrders, setOptimisticOrders] = React95__default.useState(() => /* @__PURE__ */ new Map());
25568
- const optimisticOrdersRef = React95__default.useRef(optimisticOrders);
25820
+ const [optimisticOrders, setOptimisticOrders] = React97__default.useState(() => /* @__PURE__ */ new Map());
25821
+ const optimisticOrdersRef = React97__default.useRef(optimisticOrders);
25569
25822
  optimisticOrdersRef.current = optimisticOrders;
25570
- const clearOptimisticOrder = React95__default.useCallback((group) => {
25823
+ const clearOptimisticOrder = React97__default.useCallback((group) => {
25571
25824
  setOptimisticOrders((prev) => {
25572
25825
  if (!prev.has(group)) return prev;
25573
25826
  const next = new Map(prev);
@@ -25592,7 +25845,7 @@ function useDataDnd(args) {
25592
25845
  const raw = it[dndItemIdField];
25593
25846
  return String(raw ?? `__idx_${idx}`);
25594
25847
  }).join("|");
25595
- const itemIds = React95__default.useMemo(
25848
+ const itemIds = React97__default.useMemo(
25596
25849
  () => orderedItems.map((it, idx) => {
25597
25850
  const raw = it[dndItemIdField];
25598
25851
  return raw ?? `__idx_${idx}`;
@@ -25600,7 +25853,7 @@ function useDataDnd(args) {
25600
25853
  [itemIdsSignature]
25601
25854
  );
25602
25855
  const itemsContentSig = items.map((it, idx) => String(it[dndItemIdField] ?? `__${idx}`)).join("|");
25603
- React95__default.useEffect(() => {
25856
+ React97__default.useEffect(() => {
25604
25857
  const root = isRoot ? null : parentRoot;
25605
25858
  if (root) {
25606
25859
  root.clearOptimisticOrder(ownGroup);
@@ -25608,20 +25861,20 @@ function useDataDnd(args) {
25608
25861
  clearOptimisticOrder(ownGroup);
25609
25862
  }
25610
25863
  }, [itemsContentSig, ownGroup]);
25611
- const zonesRef = React95__default.useRef(/* @__PURE__ */ new Map());
25612
- const registerZone = React95__default.useCallback((zoneId2, meta2) => {
25864
+ const zonesRef = React97__default.useRef(/* @__PURE__ */ new Map());
25865
+ const registerZone = React97__default.useCallback((zoneId2, meta2) => {
25613
25866
  zonesRef.current.set(zoneId2, meta2);
25614
25867
  }, []);
25615
- const unregisterZone = React95__default.useCallback((zoneId2) => {
25868
+ const unregisterZone = React97__default.useCallback((zoneId2) => {
25616
25869
  zonesRef.current.delete(zoneId2);
25617
25870
  }, []);
25618
- const [activeDrag, setActiveDrag] = React95__default.useState(null);
25619
- const [overZoneGroup, setOverZoneGroup] = React95__default.useState(null);
25620
- const meta = React95__default.useMemo(
25871
+ const [activeDrag, setActiveDrag] = React97__default.useState(null);
25872
+ const [overZoneGroup, setOverZoneGroup] = React97__default.useState(null);
25873
+ const meta = React97__default.useMemo(
25621
25874
  () => ({ group: ownGroup, dropEvent, reorderEvent, positionEvent, itemIds, rawItems: items, idField: dndItemIdField }),
25622
25875
  [ownGroup, dropEvent, reorderEvent, positionEvent, itemIds, items, dndItemIdField]
25623
25876
  );
25624
- React95__default.useEffect(() => {
25877
+ React97__default.useEffect(() => {
25625
25878
  const target = isRoot ? null : parentRoot;
25626
25879
  if (!target) {
25627
25880
  zonesRef.current.set(zoneId, meta);
@@ -25640,7 +25893,7 @@ function useDataDnd(args) {
25640
25893
  }, [parentRoot, isRoot, zoneId, meta]);
25641
25894
  const sensors = useAlmadarDndSensors(true);
25642
25895
  const collisionDetection = almadarDndCollisionDetection;
25643
- const findZoneByItem = React95__default.useCallback(
25896
+ const findZoneByItem = React97__default.useCallback(
25644
25897
  (id) => {
25645
25898
  for (const z of zonesRef.current.values()) {
25646
25899
  if (z.itemIds.includes(id)) return z;
@@ -25649,7 +25902,7 @@ function useDataDnd(args) {
25649
25902
  },
25650
25903
  []
25651
25904
  );
25652
- React95__default.useCallback(
25905
+ React97__default.useCallback(
25653
25906
  (group) => {
25654
25907
  for (const z of zonesRef.current.values()) {
25655
25908
  if (z.group === group) return z;
@@ -25658,7 +25911,7 @@ function useDataDnd(args) {
25658
25911
  },
25659
25912
  []
25660
25913
  );
25661
- const handleDragEnd = React95__default.useCallback(
25914
+ const handleDragEnd = React97__default.useCallback(
25662
25915
  (event) => {
25663
25916
  const { active, over } = event;
25664
25917
  const activeIdStr = String(active.id);
@@ -25749,8 +26002,8 @@ function useDataDnd(args) {
25749
26002
  },
25750
26003
  [eventBus]
25751
26004
  );
25752
- const sortableData = React95__default.useMemo(() => ({ dndGroup: ownGroup }), [ownGroup]);
25753
- const SortableItem = React95__default.useCallback(
26005
+ const sortableData = React97__default.useMemo(() => ({ dndGroup: ownGroup }), [ownGroup]);
26006
+ const SortableItem = React97__default.useCallback(
25754
26007
  ({ id, children }) => {
25755
26008
  const {
25756
26009
  attributes,
@@ -25790,7 +26043,7 @@ function useDataDnd(args) {
25790
26043
  id: droppableId,
25791
26044
  data: sortableData
25792
26045
  });
25793
- const ctx = React95__default.useContext(RootCtx);
26046
+ const ctx = React97__default.useContext(RootCtx);
25794
26047
  const activeDrag2 = ctx?.activeDrag ?? null;
25795
26048
  const overZoneGroup2 = ctx?.overZoneGroup ?? null;
25796
26049
  const isThisZoneOver = overZoneGroup2 === ownGroup;
@@ -25805,7 +26058,7 @@ function useDataDnd(args) {
25805
26058
  showForeignPlaceholder,
25806
26059
  ctxAvailable: ctx != null
25807
26060
  });
25808
- React95__default.useEffect(() => {
26061
+ React97__default.useEffect(() => {
25809
26062
  dndLog.info("dropzone:isOver:change", { droppableId, group: ownGroup, isOver, isThisZoneOver, showForeignPlaceholder, activeDragSourceGroup: activeDrag2?.sourceGroup ?? null });
25810
26063
  }, [droppableId, isOver, isThisZoneOver, showForeignPlaceholder]);
25811
26064
  return /* @__PURE__ */ jsx(
@@ -25819,11 +26072,11 @@ function useDataDnd(args) {
25819
26072
  }
25820
26073
  );
25821
26074
  };
25822
- const rootContextValue = React95__default.useMemo(
26075
+ const rootContextValue = React97__default.useMemo(
25823
26076
  () => ({ registerZone, unregisterZone, activeDrag, overZoneGroup, optimisticOrders, clearOptimisticOrder }),
25824
26077
  [registerZone, unregisterZone, activeDrag, overZoneGroup, optimisticOrders, clearOptimisticOrder]
25825
26078
  );
25826
- const handleDragStart = React95__default.useCallback((event) => {
26079
+ const handleDragStart = React97__default.useCallback((event) => {
25827
26080
  const sourceZone = findZoneByItem(event.active.id);
25828
26081
  const rect = event.active.rect.current.initial;
25829
26082
  const height = rect?.height && rect.height > 0 ? rect.height : 64;
@@ -25842,7 +26095,7 @@ function useDataDnd(args) {
25842
26095
  isRoot
25843
26096
  });
25844
26097
  }, [findZoneByItem, isRoot, zoneId]);
25845
- const handleDragOver = React95__default.useCallback((event) => {
26098
+ const handleDragOver = React97__default.useCallback((event) => {
25846
26099
  const { active, over } = event;
25847
26100
  const overData = over?.data?.current;
25848
26101
  const overGroup = overData?.dndGroup ?? null;
@@ -25912,7 +26165,7 @@ function useDataDnd(args) {
25912
26165
  return next;
25913
26166
  });
25914
26167
  }, []);
25915
- const handleDragCancel = React95__default.useCallback((event) => {
26168
+ const handleDragCancel = React97__default.useCallback((event) => {
25916
26169
  setActiveDrag(null);
25917
26170
  setOverZoneGroup(null);
25918
26171
  dndLog.warn("dragCancel", {
@@ -25920,12 +26173,12 @@ function useDataDnd(args) {
25920
26173
  reason: "dnd-kit cancelled the drag (escape key, pointer interrupted, or external)"
25921
26174
  });
25922
26175
  }, []);
25923
- const handleDragEndWithCleanup = React95__default.useCallback((event) => {
26176
+ const handleDragEndWithCleanup = React97__default.useCallback((event) => {
25924
26177
  handleDragEnd(event);
25925
26178
  setActiveDrag(null);
25926
26179
  setOverZoneGroup(null);
25927
26180
  }, [handleDragEnd]);
25928
- const wrapContainer = React95__default.useCallback(
26181
+ const wrapContainer = React97__default.useCallback(
25929
26182
  (children) => {
25930
26183
  if (!enabled) return children;
25931
26184
  const strategy = layout === "grid" ? rectSortingStrategy : verticalListSortingStrategy;
@@ -25979,7 +26232,7 @@ var init_useDataDnd = __esm({
25979
26232
  init_useAlmadarDndCollision();
25980
26233
  init_Box();
25981
26234
  dndLog = createLogger("almadar:ui:dnd");
25982
- RootCtx = React95__default.createContext(null);
26235
+ RootCtx = React97__default.createContext(null);
25983
26236
  }
25984
26237
  });
25985
26238
  function fieldLabel2(key) {
@@ -26499,7 +26752,7 @@ function DataList({
26499
26752
  }) {
26500
26753
  const eventBus = useEventBus();
26501
26754
  const { t } = useTranslate();
26502
- const [visibleCount, setVisibleCount] = React95__default.useState(pageSize || Infinity);
26755
+ const [visibleCount, setVisibleCount] = React97__default.useState(pageSize || Infinity);
26503
26756
  const fieldDefs = fields ?? columns ?? [];
26504
26757
  const allDataRaw = Array.isArray(entity) ? entity : entity ? [entity] : [];
26505
26758
  const dnd = useDataDnd({
@@ -26518,7 +26771,7 @@ function DataList({
26518
26771
  const data = pageSize > 0 ? allData.slice(0, visibleCount) : allData;
26519
26772
  const hasMoreLocal = pageSize > 0 && visibleCount < allData.length;
26520
26773
  const hasRenderProp = typeof children === "function";
26521
- React95__default.useEffect(() => {
26774
+ React97__default.useEffect(() => {
26522
26775
  const renderItemTypeOf = typeof schemaRenderItem;
26523
26776
  const childrenTypeOf = typeof children;
26524
26777
  if (data.length > 0 && !hasRenderProp) {
@@ -26623,7 +26876,7 @@ function DataList({
26623
26876
  const items2 = data.map((item) => item);
26624
26877
  const groups2 = groupBy ? groupData(items2, groupBy) : [{ label: "", items: items2 }];
26625
26878
  const contentField = titleField?.name ?? fieldDefs[0]?.name ?? "";
26626
- return /* @__PURE__ */ jsx(VStack, { gap: "sm", className: cn("py-2", className), children: groups2.map((group, gi) => /* @__PURE__ */ jsxs(React95__default.Fragment, { children: [
26879
+ return /* @__PURE__ */ jsx(VStack, { gap: "sm", className: cn("py-2", className), children: groups2.map((group, gi) => /* @__PURE__ */ jsxs(React97__default.Fragment, { children: [
26627
26880
  group.label && /* @__PURE__ */ jsx(Divider, { label: group.label, className: "my-2" }),
26628
26881
  group.items.map((itemData, index) => {
26629
26882
  const id = itemData.id || `${gi}-${index}`;
@@ -26771,7 +27024,7 @@ function DataList({
26771
27024
  className
26772
27025
  ),
26773
27026
  children: [
26774
- groups.map((group, gi) => /* @__PURE__ */ jsxs(React95__default.Fragment, { children: [
27027
+ groups.map((group, gi) => /* @__PURE__ */ jsxs(React97__default.Fragment, { children: [
26775
27028
  group.label && /* @__PURE__ */ jsx(Divider, { label: group.label, className: gi > 0 ? "mt-4" : "mt-0" }),
26776
27029
  group.items.map(
26777
27030
  (itemData, index) => renderItem(itemData, index, gi === groups.length - 1 && index === group.items.length - 1)
@@ -28145,7 +28398,7 @@ var init_WizardProgress = __esm({
28145
28398
  children: /* @__PURE__ */ jsx("div", { className: "flex items-center gap-2", children: normalizedSteps.map((step, index) => {
28146
28399
  const isActive = index === currentStep;
28147
28400
  const isCompleted = index < currentStep;
28148
- return /* @__PURE__ */ jsxs(React95__default.Fragment, { children: [
28401
+ return /* @__PURE__ */ jsxs(React97__default.Fragment, { children: [
28149
28402
  /* @__PURE__ */ jsx(
28150
28403
  "button",
28151
28404
  {
@@ -28756,6 +29009,50 @@ var init_FlipCard = __esm({
28756
29009
  FlipCard.displayName = "FlipCard";
28757
29010
  }
28758
29011
  });
29012
+ function pascalToKebab(name) {
29013
+ return name.replace(/([a-z0-9])([A-Z])/g, "$1-$2").replace(/([A-Z])([A-Z][a-z])/g, "$1-$2").toLowerCase();
29014
+ }
29015
+ function kebabToPascal3(name) {
29016
+ return name.split("-").map((part) => /^\d+$/.test(part) ? part : part.charAt(0).toUpperCase() + part.slice(1)).join("");
29017
+ }
29018
+ var ICON_ITEMS, IconPicker;
29019
+ var init_IconPicker = __esm({
29020
+ "components/core/molecules/IconPicker.tsx"() {
29021
+ "use client";
29022
+ init_Icon();
29023
+ init_GridPicker();
29024
+ ICON_ITEMS = (() => {
29025
+ const items = [];
29026
+ for (const [exportName, candidate] of Object.entries(LucideIcons2)) {
29027
+ if (!/^[A-Z]/.test(exportName)) continue;
29028
+ if (exportName.endsWith("Icon")) continue;
29029
+ if (exportName.startsWith("Lucide")) continue;
29030
+ const isComponent = candidate !== null && (typeof candidate === "object" || typeof candidate === "function") && "$$typeof" in candidate;
29031
+ if (!isComponent) continue;
29032
+ const kebab = pascalToKebab(exportName);
29033
+ if (kebabToPascal3(kebab) !== exportName) continue;
29034
+ items.push({ id: kebab, label: kebab, category: "icons" });
29035
+ }
29036
+ return items;
29037
+ })();
29038
+ IconPicker = ({ value, onChange, className }) => {
29039
+ const items = useMemo(() => ICON_ITEMS, []);
29040
+ return /* @__PURE__ */ jsx(
29041
+ GridPicker,
29042
+ {
29043
+ items,
29044
+ value,
29045
+ onChange,
29046
+ searchPlaceholder: "Search icons\u2026",
29047
+ renderThumbnail: (it) => /* @__PURE__ */ jsx(Icon, { name: it.id }),
29048
+ cellSize: 32,
29049
+ className
29050
+ }
29051
+ );
29052
+ };
29053
+ IconPicker.displayName = "IconPicker";
29054
+ }
29055
+ });
28759
29056
  function toISODate(d) {
28760
29057
  return d.toISOString().slice(0, 10);
28761
29058
  }
@@ -29200,7 +29497,7 @@ function InventoryGrid({
29200
29497
  const eventBus = useEventBus();
29201
29498
  const slotCount = totalSlots ?? items.length;
29202
29499
  const emptySlotCount = Math.max(0, slotCount - items.length);
29203
- const handleSelect = React95.useCallback(
29500
+ const handleSelect = React97.useCallback(
29204
29501
  (id) => {
29205
29502
  onSelect?.(id);
29206
29503
  if (selectEvent) {
@@ -29417,31 +29714,31 @@ function GameCanvas2D({
29417
29714
  assetBaseUrl = "",
29418
29715
  className
29419
29716
  }) {
29420
- const canvasRef = React95.useRef(null);
29421
- const rafRef = React95.useRef(0);
29422
- const frameRef = React95.useRef(0);
29423
- const lastTimeRef = React95.useRef(0);
29424
- const imageCache = React95.useRef(/* @__PURE__ */ new Map());
29717
+ const canvasRef = React97.useRef(null);
29718
+ const rafRef = React97.useRef(0);
29719
+ const frameRef = React97.useRef(0);
29720
+ const lastTimeRef = React97.useRef(0);
29721
+ const imageCache = React97.useRef(/* @__PURE__ */ new Map());
29425
29722
  const emit = useEmitEvent();
29426
- const onDrawRef = React95.useRef(onDraw);
29723
+ const onDrawRef = React97.useRef(onDraw);
29427
29724
  onDrawRef.current = onDraw;
29428
- const onTickRef = React95.useRef(onTick);
29725
+ const onTickRef = React97.useRef(onTick);
29429
29726
  onTickRef.current = onTick;
29430
- const tickEventRef = React95.useRef(tickEvent);
29727
+ const tickEventRef = React97.useRef(tickEvent);
29431
29728
  tickEventRef.current = tickEvent;
29432
- const drawEventRef = React95.useRef(drawEvent);
29729
+ const drawEventRef = React97.useRef(drawEvent);
29433
29730
  drawEventRef.current = drawEvent;
29434
- const emitRef = React95.useRef(emit);
29731
+ const emitRef = React97.useRef(emit);
29435
29732
  emitRef.current = emit;
29436
- const assetBaseUrlRef = React95.useRef(assetBaseUrl);
29733
+ const assetBaseUrlRef = React97.useRef(assetBaseUrl);
29437
29734
  assetBaseUrlRef.current = assetBaseUrl;
29438
- const backgroundImageRef = React95.useRef(backgroundImage);
29735
+ const backgroundImageRef = React97.useRef(backgroundImage);
29439
29736
  backgroundImageRef.current = backgroundImage;
29440
- const widthRef = React95.useRef(width);
29737
+ const widthRef = React97.useRef(width);
29441
29738
  widthRef.current = width;
29442
- const heightRef = React95.useRef(height);
29739
+ const heightRef = React97.useRef(height);
29443
29740
  heightRef.current = height;
29444
- const loadImage = React95.useCallback((url) => {
29741
+ const loadImage = React97.useCallback((url) => {
29445
29742
  const fullUrl = url.startsWith("http") ? url : `${assetBaseUrlRef.current}${url}`;
29446
29743
  const cached = imageCache.current.get(fullUrl);
29447
29744
  if (cached?.complete && cached.naturalWidth > 0) return cached;
@@ -29453,7 +29750,7 @@ function GameCanvas2D({
29453
29750
  }
29454
29751
  return null;
29455
29752
  }, []);
29456
- React95.useEffect(() => {
29753
+ React97.useEffect(() => {
29457
29754
  const canvas = canvasRef.current;
29458
29755
  if (!canvas) return;
29459
29756
  const ctx = canvas.getContext("2d");
@@ -29756,7 +30053,7 @@ function TurnPanel({
29756
30053
  className
29757
30054
  }) {
29758
30055
  const eventBus = useEventBus();
29759
- const handleAction = React95.useCallback(
30056
+ const handleAction = React97.useCallback(
29760
30057
  (event) => {
29761
30058
  if (event) {
29762
30059
  eventBus.emit(event, { turn: currentTurn, phase, activeTeam });
@@ -29902,7 +30199,7 @@ function UnitCommandBar({
29902
30199
  className
29903
30200
  }) {
29904
30201
  const eventBus = useEventBus();
29905
- const handleCommand = React95.useCallback(
30202
+ const handleCommand = React97.useCallback(
29906
30203
  (event) => {
29907
30204
  if (event) {
29908
30205
  eventBus.emit(event, { unitId: selectedUnitId });
@@ -30387,7 +30684,7 @@ function GameMenu({
30387
30684
  } catch {
30388
30685
  }
30389
30686
  const eventBus = eventBusProp || eventBusFromHook;
30390
- const handleOptionClick = React95.useCallback(
30687
+ const handleOptionClick = React97.useCallback(
30391
30688
  (option) => {
30392
30689
  if (option.event && eventBus) {
30393
30690
  eventBus.emit(`UI:${option.event}`, { option });
@@ -30501,7 +30798,7 @@ function GameOverScreen({
30501
30798
  } catch {
30502
30799
  }
30503
30800
  const eventBus = eventBusProp || eventBusFromHook;
30504
- const handleActionClick = React95.useCallback(
30801
+ const handleActionClick = React97.useCallback(
30505
30802
  (action) => {
30506
30803
  if (action.event && eventBus) {
30507
30804
  eventBus.emit(`UI:${action.event}`, { action });
@@ -31978,8 +32275,8 @@ function TableView({
31978
32275
  }) {
31979
32276
  const eventBus = useEventBus();
31980
32277
  const { t } = useTranslate();
31981
- const [visibleCount, setVisibleCount] = React95__default.useState(pageSize > 0 ? pageSize : Infinity);
31982
- const [localSelected, setLocalSelected] = React95__default.useState(/* @__PURE__ */ new Set());
32278
+ const [visibleCount, setVisibleCount] = React97__default.useState(pageSize > 0 ? pageSize : Infinity);
32279
+ const [localSelected, setLocalSelected] = React97__default.useState(/* @__PURE__ */ new Set());
31983
32280
  const colDefs = columns ?? fields ?? [];
31984
32281
  const allDataRaw = Array.isArray(entity) ? entity : entity ? [entity] : [];
31985
32282
  const dnd = useDataDnd({
@@ -32174,12 +32471,12 @@ function TableView({
32174
32471
  ]
32175
32472
  }
32176
32473
  );
32177
- return dnd.isZone ? /* @__PURE__ */ jsx(dnd.SortableItem, { id: row[idField] ?? id, children: rowInner }, id) : /* @__PURE__ */ jsx(React95__default.Fragment, { children: rowInner }, id);
32474
+ return dnd.isZone ? /* @__PURE__ */ jsx(dnd.SortableItem, { id: row[idField] ?? id, children: rowInner }, id) : /* @__PURE__ */ jsx(React97__default.Fragment, { children: rowInner }, id);
32178
32475
  };
32179
32476
  const items = data.map((row) => row);
32180
32477
  const groups = groupBy ? groupData2(items, groupBy) : [{ label: "", items }];
32181
32478
  let runningIndex = 0;
32182
- const body = /* @__PURE__ */ jsx(Box, { role: "rowgroup", children: groups.map((group, gi) => /* @__PURE__ */ jsxs(React95__default.Fragment, { children: [
32479
+ const body = /* @__PURE__ */ jsx(Box, { role: "rowgroup", children: groups.map((group, gi) => /* @__PURE__ */ jsxs(React97__default.Fragment, { children: [
32183
32480
  group.label && /* @__PURE__ */ jsx(Divider, { label: group.label, className: gi > 0 ? "mt-3" : "mt-0" }),
32184
32481
  group.items.map((row) => renderRow(row, runningIndex++))
32185
32482
  ] }, gi)) });
@@ -33531,7 +33828,7 @@ var init_StepFlow = __esm({
33531
33828
  className
33532
33829
  }) => {
33533
33830
  if (orientation === "vertical") {
33534
- return /* @__PURE__ */ jsx(VStack, { gap: "none", className: cn("w-full", className), children: steps.map((step, index) => /* @__PURE__ */ jsx(React95__default.Fragment, { children: /* @__PURE__ */ jsxs(HStack, { gap: "md", align: "start", className: "w-full", children: [
33831
+ return /* @__PURE__ */ jsx(VStack, { gap: "none", className: cn("w-full", className), children: steps.map((step, index) => /* @__PURE__ */ jsx(React97__default.Fragment, { children: /* @__PURE__ */ jsxs(HStack, { gap: "md", align: "start", className: "w-full", children: [
33535
33832
  /* @__PURE__ */ jsxs(VStack, { gap: "none", align: "center", children: [
33536
33833
  /* @__PURE__ */ jsx(StepCircle, { step, index }),
33537
33834
  showConnectors && index < steps.length - 1 && /* @__PURE__ */ jsx(Box, { className: "w-px h-8 bg-border" })
@@ -33542,7 +33839,7 @@ var init_StepFlow = __esm({
33542
33839
  ] })
33543
33840
  ] }) }, index)) });
33544
33841
  }
33545
- 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(React95__default.Fragment, { children: [
33842
+ 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(React97__default.Fragment, { children: [
33546
33843
  /* @__PURE__ */ jsxs(VStack, { gap: "sm", align: "center", className: "flex-1 w-full md:w-auto", children: [
33547
33844
  /* @__PURE__ */ jsx(StepCircle, { step, index }),
33548
33845
  /* @__PURE__ */ jsx(Typography, { variant: "h4", className: "text-center", children: step.title }),
@@ -34518,7 +34815,7 @@ var init_LikertScale = __esm({
34518
34815
  md: "text-base",
34519
34816
  lg: "text-lg"
34520
34817
  };
34521
- LikertScale = React95__default.forwardRef(
34818
+ LikertScale = React97__default.forwardRef(
34522
34819
  ({
34523
34820
  question,
34524
34821
  options = DEFAULT_LIKERT_OPTIONS,
@@ -34530,7 +34827,7 @@ var init_LikertScale = __esm({
34530
34827
  variant = "radios",
34531
34828
  className
34532
34829
  }, ref) => {
34533
- const groupId = React95__default.useId();
34830
+ const groupId = React97__default.useId();
34534
34831
  const eventBus = useEventBus();
34535
34832
  const handleSelect = useCallback(
34536
34833
  (next) => {
@@ -36838,7 +37135,7 @@ var init_DocBreadcrumb = __esm({
36838
37135
  "aria-label": t("aria.breadcrumb"),
36839
37136
  children: /* @__PURE__ */ jsx(HStack, { gap: "xs", align: "center", wrap: true, children: items.map((item, idx) => {
36840
37137
  const isLast = idx === items.length - 1;
36841
- return /* @__PURE__ */ jsxs(React95__default.Fragment, { children: [
37138
+ return /* @__PURE__ */ jsxs(React97__default.Fragment, { children: [
36842
37139
  idx > 0 && /* @__PURE__ */ jsx(
36843
37140
  Icon,
36844
37141
  {
@@ -37449,7 +37746,7 @@ var init_GradientDivider = __esm({
37449
37746
  });
37450
37747
  var MarketingFooter;
37451
37748
  var init_MarketingFooter = __esm({
37452
- "components/core/molecules/MarketingFooter.tsx"() {
37749
+ "components/marketing/molecules/MarketingFooter.tsx"() {
37453
37750
  "use client";
37454
37751
  init_cn();
37455
37752
  init_Box();
@@ -37519,7 +37816,7 @@ var init_MarketingFooter = __esm({
37519
37816
  });
37520
37817
  var PullQuote;
37521
37818
  var init_PullQuote = __esm({
37522
- "components/core/molecules/PullQuote.tsx"() {
37819
+ "components/marketing/molecules/PullQuote.tsx"() {
37523
37820
  "use client";
37524
37821
  init_cn();
37525
37822
  init_Box();
@@ -37597,7 +37894,7 @@ var init_PageHeader = __esm({
37597
37894
  info: "bg-info/10 text-info"
37598
37895
  };
37599
37896
  return /* @__PURE__ */ jsxs(Box, { className: cn("mb-6", className), children: [
37600
- 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(React95__default.Fragment, { children: [
37897
+ 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(React97__default.Fragment, { children: [
37601
37898
  idx > 0 && /* @__PURE__ */ jsx(Typography, { variant: "small", color: "muted", children: "/" }),
37602
37899
  crumb.href ? /* @__PURE__ */ jsx(
37603
37900
  "a",
@@ -37684,6 +37981,271 @@ var init_PageHeader = __esm({
37684
37981
  PageHeader.displayName = "PageHeader";
37685
37982
  }
37686
37983
  });
37984
+ var FormSection, FormLayout, FormActions;
37985
+ var init_FormSection = __esm({
37986
+ "components/core/molecules/FormSection.tsx"() {
37987
+ "use client";
37988
+ init_cn();
37989
+ init_atoms2();
37990
+ init_Box();
37991
+ init_Typography();
37992
+ init_Button();
37993
+ init_Stack();
37994
+ init_Icon();
37995
+ init_useEventBus();
37996
+ FormSection = ({
37997
+ title,
37998
+ description,
37999
+ children,
38000
+ collapsible = false,
38001
+ defaultCollapsed = false,
38002
+ card = false,
38003
+ columns = 1,
38004
+ className
38005
+ }) => {
38006
+ const [collapsed, setCollapsed] = React97__default.useState(defaultCollapsed);
38007
+ const { t } = useTranslate();
38008
+ const eventBus = useEventBus();
38009
+ const gridClass = {
38010
+ 1: "grid-cols-1",
38011
+ 2: "grid-cols-1 md:grid-cols-2",
38012
+ 3: "grid-cols-1 md:grid-cols-2 lg:grid-cols-3"
38013
+ }[columns];
38014
+ React97__default.useCallback(() => {
38015
+ if (collapsible) {
38016
+ setCollapsed((prev) => !prev);
38017
+ eventBus.emit("UI:TOGGLE_COLLAPSE", { collapsed: !collapsed });
38018
+ }
38019
+ }, [collapsible, collapsed, eventBus]);
38020
+ const content = /* @__PURE__ */ jsxs(Fragment, { children: [
38021
+ (title || description) && /* @__PURE__ */ jsxs(VStack, { gap: "xs", className: "mb-4", children: [
38022
+ title && /* @__PURE__ */ jsxs(
38023
+ HStack,
38024
+ {
38025
+ justify: "between",
38026
+ align: "center",
38027
+ className: cn(collapsible && "cursor-pointer"),
38028
+ action: collapsible ? "TOGGLE_COLLAPSE" : void 0,
38029
+ children: [
38030
+ /* @__PURE__ */ jsx(Typography, { variant: "h3", weight: "semibold", children: title }),
38031
+ collapsible && /* @__PURE__ */ jsx(
38032
+ Button,
38033
+ {
38034
+ variant: "ghost",
38035
+ size: "sm",
38036
+ action: "TOGGLE_COLLAPSE",
38037
+ children: /* @__PURE__ */ jsx(
38038
+ Icon,
38039
+ {
38040
+ icon: ChevronDown,
38041
+ size: "sm",
38042
+ className: cn(
38043
+ "text-muted-foreground transition-transform",
38044
+ collapsed && "rotate-180"
38045
+ )
38046
+ }
38047
+ )
38048
+ }
38049
+ )
38050
+ ]
38051
+ }
38052
+ ),
38053
+ description && /* @__PURE__ */ jsx(Typography, { variant: "small", color: "secondary", children: description })
38054
+ ] }),
38055
+ (!collapsible || !collapsed) && /* @__PURE__ */ jsx(Box, { className: cn("grid gap-4", gridClass), children })
38056
+ ] });
38057
+ if (card) {
38058
+ return /* @__PURE__ */ jsx(Card, { className: cn("p-6", className), children: content });
38059
+ }
38060
+ return /* @__PURE__ */ jsx(Box, { className, children: content });
38061
+ };
38062
+ FormSection.displayName = "FormSection";
38063
+ FormLayout = ({
38064
+ children,
38065
+ dividers = true,
38066
+ className
38067
+ }) => {
38068
+ return /* @__PURE__ */ jsx(
38069
+ VStack,
38070
+ {
38071
+ gap: "lg",
38072
+ className: cn(
38073
+ dividers && "[&>*+*]:pt-8 [&>*+*]:border-t [&>*+*]:border-border",
38074
+ className
38075
+ ),
38076
+ children
38077
+ }
38078
+ );
38079
+ };
38080
+ FormLayout.displayName = "FormLayout";
38081
+ FormActions = ({
38082
+ children,
38083
+ sticky = false,
38084
+ align = "right",
38085
+ className
38086
+ }) => {
38087
+ const alignClass2 = {
38088
+ left: "justify-start",
38089
+ right: "justify-end",
38090
+ between: "justify-between",
38091
+ center: "justify-center"
38092
+ }[align];
38093
+ return /* @__PURE__ */ jsx(
38094
+ HStack,
38095
+ {
38096
+ gap: "sm",
38097
+ align: "center",
38098
+ className: cn(
38099
+ "pt-6 border-t border-border",
38100
+ alignClass2,
38101
+ sticky && "sticky bottom-0 bg-card py-4 -mx-6 px-6 shadow-[0_-4px_6px_-1px_rgb(0,0,0,0.05)]",
38102
+ className
38103
+ ),
38104
+ children
38105
+ }
38106
+ );
38107
+ };
38108
+ FormActions.displayName = "FormActions";
38109
+ }
38110
+ });
38111
+ function currentValue(decl, override) {
38112
+ return override !== void 0 ? override : decl.default;
38113
+ }
38114
+ function TextLikeControl({
38115
+ field,
38116
+ numeric,
38117
+ value,
38118
+ onCommit
38119
+ }) {
38120
+ const initial = value === void 0 || value === null ? "" : String(value);
38121
+ const [draft, setDraft] = React97__default.useState(initial);
38122
+ React97__default.useEffect(() => setDraft(initial), [initial]);
38123
+ const commit = () => {
38124
+ if (numeric) {
38125
+ const n = draft.trim() === "" ? 0 : Number(draft);
38126
+ onCommit(field, Number.isNaN(n) ? 0 : n);
38127
+ } else {
38128
+ onCommit(field, draft);
38129
+ }
38130
+ };
38131
+ return /* @__PURE__ */ jsx(
38132
+ Input,
38133
+ {
38134
+ inputType: numeric ? "number" : "text",
38135
+ value: draft,
38136
+ onChange: (e) => setDraft(e.target.value),
38137
+ onBlur: commit,
38138
+ onKeyDown: (e) => {
38139
+ if (e.key === "Enter") commit();
38140
+ }
38141
+ }
38142
+ );
38143
+ }
38144
+ function FieldControl({
38145
+ name,
38146
+ decl,
38147
+ value,
38148
+ onChange,
38149
+ assets
38150
+ }) {
38151
+ let control;
38152
+ const stringValue = typeof value === "string" ? value : void 0;
38153
+ if (decl.type === "icon") {
38154
+ control = /* @__PURE__ */ jsx(IconPicker, { value: stringValue, onChange: (icon) => onChange(name, icon) });
38155
+ } else if (decl.type === "asset") {
38156
+ control = /* @__PURE__ */ jsx(
38157
+ AssetPicker,
38158
+ {
38159
+ assets: assets ?? [],
38160
+ value: stringValue,
38161
+ onChange: (url) => onChange(name, url)
38162
+ }
38163
+ );
38164
+ } else if (decl.type === "boolean") {
38165
+ control = /* @__PURE__ */ jsx(Switch, { checked: value === true, onChange: (c) => onChange(name, c) });
38166
+ } else if (decl.type === "string" && decl.values !== void 0 && decl.values.length > 0) {
38167
+ control = /* @__PURE__ */ jsx(
38168
+ Select,
38169
+ {
38170
+ options: decl.values.map((v) => ({ value: v, label: v })),
38171
+ value: typeof value === "string" ? value : "",
38172
+ onChange: (e) => onChange(name, e.target.value)
38173
+ }
38174
+ );
38175
+ } else if (decl.type === "number") {
38176
+ control = /* @__PURE__ */ jsx(TextLikeControl, { field: name, numeric: true, value, onCommit: onChange });
38177
+ } else if (decl.type === "string") {
38178
+ control = /* @__PURE__ */ jsx(TextLikeControl, { field: name, numeric: false, value, onCommit: onChange });
38179
+ } else {
38180
+ control = /* @__PURE__ */ jsxs(Typography, { variant: "caption", color: "muted", children: [
38181
+ decl.type,
38182
+ " \u2014 edit in source"
38183
+ ] });
38184
+ }
38185
+ return /* @__PURE__ */ jsxs(VStack, { gap: "xs", children: [
38186
+ /* @__PURE__ */ jsx(Typography, { variant: "label", children: decl.label ?? name }),
38187
+ control,
38188
+ decl.description !== void 0 && decl.description !== "" && /* @__PURE__ */ jsx(Typography, { variant: "caption", color: "muted", children: decl.description })
38189
+ ] });
38190
+ }
38191
+ var TIER_ORDER, PropertyInspector;
38192
+ var init_PropertyInspector = __esm({
38193
+ "components/core/molecules/PropertyInspector.tsx"() {
38194
+ "use client";
38195
+ init_cn();
38196
+ init_Stack();
38197
+ init_Typography();
38198
+ init_Button();
38199
+ init_Switch();
38200
+ init_Select();
38201
+ init_Input();
38202
+ init_FormSection();
38203
+ init_IconPicker();
38204
+ init_AssetPicker();
38205
+ TIER_ORDER = ["presentation", "domain", "policy", "infra", "internal"];
38206
+ PropertyInspector = ({
38207
+ config,
38208
+ values,
38209
+ onChange,
38210
+ onReset,
38211
+ title,
38212
+ className,
38213
+ assets
38214
+ }) => {
38215
+ const fields = Object.entries(config);
38216
+ const byTier = /* @__PURE__ */ new Map();
38217
+ for (const [name, decl] of fields) {
38218
+ const tier = decl.tier ?? "presentation";
38219
+ const arr = byTier.get(tier) ?? [];
38220
+ arr.push([name, decl]);
38221
+ byTier.set(tier, arr);
38222
+ }
38223
+ const tiers = [...byTier.keys()].sort((a, b) => {
38224
+ const ia = TIER_ORDER.indexOf(a);
38225
+ const ib = TIER_ORDER.indexOf(b);
38226
+ return (ia === -1 ? 99 : ia) - (ib === -1 ? 99 : ib);
38227
+ });
38228
+ return /* @__PURE__ */ jsxs(VStack, { gap: "sm", className: cn("w-full", className), children: [
38229
+ /* @__PURE__ */ jsxs(HStack, { justify: "between", align: "center", children: [
38230
+ /* @__PURE__ */ jsx(Typography, { variant: "caption", weight: "bold", children: title ?? "Config" }),
38231
+ onReset !== void 0 && /* @__PURE__ */ jsx(Button, { variant: "ghost", size: "sm", icon: "rotate-ccw", label: "Reset", onClick: onReset })
38232
+ ] }),
38233
+ fields.length === 0 && /* @__PURE__ */ jsx(Typography, { variant: "caption", color: "muted", children: "No configurable properties." }),
38234
+ tiers.map((tier) => /* @__PURE__ */ jsx(FormSection, { title: tier, collapsible: true, defaultCollapsed: tier !== "presentation", children: /* @__PURE__ */ jsx(VStack, { gap: "sm", children: byTier.get(tier)?.map(([name, decl]) => /* @__PURE__ */ jsx(
38235
+ FieldControl,
38236
+ {
38237
+ name,
38238
+ decl,
38239
+ value: currentValue(decl, values?.[name]),
38240
+ onChange,
38241
+ assets
38242
+ },
38243
+ name
38244
+ )) }) }, tier))
38245
+ ] });
38246
+ };
38247
+ }
38248
+ });
37687
38249
  var lookStyles8, Header;
37688
38250
  var init_Header = __esm({
37689
38251
  "components/core/molecules/Header.tsx"() {
@@ -38334,7 +38896,7 @@ var init_WizardContainer = __esm({
38334
38896
  const isCompleted = index < currentStep;
38335
38897
  const stepKey = step.id ?? step.tabId ?? `step-${index}`;
38336
38898
  const stepTitle = step.title ?? step.name ?? `Step ${index + 1}`;
38337
- return /* @__PURE__ */ jsxs(React95__default.Fragment, { children: [
38899
+ return /* @__PURE__ */ jsxs(React97__default.Fragment, { children: [
38338
38900
  /* @__PURE__ */ jsx(
38339
38901
  Button,
38340
38902
  {
@@ -40619,7 +41181,7 @@ var init_DetailPanel = __esm({
40619
41181
  }
40620
41182
  });
40621
41183
  function extractTitle(children) {
40622
- if (!React95__default.isValidElement(children)) return void 0;
41184
+ if (!React97__default.isValidElement(children)) return void 0;
40623
41185
  const props = children.props;
40624
41186
  if (typeof props.title === "string") {
40625
41187
  return props.title;
@@ -40674,7 +41236,7 @@ function LinearView({
40674
41236
  /* @__PURE__ */ jsx(HStack, { className: "flex-wrap items-center", gap: "xs", children: trait.states.map((state, i) => {
40675
41237
  const isDone = i < currentIdx;
40676
41238
  const isCurrent = i === currentIdx;
40677
- return /* @__PURE__ */ jsxs(React95__default.Fragment, { children: [
41239
+ return /* @__PURE__ */ jsxs(React97__default.Fragment, { children: [
40678
41240
  i > 0 && /* @__PURE__ */ jsx(
40679
41241
  Typography,
40680
41242
  {
@@ -41384,7 +41946,7 @@ var init_FeatureDetailPageTemplate = __esm({
41384
41946
  });
41385
41947
  var FeatureGridOrganism;
41386
41948
  var init_FeatureGridOrganism = __esm({
41387
- "components/core/organisms/FeatureGridOrganism.tsx"() {
41949
+ "components/marketing/organisms/FeatureGridOrganism.tsx"() {
41388
41950
  "use client";
41389
41951
  init_cn();
41390
41952
  init_useEventBus();
@@ -41632,12 +42194,12 @@ var init_Form = __esm({
41632
42194
  const isSchemaEntity = isOrbitalEntitySchema(entity);
41633
42195
  const resolvedEntity = isSchemaEntity ? entity : void 0;
41634
42196
  const entityName = typeof entity === "string" ? entity : resolvedEntity?.name;
41635
- const normalizedInitialData = React95__default.useMemo(() => {
42197
+ const normalizedInitialData = React97__default.useMemo(() => {
41636
42198
  const entityRowAsInitial = isPlainEntityRow(entity) ? entity : void 0;
41637
42199
  const callerInitial = initialData !== null && typeof initialData === "object" && !Array.isArray(initialData) ? initialData : {};
41638
42200
  return entityRowAsInitial !== void 0 ? { ...entityRowAsInitial, ...callerInitial } : callerInitial;
41639
42201
  }, [entity, initialData]);
41640
- const entityDerivedFields = React95__default.useMemo(() => {
42202
+ const entityDerivedFields = React97__default.useMemo(() => {
41641
42203
  if (fields && fields.length > 0) return void 0;
41642
42204
  if (!resolvedEntity) return void 0;
41643
42205
  return resolvedEntity.fields.map(
@@ -41657,16 +42219,16 @@ var init_Form = __esm({
41657
42219
  const conditionalFields = typeof conditionalFieldsRaw === "boolean" ? {} : conditionalFieldsRaw;
41658
42220
  const hiddenCalculations = typeof hiddenCalculationsRaw === "boolean" ? [] : hiddenCalculationsRaw;
41659
42221
  const violationTriggers = typeof violationTriggersRaw === "boolean" ? [] : violationTriggersRaw;
41660
- const [formData, setFormData] = React95__default.useState(
42222
+ const [formData, setFormData] = React97__default.useState(
41661
42223
  normalizedInitialData
41662
42224
  );
41663
- const [collapsedSections, setCollapsedSections] = React95__default.useState(
42225
+ const [collapsedSections, setCollapsedSections] = React97__default.useState(
41664
42226
  /* @__PURE__ */ new Set()
41665
42227
  );
41666
- const [submitError, setSubmitError] = React95__default.useState(null);
41667
- const formRef = React95__default.useRef(null);
42228
+ const [submitError, setSubmitError] = React97__default.useState(null);
42229
+ const formRef = React97__default.useRef(null);
41668
42230
  const formMode = props.mode;
41669
- const mountedRef = React95__default.useRef(false);
42231
+ const mountedRef = React97__default.useRef(false);
41670
42232
  if (!mountedRef.current) {
41671
42233
  mountedRef.current = true;
41672
42234
  debug("forms", "mount", {
@@ -41679,7 +42241,7 @@ var init_Form = __esm({
41679
42241
  });
41680
42242
  }
41681
42243
  const shouldShowCancel = showCancel ?? (fields && fields.length > 0);
41682
- const evalContext = React95__default.useMemo(
42244
+ const evalContext = React97__default.useMemo(
41683
42245
  () => ({
41684
42246
  formValues: formData,
41685
42247
  globalVariables: externalContext?.globalVariables ?? {},
@@ -41688,7 +42250,7 @@ var init_Form = __esm({
41688
42250
  }),
41689
42251
  [formData, externalContext]
41690
42252
  );
41691
- React95__default.useEffect(() => {
42253
+ React97__default.useEffect(() => {
41692
42254
  debug("forms", "initialData-sync", {
41693
42255
  mode: formMode,
41694
42256
  normalizedInitialData,
@@ -41699,7 +42261,7 @@ var init_Form = __esm({
41699
42261
  setFormData(normalizedInitialData);
41700
42262
  }
41701
42263
  }, [normalizedInitialData]);
41702
- const processCalculations = React95__default.useCallback(
42264
+ const processCalculations = React97__default.useCallback(
41703
42265
  (changedFieldId, newFormData) => {
41704
42266
  if (!hiddenCalculations.length) return;
41705
42267
  const context = {
@@ -41724,7 +42286,7 @@ var init_Form = __esm({
41724
42286
  },
41725
42287
  [hiddenCalculations, externalContext, eventBus]
41726
42288
  );
41727
- const checkViolations = React95__default.useCallback(
42289
+ const checkViolations = React97__default.useCallback(
41728
42290
  (changedFieldId, newFormData) => {
41729
42291
  if (!violationTriggers.length) return;
41730
42292
  const context = {
@@ -41762,7 +42324,7 @@ var init_Form = __esm({
41762
42324
  processCalculations(name, newFormData);
41763
42325
  checkViolations(name, newFormData);
41764
42326
  };
41765
- const isFieldVisible = React95__default.useCallback(
42327
+ const isFieldVisible = React97__default.useCallback(
41766
42328
  (fieldName) => {
41767
42329
  const condition = conditionalFields[fieldName];
41768
42330
  if (!condition) return true;
@@ -41770,7 +42332,7 @@ var init_Form = __esm({
41770
42332
  },
41771
42333
  [conditionalFields, evalContext]
41772
42334
  );
41773
- const isSectionVisible = React95__default.useCallback(
42335
+ const isSectionVisible = React97__default.useCallback(
41774
42336
  (section) => {
41775
42337
  if (!section.condition) return true;
41776
42338
  return Boolean(evaluateFormExpression(section.condition, evalContext));
@@ -41846,7 +42408,7 @@ var init_Form = __esm({
41846
42408
  eventBus.emit(`UI:${onCancel}`);
41847
42409
  }
41848
42410
  };
41849
- const renderField = React95__default.useCallback(
42411
+ const renderField = React97__default.useCallback(
41850
42412
  (field) => {
41851
42413
  const fieldName = field.name || field.field;
41852
42414
  if (!fieldName) return null;
@@ -41855,19 +42417,19 @@ var init_Form = __esm({
41855
42417
  }
41856
42418
  const inputType = determineInputType(field);
41857
42419
  const label = field.label || fieldName.charAt(0).toUpperCase() + fieldName.slice(1).replace(/([A-Z])/g, " $1");
41858
- const currentValue = formData[fieldName] ?? field.defaultValue ?? "";
42420
+ const currentValue2 = formData[fieldName] ?? field.defaultValue ?? "";
41859
42421
  return /* @__PURE__ */ jsxs(VStack, { gap: "xs", "data-field": fieldName, children: [
41860
42422
  inputType !== "checkbox" && /* @__PURE__ */ jsxs(Typography, { as: "label", variant: "label", weight: "bold", children: [
41861
42423
  label,
41862
42424
  field.required && /* @__PURE__ */ jsx(Typography, { as: "span", color: "error", className: "ml-1", children: "*" })
41863
42425
  ] }),
41864
- renderFieldInput(field, fieldName, inputType, currentValue, label)
42426
+ renderFieldInput(field, fieldName, inputType, currentValue2, label)
41865
42427
  ] }, fieldName);
41866
42428
  },
41867
42429
  [formData, isFieldVisible, relationsData, relationsLoading, isLoading]
41868
42430
  );
41869
42431
  const effectiveFields = entityDerivedFields ?? fields;
41870
- const normalizedFields = React95__default.useMemo(() => {
42432
+ const normalizedFields = React97__default.useMemo(() => {
41871
42433
  if (!effectiveFields || effectiveFields.length === 0) return [];
41872
42434
  return effectiveFields.map((field) => {
41873
42435
  if (typeof field === "string") {
@@ -41890,7 +42452,7 @@ var init_Form = __esm({
41890
42452
  return field;
41891
42453
  });
41892
42454
  }, [effectiveFields, resolvedEntity]);
41893
- const schemaFields = React95__default.useMemo(() => {
42455
+ const schemaFields = React97__default.useMemo(() => {
41894
42456
  if (normalizedFields.length === 0) return null;
41895
42457
  if (isDebugEnabled()) {
41896
42458
  debugGroup(`Form: ${entityName || "unknown"}`);
@@ -41900,7 +42462,7 @@ var init_Form = __esm({
41900
42462
  }
41901
42463
  return normalizedFields.map(renderField).filter(Boolean);
41902
42464
  }, [normalizedFields, renderField, entityName, conditionalFields]);
41903
- const sectionElements = React95__default.useMemo(() => {
42465
+ const sectionElements = React97__default.useMemo(() => {
41904
42466
  if (!sections || sections.length === 0) return null;
41905
42467
  return sections.map((section) => {
41906
42468
  if (!isSectionVisible(section)) {
@@ -41936,7 +42498,7 @@ var init_Form = __esm({
41936
42498
  ] }, section.id);
41937
42499
  }).filter(Boolean);
41938
42500
  }, [sections, isSectionVisible, collapsedSections, renderField, gap]);
41939
- function renderFieldInput(field, fieldName, inputType, currentValue, label) {
42501
+ function renderFieldInput(field, fieldName, inputType, currentValue2, label) {
41940
42502
  const commonProps = {
41941
42503
  id: fieldName,
41942
42504
  name: fieldName,
@@ -41953,7 +42515,7 @@ var init_Form = __esm({
41953
42515
  {
41954
42516
  ...commonProps,
41955
42517
  label: label + (field.required ? " *" : ""),
41956
- checked: Boolean(currentValue),
42518
+ checked: Boolean(currentValue2),
41957
42519
  onChange: (e) => handleChange(fieldName, e.target.checked)
41958
42520
  }
41959
42521
  );
@@ -41962,7 +42524,7 @@ var init_Form = __esm({
41962
42524
  Textarea,
41963
42525
  {
41964
42526
  ...commonProps,
41965
- value: String(currentValue),
42527
+ value: String(currentValue2),
41966
42528
  onChange: (e) => handleChange(fieldName, e.target.value),
41967
42529
  minLength: field.min,
41968
42530
  maxLength: field.max
@@ -41975,7 +42537,7 @@ var init_Form = __esm({
41975
42537
  {
41976
42538
  ...commonProps,
41977
42539
  options,
41978
- value: String(currentValue),
42540
+ value: String(currentValue2),
41979
42541
  onChange: (e) => handleChange(fieldName, e.target.value),
41980
42542
  placeholder: field.placeholder || `Select ${label}...`
41981
42543
  }
@@ -41988,7 +42550,7 @@ var init_Form = __esm({
41988
42550
  RelationSelect,
41989
42551
  {
41990
42552
  ...commonProps,
41991
- value: currentValue ? String(currentValue) : void 0,
42553
+ value: currentValue2 ? String(currentValue2) : void 0,
41992
42554
  onChange: (value) => handleChange(fieldName, value),
41993
42555
  options: relationOptions,
41994
42556
  isLoading: relationLoading,
@@ -42004,7 +42566,7 @@ var init_Form = __esm({
42004
42566
  {
42005
42567
  ...commonProps,
42006
42568
  type: "number",
42007
- value: currentValue !== void 0 && currentValue !== "" ? String(currentValue) : "",
42569
+ value: currentValue2 !== void 0 && currentValue2 !== "" ? String(currentValue2) : "",
42008
42570
  onChange: (e) => handleChange(
42009
42571
  fieldName,
42010
42572
  e.target.value ? Number(e.target.value) : void 0
@@ -42019,7 +42581,7 @@ var init_Form = __esm({
42019
42581
  {
42020
42582
  ...commonProps,
42021
42583
  type: "date",
42022
- value: formatDateValue(currentValue),
42584
+ value: formatDateValue(currentValue2),
42023
42585
  onChange: (e) => handleChange(fieldName, e.target.value)
42024
42586
  }
42025
42587
  );
@@ -42029,7 +42591,7 @@ var init_Form = __esm({
42029
42591
  {
42030
42592
  ...commonProps,
42031
42593
  type: "datetime-local",
42032
- value: formatDateTimeValue(currentValue),
42594
+ value: formatDateTimeValue(currentValue2),
42033
42595
  onChange: (e) => handleChange(fieldName, e.target.value)
42034
42596
  }
42035
42597
  );
@@ -42039,7 +42601,7 @@ var init_Form = __esm({
42039
42601
  {
42040
42602
  ...commonProps,
42041
42603
  type: "email",
42042
- value: String(currentValue),
42604
+ value: String(currentValue2),
42043
42605
  onChange: (e) => handleChange(fieldName, e.target.value),
42044
42606
  minLength: field.min,
42045
42607
  maxLength: field.max
@@ -42051,7 +42613,7 @@ var init_Form = __esm({
42051
42613
  {
42052
42614
  ...commonProps,
42053
42615
  type: "url",
42054
- value: String(currentValue),
42616
+ value: String(currentValue2),
42055
42617
  onChange: (e) => handleChange(fieldName, e.target.value),
42056
42618
  minLength: field.min,
42057
42619
  maxLength: field.max
@@ -42063,7 +42625,7 @@ var init_Form = __esm({
42063
42625
  {
42064
42626
  ...commonProps,
42065
42627
  type: "password",
42066
- value: String(currentValue),
42628
+ value: String(currentValue2),
42067
42629
  onChange: (e) => handleChange(fieldName, e.target.value),
42068
42630
  minLength: field.min,
42069
42631
  maxLength: field.max
@@ -42076,7 +42638,7 @@ var init_Form = __esm({
42076
42638
  {
42077
42639
  ...commonProps,
42078
42640
  type: "text",
42079
- value: String(currentValue),
42641
+ value: String(currentValue2),
42080
42642
  onChange: (e) => handleChange(fieldName, e.target.value),
42081
42643
  minLength: field.min,
42082
42644
  maxLength: field.max
@@ -42731,7 +43293,7 @@ var init_GenericAppTemplate = __esm({
42731
43293
  });
42732
43294
  var HeroOrganism, _HeroClickInterceptor;
42733
43295
  var init_HeroOrganism = __esm({
42734
- "components/core/organisms/HeroOrganism.tsx"() {
43296
+ "components/marketing/organisms/HeroOrganism.tsx"() {
42735
43297
  "use client";
42736
43298
  init_cn();
42737
43299
  init_useEventBus();
@@ -43175,7 +43737,7 @@ var init_List = __esm({
43175
43737
  if (entity && typeof entity === "object" && "id" in entity) return [entity];
43176
43738
  return [];
43177
43739
  }, [entity]);
43178
- const getItemActions = React95__default.useCallback(
43740
+ const getItemActions = React97__default.useCallback(
43179
43741
  (item) => {
43180
43742
  if (!itemActions) return [];
43181
43743
  if (typeof itemActions === "function") {
@@ -43651,7 +44213,7 @@ var init_MediaGallery = __esm({
43651
44213
  [selectable, selectedItems, selectionEvent, eventBus]
43652
44214
  );
43653
44215
  const entityData = Array.isArray(entity) ? entity : [];
43654
- const items = React95__default.useMemo(() => {
44216
+ const items = React97__default.useMemo(() => {
43655
44217
  if (propItems) return propItems;
43656
44218
  if (entityData.length === 0) return [];
43657
44219
  return entityData.map((record, idx) => ({
@@ -43812,7 +44374,7 @@ var init_MediaGallery = __esm({
43812
44374
  }
43813
44375
  });
43814
44376
  function extractTitle2(children) {
43815
- if (!React95__default.isValidElement(children)) return void 0;
44377
+ if (!React97__default.isValidElement(children)) return void 0;
43816
44378
  const props = children.props;
43817
44379
  if (typeof props.title === "string") {
43818
44380
  return props.title;
@@ -44243,7 +44805,7 @@ var init_debugRegistry = __esm({
44243
44805
  }
44244
44806
  });
44245
44807
  function useDebugData() {
44246
- const [data, setData] = React95.useState(() => ({
44808
+ const [data, setData] = React97.useState(() => ({
44247
44809
  traits: [],
44248
44810
  ticks: [],
44249
44811
  guards: [],
@@ -44257,7 +44819,7 @@ function useDebugData() {
44257
44819
  },
44258
44820
  lastUpdate: Date.now()
44259
44821
  }));
44260
- React95.useEffect(() => {
44822
+ React97.useEffect(() => {
44261
44823
  const updateData = () => {
44262
44824
  setData({
44263
44825
  traits: getAllTraits(),
@@ -44366,12 +44928,12 @@ function layoutGraph(states, transitions, initialState, width, height) {
44366
44928
  return positions;
44367
44929
  }
44368
44930
  function WalkMinimap() {
44369
- const [walkStep, setWalkStep] = React95.useState(null);
44370
- const [traits2, setTraits] = React95.useState([]);
44371
- const [coveredEdges, setCoveredEdges] = React95.useState([]);
44372
- const [completedTraits, setCompletedTraits] = React95.useState(/* @__PURE__ */ new Set());
44373
- const prevTraitRef = React95.useRef(null);
44374
- React95.useEffect(() => {
44931
+ const [walkStep, setWalkStep] = React97.useState(null);
44932
+ const [traits2, setTraits] = React97.useState([]);
44933
+ const [coveredEdges, setCoveredEdges] = React97.useState([]);
44934
+ const [completedTraits, setCompletedTraits] = React97.useState(/* @__PURE__ */ new Set());
44935
+ const prevTraitRef = React97.useRef(null);
44936
+ React97.useEffect(() => {
44375
44937
  const interval = setInterval(() => {
44376
44938
  const w = window;
44377
44939
  const step = w.__orbitalWalkStep;
@@ -44807,15 +45369,15 @@ var init_EntitiesTab = __esm({
44807
45369
  });
44808
45370
  function EventFlowTab({ events: events2 }) {
44809
45371
  const { t } = useTranslate();
44810
- const [filter, setFilter] = React95.useState("all");
44811
- const containerRef = React95.useRef(null);
44812
- const [autoScroll, setAutoScroll] = React95.useState(true);
44813
- React95.useEffect(() => {
45372
+ const [filter, setFilter] = React97.useState("all");
45373
+ const containerRef = React97.useRef(null);
45374
+ const [autoScroll, setAutoScroll] = React97.useState(true);
45375
+ React97.useEffect(() => {
44814
45376
  if (autoScroll && containerRef.current) {
44815
45377
  containerRef.current.scrollTop = containerRef.current.scrollHeight;
44816
45378
  }
44817
45379
  }, [events2.length, autoScroll]);
44818
- const filteredEvents = React95.useMemo(() => {
45380
+ const filteredEvents = React97.useMemo(() => {
44819
45381
  if (filter === "all") return events2;
44820
45382
  return events2.filter((e) => e.type === filter);
44821
45383
  }, [events2, filter]);
@@ -44931,7 +45493,7 @@ var init_EventFlowTab = __esm({
44931
45493
  });
44932
45494
  function GuardsPanel({ guards }) {
44933
45495
  const { t } = useTranslate();
44934
- const [filter, setFilter] = React95.useState("all");
45496
+ const [filter, setFilter] = React97.useState("all");
44935
45497
  if (guards.length === 0) {
44936
45498
  return /* @__PURE__ */ jsx(
44937
45499
  EmptyState,
@@ -44944,7 +45506,7 @@ function GuardsPanel({ guards }) {
44944
45506
  }
44945
45507
  const passedCount = guards.filter((g) => g.result).length;
44946
45508
  const failedCount = guards.length - passedCount;
44947
- const filteredGuards = React95.useMemo(() => {
45509
+ const filteredGuards = React97.useMemo(() => {
44948
45510
  if (filter === "all") return guards;
44949
45511
  if (filter === "passed") return guards.filter((g) => g.result);
44950
45512
  return guards.filter((g) => !g.result);
@@ -45107,10 +45669,10 @@ function EffectBadge({ effect }) {
45107
45669
  }
45108
45670
  function TransitionTimeline({ transitions }) {
45109
45671
  const { t } = useTranslate();
45110
- const containerRef = React95.useRef(null);
45111
- const [autoScroll, setAutoScroll] = React95.useState(true);
45112
- const [expandedId, setExpandedId] = React95.useState(null);
45113
- React95.useEffect(() => {
45672
+ const containerRef = React97.useRef(null);
45673
+ const [autoScroll, setAutoScroll] = React97.useState(true);
45674
+ const [expandedId, setExpandedId] = React97.useState(null);
45675
+ React97.useEffect(() => {
45114
45676
  if (autoScroll && containerRef.current) {
45115
45677
  containerRef.current.scrollTop = containerRef.current.scrollHeight;
45116
45678
  }
@@ -45390,9 +45952,9 @@ function getAllEvents(traits2) {
45390
45952
  function EventDispatcherTab({ traits: traits2, schema }) {
45391
45953
  const eventBus = useEventBus();
45392
45954
  const { t } = useTranslate();
45393
- const [log13, setLog] = React95.useState([]);
45394
- const prevStatesRef = React95.useRef(/* @__PURE__ */ new Map());
45395
- React95.useEffect(() => {
45955
+ const [log13, setLog] = React97.useState([]);
45956
+ const prevStatesRef = React97.useRef(/* @__PURE__ */ new Map());
45957
+ React97.useEffect(() => {
45396
45958
  for (const trait of traits2) {
45397
45959
  const prev = prevStatesRef.current.get(trait.id);
45398
45960
  if (prev && prev !== trait.currentState) {
@@ -45561,10 +46123,10 @@ function VerifyModePanel({
45561
46123
  localCount
45562
46124
  }) {
45563
46125
  const { t } = useTranslate();
45564
- const [expanded, setExpanded] = React95.useState(true);
45565
- const scrollRef = React95.useRef(null);
45566
- const prevCountRef = React95.useRef(0);
45567
- React95.useEffect(() => {
46126
+ const [expanded, setExpanded] = React97.useState(true);
46127
+ const scrollRef = React97.useRef(null);
46128
+ const prevCountRef = React97.useRef(0);
46129
+ React97.useEffect(() => {
45568
46130
  if (expanded && transitions.length > prevCountRef.current && scrollRef.current) {
45569
46131
  scrollRef.current.scrollTop = scrollRef.current.scrollHeight;
45570
46132
  }
@@ -45621,10 +46183,10 @@ function RuntimeDebugger({
45621
46183
  schema
45622
46184
  }) {
45623
46185
  const { t } = useTranslate();
45624
- const [isCollapsed, setIsCollapsed] = React95.useState(mode === "verify" ? true : defaultCollapsed);
45625
- const [isVisible, setIsVisible] = React95.useState(mode === "inline" || mode === "verify" || isDebugEnabled2());
46186
+ const [isCollapsed, setIsCollapsed] = React97.useState(mode === "verify" ? true : defaultCollapsed);
46187
+ const [isVisible, setIsVisible] = React97.useState(mode === "inline" || mode === "verify" || isDebugEnabled2());
45626
46188
  const debugData = useDebugData();
45627
- React95.useEffect(() => {
46189
+ React97.useEffect(() => {
45628
46190
  if (mode === "inline") return;
45629
46191
  return onDebugToggle((enabled) => {
45630
46192
  setIsVisible(enabled);
@@ -45633,7 +46195,7 @@ function RuntimeDebugger({
45633
46195
  }
45634
46196
  });
45635
46197
  }, [mode]);
45636
- React95.useEffect(() => {
46198
+ React97.useEffect(() => {
45637
46199
  if (mode === "inline") return;
45638
46200
  const handleKeyDown = (e) => {
45639
46201
  if (e.key === "`" && isVisible) {
@@ -46082,7 +46644,7 @@ function SequenceBar({
46082
46644
  onSlotRemove(index);
46083
46645
  }, [onSlotRemove, playing]);
46084
46646
  const paddedSlots = Array.from({ length: maxSlots }, (_, i) => slots[i]);
46085
- return /* @__PURE__ */ jsx(HStack, { className: cn("items-center", className), gap: "sm", children: paddedSlots.map((slot, i) => /* @__PURE__ */ jsxs(React95__default.Fragment, { children: [
46647
+ return /* @__PURE__ */ jsx(HStack, { className: cn("items-center", className), gap: "sm", children: paddedSlots.map((slot, i) => /* @__PURE__ */ jsxs(React97__default.Fragment, { children: [
46086
46648
  i > 0 && /* @__PURE__ */ jsx(
46087
46649
  Typography,
46088
46650
  {
@@ -46358,7 +46920,7 @@ var init_SequencerBoard = __esm({
46358
46920
  });
46359
46921
  var ShowcaseOrganism;
46360
46922
  var init_ShowcaseOrganism = __esm({
46361
- "components/core/organisms/ShowcaseOrganism.tsx"() {
46923
+ "components/marketing/organisms/ShowcaseOrganism.tsx"() {
46362
46924
  "use client";
46363
46925
  init_cn();
46364
46926
  init_useEventBus();
@@ -47040,7 +47602,7 @@ var init_StatCard = __esm({
47040
47602
  title: propTitle,
47041
47603
  value: propValue,
47042
47604
  previousValue,
47043
- currentValue,
47605
+ currentValue: currentValue2,
47044
47606
  trend: manualTrend,
47045
47607
  trendDirection: manualDirection,
47046
47608
  invertTrend = false,
@@ -47061,7 +47623,7 @@ var init_StatCard = __esm({
47061
47623
  const labelToUse = propLabel ?? propTitle;
47062
47624
  const eventBus = useEventBus();
47063
47625
  const { t } = useTranslate();
47064
- const handleActionClick = React95__default.useCallback(() => {
47626
+ const handleActionClick = React97__default.useCallback(() => {
47065
47627
  if (action?.event) {
47066
47628
  eventBus.emit(`UI:${action.event}`, {});
47067
47629
  }
@@ -47072,7 +47634,7 @@ var init_StatCard = __esm({
47072
47634
  const data = Array.isArray(entity) ? entity : entity ? [entity] : [];
47073
47635
  const isLoading = externalLoading ?? false;
47074
47636
  const error = externalError;
47075
- const computeMetricValue = React95__default.useCallback(
47637
+ const computeMetricValue = React97__default.useCallback(
47076
47638
  (metric, items) => {
47077
47639
  if (metric.value !== void 0) {
47078
47640
  return metric.value;
@@ -47111,7 +47673,7 @@ var init_StatCard = __esm({
47111
47673
  },
47112
47674
  []
47113
47675
  );
47114
- const schemaStats = React95__default.useMemo(() => {
47676
+ const schemaStats = React97__default.useMemo(() => {
47115
47677
  if (!metrics || metrics.length === 0) return null;
47116
47678
  return metrics.map((metric) => ({
47117
47679
  label: metric.label,
@@ -47119,13 +47681,13 @@ var init_StatCard = __esm({
47119
47681
  format: metric.format
47120
47682
  }));
47121
47683
  }, [metrics, data, computeMetricValue]);
47122
- const calculatedTrend = React95__default.useMemo(() => {
47684
+ const calculatedTrend = React97__default.useMemo(() => {
47123
47685
  if (manualTrend !== void 0) return manualTrend;
47124
- if (previousValue === void 0 || currentValue === void 0)
47686
+ if (previousValue === void 0 || currentValue2 === void 0)
47125
47687
  return void 0;
47126
- if (previousValue === 0) return currentValue > 0 ? 100 : 0;
47127
- return (currentValue - previousValue) / previousValue * 100;
47128
- }, [manualTrend, previousValue, currentValue]);
47688
+ if (previousValue === 0) return currentValue2 > 0 ? 100 : 0;
47689
+ return (currentValue2 - previousValue) / previousValue * 100;
47690
+ }, [manualTrend, previousValue, currentValue2]);
47129
47691
  if (schemaStats && schemaStats.length > 1) {
47130
47692
  if (isLoading) {
47131
47693
  return /* @__PURE__ */ jsx(
@@ -47783,7 +48345,7 @@ var init_StatsOrganism = __esm({
47783
48345
  });
47784
48346
  var StepFlowOrganism;
47785
48347
  var init_StepFlowOrganism = __esm({
47786
- "components/core/organisms/StepFlowOrganism.tsx"() {
48348
+ "components/marketing/organisms/StepFlowOrganism.tsx"() {
47787
48349
  "use client";
47788
48350
  init_cn();
47789
48351
  init_Stack();
@@ -48053,7 +48615,7 @@ var init_Timeline = __esm({
48053
48615
  }) => {
48054
48616
  const { t } = useTranslate();
48055
48617
  const entityData = Array.isArray(entity) ? entity : [];
48056
- const items = React95__default.useMemo(() => {
48618
+ const items = React97__default.useMemo(() => {
48057
48619
  if (propItems) return propItems;
48058
48620
  if (entityData.length === 0) return [];
48059
48621
  return entityData.map((record, idx) => {
@@ -48160,7 +48722,7 @@ var init_Timeline = __esm({
48160
48722
  }
48161
48723
  });
48162
48724
  function extractToastProps(children) {
48163
- if (!React95__default.isValidElement(children)) {
48725
+ if (!React97__default.isValidElement(children)) {
48164
48726
  if (typeof children === "string") {
48165
48727
  return { message: children };
48166
48728
  }
@@ -48198,7 +48760,7 @@ var init_ToastSlot = __esm({
48198
48760
  eventBus.emit("UI:CLOSE");
48199
48761
  };
48200
48762
  if (!isVisible) return null;
48201
- const isCustomContent = React95__default.isValidElement(children) && !message;
48763
+ const isCustomContent = React97__default.isValidElement(children) && !message;
48202
48764
  return /* @__PURE__ */ jsx(Box, { className: "fixed bottom-4 right-4 z-50", children: isCustomContent ? children : /* @__PURE__ */ jsx(
48203
48765
  Toast,
48204
48766
  {
@@ -48708,12 +49270,12 @@ var init_WorldMapTemplate = __esm({
48708
49270
  }
48709
49271
  });
48710
49272
  function lazyThree(name, loader) {
48711
- const Lazy = React95__default.lazy(() => loader().then((m) => ({ default: m[name] })));
49273
+ const Lazy = React97__default.lazy(() => loader().then((m) => ({ default: m[name] })));
48712
49274
  function ThreeWrapper(props) {
48713
- return React95__default.createElement(
48714
- React95__default.Suspense,
49275
+ return React97__default.createElement(
49276
+ React97__default.Suspense,
48715
49277
  { fallback: null },
48716
- React95__default.createElement(Lazy, props)
49278
+ React97__default.createElement(Lazy, props)
48717
49279
  );
48718
49280
  }
48719
49281
  ThreeWrapper.displayName = `Lazy(${name})`;
@@ -48733,6 +49295,7 @@ var init_component_registry_generated = __esm({
48733
49295
  init_AnimatedReveal();
48734
49296
  init_ArticleSection();
48735
49297
  init_Aside();
49298
+ init_AssetPicker();
48736
49299
  init_AuthLayout();
48737
49300
  init_BattleBoard();
48738
49301
  init_BattleTemplate();
@@ -48832,11 +49395,13 @@ var init_component_registry_generated = __esm({
48832
49395
  init_GradientDivider();
48833
49396
  init_GraphCanvas();
48834
49397
  init_GraphView();
49398
+ init_GridPicker();
48835
49399
  init_Header();
48836
49400
  init_HealthBar();
48837
49401
  init_HealthPanel();
48838
49402
  init_HeroOrganism();
48839
49403
  init_HeroSection();
49404
+ init_IconPicker();
48840
49405
  init_InfiniteScrollSentinel();
48841
49406
  init_InputGroup();
48842
49407
  init_InstallBox();
@@ -48881,6 +49446,7 @@ var init_component_registry_generated = __esm({
48881
49446
  init_PricingOrganism();
48882
49447
  init_PricingPageTemplate();
48883
49448
  init_ProgressDots();
49449
+ init_PropertyInspector();
48884
49450
  init_PullQuote();
48885
49451
  init_PullToRefresh();
48886
49452
  init_QrScanner();
@@ -49004,6 +49570,7 @@ var init_component_registry_generated = __esm({
49004
49570
  "AnimatedReveal": AnimatedReveal,
49005
49571
  "ArticleSection": ArticleSection,
49006
49572
  "Aside": Aside,
49573
+ "AssetPicker": AssetPicker,
49007
49574
  "AuthLayout": AuthLayout,
49008
49575
  "Avatar": AvatarPattern,
49009
49576
  "AvatarPattern": AvatarPattern,
@@ -49123,6 +49690,7 @@ var init_component_registry_generated = __esm({
49123
49690
  "GraphView": GraphView,
49124
49691
  "Grid": GridPattern,
49125
49692
  "GridPattern": GridPattern,
49693
+ "GridPicker": GridPicker,
49126
49694
  "HStack": HStackPattern,
49127
49695
  "HStackPattern": HStackPattern,
49128
49696
  "Header": Header,
@@ -49132,6 +49700,7 @@ var init_component_registry_generated = __esm({
49132
49700
  "HeroSection": HeroSection,
49133
49701
  "Icon": IconPattern,
49134
49702
  "IconPattern": IconPattern,
49703
+ "IconPicker": IconPicker,
49135
49704
  "InfiniteScrollSentinel": InfiniteScrollSentinel,
49136
49705
  "Input": InputPattern,
49137
49706
  "InputGroup": InputGroup,
@@ -49188,6 +49757,7 @@ var init_component_registry_generated = __esm({
49188
49757
  "ProgressBar": ProgressBarPattern,
49189
49758
  "ProgressBarPattern": ProgressBarPattern,
49190
49759
  "ProgressDots": ProgressDots,
49760
+ "PropertyInspector": PropertyInspector,
49191
49761
  "PullQuote": PullQuote,
49192
49762
  "PullToRefresh": PullToRefresh,
49193
49763
  "QrScanner": QrScanner,
@@ -49329,7 +49899,7 @@ function SuspenseConfigProvider({
49329
49899
  config,
49330
49900
  children
49331
49901
  }) {
49332
- return React95__default.createElement(
49902
+ return React97__default.createElement(
49333
49903
  SuspenseConfigContext.Provider,
49334
49904
  { value: config },
49335
49905
  children
@@ -49819,7 +50389,7 @@ function renderPatternChildren(children, onDismiss, parentId = "root", parentPat
49819
50389
  const key = `${parentId}-${index}-trait:${traitName}`;
49820
50390
  return /* @__PURE__ */ jsx(TraitFrame, { traitName }, key);
49821
50391
  }
49822
- return /* @__PURE__ */ jsx(React95__default.Fragment, { children: child }, `${parentId}-${index}`);
50392
+ return /* @__PURE__ */ jsx(React97__default.Fragment, { children: child }, `${parentId}-${index}`);
49823
50393
  }
49824
50394
  if (!child || typeof child !== "object") return null;
49825
50395
  const childId = `${parentId}-${index}`;
@@ -49859,14 +50429,14 @@ function isPatternConfig(value) {
49859
50429
  if (value === null || value === void 0) return false;
49860
50430
  if (typeof value !== "object") return false;
49861
50431
  if (Array.isArray(value)) return false;
49862
- if (React95__default.isValidElement(value)) return false;
50432
+ if (React97__default.isValidElement(value)) return false;
49863
50433
  if (value instanceof Date) return false;
49864
50434
  if (typeof value === "function") return false;
49865
50435
  const record = value;
49866
50436
  return "type" in record && typeof record.type === "string";
49867
50437
  }
49868
50438
  function isPlainConfigObject(value) {
49869
- if (React95__default.isValidElement(value)) return false;
50439
+ if (React97__default.isValidElement(value)) return false;
49870
50440
  if (value instanceof Date) return false;
49871
50441
  const proto = Object.getPrototypeOf(value);
49872
50442
  return proto === Object.prototype || proto === null;
@@ -50355,7 +50925,7 @@ var AvlTransition = ({
50355
50925
  opacity = 1,
50356
50926
  className
50357
50927
  }) => {
50358
- const ids = React95__default.useMemo(() => {
50928
+ const ids = React97__default.useMemo(() => {
50359
50929
  avlTransitionId += 1;
50360
50930
  return { arrow: `avl-tr-${avlTransitionId}-arrow` };
50361
50931
  }, []);
@@ -50916,7 +51486,7 @@ var AvlStateMachine = ({
50916
51486
  color = "var(--color-primary)",
50917
51487
  animated = false
50918
51488
  }) => {
50919
- const ids = React95__default.useMemo(() => {
51489
+ const ids = React97__default.useMemo(() => {
50920
51490
  avlSmId += 1;
50921
51491
  const base = `avl-sm-${avlSmId}`;
50922
51492
  return { glow: `${base}-glow`, grad: `${base}-grad` };
@@ -51115,7 +51685,7 @@ var AvlOrbitalUnit = ({
51115
51685
  color = "var(--color-primary)",
51116
51686
  animated = false
51117
51687
  }) => {
51118
- const ids = React95__default.useMemo(() => {
51688
+ const ids = React97__default.useMemo(() => {
51119
51689
  avlOuId += 1;
51120
51690
  const base = `avl-ou-${avlOuId}`;
51121
51691
  return { glow: `${base}-glow`, grad: `${base}-grad` };
@@ -51211,7 +51781,7 @@ var AvlClosedCircuit = ({
51211
51781
  color = "var(--color-primary)",
51212
51782
  animated = false
51213
51783
  }) => {
51214
- const ids = React95__default.useMemo(() => {
51784
+ const ids = React97__default.useMemo(() => {
51215
51785
  avlCcId += 1;
51216
51786
  const base = `avl-cc-${avlCcId}`;
51217
51787
  return { glow: `${base}-glow`, grad: `${base}-grad`, arrow: `${base}-arrow` };
@@ -51366,7 +51936,7 @@ var AvlEmitListen = ({
51366
51936
  color = "var(--color-primary)",
51367
51937
  animated = false
51368
51938
  }) => {
51369
- const ids = React95__default.useMemo(() => {
51939
+ const ids = React97__default.useMemo(() => {
51370
51940
  avlElId += 1;
51371
51941
  const base = `avl-el-${avlElId}`;
51372
51942
  return { arrow: `${base}-arrow`, grad: `${base}-grad` };
@@ -51640,7 +52210,7 @@ function renderNode(node, color, glowId) {
51640
52210
  const baseR = node.type === "operator" ? 20 : 16;
51641
52211
  const r2 = Math.max(baseR, labelLen * 3.5 + 6);
51642
52212
  const nc = nodeColor(node.type, color);
51643
- return /* @__PURE__ */ jsxs(React95__default.Fragment, { children: [
52213
+ return /* @__PURE__ */ jsxs(React97__default.Fragment, { children: [
51644
52214
  node.children.map((child, i) => {
51645
52215
  const childR = Math.max(
51646
52216
  child.type === "operator" ? 20 : 16,
@@ -51697,7 +52267,7 @@ var AvlExprTree = ({
51697
52267
  className,
51698
52268
  color = "var(--color-primary)"
51699
52269
  }) => {
51700
- const ids = React95__default.useMemo(() => {
52270
+ const ids = React97__default.useMemo(() => {
51701
52271
  avlEtId += 1;
51702
52272
  return { glow: `avl-et-${avlEtId}-glow` };
51703
52273
  }, []);
@@ -52521,7 +53091,7 @@ var SystemNode = ({ data }) => {
52521
53091
  stateChain.length > 0 && /* @__PURE__ */ jsx("svg", { width: stateChain.length * 14 + 2, height: 10, viewBox: `0 0 ${stateChain.length * 14 + 2} 10`, children: stateChain.map((s, i) => {
52522
53092
  const tc = transitionCounts[s.name] ?? 0;
52523
53093
  const role = getStateRole(s.name, s.isInitial, s.isTerminal, tc, maxTC);
52524
- return /* @__PURE__ */ jsxs(React95__default.Fragment, { children: [
53094
+ return /* @__PURE__ */ jsxs(React97__default.Fragment, { children: [
52525
53095
  /* @__PURE__ */ jsx(AvlState, { x: i * 14 + 1, y: 1, width: 10, height: 8, name: "", role, isInitial: s.isInitial, isTerminal: s.isTerminal }),
52526
53096
  i < stateChain.length - 1 && /* @__PURE__ */ jsx("line", { x1: i * 14 + 12, y1: 5, x2: i * 14 + 15, y2: 5, stroke: "var(--color-border)", strokeWidth: 0.5 })
52527
53097
  ] }, s.name);
@@ -53673,7 +54243,7 @@ function resolveLambdaBindings(body, params, item, index) {
53673
54243
  if (Array.isArray(body)) {
53674
54244
  return body.map((b) => recur(b));
53675
54245
  }
53676
- if (body !== null && typeof body === "object" && !React95__default.isValidElement(body) && !(body instanceof Date) && typeof body !== "function") {
54246
+ if (body !== null && typeof body === "object" && !React97__default.isValidElement(body) && !(body instanceof Date) && typeof body !== "function") {
53677
54247
  const out = {};
53678
54248
  for (const [k, v] of Object.entries(body)) {
53679
54249
  out[k] = recur(v);
@@ -53692,7 +54262,7 @@ function getSlotContentRenderer2() {
53692
54262
  function makeLambdaFn(params, lambdaBody, callerKey) {
53693
54263
  return (item, index) => {
53694
54264
  const resolvedBody = resolveLambdaBindings(lambdaBody, params, item, index);
53695
- if (resolvedBody === null || typeof resolvedBody !== "object" || Array.isArray(resolvedBody) || typeof resolvedBody === "function" || React95__default.isValidElement(resolvedBody) || resolvedBody instanceof Date) {
54265
+ if (resolvedBody === null || typeof resolvedBody !== "object" || Array.isArray(resolvedBody) || typeof resolvedBody === "function" || React97__default.isValidElement(resolvedBody) || resolvedBody instanceof Date) {
53696
54266
  return null;
53697
54267
  }
53698
54268
  const record = resolvedBody;
@@ -53711,7 +54281,7 @@ function makeLambdaFn(params, lambdaBody, callerKey) {
53711
54281
  props: childProps,
53712
54282
  priority: 0
53713
54283
  };
53714
- return React95__default.createElement(SlotContentRenderer2, { content: childContent });
54284
+ return React97__default.createElement(SlotContentRenderer2, { content: childContent });
53715
54285
  };
53716
54286
  }
53717
54287
  function convertNode(node, callerKey) {
@@ -53730,7 +54300,7 @@ function convertNode(node, callerKey) {
53730
54300
  });
53731
54301
  return anyChanged ? mapped : node;
53732
54302
  }
53733
- if (typeof node === "object" && !React95__default.isValidElement(node) && !(node instanceof Date)) {
54303
+ if (typeof node === "object" && !React97__default.isValidElement(node) && !(node instanceof Date)) {
53734
54304
  return convertObjectProps(node);
53735
54305
  }
53736
54306
  return node;
@@ -55743,8 +56313,8 @@ function CanvasDndProvider({
55743
56313
  }) {
55744
56314
  const eventBus = useEventBus();
55745
56315
  const sensors = useAlmadarDndSensors(false);
55746
- const [activePayload, setActivePayload] = React95__default.useState(null);
55747
- const handleDragStart = React95__default.useCallback((e) => {
56316
+ const [activePayload, setActivePayload] = React97__default.useState(null);
56317
+ const handleDragStart = React97__default.useCallback((e) => {
55748
56318
  const data = e.active.data.current;
55749
56319
  const payload = data?.payload;
55750
56320
  if (payload) {
@@ -55755,7 +56325,7 @@ function CanvasDndProvider({
55755
56325
  log11.warn("dragStart:missing-payload", { id: e.active.id });
55756
56326
  }
55757
56327
  }, [eventBus]);
55758
- const handleDragEnd = React95__default.useCallback((e) => {
56328
+ const handleDragEnd = React97__default.useCallback((e) => {
55759
56329
  setActivePayload(null);
55760
56330
  const activeData = e.active.data.current;
55761
56331
  const payload = activeData?.payload;
@@ -55784,7 +56354,7 @@ function CanvasDndProvider({
55784
56354
  const suppressed = onDrop ? onDrop(drop) === true : false;
55785
56355
  if (!suppressed) defaultEmit(eventBus, drop);
55786
56356
  }, [eventBus, onDrop]);
55787
- const handleDragCancel = React95__default.useCallback(() => {
56357
+ const handleDragCancel = React97__default.useCallback(() => {
55788
56358
  setActivePayload(null);
55789
56359
  log11.info("dragCancel");
55790
56360
  }, []);
@@ -56538,7 +57108,7 @@ var OrbPreviewNodeInner = (props) => {
56538
57108
  }
56539
57109
  );
56540
57110
  };
56541
- var OrbPreviewNode = React95__default.memo(OrbPreviewNodeInner);
57111
+ var OrbPreviewNode = React97__default.memo(OrbPreviewNodeInner);
56542
57112
  OrbPreviewNode.displayName = "OrbPreviewNode";
56543
57113
  orbPreviewLog.debug("export-resolved", () => ({
56544
57114
  type: typeof OrbPreviewNode,
@@ -56643,7 +57213,7 @@ var EventFlowEdgeInner = (props) => {
56643
57213
  ) })
56644
57214
  ] });
56645
57215
  };
56646
- var EventFlowEdge = React95__default.memo(EventFlowEdgeInner);
57216
+ var EventFlowEdge = React97__default.memo(EventFlowEdgeInner);
56647
57217
  EventFlowEdge.displayName = "EventFlowEdge";
56648
57218
 
56649
57219
  // components/avl/molecules/BehaviorComposeNode.tsx
@@ -56790,7 +57360,7 @@ var BehaviorComposeNodeInner = (props) => {
56790
57360
  }
56791
57361
  );
56792
57362
  };
56793
- var BehaviorComposeNode = React95__default.memo(BehaviorComposeNodeInner);
57363
+ var BehaviorComposeNode = React97__default.memo(BehaviorComposeNodeInner);
56794
57364
  BehaviorComposeNode.displayName = "BehaviorComposeNode";
56795
57365
 
56796
57366
  // components/avl/molecules/avl-behavior-compose-converter.ts
@@ -57186,8 +57756,8 @@ function OrbInspector({ node, schema, editable = false, userType = "builder", th
57186
57756
  const explicitValue = patternConfig ? patternConfig[propName] : void 0;
57187
57757
  const defaultValue = ps.default;
57188
57758
  const isImplicit = explicitValue === void 0 && defaultValue !== void 0;
57189
- const currentValue = explicitValue !== void 0 ? explicitValue : defaultValue;
57190
- const displayValue = currentValue !== void 0 ? typeof currentValue === "object" ? JSON.stringify(currentValue) : String(currentValue) : "";
57759
+ const currentValue2 = explicitValue !== void 0 ? explicitValue : defaultValue;
57760
+ const displayValue = currentValue2 !== void 0 ? typeof currentValue2 === "object" ? JSON.stringify(currentValue2) : String(currentValue2) : "";
57191
57761
  inspectorLog.debug("prop-row", () => ({
57192
57762
  patternType: patternDef.type,
57193
57763
  patternId: selectedPattern?.patternId ?? "",
@@ -57802,7 +58372,7 @@ var TraitCardNodeInner = (props) => {
57802
58372
  }
57803
58373
  );
57804
58374
  };
57805
- var TraitCardNode = React95__default.memo(TraitCardNodeInner);
58375
+ var TraitCardNode = React97__default.memo(TraitCardNodeInner);
57806
58376
  TraitCardNode.displayName = "TraitCardNode";
57807
58377
 
57808
58378
  // components/avl/organisms/FlowCanvas.tsx
@@ -57875,7 +58445,7 @@ function FlowCanvasInner({
57875
58445
  initialOrbital
57876
58446
  );
57877
58447
  const [expandedBehaviorAlias, setExpandedBehaviorAlias] = useState(void 0);
57878
- const screenSizeUserOverrideRef = React95__default.useRef(false);
58448
+ const screenSizeUserOverrideRef = React97__default.useRef(false);
57879
58449
  const [screenSize, setScreenSize] = useState(
57880
58450
  () => typeof window === "undefined" ? "laptop" : detectScreenSize(window.innerWidth)
57881
58451
  );
@@ -58259,7 +58829,7 @@ var ZoomBreadcrumb = ({
58259
58829
  if (eventName && band === "detail") {
58260
58830
  segments.push({ icon: "\u26A1", label: eventName });
58261
58831
  }
58262
- return /* @__PURE__ */ jsx("div", { className: "absolute top-2 left-2 z-10 flex items-center gap-1 px-2 py-1 rounded-md bg-card/90 border border-border text-xs text-muted-foreground backdrop-blur-sm", children: segments.map((seg, i) => /* @__PURE__ */ jsxs(React95__default.Fragment, { children: [
58832
+ return /* @__PURE__ */ jsx("div", { className: "absolute top-2 left-2 z-10 flex items-center gap-1 px-2 py-1 rounded-md bg-card/90 border border-border text-xs text-muted-foreground backdrop-blur-sm", children: segments.map((seg, i) => /* @__PURE__ */ jsxs(React97__default.Fragment, { children: [
58263
58833
  i > 0 && /* @__PURE__ */ jsx("span", { className: "opacity-40", children: ">" }),
58264
58834
  /* @__PURE__ */ jsx("span", { className: "opacity-60", children: seg.icon }),
58265
58835
  /* @__PURE__ */ jsx("span", { children: seg.label })
@@ -58600,7 +59170,7 @@ var EventWireOverlay = ({
58600
59170
  containerW,
58601
59171
  containerH
58602
59172
  }) => {
58603
- const ids = React95__default.useMemo(() => {
59173
+ const ids = React97__default.useMemo(() => {
58604
59174
  avlOczWireId += 1;
58605
59175
  return { arrow: `avl-ocz-wire-${avlOczWireId}-arrow` };
58606
59176
  }, []);
@@ -58967,7 +59537,7 @@ var AvlOrbitalsCosmicZoom = ({
58967
59537
  borderRadius: 6,
58968
59538
  border: `1px solid ${color}`
58969
59539
  },
58970
- children: /* @__PURE__ */ jsx(HStack, { gap: "xs", align: "center", children: breadcrumbs.map((crumb, i) => /* @__PURE__ */ jsxs(React95__default.Fragment, { children: [
59540
+ children: /* @__PURE__ */ jsx(HStack, { gap: "xs", align: "center", children: breadcrumbs.map((crumb, i) => /* @__PURE__ */ jsxs(React97__default.Fragment, { children: [
58971
59541
  i > 0 && /* @__PURE__ */ jsx(Typography, { variant: "small", style: { opacity: 0.5, color }, children: "/" }),
58972
59542
  i < breadcrumbs.length - 1 ? /* @__PURE__ */ jsx(
58973
59543
  Box,