@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.
@@ -1,5 +1,5 @@
1
- import * as React86 from 'react';
2
- import React86__default, { createContext, useMemo, useContext, useRef, useEffect, useCallback, Suspense, useState, useSyncExternalStore, useLayoutEffect, lazy, useId } from 'react';
1
+ import * as React88 from 'react';
2
+ import React88__default, { createContext, useMemo, useContext, useRef, useEffect, useCallback, Suspense, useState, useSyncExternalStore, useLayoutEffect, lazy, useId } from 'react';
3
3
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
4
4
  import { clsx } from 'clsx';
5
5
  import { twMerge } from 'tailwind-merge';
@@ -393,7 +393,7 @@ var init_Box = __esm({
393
393
  fixed: "fixed",
394
394
  sticky: "sticky"
395
395
  };
396
- Box = React86__default.forwardRef(
396
+ Box = React88__default.forwardRef(
397
397
  ({
398
398
  padding,
399
399
  paddingX,
@@ -443,7 +443,7 @@ var init_Box = __esm({
443
443
  onMouseLeave?.(e);
444
444
  }, [hoverEvent, eventBus, onMouseLeave]);
445
445
  const isClickable = action || onClick;
446
- return React86__default.createElement(
446
+ return React88__default.createElement(
447
447
  Component,
448
448
  {
449
449
  ref,
@@ -1226,7 +1226,7 @@ var init_Icon = __esm({
1226
1226
  const directIcon = typeof icon === "string" ? void 0 : icon;
1227
1227
  const effectiveName = typeof icon === "string" ? icon : name;
1228
1228
  const family = useIconFamily();
1229
- const RenderedComponent = React86__default.useMemo(() => {
1229
+ const RenderedComponent = React88__default.useMemo(() => {
1230
1230
  if (directIcon) return null;
1231
1231
  return effectiveName ? resolveIconForFamily(effectiveName, family) : null;
1232
1232
  }, [directIcon, effectiveName, family]);
@@ -1284,7 +1284,7 @@ function resolveIconProp(value, sizeClass) {
1284
1284
  const IconComp = value;
1285
1285
  return /* @__PURE__ */ jsx(IconComp, { className: sizeClass });
1286
1286
  }
1287
- if (React86__default.isValidElement(value)) {
1287
+ if (React88__default.isValidElement(value)) {
1288
1288
  return value;
1289
1289
  }
1290
1290
  if (typeof value === "object" && value !== null && "render" in value) {
@@ -1360,7 +1360,7 @@ var init_Button = __esm({
1360
1360
  md: "h-icon-default w-icon-default",
1361
1361
  lg: "h-icon-default w-icon-default"
1362
1362
  };
1363
- Button = React86__default.forwardRef(
1363
+ Button = React88__default.forwardRef(
1364
1364
  ({
1365
1365
  className,
1366
1366
  variant = "primary",
@@ -1425,7 +1425,7 @@ var Dialog;
1425
1425
  var init_Dialog = __esm({
1426
1426
  "components/core/atoms/Dialog.tsx"() {
1427
1427
  init_cn();
1428
- Dialog = React86__default.forwardRef(
1428
+ Dialog = React88__default.forwardRef(
1429
1429
  ({
1430
1430
  role = "dialog",
1431
1431
  "aria-modal": ariaModal = true,
@@ -2089,7 +2089,7 @@ var init_Badge = __esm({
2089
2089
  md: "px-2.5 py-1 text-sm",
2090
2090
  lg: "px-3 py-1.5 text-base"
2091
2091
  };
2092
- Badge = React86__default.forwardRef(
2092
+ Badge = React88__default.forwardRef(
2093
2093
  ({ className, variant = "default", size = "sm", amount, label, icon, children, onRemove, removeLabel, ...props }, ref) => {
2094
2094
  const iconSizes3 = {
2095
2095
  sm: "h-icon-default w-icon-default",
@@ -2405,7 +2405,7 @@ var init_SvgFlow = __esm({
2405
2405
  opacity = 1,
2406
2406
  className
2407
2407
  }) => {
2408
- const markerId = React86__default.useMemo(() => {
2408
+ const markerId = React88__default.useMemo(() => {
2409
2409
  flowIdCounter += 1;
2410
2410
  return `almadar-flow-arrow-${flowIdCounter}`;
2411
2411
  }, []);
@@ -2948,7 +2948,7 @@ var init_SvgRing = __esm({
2948
2948
  className,
2949
2949
  label
2950
2950
  }) => {
2951
- const gradientId = React86__default.useMemo(() => {
2951
+ const gradientId = React88__default.useMemo(() => {
2952
2952
  ringIdCounter += 1;
2953
2953
  return `almadar-ring-glow-${ringIdCounter}`;
2954
2954
  }, []);
@@ -3110,7 +3110,7 @@ var init_Input = __esm({
3110
3110
  "components/core/atoms/Input.tsx"() {
3111
3111
  init_cn();
3112
3112
  init_Icon();
3113
- Input = React86__default.forwardRef(
3113
+ Input = React88__default.forwardRef(
3114
3114
  ({
3115
3115
  className,
3116
3116
  inputType,
@@ -3231,7 +3231,7 @@ var Label;
3231
3231
  var init_Label = __esm({
3232
3232
  "components/core/atoms/Label.tsx"() {
3233
3233
  init_cn();
3234
- Label = React86__default.forwardRef(
3234
+ Label = React88__default.forwardRef(
3235
3235
  ({ className, required, children, ...props }, ref) => {
3236
3236
  return /* @__PURE__ */ jsxs(
3237
3237
  "label",
@@ -3257,7 +3257,7 @@ var Textarea;
3257
3257
  var init_Textarea = __esm({
3258
3258
  "components/core/atoms/Textarea.tsx"() {
3259
3259
  init_cn();
3260
- Textarea = React86__default.forwardRef(
3260
+ Textarea = React88__default.forwardRef(
3261
3261
  ({ className, error, ...props }, ref) => {
3262
3262
  return /* @__PURE__ */ jsx(
3263
3263
  "textarea",
@@ -3287,7 +3287,7 @@ var init_Select = __esm({
3287
3287
  "components/core/atoms/Select.tsx"() {
3288
3288
  init_cn();
3289
3289
  init_Icon();
3290
- Select = React86__default.forwardRef(
3290
+ Select = React88__default.forwardRef(
3291
3291
  ({ className, options, placeholder, error, ...props }, ref) => {
3292
3292
  return /* @__PURE__ */ jsxs("div", { className: "relative", children: [
3293
3293
  /* @__PURE__ */ jsxs(
@@ -3329,7 +3329,7 @@ var Checkbox;
3329
3329
  var init_Checkbox = __esm({
3330
3330
  "components/core/atoms/Checkbox.tsx"() {
3331
3331
  init_cn();
3332
- Checkbox = React86__default.forwardRef(
3332
+ Checkbox = React88__default.forwardRef(
3333
3333
  ({ className, label, id, ...props }, ref) => {
3334
3334
  const inputId = id || `checkbox-${Math.random().toString(36).substr(2, 9)}`;
3335
3335
  return /* @__PURE__ */ jsxs("div", { className: "flex items-center", children: [
@@ -3420,7 +3420,7 @@ var init_Card = __esm({
3420
3420
  chip: "shadow-none rounded-pill border-[length:var(--border-width)] border-border",
3421
3421
  "tile-image-first": "p-0 overflow-hidden"
3422
3422
  };
3423
- Card = React86__default.forwardRef(
3423
+ Card = React88__default.forwardRef(
3424
3424
  ({
3425
3425
  className,
3426
3426
  variant = "bordered",
@@ -3458,9 +3458,9 @@ var init_Card = __esm({
3458
3458
  }
3459
3459
  );
3460
3460
  Card.displayName = "Card";
3461
- CardHeader = React86__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn("mb-4", className), ...props }));
3461
+ CardHeader = React88__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn("mb-4", className), ...props }));
3462
3462
  CardHeader.displayName = "CardHeader";
3463
- CardTitle = React86__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
3463
+ CardTitle = React88__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
3464
3464
  "h3",
3465
3465
  {
3466
3466
  ref,
@@ -3473,11 +3473,11 @@ var init_Card = __esm({
3473
3473
  }
3474
3474
  ));
3475
3475
  CardTitle.displayName = "CardTitle";
3476
- CardContent = React86__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn("", className), ...props }));
3476
+ CardContent = React88__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn("", className), ...props }));
3477
3477
  CardContent.displayName = "CardContent";
3478
3478
  CardBody = CardContent;
3479
3479
  CardBody.displayName = "CardBody";
3480
- CardFooter = React86__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
3480
+ CardFooter = React88__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
3481
3481
  "div",
3482
3482
  {
3483
3483
  ref,
@@ -3532,7 +3532,7 @@ var init_FilterPill = __esm({
3532
3532
  md: "w-3.5 h-3.5",
3533
3533
  lg: "w-4 h-4"
3534
3534
  };
3535
- FilterPill = React86__default.forwardRef(
3535
+ FilterPill = React88__default.forwardRef(
3536
3536
  ({
3537
3537
  className,
3538
3538
  variant = "default",
@@ -3609,7 +3609,7 @@ var init_Spinner = __esm({
3609
3609
  md: "h-6 w-6",
3610
3610
  lg: "h-8 w-8"
3611
3611
  };
3612
- Spinner = React86__default.forwardRef(
3612
+ Spinner = React88__default.forwardRef(
3613
3613
  ({ className, size = "md", ...props }, ref) => {
3614
3614
  return /* @__PURE__ */ jsx(
3615
3615
  "div",
@@ -3688,8 +3688,8 @@ var init_Avatar = __esm({
3688
3688
  actionPayload
3689
3689
  }) => {
3690
3690
  const eventBus = useEventBus();
3691
- const [imgFailed, setImgFailed] = React86__default.useState(false);
3692
- React86__default.useEffect(() => {
3691
+ const [imgFailed, setImgFailed] = React88__default.useState(false);
3692
+ React88__default.useEffect(() => {
3693
3693
  setImgFailed(false);
3694
3694
  }, [src]);
3695
3695
  const initials = providedInitials ?? (name ? generateInitials(name) : void 0);
@@ -4074,7 +4074,7 @@ var init_Radio = __esm({
4074
4074
  md: "w-2.5 h-2.5",
4075
4075
  lg: "w-3 h-3"
4076
4076
  };
4077
- Radio = React86__default.forwardRef(
4077
+ Radio = React88__default.forwardRef(
4078
4078
  ({
4079
4079
  label,
4080
4080
  helperText,
@@ -4091,12 +4091,12 @@ var init_Radio = __esm({
4091
4091
  onChange,
4092
4092
  ...props
4093
4093
  }, ref) => {
4094
- const reactId = React86__default.useId();
4094
+ const reactId = React88__default.useId();
4095
4095
  const baseId = id || `radio-${reactId}`;
4096
4096
  const hasError = !!error;
4097
4097
  const eventBus = useEventBus();
4098
- const [selected, setSelected] = React86__default.useState(value);
4099
- React86__default.useEffect(() => {
4098
+ const [selected, setSelected] = React88__default.useState(value);
4099
+ React88__default.useEffect(() => {
4100
4100
  if (value !== void 0) setSelected(value);
4101
4101
  }, [value]);
4102
4102
  const pick = (next, e) => {
@@ -4278,7 +4278,7 @@ var init_Switch = __esm({
4278
4278
  "components/core/atoms/Switch.tsx"() {
4279
4279
  "use client";
4280
4280
  init_cn();
4281
- Switch = React86.forwardRef(
4281
+ Switch = React88.forwardRef(
4282
4282
  ({
4283
4283
  checked,
4284
4284
  defaultChecked = false,
@@ -4289,10 +4289,10 @@ var init_Switch = __esm({
4289
4289
  name,
4290
4290
  className
4291
4291
  }, ref) => {
4292
- const [isChecked, setIsChecked] = React86.useState(
4292
+ const [isChecked, setIsChecked] = React88.useState(
4293
4293
  checked !== void 0 ? checked : defaultChecked
4294
4294
  );
4295
- React86.useEffect(() => {
4295
+ React88.useEffect(() => {
4296
4296
  if (checked !== void 0) {
4297
4297
  setIsChecked(checked);
4298
4298
  }
@@ -4823,7 +4823,7 @@ var Aside;
4823
4823
  var init_Aside = __esm({
4824
4824
  "components/core/atoms/Aside.tsx"() {
4825
4825
  init_cn();
4826
- Aside = React86__default.forwardRef(
4826
+ Aside = React88__default.forwardRef(
4827
4827
  ({ className, children, ...rest }, ref) => /* @__PURE__ */ jsx("aside", { ref, className: cn(className), ...rest, children })
4828
4828
  );
4829
4829
  Aside.displayName = "Aside";
@@ -4901,8 +4901,8 @@ var init_LawReferenceTooltip = __esm({
4901
4901
  className
4902
4902
  }) => {
4903
4903
  const { t } = useTranslate();
4904
- const [isVisible, setIsVisible] = React86__default.useState(false);
4905
- const timeoutRef = React86__default.useRef(null);
4904
+ const [isVisible, setIsVisible] = React88__default.useState(false);
4905
+ const timeoutRef = React88__default.useRef(null);
4906
4906
  const handleMouseEnter = () => {
4907
4907
  if (timeoutRef.current) clearTimeout(timeoutRef.current);
4908
4908
  timeoutRef.current = setTimeout(() => setIsVisible(true), 200);
@@ -4911,7 +4911,7 @@ var init_LawReferenceTooltip = __esm({
4911
4911
  if (timeoutRef.current) clearTimeout(timeoutRef.current);
4912
4912
  setIsVisible(false);
4913
4913
  };
4914
- React86__default.useEffect(() => {
4914
+ React88__default.useEffect(() => {
4915
4915
  return () => {
4916
4916
  if (timeoutRef.current) clearTimeout(timeoutRef.current);
4917
4917
  };
@@ -5121,7 +5121,7 @@ var init_StatusDot = __esm({
5121
5121
  md: "w-2.5 h-2.5",
5122
5122
  lg: "w-3 h-3"
5123
5123
  };
5124
- StatusDot = React86__default.forwardRef(
5124
+ StatusDot = React88__default.forwardRef(
5125
5125
  ({ className, status = "offline", pulse = false, size = "md", label, ...props }, ref) => {
5126
5126
  return /* @__PURE__ */ jsx(
5127
5127
  "span",
@@ -5175,7 +5175,7 @@ var init_TrendIndicator = __esm({
5175
5175
  down: "trending-down",
5176
5176
  flat: "arrow-right"
5177
5177
  };
5178
- TrendIndicator = React86__default.forwardRef(
5178
+ TrendIndicator = React88__default.forwardRef(
5179
5179
  ({
5180
5180
  className,
5181
5181
  value,
@@ -5242,7 +5242,7 @@ var init_RangeSlider = __esm({
5242
5242
  md: "w-4 h-4",
5243
5243
  lg: "w-5 h-5"
5244
5244
  };
5245
- RangeSlider = React86__default.forwardRef(
5245
+ RangeSlider = React88__default.forwardRef(
5246
5246
  ({
5247
5247
  className,
5248
5248
  min = 0,
@@ -5750,7 +5750,7 @@ var init_ContentSection = __esm({
5750
5750
  md: "py-16",
5751
5751
  lg: "py-24"
5752
5752
  };
5753
- ContentSection = React86__default.forwardRef(
5753
+ ContentSection = React88__default.forwardRef(
5754
5754
  ({ children, background = "default", padding = "lg", id, className }, ref) => {
5755
5755
  return /* @__PURE__ */ jsx(
5756
5756
  Box,
@@ -6284,7 +6284,7 @@ var init_AnimatedReveal = __esm({
6284
6284
  "scale-up": { opacity: 1, transform: "scale(1) translateY(0)" },
6285
6285
  "none": {}
6286
6286
  };
6287
- AnimatedReveal = React86__default.forwardRef(
6287
+ AnimatedReveal = React88__default.forwardRef(
6288
6288
  ({
6289
6289
  trigger = "scroll",
6290
6290
  animation = "fade-up",
@@ -6444,7 +6444,7 @@ var init_AnimatedGraphic = __esm({
6444
6444
  "components/marketing/atoms/AnimatedGraphic.tsx"() {
6445
6445
  "use client";
6446
6446
  init_cn();
6447
- AnimatedGraphic = React86__default.forwardRef(
6447
+ AnimatedGraphic = React88__default.forwardRef(
6448
6448
  ({
6449
6449
  src,
6450
6450
  svgContent,
@@ -6467,7 +6467,7 @@ var init_AnimatedGraphic = __esm({
6467
6467
  const fetchedSvg = useFetchedSvg(svgContent ? void 0 : src);
6468
6468
  const resolvedSvg = svgContent ?? fetchedSvg;
6469
6469
  const prevAnimateRef = useRef(animate);
6470
- const setRef = React86__default.useCallback(
6470
+ const setRef = React88__default.useCallback(
6471
6471
  (node) => {
6472
6472
  containerRef.current = node;
6473
6473
  if (typeof ref === "function") ref(node);
@@ -6692,9 +6692,9 @@ function ScoreDisplay({
6692
6692
  ...rest
6693
6693
  }) {
6694
6694
  const resolvedValue = typeof value === "number" && !Number.isNaN(value) ? value : typeof rest.score === "number" && !Number.isNaN(rest.score) ? rest.score : 0;
6695
- const [displayValue, setDisplayValue] = React86.useState(resolvedValue);
6696
- const [isAnimating, setIsAnimating] = React86.useState(false);
6697
- React86.useEffect(() => {
6695
+ const [displayValue, setDisplayValue] = React88.useState(resolvedValue);
6696
+ const [isAnimating, setIsAnimating] = React88.useState(false);
6697
+ React88.useEffect(() => {
6698
6698
  if (!animated || displayValue === resolvedValue) {
6699
6699
  setDisplayValue(resolvedValue);
6700
6700
  return;
@@ -6764,9 +6764,9 @@ function ControlButton({
6764
6764
  className
6765
6765
  }) {
6766
6766
  const eventBus = useEventBus();
6767
- const [isPressed, setIsPressed] = React86.useState(false);
6767
+ const [isPressed, setIsPressed] = React88.useState(false);
6768
6768
  const actualPressed = pressed ?? isPressed;
6769
- const handlePointerDown = React86.useCallback(
6769
+ const handlePointerDown = React88.useCallback(
6770
6770
  (e) => {
6771
6771
  e.preventDefault();
6772
6772
  if (disabled) return;
@@ -6776,7 +6776,7 @@ function ControlButton({
6776
6776
  },
6777
6777
  [disabled, pressEvent, eventBus, onPress]
6778
6778
  );
6779
- const handlePointerUp = React86.useCallback(
6779
+ const handlePointerUp = React88.useCallback(
6780
6780
  (e) => {
6781
6781
  e.preventDefault();
6782
6782
  if (disabled) return;
@@ -6786,7 +6786,7 @@ function ControlButton({
6786
6786
  },
6787
6787
  [disabled, releaseEvent, eventBus, onRelease]
6788
6788
  );
6789
- const handlePointerLeave = React86.useCallback(
6789
+ const handlePointerLeave = React88.useCallback(
6790
6790
  (e) => {
6791
6791
  if (isPressed) {
6792
6792
  setIsPressed(false);
@@ -7275,8 +7275,8 @@ function XPBar({
7275
7275
  }) {
7276
7276
  const sizes = sizeMap9[size];
7277
7277
  const percentage = max > 0 ? Math.max(0, Math.min(100, current / max * 100)) : 0;
7278
- const [fillWidth, setFillWidth] = React86.useState(animated ? 0 : percentage);
7279
- React86.useEffect(() => {
7278
+ const [fillWidth, setFillWidth] = React88.useState(animated ? 0 : percentage);
7279
+ React88.useEffect(() => {
7280
7280
  if (!animated) {
7281
7281
  setFillWidth(percentage);
7282
7282
  return;
@@ -7702,9 +7702,9 @@ function MiniMap({
7702
7702
  viewportRect,
7703
7703
  className
7704
7704
  }) {
7705
- const canvasRef = React86.useRef(null);
7706
- const frameRef = React86.useRef(0);
7707
- React86.useEffect(() => {
7705
+ const canvasRef = React88.useRef(null);
7706
+ const frameRef = React88.useRef(0);
7707
+ React88.useEffect(() => {
7708
7708
  const canvas = canvasRef.current;
7709
7709
  if (!canvas) return;
7710
7710
  const ctx = canvas.getContext("2d");
@@ -7878,7 +7878,7 @@ var init_ErrorBoundary = __esm({
7878
7878
  }
7879
7879
  );
7880
7880
  };
7881
- ErrorBoundary = class extends React86__default.Component {
7881
+ ErrorBoundary = class extends React88__default.Component {
7882
7882
  constructor(props) {
7883
7883
  super(props);
7884
7884
  __publicField(this, "reset", () => {
@@ -8968,8 +8968,8 @@ var init_Tooltip = __esm({
8968
8968
  if (hideTimeoutRef.current) clearTimeout(hideTimeoutRef.current);
8969
8969
  };
8970
8970
  }, []);
8971
- const triggerElement = React86__default.isValidElement(children) ? children : /* @__PURE__ */ jsx("span", { children });
8972
- const trigger = React86__default.cloneElement(triggerElement, {
8971
+ const triggerElement = React88__default.isValidElement(children) ? children : /* @__PURE__ */ jsx("span", { children });
8972
+ const trigger = React88__default.cloneElement(triggerElement, {
8973
8973
  ref: triggerRef,
8974
8974
  onMouseEnter: handleMouseEnter,
8975
8975
  onMouseLeave: handleMouseLeave,
@@ -9116,8 +9116,8 @@ var init_Popover = __esm({
9116
9116
  onMouseEnter: handleOpen,
9117
9117
  onMouseLeave: handleClose
9118
9118
  };
9119
- const childElement = React86__default.isValidElement(children) ? children : /* @__PURE__ */ jsx("span", { children });
9120
- const triggerElement = React86__default.cloneElement(
9119
+ const childElement = React88__default.isValidElement(children) ? children : /* @__PURE__ */ jsx("span", { children });
9120
+ const triggerElement = React88__default.cloneElement(
9121
9121
  childElement,
9122
9122
  {
9123
9123
  ref: triggerRef,
@@ -9243,8 +9243,8 @@ var init_Menu = __esm({
9243
9243
  };
9244
9244
  const effectivePosition = direction === "rtl" ? rtlMirror[position] ?? position : position;
9245
9245
  const subMenuSideClass = direction === "rtl" ? "right-full mr-2" : "left-full ml-2";
9246
- const triggerChild = React86__default.isValidElement(trigger) ? trigger : /* @__PURE__ */ jsx(Typography, { variant: "small", as: "span", children: trigger });
9247
- const triggerElement = React86__default.cloneElement(
9246
+ const triggerChild = React88__default.isValidElement(trigger) ? trigger : /* @__PURE__ */ jsx(Typography, { variant: "small", as: "span", children: trigger });
9247
+ const triggerElement = React88__default.cloneElement(
9248
9248
  triggerChild,
9249
9249
  {
9250
9250
  ref: triggerRef,
@@ -9651,12 +9651,12 @@ var init_MapView = __esm({
9651
9651
  shadowSize: [41, 41]
9652
9652
  });
9653
9653
  L.Marker.prototype.options.icon = defaultIcon;
9654
- const { useEffect: useEffect72, useRef: useRef66, useCallback: useCallback114, useState: useState104 } = React86__default;
9654
+ const { useEffect: useEffect72, useRef: useRef67, useCallback: useCallback116, useState: useState105 } = React88__default;
9655
9655
  const { Typography: Typography2 } = await Promise.resolve().then(() => (init_Typography(), Typography_exports));
9656
9656
  const { useEventBus: useEventBus3 } = await Promise.resolve().then(() => (init_useEventBus(), useEventBus_exports));
9657
9657
  function MapUpdater({ centerLat, centerLng, zoom }) {
9658
9658
  const map = useMap();
9659
- const prevRef = useRef66({ centerLat, centerLng, zoom });
9659
+ const prevRef = useRef67({ centerLat, centerLng, zoom });
9660
9660
  useEffect72(() => {
9661
9661
  const prev = prevRef.current;
9662
9662
  if (prev.centerLat !== centerLat || prev.centerLng !== centerLng || prev.zoom !== zoom) {
@@ -9696,8 +9696,8 @@ var init_MapView = __esm({
9696
9696
  showAttribution = true
9697
9697
  }) {
9698
9698
  const eventBus = useEventBus3();
9699
- const [clickedPosition, setClickedPosition] = useState104(null);
9700
- const handleMapClick = useCallback114((lat, lng) => {
9699
+ const [clickedPosition, setClickedPosition] = useState105(null);
9700
+ const handleMapClick = useCallback116((lat, lng) => {
9701
9701
  if (showClickedPin) {
9702
9702
  setClickedPosition({ lat, lng });
9703
9703
  }
@@ -9706,7 +9706,7 @@ var init_MapView = __esm({
9706
9706
  eventBus.emit(`UI:${mapClickEvent}`, { latitude: lat, longitude: lng });
9707
9707
  }
9708
9708
  }, [onMapClick, mapClickEvent, eventBus, showClickedPin]);
9709
- const handleMarkerClick = useCallback114((marker) => {
9709
+ const handleMarkerClick = useCallback116((marker) => {
9710
9710
  onMarkerClick?.(marker);
9711
9711
  if (markerClickEvent) {
9712
9712
  eventBus.emit(`UI:${markerClickEvent}`, { ...marker });
@@ -9897,7 +9897,7 @@ function InputPattern({
9897
9897
  fieldName
9898
9898
  }) {
9899
9899
  const { emit } = useEventBus();
9900
- const [localValue, setLocalValue] = React86__default.useState(value);
9900
+ const [localValue, setLocalValue] = React88__default.useState(value);
9901
9901
  const handleChange = (e) => {
9902
9902
  setLocalValue(e.target.value);
9903
9903
  if (onChange) {
@@ -9935,7 +9935,7 @@ function TextareaPattern({
9935
9935
  fieldName
9936
9936
  }) {
9937
9937
  const { emit } = useEventBus();
9938
- const [localValue, setLocalValue] = React86__default.useState(value);
9938
+ const [localValue, setLocalValue] = React88__default.useState(value);
9939
9939
  const handleChange = (e) => {
9940
9940
  setLocalValue(e.target.value);
9941
9941
  if (onChange) {
@@ -9967,7 +9967,7 @@ function SelectPattern({
9967
9967
  fieldName
9968
9968
  }) {
9969
9969
  const { emit } = useEventBus();
9970
- const [localValue, setLocalValue] = React86__default.useState(value);
9970
+ const [localValue, setLocalValue] = React88__default.useState(value);
9971
9971
  const handleChange = (e) => {
9972
9972
  setLocalValue(e.target.value);
9973
9973
  if (onChange) {
@@ -9996,7 +9996,7 @@ function CheckboxPattern({
9996
9996
  className
9997
9997
  }) {
9998
9998
  const { emit } = useEventBus();
9999
- const [localChecked, setLocalChecked] = React86__default.useState(checked);
9999
+ const [localChecked, setLocalChecked] = React88__default.useState(checked);
10000
10000
  const handleChange = (e) => {
10001
10001
  setLocalChecked(e.target.checked);
10002
10002
  if (onChange) {
@@ -10227,8 +10227,8 @@ function ActionButtons({
10227
10227
  disabled
10228
10228
  }) {
10229
10229
  const eventBus = useEventBus();
10230
- const [activeButtons, setActiveButtons] = React86.useState(/* @__PURE__ */ new Set());
10231
- const handlePress = React86.useCallback(
10230
+ const [activeButtons, setActiveButtons] = React88.useState(/* @__PURE__ */ new Set());
10231
+ const handlePress = React88.useCallback(
10232
10232
  (id) => {
10233
10233
  setActiveButtons((prev) => new Set(prev).add(id));
10234
10234
  if (actionEvent) eventBus.emit(`UI:${actionEvent}`, { id, pressed: true });
@@ -10236,7 +10236,7 @@ function ActionButtons({
10236
10236
  },
10237
10237
  [actionEvent, eventBus, onAction]
10238
10238
  );
10239
- const handleRelease = React86.useCallback(
10239
+ const handleRelease = React88.useCallback(
10240
10240
  (id) => {
10241
10241
  setActiveButtons((prev) => {
10242
10242
  const next = new Set(prev);
@@ -10517,9 +10517,262 @@ var init_AnimatedCounter = __esm({
10517
10517
  AnimatedCounter.displayName = "AnimatedCounter";
10518
10518
  }
10519
10519
  });
10520
+ var ALL_CATEGORY, GridPicker;
10521
+ var init_GridPicker = __esm({
10522
+ "components/core/molecules/GridPicker.tsx"() {
10523
+ "use client";
10524
+ init_cn();
10525
+ init_Input();
10526
+ init_Badge();
10527
+ init_Stack();
10528
+ ALL_CATEGORY = "__all__";
10529
+ GridPicker = ({
10530
+ items,
10531
+ value,
10532
+ onChange,
10533
+ categories,
10534
+ searchPlaceholder,
10535
+ renderThumbnail,
10536
+ cellSize = 32,
10537
+ className
10538
+ }) => {
10539
+ const [search, setSearch] = useState("");
10540
+ const [activeCategory, setActiveCategory] = useState(ALL_CATEGORY);
10541
+ const gridRef = useRef(null);
10542
+ const categoryChips = useMemo(() => {
10543
+ if (categories !== void 0) return categories;
10544
+ const seen = [];
10545
+ for (const item of items) {
10546
+ if (!seen.includes(item.category)) seen.push(item.category);
10547
+ }
10548
+ return seen;
10549
+ }, [categories, items]);
10550
+ const filtered = useMemo(() => {
10551
+ const needle = search.trim().toLowerCase();
10552
+ return items.filter((item) => {
10553
+ const matchesCategory = activeCategory === ALL_CATEGORY || item.category === activeCategory;
10554
+ const matchesSearch = needle === "" || item.label.toLowerCase().includes(needle);
10555
+ return matchesCategory && matchesSearch;
10556
+ });
10557
+ }, [items, search, activeCategory]);
10558
+ const select = useCallback(
10559
+ (item) => {
10560
+ onChange(item.id);
10561
+ },
10562
+ [onChange]
10563
+ );
10564
+ const handleKeyDown = useCallback(
10565
+ (e, index) => {
10566
+ const cells = gridRef.current?.querySelectorAll(
10567
+ "[data-gridpicker-cell]"
10568
+ );
10569
+ if (cells === void 0 || cells.length === 0) return;
10570
+ const columns = (() => {
10571
+ const grid = gridRef.current;
10572
+ if (grid === null) return 1;
10573
+ const style = window.getComputedStyle(grid);
10574
+ const cols = style.gridTemplateColumns.split(" ").filter(Boolean).length;
10575
+ return cols > 0 ? cols : 1;
10576
+ })();
10577
+ let next = -1;
10578
+ if (e.key === "ArrowRight") next = index + 1;
10579
+ else if (e.key === "ArrowLeft") next = index - 1;
10580
+ else if (e.key === "ArrowDown") next = index + columns;
10581
+ else if (e.key === "ArrowUp") next = index - columns;
10582
+ else if (e.key === "Enter" || e.key === " ") {
10583
+ e.preventDefault();
10584
+ select(filtered[index]);
10585
+ return;
10586
+ } else {
10587
+ return;
10588
+ }
10589
+ e.preventDefault();
10590
+ if (next >= 0 && next < cells.length) {
10591
+ cells[next].focus();
10592
+ }
10593
+ },
10594
+ [filtered, select]
10595
+ );
10596
+ return /* @__PURE__ */ jsxs(VStack, { gap: "sm", className: cn("w-full", className), children: [
10597
+ /* @__PURE__ */ jsx(
10598
+ Input,
10599
+ {
10600
+ type: "search",
10601
+ icon: "search",
10602
+ value: search,
10603
+ placeholder: searchPlaceholder,
10604
+ clearable: true,
10605
+ onClear: () => setSearch(""),
10606
+ onChange: (e) => setSearch(e.target.value)
10607
+ }
10608
+ ),
10609
+ categoryChips.length > 0 && /* @__PURE__ */ jsxs(HStack, { gap: "xs", wrap: true, children: [
10610
+ /* @__PURE__ */ jsx(
10611
+ Badge,
10612
+ {
10613
+ variant: activeCategory === ALL_CATEGORY ? "primary" : "neutral",
10614
+ size: "sm",
10615
+ role: "button",
10616
+ tabIndex: 0,
10617
+ "aria-pressed": activeCategory === ALL_CATEGORY,
10618
+ className: "cursor-pointer",
10619
+ onClick: () => setActiveCategory(ALL_CATEGORY),
10620
+ onKeyDown: (e) => {
10621
+ if (e.key === "Enter" || e.key === " ") {
10622
+ e.preventDefault();
10623
+ setActiveCategory(ALL_CATEGORY);
10624
+ }
10625
+ },
10626
+ children: "All"
10627
+ }
10628
+ ),
10629
+ categoryChips.map((category) => /* @__PURE__ */ jsx(
10630
+ Badge,
10631
+ {
10632
+ variant: activeCategory === category ? "primary" : "neutral",
10633
+ size: "sm",
10634
+ role: "button",
10635
+ tabIndex: 0,
10636
+ "aria-pressed": activeCategory === category,
10637
+ className: "cursor-pointer",
10638
+ onClick: () => setActiveCategory(category),
10639
+ onKeyDown: (e) => {
10640
+ if (e.key === "Enter" || e.key === " ") {
10641
+ e.preventDefault();
10642
+ setActiveCategory(category);
10643
+ }
10644
+ },
10645
+ children: category
10646
+ },
10647
+ category
10648
+ ))
10649
+ ] }),
10650
+ /* @__PURE__ */ jsx(
10651
+ "div",
10652
+ {
10653
+ ref: gridRef,
10654
+ role: "listbox",
10655
+ className: "grid gap-1 overflow-y-auto max-h-64 p-1",
10656
+ style: {
10657
+ gridTemplateColumns: `repeat(auto-fill, minmax(${cellSize}px, 1fr))`
10658
+ },
10659
+ children: filtered.map((item, index) => {
10660
+ const selected = item.id === value;
10661
+ return /* @__PURE__ */ jsx(
10662
+ "button",
10663
+ {
10664
+ type: "button",
10665
+ role: "option",
10666
+ "aria-selected": selected,
10667
+ "aria-label": item.label,
10668
+ title: item.label,
10669
+ "data-gridpicker-cell": true,
10670
+ tabIndex: selected || value === void 0 && index === 0 ? 0 : -1,
10671
+ onClick: () => select(item),
10672
+ onKeyDown: (e) => handleKeyDown(e, index),
10673
+ className: cn(
10674
+ "flex items-center justify-center rounded-sm",
10675
+ "transition-colors hover:bg-muted",
10676
+ "focus:outline-none focus:ring-1 focus:ring-ring",
10677
+ selected && "bg-primary/10 ring-1 ring-primary"
10678
+ ),
10679
+ style: { width: cellSize, height: cellSize },
10680
+ children: renderThumbnail(item)
10681
+ },
10682
+ item.id
10683
+ );
10684
+ })
10685
+ }
10686
+ )
10687
+ ] });
10688
+ };
10689
+ GridPicker.displayName = "GridPicker";
10690
+ }
10691
+ });
10692
+ function iconForKind(kind) {
10693
+ if (kind === "audio") return "music";
10694
+ if (kind === "model") return "box";
10695
+ return "file";
10696
+ }
10697
+ var THUMB_PX, IMAGE_KINDS, AssetPicker;
10698
+ var init_AssetPicker = __esm({
10699
+ "components/core/molecules/AssetPicker.tsx"() {
10700
+ "use client";
10701
+ init_GridPicker();
10702
+ init_Icon();
10703
+ THUMB_PX = 32;
10704
+ IMAGE_KINDS = /* @__PURE__ */ new Set([
10705
+ "image",
10706
+ "spritesheet",
10707
+ "scene",
10708
+ "portrait"
10709
+ ]);
10710
+ AssetPicker = ({
10711
+ assets,
10712
+ value,
10713
+ onChange,
10714
+ className
10715
+ }) => {
10716
+ const byUrl = useMemo(() => {
10717
+ const map = /* @__PURE__ */ new Map();
10718
+ for (const entry of assets) map.set(entry.url, entry);
10719
+ return map;
10720
+ }, [assets]);
10721
+ const items = useMemo(
10722
+ () => assets.map((entry) => ({
10723
+ id: entry.url,
10724
+ label: entry.name,
10725
+ category: entry.category
10726
+ })),
10727
+ [assets]
10728
+ );
10729
+ const categories = useMemo(() => {
10730
+ const seen = [];
10731
+ for (const entry of assets) {
10732
+ if (!seen.includes(entry.category)) seen.push(entry.category);
10733
+ }
10734
+ return seen;
10735
+ }, [assets]);
10736
+ const renderThumbnail = useCallback(
10737
+ (item) => {
10738
+ const entry = byUrl.get(item.id);
10739
+ if (entry === void 0) return null;
10740
+ if (IMAGE_KINDS.has(entry.kind)) {
10741
+ return /* @__PURE__ */ jsx(
10742
+ "img",
10743
+ {
10744
+ src: entry.thumbnailUrl ?? entry.url,
10745
+ alt: entry.name,
10746
+ loading: "lazy",
10747
+ width: THUMB_PX,
10748
+ height: THUMB_PX,
10749
+ style: { width: THUMB_PX, height: THUMB_PX, objectFit: "cover" }
10750
+ }
10751
+ );
10752
+ }
10753
+ return /* @__PURE__ */ jsx(Icon, { name: iconForKind(entry.kind), size: "sm" });
10754
+ },
10755
+ [byUrl]
10756
+ );
10757
+ return /* @__PURE__ */ jsx(
10758
+ GridPicker,
10759
+ {
10760
+ items,
10761
+ value,
10762
+ onChange,
10763
+ categories,
10764
+ renderThumbnail,
10765
+ cellSize: THUMB_PX,
10766
+ className
10767
+ }
10768
+ );
10769
+ };
10770
+ AssetPicker.displayName = "AssetPicker";
10771
+ }
10772
+ });
10520
10773
  var AuthLayout;
10521
10774
  var init_AuthLayout = __esm({
10522
- "components/core/templates/AuthLayout.tsx"() {
10775
+ "components/marketing/templates/AuthLayout.tsx"() {
10523
10776
  "use client";
10524
10777
  init_cn();
10525
10778
  init_Box();
@@ -13377,7 +13630,7 @@ var init_CodeBlock = __esm({
13377
13630
  CODE_LANGUAGE_SET = new Set(CODE_LANGUAGES);
13378
13631
  LINE_PROPS_FN = (n) => ({ "data-line": String(n - 1) });
13379
13632
  HIDDEN_LINE_NUMBERS = { display: "none" };
13380
- CodeBlock = React86__default.memo(
13633
+ CodeBlock = React88__default.memo(
13381
13634
  ({
13382
13635
  code: rawCode,
13383
13636
  language = "text",
@@ -13814,7 +14067,7 @@ var init_MarkdownContent = __esm({
13814
14067
  init_Box();
13815
14068
  init_CodeBlock();
13816
14069
  init_cn();
13817
- MarkdownContent = React86__default.memo(
14070
+ MarkdownContent = React88__default.memo(
13818
14071
  ({ content, direction, className }) => {
13819
14072
  const { t: _t } = useTranslate();
13820
14073
  const safeContent = typeof content === "string" ? content : String(content ?? "");
@@ -14910,7 +15163,7 @@ var init_StateMachineView = __esm({
14910
15163
  style: { top: title ? 30 : 0 },
14911
15164
  children: [
14912
15165
  entity && /* @__PURE__ */ jsx(EntityBox, { entity, config }),
14913
- states.map((state) => renderStateNode ? /* @__PURE__ */ jsx(React86__default.Fragment, { children: renderStateNode(state, config) }, state.id) : /* @__PURE__ */ jsx(
15166
+ states.map((state) => renderStateNode ? /* @__PURE__ */ jsx(React88__default.Fragment, { children: renderStateNode(state, config) }, state.id) : /* @__PURE__ */ jsx(
14914
15167
  StateNode,
14915
15168
  {
14916
15169
  state,
@@ -16515,7 +16768,7 @@ var init_Grid = __esm({
16515
16768
  as: Component = "div"
16516
16769
  }) => {
16517
16770
  const mergedStyle = rows2 ? { gridTemplateRows: `repeat(${rows2}, minmax(0, 1fr))`, ...style } : style;
16518
- return React86__default.createElement(
16771
+ return React88__default.createElement(
16519
16772
  Component,
16520
16773
  {
16521
16774
  className: cn(
@@ -19833,7 +20086,7 @@ var init_Carousel = __esm({
19833
20086
  });
19834
20087
  var CaseStudyOrganism;
19835
20088
  var init_CaseStudyOrganism = __esm({
19836
- "components/core/organisms/CaseStudyOrganism.tsx"() {
20089
+ "components/marketing/organisms/CaseStudyOrganism.tsx"() {
19837
20090
  "use client";
19838
20091
  init_cn();
19839
20092
  init_useEventBus();
@@ -21875,7 +22128,7 @@ function CraftingRecipe({
21875
22128
  className
21876
22129
  }) {
21877
22130
  const eventBus = useEventBus();
21878
- const handleCraft = React86.useCallback(() => {
22131
+ const handleCraft = React88.useCallback(() => {
21879
22132
  onCraft?.();
21880
22133
  if (craftEvent) {
21881
22134
  eventBus.emit(craftEvent, { output: output.label });
@@ -21892,7 +22145,7 @@ function CraftingRecipe({
21892
22145
  children: [
21893
22146
  /* @__PURE__ */ jsx(HStack, { gap: "xs", className: "flex-wrap items-center", children: inputs.map((ingredient, index) => {
21894
22147
  const hasSufficient = ingredient.available >= ingredient.required;
21895
- return /* @__PURE__ */ jsxs(React86.Fragment, { children: [
22148
+ return /* @__PURE__ */ jsxs(React88.Fragment, { children: [
21896
22149
  /* @__PURE__ */ jsx(Box, { className: "relative", children: /* @__PURE__ */ jsx(
21897
22150
  ItemSlot,
21898
22151
  {
@@ -21955,8 +22208,8 @@ function DPad({
21955
22208
  }) {
21956
22209
  const eventBus = useEventBus();
21957
22210
  const sizes = sizeMap15[size];
21958
- const [activeDirections, setActiveDirections] = React86.useState(/* @__PURE__ */ new Set());
21959
- const handlePress = React86.useCallback(
22211
+ const [activeDirections, setActiveDirections] = React88.useState(/* @__PURE__ */ new Set());
22212
+ const handlePress = React88.useCallback(
21960
22213
  (direction) => {
21961
22214
  setActiveDirections((prev) => new Set(prev).add(direction));
21962
22215
  if (directionEvent) eventBus.emit(`UI:${directionEvent}`, { direction, pressed: true });
@@ -21964,7 +22217,7 @@ function DPad({
21964
22217
  },
21965
22218
  [directionEvent, eventBus, onDirection]
21966
22219
  );
21967
- const handleRelease = React86.useCallback(
22220
+ const handleRelease = React88.useCallback(
21968
22221
  (direction) => {
21969
22222
  setActiveDirections((prev) => {
21970
22223
  const next = new Set(prev);
@@ -22650,14 +22903,14 @@ function useDataDnd(args) {
22650
22903
  const isZone = Boolean(dragGroup || accepts || sortable);
22651
22904
  const enabled = isZone || Boolean(dndRoot);
22652
22905
  const eventBus = useEventBus();
22653
- const parentRoot = React86__default.useContext(RootCtx);
22906
+ const parentRoot = React88__default.useContext(RootCtx);
22654
22907
  const isRoot = enabled && parentRoot === null;
22655
- const zoneId = React86__default.useId();
22908
+ const zoneId = React88__default.useId();
22656
22909
  const ownGroup = dragGroup ?? accepts ?? zoneId;
22657
- const [optimisticOrders, setOptimisticOrders] = React86__default.useState(() => /* @__PURE__ */ new Map());
22658
- const optimisticOrdersRef = React86__default.useRef(optimisticOrders);
22910
+ const [optimisticOrders, setOptimisticOrders] = React88__default.useState(() => /* @__PURE__ */ new Map());
22911
+ const optimisticOrdersRef = React88__default.useRef(optimisticOrders);
22659
22912
  optimisticOrdersRef.current = optimisticOrders;
22660
- const clearOptimisticOrder = React86__default.useCallback((group) => {
22913
+ const clearOptimisticOrder = React88__default.useCallback((group) => {
22661
22914
  setOptimisticOrders((prev) => {
22662
22915
  if (!prev.has(group)) return prev;
22663
22916
  const next = new Map(prev);
@@ -22682,7 +22935,7 @@ function useDataDnd(args) {
22682
22935
  const raw = it[dndItemIdField];
22683
22936
  return String(raw ?? `__idx_${idx}`);
22684
22937
  }).join("|");
22685
- const itemIds = React86__default.useMemo(
22938
+ const itemIds = React88__default.useMemo(
22686
22939
  () => orderedItems.map((it, idx) => {
22687
22940
  const raw = it[dndItemIdField];
22688
22941
  return raw ?? `__idx_${idx}`;
@@ -22690,7 +22943,7 @@ function useDataDnd(args) {
22690
22943
  [itemIdsSignature]
22691
22944
  );
22692
22945
  const itemsContentSig = items.map((it, idx) => String(it[dndItemIdField] ?? `__${idx}`)).join("|");
22693
- React86__default.useEffect(() => {
22946
+ React88__default.useEffect(() => {
22694
22947
  const root = isRoot ? null : parentRoot;
22695
22948
  if (root) {
22696
22949
  root.clearOptimisticOrder(ownGroup);
@@ -22698,20 +22951,20 @@ function useDataDnd(args) {
22698
22951
  clearOptimisticOrder(ownGroup);
22699
22952
  }
22700
22953
  }, [itemsContentSig, ownGroup]);
22701
- const zonesRef = React86__default.useRef(/* @__PURE__ */ new Map());
22702
- const registerZone = React86__default.useCallback((zoneId2, meta2) => {
22954
+ const zonesRef = React88__default.useRef(/* @__PURE__ */ new Map());
22955
+ const registerZone = React88__default.useCallback((zoneId2, meta2) => {
22703
22956
  zonesRef.current.set(zoneId2, meta2);
22704
22957
  }, []);
22705
- const unregisterZone = React86__default.useCallback((zoneId2) => {
22958
+ const unregisterZone = React88__default.useCallback((zoneId2) => {
22706
22959
  zonesRef.current.delete(zoneId2);
22707
22960
  }, []);
22708
- const [activeDrag, setActiveDrag] = React86__default.useState(null);
22709
- const [overZoneGroup, setOverZoneGroup] = React86__default.useState(null);
22710
- const meta = React86__default.useMemo(
22961
+ const [activeDrag, setActiveDrag] = React88__default.useState(null);
22962
+ const [overZoneGroup, setOverZoneGroup] = React88__default.useState(null);
22963
+ const meta = React88__default.useMemo(
22711
22964
  () => ({ group: ownGroup, dropEvent, reorderEvent, positionEvent, itemIds, rawItems: items, idField: dndItemIdField }),
22712
22965
  [ownGroup, dropEvent, reorderEvent, positionEvent, itemIds, items, dndItemIdField]
22713
22966
  );
22714
- React86__default.useEffect(() => {
22967
+ React88__default.useEffect(() => {
22715
22968
  const target = isRoot ? null : parentRoot;
22716
22969
  if (!target) {
22717
22970
  zonesRef.current.set(zoneId, meta);
@@ -22730,7 +22983,7 @@ function useDataDnd(args) {
22730
22983
  }, [parentRoot, isRoot, zoneId, meta]);
22731
22984
  const sensors = useAlmadarDndSensors(true);
22732
22985
  const collisionDetection = almadarDndCollisionDetection;
22733
- const findZoneByItem = React86__default.useCallback(
22986
+ const findZoneByItem = React88__default.useCallback(
22734
22987
  (id) => {
22735
22988
  for (const z of zonesRef.current.values()) {
22736
22989
  if (z.itemIds.includes(id)) return z;
@@ -22739,7 +22992,7 @@ function useDataDnd(args) {
22739
22992
  },
22740
22993
  []
22741
22994
  );
22742
- React86__default.useCallback(
22995
+ React88__default.useCallback(
22743
22996
  (group) => {
22744
22997
  for (const z of zonesRef.current.values()) {
22745
22998
  if (z.group === group) return z;
@@ -22748,7 +23001,7 @@ function useDataDnd(args) {
22748
23001
  },
22749
23002
  []
22750
23003
  );
22751
- const handleDragEnd = React86__default.useCallback(
23004
+ const handleDragEnd = React88__default.useCallback(
22752
23005
  (event) => {
22753
23006
  const { active, over } = event;
22754
23007
  const activeIdStr = String(active.id);
@@ -22839,8 +23092,8 @@ function useDataDnd(args) {
22839
23092
  },
22840
23093
  [eventBus]
22841
23094
  );
22842
- const sortableData = React86__default.useMemo(() => ({ dndGroup: ownGroup }), [ownGroup]);
22843
- const SortableItem = React86__default.useCallback(
23095
+ const sortableData = React88__default.useMemo(() => ({ dndGroup: ownGroup }), [ownGroup]);
23096
+ const SortableItem = React88__default.useCallback(
22844
23097
  ({ id, children }) => {
22845
23098
  const {
22846
23099
  attributes,
@@ -22880,7 +23133,7 @@ function useDataDnd(args) {
22880
23133
  id: droppableId,
22881
23134
  data: sortableData
22882
23135
  });
22883
- const ctx = React86__default.useContext(RootCtx);
23136
+ const ctx = React88__default.useContext(RootCtx);
22884
23137
  const activeDrag2 = ctx?.activeDrag ?? null;
22885
23138
  const overZoneGroup2 = ctx?.overZoneGroup ?? null;
22886
23139
  const isThisZoneOver = overZoneGroup2 === ownGroup;
@@ -22895,7 +23148,7 @@ function useDataDnd(args) {
22895
23148
  showForeignPlaceholder,
22896
23149
  ctxAvailable: ctx != null
22897
23150
  });
22898
- React86__default.useEffect(() => {
23151
+ React88__default.useEffect(() => {
22899
23152
  dndLog.info("dropzone:isOver:change", { droppableId, group: ownGroup, isOver, isThisZoneOver, showForeignPlaceholder, activeDragSourceGroup: activeDrag2?.sourceGroup ?? null });
22900
23153
  }, [droppableId, isOver, isThisZoneOver, showForeignPlaceholder]);
22901
23154
  return /* @__PURE__ */ jsx(
@@ -22909,11 +23162,11 @@ function useDataDnd(args) {
22909
23162
  }
22910
23163
  );
22911
23164
  };
22912
- const rootContextValue = React86__default.useMemo(
23165
+ const rootContextValue = React88__default.useMemo(
22913
23166
  () => ({ registerZone, unregisterZone, activeDrag, overZoneGroup, optimisticOrders, clearOptimisticOrder }),
22914
23167
  [registerZone, unregisterZone, activeDrag, overZoneGroup, optimisticOrders, clearOptimisticOrder]
22915
23168
  );
22916
- const handleDragStart = React86__default.useCallback((event) => {
23169
+ const handleDragStart = React88__default.useCallback((event) => {
22917
23170
  const sourceZone = findZoneByItem(event.active.id);
22918
23171
  const rect = event.active.rect.current.initial;
22919
23172
  const height = rect?.height && rect.height > 0 ? rect.height : 64;
@@ -22932,7 +23185,7 @@ function useDataDnd(args) {
22932
23185
  isRoot
22933
23186
  });
22934
23187
  }, [findZoneByItem, isRoot, zoneId]);
22935
- const handleDragOver = React86__default.useCallback((event) => {
23188
+ const handleDragOver = React88__default.useCallback((event) => {
22936
23189
  const { active, over } = event;
22937
23190
  const overData = over?.data?.current;
22938
23191
  const overGroup = overData?.dndGroup ?? null;
@@ -23002,7 +23255,7 @@ function useDataDnd(args) {
23002
23255
  return next;
23003
23256
  });
23004
23257
  }, []);
23005
- const handleDragCancel = React86__default.useCallback((event) => {
23258
+ const handleDragCancel = React88__default.useCallback((event) => {
23006
23259
  setActiveDrag(null);
23007
23260
  setOverZoneGroup(null);
23008
23261
  dndLog.warn("dragCancel", {
@@ -23010,12 +23263,12 @@ function useDataDnd(args) {
23010
23263
  reason: "dnd-kit cancelled the drag (escape key, pointer interrupted, or external)"
23011
23264
  });
23012
23265
  }, []);
23013
- const handleDragEndWithCleanup = React86__default.useCallback((event) => {
23266
+ const handleDragEndWithCleanup = React88__default.useCallback((event) => {
23014
23267
  handleDragEnd(event);
23015
23268
  setActiveDrag(null);
23016
23269
  setOverZoneGroup(null);
23017
23270
  }, [handleDragEnd]);
23018
- const wrapContainer = React86__default.useCallback(
23271
+ const wrapContainer = React88__default.useCallback(
23019
23272
  (children) => {
23020
23273
  if (!enabled) return children;
23021
23274
  const strategy = layout === "grid" ? rectSortingStrategy : verticalListSortingStrategy;
@@ -23069,7 +23322,7 @@ var init_useDataDnd = __esm({
23069
23322
  init_useAlmadarDndCollision();
23070
23323
  init_Box();
23071
23324
  dndLog = createLogger("almadar:ui:dnd");
23072
- RootCtx = React86__default.createContext(null);
23325
+ RootCtx = React88__default.createContext(null);
23073
23326
  }
23074
23327
  });
23075
23328
  function fieldLabel2(key) {
@@ -23589,7 +23842,7 @@ function DataList({
23589
23842
  }) {
23590
23843
  const eventBus = useEventBus();
23591
23844
  const { t } = useTranslate();
23592
- const [visibleCount, setVisibleCount] = React86__default.useState(pageSize || Infinity);
23845
+ const [visibleCount, setVisibleCount] = React88__default.useState(pageSize || Infinity);
23593
23846
  const fieldDefs = fields ?? columns ?? [];
23594
23847
  const allDataRaw = Array.isArray(entity) ? entity : entity ? [entity] : [];
23595
23848
  const dnd = useDataDnd({
@@ -23608,7 +23861,7 @@ function DataList({
23608
23861
  const data = pageSize > 0 ? allData.slice(0, visibleCount) : allData;
23609
23862
  const hasMoreLocal = pageSize > 0 && visibleCount < allData.length;
23610
23863
  const hasRenderProp = typeof children === "function";
23611
- React86__default.useEffect(() => {
23864
+ React88__default.useEffect(() => {
23612
23865
  const renderItemTypeOf = typeof schemaRenderItem;
23613
23866
  const childrenTypeOf = typeof children;
23614
23867
  if (data.length > 0 && !hasRenderProp) {
@@ -23713,7 +23966,7 @@ function DataList({
23713
23966
  const items2 = data.map((item) => item);
23714
23967
  const groups2 = groupBy ? groupData(items2, groupBy) : [{ label: "", items: items2 }];
23715
23968
  const contentField = titleField?.name ?? fieldDefs[0]?.name ?? "";
23716
- return /* @__PURE__ */ jsx(VStack, { gap: "sm", className: cn("py-2", className), children: groups2.map((group, gi) => /* @__PURE__ */ jsxs(React86__default.Fragment, { children: [
23969
+ return /* @__PURE__ */ jsx(VStack, { gap: "sm", className: cn("py-2", className), children: groups2.map((group, gi) => /* @__PURE__ */ jsxs(React88__default.Fragment, { children: [
23717
23970
  group.label && /* @__PURE__ */ jsx(Divider, { label: group.label, className: "my-2" }),
23718
23971
  group.items.map((itemData, index) => {
23719
23972
  const id = itemData.id || `${gi}-${index}`;
@@ -23861,7 +24114,7 @@ function DataList({
23861
24114
  className
23862
24115
  ),
23863
24116
  children: [
23864
- groups.map((group, gi) => /* @__PURE__ */ jsxs(React86__default.Fragment, { children: [
24117
+ groups.map((group, gi) => /* @__PURE__ */ jsxs(React88__default.Fragment, { children: [
23865
24118
  group.label && /* @__PURE__ */ jsx(Divider, { label: group.label, className: gi > 0 ? "mt-4" : "mt-0" }),
23866
24119
  group.items.map(
23867
24120
  (itemData, index) => renderItem(itemData, index, gi === groups.length - 1 && index === group.items.length - 1)
@@ -25235,7 +25488,7 @@ var init_WizardProgress = __esm({
25235
25488
  children: /* @__PURE__ */ jsx("div", { className: "flex items-center gap-2", children: normalizedSteps.map((step, index) => {
25236
25489
  const isActive = index === currentStep;
25237
25490
  const isCompleted = index < currentStep;
25238
- return /* @__PURE__ */ jsxs(React86__default.Fragment, { children: [
25491
+ return /* @__PURE__ */ jsxs(React88__default.Fragment, { children: [
25239
25492
  /* @__PURE__ */ jsx(
25240
25493
  "button",
25241
25494
  {
@@ -25846,6 +26099,50 @@ var init_FlipCard = __esm({
25846
26099
  FlipCard.displayName = "FlipCard";
25847
26100
  }
25848
26101
  });
26102
+ function pascalToKebab(name) {
26103
+ return name.replace(/([a-z0-9])([A-Z])/g, "$1-$2").replace(/([A-Z])([A-Z][a-z])/g, "$1-$2").toLowerCase();
26104
+ }
26105
+ function kebabToPascal3(name) {
26106
+ return name.split("-").map((part) => /^\d+$/.test(part) ? part : part.charAt(0).toUpperCase() + part.slice(1)).join("");
26107
+ }
26108
+ var ICON_ITEMS, IconPicker;
26109
+ var init_IconPicker = __esm({
26110
+ "components/core/molecules/IconPicker.tsx"() {
26111
+ "use client";
26112
+ init_Icon();
26113
+ init_GridPicker();
26114
+ ICON_ITEMS = (() => {
26115
+ const items = [];
26116
+ for (const [exportName, candidate] of Object.entries(LucideIcons2)) {
26117
+ if (!/^[A-Z]/.test(exportName)) continue;
26118
+ if (exportName.endsWith("Icon")) continue;
26119
+ if (exportName.startsWith("Lucide")) continue;
26120
+ const isComponent = candidate !== null && (typeof candidate === "object" || typeof candidate === "function") && "$$typeof" in candidate;
26121
+ if (!isComponent) continue;
26122
+ const kebab = pascalToKebab(exportName);
26123
+ if (kebabToPascal3(kebab) !== exportName) continue;
26124
+ items.push({ id: kebab, label: kebab, category: "icons" });
26125
+ }
26126
+ return items;
26127
+ })();
26128
+ IconPicker = ({ value, onChange, className }) => {
26129
+ const items = useMemo(() => ICON_ITEMS, []);
26130
+ return /* @__PURE__ */ jsx(
26131
+ GridPicker,
26132
+ {
26133
+ items,
26134
+ value,
26135
+ onChange,
26136
+ searchPlaceholder: "Search icons\u2026",
26137
+ renderThumbnail: (it) => /* @__PURE__ */ jsx(Icon, { name: it.id }),
26138
+ cellSize: 32,
26139
+ className
26140
+ }
26141
+ );
26142
+ };
26143
+ IconPicker.displayName = "IconPicker";
26144
+ }
26145
+ });
25849
26146
  function toISODate(d) {
25850
26147
  return d.toISOString().slice(0, 10);
25851
26148
  }
@@ -26290,7 +26587,7 @@ function InventoryGrid({
26290
26587
  const eventBus = useEventBus();
26291
26588
  const slotCount = totalSlots ?? items.length;
26292
26589
  const emptySlotCount = Math.max(0, slotCount - items.length);
26293
- const handleSelect = React86.useCallback(
26590
+ const handleSelect = React88.useCallback(
26294
26591
  (id) => {
26295
26592
  onSelect?.(id);
26296
26593
  if (selectEvent) {
@@ -26507,31 +26804,31 @@ function GameCanvas2D({
26507
26804
  assetBaseUrl = "",
26508
26805
  className
26509
26806
  }) {
26510
- const canvasRef = React86.useRef(null);
26511
- const rafRef = React86.useRef(0);
26512
- const frameRef = React86.useRef(0);
26513
- const lastTimeRef = React86.useRef(0);
26514
- const imageCache = React86.useRef(/* @__PURE__ */ new Map());
26807
+ const canvasRef = React88.useRef(null);
26808
+ const rafRef = React88.useRef(0);
26809
+ const frameRef = React88.useRef(0);
26810
+ const lastTimeRef = React88.useRef(0);
26811
+ const imageCache = React88.useRef(/* @__PURE__ */ new Map());
26515
26812
  const emit = useEmitEvent();
26516
- const onDrawRef = React86.useRef(onDraw);
26813
+ const onDrawRef = React88.useRef(onDraw);
26517
26814
  onDrawRef.current = onDraw;
26518
- const onTickRef = React86.useRef(onTick);
26815
+ const onTickRef = React88.useRef(onTick);
26519
26816
  onTickRef.current = onTick;
26520
- const tickEventRef = React86.useRef(tickEvent);
26817
+ const tickEventRef = React88.useRef(tickEvent);
26521
26818
  tickEventRef.current = tickEvent;
26522
- const drawEventRef = React86.useRef(drawEvent);
26819
+ const drawEventRef = React88.useRef(drawEvent);
26523
26820
  drawEventRef.current = drawEvent;
26524
- const emitRef = React86.useRef(emit);
26821
+ const emitRef = React88.useRef(emit);
26525
26822
  emitRef.current = emit;
26526
- const assetBaseUrlRef = React86.useRef(assetBaseUrl);
26823
+ const assetBaseUrlRef = React88.useRef(assetBaseUrl);
26527
26824
  assetBaseUrlRef.current = assetBaseUrl;
26528
- const backgroundImageRef = React86.useRef(backgroundImage);
26825
+ const backgroundImageRef = React88.useRef(backgroundImage);
26529
26826
  backgroundImageRef.current = backgroundImage;
26530
- const widthRef = React86.useRef(width);
26827
+ const widthRef = React88.useRef(width);
26531
26828
  widthRef.current = width;
26532
- const heightRef = React86.useRef(height);
26829
+ const heightRef = React88.useRef(height);
26533
26830
  heightRef.current = height;
26534
- const loadImage = React86.useCallback((url) => {
26831
+ const loadImage = React88.useCallback((url) => {
26535
26832
  const fullUrl = url.startsWith("http") ? url : `${assetBaseUrlRef.current}${url}`;
26536
26833
  const cached = imageCache.current.get(fullUrl);
26537
26834
  if (cached?.complete && cached.naturalWidth > 0) return cached;
@@ -26543,7 +26840,7 @@ function GameCanvas2D({
26543
26840
  }
26544
26841
  return null;
26545
26842
  }, []);
26546
- React86.useEffect(() => {
26843
+ React88.useEffect(() => {
26547
26844
  const canvas = canvasRef.current;
26548
26845
  if (!canvas) return;
26549
26846
  const ctx = canvas.getContext("2d");
@@ -26846,7 +27143,7 @@ function TurnPanel({
26846
27143
  className
26847
27144
  }) {
26848
27145
  const eventBus = useEventBus();
26849
- const handleAction = React86.useCallback(
27146
+ const handleAction = React88.useCallback(
26850
27147
  (event) => {
26851
27148
  if (event) {
26852
27149
  eventBus.emit(event, { turn: currentTurn, phase, activeTeam });
@@ -26992,7 +27289,7 @@ function UnitCommandBar({
26992
27289
  className
26993
27290
  }) {
26994
27291
  const eventBus = useEventBus();
26995
- const handleCommand = React86.useCallback(
27292
+ const handleCommand = React88.useCallback(
26996
27293
  (event) => {
26997
27294
  if (event) {
26998
27295
  eventBus.emit(event, { unitId: selectedUnitId });
@@ -27477,7 +27774,7 @@ function GameMenu({
27477
27774
  } catch {
27478
27775
  }
27479
27776
  const eventBus = eventBusProp || eventBusFromHook;
27480
- const handleOptionClick = React86.useCallback(
27777
+ const handleOptionClick = React88.useCallback(
27481
27778
  (option) => {
27482
27779
  if (option.event && eventBus) {
27483
27780
  eventBus.emit(`UI:${option.event}`, { option });
@@ -27591,7 +27888,7 @@ function GameOverScreen({
27591
27888
  } catch {
27592
27889
  }
27593
27890
  const eventBus = eventBusProp || eventBusFromHook;
27594
- const handleActionClick = React86.useCallback(
27891
+ const handleActionClick = React88.useCallback(
27595
27892
  (action) => {
27596
27893
  if (action.event && eventBus) {
27597
27894
  eventBus.emit(`UI:${action.event}`, { action });
@@ -29068,8 +29365,8 @@ function TableView({
29068
29365
  }) {
29069
29366
  const eventBus = useEventBus();
29070
29367
  const { t } = useTranslate();
29071
- const [visibleCount, setVisibleCount] = React86__default.useState(pageSize > 0 ? pageSize : Infinity);
29072
- const [localSelected, setLocalSelected] = React86__default.useState(/* @__PURE__ */ new Set());
29368
+ const [visibleCount, setVisibleCount] = React88__default.useState(pageSize > 0 ? pageSize : Infinity);
29369
+ const [localSelected, setLocalSelected] = React88__default.useState(/* @__PURE__ */ new Set());
29073
29370
  const colDefs = columns ?? fields ?? [];
29074
29371
  const allDataRaw = Array.isArray(entity) ? entity : entity ? [entity] : [];
29075
29372
  const dnd = useDataDnd({
@@ -29264,12 +29561,12 @@ function TableView({
29264
29561
  ]
29265
29562
  }
29266
29563
  );
29267
- return dnd.isZone ? /* @__PURE__ */ jsx(dnd.SortableItem, { id: row[idField] ?? id, children: rowInner }, id) : /* @__PURE__ */ jsx(React86__default.Fragment, { children: rowInner }, id);
29564
+ return dnd.isZone ? /* @__PURE__ */ jsx(dnd.SortableItem, { id: row[idField] ?? id, children: rowInner }, id) : /* @__PURE__ */ jsx(React88__default.Fragment, { children: rowInner }, id);
29268
29565
  };
29269
29566
  const items = data.map((row) => row);
29270
29567
  const groups = groupBy ? groupData2(items, groupBy) : [{ label: "", items }];
29271
29568
  let runningIndex = 0;
29272
- const body = /* @__PURE__ */ jsx(Box, { role: "rowgroup", children: groups.map((group, gi) => /* @__PURE__ */ jsxs(React86__default.Fragment, { children: [
29569
+ const body = /* @__PURE__ */ jsx(Box, { role: "rowgroup", children: groups.map((group, gi) => /* @__PURE__ */ jsxs(React88__default.Fragment, { children: [
29273
29570
  group.label && /* @__PURE__ */ jsx(Divider, { label: group.label, className: gi > 0 ? "mt-3" : "mt-0" }),
29274
29571
  group.items.map((row) => renderRow(row, runningIndex++))
29275
29572
  ] }, gi)) });
@@ -30621,7 +30918,7 @@ var init_StepFlow = __esm({
30621
30918
  className
30622
30919
  }) => {
30623
30920
  if (orientation === "vertical") {
30624
- return /* @__PURE__ */ jsx(VStack, { gap: "none", className: cn("w-full", className), children: steps.map((step, index) => /* @__PURE__ */ jsx(React86__default.Fragment, { children: /* @__PURE__ */ jsxs(HStack, { gap: "md", align: "start", className: "w-full", children: [
30921
+ return /* @__PURE__ */ jsx(VStack, { gap: "none", className: cn("w-full", className), children: steps.map((step, index) => /* @__PURE__ */ jsx(React88__default.Fragment, { children: /* @__PURE__ */ jsxs(HStack, { gap: "md", align: "start", className: "w-full", children: [
30625
30922
  /* @__PURE__ */ jsxs(VStack, { gap: "none", align: "center", children: [
30626
30923
  /* @__PURE__ */ jsx(StepCircle, { step, index }),
30627
30924
  showConnectors && index < steps.length - 1 && /* @__PURE__ */ jsx(Box, { className: "w-px h-8 bg-border" })
@@ -30632,7 +30929,7 @@ var init_StepFlow = __esm({
30632
30929
  ] })
30633
30930
  ] }) }, index)) });
30634
30931
  }
30635
- 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(React86__default.Fragment, { children: [
30932
+ return /* @__PURE__ */ jsx(Box, { className: cn("w-full flex flex-col md:flex-row items-start gap-0", className), children: steps.map((step, index) => /* @__PURE__ */ jsxs(React88__default.Fragment, { children: [
30636
30933
  /* @__PURE__ */ jsxs(VStack, { gap: "sm", align: "center", className: "flex-1 w-full md:w-auto", children: [
30637
30934
  /* @__PURE__ */ jsx(StepCircle, { step, index }),
30638
30935
  /* @__PURE__ */ jsx(Typography, { variant: "h4", className: "text-center", children: step.title }),
@@ -31608,7 +31905,7 @@ var init_LikertScale = __esm({
31608
31905
  md: "text-base",
31609
31906
  lg: "text-lg"
31610
31907
  };
31611
- LikertScale = React86__default.forwardRef(
31908
+ LikertScale = React88__default.forwardRef(
31612
31909
  ({
31613
31910
  question,
31614
31911
  options = DEFAULT_LIKERT_OPTIONS,
@@ -31620,7 +31917,7 @@ var init_LikertScale = __esm({
31620
31917
  variant = "radios",
31621
31918
  className
31622
31919
  }, ref) => {
31623
- const groupId = React86__default.useId();
31920
+ const groupId = React88__default.useId();
31624
31921
  const eventBus = useEventBus();
31625
31922
  const handleSelect = useCallback(
31626
31923
  (next) => {
@@ -33928,7 +34225,7 @@ var init_DocBreadcrumb = __esm({
33928
34225
  "aria-label": t("aria.breadcrumb"),
33929
34226
  children: /* @__PURE__ */ jsx(HStack, { gap: "xs", align: "center", wrap: true, children: items.map((item, idx) => {
33930
34227
  const isLast = idx === items.length - 1;
33931
- return /* @__PURE__ */ jsxs(React86__default.Fragment, { children: [
34228
+ return /* @__PURE__ */ jsxs(React88__default.Fragment, { children: [
33932
34229
  idx > 0 && /* @__PURE__ */ jsx(
33933
34230
  Icon,
33934
34231
  {
@@ -34539,7 +34836,7 @@ var init_GradientDivider = __esm({
34539
34836
  });
34540
34837
  var MarketingFooter;
34541
34838
  var init_MarketingFooter = __esm({
34542
- "components/core/molecules/MarketingFooter.tsx"() {
34839
+ "components/marketing/molecules/MarketingFooter.tsx"() {
34543
34840
  "use client";
34544
34841
  init_cn();
34545
34842
  init_Box();
@@ -34609,7 +34906,7 @@ var init_MarketingFooter = __esm({
34609
34906
  });
34610
34907
  var PullQuote;
34611
34908
  var init_PullQuote = __esm({
34612
- "components/core/molecules/PullQuote.tsx"() {
34909
+ "components/marketing/molecules/PullQuote.tsx"() {
34613
34910
  "use client";
34614
34911
  init_cn();
34615
34912
  init_Box();
@@ -34892,7 +35189,7 @@ var init_MiniStateMachine = __esm({
34892
35189
  const x = 2 + i * (NODE_W + GAP + ARROW_W + GAP);
34893
35190
  const tc = transitionCounts[s.name] ?? 0;
34894
35191
  const role = getStateRole(s.name, s.isInitial, s.isTerminal, tc, maxTC);
34895
- return /* @__PURE__ */ jsxs(React86__default.Fragment, { children: [
35192
+ return /* @__PURE__ */ jsxs(React88__default.Fragment, { children: [
34896
35193
  /* @__PURE__ */ jsx(
34897
35194
  AvlState,
34898
35195
  {
@@ -35096,7 +35393,7 @@ var init_PageHeader = __esm({
35096
35393
  info: "bg-info/10 text-info"
35097
35394
  };
35098
35395
  return /* @__PURE__ */ jsxs(Box, { className: cn("mb-6", className), children: [
35099
- 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(React86__default.Fragment, { children: [
35396
+ breadcrumbs && breadcrumbs.length > 0 && /* @__PURE__ */ jsx(Box, { as: "nav", className: "mb-4", children: /* @__PURE__ */ jsx(Box, { as: "ol", className: "flex items-center gap-2 text-sm", children: breadcrumbs.map((crumb, idx) => /* @__PURE__ */ jsxs(React88__default.Fragment, { children: [
35100
35397
  idx > 0 && /* @__PURE__ */ jsx(Typography, { variant: "small", color: "muted", children: "/" }),
35101
35398
  crumb.href ? /* @__PURE__ */ jsx(
35102
35399
  "a",
@@ -35183,6 +35480,271 @@ var init_PageHeader = __esm({
35183
35480
  PageHeader.displayName = "PageHeader";
35184
35481
  }
35185
35482
  });
35483
+ var FormSection, FormLayout, FormActions;
35484
+ var init_FormSection = __esm({
35485
+ "components/core/molecules/FormSection.tsx"() {
35486
+ "use client";
35487
+ init_cn();
35488
+ init_atoms2();
35489
+ init_Box();
35490
+ init_Typography();
35491
+ init_Button();
35492
+ init_Stack();
35493
+ init_Icon();
35494
+ init_useEventBus();
35495
+ FormSection = ({
35496
+ title,
35497
+ description,
35498
+ children,
35499
+ collapsible = false,
35500
+ defaultCollapsed = false,
35501
+ card = false,
35502
+ columns = 1,
35503
+ className
35504
+ }) => {
35505
+ const [collapsed, setCollapsed] = React88__default.useState(defaultCollapsed);
35506
+ const { t } = useTranslate();
35507
+ const eventBus = useEventBus();
35508
+ const gridClass = {
35509
+ 1: "grid-cols-1",
35510
+ 2: "grid-cols-1 md:grid-cols-2",
35511
+ 3: "grid-cols-1 md:grid-cols-2 lg:grid-cols-3"
35512
+ }[columns];
35513
+ React88__default.useCallback(() => {
35514
+ if (collapsible) {
35515
+ setCollapsed((prev) => !prev);
35516
+ eventBus.emit("UI:TOGGLE_COLLAPSE", { collapsed: !collapsed });
35517
+ }
35518
+ }, [collapsible, collapsed, eventBus]);
35519
+ const content = /* @__PURE__ */ jsxs(Fragment, { children: [
35520
+ (title || description) && /* @__PURE__ */ jsxs(VStack, { gap: "xs", className: "mb-4", children: [
35521
+ title && /* @__PURE__ */ jsxs(
35522
+ HStack,
35523
+ {
35524
+ justify: "between",
35525
+ align: "center",
35526
+ className: cn(collapsible && "cursor-pointer"),
35527
+ action: collapsible ? "TOGGLE_COLLAPSE" : void 0,
35528
+ children: [
35529
+ /* @__PURE__ */ jsx(Typography, { variant: "h3", weight: "semibold", children: title }),
35530
+ collapsible && /* @__PURE__ */ jsx(
35531
+ Button,
35532
+ {
35533
+ variant: "ghost",
35534
+ size: "sm",
35535
+ action: "TOGGLE_COLLAPSE",
35536
+ children: /* @__PURE__ */ jsx(
35537
+ Icon,
35538
+ {
35539
+ icon: ChevronDown,
35540
+ size: "sm",
35541
+ className: cn(
35542
+ "text-muted-foreground transition-transform",
35543
+ collapsed && "rotate-180"
35544
+ )
35545
+ }
35546
+ )
35547
+ }
35548
+ )
35549
+ ]
35550
+ }
35551
+ ),
35552
+ description && /* @__PURE__ */ jsx(Typography, { variant: "small", color: "secondary", children: description })
35553
+ ] }),
35554
+ (!collapsible || !collapsed) && /* @__PURE__ */ jsx(Box, { className: cn("grid gap-4", gridClass), children })
35555
+ ] });
35556
+ if (card) {
35557
+ return /* @__PURE__ */ jsx(Card, { className: cn("p-6", className), children: content });
35558
+ }
35559
+ return /* @__PURE__ */ jsx(Box, { className, children: content });
35560
+ };
35561
+ FormSection.displayName = "FormSection";
35562
+ FormLayout = ({
35563
+ children,
35564
+ dividers = true,
35565
+ className
35566
+ }) => {
35567
+ return /* @__PURE__ */ jsx(
35568
+ VStack,
35569
+ {
35570
+ gap: "lg",
35571
+ className: cn(
35572
+ dividers && "[&>*+*]:pt-8 [&>*+*]:border-t [&>*+*]:border-border",
35573
+ className
35574
+ ),
35575
+ children
35576
+ }
35577
+ );
35578
+ };
35579
+ FormLayout.displayName = "FormLayout";
35580
+ FormActions = ({
35581
+ children,
35582
+ sticky = false,
35583
+ align = "right",
35584
+ className
35585
+ }) => {
35586
+ const alignClass2 = {
35587
+ left: "justify-start",
35588
+ right: "justify-end",
35589
+ between: "justify-between",
35590
+ center: "justify-center"
35591
+ }[align];
35592
+ return /* @__PURE__ */ jsx(
35593
+ HStack,
35594
+ {
35595
+ gap: "sm",
35596
+ align: "center",
35597
+ className: cn(
35598
+ "pt-6 border-t border-border",
35599
+ alignClass2,
35600
+ sticky && "sticky bottom-0 bg-card py-4 -mx-6 px-6 shadow-[0_-4px_6px_-1px_rgb(0,0,0,0.05)]",
35601
+ className
35602
+ ),
35603
+ children
35604
+ }
35605
+ );
35606
+ };
35607
+ FormActions.displayName = "FormActions";
35608
+ }
35609
+ });
35610
+ function currentValue(decl, override) {
35611
+ return override !== void 0 ? override : decl.default;
35612
+ }
35613
+ function TextLikeControl({
35614
+ field,
35615
+ numeric,
35616
+ value,
35617
+ onCommit
35618
+ }) {
35619
+ const initial = value === void 0 || value === null ? "" : String(value);
35620
+ const [draft, setDraft] = React88__default.useState(initial);
35621
+ React88__default.useEffect(() => setDraft(initial), [initial]);
35622
+ const commit = () => {
35623
+ if (numeric) {
35624
+ const n = draft.trim() === "" ? 0 : Number(draft);
35625
+ onCommit(field, Number.isNaN(n) ? 0 : n);
35626
+ } else {
35627
+ onCommit(field, draft);
35628
+ }
35629
+ };
35630
+ return /* @__PURE__ */ jsx(
35631
+ Input,
35632
+ {
35633
+ inputType: numeric ? "number" : "text",
35634
+ value: draft,
35635
+ onChange: (e) => setDraft(e.target.value),
35636
+ onBlur: commit,
35637
+ onKeyDown: (e) => {
35638
+ if (e.key === "Enter") commit();
35639
+ }
35640
+ }
35641
+ );
35642
+ }
35643
+ function FieldControl({
35644
+ name,
35645
+ decl,
35646
+ value,
35647
+ onChange,
35648
+ assets
35649
+ }) {
35650
+ let control;
35651
+ const stringValue = typeof value === "string" ? value : void 0;
35652
+ if (decl.type === "icon") {
35653
+ control = /* @__PURE__ */ jsx(IconPicker, { value: stringValue, onChange: (icon) => onChange(name, icon) });
35654
+ } else if (decl.type === "asset") {
35655
+ control = /* @__PURE__ */ jsx(
35656
+ AssetPicker,
35657
+ {
35658
+ assets: assets ?? [],
35659
+ value: stringValue,
35660
+ onChange: (url) => onChange(name, url)
35661
+ }
35662
+ );
35663
+ } else if (decl.type === "boolean") {
35664
+ control = /* @__PURE__ */ jsx(Switch, { checked: value === true, onChange: (c) => onChange(name, c) });
35665
+ } else if (decl.type === "string" && decl.values !== void 0 && decl.values.length > 0) {
35666
+ control = /* @__PURE__ */ jsx(
35667
+ Select,
35668
+ {
35669
+ options: decl.values.map((v) => ({ value: v, label: v })),
35670
+ value: typeof value === "string" ? value : "",
35671
+ onChange: (e) => onChange(name, e.target.value)
35672
+ }
35673
+ );
35674
+ } else if (decl.type === "number") {
35675
+ control = /* @__PURE__ */ jsx(TextLikeControl, { field: name, numeric: true, value, onCommit: onChange });
35676
+ } else if (decl.type === "string") {
35677
+ control = /* @__PURE__ */ jsx(TextLikeControl, { field: name, numeric: false, value, onCommit: onChange });
35678
+ } else {
35679
+ control = /* @__PURE__ */ jsxs(Typography, { variant: "caption", color: "muted", children: [
35680
+ decl.type,
35681
+ " \u2014 edit in source"
35682
+ ] });
35683
+ }
35684
+ return /* @__PURE__ */ jsxs(VStack, { gap: "xs", children: [
35685
+ /* @__PURE__ */ jsx(Typography, { variant: "label", children: decl.label ?? name }),
35686
+ control,
35687
+ decl.description !== void 0 && decl.description !== "" && /* @__PURE__ */ jsx(Typography, { variant: "caption", color: "muted", children: decl.description })
35688
+ ] });
35689
+ }
35690
+ var TIER_ORDER, PropertyInspector;
35691
+ var init_PropertyInspector = __esm({
35692
+ "components/core/molecules/PropertyInspector.tsx"() {
35693
+ "use client";
35694
+ init_cn();
35695
+ init_Stack();
35696
+ init_Typography();
35697
+ init_Button();
35698
+ init_Switch();
35699
+ init_Select();
35700
+ init_Input();
35701
+ init_FormSection();
35702
+ init_IconPicker();
35703
+ init_AssetPicker();
35704
+ TIER_ORDER = ["presentation", "domain", "policy", "infra", "internal"];
35705
+ PropertyInspector = ({
35706
+ config,
35707
+ values,
35708
+ onChange,
35709
+ onReset,
35710
+ title,
35711
+ className,
35712
+ assets
35713
+ }) => {
35714
+ const fields = Object.entries(config);
35715
+ const byTier = /* @__PURE__ */ new Map();
35716
+ for (const [name, decl] of fields) {
35717
+ const tier = decl.tier ?? "presentation";
35718
+ const arr = byTier.get(tier) ?? [];
35719
+ arr.push([name, decl]);
35720
+ byTier.set(tier, arr);
35721
+ }
35722
+ const tiers = [...byTier.keys()].sort((a, b) => {
35723
+ const ia = TIER_ORDER.indexOf(a);
35724
+ const ib = TIER_ORDER.indexOf(b);
35725
+ return (ia === -1 ? 99 : ia) - (ib === -1 ? 99 : ib);
35726
+ });
35727
+ return /* @__PURE__ */ jsxs(VStack, { gap: "sm", className: cn("w-full", className), children: [
35728
+ /* @__PURE__ */ jsxs(HStack, { justify: "between", align: "center", children: [
35729
+ /* @__PURE__ */ jsx(Typography, { variant: "caption", weight: "bold", children: title ?? "Config" }),
35730
+ onReset !== void 0 && /* @__PURE__ */ jsx(Button, { variant: "ghost", size: "sm", icon: "rotate-ccw", label: "Reset", onClick: onReset })
35731
+ ] }),
35732
+ fields.length === 0 && /* @__PURE__ */ jsx(Typography, { variant: "caption", color: "muted", children: "No configurable properties." }),
35733
+ 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(
35734
+ FieldControl,
35735
+ {
35736
+ name,
35737
+ decl,
35738
+ value: currentValue(decl, values?.[name]),
35739
+ onChange,
35740
+ assets
35741
+ },
35742
+ name
35743
+ )) }) }, tier))
35744
+ ] });
35745
+ };
35746
+ }
35747
+ });
35186
35748
  var lookStyles8, Header;
35187
35749
  var init_Header = __esm({
35188
35750
  "components/core/molecules/Header.tsx"() {
@@ -35833,7 +36395,7 @@ var init_WizardContainer = __esm({
35833
36395
  const isCompleted = index < currentStep;
35834
36396
  const stepKey = step.id ?? step.tabId ?? `step-${index}`;
35835
36397
  const stepTitle = step.title ?? step.name ?? `Step ${index + 1}`;
35836
- return /* @__PURE__ */ jsxs(React86__default.Fragment, { children: [
36398
+ return /* @__PURE__ */ jsxs(React88__default.Fragment, { children: [
35837
36399
  /* @__PURE__ */ jsx(
35838
36400
  Button,
35839
36401
  {
@@ -38118,7 +38680,7 @@ var init_DetailPanel = __esm({
38118
38680
  }
38119
38681
  });
38120
38682
  function extractTitle(children) {
38121
- if (!React86__default.isValidElement(children)) return void 0;
38683
+ if (!React88__default.isValidElement(children)) return void 0;
38122
38684
  const props = children.props;
38123
38685
  if (typeof props.title === "string") {
38124
38686
  return props.title;
@@ -38173,7 +38735,7 @@ function LinearView({
38173
38735
  /* @__PURE__ */ jsx(HStack, { className: "flex-wrap items-center", gap: "xs", children: trait.states.map((state, i) => {
38174
38736
  const isDone = i < currentIdx;
38175
38737
  const isCurrent = i === currentIdx;
38176
- return /* @__PURE__ */ jsxs(React86__default.Fragment, { children: [
38738
+ return /* @__PURE__ */ jsxs(React88__default.Fragment, { children: [
38177
38739
  i > 0 && /* @__PURE__ */ jsx(
38178
38740
  Typography,
38179
38741
  {
@@ -38883,7 +39445,7 @@ var init_FeatureDetailPageTemplate = __esm({
38883
39445
  });
38884
39446
  var FeatureGridOrganism;
38885
39447
  var init_FeatureGridOrganism = __esm({
38886
- "components/core/organisms/FeatureGridOrganism.tsx"() {
39448
+ "components/marketing/organisms/FeatureGridOrganism.tsx"() {
38887
39449
  "use client";
38888
39450
  init_cn();
38889
39451
  init_useEventBus();
@@ -39131,12 +39693,12 @@ var init_Form = __esm({
39131
39693
  const isSchemaEntity = isOrbitalEntitySchema(entity);
39132
39694
  const resolvedEntity = isSchemaEntity ? entity : void 0;
39133
39695
  const entityName = typeof entity === "string" ? entity : resolvedEntity?.name;
39134
- const normalizedInitialData = React86__default.useMemo(() => {
39696
+ const normalizedInitialData = React88__default.useMemo(() => {
39135
39697
  const entityRowAsInitial = isPlainEntityRow(entity) ? entity : void 0;
39136
39698
  const callerInitial = initialData !== null && typeof initialData === "object" && !Array.isArray(initialData) ? initialData : {};
39137
39699
  return entityRowAsInitial !== void 0 ? { ...entityRowAsInitial, ...callerInitial } : callerInitial;
39138
39700
  }, [entity, initialData]);
39139
- const entityDerivedFields = React86__default.useMemo(() => {
39701
+ const entityDerivedFields = React88__default.useMemo(() => {
39140
39702
  if (fields && fields.length > 0) return void 0;
39141
39703
  if (!resolvedEntity) return void 0;
39142
39704
  return resolvedEntity.fields.map(
@@ -39156,16 +39718,16 @@ var init_Form = __esm({
39156
39718
  const conditionalFields = typeof conditionalFieldsRaw === "boolean" ? {} : conditionalFieldsRaw;
39157
39719
  const hiddenCalculations = typeof hiddenCalculationsRaw === "boolean" ? [] : hiddenCalculationsRaw;
39158
39720
  const violationTriggers = typeof violationTriggersRaw === "boolean" ? [] : violationTriggersRaw;
39159
- const [formData, setFormData] = React86__default.useState(
39721
+ const [formData, setFormData] = React88__default.useState(
39160
39722
  normalizedInitialData
39161
39723
  );
39162
- const [collapsedSections, setCollapsedSections] = React86__default.useState(
39724
+ const [collapsedSections, setCollapsedSections] = React88__default.useState(
39163
39725
  /* @__PURE__ */ new Set()
39164
39726
  );
39165
- const [submitError, setSubmitError] = React86__default.useState(null);
39166
- const formRef = React86__default.useRef(null);
39727
+ const [submitError, setSubmitError] = React88__default.useState(null);
39728
+ const formRef = React88__default.useRef(null);
39167
39729
  const formMode = props.mode;
39168
- const mountedRef = React86__default.useRef(false);
39730
+ const mountedRef = React88__default.useRef(false);
39169
39731
  if (!mountedRef.current) {
39170
39732
  mountedRef.current = true;
39171
39733
  debug("forms", "mount", {
@@ -39178,7 +39740,7 @@ var init_Form = __esm({
39178
39740
  });
39179
39741
  }
39180
39742
  const shouldShowCancel = showCancel ?? (fields && fields.length > 0);
39181
- const evalContext = React86__default.useMemo(
39743
+ const evalContext = React88__default.useMemo(
39182
39744
  () => ({
39183
39745
  formValues: formData,
39184
39746
  globalVariables: externalContext?.globalVariables ?? {},
@@ -39187,7 +39749,7 @@ var init_Form = __esm({
39187
39749
  }),
39188
39750
  [formData, externalContext]
39189
39751
  );
39190
- React86__default.useEffect(() => {
39752
+ React88__default.useEffect(() => {
39191
39753
  debug("forms", "initialData-sync", {
39192
39754
  mode: formMode,
39193
39755
  normalizedInitialData,
@@ -39198,7 +39760,7 @@ var init_Form = __esm({
39198
39760
  setFormData(normalizedInitialData);
39199
39761
  }
39200
39762
  }, [normalizedInitialData]);
39201
- const processCalculations = React86__default.useCallback(
39763
+ const processCalculations = React88__default.useCallback(
39202
39764
  (changedFieldId, newFormData) => {
39203
39765
  if (!hiddenCalculations.length) return;
39204
39766
  const context = {
@@ -39223,7 +39785,7 @@ var init_Form = __esm({
39223
39785
  },
39224
39786
  [hiddenCalculations, externalContext, eventBus]
39225
39787
  );
39226
- const checkViolations = React86__default.useCallback(
39788
+ const checkViolations = React88__default.useCallback(
39227
39789
  (changedFieldId, newFormData) => {
39228
39790
  if (!violationTriggers.length) return;
39229
39791
  const context = {
@@ -39261,7 +39823,7 @@ var init_Form = __esm({
39261
39823
  processCalculations(name, newFormData);
39262
39824
  checkViolations(name, newFormData);
39263
39825
  };
39264
- const isFieldVisible = React86__default.useCallback(
39826
+ const isFieldVisible = React88__default.useCallback(
39265
39827
  (fieldName) => {
39266
39828
  const condition = conditionalFields[fieldName];
39267
39829
  if (!condition) return true;
@@ -39269,7 +39831,7 @@ var init_Form = __esm({
39269
39831
  },
39270
39832
  [conditionalFields, evalContext]
39271
39833
  );
39272
- const isSectionVisible = React86__default.useCallback(
39834
+ const isSectionVisible = React88__default.useCallback(
39273
39835
  (section) => {
39274
39836
  if (!section.condition) return true;
39275
39837
  return Boolean(evaluateFormExpression(section.condition, evalContext));
@@ -39345,7 +39907,7 @@ var init_Form = __esm({
39345
39907
  eventBus.emit(`UI:${onCancel}`);
39346
39908
  }
39347
39909
  };
39348
- const renderField = React86__default.useCallback(
39910
+ const renderField = React88__default.useCallback(
39349
39911
  (field) => {
39350
39912
  const fieldName = field.name || field.field;
39351
39913
  if (!fieldName) return null;
@@ -39354,19 +39916,19 @@ var init_Form = __esm({
39354
39916
  }
39355
39917
  const inputType = determineInputType(field);
39356
39918
  const label = field.label || fieldName.charAt(0).toUpperCase() + fieldName.slice(1).replace(/([A-Z])/g, " $1");
39357
- const currentValue = formData[fieldName] ?? field.defaultValue ?? "";
39919
+ const currentValue2 = formData[fieldName] ?? field.defaultValue ?? "";
39358
39920
  return /* @__PURE__ */ jsxs(VStack, { gap: "xs", "data-field": fieldName, children: [
39359
39921
  inputType !== "checkbox" && /* @__PURE__ */ jsxs(Typography, { as: "label", variant: "label", weight: "bold", children: [
39360
39922
  label,
39361
39923
  field.required && /* @__PURE__ */ jsx(Typography, { as: "span", color: "error", className: "ml-1", children: "*" })
39362
39924
  ] }),
39363
- renderFieldInput(field, fieldName, inputType, currentValue, label)
39925
+ renderFieldInput(field, fieldName, inputType, currentValue2, label)
39364
39926
  ] }, fieldName);
39365
39927
  },
39366
39928
  [formData, isFieldVisible, relationsData, relationsLoading, isLoading]
39367
39929
  );
39368
39930
  const effectiveFields = entityDerivedFields ?? fields;
39369
- const normalizedFields = React86__default.useMemo(() => {
39931
+ const normalizedFields = React88__default.useMemo(() => {
39370
39932
  if (!effectiveFields || effectiveFields.length === 0) return [];
39371
39933
  return effectiveFields.map((field) => {
39372
39934
  if (typeof field === "string") {
@@ -39389,7 +39951,7 @@ var init_Form = __esm({
39389
39951
  return field;
39390
39952
  });
39391
39953
  }, [effectiveFields, resolvedEntity]);
39392
- const schemaFields = React86__default.useMemo(() => {
39954
+ const schemaFields = React88__default.useMemo(() => {
39393
39955
  if (normalizedFields.length === 0) return null;
39394
39956
  if (isDebugEnabled()) {
39395
39957
  debugGroup(`Form: ${entityName || "unknown"}`);
@@ -39399,7 +39961,7 @@ var init_Form = __esm({
39399
39961
  }
39400
39962
  return normalizedFields.map(renderField).filter(Boolean);
39401
39963
  }, [normalizedFields, renderField, entityName, conditionalFields]);
39402
- const sectionElements = React86__default.useMemo(() => {
39964
+ const sectionElements = React88__default.useMemo(() => {
39403
39965
  if (!sections || sections.length === 0) return null;
39404
39966
  return sections.map((section) => {
39405
39967
  if (!isSectionVisible(section)) {
@@ -39435,7 +39997,7 @@ var init_Form = __esm({
39435
39997
  ] }, section.id);
39436
39998
  }).filter(Boolean);
39437
39999
  }, [sections, isSectionVisible, collapsedSections, renderField, gap]);
39438
- function renderFieldInput(field, fieldName, inputType, currentValue, label) {
40000
+ function renderFieldInput(field, fieldName, inputType, currentValue2, label) {
39439
40001
  const commonProps = {
39440
40002
  id: fieldName,
39441
40003
  name: fieldName,
@@ -39452,7 +40014,7 @@ var init_Form = __esm({
39452
40014
  {
39453
40015
  ...commonProps,
39454
40016
  label: label + (field.required ? " *" : ""),
39455
- checked: Boolean(currentValue),
40017
+ checked: Boolean(currentValue2),
39456
40018
  onChange: (e) => handleChange(fieldName, e.target.checked)
39457
40019
  }
39458
40020
  );
@@ -39461,7 +40023,7 @@ var init_Form = __esm({
39461
40023
  Textarea,
39462
40024
  {
39463
40025
  ...commonProps,
39464
- value: String(currentValue),
40026
+ value: String(currentValue2),
39465
40027
  onChange: (e) => handleChange(fieldName, e.target.value),
39466
40028
  minLength: field.min,
39467
40029
  maxLength: field.max
@@ -39474,7 +40036,7 @@ var init_Form = __esm({
39474
40036
  {
39475
40037
  ...commonProps,
39476
40038
  options,
39477
- value: String(currentValue),
40039
+ value: String(currentValue2),
39478
40040
  onChange: (e) => handleChange(fieldName, e.target.value),
39479
40041
  placeholder: field.placeholder || `Select ${label}...`
39480
40042
  }
@@ -39487,7 +40049,7 @@ var init_Form = __esm({
39487
40049
  RelationSelect,
39488
40050
  {
39489
40051
  ...commonProps,
39490
- value: currentValue ? String(currentValue) : void 0,
40052
+ value: currentValue2 ? String(currentValue2) : void 0,
39491
40053
  onChange: (value) => handleChange(fieldName, value),
39492
40054
  options: relationOptions,
39493
40055
  isLoading: relationLoading,
@@ -39503,7 +40065,7 @@ var init_Form = __esm({
39503
40065
  {
39504
40066
  ...commonProps,
39505
40067
  type: "number",
39506
- value: currentValue !== void 0 && currentValue !== "" ? String(currentValue) : "",
40068
+ value: currentValue2 !== void 0 && currentValue2 !== "" ? String(currentValue2) : "",
39507
40069
  onChange: (e) => handleChange(
39508
40070
  fieldName,
39509
40071
  e.target.value ? Number(e.target.value) : void 0
@@ -39518,7 +40080,7 @@ var init_Form = __esm({
39518
40080
  {
39519
40081
  ...commonProps,
39520
40082
  type: "date",
39521
- value: formatDateValue(currentValue),
40083
+ value: formatDateValue(currentValue2),
39522
40084
  onChange: (e) => handleChange(fieldName, e.target.value)
39523
40085
  }
39524
40086
  );
@@ -39528,7 +40090,7 @@ var init_Form = __esm({
39528
40090
  {
39529
40091
  ...commonProps,
39530
40092
  type: "datetime-local",
39531
- value: formatDateTimeValue(currentValue),
40093
+ value: formatDateTimeValue(currentValue2),
39532
40094
  onChange: (e) => handleChange(fieldName, e.target.value)
39533
40095
  }
39534
40096
  );
@@ -39538,7 +40100,7 @@ var init_Form = __esm({
39538
40100
  {
39539
40101
  ...commonProps,
39540
40102
  type: "email",
39541
- value: String(currentValue),
40103
+ value: String(currentValue2),
39542
40104
  onChange: (e) => handleChange(fieldName, e.target.value),
39543
40105
  minLength: field.min,
39544
40106
  maxLength: field.max
@@ -39550,7 +40112,7 @@ var init_Form = __esm({
39550
40112
  {
39551
40113
  ...commonProps,
39552
40114
  type: "url",
39553
- value: String(currentValue),
40115
+ value: String(currentValue2),
39554
40116
  onChange: (e) => handleChange(fieldName, e.target.value),
39555
40117
  minLength: field.min,
39556
40118
  maxLength: field.max
@@ -39562,7 +40124,7 @@ var init_Form = __esm({
39562
40124
  {
39563
40125
  ...commonProps,
39564
40126
  type: "password",
39565
- value: String(currentValue),
40127
+ value: String(currentValue2),
39566
40128
  onChange: (e) => handleChange(fieldName, e.target.value),
39567
40129
  minLength: field.min,
39568
40130
  maxLength: field.max
@@ -39575,7 +40137,7 @@ var init_Form = __esm({
39575
40137
  {
39576
40138
  ...commonProps,
39577
40139
  type: "text",
39578
- value: String(currentValue),
40140
+ value: String(currentValue2),
39579
40141
  onChange: (e) => handleChange(fieldName, e.target.value),
39580
40142
  minLength: field.min,
39581
40143
  maxLength: field.max
@@ -40230,7 +40792,7 @@ var init_GenericAppTemplate = __esm({
40230
40792
  });
40231
40793
  var HeroOrganism, _HeroClickInterceptor;
40232
40794
  var init_HeroOrganism = __esm({
40233
- "components/core/organisms/HeroOrganism.tsx"() {
40795
+ "components/marketing/organisms/HeroOrganism.tsx"() {
40234
40796
  "use client";
40235
40797
  init_cn();
40236
40798
  init_useEventBus();
@@ -40674,7 +41236,7 @@ var init_List = __esm({
40674
41236
  if (entity && typeof entity === "object" && "id" in entity) return [entity];
40675
41237
  return [];
40676
41238
  }, [entity]);
40677
- const getItemActions = React86__default.useCallback(
41239
+ const getItemActions = React88__default.useCallback(
40678
41240
  (item) => {
40679
41241
  if (!itemActions) return [];
40680
41242
  if (typeof itemActions === "function") {
@@ -41150,7 +41712,7 @@ var init_MediaGallery = __esm({
41150
41712
  [selectable, selectedItems, selectionEvent, eventBus]
41151
41713
  );
41152
41714
  const entityData = Array.isArray(entity) ? entity : [];
41153
- const items = React86__default.useMemo(() => {
41715
+ const items = React88__default.useMemo(() => {
41154
41716
  if (propItems) return propItems;
41155
41717
  if (entityData.length === 0) return [];
41156
41718
  return entityData.map((record, idx) => ({
@@ -41311,7 +41873,7 @@ var init_MediaGallery = __esm({
41311
41873
  }
41312
41874
  });
41313
41875
  function extractTitle2(children) {
41314
- if (!React86__default.isValidElement(children)) return void 0;
41876
+ if (!React88__default.isValidElement(children)) return void 0;
41315
41877
  const props = children.props;
41316
41878
  if (typeof props.title === "string") {
41317
41879
  return props.title;
@@ -41742,7 +42304,7 @@ var init_debugRegistry = __esm({
41742
42304
  }
41743
42305
  });
41744
42306
  function useDebugData() {
41745
- const [data, setData] = React86.useState(() => ({
42307
+ const [data, setData] = React88.useState(() => ({
41746
42308
  traits: [],
41747
42309
  ticks: [],
41748
42310
  guards: [],
@@ -41756,7 +42318,7 @@ function useDebugData() {
41756
42318
  },
41757
42319
  lastUpdate: Date.now()
41758
42320
  }));
41759
- React86.useEffect(() => {
42321
+ React88.useEffect(() => {
41760
42322
  const updateData = () => {
41761
42323
  setData({
41762
42324
  traits: getAllTraits(),
@@ -41865,12 +42427,12 @@ function layoutGraph(states, transitions, initialState, width, height) {
41865
42427
  return positions;
41866
42428
  }
41867
42429
  function WalkMinimap() {
41868
- const [walkStep, setWalkStep] = React86.useState(null);
41869
- const [traits2, setTraits] = React86.useState([]);
41870
- const [coveredEdges, setCoveredEdges] = React86.useState([]);
41871
- const [completedTraits, setCompletedTraits] = React86.useState(/* @__PURE__ */ new Set());
41872
- const prevTraitRef = React86.useRef(null);
41873
- React86.useEffect(() => {
42430
+ const [walkStep, setWalkStep] = React88.useState(null);
42431
+ const [traits2, setTraits] = React88.useState([]);
42432
+ const [coveredEdges, setCoveredEdges] = React88.useState([]);
42433
+ const [completedTraits, setCompletedTraits] = React88.useState(/* @__PURE__ */ new Set());
42434
+ const prevTraitRef = React88.useRef(null);
42435
+ React88.useEffect(() => {
41874
42436
  const interval = setInterval(() => {
41875
42437
  const w = window;
41876
42438
  const step = w.__orbitalWalkStep;
@@ -42306,15 +42868,15 @@ var init_EntitiesTab = __esm({
42306
42868
  });
42307
42869
  function EventFlowTab({ events: events2 }) {
42308
42870
  const { t } = useTranslate();
42309
- const [filter, setFilter] = React86.useState("all");
42310
- const containerRef = React86.useRef(null);
42311
- const [autoScroll, setAutoScroll] = React86.useState(true);
42312
- React86.useEffect(() => {
42871
+ const [filter, setFilter] = React88.useState("all");
42872
+ const containerRef = React88.useRef(null);
42873
+ const [autoScroll, setAutoScroll] = React88.useState(true);
42874
+ React88.useEffect(() => {
42313
42875
  if (autoScroll && containerRef.current) {
42314
42876
  containerRef.current.scrollTop = containerRef.current.scrollHeight;
42315
42877
  }
42316
42878
  }, [events2.length, autoScroll]);
42317
- const filteredEvents = React86.useMemo(() => {
42879
+ const filteredEvents = React88.useMemo(() => {
42318
42880
  if (filter === "all") return events2;
42319
42881
  return events2.filter((e) => e.type === filter);
42320
42882
  }, [events2, filter]);
@@ -42430,7 +42992,7 @@ var init_EventFlowTab = __esm({
42430
42992
  });
42431
42993
  function GuardsPanel({ guards }) {
42432
42994
  const { t } = useTranslate();
42433
- const [filter, setFilter] = React86.useState("all");
42995
+ const [filter, setFilter] = React88.useState("all");
42434
42996
  if (guards.length === 0) {
42435
42997
  return /* @__PURE__ */ jsx(
42436
42998
  EmptyState,
@@ -42443,7 +43005,7 @@ function GuardsPanel({ guards }) {
42443
43005
  }
42444
43006
  const passedCount = guards.filter((g) => g.result).length;
42445
43007
  const failedCount = guards.length - passedCount;
42446
- const filteredGuards = React86.useMemo(() => {
43008
+ const filteredGuards = React88.useMemo(() => {
42447
43009
  if (filter === "all") return guards;
42448
43010
  if (filter === "passed") return guards.filter((g) => g.result);
42449
43011
  return guards.filter((g) => !g.result);
@@ -42606,10 +43168,10 @@ function EffectBadge({ effect }) {
42606
43168
  }
42607
43169
  function TransitionTimeline({ transitions }) {
42608
43170
  const { t } = useTranslate();
42609
- const containerRef = React86.useRef(null);
42610
- const [autoScroll, setAutoScroll] = React86.useState(true);
42611
- const [expandedId, setExpandedId] = React86.useState(null);
42612
- React86.useEffect(() => {
43171
+ const containerRef = React88.useRef(null);
43172
+ const [autoScroll, setAutoScroll] = React88.useState(true);
43173
+ const [expandedId, setExpandedId] = React88.useState(null);
43174
+ React88.useEffect(() => {
42613
43175
  if (autoScroll && containerRef.current) {
42614
43176
  containerRef.current.scrollTop = containerRef.current.scrollHeight;
42615
43177
  }
@@ -42889,9 +43451,9 @@ function getAllEvents(traits2) {
42889
43451
  function EventDispatcherTab({ traits: traits2, schema }) {
42890
43452
  const eventBus = useEventBus();
42891
43453
  const { t } = useTranslate();
42892
- const [log12, setLog] = React86.useState([]);
42893
- const prevStatesRef = React86.useRef(/* @__PURE__ */ new Map());
42894
- React86.useEffect(() => {
43454
+ const [log12, setLog] = React88.useState([]);
43455
+ const prevStatesRef = React88.useRef(/* @__PURE__ */ new Map());
43456
+ React88.useEffect(() => {
42895
43457
  for (const trait of traits2) {
42896
43458
  const prev = prevStatesRef.current.get(trait.id);
42897
43459
  if (prev && prev !== trait.currentState) {
@@ -43060,10 +43622,10 @@ function VerifyModePanel({
43060
43622
  localCount
43061
43623
  }) {
43062
43624
  const { t } = useTranslate();
43063
- const [expanded, setExpanded] = React86.useState(true);
43064
- const scrollRef = React86.useRef(null);
43065
- const prevCountRef = React86.useRef(0);
43066
- React86.useEffect(() => {
43625
+ const [expanded, setExpanded] = React88.useState(true);
43626
+ const scrollRef = React88.useRef(null);
43627
+ const prevCountRef = React88.useRef(0);
43628
+ React88.useEffect(() => {
43067
43629
  if (expanded && transitions.length > prevCountRef.current && scrollRef.current) {
43068
43630
  scrollRef.current.scrollTop = scrollRef.current.scrollHeight;
43069
43631
  }
@@ -43120,10 +43682,10 @@ function RuntimeDebugger({
43120
43682
  schema
43121
43683
  }) {
43122
43684
  const { t } = useTranslate();
43123
- const [isCollapsed, setIsCollapsed] = React86.useState(mode === "verify" ? true : defaultCollapsed);
43124
- const [isVisible, setIsVisible] = React86.useState(mode === "inline" || mode === "verify" || isDebugEnabled2());
43685
+ const [isCollapsed, setIsCollapsed] = React88.useState(mode === "verify" ? true : defaultCollapsed);
43686
+ const [isVisible, setIsVisible] = React88.useState(mode === "inline" || mode === "verify" || isDebugEnabled2());
43125
43687
  const debugData = useDebugData();
43126
- React86.useEffect(() => {
43688
+ React88.useEffect(() => {
43127
43689
  if (mode === "inline") return;
43128
43690
  return onDebugToggle((enabled) => {
43129
43691
  setIsVisible(enabled);
@@ -43132,7 +43694,7 @@ function RuntimeDebugger({
43132
43694
  }
43133
43695
  });
43134
43696
  }, [mode]);
43135
- React86.useEffect(() => {
43697
+ React88.useEffect(() => {
43136
43698
  if (mode === "inline") return;
43137
43699
  const handleKeyDown = (e) => {
43138
43700
  if (e.key === "`" && isVisible) {
@@ -43581,7 +44143,7 @@ function SequenceBar({
43581
44143
  onSlotRemove(index);
43582
44144
  }, [onSlotRemove, playing]);
43583
44145
  const paddedSlots = Array.from({ length: maxSlots }, (_, i) => slots[i]);
43584
- return /* @__PURE__ */ jsx(HStack, { className: cn("items-center", className), gap: "sm", children: paddedSlots.map((slot, i) => /* @__PURE__ */ jsxs(React86__default.Fragment, { children: [
44146
+ return /* @__PURE__ */ jsx(HStack, { className: cn("items-center", className), gap: "sm", children: paddedSlots.map((slot, i) => /* @__PURE__ */ jsxs(React88__default.Fragment, { children: [
43585
44147
  i > 0 && /* @__PURE__ */ jsx(
43586
44148
  Typography,
43587
44149
  {
@@ -43857,7 +44419,7 @@ var init_SequencerBoard = __esm({
43857
44419
  });
43858
44420
  var ShowcaseOrganism;
43859
44421
  var init_ShowcaseOrganism = __esm({
43860
- "components/core/organisms/ShowcaseOrganism.tsx"() {
44422
+ "components/marketing/organisms/ShowcaseOrganism.tsx"() {
43861
44423
  "use client";
43862
44424
  init_cn();
43863
44425
  init_useEventBus();
@@ -44539,7 +45101,7 @@ var init_StatCard = __esm({
44539
45101
  title: propTitle,
44540
45102
  value: propValue,
44541
45103
  previousValue,
44542
- currentValue,
45104
+ currentValue: currentValue2,
44543
45105
  trend: manualTrend,
44544
45106
  trendDirection: manualDirection,
44545
45107
  invertTrend = false,
@@ -44560,7 +45122,7 @@ var init_StatCard = __esm({
44560
45122
  const labelToUse = propLabel ?? propTitle;
44561
45123
  const eventBus = useEventBus();
44562
45124
  const { t } = useTranslate();
44563
- const handleActionClick = React86__default.useCallback(() => {
45125
+ const handleActionClick = React88__default.useCallback(() => {
44564
45126
  if (action?.event) {
44565
45127
  eventBus.emit(`UI:${action.event}`, {});
44566
45128
  }
@@ -44571,7 +45133,7 @@ var init_StatCard = __esm({
44571
45133
  const data = Array.isArray(entity) ? entity : entity ? [entity] : [];
44572
45134
  const isLoading = externalLoading ?? false;
44573
45135
  const error = externalError;
44574
- const computeMetricValue = React86__default.useCallback(
45136
+ const computeMetricValue = React88__default.useCallback(
44575
45137
  (metric, items) => {
44576
45138
  if (metric.value !== void 0) {
44577
45139
  return metric.value;
@@ -44610,7 +45172,7 @@ var init_StatCard = __esm({
44610
45172
  },
44611
45173
  []
44612
45174
  );
44613
- const schemaStats = React86__default.useMemo(() => {
45175
+ const schemaStats = React88__default.useMemo(() => {
44614
45176
  if (!metrics || metrics.length === 0) return null;
44615
45177
  return metrics.map((metric) => ({
44616
45178
  label: metric.label,
@@ -44618,13 +45180,13 @@ var init_StatCard = __esm({
44618
45180
  format: metric.format
44619
45181
  }));
44620
45182
  }, [metrics, data, computeMetricValue]);
44621
- const calculatedTrend = React86__default.useMemo(() => {
45183
+ const calculatedTrend = React88__default.useMemo(() => {
44622
45184
  if (manualTrend !== void 0) return manualTrend;
44623
- if (previousValue === void 0 || currentValue === void 0)
45185
+ if (previousValue === void 0 || currentValue2 === void 0)
44624
45186
  return void 0;
44625
- if (previousValue === 0) return currentValue > 0 ? 100 : 0;
44626
- return (currentValue - previousValue) / previousValue * 100;
44627
- }, [manualTrend, previousValue, currentValue]);
45187
+ if (previousValue === 0) return currentValue2 > 0 ? 100 : 0;
45188
+ return (currentValue2 - previousValue) / previousValue * 100;
45189
+ }, [manualTrend, previousValue, currentValue2]);
44628
45190
  if (schemaStats && schemaStats.length > 1) {
44629
45191
  if (isLoading) {
44630
45192
  return /* @__PURE__ */ jsx(
@@ -45282,7 +45844,7 @@ var init_StatsOrganism = __esm({
45282
45844
  });
45283
45845
  var StepFlowOrganism;
45284
45846
  var init_StepFlowOrganism = __esm({
45285
- "components/core/organisms/StepFlowOrganism.tsx"() {
45847
+ "components/marketing/organisms/StepFlowOrganism.tsx"() {
45286
45848
  "use client";
45287
45849
  init_cn();
45288
45850
  init_Stack();
@@ -45552,7 +46114,7 @@ var init_Timeline = __esm({
45552
46114
  }) => {
45553
46115
  const { t } = useTranslate();
45554
46116
  const entityData = Array.isArray(entity) ? entity : [];
45555
- const items = React86__default.useMemo(() => {
46117
+ const items = React88__default.useMemo(() => {
45556
46118
  if (propItems) return propItems;
45557
46119
  if (entityData.length === 0) return [];
45558
46120
  return entityData.map((record, idx) => {
@@ -45659,7 +46221,7 @@ var init_Timeline = __esm({
45659
46221
  }
45660
46222
  });
45661
46223
  function extractToastProps(children) {
45662
- if (!React86__default.isValidElement(children)) {
46224
+ if (!React88__default.isValidElement(children)) {
45663
46225
  if (typeof children === "string") {
45664
46226
  return { message: children };
45665
46227
  }
@@ -45697,7 +46259,7 @@ var init_ToastSlot = __esm({
45697
46259
  eventBus.emit("UI:CLOSE");
45698
46260
  };
45699
46261
  if (!isVisible) return null;
45700
- const isCustomContent = React86__default.isValidElement(children) && !message;
46262
+ const isCustomContent = React88__default.isValidElement(children) && !message;
45701
46263
  return /* @__PURE__ */ jsx(Box, { className: "fixed bottom-4 right-4 z-50", children: isCustomContent ? children : /* @__PURE__ */ jsx(
45702
46264
  Toast,
45703
46265
  {
@@ -46207,12 +46769,12 @@ var init_WorldMapTemplate = __esm({
46207
46769
  }
46208
46770
  });
46209
46771
  function lazyThree(name, loader) {
46210
- const Lazy = React86__default.lazy(() => loader().then((m) => ({ default: m[name] })));
46772
+ const Lazy = React88__default.lazy(() => loader().then((m) => ({ default: m[name] })));
46211
46773
  function ThreeWrapper(props) {
46212
- return React86__default.createElement(
46213
- React86__default.Suspense,
46774
+ return React88__default.createElement(
46775
+ React88__default.Suspense,
46214
46776
  { fallback: null },
46215
- React86__default.createElement(Lazy, props)
46777
+ React88__default.createElement(Lazy, props)
46216
46778
  );
46217
46779
  }
46218
46780
  ThreeWrapper.displayName = `Lazy(${name})`;
@@ -46232,6 +46794,7 @@ var init_component_registry_generated = __esm({
46232
46794
  init_AnimatedReveal();
46233
46795
  init_ArticleSection();
46234
46796
  init_Aside();
46797
+ init_AssetPicker();
46235
46798
  init_AuthLayout();
46236
46799
  init_BattleBoard();
46237
46800
  init_BattleTemplate();
@@ -46331,11 +46894,13 @@ var init_component_registry_generated = __esm({
46331
46894
  init_GradientDivider();
46332
46895
  init_GraphCanvas();
46333
46896
  init_GraphView();
46897
+ init_GridPicker();
46334
46898
  init_Header();
46335
46899
  init_HealthBar();
46336
46900
  init_HealthPanel();
46337
46901
  init_HeroOrganism();
46338
46902
  init_HeroSection();
46903
+ init_IconPicker();
46339
46904
  init_InfiniteScrollSentinel();
46340
46905
  init_InputGroup();
46341
46906
  init_InstallBox();
@@ -46380,6 +46945,7 @@ var init_component_registry_generated = __esm({
46380
46945
  init_PricingOrganism();
46381
46946
  init_PricingPageTemplate();
46382
46947
  init_ProgressDots();
46948
+ init_PropertyInspector();
46383
46949
  init_PullQuote();
46384
46950
  init_PullToRefresh();
46385
46951
  init_QrScanner();
@@ -46503,6 +47069,7 @@ var init_component_registry_generated = __esm({
46503
47069
  "AnimatedReveal": AnimatedReveal,
46504
47070
  "ArticleSection": ArticleSection,
46505
47071
  "Aside": Aside,
47072
+ "AssetPicker": AssetPicker,
46506
47073
  "AuthLayout": AuthLayout,
46507
47074
  "Avatar": AvatarPattern,
46508
47075
  "AvatarPattern": AvatarPattern,
@@ -46622,6 +47189,7 @@ var init_component_registry_generated = __esm({
46622
47189
  "GraphView": GraphView,
46623
47190
  "Grid": GridPattern,
46624
47191
  "GridPattern": GridPattern,
47192
+ "GridPicker": GridPicker,
46625
47193
  "HStack": HStackPattern,
46626
47194
  "HStackPattern": HStackPattern,
46627
47195
  "Header": Header,
@@ -46631,6 +47199,7 @@ var init_component_registry_generated = __esm({
46631
47199
  "HeroSection": HeroSection,
46632
47200
  "Icon": IconPattern,
46633
47201
  "IconPattern": IconPattern,
47202
+ "IconPicker": IconPicker,
46634
47203
  "InfiniteScrollSentinel": InfiniteScrollSentinel,
46635
47204
  "Input": InputPattern,
46636
47205
  "InputGroup": InputGroup,
@@ -46687,6 +47256,7 @@ var init_component_registry_generated = __esm({
46687
47256
  "ProgressBar": ProgressBarPattern,
46688
47257
  "ProgressBarPattern": ProgressBarPattern,
46689
47258
  "ProgressDots": ProgressDots,
47259
+ "PropertyInspector": PropertyInspector,
46690
47260
  "PullQuote": PullQuote,
46691
47261
  "PullToRefresh": PullToRefresh,
46692
47262
  "QrScanner": QrScanner,
@@ -46828,7 +47398,7 @@ function SuspenseConfigProvider({
46828
47398
  config,
46829
47399
  children
46830
47400
  }) {
46831
- return React86__default.createElement(
47401
+ return React88__default.createElement(
46832
47402
  SuspenseConfigContext.Provider,
46833
47403
  { value: config },
46834
47404
  children
@@ -47318,7 +47888,7 @@ function renderPatternChildren(children, onDismiss, parentId = "root", parentPat
47318
47888
  const key = `${parentId}-${index}-trait:${traitName}`;
47319
47889
  return /* @__PURE__ */ jsx(TraitFrame, { traitName }, key);
47320
47890
  }
47321
- return /* @__PURE__ */ jsx(React86__default.Fragment, { children: child }, `${parentId}-${index}`);
47891
+ return /* @__PURE__ */ jsx(React88__default.Fragment, { children: child }, `${parentId}-${index}`);
47322
47892
  }
47323
47893
  if (!child || typeof child !== "object") return null;
47324
47894
  const childId = `${parentId}-${index}`;
@@ -47358,14 +47928,14 @@ function isPatternConfig(value) {
47358
47928
  if (value === null || value === void 0) return false;
47359
47929
  if (typeof value !== "object") return false;
47360
47930
  if (Array.isArray(value)) return false;
47361
- if (React86__default.isValidElement(value)) return false;
47931
+ if (React88__default.isValidElement(value)) return false;
47362
47932
  if (value instanceof Date) return false;
47363
47933
  if (typeof value === "function") return false;
47364
47934
  const record = value;
47365
47935
  return "type" in record && typeof record.type === "string";
47366
47936
  }
47367
47937
  function isPlainConfigObject(value) {
47368
- if (React86__default.isValidElement(value)) return false;
47938
+ if (React88__default.isValidElement(value)) return false;
47369
47939
  if (value instanceof Date) return false;
47370
47940
  const proto = Object.getPrototypeOf(value);
47371
47941
  return proto === Object.prototype || proto === null;
@@ -47775,7 +48345,7 @@ function resolveLambdaBindings(body, params, item, index) {
47775
48345
  if (Array.isArray(body)) {
47776
48346
  return body.map((b) => recur(b));
47777
48347
  }
47778
- if (body !== null && typeof body === "object" && !React86__default.isValidElement(body) && !(body instanceof Date) && typeof body !== "function") {
48348
+ if (body !== null && typeof body === "object" && !React88__default.isValidElement(body) && !(body instanceof Date) && typeof body !== "function") {
47779
48349
  const out = {};
47780
48350
  for (const [k, v] of Object.entries(body)) {
47781
48351
  out[k] = recur(v);
@@ -47794,7 +48364,7 @@ function getSlotContentRenderer2() {
47794
48364
  function makeLambdaFn(params, lambdaBody, callerKey) {
47795
48365
  return (item, index) => {
47796
48366
  const resolvedBody = resolveLambdaBindings(lambdaBody, params, item, index);
47797
- if (resolvedBody === null || typeof resolvedBody !== "object" || Array.isArray(resolvedBody) || typeof resolvedBody === "function" || React86__default.isValidElement(resolvedBody) || resolvedBody instanceof Date) {
48367
+ if (resolvedBody === null || typeof resolvedBody !== "object" || Array.isArray(resolvedBody) || typeof resolvedBody === "function" || React88__default.isValidElement(resolvedBody) || resolvedBody instanceof Date) {
47798
48368
  return null;
47799
48369
  }
47800
48370
  const record = resolvedBody;
@@ -47813,7 +48383,7 @@ function makeLambdaFn(params, lambdaBody, callerKey) {
47813
48383
  props: childProps,
47814
48384
  priority: 0
47815
48385
  };
47816
- return React86__default.createElement(SlotContentRenderer2, { content: childContent });
48386
+ return React88__default.createElement(SlotContentRenderer2, { content: childContent });
47817
48387
  };
47818
48388
  }
47819
48389
  function convertNode(node, callerKey) {
@@ -47832,7 +48402,7 @@ function convertNode(node, callerKey) {
47832
48402
  });
47833
48403
  return anyChanged ? mapped : node;
47834
48404
  }
47835
- if (typeof node === "object" && !React86__default.isValidElement(node) && !(node instanceof Date)) {
48405
+ if (typeof node === "object" && !React88__default.isValidElement(node) && !(node instanceof Date)) {
47836
48406
  return convertObjectProps(node);
47837
48407
  }
47838
48408
  return node;