@almadar/ui 5.121.4 → 5.122.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/avl/index.cjs +1504 -1414
- package/dist/avl/index.js +582 -492
- package/dist/components/index.cjs +1512 -1410
- package/dist/components/index.d.cts +168 -2
- package/dist/components/index.d.ts +168 -2
- package/dist/components/index.js +583 -482
- package/dist/context/index.cjs +24 -0
- package/dist/context/index.js +24 -0
- package/dist/marketing/index.cjs +8 -6
- package/dist/marketing/index.js +8 -6
- package/dist/providers/index.cjs +1387 -1297
- package/dist/providers/index.js +557 -467
- package/dist/runtime/index.cjs +1364 -1274
- package/dist/runtime/index.js +561 -471
- package/package.json +1 -1
- package/tailwind-preset.cjs +121 -2
- package/themes/_base.css +97 -5
- package/themes/_contract.md +25 -0
- package/themes/game-adventure.css +230 -0
- package/themes/game-rpg.css +228 -0
- package/themes/game-sci-fi.css +231 -0
- package/themes/game-ui-pack.css +229 -0
- package/themes/index.css +4 -0
package/dist/components/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
2
|
-
import * as
|
|
3
|
-
import
|
|
2
|
+
import * as React74 from 'react';
|
|
3
|
+
import React74__default, { createContext, useContext, useMemo, useRef, useEffect, useCallback, useState, Suspense, lazy, useSyncExternalStore, useLayoutEffect, useId } from 'react';
|
|
4
4
|
import { clsx } from 'clsx';
|
|
5
5
|
import { twMerge } from 'tailwind-merge';
|
|
6
6
|
import { EventBusContext, useTraitScopeChain, useCurrentPagePath, useGameAudioContextOptional, useEntitySchemaOptional, TraitScopeProvider } from '@almadar/ui/providers';
|
|
@@ -230,7 +230,7 @@ var init_SvgFlow = __esm({
|
|
|
230
230
|
width = 100,
|
|
231
231
|
height = 100
|
|
232
232
|
}) => {
|
|
233
|
-
const markerId =
|
|
233
|
+
const markerId = React74__default.useMemo(() => {
|
|
234
234
|
flowIdCounter += 1;
|
|
235
235
|
return `almadar-flow-arrow-${flowIdCounter}`;
|
|
236
236
|
}, []);
|
|
@@ -823,7 +823,7 @@ var init_SvgRing = __esm({
|
|
|
823
823
|
width = 100,
|
|
824
824
|
height = 100
|
|
825
825
|
}) => {
|
|
826
|
-
const gradientId =
|
|
826
|
+
const gradientId = React74__default.useMemo(() => {
|
|
827
827
|
ringIdCounter += 1;
|
|
828
828
|
return `almadar-ring-glow-${ringIdCounter}`;
|
|
829
829
|
}, []);
|
|
@@ -1365,7 +1365,7 @@ var init_Icon = __esm({
|
|
|
1365
1365
|
const effectiveName = typeof icon === "string" && icon !== "" ? icon : name;
|
|
1366
1366
|
const effectiveStrokeWidth = strokeWidth != null && strokeWidth > 0 ? strokeWidth : void 0;
|
|
1367
1367
|
const family = useIconFamily();
|
|
1368
|
-
const RenderedComponent =
|
|
1368
|
+
const RenderedComponent = React74__default.useMemo(() => {
|
|
1369
1369
|
if (directIcon) return null;
|
|
1370
1370
|
return effectiveName ? resolveIconForFamily(effectiveName) : null;
|
|
1371
1371
|
}, [directIcon, effectiveName, family]);
|
|
@@ -1485,7 +1485,7 @@ var init_atlasSlice = __esm({
|
|
|
1485
1485
|
}
|
|
1486
1486
|
});
|
|
1487
1487
|
function useAtlasSliceDataUrl(asset) {
|
|
1488
|
-
const [, bump] =
|
|
1488
|
+
const [, bump] = React74.useReducer((x) => x + 1, 0);
|
|
1489
1489
|
if (!isAtlasAsset(asset)) return void 0;
|
|
1490
1490
|
const key = `${asset.atlas}#${asset.sprite}`;
|
|
1491
1491
|
const cached = sliceDataUrlCache.get(key);
|
|
@@ -1548,13 +1548,13 @@ function AtlasImage({
|
|
|
1548
1548
|
style,
|
|
1549
1549
|
"aria-hidden": ariaHidden
|
|
1550
1550
|
}) {
|
|
1551
|
-
const [, bump] =
|
|
1552
|
-
const canvasRef =
|
|
1551
|
+
const [, bump] = React74.useReducer((x) => x + 1, 0);
|
|
1552
|
+
const canvasRef = React74.useRef(null);
|
|
1553
1553
|
const sliced = isAtlasAsset(asset);
|
|
1554
1554
|
const atlas = sliced ? getAtlas(asset.atlas, bump) : void 0;
|
|
1555
1555
|
const img = sliced && asset?.url ? getSheetImage(asset.url, bump) : null;
|
|
1556
1556
|
const rect = sliced && atlas ? subRectFor(atlas, asset.sprite) : null;
|
|
1557
|
-
|
|
1557
|
+
React74.useEffect(() => {
|
|
1558
1558
|
const canvas = canvasRef.current;
|
|
1559
1559
|
if (!canvas || !img || !rect) return;
|
|
1560
1560
|
canvas.width = rect.sw;
|
|
@@ -1630,7 +1630,7 @@ function resolveIconProp(value, sizeClass) {
|
|
|
1630
1630
|
const IconComp = value;
|
|
1631
1631
|
return /* @__PURE__ */ jsx(IconComp, { className: sizeClass });
|
|
1632
1632
|
}
|
|
1633
|
-
if (
|
|
1633
|
+
if (React74__default.isValidElement(value)) {
|
|
1634
1634
|
return value;
|
|
1635
1635
|
}
|
|
1636
1636
|
if (typeof value === "object" && value !== null && isIconLike(value)) {
|
|
@@ -1707,7 +1707,7 @@ var init_Button = __esm({
|
|
|
1707
1707
|
md: "h-icon-default w-icon-default",
|
|
1708
1708
|
lg: "h-icon-default w-icon-default"
|
|
1709
1709
|
};
|
|
1710
|
-
Button =
|
|
1710
|
+
Button = React74__default.forwardRef(
|
|
1711
1711
|
({
|
|
1712
1712
|
className,
|
|
1713
1713
|
variant = "primary",
|
|
@@ -1749,7 +1749,8 @@ var init_Button = __esm({
|
|
|
1749
1749
|
"font-medium",
|
|
1750
1750
|
"rounded-sm",
|
|
1751
1751
|
"cursor-pointer",
|
|
1752
|
-
"
|
|
1752
|
+
"chrome-button",
|
|
1753
|
+
"transition-all duration-normal",
|
|
1753
1754
|
"focus:outline-none focus:ring-[length:var(--focus-ring-width)] focus:ring-ring focus:ring-offset-[length:var(--focus-ring-offset)]",
|
|
1754
1755
|
"disabled:opacity-50 disabled:cursor-not-allowed",
|
|
1755
1756
|
variantStyles[variant],
|
|
@@ -1777,7 +1778,7 @@ var init_Input = __esm({
|
|
|
1777
1778
|
init_cn();
|
|
1778
1779
|
init_Icon();
|
|
1779
1780
|
init_useEventBus();
|
|
1780
|
-
Input =
|
|
1781
|
+
Input = React74__default.forwardRef(
|
|
1781
1782
|
({
|
|
1782
1783
|
className,
|
|
1783
1784
|
inputType,
|
|
@@ -1812,7 +1813,7 @@ var init_Input = __esm({
|
|
|
1812
1813
|
const showClearButton = clearable && value && String(value).length > 0;
|
|
1813
1814
|
const isMultiline = type === "textarea";
|
|
1814
1815
|
const baseClassName = cn(
|
|
1815
|
-
"block w-full rounded-sm transition-all duration-
|
|
1816
|
+
"block w-full rounded-sm transition-all duration-fast",
|
|
1816
1817
|
"border-[length:var(--border-width-thin)] border-border",
|
|
1817
1818
|
isMultiline ? "px-3 py-2 text-sm" : "h-input-md px-3 text-sm",
|
|
1818
1819
|
"bg-card hover:bg-muted focus:bg-card",
|
|
@@ -1945,7 +1946,7 @@ var Label;
|
|
|
1945
1946
|
var init_Label = __esm({
|
|
1946
1947
|
"components/core/atoms/Label.tsx"() {
|
|
1947
1948
|
init_cn();
|
|
1948
|
-
Label =
|
|
1949
|
+
Label = React74__default.forwardRef(
|
|
1949
1950
|
({ className, required, children, ...props }, ref) => {
|
|
1950
1951
|
return /* @__PURE__ */ jsxs(
|
|
1951
1952
|
"label",
|
|
@@ -1972,7 +1973,7 @@ var init_Textarea = __esm({
|
|
|
1972
1973
|
"components/core/atoms/Textarea.tsx"() {
|
|
1973
1974
|
init_cn();
|
|
1974
1975
|
init_useEventBus();
|
|
1975
|
-
Textarea =
|
|
1976
|
+
Textarea = React74__default.forwardRef(
|
|
1976
1977
|
({ className, error, onChange, ...props }, ref) => {
|
|
1977
1978
|
const eventBus = useEventBus();
|
|
1978
1979
|
const handleChange = (e) => {
|
|
@@ -2211,7 +2212,7 @@ var init_Select = __esm({
|
|
|
2211
2212
|
init_cn();
|
|
2212
2213
|
init_Icon();
|
|
2213
2214
|
init_useEventBus();
|
|
2214
|
-
Select =
|
|
2215
|
+
Select = React74__default.forwardRef(
|
|
2215
2216
|
(props, _ref) => {
|
|
2216
2217
|
const { multiple, searchable, clearable } = props;
|
|
2217
2218
|
if (multiple || searchable || clearable) {
|
|
@@ -2228,7 +2229,7 @@ var init_Checkbox = __esm({
|
|
|
2228
2229
|
"components/core/atoms/Checkbox.tsx"() {
|
|
2229
2230
|
init_cn();
|
|
2230
2231
|
init_useEventBus();
|
|
2231
|
-
Checkbox =
|
|
2232
|
+
Checkbox = React74__default.forwardRef(
|
|
2232
2233
|
({ className, label, id, onChange, ...props }, ref) => {
|
|
2233
2234
|
const inputId = id || `checkbox-${Math.random().toString(36).substr(2, 9)}`;
|
|
2234
2235
|
const eventBus = useEventBus();
|
|
@@ -2282,7 +2283,7 @@ var init_Spinner = __esm({
|
|
|
2282
2283
|
md: "h-6 w-6",
|
|
2283
2284
|
lg: "h-8 w-8"
|
|
2284
2285
|
};
|
|
2285
|
-
Spinner =
|
|
2286
|
+
Spinner = React74__default.forwardRef(
|
|
2286
2287
|
({ className, size = "md", overlay, ...props }, ref) => {
|
|
2287
2288
|
if (overlay) {
|
|
2288
2289
|
return /* @__PURE__ */ jsx(
|
|
@@ -2324,21 +2325,21 @@ var init_Card = __esm({
|
|
|
2324
2325
|
"bg-card",
|
|
2325
2326
|
"border-[length:var(--border-width)] border-border",
|
|
2326
2327
|
"shadow-elevation-card",
|
|
2327
|
-
"transition-all duration-
|
|
2328
|
+
"transition-all duration-normal",
|
|
2328
2329
|
"hover:shadow-elevation-dialog hover:translate-y-[var(--hover-translate-y)]"
|
|
2329
2330
|
].join(" "),
|
|
2330
2331
|
bordered: [
|
|
2331
2332
|
"bg-card",
|
|
2332
2333
|
"border-[length:var(--border-width)] border-border",
|
|
2333
2334
|
"shadow-elevation-card",
|
|
2334
|
-
"transition-all duration-
|
|
2335
|
+
"transition-all duration-normal",
|
|
2335
2336
|
"hover:shadow-elevation-dialog hover:translate-y-[var(--hover-translate-y)]"
|
|
2336
2337
|
].join(" "),
|
|
2337
2338
|
elevated: [
|
|
2338
2339
|
"bg-card",
|
|
2339
2340
|
"border-[length:var(--border-width)] border-border",
|
|
2340
2341
|
"shadow",
|
|
2341
|
-
"transition-all duration-
|
|
2342
|
+
"transition-all duration-normal",
|
|
2342
2343
|
"hover:shadow-elevation-dialog hover:translate-y-[var(--hover-translate-y)]"
|
|
2343
2344
|
].join(" "),
|
|
2344
2345
|
// Interactive variant with theme-specific hover effects
|
|
@@ -2347,7 +2348,7 @@ var init_Card = __esm({
|
|
|
2347
2348
|
"border-[length:var(--border-width)] border-border",
|
|
2348
2349
|
"shadow",
|
|
2349
2350
|
"cursor-pointer",
|
|
2350
|
-
"transition-all duration-
|
|
2351
|
+
"transition-all duration-normal",
|
|
2351
2352
|
"hover:shadow-elevation-dialog"
|
|
2352
2353
|
].join(" ")
|
|
2353
2354
|
};
|
|
@@ -2372,7 +2373,7 @@ var init_Card = __esm({
|
|
|
2372
2373
|
chip: "shadow-none rounded-pill border-[length:var(--border-width)] border-border",
|
|
2373
2374
|
"tile-image-first": "p-0 overflow-hidden"
|
|
2374
2375
|
};
|
|
2375
|
-
Card =
|
|
2376
|
+
Card = React74__default.forwardRef(
|
|
2376
2377
|
({
|
|
2377
2378
|
className,
|
|
2378
2379
|
variant = "bordered",
|
|
@@ -2398,7 +2399,8 @@ var init_Card = __esm({
|
|
|
2398
2399
|
ref,
|
|
2399
2400
|
className: cn(
|
|
2400
2401
|
"rounded-container relative",
|
|
2401
|
-
"transition-all duration-
|
|
2402
|
+
"transition-all duration-normal",
|
|
2403
|
+
"chrome-panel",
|
|
2402
2404
|
variantStyles2[variant],
|
|
2403
2405
|
paddingStyles[padding],
|
|
2404
2406
|
lookStyles[look],
|
|
@@ -2420,9 +2422,9 @@ var init_Card = __esm({
|
|
|
2420
2422
|
}
|
|
2421
2423
|
);
|
|
2422
2424
|
Card.displayName = "Card";
|
|
2423
|
-
CardHeader =
|
|
2425
|
+
CardHeader = React74__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn("mb-4", className), ...props }));
|
|
2424
2426
|
CardHeader.displayName = "CardHeader";
|
|
2425
|
-
CardTitle =
|
|
2427
|
+
CardTitle = React74__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
2426
2428
|
"h3",
|
|
2427
2429
|
{
|
|
2428
2430
|
ref,
|
|
@@ -2435,11 +2437,11 @@ var init_Card = __esm({
|
|
|
2435
2437
|
}
|
|
2436
2438
|
));
|
|
2437
2439
|
CardTitle.displayName = "CardTitle";
|
|
2438
|
-
CardContent =
|
|
2440
|
+
CardContent = React74__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn("", className), ...props }));
|
|
2439
2441
|
CardContent.displayName = "CardContent";
|
|
2440
2442
|
CardBody = CardContent;
|
|
2441
2443
|
CardBody.displayName = "CardBody";
|
|
2442
|
-
CardFooter =
|
|
2444
|
+
CardFooter = React74__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
2443
2445
|
"div",
|
|
2444
2446
|
{
|
|
2445
2447
|
ref,
|
|
@@ -2493,7 +2495,7 @@ var init_Badge = __esm({
|
|
|
2493
2495
|
md: "px-2.5 py-1 text-sm",
|
|
2494
2496
|
lg: "px-3 py-1.5 text-base"
|
|
2495
2497
|
};
|
|
2496
|
-
Badge =
|
|
2498
|
+
Badge = React74__default.forwardRef(
|
|
2497
2499
|
({ className, variant = "default", size = "sm", amount, label, icon, iconAsset, children, onRemove, removeLabel, ...props }, ref) => {
|
|
2498
2500
|
const iconSizes3 = {
|
|
2499
2501
|
sm: "h-icon-default w-icon-default",
|
|
@@ -2619,7 +2621,7 @@ var init_FilterPill = __esm({
|
|
|
2619
2621
|
md: "w-3.5 h-3.5",
|
|
2620
2622
|
lg: "w-4 h-4"
|
|
2621
2623
|
};
|
|
2622
|
-
FilterPill =
|
|
2624
|
+
FilterPill = React74__default.forwardRef(
|
|
2623
2625
|
({
|
|
2624
2626
|
className,
|
|
2625
2627
|
variant = "default",
|
|
@@ -2748,8 +2750,8 @@ var init_Avatar = __esm({
|
|
|
2748
2750
|
actionPayload
|
|
2749
2751
|
}) => {
|
|
2750
2752
|
const eventBus = useEventBus();
|
|
2751
|
-
const [imgFailed, setImgFailed] =
|
|
2752
|
-
|
|
2753
|
+
const [imgFailed, setImgFailed] = React74__default.useState(false);
|
|
2754
|
+
React74__default.useEffect(() => {
|
|
2753
2755
|
setImgFailed(false);
|
|
2754
2756
|
}, [src]);
|
|
2755
2757
|
const initials = providedInitials ?? (name ? generateInitials(name) : void 0);
|
|
@@ -3001,7 +3003,7 @@ var init_Box = __esm({
|
|
|
3001
3003
|
fixed: "fixed",
|
|
3002
3004
|
sticky: "sticky"
|
|
3003
3005
|
};
|
|
3004
|
-
Box =
|
|
3006
|
+
Box = React74__default.forwardRef(
|
|
3005
3007
|
({
|
|
3006
3008
|
padding,
|
|
3007
3009
|
paddingX,
|
|
@@ -3066,7 +3068,7 @@ var init_Box = __esm({
|
|
|
3066
3068
|
onPointerDown?.(e);
|
|
3067
3069
|
}, [hoverEvent, tapReveal, triggerProps, onPointerDown]);
|
|
3068
3070
|
const isClickable = action || onClick;
|
|
3069
|
-
return
|
|
3071
|
+
return React74__default.createElement(
|
|
3070
3072
|
Component,
|
|
3071
3073
|
{
|
|
3072
3074
|
ref,
|
|
@@ -3120,7 +3122,7 @@ var init_Center = __esm({
|
|
|
3120
3122
|
as: Component = "div"
|
|
3121
3123
|
}) => {
|
|
3122
3124
|
const mergedStyle = minHeight ? { minHeight, ...style } : style;
|
|
3123
|
-
return
|
|
3125
|
+
return React74__default.createElement(Component, {
|
|
3124
3126
|
className: cn(
|
|
3125
3127
|
inline ? "inline-flex" : "flex",
|
|
3126
3128
|
horizontal && "justify-center",
|
|
@@ -3388,7 +3390,7 @@ var init_Radio = __esm({
|
|
|
3388
3390
|
md: "w-2.5 h-2.5",
|
|
3389
3391
|
lg: "w-3 h-3"
|
|
3390
3392
|
};
|
|
3391
|
-
Radio =
|
|
3393
|
+
Radio = React74__default.forwardRef(
|
|
3392
3394
|
({
|
|
3393
3395
|
label,
|
|
3394
3396
|
helperText,
|
|
@@ -3405,12 +3407,12 @@ var init_Radio = __esm({
|
|
|
3405
3407
|
onChange,
|
|
3406
3408
|
...props
|
|
3407
3409
|
}, ref) => {
|
|
3408
|
-
const reactId =
|
|
3410
|
+
const reactId = React74__default.useId();
|
|
3409
3411
|
const baseId = id || `radio-${reactId}`;
|
|
3410
3412
|
const hasError = !!error;
|
|
3411
3413
|
const eventBus = useEventBus();
|
|
3412
|
-
const [selected, setSelected] =
|
|
3413
|
-
|
|
3414
|
+
const [selected, setSelected] = React74__default.useState(value);
|
|
3415
|
+
React74__default.useEffect(() => {
|
|
3414
3416
|
if (value !== void 0) setSelected(value);
|
|
3415
3417
|
}, [value]);
|
|
3416
3418
|
const pick = (next, e) => {
|
|
@@ -3592,7 +3594,7 @@ var init_Switch = __esm({
|
|
|
3592
3594
|
"components/core/atoms/Switch.tsx"() {
|
|
3593
3595
|
"use client";
|
|
3594
3596
|
init_cn();
|
|
3595
|
-
Switch =
|
|
3597
|
+
Switch = React74.forwardRef(
|
|
3596
3598
|
({
|
|
3597
3599
|
checked,
|
|
3598
3600
|
defaultChecked = false,
|
|
@@ -3603,10 +3605,10 @@ var init_Switch = __esm({
|
|
|
3603
3605
|
name,
|
|
3604
3606
|
className
|
|
3605
3607
|
}, ref) => {
|
|
3606
|
-
const [isChecked, setIsChecked] =
|
|
3608
|
+
const [isChecked, setIsChecked] = React74.useState(
|
|
3607
3609
|
checked !== void 0 ? checked : defaultChecked
|
|
3608
3610
|
);
|
|
3609
|
-
|
|
3611
|
+
React74.useEffect(() => {
|
|
3610
3612
|
if (checked !== void 0) {
|
|
3611
3613
|
setIsChecked(checked);
|
|
3612
3614
|
}
|
|
@@ -3637,7 +3639,7 @@ var init_Switch = __esm({
|
|
|
3637
3639
|
// redefine --space-11 to 68px, which makes w-11 enormous and leaves
|
|
3638
3640
|
// the thumb stuck near the left edge. The switch geometry must stay
|
|
3639
3641
|
// proportional regardless of a theme's density scale.
|
|
3640
|
-
"relative inline-flex h-[1.5rem] w-[2.75rem] shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors",
|
|
3642
|
+
"relative inline-flex h-[1.5rem] w-[2.75rem] shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors duration-fast",
|
|
3641
3643
|
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background",
|
|
3642
3644
|
isChecked ? "bg-primary" : "bg-muted",
|
|
3643
3645
|
disabled && "cursor-not-allowed opacity-50"
|
|
@@ -3646,7 +3648,7 @@ var init_Switch = __esm({
|
|
|
3646
3648
|
"span",
|
|
3647
3649
|
{
|
|
3648
3650
|
className: cn(
|
|
3649
|
-
"pointer-events-none block h-[1.25rem] w-[1.25rem] rounded-full bg-background shadow-lg ring-0 transition-transform",
|
|
3651
|
+
"pointer-events-none block h-[1.25rem] w-[1.25rem] rounded-full bg-background shadow-lg ring-0 transition-transform duration-fast",
|
|
3650
3652
|
isChecked ? "translate-x-[1.25rem]" : "translate-x-0"
|
|
3651
3653
|
)
|
|
3652
3654
|
}
|
|
@@ -3769,7 +3771,7 @@ var init_Stack = __esm({
|
|
|
3769
3771
|
};
|
|
3770
3772
|
const isHorizontal = direction === "horizontal";
|
|
3771
3773
|
const directionClass = responsive && isHorizontal ? reverse ? "flex-col-reverse md:flex-row-reverse" : "flex-col md:flex-row" : isHorizontal ? reverse ? "flex-row-reverse" : "flex-row" : reverse ? "flex-col-reverse" : "flex-col";
|
|
3772
|
-
return
|
|
3774
|
+
return React74__default.createElement(
|
|
3773
3775
|
Component,
|
|
3774
3776
|
{
|
|
3775
3777
|
className: cn(
|
|
@@ -3814,7 +3816,7 @@ var init_TextHighlight = __esm({
|
|
|
3814
3816
|
hoverEvent
|
|
3815
3817
|
}) => {
|
|
3816
3818
|
const eventBus = useEventBus();
|
|
3817
|
-
const baseStyles = "cursor-pointer transition-all duration-
|
|
3819
|
+
const baseStyles = "cursor-pointer transition-all duration-fast";
|
|
3818
3820
|
const typeStyles = {
|
|
3819
3821
|
question: cn(
|
|
3820
3822
|
// Blue border for questions
|
|
@@ -3965,7 +3967,7 @@ var init_Typography = __esm({
|
|
|
3965
3967
|
}) => {
|
|
3966
3968
|
const variant = variantProp ?? (level ? `h${level}` : "body1");
|
|
3967
3969
|
const Component = as || defaultElements[variant];
|
|
3968
|
-
return
|
|
3970
|
+
return React74__default.createElement(
|
|
3969
3971
|
Component,
|
|
3970
3972
|
{
|
|
3971
3973
|
id,
|
|
@@ -4048,12 +4050,84 @@ var init_ThemeToggle = __esm({
|
|
|
4048
4050
|
ThemeToggle.displayName = "ThemeToggle";
|
|
4049
4051
|
}
|
|
4050
4052
|
});
|
|
4053
|
+
function isMotionEnabled() {
|
|
4054
|
+
if (typeof document === "undefined") return true;
|
|
4055
|
+
if (motionEnabledCache !== null) return motionEnabledCache;
|
|
4056
|
+
const v = getComputedStyle(document.documentElement).getPropertyValue("--motion-enable").trim().toLowerCase();
|
|
4057
|
+
motionEnabledCache = v !== "off";
|
|
4058
|
+
return motionEnabledCache;
|
|
4059
|
+
}
|
|
4060
|
+
function usePresence(show, opts) {
|
|
4061
|
+
const { animation, animate = true, onExited } = opts;
|
|
4062
|
+
const [mounted, setMounted] = useState(show);
|
|
4063
|
+
const [exiting, setExiting] = useState(false);
|
|
4064
|
+
const prev = useRef(show);
|
|
4065
|
+
const onExitedRef = useRef(onExited);
|
|
4066
|
+
onExitedRef.current = onExited;
|
|
4067
|
+
const safeTimer = useRef(null);
|
|
4068
|
+
const clearSafe = useCallback(() => {
|
|
4069
|
+
if (safeTimer.current) {
|
|
4070
|
+
clearTimeout(safeTimer.current);
|
|
4071
|
+
safeTimer.current = null;
|
|
4072
|
+
}
|
|
4073
|
+
}, []);
|
|
4074
|
+
const finishExit = useCallback(() => {
|
|
4075
|
+
clearSafe();
|
|
4076
|
+
setExiting(false);
|
|
4077
|
+
setMounted(false);
|
|
4078
|
+
onExitedRef.current?.();
|
|
4079
|
+
}, [clearSafe]);
|
|
4080
|
+
useEffect(() => {
|
|
4081
|
+
const moving = animate && isMotionEnabled();
|
|
4082
|
+
if (show && !prev.current) {
|
|
4083
|
+
setExiting(false);
|
|
4084
|
+
setMounted(true);
|
|
4085
|
+
} else if (!show && prev.current) {
|
|
4086
|
+
if (moving) {
|
|
4087
|
+
setExiting(true);
|
|
4088
|
+
clearSafe();
|
|
4089
|
+
safeTimer.current = setTimeout(finishExit, SAFE_EXIT_MS);
|
|
4090
|
+
} else {
|
|
4091
|
+
setMounted(false);
|
|
4092
|
+
setExiting(false);
|
|
4093
|
+
}
|
|
4094
|
+
}
|
|
4095
|
+
prev.current = show;
|
|
4096
|
+
}, [show, animate, clearSafe, finishExit]);
|
|
4097
|
+
useEffect(() => () => clearSafe(), [clearSafe]);
|
|
4098
|
+
const disabled = !animate || !isMotionEnabled();
|
|
4099
|
+
const className = disabled ? "" : exiting ? `animate-${animation}-out` : `animate-${animation}-in`;
|
|
4100
|
+
const onAnimationEnd = useCallback(
|
|
4101
|
+
(e) => {
|
|
4102
|
+
if (e.target !== e.currentTarget) return;
|
|
4103
|
+
if (exiting) finishExit();
|
|
4104
|
+
},
|
|
4105
|
+
[exiting, finishExit]
|
|
4106
|
+
);
|
|
4107
|
+
return { mounted, exiting, className, onAnimationEnd };
|
|
4108
|
+
}
|
|
4109
|
+
var SAFE_EXIT_MS, motionEnabledCache, Presence;
|
|
4110
|
+
var init_Presence = __esm({
|
|
4111
|
+
"components/core/atoms/Presence.tsx"() {
|
|
4112
|
+
"use client";
|
|
4113
|
+
init_cn();
|
|
4114
|
+
SAFE_EXIT_MS = 1e3;
|
|
4115
|
+
motionEnabledCache = null;
|
|
4116
|
+
Presence = ({ show, className, children, ...opts }) => {
|
|
4117
|
+
const { mounted, className: animClass, onAnimationEnd } = usePresence(show, opts);
|
|
4118
|
+
if (!mounted) return null;
|
|
4119
|
+
return /* @__PURE__ */ jsx("div", { className: cn(animClass, className), onAnimationEnd, children });
|
|
4120
|
+
};
|
|
4121
|
+
Presence.displayName = "Presence";
|
|
4122
|
+
}
|
|
4123
|
+
});
|
|
4051
4124
|
var Overlay;
|
|
4052
4125
|
var init_Overlay = __esm({
|
|
4053
4126
|
"components/core/atoms/Overlay.tsx"() {
|
|
4054
4127
|
"use client";
|
|
4055
4128
|
init_cn();
|
|
4056
4129
|
init_useEventBus();
|
|
4130
|
+
init_Presence();
|
|
4057
4131
|
Overlay = ({
|
|
4058
4132
|
isVisible = true,
|
|
4059
4133
|
onClick,
|
|
@@ -4062,7 +4136,8 @@ var init_Overlay = __esm({
|
|
|
4062
4136
|
action
|
|
4063
4137
|
}) => {
|
|
4064
4138
|
const eventBus = useEventBus();
|
|
4065
|
-
|
|
4139
|
+
const { mounted, className: animClass, onAnimationEnd } = usePresence(isVisible, { animation: "overlay" });
|
|
4140
|
+
if (!mounted) return null;
|
|
4066
4141
|
const handleClick = (e) => {
|
|
4067
4142
|
if (action) {
|
|
4068
4143
|
eventBus.emit(`UI:${action}`, {});
|
|
@@ -4075,11 +4150,12 @@ var init_Overlay = __esm({
|
|
|
4075
4150
|
className: cn(
|
|
4076
4151
|
"fixed inset-0 z-40",
|
|
4077
4152
|
blur && "backdrop-blur-sm",
|
|
4078
|
-
|
|
4153
|
+
animClass,
|
|
4079
4154
|
className
|
|
4080
4155
|
),
|
|
4081
4156
|
style: { backgroundColor: "rgba(0, 0, 0, 0.6)" },
|
|
4082
4157
|
onClick: action || onClick ? handleClick : void 0,
|
|
4158
|
+
onAnimationEnd,
|
|
4083
4159
|
"aria-hidden": "true"
|
|
4084
4160
|
}
|
|
4085
4161
|
);
|
|
@@ -4125,7 +4201,7 @@ var Dialog;
|
|
|
4125
4201
|
var init_Dialog = __esm({
|
|
4126
4202
|
"components/core/atoms/Dialog.tsx"() {
|
|
4127
4203
|
init_cn();
|
|
4128
|
-
Dialog =
|
|
4204
|
+
Dialog = React74__default.forwardRef(
|
|
4129
4205
|
({
|
|
4130
4206
|
role = "dialog",
|
|
4131
4207
|
"aria-modal": ariaModal = true,
|
|
@@ -4151,7 +4227,7 @@ var Aside;
|
|
|
4151
4227
|
var init_Aside = __esm({
|
|
4152
4228
|
"components/core/atoms/Aside.tsx"() {
|
|
4153
4229
|
init_cn();
|
|
4154
|
-
Aside =
|
|
4230
|
+
Aside = React74__default.forwardRef(
|
|
4155
4231
|
({ className, children, ...rest }, ref) => /* @__PURE__ */ jsx("aside", { ref, className: cn(className), ...rest, children })
|
|
4156
4232
|
);
|
|
4157
4233
|
Aside.displayName = "Aside";
|
|
@@ -4230,9 +4306,9 @@ var init_LawReferenceTooltip = __esm({
|
|
|
4230
4306
|
className
|
|
4231
4307
|
}) => {
|
|
4232
4308
|
const { t } = useTranslate();
|
|
4233
|
-
const [isVisible, setIsVisible] =
|
|
4234
|
-
const timeoutRef =
|
|
4235
|
-
const triggerRef =
|
|
4309
|
+
const [isVisible, setIsVisible] = React74__default.useState(false);
|
|
4310
|
+
const timeoutRef = React74__default.useRef(null);
|
|
4311
|
+
const triggerRef = React74__default.useRef(null);
|
|
4236
4312
|
const handleMouseEnter = () => {
|
|
4237
4313
|
if (timeoutRef.current) clearTimeout(timeoutRef.current);
|
|
4238
4314
|
timeoutRef.current = setTimeout(() => setIsVisible(true), 200);
|
|
@@ -4243,7 +4319,7 @@ var init_LawReferenceTooltip = __esm({
|
|
|
4243
4319
|
};
|
|
4244
4320
|
const { revealed, triggerProps } = useTapReveal({ refs: [triggerRef] });
|
|
4245
4321
|
const open = isVisible || revealed;
|
|
4246
|
-
|
|
4322
|
+
React74__default.useEffect(() => {
|
|
4247
4323
|
return () => {
|
|
4248
4324
|
if (timeoutRef.current) clearTimeout(timeoutRef.current);
|
|
4249
4325
|
};
|
|
@@ -4453,7 +4529,7 @@ var init_StatusDot = __esm({
|
|
|
4453
4529
|
md: "w-2.5 h-2.5",
|
|
4454
4530
|
lg: "w-3 h-3"
|
|
4455
4531
|
};
|
|
4456
|
-
StatusDot =
|
|
4532
|
+
StatusDot = React74__default.forwardRef(
|
|
4457
4533
|
({ className, status = "offline", pulse = false, size = "md", label, ...props }, ref) => {
|
|
4458
4534
|
return /* @__PURE__ */ jsx(
|
|
4459
4535
|
"span",
|
|
@@ -4507,7 +4583,7 @@ var init_TrendIndicator = __esm({
|
|
|
4507
4583
|
down: "trending-down",
|
|
4508
4584
|
flat: "arrow-right"
|
|
4509
4585
|
};
|
|
4510
|
-
TrendIndicator =
|
|
4586
|
+
TrendIndicator = React74__default.forwardRef(
|
|
4511
4587
|
({
|
|
4512
4588
|
className,
|
|
4513
4589
|
value,
|
|
@@ -4574,7 +4650,7 @@ var init_RangeSlider = __esm({
|
|
|
4574
4650
|
md: "w-4 h-4",
|
|
4575
4651
|
lg: "w-5 h-5"
|
|
4576
4652
|
};
|
|
4577
|
-
RangeSlider =
|
|
4653
|
+
RangeSlider = React74__default.forwardRef(
|
|
4578
4654
|
({
|
|
4579
4655
|
className,
|
|
4580
4656
|
min = 0,
|
|
@@ -4717,7 +4793,7 @@ var init_RangeSlider = __esm({
|
|
|
4717
4793
|
"border-2 border-primary",
|
|
4718
4794
|
"shadow-sm",
|
|
4719
4795
|
"pointer-events-none",
|
|
4720
|
-
"transition-transform duration-
|
|
4796
|
+
"transition-transform duration-instant",
|
|
4721
4797
|
isDragging && "scale-[var(--hover-scale)]",
|
|
4722
4798
|
thumbSizes[size]
|
|
4723
4799
|
),
|
|
@@ -5185,7 +5261,7 @@ var init_ContentSection = __esm({
|
|
|
5185
5261
|
md: "py-16",
|
|
5186
5262
|
lg: "py-24"
|
|
5187
5263
|
};
|
|
5188
|
-
ContentSection =
|
|
5264
|
+
ContentSection = React74__default.forwardRef(
|
|
5189
5265
|
({ children, background = "default", padding = "lg", id, className }, ref) => {
|
|
5190
5266
|
return /* @__PURE__ */ jsx(
|
|
5191
5267
|
Box,
|
|
@@ -5719,7 +5795,7 @@ var init_AnimatedReveal = __esm({
|
|
|
5719
5795
|
"scale-up": { opacity: 1, transform: "scale(1) translateY(0)" },
|
|
5720
5796
|
"none": {}
|
|
5721
5797
|
};
|
|
5722
|
-
AnimatedReveal =
|
|
5798
|
+
AnimatedReveal = React74__default.forwardRef(
|
|
5723
5799
|
({
|
|
5724
5800
|
trigger = "scroll",
|
|
5725
5801
|
animation = "fade-up",
|
|
@@ -5879,7 +5955,7 @@ var init_AnimatedGraphic = __esm({
|
|
|
5879
5955
|
"components/marketing/atoms/AnimatedGraphic.tsx"() {
|
|
5880
5956
|
"use client";
|
|
5881
5957
|
init_cn();
|
|
5882
|
-
AnimatedGraphic =
|
|
5958
|
+
AnimatedGraphic = React74__default.forwardRef(
|
|
5883
5959
|
({
|
|
5884
5960
|
src,
|
|
5885
5961
|
svgContent,
|
|
@@ -5902,7 +5978,7 @@ var init_AnimatedGraphic = __esm({
|
|
|
5902
5978
|
const fetchedSvg = useFetchedSvg(svgContent ? void 0 : src);
|
|
5903
5979
|
const resolvedSvg = svgContent ?? fetchedSvg;
|
|
5904
5980
|
const prevAnimateRef = useRef(animate);
|
|
5905
|
-
const setRef =
|
|
5981
|
+
const setRef = React74__default.useCallback(
|
|
5906
5982
|
(node) => {
|
|
5907
5983
|
containerRef.current = node;
|
|
5908
5984
|
if (typeof ref === "function") ref(node);
|
|
@@ -6025,6 +6101,7 @@ var init_Modal = __esm({
|
|
|
6025
6101
|
isOpen = true,
|
|
6026
6102
|
onClose = () => {
|
|
6027
6103
|
},
|
|
6104
|
+
onExited,
|
|
6028
6105
|
title,
|
|
6029
6106
|
children = null,
|
|
6030
6107
|
footer,
|
|
@@ -6051,7 +6128,10 @@ var init_Modal = __esm({
|
|
|
6051
6128
|
wasOpenRef.current = isOpen;
|
|
6052
6129
|
}, [isOpen]);
|
|
6053
6130
|
const handleAnimEnd = (e) => {
|
|
6054
|
-
if (closing && e.target === e.currentTarget)
|
|
6131
|
+
if (closing && e.target === e.currentTarget) {
|
|
6132
|
+
setClosing(false);
|
|
6133
|
+
onExited?.();
|
|
6134
|
+
}
|
|
6055
6135
|
};
|
|
6056
6136
|
useEffect(() => {
|
|
6057
6137
|
if (isOpen) {
|
|
@@ -6229,6 +6309,7 @@ var init_Drawer = __esm({
|
|
|
6229
6309
|
init_Button();
|
|
6230
6310
|
init_Typography();
|
|
6231
6311
|
init_Overlay();
|
|
6312
|
+
init_Presence();
|
|
6232
6313
|
init_cn();
|
|
6233
6314
|
init_useEventBus();
|
|
6234
6315
|
sizeWidths = {
|
|
@@ -6282,6 +6363,7 @@ var init_Drawer = __esm({
|
|
|
6282
6363
|
document.addEventListener("keydown", handleEscape);
|
|
6283
6364
|
return () => document.removeEventListener("keydown", handleEscape);
|
|
6284
6365
|
}, [isOpen, closeOnEscape, onClose, closeEvent, eventBus]);
|
|
6366
|
+
const { mounted, className: drawerAnim, onAnimationEnd } = usePresence(isOpen, { animation: "drawer" });
|
|
6285
6367
|
useEffect(() => {
|
|
6286
6368
|
if (isOpen) {
|
|
6287
6369
|
document.body.style.overflow = "hidden";
|
|
@@ -6292,7 +6374,7 @@ var init_Drawer = __esm({
|
|
|
6292
6374
|
document.body.style.overflow = "";
|
|
6293
6375
|
};
|
|
6294
6376
|
}, [isOpen]);
|
|
6295
|
-
if (!
|
|
6377
|
+
if (!mounted) return null;
|
|
6296
6378
|
const handleClose = () => {
|
|
6297
6379
|
if (closeEvent) eventBus.emit(`UI:${closeEvent}`, {});
|
|
6298
6380
|
onClose();
|
|
@@ -6305,7 +6387,7 @@ var init_Drawer = __esm({
|
|
|
6305
6387
|
const widthClass = width in sizeWidths ? sizeWidths[width] : "";
|
|
6306
6388
|
const widthStyle = width in sizeWidths ? void 0 : { width };
|
|
6307
6389
|
const positionClasses = position === "right" ? "right-0 border-l" : "left-0 border-r";
|
|
6308
|
-
const
|
|
6390
|
+
const drawerSign = position === "right" ? 1 : -1;
|
|
6309
6391
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
6310
6392
|
/* @__PURE__ */ jsx(
|
|
6311
6393
|
Overlay,
|
|
@@ -6327,12 +6409,13 @@ var init_Drawer = __esm({
|
|
|
6327
6409
|
"flex flex-col max-h-screen",
|
|
6328
6410
|
positionClasses,
|
|
6329
6411
|
widthClass,
|
|
6330
|
-
|
|
6412
|
+
drawerAnim,
|
|
6331
6413
|
className
|
|
6332
6414
|
),
|
|
6333
|
-
style: widthStyle,
|
|
6415
|
+
style: { ...widthStyle, "--motion-drawer-sign": drawerSign },
|
|
6334
6416
|
role: "dialog",
|
|
6335
6417
|
"aria-modal": "true",
|
|
6418
|
+
onAnimationEnd,
|
|
6336
6419
|
...title && { "aria-labelledby": "drawer-title" },
|
|
6337
6420
|
children: [
|
|
6338
6421
|
(title || showCloseButton) && /* @__PURE__ */ jsxs(
|
|
@@ -6371,31 +6454,7 @@ var init_Drawer = __esm({
|
|
|
6371
6454
|
)
|
|
6372
6455
|
]
|
|
6373
6456
|
}
|
|
6374
|
-
)
|
|
6375
|
-
/* @__PURE__ */ jsx("style", { children: `
|
|
6376
|
-
@keyframes slide-in-right {
|
|
6377
|
-
from {
|
|
6378
|
-
transform: translateX(100%);
|
|
6379
|
-
}
|
|
6380
|
-
to {
|
|
6381
|
-
transform: translateX(0);
|
|
6382
|
-
}
|
|
6383
|
-
}
|
|
6384
|
-
@keyframes slide-in-left {
|
|
6385
|
-
from {
|
|
6386
|
-
transform: translateX(-100%);
|
|
6387
|
-
}
|
|
6388
|
-
to {
|
|
6389
|
-
transform: translateX(0);
|
|
6390
|
-
}
|
|
6391
|
-
}
|
|
6392
|
-
.animate-slide-in-right {
|
|
6393
|
-
animation: slide-in-right 0.3s ease-out;
|
|
6394
|
-
}
|
|
6395
|
-
.animate-slide-in-left {
|
|
6396
|
-
animation: slide-in-left 0.3s ease-out;
|
|
6397
|
-
}
|
|
6398
|
-
` })
|
|
6457
|
+
)
|
|
6399
6458
|
] });
|
|
6400
6459
|
};
|
|
6401
6460
|
Drawer.displayName = "Drawer";
|
|
@@ -6446,14 +6505,23 @@ var init_Toast = __esm({
|
|
|
6446
6505
|
}) => {
|
|
6447
6506
|
const eventBus = useEventBus();
|
|
6448
6507
|
const { t } = useTranslate();
|
|
6449
|
-
const
|
|
6508
|
+
const [leaving, setLeaving] = useState(false);
|
|
6509
|
+
const doRealDismiss = () => {
|
|
6450
6510
|
if (dismissEvent) eventBus.emit(`UI:${dismissEvent}`, {});
|
|
6451
6511
|
onDismiss?.();
|
|
6452
6512
|
};
|
|
6513
|
+
const handleDismiss = () => {
|
|
6514
|
+
if (leaving) return;
|
|
6515
|
+
setLeaving(true);
|
|
6516
|
+
};
|
|
6453
6517
|
const handleAction = () => {
|
|
6454
6518
|
if (actionEvent) eventBus.emit(`UI:${actionEvent}`, {});
|
|
6455
6519
|
onAction?.();
|
|
6456
6520
|
};
|
|
6521
|
+
const handleAnimEnd = (e) => {
|
|
6522
|
+
if (e.target !== e.currentTarget) return;
|
|
6523
|
+
if (leaving) doRealDismiss();
|
|
6524
|
+
};
|
|
6457
6525
|
useEffect(() => {
|
|
6458
6526
|
if (duration <= 0 || !onDismiss && !dismissEvent) {
|
|
6459
6527
|
return;
|
|
@@ -6472,10 +6540,12 @@ var init_Toast = __esm({
|
|
|
6472
6540
|
// edge. `max-w-[calc(100vw-2rem)]` clamps to viewport too.
|
|
6473
6541
|
"border-l-4 p-4 shadow-elevation-toast min-w-0 sm:min-w-[300px] max-w-md max-w-[calc(100vw-2rem)]",
|
|
6474
6542
|
"rounded-sm",
|
|
6543
|
+
leaving ? "animate-toast-out" : "animate-toast-in",
|
|
6475
6544
|
variantClasses[variant],
|
|
6476
6545
|
className
|
|
6477
6546
|
),
|
|
6478
6547
|
role: "alert",
|
|
6548
|
+
onAnimationEnd: handleAnimEnd,
|
|
6479
6549
|
children: /* @__PURE__ */ jsxs(Box, { className: "flex items-start gap-3", children: [
|
|
6480
6550
|
/* @__PURE__ */ jsx(Box, { className: "flex-shrink-0 mt-0.5", children: /* @__PURE__ */ jsx(
|
|
6481
6551
|
Icon,
|
|
@@ -6591,7 +6661,7 @@ var init_ErrorBoundary = __esm({
|
|
|
6591
6661
|
}
|
|
6592
6662
|
);
|
|
6593
6663
|
};
|
|
6594
|
-
ErrorBoundary = class extends
|
|
6664
|
+
ErrorBoundary = class extends React74__default.Component {
|
|
6595
6665
|
constructor(props) {
|
|
6596
6666
|
super(props);
|
|
6597
6667
|
__publicField(this, "reset", () => {
|
|
@@ -6872,7 +6942,7 @@ var init_Container = __esm({
|
|
|
6872
6942
|
as: Component = "div"
|
|
6873
6943
|
}) => {
|
|
6874
6944
|
const resolvedSize = maxWidth ?? size ?? "lg";
|
|
6875
|
-
return
|
|
6945
|
+
return React74__default.createElement(
|
|
6876
6946
|
Component,
|
|
6877
6947
|
{
|
|
6878
6948
|
className: cn(
|
|
@@ -10095,7 +10165,7 @@ var init_CodeBlock = __esm({
|
|
|
10095
10165
|
DIFF_STYLE_FALLBACK = { bg: "", prefix: " ", text: "text-foreground" };
|
|
10096
10166
|
LINE_PROPS_FN = (n) => ({ "data-line": String(n - 1) });
|
|
10097
10167
|
HIDDEN_LINE_NUMBERS = { display: "none" };
|
|
10098
|
-
CodeBlock =
|
|
10168
|
+
CodeBlock = React74__default.memo(
|
|
10099
10169
|
({
|
|
10100
10170
|
code: rawCode,
|
|
10101
10171
|
language = "text",
|
|
@@ -10682,7 +10752,7 @@ var init_MarkdownContent = __esm({
|
|
|
10682
10752
|
init_Box();
|
|
10683
10753
|
init_CodeBlock();
|
|
10684
10754
|
init_cn();
|
|
10685
|
-
MarkdownContent =
|
|
10755
|
+
MarkdownContent = React74__default.memo(
|
|
10686
10756
|
({ content, direction = "ltr", className }) => {
|
|
10687
10757
|
const { t: _t } = useTranslate();
|
|
10688
10758
|
const safeContent = typeof content === "string" ? content : String(content ?? "");
|
|
@@ -11645,7 +11715,7 @@ var init_StateMachineView = __esm({
|
|
|
11645
11715
|
Box,
|
|
11646
11716
|
{
|
|
11647
11717
|
className: cn(
|
|
11648
|
-
"fixed z-50 animate-in fade-in-0 zoom-in-95 duration-
|
|
11718
|
+
"fixed z-50 animate-in fade-in-0 zoom-in-95 duration-fast",
|
|
11649
11719
|
tooltip.pinned ? "pointer-events-auto" : "pointer-events-none"
|
|
11650
11720
|
),
|
|
11651
11721
|
style: {
|
|
@@ -12009,7 +12079,7 @@ var init_StateMachineView = __esm({
|
|
|
12009
12079
|
style: { top: title ? 30 : 0 },
|
|
12010
12080
|
children: [
|
|
12011
12081
|
entity && /* @__PURE__ */ jsx(EntityBox, { entity, config }),
|
|
12012
|
-
states.map((state) => renderStateNode ? /* @__PURE__ */ jsx(
|
|
12082
|
+
states.map((state) => renderStateNode ? /* @__PURE__ */ jsx(React74__default.Fragment, { children: renderStateNode(state, config) }, state.id) : /* @__PURE__ */ jsx(
|
|
12013
12083
|
StateNode,
|
|
12014
12084
|
{
|
|
12015
12085
|
state,
|
|
@@ -14048,6 +14118,129 @@ var init_Breadcrumb = __esm({
|
|
|
14048
14118
|
Breadcrumb.displayName = "Breadcrumb";
|
|
14049
14119
|
}
|
|
14050
14120
|
});
|
|
14121
|
+
function useSafeEventBus2() {
|
|
14122
|
+
try {
|
|
14123
|
+
return useEventBus();
|
|
14124
|
+
} catch {
|
|
14125
|
+
return { emit: () => {
|
|
14126
|
+
}, on: () => () => {
|
|
14127
|
+
}, once: () => {
|
|
14128
|
+
} };
|
|
14129
|
+
}
|
|
14130
|
+
}
|
|
14131
|
+
var log5, lookStyles4, ButtonGroup;
|
|
14132
|
+
var init_ButtonGroup = __esm({
|
|
14133
|
+
"components/core/molecules/ButtonGroup.tsx"() {
|
|
14134
|
+
"use client";
|
|
14135
|
+
init_cn();
|
|
14136
|
+
init_atoms();
|
|
14137
|
+
init_useEventBus();
|
|
14138
|
+
log5 = createLogger("almadar:ui:button-group");
|
|
14139
|
+
lookStyles4 = {
|
|
14140
|
+
"right-aligned-buttons": "",
|
|
14141
|
+
"floating-bar": "fixed bottom-section left-1/2 -translate-x-1/2 shadow-elevation-toast bg-card p-card-sm rounded-container",
|
|
14142
|
+
"inline-row": "gap-2 inline-flex",
|
|
14143
|
+
"dropdown-menu": "[&>button:not(:first-child)]:hidden",
|
|
14144
|
+
"command-palette-trigger": "[&>button:not(:first-child)]:hidden"
|
|
14145
|
+
};
|
|
14146
|
+
ButtonGroup = ({
|
|
14147
|
+
children,
|
|
14148
|
+
primary,
|
|
14149
|
+
secondary,
|
|
14150
|
+
variant = "default",
|
|
14151
|
+
orientation = "horizontal",
|
|
14152
|
+
className,
|
|
14153
|
+
// Filter-group pattern props (entity and filters are used for schema-driven filtering)
|
|
14154
|
+
entity: _entity,
|
|
14155
|
+
filters,
|
|
14156
|
+
look = "right-aligned-buttons"
|
|
14157
|
+
}) => {
|
|
14158
|
+
const eventBus = useSafeEventBus2();
|
|
14159
|
+
const variantClasses2 = {
|
|
14160
|
+
default: "gap-0",
|
|
14161
|
+
segmented: "gap-0 [&>button]:rounded-none [&>button:first-child]:rounded-l-lg [&>button:last-child]:rounded-r-lg [&>button:not(:first-child)]:border-l-0",
|
|
14162
|
+
toggle: "gap-0 [&>button]:rounded-none [&>button:first-child]:rounded-l-lg [&>button:last-child]:rounded-r-lg [&>button:not(:first-child)]:border-l-0"
|
|
14163
|
+
};
|
|
14164
|
+
const orientationClasses = {
|
|
14165
|
+
horizontal: "flex-row",
|
|
14166
|
+
vertical: "flex-col [&>button:first-child]:rounded-t-lg [&>button:last-child]:rounded-b-lg [&>button:not(:first-child)]:border-t-0 [&>button:not(:first-child)]:border-l"
|
|
14167
|
+
};
|
|
14168
|
+
const handleActionClick = (action) => {
|
|
14169
|
+
if (action.event) {
|
|
14170
|
+
eventBus.emit("UI:DISPATCH", { event: action.event });
|
|
14171
|
+
}
|
|
14172
|
+
if (action.navigatesTo) {
|
|
14173
|
+
eventBus.emit("UI:NAVIGATE", { url: action.navigatesTo });
|
|
14174
|
+
}
|
|
14175
|
+
};
|
|
14176
|
+
const renderFormActions = () => {
|
|
14177
|
+
const buttons = [];
|
|
14178
|
+
if (secondary) {
|
|
14179
|
+
secondary.forEach((action, index) => {
|
|
14180
|
+
buttons.push(
|
|
14181
|
+
/* @__PURE__ */ jsx(
|
|
14182
|
+
Button,
|
|
14183
|
+
{
|
|
14184
|
+
type: action.actionType === "submit" ? "submit" : "button",
|
|
14185
|
+
variant: action.variant || "ghost",
|
|
14186
|
+
onClick: () => handleActionClick(action),
|
|
14187
|
+
children: action.label
|
|
14188
|
+
},
|
|
14189
|
+
`secondary-${index}`
|
|
14190
|
+
)
|
|
14191
|
+
);
|
|
14192
|
+
});
|
|
14193
|
+
}
|
|
14194
|
+
if (primary) {
|
|
14195
|
+
const isSubmit = primary.actionType === "submit";
|
|
14196
|
+
buttons.push(
|
|
14197
|
+
/* @__PURE__ */ jsx(
|
|
14198
|
+
Button,
|
|
14199
|
+
{
|
|
14200
|
+
type: isSubmit ? "submit" : "button",
|
|
14201
|
+
variant: primary.variant || "primary",
|
|
14202
|
+
onClick: () => handleActionClick(primary),
|
|
14203
|
+
"data-testid": isSubmit ? "form-submit" : void 0,
|
|
14204
|
+
children: primary.label
|
|
14205
|
+
},
|
|
14206
|
+
"primary"
|
|
14207
|
+
)
|
|
14208
|
+
);
|
|
14209
|
+
}
|
|
14210
|
+
return buttons;
|
|
14211
|
+
};
|
|
14212
|
+
const renderFilters = () => {
|
|
14213
|
+
if (!filters || filters.length === 0) return null;
|
|
14214
|
+
return filters.map((filter, index) => /* @__PURE__ */ jsx(
|
|
14215
|
+
Button,
|
|
14216
|
+
{
|
|
14217
|
+
variant: "ghost",
|
|
14218
|
+
onClick: () => {
|
|
14219
|
+
log5.debug("Filter clicked", { field: filter.field });
|
|
14220
|
+
},
|
|
14221
|
+
children: filter.label
|
|
14222
|
+
},
|
|
14223
|
+
`filter-${filter.field}-${index}`
|
|
14224
|
+
));
|
|
14225
|
+
};
|
|
14226
|
+
return /* @__PURE__ */ jsx(
|
|
14227
|
+
"div",
|
|
14228
|
+
{
|
|
14229
|
+
className: cn(
|
|
14230
|
+
"inline-flex gap-2",
|
|
14231
|
+
variantClasses2[variant],
|
|
14232
|
+
orientationClasses[orientation],
|
|
14233
|
+
lookStyles4[look],
|
|
14234
|
+
className
|
|
14235
|
+
),
|
|
14236
|
+
role: "group",
|
|
14237
|
+
children: children || renderFilters() || renderFormActions()
|
|
14238
|
+
}
|
|
14239
|
+
);
|
|
14240
|
+
};
|
|
14241
|
+
ButtonGroup.displayName = "ButtonGroup";
|
|
14242
|
+
}
|
|
14243
|
+
});
|
|
14051
14244
|
function useSwipeGesture(callbacks, options = {}) {
|
|
14052
14245
|
const { threshold = 50, velocityThreshold = 0.3, preventDefault = false } = options;
|
|
14053
14246
|
const startX = useRef(0);
|
|
@@ -14418,8 +14611,8 @@ function MiniMap({
|
|
|
14418
14611
|
tileAssets,
|
|
14419
14612
|
unitAssets
|
|
14420
14613
|
}) {
|
|
14421
|
-
const canvasRef =
|
|
14422
|
-
const imgCacheRef =
|
|
14614
|
+
const canvasRef = React74.useRef(null);
|
|
14615
|
+
const imgCacheRef = React74.useRef(/* @__PURE__ */ new Map());
|
|
14423
14616
|
function loadImg(url) {
|
|
14424
14617
|
const cached = imgCacheRef.current.get(url);
|
|
14425
14618
|
if (cached) return cached.complete ? cached : null;
|
|
@@ -14434,7 +14627,7 @@ function MiniMap({
|
|
|
14434
14627
|
imgCacheRef.current.set(url, img);
|
|
14435
14628
|
return null;
|
|
14436
14629
|
}
|
|
14437
|
-
|
|
14630
|
+
React74.useEffect(() => {
|
|
14438
14631
|
const canvas = canvasRef.current;
|
|
14439
14632
|
if (!canvas) return;
|
|
14440
14633
|
const ctx = canvas.getContext("2d");
|
|
@@ -14609,7 +14802,7 @@ function getTraitSnapshots() {
|
|
|
14609
14802
|
try {
|
|
14610
14803
|
snapshots.push(getter());
|
|
14611
14804
|
} catch (err) {
|
|
14612
|
-
|
|
14805
|
+
log6.error("traitSnapshot getter failed", { trait: traitName, err: String(err) });
|
|
14613
14806
|
}
|
|
14614
14807
|
}
|
|
14615
14808
|
return snapshots;
|
|
@@ -14694,10 +14887,10 @@ function updateAssetStatus(url, status) {
|
|
|
14694
14887
|
window.__orbitalVerification.assetStatus[url] = status;
|
|
14695
14888
|
}
|
|
14696
14889
|
}
|
|
14697
|
-
var
|
|
14890
|
+
var log6;
|
|
14698
14891
|
var init_verificationRegistry = __esm({
|
|
14699
14892
|
"lib/verificationRegistry.ts"() {
|
|
14700
|
-
|
|
14893
|
+
log6 = createLogger("almadar:bridge");
|
|
14701
14894
|
exposeOnWindow();
|
|
14702
14895
|
}
|
|
14703
14896
|
});
|
|
@@ -16446,7 +16639,7 @@ var init_CardGrid = __esm({
|
|
|
16446
16639
|
CardGrid.displayName = "CardGrid";
|
|
16447
16640
|
}
|
|
16448
16641
|
});
|
|
16449
|
-
function
|
|
16642
|
+
function useSafeEventBus3() {
|
|
16450
16643
|
try {
|
|
16451
16644
|
return useEventBus();
|
|
16452
16645
|
} catch {
|
|
@@ -16482,7 +16675,7 @@ var init_Carousel = __esm({
|
|
|
16482
16675
|
const [activeIndex, setActiveIndex] = useState(0);
|
|
16483
16676
|
const scrollRef = useRef(null);
|
|
16484
16677
|
const autoPlayRef = useRef(null);
|
|
16485
|
-
const eventBus =
|
|
16678
|
+
const eventBus = useSafeEventBus3();
|
|
16486
16679
|
const { t } = useTranslate();
|
|
16487
16680
|
const safeItems = items ?? [];
|
|
16488
16681
|
const totalSlides = safeItems.length;
|
|
@@ -16844,7 +17037,7 @@ var init_Chart = __esm({
|
|
|
16844
17037
|
return /* @__PURE__ */ jsx(
|
|
16845
17038
|
Box,
|
|
16846
17039
|
{
|
|
16847
|
-
className: "h-full rounded-r-sm transition-all duration-
|
|
17040
|
+
className: "h-full rounded-r-sm transition-all duration-slow ease-standard min-w-[2px] cursor-pointer hover:opacity-80",
|
|
16848
17041
|
style: {
|
|
16849
17042
|
width: `${ratio}%`,
|
|
16850
17043
|
backgroundColor: color
|
|
@@ -16900,7 +17093,7 @@ var init_Chart = __esm({
|
|
|
16900
17093
|
Box,
|
|
16901
17094
|
{
|
|
16902
17095
|
className: cn(
|
|
16903
|
-
"rounded-t-sm transition-all duration-
|
|
17096
|
+
"rounded-t-sm transition-all duration-slow ease-standard min-h-[4px] cursor-pointer hover:opacity-80",
|
|
16904
17097
|
histogram ? "flex-1 mx-0" : "flex-1"
|
|
16905
17098
|
),
|
|
16906
17099
|
style: {
|
|
@@ -16950,7 +17143,7 @@ var init_Chart = __esm({
|
|
|
16950
17143
|
return /* @__PURE__ */ jsx(
|
|
16951
17144
|
Box,
|
|
16952
17145
|
{
|
|
16953
|
-
className: "w-full transition-all duration-
|
|
17146
|
+
className: "w-full transition-all duration-slow ease-standard cursor-pointer hover:opacity-80",
|
|
16954
17147
|
style: {
|
|
16955
17148
|
height: `${ratio}%`,
|
|
16956
17149
|
backgroundColor: color
|
|
@@ -17040,7 +17233,7 @@ var init_Chart = __esm({
|
|
|
17040
17233
|
fill: seg.color,
|
|
17041
17234
|
stroke: "var(--color-card)",
|
|
17042
17235
|
strokeWidth: "2",
|
|
17043
|
-
className: "transition-opacity duration-
|
|
17236
|
+
className: "transition-opacity duration-fast hover:opacity-80 cursor-pointer",
|
|
17044
17237
|
onClick: () => onPointClick?.(
|
|
17045
17238
|
{ label: seg.label, value: seg.value, color: seg.color },
|
|
17046
17239
|
"default"
|
|
@@ -18294,9 +18487,9 @@ function ControlButton({
|
|
|
18294
18487
|
className
|
|
18295
18488
|
}) {
|
|
18296
18489
|
const eventBus = useEventBus();
|
|
18297
|
-
const [isPressed, setIsPressed] =
|
|
18490
|
+
const [isPressed, setIsPressed] = React74.useState(false);
|
|
18298
18491
|
const actualPressed = pressed ?? isPressed;
|
|
18299
|
-
const handlePointerDown =
|
|
18492
|
+
const handlePointerDown = React74.useCallback(
|
|
18300
18493
|
(e) => {
|
|
18301
18494
|
e.preventDefault();
|
|
18302
18495
|
if (disabled) return;
|
|
@@ -18306,7 +18499,7 @@ function ControlButton({
|
|
|
18306
18499
|
},
|
|
18307
18500
|
[disabled, pressEvent, eventBus, onPress]
|
|
18308
18501
|
);
|
|
18309
|
-
const handlePointerUp =
|
|
18502
|
+
const handlePointerUp = React74.useCallback(
|
|
18310
18503
|
(e) => {
|
|
18311
18504
|
e.preventDefault();
|
|
18312
18505
|
if (disabled) return;
|
|
@@ -18316,7 +18509,7 @@ function ControlButton({
|
|
|
18316
18509
|
},
|
|
18317
18510
|
[disabled, releaseEvent, eventBus, onRelease]
|
|
18318
18511
|
);
|
|
18319
|
-
const handlePointerLeave =
|
|
18512
|
+
const handlePointerLeave = React74.useCallback(
|
|
18320
18513
|
(e) => {
|
|
18321
18514
|
if (isPressed) {
|
|
18322
18515
|
setIsPressed(false);
|
|
@@ -18404,8 +18597,8 @@ function ControlGrid({
|
|
|
18404
18597
|
className
|
|
18405
18598
|
}) {
|
|
18406
18599
|
const eventBus = useEventBus();
|
|
18407
|
-
const [active, setActive] =
|
|
18408
|
-
const handlePress =
|
|
18600
|
+
const [active, setActive] = React74.useState(/* @__PURE__ */ new Set());
|
|
18601
|
+
const handlePress = React74.useCallback(
|
|
18409
18602
|
(id) => {
|
|
18410
18603
|
setActive((prev) => new Set(prev).add(id));
|
|
18411
18604
|
if (actionEvent) eventBus.emit(`UI:${actionEvent}`, { id, pressed: true });
|
|
@@ -18419,7 +18612,7 @@ function ControlGrid({
|
|
|
18419
18612
|
},
|
|
18420
18613
|
[kind, actionEvent, directionEvent, directionEvents, eventBus, onAction, onDirection]
|
|
18421
18614
|
);
|
|
18422
|
-
const handleRelease =
|
|
18615
|
+
const handleRelease = React74.useCallback(
|
|
18423
18616
|
(id) => {
|
|
18424
18617
|
setActive((prev) => {
|
|
18425
18618
|
const next = new Set(prev);
|
|
@@ -19626,8 +19819,8 @@ var init_Menu = __esm({
|
|
|
19626
19819
|
"bottom-end": "bottom-start"
|
|
19627
19820
|
};
|
|
19628
19821
|
const effectivePosition = direction === "rtl" ? rtlMirror[position] ?? position : position;
|
|
19629
|
-
const triggerChild =
|
|
19630
|
-
const triggerElement =
|
|
19822
|
+
const triggerChild = React74__default.isValidElement(trigger) ? trigger : /* @__PURE__ */ jsx(Typography, { variant: "small", as: "span", children: trigger });
|
|
19823
|
+
const triggerElement = React74__default.cloneElement(
|
|
19631
19824
|
triggerChild,
|
|
19632
19825
|
{
|
|
19633
19826
|
ref: triggerRef,
|
|
@@ -19722,14 +19915,14 @@ function useDataDnd(args) {
|
|
|
19722
19915
|
const isZone = Boolean(dragGroup || accepts || sortable);
|
|
19723
19916
|
const enabled = isZone || Boolean(dndRoot);
|
|
19724
19917
|
const eventBus = useEventBus();
|
|
19725
|
-
const parentRoot =
|
|
19918
|
+
const parentRoot = React74__default.useContext(RootCtx);
|
|
19726
19919
|
const isRoot = enabled && parentRoot === null;
|
|
19727
|
-
const zoneId =
|
|
19920
|
+
const zoneId = React74__default.useId();
|
|
19728
19921
|
const ownGroup = dragGroup ?? accepts ?? zoneId;
|
|
19729
|
-
const [optimisticOrders, setOptimisticOrders] =
|
|
19730
|
-
const optimisticOrdersRef =
|
|
19922
|
+
const [optimisticOrders, setOptimisticOrders] = React74__default.useState(() => /* @__PURE__ */ new Map());
|
|
19923
|
+
const optimisticOrdersRef = React74__default.useRef(optimisticOrders);
|
|
19731
19924
|
optimisticOrdersRef.current = optimisticOrders;
|
|
19732
|
-
const clearOptimisticOrder =
|
|
19925
|
+
const clearOptimisticOrder = React74__default.useCallback((group) => {
|
|
19733
19926
|
setOptimisticOrders((prev) => {
|
|
19734
19927
|
if (!prev.has(group)) return prev;
|
|
19735
19928
|
const next = new Map(prev);
|
|
@@ -19754,7 +19947,7 @@ function useDataDnd(args) {
|
|
|
19754
19947
|
const raw = it[dndItemIdField];
|
|
19755
19948
|
return raw != null ? String(raw) : `__idx_${idx}`;
|
|
19756
19949
|
}).join("|");
|
|
19757
|
-
const itemIds =
|
|
19950
|
+
const itemIds = React74__default.useMemo(
|
|
19758
19951
|
() => orderedItems.map((it, idx) => {
|
|
19759
19952
|
const raw = it[dndItemIdField];
|
|
19760
19953
|
return raw != null ? String(raw) : `__idx_${idx}`;
|
|
@@ -19765,7 +19958,7 @@ function useDataDnd(args) {
|
|
|
19765
19958
|
const raw = it[dndItemIdField];
|
|
19766
19959
|
return raw != null ? String(raw) : `__${idx}`;
|
|
19767
19960
|
}).join("|");
|
|
19768
|
-
|
|
19961
|
+
React74__default.useEffect(() => {
|
|
19769
19962
|
const root = isRoot ? null : parentRoot;
|
|
19770
19963
|
if (root) {
|
|
19771
19964
|
root.clearOptimisticOrder(ownGroup);
|
|
@@ -19773,20 +19966,20 @@ function useDataDnd(args) {
|
|
|
19773
19966
|
clearOptimisticOrder(ownGroup);
|
|
19774
19967
|
}
|
|
19775
19968
|
}, [itemsContentSig, ownGroup]);
|
|
19776
|
-
const zonesRef =
|
|
19777
|
-
const registerZone =
|
|
19969
|
+
const zonesRef = React74__default.useRef(/* @__PURE__ */ new Map());
|
|
19970
|
+
const registerZone = React74__default.useCallback((zoneId2, meta2) => {
|
|
19778
19971
|
zonesRef.current.set(zoneId2, meta2);
|
|
19779
19972
|
}, []);
|
|
19780
|
-
const unregisterZone =
|
|
19973
|
+
const unregisterZone = React74__default.useCallback((zoneId2) => {
|
|
19781
19974
|
zonesRef.current.delete(zoneId2);
|
|
19782
19975
|
}, []);
|
|
19783
|
-
const [activeDrag, setActiveDrag] =
|
|
19784
|
-
const [overZoneGroup, setOverZoneGroup] =
|
|
19785
|
-
const meta =
|
|
19976
|
+
const [activeDrag, setActiveDrag] = React74__default.useState(null);
|
|
19977
|
+
const [overZoneGroup, setOverZoneGroup] = React74__default.useState(null);
|
|
19978
|
+
const meta = React74__default.useMemo(
|
|
19786
19979
|
() => ({ group: ownGroup, dropEvent, reorderEvent, positionEvent, itemIds, rawItems: items, idField: dndItemIdField }),
|
|
19787
19980
|
[ownGroup, dropEvent, reorderEvent, positionEvent, itemIds, items, dndItemIdField]
|
|
19788
19981
|
);
|
|
19789
|
-
|
|
19982
|
+
React74__default.useEffect(() => {
|
|
19790
19983
|
const target = isRoot ? null : parentRoot;
|
|
19791
19984
|
if (!target) {
|
|
19792
19985
|
zonesRef.current.set(zoneId, meta);
|
|
@@ -19805,7 +19998,7 @@ function useDataDnd(args) {
|
|
|
19805
19998
|
}, [parentRoot, isRoot, zoneId, meta]);
|
|
19806
19999
|
const sensors = useAlmadarDndSensors(true);
|
|
19807
20000
|
const collisionDetection = almadarDndCollisionDetection;
|
|
19808
|
-
const findZoneByItem =
|
|
20001
|
+
const findZoneByItem = React74__default.useCallback(
|
|
19809
20002
|
(id) => {
|
|
19810
20003
|
for (const z of zonesRef.current.values()) {
|
|
19811
20004
|
if (z.itemIds.includes(id)) return z;
|
|
@@ -19814,7 +20007,7 @@ function useDataDnd(args) {
|
|
|
19814
20007
|
},
|
|
19815
20008
|
[]
|
|
19816
20009
|
);
|
|
19817
|
-
|
|
20010
|
+
React74__default.useCallback(
|
|
19818
20011
|
(group) => {
|
|
19819
20012
|
for (const z of zonesRef.current.values()) {
|
|
19820
20013
|
if (z.group === group) return z;
|
|
@@ -19823,7 +20016,7 @@ function useDataDnd(args) {
|
|
|
19823
20016
|
},
|
|
19824
20017
|
[]
|
|
19825
20018
|
);
|
|
19826
|
-
const handleDragEnd =
|
|
20019
|
+
const handleDragEnd = React74__default.useCallback(
|
|
19827
20020
|
(event) => {
|
|
19828
20021
|
const { active, over } = event;
|
|
19829
20022
|
const activeIdStr = String(active.id);
|
|
@@ -19914,8 +20107,8 @@ function useDataDnd(args) {
|
|
|
19914
20107
|
},
|
|
19915
20108
|
[eventBus]
|
|
19916
20109
|
);
|
|
19917
|
-
const sortableData =
|
|
19918
|
-
const SortableItem =
|
|
20110
|
+
const sortableData = React74__default.useMemo(() => ({ dndGroup: ownGroup }), [ownGroup]);
|
|
20111
|
+
const SortableItem = React74__default.useCallback(
|
|
19919
20112
|
({ id, children }) => {
|
|
19920
20113
|
const {
|
|
19921
20114
|
attributes,
|
|
@@ -19955,7 +20148,7 @@ function useDataDnd(args) {
|
|
|
19955
20148
|
id: droppableId,
|
|
19956
20149
|
data: sortableData
|
|
19957
20150
|
});
|
|
19958
|
-
const ctx =
|
|
20151
|
+
const ctx = React74__default.useContext(RootCtx);
|
|
19959
20152
|
const activeDrag2 = ctx?.activeDrag ?? null;
|
|
19960
20153
|
const overZoneGroup2 = ctx?.overZoneGroup ?? null;
|
|
19961
20154
|
const isThisZoneOver = overZoneGroup2 === ownGroup;
|
|
@@ -19970,7 +20163,7 @@ function useDataDnd(args) {
|
|
|
19970
20163
|
showForeignPlaceholder,
|
|
19971
20164
|
ctxAvailable: ctx != null
|
|
19972
20165
|
});
|
|
19973
|
-
|
|
20166
|
+
React74__default.useEffect(() => {
|
|
19974
20167
|
dndLog.info("dropzone:isOver:change", { droppableId, group: ownGroup, isOver, isThisZoneOver, showForeignPlaceholder, activeDragSourceGroup: activeDrag2?.sourceGroup ?? null });
|
|
19975
20168
|
}, [droppableId, isOver, isThisZoneOver, showForeignPlaceholder]);
|
|
19976
20169
|
return /* @__PURE__ */ jsx(
|
|
@@ -19984,11 +20177,11 @@ function useDataDnd(args) {
|
|
|
19984
20177
|
}
|
|
19985
20178
|
);
|
|
19986
20179
|
};
|
|
19987
|
-
const rootContextValue =
|
|
20180
|
+
const rootContextValue = React74__default.useMemo(
|
|
19988
20181
|
() => ({ registerZone, unregisterZone, activeDrag, overZoneGroup, optimisticOrders, clearOptimisticOrder }),
|
|
19989
20182
|
[registerZone, unregisterZone, activeDrag, overZoneGroup, optimisticOrders, clearOptimisticOrder]
|
|
19990
20183
|
);
|
|
19991
|
-
const handleDragStart =
|
|
20184
|
+
const handleDragStart = React74__default.useCallback((event) => {
|
|
19992
20185
|
const sourceZone = findZoneByItem(event.active.id);
|
|
19993
20186
|
const rect = event.active.rect.current.initial;
|
|
19994
20187
|
const height = rect?.height && rect.height > 0 ? rect.height : 64;
|
|
@@ -20007,7 +20200,7 @@ function useDataDnd(args) {
|
|
|
20007
20200
|
isRoot
|
|
20008
20201
|
});
|
|
20009
20202
|
}, [findZoneByItem, isRoot, zoneId]);
|
|
20010
|
-
const handleDragOver =
|
|
20203
|
+
const handleDragOver = React74__default.useCallback((event) => {
|
|
20011
20204
|
const { active, over } = event;
|
|
20012
20205
|
const overData = over?.data?.current;
|
|
20013
20206
|
const overGroup = overData?.dndGroup ?? null;
|
|
@@ -20077,7 +20270,7 @@ function useDataDnd(args) {
|
|
|
20077
20270
|
return next;
|
|
20078
20271
|
});
|
|
20079
20272
|
}, []);
|
|
20080
|
-
const handleDragCancel =
|
|
20273
|
+
const handleDragCancel = React74__default.useCallback((event) => {
|
|
20081
20274
|
setActiveDrag(null);
|
|
20082
20275
|
setOverZoneGroup(null);
|
|
20083
20276
|
dndLog.warn("dragCancel", {
|
|
@@ -20085,12 +20278,12 @@ function useDataDnd(args) {
|
|
|
20085
20278
|
reason: "dnd-kit cancelled the drag (escape key, pointer interrupted, or external)"
|
|
20086
20279
|
});
|
|
20087
20280
|
}, []);
|
|
20088
|
-
const handleDragEndWithCleanup =
|
|
20281
|
+
const handleDragEndWithCleanup = React74__default.useCallback((event) => {
|
|
20089
20282
|
handleDragEnd(event);
|
|
20090
20283
|
setActiveDrag(null);
|
|
20091
20284
|
setOverZoneGroup(null);
|
|
20092
20285
|
}, [handleDragEnd]);
|
|
20093
|
-
const wrapContainer =
|
|
20286
|
+
const wrapContainer = React74__default.useCallback(
|
|
20094
20287
|
(children) => {
|
|
20095
20288
|
if (!enabled) return children;
|
|
20096
20289
|
const strategy = layout === "grid" ? rectSortingStrategy : verticalListSortingStrategy;
|
|
@@ -20144,7 +20337,7 @@ var init_useDataDnd = __esm({
|
|
|
20144
20337
|
init_useAlmadarDndCollision();
|
|
20145
20338
|
init_Box();
|
|
20146
20339
|
dndLog = createLogger("almadar:ui:dnd");
|
|
20147
|
-
RootCtx =
|
|
20340
|
+
RootCtx = React74__default.createContext(null);
|
|
20148
20341
|
}
|
|
20149
20342
|
});
|
|
20150
20343
|
function renderIconInput(icon, props) {
|
|
@@ -20341,7 +20534,7 @@ function DataGrid({
|
|
|
20341
20534
|
/* @__PURE__ */ jsx(
|
|
20342
20535
|
Box,
|
|
20343
20536
|
{
|
|
20344
|
-
className: cn("grid", gapStyles5[gap], scrollX ? "grid-flow-col overflow-x-auto" : colsClass,
|
|
20537
|
+
className: cn("grid", gapStyles5[gap], scrollX ? "grid-flow-col overflow-x-auto" : colsClass, lookStyles5[look], className),
|
|
20345
20538
|
style: scrollX ? { gridAutoFlow: "column", gridAutoColumns: `minmax(${minCardWidth}px, 1fr)` } : gridTemplateColumns ? { gridTemplateColumns } : void 0,
|
|
20346
20539
|
children: data.map((item, index) => {
|
|
20347
20540
|
const itemData = item;
|
|
@@ -20536,7 +20729,7 @@ function DataGrid({
|
|
|
20536
20729
|
] })
|
|
20537
20730
|
);
|
|
20538
20731
|
}
|
|
20539
|
-
var dataGridLog, BADGE_VARIANTS, gapStyles5,
|
|
20732
|
+
var dataGridLog, BADGE_VARIANTS, gapStyles5, lookStyles5;
|
|
20540
20733
|
var init_DataGrid = __esm({
|
|
20541
20734
|
"components/core/molecules/DataGrid.tsx"() {
|
|
20542
20735
|
"use client";
|
|
@@ -20571,7 +20764,7 @@ var init_DataGrid = __esm({
|
|
|
20571
20764
|
lg: "gap-6",
|
|
20572
20765
|
xl: "gap-8"
|
|
20573
20766
|
};
|
|
20574
|
-
|
|
20767
|
+
lookStyles5 = {
|
|
20575
20768
|
dense: "gap-2 [&>*]:p-card-sm",
|
|
20576
20769
|
spacious: "gap-8 [&>*]:p-card-lg",
|
|
20577
20770
|
striped: "[&>*:nth-child(even)]:bg-muted/30",
|
|
@@ -20671,7 +20864,7 @@ function DataList({
|
|
|
20671
20864
|
}) {
|
|
20672
20865
|
const eventBus = useEventBus();
|
|
20673
20866
|
const { t } = useTranslate();
|
|
20674
|
-
const [visibleCount, setVisibleCount] =
|
|
20867
|
+
const [visibleCount, setVisibleCount] = React74__default.useState(pageSize || Infinity);
|
|
20675
20868
|
const fieldDefs = fields ?? columns ?? [];
|
|
20676
20869
|
const allDataRaw = Array.isArray(entity) ? entity : entity ? [entity] : [];
|
|
20677
20870
|
const dnd = useDataDnd({
|
|
@@ -20690,7 +20883,7 @@ function DataList({
|
|
|
20690
20883
|
const data = pageSize > 0 ? allData.slice(0, visibleCount) : allData;
|
|
20691
20884
|
const hasMoreLocal = pageSize > 0 && visibleCount < allData.length;
|
|
20692
20885
|
const hasRenderProp = typeof children === "function";
|
|
20693
|
-
|
|
20886
|
+
React74__default.useEffect(() => {
|
|
20694
20887
|
const renderItemTypeOf = typeof schemaRenderItem;
|
|
20695
20888
|
const childrenTypeOf = typeof children;
|
|
20696
20889
|
if (data.length > 0 && !hasRenderProp) {
|
|
@@ -20794,7 +20987,7 @@ function DataList({
|
|
|
20794
20987
|
const items2 = [...data];
|
|
20795
20988
|
const groups2 = groupBy ? groupData(items2, groupBy) : [{ label: "", items: items2 }];
|
|
20796
20989
|
const contentField = titleField?.name ?? fieldDefs[0]?.name ?? "";
|
|
20797
|
-
return /* @__PURE__ */ jsx(VStack, { gap: "sm", className: cn("py-2", className), children: groups2.map((group, gi) => /* @__PURE__ */ jsxs(
|
|
20990
|
+
return /* @__PURE__ */ jsx(VStack, { gap: "sm", className: cn("py-2", className), children: groups2.map((group, gi) => /* @__PURE__ */ jsxs(React74__default.Fragment, { children: [
|
|
20798
20991
|
group.label && /* @__PURE__ */ jsx(Divider, { label: group.label, className: "my-2" }),
|
|
20799
20992
|
group.items.map((itemData, index) => {
|
|
20800
20993
|
const id = itemData.id || `${gi}-${index}`;
|
|
@@ -20935,7 +21128,7 @@ function DataList({
|
|
|
20935
21128
|
className
|
|
20936
21129
|
),
|
|
20937
21130
|
children: [
|
|
20938
|
-
groups.map((group, gi) => /* @__PURE__ */ jsxs(
|
|
21131
|
+
groups.map((group, gi) => /* @__PURE__ */ jsxs(React74__default.Fragment, { children: [
|
|
20939
21132
|
group.label && /* @__PURE__ */ jsx(Divider, { label: group.label, className: gi > 0 ? "mt-4" : "mt-0" }),
|
|
20940
21133
|
group.items.map(
|
|
20941
21134
|
(itemData, index) => renderItem(itemData, index, gi === groups.length - 1 && index === group.items.length - 1)
|
|
@@ -21042,8 +21235,8 @@ function ScalarControl({
|
|
|
21042
21235
|
}
|
|
21043
21236
|
const numeric = typeof value === "number";
|
|
21044
21237
|
const initial = value === null ? "" : String(value);
|
|
21045
|
-
const [draft, setDraft] =
|
|
21046
|
-
|
|
21238
|
+
const [draft, setDraft] = React74__default.useState(initial);
|
|
21239
|
+
React74__default.useEffect(() => setDraft(initial), [initial]);
|
|
21047
21240
|
const commit = () => {
|
|
21048
21241
|
if (numeric) {
|
|
21049
21242
|
const n = draft.trim() === "" ? 0 : Number(draft);
|
|
@@ -21111,8 +21304,8 @@ function Row({
|
|
|
21111
21304
|
onRemove,
|
|
21112
21305
|
readonly
|
|
21113
21306
|
}) {
|
|
21114
|
-
const [keyDraft, setKeyDraft] =
|
|
21115
|
-
|
|
21307
|
+
const [keyDraft, setKeyDraft] = React74__default.useState(rowKey);
|
|
21308
|
+
React74__default.useEffect(() => setKeyDraft(rowKey), [rowKey]);
|
|
21116
21309
|
const container = isObj(value) || isArr(value);
|
|
21117
21310
|
return /* @__PURE__ */ jsxs(VStack, { gap: "none", className: "group w-max min-w-full", children: [
|
|
21118
21311
|
/* @__PURE__ */ jsxs(HStack, { gap: "xs", align: "center", className: "py-0.5 w-max", children: [
|
|
@@ -21155,7 +21348,7 @@ function ContainerNode({
|
|
|
21155
21348
|
depth,
|
|
21156
21349
|
readonly
|
|
21157
21350
|
}) {
|
|
21158
|
-
const [open, setOpen] =
|
|
21351
|
+
const [open, setOpen] = React74__default.useState(depth < 2);
|
|
21159
21352
|
const array = isArr(value);
|
|
21160
21353
|
const entries = array ? value.map((v, i) => [String(i), v]) : Object.entries(value);
|
|
21161
21354
|
const setObjValue = (key, next) => {
|
|
@@ -21297,7 +21490,7 @@ var init_FormSection = __esm({
|
|
|
21297
21490
|
columns = 1,
|
|
21298
21491
|
className
|
|
21299
21492
|
}) => {
|
|
21300
|
-
const [collapsed, setCollapsed] =
|
|
21493
|
+
const [collapsed, setCollapsed] = React74__default.useState(defaultCollapsed);
|
|
21301
21494
|
const { t } = useTranslate();
|
|
21302
21495
|
const eventBus = useEventBus();
|
|
21303
21496
|
const gridClass = {
|
|
@@ -21305,7 +21498,7 @@ var init_FormSection = __esm({
|
|
|
21305
21498
|
2: "grid-cols-1 md:grid-cols-2",
|
|
21306
21499
|
3: "grid-cols-1 md:grid-cols-2 lg:grid-cols-3"
|
|
21307
21500
|
}[columns];
|
|
21308
|
-
|
|
21501
|
+
React74__default.useCallback(() => {
|
|
21309
21502
|
if (collapsible) {
|
|
21310
21503
|
setCollapsed((prev) => !prev);
|
|
21311
21504
|
eventBus.emit("UI:TOGGLE_COLLAPSE", { collapsed: !collapsed });
|
|
@@ -21713,8 +21906,8 @@ function TextLikeControl({
|
|
|
21713
21906
|
onCommit
|
|
21714
21907
|
}) {
|
|
21715
21908
|
const initial = value === void 0 || value === null ? "" : String(value);
|
|
21716
|
-
const [draft, setDraft] =
|
|
21717
|
-
|
|
21909
|
+
const [draft, setDraft] = React74__default.useState(initial);
|
|
21910
|
+
React74__default.useEffect(() => setDraft(initial), [initial]);
|
|
21718
21911
|
const commit = () => {
|
|
21719
21912
|
if (numeric) {
|
|
21720
21913
|
const n = draft.trim() === "" ? 0 : Number(draft);
|
|
@@ -21899,14 +22092,14 @@ var init_NodeSlotEditor = __esm({
|
|
|
21899
22092
|
isObj2 = (v) => v !== null && v !== void 0 && typeof v === "object" && !Array.isArray(v);
|
|
21900
22093
|
NodeSlotEditor = ({ value, onChange, className }) => {
|
|
21901
22094
|
const { type, props, wasArray } = normalize(value);
|
|
21902
|
-
const patterns =
|
|
22095
|
+
const patterns = React74__default.useMemo(() => {
|
|
21903
22096
|
try {
|
|
21904
22097
|
return [...getKnownPatterns()].sort();
|
|
21905
22098
|
} catch {
|
|
21906
22099
|
return [];
|
|
21907
22100
|
}
|
|
21908
22101
|
}, []);
|
|
21909
|
-
const options =
|
|
22102
|
+
const options = React74__default.useMemo(
|
|
21910
22103
|
() => [{ value: "", label: "\u2014 none \u2014" }, ...patterns.map((p) => ({ value: p, label: p }))],
|
|
21911
22104
|
[patterns]
|
|
21912
22105
|
);
|
|
@@ -21918,7 +22111,7 @@ var init_NodeSlotEditor = __esm({
|
|
|
21918
22111
|
const pattern = { type: nextType, ...nextProps };
|
|
21919
22112
|
onChange(wasArray || value === void 0 ? [pattern] : pattern);
|
|
21920
22113
|
};
|
|
21921
|
-
const schemaEntries =
|
|
22114
|
+
const schemaEntries = React74__default.useMemo(() => {
|
|
21922
22115
|
if (!type) return [];
|
|
21923
22116
|
const def = getPatternDefinition(type);
|
|
21924
22117
|
if (!def?.propsSchema) return [];
|
|
@@ -22120,129 +22313,6 @@ var init_FormField = __esm({
|
|
|
22120
22313
|
FormField.displayName = "FormField";
|
|
22121
22314
|
}
|
|
22122
22315
|
});
|
|
22123
|
-
function useSafeEventBus3() {
|
|
22124
|
-
try {
|
|
22125
|
-
return useEventBus();
|
|
22126
|
-
} catch {
|
|
22127
|
-
return { emit: () => {
|
|
22128
|
-
}, on: () => () => {
|
|
22129
|
-
}, once: () => {
|
|
22130
|
-
} };
|
|
22131
|
-
}
|
|
22132
|
-
}
|
|
22133
|
-
var log6, lookStyles5, ButtonGroup;
|
|
22134
|
-
var init_ButtonGroup = __esm({
|
|
22135
|
-
"components/core/molecules/ButtonGroup.tsx"() {
|
|
22136
|
-
"use client";
|
|
22137
|
-
init_cn();
|
|
22138
|
-
init_atoms();
|
|
22139
|
-
init_useEventBus();
|
|
22140
|
-
log6 = createLogger("almadar:ui:button-group");
|
|
22141
|
-
lookStyles5 = {
|
|
22142
|
-
"right-aligned-buttons": "",
|
|
22143
|
-
"floating-bar": "fixed bottom-section left-1/2 -translate-x-1/2 shadow-elevation-toast bg-card p-card-sm rounded-container",
|
|
22144
|
-
"inline-row": "gap-2 inline-flex",
|
|
22145
|
-
"dropdown-menu": "[&>button:not(:first-child)]:hidden",
|
|
22146
|
-
"command-palette-trigger": "[&>button:not(:first-child)]:hidden"
|
|
22147
|
-
};
|
|
22148
|
-
ButtonGroup = ({
|
|
22149
|
-
children,
|
|
22150
|
-
primary,
|
|
22151
|
-
secondary,
|
|
22152
|
-
variant = "default",
|
|
22153
|
-
orientation = "horizontal",
|
|
22154
|
-
className,
|
|
22155
|
-
// Filter-group pattern props (entity and filters are used for schema-driven filtering)
|
|
22156
|
-
entity: _entity,
|
|
22157
|
-
filters,
|
|
22158
|
-
look = "right-aligned-buttons"
|
|
22159
|
-
}) => {
|
|
22160
|
-
const eventBus = useSafeEventBus3();
|
|
22161
|
-
const variantClasses2 = {
|
|
22162
|
-
default: "gap-0",
|
|
22163
|
-
segmented: "gap-0 [&>button]:rounded-none [&>button:first-child]:rounded-l-lg [&>button:last-child]:rounded-r-lg [&>button:not(:first-child)]:border-l-0",
|
|
22164
|
-
toggle: "gap-0 [&>button]:rounded-none [&>button:first-child]:rounded-l-lg [&>button:last-child]:rounded-r-lg [&>button:not(:first-child)]:border-l-0"
|
|
22165
|
-
};
|
|
22166
|
-
const orientationClasses = {
|
|
22167
|
-
horizontal: "flex-row",
|
|
22168
|
-
vertical: "flex-col [&>button:first-child]:rounded-t-lg [&>button:last-child]:rounded-b-lg [&>button:not(:first-child)]:border-t-0 [&>button:not(:first-child)]:border-l"
|
|
22169
|
-
};
|
|
22170
|
-
const handleActionClick = (action) => {
|
|
22171
|
-
if (action.event) {
|
|
22172
|
-
eventBus.emit("UI:DISPATCH", { event: action.event });
|
|
22173
|
-
}
|
|
22174
|
-
if (action.navigatesTo) {
|
|
22175
|
-
eventBus.emit("UI:NAVIGATE", { url: action.navigatesTo });
|
|
22176
|
-
}
|
|
22177
|
-
};
|
|
22178
|
-
const renderFormActions = () => {
|
|
22179
|
-
const buttons = [];
|
|
22180
|
-
if (secondary) {
|
|
22181
|
-
secondary.forEach((action, index) => {
|
|
22182
|
-
buttons.push(
|
|
22183
|
-
/* @__PURE__ */ jsx(
|
|
22184
|
-
Button,
|
|
22185
|
-
{
|
|
22186
|
-
type: action.actionType === "submit" ? "submit" : "button",
|
|
22187
|
-
variant: action.variant || "ghost",
|
|
22188
|
-
onClick: () => handleActionClick(action),
|
|
22189
|
-
children: action.label
|
|
22190
|
-
},
|
|
22191
|
-
`secondary-${index}`
|
|
22192
|
-
)
|
|
22193
|
-
);
|
|
22194
|
-
});
|
|
22195
|
-
}
|
|
22196
|
-
if (primary) {
|
|
22197
|
-
const isSubmit = primary.actionType === "submit";
|
|
22198
|
-
buttons.push(
|
|
22199
|
-
/* @__PURE__ */ jsx(
|
|
22200
|
-
Button,
|
|
22201
|
-
{
|
|
22202
|
-
type: isSubmit ? "submit" : "button",
|
|
22203
|
-
variant: primary.variant || "primary",
|
|
22204
|
-
onClick: () => handleActionClick(primary),
|
|
22205
|
-
"data-testid": isSubmit ? "form-submit" : void 0,
|
|
22206
|
-
children: primary.label
|
|
22207
|
-
},
|
|
22208
|
-
"primary"
|
|
22209
|
-
)
|
|
22210
|
-
);
|
|
22211
|
-
}
|
|
22212
|
-
return buttons;
|
|
22213
|
-
};
|
|
22214
|
-
const renderFilters = () => {
|
|
22215
|
-
if (!filters || filters.length === 0) return null;
|
|
22216
|
-
return filters.map((filter, index) => /* @__PURE__ */ jsx(
|
|
22217
|
-
Button,
|
|
22218
|
-
{
|
|
22219
|
-
variant: "ghost",
|
|
22220
|
-
onClick: () => {
|
|
22221
|
-
log6.debug("Filter clicked", { field: filter.field });
|
|
22222
|
-
},
|
|
22223
|
-
children: filter.label
|
|
22224
|
-
},
|
|
22225
|
-
`filter-${filter.field}-${index}`
|
|
22226
|
-
));
|
|
22227
|
-
};
|
|
22228
|
-
return /* @__PURE__ */ jsx(
|
|
22229
|
-
"div",
|
|
22230
|
-
{
|
|
22231
|
-
className: cn(
|
|
22232
|
-
"inline-flex gap-2",
|
|
22233
|
-
variantClasses2[variant],
|
|
22234
|
-
orientationClasses[orientation],
|
|
22235
|
-
lookStyles5[look],
|
|
22236
|
-
className
|
|
22237
|
-
),
|
|
22238
|
-
role: "group",
|
|
22239
|
-
children: children || renderFilters() || renderFormActions()
|
|
22240
|
-
}
|
|
22241
|
-
);
|
|
22242
|
-
};
|
|
22243
|
-
ButtonGroup.displayName = "ButtonGroup";
|
|
22244
|
-
}
|
|
22245
|
-
});
|
|
22246
22316
|
function getOrCreateStore(query) {
|
|
22247
22317
|
if (!queryStores.has(query)) {
|
|
22248
22318
|
queryStores.set(query, {
|
|
@@ -22427,7 +22497,7 @@ var init_FilterGroup = __esm({
|
|
|
22427
22497
|
type: "button",
|
|
22428
22498
|
onClick: () => handleFilterSelect(filter.field, null),
|
|
22429
22499
|
className: cn(
|
|
22430
|
-
"px-3 py-1.5 text-sm font-medium transition-all duration-
|
|
22500
|
+
"px-3 py-1.5 text-sm font-medium transition-all duration-fast",
|
|
22431
22501
|
!selectedValues[filter.field] ? "bg-primary text-primary-foreground" : "bg-card text-muted-foreground hover:bg-muted"
|
|
22432
22502
|
),
|
|
22433
22503
|
children: t("filterGroup.all")
|
|
@@ -22439,7 +22509,7 @@ var init_FilterGroup = __esm({
|
|
|
22439
22509
|
type: "button",
|
|
22440
22510
|
onClick: () => handleFilterSelect(filter.field, option),
|
|
22441
22511
|
className: cn(
|
|
22442
|
-
"px-3 py-1.5 text-sm font-medium transition-all duration-
|
|
22512
|
+
"px-3 py-1.5 text-sm font-medium transition-all duration-fast",
|
|
22443
22513
|
"border-l-[length:var(--border-width)] border-border",
|
|
22444
22514
|
selectedValues[filter.field] === option ? "bg-primary text-primary-foreground" : "bg-card text-muted-foreground hover:bg-muted"
|
|
22445
22515
|
),
|
|
@@ -22820,7 +22890,7 @@ var init_Flex = __esm({
|
|
|
22820
22890
|
flexStyle.flexBasis = typeof basis === "number" ? `${basis}px` : basis;
|
|
22821
22891
|
}
|
|
22822
22892
|
}
|
|
22823
|
-
return
|
|
22893
|
+
return React74__default.createElement(Component, {
|
|
22824
22894
|
className: cn(
|
|
22825
22895
|
inline ? "inline-flex" : "flex",
|
|
22826
22896
|
directionStyles[direction],
|
|
@@ -22939,7 +23009,7 @@ var init_Grid = __esm({
|
|
|
22939
23009
|
as: Component = "div"
|
|
22940
23010
|
}) => {
|
|
22941
23011
|
const mergedStyle = rows2 ? { gridTemplateRows: `repeat(${rows2}, minmax(0, 1fr))`, ...style } : style;
|
|
22942
|
-
return
|
|
23012
|
+
return React74__default.createElement(
|
|
22943
23013
|
Component,
|
|
22944
23014
|
{
|
|
22945
23015
|
className: cn(
|
|
@@ -23024,6 +23094,15 @@ var init_InputGroup = __esm({
|
|
|
23024
23094
|
InputGroup.displayName = "InputGroup";
|
|
23025
23095
|
}
|
|
23026
23096
|
});
|
|
23097
|
+
var PageTransition;
|
|
23098
|
+
var init_PageTransition = __esm({
|
|
23099
|
+
"components/core/molecules/PageTransition.tsx"() {
|
|
23100
|
+
"use client";
|
|
23101
|
+
init_cn();
|
|
23102
|
+
PageTransition = ({ locationKey, children, className }) => /* @__PURE__ */ jsx("div", { className: cn("animate-page-in", className), children }, locationKey);
|
|
23103
|
+
PageTransition.displayName = "PageTransition";
|
|
23104
|
+
}
|
|
23105
|
+
});
|
|
23027
23106
|
function computePopoverStyle(position, triggerRect, popoverWidth) {
|
|
23028
23107
|
if (position === "left" || position === "right") {
|
|
23029
23108
|
return {
|
|
@@ -23050,6 +23129,7 @@ var init_Popover = __esm({
|
|
|
23050
23129
|
"components/core/molecules/Popover.tsx"() {
|
|
23051
23130
|
"use client";
|
|
23052
23131
|
init_Typography();
|
|
23132
|
+
init_Presence();
|
|
23053
23133
|
init_cn();
|
|
23054
23134
|
init_useTapReveal();
|
|
23055
23135
|
arrowClasses = {
|
|
@@ -23073,6 +23153,7 @@ var init_Popover = __esm({
|
|
|
23073
23153
|
const [popoverWidth, setPopoverWidth] = useState(0);
|
|
23074
23154
|
const triggerRef = useRef(null);
|
|
23075
23155
|
const popoverRef = useRef(null);
|
|
23156
|
+
const { mounted, className: panelAnim, onAnimationEnd } = usePresence(isOpen, { animation: "popover" });
|
|
23076
23157
|
const updatePosition = () => {
|
|
23077
23158
|
if (triggerRef.current) {
|
|
23078
23159
|
setTriggerRect(triggerRef.current.getBoundingClientRect());
|
|
@@ -23098,10 +23179,11 @@ var init_Popover = __esm({
|
|
|
23098
23179
|
useEffect(() => {
|
|
23099
23180
|
if (isOpen) {
|
|
23100
23181
|
updatePosition();
|
|
23101
|
-
} else {
|
|
23102
|
-
setPopoverWidth(0);
|
|
23103
23182
|
}
|
|
23104
23183
|
}, [isOpen]);
|
|
23184
|
+
useEffect(() => {
|
|
23185
|
+
if (!mounted) setPopoverWidth(0);
|
|
23186
|
+
}, [mounted]);
|
|
23105
23187
|
useLayoutEffect(() => {
|
|
23106
23188
|
if (isOpen && popoverRef.current) {
|
|
23107
23189
|
const measured = popoverRef.current.offsetWidth;
|
|
@@ -23135,9 +23217,9 @@ var init_Popover = __esm({
|
|
|
23135
23217
|
onMouseLeave: handleClose,
|
|
23136
23218
|
onPointerDown: tapTriggerProps.onPointerDown
|
|
23137
23219
|
};
|
|
23138
|
-
const childElement =
|
|
23220
|
+
const childElement = React74__default.isValidElement(children) ? children : /* @__PURE__ */ jsx("span", { children });
|
|
23139
23221
|
const childPointerDown = childElement.props.onPointerDown;
|
|
23140
|
-
const triggerElement =
|
|
23222
|
+
const triggerElement = React74__default.cloneElement(
|
|
23141
23223
|
childElement,
|
|
23142
23224
|
{
|
|
23143
23225
|
ref: triggerRef,
|
|
@@ -23150,13 +23232,14 @@ var init_Popover = __esm({
|
|
|
23150
23232
|
} : void 0
|
|
23151
23233
|
}
|
|
23152
23234
|
);
|
|
23153
|
-
const panel =
|
|
23235
|
+
const panel = mounted && triggerRect ? /* @__PURE__ */ jsxs(
|
|
23154
23236
|
"div",
|
|
23155
23237
|
{
|
|
23156
23238
|
ref: popoverRef,
|
|
23157
23239
|
className: cn(
|
|
23158
23240
|
"fixed z-50 p-4",
|
|
23159
23241
|
"bg-card border-2 border-border shadow-elevation-popover",
|
|
23242
|
+
panelAnim,
|
|
23160
23243
|
className
|
|
23161
23244
|
),
|
|
23162
23245
|
style: {
|
|
@@ -23164,6 +23247,7 @@ var init_Popover = __esm({
|
|
|
23164
23247
|
...popoverWidth === 0 ? { visibility: "hidden" } : void 0
|
|
23165
23248
|
},
|
|
23166
23249
|
role: "dialog",
|
|
23250
|
+
onAnimationEnd,
|
|
23167
23251
|
onMouseEnter: trigger === "hover" ? handleOpen : void 0,
|
|
23168
23252
|
onMouseLeave: trigger === "hover" ? handleClose : void 0,
|
|
23169
23253
|
children: [
|
|
@@ -23320,7 +23404,7 @@ var init_Coachmark = __esm({
|
|
|
23320
23404
|
role: "dialog",
|
|
23321
23405
|
"aria-label": title,
|
|
23322
23406
|
className: cn(
|
|
23323
|
-
"fixed z-50 max-w-xs w-72 transition-opacity duration-
|
|
23407
|
+
"fixed z-50 max-w-xs w-72 transition-opacity duration-fast",
|
|
23324
23408
|
centered || pos ? "opacity-100" : "opacity-0",
|
|
23325
23409
|
className
|
|
23326
23410
|
),
|
|
@@ -23827,6 +23911,7 @@ var init_SidePanel = __esm({
|
|
|
23827
23911
|
init_Box();
|
|
23828
23912
|
init_Button();
|
|
23829
23913
|
init_Typography();
|
|
23914
|
+
init_Presence();
|
|
23830
23915
|
init_cn();
|
|
23831
23916
|
init_useEventBus();
|
|
23832
23917
|
SidePanel = ({
|
|
@@ -23846,15 +23931,17 @@ var init_SidePanel = __esm({
|
|
|
23846
23931
|
if (closeEvent) eventBus.emit(`UI:${closeEvent}`, {});
|
|
23847
23932
|
onClose();
|
|
23848
23933
|
};
|
|
23849
|
-
|
|
23934
|
+
const { mounted, className: panelAnim, onAnimationEnd } = usePresence(isOpen, { animation: "drawer" });
|
|
23935
|
+
const drawerSign = position === "right" ? 1 : -1;
|
|
23936
|
+
if (!mounted) return null;
|
|
23850
23937
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
23851
|
-
showOverlay && /* @__PURE__ */ jsx(
|
|
23938
|
+
showOverlay && /* @__PURE__ */ jsx(Presence, { show: isOpen, animation: "overlay", children: /* @__PURE__ */ jsx(
|
|
23852
23939
|
Box,
|
|
23853
23940
|
{
|
|
23854
23941
|
className: "fixed inset-0 bg-white/80 backdrop-blur-sm z-40 lg:hidden",
|
|
23855
23942
|
onClick: handleClose
|
|
23856
23943
|
}
|
|
23857
|
-
),
|
|
23944
|
+
) }),
|
|
23858
23945
|
/* @__PURE__ */ jsxs(
|
|
23859
23946
|
Aside,
|
|
23860
23947
|
{
|
|
@@ -23864,11 +23951,13 @@ var init_SidePanel = __esm({
|
|
|
23864
23951
|
"border-l-2 border-border",
|
|
23865
23952
|
position === "left" && "border-l-0 border-r-2",
|
|
23866
23953
|
"flex flex-col",
|
|
23867
|
-
|
|
23954
|
+
panelAnim,
|
|
23868
23955
|
width,
|
|
23869
23956
|
position === "right" ? "right-0" : "left-0",
|
|
23870
23957
|
className
|
|
23871
23958
|
),
|
|
23959
|
+
style: { "--motion-drawer-sign": drawerSign },
|
|
23960
|
+
onAnimationEnd,
|
|
23872
23961
|
children: [
|
|
23873
23962
|
/* @__PURE__ */ jsxs(Box, { className: "flex items-center justify-between p-4 border-b-2 border-border sticky top-0 bg-card z-10", children: [
|
|
23874
23963
|
/* @__PURE__ */ jsx(Typography, { variant: "h6", children: title }),
|
|
@@ -23989,9 +24078,9 @@ var init_Tooltip = __esm({
|
|
|
23989
24078
|
if (hideTimeoutRef.current) clearTimeout(hideTimeoutRef.current);
|
|
23990
24079
|
};
|
|
23991
24080
|
}, []);
|
|
23992
|
-
const triggerElement =
|
|
24081
|
+
const triggerElement = React74__default.isValidElement(children) ? children : /* @__PURE__ */ jsx("span", { children });
|
|
23993
24082
|
const childPointerDown = triggerElement.props.onPointerDown;
|
|
23994
|
-
const trigger =
|
|
24083
|
+
const trigger = React74__default.cloneElement(triggerElement, {
|
|
23995
24084
|
ref: triggerRef,
|
|
23996
24085
|
onMouseEnter: handleMouseEnter,
|
|
23997
24086
|
onMouseLeave: handleMouseLeave,
|
|
@@ -24081,7 +24170,7 @@ var init_WizardProgress = __esm({
|
|
|
24081
24170
|
children: /* @__PURE__ */ jsx("div", { className: "flex items-center gap-2", children: normalizedSteps.map((step, index) => {
|
|
24082
24171
|
const isActive = index === currentStep;
|
|
24083
24172
|
const isCompleted = index < currentStep;
|
|
24084
|
-
return /* @__PURE__ */ jsxs(
|
|
24173
|
+
return /* @__PURE__ */ jsxs(React74__default.Fragment, { children: [
|
|
24085
24174
|
/* @__PURE__ */ jsx(
|
|
24086
24175
|
"button",
|
|
24087
24176
|
{
|
|
@@ -24632,7 +24721,7 @@ var init_FormSectionHeader = __esm({
|
|
|
24632
24721
|
name: "chevron-down",
|
|
24633
24722
|
size: "sm",
|
|
24634
24723
|
className: cn(
|
|
24635
|
-
"text-muted-foreground transition-transform duration-
|
|
24724
|
+
"text-muted-foreground transition-transform duration-fast shrink-0",
|
|
24636
24725
|
isCollapsed && "-rotate-90"
|
|
24637
24726
|
)
|
|
24638
24727
|
}
|
|
@@ -25753,17 +25842,18 @@ function GameHud({
|
|
|
25753
25842
|
const mid = Math.ceil(stats.length / 2);
|
|
25754
25843
|
const leftStats = stats.slice(0, mid);
|
|
25755
25844
|
const rightStats = stats.slice(mid);
|
|
25756
|
-
const isTop = position === "top";
|
|
25757
25845
|
return /* @__PURE__ */ jsxs(
|
|
25758
|
-
|
|
25846
|
+
Card,
|
|
25759
25847
|
{
|
|
25848
|
+
variant: "bordered",
|
|
25849
|
+
padding: "none",
|
|
25760
25850
|
className: cn(
|
|
25761
|
-
"flex items-center justify-between w-full",
|
|
25851
|
+
"flex items-center justify-between w-full rounded-none bg-card",
|
|
25762
25852
|
"px-4 py-2 gap-4",
|
|
25763
|
-
|
|
25764
|
-
transparent && (isTop ? "border-b border-white/10 bg-black/40 backdrop-blur-sm" : "border-t border-white/10 bg-black/40 backdrop-blur-sm"),
|
|
25853
|
+
transparent && "backdrop-blur-sm",
|
|
25765
25854
|
className
|
|
25766
25855
|
),
|
|
25856
|
+
style: transparent ? { backgroundColor: "color-mix(in srgb, var(--color-card) 40%, transparent)" } : void 0,
|
|
25767
25857
|
children: [
|
|
25768
25858
|
/* @__PURE__ */ jsx(Box, { className: "flex items-center gap-3 flex-shrink-0", children: leftStats.map((stat, i) => /* @__PURE__ */ jsx(StatBadge, { ...stat, size }, i)) }),
|
|
25769
25859
|
rightStats.length > 0 && /* @__PURE__ */ jsx(Box, { className: "flex items-center gap-3 flex-shrink-0", children: rightStats.map((stat, i) => /* @__PURE__ */ jsx(StatBadge, { ...stat, size }, i)) })
|
|
@@ -25772,14 +25862,16 @@ function GameHud({
|
|
|
25772
25862
|
);
|
|
25773
25863
|
}
|
|
25774
25864
|
return /* @__PURE__ */ jsx(
|
|
25775
|
-
|
|
25865
|
+
Card,
|
|
25776
25866
|
{
|
|
25777
|
-
|
|
25867
|
+
variant: "bordered",
|
|
25868
|
+
padding: "sm",
|
|
25778
25869
|
className: cn(
|
|
25779
|
-
"z-10 flex items-center gap-4
|
|
25780
|
-
transparent
|
|
25870
|
+
"z-10 relative flex items-center gap-4 bg-card",
|
|
25871
|
+
transparent && "backdrop-blur-sm",
|
|
25781
25872
|
className
|
|
25782
25873
|
),
|
|
25874
|
+
style: transparent ? { backgroundColor: "color-mix(in srgb, var(--color-card) 30%, transparent)" } : void 0,
|
|
25783
25875
|
children: stats.map((stat, i) => /* @__PURE__ */ jsx(StatBadge, { ...stat, size }, i))
|
|
25784
25876
|
}
|
|
25785
25877
|
);
|
|
@@ -25789,6 +25881,7 @@ var init_GameHud = __esm({
|
|
|
25789
25881
|
"components/game/molecules/GameHud.tsx"() {
|
|
25790
25882
|
init_cn();
|
|
25791
25883
|
init_Box();
|
|
25884
|
+
init_Card();
|
|
25792
25885
|
init_StatBadge();
|
|
25793
25886
|
positionMap = {
|
|
25794
25887
|
corners: "inset-0 pointer-events-none"
|
|
@@ -25814,7 +25907,7 @@ function GameMenu({
|
|
|
25814
25907
|
}) {
|
|
25815
25908
|
const resolvedOptions = (options?.length ? options : void 0) ?? (menuItems?.length ? menuItems : void 0) ?? DEFAULT_MENU_OPTIONS;
|
|
25816
25909
|
const eventBus = useEventBus();
|
|
25817
|
-
const handleOptionClick =
|
|
25910
|
+
const handleOptionClick = React74.useCallback(
|
|
25818
25911
|
(option) => {
|
|
25819
25912
|
if (option.event) {
|
|
25820
25913
|
eventBus.emit(`UI:${option.event}`, { option });
|
|
@@ -25833,39 +25926,48 @@ function GameMenu({
|
|
|
25833
25926
|
{
|
|
25834
25927
|
className: cn(
|
|
25835
25928
|
"min-h-screen w-full flex flex-col items-center justify-center p-8",
|
|
25929
|
+
!background && "bg-background",
|
|
25836
25930
|
className
|
|
25837
25931
|
),
|
|
25838
|
-
style: {
|
|
25839
|
-
background: background ?? "linear-gradient(135deg, #1a1a2e 0%, #16213e 50%, #0f0e17 100%)"
|
|
25840
|
-
},
|
|
25932
|
+
style: background ? { background } : void 0,
|
|
25841
25933
|
children: [
|
|
25842
|
-
/* @__PURE__ */ jsxs(
|
|
25843
|
-
|
|
25844
|
-
/* @__PURE__ */ jsx(
|
|
25845
|
-
Typography,
|
|
25846
|
-
{
|
|
25847
|
-
variant: "h1",
|
|
25848
|
-
className: "text-5xl md:text-7xl font-bold text-[var(--color-foreground)] tracking-tight",
|
|
25849
|
-
style: {
|
|
25850
|
-
textShadow: "0 4px 12px rgba(0,0,0,0.5)"
|
|
25851
|
-
},
|
|
25852
|
-
children: title
|
|
25853
|
-
}
|
|
25854
|
-
),
|
|
25855
|
-
subtitle && /* @__PURE__ */ jsx(Typography, { variant: "body", className: "mt-2 text-lg text-muted-foreground tracking-widest uppercase", children: subtitle })
|
|
25856
|
-
] }),
|
|
25857
|
-
/* @__PURE__ */ jsx(Box, { className: "flex flex-col gap-4 w-full max-w-md", children: resolvedOptions.map((option, index) => /* @__PURE__ */ jsx(
|
|
25858
|
-
ChoiceButton,
|
|
25934
|
+
/* @__PURE__ */ jsxs(
|
|
25935
|
+
Card,
|
|
25859
25936
|
{
|
|
25860
|
-
|
|
25861
|
-
|
|
25862
|
-
|
|
25863
|
-
|
|
25864
|
-
|
|
25865
|
-
|
|
25866
|
-
|
|
25867
|
-
|
|
25868
|
-
|
|
25937
|
+
variant: "bordered",
|
|
25938
|
+
padding: "lg",
|
|
25939
|
+
className: "bg-card flex flex-col items-center max-w-md w-full",
|
|
25940
|
+
children: [
|
|
25941
|
+
/* @__PURE__ */ jsxs(Box, { className: "text-center mb-8 animate-fade-in", children: [
|
|
25942
|
+
logo && /* @__PURE__ */ jsx(GameIcon, { assetUrl: logo, icon: "image", size: 96, alt: title, className: "h-24 w-auto mx-auto mb-6 drop-shadow-2xl" }),
|
|
25943
|
+
/* @__PURE__ */ jsx(
|
|
25944
|
+
Typography,
|
|
25945
|
+
{
|
|
25946
|
+
variant: "h1",
|
|
25947
|
+
className: "text-4xl md:text-5xl font-bold text-foreground tracking-tight",
|
|
25948
|
+
style: {
|
|
25949
|
+
textShadow: "0 4px 12px rgba(0,0,0,0.5)"
|
|
25950
|
+
},
|
|
25951
|
+
children: title
|
|
25952
|
+
}
|
|
25953
|
+
),
|
|
25954
|
+
subtitle && /* @__PURE__ */ jsx(Typography, { variant: "body", className: "mt-2 text-lg text-muted-foreground tracking-widest uppercase", children: subtitle })
|
|
25955
|
+
] }),
|
|
25956
|
+
/* @__PURE__ */ jsx(Box, { className: "flex flex-col gap-4 w-full", children: resolvedOptions.map((option, index) => /* @__PURE__ */ jsx(
|
|
25957
|
+
ChoiceButton,
|
|
25958
|
+
{
|
|
25959
|
+
text: option.label,
|
|
25960
|
+
index: index + 1,
|
|
25961
|
+
disabled: option.disabled,
|
|
25962
|
+
onClick: () => handleOptionClick(option),
|
|
25963
|
+
className: "text-lg py-4 px-8"
|
|
25964
|
+
},
|
|
25965
|
+
index
|
|
25966
|
+
)) })
|
|
25967
|
+
]
|
|
25968
|
+
}
|
|
25969
|
+
),
|
|
25970
|
+
/* @__PURE__ */ jsxs(Box, { position: "absolute", className: "inset-0 pointer-events-none overflow-hidden -z-10", children: [
|
|
25869
25971
|
/* @__PURE__ */ jsx(Box, { position: "absolute", className: "top-1/4 left-1/4 w-64 h-64 bg-info/10 rounded-container blur-3xl" }),
|
|
25870
25972
|
/* @__PURE__ */ jsx(Box, { position: "absolute", className: "bottom-1/4 right-1/4 w-96 h-96 bg-accent/10 rounded-container blur-3xl" })
|
|
25871
25973
|
] })
|
|
@@ -25880,6 +25982,7 @@ var init_GameMenu = __esm({
|
|
|
25880
25982
|
init_cn();
|
|
25881
25983
|
init_useEventBus();
|
|
25882
25984
|
init_Box();
|
|
25985
|
+
init_Card();
|
|
25883
25986
|
init_Typography();
|
|
25884
25987
|
init_GameIcon();
|
|
25885
25988
|
init_ChoiceButton();
|
|
@@ -26040,7 +26143,7 @@ function StateGraph({
|
|
|
26040
26143
|
}) {
|
|
26041
26144
|
const eventBus = useEventBus();
|
|
26042
26145
|
const nodes = states ?? [];
|
|
26043
|
-
const positions =
|
|
26146
|
+
const positions = React74.useMemo(() => layoutStates(nodes, width, height), [nodes, width, height]);
|
|
26044
26147
|
return /* @__PURE__ */ jsxs(
|
|
26045
26148
|
Box,
|
|
26046
26149
|
{
|
|
@@ -26577,7 +26680,7 @@ function LinearView({
|
|
|
26577
26680
|
/* @__PURE__ */ jsx(HStack, { className: "flex-wrap items-center", gap: "xs", children: trait.states.map((state, i) => {
|
|
26578
26681
|
const isDone = i < currentIdx;
|
|
26579
26682
|
const isCurrent = i === currentIdx;
|
|
26580
|
-
return /* @__PURE__ */ jsxs(
|
|
26683
|
+
return /* @__PURE__ */ jsxs(React74__default.Fragment, { children: [
|
|
26581
26684
|
i > 0 && /* @__PURE__ */ jsx(
|
|
26582
26685
|
Typography,
|
|
26583
26686
|
{
|
|
@@ -27210,7 +27313,7 @@ function SequenceBar({
|
|
|
27210
27313
|
else onSlotRemove?.(index);
|
|
27211
27314
|
}, [emit, slotRemoveEvent, onSlotRemove, playing]);
|
|
27212
27315
|
const paddedSlots = Array.from({ length: maxSlots }, (_, i) => slots[i]);
|
|
27213
|
-
return /* @__PURE__ */ jsx(HStack, { className: cn("items-center", className), gap: "sm", children: paddedSlots.map((slot, i) => /* @__PURE__ */ jsxs(
|
|
27316
|
+
return /* @__PURE__ */ jsx(HStack, { className: cn("items-center", className), gap: "sm", children: paddedSlots.map((slot, i) => /* @__PURE__ */ jsxs(React74__default.Fragment, { children: [
|
|
27214
27317
|
i > 0 && /* @__PURE__ */ jsx(
|
|
27215
27318
|
Typography,
|
|
27216
27319
|
{
|
|
@@ -27397,6 +27500,7 @@ var init_GameShell = __esm({
|
|
|
27397
27500
|
"components/game/templates/GameShell.tsx"() {
|
|
27398
27501
|
init_cn();
|
|
27399
27502
|
init_Box();
|
|
27503
|
+
init_Card();
|
|
27400
27504
|
init_Typography();
|
|
27401
27505
|
init_AtlasImage();
|
|
27402
27506
|
FONT_BASE = "https://almadar-kflow-assets.web.app/shared/_shared/kenney-fonts/fonts";
|
|
@@ -27425,13 +27529,14 @@ var init_GameShell = __esm({
|
|
|
27425
27529
|
showTopBar = true,
|
|
27426
27530
|
children,
|
|
27427
27531
|
backgroundAsset,
|
|
27428
|
-
|
|
27429
|
-
|
|
27532
|
+
fontFamily = "future",
|
|
27533
|
+
"data-theme": dataTheme
|
|
27430
27534
|
}) => {
|
|
27431
27535
|
const font = GAME_FONTS[fontFamily] ?? fontFamily;
|
|
27432
27536
|
return /* @__PURE__ */ jsxs(
|
|
27433
27537
|
Box,
|
|
27434
27538
|
{
|
|
27539
|
+
"data-theme": dataTheme || void 0,
|
|
27435
27540
|
className: cn("game-shell", className),
|
|
27436
27541
|
style: {
|
|
27437
27542
|
position: "relative",
|
|
@@ -27439,7 +27544,7 @@ var init_GameShell = __esm({
|
|
|
27439
27544
|
height: "100vh",
|
|
27440
27545
|
overflow: "hidden",
|
|
27441
27546
|
background: "var(--color-background, #0a0a0f)",
|
|
27442
|
-
color: "var(--color-
|
|
27547
|
+
color: "var(--color-foreground, #e0e0e0)",
|
|
27443
27548
|
fontFamily: `'${font}', system-ui, sans-serif`
|
|
27444
27549
|
},
|
|
27445
27550
|
children: [
|
|
@@ -27471,19 +27576,12 @@ var init_GameShell = __esm({
|
|
|
27471
27576
|
},
|
|
27472
27577
|
children: [
|
|
27473
27578
|
showTopBar && /* @__PURE__ */ jsx(
|
|
27474
|
-
|
|
27579
|
+
Card,
|
|
27475
27580
|
{
|
|
27476
|
-
|
|
27477
|
-
|
|
27478
|
-
|
|
27479
|
-
|
|
27480
|
-
style: {
|
|
27481
|
-
padding: "6px 16px",
|
|
27482
|
-
background: hudBackgroundAsset ? void 0 : "rgba(18, 18, 31, 0.85)",
|
|
27483
|
-
borderRadius: hudBackgroundAsset ? void 0 : 10,
|
|
27484
|
-
boxShadow: "0 4px 14px rgba(0,0,0,0.45)",
|
|
27485
|
-
flexShrink: 0
|
|
27486
|
-
},
|
|
27581
|
+
variant: "bordered",
|
|
27582
|
+
padding: "none",
|
|
27583
|
+
className: "game-shell__title bg-card pointer-events-auto",
|
|
27584
|
+
style: { padding: "6px 16px", flexShrink: 0 },
|
|
27487
27585
|
children: /* @__PURE__ */ jsx(
|
|
27488
27586
|
Typography,
|
|
27489
27587
|
{
|
|
@@ -28195,13 +28293,13 @@ var init_MapView = __esm({
|
|
|
28195
28293
|
shadowSize: [41, 41]
|
|
28196
28294
|
});
|
|
28197
28295
|
L.Marker.prototype.options.icon = defaultIcon;
|
|
28198
|
-
const { useEffect:
|
|
28296
|
+
const { useEffect: useEffect65, useRef: useRef62, useCallback: useCallback105, useState: useState102 } = React74__default;
|
|
28199
28297
|
const { Typography: Typography2 } = await Promise.resolve().then(() => (init_Typography(), Typography_exports));
|
|
28200
28298
|
const { useEventBus: useEventBus2 } = await Promise.resolve().then(() => (init_useEventBus(), useEventBus_exports));
|
|
28201
28299
|
function MapUpdater({ centerLat, centerLng, zoom }) {
|
|
28202
28300
|
const map = useMap();
|
|
28203
|
-
const prevRef =
|
|
28204
|
-
|
|
28301
|
+
const prevRef = useRef62({ centerLat, centerLng, zoom });
|
|
28302
|
+
useEffect65(() => {
|
|
28205
28303
|
const prev = prevRef.current;
|
|
28206
28304
|
if (prev.centerLat !== centerLat || prev.centerLng !== centerLng || prev.zoom !== zoom) {
|
|
28207
28305
|
map.setView([centerLat, centerLng], zoom);
|
|
@@ -28212,7 +28310,7 @@ var init_MapView = __esm({
|
|
|
28212
28310
|
}
|
|
28213
28311
|
function MapClickHandler({ onMapClick }) {
|
|
28214
28312
|
const map = useMap();
|
|
28215
|
-
|
|
28313
|
+
useEffect65(() => {
|
|
28216
28314
|
if (!onMapClick) return;
|
|
28217
28315
|
const handler = (e) => {
|
|
28218
28316
|
onMapClick(e.latlng.lat, e.latlng.lng);
|
|
@@ -28240,8 +28338,8 @@ var init_MapView = __esm({
|
|
|
28240
28338
|
showAttribution = true
|
|
28241
28339
|
}) {
|
|
28242
28340
|
const eventBus = useEventBus2();
|
|
28243
|
-
const [clickedPosition, setClickedPosition] =
|
|
28244
|
-
const handleMapClick =
|
|
28341
|
+
const [clickedPosition, setClickedPosition] = useState102(null);
|
|
28342
|
+
const handleMapClick = useCallback105((lat, lng) => {
|
|
28245
28343
|
if (showClickedPin) {
|
|
28246
28344
|
setClickedPosition({ lat, lng });
|
|
28247
28345
|
}
|
|
@@ -28250,7 +28348,7 @@ var init_MapView = __esm({
|
|
|
28250
28348
|
eventBus.emit(`UI:${mapClickEvent}`, { latitude: lat, longitude: lng });
|
|
28251
28349
|
}
|
|
28252
28350
|
}, [onMapClick, mapClickEvent, eventBus, showClickedPin]);
|
|
28253
|
-
const handleMarkerClick =
|
|
28351
|
+
const handleMarkerClick = useCallback105((marker) => {
|
|
28254
28352
|
onMarkerClick?.(marker);
|
|
28255
28353
|
if (markerClickEvent) {
|
|
28256
28354
|
eventBus.emit(`UI:${markerClickEvent}`, { ...marker });
|
|
@@ -28450,7 +28548,7 @@ var init_NumberStepper = __esm({
|
|
|
28450
28548
|
"text-foreground",
|
|
28451
28549
|
"hover:bg-muted",
|
|
28452
28550
|
"active:bg-muted",
|
|
28453
|
-
"transition-colors duration-
|
|
28551
|
+
"transition-colors duration-instant",
|
|
28454
28552
|
"disabled:opacity-40 disabled:cursor-not-allowed disabled:hover:bg-transparent",
|
|
28455
28553
|
"focus:outline-none focus:ring-[length:var(--focus-ring-width)] focus:ring-ring focus:ring-inset",
|
|
28456
28554
|
styles.button
|
|
@@ -28491,7 +28589,7 @@ var init_NumberStepper = __esm({
|
|
|
28491
28589
|
"text-foreground",
|
|
28492
28590
|
"hover:bg-muted",
|
|
28493
28591
|
"active:bg-muted",
|
|
28494
|
-
"transition-colors duration-
|
|
28592
|
+
"transition-colors duration-instant",
|
|
28495
28593
|
"disabled:opacity-40 disabled:cursor-not-allowed disabled:hover:bg-transparent",
|
|
28496
28594
|
"focus:outline-none focus:ring-[length:var(--focus-ring-width)] focus:ring-ring focus:ring-inset",
|
|
28497
28595
|
styles.button
|
|
@@ -28615,7 +28713,7 @@ var init_StarRating = __esm({
|
|
|
28615
28713
|
className: cn(
|
|
28616
28714
|
styles.star,
|
|
28617
28715
|
"text-foreground/30",
|
|
28618
|
-
"transition-colors duration-
|
|
28716
|
+
"transition-colors duration-instant"
|
|
28619
28717
|
),
|
|
28620
28718
|
strokeWidth: 1.5
|
|
28621
28719
|
}
|
|
@@ -28628,7 +28726,7 @@ var init_StarRating = __esm({
|
|
|
28628
28726
|
styles.star,
|
|
28629
28727
|
"absolute inset-0",
|
|
28630
28728
|
"text-warning fill-warning",
|
|
28631
|
-
"transition-colors duration-
|
|
28729
|
+
"transition-colors duration-instant"
|
|
28632
28730
|
),
|
|
28633
28731
|
strokeWidth: 1.5,
|
|
28634
28732
|
style: isHalf ? { clipPath: "inset(0 50% 0 0)" } : void 0
|
|
@@ -28783,7 +28881,7 @@ var init_UploadDropZone = __esm({
|
|
|
28783
28881
|
"relative flex flex-col items-center justify-center",
|
|
28784
28882
|
"p-8 rounded-sm",
|
|
28785
28883
|
"border-2 border-dashed",
|
|
28786
|
-
"transition-colors duration-
|
|
28884
|
+
"transition-colors duration-fast",
|
|
28787
28885
|
"cursor-pointer",
|
|
28788
28886
|
isDragOver ? "border-primary bg-primary bg-opacity-5" : "border-border bg-surface",
|
|
28789
28887
|
error && "border-error",
|
|
@@ -29110,8 +29208,8 @@ function TableView({
|
|
|
29110
29208
|
}) {
|
|
29111
29209
|
const eventBus = useEventBus();
|
|
29112
29210
|
const { t } = useTranslate();
|
|
29113
|
-
const [visibleCount, setVisibleCount] =
|
|
29114
|
-
const [localSelected, setLocalSelected] =
|
|
29211
|
+
const [visibleCount, setVisibleCount] = React74__default.useState(pageSize > 0 ? pageSize : Infinity);
|
|
29212
|
+
const [localSelected, setLocalSelected] = React74__default.useState(/* @__PURE__ */ new Set());
|
|
29115
29213
|
const colDefs = columns ?? fields ?? [];
|
|
29116
29214
|
const allDataRaw = Array.isArray(entity) ? entity : entity ? [entity] : [];
|
|
29117
29215
|
const dnd = useDataDnd({
|
|
@@ -29191,7 +29289,7 @@ function TableView({
|
|
|
29191
29289
|
className: cn(
|
|
29192
29290
|
"grid items-center gap-3 sticky top-0 z-10",
|
|
29193
29291
|
"bg-[var(--color-surface-subtle)] border-b border-[var(--color-border)]",
|
|
29194
|
-
"text-
|
|
29292
|
+
"text-muted-foreground uppercase text-xs font-semibold tracking-wide",
|
|
29195
29293
|
lk.headPad
|
|
29196
29294
|
),
|
|
29197
29295
|
children: [
|
|
@@ -29306,12 +29404,12 @@ function TableView({
|
|
|
29306
29404
|
]
|
|
29307
29405
|
}
|
|
29308
29406
|
);
|
|
29309
|
-
return dnd.isZone ? /* @__PURE__ */ jsx(dnd.SortableItem, { id: row[idField] ?? id, children: rowInner }, id) : /* @__PURE__ */ jsx(
|
|
29407
|
+
return dnd.isZone ? /* @__PURE__ */ jsx(dnd.SortableItem, { id: row[idField] ?? id, children: rowInner }, id) : /* @__PURE__ */ jsx(React74__default.Fragment, { children: rowInner }, id);
|
|
29310
29408
|
};
|
|
29311
29409
|
const items = Array.from(data);
|
|
29312
29410
|
const groups = groupBy ? groupData2(items, groupBy) : [{ label: "", items }];
|
|
29313
29411
|
let runningIndex = 0;
|
|
29314
|
-
const body = /* @__PURE__ */ jsx(Box, { role: "rowgroup", children: groups.map((group, gi) => /* @__PURE__ */ jsxs(
|
|
29412
|
+
const body = /* @__PURE__ */ jsx(Box, { role: "rowgroup", children: groups.map((group, gi) => /* @__PURE__ */ jsxs(React74__default.Fragment, { children: [
|
|
29315
29413
|
group.label && /* @__PURE__ */ jsx(Divider, { label: group.label, className: gi > 0 ? "mt-3" : "mt-0" }),
|
|
29316
29414
|
group.items.map((row) => renderRow(row, runningIndex++))
|
|
29317
29415
|
] }, gi)) });
|
|
@@ -30047,7 +30145,7 @@ function SortableListInner({
|
|
|
30047
30145
|
"flex items-center justify-center",
|
|
30048
30146
|
"text-muted-foreground",
|
|
30049
30147
|
"hover:text-foreground",
|
|
30050
|
-
"transition-colors duration-
|
|
30148
|
+
"transition-colors duration-instant",
|
|
30051
30149
|
"px-1"
|
|
30052
30150
|
),
|
|
30053
30151
|
"aria-grabbed": ariaGrabbed,
|
|
@@ -30074,7 +30172,7 @@ function SortableListInner({
|
|
|
30074
30172
|
gap: "sm",
|
|
30075
30173
|
align: "center",
|
|
30076
30174
|
className: cn(
|
|
30077
|
-
"transition-opacity duration-
|
|
30175
|
+
"transition-opacity duration-fast",
|
|
30078
30176
|
isBeingDragged && "opacity-50"
|
|
30079
30177
|
),
|
|
30080
30178
|
children: [
|
|
@@ -30246,7 +30344,7 @@ var init_PullToRefresh = __esm({
|
|
|
30246
30344
|
children: /* @__PURE__ */ jsx(
|
|
30247
30345
|
Box,
|
|
30248
30346
|
{
|
|
30249
|
-
className: "transition-transform duration-
|
|
30347
|
+
className: "transition-transform duration-fast",
|
|
30250
30348
|
style: {
|
|
30251
30349
|
transform: `scale(${isRefreshing ? 1 : pullProgress})`,
|
|
30252
30350
|
opacity: isRefreshing ? 1 : pullProgress
|
|
@@ -30668,7 +30766,7 @@ var init_StepFlow = __esm({
|
|
|
30668
30766
|
className
|
|
30669
30767
|
}) => {
|
|
30670
30768
|
if (orientation === "vertical") {
|
|
30671
|
-
return /* @__PURE__ */ jsx(VStack, { gap: "none", className: cn("w-full", className), children: steps.map((step, index) => /* @__PURE__ */ jsx(
|
|
30769
|
+
return /* @__PURE__ */ jsx(VStack, { gap: "none", className: cn("w-full", className), children: steps.map((step, index) => /* @__PURE__ */ jsx(React74__default.Fragment, { children: /* @__PURE__ */ jsxs(HStack, { gap: "md", align: "start", className: "w-full", children: [
|
|
30672
30770
|
/* @__PURE__ */ jsxs(VStack, { gap: "none", align: "center", children: [
|
|
30673
30771
|
/* @__PURE__ */ jsx(StepCircle, { step, index }),
|
|
30674
30772
|
showConnectors && index < steps.length - 1 && /* @__PURE__ */ jsx(Box, { className: "w-px h-8 bg-border" })
|
|
@@ -30679,7 +30777,7 @@ var init_StepFlow = __esm({
|
|
|
30679
30777
|
] })
|
|
30680
30778
|
] }) }, index)) });
|
|
30681
30779
|
}
|
|
30682
|
-
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(
|
|
30780
|
+
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(React74__default.Fragment, { children: [
|
|
30683
30781
|
/* @__PURE__ */ jsxs(VStack, { gap: "sm", align: "center", className: "flex-1 w-full md:w-auto", children: [
|
|
30684
30782
|
/* @__PURE__ */ jsx(StepCircle, { step, index }),
|
|
30685
30783
|
/* @__PURE__ */ jsx(Typography, { variant: "h4", className: "text-center", children: step.title }),
|
|
@@ -31585,7 +31683,7 @@ var init_VoteStack = __esm({
|
|
|
31585
31683
|
isUp ? "text-primary" : "text-muted-foreground",
|
|
31586
31684
|
"hover:bg-muted",
|
|
31587
31685
|
"active:bg-muted",
|
|
31588
|
-
"transition-colors duration-
|
|
31686
|
+
"transition-colors duration-instant",
|
|
31589
31687
|
"disabled:opacity-40 disabled:cursor-not-allowed disabled:hover:bg-transparent",
|
|
31590
31688
|
"focus:outline-none focus:ring-[length:var(--focus-ring-width)] focus:ring-ring focus:ring-inset",
|
|
31591
31689
|
styles.button
|
|
@@ -31622,7 +31720,7 @@ var init_VoteStack = __esm({
|
|
|
31622
31720
|
isDown ? "text-primary" : "text-muted-foreground",
|
|
31623
31721
|
"hover:bg-muted",
|
|
31624
31722
|
"active:bg-muted",
|
|
31625
|
-
"transition-colors duration-
|
|
31723
|
+
"transition-colors duration-instant",
|
|
31626
31724
|
"disabled:opacity-40 disabled:cursor-not-allowed disabled:hover:bg-transparent",
|
|
31627
31725
|
"focus:outline-none focus:ring-[length:var(--focus-ring-width)] focus:ring-ring focus:ring-inset",
|
|
31628
31726
|
styles.button
|
|
@@ -31669,7 +31767,7 @@ var init_LikertScale = __esm({
|
|
|
31669
31767
|
md: "text-base",
|
|
31670
31768
|
lg: "text-lg"
|
|
31671
31769
|
};
|
|
31672
|
-
LikertScale =
|
|
31770
|
+
LikertScale = React74__default.forwardRef(
|
|
31673
31771
|
({
|
|
31674
31772
|
question,
|
|
31675
31773
|
options = DEFAULT_LIKERT_OPTIONS,
|
|
@@ -31681,7 +31779,7 @@ var init_LikertScale = __esm({
|
|
|
31681
31779
|
variant = "radios",
|
|
31682
31780
|
className
|
|
31683
31781
|
}, ref) => {
|
|
31684
|
-
const groupId =
|
|
31782
|
+
const groupId = React74__default.useId();
|
|
31685
31783
|
const eventBus = useEventBus();
|
|
31686
31784
|
const handleSelect = useCallback(
|
|
31687
31785
|
(next) => {
|
|
@@ -31734,7 +31832,7 @@ var init_LikertScale = __esm({
|
|
|
31734
31832
|
disabled,
|
|
31735
31833
|
onClick: () => handleSelect(opt.value),
|
|
31736
31834
|
className: cn(
|
|
31737
|
-
"flex-1 text-center font-medium transition-colors duration-
|
|
31835
|
+
"flex-1 text-center font-medium transition-colors duration-instant",
|
|
31738
31836
|
"focus:outline-none focus:ring-[length:var(--focus-ring-width)] focus:ring-ring focus:ring-inset",
|
|
31739
31837
|
"disabled:cursor-not-allowed",
|
|
31740
31838
|
"rounded-none gap-0 shadow-none border-none",
|
|
@@ -33963,7 +34061,7 @@ var init_DocBreadcrumb = __esm({
|
|
|
33963
34061
|
"aria-label": t("aria.breadcrumb"),
|
|
33964
34062
|
children: /* @__PURE__ */ jsx(HStack, { gap: "xs", align: "center", wrap: true, children: items.map((item, idx) => {
|
|
33965
34063
|
const isLast = idx === items.length - 1;
|
|
33966
|
-
return /* @__PURE__ */ jsxs(
|
|
34064
|
+
return /* @__PURE__ */ jsxs(React74__default.Fragment, { children: [
|
|
33967
34065
|
idx > 0 && /* @__PURE__ */ jsx(
|
|
33968
34066
|
Icon,
|
|
33969
34067
|
{
|
|
@@ -34832,7 +34930,7 @@ var init_MiniStateMachine = __esm({
|
|
|
34832
34930
|
const x = 2 + i * (NODE_W + GAP2 + ARROW_W + GAP2);
|
|
34833
34931
|
const tc = transitionCounts[s.name] ?? 0;
|
|
34834
34932
|
const role = getStateRole(s.name, s.isInitial ?? void 0, s.isTerminal ?? void 0, tc, maxTC);
|
|
34835
|
-
return /* @__PURE__ */ jsxs(
|
|
34933
|
+
return /* @__PURE__ */ jsxs(React74__default.Fragment, { children: [
|
|
34836
34934
|
/* @__PURE__ */ jsx(
|
|
34837
34935
|
AvlState,
|
|
34838
34936
|
{
|
|
@@ -35036,7 +35134,7 @@ var init_PageHeader = __esm({
|
|
|
35036
35134
|
info: "bg-info/10 text-info"
|
|
35037
35135
|
};
|
|
35038
35136
|
return /* @__PURE__ */ jsxs(Box, { className: cn("mb-6", className), children: [
|
|
35039
|
-
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(
|
|
35137
|
+
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(React74__default.Fragment, { children: [
|
|
35040
35138
|
idx > 0 && /* @__PURE__ */ jsx(Typography, { variant: "small", color: "muted", children: "/" }),
|
|
35041
35139
|
crumb.href ? /* @__PURE__ */ jsx(
|
|
35042
35140
|
"a",
|
|
@@ -35394,7 +35492,7 @@ var init_Section = __esm({
|
|
|
35394
35492
|
as: Component = "section"
|
|
35395
35493
|
}) => {
|
|
35396
35494
|
const hasHeader = title || description || action;
|
|
35397
|
-
return
|
|
35495
|
+
return React74__default.createElement(
|
|
35398
35496
|
Component,
|
|
35399
35497
|
{
|
|
35400
35498
|
className: cn(
|
|
@@ -35461,7 +35559,7 @@ var init_Sidebar = __esm({
|
|
|
35461
35559
|
variant: "ghost",
|
|
35462
35560
|
onClick: item.onClick,
|
|
35463
35561
|
className: cn(
|
|
35464
|
-
"w-full flex items-center gap-3 px-3 py-2.5 transition-all duration-
|
|
35562
|
+
"w-full flex items-center gap-3 px-3 py-2.5 transition-all duration-fast group relative",
|
|
35465
35563
|
"rounded-sm border-[length:var(--border-width-thin)] border-transparent",
|
|
35466
35564
|
isActive ? [
|
|
35467
35565
|
"bg-primary text-primary-foreground",
|
|
@@ -35535,7 +35633,7 @@ var init_Sidebar = __esm({
|
|
|
35535
35633
|
className: cn(
|
|
35536
35634
|
"flex flex-col h-full",
|
|
35537
35635
|
"bg-card border-e border-border",
|
|
35538
|
-
"transition-all duration-
|
|
35636
|
+
"transition-all duration-normal ease-standard",
|
|
35539
35637
|
collapsed ? "w-20" : "w-64",
|
|
35540
35638
|
className
|
|
35541
35639
|
),
|
|
@@ -35768,7 +35866,7 @@ var init_WizardContainer = __esm({
|
|
|
35768
35866
|
const isCompleted = index < currentStep;
|
|
35769
35867
|
const stepKey = step.id ?? step.tabId ?? `step-${index}`;
|
|
35770
35868
|
const stepTitle = step.title ?? step.name ?? `Step ${index + 1}`;
|
|
35771
|
-
return /* @__PURE__ */ jsxs(
|
|
35869
|
+
return /* @__PURE__ */ jsxs(React74__default.Fragment, { children: [
|
|
35772
35870
|
/* @__PURE__ */ jsx(
|
|
35773
35871
|
Button,
|
|
35774
35872
|
{
|
|
@@ -37538,6 +37636,7 @@ var init_molecules2 = __esm({
|
|
|
37538
37636
|
init_InputGroup();
|
|
37539
37637
|
init_Menu();
|
|
37540
37638
|
init_Modal();
|
|
37639
|
+
init_PageTransition();
|
|
37541
37640
|
init_Pagination();
|
|
37542
37641
|
init_Popover();
|
|
37543
37642
|
init_Coachmark();
|
|
@@ -38588,7 +38687,7 @@ var init_DetailPanel = __esm({
|
|
|
38588
38687
|
}
|
|
38589
38688
|
});
|
|
38590
38689
|
function extractTitle(children) {
|
|
38591
|
-
if (!
|
|
38690
|
+
if (!React74__default.isValidElement(children)) return void 0;
|
|
38592
38691
|
const props = children.props;
|
|
38593
38692
|
if (typeof props.title === "string") {
|
|
38594
38693
|
return props.title;
|
|
@@ -38938,12 +39037,12 @@ var init_Form = __esm({
|
|
|
38938
39037
|
const isSchemaEntity = isOrbitalEntitySchema(entity);
|
|
38939
39038
|
const resolvedEntity = isSchemaEntity ? entity : void 0;
|
|
38940
39039
|
const entityName = typeof entity === "string" ? entity : resolvedEntity?.name;
|
|
38941
|
-
const normalizedInitialData =
|
|
39040
|
+
const normalizedInitialData = React74__default.useMemo(() => {
|
|
38942
39041
|
const entityRowAsInitial = isPlainEntityRow(entity) ? entity : void 0;
|
|
38943
39042
|
const callerInitial = initialData !== null && typeof initialData === "object" && !Array.isArray(initialData) ? initialData : {};
|
|
38944
39043
|
return entityRowAsInitial !== void 0 ? { ...entityRowAsInitial, ...callerInitial } : callerInitial;
|
|
38945
39044
|
}, [entity, initialData]);
|
|
38946
|
-
const entityDerivedFields =
|
|
39045
|
+
const entityDerivedFields = React74__default.useMemo(() => {
|
|
38947
39046
|
if (fields && fields.length > 0) return void 0;
|
|
38948
39047
|
if (!resolvedEntity) return void 0;
|
|
38949
39048
|
return resolvedEntity.fields.map(
|
|
@@ -38964,16 +39063,16 @@ var init_Form = __esm({
|
|
|
38964
39063
|
const conditionalFields = typeof conditionalFieldsRaw === "boolean" ? {} : conditionalFieldsRaw;
|
|
38965
39064
|
const hiddenCalculations = typeof hiddenCalculationsRaw === "boolean" ? [] : hiddenCalculationsRaw;
|
|
38966
39065
|
const violationTriggers = typeof violationTriggersRaw === "boolean" ? [] : violationTriggersRaw;
|
|
38967
|
-
const [formData, setFormData] =
|
|
39066
|
+
const [formData, setFormData] = React74__default.useState(
|
|
38968
39067
|
normalizedInitialData
|
|
38969
39068
|
);
|
|
38970
|
-
const [collapsedSections, setCollapsedSections] =
|
|
39069
|
+
const [collapsedSections, setCollapsedSections] = React74__default.useState(
|
|
38971
39070
|
/* @__PURE__ */ new Set()
|
|
38972
39071
|
);
|
|
38973
|
-
const [submitError, setSubmitError] =
|
|
38974
|
-
const formRef =
|
|
39072
|
+
const [submitError, setSubmitError] = React74__default.useState(null);
|
|
39073
|
+
const formRef = React74__default.useRef(null);
|
|
38975
39074
|
const formMode = props.mode;
|
|
38976
|
-
const mountedRef =
|
|
39075
|
+
const mountedRef = React74__default.useRef(false);
|
|
38977
39076
|
if (!mountedRef.current) {
|
|
38978
39077
|
mountedRef.current = true;
|
|
38979
39078
|
debug("forms", "mount", {
|
|
@@ -38986,7 +39085,7 @@ var init_Form = __esm({
|
|
|
38986
39085
|
});
|
|
38987
39086
|
}
|
|
38988
39087
|
const shouldShowCancel = showCancel ?? (fields && fields.length > 0);
|
|
38989
|
-
const evalContext =
|
|
39088
|
+
const evalContext = React74__default.useMemo(
|
|
38990
39089
|
() => ({
|
|
38991
39090
|
formValues: formData,
|
|
38992
39091
|
globalVariables: externalContext?.globalVariables ?? {},
|
|
@@ -38995,7 +39094,7 @@ var init_Form = __esm({
|
|
|
38995
39094
|
}),
|
|
38996
39095
|
[formData, externalContext]
|
|
38997
39096
|
);
|
|
38998
|
-
|
|
39097
|
+
React74__default.useEffect(() => {
|
|
38999
39098
|
debug("forms", "initialData-sync", {
|
|
39000
39099
|
mode: formMode,
|
|
39001
39100
|
normalizedInitialData,
|
|
@@ -39006,7 +39105,7 @@ var init_Form = __esm({
|
|
|
39006
39105
|
setFormData(normalizedInitialData);
|
|
39007
39106
|
}
|
|
39008
39107
|
}, [normalizedInitialData]);
|
|
39009
|
-
const processCalculations =
|
|
39108
|
+
const processCalculations = React74__default.useCallback(
|
|
39010
39109
|
(changedFieldId, newFormData) => {
|
|
39011
39110
|
if (!hiddenCalculations.length) return;
|
|
39012
39111
|
const context = {
|
|
@@ -39031,7 +39130,7 @@ var init_Form = __esm({
|
|
|
39031
39130
|
},
|
|
39032
39131
|
[hiddenCalculations, externalContext, eventBus]
|
|
39033
39132
|
);
|
|
39034
|
-
const checkViolations =
|
|
39133
|
+
const checkViolations = React74__default.useCallback(
|
|
39035
39134
|
(changedFieldId, newFormData) => {
|
|
39036
39135
|
if (!violationTriggers.length) return;
|
|
39037
39136
|
const context = {
|
|
@@ -39069,7 +39168,7 @@ var init_Form = __esm({
|
|
|
39069
39168
|
processCalculations(name, newFormData);
|
|
39070
39169
|
checkViolations(name, newFormData);
|
|
39071
39170
|
};
|
|
39072
|
-
const isFieldVisible =
|
|
39171
|
+
const isFieldVisible = React74__default.useCallback(
|
|
39073
39172
|
(fieldName) => {
|
|
39074
39173
|
const condition = conditionalFields[fieldName];
|
|
39075
39174
|
if (!condition) return true;
|
|
@@ -39077,7 +39176,7 @@ var init_Form = __esm({
|
|
|
39077
39176
|
},
|
|
39078
39177
|
[conditionalFields, evalContext]
|
|
39079
39178
|
);
|
|
39080
|
-
const isSectionVisible =
|
|
39179
|
+
const isSectionVisible = React74__default.useCallback(
|
|
39081
39180
|
(section) => {
|
|
39082
39181
|
if (!section.condition) return true;
|
|
39083
39182
|
return Boolean(evaluateFormExpression(section.condition, evalContext));
|
|
@@ -39153,7 +39252,7 @@ var init_Form = __esm({
|
|
|
39153
39252
|
eventBus.emit(`UI:${onCancel}`);
|
|
39154
39253
|
}
|
|
39155
39254
|
};
|
|
39156
|
-
const renderField =
|
|
39255
|
+
const renderField = React74__default.useCallback(
|
|
39157
39256
|
(field) => {
|
|
39158
39257
|
const fieldName = field.name || field.field;
|
|
39159
39258
|
if (!fieldName) return null;
|
|
@@ -39174,7 +39273,7 @@ var init_Form = __esm({
|
|
|
39174
39273
|
[formData, isFieldVisible, relationsData, relationsLoading, isLoading]
|
|
39175
39274
|
);
|
|
39176
39275
|
const effectiveFields = entityDerivedFields ?? fields;
|
|
39177
|
-
const normalizedFields =
|
|
39276
|
+
const normalizedFields = React74__default.useMemo(() => {
|
|
39178
39277
|
if (!effectiveFields || effectiveFields.length === 0) return [];
|
|
39179
39278
|
return effectiveFields.map((field) => {
|
|
39180
39279
|
if (typeof field === "string") {
|
|
@@ -39198,7 +39297,7 @@ var init_Form = __esm({
|
|
|
39198
39297
|
return field;
|
|
39199
39298
|
});
|
|
39200
39299
|
}, [effectiveFields, resolvedEntity]);
|
|
39201
|
-
const schemaFields =
|
|
39300
|
+
const schemaFields = React74__default.useMemo(() => {
|
|
39202
39301
|
if (normalizedFields.length === 0) return null;
|
|
39203
39302
|
if (isDebugEnabled()) {
|
|
39204
39303
|
debugGroup(`Form: ${entityName || "unknown"}`);
|
|
@@ -39208,7 +39307,7 @@ var init_Form = __esm({
|
|
|
39208
39307
|
}
|
|
39209
39308
|
return normalizedFields.map(renderField).filter(Boolean);
|
|
39210
39309
|
}, [normalizedFields, renderField, entityName, conditionalFields]);
|
|
39211
|
-
const sectionElements =
|
|
39310
|
+
const sectionElements = React74__default.useMemo(() => {
|
|
39212
39311
|
if (!sections || sections.length === 0) return null;
|
|
39213
39312
|
return sections.map((section) => {
|
|
39214
39313
|
if (!isSectionVisible(section)) {
|
|
@@ -39891,7 +39990,7 @@ var init_List = __esm({
|
|
|
39891
39990
|
Box,
|
|
39892
39991
|
{
|
|
39893
39992
|
className: cn(
|
|
39894
|
-
"h-full rounded-full transition-all duration-
|
|
39993
|
+
"h-full rounded-full transition-all duration-slow",
|
|
39895
39994
|
clampedValue >= 100 ? "bg-success" : clampedValue >= 70 ? "bg-info" : clampedValue >= 40 ? "bg-warning" : "bg-muted-foreground"
|
|
39896
39995
|
),
|
|
39897
39996
|
style: { width: `${clampedValue}%` }
|
|
@@ -39933,7 +40032,7 @@ var init_List = __esm({
|
|
|
39933
40032
|
if (entity && typeof entity === "object" && "id" in entity) return [entity];
|
|
39934
40033
|
return [];
|
|
39935
40034
|
}, [entity]);
|
|
39936
|
-
const getItemActions =
|
|
40035
|
+
const getItemActions = React74__default.useCallback(
|
|
39937
40036
|
(item) => {
|
|
39938
40037
|
if (!itemActions) return [];
|
|
39939
40038
|
if (typeof itemActions === "function") {
|
|
@@ -40060,7 +40159,7 @@ var init_List = __esm({
|
|
|
40060
40159
|
{
|
|
40061
40160
|
className: cn(
|
|
40062
40161
|
"group flex items-center gap-5 px-6 py-5",
|
|
40063
|
-
"transition-all duration-
|
|
40162
|
+
"transition-all duration-normal ease-standard",
|
|
40064
40163
|
hasExplicitClick && "cursor-pointer",
|
|
40065
40164
|
// Hover state
|
|
40066
40165
|
"hover:bg-muted/80",
|
|
@@ -40167,7 +40266,7 @@ var init_List = __esm({
|
|
|
40167
40266
|
variant: "ghost",
|
|
40168
40267
|
action: editAction.event,
|
|
40169
40268
|
className: cn(
|
|
40170
|
-
"p-2 rounded-lg transition-all duration-
|
|
40269
|
+
"p-2 rounded-lg transition-all duration-fast",
|
|
40171
40270
|
"hover:bg-primary/10 hover:text-primary",
|
|
40172
40271
|
"text-muted-foreground",
|
|
40173
40272
|
"active:scale-95"
|
|
@@ -40183,7 +40282,7 @@ var init_List = __esm({
|
|
|
40183
40282
|
variant: "ghost",
|
|
40184
40283
|
action: viewAction.event,
|
|
40185
40284
|
className: cn(
|
|
40186
|
-
"p-2 rounded-lg transition-all duration-
|
|
40285
|
+
"p-2 rounded-lg transition-all duration-fast",
|
|
40187
40286
|
"hover:bg-muted hover:text-foreground",
|
|
40188
40287
|
"text-muted-foreground",
|
|
40189
40288
|
"active:scale-95"
|
|
@@ -40205,7 +40304,7 @@ var init_List = __esm({
|
|
|
40205
40304
|
{
|
|
40206
40305
|
variant: "ghost",
|
|
40207
40306
|
className: cn(
|
|
40208
|
-
"p-2 rounded-lg transition-all duration-
|
|
40307
|
+
"p-2 rounded-lg transition-all duration-fast",
|
|
40209
40308
|
"hover:bg-muted hover:shadow-sm",
|
|
40210
40309
|
"text-muted-foreground hover:text-foreground",
|
|
40211
40310
|
"active:scale-95"
|
|
@@ -40417,7 +40516,7 @@ var init_MediaGallery = __esm({
|
|
|
40417
40516
|
[selectable, selectedItems, selectionEvent, eventBus]
|
|
40418
40517
|
);
|
|
40419
40518
|
const entityData = Array.isArray(entity) ? entity : [];
|
|
40420
|
-
const items =
|
|
40519
|
+
const items = React74__default.useMemo(() => {
|
|
40421
40520
|
if (propItems && propItems.length > 0) return propItems;
|
|
40422
40521
|
if (entityData.length === 0) return [];
|
|
40423
40522
|
return entityData.map((record, idx) => {
|
|
@@ -40495,7 +40594,7 @@ var init_MediaGallery = __esm({
|
|
|
40495
40594
|
{
|
|
40496
40595
|
className: cn(
|
|
40497
40596
|
"group relative overflow-hidden rounded-md cursor-pointer",
|
|
40498
|
-
"border-2 transition-all duration-
|
|
40597
|
+
"border-2 transition-all duration-fast",
|
|
40499
40598
|
isSelected ? "border-primary ring-2 ring-primary/30" : "border-transparent hover:border-border",
|
|
40500
40599
|
ASPECT_CLASSES[aspectRatio]
|
|
40501
40600
|
),
|
|
@@ -40516,14 +40615,14 @@ var init_MediaGallery = __esm({
|
|
|
40516
40615
|
{
|
|
40517
40616
|
className: cn(
|
|
40518
40617
|
"absolute inset-0 bg-foreground/0 group-hover:bg-foreground/20",
|
|
40519
|
-
"transition-colors duration-
|
|
40618
|
+
"transition-colors duration-fast flex items-center justify-center"
|
|
40520
40619
|
),
|
|
40521
40620
|
children: /* @__PURE__ */ jsx(
|
|
40522
40621
|
Icon,
|
|
40523
40622
|
{
|
|
40524
40623
|
icon: ZoomIn,
|
|
40525
40624
|
size: "md",
|
|
40526
|
-
className: "text-white opacity-0 group-hover:opacity-100 transition-opacity duration-
|
|
40625
|
+
className: "text-white opacity-0 group-hover:opacity-100 transition-opacity duration-fast"
|
|
40527
40626
|
}
|
|
40528
40627
|
)
|
|
40529
40628
|
}
|
|
@@ -40581,7 +40680,7 @@ var init_MediaGallery = __esm({
|
|
|
40581
40680
|
}
|
|
40582
40681
|
});
|
|
40583
40682
|
function extractTitle2(children) {
|
|
40584
|
-
if (!
|
|
40683
|
+
if (!React74__default.isValidElement(children)) return void 0;
|
|
40585
40684
|
const props = children.props;
|
|
40586
40685
|
if (typeof props.title === "string") {
|
|
40587
40686
|
return props.title;
|
|
@@ -40836,7 +40935,7 @@ var init_debugRegistry = __esm({
|
|
|
40836
40935
|
}
|
|
40837
40936
|
});
|
|
40838
40937
|
function useDebugData() {
|
|
40839
|
-
const [data, setData] =
|
|
40938
|
+
const [data, setData] = React74.useState(() => ({
|
|
40840
40939
|
traits: [],
|
|
40841
40940
|
ticks: [],
|
|
40842
40941
|
guards: [],
|
|
@@ -40850,7 +40949,7 @@ function useDebugData() {
|
|
|
40850
40949
|
},
|
|
40851
40950
|
lastUpdate: Date.now()
|
|
40852
40951
|
}));
|
|
40853
|
-
|
|
40952
|
+
React74.useEffect(() => {
|
|
40854
40953
|
const updateData = () => {
|
|
40855
40954
|
setData({
|
|
40856
40955
|
traits: getAllTraits(),
|
|
@@ -40959,12 +41058,12 @@ function layoutGraph(states, transitions, initialState, width, height) {
|
|
|
40959
41058
|
return positions;
|
|
40960
41059
|
}
|
|
40961
41060
|
function WalkMinimap() {
|
|
40962
|
-
const [walkStep, setWalkStep] =
|
|
40963
|
-
const [traits2, setTraits] =
|
|
40964
|
-
const [coveredEdges, setCoveredEdges] =
|
|
40965
|
-
const [completedTraits, setCompletedTraits] =
|
|
40966
|
-
const prevTraitRef =
|
|
40967
|
-
|
|
41061
|
+
const [walkStep, setWalkStep] = React74.useState(null);
|
|
41062
|
+
const [traits2, setTraits] = React74.useState([]);
|
|
41063
|
+
const [coveredEdges, setCoveredEdges] = React74.useState([]);
|
|
41064
|
+
const [completedTraits, setCompletedTraits] = React74.useState(/* @__PURE__ */ new Set());
|
|
41065
|
+
const prevTraitRef = React74.useRef(null);
|
|
41066
|
+
React74.useEffect(() => {
|
|
40968
41067
|
const interval = setInterval(() => {
|
|
40969
41068
|
const w = window;
|
|
40970
41069
|
const step = w.__orbitalWalkStep;
|
|
@@ -41400,15 +41499,15 @@ var init_EntitiesTab = __esm({
|
|
|
41400
41499
|
});
|
|
41401
41500
|
function EventFlowTab({ events: events2 }) {
|
|
41402
41501
|
const { t } = useTranslate();
|
|
41403
|
-
const [filter, setFilter] =
|
|
41404
|
-
const containerRef =
|
|
41405
|
-
const [autoScroll, setAutoScroll] =
|
|
41406
|
-
|
|
41502
|
+
const [filter, setFilter] = React74.useState("all");
|
|
41503
|
+
const containerRef = React74.useRef(null);
|
|
41504
|
+
const [autoScroll, setAutoScroll] = React74.useState(true);
|
|
41505
|
+
React74.useEffect(() => {
|
|
41407
41506
|
if (autoScroll && containerRef.current) {
|
|
41408
41507
|
containerRef.current.scrollTop = containerRef.current.scrollHeight;
|
|
41409
41508
|
}
|
|
41410
41509
|
}, [events2.length, autoScroll]);
|
|
41411
|
-
const filteredEvents =
|
|
41510
|
+
const filteredEvents = React74.useMemo(() => {
|
|
41412
41511
|
if (filter === "all") return events2;
|
|
41413
41512
|
return events2.filter((e) => e.type === filter);
|
|
41414
41513
|
}, [events2, filter]);
|
|
@@ -41524,7 +41623,7 @@ var init_EventFlowTab = __esm({
|
|
|
41524
41623
|
});
|
|
41525
41624
|
function GuardsPanel({ guards }) {
|
|
41526
41625
|
const { t } = useTranslate();
|
|
41527
|
-
const [filter, setFilter] =
|
|
41626
|
+
const [filter, setFilter] = React74.useState("all");
|
|
41528
41627
|
if (guards.length === 0) {
|
|
41529
41628
|
return /* @__PURE__ */ jsx(
|
|
41530
41629
|
EmptyState,
|
|
@@ -41537,7 +41636,7 @@ function GuardsPanel({ guards }) {
|
|
|
41537
41636
|
}
|
|
41538
41637
|
const passedCount = guards.filter((g) => g.result).length;
|
|
41539
41638
|
const failedCount = guards.length - passedCount;
|
|
41540
|
-
const filteredGuards =
|
|
41639
|
+
const filteredGuards = React74.useMemo(() => {
|
|
41541
41640
|
if (filter === "all") return guards;
|
|
41542
41641
|
if (filter === "passed") return guards.filter((g) => g.result);
|
|
41543
41642
|
return guards.filter((g) => !g.result);
|
|
@@ -41700,10 +41799,10 @@ function EffectBadge({ effect }) {
|
|
|
41700
41799
|
}
|
|
41701
41800
|
function TransitionTimeline({ transitions }) {
|
|
41702
41801
|
const { t } = useTranslate();
|
|
41703
|
-
const containerRef =
|
|
41704
|
-
const [autoScroll, setAutoScroll] =
|
|
41705
|
-
const [expandedId, setExpandedId] =
|
|
41706
|
-
|
|
41802
|
+
const containerRef = React74.useRef(null);
|
|
41803
|
+
const [autoScroll, setAutoScroll] = React74.useState(true);
|
|
41804
|
+
const [expandedId, setExpandedId] = React74.useState(null);
|
|
41805
|
+
React74.useEffect(() => {
|
|
41707
41806
|
if (autoScroll && containerRef.current) {
|
|
41708
41807
|
containerRef.current.scrollTop = containerRef.current.scrollHeight;
|
|
41709
41808
|
}
|
|
@@ -41983,9 +42082,9 @@ function getAllEvents(traits2) {
|
|
|
41983
42082
|
function EventDispatcherTab({ traits: traits2, schema }) {
|
|
41984
42083
|
const eventBus = useEventBus();
|
|
41985
42084
|
const { t } = useTranslate();
|
|
41986
|
-
const [log19, setLog] =
|
|
41987
|
-
const prevStatesRef =
|
|
41988
|
-
|
|
42085
|
+
const [log19, setLog] = React74.useState([]);
|
|
42086
|
+
const prevStatesRef = React74.useRef(/* @__PURE__ */ new Map());
|
|
42087
|
+
React74.useEffect(() => {
|
|
41989
42088
|
for (const trait of traits2) {
|
|
41990
42089
|
const prev = prevStatesRef.current.get(trait.id);
|
|
41991
42090
|
if (prev && prev !== trait.currentState) {
|
|
@@ -42154,10 +42253,10 @@ function VerifyModePanel({
|
|
|
42154
42253
|
localCount
|
|
42155
42254
|
}) {
|
|
42156
42255
|
const { t } = useTranslate();
|
|
42157
|
-
const [expanded, setExpanded] =
|
|
42158
|
-
const scrollRef =
|
|
42159
|
-
const prevCountRef =
|
|
42160
|
-
|
|
42256
|
+
const [expanded, setExpanded] = React74.useState(true);
|
|
42257
|
+
const scrollRef = React74.useRef(null);
|
|
42258
|
+
const prevCountRef = React74.useRef(0);
|
|
42259
|
+
React74.useEffect(() => {
|
|
42161
42260
|
if (expanded && transitions.length > prevCountRef.current && scrollRef.current) {
|
|
42162
42261
|
scrollRef.current.scrollTop = scrollRef.current.scrollHeight;
|
|
42163
42262
|
}
|
|
@@ -42214,10 +42313,10 @@ function RuntimeDebugger({
|
|
|
42214
42313
|
schema
|
|
42215
42314
|
}) {
|
|
42216
42315
|
const { t } = useTranslate();
|
|
42217
|
-
const [isCollapsed, setIsCollapsed] =
|
|
42218
|
-
const [isVisible, setIsVisible] =
|
|
42316
|
+
const [isCollapsed, setIsCollapsed] = React74.useState(mode === "verify" ? true : defaultCollapsed);
|
|
42317
|
+
const [isVisible, setIsVisible] = React74.useState(mode === "inline" || mode === "verify" || isDebugEnabled2());
|
|
42219
42318
|
const debugData = useDebugData();
|
|
42220
|
-
|
|
42319
|
+
React74.useEffect(() => {
|
|
42221
42320
|
if (mode === "inline") return;
|
|
42222
42321
|
return onDebugToggle((enabled) => {
|
|
42223
42322
|
setIsVisible(enabled);
|
|
@@ -42226,7 +42325,7 @@ function RuntimeDebugger({
|
|
|
42226
42325
|
}
|
|
42227
42326
|
});
|
|
42228
42327
|
}, [mode]);
|
|
42229
|
-
|
|
42328
|
+
React74.useEffect(() => {
|
|
42230
42329
|
if (mode === "inline") return;
|
|
42231
42330
|
const handleKeyDown = (e) => {
|
|
42232
42331
|
if (e.key === "`" && isVisible) {
|
|
@@ -42746,7 +42845,7 @@ var init_StatCard = __esm({
|
|
|
42746
42845
|
const labelToUse = propLabel ?? propTitle;
|
|
42747
42846
|
const eventBus = useEventBus();
|
|
42748
42847
|
const { t } = useTranslate();
|
|
42749
|
-
const handleActionClick =
|
|
42848
|
+
const handleActionClick = React74__default.useCallback(() => {
|
|
42750
42849
|
if (action?.event) {
|
|
42751
42850
|
eventBus.emit(`UI:${action.event}`, {});
|
|
42752
42851
|
}
|
|
@@ -42757,7 +42856,7 @@ var init_StatCard = __esm({
|
|
|
42757
42856
|
const data = Array.isArray(entity) ? entity : entity ? [entity] : [];
|
|
42758
42857
|
const isLoading = externalLoading ?? false;
|
|
42759
42858
|
const error = externalError;
|
|
42760
|
-
const computeMetricValue =
|
|
42859
|
+
const computeMetricValue = React74__default.useCallback(
|
|
42761
42860
|
(metric, items) => {
|
|
42762
42861
|
if (metric.value !== void 0) {
|
|
42763
42862
|
return metric.value;
|
|
@@ -42796,7 +42895,7 @@ var init_StatCard = __esm({
|
|
|
42796
42895
|
},
|
|
42797
42896
|
[]
|
|
42798
42897
|
);
|
|
42799
|
-
const schemaStats =
|
|
42898
|
+
const schemaStats = React74__default.useMemo(() => {
|
|
42800
42899
|
if (!metrics || metrics.length === 0) return null;
|
|
42801
42900
|
return metrics.map((metric) => ({
|
|
42802
42901
|
label: metric.label,
|
|
@@ -42804,7 +42903,7 @@ var init_StatCard = __esm({
|
|
|
42804
42903
|
format: metric.format
|
|
42805
42904
|
}));
|
|
42806
42905
|
}, [metrics, data, computeMetricValue]);
|
|
42807
|
-
const calculatedTrend =
|
|
42906
|
+
const calculatedTrend = React74__default.useMemo(() => {
|
|
42808
42907
|
if (manualTrend !== void 0) return manualTrend;
|
|
42809
42908
|
if (previousValue === void 0 || currentValue2 === void 0)
|
|
42810
42909
|
return void 0;
|
|
@@ -43444,8 +43543,8 @@ var init_SubagentTracePanel = __esm({
|
|
|
43444
43543
|
] });
|
|
43445
43544
|
};
|
|
43446
43545
|
InlineActivityStream = ({ activities, autoScroll = true, className }) => {
|
|
43447
|
-
const endRef =
|
|
43448
|
-
|
|
43546
|
+
const endRef = React74__default.useRef(null);
|
|
43547
|
+
React74__default.useEffect(() => {
|
|
43449
43548
|
if (!autoScroll) return;
|
|
43450
43549
|
endRef.current?.scrollIntoView({ behavior: "smooth", block: "end" });
|
|
43451
43550
|
}, [activities.length, autoScroll]);
|
|
@@ -43539,7 +43638,7 @@ var init_SubagentTracePanel = __esm({
|
|
|
43539
43638
|
};
|
|
43540
43639
|
SubagentRichCard = ({ subagent }) => {
|
|
43541
43640
|
const { t } = useTranslate();
|
|
43542
|
-
const activities =
|
|
43641
|
+
const activities = React74__default.useMemo(
|
|
43543
43642
|
() => subagentMessagesToActivities(subagent.messages),
|
|
43544
43643
|
[subagent.messages]
|
|
43545
43644
|
);
|
|
@@ -43616,8 +43715,8 @@ var init_SubagentTracePanel = __esm({
|
|
|
43616
43715
|
] });
|
|
43617
43716
|
};
|
|
43618
43717
|
CoordinatorConversation = ({ messages, autoScroll = true, className }) => {
|
|
43619
|
-
const endRef =
|
|
43620
|
-
|
|
43718
|
+
const endRef = React74__default.useRef(null);
|
|
43719
|
+
React74__default.useEffect(() => {
|
|
43621
43720
|
if (!autoScroll) return;
|
|
43622
43721
|
endRef.current?.scrollIntoView({ behavior: "smooth", block: "end" });
|
|
43623
43722
|
}, [messages.length, autoScroll]);
|
|
@@ -44052,7 +44151,7 @@ var init_Timeline = __esm({
|
|
|
44052
44151
|
}) => {
|
|
44053
44152
|
const { t } = useTranslate();
|
|
44054
44153
|
const entityData = entity ?? [];
|
|
44055
|
-
const items =
|
|
44154
|
+
const items = React74__default.useMemo(() => {
|
|
44056
44155
|
if (propItems) return propItems;
|
|
44057
44156
|
if (entityData.length === 0) return [];
|
|
44058
44157
|
return entityData.map((record, idx) => {
|
|
@@ -44154,7 +44253,7 @@ var init_Timeline = __esm({
|
|
|
44154
44253
|
}
|
|
44155
44254
|
});
|
|
44156
44255
|
function extractToastProps(children) {
|
|
44157
|
-
if (!
|
|
44256
|
+
if (!React74__default.isValidElement(children)) {
|
|
44158
44257
|
if (typeof children === "string") {
|
|
44159
44258
|
return { message: children };
|
|
44160
44259
|
}
|
|
@@ -44196,7 +44295,7 @@ var init_ToastSlot = __esm({
|
|
|
44196
44295
|
eventBus.emit(`${prefix}CLOSE`);
|
|
44197
44296
|
};
|
|
44198
44297
|
if (!isVisible) return null;
|
|
44199
|
-
const isCustomContent =
|
|
44298
|
+
const isCustomContent = React74__default.isValidElement(children) && !message;
|
|
44200
44299
|
return /* @__PURE__ */ jsx(Box, { className: "fixed bottom-4 right-4 z-50", children: isCustomContent ? children : /* @__PURE__ */ jsx(
|
|
44201
44300
|
Toast,
|
|
44202
44301
|
{
|
|
@@ -44244,6 +44343,7 @@ var init_component_registry_generated = __esm({
|
|
|
44244
44343
|
init_LayoutPatterns();
|
|
44245
44344
|
init_BranchingLogicBuilder();
|
|
44246
44345
|
init_Breadcrumb();
|
|
44346
|
+
init_ButtonGroup();
|
|
44247
44347
|
init_CTABanner();
|
|
44248
44348
|
init_CalendarGrid();
|
|
44249
44349
|
init_Canvas();
|
|
@@ -44314,8 +44414,8 @@ var init_component_registry_generated = __esm({
|
|
|
44314
44414
|
init_FlipContainer();
|
|
44315
44415
|
init_FloatingActionButton();
|
|
44316
44416
|
init_Form();
|
|
44317
|
-
init_FormSection();
|
|
44318
44417
|
init_FormField();
|
|
44418
|
+
init_FormSection();
|
|
44319
44419
|
init_FormSectionHeader();
|
|
44320
44420
|
init_GameAudioToggle();
|
|
44321
44421
|
init_GameHud();
|
|
@@ -44501,6 +44601,7 @@ var init_component_registry_generated = __esm({
|
|
|
44501
44601
|
"BranchingLogicBuilder": BranchingLogicBuilder,
|
|
44502
44602
|
"Breadcrumb": Breadcrumb,
|
|
44503
44603
|
"Button": ButtonPattern,
|
|
44604
|
+
"ButtonGroup": ButtonGroup,
|
|
44504
44605
|
"ButtonPattern": ButtonPattern,
|
|
44505
44606
|
"CTABanner": CTABanner,
|
|
44506
44607
|
"CalendarGrid": CalendarGrid,
|
|
@@ -44574,7 +44675,6 @@ var init_component_registry_generated = __esm({
|
|
|
44574
44675
|
"FlipContainer": FlipContainer,
|
|
44575
44676
|
"FloatingActionButton": FloatingActionButton,
|
|
44576
44677
|
"Form": Form,
|
|
44577
|
-
"FormActions": FormActions,
|
|
44578
44678
|
"FormField": FormField,
|
|
44579
44679
|
"FormLayout": FormLayout,
|
|
44580
44680
|
"FormSectionHeader": FormSectionHeader,
|
|
@@ -44754,7 +44854,7 @@ function SuspenseConfigProvider({
|
|
|
44754
44854
|
config,
|
|
44755
44855
|
children
|
|
44756
44856
|
}) {
|
|
44757
|
-
return
|
|
44857
|
+
return React74__default.createElement(
|
|
44758
44858
|
SuspenseConfigContext.Provider,
|
|
44759
44859
|
{ value: config },
|
|
44760
44860
|
children
|
|
@@ -44796,7 +44896,7 @@ function enrichFormFields(fields, entityDef) {
|
|
|
44796
44896
|
}
|
|
44797
44897
|
return { name: field, label: field.replace(/([a-z])([A-Z])/g, "$1 $2").replace(/\b\w/g, (c) => c.toUpperCase()) };
|
|
44798
44898
|
}
|
|
44799
|
-
if (field && typeof field === "object" && !Array.isArray(field) && !
|
|
44899
|
+
if (field && typeof field === "object" && !Array.isArray(field) && !React74__default.isValidElement(field) && !(field instanceof Date)) {
|
|
44800
44900
|
const obj = field;
|
|
44801
44901
|
const fieldName = typeof obj.name === "string" ? obj.name : typeof obj.field === "string" ? obj.field : void 0;
|
|
44802
44902
|
if (!fieldName) return field;
|
|
@@ -45249,7 +45349,7 @@ function renderPatternChildren(children, onDismiss, parentId = "root", parentPat
|
|
|
45249
45349
|
const key = `${parentId}-${index}-trait:${traitName}`;
|
|
45250
45350
|
return /* @__PURE__ */ jsx(TraitFrame, { traitName }, key);
|
|
45251
45351
|
}
|
|
45252
|
-
return /* @__PURE__ */ jsx(
|
|
45352
|
+
return /* @__PURE__ */ jsx(React74__default.Fragment, { children: child }, `${parentId}-${index}`);
|
|
45253
45353
|
}
|
|
45254
45354
|
if (!child || typeof child !== "object") return null;
|
|
45255
45355
|
const childId = `${parentId}-${index}`;
|
|
@@ -45302,14 +45402,14 @@ function isPatternConfig(value) {
|
|
|
45302
45402
|
if (value === null || value === void 0) return false;
|
|
45303
45403
|
if (typeof value !== "object") return false;
|
|
45304
45404
|
if (Array.isArray(value)) return false;
|
|
45305
|
-
if (
|
|
45405
|
+
if (React74__default.isValidElement(value)) return false;
|
|
45306
45406
|
if (value instanceof Date) return false;
|
|
45307
45407
|
if (typeof value === "function") return false;
|
|
45308
45408
|
const record = value;
|
|
45309
45409
|
return "type" in record && typeof record.type === "string" && getComponentForPattern$1(record.type) !== null;
|
|
45310
45410
|
}
|
|
45311
45411
|
function isPlainConfigObject(value) {
|
|
45312
|
-
if (
|
|
45412
|
+
if (React74__default.isValidElement(value)) return false;
|
|
45313
45413
|
if (value instanceof Date) return false;
|
|
45314
45414
|
const proto = Object.getPrototypeOf(value);
|
|
45315
45415
|
return proto === Object.prototype || proto === null;
|
|
@@ -45437,7 +45537,7 @@ function SlotContentRenderer({
|
|
|
45437
45537
|
for (const slotKey of CONTENT_NODE_SLOTS) {
|
|
45438
45538
|
const slotVal = restProps[slotKey];
|
|
45439
45539
|
if (slotVal === void 0 || slotVal === null) continue;
|
|
45440
|
-
if (
|
|
45540
|
+
if (React74__default.isValidElement(slotVal) || typeof slotVal === "string" || typeof slotVal === "number" || typeof slotVal === "boolean") continue;
|
|
45441
45541
|
if (Array.isArray(slotVal) || typeof slotVal === "object" && "type" in slotVal) {
|
|
45442
45542
|
nodeSlotOverrides[slotKey] = renderPatternChildren(
|
|
45443
45543
|
slotVal,
|
|
@@ -45490,7 +45590,7 @@ function SlotContentRenderer({
|
|
|
45490
45590
|
const resolvedItems = Array.isArray(entityVal) && entityVal[0] !== "fn" ? entityVal : null;
|
|
45491
45591
|
if (resolvedItems && resolvedItems.length > 0 && !finalProps.fields && !finalProps.columns) {
|
|
45492
45592
|
const sample = resolvedItems[0];
|
|
45493
|
-
if (sample && typeof sample === "object" && !Array.isArray(sample) && !
|
|
45593
|
+
if (sample && typeof sample === "object" && !Array.isArray(sample) && !React74__default.isValidElement(sample) && !(sample instanceof Date)) {
|
|
45494
45594
|
const keys = Object.keys(sample).filter((k) => k !== "id" && k !== "_id");
|
|
45495
45595
|
finalProps.fields = keys.map((k, i) => ({ name: k, variant: i === 0 ? "h4" : "body" }));
|
|
45496
45596
|
}
|
|
@@ -45769,6 +45869,7 @@ var init_atoms = __esm({
|
|
|
45769
45869
|
init_Typography();
|
|
45770
45870
|
init_ThemeToggle();
|
|
45771
45871
|
init_Overlay();
|
|
45872
|
+
init_Presence();
|
|
45772
45873
|
init_FlipContainer();
|
|
45773
45874
|
init_Dialog();
|
|
45774
45875
|
init_Aside();
|
|
@@ -48135,4 +48236,4 @@ function useGitHubBranches(owner, repo, enabled = true) {
|
|
|
48135
48236
|
});
|
|
48136
48237
|
}
|
|
48137
48238
|
|
|
48138
|
-
export { ALL_PRESETS, ALMADAR_DND_MIME, AR_BOOK_FIELDS, AboutPageTemplate, Accordion, Card2 as ActionCard, ActionPalette, ActionTile, ActivationBlock, Alert, AlgorithmCanvas, AnimatedCounter, AnimatedGraphic, AnimatedReveal, ArticleSection, Aside, AssetPicker, AtlasImage, AtlasPanel, AuthLayout, Avatar, Badge, BehaviorView, BiologyCanvas, BloomQuizBlock, BookChapterView, BookCoverPage, BookNavBar, BookTableOfContents, BookViewer, Box, BranchingLogicBuilder, Breadcrumb, Button, ButtonGroup, CTABanner, CalendarGrid, Canvas, Canvas2D, Card, CardBody, CardContent, CardFooter, CardGrid, CardHeader, CardTitle, Carousel, CaseStudyCard, CaseStudyOrganism, Center, Chart, ChartLegend, ChatBar, Checkbox, ChemistryCanvas, ChoiceButton, Coachmark, CodeBlock, CodeRunnerPanel, CollapsibleSection, CommunityLinks, ConditionalWrapper, ConfettiEffect, ConfirmDialog, ConnectionBlock, Container, ContentRenderer, ContentSection, ControlButton, ControlGrid, CounterTemplate, DEFAULT_LIKERT_OPTIONS, DEFAULT_MATRIX_COLUMNS, DEFAULT_SLOTS, DIAMOND_TOP_Y, DashboardGrid, DashboardLayout, DataGrid, DataList, DataTable, DateRangePicker, DateRangeSelector, DayCell, DetailPanel, Dialog, DialogueBubble, Divider, DocBreadcrumb, DocPagination, DocSearch, DocSidebar, DocTOC, DocumentViewer, StateMachineView as DomStateMachineVisualizer, Drawer, DrawerSlot, ELEMENT_SELECTED_EVENT, EdgeDecoration, EditorCheckbox, EditorSelect, EditorSlider, EditorTextInput, EditorToolbar, EmptyState, EntityDisplayEvents, ErrorBoundary, ErrorState, FEATURE_COLORS, FEATURE_TYPES, FLOOR_HEIGHT, FeatureCard, FeatureDetailPageTemplate, FeatureGrid, FeatureGridOrganism, FileTree, FilterGroup, FilterPill, Flex, FlipCard, FlipContainer, FloatingActionButton, Form, FormActions, FormField, FormLayout, FormSection, FormSectionHeader, GameAudioToggle, GameHud, GameIcon, GameMenu, GameShell, GenericAppTemplate, GeometricPattern, GradientDivider, GraphCanvas, GraphView, Grid, GridPicker, HStack, Header, HealthBar, HeroOrganism, HeroSection, I18nProvider, IDENTITY_BOOK_FIELDS, Icon, IconPicker, InfiniteScrollSentinel, Input, InputGroup, InstallBox, JazariStateMachine, JsonTreeEditor, Label, LandingPageTemplate, LawReferenceTooltip, LearningCanvas, Lightbox, LikertScale, LineChart2 as LineChart, List3 as List, LoadingState, MapView, MarkdownContent, MarketingFooter, MarketingStatCard, MasterDetail, MasterDetailLayout, MathCanvas, MatrixQuestion, MediaGallery, Menu, Meter, Modal, ModalSlot, ModuleCard, Navigation, NodeSlotEditor, NotifyListener, NumberStepper, OnboardingSpotlight, OptionConstraintGroup, StateMachineView as OrbitalStateMachineView, OrbitalVisualization, Overlay, PageHeader, Pagination, PatternTile, PhysicsCanvas, Popover, PositionedCanvas, PricingCard, PricingGrid, PricingOrganism, PricingPageTemplate, ProgressBar, ProgressDots, PropertyInspector, PullQuote, PullToRefresh, QrScanner, QuizBlock, Radio, RangeSlider, ReflectionBlock, RelationSelect, RepeatableFormSection, ReplyTree, RichBlockEditor, RuntimeDebugger, SHEET_COLUMNS, SPRITE_SHEET_LAYOUT, ScaledDiagram, ScoreDisplay, SearchInput, Section, SectionHeader, SegmentRenderer, Select, SequenceBar, ServiceCatalog, SharedEntityStoreContext, ShowcaseCard, ShowcaseOrganism, SidePanel, Sidebar, SignaturePad, SimpleGrid, Skeleton, SlotContentRenderer, SocialProof, SortableList, Spacer, Sparkline, Spinner, Split, SplitPane, SplitSection, Stack, StarRating, StatBadge, StatCard, StatDisplay, StateGraph, StateJsonView, StateMachineView, StateNode2 as StateNode, StatsGrid, StatsOrganism, StatusBar, StatusDot, StepFlow, StepFlowOrganism, SubagentTracePanel, SvgBranch, SvgConnection, SvgFlow, SvgGrid, SvgLobe, SvgMesh, SvgMorph, SvgNode, SvgPulse, SvgRing, SvgShield, SvgStack, SwipeableRow, Switch, TERRAIN_COLORS, TILE_HEIGHT, TILE_WIDTH, TabbedContainer, TableView, Tabs, TagCloud, TagInput, TeamCard, TeamOrganism, TerrainPalette, TextHighlight, Textarea, ThemeToggle, TimeSlotCell, Timeline, TimerDisplay, Toast, ToastSlot, Tooltip, TraitFrame, TraitSlot, TraitStateViewer, TransitionArrow, TrendIndicator, TypewriterText, Typography, UISlotComponent, UISlotRenderer, UploadDropZone, VStack, VersionDiff, ViolationAlert, VoteStack, WizardContainer, WizardNavigation, WizardProgress, boardEntity, bool, calculateAttackTargets, calculateValidMoves, cn, createInitialGameState, createSharedEntityStore, createTranslate, createUnitAnimationState, getCurrentFrame, getTileDimensions, inferDirection, isoToScreen, makeAsset, makeAssetMap, mapBookData, num, objAvailableActions, objAvailableEvents, objCurrentState, objIcon, objId, objMaxRules, objName, objRules, objStates, parseEditFocus, parseLessonSegments, parseMarkdownWithCodeBlocks, parseQueryBinding, pendulum, projectileMotion, resolveFieldMap, resolveFrame, resolveSheetDirection, rows, runTickFrame, screenToIso, springOscillator, str, tickAnimationState, toCodeLanguage, transitionAnimation, unitHealth, unitPosition, unitTeam, useAgentChat, useAnchorRect, useAtlasSliceDataUrl, useAuthContext, useCamera, useCanvasGestures, useCompile, useConnectGitHub, useDeepAgentGeneration, useDisconnectGitHub, useDragReorder, useDraggable, useDropZone, useEmitEvent, useEventBus, useEventListener, useExtensions, useFileEditor, useFileSystem, useGameAudio, useGitHubBranches, useGitHubRepo, useGitHubRepos, useGitHubStatus, useImageCache, useInfiniteScroll, useLongPress, useOrbitalHistory, usePreview, usePullToRefresh, useQuerySingleton, useRenderInterpolation, useSharedEntitySnapshot, useSharedEntityStore, useSharedEntityStoreContext, useSwipeGesture, useTapReveal, useTraitListens, useTranslate115 as useTranslate, useUIEvents, useUISlotManager, useUnitSpriteAtlas, useValidation, vec2 };
|
|
48239
|
+
export { ALL_PRESETS, ALMADAR_DND_MIME, AR_BOOK_FIELDS, AboutPageTemplate, Accordion, Card2 as ActionCard, ActionPalette, ActionTile, ActivationBlock, Alert, AlgorithmCanvas, AnimatedCounter, AnimatedGraphic, AnimatedReveal, ArticleSection, Aside, AssetPicker, AtlasImage, AtlasPanel, AuthLayout, Avatar, Badge, BehaviorView, BiologyCanvas, BloomQuizBlock, BookChapterView, BookCoverPage, BookNavBar, BookTableOfContents, BookViewer, Box, BranchingLogicBuilder, Breadcrumb, Button, ButtonGroup, CTABanner, CalendarGrid, Canvas, Canvas2D, Card, CardBody, CardContent, CardFooter, CardGrid, CardHeader, CardTitle, Carousel, CaseStudyCard, CaseStudyOrganism, Center, Chart, ChartLegend, ChatBar, Checkbox, ChemistryCanvas, ChoiceButton, Coachmark, CodeBlock, CodeRunnerPanel, CollapsibleSection, CommunityLinks, ConditionalWrapper, ConfettiEffect, ConfirmDialog, ConnectionBlock, Container, ContentRenderer, ContentSection, ControlButton, ControlGrid, CounterTemplate, DEFAULT_LIKERT_OPTIONS, DEFAULT_MATRIX_COLUMNS, DEFAULT_SLOTS, DIAMOND_TOP_Y, DashboardGrid, DashboardLayout, DataGrid, DataList, DataTable, DateRangePicker, DateRangeSelector, DayCell, DetailPanel, Dialog, DialogueBubble, Divider, DocBreadcrumb, DocPagination, DocSearch, DocSidebar, DocTOC, DocumentViewer, StateMachineView as DomStateMachineVisualizer, Drawer, DrawerSlot, ELEMENT_SELECTED_EVENT, EdgeDecoration, EditorCheckbox, EditorSelect, EditorSlider, EditorTextInput, EditorToolbar, EmptyState, EntityDisplayEvents, ErrorBoundary, ErrorState, FEATURE_COLORS, FEATURE_TYPES, FLOOR_HEIGHT, FeatureCard, FeatureDetailPageTemplate, FeatureGrid, FeatureGridOrganism, FileTree, FilterGroup, FilterPill, Flex, FlipCard, FlipContainer, FloatingActionButton, Form, FormActions, FormField, FormLayout, FormSection, FormSectionHeader, GameAudioToggle, GameHud, GameIcon, GameMenu, GameShell, GenericAppTemplate, GeometricPattern, GradientDivider, GraphCanvas, GraphView, Grid, GridPicker, HStack, Header, HealthBar, HeroOrganism, HeroSection, I18nProvider, IDENTITY_BOOK_FIELDS, Icon, IconPicker, InfiniteScrollSentinel, Input, InputGroup, InstallBox, JazariStateMachine, JsonTreeEditor, Label, LandingPageTemplate, LawReferenceTooltip, LearningCanvas, Lightbox, LikertScale, LineChart2 as LineChart, List3 as List, LoadingState, MapView, MarkdownContent, MarketingFooter, MarketingStatCard, MasterDetail, MasterDetailLayout, MathCanvas, MatrixQuestion, MediaGallery, Menu, Meter, Modal, ModalSlot, ModuleCard, Navigation, NodeSlotEditor, NotifyListener, NumberStepper, OnboardingSpotlight, OptionConstraintGroup, StateMachineView as OrbitalStateMachineView, OrbitalVisualization, Overlay, PageHeader, PageTransition, Pagination, PatternTile, PhysicsCanvas, Popover, PositionedCanvas, Presence, PricingCard, PricingGrid, PricingOrganism, PricingPageTemplate, ProgressBar, ProgressDots, PropertyInspector, PullQuote, PullToRefresh, QrScanner, QuizBlock, Radio, RangeSlider, ReflectionBlock, RelationSelect, RepeatableFormSection, ReplyTree, RichBlockEditor, RuntimeDebugger, SHEET_COLUMNS, SPRITE_SHEET_LAYOUT, ScaledDiagram, ScoreDisplay, SearchInput, Section, SectionHeader, SegmentRenderer, Select, SequenceBar, ServiceCatalog, SharedEntityStoreContext, ShowcaseCard, ShowcaseOrganism, SidePanel, Sidebar, SignaturePad, SimpleGrid, Skeleton, SlotContentRenderer, SocialProof, SortableList, Spacer, Sparkline, Spinner, Split, SplitPane, SplitSection, Stack, StarRating, StatBadge, StatCard, StatDisplay, StateGraph, StateJsonView, StateMachineView, StateNode2 as StateNode, StatsGrid, StatsOrganism, StatusBar, StatusDot, StepFlow, StepFlowOrganism, SubagentTracePanel, SvgBranch, SvgConnection, SvgFlow, SvgGrid, SvgLobe, SvgMesh, SvgMorph, SvgNode, SvgPulse, SvgRing, SvgShield, SvgStack, SwipeableRow, Switch, TERRAIN_COLORS, TILE_HEIGHT, TILE_WIDTH, TabbedContainer, TableView, Tabs, TagCloud, TagInput, TeamCard, TeamOrganism, TerrainPalette, TextHighlight, Textarea, ThemeToggle, TimeSlotCell, Timeline, TimerDisplay, Toast, ToastSlot, Tooltip, TraitFrame, TraitSlot, TraitStateViewer, TransitionArrow, TrendIndicator, TypewriterText, Typography, UISlotComponent, UISlotRenderer, UploadDropZone, VStack, VersionDiff, ViolationAlert, VoteStack, WizardContainer, WizardNavigation, WizardProgress, boardEntity, bool, calculateAttackTargets, calculateValidMoves, cn, createInitialGameState, createSharedEntityStore, createTranslate, createUnitAnimationState, getCurrentFrame, getTileDimensions, inferDirection, isoToScreen, makeAsset, makeAssetMap, mapBookData, num, objAvailableActions, objAvailableEvents, objCurrentState, objIcon, objId, objMaxRules, objName, objRules, objStates, parseEditFocus, parseLessonSegments, parseMarkdownWithCodeBlocks, parseQueryBinding, pendulum, projectileMotion, resolveFieldMap, resolveFrame, resolveSheetDirection, rows, runTickFrame, screenToIso, springOscillator, str, tickAnimationState, toCodeLanguage, transitionAnimation, unitHealth, unitPosition, unitTeam, useAgentChat, useAnchorRect, useAtlasSliceDataUrl, useAuthContext, useCamera, useCanvasGestures, useCompile, useConnectGitHub, useDeepAgentGeneration, useDisconnectGitHub, useDragReorder, useDraggable, useDropZone, useEmitEvent, useEventBus, useEventListener, useExtensions, useFileEditor, useFileSystem, useGameAudio, useGitHubBranches, useGitHubRepo, useGitHubRepos, useGitHubStatus, useImageCache, useInfiniteScroll, useLongPress, useOrbitalHistory, usePresence, usePreview, usePullToRefresh, useQuerySingleton, useRenderInterpolation, useSharedEntitySnapshot, useSharedEntityStore, useSharedEntityStoreContext, useSwipeGesture, useTapReveal, useTraitListens, useTranslate115 as useTranslate, useUIEvents, useUISlotManager, useUnitSpriteAtlas, useValidation, vec2 };
|