@almadar/ui 5.23.0 → 5.25.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/avl/index.cjs +2034 -1393
- package/dist/avl/index.js +968 -327
- package/dist/components/core/molecules/AssetPicker.d.ts +21 -0
- package/dist/components/core/molecules/CodeViewer.d.ts +3 -2
- package/dist/components/core/molecules/DocCodeBlock.d.ts +2 -1
- package/dist/components/core/molecules/GridPicker.d.ts +44 -0
- package/dist/components/core/molecules/IconPicker.d.ts +18 -0
- package/dist/components/core/molecules/PropertyInspector.d.ts +5 -2
- package/dist/components/core/molecules/RichBlockEditor.d.ts +7 -0
- package/dist/components/core/molecules/index.d.ts +6 -3
- package/dist/components/core/molecules/markdown/CodeBlock.d.ts +15 -1
- package/dist/components/core/molecules/markdown/index.d.ts +1 -1
- package/dist/components/core/organisms/index.d.ts +5 -5
- package/dist/components/core/templates/index.d.ts +1 -1
- package/dist/components/index.cjs +1588 -1192
- package/dist/components/index.js +687 -291
- package/dist/components/{core → marketing}/organisms/CaseStudyOrganism.d.ts +1 -1
- package/dist/components/{core → marketing}/organisms/FeatureGridOrganism.d.ts +1 -1
- package/dist/components/{core → marketing}/organisms/HeroOrganism.d.ts +1 -1
- package/dist/components/{core → marketing}/organisms/ShowcaseOrganism.d.ts +1 -1
- package/dist/components/{core → marketing}/organisms/StepFlowOrganism.d.ts +1 -1
- package/dist/docs/index.d.cts +20 -1
- package/dist/marketing/index.cjs +8 -5
- package/dist/marketing/index.d.ts +4 -4
- package/dist/marketing/index.js +8 -5
- package/dist/providers/index.cjs +1857 -1216
- package/dist/providers/index.js +942 -301
- package/dist/runtime/index.cjs +1897 -1256
- package/dist/runtime/index.js +946 -305
- package/package.json +2 -2
- /package/dist/components/{core → marketing}/molecules/MarketingFooter.d.ts +0 -0
- /package/dist/components/{core → marketing}/molecules/PullQuote.d.ts +0 -0
- /package/dist/components/{core → marketing}/templates/AuthLayout.d.ts +0 -0
package/dist/components/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
2
|
-
import * as
|
|
3
|
-
import
|
|
2
|
+
import * as React83 from 'react';
|
|
3
|
+
import React83__default, { useContext, useMemo, useRef, useEffect, useCallback, Suspense, useState, lazy, createContext, useLayoutEffect, useId, useSyncExternalStore } 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';
|
|
@@ -211,7 +211,7 @@ var init_SvgFlow = __esm({
|
|
|
211
211
|
opacity = 1,
|
|
212
212
|
className
|
|
213
213
|
}) => {
|
|
214
|
-
const markerId =
|
|
214
|
+
const markerId = React83__default.useMemo(() => {
|
|
215
215
|
flowIdCounter += 1;
|
|
216
216
|
return `almadar-flow-arrow-${flowIdCounter}`;
|
|
217
217
|
}, []);
|
|
@@ -754,7 +754,7 @@ var init_SvgRing = __esm({
|
|
|
754
754
|
className,
|
|
755
755
|
label
|
|
756
756
|
}) => {
|
|
757
|
-
const gradientId =
|
|
757
|
+
const gradientId = React83__default.useMemo(() => {
|
|
758
758
|
ringIdCounter += 1;
|
|
759
759
|
return `almadar-ring-glow-${ringIdCounter}`;
|
|
760
760
|
}, []);
|
|
@@ -1836,7 +1836,7 @@ var init_Icon = __esm({
|
|
|
1836
1836
|
const directIcon = typeof icon === "string" ? void 0 : icon;
|
|
1837
1837
|
const effectiveName = typeof icon === "string" ? icon : name;
|
|
1838
1838
|
const family = useIconFamily();
|
|
1839
|
-
const RenderedComponent =
|
|
1839
|
+
const RenderedComponent = React83__default.useMemo(() => {
|
|
1840
1840
|
if (directIcon) return null;
|
|
1841
1841
|
return effectiveName ? resolveIconForFamily(effectiveName, family) : null;
|
|
1842
1842
|
}, [directIcon, effectiveName, family]);
|
|
@@ -1894,7 +1894,7 @@ function resolveIconProp(value, sizeClass) {
|
|
|
1894
1894
|
const IconComp = value;
|
|
1895
1895
|
return /* @__PURE__ */ jsx(IconComp, { className: sizeClass });
|
|
1896
1896
|
}
|
|
1897
|
-
if (
|
|
1897
|
+
if (React83__default.isValidElement(value)) {
|
|
1898
1898
|
return value;
|
|
1899
1899
|
}
|
|
1900
1900
|
if (typeof value === "object" && value !== null && "render" in value) {
|
|
@@ -1970,7 +1970,7 @@ var init_Button = __esm({
|
|
|
1970
1970
|
md: "h-icon-default w-icon-default",
|
|
1971
1971
|
lg: "h-icon-default w-icon-default"
|
|
1972
1972
|
};
|
|
1973
|
-
Button =
|
|
1973
|
+
Button = React83__default.forwardRef(
|
|
1974
1974
|
({
|
|
1975
1975
|
className,
|
|
1976
1976
|
variant = "primary",
|
|
@@ -2036,7 +2036,7 @@ var init_Input = __esm({
|
|
|
2036
2036
|
"components/core/atoms/Input.tsx"() {
|
|
2037
2037
|
init_cn();
|
|
2038
2038
|
init_Icon();
|
|
2039
|
-
Input =
|
|
2039
|
+
Input = React83__default.forwardRef(
|
|
2040
2040
|
({
|
|
2041
2041
|
className,
|
|
2042
2042
|
inputType,
|
|
@@ -2157,7 +2157,7 @@ var Label;
|
|
|
2157
2157
|
var init_Label = __esm({
|
|
2158
2158
|
"components/core/atoms/Label.tsx"() {
|
|
2159
2159
|
init_cn();
|
|
2160
|
-
Label =
|
|
2160
|
+
Label = React83__default.forwardRef(
|
|
2161
2161
|
({ className, required, children, ...props }, ref) => {
|
|
2162
2162
|
return /* @__PURE__ */ jsxs(
|
|
2163
2163
|
"label",
|
|
@@ -2183,7 +2183,7 @@ var Textarea;
|
|
|
2183
2183
|
var init_Textarea = __esm({
|
|
2184
2184
|
"components/core/atoms/Textarea.tsx"() {
|
|
2185
2185
|
init_cn();
|
|
2186
|
-
Textarea =
|
|
2186
|
+
Textarea = React83__default.forwardRef(
|
|
2187
2187
|
({ className, error, ...props }, ref) => {
|
|
2188
2188
|
return /* @__PURE__ */ jsx(
|
|
2189
2189
|
"textarea",
|
|
@@ -2213,7 +2213,7 @@ var init_Select = __esm({
|
|
|
2213
2213
|
"components/core/atoms/Select.tsx"() {
|
|
2214
2214
|
init_cn();
|
|
2215
2215
|
init_Icon();
|
|
2216
|
-
Select =
|
|
2216
|
+
Select = React83__default.forwardRef(
|
|
2217
2217
|
({ className, options, placeholder, error, ...props }, ref) => {
|
|
2218
2218
|
return /* @__PURE__ */ jsxs("div", { className: "relative", children: [
|
|
2219
2219
|
/* @__PURE__ */ jsxs(
|
|
@@ -2255,7 +2255,7 @@ var Checkbox;
|
|
|
2255
2255
|
var init_Checkbox = __esm({
|
|
2256
2256
|
"components/core/atoms/Checkbox.tsx"() {
|
|
2257
2257
|
init_cn();
|
|
2258
|
-
Checkbox =
|
|
2258
|
+
Checkbox = React83__default.forwardRef(
|
|
2259
2259
|
({ className, label, id, ...props }, ref) => {
|
|
2260
2260
|
const inputId = id || `checkbox-${Math.random().toString(36).substr(2, 9)}`;
|
|
2261
2261
|
return /* @__PURE__ */ jsxs("div", { className: "flex items-center", children: [
|
|
@@ -2346,7 +2346,7 @@ var init_Card = __esm({
|
|
|
2346
2346
|
chip: "shadow-none rounded-pill border-[length:var(--border-width)] border-border",
|
|
2347
2347
|
"tile-image-first": "p-0 overflow-hidden"
|
|
2348
2348
|
};
|
|
2349
|
-
Card =
|
|
2349
|
+
Card = React83__default.forwardRef(
|
|
2350
2350
|
({
|
|
2351
2351
|
className,
|
|
2352
2352
|
variant = "bordered",
|
|
@@ -2384,9 +2384,9 @@ var init_Card = __esm({
|
|
|
2384
2384
|
}
|
|
2385
2385
|
);
|
|
2386
2386
|
Card.displayName = "Card";
|
|
2387
|
-
CardHeader =
|
|
2387
|
+
CardHeader = React83__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn("mb-4", className), ...props }));
|
|
2388
2388
|
CardHeader.displayName = "CardHeader";
|
|
2389
|
-
CardTitle =
|
|
2389
|
+
CardTitle = React83__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
2390
2390
|
"h3",
|
|
2391
2391
|
{
|
|
2392
2392
|
ref,
|
|
@@ -2399,11 +2399,11 @@ var init_Card = __esm({
|
|
|
2399
2399
|
}
|
|
2400
2400
|
));
|
|
2401
2401
|
CardTitle.displayName = "CardTitle";
|
|
2402
|
-
CardContent =
|
|
2402
|
+
CardContent = React83__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn("", className), ...props }));
|
|
2403
2403
|
CardContent.displayName = "CardContent";
|
|
2404
2404
|
CardBody = CardContent;
|
|
2405
2405
|
CardBody.displayName = "CardBody";
|
|
2406
|
-
CardFooter =
|
|
2406
|
+
CardFooter = React83__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
2407
2407
|
"div",
|
|
2408
2408
|
{
|
|
2409
2409
|
ref,
|
|
@@ -2456,7 +2456,7 @@ var init_Badge = __esm({
|
|
|
2456
2456
|
md: "px-2.5 py-1 text-sm",
|
|
2457
2457
|
lg: "px-3 py-1.5 text-base"
|
|
2458
2458
|
};
|
|
2459
|
-
Badge =
|
|
2459
|
+
Badge = React83__default.forwardRef(
|
|
2460
2460
|
({ className, variant = "default", size = "sm", amount, label, icon, children, onRemove, removeLabel, ...props }, ref) => {
|
|
2461
2461
|
const iconSizes3 = {
|
|
2462
2462
|
sm: "h-icon-default w-icon-default",
|
|
@@ -2549,7 +2549,7 @@ var init_FilterPill = __esm({
|
|
|
2549
2549
|
md: "w-3.5 h-3.5",
|
|
2550
2550
|
lg: "w-4 h-4"
|
|
2551
2551
|
};
|
|
2552
|
-
FilterPill =
|
|
2552
|
+
FilterPill = React83__default.forwardRef(
|
|
2553
2553
|
({
|
|
2554
2554
|
className,
|
|
2555
2555
|
variant = "default",
|
|
@@ -2626,7 +2626,7 @@ var init_Spinner = __esm({
|
|
|
2626
2626
|
md: "h-6 w-6",
|
|
2627
2627
|
lg: "h-8 w-8"
|
|
2628
2628
|
};
|
|
2629
|
-
Spinner =
|
|
2629
|
+
Spinner = React83__default.forwardRef(
|
|
2630
2630
|
({ className, size = "md", ...props }, ref) => {
|
|
2631
2631
|
return /* @__PURE__ */ jsx(
|
|
2632
2632
|
"div",
|
|
@@ -2705,11 +2705,15 @@ var init_Avatar = __esm({
|
|
|
2705
2705
|
actionPayload
|
|
2706
2706
|
}) => {
|
|
2707
2707
|
const eventBus = useEventBus();
|
|
2708
|
+
const [imgFailed, setImgFailed] = React83__default.useState(false);
|
|
2709
|
+
React83__default.useEffect(() => {
|
|
2710
|
+
setImgFailed(false);
|
|
2711
|
+
}, [src]);
|
|
2708
2712
|
const initials = providedInitials ?? (name ? generateInitials(name) : void 0);
|
|
2709
2713
|
const IconComponent = typeof iconProp === "string" ? resolveIcon(iconProp) : iconProp;
|
|
2710
|
-
const hasImage = !!src;
|
|
2711
|
-
const hasInitials = !!initials;
|
|
2714
|
+
const hasImage = !!src && !imgFailed;
|
|
2712
2715
|
const hasIcon = !!IconComponent;
|
|
2716
|
+
const hasInitials = !!initials && !(hasIcon && !providedInitials);
|
|
2713
2717
|
const getInitialsBackground = () => "bg-primary text-primary-foreground";
|
|
2714
2718
|
const isClickable = action || onClick;
|
|
2715
2719
|
const handleClick = () => {
|
|
@@ -2739,9 +2743,8 @@ var init_Avatar = __esm({
|
|
|
2739
2743
|
src,
|
|
2740
2744
|
alt: alt || "Avatar",
|
|
2741
2745
|
className: "w-full h-full object-cover",
|
|
2742
|
-
onError: (
|
|
2743
|
-
|
|
2744
|
-
target.style.display = "none";
|
|
2746
|
+
onError: () => {
|
|
2747
|
+
setImgFailed(true);
|
|
2745
2748
|
}
|
|
2746
2749
|
}
|
|
2747
2750
|
) : hasInitials ? /* @__PURE__ */ jsx(
|
|
@@ -2910,7 +2913,7 @@ var init_Box = __esm({
|
|
|
2910
2913
|
fixed: "fixed",
|
|
2911
2914
|
sticky: "sticky"
|
|
2912
2915
|
};
|
|
2913
|
-
Box =
|
|
2916
|
+
Box = React83__default.forwardRef(
|
|
2914
2917
|
({
|
|
2915
2918
|
padding,
|
|
2916
2919
|
paddingX,
|
|
@@ -2960,7 +2963,7 @@ var init_Box = __esm({
|
|
|
2960
2963
|
onMouseLeave?.(e);
|
|
2961
2964
|
}, [hoverEvent, eventBus, onMouseLeave]);
|
|
2962
2965
|
const isClickable = action || onClick;
|
|
2963
|
-
return
|
|
2966
|
+
return React83__default.createElement(
|
|
2964
2967
|
Component,
|
|
2965
2968
|
{
|
|
2966
2969
|
ref,
|
|
@@ -3282,7 +3285,7 @@ var init_Radio = __esm({
|
|
|
3282
3285
|
md: "w-2.5 h-2.5",
|
|
3283
3286
|
lg: "w-3 h-3"
|
|
3284
3287
|
};
|
|
3285
|
-
Radio =
|
|
3288
|
+
Radio = React83__default.forwardRef(
|
|
3286
3289
|
({
|
|
3287
3290
|
label,
|
|
3288
3291
|
helperText,
|
|
@@ -3299,12 +3302,12 @@ var init_Radio = __esm({
|
|
|
3299
3302
|
onChange,
|
|
3300
3303
|
...props
|
|
3301
3304
|
}, ref) => {
|
|
3302
|
-
const reactId =
|
|
3305
|
+
const reactId = React83__default.useId();
|
|
3303
3306
|
const baseId = id || `radio-${reactId}`;
|
|
3304
3307
|
const hasError = !!error;
|
|
3305
3308
|
const eventBus = useEventBus();
|
|
3306
|
-
const [selected, setSelected] =
|
|
3307
|
-
|
|
3309
|
+
const [selected, setSelected] = React83__default.useState(value);
|
|
3310
|
+
React83__default.useEffect(() => {
|
|
3308
3311
|
if (value !== void 0) setSelected(value);
|
|
3309
3312
|
}, [value]);
|
|
3310
3313
|
const pick = (next, e) => {
|
|
@@ -3486,7 +3489,7 @@ var init_Switch = __esm({
|
|
|
3486
3489
|
"components/core/atoms/Switch.tsx"() {
|
|
3487
3490
|
"use client";
|
|
3488
3491
|
init_cn();
|
|
3489
|
-
Switch =
|
|
3492
|
+
Switch = React83.forwardRef(
|
|
3490
3493
|
({
|
|
3491
3494
|
checked,
|
|
3492
3495
|
defaultChecked = false,
|
|
@@ -3497,10 +3500,10 @@ var init_Switch = __esm({
|
|
|
3497
3500
|
name,
|
|
3498
3501
|
className
|
|
3499
3502
|
}, ref) => {
|
|
3500
|
-
const [isChecked, setIsChecked] =
|
|
3503
|
+
const [isChecked, setIsChecked] = React83.useState(
|
|
3501
3504
|
checked !== void 0 ? checked : defaultChecked
|
|
3502
3505
|
);
|
|
3503
|
-
|
|
3506
|
+
React83.useEffect(() => {
|
|
3504
3507
|
if (checked !== void 0) {
|
|
3505
3508
|
setIsChecked(checked);
|
|
3506
3509
|
}
|
|
@@ -4371,7 +4374,7 @@ var Dialog;
|
|
|
4371
4374
|
var init_Dialog = __esm({
|
|
4372
4375
|
"components/core/atoms/Dialog.tsx"() {
|
|
4373
4376
|
init_cn();
|
|
4374
|
-
Dialog =
|
|
4377
|
+
Dialog = React83__default.forwardRef(
|
|
4375
4378
|
({
|
|
4376
4379
|
role = "dialog",
|
|
4377
4380
|
"aria-modal": ariaModal = true,
|
|
@@ -4397,7 +4400,7 @@ var Aside;
|
|
|
4397
4400
|
var init_Aside = __esm({
|
|
4398
4401
|
"components/core/atoms/Aside.tsx"() {
|
|
4399
4402
|
init_cn();
|
|
4400
|
-
Aside =
|
|
4403
|
+
Aside = React83__default.forwardRef(
|
|
4401
4404
|
({ className, children, ...rest }, ref) => /* @__PURE__ */ jsx("aside", { ref, className: cn(className), ...rest, children })
|
|
4402
4405
|
);
|
|
4403
4406
|
Aside.displayName = "Aside";
|
|
@@ -4475,8 +4478,8 @@ var init_LawReferenceTooltip = __esm({
|
|
|
4475
4478
|
className
|
|
4476
4479
|
}) => {
|
|
4477
4480
|
const { t } = useTranslate();
|
|
4478
|
-
const [isVisible, setIsVisible] =
|
|
4479
|
-
const timeoutRef =
|
|
4481
|
+
const [isVisible, setIsVisible] = React83__default.useState(false);
|
|
4482
|
+
const timeoutRef = React83__default.useRef(null);
|
|
4480
4483
|
const handleMouseEnter = () => {
|
|
4481
4484
|
if (timeoutRef.current) clearTimeout(timeoutRef.current);
|
|
4482
4485
|
timeoutRef.current = setTimeout(() => setIsVisible(true), 200);
|
|
@@ -4485,7 +4488,7 @@ var init_LawReferenceTooltip = __esm({
|
|
|
4485
4488
|
if (timeoutRef.current) clearTimeout(timeoutRef.current);
|
|
4486
4489
|
setIsVisible(false);
|
|
4487
4490
|
};
|
|
4488
|
-
|
|
4491
|
+
React83__default.useEffect(() => {
|
|
4489
4492
|
return () => {
|
|
4490
4493
|
if (timeoutRef.current) clearTimeout(timeoutRef.current);
|
|
4491
4494
|
};
|
|
@@ -4695,7 +4698,7 @@ var init_StatusDot = __esm({
|
|
|
4695
4698
|
md: "w-2.5 h-2.5",
|
|
4696
4699
|
lg: "w-3 h-3"
|
|
4697
4700
|
};
|
|
4698
|
-
StatusDot =
|
|
4701
|
+
StatusDot = React83__default.forwardRef(
|
|
4699
4702
|
({ className, status = "offline", pulse = false, size = "md", label, ...props }, ref) => {
|
|
4700
4703
|
return /* @__PURE__ */ jsx(
|
|
4701
4704
|
"span",
|
|
@@ -4749,7 +4752,7 @@ var init_TrendIndicator = __esm({
|
|
|
4749
4752
|
down: "trending-down",
|
|
4750
4753
|
flat: "arrow-right"
|
|
4751
4754
|
};
|
|
4752
|
-
TrendIndicator =
|
|
4755
|
+
TrendIndicator = React83__default.forwardRef(
|
|
4753
4756
|
({
|
|
4754
4757
|
className,
|
|
4755
4758
|
value,
|
|
@@ -4816,7 +4819,7 @@ var init_RangeSlider = __esm({
|
|
|
4816
4819
|
md: "w-4 h-4",
|
|
4817
4820
|
lg: "w-5 h-5"
|
|
4818
4821
|
};
|
|
4819
|
-
RangeSlider =
|
|
4822
|
+
RangeSlider = React83__default.forwardRef(
|
|
4820
4823
|
({
|
|
4821
4824
|
className,
|
|
4822
4825
|
min = 0,
|
|
@@ -5412,7 +5415,7 @@ var init_ContentSection = __esm({
|
|
|
5412
5415
|
md: "py-16",
|
|
5413
5416
|
lg: "py-24"
|
|
5414
5417
|
};
|
|
5415
|
-
ContentSection =
|
|
5418
|
+
ContentSection = React83__default.forwardRef(
|
|
5416
5419
|
({ children, background = "default", padding = "lg", id, className }, ref) => {
|
|
5417
5420
|
return /* @__PURE__ */ jsx(
|
|
5418
5421
|
Box,
|
|
@@ -5946,7 +5949,7 @@ var init_AnimatedReveal = __esm({
|
|
|
5946
5949
|
"scale-up": { opacity: 1, transform: "scale(1) translateY(0)" },
|
|
5947
5950
|
"none": {}
|
|
5948
5951
|
};
|
|
5949
|
-
AnimatedReveal =
|
|
5952
|
+
AnimatedReveal = React83__default.forwardRef(
|
|
5950
5953
|
({
|
|
5951
5954
|
trigger = "scroll",
|
|
5952
5955
|
animation = "fade-up",
|
|
@@ -6106,7 +6109,7 @@ var init_AnimatedGraphic = __esm({
|
|
|
6106
6109
|
"components/marketing/atoms/AnimatedGraphic.tsx"() {
|
|
6107
6110
|
"use client";
|
|
6108
6111
|
init_cn();
|
|
6109
|
-
AnimatedGraphic =
|
|
6112
|
+
AnimatedGraphic = React83__default.forwardRef(
|
|
6110
6113
|
({
|
|
6111
6114
|
src,
|
|
6112
6115
|
svgContent,
|
|
@@ -6129,7 +6132,7 @@ var init_AnimatedGraphic = __esm({
|
|
|
6129
6132
|
const fetchedSvg = useFetchedSvg(svgContent ? void 0 : src);
|
|
6130
6133
|
const resolvedSvg = svgContent ?? fetchedSvg;
|
|
6131
6134
|
const prevAnimateRef = useRef(animate);
|
|
6132
|
-
const setRef =
|
|
6135
|
+
const setRef = React83__default.useCallback(
|
|
6133
6136
|
(node) => {
|
|
6134
6137
|
containerRef.current = node;
|
|
6135
6138
|
if (typeof ref === "function") ref(node);
|
|
@@ -6532,7 +6535,7 @@ var init_Drawer = __esm({
|
|
|
6532
6535
|
};
|
|
6533
6536
|
const widthClass = width in sizeWidths ? sizeWidths[width] : "";
|
|
6534
6537
|
const widthStyle = width in sizeWidths ? void 0 : { width };
|
|
6535
|
-
const
|
|
6538
|
+
const positionClasses = position === "right" ? "right-0 border-l" : "left-0 border-r";
|
|
6536
6539
|
const animationClasses2 = position === "right" ? "animate-slide-in-right" : "animate-slide-in-left";
|
|
6537
6540
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
6538
6541
|
/* @__PURE__ */ jsx(
|
|
@@ -6553,7 +6556,7 @@ var init_Drawer = __esm({
|
|
|
6553
6556
|
className: cn(
|
|
6554
6557
|
"fixed top-0 bottom-0 z-50",
|
|
6555
6558
|
"flex flex-col max-h-screen",
|
|
6556
|
-
|
|
6559
|
+
positionClasses,
|
|
6557
6560
|
widthClass,
|
|
6558
6561
|
animationClasses2,
|
|
6559
6562
|
className
|
|
@@ -6819,7 +6822,7 @@ var init_ErrorBoundary = __esm({
|
|
|
6819
6822
|
}
|
|
6820
6823
|
);
|
|
6821
6824
|
};
|
|
6822
|
-
ErrorBoundary = class extends
|
|
6825
|
+
ErrorBoundary = class extends React83__default.Component {
|
|
6823
6826
|
constructor(props) {
|
|
6824
6827
|
super(props);
|
|
6825
6828
|
__publicField(this, "reset", () => {
|
|
@@ -7792,18 +7795,42 @@ var init_Alert = __esm({
|
|
|
7792
7795
|
Alert.displayName = "Alert";
|
|
7793
7796
|
}
|
|
7794
7797
|
});
|
|
7795
|
-
|
|
7798
|
+
function computeTooltipStyle(position, triggerRect) {
|
|
7799
|
+
switch (position) {
|
|
7800
|
+
case "bottom":
|
|
7801
|
+
return {
|
|
7802
|
+
left: triggerRect.left + triggerRect.width / 2,
|
|
7803
|
+
top: triggerRect.bottom + TRIGGER_GAP,
|
|
7804
|
+
transform: "translateX(-50%)"
|
|
7805
|
+
};
|
|
7806
|
+
case "left":
|
|
7807
|
+
return {
|
|
7808
|
+
left: triggerRect.left - TRIGGER_GAP,
|
|
7809
|
+
top: triggerRect.top + triggerRect.height / 2,
|
|
7810
|
+
transform: "translate(-100%, -50%)"
|
|
7811
|
+
};
|
|
7812
|
+
case "right":
|
|
7813
|
+
return {
|
|
7814
|
+
left: triggerRect.right + TRIGGER_GAP,
|
|
7815
|
+
top: triggerRect.top + triggerRect.height / 2,
|
|
7816
|
+
transform: "translateY(-50%)"
|
|
7817
|
+
};
|
|
7818
|
+
case "top":
|
|
7819
|
+
default:
|
|
7820
|
+
return {
|
|
7821
|
+
left: triggerRect.left + triggerRect.width / 2,
|
|
7822
|
+
top: triggerRect.top - TRIGGER_GAP,
|
|
7823
|
+
transform: "translate(-50%, -100%)"
|
|
7824
|
+
};
|
|
7825
|
+
}
|
|
7826
|
+
}
|
|
7827
|
+
var TRIGGER_GAP, arrowClasses, Tooltip;
|
|
7796
7828
|
var init_Tooltip = __esm({
|
|
7797
7829
|
"components/core/molecules/Tooltip.tsx"() {
|
|
7798
7830
|
"use client";
|
|
7799
7831
|
init_Typography();
|
|
7800
7832
|
init_cn();
|
|
7801
|
-
|
|
7802
|
-
top: "bottom-full left-1/2 -translate-x-1/2 mb-2",
|
|
7803
|
-
bottom: "top-full left-1/2 -translate-x-1/2 mt-2",
|
|
7804
|
-
left: "right-full top-1/2 -translate-y-1/2 mr-2",
|
|
7805
|
-
right: "left-full top-1/2 -translate-y-1/2 ml-2"
|
|
7806
|
-
};
|
|
7833
|
+
TRIGGER_GAP = 8;
|
|
7807
7834
|
arrowClasses = {
|
|
7808
7835
|
top: "top-full left-1/2 -translate-x-1/2 border-t-primary border-l-transparent border-r-transparent border-b-transparent",
|
|
7809
7836
|
bottom: "bottom-full left-1/2 -translate-x-1/2 border-b-primary border-l-transparent border-r-transparent border-t-transparent",
|
|
@@ -7858,8 +7885,8 @@ var init_Tooltip = __esm({
|
|
|
7858
7885
|
if (hideTimeoutRef.current) clearTimeout(hideTimeoutRef.current);
|
|
7859
7886
|
};
|
|
7860
7887
|
}, []);
|
|
7861
|
-
const triggerElement =
|
|
7862
|
-
const trigger =
|
|
7888
|
+
const triggerElement = React83__default.isValidElement(children) ? children : /* @__PURE__ */ jsx("span", { children });
|
|
7889
|
+
const trigger = React83__default.cloneElement(triggerElement, {
|
|
7863
7890
|
ref: triggerRef,
|
|
7864
7891
|
onMouseEnter: handleMouseEnter,
|
|
7865
7892
|
onMouseLeave: handleMouseLeave,
|
|
@@ -7877,14 +7904,9 @@ var init_Tooltip = __esm({
|
|
|
7877
7904
|
"text-sm pointer-events-none",
|
|
7878
7905
|
"break-words whitespace-normal",
|
|
7879
7906
|
"h-auto min-h-fit",
|
|
7880
|
-
positionClasses[position],
|
|
7881
7907
|
className
|
|
7882
7908
|
),
|
|
7883
|
-
style:
|
|
7884
|
-
left: position === "left" || position === "right" ? triggerRect.left + (position === "left" ? 0 : triggerRect.width) : triggerRect.left + triggerRect.width / 2,
|
|
7885
|
-
top: position === "top" || position === "bottom" ? triggerRect.top + (position === "top" ? 0 : triggerRect.height) : triggerRect.top + triggerRect.height / 2,
|
|
7886
|
-
transform: position === "top" || position === "bottom" ? "translateX(-50%)" : position === "left" || position === "right" ? "translateY(-50%)" : "none"
|
|
7887
|
-
},
|
|
7909
|
+
style: computeTooltipStyle(position, triggerRect),
|
|
7888
7910
|
role: "tooltip",
|
|
7889
7911
|
children: [
|
|
7890
7912
|
/* @__PURE__ */ jsx("div", { className: "w-full break-words whitespace-normal h-auto", children: typeof content === "string" ? /* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-primary-foreground break-words whitespace-normal", children: content }) : /* @__PURE__ */ jsx("div", { className: "break-words whitespace-normal", children: content }) }),
|
|
@@ -7911,8 +7933,9 @@ var init_Tooltip = __esm({
|
|
|
7911
7933
|
function computePopoverStyle(position, triggerRect, popoverWidth) {
|
|
7912
7934
|
if (position === "left" || position === "right") {
|
|
7913
7935
|
return {
|
|
7914
|
-
left:
|
|
7915
|
-
top: triggerRect.top + triggerRect.height / 2
|
|
7936
|
+
left: position === "left" ? triggerRect.left - popoverWidth - TRIGGER_GAP2 : triggerRect.right + TRIGGER_GAP2,
|
|
7937
|
+
top: triggerRect.top + triggerRect.height / 2,
|
|
7938
|
+
transform: "translateY(-50%)"
|
|
7916
7939
|
};
|
|
7917
7940
|
}
|
|
7918
7941
|
const viewportWidth = typeof window !== "undefined" ? window.innerWidth : 1024;
|
|
@@ -7924,21 +7947,16 @@ function computePopoverStyle(position, triggerRect, popoverWidth) {
|
|
|
7924
7947
|
);
|
|
7925
7948
|
return {
|
|
7926
7949
|
left: clamped,
|
|
7927
|
-
top:
|
|
7950
|
+
top: position === "top" ? triggerRect.top - TRIGGER_GAP2 : triggerRect.bottom + TRIGGER_GAP2,
|
|
7951
|
+
transform: position === "top" ? "translateY(-100%)" : void 0
|
|
7928
7952
|
};
|
|
7929
7953
|
}
|
|
7930
|
-
var
|
|
7954
|
+
var arrowClasses2, VIEWPORT_EDGE_PADDING, TRIGGER_GAP2, Popover;
|
|
7931
7955
|
var init_Popover = __esm({
|
|
7932
7956
|
"components/core/molecules/Popover.tsx"() {
|
|
7933
7957
|
"use client";
|
|
7934
7958
|
init_Typography();
|
|
7935
7959
|
init_cn();
|
|
7936
|
-
positionClasses2 = {
|
|
7937
|
-
top: "mb-2",
|
|
7938
|
-
bottom: "mt-2",
|
|
7939
|
-
left: "mr-2 -translate-y-1/2",
|
|
7940
|
-
right: "ml-2 -translate-y-1/2"
|
|
7941
|
-
};
|
|
7942
7960
|
arrowClasses2 = {
|
|
7943
7961
|
top: "top-full left-1/2 -translate-x-1/2 border-t-white border-l-transparent border-r-transparent border-b-transparent",
|
|
7944
7962
|
bottom: "bottom-full left-1/2 -translate-x-1/2 border-b-white border-l-transparent border-r-transparent border-t-transparent",
|
|
@@ -7946,6 +7964,7 @@ var init_Popover = __esm({
|
|
|
7946
7964
|
right: "right-full top-1/2 -translate-y-1/2 border-r-white border-t-transparent border-b-transparent border-l-transparent"
|
|
7947
7965
|
};
|
|
7948
7966
|
VIEWPORT_EDGE_PADDING = 8;
|
|
7967
|
+
TRIGGER_GAP2 = 8;
|
|
7949
7968
|
Popover = ({
|
|
7950
7969
|
content,
|
|
7951
7970
|
children,
|
|
@@ -8014,8 +8033,8 @@ var init_Popover = __esm({
|
|
|
8014
8033
|
onMouseEnter: handleOpen,
|
|
8015
8034
|
onMouseLeave: handleClose
|
|
8016
8035
|
};
|
|
8017
|
-
const childElement =
|
|
8018
|
-
const triggerElement =
|
|
8036
|
+
const childElement = React83__default.isValidElement(children) ? children : /* @__PURE__ */ jsx("span", { children });
|
|
8037
|
+
const triggerElement = React83__default.cloneElement(
|
|
8019
8038
|
childElement,
|
|
8020
8039
|
{
|
|
8021
8040
|
ref: triggerRef,
|
|
@@ -8029,7 +8048,6 @@ var init_Popover = __esm({
|
|
|
8029
8048
|
className: cn(
|
|
8030
8049
|
"fixed z-50 p-4",
|
|
8031
8050
|
"bg-card border-2 border-border shadow-elevation-popover",
|
|
8032
|
-
positionClasses2[position],
|
|
8033
8051
|
className
|
|
8034
8052
|
),
|
|
8035
8053
|
style: computePopoverStyle(position, triggerRect, popoverWidth),
|
|
@@ -8119,7 +8137,7 @@ var init_Menu = __esm({
|
|
|
8119
8137
|
document.addEventListener("mousedown", handleClickOutside);
|
|
8120
8138
|
return () => document.removeEventListener("mousedown", handleClickOutside);
|
|
8121
8139
|
}, [isOpen]);
|
|
8122
|
-
const
|
|
8140
|
+
const positionClasses = {
|
|
8123
8141
|
"top-left": "bottom-full left-0 mb-2",
|
|
8124
8142
|
"top-right": "bottom-full right-0 mb-2",
|
|
8125
8143
|
"bottom-left": "top-full left-0 mt-2",
|
|
@@ -8142,8 +8160,8 @@ var init_Menu = __esm({
|
|
|
8142
8160
|
};
|
|
8143
8161
|
const effectivePosition = direction === "rtl" ? rtlMirror[position] ?? position : position;
|
|
8144
8162
|
const subMenuSideClass = direction === "rtl" ? "right-full mr-2" : "left-full ml-2";
|
|
8145
|
-
const triggerChild =
|
|
8146
|
-
const triggerElement =
|
|
8163
|
+
const triggerChild = React83__default.isValidElement(trigger) ? trigger : /* @__PURE__ */ jsx(Typography, { variant: "small", as: "span", children: trigger });
|
|
8164
|
+
const triggerElement = React83__default.cloneElement(
|
|
8147
8165
|
triggerChild,
|
|
8148
8166
|
{
|
|
8149
8167
|
ref: triggerRef,
|
|
@@ -8227,7 +8245,7 @@ var init_Menu = __esm({
|
|
|
8227
8245
|
className: cn(
|
|
8228
8246
|
"absolute z-50",
|
|
8229
8247
|
menuContainerStyles,
|
|
8230
|
-
|
|
8248
|
+
positionClasses[effectivePosition],
|
|
8231
8249
|
className
|
|
8232
8250
|
),
|
|
8233
8251
|
style: {
|
|
@@ -8403,7 +8421,7 @@ var init_FloatingActionButton = __esm({
|
|
|
8403
8421
|
document.addEventListener("mousedown", handleClickOutside);
|
|
8404
8422
|
return () => document.removeEventListener("mousedown", handleClickOutside);
|
|
8405
8423
|
}, [isExpanded, actions]);
|
|
8406
|
-
const
|
|
8424
|
+
const positionClasses = {
|
|
8407
8425
|
"bottom-right": "bottom-6 right-6",
|
|
8408
8426
|
"bottom-left": "bottom-6 left-6",
|
|
8409
8427
|
"bottom-center": "bottom-6 left-1/2 -translate-x-1/2",
|
|
@@ -8412,7 +8430,7 @@ var init_FloatingActionButton = __esm({
|
|
|
8412
8430
|
"top-center": "top-6 left-1/2 -translate-x-1/2"
|
|
8413
8431
|
};
|
|
8414
8432
|
if (resolvedAction && (!actions || actions.length === 0)) {
|
|
8415
|
-
return /* @__PURE__ */ jsx(Box, { className: cn("fixed z-50",
|
|
8433
|
+
return /* @__PURE__ */ jsx(Box, { className: cn("fixed z-50", positionClasses[position], className), children: /* @__PURE__ */ jsx(
|
|
8416
8434
|
Button,
|
|
8417
8435
|
{
|
|
8418
8436
|
variant: resolvedAction.variant || "primary",
|
|
@@ -8440,7 +8458,7 @@ var init_FloatingActionButton = __esm({
|
|
|
8440
8458
|
ref: fabRef,
|
|
8441
8459
|
className: cn(
|
|
8442
8460
|
"fixed z-50 flex flex-col items-end gap-3",
|
|
8443
|
-
|
|
8461
|
+
positionClasses[position],
|
|
8444
8462
|
position.includes("left") && "items-start",
|
|
8445
8463
|
className
|
|
8446
8464
|
),
|
|
@@ -8550,13 +8568,13 @@ var init_MapView = __esm({
|
|
|
8550
8568
|
shadowSize: [41, 41]
|
|
8551
8569
|
});
|
|
8552
8570
|
L.Marker.prototype.options.icon = defaultIcon;
|
|
8553
|
-
const { useEffect:
|
|
8571
|
+
const { useEffect: useEffect71, useRef: useRef68, useCallback: useCallback116, useState: useState102 } = React83__default;
|
|
8554
8572
|
const { Typography: Typography2 } = await Promise.resolve().then(() => (init_Typography(), Typography_exports));
|
|
8555
8573
|
const { useEventBus: useEventBus2 } = await Promise.resolve().then(() => (init_useEventBus(), useEventBus_exports));
|
|
8556
8574
|
function MapUpdater({ centerLat, centerLng, zoom }) {
|
|
8557
8575
|
const map = useMap();
|
|
8558
|
-
const prevRef =
|
|
8559
|
-
|
|
8576
|
+
const prevRef = useRef68({ centerLat, centerLng, zoom });
|
|
8577
|
+
useEffect71(() => {
|
|
8560
8578
|
const prev = prevRef.current;
|
|
8561
8579
|
if (prev.centerLat !== centerLat || prev.centerLng !== centerLng || prev.zoom !== zoom) {
|
|
8562
8580
|
map.setView([centerLat, centerLng], zoom);
|
|
@@ -8567,7 +8585,7 @@ var init_MapView = __esm({
|
|
|
8567
8585
|
}
|
|
8568
8586
|
function MapClickHandler({ onMapClick }) {
|
|
8569
8587
|
const map = useMap();
|
|
8570
|
-
|
|
8588
|
+
useEffect71(() => {
|
|
8571
8589
|
if (!onMapClick) return;
|
|
8572
8590
|
const handler = (e) => {
|
|
8573
8591
|
onMapClick(e.latlng.lat, e.latlng.lng);
|
|
@@ -8595,8 +8613,8 @@ var init_MapView = __esm({
|
|
|
8595
8613
|
showAttribution = true
|
|
8596
8614
|
}) {
|
|
8597
8615
|
const eventBus = useEventBus2();
|
|
8598
|
-
const [clickedPosition, setClickedPosition] =
|
|
8599
|
-
const handleMapClick =
|
|
8616
|
+
const [clickedPosition, setClickedPosition] = useState102(null);
|
|
8617
|
+
const handleMapClick = useCallback116((lat, lng) => {
|
|
8600
8618
|
if (showClickedPin) {
|
|
8601
8619
|
setClickedPosition({ lat, lng });
|
|
8602
8620
|
}
|
|
@@ -8605,7 +8623,7 @@ var init_MapView = __esm({
|
|
|
8605
8623
|
eventBus.emit(`UI:${mapClickEvent}`, { latitude: lat, longitude: lng });
|
|
8606
8624
|
}
|
|
8607
8625
|
}, [onMapClick, mapClickEvent, eventBus, showClickedPin]);
|
|
8608
|
-
const handleMarkerClick =
|
|
8626
|
+
const handleMarkerClick = useCallback116((marker) => {
|
|
8609
8627
|
onMarkerClick?.(marker);
|
|
8610
8628
|
if (markerClickEvent) {
|
|
8611
8629
|
eventBus.emit(`UI:${markerClickEvent}`, { ...marker });
|
|
@@ -8614,7 +8632,7 @@ var init_MapView = __esm({
|
|
|
8614
8632
|
return /* @__PURE__ */ jsx(
|
|
8615
8633
|
Box,
|
|
8616
8634
|
{
|
|
8617
|
-
className: cn("relative w-full overflow-hidden rounded-lg", className),
|
|
8635
|
+
className: cn("relative isolate w-full overflow-hidden rounded-lg", className),
|
|
8618
8636
|
style: { height },
|
|
8619
8637
|
"data-testid": "map-view",
|
|
8620
8638
|
children: /* @__PURE__ */ jsxs(
|
|
@@ -8796,7 +8814,7 @@ function InputPattern({
|
|
|
8796
8814
|
fieldName
|
|
8797
8815
|
}) {
|
|
8798
8816
|
const { emit } = useEventBus();
|
|
8799
|
-
const [localValue, setLocalValue] =
|
|
8817
|
+
const [localValue, setLocalValue] = React83__default.useState(value);
|
|
8800
8818
|
const handleChange = (e) => {
|
|
8801
8819
|
setLocalValue(e.target.value);
|
|
8802
8820
|
if (onChange) {
|
|
@@ -8834,7 +8852,7 @@ function TextareaPattern({
|
|
|
8834
8852
|
fieldName
|
|
8835
8853
|
}) {
|
|
8836
8854
|
const { emit } = useEventBus();
|
|
8837
|
-
const [localValue, setLocalValue] =
|
|
8855
|
+
const [localValue, setLocalValue] = React83__default.useState(value);
|
|
8838
8856
|
const handleChange = (e) => {
|
|
8839
8857
|
setLocalValue(e.target.value);
|
|
8840
8858
|
if (onChange) {
|
|
@@ -8866,7 +8884,7 @@ function SelectPattern({
|
|
|
8866
8884
|
fieldName
|
|
8867
8885
|
}) {
|
|
8868
8886
|
const { emit } = useEventBus();
|
|
8869
|
-
const [localValue, setLocalValue] =
|
|
8887
|
+
const [localValue, setLocalValue] = React83__default.useState(value);
|
|
8870
8888
|
const handleChange = (e) => {
|
|
8871
8889
|
setLocalValue(e.target.value);
|
|
8872
8890
|
if (onChange) {
|
|
@@ -8895,7 +8913,7 @@ function CheckboxPattern({
|
|
|
8895
8913
|
className
|
|
8896
8914
|
}) {
|
|
8897
8915
|
const { emit } = useEventBus();
|
|
8898
|
-
const [localChecked, setLocalChecked] =
|
|
8916
|
+
const [localChecked, setLocalChecked] = React83__default.useState(checked);
|
|
8899
8917
|
const handleChange = (e) => {
|
|
8900
8918
|
setLocalChecked(e.target.checked);
|
|
8901
8919
|
if (onChange) {
|
|
@@ -9208,9 +9226,9 @@ function ControlButton({
|
|
|
9208
9226
|
className
|
|
9209
9227
|
}) {
|
|
9210
9228
|
const eventBus = useEventBus();
|
|
9211
|
-
const [isPressed, setIsPressed] =
|
|
9229
|
+
const [isPressed, setIsPressed] = React83.useState(false);
|
|
9212
9230
|
const actualPressed = pressed ?? isPressed;
|
|
9213
|
-
const handlePointerDown =
|
|
9231
|
+
const handlePointerDown = React83.useCallback(
|
|
9214
9232
|
(e) => {
|
|
9215
9233
|
e.preventDefault();
|
|
9216
9234
|
if (disabled) return;
|
|
@@ -9220,7 +9238,7 @@ function ControlButton({
|
|
|
9220
9238
|
},
|
|
9221
9239
|
[disabled, pressEvent, eventBus, onPress]
|
|
9222
9240
|
);
|
|
9223
|
-
const handlePointerUp =
|
|
9241
|
+
const handlePointerUp = React83.useCallback(
|
|
9224
9242
|
(e) => {
|
|
9225
9243
|
e.preventDefault();
|
|
9226
9244
|
if (disabled) return;
|
|
@@ -9230,7 +9248,7 @@ function ControlButton({
|
|
|
9230
9248
|
},
|
|
9231
9249
|
[disabled, releaseEvent, eventBus, onRelease]
|
|
9232
9250
|
);
|
|
9233
|
-
const handlePointerLeave =
|
|
9251
|
+
const handlePointerLeave = React83.useCallback(
|
|
9234
9252
|
(e) => {
|
|
9235
9253
|
if (isPressed) {
|
|
9236
9254
|
setIsPressed(false);
|
|
@@ -9307,8 +9325,8 @@ function ActionButtons({
|
|
|
9307
9325
|
disabled
|
|
9308
9326
|
}) {
|
|
9309
9327
|
const eventBus = useEventBus();
|
|
9310
|
-
const [activeButtons, setActiveButtons] =
|
|
9311
|
-
const handlePress =
|
|
9328
|
+
const [activeButtons, setActiveButtons] = React83.useState(/* @__PURE__ */ new Set());
|
|
9329
|
+
const handlePress = React83.useCallback(
|
|
9312
9330
|
(id) => {
|
|
9313
9331
|
setActiveButtons((prev) => new Set(prev).add(id));
|
|
9314
9332
|
if (actionEvent) eventBus.emit(`UI:${actionEvent}`, { id, pressed: true });
|
|
@@ -9316,7 +9334,7 @@ function ActionButtons({
|
|
|
9316
9334
|
},
|
|
9317
9335
|
[actionEvent, eventBus, onAction]
|
|
9318
9336
|
);
|
|
9319
|
-
const handleRelease =
|
|
9337
|
+
const handleRelease = React83.useCallback(
|
|
9320
9338
|
(id) => {
|
|
9321
9339
|
setActiveButtons((prev) => {
|
|
9322
9340
|
const next = new Set(prev);
|
|
@@ -9597,9 +9615,262 @@ var init_AnimatedCounter2 = __esm({
|
|
|
9597
9615
|
AnimatedCounter2.displayName = "AnimatedCounter";
|
|
9598
9616
|
}
|
|
9599
9617
|
});
|
|
9618
|
+
var ALL_CATEGORY, GridPicker;
|
|
9619
|
+
var init_GridPicker = __esm({
|
|
9620
|
+
"components/core/molecules/GridPicker.tsx"() {
|
|
9621
|
+
"use client";
|
|
9622
|
+
init_cn();
|
|
9623
|
+
init_Input();
|
|
9624
|
+
init_Badge();
|
|
9625
|
+
init_Stack();
|
|
9626
|
+
ALL_CATEGORY = "__all__";
|
|
9627
|
+
GridPicker = ({
|
|
9628
|
+
items,
|
|
9629
|
+
value,
|
|
9630
|
+
onChange,
|
|
9631
|
+
categories,
|
|
9632
|
+
searchPlaceholder,
|
|
9633
|
+
renderThumbnail,
|
|
9634
|
+
cellSize = 32,
|
|
9635
|
+
className
|
|
9636
|
+
}) => {
|
|
9637
|
+
const [search, setSearch] = useState("");
|
|
9638
|
+
const [activeCategory, setActiveCategory] = useState(ALL_CATEGORY);
|
|
9639
|
+
const gridRef = useRef(null);
|
|
9640
|
+
const categoryChips = useMemo(() => {
|
|
9641
|
+
if (categories !== void 0) return categories;
|
|
9642
|
+
const seen = [];
|
|
9643
|
+
for (const item of items) {
|
|
9644
|
+
if (!seen.includes(item.category)) seen.push(item.category);
|
|
9645
|
+
}
|
|
9646
|
+
return seen;
|
|
9647
|
+
}, [categories, items]);
|
|
9648
|
+
const filtered = useMemo(() => {
|
|
9649
|
+
const needle = search.trim().toLowerCase();
|
|
9650
|
+
return items.filter((item) => {
|
|
9651
|
+
const matchesCategory = activeCategory === ALL_CATEGORY || item.category === activeCategory;
|
|
9652
|
+
const matchesSearch = needle === "" || item.label.toLowerCase().includes(needle);
|
|
9653
|
+
return matchesCategory && matchesSearch;
|
|
9654
|
+
});
|
|
9655
|
+
}, [items, search, activeCategory]);
|
|
9656
|
+
const select = useCallback(
|
|
9657
|
+
(item) => {
|
|
9658
|
+
onChange(item.id);
|
|
9659
|
+
},
|
|
9660
|
+
[onChange]
|
|
9661
|
+
);
|
|
9662
|
+
const handleKeyDown = useCallback(
|
|
9663
|
+
(e, index) => {
|
|
9664
|
+
const cells = gridRef.current?.querySelectorAll(
|
|
9665
|
+
"[data-gridpicker-cell]"
|
|
9666
|
+
);
|
|
9667
|
+
if (cells === void 0 || cells.length === 0) return;
|
|
9668
|
+
const columns = (() => {
|
|
9669
|
+
const grid = gridRef.current;
|
|
9670
|
+
if (grid === null) return 1;
|
|
9671
|
+
const style = window.getComputedStyle(grid);
|
|
9672
|
+
const cols = style.gridTemplateColumns.split(" ").filter(Boolean).length;
|
|
9673
|
+
return cols > 0 ? cols : 1;
|
|
9674
|
+
})();
|
|
9675
|
+
let next = -1;
|
|
9676
|
+
if (e.key === "ArrowRight") next = index + 1;
|
|
9677
|
+
else if (e.key === "ArrowLeft") next = index - 1;
|
|
9678
|
+
else if (e.key === "ArrowDown") next = index + columns;
|
|
9679
|
+
else if (e.key === "ArrowUp") next = index - columns;
|
|
9680
|
+
else if (e.key === "Enter" || e.key === " ") {
|
|
9681
|
+
e.preventDefault();
|
|
9682
|
+
select(filtered[index]);
|
|
9683
|
+
return;
|
|
9684
|
+
} else {
|
|
9685
|
+
return;
|
|
9686
|
+
}
|
|
9687
|
+
e.preventDefault();
|
|
9688
|
+
if (next >= 0 && next < cells.length) {
|
|
9689
|
+
cells[next].focus();
|
|
9690
|
+
}
|
|
9691
|
+
},
|
|
9692
|
+
[filtered, select]
|
|
9693
|
+
);
|
|
9694
|
+
return /* @__PURE__ */ jsxs(VStack, { gap: "sm", className: cn("w-full", className), children: [
|
|
9695
|
+
/* @__PURE__ */ jsx(
|
|
9696
|
+
Input,
|
|
9697
|
+
{
|
|
9698
|
+
type: "search",
|
|
9699
|
+
icon: "search",
|
|
9700
|
+
value: search,
|
|
9701
|
+
placeholder: searchPlaceholder,
|
|
9702
|
+
clearable: true,
|
|
9703
|
+
onClear: () => setSearch(""),
|
|
9704
|
+
onChange: (e) => setSearch(e.target.value)
|
|
9705
|
+
}
|
|
9706
|
+
),
|
|
9707
|
+
categoryChips.length > 0 && /* @__PURE__ */ jsxs(HStack, { gap: "xs", wrap: true, children: [
|
|
9708
|
+
/* @__PURE__ */ jsx(
|
|
9709
|
+
Badge,
|
|
9710
|
+
{
|
|
9711
|
+
variant: activeCategory === ALL_CATEGORY ? "primary" : "neutral",
|
|
9712
|
+
size: "sm",
|
|
9713
|
+
role: "button",
|
|
9714
|
+
tabIndex: 0,
|
|
9715
|
+
"aria-pressed": activeCategory === ALL_CATEGORY,
|
|
9716
|
+
className: "cursor-pointer",
|
|
9717
|
+
onClick: () => setActiveCategory(ALL_CATEGORY),
|
|
9718
|
+
onKeyDown: (e) => {
|
|
9719
|
+
if (e.key === "Enter" || e.key === " ") {
|
|
9720
|
+
e.preventDefault();
|
|
9721
|
+
setActiveCategory(ALL_CATEGORY);
|
|
9722
|
+
}
|
|
9723
|
+
},
|
|
9724
|
+
children: "All"
|
|
9725
|
+
}
|
|
9726
|
+
),
|
|
9727
|
+
categoryChips.map((category) => /* @__PURE__ */ jsx(
|
|
9728
|
+
Badge,
|
|
9729
|
+
{
|
|
9730
|
+
variant: activeCategory === category ? "primary" : "neutral",
|
|
9731
|
+
size: "sm",
|
|
9732
|
+
role: "button",
|
|
9733
|
+
tabIndex: 0,
|
|
9734
|
+
"aria-pressed": activeCategory === category,
|
|
9735
|
+
className: "cursor-pointer",
|
|
9736
|
+
onClick: () => setActiveCategory(category),
|
|
9737
|
+
onKeyDown: (e) => {
|
|
9738
|
+
if (e.key === "Enter" || e.key === " ") {
|
|
9739
|
+
e.preventDefault();
|
|
9740
|
+
setActiveCategory(category);
|
|
9741
|
+
}
|
|
9742
|
+
},
|
|
9743
|
+
children: category
|
|
9744
|
+
},
|
|
9745
|
+
category
|
|
9746
|
+
))
|
|
9747
|
+
] }),
|
|
9748
|
+
/* @__PURE__ */ jsx(
|
|
9749
|
+
"div",
|
|
9750
|
+
{
|
|
9751
|
+
ref: gridRef,
|
|
9752
|
+
role: "listbox",
|
|
9753
|
+
className: "grid gap-1 overflow-y-auto max-h-64 p-1",
|
|
9754
|
+
style: {
|
|
9755
|
+
gridTemplateColumns: `repeat(auto-fill, minmax(${cellSize}px, 1fr))`
|
|
9756
|
+
},
|
|
9757
|
+
children: filtered.map((item, index) => {
|
|
9758
|
+
const selected = item.id === value;
|
|
9759
|
+
return /* @__PURE__ */ jsx(
|
|
9760
|
+
"button",
|
|
9761
|
+
{
|
|
9762
|
+
type: "button",
|
|
9763
|
+
role: "option",
|
|
9764
|
+
"aria-selected": selected,
|
|
9765
|
+
"aria-label": item.label,
|
|
9766
|
+
title: item.label,
|
|
9767
|
+
"data-gridpicker-cell": true,
|
|
9768
|
+
tabIndex: selected || value === void 0 && index === 0 ? 0 : -1,
|
|
9769
|
+
onClick: () => select(item),
|
|
9770
|
+
onKeyDown: (e) => handleKeyDown(e, index),
|
|
9771
|
+
className: cn(
|
|
9772
|
+
"flex items-center justify-center rounded-sm",
|
|
9773
|
+
"transition-colors hover:bg-muted",
|
|
9774
|
+
"focus:outline-none focus:ring-1 focus:ring-ring",
|
|
9775
|
+
selected && "bg-primary/10 ring-1 ring-primary"
|
|
9776
|
+
),
|
|
9777
|
+
style: { width: cellSize, height: cellSize },
|
|
9778
|
+
children: renderThumbnail(item)
|
|
9779
|
+
},
|
|
9780
|
+
item.id
|
|
9781
|
+
);
|
|
9782
|
+
})
|
|
9783
|
+
}
|
|
9784
|
+
)
|
|
9785
|
+
] });
|
|
9786
|
+
};
|
|
9787
|
+
GridPicker.displayName = "GridPicker";
|
|
9788
|
+
}
|
|
9789
|
+
});
|
|
9790
|
+
function iconForKind(kind) {
|
|
9791
|
+
if (kind === "audio") return "music";
|
|
9792
|
+
if (kind === "model") return "box";
|
|
9793
|
+
return "file";
|
|
9794
|
+
}
|
|
9795
|
+
var THUMB_PX, IMAGE_KINDS, AssetPicker;
|
|
9796
|
+
var init_AssetPicker = __esm({
|
|
9797
|
+
"components/core/molecules/AssetPicker.tsx"() {
|
|
9798
|
+
"use client";
|
|
9799
|
+
init_GridPicker();
|
|
9800
|
+
init_Icon();
|
|
9801
|
+
THUMB_PX = 32;
|
|
9802
|
+
IMAGE_KINDS = /* @__PURE__ */ new Set([
|
|
9803
|
+
"image",
|
|
9804
|
+
"spritesheet",
|
|
9805
|
+
"scene",
|
|
9806
|
+
"portrait"
|
|
9807
|
+
]);
|
|
9808
|
+
AssetPicker = ({
|
|
9809
|
+
assets,
|
|
9810
|
+
value,
|
|
9811
|
+
onChange,
|
|
9812
|
+
className
|
|
9813
|
+
}) => {
|
|
9814
|
+
const byUrl = useMemo(() => {
|
|
9815
|
+
const map = /* @__PURE__ */ new Map();
|
|
9816
|
+
for (const entry of assets) map.set(entry.url, entry);
|
|
9817
|
+
return map;
|
|
9818
|
+
}, [assets]);
|
|
9819
|
+
const items = useMemo(
|
|
9820
|
+
() => assets.map((entry) => ({
|
|
9821
|
+
id: entry.url,
|
|
9822
|
+
label: entry.name,
|
|
9823
|
+
category: entry.category
|
|
9824
|
+
})),
|
|
9825
|
+
[assets]
|
|
9826
|
+
);
|
|
9827
|
+
const categories = useMemo(() => {
|
|
9828
|
+
const seen = [];
|
|
9829
|
+
for (const entry of assets) {
|
|
9830
|
+
if (!seen.includes(entry.category)) seen.push(entry.category);
|
|
9831
|
+
}
|
|
9832
|
+
return seen;
|
|
9833
|
+
}, [assets]);
|
|
9834
|
+
const renderThumbnail = useCallback(
|
|
9835
|
+
(item) => {
|
|
9836
|
+
const entry = byUrl.get(item.id);
|
|
9837
|
+
if (entry === void 0) return null;
|
|
9838
|
+
if (IMAGE_KINDS.has(entry.kind)) {
|
|
9839
|
+
return /* @__PURE__ */ jsx(
|
|
9840
|
+
"img",
|
|
9841
|
+
{
|
|
9842
|
+
src: entry.thumbnailUrl ?? entry.url,
|
|
9843
|
+
alt: entry.name,
|
|
9844
|
+
loading: "lazy",
|
|
9845
|
+
width: THUMB_PX,
|
|
9846
|
+
height: THUMB_PX,
|
|
9847
|
+
style: { width: THUMB_PX, height: THUMB_PX, objectFit: "cover" }
|
|
9848
|
+
}
|
|
9849
|
+
);
|
|
9850
|
+
}
|
|
9851
|
+
return /* @__PURE__ */ jsx(Icon, { name: iconForKind(entry.kind), size: "sm" });
|
|
9852
|
+
},
|
|
9853
|
+
[byUrl]
|
|
9854
|
+
);
|
|
9855
|
+
return /* @__PURE__ */ jsx(
|
|
9856
|
+
GridPicker,
|
|
9857
|
+
{
|
|
9858
|
+
items,
|
|
9859
|
+
value,
|
|
9860
|
+
onChange,
|
|
9861
|
+
categories,
|
|
9862
|
+
renderThumbnail,
|
|
9863
|
+
cellSize: THUMB_PX,
|
|
9864
|
+
className
|
|
9865
|
+
}
|
|
9866
|
+
);
|
|
9867
|
+
};
|
|
9868
|
+
AssetPicker.displayName = "AssetPicker";
|
|
9869
|
+
}
|
|
9870
|
+
});
|
|
9600
9871
|
var AuthLayout;
|
|
9601
9872
|
var init_AuthLayout = __esm({
|
|
9602
|
-
"components/
|
|
9873
|
+
"components/marketing/templates/AuthLayout.tsx"() {
|
|
9603
9874
|
"use client";
|
|
9604
9875
|
init_cn();
|
|
9605
9876
|
init_Box();
|
|
@@ -12242,7 +12513,10 @@ function computeFoldRegions(code) {
|
|
|
12242
12513
|
}
|
|
12243
12514
|
return regions.sort((a, b) => a.start - b.start);
|
|
12244
12515
|
}
|
|
12245
|
-
|
|
12516
|
+
function toCodeLanguage(value) {
|
|
12517
|
+
return value && CODE_LANGUAGE_SET.has(value) ? value : "text";
|
|
12518
|
+
}
|
|
12519
|
+
var orbStyleOverrides, orbStyle, loloStyleOverrides, loloStyle, log5, CODE_LANGUAGES, CODE_LANGUAGE_SET, LINE_PROPS_FN, HIDDEN_LINE_NUMBERS, CodeBlock;
|
|
12246
12520
|
var init_CodeBlock = __esm({
|
|
12247
12521
|
"components/core/molecules/markdown/CodeBlock.tsx"() {
|
|
12248
12522
|
init_Box();
|
|
@@ -12320,9 +12594,40 @@ var init_CodeBlock = __esm({
|
|
|
12320
12594
|
};
|
|
12321
12595
|
loloStyle = { ...dark, ...loloStyleOverrides };
|
|
12322
12596
|
log5 = createLogger("almadar:ui:markdown-code");
|
|
12597
|
+
CODE_LANGUAGES = [
|
|
12598
|
+
"text",
|
|
12599
|
+
"json",
|
|
12600
|
+
"javascript",
|
|
12601
|
+
"js",
|
|
12602
|
+
"typescript",
|
|
12603
|
+
"ts",
|
|
12604
|
+
"jsx",
|
|
12605
|
+
"tsx",
|
|
12606
|
+
"css",
|
|
12607
|
+
"markdown",
|
|
12608
|
+
"md",
|
|
12609
|
+
"bash",
|
|
12610
|
+
"shell",
|
|
12611
|
+
"sh",
|
|
12612
|
+
"yaml",
|
|
12613
|
+
"yml",
|
|
12614
|
+
"rust",
|
|
12615
|
+
"python",
|
|
12616
|
+
"py",
|
|
12617
|
+
"sql",
|
|
12618
|
+
"diff",
|
|
12619
|
+
"toml",
|
|
12620
|
+
"go",
|
|
12621
|
+
"graphql",
|
|
12622
|
+
"html",
|
|
12623
|
+
"xml",
|
|
12624
|
+
"orb",
|
|
12625
|
+
"lolo"
|
|
12626
|
+
];
|
|
12627
|
+
CODE_LANGUAGE_SET = new Set(CODE_LANGUAGES);
|
|
12323
12628
|
LINE_PROPS_FN = (n) => ({ "data-line": String(n - 1) });
|
|
12324
12629
|
HIDDEN_LINE_NUMBERS = { display: "none" };
|
|
12325
|
-
CodeBlock =
|
|
12630
|
+
CodeBlock = React83__default.memo(
|
|
12326
12631
|
({
|
|
12327
12632
|
code: rawCode,
|
|
12328
12633
|
language = "text",
|
|
@@ -12759,7 +13064,7 @@ var init_MarkdownContent = __esm({
|
|
|
12759
13064
|
init_Box();
|
|
12760
13065
|
init_CodeBlock();
|
|
12761
13066
|
init_cn();
|
|
12762
|
-
MarkdownContent =
|
|
13067
|
+
MarkdownContent = React83__default.memo(
|
|
12763
13068
|
({ content, direction, className }) => {
|
|
12764
13069
|
const { t: _t } = useTranslate();
|
|
12765
13070
|
const safeContent = typeof content === "string" ? content : String(content ?? "");
|
|
@@ -12809,7 +13114,7 @@ var init_MarkdownContent = __esm({
|
|
|
12809
13114
|
CodeBlock,
|
|
12810
13115
|
{
|
|
12811
13116
|
code,
|
|
12812
|
-
language: match[1],
|
|
13117
|
+
language: toCodeLanguage(match[1]),
|
|
12813
13118
|
maxHeight: "60vh"
|
|
12814
13119
|
}
|
|
12815
13120
|
);
|
|
@@ -13855,7 +14160,7 @@ var init_StateMachineView = __esm({
|
|
|
13855
14160
|
style: { top: title ? 30 : 0 },
|
|
13856
14161
|
children: [
|
|
13857
14162
|
entity && /* @__PURE__ */ jsx(EntityBox, { entity, config }),
|
|
13858
|
-
states.map((state) => renderStateNode ? /* @__PURE__ */ jsx(
|
|
14163
|
+
states.map((state) => renderStateNode ? /* @__PURE__ */ jsx(React83__default.Fragment, { children: renderStateNode(state, config) }, state.id) : /* @__PURE__ */ jsx(
|
|
13859
14164
|
StateNode,
|
|
13860
14165
|
{
|
|
13861
14166
|
state,
|
|
@@ -14668,7 +14973,7 @@ var init_ContentRenderer = __esm({
|
|
|
14668
14973
|
CodeBlock,
|
|
14669
14974
|
{
|
|
14670
14975
|
code: segment.content,
|
|
14671
|
-
language: segment.language
|
|
14976
|
+
language: toCodeLanguage(segment.language)
|
|
14672
14977
|
},
|
|
14673
14978
|
key
|
|
14674
14979
|
);
|
|
@@ -14693,7 +14998,7 @@ var init_ContentRenderer = __esm({
|
|
|
14693
14998
|
CodeBlock,
|
|
14694
14999
|
{
|
|
14695
15000
|
code: segment.content,
|
|
14696
|
-
language: segment.language
|
|
15001
|
+
language: toCodeLanguage(segment.language)
|
|
14697
15002
|
}
|
|
14698
15003
|
),
|
|
14699
15004
|
/* @__PURE__ */ jsx(ScaledDiagram, { children: /* @__PURE__ */ jsx(
|
|
@@ -15460,7 +15765,7 @@ var init_Grid = __esm({
|
|
|
15460
15765
|
as: Component = "div"
|
|
15461
15766
|
}) => {
|
|
15462
15767
|
const mergedStyle = rows2 ? { gridTemplateRows: `repeat(${rows2}, minmax(0, 1fr))`, ...style } : style;
|
|
15463
|
-
return
|
|
15768
|
+
return React83__default.createElement(
|
|
15464
15769
|
Component,
|
|
15465
15770
|
{
|
|
15466
15771
|
className: cn(
|
|
@@ -18778,7 +19083,7 @@ var init_Carousel = __esm({
|
|
|
18778
19083
|
});
|
|
18779
19084
|
var CaseStudyOrganism;
|
|
18780
19085
|
var init_CaseStudyOrganism = __esm({
|
|
18781
|
-
"components/
|
|
19086
|
+
"components/marketing/organisms/CaseStudyOrganism.tsx"() {
|
|
18782
19087
|
"use client";
|
|
18783
19088
|
init_cn();
|
|
18784
19089
|
init_useEventBus();
|
|
@@ -20998,7 +21303,7 @@ function CraftingRecipe({
|
|
|
20998
21303
|
className
|
|
20999
21304
|
}) {
|
|
21000
21305
|
const eventBus = useEventBus();
|
|
21001
|
-
const handleCraft =
|
|
21306
|
+
const handleCraft = React83.useCallback(() => {
|
|
21002
21307
|
onCraft?.();
|
|
21003
21308
|
if (craftEvent) {
|
|
21004
21309
|
eventBus.emit(craftEvent, { output: output.label });
|
|
@@ -21015,7 +21320,7 @@ function CraftingRecipe({
|
|
|
21015
21320
|
children: [
|
|
21016
21321
|
/* @__PURE__ */ jsx(HStack, { gap: "xs", className: "flex-wrap items-center", children: inputs.map((ingredient, index) => {
|
|
21017
21322
|
const hasSufficient = ingredient.available >= ingredient.required;
|
|
21018
|
-
return /* @__PURE__ */ jsxs(
|
|
21323
|
+
return /* @__PURE__ */ jsxs(React83.Fragment, { children: [
|
|
21019
21324
|
/* @__PURE__ */ jsx(Box, { className: "relative", children: /* @__PURE__ */ jsx(
|
|
21020
21325
|
ItemSlot,
|
|
21021
21326
|
{
|
|
@@ -21078,8 +21383,8 @@ function DPad({
|
|
|
21078
21383
|
}) {
|
|
21079
21384
|
const eventBus = useEventBus();
|
|
21080
21385
|
const sizes = sizeMap6[size];
|
|
21081
|
-
const [activeDirections, setActiveDirections] =
|
|
21082
|
-
const handlePress =
|
|
21386
|
+
const [activeDirections, setActiveDirections] = React83.useState(/* @__PURE__ */ new Set());
|
|
21387
|
+
const handlePress = React83.useCallback(
|
|
21083
21388
|
(direction) => {
|
|
21084
21389
|
setActiveDirections((prev) => new Set(prev).add(direction));
|
|
21085
21390
|
if (directionEvent) eventBus.emit(`UI:${directionEvent}`, { direction, pressed: true });
|
|
@@ -21087,7 +21392,7 @@ function DPad({
|
|
|
21087
21392
|
},
|
|
21088
21393
|
[directionEvent, eventBus, onDirection]
|
|
21089
21394
|
);
|
|
21090
|
-
const handleRelease =
|
|
21395
|
+
const handleRelease = React83.useCallback(
|
|
21091
21396
|
(direction) => {
|
|
21092
21397
|
setActiveDirections((prev) => {
|
|
21093
21398
|
const next = new Set(prev);
|
|
@@ -21822,14 +22127,14 @@ function useDataDnd(args) {
|
|
|
21822
22127
|
const isZone = Boolean(dragGroup || accepts || sortable);
|
|
21823
22128
|
const enabled = isZone || Boolean(dndRoot);
|
|
21824
22129
|
const eventBus = useEventBus();
|
|
21825
|
-
const parentRoot =
|
|
22130
|
+
const parentRoot = React83__default.useContext(RootCtx);
|
|
21826
22131
|
const isRoot = enabled && parentRoot === null;
|
|
21827
|
-
const zoneId =
|
|
22132
|
+
const zoneId = React83__default.useId();
|
|
21828
22133
|
const ownGroup = dragGroup ?? accepts ?? zoneId;
|
|
21829
|
-
const [optimisticOrders, setOptimisticOrders] =
|
|
21830
|
-
const optimisticOrdersRef =
|
|
22134
|
+
const [optimisticOrders, setOptimisticOrders] = React83__default.useState(() => /* @__PURE__ */ new Map());
|
|
22135
|
+
const optimisticOrdersRef = React83__default.useRef(optimisticOrders);
|
|
21831
22136
|
optimisticOrdersRef.current = optimisticOrders;
|
|
21832
|
-
const clearOptimisticOrder =
|
|
22137
|
+
const clearOptimisticOrder = React83__default.useCallback((group) => {
|
|
21833
22138
|
setOptimisticOrders((prev) => {
|
|
21834
22139
|
if (!prev.has(group)) return prev;
|
|
21835
22140
|
const next = new Map(prev);
|
|
@@ -21854,7 +22159,7 @@ function useDataDnd(args) {
|
|
|
21854
22159
|
const raw = it[dndItemIdField];
|
|
21855
22160
|
return String(raw ?? `__idx_${idx}`);
|
|
21856
22161
|
}).join("|");
|
|
21857
|
-
const itemIds =
|
|
22162
|
+
const itemIds = React83__default.useMemo(
|
|
21858
22163
|
() => orderedItems.map((it, idx) => {
|
|
21859
22164
|
const raw = it[dndItemIdField];
|
|
21860
22165
|
return raw ?? `__idx_${idx}`;
|
|
@@ -21862,7 +22167,7 @@ function useDataDnd(args) {
|
|
|
21862
22167
|
[itemIdsSignature]
|
|
21863
22168
|
);
|
|
21864
22169
|
const itemsContentSig = items.map((it, idx) => String(it[dndItemIdField] ?? `__${idx}`)).join("|");
|
|
21865
|
-
|
|
22170
|
+
React83__default.useEffect(() => {
|
|
21866
22171
|
const root = isRoot ? null : parentRoot;
|
|
21867
22172
|
if (root) {
|
|
21868
22173
|
root.clearOptimisticOrder(ownGroup);
|
|
@@ -21870,20 +22175,20 @@ function useDataDnd(args) {
|
|
|
21870
22175
|
clearOptimisticOrder(ownGroup);
|
|
21871
22176
|
}
|
|
21872
22177
|
}, [itemsContentSig, ownGroup]);
|
|
21873
|
-
const zonesRef =
|
|
21874
|
-
const registerZone =
|
|
22178
|
+
const zonesRef = React83__default.useRef(/* @__PURE__ */ new Map());
|
|
22179
|
+
const registerZone = React83__default.useCallback((zoneId2, meta2) => {
|
|
21875
22180
|
zonesRef.current.set(zoneId2, meta2);
|
|
21876
22181
|
}, []);
|
|
21877
|
-
const unregisterZone =
|
|
22182
|
+
const unregisterZone = React83__default.useCallback((zoneId2) => {
|
|
21878
22183
|
zonesRef.current.delete(zoneId2);
|
|
21879
22184
|
}, []);
|
|
21880
|
-
const [activeDrag, setActiveDrag] =
|
|
21881
|
-
const [overZoneGroup, setOverZoneGroup] =
|
|
21882
|
-
const meta =
|
|
22185
|
+
const [activeDrag, setActiveDrag] = React83__default.useState(null);
|
|
22186
|
+
const [overZoneGroup, setOverZoneGroup] = React83__default.useState(null);
|
|
22187
|
+
const meta = React83__default.useMemo(
|
|
21883
22188
|
() => ({ group: ownGroup, dropEvent, reorderEvent, positionEvent, itemIds, rawItems: items, idField: dndItemIdField }),
|
|
21884
22189
|
[ownGroup, dropEvent, reorderEvent, positionEvent, itemIds, items, dndItemIdField]
|
|
21885
22190
|
);
|
|
21886
|
-
|
|
22191
|
+
React83__default.useEffect(() => {
|
|
21887
22192
|
const target = isRoot ? null : parentRoot;
|
|
21888
22193
|
if (!target) {
|
|
21889
22194
|
zonesRef.current.set(zoneId, meta);
|
|
@@ -21902,7 +22207,7 @@ function useDataDnd(args) {
|
|
|
21902
22207
|
}, [parentRoot, isRoot, zoneId, meta]);
|
|
21903
22208
|
const sensors = useAlmadarDndSensors(true);
|
|
21904
22209
|
const collisionDetection = almadarDndCollisionDetection;
|
|
21905
|
-
const findZoneByItem =
|
|
22210
|
+
const findZoneByItem = React83__default.useCallback(
|
|
21906
22211
|
(id) => {
|
|
21907
22212
|
for (const z of zonesRef.current.values()) {
|
|
21908
22213
|
if (z.itemIds.includes(id)) return z;
|
|
@@ -21911,7 +22216,7 @@ function useDataDnd(args) {
|
|
|
21911
22216
|
},
|
|
21912
22217
|
[]
|
|
21913
22218
|
);
|
|
21914
|
-
|
|
22219
|
+
React83__default.useCallback(
|
|
21915
22220
|
(group) => {
|
|
21916
22221
|
for (const z of zonesRef.current.values()) {
|
|
21917
22222
|
if (z.group === group) return z;
|
|
@@ -21920,7 +22225,7 @@ function useDataDnd(args) {
|
|
|
21920
22225
|
},
|
|
21921
22226
|
[]
|
|
21922
22227
|
);
|
|
21923
|
-
const handleDragEnd =
|
|
22228
|
+
const handleDragEnd = React83__default.useCallback(
|
|
21924
22229
|
(event) => {
|
|
21925
22230
|
const { active, over } = event;
|
|
21926
22231
|
const activeIdStr = String(active.id);
|
|
@@ -22011,8 +22316,8 @@ function useDataDnd(args) {
|
|
|
22011
22316
|
},
|
|
22012
22317
|
[eventBus]
|
|
22013
22318
|
);
|
|
22014
|
-
const sortableData =
|
|
22015
|
-
const SortableItem =
|
|
22319
|
+
const sortableData = React83__default.useMemo(() => ({ dndGroup: ownGroup }), [ownGroup]);
|
|
22320
|
+
const SortableItem = React83__default.useCallback(
|
|
22016
22321
|
({ id, children }) => {
|
|
22017
22322
|
const {
|
|
22018
22323
|
attributes,
|
|
@@ -22052,7 +22357,7 @@ function useDataDnd(args) {
|
|
|
22052
22357
|
id: droppableId,
|
|
22053
22358
|
data: sortableData
|
|
22054
22359
|
});
|
|
22055
|
-
const ctx =
|
|
22360
|
+
const ctx = React83__default.useContext(RootCtx);
|
|
22056
22361
|
const activeDrag2 = ctx?.activeDrag ?? null;
|
|
22057
22362
|
const overZoneGroup2 = ctx?.overZoneGroup ?? null;
|
|
22058
22363
|
const isThisZoneOver = overZoneGroup2 === ownGroup;
|
|
@@ -22067,7 +22372,7 @@ function useDataDnd(args) {
|
|
|
22067
22372
|
showForeignPlaceholder,
|
|
22068
22373
|
ctxAvailable: ctx != null
|
|
22069
22374
|
});
|
|
22070
|
-
|
|
22375
|
+
React83__default.useEffect(() => {
|
|
22071
22376
|
dndLog.info("dropzone:isOver:change", { droppableId, group: ownGroup, isOver, isThisZoneOver, showForeignPlaceholder, activeDragSourceGroup: activeDrag2?.sourceGroup ?? null });
|
|
22072
22377
|
}, [droppableId, isOver, isThisZoneOver, showForeignPlaceholder]);
|
|
22073
22378
|
return /* @__PURE__ */ jsx(
|
|
@@ -22081,11 +22386,11 @@ function useDataDnd(args) {
|
|
|
22081
22386
|
}
|
|
22082
22387
|
);
|
|
22083
22388
|
};
|
|
22084
|
-
const rootContextValue =
|
|
22389
|
+
const rootContextValue = React83__default.useMemo(
|
|
22085
22390
|
() => ({ registerZone, unregisterZone, activeDrag, overZoneGroup, optimisticOrders, clearOptimisticOrder }),
|
|
22086
22391
|
[registerZone, unregisterZone, activeDrag, overZoneGroup, optimisticOrders, clearOptimisticOrder]
|
|
22087
22392
|
);
|
|
22088
|
-
const handleDragStart =
|
|
22393
|
+
const handleDragStart = React83__default.useCallback((event) => {
|
|
22089
22394
|
const sourceZone = findZoneByItem(event.active.id);
|
|
22090
22395
|
const rect = event.active.rect.current.initial;
|
|
22091
22396
|
const height = rect?.height && rect.height > 0 ? rect.height : 64;
|
|
@@ -22104,7 +22409,7 @@ function useDataDnd(args) {
|
|
|
22104
22409
|
isRoot
|
|
22105
22410
|
});
|
|
22106
22411
|
}, [findZoneByItem, isRoot, zoneId]);
|
|
22107
|
-
const handleDragOver =
|
|
22412
|
+
const handleDragOver = React83__default.useCallback((event) => {
|
|
22108
22413
|
const { active, over } = event;
|
|
22109
22414
|
const overData = over?.data?.current;
|
|
22110
22415
|
const overGroup = overData?.dndGroup ?? null;
|
|
@@ -22174,7 +22479,7 @@ function useDataDnd(args) {
|
|
|
22174
22479
|
return next;
|
|
22175
22480
|
});
|
|
22176
22481
|
}, []);
|
|
22177
|
-
const handleDragCancel =
|
|
22482
|
+
const handleDragCancel = React83__default.useCallback((event) => {
|
|
22178
22483
|
setActiveDrag(null);
|
|
22179
22484
|
setOverZoneGroup(null);
|
|
22180
22485
|
dndLog.warn("dragCancel", {
|
|
@@ -22182,12 +22487,12 @@ function useDataDnd(args) {
|
|
|
22182
22487
|
reason: "dnd-kit cancelled the drag (escape key, pointer interrupted, or external)"
|
|
22183
22488
|
});
|
|
22184
22489
|
}, []);
|
|
22185
|
-
const handleDragEndWithCleanup =
|
|
22490
|
+
const handleDragEndWithCleanup = React83__default.useCallback((event) => {
|
|
22186
22491
|
handleDragEnd(event);
|
|
22187
22492
|
setActiveDrag(null);
|
|
22188
22493
|
setOverZoneGroup(null);
|
|
22189
22494
|
}, [handleDragEnd]);
|
|
22190
|
-
const wrapContainer =
|
|
22495
|
+
const wrapContainer = React83__default.useCallback(
|
|
22191
22496
|
(children) => {
|
|
22192
22497
|
if (!enabled) return children;
|
|
22193
22498
|
const strategy = layout === "grid" ? rectSortingStrategy : verticalListSortingStrategy;
|
|
@@ -22241,7 +22546,7 @@ var init_useDataDnd = __esm({
|
|
|
22241
22546
|
init_useAlmadarDndCollision();
|
|
22242
22547
|
init_Box();
|
|
22243
22548
|
dndLog = createLogger("almadar:ui:dnd");
|
|
22244
|
-
RootCtx =
|
|
22549
|
+
RootCtx = React83__default.createContext(null);
|
|
22245
22550
|
}
|
|
22246
22551
|
});
|
|
22247
22552
|
function fieldLabel2(key) {
|
|
@@ -22761,7 +23066,7 @@ function DataList({
|
|
|
22761
23066
|
}) {
|
|
22762
23067
|
const eventBus = useEventBus();
|
|
22763
23068
|
const { t } = useTranslate();
|
|
22764
|
-
const [visibleCount, setVisibleCount] =
|
|
23069
|
+
const [visibleCount, setVisibleCount] = React83__default.useState(pageSize || Infinity);
|
|
22765
23070
|
const fieldDefs = fields ?? columns ?? [];
|
|
22766
23071
|
const allDataRaw = Array.isArray(entity) ? entity : entity ? [entity] : [];
|
|
22767
23072
|
const dnd = useDataDnd({
|
|
@@ -22780,7 +23085,7 @@ function DataList({
|
|
|
22780
23085
|
const data = pageSize > 0 ? allData.slice(0, visibleCount) : allData;
|
|
22781
23086
|
const hasMoreLocal = pageSize > 0 && visibleCount < allData.length;
|
|
22782
23087
|
const hasRenderProp = typeof children === "function";
|
|
22783
|
-
|
|
23088
|
+
React83__default.useEffect(() => {
|
|
22784
23089
|
const renderItemTypeOf = typeof schemaRenderItem;
|
|
22785
23090
|
const childrenTypeOf = typeof children;
|
|
22786
23091
|
if (data.length > 0 && !hasRenderProp) {
|
|
@@ -22885,7 +23190,7 @@ function DataList({
|
|
|
22885
23190
|
const items2 = data.map((item) => item);
|
|
22886
23191
|
const groups2 = groupBy ? groupData(items2, groupBy) : [{ label: "", items: items2 }];
|
|
22887
23192
|
const contentField = titleField?.name ?? fieldDefs[0]?.name ?? "";
|
|
22888
|
-
return /* @__PURE__ */ jsx(VStack, { gap: "sm", className: cn("py-2", className), children: groups2.map((group, gi) => /* @__PURE__ */ jsxs(
|
|
23193
|
+
return /* @__PURE__ */ jsx(VStack, { gap: "sm", className: cn("py-2", className), children: groups2.map((group, gi) => /* @__PURE__ */ jsxs(React83__default.Fragment, { children: [
|
|
22889
23194
|
group.label && /* @__PURE__ */ jsx(Divider, { label: group.label, className: "my-2" }),
|
|
22890
23195
|
group.items.map((itemData, index) => {
|
|
22891
23196
|
const id = itemData.id || `${gi}-${index}`;
|
|
@@ -23033,7 +23338,7 @@ function DataList({
|
|
|
23033
23338
|
className
|
|
23034
23339
|
),
|
|
23035
23340
|
children: [
|
|
23036
|
-
groups.map((group, gi) => /* @__PURE__ */ jsxs(
|
|
23341
|
+
groups.map((group, gi) => /* @__PURE__ */ jsxs(React83__default.Fragment, { children: [
|
|
23037
23342
|
group.label && /* @__PURE__ */ jsx(Divider, { label: group.label, className: gi > 0 ? "mt-4" : "mt-0" }),
|
|
23038
23343
|
group.items.map(
|
|
23039
23344
|
(itemData, index) => renderItem(itemData, index, gi === groups.length - 1 && index === group.items.length - 1)
|
|
@@ -24657,7 +24962,7 @@ var init_WizardProgress = __esm({
|
|
|
24657
24962
|
children: /* @__PURE__ */ jsx("div", { className: "flex items-center gap-2", children: normalizedSteps.map((step, index) => {
|
|
24658
24963
|
const isActive = index === currentStep;
|
|
24659
24964
|
const isCompleted = index < currentStep;
|
|
24660
|
-
return /* @__PURE__ */ jsxs(
|
|
24965
|
+
return /* @__PURE__ */ jsxs(React83__default.Fragment, { children: [
|
|
24661
24966
|
/* @__PURE__ */ jsx(
|
|
24662
24967
|
"button",
|
|
24663
24968
|
{
|
|
@@ -25174,7 +25479,7 @@ var init_FormSectionHeader = __esm({
|
|
|
25174
25479
|
Box,
|
|
25175
25480
|
{
|
|
25176
25481
|
className: cn(
|
|
25177
|
-
"px-4 py-3 bg-muted rounded-t-lg",
|
|
25482
|
+
"px-4 py-3 bg-muted rounded-t-lg border-b-2 border-border border-l-4 border-l-primary",
|
|
25178
25483
|
isClickable && "cursor-pointer hover:bg-[var(--color-surface-hover)] transition-colors",
|
|
25179
25484
|
className
|
|
25180
25485
|
),
|
|
@@ -25186,7 +25491,7 @@ var init_FormSectionHeader = __esm({
|
|
|
25186
25491
|
{
|
|
25187
25492
|
name: icon,
|
|
25188
25493
|
size: "md",
|
|
25189
|
-
className: "text-
|
|
25494
|
+
className: "text-primary"
|
|
25190
25495
|
}
|
|
25191
25496
|
),
|
|
25192
25497
|
statusIcon && /* @__PURE__ */ jsx(
|
|
@@ -25197,8 +25502,8 @@ var init_FormSectionHeader = __esm({
|
|
|
25197
25502
|
className: hasErrors ? "text-error" : "text-success"
|
|
25198
25503
|
}
|
|
25199
25504
|
),
|
|
25200
|
-
/* @__PURE__ */ jsxs(Box, { children: [
|
|
25201
|
-
/* @__PURE__ */ jsx(Typography, { variant: "
|
|
25505
|
+
/* @__PURE__ */ jsxs(Box, { className: "space-y-0.5", children: [
|
|
25506
|
+
/* @__PURE__ */ jsx(Typography, { variant: "subheading", weight: "semibold", children: title }),
|
|
25202
25507
|
subtitle && /* @__PURE__ */ jsx(Typography, { variant: "caption", color: "muted", children: subtitle })
|
|
25203
25508
|
] })
|
|
25204
25509
|
] }),
|
|
@@ -25268,6 +25573,50 @@ var init_FlipCard = __esm({
|
|
|
25268
25573
|
FlipCard.displayName = "FlipCard";
|
|
25269
25574
|
}
|
|
25270
25575
|
});
|
|
25576
|
+
function pascalToKebab(name) {
|
|
25577
|
+
return name.replace(/([a-z0-9])([A-Z])/g, "$1-$2").replace(/([A-Z])([A-Z][a-z])/g, "$1-$2").toLowerCase();
|
|
25578
|
+
}
|
|
25579
|
+
function kebabToPascal3(name) {
|
|
25580
|
+
return name.split("-").map((part) => /^\d+$/.test(part) ? part : part.charAt(0).toUpperCase() + part.slice(1)).join("");
|
|
25581
|
+
}
|
|
25582
|
+
var ICON_ITEMS, IconPicker;
|
|
25583
|
+
var init_IconPicker = __esm({
|
|
25584
|
+
"components/core/molecules/IconPicker.tsx"() {
|
|
25585
|
+
"use client";
|
|
25586
|
+
init_Icon();
|
|
25587
|
+
init_GridPicker();
|
|
25588
|
+
ICON_ITEMS = (() => {
|
|
25589
|
+
const items = [];
|
|
25590
|
+
for (const [exportName, candidate] of Object.entries(LucideIcons2)) {
|
|
25591
|
+
if (!/^[A-Z]/.test(exportName)) continue;
|
|
25592
|
+
if (exportName.endsWith("Icon")) continue;
|
|
25593
|
+
if (exportName.startsWith("Lucide")) continue;
|
|
25594
|
+
const isComponent = candidate !== null && (typeof candidate === "object" || typeof candidate === "function") && "$$typeof" in candidate;
|
|
25595
|
+
if (!isComponent) continue;
|
|
25596
|
+
const kebab = pascalToKebab(exportName);
|
|
25597
|
+
if (kebabToPascal3(kebab) !== exportName) continue;
|
|
25598
|
+
items.push({ id: kebab, label: kebab, category: "icons" });
|
|
25599
|
+
}
|
|
25600
|
+
return items;
|
|
25601
|
+
})();
|
|
25602
|
+
IconPicker = ({ value, onChange, className }) => {
|
|
25603
|
+
const items = useMemo(() => ICON_ITEMS, []);
|
|
25604
|
+
return /* @__PURE__ */ jsx(
|
|
25605
|
+
GridPicker,
|
|
25606
|
+
{
|
|
25607
|
+
items,
|
|
25608
|
+
value,
|
|
25609
|
+
onChange,
|
|
25610
|
+
searchPlaceholder: "Search icons\u2026",
|
|
25611
|
+
renderThumbnail: (it) => /* @__PURE__ */ jsx(Icon, { name: it.id }),
|
|
25612
|
+
cellSize: 32,
|
|
25613
|
+
className
|
|
25614
|
+
}
|
|
25615
|
+
);
|
|
25616
|
+
};
|
|
25617
|
+
IconPicker.displayName = "IconPicker";
|
|
25618
|
+
}
|
|
25619
|
+
});
|
|
25271
25620
|
function toISODate(d) {
|
|
25272
25621
|
return d.toISOString().slice(0, 10);
|
|
25273
25622
|
}
|
|
@@ -25704,9 +26053,9 @@ function ScoreDisplay({
|
|
|
25704
26053
|
...rest
|
|
25705
26054
|
}) {
|
|
25706
26055
|
const resolvedValue = typeof value === "number" && !Number.isNaN(value) ? value : typeof rest.score === "number" && !Number.isNaN(rest.score) ? rest.score : 0;
|
|
25707
|
-
const [displayValue, setDisplayValue] =
|
|
25708
|
-
const [isAnimating, setIsAnimating] =
|
|
25709
|
-
|
|
26056
|
+
const [displayValue, setDisplayValue] = React83.useState(resolvedValue);
|
|
26057
|
+
const [isAnimating, setIsAnimating] = React83.useState(false);
|
|
26058
|
+
React83.useEffect(() => {
|
|
25710
26059
|
if (!animated || displayValue === resolvedValue) {
|
|
25711
26060
|
setDisplayValue(resolvedValue);
|
|
25712
26061
|
return;
|
|
@@ -25853,7 +26202,7 @@ function InventoryGrid({
|
|
|
25853
26202
|
const eventBus = useEventBus();
|
|
25854
26203
|
const slotCount = totalSlots ?? items.length;
|
|
25855
26204
|
const emptySlotCount = Math.max(0, slotCount - items.length);
|
|
25856
|
-
const handleSelect =
|
|
26205
|
+
const handleSelect = React83.useCallback(
|
|
25857
26206
|
(id) => {
|
|
25858
26207
|
onSelect?.(id);
|
|
25859
26208
|
if (selectEvent) {
|
|
@@ -26139,31 +26488,31 @@ function GameCanvas2D({
|
|
|
26139
26488
|
assetBaseUrl = "",
|
|
26140
26489
|
className
|
|
26141
26490
|
}) {
|
|
26142
|
-
const canvasRef =
|
|
26143
|
-
const rafRef =
|
|
26144
|
-
const frameRef =
|
|
26145
|
-
const lastTimeRef =
|
|
26146
|
-
const imageCache =
|
|
26491
|
+
const canvasRef = React83.useRef(null);
|
|
26492
|
+
const rafRef = React83.useRef(0);
|
|
26493
|
+
const frameRef = React83.useRef(0);
|
|
26494
|
+
const lastTimeRef = React83.useRef(0);
|
|
26495
|
+
const imageCache = React83.useRef(/* @__PURE__ */ new Map());
|
|
26147
26496
|
const emit = useEmitEvent();
|
|
26148
|
-
const onDrawRef =
|
|
26497
|
+
const onDrawRef = React83.useRef(onDraw);
|
|
26149
26498
|
onDrawRef.current = onDraw;
|
|
26150
|
-
const onTickRef =
|
|
26499
|
+
const onTickRef = React83.useRef(onTick);
|
|
26151
26500
|
onTickRef.current = onTick;
|
|
26152
|
-
const tickEventRef =
|
|
26501
|
+
const tickEventRef = React83.useRef(tickEvent);
|
|
26153
26502
|
tickEventRef.current = tickEvent;
|
|
26154
|
-
const drawEventRef =
|
|
26503
|
+
const drawEventRef = React83.useRef(drawEvent);
|
|
26155
26504
|
drawEventRef.current = drawEvent;
|
|
26156
|
-
const emitRef =
|
|
26505
|
+
const emitRef = React83.useRef(emit);
|
|
26157
26506
|
emitRef.current = emit;
|
|
26158
|
-
const assetBaseUrlRef =
|
|
26507
|
+
const assetBaseUrlRef = React83.useRef(assetBaseUrl);
|
|
26159
26508
|
assetBaseUrlRef.current = assetBaseUrl;
|
|
26160
|
-
const backgroundImageRef =
|
|
26509
|
+
const backgroundImageRef = React83.useRef(backgroundImage);
|
|
26161
26510
|
backgroundImageRef.current = backgroundImage;
|
|
26162
|
-
const widthRef =
|
|
26511
|
+
const widthRef = React83.useRef(width);
|
|
26163
26512
|
widthRef.current = width;
|
|
26164
|
-
const heightRef =
|
|
26513
|
+
const heightRef = React83.useRef(height);
|
|
26165
26514
|
heightRef.current = height;
|
|
26166
|
-
const loadImage =
|
|
26515
|
+
const loadImage = React83.useCallback((url) => {
|
|
26167
26516
|
const fullUrl = url.startsWith("http") ? url : `${assetBaseUrlRef.current}${url}`;
|
|
26168
26517
|
const cached = imageCache.current.get(fullUrl);
|
|
26169
26518
|
if (cached?.complete && cached.naturalWidth > 0) return cached;
|
|
@@ -26175,7 +26524,7 @@ function GameCanvas2D({
|
|
|
26175
26524
|
}
|
|
26176
26525
|
return null;
|
|
26177
26526
|
}, []);
|
|
26178
|
-
|
|
26527
|
+
React83.useEffect(() => {
|
|
26179
26528
|
const canvas = canvasRef.current;
|
|
26180
26529
|
if (!canvas) return;
|
|
26181
26530
|
const ctx = canvas.getContext("2d");
|
|
@@ -26530,7 +26879,7 @@ function TurnPanel({
|
|
|
26530
26879
|
className
|
|
26531
26880
|
}) {
|
|
26532
26881
|
const eventBus = useEventBus();
|
|
26533
|
-
const handleAction =
|
|
26882
|
+
const handleAction = React83.useCallback(
|
|
26534
26883
|
(event) => {
|
|
26535
26884
|
if (event) {
|
|
26536
26885
|
eventBus.emit(event, { turn: currentTurn, phase, activeTeam });
|
|
@@ -26676,7 +27025,7 @@ function UnitCommandBar({
|
|
|
26676
27025
|
className
|
|
26677
27026
|
}) {
|
|
26678
27027
|
const eventBus = useEventBus();
|
|
26679
|
-
const handleCommand =
|
|
27028
|
+
const handleCommand = React83.useCallback(
|
|
26680
27029
|
(event) => {
|
|
26681
27030
|
if (event) {
|
|
26682
27031
|
eventBus.emit(event, { unitId: selectedUnitId });
|
|
@@ -27161,7 +27510,7 @@ function GameMenu({
|
|
|
27161
27510
|
} catch {
|
|
27162
27511
|
}
|
|
27163
27512
|
const eventBus = eventBusProp || eventBusFromHook;
|
|
27164
|
-
const handleOptionClick =
|
|
27513
|
+
const handleOptionClick = React83.useCallback(
|
|
27165
27514
|
(option) => {
|
|
27166
27515
|
if (option.event && eventBus) {
|
|
27167
27516
|
eventBus.emit(`UI:${option.event}`, { option });
|
|
@@ -27275,7 +27624,7 @@ function GameOverScreen({
|
|
|
27275
27624
|
} catch {
|
|
27276
27625
|
}
|
|
27277
27626
|
const eventBus = eventBusProp || eventBusFromHook;
|
|
27278
|
-
const handleActionClick =
|
|
27627
|
+
const handleActionClick = React83.useCallback(
|
|
27279
27628
|
(action) => {
|
|
27280
27629
|
if (action.event && eventBus) {
|
|
27281
27630
|
eventBus.emit(`UI:${action.event}`, { action });
|
|
@@ -28291,7 +28640,7 @@ var init_StarRating = __esm({
|
|
|
28291
28640
|
name: "star",
|
|
28292
28641
|
className: cn(
|
|
28293
28642
|
styles.star,
|
|
28294
|
-
"text-muted",
|
|
28643
|
+
"text-muted-foreground",
|
|
28295
28644
|
"transition-colors duration-100"
|
|
28296
28645
|
),
|
|
28297
28646
|
strokeWidth: 1.5
|
|
@@ -28774,8 +29123,8 @@ function TableView({
|
|
|
28774
29123
|
}) {
|
|
28775
29124
|
const eventBus = useEventBus();
|
|
28776
29125
|
const { t } = useTranslate();
|
|
28777
|
-
const [visibleCount, setVisibleCount] =
|
|
28778
|
-
const [localSelected, setLocalSelected] =
|
|
29126
|
+
const [visibleCount, setVisibleCount] = React83__default.useState(pageSize > 0 ? pageSize : Infinity);
|
|
29127
|
+
const [localSelected, setLocalSelected] = React83__default.useState(/* @__PURE__ */ new Set());
|
|
28779
29128
|
const colDefs = columns ?? fields ?? [];
|
|
28780
29129
|
const allDataRaw = Array.isArray(entity) ? entity : entity ? [entity] : [];
|
|
28781
29130
|
const dnd = useDataDnd({
|
|
@@ -28970,12 +29319,12 @@ function TableView({
|
|
|
28970
29319
|
]
|
|
28971
29320
|
}
|
|
28972
29321
|
);
|
|
28973
|
-
return dnd.isZone ? /* @__PURE__ */ jsx(dnd.SortableItem, { id: row[idField] ?? id, children: rowInner }, id) : /* @__PURE__ */ jsx(
|
|
29322
|
+
return dnd.isZone ? /* @__PURE__ */ jsx(dnd.SortableItem, { id: row[idField] ?? id, children: rowInner }, id) : /* @__PURE__ */ jsx(React83__default.Fragment, { children: rowInner }, id);
|
|
28974
29323
|
};
|
|
28975
29324
|
const items = data.map((row) => row);
|
|
28976
29325
|
const groups = groupBy ? groupData2(items, groupBy) : [{ label: "", items }];
|
|
28977
29326
|
let runningIndex = 0;
|
|
28978
|
-
const body = /* @__PURE__ */ jsx(Box, { role: "rowgroup", children: groups.map((group, gi) => /* @__PURE__ */ jsxs(
|
|
29327
|
+
const body = /* @__PURE__ */ jsx(Box, { role: "rowgroup", children: groups.map((group, gi) => /* @__PURE__ */ jsxs(React83__default.Fragment, { children: [
|
|
28979
29328
|
group.label && /* @__PURE__ */ jsx(Divider, { label: group.label, className: gi > 0 ? "mt-3" : "mt-0" }),
|
|
28980
29329
|
group.items.map((row) => renderRow(row, runningIndex++))
|
|
28981
29330
|
] }, gi)) });
|
|
@@ -30327,7 +30676,7 @@ var init_StepFlow = __esm({
|
|
|
30327
30676
|
className
|
|
30328
30677
|
}) => {
|
|
30329
30678
|
if (orientation === "vertical") {
|
|
30330
|
-
return /* @__PURE__ */ jsx(VStack, { gap: "none", className: cn("w-full", className), children: steps.map((step, index) => /* @__PURE__ */ jsx(
|
|
30679
|
+
return /* @__PURE__ */ jsx(VStack, { gap: "none", className: cn("w-full", className), children: steps.map((step, index) => /* @__PURE__ */ jsx(React83__default.Fragment, { children: /* @__PURE__ */ jsxs(HStack, { gap: "md", align: "start", className: "w-full", children: [
|
|
30331
30680
|
/* @__PURE__ */ jsxs(VStack, { gap: "none", align: "center", children: [
|
|
30332
30681
|
/* @__PURE__ */ jsx(StepCircle, { step, index }),
|
|
30333
30682
|
showConnectors && index < steps.length - 1 && /* @__PURE__ */ jsx(Box, { className: "w-px h-8 bg-border" })
|
|
@@ -30338,7 +30687,7 @@ var init_StepFlow = __esm({
|
|
|
30338
30687
|
] })
|
|
30339
30688
|
] }) }, index)) });
|
|
30340
30689
|
}
|
|
30341
|
-
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(
|
|
30690
|
+
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(React83__default.Fragment, { children: [
|
|
30342
30691
|
/* @__PURE__ */ jsxs(VStack, { gap: "sm", align: "center", className: "flex-1 w-full md:w-auto", children: [
|
|
30343
30692
|
/* @__PURE__ */ jsx(StepCircle, { step, index }),
|
|
30344
30693
|
/* @__PURE__ */ jsx(Typography, { variant: "h4", className: "text-center", children: step.title }),
|
|
@@ -31314,7 +31663,7 @@ var init_LikertScale = __esm({
|
|
|
31314
31663
|
md: "text-base",
|
|
31315
31664
|
lg: "text-lg"
|
|
31316
31665
|
};
|
|
31317
|
-
LikertScale =
|
|
31666
|
+
LikertScale = React83__default.forwardRef(
|
|
31318
31667
|
({
|
|
31319
31668
|
question,
|
|
31320
31669
|
options = DEFAULT_LIKERT_OPTIONS,
|
|
@@ -31326,7 +31675,7 @@ var init_LikertScale = __esm({
|
|
|
31326
31675
|
variant = "radios",
|
|
31327
31676
|
className
|
|
31328
31677
|
}, ref) => {
|
|
31329
|
-
const groupId =
|
|
31678
|
+
const groupId = React83__default.useId();
|
|
31330
31679
|
const eventBus = useEventBus();
|
|
31331
31680
|
const handleSelect = useCallback(
|
|
31332
31681
|
(next) => {
|
|
@@ -32471,6 +32820,7 @@ function Editable({
|
|
|
32471
32820
|
function BlockRow({
|
|
32472
32821
|
block,
|
|
32473
32822
|
readOnly,
|
|
32823
|
+
showAffordances,
|
|
32474
32824
|
placeholder,
|
|
32475
32825
|
onUpdate,
|
|
32476
32826
|
onDelete,
|
|
@@ -32689,7 +33039,7 @@ function BlockRow({
|
|
|
32689
33039
|
onValueChange: (next) => setChildContent(child.id, next)
|
|
32690
33040
|
}
|
|
32691
33041
|
),
|
|
32692
|
-
!readOnly && /* @__PURE__ */ jsx(
|
|
33042
|
+
!readOnly && showAffordances && /* @__PURE__ */ jsx(
|
|
32693
33043
|
Button,
|
|
32694
33044
|
{
|
|
32695
33045
|
type: "button",
|
|
@@ -32704,7 +33054,7 @@ function BlockRow({
|
|
|
32704
33054
|
}
|
|
32705
33055
|
)
|
|
32706
33056
|
] }, child.id)),
|
|
32707
|
-
!readOnly && /* @__PURE__ */ jsx(Box, { as: "li", className: "list-none pl-0", children: /* @__PURE__ */ jsxs(
|
|
33057
|
+
!readOnly && showAffordances && /* @__PURE__ */ jsx(Box, { as: "li", className: "list-none pl-0", children: /* @__PURE__ */ jsxs(
|
|
32708
33058
|
Button,
|
|
32709
33059
|
{
|
|
32710
33060
|
type: "button",
|
|
@@ -32751,7 +33101,7 @@ function BlockRow({
|
|
|
32751
33101
|
"data-block-id": block.id,
|
|
32752
33102
|
"data-block-type": block.type,
|
|
32753
33103
|
children: [
|
|
32754
|
-
!readOnly && /* @__PURE__ */ jsxs(Box, { className: "flex w-12 shrink-0 items-center gap-0.5 pt-1", children: [
|
|
33104
|
+
!readOnly && showAffordances && /* @__PURE__ */ jsxs(Box, { className: "flex w-12 shrink-0 items-center gap-0.5 pt-1", children: [
|
|
32755
33105
|
/* @__PURE__ */ jsx(
|
|
32756
33106
|
Button,
|
|
32757
33107
|
{
|
|
@@ -32850,6 +33200,7 @@ var init_RichBlockEditor = __esm({
|
|
|
32850
33200
|
changeEvent,
|
|
32851
33201
|
readOnly = false,
|
|
32852
33202
|
placeholder,
|
|
33203
|
+
enableBlocks = false,
|
|
32853
33204
|
showToolbar = true,
|
|
32854
33205
|
className
|
|
32855
33206
|
}) => {
|
|
@@ -32921,7 +33272,7 @@ var init_RichBlockEditor = __esm({
|
|
|
32921
33272
|
padding: "none",
|
|
32922
33273
|
className: cn("flex flex-col", className),
|
|
32923
33274
|
children: [
|
|
32924
|
-
showToolbar && !readOnly && /* @__PURE__ */ jsx(
|
|
33275
|
+
enableBlocks && showToolbar && !readOnly && /* @__PURE__ */ jsx(
|
|
32925
33276
|
Box,
|
|
32926
33277
|
{
|
|
32927
33278
|
role: "toolbar",
|
|
@@ -32957,6 +33308,7 @@ var init_RichBlockEditor = __esm({
|
|
|
32957
33308
|
{
|
|
32958
33309
|
block,
|
|
32959
33310
|
readOnly,
|
|
33311
|
+
showAffordances: enableBlocks,
|
|
32960
33312
|
placeholder,
|
|
32961
33313
|
onUpdate: (updater) => handleUpdate(block.id, updater),
|
|
32962
33314
|
onDelete: () => handleDelete(block.id),
|
|
@@ -33631,7 +33983,7 @@ var init_DocBreadcrumb = __esm({
|
|
|
33631
33983
|
"aria-label": t("aria.breadcrumb"),
|
|
33632
33984
|
children: /* @__PURE__ */ jsx(HStack, { gap: "xs", align: "center", wrap: true, children: items.map((item, idx) => {
|
|
33633
33985
|
const isLast = idx === items.length - 1;
|
|
33634
|
-
return /* @__PURE__ */ jsxs(
|
|
33986
|
+
return /* @__PURE__ */ jsxs(React83__default.Fragment, { children: [
|
|
33635
33987
|
idx > 0 && /* @__PURE__ */ jsx(
|
|
33636
33988
|
Icon,
|
|
33637
33989
|
{
|
|
@@ -34242,7 +34594,7 @@ var init_GradientDivider = __esm({
|
|
|
34242
34594
|
});
|
|
34243
34595
|
var MarketingFooter;
|
|
34244
34596
|
var init_MarketingFooter = __esm({
|
|
34245
|
-
"components/
|
|
34597
|
+
"components/marketing/molecules/MarketingFooter.tsx"() {
|
|
34246
34598
|
"use client";
|
|
34247
34599
|
init_cn();
|
|
34248
34600
|
init_Box();
|
|
@@ -34312,7 +34664,7 @@ var init_MarketingFooter = __esm({
|
|
|
34312
34664
|
});
|
|
34313
34665
|
var PullQuote;
|
|
34314
34666
|
var init_PullQuote = __esm({
|
|
34315
|
-
"components/
|
|
34667
|
+
"components/marketing/molecules/PullQuote.tsx"() {
|
|
34316
34668
|
"use client";
|
|
34317
34669
|
init_cn();
|
|
34318
34670
|
init_Box();
|
|
@@ -34595,7 +34947,7 @@ var init_MiniStateMachine = __esm({
|
|
|
34595
34947
|
const x = 2 + i * (NODE_W + GAP2 + ARROW_W + GAP2);
|
|
34596
34948
|
const tc = transitionCounts[s.name] ?? 0;
|
|
34597
34949
|
const role = getStateRole(s.name, s.isInitial, s.isTerminal, tc, maxTC);
|
|
34598
|
-
return /* @__PURE__ */ jsxs(
|
|
34950
|
+
return /* @__PURE__ */ jsxs(React83__default.Fragment, { children: [
|
|
34599
34951
|
/* @__PURE__ */ jsx(
|
|
34600
34952
|
AvlState,
|
|
34601
34953
|
{
|
|
@@ -34799,7 +35151,7 @@ var init_PageHeader = __esm({
|
|
|
34799
35151
|
info: "bg-info/10 text-info"
|
|
34800
35152
|
};
|
|
34801
35153
|
return /* @__PURE__ */ jsxs(Box, { className: cn("mb-6", className), children: [
|
|
34802
|
-
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(
|
|
35154
|
+
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(React83__default.Fragment, { children: [
|
|
34803
35155
|
idx > 0 && /* @__PURE__ */ jsx(Typography, { variant: "small", color: "muted", children: "/" }),
|
|
34804
35156
|
crumb.href ? /* @__PURE__ */ jsx(
|
|
34805
35157
|
"a",
|
|
@@ -34908,7 +35260,7 @@ var init_FormSection = __esm({
|
|
|
34908
35260
|
columns = 1,
|
|
34909
35261
|
className
|
|
34910
35262
|
}) => {
|
|
34911
|
-
const [collapsed, setCollapsed] =
|
|
35263
|
+
const [collapsed, setCollapsed] = React83__default.useState(defaultCollapsed);
|
|
34912
35264
|
const { t } = useTranslate();
|
|
34913
35265
|
const eventBus = useEventBus();
|
|
34914
35266
|
const gridClass = {
|
|
@@ -34916,7 +35268,7 @@ var init_FormSection = __esm({
|
|
|
34916
35268
|
2: "grid-cols-1 md:grid-cols-2",
|
|
34917
35269
|
3: "grid-cols-1 md:grid-cols-2 lg:grid-cols-3"
|
|
34918
35270
|
}[columns];
|
|
34919
|
-
|
|
35271
|
+
React83__default.useCallback(() => {
|
|
34920
35272
|
if (collapsible) {
|
|
34921
35273
|
setCollapsed((prev) => !prev);
|
|
34922
35274
|
eventBus.emit("UI:TOGGLE_COLLAPSE", { collapsed: !collapsed });
|
|
@@ -35023,8 +35375,8 @@ function TextLikeControl({
|
|
|
35023
35375
|
onCommit
|
|
35024
35376
|
}) {
|
|
35025
35377
|
const initial = value === void 0 || value === null ? "" : String(value);
|
|
35026
|
-
const [draft, setDraft] =
|
|
35027
|
-
|
|
35378
|
+
const [draft, setDraft] = React83__default.useState(initial);
|
|
35379
|
+
React83__default.useEffect(() => setDraft(initial), [initial]);
|
|
35028
35380
|
const commit = () => {
|
|
35029
35381
|
if (numeric) {
|
|
35030
35382
|
const n = draft.trim() === "" ? 0 : Number(draft);
|
|
@@ -35050,10 +35402,23 @@ function FieldControl({
|
|
|
35050
35402
|
name,
|
|
35051
35403
|
decl,
|
|
35052
35404
|
value,
|
|
35053
|
-
onChange
|
|
35405
|
+
onChange,
|
|
35406
|
+
assets
|
|
35054
35407
|
}) {
|
|
35055
35408
|
let control;
|
|
35056
|
-
|
|
35409
|
+
const stringValue = typeof value === "string" ? value : void 0;
|
|
35410
|
+
if (decl.type === "icon") {
|
|
35411
|
+
control = /* @__PURE__ */ jsx(IconPicker, { value: stringValue, onChange: (icon) => onChange(name, icon) });
|
|
35412
|
+
} else if (decl.type === "asset") {
|
|
35413
|
+
control = /* @__PURE__ */ jsx(
|
|
35414
|
+
AssetPicker,
|
|
35415
|
+
{
|
|
35416
|
+
assets: assets ?? [],
|
|
35417
|
+
value: stringValue,
|
|
35418
|
+
onChange: (url) => onChange(name, url)
|
|
35419
|
+
}
|
|
35420
|
+
);
|
|
35421
|
+
} else if (decl.type === "boolean") {
|
|
35057
35422
|
control = /* @__PURE__ */ jsx(Switch, { checked: value === true, onChange: (c) => onChange(name, c) });
|
|
35058
35423
|
} else if (decl.type === "string" && decl.values !== void 0 && decl.values.length > 0) {
|
|
35059
35424
|
control = /* @__PURE__ */ jsx(
|
|
@@ -35092,6 +35457,8 @@ var init_PropertyInspector = __esm({
|
|
|
35092
35457
|
init_Select();
|
|
35093
35458
|
init_Input();
|
|
35094
35459
|
init_FormSection();
|
|
35460
|
+
init_IconPicker();
|
|
35461
|
+
init_AssetPicker();
|
|
35095
35462
|
TIER_ORDER = ["presentation", "domain", "policy", "infra", "internal"];
|
|
35096
35463
|
PropertyInspector = ({
|
|
35097
35464
|
config,
|
|
@@ -35099,7 +35466,8 @@ var init_PropertyInspector = __esm({
|
|
|
35099
35466
|
onChange,
|
|
35100
35467
|
onReset,
|
|
35101
35468
|
title,
|
|
35102
|
-
className
|
|
35469
|
+
className,
|
|
35470
|
+
assets
|
|
35103
35471
|
}) => {
|
|
35104
35472
|
const fields = Object.entries(config);
|
|
35105
35473
|
const byTier = /* @__PURE__ */ new Map();
|
|
@@ -35126,7 +35494,8 @@ var init_PropertyInspector = __esm({
|
|
|
35126
35494
|
name,
|
|
35127
35495
|
decl,
|
|
35128
35496
|
value: currentValue(decl, values?.[name]),
|
|
35129
|
-
onChange
|
|
35497
|
+
onChange,
|
|
35498
|
+
assets
|
|
35130
35499
|
},
|
|
35131
35500
|
name
|
|
35132
35501
|
)) }) }, tier))
|
|
@@ -35784,7 +36153,7 @@ var init_WizardContainer = __esm({
|
|
|
35784
36153
|
const isCompleted = index < currentStep;
|
|
35785
36154
|
const stepKey = step.id ?? step.tabId ?? `step-${index}`;
|
|
35786
36155
|
const stepTitle = step.title ?? step.name ?? `Step ${index + 1}`;
|
|
35787
|
-
return /* @__PURE__ */ jsxs(
|
|
36156
|
+
return /* @__PURE__ */ jsxs(React83__default.Fragment, { children: [
|
|
35788
36157
|
/* @__PURE__ */ jsx(
|
|
35789
36158
|
Button,
|
|
35790
36159
|
{
|
|
@@ -37034,6 +37403,9 @@ var init_molecules2 = __esm({
|
|
|
37034
37403
|
init_ViolationAlert();
|
|
37035
37404
|
init_FormSectionHeader();
|
|
37036
37405
|
init_FlipCard();
|
|
37406
|
+
init_GridPicker();
|
|
37407
|
+
init_AssetPicker();
|
|
37408
|
+
init_IconPicker();
|
|
37037
37409
|
init_DateRangePicker();
|
|
37038
37410
|
init_DateRangeSelector();
|
|
37039
37411
|
init_ChartLegend();
|
|
@@ -38228,7 +38600,7 @@ var init_DialogueBubble = __esm({
|
|
|
38228
38600
|
}
|
|
38229
38601
|
});
|
|
38230
38602
|
function extractTitle(children) {
|
|
38231
|
-
if (!
|
|
38603
|
+
if (!React83__default.isValidElement(children)) return void 0;
|
|
38232
38604
|
const props = children.props;
|
|
38233
38605
|
if (typeof props.title === "string") {
|
|
38234
38606
|
return props.title;
|
|
@@ -38340,7 +38712,7 @@ function LinearView({
|
|
|
38340
38712
|
/* @__PURE__ */ jsx(HStack, { className: "flex-wrap items-center", gap: "xs", children: trait.states.map((state, i) => {
|
|
38341
38713
|
const isDone = i < currentIdx;
|
|
38342
38714
|
const isCurrent = i === currentIdx;
|
|
38343
|
-
return /* @__PURE__ */ jsxs(
|
|
38715
|
+
return /* @__PURE__ */ jsxs(React83__default.Fragment, { children: [
|
|
38344
38716
|
i > 0 && /* @__PURE__ */ jsx(
|
|
38345
38717
|
Typography,
|
|
38346
38718
|
{
|
|
@@ -39050,7 +39422,7 @@ var init_FeatureDetailPageTemplate = __esm({
|
|
|
39050
39422
|
});
|
|
39051
39423
|
var FeatureGridOrganism;
|
|
39052
39424
|
var init_FeatureGridOrganism = __esm({
|
|
39053
|
-
"components/
|
|
39425
|
+
"components/marketing/organisms/FeatureGridOrganism.tsx"() {
|
|
39054
39426
|
"use client";
|
|
39055
39427
|
init_cn();
|
|
39056
39428
|
init_useEventBus();
|
|
@@ -39298,12 +39670,12 @@ var init_Form = __esm({
|
|
|
39298
39670
|
const isSchemaEntity = isOrbitalEntitySchema(entity);
|
|
39299
39671
|
const resolvedEntity = isSchemaEntity ? entity : void 0;
|
|
39300
39672
|
const entityName = typeof entity === "string" ? entity : resolvedEntity?.name;
|
|
39301
|
-
const normalizedInitialData =
|
|
39673
|
+
const normalizedInitialData = React83__default.useMemo(() => {
|
|
39302
39674
|
const entityRowAsInitial = isPlainEntityRow(entity) ? entity : void 0;
|
|
39303
39675
|
const callerInitial = initialData !== null && typeof initialData === "object" && !Array.isArray(initialData) ? initialData : {};
|
|
39304
39676
|
return entityRowAsInitial !== void 0 ? { ...entityRowAsInitial, ...callerInitial } : callerInitial;
|
|
39305
39677
|
}, [entity, initialData]);
|
|
39306
|
-
const entityDerivedFields =
|
|
39678
|
+
const entityDerivedFields = React83__default.useMemo(() => {
|
|
39307
39679
|
if (fields && fields.length > 0) return void 0;
|
|
39308
39680
|
if (!resolvedEntity) return void 0;
|
|
39309
39681
|
return resolvedEntity.fields.map(
|
|
@@ -39323,16 +39695,16 @@ var init_Form = __esm({
|
|
|
39323
39695
|
const conditionalFields = typeof conditionalFieldsRaw === "boolean" ? {} : conditionalFieldsRaw;
|
|
39324
39696
|
const hiddenCalculations = typeof hiddenCalculationsRaw === "boolean" ? [] : hiddenCalculationsRaw;
|
|
39325
39697
|
const violationTriggers = typeof violationTriggersRaw === "boolean" ? [] : violationTriggersRaw;
|
|
39326
|
-
const [formData, setFormData] =
|
|
39698
|
+
const [formData, setFormData] = React83__default.useState(
|
|
39327
39699
|
normalizedInitialData
|
|
39328
39700
|
);
|
|
39329
|
-
const [collapsedSections, setCollapsedSections] =
|
|
39701
|
+
const [collapsedSections, setCollapsedSections] = React83__default.useState(
|
|
39330
39702
|
/* @__PURE__ */ new Set()
|
|
39331
39703
|
);
|
|
39332
|
-
const [submitError, setSubmitError] =
|
|
39333
|
-
const formRef =
|
|
39704
|
+
const [submitError, setSubmitError] = React83__default.useState(null);
|
|
39705
|
+
const formRef = React83__default.useRef(null);
|
|
39334
39706
|
const formMode = props.mode;
|
|
39335
|
-
const mountedRef =
|
|
39707
|
+
const mountedRef = React83__default.useRef(false);
|
|
39336
39708
|
if (!mountedRef.current) {
|
|
39337
39709
|
mountedRef.current = true;
|
|
39338
39710
|
debug("forms", "mount", {
|
|
@@ -39345,7 +39717,7 @@ var init_Form = __esm({
|
|
|
39345
39717
|
});
|
|
39346
39718
|
}
|
|
39347
39719
|
const shouldShowCancel = showCancel ?? (fields && fields.length > 0);
|
|
39348
|
-
const evalContext =
|
|
39720
|
+
const evalContext = React83__default.useMemo(
|
|
39349
39721
|
() => ({
|
|
39350
39722
|
formValues: formData,
|
|
39351
39723
|
globalVariables: externalContext?.globalVariables ?? {},
|
|
@@ -39354,7 +39726,7 @@ var init_Form = __esm({
|
|
|
39354
39726
|
}),
|
|
39355
39727
|
[formData, externalContext]
|
|
39356
39728
|
);
|
|
39357
|
-
|
|
39729
|
+
React83__default.useEffect(() => {
|
|
39358
39730
|
debug("forms", "initialData-sync", {
|
|
39359
39731
|
mode: formMode,
|
|
39360
39732
|
normalizedInitialData,
|
|
@@ -39365,7 +39737,7 @@ var init_Form = __esm({
|
|
|
39365
39737
|
setFormData(normalizedInitialData);
|
|
39366
39738
|
}
|
|
39367
39739
|
}, [normalizedInitialData]);
|
|
39368
|
-
const processCalculations =
|
|
39740
|
+
const processCalculations = React83__default.useCallback(
|
|
39369
39741
|
(changedFieldId, newFormData) => {
|
|
39370
39742
|
if (!hiddenCalculations.length) return;
|
|
39371
39743
|
const context = {
|
|
@@ -39390,7 +39762,7 @@ var init_Form = __esm({
|
|
|
39390
39762
|
},
|
|
39391
39763
|
[hiddenCalculations, externalContext, eventBus]
|
|
39392
39764
|
);
|
|
39393
|
-
const checkViolations =
|
|
39765
|
+
const checkViolations = React83__default.useCallback(
|
|
39394
39766
|
(changedFieldId, newFormData) => {
|
|
39395
39767
|
if (!violationTriggers.length) return;
|
|
39396
39768
|
const context = {
|
|
@@ -39428,7 +39800,7 @@ var init_Form = __esm({
|
|
|
39428
39800
|
processCalculations(name, newFormData);
|
|
39429
39801
|
checkViolations(name, newFormData);
|
|
39430
39802
|
};
|
|
39431
|
-
const isFieldVisible =
|
|
39803
|
+
const isFieldVisible = React83__default.useCallback(
|
|
39432
39804
|
(fieldName) => {
|
|
39433
39805
|
const condition = conditionalFields[fieldName];
|
|
39434
39806
|
if (!condition) return true;
|
|
@@ -39436,7 +39808,7 @@ var init_Form = __esm({
|
|
|
39436
39808
|
},
|
|
39437
39809
|
[conditionalFields, evalContext]
|
|
39438
39810
|
);
|
|
39439
|
-
const isSectionVisible =
|
|
39811
|
+
const isSectionVisible = React83__default.useCallback(
|
|
39440
39812
|
(section) => {
|
|
39441
39813
|
if (!section.condition) return true;
|
|
39442
39814
|
return Boolean(evaluateFormExpression(section.condition, evalContext));
|
|
@@ -39512,7 +39884,7 @@ var init_Form = __esm({
|
|
|
39512
39884
|
eventBus.emit(`UI:${onCancel}`);
|
|
39513
39885
|
}
|
|
39514
39886
|
};
|
|
39515
|
-
const renderField =
|
|
39887
|
+
const renderField = React83__default.useCallback(
|
|
39516
39888
|
(field) => {
|
|
39517
39889
|
const fieldName = field.name || field.field;
|
|
39518
39890
|
if (!fieldName) return null;
|
|
@@ -39533,7 +39905,7 @@ var init_Form = __esm({
|
|
|
39533
39905
|
[formData, isFieldVisible, relationsData, relationsLoading, isLoading]
|
|
39534
39906
|
);
|
|
39535
39907
|
const effectiveFields = entityDerivedFields ?? fields;
|
|
39536
|
-
const normalizedFields =
|
|
39908
|
+
const normalizedFields = React83__default.useMemo(() => {
|
|
39537
39909
|
if (!effectiveFields || effectiveFields.length === 0) return [];
|
|
39538
39910
|
return effectiveFields.map((field) => {
|
|
39539
39911
|
if (typeof field === "string") {
|
|
@@ -39556,7 +39928,7 @@ var init_Form = __esm({
|
|
|
39556
39928
|
return field;
|
|
39557
39929
|
});
|
|
39558
39930
|
}, [effectiveFields, resolvedEntity]);
|
|
39559
|
-
const schemaFields =
|
|
39931
|
+
const schemaFields = React83__default.useMemo(() => {
|
|
39560
39932
|
if (normalizedFields.length === 0) return null;
|
|
39561
39933
|
if (isDebugEnabled()) {
|
|
39562
39934
|
debugGroup(`Form: ${entityName || "unknown"}`);
|
|
@@ -39566,7 +39938,7 @@ var init_Form = __esm({
|
|
|
39566
39938
|
}
|
|
39567
39939
|
return normalizedFields.map(renderField).filter(Boolean);
|
|
39568
39940
|
}, [normalizedFields, renderField, entityName, conditionalFields]);
|
|
39569
|
-
const sectionElements =
|
|
39941
|
+
const sectionElements = React83__default.useMemo(() => {
|
|
39570
39942
|
if (!sections || sections.length === 0) return null;
|
|
39571
39943
|
return sections.map((section) => {
|
|
39572
39944
|
if (!isSectionVisible(section)) {
|
|
@@ -40404,7 +40776,7 @@ var init_GenericAppTemplate = __esm({
|
|
|
40404
40776
|
});
|
|
40405
40777
|
var HeroOrganism, _HeroClickInterceptor;
|
|
40406
40778
|
var init_HeroOrganism = __esm({
|
|
40407
|
-
"components/
|
|
40779
|
+
"components/marketing/organisms/HeroOrganism.tsx"() {
|
|
40408
40780
|
"use client";
|
|
40409
40781
|
init_cn();
|
|
40410
40782
|
init_useEventBus();
|
|
@@ -40848,7 +41220,7 @@ var init_List = __esm({
|
|
|
40848
41220
|
if (entity && typeof entity === "object" && "id" in entity) return [entity];
|
|
40849
41221
|
return [];
|
|
40850
41222
|
}, [entity]);
|
|
40851
|
-
const getItemActions =
|
|
41223
|
+
const getItemActions = React83__default.useCallback(
|
|
40852
41224
|
(item) => {
|
|
40853
41225
|
if (!itemActions) return [];
|
|
40854
41226
|
if (typeof itemActions === "function") {
|
|
@@ -41324,7 +41696,7 @@ var init_MediaGallery = __esm({
|
|
|
41324
41696
|
[selectable, selectedItems, selectionEvent, eventBus]
|
|
41325
41697
|
);
|
|
41326
41698
|
const entityData = Array.isArray(entity) ? entity : [];
|
|
41327
|
-
const items =
|
|
41699
|
+
const items = React83__default.useMemo(() => {
|
|
41328
41700
|
if (propItems) return propItems;
|
|
41329
41701
|
if (entityData.length === 0) return [];
|
|
41330
41702
|
return entityData.map((record, idx) => ({
|
|
@@ -41494,9 +41866,9 @@ function MiniMap({
|
|
|
41494
41866
|
viewportRect,
|
|
41495
41867
|
className
|
|
41496
41868
|
}) {
|
|
41497
|
-
const canvasRef =
|
|
41498
|
-
const frameRef =
|
|
41499
|
-
|
|
41869
|
+
const canvasRef = React83.useRef(null);
|
|
41870
|
+
const frameRef = React83.useRef(0);
|
|
41871
|
+
React83.useEffect(() => {
|
|
41500
41872
|
const canvas = canvasRef.current;
|
|
41501
41873
|
if (!canvas) return;
|
|
41502
41874
|
const ctx = canvas.getContext("2d");
|
|
@@ -41578,7 +41950,7 @@ var init_MiniMap = __esm({
|
|
|
41578
41950
|
}
|
|
41579
41951
|
});
|
|
41580
41952
|
function extractTitle2(children) {
|
|
41581
|
-
if (!
|
|
41953
|
+
if (!React83__default.isValidElement(children)) return void 0;
|
|
41582
41954
|
const props = children.props;
|
|
41583
41955
|
if (typeof props.title === "string") {
|
|
41584
41956
|
return props.title;
|
|
@@ -42035,7 +42407,7 @@ var init_debugRegistry = __esm({
|
|
|
42035
42407
|
}
|
|
42036
42408
|
});
|
|
42037
42409
|
function useDebugData() {
|
|
42038
|
-
const [data, setData] =
|
|
42410
|
+
const [data, setData] = React83.useState(() => ({
|
|
42039
42411
|
traits: [],
|
|
42040
42412
|
ticks: [],
|
|
42041
42413
|
guards: [],
|
|
@@ -42049,7 +42421,7 @@ function useDebugData() {
|
|
|
42049
42421
|
},
|
|
42050
42422
|
lastUpdate: Date.now()
|
|
42051
42423
|
}));
|
|
42052
|
-
|
|
42424
|
+
React83.useEffect(() => {
|
|
42053
42425
|
const updateData = () => {
|
|
42054
42426
|
setData({
|
|
42055
42427
|
traits: getAllTraits(),
|
|
@@ -42158,12 +42530,12 @@ function layoutGraph(states, transitions, initialState, width, height) {
|
|
|
42158
42530
|
return positions;
|
|
42159
42531
|
}
|
|
42160
42532
|
function WalkMinimap() {
|
|
42161
|
-
const [walkStep, setWalkStep] =
|
|
42162
|
-
const [traits2, setTraits] =
|
|
42163
|
-
const [coveredEdges, setCoveredEdges] =
|
|
42164
|
-
const [completedTraits, setCompletedTraits] =
|
|
42165
|
-
const prevTraitRef =
|
|
42166
|
-
|
|
42533
|
+
const [walkStep, setWalkStep] = React83.useState(null);
|
|
42534
|
+
const [traits2, setTraits] = React83.useState([]);
|
|
42535
|
+
const [coveredEdges, setCoveredEdges] = React83.useState([]);
|
|
42536
|
+
const [completedTraits, setCompletedTraits] = React83.useState(/* @__PURE__ */ new Set());
|
|
42537
|
+
const prevTraitRef = React83.useRef(null);
|
|
42538
|
+
React83.useEffect(() => {
|
|
42167
42539
|
const interval = setInterval(() => {
|
|
42168
42540
|
const w = window;
|
|
42169
42541
|
const step = w.__orbitalWalkStep;
|
|
@@ -42599,15 +42971,15 @@ var init_EntitiesTab = __esm({
|
|
|
42599
42971
|
});
|
|
42600
42972
|
function EventFlowTab({ events: events2 }) {
|
|
42601
42973
|
const { t } = useTranslate();
|
|
42602
|
-
const [filter, setFilter] =
|
|
42603
|
-
const containerRef =
|
|
42604
|
-
const [autoScroll, setAutoScroll] =
|
|
42605
|
-
|
|
42974
|
+
const [filter, setFilter] = React83.useState("all");
|
|
42975
|
+
const containerRef = React83.useRef(null);
|
|
42976
|
+
const [autoScroll, setAutoScroll] = React83.useState(true);
|
|
42977
|
+
React83.useEffect(() => {
|
|
42606
42978
|
if (autoScroll && containerRef.current) {
|
|
42607
42979
|
containerRef.current.scrollTop = containerRef.current.scrollHeight;
|
|
42608
42980
|
}
|
|
42609
42981
|
}, [events2.length, autoScroll]);
|
|
42610
|
-
const filteredEvents =
|
|
42982
|
+
const filteredEvents = React83.useMemo(() => {
|
|
42611
42983
|
if (filter === "all") return events2;
|
|
42612
42984
|
return events2.filter((e) => e.type === filter);
|
|
42613
42985
|
}, [events2, filter]);
|
|
@@ -42723,7 +43095,7 @@ var init_EventFlowTab = __esm({
|
|
|
42723
43095
|
});
|
|
42724
43096
|
function GuardsPanel({ guards }) {
|
|
42725
43097
|
const { t } = useTranslate();
|
|
42726
|
-
const [filter, setFilter] =
|
|
43098
|
+
const [filter, setFilter] = React83.useState("all");
|
|
42727
43099
|
if (guards.length === 0) {
|
|
42728
43100
|
return /* @__PURE__ */ jsx(
|
|
42729
43101
|
EmptyState,
|
|
@@ -42736,7 +43108,7 @@ function GuardsPanel({ guards }) {
|
|
|
42736
43108
|
}
|
|
42737
43109
|
const passedCount = guards.filter((g) => g.result).length;
|
|
42738
43110
|
const failedCount = guards.length - passedCount;
|
|
42739
|
-
const filteredGuards =
|
|
43111
|
+
const filteredGuards = React83.useMemo(() => {
|
|
42740
43112
|
if (filter === "all") return guards;
|
|
42741
43113
|
if (filter === "passed") return guards.filter((g) => g.result);
|
|
42742
43114
|
return guards.filter((g) => !g.result);
|
|
@@ -42899,10 +43271,10 @@ function EffectBadge({ effect }) {
|
|
|
42899
43271
|
}
|
|
42900
43272
|
function TransitionTimeline({ transitions }) {
|
|
42901
43273
|
const { t } = useTranslate();
|
|
42902
|
-
const containerRef =
|
|
42903
|
-
const [autoScroll, setAutoScroll] =
|
|
42904
|
-
const [expandedId, setExpandedId] =
|
|
42905
|
-
|
|
43274
|
+
const containerRef = React83.useRef(null);
|
|
43275
|
+
const [autoScroll, setAutoScroll] = React83.useState(true);
|
|
43276
|
+
const [expandedId, setExpandedId] = React83.useState(null);
|
|
43277
|
+
React83.useEffect(() => {
|
|
42906
43278
|
if (autoScroll && containerRef.current) {
|
|
42907
43279
|
containerRef.current.scrollTop = containerRef.current.scrollHeight;
|
|
42908
43280
|
}
|
|
@@ -43182,9 +43554,9 @@ function getAllEvents(traits2) {
|
|
|
43182
43554
|
function EventDispatcherTab({ traits: traits2, schema }) {
|
|
43183
43555
|
const eventBus = useEventBus();
|
|
43184
43556
|
const { t } = useTranslate();
|
|
43185
|
-
const [log8, setLog] =
|
|
43186
|
-
const prevStatesRef =
|
|
43187
|
-
|
|
43557
|
+
const [log8, setLog] = React83.useState([]);
|
|
43558
|
+
const prevStatesRef = React83.useRef(/* @__PURE__ */ new Map());
|
|
43559
|
+
React83.useEffect(() => {
|
|
43188
43560
|
for (const trait of traits2) {
|
|
43189
43561
|
const prev = prevStatesRef.current.get(trait.id);
|
|
43190
43562
|
if (prev && prev !== trait.currentState) {
|
|
@@ -43353,10 +43725,10 @@ function VerifyModePanel({
|
|
|
43353
43725
|
localCount
|
|
43354
43726
|
}) {
|
|
43355
43727
|
const { t } = useTranslate();
|
|
43356
|
-
const [expanded, setExpanded] =
|
|
43357
|
-
const scrollRef =
|
|
43358
|
-
const prevCountRef =
|
|
43359
|
-
|
|
43728
|
+
const [expanded, setExpanded] = React83.useState(true);
|
|
43729
|
+
const scrollRef = React83.useRef(null);
|
|
43730
|
+
const prevCountRef = React83.useRef(0);
|
|
43731
|
+
React83.useEffect(() => {
|
|
43360
43732
|
if (expanded && transitions.length > prevCountRef.current && scrollRef.current) {
|
|
43361
43733
|
scrollRef.current.scrollTop = scrollRef.current.scrollHeight;
|
|
43362
43734
|
}
|
|
@@ -43413,10 +43785,10 @@ function RuntimeDebugger({
|
|
|
43413
43785
|
schema
|
|
43414
43786
|
}) {
|
|
43415
43787
|
const { t } = useTranslate();
|
|
43416
|
-
const [isCollapsed, setIsCollapsed] =
|
|
43417
|
-
const [isVisible, setIsVisible] =
|
|
43788
|
+
const [isCollapsed, setIsCollapsed] = React83.useState(mode === "verify" ? true : defaultCollapsed);
|
|
43789
|
+
const [isVisible, setIsVisible] = React83.useState(mode === "inline" || mode === "verify" || isDebugEnabled2());
|
|
43418
43790
|
const debugData = useDebugData();
|
|
43419
|
-
|
|
43791
|
+
React83.useEffect(() => {
|
|
43420
43792
|
if (mode === "inline") return;
|
|
43421
43793
|
return onDebugToggle((enabled) => {
|
|
43422
43794
|
setIsVisible(enabled);
|
|
@@ -43425,7 +43797,7 @@ function RuntimeDebugger({
|
|
|
43425
43797
|
}
|
|
43426
43798
|
});
|
|
43427
43799
|
}, [mode]);
|
|
43428
|
-
|
|
43800
|
+
React83.useEffect(() => {
|
|
43429
43801
|
if (mode === "inline") return;
|
|
43430
43802
|
const handleKeyDown = (e) => {
|
|
43431
43803
|
if (e.key === "`" && isVisible) {
|
|
@@ -43440,7 +43812,7 @@ function RuntimeDebugger({
|
|
|
43440
43812
|
if (!isVisible) {
|
|
43441
43813
|
return null;
|
|
43442
43814
|
}
|
|
43443
|
-
const
|
|
43815
|
+
const positionClasses = {
|
|
43444
43816
|
"bottom-right": "bottom-4 right-4",
|
|
43445
43817
|
"bottom-left": "bottom-4 left-4",
|
|
43446
43818
|
"top-right": "top-4 right-4",
|
|
@@ -43569,7 +43941,7 @@ function RuntimeDebugger({
|
|
|
43569
43941
|
className: cn(
|
|
43570
43942
|
"runtime-debugger",
|
|
43571
43943
|
"fixed",
|
|
43572
|
-
|
|
43944
|
+
positionClasses[position],
|
|
43573
43945
|
isCollapsed ? "runtime-debugger--collapsed" : "runtime-debugger--expanded",
|
|
43574
43946
|
className
|
|
43575
43947
|
),
|
|
@@ -43874,7 +44246,7 @@ function SequenceBar({
|
|
|
43874
44246
|
onSlotRemove(index);
|
|
43875
44247
|
}, [onSlotRemove, playing]);
|
|
43876
44248
|
const paddedSlots = Array.from({ length: maxSlots }, (_, i) => slots[i]);
|
|
43877
|
-
return /* @__PURE__ */ jsx(HStack, { className: cn("items-center", className), gap: "sm", children: paddedSlots.map((slot, i) => /* @__PURE__ */ jsxs(
|
|
44249
|
+
return /* @__PURE__ */ jsx(HStack, { className: cn("items-center", className), gap: "sm", children: paddedSlots.map((slot, i) => /* @__PURE__ */ jsxs(React83__default.Fragment, { children: [
|
|
43878
44250
|
i > 0 && /* @__PURE__ */ jsx(
|
|
43879
44251
|
Typography,
|
|
43880
44252
|
{
|
|
@@ -44150,7 +44522,7 @@ var init_SequencerBoard = __esm({
|
|
|
44150
44522
|
});
|
|
44151
44523
|
var ShowcaseOrganism;
|
|
44152
44524
|
var init_ShowcaseOrganism = __esm({
|
|
44153
|
-
"components/
|
|
44525
|
+
"components/marketing/organisms/ShowcaseOrganism.tsx"() {
|
|
44154
44526
|
"use client";
|
|
44155
44527
|
init_cn();
|
|
44156
44528
|
init_useEventBus();
|
|
@@ -44964,7 +45336,7 @@ var init_StatCard = __esm({
|
|
|
44964
45336
|
const labelToUse = propLabel ?? propTitle;
|
|
44965
45337
|
const eventBus = useEventBus();
|
|
44966
45338
|
const { t } = useTranslate();
|
|
44967
|
-
const handleActionClick =
|
|
45339
|
+
const handleActionClick = React83__default.useCallback(() => {
|
|
44968
45340
|
if (action?.event) {
|
|
44969
45341
|
eventBus.emit(`UI:${action.event}`, {});
|
|
44970
45342
|
}
|
|
@@ -44975,7 +45347,7 @@ var init_StatCard = __esm({
|
|
|
44975
45347
|
const data = Array.isArray(entity) ? entity : entity ? [entity] : [];
|
|
44976
45348
|
const isLoading = externalLoading ?? false;
|
|
44977
45349
|
const error = externalError;
|
|
44978
|
-
const computeMetricValue =
|
|
45350
|
+
const computeMetricValue = React83__default.useCallback(
|
|
44979
45351
|
(metric, items) => {
|
|
44980
45352
|
if (metric.value !== void 0) {
|
|
44981
45353
|
return metric.value;
|
|
@@ -45014,7 +45386,7 @@ var init_StatCard = __esm({
|
|
|
45014
45386
|
},
|
|
45015
45387
|
[]
|
|
45016
45388
|
);
|
|
45017
|
-
const schemaStats =
|
|
45389
|
+
const schemaStats = React83__default.useMemo(() => {
|
|
45018
45390
|
if (!metrics || metrics.length === 0) return null;
|
|
45019
45391
|
return metrics.map((metric) => ({
|
|
45020
45392
|
label: metric.label,
|
|
@@ -45022,7 +45394,7 @@ var init_StatCard = __esm({
|
|
|
45022
45394
|
format: metric.format
|
|
45023
45395
|
}));
|
|
45024
45396
|
}, [metrics, data, computeMetricValue]);
|
|
45025
|
-
const calculatedTrend =
|
|
45397
|
+
const calculatedTrend = React83__default.useMemo(() => {
|
|
45026
45398
|
if (manualTrend !== void 0) return manualTrend;
|
|
45027
45399
|
if (previousValue === void 0 || currentValue2 === void 0)
|
|
45028
45400
|
return void 0;
|
|
@@ -45757,7 +46129,7 @@ var init_StatusEffect = __esm({
|
|
|
45757
46129
|
});
|
|
45758
46130
|
var StepFlowOrganism;
|
|
45759
46131
|
var init_StepFlowOrganism = __esm({
|
|
45760
|
-
"components/
|
|
46132
|
+
"components/marketing/organisms/StepFlowOrganism.tsx"() {
|
|
45761
46133
|
"use client";
|
|
45762
46134
|
init_cn();
|
|
45763
46135
|
init_Stack();
|
|
@@ -46027,7 +46399,7 @@ var init_Timeline = __esm({
|
|
|
46027
46399
|
}) => {
|
|
46028
46400
|
const { t } = useTranslate();
|
|
46029
46401
|
const entityData = Array.isArray(entity) ? entity : [];
|
|
46030
|
-
const items =
|
|
46402
|
+
const items = React83__default.useMemo(() => {
|
|
46031
46403
|
if (propItems) return propItems;
|
|
46032
46404
|
if (entityData.length === 0) return [];
|
|
46033
46405
|
return entityData.map((record, idx) => {
|
|
@@ -46184,7 +46556,7 @@ var init_TimerDisplay = __esm({
|
|
|
46184
46556
|
}
|
|
46185
46557
|
});
|
|
46186
46558
|
function extractToastProps(children) {
|
|
46187
|
-
if (!
|
|
46559
|
+
if (!React83__default.isValidElement(children)) {
|
|
46188
46560
|
if (typeof children === "string") {
|
|
46189
46561
|
return { message: children };
|
|
46190
46562
|
}
|
|
@@ -46222,7 +46594,7 @@ var init_ToastSlot = __esm({
|
|
|
46222
46594
|
eventBus.emit("UI:CLOSE");
|
|
46223
46595
|
};
|
|
46224
46596
|
if (!isVisible) return null;
|
|
46225
|
-
const isCustomContent =
|
|
46597
|
+
const isCustomContent = React83__default.isValidElement(children) && !message;
|
|
46226
46598
|
return /* @__PURE__ */ jsx(Box, { className: "fixed bottom-4 right-4 z-50", children: isCustomContent ? children : /* @__PURE__ */ jsx(
|
|
46227
46599
|
Toast,
|
|
46228
46600
|
{
|
|
@@ -46742,13 +47114,22 @@ function XPBar({
|
|
|
46742
47114
|
}) {
|
|
46743
47115
|
const sizes = sizeMap18[size];
|
|
46744
47116
|
const percentage = max > 0 ? Math.max(0, Math.min(100, current / max * 100)) : 0;
|
|
47117
|
+
const [fillWidth, setFillWidth] = React83.useState(animated ? 0 : percentage);
|
|
47118
|
+
React83.useEffect(() => {
|
|
47119
|
+
if (!animated) {
|
|
47120
|
+
setFillWidth(percentage);
|
|
47121
|
+
return;
|
|
47122
|
+
}
|
|
47123
|
+
const frame = requestAnimationFrame(() => setFillWidth(percentage));
|
|
47124
|
+
return () => cancelAnimationFrame(frame);
|
|
47125
|
+
}, [animated, percentage]);
|
|
46745
47126
|
return /* @__PURE__ */ jsxs("div", { className: cn("flex items-center gap-2", className), children: [
|
|
46746
47127
|
level != null && /* @__PURE__ */ jsxs(
|
|
46747
47128
|
"span",
|
|
46748
47129
|
{
|
|
46749
47130
|
className: cn(
|
|
46750
47131
|
"flex-shrink-0 rounded-interactive font-bold",
|
|
46751
|
-
"bg-accent text-foreground border border-accent",
|
|
47132
|
+
"bg-accent text-accent-foreground border border-accent",
|
|
46752
47133
|
sizes.badge
|
|
46753
47134
|
),
|
|
46754
47135
|
children: [
|
|
@@ -46773,7 +47154,7 @@ function XPBar({
|
|
|
46773
47154
|
"bg-gradient-to-r from-accent to-info",
|
|
46774
47155
|
animated && "transition-all duration-500 ease-out"
|
|
46775
47156
|
),
|
|
46776
|
-
style: { width: `${
|
|
47157
|
+
style: { width: `${fillWidth}%` }
|
|
46777
47158
|
}
|
|
46778
47159
|
)
|
|
46779
47160
|
}
|
|
@@ -46790,6 +47171,7 @@ function XPBar({
|
|
|
46790
47171
|
var sizeMap18;
|
|
46791
47172
|
var init_XPBar = __esm({
|
|
46792
47173
|
"components/game/atoms/XPBar.tsx"() {
|
|
47174
|
+
"use client";
|
|
46793
47175
|
init_cn();
|
|
46794
47176
|
sizeMap18 = {
|
|
46795
47177
|
sm: { bar: "h-2", text: "text-xs", badge: "text-xs px-1.5 py-0.5" },
|
|
@@ -46800,12 +47182,12 @@ var init_XPBar = __esm({
|
|
|
46800
47182
|
}
|
|
46801
47183
|
});
|
|
46802
47184
|
function lazyThree(name, loader) {
|
|
46803
|
-
const Lazy =
|
|
47185
|
+
const Lazy = React83__default.lazy(() => loader().then((m) => ({ default: m[name] })));
|
|
46804
47186
|
function ThreeWrapper(props) {
|
|
46805
|
-
return
|
|
46806
|
-
|
|
47187
|
+
return React83__default.createElement(
|
|
47188
|
+
React83__default.Suspense,
|
|
46807
47189
|
{ fallback: null },
|
|
46808
|
-
|
|
47190
|
+
React83__default.createElement(Lazy, props)
|
|
46809
47191
|
);
|
|
46810
47192
|
}
|
|
46811
47193
|
ThreeWrapper.displayName = `Lazy(${name})`;
|
|
@@ -46825,6 +47207,7 @@ var init_component_registry_generated = __esm({
|
|
|
46825
47207
|
init_AnimatedReveal();
|
|
46826
47208
|
init_ArticleSection();
|
|
46827
47209
|
init_Aside();
|
|
47210
|
+
init_AssetPicker();
|
|
46828
47211
|
init_AuthLayout();
|
|
46829
47212
|
init_BattleBoard();
|
|
46830
47213
|
init_BattleTemplate();
|
|
@@ -46924,11 +47307,13 @@ var init_component_registry_generated = __esm({
|
|
|
46924
47307
|
init_GradientDivider();
|
|
46925
47308
|
init_GraphCanvas();
|
|
46926
47309
|
init_GraphView();
|
|
47310
|
+
init_GridPicker();
|
|
46927
47311
|
init_Header();
|
|
46928
47312
|
init_HealthBar();
|
|
46929
47313
|
init_HealthPanel();
|
|
46930
47314
|
init_HeroOrganism();
|
|
46931
47315
|
init_HeroSection();
|
|
47316
|
+
init_IconPicker();
|
|
46932
47317
|
init_InfiniteScrollSentinel();
|
|
46933
47318
|
init_InputGroup();
|
|
46934
47319
|
init_InstallBox();
|
|
@@ -46973,6 +47358,7 @@ var init_component_registry_generated = __esm({
|
|
|
46973
47358
|
init_PricingOrganism();
|
|
46974
47359
|
init_PricingPageTemplate();
|
|
46975
47360
|
init_ProgressDots();
|
|
47361
|
+
init_PropertyInspector();
|
|
46976
47362
|
init_PullQuote();
|
|
46977
47363
|
init_PullToRefresh();
|
|
46978
47364
|
init_QrScanner();
|
|
@@ -47096,6 +47482,7 @@ var init_component_registry_generated = __esm({
|
|
|
47096
47482
|
"AnimatedReveal": AnimatedReveal,
|
|
47097
47483
|
"ArticleSection": ArticleSection,
|
|
47098
47484
|
"Aside": Aside,
|
|
47485
|
+
"AssetPicker": AssetPicker,
|
|
47099
47486
|
"AuthLayout": AuthLayout,
|
|
47100
47487
|
"Avatar": AvatarPattern,
|
|
47101
47488
|
"AvatarPattern": AvatarPattern,
|
|
@@ -47215,6 +47602,7 @@ var init_component_registry_generated = __esm({
|
|
|
47215
47602
|
"GraphView": GraphView,
|
|
47216
47603
|
"Grid": GridPattern,
|
|
47217
47604
|
"GridPattern": GridPattern,
|
|
47605
|
+
"GridPicker": GridPicker,
|
|
47218
47606
|
"HStack": HStackPattern,
|
|
47219
47607
|
"HStackPattern": HStackPattern,
|
|
47220
47608
|
"Header": Header,
|
|
@@ -47224,6 +47612,7 @@ var init_component_registry_generated = __esm({
|
|
|
47224
47612
|
"HeroSection": HeroSection,
|
|
47225
47613
|
"Icon": IconPattern,
|
|
47226
47614
|
"IconPattern": IconPattern,
|
|
47615
|
+
"IconPicker": IconPicker,
|
|
47227
47616
|
"InfiniteScrollSentinel": InfiniteScrollSentinel,
|
|
47228
47617
|
"Input": InputPattern,
|
|
47229
47618
|
"InputGroup": InputGroup,
|
|
@@ -47280,6 +47669,7 @@ var init_component_registry_generated = __esm({
|
|
|
47280
47669
|
"ProgressBar": ProgressBarPattern,
|
|
47281
47670
|
"ProgressBarPattern": ProgressBarPattern,
|
|
47282
47671
|
"ProgressDots": ProgressDots,
|
|
47672
|
+
"PropertyInspector": PropertyInspector,
|
|
47283
47673
|
"PullQuote": PullQuote,
|
|
47284
47674
|
"PullToRefresh": PullToRefresh,
|
|
47285
47675
|
"QrScanner": QrScanner,
|
|
@@ -47421,7 +47811,7 @@ function SuspenseConfigProvider({
|
|
|
47421
47811
|
config,
|
|
47422
47812
|
children
|
|
47423
47813
|
}) {
|
|
47424
|
-
return
|
|
47814
|
+
return React83__default.createElement(
|
|
47425
47815
|
SuspenseConfigContext.Provider,
|
|
47426
47816
|
{ value: config },
|
|
47427
47817
|
children
|
|
@@ -47496,6 +47886,9 @@ function renderContainedPortal(t, slot, content, onDismiss) {
|
|
|
47496
47886
|
const slotId = `slot-${slot}`;
|
|
47497
47887
|
switch (slot) {
|
|
47498
47888
|
case "modal":
|
|
47889
|
+
if (SELF_OVERLAY_PATTERNS.has(content.pattern)) {
|
|
47890
|
+
return /* @__PURE__ */ jsx(Box, { id: slotId, className: "contents", children: slotContent });
|
|
47891
|
+
}
|
|
47499
47892
|
return /* @__PURE__ */ jsx(
|
|
47500
47893
|
Box,
|
|
47501
47894
|
{
|
|
@@ -47757,8 +48150,8 @@ function CompiledPortal({ slot, className, pattern, sourceTrait, children }) {
|
|
|
47757
48150
|
const slotId = `slot-${slot}`;
|
|
47758
48151
|
let wrapper;
|
|
47759
48152
|
switch (slot) {
|
|
47760
|
-
case "modal":
|
|
47761
|
-
|
|
48153
|
+
case "modal": {
|
|
48154
|
+
const innerContent = /* @__PURE__ */ jsx(
|
|
47762
48155
|
Box,
|
|
47763
48156
|
{
|
|
47764
48157
|
id: slotId,
|
|
@@ -47767,8 +48160,10 @@ function CompiledPortal({ slot, className, pattern, sourceTrait, children }) {
|
|
|
47767
48160
|
"data-source-trait": sourceTrait,
|
|
47768
48161
|
children
|
|
47769
48162
|
}
|
|
47770
|
-
)
|
|
48163
|
+
);
|
|
48164
|
+
wrapper = pattern !== void 0 && SELF_OVERLAY_PATTERNS.has(pattern) ? innerContent : /* @__PURE__ */ jsx(Modal, { isOpen: true, onClose: handleDismiss, showCloseButton: true, size: "lg", children: innerContent });
|
|
47771
48165
|
break;
|
|
48166
|
+
}
|
|
47772
48167
|
case "drawer":
|
|
47773
48168
|
wrapper = /* @__PURE__ */ jsx(Drawer, { isOpen: true, onClose: handleDismiss, position: "right", children: /* @__PURE__ */ jsx(
|
|
47774
48169
|
Box,
|
|
@@ -47826,7 +48221,7 @@ function SlotPortal({
|
|
|
47826
48221
|
let wrapper;
|
|
47827
48222
|
switch (slot) {
|
|
47828
48223
|
case "modal":
|
|
47829
|
-
wrapper = /* @__PURE__ */ jsx(
|
|
48224
|
+
wrapper = SELF_OVERLAY_PATTERNS.has(content.pattern) ? /* @__PURE__ */ jsx(Box, { id: slotId, children: slotContent }) : /* @__PURE__ */ jsx(
|
|
47830
48225
|
Modal,
|
|
47831
48226
|
{
|
|
47832
48227
|
isOpen: true,
|
|
@@ -47906,7 +48301,7 @@ function renderPatternChildren(children, onDismiss, parentId = "root", parentPat
|
|
|
47906
48301
|
const key = `${parentId}-${index}-trait:${traitName}`;
|
|
47907
48302
|
return /* @__PURE__ */ jsx(TraitFrame, { traitName }, key);
|
|
47908
48303
|
}
|
|
47909
|
-
return /* @__PURE__ */ jsx(
|
|
48304
|
+
return /* @__PURE__ */ jsx(React83__default.Fragment, { children: child }, `${parentId}-${index}`);
|
|
47910
48305
|
}
|
|
47911
48306
|
if (!child || typeof child !== "object") return null;
|
|
47912
48307
|
const childId = `${parentId}-${index}`;
|
|
@@ -47946,14 +48341,14 @@ function isPatternConfig(value) {
|
|
|
47946
48341
|
if (value === null || value === void 0) return false;
|
|
47947
48342
|
if (typeof value !== "object") return false;
|
|
47948
48343
|
if (Array.isArray(value)) return false;
|
|
47949
|
-
if (
|
|
48344
|
+
if (React83__default.isValidElement(value)) return false;
|
|
47950
48345
|
if (value instanceof Date) return false;
|
|
47951
48346
|
if (typeof value === "function") return false;
|
|
47952
48347
|
const record = value;
|
|
47953
48348
|
return "type" in record && typeof record.type === "string";
|
|
47954
48349
|
}
|
|
47955
48350
|
function isPlainConfigObject(value) {
|
|
47956
|
-
if (
|
|
48351
|
+
if (React83__default.isValidElement(value)) return false;
|
|
47957
48352
|
if (value instanceof Date) return false;
|
|
47958
48353
|
const proto = Object.getPrototypeOf(value);
|
|
47959
48354
|
return proto === Object.prototype || proto === null;
|
|
@@ -48206,7 +48601,7 @@ function UISlotRenderer({
|
|
|
48206
48601
|
}
|
|
48207
48602
|
return wrapped;
|
|
48208
48603
|
}
|
|
48209
|
-
var scopeWrapLog, TRAIT_BINDING_RE, SuspenseConfigContext, SlotContainedContext, SLOT_SKELETON_MAP, FORM_PATTERNS, PATTERNS_WITH_CHILDREN;
|
|
48604
|
+
var scopeWrapLog, TRAIT_BINDING_RE, SuspenseConfigContext, SlotContainedContext, SLOT_SKELETON_MAP, FORM_PATTERNS, SELF_OVERLAY_PATTERNS, PATTERNS_WITH_CHILDREN;
|
|
48210
48605
|
var init_UISlotRenderer = __esm({
|
|
48211
48606
|
"components/core/organisms/UISlotRenderer.tsx"() {
|
|
48212
48607
|
"use client";
|
|
@@ -48242,6 +48637,7 @@ var init_UISlotRenderer = __esm({
|
|
|
48242
48637
|
"inline-edit-form",
|
|
48243
48638
|
"wizard-step"
|
|
48244
48639
|
]);
|
|
48640
|
+
SELF_OVERLAY_PATTERNS = /* @__PURE__ */ new Set(["modal", "confirm-dialog"]);
|
|
48245
48641
|
PATTERNS_WITH_CHILDREN = /* @__PURE__ */ new Set([
|
|
48246
48642
|
"stack",
|
|
48247
48643
|
"vstack",
|
|
@@ -49563,4 +49959,4 @@ init_AboutPageTemplate();
|
|
|
49563
49959
|
// components/index.ts
|
|
49564
49960
|
init_cn();
|
|
49565
49961
|
|
|
49566
|
-
export { ALL_PRESETS, 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, Coachmark, CodeBlock, CodeView, CodeViewer, CollapsibleSection, CombatLog, ComboCounter, CommunityLinks, ConditionalWrapper, ConfettiEffect, ConfirmDialog, Container, ContentRenderer, ContentSection, ControlButton, CounterTemplate, CraftingRecipe, DEFAULT_LIKERT_OPTIONS, DEFAULT_MATRIX_COLUMNS, 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, 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, MarketingFooter, MarketingStatCard, MasterDetail, MasterDetailLayout, MatrixQuestion, MediaGallery, Menu, Meter, MiniMap, Modal, ModalSlot, ModuleCard, Navigation, NegotiatorBoard, NotifyListener, NumberStepper, ObjectRulePanel, OnboardingSpotlight, OptionConstraintGroup, StateMachineView as OrbitalStateMachineView, OrbitalVisualization, Overlay, PageHeader, Pagination, PatternTile, PhysicsManager, PlatformerCanvas, Popover, PositionedCanvas, PowerupSlots, PricingCard, PricingGrid, PricingOrganism, PricingPageTemplate, ProgressBar, ProgressDots, PropertyInspector, 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, TableView, Tabs, TagCloud, TagInput, 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, cn, combatAnimations, combatClasses, combatEffects, createInitialGameState, createUnitAnimationState, drawSprite, generateCombatMessage, getCurrentFrame, getTileDimensions, inferDirection, isoToScreen, mapBookData, pendulum, projectileMotion, resolveFieldMap, resolveFrame, resolveSheetDirection, screenToIso, springOscillator, tickAnimationState, transitionAnimation, useAnchorRect, useBattleState, useCamera, useGameAudio, useGameAudioContext, useImageCache, usePhysics2D, useSpriteAnimations };
|
|
49962
|
+
export { ALL_PRESETS, AR_BOOK_FIELDS, AboutPageTemplate, Accordion, ActionButton, ActionButtons, Card2 as ActionCard, ActionPalette, ActionTile, Alert, AnimatedCounter, AnimatedGraphic, AnimatedReveal, ArticleSection, Aside, AssetPicker, 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, Coachmark, CodeBlock, CodeView, CodeViewer, CollapsibleSection, CombatLog, ComboCounter, CommunityLinks, ConditionalWrapper, ConfettiEffect, ConfirmDialog, Container, ContentRenderer, ContentSection, ControlButton, CounterTemplate, CraftingRecipe, DEFAULT_LIKERT_OPTIONS, DEFAULT_MATRIX_COLUMNS, 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, GridPicker, HStack, Header, Heading, HealthBar, HealthPanel, HeroOrganism, HeroSection, IDENTITY_BOOK_FIELDS, Icon, IconPicker, InfiniteScrollSentinel, Input, InputGroup, InstallBox, InventoryGrid, InventoryPanel, IsometricCanvas, ItemSlot, JazariStateMachine, Label, LandingPageTemplate, LawReferenceTooltip, Lightbox, LikertScale, LineChart2 as LineChart, List3 as List, LoadingState, MapView, MarkdownContent, MarketingFooter, MarketingStatCard, MasterDetail, MasterDetailLayout, MatrixQuestion, MediaGallery, Menu, Meter, MiniMap, Modal, ModalSlot, ModuleCard, Navigation, NegotiatorBoard, NotifyListener, NumberStepper, ObjectRulePanel, OnboardingSpotlight, OptionConstraintGroup, StateMachineView as OrbitalStateMachineView, OrbitalVisualization, Overlay, PageHeader, Pagination, PatternTile, PhysicsManager, PlatformerCanvas, Popover, PositionedCanvas, PowerupSlots, PricingCard, PricingGrid, PricingOrganism, PricingPageTemplate, ProgressBar, ProgressDots, PropertyInspector, 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, TableView, Tabs, TagCloud, TagInput, 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, cn, combatAnimations, combatClasses, combatEffects, createInitialGameState, createUnitAnimationState, drawSprite, generateCombatMessage, getCurrentFrame, getTileDimensions, inferDirection, isoToScreen, mapBookData, pendulum, projectileMotion, resolveFieldMap, resolveFrame, resolveSheetDirection, screenToIso, springOscillator, tickAnimationState, transitionAnimation, useAnchorRect, useBattleState, useCamera, useGameAudio, useGameAudioContext, useImageCache, usePhysics2D, useSpriteAnimations };
|