@almadar/ui 4.51.16 → 4.53.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 +2022 -1871
- package/dist/avl/index.js +776 -625
- package/dist/components/atoms/Aside.d.ts +15 -0
- package/dist/components/atoms/Dialog.d.ts +18 -0
- package/dist/components/atoms/index.d.ts +2 -0
- package/dist/components/index.cjs +1605 -1475
- package/dist/components/index.js +582 -452
- package/dist/components/molecules/CalendarGrid.d.ts +14 -1
- package/dist/components/molecules/SidePanel.d.ts +7 -2
- package/dist/components/molecules/Tabs.d.ts +10 -2
- package/dist/components/molecules/avl/avl-preview-types.d.ts +24 -3
- package/dist/components/organisms/game/three/index.cjs +175 -185
- package/dist/components/organisms/game/three/index.js +12 -22
- package/dist/docs/index.cjs +7 -17
- package/dist/docs/index.js +8 -18
- package/dist/marketing/index.cjs +32 -28
- package/dist/marketing/index.js +33 -29
- package/dist/providers/index.cjs +1701 -1573
- package/dist/providers/index.js +810 -682
- package/dist/runtime/index.cjs +1740 -1612
- package/dist/runtime/index.js +814 -686
- package/package.json +2 -1
- package/tailwind-preset.cjs +16 -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 React78 from 'react';
|
|
3
|
+
import React78__default, { useContext, useMemo, useRef, useEffect, useCallback, createContext, Suspense, useState, lazy, useSyncExternalStore, useLayoutEffect, useId } from 'react';
|
|
4
4
|
import { clsx } from 'clsx';
|
|
5
5
|
import { twMerge } from 'tailwind-merge';
|
|
6
6
|
import { EventBusContext, useTraitScope, TraitScopeProvider } from '@almadar/ui/providers';
|
|
@@ -206,7 +206,7 @@ var init_SvgFlow = __esm({
|
|
|
206
206
|
opacity = 1,
|
|
207
207
|
className
|
|
208
208
|
}) => {
|
|
209
|
-
const markerId =
|
|
209
|
+
const markerId = React78__default.useMemo(() => {
|
|
210
210
|
flowIdCounter += 1;
|
|
211
211
|
return `almadar-flow-arrow-${flowIdCounter}`;
|
|
212
212
|
}, []);
|
|
@@ -749,7 +749,7 @@ var init_SvgRing = __esm({
|
|
|
749
749
|
className,
|
|
750
750
|
label
|
|
751
751
|
}) => {
|
|
752
|
-
const gradientId =
|
|
752
|
+
const gradientId = React78__default.useMemo(() => {
|
|
753
753
|
ringIdCounter += 1;
|
|
754
754
|
return `almadar-ring-glow-${ringIdCounter}`;
|
|
755
755
|
}, []);
|
|
@@ -1177,7 +1177,7 @@ function resolveIconProp(value, sizeClass) {
|
|
|
1177
1177
|
const IconComp = value;
|
|
1178
1178
|
return /* @__PURE__ */ jsx(IconComp, { className: sizeClass });
|
|
1179
1179
|
}
|
|
1180
|
-
if (
|
|
1180
|
+
if (React78__default.isValidElement(value)) {
|
|
1181
1181
|
return value;
|
|
1182
1182
|
}
|
|
1183
1183
|
if (typeof value === "object" && value !== null && "render" in value) {
|
|
@@ -1253,7 +1253,7 @@ var init_Button = __esm({
|
|
|
1253
1253
|
md: "h-4 w-4",
|
|
1254
1254
|
lg: "h-5 w-5"
|
|
1255
1255
|
};
|
|
1256
|
-
Button =
|
|
1256
|
+
Button = React78__default.forwardRef(
|
|
1257
1257
|
({
|
|
1258
1258
|
className,
|
|
1259
1259
|
variant = "primary",
|
|
@@ -1318,7 +1318,7 @@ var Input;
|
|
|
1318
1318
|
var init_Input = __esm({
|
|
1319
1319
|
"components/atoms/Input.tsx"() {
|
|
1320
1320
|
init_cn();
|
|
1321
|
-
Input =
|
|
1321
|
+
Input = React78__default.forwardRef(
|
|
1322
1322
|
({
|
|
1323
1323
|
className,
|
|
1324
1324
|
inputType,
|
|
@@ -1436,7 +1436,7 @@ var Label;
|
|
|
1436
1436
|
var init_Label = __esm({
|
|
1437
1437
|
"components/atoms/Label.tsx"() {
|
|
1438
1438
|
init_cn();
|
|
1439
|
-
Label =
|
|
1439
|
+
Label = React78__default.forwardRef(
|
|
1440
1440
|
({ className, required, children, ...props }, ref) => {
|
|
1441
1441
|
return /* @__PURE__ */ jsxs(
|
|
1442
1442
|
"label",
|
|
@@ -1462,7 +1462,7 @@ var Textarea;
|
|
|
1462
1462
|
var init_Textarea = __esm({
|
|
1463
1463
|
"components/atoms/Textarea.tsx"() {
|
|
1464
1464
|
init_cn();
|
|
1465
|
-
Textarea =
|
|
1465
|
+
Textarea = React78__default.forwardRef(
|
|
1466
1466
|
({ className, error, ...props }, ref) => {
|
|
1467
1467
|
return /* @__PURE__ */ jsx(
|
|
1468
1468
|
"textarea",
|
|
@@ -1491,7 +1491,7 @@ var Select;
|
|
|
1491
1491
|
var init_Select = __esm({
|
|
1492
1492
|
"components/atoms/Select.tsx"() {
|
|
1493
1493
|
init_cn();
|
|
1494
|
-
Select =
|
|
1494
|
+
Select = React78__default.forwardRef(
|
|
1495
1495
|
({ className, options, placeholder, error, ...props }, ref) => {
|
|
1496
1496
|
return /* @__PURE__ */ jsxs("div", { className: "relative", children: [
|
|
1497
1497
|
/* @__PURE__ */ jsxs(
|
|
@@ -1533,7 +1533,7 @@ var Checkbox;
|
|
|
1533
1533
|
var init_Checkbox = __esm({
|
|
1534
1534
|
"components/atoms/Checkbox.tsx"() {
|
|
1535
1535
|
init_cn();
|
|
1536
|
-
Checkbox =
|
|
1536
|
+
Checkbox = React78__default.forwardRef(
|
|
1537
1537
|
({ className, label, id, ...props }, ref) => {
|
|
1538
1538
|
const inputId = id || `checkbox-${Math.random().toString(36).substr(2, 9)}`;
|
|
1539
1539
|
return /* @__PURE__ */ jsxs("div", { className: "flex items-center", children: [
|
|
@@ -1615,7 +1615,7 @@ var init_Card = __esm({
|
|
|
1615
1615
|
md: "shadow",
|
|
1616
1616
|
lg: "shadow-lg"
|
|
1617
1617
|
};
|
|
1618
|
-
Card =
|
|
1618
|
+
Card = React78__default.forwardRef(
|
|
1619
1619
|
({
|
|
1620
1620
|
className,
|
|
1621
1621
|
variant = "bordered",
|
|
@@ -1651,9 +1651,9 @@ var init_Card = __esm({
|
|
|
1651
1651
|
}
|
|
1652
1652
|
);
|
|
1653
1653
|
Card.displayName = "Card";
|
|
1654
|
-
CardHeader =
|
|
1654
|
+
CardHeader = React78__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn("mb-4", className), ...props }));
|
|
1655
1655
|
CardHeader.displayName = "CardHeader";
|
|
1656
|
-
CardTitle =
|
|
1656
|
+
CardTitle = React78__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
1657
1657
|
"h3",
|
|
1658
1658
|
{
|
|
1659
1659
|
ref,
|
|
@@ -1666,11 +1666,11 @@ var init_Card = __esm({
|
|
|
1666
1666
|
}
|
|
1667
1667
|
));
|
|
1668
1668
|
CardTitle.displayName = "CardTitle";
|
|
1669
|
-
CardContent =
|
|
1669
|
+
CardContent = React78__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn("", className), ...props }));
|
|
1670
1670
|
CardContent.displayName = "CardContent";
|
|
1671
1671
|
CardBody = CardContent;
|
|
1672
1672
|
CardBody.displayName = "CardBody";
|
|
1673
|
-
CardFooter =
|
|
1673
|
+
CardFooter = React78__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
1674
1674
|
"div",
|
|
1675
1675
|
{
|
|
1676
1676
|
ref,
|
|
@@ -1723,7 +1723,7 @@ var init_Badge = __esm({
|
|
|
1723
1723
|
md: "px-2.5 py-1 text-sm",
|
|
1724
1724
|
lg: "px-3 py-1.5 text-base"
|
|
1725
1725
|
};
|
|
1726
|
-
Badge =
|
|
1726
|
+
Badge = React78__default.forwardRef(
|
|
1727
1727
|
({ className, variant = "default", size = "sm", amount, label, icon, children, ...props }, ref) => {
|
|
1728
1728
|
const iconSizes3 = { sm: "w-3 h-3", md: "w-3.5 h-3.5", lg: "w-4 h-4" };
|
|
1729
1729
|
const resolvedIcon = typeof icon === "string" ? (() => {
|
|
@@ -1796,7 +1796,7 @@ var init_FilterPill = __esm({
|
|
|
1796
1796
|
md: "w-3.5 h-3.5",
|
|
1797
1797
|
lg: "w-4 h-4"
|
|
1798
1798
|
};
|
|
1799
|
-
FilterPill =
|
|
1799
|
+
FilterPill = React78__default.forwardRef(
|
|
1800
1800
|
({
|
|
1801
1801
|
className,
|
|
1802
1802
|
variant = "default",
|
|
@@ -1875,7 +1875,7 @@ var init_Spinner = __esm({
|
|
|
1875
1875
|
md: "h-6 w-6",
|
|
1876
1876
|
lg: "h-8 w-8"
|
|
1877
1877
|
};
|
|
1878
|
-
Spinner =
|
|
1878
|
+
Spinner = React78__default.forwardRef(
|
|
1879
1879
|
({ className, size = "md", ...props }, ref) => {
|
|
1880
1880
|
return /* @__PURE__ */ jsx(
|
|
1881
1881
|
"div",
|
|
@@ -2156,7 +2156,7 @@ var init_Box = __esm({
|
|
|
2156
2156
|
fixed: "fixed",
|
|
2157
2157
|
sticky: "sticky"
|
|
2158
2158
|
};
|
|
2159
|
-
Box =
|
|
2159
|
+
Box = React78__default.forwardRef(
|
|
2160
2160
|
({
|
|
2161
2161
|
padding,
|
|
2162
2162
|
paddingX,
|
|
@@ -2206,38 +2206,26 @@ var init_Box = __esm({
|
|
|
2206
2206
|
onMouseLeave?.(e);
|
|
2207
2207
|
}, [hoverEvent, eventBus, onMouseLeave]);
|
|
2208
2208
|
const isClickable = action || onClick;
|
|
2209
|
-
|
|
2210
|
-
|
|
2211
|
-
Comp,
|
|
2209
|
+
return React78__default.createElement(
|
|
2210
|
+
Component,
|
|
2212
2211
|
{
|
|
2213
2212
|
ref,
|
|
2214
2213
|
className: cn(
|
|
2215
|
-
// Padding
|
|
2216
2214
|
padding && paddingStyles2[padding],
|
|
2217
2215
|
paddingX && paddingXStyles[paddingX],
|
|
2218
2216
|
paddingY && paddingYStyles[paddingY],
|
|
2219
|
-
// Margin
|
|
2220
2217
|
margin && marginStyles[margin],
|
|
2221
2218
|
marginX && marginXStyles[marginX],
|
|
2222
2219
|
marginY && marginYStyles[marginY],
|
|
2223
|
-
// Background
|
|
2224
2220
|
bgStyles[bg],
|
|
2225
|
-
// Border - uses theme variables
|
|
2226
2221
|
border && "border-[length:var(--border-width)] border-border",
|
|
2227
|
-
// Rounded
|
|
2228
2222
|
roundedStyles[rounded],
|
|
2229
|
-
// Shadow
|
|
2230
2223
|
shadowStyles2[shadow],
|
|
2231
|
-
// Display
|
|
2232
2224
|
display && displayStyles[display],
|
|
2233
|
-
// Dimensions
|
|
2234
2225
|
fullWidth && "w-full",
|
|
2235
2226
|
fullHeight && "h-full",
|
|
2236
|
-
// Overflow
|
|
2237
2227
|
overflow && overflowStyles[overflow],
|
|
2238
|
-
// Position
|
|
2239
2228
|
position && positionStyles[position],
|
|
2240
|
-
// Cursor for clickable
|
|
2241
2229
|
isClickable && "cursor-pointer",
|
|
2242
2230
|
className
|
|
2243
2231
|
),
|
|
@@ -2245,9 +2233,9 @@ var init_Box = __esm({
|
|
|
2245
2233
|
onMouseEnter: hoverEvent || onMouseEnter ? handleMouseEnter : void 0,
|
|
2246
2234
|
onMouseLeave: hoverEvent || onMouseLeave ? handleMouseLeave : void 0,
|
|
2247
2235
|
style: maxWidth ? { maxWidth, ...rest.style } : rest.style,
|
|
2248
|
-
...rest
|
|
2249
|
-
|
|
2250
|
-
|
|
2236
|
+
...rest
|
|
2237
|
+
},
|
|
2238
|
+
children
|
|
2251
2239
|
);
|
|
2252
2240
|
}
|
|
2253
2241
|
);
|
|
@@ -2529,7 +2517,7 @@ var Radio;
|
|
|
2529
2517
|
var init_Radio = __esm({
|
|
2530
2518
|
"components/atoms/Radio.tsx"() {
|
|
2531
2519
|
init_cn();
|
|
2532
|
-
Radio =
|
|
2520
|
+
Radio = React78__default.forwardRef(
|
|
2533
2521
|
({
|
|
2534
2522
|
label,
|
|
2535
2523
|
helperText,
|
|
@@ -2701,7 +2689,7 @@ var init_Switch = __esm({
|
|
|
2701
2689
|
"components/atoms/Switch.tsx"() {
|
|
2702
2690
|
"use client";
|
|
2703
2691
|
init_cn();
|
|
2704
|
-
Switch =
|
|
2692
|
+
Switch = React78.forwardRef(
|
|
2705
2693
|
({
|
|
2706
2694
|
checked,
|
|
2707
2695
|
defaultChecked = false,
|
|
@@ -2712,10 +2700,10 @@ var init_Switch = __esm({
|
|
|
2712
2700
|
name,
|
|
2713
2701
|
className
|
|
2714
2702
|
}, ref) => {
|
|
2715
|
-
const [isChecked, setIsChecked] =
|
|
2703
|
+
const [isChecked, setIsChecked] = React78.useState(
|
|
2716
2704
|
checked !== void 0 ? checked : defaultChecked
|
|
2717
2705
|
);
|
|
2718
|
-
|
|
2706
|
+
React78.useEffect(() => {
|
|
2719
2707
|
if (checked !== void 0) {
|
|
2720
2708
|
setIsChecked(checked);
|
|
2721
2709
|
}
|
|
@@ -3530,6 +3518,42 @@ var init_FlipContainer = __esm({
|
|
|
3530
3518
|
FlipContainer.displayName = "FlipContainer";
|
|
3531
3519
|
}
|
|
3532
3520
|
});
|
|
3521
|
+
var Dialog;
|
|
3522
|
+
var init_Dialog = __esm({
|
|
3523
|
+
"components/atoms/Dialog.tsx"() {
|
|
3524
|
+
init_cn();
|
|
3525
|
+
Dialog = React78__default.forwardRef(
|
|
3526
|
+
({
|
|
3527
|
+
role = "dialog",
|
|
3528
|
+
"aria-modal": ariaModal = true,
|
|
3529
|
+
className,
|
|
3530
|
+
children,
|
|
3531
|
+
...rest
|
|
3532
|
+
}, ref) => /* @__PURE__ */ jsx(
|
|
3533
|
+
"dialog",
|
|
3534
|
+
{
|
|
3535
|
+
ref,
|
|
3536
|
+
role,
|
|
3537
|
+
"aria-modal": ariaModal,
|
|
3538
|
+
className: cn(className),
|
|
3539
|
+
...rest,
|
|
3540
|
+
children
|
|
3541
|
+
}
|
|
3542
|
+
)
|
|
3543
|
+
);
|
|
3544
|
+
Dialog.displayName = "Dialog";
|
|
3545
|
+
}
|
|
3546
|
+
});
|
|
3547
|
+
var Aside;
|
|
3548
|
+
var init_Aside = __esm({
|
|
3549
|
+
"components/atoms/Aside.tsx"() {
|
|
3550
|
+
init_cn();
|
|
3551
|
+
Aside = React78__default.forwardRef(
|
|
3552
|
+
({ className, children, ...rest }, ref) => /* @__PURE__ */ jsx("aside", { ref, className: cn(className), ...rest, children })
|
|
3553
|
+
);
|
|
3554
|
+
Aside.displayName = "Aside";
|
|
3555
|
+
}
|
|
3556
|
+
});
|
|
3533
3557
|
function toSharedContext(ctx) {
|
|
3534
3558
|
return createMinimalContext(
|
|
3535
3559
|
{
|
|
@@ -3601,8 +3625,8 @@ var init_LawReferenceTooltip = __esm({
|
|
|
3601
3625
|
position = "top",
|
|
3602
3626
|
className
|
|
3603
3627
|
}) => {
|
|
3604
|
-
const [isVisible, setIsVisible] =
|
|
3605
|
-
const timeoutRef =
|
|
3628
|
+
const [isVisible, setIsVisible] = React78__default.useState(false);
|
|
3629
|
+
const timeoutRef = React78__default.useRef(null);
|
|
3606
3630
|
const handleMouseEnter = () => {
|
|
3607
3631
|
if (timeoutRef.current) clearTimeout(timeoutRef.current);
|
|
3608
3632
|
timeoutRef.current = setTimeout(() => setIsVisible(true), 200);
|
|
@@ -3611,7 +3635,7 @@ var init_LawReferenceTooltip = __esm({
|
|
|
3611
3635
|
if (timeoutRef.current) clearTimeout(timeoutRef.current);
|
|
3612
3636
|
setIsVisible(false);
|
|
3613
3637
|
};
|
|
3614
|
-
|
|
3638
|
+
React78__default.useEffect(() => {
|
|
3615
3639
|
return () => {
|
|
3616
3640
|
if (timeoutRef.current) clearTimeout(timeoutRef.current);
|
|
3617
3641
|
};
|
|
@@ -3821,7 +3845,7 @@ var init_StatusDot = __esm({
|
|
|
3821
3845
|
md: "w-2.5 h-2.5",
|
|
3822
3846
|
lg: "w-3 h-3"
|
|
3823
3847
|
};
|
|
3824
|
-
StatusDot =
|
|
3848
|
+
StatusDot = React78__default.forwardRef(
|
|
3825
3849
|
({ className, status = "offline", pulse = false, size = "md", label, ...props }, ref) => {
|
|
3826
3850
|
return /* @__PURE__ */ jsx(
|
|
3827
3851
|
"span",
|
|
@@ -3874,7 +3898,7 @@ var init_TrendIndicator = __esm({
|
|
|
3874
3898
|
down: TrendingDown,
|
|
3875
3899
|
flat: ArrowRight
|
|
3876
3900
|
};
|
|
3877
|
-
TrendIndicator =
|
|
3901
|
+
TrendIndicator = React78__default.forwardRef(
|
|
3878
3902
|
({
|
|
3879
3903
|
className,
|
|
3880
3904
|
value,
|
|
@@ -3941,7 +3965,7 @@ var init_RangeSlider = __esm({
|
|
|
3941
3965
|
md: "w-4 h-4",
|
|
3942
3966
|
lg: "w-5 h-5"
|
|
3943
3967
|
};
|
|
3944
|
-
RangeSlider =
|
|
3968
|
+
RangeSlider = React78__default.forwardRef(
|
|
3945
3969
|
({
|
|
3946
3970
|
className,
|
|
3947
3971
|
min = 0,
|
|
@@ -4537,7 +4561,7 @@ var init_ContentSection = __esm({
|
|
|
4537
4561
|
md: "py-16",
|
|
4538
4562
|
lg: "py-24"
|
|
4539
4563
|
};
|
|
4540
|
-
ContentSection =
|
|
4564
|
+
ContentSection = React78__default.forwardRef(
|
|
4541
4565
|
({ children, background = "default", padding = "lg", id, className }, ref) => {
|
|
4542
4566
|
return /* @__PURE__ */ jsx(
|
|
4543
4567
|
Box,
|
|
@@ -5071,7 +5095,7 @@ var init_AnimatedReveal = __esm({
|
|
|
5071
5095
|
"scale-up": { opacity: 1, transform: "scale(1) translateY(0)" },
|
|
5072
5096
|
"none": {}
|
|
5073
5097
|
};
|
|
5074
|
-
AnimatedReveal =
|
|
5098
|
+
AnimatedReveal = React78__default.forwardRef(
|
|
5075
5099
|
({
|
|
5076
5100
|
trigger = "scroll",
|
|
5077
5101
|
animation = "fade-up",
|
|
@@ -5231,7 +5255,7 @@ var init_AnimatedGraphic = __esm({
|
|
|
5231
5255
|
"components/atoms/AnimatedGraphic.tsx"() {
|
|
5232
5256
|
"use client";
|
|
5233
5257
|
init_cn();
|
|
5234
|
-
AnimatedGraphic =
|
|
5258
|
+
AnimatedGraphic = React78__default.forwardRef(
|
|
5235
5259
|
({
|
|
5236
5260
|
src,
|
|
5237
5261
|
svgContent,
|
|
@@ -5254,7 +5278,7 @@ var init_AnimatedGraphic = __esm({
|
|
|
5254
5278
|
const fetchedSvg = useFetchedSvg(svgContent ? void 0 : src);
|
|
5255
5279
|
const resolvedSvg = svgContent ?? fetchedSvg;
|
|
5256
5280
|
const prevAnimateRef = useRef(animate);
|
|
5257
|
-
const setRef =
|
|
5281
|
+
const setRef = React78__default.useCallback(
|
|
5258
5282
|
(node) => {
|
|
5259
5283
|
containerRef.current = node;
|
|
5260
5284
|
if (typeof ref === "function") ref(node);
|
|
@@ -5356,8 +5380,9 @@ var sizeClasses5, minWidths, Modal;
|
|
|
5356
5380
|
var init_Modal = __esm({
|
|
5357
5381
|
"components/molecules/Modal.tsx"() {
|
|
5358
5382
|
"use client";
|
|
5359
|
-
init_Icon();
|
|
5360
5383
|
init_Box();
|
|
5384
|
+
init_Button();
|
|
5385
|
+
init_Dialog();
|
|
5361
5386
|
init_Typography();
|
|
5362
5387
|
init_Overlay();
|
|
5363
5388
|
init_cn();
|
|
@@ -5450,7 +5475,7 @@ var init_Modal = __esm({
|
|
|
5450
5475
|
}
|
|
5451
5476
|
),
|
|
5452
5477
|
/* @__PURE__ */ jsx(
|
|
5453
|
-
|
|
5478
|
+
Box,
|
|
5454
5479
|
{
|
|
5455
5480
|
className: cn(
|
|
5456
5481
|
"fixed inset-0 z-50 pointer-events-none",
|
|
@@ -5459,17 +5484,17 @@ var init_Modal = __esm({
|
|
|
5459
5484
|
),
|
|
5460
5485
|
style: { paddingTop: "10vh" },
|
|
5461
5486
|
children: /* @__PURE__ */ jsxs(
|
|
5462
|
-
|
|
5487
|
+
Dialog,
|
|
5463
5488
|
{
|
|
5464
5489
|
ref: modalRef,
|
|
5465
|
-
|
|
5466
|
-
border: true,
|
|
5467
|
-
shadow: "lg",
|
|
5468
|
-
rounded: "md",
|
|
5490
|
+
open: true,
|
|
5469
5491
|
className: cn(
|
|
5470
|
-
|
|
5492
|
+
// Reset browser-default dialog chrome — we own styling.
|
|
5493
|
+
"m-0 p-0 border-0 bg-transparent",
|
|
5494
|
+
// Pre-existing dialog frame
|
|
5495
|
+
"pointer-events-auto w-full flex flex-col bg-surface border shadow-lg rounded-md",
|
|
5471
5496
|
sizeClasses5[size],
|
|
5472
|
-
"max-sm:max-w-full max-sm:rounded-b-none max-sm:rounded-t-2xl",
|
|
5497
|
+
"max-sm:max-w-full max-sm:min-w-0 max-sm:rounded-b-none max-sm:rounded-t-2xl",
|
|
5473
5498
|
className
|
|
5474
5499
|
),
|
|
5475
5500
|
style: {
|
|
@@ -5480,12 +5505,10 @@ var init_Modal = __esm({
|
|
|
5480
5505
|
transition: isDragging.current ? "none" : "transform 200ms ease-out"
|
|
5481
5506
|
}
|
|
5482
5507
|
},
|
|
5483
|
-
role: "dialog",
|
|
5484
|
-
"aria-modal": "true",
|
|
5485
5508
|
...title && { "aria-labelledby": "modal-title" },
|
|
5486
5509
|
children: [
|
|
5487
5510
|
/* @__PURE__ */ jsx(
|
|
5488
|
-
|
|
5511
|
+
Box,
|
|
5489
5512
|
{
|
|
5490
5513
|
className: "hidden max-sm:flex justify-center py-2 cursor-grab active:cursor-grabbing touch-none",
|
|
5491
5514
|
onPointerDown: (e) => {
|
|
@@ -5511,11 +5534,11 @@ var init_Modal = __esm({
|
|
|
5511
5534
|
isDragging.current = false;
|
|
5512
5535
|
setDragY(0);
|
|
5513
5536
|
},
|
|
5514
|
-
children: /* @__PURE__ */ jsx(
|
|
5537
|
+
children: /* @__PURE__ */ jsx(Box, { className: "w-10 h-1 rounded-full bg-border" })
|
|
5515
5538
|
}
|
|
5516
5539
|
),
|
|
5517
5540
|
(title || showCloseButton) && /* @__PURE__ */ jsxs(
|
|
5518
|
-
|
|
5541
|
+
Box,
|
|
5519
5542
|
{
|
|
5520
5543
|
className: cn(
|
|
5521
5544
|
"px-6 py-4 flex items-center justify-between",
|
|
@@ -5524,25 +5547,22 @@ var init_Modal = __esm({
|
|
|
5524
5547
|
children: [
|
|
5525
5548
|
title && /* @__PURE__ */ jsx(Typography, { variant: "h4", as: "h2", id: "modal-title", children: title }),
|
|
5526
5549
|
showCloseButton && /* @__PURE__ */ jsx(
|
|
5527
|
-
|
|
5550
|
+
Button,
|
|
5528
5551
|
{
|
|
5529
|
-
|
|
5552
|
+
variant: "ghost",
|
|
5553
|
+
size: "sm",
|
|
5554
|
+
icon: X,
|
|
5530
5555
|
onClick: handleClose,
|
|
5531
5556
|
"data-event": "CLOSE",
|
|
5532
|
-
|
|
5533
|
-
"p-1 transition-colors rounded-sm",
|
|
5534
|
-
"hover:bg-muted"
|
|
5535
|
-
),
|
|
5536
|
-
"aria-label": "Close modal",
|
|
5537
|
-
children: /* @__PURE__ */ jsx(Icon, { icon: X, size: "md" })
|
|
5557
|
+
"aria-label": "Close modal"
|
|
5538
5558
|
}
|
|
5539
5559
|
)
|
|
5540
5560
|
]
|
|
5541
5561
|
}
|
|
5542
5562
|
),
|
|
5543
|
-
/* @__PURE__ */ jsx(
|
|
5563
|
+
/* @__PURE__ */ jsx(Box, { className: "flex-1 overflow-y-auto p-6", children }),
|
|
5544
5564
|
footer && /* @__PURE__ */ jsx(
|
|
5545
|
-
|
|
5565
|
+
Box,
|
|
5546
5566
|
{
|
|
5547
5567
|
className: cn(
|
|
5548
5568
|
"px-6 py-4 bg-muted",
|
|
@@ -5565,21 +5585,19 @@ var sizeWidths, Drawer;
|
|
|
5565
5585
|
var init_Drawer = __esm({
|
|
5566
5586
|
"components/molecules/Drawer.tsx"() {
|
|
5567
5587
|
"use client";
|
|
5568
|
-
init_Icon();
|
|
5569
5588
|
init_Box();
|
|
5589
|
+
init_Button();
|
|
5570
5590
|
init_Typography();
|
|
5571
5591
|
init_Overlay();
|
|
5572
5592
|
init_cn();
|
|
5573
5593
|
init_useEventBus();
|
|
5574
5594
|
sizeWidths = {
|
|
5575
|
-
sm: "w-80",
|
|
5595
|
+
sm: "w-full sm:w-80",
|
|
5576
5596
|
// 320px
|
|
5577
|
-
md: "w-96",
|
|
5597
|
+
md: "w-full sm:w-96",
|
|
5578
5598
|
// 384px
|
|
5579
|
-
lg: "w-[480px]",
|
|
5580
|
-
|
|
5581
|
-
xl: "w-[640px]",
|
|
5582
|
-
// 640px
|
|
5599
|
+
lg: "w-full sm:w-[480px]",
|
|
5600
|
+
xl: "w-full sm:w-[640px]",
|
|
5583
5601
|
full: "w-screen"
|
|
5584
5602
|
};
|
|
5585
5603
|
Drawer = ({
|
|
@@ -5677,7 +5695,7 @@ var init_Drawer = __esm({
|
|
|
5677
5695
|
...title && { "aria-labelledby": "drawer-title" },
|
|
5678
5696
|
children: [
|
|
5679
5697
|
(title || showCloseButton) && /* @__PURE__ */ jsxs(
|
|
5680
|
-
|
|
5698
|
+
Box,
|
|
5681
5699
|
{
|
|
5682
5700
|
className: cn(
|
|
5683
5701
|
"px-6 py-4 flex items-center justify-between shrink-0",
|
|
@@ -5686,25 +5704,22 @@ var init_Drawer = __esm({
|
|
|
5686
5704
|
children: [
|
|
5687
5705
|
title && /* @__PURE__ */ jsx(Typography, { variant: "h4", as: "h2", id: "drawer-title", children: title }),
|
|
5688
5706
|
showCloseButton && /* @__PURE__ */ jsx(
|
|
5689
|
-
|
|
5707
|
+
Button,
|
|
5690
5708
|
{
|
|
5691
|
-
|
|
5709
|
+
variant: "ghost",
|
|
5710
|
+
size: "sm",
|
|
5711
|
+
icon: X,
|
|
5692
5712
|
onClick: handleClose,
|
|
5693
|
-
className: cn(
|
|
5694
|
-
"p-1 transition-colors rounded-sm",
|
|
5695
|
-
"hover:bg-muted",
|
|
5696
|
-
!title && "ml-auto"
|
|
5697
|
-
),
|
|
5698
5713
|
"aria-label": "Close drawer",
|
|
5699
|
-
|
|
5714
|
+
className: cn(!title && "ml-auto")
|
|
5700
5715
|
}
|
|
5701
5716
|
)
|
|
5702
5717
|
]
|
|
5703
5718
|
}
|
|
5704
5719
|
),
|
|
5705
|
-
/* @__PURE__ */ jsx(
|
|
5720
|
+
/* @__PURE__ */ jsx(Box, { className: "flex-1 overflow-y-auto p-6", children }),
|
|
5706
5721
|
footer && /* @__PURE__ */ jsx(
|
|
5707
|
-
|
|
5722
|
+
Box,
|
|
5708
5723
|
{
|
|
5709
5724
|
className: cn(
|
|
5710
5725
|
"px-6 py-4 shrink-0 bg-muted",
|
|
@@ -5749,6 +5764,7 @@ var variantClasses, iconMap2, iconColors, Toast;
|
|
|
5749
5764
|
var init_Toast = __esm({
|
|
5750
5765
|
"components/molecules/Toast.tsx"() {
|
|
5751
5766
|
"use client";
|
|
5767
|
+
init_Box();
|
|
5752
5768
|
init_Icon();
|
|
5753
5769
|
init_Typography();
|
|
5754
5770
|
init_Button();
|
|
@@ -5806,17 +5822,20 @@ var init_Toast = __esm({
|
|
|
5806
5822
|
return () => clearTimeout(timer);
|
|
5807
5823
|
}, [duration, onDismiss, dismissEvent]);
|
|
5808
5824
|
return /* @__PURE__ */ jsx(
|
|
5809
|
-
|
|
5825
|
+
Box,
|
|
5810
5826
|
{
|
|
5811
5827
|
className: cn(
|
|
5812
|
-
|
|
5828
|
+
// `min-w-[300px]` only kicks in at `sm:` and above so a phone
|
|
5829
|
+
// viewport doesn't get a toast wider than the screen near the
|
|
5830
|
+
// edge. `max-w-[calc(100vw-2rem)]` clamps to viewport too.
|
|
5831
|
+
"border-l-4 p-4 shadow min-w-0 sm:min-w-[300px] max-w-md max-w-[calc(100vw-2rem)]",
|
|
5813
5832
|
"rounded-sm",
|
|
5814
5833
|
variantClasses[variant],
|
|
5815
5834
|
className
|
|
5816
5835
|
),
|
|
5817
5836
|
role: "alert",
|
|
5818
|
-
children: /* @__PURE__ */ jsxs(
|
|
5819
|
-
/* @__PURE__ */ jsx(
|
|
5837
|
+
children: /* @__PURE__ */ jsxs(Box, { className: "flex items-start gap-3", children: [
|
|
5838
|
+
/* @__PURE__ */ jsx(Box, { className: "flex-shrink-0 mt-0.5", children: /* @__PURE__ */ jsx(
|
|
5820
5839
|
Icon,
|
|
5821
5840
|
{
|
|
5822
5841
|
icon: iconMap2[variant],
|
|
@@ -5824,25 +5843,22 @@ var init_Toast = __esm({
|
|
|
5824
5843
|
className: iconColors[variant]
|
|
5825
5844
|
}
|
|
5826
5845
|
) }),
|
|
5827
|
-
/* @__PURE__ */ jsxs(
|
|
5846
|
+
/* @__PURE__ */ jsxs(Box, { className: "flex-1 min-w-0", children: [
|
|
5828
5847
|
title && /* @__PURE__ */ jsx(Typography, { variant: "h6", className: "mb-1", children: title }),
|
|
5829
5848
|
/* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-sm", children: message }),
|
|
5830
|
-
actionLabel && (onAction || actionEvent) && /* @__PURE__ */ jsx(
|
|
5849
|
+
actionLabel && (onAction || actionEvent) && /* @__PURE__ */ jsx(Box, { className: "mt-3", children: /* @__PURE__ */ jsx(Button, { variant: "ghost", size: "sm", onClick: handleAction, children: actionLabel }) })
|
|
5831
5850
|
] }),
|
|
5832
|
-
/* @__PURE__ */ jsxs(
|
|
5851
|
+
/* @__PURE__ */ jsxs(Box, { className: "flex items-start gap-2 flex-shrink-0", children: [
|
|
5833
5852
|
badge !== void 0 && /* @__PURE__ */ jsx(Badge, { variant: "default", size: "sm", children: badge }),
|
|
5834
5853
|
dismissible && /* @__PURE__ */ jsx(
|
|
5835
|
-
|
|
5854
|
+
Button,
|
|
5836
5855
|
{
|
|
5837
|
-
|
|
5856
|
+
variant: "ghost",
|
|
5857
|
+
size: "sm",
|
|
5858
|
+
icon: X,
|
|
5838
5859
|
onClick: handleDismiss,
|
|
5839
|
-
className: cn(
|
|
5840
|
-
"flex-shrink-0 p-1 transition-colors rounded-sm",
|
|
5841
|
-
"hover:bg-muted",
|
|
5842
|
-
"focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2"
|
|
5843
|
-
),
|
|
5844
5860
|
"aria-label": "Dismiss toast",
|
|
5845
|
-
|
|
5861
|
+
className: "flex-shrink-0"
|
|
5846
5862
|
}
|
|
5847
5863
|
)
|
|
5848
5864
|
] })
|
|
@@ -6064,7 +6080,7 @@ var init_ErrorBoundary = __esm({
|
|
|
6064
6080
|
"use client";
|
|
6065
6081
|
init_cn();
|
|
6066
6082
|
init_ErrorState();
|
|
6067
|
-
ErrorBoundary = class extends
|
|
6083
|
+
ErrorBoundary = class extends React78__default.Component {
|
|
6068
6084
|
constructor(props) {
|
|
6069
6085
|
super(props);
|
|
6070
6086
|
__publicField(this, "reset", () => {
|
|
@@ -6617,7 +6633,7 @@ var init_HeroSection = __esm({
|
|
|
6617
6633
|
HeroSection.displayName = "HeroSection";
|
|
6618
6634
|
}
|
|
6619
6635
|
});
|
|
6620
|
-
var ArticleSection;
|
|
6636
|
+
var maxWidthMap, ArticleSection;
|
|
6621
6637
|
var init_ArticleSection = __esm({
|
|
6622
6638
|
"components/molecules/ArticleSection.tsx"() {
|
|
6623
6639
|
"use client";
|
|
@@ -6625,6 +6641,11 @@ var init_ArticleSection = __esm({
|
|
|
6625
6641
|
init_Box();
|
|
6626
6642
|
init_Stack();
|
|
6627
6643
|
init_Typography();
|
|
6644
|
+
maxWidthMap = {
|
|
6645
|
+
sm: "max-w-full sm:max-w-xl md:max-w-2xl",
|
|
6646
|
+
md: "max-w-full sm:max-w-2xl md:max-w-3xl",
|
|
6647
|
+
lg: "max-w-full sm:max-w-3xl md:max-w-4xl"
|
|
6648
|
+
};
|
|
6628
6649
|
ArticleSection = ({
|
|
6629
6650
|
title,
|
|
6630
6651
|
children,
|
|
@@ -6639,7 +6660,7 @@ var init_ArticleSection = __esm({
|
|
|
6639
6660
|
className
|
|
6640
6661
|
),
|
|
6641
6662
|
padding: "md",
|
|
6642
|
-
children: /* @__PURE__ */ jsxs(VStack, { gap: "lg", align: "start", children: [
|
|
6663
|
+
children: /* @__PURE__ */ jsxs(VStack, { gap: "lg", align: "start", className: cn("w-full mx-auto", maxWidthMap[maxWidth]), children: [
|
|
6643
6664
|
/* @__PURE__ */ jsx(Typography, { variant: "h2", children: title }),
|
|
6644
6665
|
/* @__PURE__ */ jsx(Box, { className: "w-full", children })
|
|
6645
6666
|
] })
|
|
@@ -6691,6 +6712,7 @@ var init_TeamCard = __esm({
|
|
|
6691
6712
|
var gapStyles2, colStyles, SimpleGrid;
|
|
6692
6713
|
var init_SimpleGrid = __esm({
|
|
6693
6714
|
"components/molecules/SimpleGrid.tsx"() {
|
|
6715
|
+
init_Box();
|
|
6694
6716
|
init_cn();
|
|
6695
6717
|
gapStyles2 = {
|
|
6696
6718
|
none: "gap-0",
|
|
@@ -6703,10 +6725,10 @@ var init_SimpleGrid = __esm({
|
|
|
6703
6725
|
colStyles = {
|
|
6704
6726
|
1: "grid-cols-1",
|
|
6705
6727
|
2: "grid-cols-1 sm:grid-cols-2",
|
|
6706
|
-
3: "grid-cols-1 sm:grid-cols-2
|
|
6707
|
-
4: "grid-cols-1 sm:grid-cols-2 lg:grid-cols-4",
|
|
6708
|
-
5: "grid-cols-1 sm:grid-cols-2
|
|
6709
|
-
6: "grid-cols-1 sm:grid-cols-2
|
|
6728
|
+
3: "grid-cols-1 sm:grid-cols-2 md:grid-cols-3",
|
|
6729
|
+
4: "grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4",
|
|
6730
|
+
5: "grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 xl:grid-cols-5",
|
|
6731
|
+
6: "grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 xl:grid-cols-6"
|
|
6710
6732
|
};
|
|
6711
6733
|
SimpleGrid = ({
|
|
6712
6734
|
minChildWidth = 250,
|
|
@@ -6717,12 +6739,12 @@ var init_SimpleGrid = __esm({
|
|
|
6717
6739
|
children
|
|
6718
6740
|
}) => {
|
|
6719
6741
|
if (cols) {
|
|
6720
|
-
return /* @__PURE__ */ jsx(
|
|
6742
|
+
return /* @__PURE__ */ jsx(Box, { className: cn("grid", colStyles[cols], gapStyles2[gap], className), children });
|
|
6721
6743
|
}
|
|
6722
6744
|
const minWidth = typeof minChildWidth === "number" ? `${minChildWidth}px` : minChildWidth;
|
|
6723
6745
|
const templateColumns = maxCols ? `repeat(auto-fit, minmax(min(${minWidth}, 100%), 1fr))` : `repeat(auto-fit, minmax(${minWidth}, 1fr))`;
|
|
6724
6746
|
return /* @__PURE__ */ jsx(
|
|
6725
|
-
|
|
6747
|
+
Box,
|
|
6726
6748
|
{
|
|
6727
6749
|
className: cn("grid", gapStyles2[gap], className),
|
|
6728
6750
|
style: {
|
|
@@ -7112,8 +7134,8 @@ var init_Tooltip = __esm({
|
|
|
7112
7134
|
if (hideTimeoutRef.current) clearTimeout(hideTimeoutRef.current);
|
|
7113
7135
|
};
|
|
7114
7136
|
}, []);
|
|
7115
|
-
const triggerElement =
|
|
7116
|
-
const trigger =
|
|
7137
|
+
const triggerElement = React78__default.isValidElement(children) ? children : /* @__PURE__ */ jsx("span", { children });
|
|
7138
|
+
const trigger = React78__default.cloneElement(triggerElement, {
|
|
7117
7139
|
ref: triggerRef,
|
|
7118
7140
|
onMouseEnter: handleMouseEnter,
|
|
7119
7141
|
onMouseLeave: handleMouseLeave,
|
|
@@ -7234,8 +7256,8 @@ var init_Popover = __esm({
|
|
|
7234
7256
|
onMouseEnter: handleOpen,
|
|
7235
7257
|
onMouseLeave: handleClose
|
|
7236
7258
|
};
|
|
7237
|
-
const childElement =
|
|
7238
|
-
const triggerElement =
|
|
7259
|
+
const childElement = React78__default.isValidElement(children) ? children : /* @__PURE__ */ jsx("span", { children });
|
|
7260
|
+
const triggerElement = React78__default.cloneElement(
|
|
7239
7261
|
childElement,
|
|
7240
7262
|
{
|
|
7241
7263
|
ref: triggerRef,
|
|
@@ -7284,6 +7306,7 @@ var Menu;
|
|
|
7284
7306
|
var init_Menu = __esm({
|
|
7285
7307
|
"components/molecules/Menu.tsx"() {
|
|
7286
7308
|
"use client";
|
|
7309
|
+
init_Box();
|
|
7287
7310
|
init_Icon();
|
|
7288
7311
|
init_Divider();
|
|
7289
7312
|
init_Typography();
|
|
@@ -7352,8 +7375,8 @@ var init_Menu = __esm({
|
|
|
7352
7375
|
"bottom-start": "top-full left-0 mt-2",
|
|
7353
7376
|
"bottom-end": "top-full right-0 mt-2"
|
|
7354
7377
|
};
|
|
7355
|
-
const triggerChild =
|
|
7356
|
-
const triggerElement =
|
|
7378
|
+
const triggerChild = React78__default.isValidElement(trigger) ? trigger : /* @__PURE__ */ jsx(Typography, { variant: "small", as: "span", children: trigger });
|
|
7379
|
+
const triggerElement = React78__default.cloneElement(
|
|
7357
7380
|
triggerChild,
|
|
7358
7381
|
{
|
|
7359
7382
|
ref: triggerRef,
|
|
@@ -7365,17 +7388,17 @@ var init_Menu = __esm({
|
|
|
7365
7388
|
"border-[length:var(--border-width)] border-border",
|
|
7366
7389
|
"shadow",
|
|
7367
7390
|
"rounded-sm",
|
|
7368
|
-
"min-w-[200px] py-1"
|
|
7391
|
+
"min-w-0 sm:min-w-[200px] max-w-[calc(100vw-1rem)] py-1"
|
|
7369
7392
|
);
|
|
7370
7393
|
const renderMenuItem = (item, hasSubMenu, index) => {
|
|
7371
7394
|
const itemId = item.id ?? `item-${item.label.toLowerCase().replace(/\s+/g, "-")}-${index}`;
|
|
7372
7395
|
const isDanger = item.variant === "danger";
|
|
7373
7396
|
return /* @__PURE__ */ jsx(
|
|
7374
|
-
|
|
7397
|
+
Box,
|
|
7375
7398
|
{
|
|
7376
|
-
|
|
7377
|
-
onClick: () => handleItemClick({ ...item, id: itemId }),
|
|
7378
|
-
disabled: item.disabled,
|
|
7399
|
+
as: "button",
|
|
7400
|
+
onClick: () => !item.disabled && handleItemClick({ ...item, id: itemId }),
|
|
7401
|
+
"aria-disabled": item.disabled || void 0,
|
|
7379
7402
|
onMouseEnter: () => hasSubMenu && setActiveSubMenu(itemId),
|
|
7380
7403
|
"data-testid": item.event ? `action-${item.event}` : void 0,
|
|
7381
7404
|
className: cn(
|
|
@@ -7387,7 +7410,7 @@ var init_Menu = __esm({
|
|
|
7387
7410
|
item.disabled && "cursor-not-allowed",
|
|
7388
7411
|
isDanger && "text-error hover:bg-error/10"
|
|
7389
7412
|
),
|
|
7390
|
-
children: /* @__PURE__ */ jsxs(
|
|
7413
|
+
children: /* @__PURE__ */ jsxs(Box, { className: "flex items-center gap-3 flex-1 min-w-0", children: [
|
|
7391
7414
|
item.icon && (typeof item.icon === "string" ? /* @__PURE__ */ jsx(Icon, { name: item.icon, size: "sm", className: "flex-shrink-0" }) : /* @__PURE__ */ jsx(Icon, { icon: item.icon, size: "sm", className: "flex-shrink-0" })),
|
|
7392
7415
|
/* @__PURE__ */ jsx(
|
|
7393
7416
|
Typography,
|
|
@@ -7412,10 +7435,10 @@ var init_Menu = __esm({
|
|
|
7412
7435
|
if (isDivider) {
|
|
7413
7436
|
return /* @__PURE__ */ jsx(Divider, { className: "my-1" }, `divider-${index}`);
|
|
7414
7437
|
}
|
|
7415
|
-
return /* @__PURE__ */ jsxs(
|
|
7438
|
+
return /* @__PURE__ */ jsxs(Box, { children: [
|
|
7416
7439
|
renderMenuItem(item, !!hasSubMenu, index),
|
|
7417
7440
|
hasSubMenu && activeSubMenu === itemId && item.subMenu && /* @__PURE__ */ jsx(
|
|
7418
|
-
|
|
7441
|
+
Box,
|
|
7419
7442
|
{
|
|
7420
7443
|
className: cn(
|
|
7421
7444
|
"absolute left-full top-0 ml-2 z-50",
|
|
@@ -7427,10 +7450,10 @@ var init_Menu = __esm({
|
|
|
7427
7450
|
] }, itemId);
|
|
7428
7451
|
});
|
|
7429
7452
|
};
|
|
7430
|
-
return /* @__PURE__ */ jsxs(
|
|
7453
|
+
return /* @__PURE__ */ jsxs(Box, { className: "relative", children: [
|
|
7431
7454
|
triggerElement,
|
|
7432
7455
|
isOpen && triggerRect && /* @__PURE__ */ jsx(
|
|
7433
|
-
|
|
7456
|
+
Box,
|
|
7434
7457
|
{
|
|
7435
7458
|
ref: menuRef,
|
|
7436
7459
|
className: cn(
|
|
@@ -7769,13 +7792,13 @@ var init_MapView = __esm({
|
|
|
7769
7792
|
shadowSize: [41, 41]
|
|
7770
7793
|
});
|
|
7771
7794
|
L.Marker.prototype.options.icon = defaultIcon;
|
|
7772
|
-
const { useEffect:
|
|
7795
|
+
const { useEffect: useEffect71, useRef: useRef66, useCallback: useCallback126, useState: useState108 } = React78__default;
|
|
7773
7796
|
const { Typography: Typography2 } = await Promise.resolve().then(() => (init_Typography(), Typography_exports));
|
|
7774
7797
|
const { useEventBus: useEventBus2 } = await Promise.resolve().then(() => (init_useEventBus(), useEventBus_exports));
|
|
7775
7798
|
function MapUpdater({ centerLat, centerLng, zoom }) {
|
|
7776
7799
|
const map = useMap();
|
|
7777
7800
|
const prevRef = useRef66({ centerLat, centerLng, zoom });
|
|
7778
|
-
|
|
7801
|
+
useEffect71(() => {
|
|
7779
7802
|
const prev = prevRef.current;
|
|
7780
7803
|
if (prev.centerLat !== centerLat || prev.centerLng !== centerLng || prev.zoom !== zoom) {
|
|
7781
7804
|
map.setView([centerLat, centerLng], zoom);
|
|
@@ -7786,7 +7809,7 @@ var init_MapView = __esm({
|
|
|
7786
7809
|
}
|
|
7787
7810
|
function MapClickHandler({ onMapClick }) {
|
|
7788
7811
|
const map = useMap();
|
|
7789
|
-
|
|
7812
|
+
useEffect71(() => {
|
|
7790
7813
|
if (!onMapClick) return;
|
|
7791
7814
|
const handler = (e) => {
|
|
7792
7815
|
onMapClick(e.latlng.lat, e.latlng.lng);
|
|
@@ -7814,7 +7837,7 @@ var init_MapView = __esm({
|
|
|
7814
7837
|
showAttribution = true
|
|
7815
7838
|
}) {
|
|
7816
7839
|
const eventBus = useEventBus2();
|
|
7817
|
-
const [clickedPosition, setClickedPosition] =
|
|
7840
|
+
const [clickedPosition, setClickedPosition] = useState108(null);
|
|
7818
7841
|
const handleMapClick = useCallback126((lat, lng) => {
|
|
7819
7842
|
if (showClickedPin) {
|
|
7820
7843
|
setClickedPosition({ lat, lng });
|
|
@@ -8015,7 +8038,7 @@ function InputPattern({
|
|
|
8015
8038
|
fieldName
|
|
8016
8039
|
}) {
|
|
8017
8040
|
const { emit } = useEventBus();
|
|
8018
|
-
const [localValue, setLocalValue] =
|
|
8041
|
+
const [localValue, setLocalValue] = React78__default.useState(value);
|
|
8019
8042
|
const handleChange = (e) => {
|
|
8020
8043
|
setLocalValue(e.target.value);
|
|
8021
8044
|
if (onChange) {
|
|
@@ -8053,7 +8076,7 @@ function TextareaPattern({
|
|
|
8053
8076
|
fieldName
|
|
8054
8077
|
}) {
|
|
8055
8078
|
const { emit } = useEventBus();
|
|
8056
|
-
const [localValue, setLocalValue] =
|
|
8079
|
+
const [localValue, setLocalValue] = React78__default.useState(value);
|
|
8057
8080
|
const handleChange = (e) => {
|
|
8058
8081
|
setLocalValue(e.target.value);
|
|
8059
8082
|
if (onChange) {
|
|
@@ -8085,7 +8108,7 @@ function SelectPattern({
|
|
|
8085
8108
|
fieldName
|
|
8086
8109
|
}) {
|
|
8087
8110
|
const { emit } = useEventBus();
|
|
8088
|
-
const [localValue, setLocalValue] =
|
|
8111
|
+
const [localValue, setLocalValue] = React78__default.useState(value);
|
|
8089
8112
|
const handleChange = (e) => {
|
|
8090
8113
|
setLocalValue(e.target.value);
|
|
8091
8114
|
if (onChange) {
|
|
@@ -8114,7 +8137,7 @@ function CheckboxPattern({
|
|
|
8114
8137
|
className
|
|
8115
8138
|
}) {
|
|
8116
8139
|
const { emit } = useEventBus();
|
|
8117
|
-
const [localChecked, setLocalChecked] =
|
|
8140
|
+
const [localChecked, setLocalChecked] = React78__default.useState(checked);
|
|
8118
8141
|
const handleChange = (e) => {
|
|
8119
8142
|
setLocalChecked(e.target.checked);
|
|
8120
8143
|
if (onChange) {
|
|
@@ -8427,9 +8450,9 @@ function ControlButton({
|
|
|
8427
8450
|
className
|
|
8428
8451
|
}) {
|
|
8429
8452
|
const eventBus = useEventBus();
|
|
8430
|
-
const [isPressed, setIsPressed] =
|
|
8453
|
+
const [isPressed, setIsPressed] = React78.useState(false);
|
|
8431
8454
|
const actualPressed = pressed ?? isPressed;
|
|
8432
|
-
const handlePointerDown =
|
|
8455
|
+
const handlePointerDown = React78.useCallback(
|
|
8433
8456
|
(e) => {
|
|
8434
8457
|
e.preventDefault();
|
|
8435
8458
|
if (disabled) return;
|
|
@@ -8439,7 +8462,7 @@ function ControlButton({
|
|
|
8439
8462
|
},
|
|
8440
8463
|
[disabled, pressEvent, eventBus, onPress]
|
|
8441
8464
|
);
|
|
8442
|
-
const handlePointerUp =
|
|
8465
|
+
const handlePointerUp = React78.useCallback(
|
|
8443
8466
|
(e) => {
|
|
8444
8467
|
e.preventDefault();
|
|
8445
8468
|
if (disabled) return;
|
|
@@ -8449,7 +8472,7 @@ function ControlButton({
|
|
|
8449
8472
|
},
|
|
8450
8473
|
[disabled, releaseEvent, eventBus, onRelease]
|
|
8451
8474
|
);
|
|
8452
|
-
const handlePointerLeave =
|
|
8475
|
+
const handlePointerLeave = React78.useCallback(
|
|
8453
8476
|
(e) => {
|
|
8454
8477
|
if (isPressed) {
|
|
8455
8478
|
setIsPressed(false);
|
|
@@ -8526,8 +8549,8 @@ function ActionButtons({
|
|
|
8526
8549
|
disabled
|
|
8527
8550
|
}) {
|
|
8528
8551
|
const eventBus = useEventBus();
|
|
8529
|
-
const [activeButtons, setActiveButtons] =
|
|
8530
|
-
const handlePress =
|
|
8552
|
+
const [activeButtons, setActiveButtons] = React78.useState(/* @__PURE__ */ new Set());
|
|
8553
|
+
const handlePress = React78.useCallback(
|
|
8531
8554
|
(id) => {
|
|
8532
8555
|
setActiveButtons((prev) => new Set(prev).add(id));
|
|
8533
8556
|
if (actionEvent) eventBus.emit(`UI:${actionEvent}`, { id, pressed: true });
|
|
@@ -8535,7 +8558,7 @@ function ActionButtons({
|
|
|
8535
8558
|
},
|
|
8536
8559
|
[actionEvent, eventBus, onAction]
|
|
8537
8560
|
);
|
|
8538
|
-
const handleRelease =
|
|
8561
|
+
const handleRelease = React78.useCallback(
|
|
8539
8562
|
(id) => {
|
|
8540
8563
|
setActiveButtons((prev) => {
|
|
8541
8564
|
const next = new Set(prev);
|
|
@@ -11297,7 +11320,7 @@ var init_MarkdownContent = __esm({
|
|
|
11297
11320
|
init_Box();
|
|
11298
11321
|
init_useTranslate();
|
|
11299
11322
|
init_cn();
|
|
11300
|
-
MarkdownContent =
|
|
11323
|
+
MarkdownContent = React78__default.memo(
|
|
11301
11324
|
({ content, direction, className }) => {
|
|
11302
11325
|
const { t: _t } = useTranslate();
|
|
11303
11326
|
const safeContent = typeof content === "string" ? content : String(content ?? "");
|
|
@@ -11515,7 +11538,7 @@ var init_CodeBlock = __esm({
|
|
|
11515
11538
|
log5 = createLogger("almadar:ui:markdown-code");
|
|
11516
11539
|
LINE_PROPS_FN = (n) => ({ "data-line": String(n - 1) });
|
|
11517
11540
|
HIDDEN_LINE_NUMBERS = { display: "none" };
|
|
11518
|
-
CodeBlock =
|
|
11541
|
+
CodeBlock = React78__default.memo(
|
|
11519
11542
|
({
|
|
11520
11543
|
code: rawCode,
|
|
11521
11544
|
language = "text",
|
|
@@ -12824,7 +12847,7 @@ var init_StateMachineView = __esm({
|
|
|
12824
12847
|
style: { top: title ? 30 : 0 },
|
|
12825
12848
|
children: [
|
|
12826
12849
|
entity && /* @__PURE__ */ jsx(EntityBox, { entity, config }),
|
|
12827
|
-
states.map((state) => renderStateNode ? /* @__PURE__ */ jsx(
|
|
12850
|
+
states.map((state) => renderStateNode ? /* @__PURE__ */ jsx(React78__default.Fragment, { children: renderStateNode(state, config) }, state.id) : /* @__PURE__ */ jsx(
|
|
12828
12851
|
StateNode,
|
|
12829
12852
|
{
|
|
12830
12853
|
state,
|
|
@@ -14405,27 +14428,23 @@ var init_Grid = __esm({
|
|
|
14405
14428
|
as: Component = "div"
|
|
14406
14429
|
}) => {
|
|
14407
14430
|
const mergedStyle = rows ? { gridTemplateRows: `repeat(${rows}, minmax(0, 1fr))`, ...style } : style;
|
|
14408
|
-
|
|
14409
|
-
|
|
14410
|
-
Comp,
|
|
14431
|
+
return React78__default.createElement(
|
|
14432
|
+
Component,
|
|
14411
14433
|
{
|
|
14412
14434
|
className: cn(
|
|
14413
14435
|
"grid",
|
|
14414
14436
|
getColsClass(cols),
|
|
14415
|
-
// Gap (rowGap/colGap override gap)
|
|
14416
14437
|
rowGap ? rowGapStyles[rowGap] : colGap ? void 0 : gapStyles3[gap],
|
|
14417
14438
|
colGap ? colGapStyles[colGap] : rowGap ? void 0 : void 0,
|
|
14418
14439
|
rowGap && colGap ? `${rowGapStyles[rowGap]} ${colGapStyles[colGap]}` : void 0,
|
|
14419
|
-
// Alignment
|
|
14420
14440
|
alignItems && alignStyles2[alignItems],
|
|
14421
14441
|
justifyItems && justifyStyles2[justifyItems],
|
|
14422
|
-
// Flow
|
|
14423
14442
|
flow && flowStyles[flow],
|
|
14424
14443
|
className
|
|
14425
14444
|
),
|
|
14426
|
-
style: mergedStyle
|
|
14427
|
-
|
|
14428
|
-
|
|
14445
|
+
style: mergedStyle
|
|
14446
|
+
},
|
|
14447
|
+
children
|
|
14429
14448
|
);
|
|
14430
14449
|
};
|
|
14431
14450
|
Grid.displayName = "Grid";
|
|
@@ -15444,6 +15463,35 @@ var init_useSwipeGesture = __esm({
|
|
|
15444
15463
|
"use client";
|
|
15445
15464
|
}
|
|
15446
15465
|
});
|
|
15466
|
+
function dayWindowForViewport(width) {
|
|
15467
|
+
if (width <= 640) return 1;
|
|
15468
|
+
if (width <= 1024) return 3;
|
|
15469
|
+
return 7;
|
|
15470
|
+
}
|
|
15471
|
+
function useDayWindow(override) {
|
|
15472
|
+
const [w, setW] = useState(() => {
|
|
15473
|
+
if (override !== "auto") return override;
|
|
15474
|
+
if (typeof window === "undefined") return 7;
|
|
15475
|
+
return dayWindowForViewport(window.innerWidth);
|
|
15476
|
+
});
|
|
15477
|
+
useEffect(() => {
|
|
15478
|
+
if (override !== "auto") {
|
|
15479
|
+
setW(override);
|
|
15480
|
+
return void 0;
|
|
15481
|
+
}
|
|
15482
|
+
if (typeof window === "undefined") return void 0;
|
|
15483
|
+
const onResize = () => setW(dayWindowForViewport(window.innerWidth));
|
|
15484
|
+
onResize();
|
|
15485
|
+
window.addEventListener("resize", onResize);
|
|
15486
|
+
return () => window.removeEventListener("resize", onResize);
|
|
15487
|
+
}, [override]);
|
|
15488
|
+
return w;
|
|
15489
|
+
}
|
|
15490
|
+
function formatDateRange(start, end) {
|
|
15491
|
+
const startStr = start.toLocaleDateString(void 0, SHORT_DATE);
|
|
15492
|
+
const endStr = end.toLocaleDateString(void 0, SHORT_DATE);
|
|
15493
|
+
return start.toDateString() === end.toDateString() ? startStr : `${startStr} \u2013 ${endStr}`;
|
|
15494
|
+
}
|
|
15447
15495
|
function getStartOfWeek(date) {
|
|
15448
15496
|
const d = new Date(date);
|
|
15449
15497
|
const day = d.getDay();
|
|
@@ -15484,7 +15532,8 @@ function CalendarGrid({
|
|
|
15484
15532
|
longPressEvent,
|
|
15485
15533
|
longPressPayload,
|
|
15486
15534
|
swipeLeftEvent,
|
|
15487
|
-
swipeRightEvent
|
|
15535
|
+
swipeRightEvent,
|
|
15536
|
+
dayWindow = "auto"
|
|
15488
15537
|
}) {
|
|
15489
15538
|
const eventBus = useEventBus();
|
|
15490
15539
|
const longPressTimer = useRef(null);
|
|
@@ -15500,6 +15549,26 @@ function CalendarGrid({
|
|
|
15500
15549
|
() => timeSlots ?? generateDefaultTimeSlots(),
|
|
15501
15550
|
[timeSlots]
|
|
15502
15551
|
);
|
|
15552
|
+
const visibleCount = useDayWindow(dayWindow);
|
|
15553
|
+
const [dayOffset, setDayOffset] = useState(0);
|
|
15554
|
+
useEffect(() => {
|
|
15555
|
+
if (dayOffset + visibleCount > 7) {
|
|
15556
|
+
setDayOffset(Math.max(0, 7 - visibleCount));
|
|
15557
|
+
}
|
|
15558
|
+
}, [visibleCount, dayOffset]);
|
|
15559
|
+
const visibleDays = useMemo(
|
|
15560
|
+
() => weekDays.slice(dayOffset, dayOffset + visibleCount),
|
|
15561
|
+
[weekDays, dayOffset, visibleCount]
|
|
15562
|
+
);
|
|
15563
|
+
const canPrev = dayOffset > 0;
|
|
15564
|
+
const canNext = dayOffset + visibleCount < 7;
|
|
15565
|
+
const stepPrev = useCallback(() => {
|
|
15566
|
+
setDayOffset((d) => Math.max(0, d - visibleCount));
|
|
15567
|
+
}, [visibleCount]);
|
|
15568
|
+
const stepNext = useCallback(() => {
|
|
15569
|
+
setDayOffset((d) => Math.min(7 - visibleCount, d + visibleCount));
|
|
15570
|
+
}, [visibleCount]);
|
|
15571
|
+
const gridColsClass = visibleCount === 1 ? "grid-cols-2" : visibleCount === 3 ? "grid-cols-4" : "grid-cols-8";
|
|
15503
15572
|
const handleSlotClick = useCallback(
|
|
15504
15573
|
(day, time) => {
|
|
15505
15574
|
onSlotClick?.(day, time);
|
|
@@ -15551,93 +15620,124 @@ function CalendarGrid({
|
|
|
15551
15620
|
},
|
|
15552
15621
|
event.id
|
|
15553
15622
|
);
|
|
15554
|
-
return /* @__PURE__ */
|
|
15623
|
+
return /* @__PURE__ */ jsxs(
|
|
15555
15624
|
Box,
|
|
15556
15625
|
{
|
|
15557
|
-
className
|
|
15626
|
+
className,
|
|
15558
15627
|
...swipeLeftEvent || swipeRightEvent ? {
|
|
15559
15628
|
onPointerDown: swipe.onPointerDown,
|
|
15560
15629
|
onPointerMove: swipe.onPointerMove,
|
|
15561
15630
|
onPointerUp: swipe.onPointerUp,
|
|
15562
15631
|
onPointerCancel: swipe.onPointerCancel
|
|
15563
15632
|
} : {},
|
|
15564
|
-
children:
|
|
15565
|
-
/* @__PURE__ */ jsxs(
|
|
15566
|
-
/* @__PURE__ */ jsx(
|
|
15567
|
-
|
|
15568
|
-
|
|
15569
|
-
|
|
15570
|
-
|
|
15571
|
-
|
|
15572
|
-
|
|
15573
|
-
|
|
15574
|
-
|
|
15575
|
-
|
|
15576
|
-
|
|
15577
|
-
|
|
15578
|
-
|
|
15579
|
-
|
|
15580
|
-
|
|
15581
|
-
|
|
15582
|
-
|
|
15583
|
-
|
|
15584
|
-
|
|
15585
|
-
|
|
15586
|
-
|
|
15587
|
-
|
|
15588
|
-
|
|
15633
|
+
children: [
|
|
15634
|
+
visibleCount < 7 && /* @__PURE__ */ jsxs(HStack, { align: "center", justify: "between", className: "mb-2 px-2", children: [
|
|
15635
|
+
/* @__PURE__ */ jsx(
|
|
15636
|
+
Button,
|
|
15637
|
+
{
|
|
15638
|
+
variant: "ghost",
|
|
15639
|
+
size: "sm",
|
|
15640
|
+
icon: ChevronLeft,
|
|
15641
|
+
onClick: stepPrev,
|
|
15642
|
+
"aria-disabled": !canPrev || void 0,
|
|
15643
|
+
"aria-label": "Previous days",
|
|
15644
|
+
children: "Prev"
|
|
15645
|
+
}
|
|
15646
|
+
),
|
|
15647
|
+
/* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-muted-foreground", children: formatDateRange(visibleDays[0], visibleDays[visibleDays.length - 1]) }),
|
|
15648
|
+
/* @__PURE__ */ jsx(
|
|
15649
|
+
Button,
|
|
15650
|
+
{
|
|
15651
|
+
variant: "ghost",
|
|
15652
|
+
size: "sm",
|
|
15653
|
+
iconRight: ChevronRight,
|
|
15654
|
+
onClick: stepNext,
|
|
15655
|
+
"aria-disabled": !canNext || void 0,
|
|
15656
|
+
"aria-label": "Next days",
|
|
15657
|
+
children: "Next"
|
|
15658
|
+
}
|
|
15659
|
+
)
|
|
15589
15660
|
] }),
|
|
15590
|
-
/* @__PURE__ */
|
|
15591
|
-
Box,
|
|
15592
|
-
|
|
15593
|
-
|
|
15594
|
-
|
|
15595
|
-
|
|
15596
|
-
|
|
15661
|
+
/* @__PURE__ */ jsxs(Box, { children: [
|
|
15662
|
+
/* @__PURE__ */ jsxs(Box, { className: cn("grid border-b border-border", gridColsClass), children: [
|
|
15663
|
+
/* @__PURE__ */ jsx(Box, { className: "p-2" }),
|
|
15664
|
+
visibleDays.map((day) => {
|
|
15665
|
+
const isToday = day.toDateString() === (/* @__PURE__ */ new Date()).toDateString();
|
|
15666
|
+
const count = eventsForDayCount(day);
|
|
15667
|
+
return /* @__PURE__ */ jsxs(
|
|
15668
|
+
Box,
|
|
15597
15669
|
{
|
|
15598
|
-
|
|
15599
|
-
|
|
15600
|
-
|
|
15601
|
-
|
|
15602
|
-
|
|
15603
|
-
|
|
15604
|
-
|
|
15605
|
-
|
|
15606
|
-
|
|
15607
|
-
const isToday = day.toDateString() === (/* @__PURE__ */ new Date()).toDateString();
|
|
15608
|
-
return /* @__PURE__ */ jsx(
|
|
15609
|
-
TimeSlotCell,
|
|
15610
|
-
{
|
|
15611
|
-
time,
|
|
15612
|
-
isOccupied: slotEvents.length > 0,
|
|
15613
|
-
onClick: () => handleSlotClick(day, time),
|
|
15614
|
-
className: cn(
|
|
15615
|
-
"border-l border-border",
|
|
15616
|
-
isToday && "bg-blue-50/30"
|
|
15670
|
+
className: "border-l border-border",
|
|
15671
|
+
children: [
|
|
15672
|
+
/* @__PURE__ */ jsx(
|
|
15673
|
+
DayCell,
|
|
15674
|
+
{
|
|
15675
|
+
date: day,
|
|
15676
|
+
isToday,
|
|
15677
|
+
onClick: onDayClick
|
|
15678
|
+
}
|
|
15617
15679
|
),
|
|
15618
|
-
|
|
15619
|
-
|
|
15620
|
-
|
|
15621
|
-
|
|
15622
|
-
|
|
15623
|
-
|
|
15624
|
-
|
|
15625
|
-
|
|
15626
|
-
|
|
15627
|
-
|
|
15628
|
-
|
|
15629
|
-
|
|
15630
|
-
|
|
15631
|
-
|
|
15632
|
-
|
|
15680
|
+
count > 0 && /* @__PURE__ */ jsx(Box, { className: "text-center pb-1", children: /* @__PURE__ */ jsx(Badge, { variant: "default", size: "sm", children: count }) })
|
|
15681
|
+
]
|
|
15682
|
+
},
|
|
15683
|
+
day.toISOString()
|
|
15684
|
+
);
|
|
15685
|
+
})
|
|
15686
|
+
] }),
|
|
15687
|
+
/* @__PURE__ */ jsx(Box, { className: "max-h-[500px] overflow-y-auto", children: resolvedTimeSlots.map((time) => /* @__PURE__ */ jsxs(
|
|
15688
|
+
Box,
|
|
15689
|
+
{
|
|
15690
|
+
className: cn("grid border-b border-border", gridColsClass),
|
|
15691
|
+
children: [
|
|
15692
|
+
/* @__PURE__ */ jsx(Box, { className: "p-2 text-right pr-3", children: /* @__PURE__ */ jsx(
|
|
15693
|
+
Typography,
|
|
15694
|
+
{
|
|
15695
|
+
variant: "small",
|
|
15696
|
+
className: "text-muted-foreground",
|
|
15697
|
+
children: time
|
|
15698
|
+
}
|
|
15699
|
+
) }),
|
|
15700
|
+
visibleDays.map((day) => {
|
|
15701
|
+
const slotEvents = events2.filter(
|
|
15702
|
+
(ev) => eventInSlot(ev, day, time)
|
|
15703
|
+
);
|
|
15704
|
+
const isToday = day.toDateString() === (/* @__PURE__ */ new Date()).toDateString();
|
|
15705
|
+
return /* @__PURE__ */ jsx(
|
|
15706
|
+
TimeSlotCell,
|
|
15707
|
+
{
|
|
15708
|
+
time,
|
|
15709
|
+
isOccupied: slotEvents.length > 0,
|
|
15710
|
+
onClick: () => handleSlotClick(day, time),
|
|
15711
|
+
className: cn(
|
|
15712
|
+
"border-l border-border",
|
|
15713
|
+
isToday && "bg-blue-50/30"
|
|
15714
|
+
),
|
|
15715
|
+
...longPressEvent ? {
|
|
15716
|
+
onPointerDown: () => startLongPress(day, time),
|
|
15717
|
+
onPointerUp: clearLongPress,
|
|
15718
|
+
onPointerCancel: clearLongPress
|
|
15719
|
+
} : {},
|
|
15720
|
+
children: /* @__PURE__ */ jsx(VStack, { gap: "xs", children: slotEvents.map(renderEvent) })
|
|
15721
|
+
},
|
|
15722
|
+
`${day.toISOString()}-${time}`
|
|
15723
|
+
);
|
|
15724
|
+
})
|
|
15725
|
+
]
|
|
15726
|
+
},
|
|
15727
|
+
time
|
|
15728
|
+
)) })
|
|
15729
|
+
] })
|
|
15730
|
+
]
|
|
15633
15731
|
}
|
|
15634
15732
|
);
|
|
15635
15733
|
}
|
|
15734
|
+
var SHORT_DATE;
|
|
15636
15735
|
var init_CalendarGrid = __esm({
|
|
15637
15736
|
"components/molecules/CalendarGrid.tsx"() {
|
|
15638
15737
|
"use client";
|
|
15639
15738
|
init_cn();
|
|
15640
15739
|
init_Box();
|
|
15740
|
+
init_Button();
|
|
15641
15741
|
init_Stack();
|
|
15642
15742
|
init_Typography();
|
|
15643
15743
|
init_Badge();
|
|
@@ -15645,6 +15745,7 @@ var init_CalendarGrid = __esm({
|
|
|
15645
15745
|
init_TimeSlotCell();
|
|
15646
15746
|
init_useEventBus();
|
|
15647
15747
|
init_useSwipeGesture();
|
|
15748
|
+
SHORT_DATE = { month: "short", day: "numeric" };
|
|
15648
15749
|
CalendarGrid.displayName = "CalendarGrid";
|
|
15649
15750
|
}
|
|
15650
15751
|
});
|
|
@@ -18852,9 +18953,9 @@ var init_Tabs = __esm({
|
|
|
18852
18953
|
className
|
|
18853
18954
|
}) => {
|
|
18854
18955
|
const rawItems = items ?? tabs ?? [];
|
|
18855
|
-
const safeItems = rawItems.map((
|
|
18856
|
-
...
|
|
18857
|
-
id:
|
|
18956
|
+
const safeItems = rawItems.map(({ id, value, ...rest }) => ({
|
|
18957
|
+
...rest,
|
|
18958
|
+
id: id || value || ""
|
|
18858
18959
|
}));
|
|
18859
18960
|
const eventBus = useEventBus();
|
|
18860
18961
|
const { t } = useTranslate();
|
|
@@ -18923,7 +19024,12 @@ var init_Tabs = __esm({
|
|
|
18923
19024
|
role: "tablist",
|
|
18924
19025
|
className: cn(
|
|
18925
19026
|
"flex",
|
|
18926
|
-
|
|
19027
|
+
// Horizontal tab strip becomes a horizontally-scrollable lane
|
|
19028
|
+
// below its container width — phones with many tabs scroll
|
|
19029
|
+
// instead of clipping. `snap-x` snaps to each tab; the
|
|
19030
|
+
// scrollbar is hidden for a cleaner affordance (the swipe
|
|
19031
|
+
// gesture is the discoverability cue).
|
|
19032
|
+
orientation === "horizontal" ? "flex-row border-b-[length:var(--border-width)] border-border overflow-x-auto snap-x snap-mandatory [&::-webkit-scrollbar]:hidden" : "flex-col border-r-[length:var(--border-width)] border-border",
|
|
18927
19033
|
variant === "pills" && "gap-1 p-1 bg-muted border-0 rounded-md",
|
|
18928
19034
|
variant === "underline" && orientation === "vertical" && "border-b-0"
|
|
18929
19035
|
),
|
|
@@ -18945,7 +19051,8 @@ var init_Tabs = __esm({
|
|
|
18945
19051
|
onKeyDown: (e) => handleKeyDown(e, index),
|
|
18946
19052
|
"data-active": isActive,
|
|
18947
19053
|
className: cn(
|
|
18948
|
-
"flex items-center gap-2 px-4 py-2 text-sm font-medium transition-all",
|
|
19054
|
+
"flex items-center gap-2 px-4 py-2 text-sm font-medium transition-all whitespace-nowrap",
|
|
19055
|
+
orientation === "horizontal" && "snap-start shrink-0",
|
|
18949
19056
|
"focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",
|
|
18950
19057
|
isDisabled && "opacity-50 cursor-not-allowed",
|
|
18951
19058
|
variantClasses2[variant],
|
|
@@ -19842,7 +19949,7 @@ function CraftingRecipe({
|
|
|
19842
19949
|
className
|
|
19843
19950
|
}) {
|
|
19844
19951
|
const eventBus = useEventBus();
|
|
19845
|
-
const handleCraft =
|
|
19952
|
+
const handleCraft = React78.useCallback(() => {
|
|
19846
19953
|
onCraft?.();
|
|
19847
19954
|
if (craftEvent) {
|
|
19848
19955
|
eventBus.emit(craftEvent, { output: output.label });
|
|
@@ -19859,7 +19966,7 @@ function CraftingRecipe({
|
|
|
19859
19966
|
children: [
|
|
19860
19967
|
/* @__PURE__ */ jsx(HStack, { gap: "xs", className: "flex-wrap items-center", children: inputs.map((ingredient, index) => {
|
|
19861
19968
|
const hasSufficient = ingredient.available >= ingredient.required;
|
|
19862
|
-
return /* @__PURE__ */ jsxs(
|
|
19969
|
+
return /* @__PURE__ */ jsxs(React78.Fragment, { children: [
|
|
19863
19970
|
/* @__PURE__ */ jsx(Box, { className: "relative", children: /* @__PURE__ */ jsx(
|
|
19864
19971
|
ItemSlot,
|
|
19865
19972
|
{
|
|
@@ -19922,8 +20029,8 @@ function DPad({
|
|
|
19922
20029
|
}) {
|
|
19923
20030
|
const eventBus = useEventBus();
|
|
19924
20031
|
const sizes = sizeMap6[size];
|
|
19925
|
-
const [activeDirections, setActiveDirections] =
|
|
19926
|
-
const handlePress =
|
|
20032
|
+
const [activeDirections, setActiveDirections] = React78.useState(/* @__PURE__ */ new Set());
|
|
20033
|
+
const handlePress = React78.useCallback(
|
|
19927
20034
|
(direction) => {
|
|
19928
20035
|
setActiveDirections((prev) => new Set(prev).add(direction));
|
|
19929
20036
|
if (directionEvent) eventBus.emit(`UI:${directionEvent}`, { direction, pressed: true });
|
|
@@ -19931,7 +20038,7 @@ function DPad({
|
|
|
19931
20038
|
},
|
|
19932
20039
|
[directionEvent, eventBus, onDirection]
|
|
19933
20040
|
);
|
|
19934
|
-
const handleRelease =
|
|
20041
|
+
const handleRelease = React78.useCallback(
|
|
19935
20042
|
(direction) => {
|
|
19936
20043
|
setActiveDirections((prev) => {
|
|
19937
20044
|
const next = new Set(prev);
|
|
@@ -20190,12 +20297,12 @@ var init_DashboardLayout = __esm({
|
|
|
20190
20297
|
HStack,
|
|
20191
20298
|
{
|
|
20192
20299
|
gap: "none",
|
|
20193
|
-
className: "min-h-screen w-full bg-background dark:bg-background items-stretch",
|
|
20300
|
+
className: "@container/dashboard min-h-screen w-full bg-background dark:bg-background items-stretch",
|
|
20194
20301
|
children: [
|
|
20195
20302
|
sidebarOpen && /* @__PURE__ */ jsx(
|
|
20196
20303
|
Box,
|
|
20197
20304
|
{
|
|
20198
|
-
className: "fixed inset-0 bg-foreground/50 dark:bg-foreground/70 z-20 lg:hidden",
|
|
20305
|
+
className: "fixed inset-0 bg-foreground/50 dark:bg-foreground/70 z-20 @lg/dashboard:hidden",
|
|
20199
20306
|
onClick: () => setSidebarOpen(false)
|
|
20200
20307
|
}
|
|
20201
20308
|
),
|
|
@@ -20205,7 +20312,7 @@ var init_DashboardLayout = __esm({
|
|
|
20205
20312
|
as: "aside",
|
|
20206
20313
|
className: cn(
|
|
20207
20314
|
"z-30 w-64 flex-shrink-0 bg-card dark:bg-card border-r border-border dark:border-border",
|
|
20208
|
-
"fixed inset-y-0 left-0 lg:static lg:translate-x-0 lg:h-auto",
|
|
20315
|
+
"fixed inset-y-0 left-0 @lg/dashboard:static @lg/dashboard:translate-x-0 @lg/dashboard:h-auto",
|
|
20209
20316
|
"transform transition-transform duration-200 ease-in-out",
|
|
20210
20317
|
"flex flex-col",
|
|
20211
20318
|
sidebarOpen ? "translate-x-0" : "-translate-x-full"
|
|
@@ -20242,7 +20349,7 @@ var init_DashboardLayout = __esm({
|
|
|
20242
20349
|
Button,
|
|
20243
20350
|
{
|
|
20244
20351
|
variant: "ghost",
|
|
20245
|
-
className: "lg:hidden p-2 rounded-md hover:bg-muted dark:hover:bg-muted text-muted-foreground dark:text-muted-foreground",
|
|
20352
|
+
className: "@lg/dashboard:hidden p-2 rounded-md hover:bg-muted dark:hover:bg-muted text-muted-foreground dark:text-muted-foreground",
|
|
20246
20353
|
onClick: () => setSidebarOpen(false),
|
|
20247
20354
|
children: /* @__PURE__ */ jsx(X, { className: "h-5 w-5" })
|
|
20248
20355
|
}
|
|
@@ -20281,19 +20388,19 @@ var init_DashboardLayout = __esm({
|
|
|
20281
20388
|
{
|
|
20282
20389
|
align: "center",
|
|
20283
20390
|
justify: "between",
|
|
20284
|
-
className: "h-full px-3 sm:px-4 gap-2 sm:gap-4",
|
|
20391
|
+
className: "h-full px-3 @sm/dashboard:px-4 gap-2 @sm/dashboard:gap-4",
|
|
20285
20392
|
children: [
|
|
20286
20393
|
/* @__PURE__ */ jsx(
|
|
20287
20394
|
Button,
|
|
20288
20395
|
{
|
|
20289
20396
|
variant: "ghost",
|
|
20290
|
-
className: "lg:hidden p-2 rounded-md hover:bg-muted dark:hover:bg-muted text-muted-foreground dark:text-muted-foreground touch-manipulation min-h-[44px] min-w-[44px] flex items-center justify-center",
|
|
20397
|
+
className: "@lg/dashboard:hidden p-2 rounded-md hover:bg-muted dark:hover:bg-muted text-muted-foreground dark:text-muted-foreground touch-manipulation min-h-[44px] min-w-[44px] flex items-center justify-center",
|
|
20291
20398
|
onClick: () => setSidebarOpen(true),
|
|
20292
20399
|
"aria-label": "Open sidebar",
|
|
20293
20400
|
children: /* @__PURE__ */ jsx(Menu$1, { className: "h-5 w-5" })
|
|
20294
20401
|
}
|
|
20295
20402
|
),
|
|
20296
|
-
searchEnabled && /* @__PURE__ */ jsx(Box, { className: "hidden sm:block flex-1 min-w-0 xl:max-w-md", children: /* @__PURE__ */ jsxs(Box, { className: "relative", children: [
|
|
20403
|
+
searchEnabled && /* @__PURE__ */ jsx(Box, { className: "hidden @sm/dashboard:block flex-1 min-w-0 @xl/dashboard:max-w-md", children: /* @__PURE__ */ jsxs(Box, { className: "relative", children: [
|
|
20297
20404
|
/* @__PURE__ */ jsx(Search, { className: "absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground dark:text-muted-foreground" }),
|
|
20298
20405
|
/* @__PURE__ */ jsx(
|
|
20299
20406
|
Input,
|
|
@@ -20378,12 +20485,12 @@ var init_DashboardLayout = __esm({
|
|
|
20378
20485
|
Typography,
|
|
20379
20486
|
{
|
|
20380
20487
|
variant: "small",
|
|
20381
|
-
className: "hidden sm:block text-sm font-medium text-foreground dark:text-foreground",
|
|
20488
|
+
className: "hidden @sm/dashboard:block text-sm font-medium text-foreground dark:text-foreground",
|
|
20382
20489
|
as: "span",
|
|
20383
20490
|
children: user.name
|
|
20384
20491
|
}
|
|
20385
20492
|
),
|
|
20386
|
-
/* @__PURE__ */ jsx(ChevronDown, { className: "hidden sm:block h-4 w-4 text-muted-foreground dark:text-muted-foreground" })
|
|
20493
|
+
/* @__PURE__ */ jsx(ChevronDown, { className: "hidden @sm/dashboard:block h-4 w-4 text-muted-foreground dark:text-muted-foreground" })
|
|
20387
20494
|
]
|
|
20388
20495
|
}
|
|
20389
20496
|
),
|
|
@@ -20440,7 +20547,7 @@ var init_DashboardLayout = __esm({
|
|
|
20440
20547
|
)
|
|
20441
20548
|
}
|
|
20442
20549
|
),
|
|
20443
|
-
/* @__PURE__ */ jsx(Box, { as: "main", className: "flex-1 p-3 sm:p-4 md:p-6", children })
|
|
20550
|
+
/* @__PURE__ */ jsx(Box, { as: "main", className: "flex-1 p-3 @sm/dashboard:p-4 @md/dashboard:p-6", children })
|
|
20444
20551
|
] })
|
|
20445
20552
|
]
|
|
20446
20553
|
}
|
|
@@ -20525,14 +20632,14 @@ function useDataDnd(args) {
|
|
|
20525
20632
|
const isZone = Boolean(dragGroup || accepts || sortable);
|
|
20526
20633
|
const enabled = isZone || Boolean(dndRoot);
|
|
20527
20634
|
const eventBus = useEventBus();
|
|
20528
|
-
const parentRoot =
|
|
20635
|
+
const parentRoot = React78__default.useContext(RootCtx);
|
|
20529
20636
|
const isRoot = enabled && parentRoot === null;
|
|
20530
|
-
const zoneId =
|
|
20637
|
+
const zoneId = React78__default.useId();
|
|
20531
20638
|
const ownGroup = dragGroup ?? accepts ?? zoneId;
|
|
20532
|
-
const [optimisticOrders, setOptimisticOrders] =
|
|
20533
|
-
const optimisticOrdersRef =
|
|
20639
|
+
const [optimisticOrders, setOptimisticOrders] = React78__default.useState(() => /* @__PURE__ */ new Map());
|
|
20640
|
+
const optimisticOrdersRef = React78__default.useRef(optimisticOrders);
|
|
20534
20641
|
optimisticOrdersRef.current = optimisticOrders;
|
|
20535
|
-
const clearOptimisticOrder =
|
|
20642
|
+
const clearOptimisticOrder = React78__default.useCallback((group) => {
|
|
20536
20643
|
setOptimisticOrders((prev) => {
|
|
20537
20644
|
if (!prev.has(group)) return prev;
|
|
20538
20645
|
const next = new Map(prev);
|
|
@@ -20557,7 +20664,7 @@ function useDataDnd(args) {
|
|
|
20557
20664
|
const raw = it[dndItemIdField];
|
|
20558
20665
|
return String(raw ?? `__idx_${idx}`);
|
|
20559
20666
|
}).join("|");
|
|
20560
|
-
const itemIds =
|
|
20667
|
+
const itemIds = React78__default.useMemo(
|
|
20561
20668
|
() => orderedItems.map((it, idx) => {
|
|
20562
20669
|
const raw = it[dndItemIdField];
|
|
20563
20670
|
return raw ?? `__idx_${idx}`;
|
|
@@ -20565,7 +20672,7 @@ function useDataDnd(args) {
|
|
|
20565
20672
|
[itemIdsSignature]
|
|
20566
20673
|
);
|
|
20567
20674
|
const itemsContentSig = items.map((it, idx) => String(it[dndItemIdField] ?? `__${idx}`)).join("|");
|
|
20568
|
-
|
|
20675
|
+
React78__default.useEffect(() => {
|
|
20569
20676
|
const root = isRoot ? null : parentRoot;
|
|
20570
20677
|
if (root) {
|
|
20571
20678
|
root.clearOptimisticOrder(ownGroup);
|
|
@@ -20573,20 +20680,20 @@ function useDataDnd(args) {
|
|
|
20573
20680
|
clearOptimisticOrder(ownGroup);
|
|
20574
20681
|
}
|
|
20575
20682
|
}, [itemsContentSig, ownGroup]);
|
|
20576
|
-
const zonesRef =
|
|
20577
|
-
const registerZone =
|
|
20683
|
+
const zonesRef = React78__default.useRef(/* @__PURE__ */ new Map());
|
|
20684
|
+
const registerZone = React78__default.useCallback((zoneId2, meta2) => {
|
|
20578
20685
|
zonesRef.current.set(zoneId2, meta2);
|
|
20579
20686
|
}, []);
|
|
20580
|
-
const unregisterZone =
|
|
20687
|
+
const unregisterZone = React78__default.useCallback((zoneId2) => {
|
|
20581
20688
|
zonesRef.current.delete(zoneId2);
|
|
20582
20689
|
}, []);
|
|
20583
|
-
const [activeDrag, setActiveDrag] =
|
|
20584
|
-
const [overZoneGroup, setOverZoneGroup] =
|
|
20585
|
-
const meta =
|
|
20690
|
+
const [activeDrag, setActiveDrag] = React78__default.useState(null);
|
|
20691
|
+
const [overZoneGroup, setOverZoneGroup] = React78__default.useState(null);
|
|
20692
|
+
const meta = React78__default.useMemo(
|
|
20586
20693
|
() => ({ group: ownGroup, dropEvent, reorderEvent, positionEvent, itemIds, rawItems: items, idField: dndItemIdField }),
|
|
20587
20694
|
[ownGroup, dropEvent, reorderEvent, positionEvent, itemIds, items, dndItemIdField]
|
|
20588
20695
|
);
|
|
20589
|
-
|
|
20696
|
+
React78__default.useEffect(() => {
|
|
20590
20697
|
const target = isRoot ? null : parentRoot;
|
|
20591
20698
|
if (!target) {
|
|
20592
20699
|
zonesRef.current.set(zoneId, meta);
|
|
@@ -20605,7 +20712,7 @@ function useDataDnd(args) {
|
|
|
20605
20712
|
}, [parentRoot, isRoot, zoneId, meta]);
|
|
20606
20713
|
const sensors = useAlmadarDndSensors(true);
|
|
20607
20714
|
const collisionDetection = almadarDndCollisionDetection;
|
|
20608
|
-
const findZoneByItem =
|
|
20715
|
+
const findZoneByItem = React78__default.useCallback(
|
|
20609
20716
|
(id) => {
|
|
20610
20717
|
for (const z of zonesRef.current.values()) {
|
|
20611
20718
|
if (z.itemIds.includes(id)) return z;
|
|
@@ -20614,7 +20721,7 @@ function useDataDnd(args) {
|
|
|
20614
20721
|
},
|
|
20615
20722
|
[]
|
|
20616
20723
|
);
|
|
20617
|
-
|
|
20724
|
+
React78__default.useCallback(
|
|
20618
20725
|
(group) => {
|
|
20619
20726
|
for (const z of zonesRef.current.values()) {
|
|
20620
20727
|
if (z.group === group) return z;
|
|
@@ -20623,7 +20730,7 @@ function useDataDnd(args) {
|
|
|
20623
20730
|
},
|
|
20624
20731
|
[]
|
|
20625
20732
|
);
|
|
20626
|
-
const handleDragEnd =
|
|
20733
|
+
const handleDragEnd = React78__default.useCallback(
|
|
20627
20734
|
(event) => {
|
|
20628
20735
|
const { active, over } = event;
|
|
20629
20736
|
const activeIdStr = String(active.id);
|
|
@@ -20714,8 +20821,8 @@ function useDataDnd(args) {
|
|
|
20714
20821
|
},
|
|
20715
20822
|
[eventBus]
|
|
20716
20823
|
);
|
|
20717
|
-
const sortableData =
|
|
20718
|
-
const SortableItem =
|
|
20824
|
+
const sortableData = React78__default.useMemo(() => ({ dndGroup: ownGroup }), [ownGroup]);
|
|
20825
|
+
const SortableItem = React78__default.useCallback(
|
|
20719
20826
|
({ id, children }) => {
|
|
20720
20827
|
const {
|
|
20721
20828
|
attributes,
|
|
@@ -20755,7 +20862,7 @@ function useDataDnd(args) {
|
|
|
20755
20862
|
id: droppableId,
|
|
20756
20863
|
data: sortableData
|
|
20757
20864
|
});
|
|
20758
|
-
const ctx =
|
|
20865
|
+
const ctx = React78__default.useContext(RootCtx);
|
|
20759
20866
|
const activeDrag2 = ctx?.activeDrag ?? null;
|
|
20760
20867
|
const overZoneGroup2 = ctx?.overZoneGroup ?? null;
|
|
20761
20868
|
const isThisZoneOver = overZoneGroup2 === ownGroup;
|
|
@@ -20770,7 +20877,7 @@ function useDataDnd(args) {
|
|
|
20770
20877
|
showForeignPlaceholder,
|
|
20771
20878
|
ctxAvailable: ctx != null
|
|
20772
20879
|
});
|
|
20773
|
-
|
|
20880
|
+
React78__default.useEffect(() => {
|
|
20774
20881
|
dndLog.info("dropzone:isOver:change", { droppableId, group: ownGroup, isOver, isThisZoneOver, showForeignPlaceholder, activeDragSourceGroup: activeDrag2?.sourceGroup ?? null });
|
|
20775
20882
|
}, [droppableId, isOver, isThisZoneOver, showForeignPlaceholder]);
|
|
20776
20883
|
return /* @__PURE__ */ jsx(
|
|
@@ -20784,11 +20891,11 @@ function useDataDnd(args) {
|
|
|
20784
20891
|
}
|
|
20785
20892
|
);
|
|
20786
20893
|
};
|
|
20787
|
-
const rootContextValue =
|
|
20894
|
+
const rootContextValue = React78__default.useMemo(
|
|
20788
20895
|
() => ({ registerZone, unregisterZone, activeDrag, overZoneGroup, optimisticOrders, clearOptimisticOrder }),
|
|
20789
20896
|
[registerZone, unregisterZone, activeDrag, overZoneGroup, optimisticOrders, clearOptimisticOrder]
|
|
20790
20897
|
);
|
|
20791
|
-
const handleDragStart =
|
|
20898
|
+
const handleDragStart = React78__default.useCallback((event) => {
|
|
20792
20899
|
const sourceZone = findZoneByItem(event.active.id);
|
|
20793
20900
|
const rect = event.active.rect.current.initial;
|
|
20794
20901
|
const height = rect?.height && rect.height > 0 ? rect.height : 64;
|
|
@@ -20807,7 +20914,7 @@ function useDataDnd(args) {
|
|
|
20807
20914
|
isRoot
|
|
20808
20915
|
});
|
|
20809
20916
|
}, [findZoneByItem, isRoot, zoneId]);
|
|
20810
|
-
const handleDragOver =
|
|
20917
|
+
const handleDragOver = React78__default.useCallback((event) => {
|
|
20811
20918
|
const { active, over } = event;
|
|
20812
20919
|
const overData = over?.data?.current;
|
|
20813
20920
|
const overGroup = overData?.dndGroup ?? null;
|
|
@@ -20877,7 +20984,7 @@ function useDataDnd(args) {
|
|
|
20877
20984
|
return next;
|
|
20878
20985
|
});
|
|
20879
20986
|
}, []);
|
|
20880
|
-
const handleDragCancel =
|
|
20987
|
+
const handleDragCancel = React78__default.useCallback((event) => {
|
|
20881
20988
|
setActiveDrag(null);
|
|
20882
20989
|
setOverZoneGroup(null);
|
|
20883
20990
|
dndLog.warn("dragCancel", {
|
|
@@ -20885,12 +20992,12 @@ function useDataDnd(args) {
|
|
|
20885
20992
|
reason: "dnd-kit cancelled the drag (escape key, pointer interrupted, or external)"
|
|
20886
20993
|
});
|
|
20887
20994
|
}, []);
|
|
20888
|
-
const handleDragEndWithCleanup =
|
|
20995
|
+
const handleDragEndWithCleanup = React78__default.useCallback((event) => {
|
|
20889
20996
|
handleDragEnd(event);
|
|
20890
20997
|
setActiveDrag(null);
|
|
20891
20998
|
setOverZoneGroup(null);
|
|
20892
20999
|
}, [handleDragEnd]);
|
|
20893
|
-
const wrapContainer =
|
|
21000
|
+
const wrapContainer = React78__default.useCallback(
|
|
20894
21001
|
(children) => {
|
|
20895
21002
|
if (!enabled) return children;
|
|
20896
21003
|
const strategy = layout === "grid" ? rectSortingStrategy : verticalListSortingStrategy;
|
|
@@ -20944,7 +21051,7 @@ var init_useDataDnd = __esm({
|
|
|
20944
21051
|
init_useAlmadarDndCollision();
|
|
20945
21052
|
init_Box();
|
|
20946
21053
|
dndLog = createLogger("almadar:ui:dnd");
|
|
20947
|
-
RootCtx =
|
|
21054
|
+
RootCtx = React78__default.createContext(null);
|
|
20948
21055
|
}
|
|
20949
21056
|
});
|
|
20950
21057
|
function fieldLabel2(key) {
|
|
@@ -21433,7 +21540,7 @@ function DataList({
|
|
|
21433
21540
|
}) {
|
|
21434
21541
|
const eventBus = useEventBus();
|
|
21435
21542
|
const { t } = useTranslate();
|
|
21436
|
-
const [visibleCount, setVisibleCount] =
|
|
21543
|
+
const [visibleCount, setVisibleCount] = React78__default.useState(pageSize || Infinity);
|
|
21437
21544
|
const fieldDefs = fields ?? columns ?? [];
|
|
21438
21545
|
const allDataRaw = Array.isArray(entity) ? entity : entity ? [entity] : [];
|
|
21439
21546
|
const dnd = useDataDnd({
|
|
@@ -21452,7 +21559,7 @@ function DataList({
|
|
|
21452
21559
|
const data = pageSize > 0 ? allData.slice(0, visibleCount) : allData;
|
|
21453
21560
|
const hasMoreLocal = pageSize > 0 && visibleCount < allData.length;
|
|
21454
21561
|
const hasRenderProp = typeof children === "function";
|
|
21455
|
-
|
|
21562
|
+
React78__default.useEffect(() => {
|
|
21456
21563
|
const renderItemTypeOf = typeof schemaRenderItem;
|
|
21457
21564
|
const childrenTypeOf = typeof children;
|
|
21458
21565
|
if (data.length > 0 && !hasRenderProp) {
|
|
@@ -21509,7 +21616,7 @@ function DataList({
|
|
|
21509
21616
|
const items2 = data.map((item) => item);
|
|
21510
21617
|
const groups2 = groupBy ? groupData(items2, groupBy) : [{ label: "", items: items2 }];
|
|
21511
21618
|
const contentField = titleField?.name ?? fieldDefs[0]?.name ?? "";
|
|
21512
|
-
return /* @__PURE__ */ jsx(VStack, { gap: "sm", className: cn("py-2", className), children: groups2.map((group, gi) => /* @__PURE__ */ jsxs(
|
|
21619
|
+
return /* @__PURE__ */ jsx(VStack, { gap: "sm", className: cn("py-2", className), children: groups2.map((group, gi) => /* @__PURE__ */ jsxs(React78__default.Fragment, { children: [
|
|
21513
21620
|
group.label && /* @__PURE__ */ jsx(Divider, { label: group.label, className: "my-2" }),
|
|
21514
21621
|
group.items.map((itemData, index) => {
|
|
21515
21622
|
const id = itemData.id || `${gi}-${index}`;
|
|
@@ -21697,7 +21804,7 @@ function DataList({
|
|
|
21697
21804
|
className
|
|
21698
21805
|
),
|
|
21699
21806
|
children: [
|
|
21700
|
-
groups.map((group, gi) => /* @__PURE__ */ jsxs(
|
|
21807
|
+
groups.map((group, gi) => /* @__PURE__ */ jsxs(React78__default.Fragment, { children: [
|
|
21701
21808
|
group.label && /* @__PURE__ */ jsx(Divider, { label: group.label, className: gi > 0 ? "mt-4" : "mt-0" }),
|
|
21702
21809
|
group.items.map(
|
|
21703
21810
|
(itemData, index) => renderItem(itemData, index, gi === groups.length - 1 && index === group.items.length - 1)
|
|
@@ -22934,6 +23041,8 @@ var SidePanel;
|
|
|
22934
23041
|
var init_SidePanel = __esm({
|
|
22935
23042
|
"components/molecules/SidePanel.tsx"() {
|
|
22936
23043
|
"use client";
|
|
23044
|
+
init_Aside();
|
|
23045
|
+
init_Box();
|
|
22937
23046
|
init_Button();
|
|
22938
23047
|
init_Typography();
|
|
22939
23048
|
init_cn();
|
|
@@ -22943,7 +23052,7 @@ var init_SidePanel = __esm({
|
|
|
22943
23052
|
children,
|
|
22944
23053
|
isOpen,
|
|
22945
23054
|
onClose,
|
|
22946
|
-
width = "w-96",
|
|
23055
|
+
width = "w-full sm:w-96",
|
|
22947
23056
|
position = "right",
|
|
22948
23057
|
showOverlay = true,
|
|
22949
23058
|
className,
|
|
@@ -22957,14 +23066,14 @@ var init_SidePanel = __esm({
|
|
|
22957
23066
|
if (!isOpen) return null;
|
|
22958
23067
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
22959
23068
|
showOverlay && /* @__PURE__ */ jsx(
|
|
22960
|
-
|
|
23069
|
+
Box,
|
|
22961
23070
|
{
|
|
22962
23071
|
className: "fixed inset-0 bg-white/80 backdrop-blur-sm z-40 lg:hidden",
|
|
22963
23072
|
onClick: handleClose
|
|
22964
23073
|
}
|
|
22965
23074
|
),
|
|
22966
23075
|
/* @__PURE__ */ jsxs(
|
|
22967
|
-
|
|
23076
|
+
Aside,
|
|
22968
23077
|
{
|
|
22969
23078
|
className: cn(
|
|
22970
23079
|
"fixed top-16 lg:top-0 bottom-0 z-[60]",
|
|
@@ -22978,7 +23087,7 @@ var init_SidePanel = __esm({
|
|
|
22978
23087
|
className
|
|
22979
23088
|
),
|
|
22980
23089
|
children: [
|
|
22981
|
-
/* @__PURE__ */ jsxs(
|
|
23090
|
+
/* @__PURE__ */ jsxs(Box, { className: "flex items-center justify-between p-4 border-b-2 border-border sticky top-0 bg-card z-10", children: [
|
|
22982
23091
|
/* @__PURE__ */ jsx(Typography, { variant: "h6", children: title }),
|
|
22983
23092
|
/* @__PURE__ */ jsx(
|
|
22984
23093
|
Button,
|
|
@@ -22988,11 +23097,11 @@ var init_SidePanel = __esm({
|
|
|
22988
23097
|
icon: X,
|
|
22989
23098
|
onClick: handleClose,
|
|
22990
23099
|
"aria-label": "Close panel",
|
|
22991
|
-
children: /* @__PURE__ */ jsx("span",
|
|
23100
|
+
children: /* @__PURE__ */ jsx(Typography, { variant: "small", as: "span", className: "sr-only", children: "Close" })
|
|
22992
23101
|
}
|
|
22993
23102
|
)
|
|
22994
23103
|
] }),
|
|
22995
|
-
/* @__PURE__ */ jsx(
|
|
23104
|
+
/* @__PURE__ */ jsx(Box, { className: "p-4 flex-1 overflow-y-auto", children })
|
|
22996
23105
|
]
|
|
22997
23106
|
}
|
|
22998
23107
|
)
|
|
@@ -23043,7 +23152,7 @@ var init_WizardProgress = __esm({
|
|
|
23043
23152
|
children: /* @__PURE__ */ jsx("div", { className: "flex items-center gap-2", children: normalizedSteps.map((step, index) => {
|
|
23044
23153
|
const isActive = index === currentStep;
|
|
23045
23154
|
const isCompleted = index < currentStep;
|
|
23046
|
-
return /* @__PURE__ */ jsxs(
|
|
23155
|
+
return /* @__PURE__ */ jsxs(React78__default.Fragment, { children: [
|
|
23047
23156
|
/* @__PURE__ */ jsx(
|
|
23048
23157
|
"button",
|
|
23049
23158
|
{
|
|
@@ -23168,7 +23277,9 @@ var init_WizardNavigation = __esm({
|
|
|
23168
23277
|
{
|
|
23169
23278
|
border: true,
|
|
23170
23279
|
className: cn(
|
|
23171
|
-
|
|
23280
|
+
// `flex-wrap gap-2` lets the Back / Step / Next trio reflow on
|
|
23281
|
+
// narrow viewports rather than crushing the step counter.
|
|
23282
|
+
"border-t-2 border-x-0 border-b-0 border-border flex flex-wrap gap-2 justify-between items-center",
|
|
23172
23283
|
compact ? "px-4 py-2" : "px-6 py-4",
|
|
23173
23284
|
className
|
|
23174
23285
|
),
|
|
@@ -24088,9 +24199,9 @@ function ScoreDisplay({
|
|
|
24088
24199
|
...rest
|
|
24089
24200
|
}) {
|
|
24090
24201
|
const resolvedValue = typeof value === "number" && !Number.isNaN(value) ? value : typeof rest.score === "number" && !Number.isNaN(rest.score) ? rest.score : 0;
|
|
24091
|
-
const [displayValue, setDisplayValue] =
|
|
24092
|
-
const [isAnimating, setIsAnimating] =
|
|
24093
|
-
|
|
24202
|
+
const [displayValue, setDisplayValue] = React78.useState(resolvedValue);
|
|
24203
|
+
const [isAnimating, setIsAnimating] = React78.useState(false);
|
|
24204
|
+
React78.useEffect(() => {
|
|
24094
24205
|
if (!animated || displayValue === resolvedValue) {
|
|
24095
24206
|
setDisplayValue(resolvedValue);
|
|
24096
24207
|
return;
|
|
@@ -24240,7 +24351,7 @@ function InventoryGrid({
|
|
|
24240
24351
|
const eventBus = useEventBus();
|
|
24241
24352
|
const slotCount = totalSlots ?? items.length;
|
|
24242
24353
|
const emptySlotCount = Math.max(0, slotCount - items.length);
|
|
24243
|
-
const handleSelect =
|
|
24354
|
+
const handleSelect = React78.useCallback(
|
|
24244
24355
|
(id) => {
|
|
24245
24356
|
onSelect?.(id);
|
|
24246
24357
|
if (selectEvent) {
|
|
@@ -24522,15 +24633,15 @@ function GameCanvas2D({
|
|
|
24522
24633
|
fps = 60,
|
|
24523
24634
|
className
|
|
24524
24635
|
}) {
|
|
24525
|
-
const canvasRef =
|
|
24526
|
-
const rafRef =
|
|
24527
|
-
const frameRef =
|
|
24528
|
-
const lastTimeRef =
|
|
24529
|
-
const onDrawRef =
|
|
24636
|
+
const canvasRef = React78.useRef(null);
|
|
24637
|
+
const rafRef = React78.useRef(0);
|
|
24638
|
+
const frameRef = React78.useRef(0);
|
|
24639
|
+
const lastTimeRef = React78.useRef(0);
|
|
24640
|
+
const onDrawRef = React78.useRef(onDraw);
|
|
24530
24641
|
onDrawRef.current = onDraw;
|
|
24531
|
-
const onTickRef =
|
|
24642
|
+
const onTickRef = React78.useRef(onTick);
|
|
24532
24643
|
onTickRef.current = onTick;
|
|
24533
|
-
|
|
24644
|
+
React78.useEffect(() => {
|
|
24534
24645
|
const canvas = canvasRef.current;
|
|
24535
24646
|
if (!canvas) return;
|
|
24536
24647
|
const ctx = canvas.getContext("2d");
|
|
@@ -24871,7 +24982,7 @@ function TurnPanel({
|
|
|
24871
24982
|
className
|
|
24872
24983
|
}) {
|
|
24873
24984
|
const eventBus = useEventBus();
|
|
24874
|
-
const handleAction =
|
|
24985
|
+
const handleAction = React78.useCallback(
|
|
24875
24986
|
(event) => {
|
|
24876
24987
|
if (event) {
|
|
24877
24988
|
eventBus.emit(event, { turn: currentTurn, phase, activeTeam });
|
|
@@ -25017,7 +25128,7 @@ function UnitCommandBar({
|
|
|
25017
25128
|
className
|
|
25018
25129
|
}) {
|
|
25019
25130
|
const eventBus = useEventBus();
|
|
25020
|
-
const handleCommand =
|
|
25131
|
+
const handleCommand = React78.useCallback(
|
|
25021
25132
|
(event) => {
|
|
25022
25133
|
if (event) {
|
|
25023
25134
|
eventBus.emit(event, { unitId: selectedUnitId });
|
|
@@ -25502,7 +25613,7 @@ function GameMenu({
|
|
|
25502
25613
|
} catch {
|
|
25503
25614
|
}
|
|
25504
25615
|
const eventBus = eventBusProp || eventBusFromHook;
|
|
25505
|
-
const handleOptionClick =
|
|
25616
|
+
const handleOptionClick = React78.useCallback(
|
|
25506
25617
|
(option) => {
|
|
25507
25618
|
if (option.event && eventBus) {
|
|
25508
25619
|
eventBus.emit(`UI:${option.event}`, { option });
|
|
@@ -25616,7 +25727,7 @@ function GameOverScreen({
|
|
|
25616
25727
|
} catch {
|
|
25617
25728
|
}
|
|
25618
25729
|
const eventBus = eventBusProp || eventBusFromHook;
|
|
25619
|
-
const handleActionClick =
|
|
25730
|
+
const handleActionClick = React78.useCallback(
|
|
25620
25731
|
(action) => {
|
|
25621
25732
|
if (action.event && eventBus) {
|
|
25622
25733
|
eventBus.emit(`UI:${action.event}`, { action });
|
|
@@ -28285,7 +28396,16 @@ var init_StepFlow = __esm({
|
|
|
28285
28396
|
"flex items-center justify-center",
|
|
28286
28397
|
"bg-primary text-primary-foreground"
|
|
28287
28398
|
),
|
|
28288
|
-
children: /* @__PURE__ */ jsx(
|
|
28399
|
+
children: /* @__PURE__ */ jsx(
|
|
28400
|
+
Typography,
|
|
28401
|
+
{
|
|
28402
|
+
as: "span",
|
|
28403
|
+
variant: "small",
|
|
28404
|
+
weight: "semibold",
|
|
28405
|
+
className: "text-primary-foreground leading-none",
|
|
28406
|
+
children: step.number ?? index + 1
|
|
28407
|
+
}
|
|
28408
|
+
)
|
|
28289
28409
|
}
|
|
28290
28410
|
);
|
|
28291
28411
|
};
|
|
@@ -28297,7 +28417,7 @@ var init_StepFlow = __esm({
|
|
|
28297
28417
|
className
|
|
28298
28418
|
}) => {
|
|
28299
28419
|
if (orientation === "vertical") {
|
|
28300
|
-
return /* @__PURE__ */ jsx(VStack, { gap: "none", className: cn("w-full", className), children: steps.map((step, index) => /* @__PURE__ */ jsx(
|
|
28420
|
+
return /* @__PURE__ */ jsx(VStack, { gap: "none", className: cn("w-full", className), children: steps.map((step, index) => /* @__PURE__ */ jsx(React78__default.Fragment, { children: /* @__PURE__ */ jsxs(HStack, { gap: "md", align: "start", className: "w-full", children: [
|
|
28301
28421
|
/* @__PURE__ */ jsxs(VStack, { gap: "none", align: "center", children: [
|
|
28302
28422
|
/* @__PURE__ */ jsx(StepCircle, { step, index }),
|
|
28303
28423
|
showConnectors && index < steps.length - 1 && /* @__PURE__ */ jsx(Box, { className: "w-px h-8 bg-border" })
|
|
@@ -28308,7 +28428,7 @@ var init_StepFlow = __esm({
|
|
|
28308
28428
|
] })
|
|
28309
28429
|
] }) }, index)) });
|
|
28310
28430
|
}
|
|
28311
|
-
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(
|
|
28431
|
+
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(React78__default.Fragment, { children: [
|
|
28312
28432
|
/* @__PURE__ */ jsxs(VStack, { gap: "sm", align: "center", className: "flex-1 w-full md:w-auto", children: [
|
|
28313
28433
|
/* @__PURE__ */ jsx(StepCircle, { step, index }),
|
|
28314
28434
|
/* @__PURE__ */ jsx(Typography, { variant: "h4", className: "text-center", children: step.title }),
|
|
@@ -28376,9 +28496,9 @@ var init_SplitSection = __esm({
|
|
|
28376
28496
|
className
|
|
28377
28497
|
),
|
|
28378
28498
|
padding: "lg",
|
|
28379
|
-
children: /* @__PURE__ */ jsxs(Box, { className: cn("w-full flex flex-col
|
|
28380
|
-
/* @__PURE__ */ jsx(Box, { className: "flex-1 min-w-0
|
|
28381
|
-
/* @__PURE__ */ jsx(Box, { className: "flex-1 min-w-0
|
|
28499
|
+
children: /* @__PURE__ */ jsxs(Box, { className: cn("w-full flex flex-col md:flex-row gap-8 md:gap-12 lg:gap-16 items-center", isImageLeft && "md:flex-row-reverse"), children: [
|
|
28500
|
+
/* @__PURE__ */ jsx(Box, { className: "flex-1 min-w-0 md:min-w-[45%]", children: textContent }),
|
|
28501
|
+
/* @__PURE__ */ jsx(Box, { className: "flex-1 min-w-0 md:max-w-[50%]", children: mediaContent })
|
|
28382
28502
|
] })
|
|
28383
28503
|
}
|
|
28384
28504
|
);
|
|
@@ -29190,7 +29310,7 @@ var init_LikertScale = __esm({
|
|
|
29190
29310
|
md: "text-base",
|
|
29191
29311
|
lg: "text-lg"
|
|
29192
29312
|
};
|
|
29193
|
-
LikertScale =
|
|
29313
|
+
LikertScale = React78__default.forwardRef(
|
|
29194
29314
|
({
|
|
29195
29315
|
question,
|
|
29196
29316
|
options = DEFAULT_LIKERT_OPTIONS,
|
|
@@ -29202,7 +29322,7 @@ var init_LikertScale = __esm({
|
|
|
29202
29322
|
variant = "radios",
|
|
29203
29323
|
className
|
|
29204
29324
|
}, ref) => {
|
|
29205
|
-
const groupId =
|
|
29325
|
+
const groupId = React78__default.useId();
|
|
29206
29326
|
const eventBus = useEventBus();
|
|
29207
29327
|
const handleSelect = useCallback(
|
|
29208
29328
|
(next) => {
|
|
@@ -30010,64 +30130,68 @@ var init_PositionedCanvas = __esm({
|
|
|
30010
30130
|
},
|
|
30011
30131
|
[onSelect, selectEvent, eventBus]
|
|
30012
30132
|
);
|
|
30013
|
-
return
|
|
30014
|
-
|
|
30015
|
-
|
|
30016
|
-
|
|
30017
|
-
|
|
30018
|
-
|
|
30019
|
-
|
|
30020
|
-
|
|
30021
|
-
|
|
30022
|
-
|
|
30023
|
-
|
|
30024
|
-
|
|
30025
|
-
|
|
30026
|
-
|
|
30027
|
-
|
|
30028
|
-
|
|
30029
|
-
|
|
30030
|
-
|
|
30031
|
-
|
|
30032
|
-
|
|
30033
|
-
|
|
30034
|
-
|
|
30035
|
-
|
|
30036
|
-
"
|
|
30037
|
-
"
|
|
30038
|
-
|
|
30039
|
-
|
|
30040
|
-
|
|
30041
|
-
|
|
30042
|
-
|
|
30043
|
-
|
|
30044
|
-
|
|
30045
|
-
|
|
30046
|
-
|
|
30047
|
-
|
|
30048
|
-
|
|
30049
|
-
|
|
30050
|
-
|
|
30051
|
-
|
|
30052
|
-
|
|
30053
|
-
|
|
30054
|
-
|
|
30055
|
-
|
|
30056
|
-
|
|
30057
|
-
|
|
30058
|
-
{
|
|
30059
|
-
|
|
30060
|
-
|
|
30061
|
-
|
|
30062
|
-
|
|
30063
|
-
|
|
30064
|
-
|
|
30065
|
-
|
|
30066
|
-
|
|
30067
|
-
|
|
30068
|
-
|
|
30069
|
-
|
|
30070
|
-
|
|
30133
|
+
return (
|
|
30134
|
+
// Outer scroll viewport: caps the visual footprint to the parent's
|
|
30135
|
+
// available width on small screens. The inner plane keeps its fixed
|
|
30136
|
+
// {width × height} coordinate system (items are positioned by
|
|
30137
|
+
// absolute item.x/item.y), so a phone-sized viewport pans inside
|
|
30138
|
+
// the larger logical canvas rather than busting the layout.
|
|
30139
|
+
/* @__PURE__ */ jsx(Box, { className: cn("max-w-full overflow-auto rounded-md", className), children: /* @__PURE__ */ jsx(
|
|
30140
|
+
Box,
|
|
30141
|
+
{
|
|
30142
|
+
ref: containerRef,
|
|
30143
|
+
"data-testid": "positioned-canvas",
|
|
30144
|
+
className: "relative bg-background border border-border rounded-md overflow-hidden",
|
|
30145
|
+
style: { width, height },
|
|
30146
|
+
onClick: handleContainerClick,
|
|
30147
|
+
children: items.map((item) => {
|
|
30148
|
+
const status = item.status ?? "empty";
|
|
30149
|
+
const shape = item.shape ?? "round";
|
|
30150
|
+
const isSelected = selectedId === item.id;
|
|
30151
|
+
const isDragging = draggingId === item.id;
|
|
30152
|
+
const statusBadge = STATUS_BADGE[status];
|
|
30153
|
+
return /* @__PURE__ */ jsxs(
|
|
30154
|
+
Box,
|
|
30155
|
+
{
|
|
30156
|
+
"data-testid": `item-node-${item.id}`,
|
|
30157
|
+
"data-status": status,
|
|
30158
|
+
className: cn(
|
|
30159
|
+
"absolute flex flex-col items-center justify-center gap-1 border-2 select-none",
|
|
30160
|
+
"transition-shadow",
|
|
30161
|
+
STATUS_CLASSES[status],
|
|
30162
|
+
getShapeClasses(shape),
|
|
30163
|
+
editable ? "cursor-move" : "cursor-pointer",
|
|
30164
|
+
isSelected && "outline outline-2 outline-offset-2 outline-primary shadow-md",
|
|
30165
|
+
isDragging && "shadow-lg z-10"
|
|
30166
|
+
),
|
|
30167
|
+
style: { left: item.x, top: item.y, touchAction: "none" },
|
|
30168
|
+
onPointerDown: (e) => handlePointerDown(e, item),
|
|
30169
|
+
onPointerMove: handlePointerMove,
|
|
30170
|
+
onPointerUp: (e) => handlePointerUp(e, item),
|
|
30171
|
+
onPointerCancel: (e) => handlePointerUp(e, item),
|
|
30172
|
+
children: [
|
|
30173
|
+
/* @__PURE__ */ jsxs(Box, { className: "flex items-center gap-1", children: [
|
|
30174
|
+
getStatusIcon(status),
|
|
30175
|
+
/* @__PURE__ */ jsx(Typography, { variant: "body2", weight: "semibold", children: item.label })
|
|
30176
|
+
] }),
|
|
30177
|
+
/* @__PURE__ */ jsx(Typography, { variant: "caption", color: "secondary", children: item.partySize !== void 0 && status === "seated" ? `${item.partySize}/${item.capacity}` : `Cap ${item.capacity}` }),
|
|
30178
|
+
status === "seated" && item.serverName && /* @__PURE__ */ jsx(Typography, { variant: "caption", color: "secondary", className: "truncate max-w-[80%]", children: item.serverName }),
|
|
30179
|
+
isSelected && /* @__PURE__ */ jsx(
|
|
30180
|
+
Badge,
|
|
30181
|
+
{
|
|
30182
|
+
variant: statusBadge.variant,
|
|
30183
|
+
size: "sm",
|
|
30184
|
+
className: "absolute -top-2 -right-2",
|
|
30185
|
+
children: statusBadge.label
|
|
30186
|
+
}
|
|
30187
|
+
)
|
|
30188
|
+
]
|
|
30189
|
+
},
|
|
30190
|
+
item.id
|
|
30191
|
+
);
|
|
30192
|
+
})
|
|
30193
|
+
}
|
|
30194
|
+
) })
|
|
30071
30195
|
);
|
|
30072
30196
|
};
|
|
30073
30197
|
PositionedCanvas.displayName = "PositionedCanvas";
|
|
@@ -31206,7 +31330,7 @@ var init_VersionDiff = __esm({
|
|
|
31206
31330
|
/* @__PURE__ */ jsxs(HStack, { gap: "sm", align: "center", className: "flex-wrap", children: [
|
|
31207
31331
|
/* @__PURE__ */ jsx(Icon, { icon: GitCommit, size: "sm", className: "text-muted-foreground" }),
|
|
31208
31332
|
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "whitespace-nowrap", children: "Compare" }),
|
|
31209
|
-
/* @__PURE__ */ jsx(Box, { className: "min-w-[160px]", children: /* @__PURE__ */ jsx(
|
|
31333
|
+
/* @__PURE__ */ jsx(Box, { className: "min-w-0 md:min-w-[160px]", children: /* @__PURE__ */ jsx(
|
|
31210
31334
|
Select,
|
|
31211
31335
|
{
|
|
31212
31336
|
options,
|
|
@@ -31216,7 +31340,7 @@ var init_VersionDiff = __esm({
|
|
|
31216
31340
|
}
|
|
31217
31341
|
) }),
|
|
31218
31342
|
/* @__PURE__ */ jsx(Typography, { variant: "caption", color: "secondary", children: "to" }),
|
|
31219
|
-
/* @__PURE__ */ jsx(Box, { className: "min-w-[160px]", children: /* @__PURE__ */ jsx(
|
|
31343
|
+
/* @__PURE__ */ jsx(Box, { className: "min-w-0 md:min-w-[160px]", children: /* @__PURE__ */ jsx(
|
|
31220
31344
|
Select,
|
|
31221
31345
|
{
|
|
31222
31346
|
options,
|
|
@@ -31281,8 +31405,8 @@ var init_VersionDiff = __esm({
|
|
|
31281
31405
|
]
|
|
31282
31406
|
}
|
|
31283
31407
|
),
|
|
31284
|
-
/* @__PURE__ */ jsx(Box, { className: "overflow-auto bg-muted/20", style: { maxHeight: 600 }, children: activeView === "side-by-side" ? /* @__PURE__ */ jsxs(Box, { className: "grid grid-cols-2", children: [
|
|
31285
|
-
/* @__PURE__ */ jsx(Box, { className: "border-r border-border", children: /* @__PURE__ */ jsx(VStack, { gap: "none", className: "font-mono text-xs", children: beforeLines.map((line, idx) => {
|
|
31408
|
+
/* @__PURE__ */ jsx(Box, { className: "overflow-auto bg-muted/20", style: { maxHeight: 600 }, children: activeView === "side-by-side" ? /* @__PURE__ */ jsxs(Box, { className: "grid grid-cols-1 md:grid-cols-2", children: [
|
|
31409
|
+
/* @__PURE__ */ jsx(Box, { className: "border-b md:border-b-0 md:border-r border-border", children: /* @__PURE__ */ jsx(VStack, { gap: "none", className: "font-mono text-xs", children: beforeLines.map((line, idx) => {
|
|
31286
31410
|
const isRemoved = line.type === "removed";
|
|
31287
31411
|
return /* @__PURE__ */ jsxs(
|
|
31288
31412
|
HStack,
|
|
@@ -31428,7 +31552,7 @@ var init_DocBreadcrumb = __esm({
|
|
|
31428
31552
|
"aria-label": "Breadcrumb",
|
|
31429
31553
|
children: /* @__PURE__ */ jsx(HStack, { gap: "xs", align: "center", wrap: true, children: items.map((item, idx) => {
|
|
31430
31554
|
const isLast = idx === items.length - 1;
|
|
31431
|
-
return /* @__PURE__ */ jsxs(
|
|
31555
|
+
return /* @__PURE__ */ jsxs(React78__default.Fragment, { children: [
|
|
31432
31556
|
idx > 0 && /* @__PURE__ */ jsx(
|
|
31433
31557
|
Icon,
|
|
31434
31558
|
{
|
|
@@ -32318,7 +32442,7 @@ var init_MiniStateMachine = __esm({
|
|
|
32318
32442
|
const x = 2 + i * (NODE_W + GAP + ARROW_W + GAP);
|
|
32319
32443
|
const tc = transitionCounts[s.name] ?? 0;
|
|
32320
32444
|
const role = getStateRole(s.name, s.isInitial, s.isTerminal, tc, maxTC);
|
|
32321
|
-
return /* @__PURE__ */ jsxs(
|
|
32445
|
+
return /* @__PURE__ */ jsxs(React78__default.Fragment, { children: [
|
|
32322
32446
|
/* @__PURE__ */ jsx(
|
|
32323
32447
|
AvlState,
|
|
32324
32448
|
{
|
|
@@ -33832,7 +33956,7 @@ var init_DocumentViewer = __esm({
|
|
|
33832
33956
|
}
|
|
33833
33957
|
});
|
|
33834
33958
|
function extractTitle(children) {
|
|
33835
|
-
if (!
|
|
33959
|
+
if (!React78__default.isValidElement(children)) return void 0;
|
|
33836
33960
|
const props = children.props;
|
|
33837
33961
|
if (typeof props.title === "string") {
|
|
33838
33962
|
return props.title;
|
|
@@ -33944,7 +34068,7 @@ function LinearView({
|
|
|
33944
34068
|
/* @__PURE__ */ jsx(HStack, { className: "flex-wrap items-center", gap: "xs", children: trait.states.map((state, i) => {
|
|
33945
34069
|
const isDone = i < currentIdx;
|
|
33946
34070
|
const isCurrent = i === currentIdx;
|
|
33947
|
-
return /* @__PURE__ */ jsxs(
|
|
34071
|
+
return /* @__PURE__ */ jsxs(React78__default.Fragment, { children: [
|
|
33948
34072
|
i > 0 && /* @__PURE__ */ jsx(
|
|
33949
34073
|
Typography,
|
|
33950
34074
|
{
|
|
@@ -34845,12 +34969,12 @@ var init_Form = __esm({
|
|
|
34845
34969
|
const isSchemaEntity = isOrbitalEntitySchema(entity);
|
|
34846
34970
|
const resolvedEntity = isSchemaEntity ? entity : void 0;
|
|
34847
34971
|
const entityName = typeof entity === "string" ? entity : resolvedEntity?.name;
|
|
34848
|
-
const normalizedInitialData =
|
|
34972
|
+
const normalizedInitialData = React78__default.useMemo(() => {
|
|
34849
34973
|
const entityRowAsInitial = isPlainEntityRow(entity) ? entity : void 0;
|
|
34850
34974
|
const callerInitial = initialData !== null && typeof initialData === "object" && !Array.isArray(initialData) ? initialData : {};
|
|
34851
34975
|
return entityRowAsInitial !== void 0 ? { ...entityRowAsInitial, ...callerInitial } : callerInitial;
|
|
34852
34976
|
}, [entity, initialData]);
|
|
34853
|
-
const entityDerivedFields =
|
|
34977
|
+
const entityDerivedFields = React78__default.useMemo(() => {
|
|
34854
34978
|
if (fields && fields.length > 0) return void 0;
|
|
34855
34979
|
if (!resolvedEntity) return void 0;
|
|
34856
34980
|
return resolvedEntity.fields.map(
|
|
@@ -34869,16 +34993,16 @@ var init_Form = __esm({
|
|
|
34869
34993
|
const conditionalFields = typeof conditionalFieldsRaw === "boolean" ? {} : conditionalFieldsRaw;
|
|
34870
34994
|
const hiddenCalculations = typeof hiddenCalculationsRaw === "boolean" ? [] : hiddenCalculationsRaw;
|
|
34871
34995
|
const violationTriggers = typeof violationTriggersRaw === "boolean" ? [] : violationTriggersRaw;
|
|
34872
|
-
const [formData, setFormData] =
|
|
34996
|
+
const [formData, setFormData] = React78__default.useState(
|
|
34873
34997
|
normalizedInitialData
|
|
34874
34998
|
);
|
|
34875
|
-
const [collapsedSections, setCollapsedSections] =
|
|
34999
|
+
const [collapsedSections, setCollapsedSections] = React78__default.useState(
|
|
34876
35000
|
/* @__PURE__ */ new Set()
|
|
34877
35001
|
);
|
|
34878
|
-
const [submitError, setSubmitError] =
|
|
34879
|
-
const formRef =
|
|
35002
|
+
const [submitError, setSubmitError] = React78__default.useState(null);
|
|
35003
|
+
const formRef = React78__default.useRef(null);
|
|
34880
35004
|
const formMode = props.mode;
|
|
34881
|
-
const mountedRef =
|
|
35005
|
+
const mountedRef = React78__default.useRef(false);
|
|
34882
35006
|
if (!mountedRef.current) {
|
|
34883
35007
|
mountedRef.current = true;
|
|
34884
35008
|
debug("forms", "mount", {
|
|
@@ -34891,7 +35015,7 @@ var init_Form = __esm({
|
|
|
34891
35015
|
});
|
|
34892
35016
|
}
|
|
34893
35017
|
const shouldShowCancel = showCancel ?? (fields && fields.length > 0);
|
|
34894
|
-
const evalContext =
|
|
35018
|
+
const evalContext = React78__default.useMemo(
|
|
34895
35019
|
() => ({
|
|
34896
35020
|
formValues: formData,
|
|
34897
35021
|
globalVariables: externalContext?.globalVariables ?? {},
|
|
@@ -34900,7 +35024,7 @@ var init_Form = __esm({
|
|
|
34900
35024
|
}),
|
|
34901
35025
|
[formData, externalContext]
|
|
34902
35026
|
);
|
|
34903
|
-
|
|
35027
|
+
React78__default.useEffect(() => {
|
|
34904
35028
|
debug("forms", "initialData-sync", {
|
|
34905
35029
|
mode: formMode,
|
|
34906
35030
|
normalizedInitialData,
|
|
@@ -34911,7 +35035,7 @@ var init_Form = __esm({
|
|
|
34911
35035
|
setFormData(normalizedInitialData);
|
|
34912
35036
|
}
|
|
34913
35037
|
}, [normalizedInitialData]);
|
|
34914
|
-
const processCalculations =
|
|
35038
|
+
const processCalculations = React78__default.useCallback(
|
|
34915
35039
|
(changedFieldId, newFormData) => {
|
|
34916
35040
|
if (!hiddenCalculations.length) return;
|
|
34917
35041
|
const context = {
|
|
@@ -34936,7 +35060,7 @@ var init_Form = __esm({
|
|
|
34936
35060
|
},
|
|
34937
35061
|
[hiddenCalculations, externalContext, eventBus]
|
|
34938
35062
|
);
|
|
34939
|
-
const checkViolations =
|
|
35063
|
+
const checkViolations = React78__default.useCallback(
|
|
34940
35064
|
(changedFieldId, newFormData) => {
|
|
34941
35065
|
if (!violationTriggers.length) return;
|
|
34942
35066
|
const context = {
|
|
@@ -34974,7 +35098,7 @@ var init_Form = __esm({
|
|
|
34974
35098
|
processCalculations(name, newFormData);
|
|
34975
35099
|
checkViolations(name, newFormData);
|
|
34976
35100
|
};
|
|
34977
|
-
const isFieldVisible =
|
|
35101
|
+
const isFieldVisible = React78__default.useCallback(
|
|
34978
35102
|
(fieldName) => {
|
|
34979
35103
|
const condition = conditionalFields[fieldName];
|
|
34980
35104
|
if (!condition) return true;
|
|
@@ -34982,7 +35106,7 @@ var init_Form = __esm({
|
|
|
34982
35106
|
},
|
|
34983
35107
|
[conditionalFields, evalContext]
|
|
34984
35108
|
);
|
|
34985
|
-
const isSectionVisible =
|
|
35109
|
+
const isSectionVisible = React78__default.useCallback(
|
|
34986
35110
|
(section) => {
|
|
34987
35111
|
if (!section.condition) return true;
|
|
34988
35112
|
return Boolean(evaluateFormExpression(section.condition, evalContext));
|
|
@@ -35058,7 +35182,7 @@ var init_Form = __esm({
|
|
|
35058
35182
|
eventBus.emit(`UI:${onCancel}`);
|
|
35059
35183
|
}
|
|
35060
35184
|
};
|
|
35061
|
-
const renderField =
|
|
35185
|
+
const renderField = React78__default.useCallback(
|
|
35062
35186
|
(field) => {
|
|
35063
35187
|
const fieldName = field.name || field.field;
|
|
35064
35188
|
if (!fieldName) return null;
|
|
@@ -35079,7 +35203,7 @@ var init_Form = __esm({
|
|
|
35079
35203
|
[formData, isFieldVisible, relationsData, relationsLoading, isLoading]
|
|
35080
35204
|
);
|
|
35081
35205
|
const effectiveFields = entityDerivedFields ?? fields;
|
|
35082
|
-
const normalizedFields =
|
|
35206
|
+
const normalizedFields = React78__default.useMemo(() => {
|
|
35083
35207
|
if (!effectiveFields || effectiveFields.length === 0) return [];
|
|
35084
35208
|
return effectiveFields.map((field) => {
|
|
35085
35209
|
if (typeof field === "string") {
|
|
@@ -35101,7 +35225,7 @@ var init_Form = __esm({
|
|
|
35101
35225
|
return field;
|
|
35102
35226
|
});
|
|
35103
35227
|
}, [effectiveFields, resolvedEntity]);
|
|
35104
|
-
const schemaFields =
|
|
35228
|
+
const schemaFields = React78__default.useMemo(() => {
|
|
35105
35229
|
if (normalizedFields.length === 0) return null;
|
|
35106
35230
|
if (isDebugEnabled()) {
|
|
35107
35231
|
debugGroup(`Form: ${entityName || "unknown"}`);
|
|
@@ -35111,7 +35235,7 @@ var init_Form = __esm({
|
|
|
35111
35235
|
}
|
|
35112
35236
|
return normalizedFields.map(renderField).filter(Boolean);
|
|
35113
35237
|
}, [normalizedFields, renderField, entityName, conditionalFields]);
|
|
35114
|
-
const sectionElements =
|
|
35238
|
+
const sectionElements = React78__default.useMemo(() => {
|
|
35115
35239
|
if (!sections || sections.length === 0) return null;
|
|
35116
35240
|
return sections.map((section) => {
|
|
35117
35241
|
if (!isSectionVisible(section)) {
|
|
@@ -36837,7 +36961,7 @@ var init_List = __esm({
|
|
|
36837
36961
|
if (entity && typeof entity === "object" && "id" in entity) return [entity];
|
|
36838
36962
|
return [];
|
|
36839
36963
|
}, [entity]);
|
|
36840
|
-
const getItemActions =
|
|
36964
|
+
const getItemActions = React78__default.useCallback(
|
|
36841
36965
|
(item) => {
|
|
36842
36966
|
if (!itemActions) return [];
|
|
36843
36967
|
if (typeof itemActions === "function") {
|
|
@@ -37310,7 +37434,7 @@ var init_MediaGallery = __esm({
|
|
|
37310
37434
|
[selectable, selectedItems, selectionEvent, eventBus]
|
|
37311
37435
|
);
|
|
37312
37436
|
const entityData = Array.isArray(entity) ? entity : [];
|
|
37313
|
-
const items =
|
|
37437
|
+
const items = React78__default.useMemo(() => {
|
|
37314
37438
|
if (propItems) return propItems;
|
|
37315
37439
|
if (entityData.length === 0) return [];
|
|
37316
37440
|
return entityData.map((record, idx) => ({
|
|
@@ -37483,9 +37607,9 @@ function MiniMap({
|
|
|
37483
37607
|
viewportRect,
|
|
37484
37608
|
className
|
|
37485
37609
|
}) {
|
|
37486
|
-
const canvasRef =
|
|
37487
|
-
const frameRef =
|
|
37488
|
-
|
|
37610
|
+
const canvasRef = React78.useRef(null);
|
|
37611
|
+
const frameRef = React78.useRef(0);
|
|
37612
|
+
React78.useEffect(() => {
|
|
37489
37613
|
const canvas = canvasRef.current;
|
|
37490
37614
|
if (!canvas) return;
|
|
37491
37615
|
const ctx = canvas.getContext("2d");
|
|
@@ -37567,7 +37691,7 @@ var init_MiniMap = __esm({
|
|
|
37567
37691
|
}
|
|
37568
37692
|
});
|
|
37569
37693
|
function extractTitle2(children) {
|
|
37570
|
-
if (!
|
|
37694
|
+
if (!React78__default.isValidElement(children)) return void 0;
|
|
37571
37695
|
const props = children.props;
|
|
37572
37696
|
if (typeof props.title === "string") {
|
|
37573
37697
|
return props.title;
|
|
@@ -38280,7 +38404,7 @@ var init_PageHeader = __esm({
|
|
|
38280
38404
|
info: "bg-info/10 text-info"
|
|
38281
38405
|
};
|
|
38282
38406
|
return /* @__PURE__ */ jsxs(Box, { className: cn("mb-6", className), children: [
|
|
38283
|
-
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(
|
|
38407
|
+
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(React78__default.Fragment, { children: [
|
|
38284
38408
|
idx > 0 && /* @__PURE__ */ jsx(Typography, { variant: "small", color: "muted", children: "/" }),
|
|
38285
38409
|
crumb.href ? /* @__PURE__ */ jsx(
|
|
38286
38410
|
"a",
|
|
@@ -38621,7 +38745,7 @@ var init_debugRegistry = __esm({
|
|
|
38621
38745
|
}
|
|
38622
38746
|
});
|
|
38623
38747
|
function useDebugData() {
|
|
38624
|
-
const [data, setData] =
|
|
38748
|
+
const [data, setData] = React78.useState(() => ({
|
|
38625
38749
|
traits: [],
|
|
38626
38750
|
ticks: [],
|
|
38627
38751
|
guards: [],
|
|
@@ -38635,7 +38759,7 @@ function useDebugData() {
|
|
|
38635
38759
|
},
|
|
38636
38760
|
lastUpdate: Date.now()
|
|
38637
38761
|
}));
|
|
38638
|
-
|
|
38762
|
+
React78.useEffect(() => {
|
|
38639
38763
|
const updateData = () => {
|
|
38640
38764
|
setData({
|
|
38641
38765
|
traits: getAllTraits(),
|
|
@@ -38744,12 +38868,12 @@ function layoutGraph(states, transitions, initialState, width, height) {
|
|
|
38744
38868
|
return positions;
|
|
38745
38869
|
}
|
|
38746
38870
|
function WalkMinimap() {
|
|
38747
|
-
const [walkStep, setWalkStep] =
|
|
38748
|
-
const [traits2, setTraits] =
|
|
38749
|
-
const [coveredEdges, setCoveredEdges] =
|
|
38750
|
-
const [completedTraits, setCompletedTraits] =
|
|
38751
|
-
const prevTraitRef =
|
|
38752
|
-
|
|
38871
|
+
const [walkStep, setWalkStep] = React78.useState(null);
|
|
38872
|
+
const [traits2, setTraits] = React78.useState([]);
|
|
38873
|
+
const [coveredEdges, setCoveredEdges] = React78.useState([]);
|
|
38874
|
+
const [completedTraits, setCompletedTraits] = React78.useState(/* @__PURE__ */ new Set());
|
|
38875
|
+
const prevTraitRef = React78.useRef(null);
|
|
38876
|
+
React78.useEffect(() => {
|
|
38753
38877
|
const interval = setInterval(() => {
|
|
38754
38878
|
const w = window;
|
|
38755
38879
|
const step = w.__orbitalWalkStep;
|
|
@@ -39196,15 +39320,15 @@ var init_EntitiesTab = __esm({
|
|
|
39196
39320
|
}
|
|
39197
39321
|
});
|
|
39198
39322
|
function EventFlowTab({ events: events2 }) {
|
|
39199
|
-
const [filter, setFilter] =
|
|
39200
|
-
const containerRef =
|
|
39201
|
-
const [autoScroll, setAutoScroll] =
|
|
39202
|
-
|
|
39323
|
+
const [filter, setFilter] = React78.useState("all");
|
|
39324
|
+
const containerRef = React78.useRef(null);
|
|
39325
|
+
const [autoScroll, setAutoScroll] = React78.useState(true);
|
|
39326
|
+
React78.useEffect(() => {
|
|
39203
39327
|
if (autoScroll && containerRef.current) {
|
|
39204
39328
|
containerRef.current.scrollTop = containerRef.current.scrollHeight;
|
|
39205
39329
|
}
|
|
39206
39330
|
}, [events2.length, autoScroll]);
|
|
39207
|
-
const filteredEvents =
|
|
39331
|
+
const filteredEvents = React78.useMemo(() => {
|
|
39208
39332
|
if (filter === "all") return events2;
|
|
39209
39333
|
return events2.filter((e) => e.type === filter);
|
|
39210
39334
|
}, [events2, filter]);
|
|
@@ -39323,7 +39447,7 @@ var init_EventFlowTab = __esm({
|
|
|
39323
39447
|
}
|
|
39324
39448
|
});
|
|
39325
39449
|
function GuardsPanel({ guards }) {
|
|
39326
|
-
const [filter, setFilter] =
|
|
39450
|
+
const [filter, setFilter] = React78.useState("all");
|
|
39327
39451
|
if (guards.length === 0) {
|
|
39328
39452
|
return /* @__PURE__ */ jsx(
|
|
39329
39453
|
EmptyState,
|
|
@@ -39336,7 +39460,7 @@ function GuardsPanel({ guards }) {
|
|
|
39336
39460
|
}
|
|
39337
39461
|
const passedCount = guards.filter((g) => g.result).length;
|
|
39338
39462
|
const failedCount = guards.length - passedCount;
|
|
39339
|
-
const filteredGuards =
|
|
39463
|
+
const filteredGuards = React78.useMemo(() => {
|
|
39340
39464
|
if (filter === "all") return guards;
|
|
39341
39465
|
if (filter === "passed") return guards.filter((g) => g.result);
|
|
39342
39466
|
return guards.filter((g) => !g.result);
|
|
@@ -39497,10 +39621,10 @@ function EffectBadge({ effect }) {
|
|
|
39497
39621
|
] });
|
|
39498
39622
|
}
|
|
39499
39623
|
function TransitionTimeline({ transitions }) {
|
|
39500
|
-
const containerRef =
|
|
39501
|
-
const [autoScroll, setAutoScroll] =
|
|
39502
|
-
const [expandedId, setExpandedId] =
|
|
39503
|
-
|
|
39624
|
+
const containerRef = React78.useRef(null);
|
|
39625
|
+
const [autoScroll, setAutoScroll] = React78.useState(true);
|
|
39626
|
+
const [expandedId, setExpandedId] = React78.useState(null);
|
|
39627
|
+
React78.useEffect(() => {
|
|
39504
39628
|
if (autoScroll && containerRef.current) {
|
|
39505
39629
|
containerRef.current.scrollTop = containerRef.current.scrollHeight;
|
|
39506
39630
|
}
|
|
@@ -39786,9 +39910,9 @@ function getAllEvents(traits2) {
|
|
|
39786
39910
|
}
|
|
39787
39911
|
function EventDispatcherTab({ traits: traits2, schema }) {
|
|
39788
39912
|
const eventBus = useEventBus();
|
|
39789
|
-
const [log18, setLog] =
|
|
39790
|
-
const prevStatesRef =
|
|
39791
|
-
|
|
39913
|
+
const [log18, setLog] = React78.useState([]);
|
|
39914
|
+
const prevStatesRef = React78.useRef(/* @__PURE__ */ new Map());
|
|
39915
|
+
React78.useEffect(() => {
|
|
39792
39916
|
for (const trait of traits2) {
|
|
39793
39917
|
const prev = prevStatesRef.current.get(trait.id);
|
|
39794
39918
|
if (prev && prev !== trait.currentState) {
|
|
@@ -39958,10 +40082,10 @@ function VerifyModePanel({
|
|
|
39958
40082
|
serverCount,
|
|
39959
40083
|
localCount
|
|
39960
40084
|
}) {
|
|
39961
|
-
const [expanded, setExpanded] =
|
|
39962
|
-
const scrollRef =
|
|
39963
|
-
const prevCountRef =
|
|
39964
|
-
|
|
40085
|
+
const [expanded, setExpanded] = React78.useState(true);
|
|
40086
|
+
const scrollRef = React78.useRef(null);
|
|
40087
|
+
const prevCountRef = React78.useRef(0);
|
|
40088
|
+
React78.useEffect(() => {
|
|
39965
40089
|
if (expanded && transitions.length > prevCountRef.current && scrollRef.current) {
|
|
39966
40090
|
scrollRef.current.scrollTop = scrollRef.current.scrollHeight;
|
|
39967
40091
|
}
|
|
@@ -40027,10 +40151,10 @@ function RuntimeDebugger({
|
|
|
40027
40151
|
defaultTab,
|
|
40028
40152
|
schema
|
|
40029
40153
|
}) {
|
|
40030
|
-
const [isCollapsed, setIsCollapsed] =
|
|
40031
|
-
const [isVisible, setIsVisible] =
|
|
40154
|
+
const [isCollapsed, setIsCollapsed] = React78.useState(mode === "verify" ? true : defaultCollapsed);
|
|
40155
|
+
const [isVisible, setIsVisible] = React78.useState(mode === "inline" || mode === "verify" || isDebugEnabled2());
|
|
40032
40156
|
const debugData = useDebugData();
|
|
40033
|
-
|
|
40157
|
+
React78.useEffect(() => {
|
|
40034
40158
|
if (mode === "inline") return;
|
|
40035
40159
|
return onDebugToggle((enabled) => {
|
|
40036
40160
|
setIsVisible(enabled);
|
|
@@ -40039,7 +40163,7 @@ function RuntimeDebugger({
|
|
|
40039
40163
|
}
|
|
40040
40164
|
});
|
|
40041
40165
|
}, [mode]);
|
|
40042
|
-
|
|
40166
|
+
React78.useEffect(() => {
|
|
40043
40167
|
if (mode === "inline") return;
|
|
40044
40168
|
const handleKeyDown = (e) => {
|
|
40045
40169
|
if (e.key === "`" && isVisible) {
|
|
@@ -40588,7 +40712,7 @@ function SequenceBar({
|
|
|
40588
40712
|
onSlotRemove(index);
|
|
40589
40713
|
}, [onSlotRemove, playing]);
|
|
40590
40714
|
const paddedSlots = Array.from({ length: maxSlots }, (_, i) => slots[i]);
|
|
40591
|
-
return /* @__PURE__ */ jsx(HStack, { className: cn("items-center", className), gap: "sm", children: paddedSlots.map((slot, i) => /* @__PURE__ */ jsxs(
|
|
40715
|
+
return /* @__PURE__ */ jsx(HStack, { className: cn("items-center", className), gap: "sm", children: paddedSlots.map((slot, i) => /* @__PURE__ */ jsxs(React78__default.Fragment, { children: [
|
|
40592
40716
|
i > 0 && /* @__PURE__ */ jsx(
|
|
40593
40717
|
Typography,
|
|
40594
40718
|
{
|
|
@@ -42101,7 +42225,7 @@ var init_StatCard = __esm({
|
|
|
42101
42225
|
const labelToUse = propLabel ?? propTitle;
|
|
42102
42226
|
const eventBus = useEventBus();
|
|
42103
42227
|
const { t } = useTranslate();
|
|
42104
|
-
const handleActionClick =
|
|
42228
|
+
const handleActionClick = React78__default.useCallback(() => {
|
|
42105
42229
|
if (action?.event) {
|
|
42106
42230
|
eventBus.emit(`UI:${action.event}`, {});
|
|
42107
42231
|
}
|
|
@@ -42112,7 +42236,7 @@ var init_StatCard = __esm({
|
|
|
42112
42236
|
const data = Array.isArray(entity) ? entity : entity ? [entity] : [];
|
|
42113
42237
|
const isLoading = externalLoading ?? false;
|
|
42114
42238
|
const error = externalError;
|
|
42115
|
-
const computeMetricValue =
|
|
42239
|
+
const computeMetricValue = React78__default.useCallback(
|
|
42116
42240
|
(metric, items) => {
|
|
42117
42241
|
if (metric.value !== void 0) {
|
|
42118
42242
|
return metric.value;
|
|
@@ -42151,7 +42275,7 @@ var init_StatCard = __esm({
|
|
|
42151
42275
|
},
|
|
42152
42276
|
[]
|
|
42153
42277
|
);
|
|
42154
|
-
const schemaStats =
|
|
42278
|
+
const schemaStats = React78__default.useMemo(() => {
|
|
42155
42279
|
if (!metrics || metrics.length === 0) return null;
|
|
42156
42280
|
return metrics.map((metric) => ({
|
|
42157
42281
|
label: metric.label,
|
|
@@ -42159,7 +42283,7 @@ var init_StatCard = __esm({
|
|
|
42159
42283
|
format: metric.format
|
|
42160
42284
|
}));
|
|
42161
42285
|
}, [metrics, data, computeMetricValue]);
|
|
42162
|
-
const calculatedTrend =
|
|
42286
|
+
const calculatedTrend = React78__default.useMemo(() => {
|
|
42163
42287
|
if (manualTrend !== void 0) return manualTrend;
|
|
42164
42288
|
if (previousValue === void 0 || currentValue === void 0)
|
|
42165
42289
|
return void 0;
|
|
@@ -43341,7 +43465,7 @@ var init_Timeline = __esm({
|
|
|
43341
43465
|
}) => {
|
|
43342
43466
|
const { t } = useTranslate();
|
|
43343
43467
|
const entityData = Array.isArray(entity) ? entity : [];
|
|
43344
|
-
const items =
|
|
43468
|
+
const items = React78__default.useMemo(() => {
|
|
43345
43469
|
if (propItems) return propItems;
|
|
43346
43470
|
if (entityData.length === 0) return [];
|
|
43347
43471
|
return entityData.map((record, idx) => {
|
|
@@ -43498,7 +43622,7 @@ var init_TimerDisplay = __esm({
|
|
|
43498
43622
|
}
|
|
43499
43623
|
});
|
|
43500
43624
|
function extractToastProps(children) {
|
|
43501
|
-
if (!
|
|
43625
|
+
if (!React78__default.isValidElement(children)) {
|
|
43502
43626
|
if (typeof children === "string") {
|
|
43503
43627
|
return { message: children };
|
|
43504
43628
|
}
|
|
@@ -43536,7 +43660,7 @@ var init_ToastSlot = __esm({
|
|
|
43536
43660
|
eventBus.emit("UI:CLOSE");
|
|
43537
43661
|
};
|
|
43538
43662
|
if (!isVisible) return null;
|
|
43539
|
-
const isCustomContent =
|
|
43663
|
+
const isCustomContent = React78__default.isValidElement(children) && !message;
|
|
43540
43664
|
return /* @__PURE__ */ jsx(Box, { className: "fixed bottom-4 right-4 z-50", children: isCustomContent ? children : /* @__PURE__ */ jsx(
|
|
43541
43665
|
Toast,
|
|
43542
43666
|
{
|
|
@@ -43805,7 +43929,7 @@ var init_WizardContainer = __esm({
|
|
|
43805
43929
|
const isCompleted = index < currentStep;
|
|
43806
43930
|
const stepKey = step.id ?? step.tabId ?? `step-${index}`;
|
|
43807
43931
|
const stepTitle = step.title ?? step.name ?? `Step ${index + 1}`;
|
|
43808
|
-
return /* @__PURE__ */ jsxs(
|
|
43932
|
+
return /* @__PURE__ */ jsxs(React78__default.Fragment, { children: [
|
|
43809
43933
|
/* @__PURE__ */ jsx(
|
|
43810
43934
|
Button,
|
|
43811
43935
|
{
|
|
@@ -44255,12 +44379,12 @@ var init_XPBar = __esm({
|
|
|
44255
44379
|
}
|
|
44256
44380
|
});
|
|
44257
44381
|
function lazyThree(name, loader) {
|
|
44258
|
-
const Lazy =
|
|
44382
|
+
const Lazy = React78__default.lazy(() => loader().then((m) => ({ default: m[name] })));
|
|
44259
44383
|
function ThreeWrapper(props) {
|
|
44260
|
-
return
|
|
44261
|
-
|
|
44384
|
+
return React78__default.createElement(
|
|
44385
|
+
React78__default.Suspense,
|
|
44262
44386
|
{ fallback: null },
|
|
44263
|
-
|
|
44387
|
+
React78__default.createElement(Lazy, props)
|
|
44264
44388
|
);
|
|
44265
44389
|
}
|
|
44266
44390
|
ThreeWrapper.displayName = `Lazy(${name})`;
|
|
@@ -44279,6 +44403,7 @@ var init_component_registry_generated = __esm({
|
|
|
44279
44403
|
init_AnimatedGraphic();
|
|
44280
44404
|
init_AnimatedReveal();
|
|
44281
44405
|
init_ArticleSection();
|
|
44406
|
+
init_Aside();
|
|
44282
44407
|
init_AuthLayout();
|
|
44283
44408
|
init_BattleBoard();
|
|
44284
44409
|
init_BattleTemplate();
|
|
@@ -44333,6 +44458,7 @@ var init_component_registry_generated = __esm({
|
|
|
44333
44458
|
init_DayCell();
|
|
44334
44459
|
init_DebuggerBoard();
|
|
44335
44460
|
init_DetailPanel();
|
|
44461
|
+
init_Dialog();
|
|
44336
44462
|
init_DialogueBox();
|
|
44337
44463
|
init_DialogueBubble();
|
|
44338
44464
|
init_DocBreadcrumb();
|
|
@@ -44546,6 +44672,7 @@ var init_component_registry_generated = __esm({
|
|
|
44546
44672
|
"AnimatedGraphic": AnimatedGraphic,
|
|
44547
44673
|
"AnimatedReveal": AnimatedReveal,
|
|
44548
44674
|
"ArticleSection": ArticleSection,
|
|
44675
|
+
"Aside": Aside,
|
|
44549
44676
|
"AuthLayout": AuthLayout,
|
|
44550
44677
|
"Avatar": AvatarPattern,
|
|
44551
44678
|
"AvatarPattern": AvatarPattern,
|
|
@@ -44615,6 +44742,7 @@ var init_component_registry_generated = __esm({
|
|
|
44615
44742
|
"DayCell": DayCell,
|
|
44616
44743
|
"DebuggerBoard": DebuggerBoard,
|
|
44617
44744
|
"DetailPanel": DetailPanel,
|
|
44745
|
+
"Dialog": Dialog,
|
|
44618
44746
|
"DialogueBox": DialogueBox,
|
|
44619
44747
|
"DialogueBubble": DialogueBubble,
|
|
44620
44748
|
"Divider": DividerPattern,
|
|
@@ -44868,7 +44996,7 @@ function SuspenseConfigProvider({
|
|
|
44868
44996
|
config,
|
|
44869
44997
|
children
|
|
44870
44998
|
}) {
|
|
44871
|
-
return
|
|
44999
|
+
return React78__default.createElement(
|
|
44872
45000
|
SuspenseConfigContext.Provider,
|
|
44873
45001
|
{ value: config },
|
|
44874
45002
|
children
|
|
@@ -45351,7 +45479,7 @@ function renderPatternChildren(children, onDismiss, parentId = "root", parentPat
|
|
|
45351
45479
|
const key = `${parentId}-${index}-trait:${traitName}`;
|
|
45352
45480
|
return /* @__PURE__ */ jsx(TraitFrame, { traitName }, key);
|
|
45353
45481
|
}
|
|
45354
|
-
return /* @__PURE__ */ jsx(
|
|
45482
|
+
return /* @__PURE__ */ jsx(React78__default.Fragment, { children: child }, `${parentId}-${index}`);
|
|
45355
45483
|
}
|
|
45356
45484
|
if (!child || typeof child !== "object") return null;
|
|
45357
45485
|
const childId = `${parentId}-${index}`;
|
|
@@ -45388,14 +45516,14 @@ function isPatternConfig(value) {
|
|
|
45388
45516
|
if (value === null || value === void 0) return false;
|
|
45389
45517
|
if (typeof value !== "object") return false;
|
|
45390
45518
|
if (Array.isArray(value)) return false;
|
|
45391
|
-
if (
|
|
45519
|
+
if (React78__default.isValidElement(value)) return false;
|
|
45392
45520
|
if (value instanceof Date) return false;
|
|
45393
45521
|
if (typeof value === "function") return false;
|
|
45394
45522
|
const record = value;
|
|
45395
45523
|
return "type" in record && typeof record.type === "string";
|
|
45396
45524
|
}
|
|
45397
45525
|
function isPlainConfigObject(value) {
|
|
45398
|
-
if (
|
|
45526
|
+
if (React78__default.isValidElement(value)) return false;
|
|
45399
45527
|
if (value instanceof Date) return false;
|
|
45400
45528
|
const proto = Object.getPrototypeOf(value);
|
|
45401
45529
|
return proto === Object.prototype || proto === null;
|
|
@@ -45787,6 +45915,8 @@ var init_atoms = __esm({
|
|
|
45787
45915
|
init_ThemeSelector();
|
|
45788
45916
|
init_Overlay();
|
|
45789
45917
|
init_FlipContainer();
|
|
45918
|
+
init_Dialog();
|
|
45919
|
+
init_Aside();
|
|
45790
45920
|
init_ConditionalWrapper();
|
|
45791
45921
|
init_LawReferenceTooltip();
|
|
45792
45922
|
init_DayCell();
|
|
@@ -45840,7 +45970,7 @@ var FormSection = ({
|
|
|
45840
45970
|
columns = 1,
|
|
45841
45971
|
className
|
|
45842
45972
|
}) => {
|
|
45843
|
-
const [collapsed, setCollapsed] =
|
|
45973
|
+
const [collapsed, setCollapsed] = React78__default.useState(defaultCollapsed);
|
|
45844
45974
|
const { t } = useTranslate();
|
|
45845
45975
|
const eventBus = useEventBus();
|
|
45846
45976
|
const gridClass = {
|
|
@@ -45848,7 +45978,7 @@ var FormSection = ({
|
|
|
45848
45978
|
2: "grid-cols-1 md:grid-cols-2",
|
|
45849
45979
|
3: "grid-cols-1 md:grid-cols-2 lg:grid-cols-3"
|
|
45850
45980
|
}[columns];
|
|
45851
|
-
|
|
45981
|
+
React78__default.useCallback(() => {
|
|
45852
45982
|
if (collapsible) {
|
|
45853
45983
|
setCollapsed((prev) => !prev);
|
|
45854
45984
|
eventBus.emit("UI:TOGGLE_COLLAPSE", { collapsed: !collapsed });
|
|
@@ -48716,4 +48846,4 @@ function useGitHubBranches(owner, repo, enabled = true) {
|
|
|
48716
48846
|
});
|
|
48717
48847
|
}
|
|
48718
48848
|
|
|
48719
|
-
export { ALL_PRESETS, ALMADAR_DND_MIME, AR_BOOK_FIELDS, AboutPageTemplate, Accordion, ActionButton, ActionButtons, Card2 as ActionCard, ActionPalette, ActionTile, Alert, AnimatedCounter, AnimatedGraphic, AnimatedReveal, ArticleSection, AuthLayout, Avatar, Badge, BattleBoard, BattleTemplate, BehaviorView, BookChapterView, BookCoverPage, BookNavBar, BookTableOfContents, BookViewer, Box, BranchingLogicBuilder, Breadcrumb, BuilderBoard, Button, ButtonGroup, CTABanner, CalendarGrid, CanvasEffect, Card, CardBody, CardContent, CardFooter, CardGrid, CardHeader, CardTitle, Carousel, CaseStudyCard, CaseStudyOrganism, CastleBoard, CastleTemplate, Center, Chart, ChartLegend, Checkbox, ChoiceButton, ClassifierBoard, CodeBlock, CodeExample, CodeView, CodeViewer, CollapsibleSection, CombatLog, ComboCounter, CommunityLinks, ConditionalWrapper, ConfettiEffect, ConfirmDialog, Container, ContentRenderer, ContentSection, ControlButton, CounterTemplate, CraftingRecipe, DEFAULT_LIKERT_OPTIONS, DEFAULT_MATRIX_COLUMNS, DEFAULT_SLOTS, DIAMOND_TOP_Y, DPad, DamageNumber, DashboardGrid, DashboardLayout, DataGrid, DataList, DataTable, DateRangePicker, DateRangeSelector, DayCell, DebuggerBoard, DetailPanel, DialogueBox, DialogueBubble, Divider, DocBreadcrumb, DocCodeBlock, DocPagination, DocSearch, DocSidebar, DocTOC, DocumentViewer, StateMachineView as DomStateMachineVisualizer, Drawer, DrawerSlot, EdgeDecoration, EditorCheckbox, EditorSelect, EditorSlider, EditorTextInput, EditorToolbar, EmptyState, EnemyPlate, EntityDisplayEvents, ErrorBoundary, ErrorState, EventHandlerBoard, EventLog, FEATURE_COLORS, FEATURE_TYPES, FLOOR_HEIGHT, FeatureCard, FeatureDetailPageTemplate, FeatureGrid, FeatureGridOrganism, FeatureRenderer2 as FeatureRenderer, FileTree, FilterGroup, FilterPill, Flex, FlipCard, FlipContainer, FloatingActionButton, Form, FormActions, FormField, FormLayout, FormSection, FormSectionHeader, GameAudioContext, GameAudioProvider, GameAudioToggle, GameCanvas2D, GameHud, GameMenu, GameOverScreen, GameShell, GameTemplate, GenericAppTemplate, GeometricPattern, GradientDivider, GraphCanvas, GraphView, Grid, HStack, Header, Heading, HealthBar, HealthPanel, HeroOrganism, HeroSection, I18nProvider, IDENTITY_BOOK_FIELDS, Icon, InfiniteScrollSentinel, Input, InputGroup, InstallBox, InventoryGrid, InventoryPanel, IsometricCanvas, ItemSlot, JazariStateMachine, Label, LandingPageTemplate, LawReferenceTooltip, Lightbox, LikertScale, LineChart2 as LineChart, List3 as List, LoadingState, MapView, MarkdownContent, MarketingStatCard, MasterDetail, MasterDetailLayout, MatrixQuestion, MediaGallery, Menu, Meter, MiniMap, Modal, ModalSlot, ModuleCard, Navigation, NegotiatorBoard, NotifyListener, NumberStepper, ObjectRulePanel, OptionConstraintGroup, StateMachineView as OrbitalStateMachineView, OrbitalVisualization, Overlay, PageHeader, Pagination, PatternTile, PhysicsManager, PlatformerCanvas, Popover, PositionedCanvas, PowerupSlots, PricingCard, PricingGrid, PricingOrganism, PricingPageTemplate, ProgressBar, ProgressDots, PullQuote, PullToRefresh, QrScanner, QuestTracker, QuizBlock, Radio, RangeSlider, RelationSelect, RepeatableFormSection, ReplyTree, ResourceBar, ResourceCounter, RichBlockEditor, RuleEditor, RuntimeDebugger, SHEET_COLUMNS, SPRITE_SHEET_LAYOUT, ScaledDiagram, ScoreBoard, ScoreDisplay, SearchInput, Section, SectionHeader, Select, SequenceBar, SequencerBoard, ServiceCatalog, ShowcaseCard, ShowcaseOrganism, SidePanel, Sidebar, SignaturePad, SimpleGrid, SimulationCanvas, SimulationControls, SimulationGraph, SimulatorBoard, Skeleton, SlotContentRenderer, SocialProof, SortableList, Spacer, Sparkline, Spinner, Split, SplitPane, SplitSection, Sprite, Stack, StarRating, StatBadge, StatCard, StatDisplay, StateArchitectBoard, StateIndicator, StateMachineView, StateNode2 as StateNode, StatsGrid, StatsOrganism, StatusBar, StatusDot, StatusEffect, StepFlow, StepFlowOrganism, SvgBranch, SvgConnection, SvgFlow, SvgGrid, SvgLobe, SvgMesh, SvgMorph, SvgNode, SvgPulse, SvgRing, SvgShield, SvgStack, SwipeableRow, Switch, TERRAIN_COLORS, TILE_HEIGHT, TILE_WIDTH, TabbedContainer, Table, Tabs, TagCloud, TeamCard, TeamOrganism, TerrainPalette, Text, TextHighlight, Textarea, ThemeSelector, ThemeToggle, TimeSlotCell, Timeline, TimerDisplay, Toast, ToastSlot, Tooltip, TraitFrame, TraitSlot, TraitStateViewer, TransitionArrow, TrendIndicator, TurnIndicator, TurnPanel, TypewriterText, Typography, UISlotComponent, UISlotRenderer, UncontrolledBattleBoard, UnitCommandBar, UploadDropZone, VStack, VariablePanel, VersionDiff, ViolationAlert, VoteStack, WaypointMarker, WizardContainer, WizardNavigation, WizardProgress, WorldMapBoard, WorldMapTemplate, XPBar, applyTemporaryEffect, calculateAttackTargets, calculateDamage, calculateValidMoves, clearEntities, cn, combatAnimations, combatClasses, combatEffects, createInitialGameState, createTranslate, createUnitAnimationState, drawSprite, generateCombatMessage, getAllEntities, getByType, getCurrentFrame, getEntity, getSingleton, getTileDimensions, inferDirection, isoToScreen, mapBookData, parseQueryBinding, pendulum, projectileMotion, removeEntity, resolveFieldMap, resolveFrame, resolveSheetDirection, screenToIso, spawnEntity, springOscillator, tickAnimationState, transitionAnimation, updateEntity, updateSingleton, useAgentChat, useAuthContext, useBattleState, useCamera, useCompile, useConnectGitHub, useDeepAgentGeneration, useDisconnectGitHub, useDragReorder, useDraggable, useDropZone, useEmitEvent, useEntities, useEntitiesByType, useEntity as useEntityById, useEventBus, useEventListener, useExtensions, useFileEditor, useFileSystem, useGameAudio, useGameAudioContext, useGitHubBranches, useGitHubRepo, useGitHubRepos, useGitHubStatus, useImageCache, useInfiniteScroll, useInput, useLongPress, useOrbitalHistory, usePhysics, usePhysics2D, usePinchZoom, usePlayer, usePreview, usePullToRefresh, useQuerySingleton, useSingletonEntity, useSpriteAnimations, useSwipeGesture, useTraitListens, useTranslate, useUIEvents, useUISlotManager, useValidation };
|
|
48849
|
+
export { ALL_PRESETS, ALMADAR_DND_MIME, AR_BOOK_FIELDS, AboutPageTemplate, Accordion, ActionButton, ActionButtons, Card2 as ActionCard, ActionPalette, ActionTile, Alert, AnimatedCounter, AnimatedGraphic, AnimatedReveal, ArticleSection, Aside, AuthLayout, Avatar, Badge, BattleBoard, BattleTemplate, BehaviorView, BookChapterView, BookCoverPage, BookNavBar, BookTableOfContents, BookViewer, Box, BranchingLogicBuilder, Breadcrumb, BuilderBoard, Button, ButtonGroup, CTABanner, CalendarGrid, CanvasEffect, Card, CardBody, CardContent, CardFooter, CardGrid, CardHeader, CardTitle, Carousel, CaseStudyCard, CaseStudyOrganism, CastleBoard, CastleTemplate, Center, Chart, ChartLegend, Checkbox, ChoiceButton, ClassifierBoard, CodeBlock, CodeExample, CodeView, CodeViewer, CollapsibleSection, CombatLog, ComboCounter, CommunityLinks, ConditionalWrapper, ConfettiEffect, ConfirmDialog, Container, ContentRenderer, ContentSection, ControlButton, CounterTemplate, CraftingRecipe, DEFAULT_LIKERT_OPTIONS, DEFAULT_MATRIX_COLUMNS, DEFAULT_SLOTS, DIAMOND_TOP_Y, DPad, DamageNumber, DashboardGrid, DashboardLayout, DataGrid, DataList, DataTable, DateRangePicker, DateRangeSelector, DayCell, DebuggerBoard, DetailPanel, Dialog, DialogueBox, DialogueBubble, Divider, DocBreadcrumb, DocCodeBlock, DocPagination, DocSearch, DocSidebar, DocTOC, DocumentViewer, StateMachineView as DomStateMachineVisualizer, Drawer, DrawerSlot, EdgeDecoration, EditorCheckbox, EditorSelect, EditorSlider, EditorTextInput, EditorToolbar, EmptyState, EnemyPlate, EntityDisplayEvents, ErrorBoundary, ErrorState, EventHandlerBoard, EventLog, FEATURE_COLORS, FEATURE_TYPES, FLOOR_HEIGHT, FeatureCard, FeatureDetailPageTemplate, FeatureGrid, FeatureGridOrganism, FeatureRenderer2 as FeatureRenderer, FileTree, FilterGroup, FilterPill, Flex, FlipCard, FlipContainer, FloatingActionButton, Form, FormActions, FormField, FormLayout, FormSection, FormSectionHeader, GameAudioContext, GameAudioProvider, GameAudioToggle, GameCanvas2D, GameHud, GameMenu, GameOverScreen, GameShell, GameTemplate, GenericAppTemplate, GeometricPattern, GradientDivider, GraphCanvas, GraphView, Grid, HStack, Header, Heading, HealthBar, HealthPanel, HeroOrganism, HeroSection, I18nProvider, IDENTITY_BOOK_FIELDS, Icon, InfiniteScrollSentinel, Input, InputGroup, InstallBox, InventoryGrid, InventoryPanel, IsometricCanvas, ItemSlot, JazariStateMachine, Label, LandingPageTemplate, LawReferenceTooltip, Lightbox, LikertScale, LineChart2 as LineChart, List3 as List, LoadingState, MapView, MarkdownContent, MarketingStatCard, MasterDetail, MasterDetailLayout, MatrixQuestion, MediaGallery, Menu, Meter, MiniMap, Modal, ModalSlot, ModuleCard, Navigation, NegotiatorBoard, NotifyListener, NumberStepper, ObjectRulePanel, OptionConstraintGroup, StateMachineView as OrbitalStateMachineView, OrbitalVisualization, Overlay, PageHeader, Pagination, PatternTile, PhysicsManager, PlatformerCanvas, Popover, PositionedCanvas, PowerupSlots, PricingCard, PricingGrid, PricingOrganism, PricingPageTemplate, ProgressBar, ProgressDots, PullQuote, PullToRefresh, QrScanner, QuestTracker, QuizBlock, Radio, RangeSlider, RelationSelect, RepeatableFormSection, ReplyTree, ResourceBar, ResourceCounter, RichBlockEditor, RuleEditor, RuntimeDebugger, SHEET_COLUMNS, SPRITE_SHEET_LAYOUT, ScaledDiagram, ScoreBoard, ScoreDisplay, SearchInput, Section, SectionHeader, Select, SequenceBar, SequencerBoard, ServiceCatalog, ShowcaseCard, ShowcaseOrganism, SidePanel, Sidebar, SignaturePad, SimpleGrid, SimulationCanvas, SimulationControls, SimulationGraph, SimulatorBoard, Skeleton, SlotContentRenderer, SocialProof, SortableList, Spacer, Sparkline, Spinner, Split, SplitPane, SplitSection, Sprite, Stack, StarRating, StatBadge, StatCard, StatDisplay, StateArchitectBoard, StateIndicator, StateMachineView, StateNode2 as StateNode, StatsGrid, StatsOrganism, StatusBar, StatusDot, StatusEffect, StepFlow, StepFlowOrganism, SvgBranch, SvgConnection, SvgFlow, SvgGrid, SvgLobe, SvgMesh, SvgMorph, SvgNode, SvgPulse, SvgRing, SvgShield, SvgStack, SwipeableRow, Switch, TERRAIN_COLORS, TILE_HEIGHT, TILE_WIDTH, TabbedContainer, Table, Tabs, TagCloud, TeamCard, TeamOrganism, TerrainPalette, Text, TextHighlight, Textarea, ThemeSelector, ThemeToggle, TimeSlotCell, Timeline, TimerDisplay, Toast, ToastSlot, Tooltip, TraitFrame, TraitSlot, TraitStateViewer, TransitionArrow, TrendIndicator, TurnIndicator, TurnPanel, TypewriterText, Typography, UISlotComponent, UISlotRenderer, UncontrolledBattleBoard, UnitCommandBar, UploadDropZone, VStack, VariablePanel, VersionDiff, ViolationAlert, VoteStack, WaypointMarker, WizardContainer, WizardNavigation, WizardProgress, WorldMapBoard, WorldMapTemplate, XPBar, applyTemporaryEffect, calculateAttackTargets, calculateDamage, calculateValidMoves, clearEntities, cn, combatAnimations, combatClasses, combatEffects, createInitialGameState, createTranslate, createUnitAnimationState, drawSprite, generateCombatMessage, getAllEntities, getByType, getCurrentFrame, getEntity, getSingleton, getTileDimensions, inferDirection, isoToScreen, mapBookData, parseQueryBinding, pendulum, projectileMotion, removeEntity, resolveFieldMap, resolveFrame, resolveSheetDirection, screenToIso, spawnEntity, springOscillator, tickAnimationState, transitionAnimation, updateEntity, updateSingleton, useAgentChat, useAuthContext, useBattleState, useCamera, useCompile, useConnectGitHub, useDeepAgentGeneration, useDisconnectGitHub, useDragReorder, useDraggable, useDropZone, useEmitEvent, useEntities, useEntitiesByType, useEntity as useEntityById, useEventBus, useEventListener, useExtensions, useFileEditor, useFileSystem, useGameAudio, useGameAudioContext, useGitHubBranches, useGitHubRepo, useGitHubRepos, useGitHubStatus, useImageCache, useInfiniteScroll, useInput, useLongPress, useOrbitalHistory, usePhysics, usePhysics2D, usePinchZoom, usePlayer, usePreview, usePullToRefresh, useQuerySingleton, useSingletonEntity, useSpriteAnimations, useSwipeGesture, useTraitListens, useTranslate, useUIEvents, useUISlotManager, useValidation };
|