@almadar/ui 5.131.0 → 5.132.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 +236 -156
- package/dist/avl/index.js +236 -156
- package/dist/components/index.cjs +238 -156
- package/dist/components/index.d.cts +1 -1
- package/dist/components/index.d.ts +1 -1
- package/dist/components/index.js +239 -158
- package/dist/hooks/index.cjs +16 -0
- package/dist/hooks/index.d.cts +10 -1
- package/dist/hooks/index.d.ts +10 -1
- package/dist/hooks/index.js +16 -1
- package/dist/marketing/index.cjs +2 -0
- package/dist/marketing/index.js +2 -0
- package/dist/providers/index.cjs +236 -156
- package/dist/providers/index.js +236 -156
- package/dist/runtime/index.cjs +236 -156
- package/dist/runtime/index.js +236 -156
- package/package.json +3 -3
package/dist/components/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
2
2
|
import * as React74 from 'react';
|
|
3
|
-
import React74__default, { createContext, useContext, useMemo, useRef, useEffect, useCallback, useState, useLayoutEffect, Suspense,
|
|
3
|
+
import React74__default, { createContext, useContext, useMemo, useRef, useEffect, useCallback, useState, useLayoutEffect, Suspense, useSyncExternalStore, lazy, useId } from 'react';
|
|
4
4
|
import { clsx } from 'clsx';
|
|
5
5
|
import { twMerge } from 'tailwind-merge';
|
|
6
6
|
import { EventBusContext, useTraitScopeChain, useCurrentPagePath, useGameAudioContextOptional, useEntitySchemaOptional, TraitScopeProvider } from '@almadar/ui/providers';
|
|
@@ -2535,6 +2535,8 @@ var init_Badge = __esm({
|
|
|
2535
2535
|
};
|
|
2536
2536
|
const iconPx = size === "lg" ? 20 : 16;
|
|
2537
2537
|
const resolvedIcon = iconAsset?.url ? /* @__PURE__ */ jsx(AtlasImage, { asset: iconAsset, size: iconPx, alt: iconAsset.name ?? iconAsset.category ?? "", className: "flex-shrink-0" }) : typeof icon === "string" ? /* @__PURE__ */ jsx(Icon, { name: icon, className: iconSizes3[size] }) : icon ? /* @__PURE__ */ jsx(Icon, { icon, className: iconSizes3[size] }) : null;
|
|
2538
|
+
const hasText = Boolean(children) || amount != null || label !== void 0 && label !== null && label !== "";
|
|
2539
|
+
if (!hasText && !resolvedIcon && !onRemove) return null;
|
|
2538
2540
|
return /* @__PURE__ */ jsxs(
|
|
2539
2541
|
"span",
|
|
2540
2542
|
{
|
|
@@ -4631,11 +4633,13 @@ var init_TrendIndicator = __esm({
|
|
|
4631
4633
|
size = "md",
|
|
4632
4634
|
...props
|
|
4633
4635
|
}, ref) => {
|
|
4634
|
-
const
|
|
4636
|
+
const hasValue = typeof value === "number" && Number.isFinite(value);
|
|
4637
|
+
if (!hasValue && !direction) return null;
|
|
4638
|
+
const dir = resolveDirection(hasValue ? value : void 0, direction);
|
|
4635
4639
|
const colorClass = resolveColor(dir, invert);
|
|
4636
4640
|
const iconName = iconNameMap[dir];
|
|
4637
4641
|
const styles = sizeStyles6[size];
|
|
4638
|
-
const formattedValue =
|
|
4642
|
+
const formattedValue = hasValue ? `${value > 0 ? "+" : ""}${value}%` : void 0;
|
|
4639
4643
|
const ariaLabel = label ?? (formattedValue ? `${dir} ${formattedValue}` : dir);
|
|
4640
4644
|
return /* @__PURE__ */ jsxs(
|
|
4641
4645
|
"span",
|
|
@@ -13657,26 +13661,19 @@ var init_BookViewer = __esm({
|
|
|
13657
13661
|
function BoxPattern({
|
|
13658
13662
|
p,
|
|
13659
13663
|
m,
|
|
13660
|
-
|
|
13661
|
-
|
|
13662
|
-
|
|
13663
|
-
|
|
13664
|
-
|
|
13665
|
-
style,
|
|
13666
|
-
children
|
|
13664
|
+
radius,
|
|
13665
|
+
isLoading: _isLoading,
|
|
13666
|
+
error: _error,
|
|
13667
|
+
entity: _entity,
|
|
13668
|
+
...boxProps
|
|
13667
13669
|
}) {
|
|
13668
13670
|
return /* @__PURE__ */ jsx(
|
|
13669
13671
|
Box,
|
|
13670
13672
|
{
|
|
13671
|
-
padding: p,
|
|
13672
|
-
margin: m,
|
|
13673
|
-
|
|
13674
|
-
|
|
13675
|
-
rounded: radius,
|
|
13676
|
-
shadow,
|
|
13677
|
-
className,
|
|
13678
|
-
style,
|
|
13679
|
-
children
|
|
13673
|
+
padding: boxProps.padding ?? p,
|
|
13674
|
+
margin: boxProps.margin ?? m,
|
|
13675
|
+
rounded: boxProps.rounded ?? radius,
|
|
13676
|
+
...boxProps
|
|
13680
13677
|
}
|
|
13681
13678
|
);
|
|
13682
13679
|
}
|
|
@@ -19331,17 +19328,19 @@ var init_DashboardLayout = __esm({
|
|
|
19331
19328
|
const [sidebarOpen, setSidebarOpen] = useState(false);
|
|
19332
19329
|
const [userMenuOpen, setUserMenuOpen] = useState(false);
|
|
19333
19330
|
const layoutRef = useRef(null);
|
|
19334
|
-
const [
|
|
19331
|
+
const [layoutWidth, setLayoutWidth] = useState(null);
|
|
19335
19332
|
useEffect(() => {
|
|
19336
19333
|
const el = layoutRef.current;
|
|
19337
19334
|
if (!el || typeof ResizeObserver === "undefined") return;
|
|
19338
19335
|
const ro = new ResizeObserver((entries) => {
|
|
19339
19336
|
const w = entries[0]?.contentRect.width ?? el.clientWidth;
|
|
19340
|
-
|
|
19337
|
+
setLayoutWidth(w);
|
|
19341
19338
|
});
|
|
19342
19339
|
ro.observe(el);
|
|
19343
19340
|
return () => ro.disconnect();
|
|
19344
19341
|
}, []);
|
|
19342
|
+
const isMobile = layoutWidth !== null && layoutWidth < 768;
|
|
19343
|
+
const isRail = layoutWidth !== null && layoutWidth >= 768 && layoutWidth < 1024;
|
|
19345
19344
|
useEffect(() => {
|
|
19346
19345
|
if (!isMobile && sidebarOpen) setSidebarOpen(false);
|
|
19347
19346
|
}, [isMobile, sidebarOpen]);
|
|
@@ -19378,7 +19377,8 @@ var init_DashboardLayout = __esm({
|
|
|
19378
19377
|
{
|
|
19379
19378
|
as: "aside",
|
|
19380
19379
|
className: cn(
|
|
19381
|
-
"z-30
|
|
19380
|
+
"z-30 flex-shrink-0 bg-card dark:bg-card border-r border-border dark:border-border",
|
|
19381
|
+
isRail ? "w-16" : "w-64",
|
|
19382
19382
|
"flex flex-col"
|
|
19383
19383
|
),
|
|
19384
19384
|
style: isMobile ? {
|
|
@@ -19394,10 +19394,10 @@ var init_DashboardLayout = __esm({
|
|
|
19394
19394
|
HStack,
|
|
19395
19395
|
{
|
|
19396
19396
|
align: "center",
|
|
19397
|
-
justify: "between",
|
|
19398
|
-
className: "h-16
|
|
19397
|
+
justify: isRail ? "center" : "between",
|
|
19398
|
+
className: cn("h-16 border-b border-border dark:border-border", isRail ? "px-2" : "px-4"),
|
|
19399
19399
|
children: [
|
|
19400
|
-
/* @__PURE__ */ jsxs(Link, { to: "/", className: "flex items-center gap-2", children: [
|
|
19400
|
+
/* @__PURE__ */ jsxs(Link, { to: "/", className: "flex items-center gap-2", title: isRail ? appName : void 0, children: [
|
|
19401
19401
|
logo || /* @__PURE__ */ jsx(Box, { className: "w-8 h-8 bg-primary rounded-lg flex items-center justify-center", children: /* @__PURE__ */ jsx(
|
|
19402
19402
|
Typography,
|
|
19403
19403
|
{
|
|
@@ -19407,7 +19407,7 @@ var init_DashboardLayout = __esm({
|
|
|
19407
19407
|
children: appName.charAt(0).toUpperCase()
|
|
19408
19408
|
}
|
|
19409
19409
|
) }),
|
|
19410
|
-
/* @__PURE__ */ jsx(
|
|
19410
|
+
!isRail && /* @__PURE__ */ jsx(
|
|
19411
19411
|
Typography,
|
|
19412
19412
|
{
|
|
19413
19413
|
variant: "label",
|
|
@@ -19434,12 +19434,13 @@ var init_DashboardLayout = __esm({
|
|
|
19434
19434
|
{
|
|
19435
19435
|
as: "nav",
|
|
19436
19436
|
gap: "none",
|
|
19437
|
-
className: "flex-1
|
|
19437
|
+
className: cn("flex-1 py-4 space-y-1 overflow-y-auto", isRail ? "px-2" : "px-3"),
|
|
19438
19438
|
children: navItems.map((item) => /* @__PURE__ */ jsx(
|
|
19439
19439
|
NavLink,
|
|
19440
19440
|
{
|
|
19441
19441
|
item,
|
|
19442
|
-
currentPath: activePath
|
|
19442
|
+
currentPath: activePath,
|
|
19443
|
+
compact: isRail
|
|
19443
19444
|
},
|
|
19444
19445
|
item.href
|
|
19445
19446
|
))
|
|
@@ -19694,13 +19695,40 @@ var init_DashboardLayout = __esm({
|
|
|
19694
19695
|
DashboardLayout.displayName = "DashboardLayout";
|
|
19695
19696
|
NavLink = ({
|
|
19696
19697
|
item,
|
|
19697
|
-
currentPath
|
|
19698
|
+
currentPath,
|
|
19699
|
+
compact = false
|
|
19698
19700
|
}) => {
|
|
19699
19701
|
const isActive = currentPath === item.href || currentPath.startsWith(item.href + "/");
|
|
19700
19702
|
const iconClassName = cn(
|
|
19701
19703
|
"h-5 w-5",
|
|
19702
19704
|
isActive ? "text-primary-foreground" : "text-muted-foreground"
|
|
19703
19705
|
);
|
|
19706
|
+
if (compact) {
|
|
19707
|
+
return /* @__PURE__ */ jsx(
|
|
19708
|
+
Link,
|
|
19709
|
+
{
|
|
19710
|
+
to: item.href,
|
|
19711
|
+
title: item.label,
|
|
19712
|
+
"aria-label": item.label,
|
|
19713
|
+
className: cn(
|
|
19714
|
+
"flex items-center justify-center px-2 py-2 rounded-lg transition-colors",
|
|
19715
|
+
isActive ? "bg-primary text-primary-foreground shadow-sm" : "text-muted-foreground hover:bg-muted hover:text-foreground"
|
|
19716
|
+
),
|
|
19717
|
+
children: /* @__PURE__ */ jsxs(Box, { as: "span", className: "relative inline-flex", children: [
|
|
19718
|
+
item.icon ? typeof item.icon === "string" ? /* @__PURE__ */ jsx(Icon, { name: item.icon, className: iconClassName }) : /* @__PURE__ */ jsx(item.icon, { className: iconClassName }) : /* @__PURE__ */ jsx(Typography, { variant: "small", className: "font-semibold", as: "span", children: item.label.charAt(0).toUpperCase() }),
|
|
19719
|
+
item.badge && /* @__PURE__ */ jsx(
|
|
19720
|
+
Badge,
|
|
19721
|
+
{
|
|
19722
|
+
variant: isActive ? "primary" : "default",
|
|
19723
|
+
size: "sm",
|
|
19724
|
+
className: "absolute -top-2 -right-2 px-1 py-0 text-[10px] leading-4",
|
|
19725
|
+
children: item.badge
|
|
19726
|
+
}
|
|
19727
|
+
)
|
|
19728
|
+
] })
|
|
19729
|
+
}
|
|
19730
|
+
);
|
|
19731
|
+
}
|
|
19704
19732
|
return /* @__PURE__ */ jsxs(
|
|
19705
19733
|
Link,
|
|
19706
19734
|
{
|
|
@@ -20766,40 +20794,55 @@ function DataGrid({
|
|
|
20766
20794
|
{
|
|
20767
20795
|
"data-entity-row": true,
|
|
20768
20796
|
"data-entity-id": id,
|
|
20769
|
-
className: cn(isSelected && "ring-2 ring-primary rounded-lg"),
|
|
20797
|
+
className: cn("relative group/rowactions", isSelected && "ring-2 ring-primary rounded-lg"),
|
|
20770
20798
|
children: [
|
|
20771
20799
|
children(itemData, index),
|
|
20772
|
-
actionDefs.length > 0 && /* @__PURE__ */
|
|
20773
|
-
|
|
20774
|
-
|
|
20775
|
-
|
|
20776
|
-
|
|
20777
|
-
|
|
20778
|
-
|
|
20779
|
-
|
|
20780
|
-
|
|
20781
|
-
|
|
20782
|
-
|
|
20783
|
-
|
|
20784
|
-
|
|
20785
|
-
|
|
20786
|
-
|
|
20787
|
-
|
|
20788
|
-
|
|
20789
|
-
|
|
20800
|
+
actionDefs.length > 0 && /* @__PURE__ */ jsxs(Box, { className: "absolute top-2 right-2 z-10 opacity-0 group-hover/rowactions:opacity-100 focus-within:opacity-100 [@media(pointer:coarse)]:opacity-100 transition-opacity duration-fast", children: [
|
|
20801
|
+
/* @__PURE__ */ jsxs(HStack, { gap: "xs", className: "rounded-md border border-border bg-card/95 backdrop-blur-sm shadow-sm p-0.5 [@media(pointer:coarse)]:hidden", children: [
|
|
20802
|
+
(maxInlineActions != null ? actionDefs.slice(0, maxInlineActions) : actionDefs).map((action, idx) => /* @__PURE__ */ jsxs(
|
|
20803
|
+
Button,
|
|
20804
|
+
{
|
|
20805
|
+
variant: action.variant === "primary" ? "primary" : "ghost",
|
|
20806
|
+
size: "sm",
|
|
20807
|
+
onClick: handleActionClick(action, itemData),
|
|
20808
|
+
"data-testid": `action-${action.event}`,
|
|
20809
|
+
"data-row-id": String(itemData.id),
|
|
20810
|
+
className: action.variant === "danger" ? "text-error hover:text-error hover:bg-error/10" : void 0,
|
|
20811
|
+
children: [
|
|
20812
|
+
action.icon && renderIconInput(action.icon, { size: "xs", className: "mr-1" }),
|
|
20813
|
+
action.label
|
|
20814
|
+
]
|
|
20815
|
+
},
|
|
20816
|
+
idx
|
|
20817
|
+
)),
|
|
20818
|
+
maxInlineActions != null && actionDefs.length > maxInlineActions && /* @__PURE__ */ jsx(
|
|
20819
|
+
Menu,
|
|
20820
|
+
{
|
|
20821
|
+
position: "bottom-end",
|
|
20822
|
+
trigger: /* @__PURE__ */ jsx(Button, { variant: "ghost", size: "sm", "aria-label": t("common.actions"), "data-testid": "action-overflow", children: /* @__PURE__ */ jsx(Icon, { name: "more-horizontal", size: "xs" }) }),
|
|
20823
|
+
items: actionDefs.slice(maxInlineActions).map((action) => ({
|
|
20824
|
+
label: action.label,
|
|
20825
|
+
icon: action.icon,
|
|
20826
|
+
event: action.event,
|
|
20827
|
+
onClick: () => fireAction(action, itemData)
|
|
20828
|
+
}))
|
|
20829
|
+
}
|
|
20830
|
+
)
|
|
20831
|
+
] }),
|
|
20832
|
+
/* @__PURE__ */ jsx(Box, { className: "hidden [@media(pointer:coarse)]:block rounded-md border border-border bg-card/95 backdrop-blur-sm shadow-sm p-0.5", children: /* @__PURE__ */ jsx(
|
|
20790
20833
|
Menu,
|
|
20791
20834
|
{
|
|
20792
20835
|
position: "bottom-end",
|
|
20793
20836
|
trigger: /* @__PURE__ */ jsx(Button, { variant: "ghost", size: "sm", "aria-label": t("common.actions"), "data-testid": "action-overflow", children: /* @__PURE__ */ jsx(Icon, { name: "more-horizontal", size: "xs" }) }),
|
|
20794
|
-
items: actionDefs.
|
|
20837
|
+
items: actionDefs.map((action) => ({
|
|
20795
20838
|
label: action.label,
|
|
20796
20839
|
icon: action.icon,
|
|
20797
20840
|
event: action.event,
|
|
20798
20841
|
onClick: () => fireAction(action, itemData)
|
|
20799
20842
|
}))
|
|
20800
20843
|
}
|
|
20801
|
-
)
|
|
20802
|
-
] })
|
|
20844
|
+
) })
|
|
20845
|
+
] })
|
|
20803
20846
|
]
|
|
20804
20847
|
},
|
|
20805
20848
|
id
|
|
@@ -20835,7 +20878,7 @@ function DataGrid({
|
|
|
20835
20878
|
}
|
|
20836
20879
|
) });
|
|
20837
20880
|
})(),
|
|
20838
|
-
/* @__PURE__ */ jsx(Box, { className: "p-4 pb-0", children: /* @__PURE__ */ jsxs(HStack, { gap: "sm", className: "justify-between items-start", children: [
|
|
20881
|
+
/* @__PURE__ */ jsx(Box, { className: cn("p-4", bodyFields.length > 0 && "pb-0"), children: /* @__PURE__ */ jsxs(HStack, { gap: "sm", className: "justify-between items-start", children: [
|
|
20839
20882
|
selectable && /* @__PURE__ */ jsx(
|
|
20840
20883
|
"input",
|
|
20841
20884
|
{
|
|
@@ -20868,78 +20911,77 @@ function DataGrid({
|
|
|
20868
20911
|
] }, field.name);
|
|
20869
20912
|
}) })
|
|
20870
20913
|
] }),
|
|
20871
|
-
dangerActions.length > 0 && /* @__PURE__ */
|
|
20872
|
-
|
|
20873
|
-
|
|
20874
|
-
|
|
20875
|
-
|
|
20876
|
-
|
|
20877
|
-
|
|
20878
|
-
|
|
20879
|
-
|
|
20880
|
-
|
|
20881
|
-
|
|
20882
|
-
|
|
20883
|
-
|
|
20884
|
-
|
|
20885
|
-
|
|
20886
|
-
|
|
20887
|
-
|
|
20888
|
-
|
|
20889
|
-
|
|
20890
|
-
|
|
20891
|
-
|
|
20892
|
-
/* @__PURE__ */ jsxs(HStack, { gap: "xs", className: "items-center", children: [
|
|
20893
|
-
field.icon && renderIconInput(field.icon, { size: "xs", className: "text-muted-foreground" }),
|
|
20894
|
-
/* @__PURE__ */ jsx(Typography, { variant: "caption", color: "secondary", children: field.label ?? fieldLabel2(field.name) })
|
|
20895
|
-
] }),
|
|
20896
|
-
/* @__PURE__ */ jsx(Badge, { variant: value ? "success" : "neutral", children: value ? t("common.yes") || "Yes" : t("common.no") || "No" })
|
|
20897
|
-
] }, field.name);
|
|
20898
|
-
}
|
|
20899
|
-
return /* @__PURE__ */ jsxs(HStack, { gap: "sm", className: "justify-between items-center", children: [
|
|
20900
|
-
/* @__PURE__ */ jsxs(HStack, { gap: "xs", className: "items-center", children: [
|
|
20901
|
-
field.icon && renderIconInput(field.icon, { size: "xs", className: "text-muted-foreground" }),
|
|
20902
|
-
/* @__PURE__ */ jsx(Typography, { variant: "caption", color: "secondary", children: field.label ?? fieldLabel2(field.name) })
|
|
20903
|
-
] }),
|
|
20904
|
-
/* @__PURE__ */ jsx(
|
|
20905
|
-
Typography,
|
|
20914
|
+
(primaryActions.length > 0 || dangerActions.length > 0) && /* @__PURE__ */ jsxs(HStack, { gap: "xs", className: "flex-shrink-0", children: [
|
|
20915
|
+
(maxInlineActions != null ? primaryActions.slice(0, maxInlineActions) : primaryActions).map((action, idx) => /* @__PURE__ */ jsx(
|
|
20916
|
+
Button,
|
|
20917
|
+
{
|
|
20918
|
+
variant: action.variant === "primary" ? "primary" : "ghost",
|
|
20919
|
+
size: "sm",
|
|
20920
|
+
onClick: handleActionClick(action, itemData),
|
|
20921
|
+
"data-testid": `action-${action.event}`,
|
|
20922
|
+
"data-row-id": String(itemData.id),
|
|
20923
|
+
"aria-label": action.label,
|
|
20924
|
+
title: action.label,
|
|
20925
|
+
className: cn(
|
|
20926
|
+
action.variant === "primary" ? void 0 : "text-muted-foreground hover:text-foreground",
|
|
20927
|
+
action.icon && "px-2"
|
|
20928
|
+
),
|
|
20929
|
+
children: action.icon ? renderIconInput(action.icon, { size: "xs" }) : action.label
|
|
20930
|
+
},
|
|
20931
|
+
idx
|
|
20932
|
+
)),
|
|
20933
|
+
maxInlineActions != null && primaryActions.length > maxInlineActions && /* @__PURE__ */ jsx(
|
|
20934
|
+
Menu,
|
|
20906
20935
|
{
|
|
20907
|
-
|
|
20908
|
-
|
|
20909
|
-
|
|
20936
|
+
position: "bottom-end",
|
|
20937
|
+
trigger: /* @__PURE__ */ jsx(Button, { variant: "ghost", size: "sm", "aria-label": t("common.actions"), "data-testid": "action-overflow", children: /* @__PURE__ */ jsx(Icon, { name: "more-horizontal", size: "xs" }) }),
|
|
20938
|
+
items: primaryActions.slice(maxInlineActions).map((action) => ({
|
|
20939
|
+
label: action.label,
|
|
20940
|
+
icon: action.icon,
|
|
20941
|
+
event: action.event,
|
|
20942
|
+
onClick: () => fireAction(action, itemData)
|
|
20943
|
+
}))
|
|
20910
20944
|
}
|
|
20911
|
-
)
|
|
20912
|
-
|
|
20913
|
-
|
|
20914
|
-
|
|
20915
|
-
|
|
20916
|
-
|
|
20917
|
-
|
|
20918
|
-
|
|
20919
|
-
|
|
20920
|
-
|
|
20921
|
-
|
|
20922
|
-
|
|
20923
|
-
|
|
20924
|
-
|
|
20925
|
-
|
|
20926
|
-
|
|
20927
|
-
|
|
20928
|
-
|
|
20929
|
-
|
|
20930
|
-
|
|
20931
|
-
|
|
20932
|
-
|
|
20933
|
-
|
|
20934
|
-
|
|
20935
|
-
|
|
20936
|
-
|
|
20937
|
-
|
|
20938
|
-
|
|
20939
|
-
|
|
20940
|
-
|
|
20945
|
+
),
|
|
20946
|
+
dangerActions.map((action, idx) => /* @__PURE__ */ jsx(
|
|
20947
|
+
Button,
|
|
20948
|
+
{
|
|
20949
|
+
variant: "ghost",
|
|
20950
|
+
size: "sm",
|
|
20951
|
+
onClick: handleActionClick(action, itemData),
|
|
20952
|
+
"data-testid": `action-${action.event}`,
|
|
20953
|
+
"data-row-id": String(itemData.id),
|
|
20954
|
+
"aria-label": action.label,
|
|
20955
|
+
title: action.label,
|
|
20956
|
+
className: "text-error hover:text-error hover:bg-error/10 px-2",
|
|
20957
|
+
children: action.icon ? renderIconInput(action.icon, { size: "xs" }) : action.label
|
|
20958
|
+
},
|
|
20959
|
+
`danger-${idx}`
|
|
20960
|
+
))
|
|
20961
|
+
] })
|
|
20962
|
+
] }) }),
|
|
20963
|
+
bodyFields.length > 0 && /* @__PURE__ */ jsx(Box, { className: "px-4 pt-2 pb-4 flex-1", children: /* @__PURE__ */ jsxs(VStack, { gap: "xs", children: [
|
|
20964
|
+
bodyFields.filter((f3) => f3.variant === "caption" && f3.format !== "boolean").map((field) => {
|
|
20965
|
+
const value = getNestedValue(itemData, field.name);
|
|
20966
|
+
if (value === void 0 || value === null || value === "") return null;
|
|
20967
|
+
return /* @__PURE__ */ jsx(Typography, { variant: "small", color: "secondary", className: "line-clamp-2", children: formatValue(value, field.format) }, field.name);
|
|
20968
|
+
}),
|
|
20969
|
+
/* @__PURE__ */ jsx(HStack, { gap: "md", className: "flex-wrap gap-y-1", children: bodyFields.filter((f3) => f3.variant !== "caption" || f3.format === "boolean").map((field) => {
|
|
20970
|
+
const value = getNestedValue(itemData, field.name);
|
|
20971
|
+
if (value === void 0 || value === null || value === "") return null;
|
|
20972
|
+
if (field.format === "boolean") {
|
|
20973
|
+
return /* @__PURE__ */ jsxs(HStack, { gap: "xs", className: "items-center", children: [
|
|
20974
|
+
field.icon && renderIconInput(field.icon, { size: "xs", className: "text-muted-foreground" }),
|
|
20975
|
+
/* @__PURE__ */ jsx(Typography, { variant: "caption", color: "secondary", children: field.label ?? fieldLabel2(field.name) }),
|
|
20976
|
+
/* @__PURE__ */ jsx(Badge, { variant: value ? "success" : "neutral", children: value ? t("common.yes") || "Yes" : t("common.no") || "No" })
|
|
20977
|
+
] }, field.name);
|
|
20941
20978
|
}
|
|
20942
|
-
|
|
20979
|
+
return /* @__PURE__ */ jsxs(HStack, { gap: "xs", className: "items-center", children: [
|
|
20980
|
+
field.icon && renderIconInput(field.icon, { size: "xs", className: "text-muted-foreground" }),
|
|
20981
|
+
/* @__PURE__ */ jsx(Typography, { variant: "caption", color: "secondary", children: (field.label ?? fieldLabel2(field.name)) + ":" }),
|
|
20982
|
+
/* @__PURE__ */ jsx(Typography, { variant: "small", children: formatValue(value, field.format) })
|
|
20983
|
+
] }, field.name);
|
|
20984
|
+
}) })
|
|
20943
20985
|
] }) })
|
|
20944
20986
|
]
|
|
20945
20987
|
},
|
|
@@ -21287,11 +21329,29 @@ function DataList({
|
|
|
21287
21329
|
const wrapDnd = (node) => dnd.isZone ? /* @__PURE__ */ jsx(dnd.SortableItem, { id: dndId, children: node }, dndId) : node;
|
|
21288
21330
|
if (hasRenderProp) {
|
|
21289
21331
|
const id2 = itemData.id || String(index);
|
|
21332
|
+
const actions = renderItemActions(itemData);
|
|
21290
21333
|
return wrapDnd(
|
|
21291
|
-
/* @__PURE__ */ jsxs(Box, { "data-entity-row": true, "data-entity-id": id2, onClick: itemClickEvent ? handleRowClick(itemData) : void 0, className: cn(itemClickEvent && "cursor-pointer"), children: [
|
|
21292
|
-
|
|
21293
|
-
|
|
21294
|
-
|
|
21334
|
+
/* @__PURE__ */ jsxs(Box, { "data-entity-row": true, "data-entity-id": id2, onClick: itemClickEvent ? handleRowClick(itemData) : void 0, className: cn("relative group/rowactions", itemClickEvent && "cursor-pointer"), children: [
|
|
21335
|
+
children(itemData, index),
|
|
21336
|
+
actions && /* @__PURE__ */ jsxs(Box, { className: "absolute top-2 right-2 z-10 opacity-0 group-hover/rowactions:opacity-100 focus-within:opacity-100 [@media(pointer:coarse)]:opacity-100 transition-opacity duration-fast", children: [
|
|
21337
|
+
/* @__PURE__ */ jsx(Box, { className: "rounded-md border border-border bg-card/95 backdrop-blur-sm shadow-sm p-0.5 [@media(pointer:coarse)]:hidden", children: actions }),
|
|
21338
|
+
/* @__PURE__ */ jsx(Box, { className: "hidden [@media(pointer:coarse)]:block rounded-md border border-border bg-card/95 backdrop-blur-sm shadow-sm p-0.5", children: /* @__PURE__ */ jsx(
|
|
21339
|
+
Menu,
|
|
21340
|
+
{
|
|
21341
|
+
position: "bottom-end",
|
|
21342
|
+
trigger: /* @__PURE__ */ jsx(Button, { variant: "ghost", size: "sm", "aria-label": t("common.actions"), "data-testid": "action-overflow", children: /* @__PURE__ */ jsx(Icon, { name: "more-horizontal", size: "xs" }) }),
|
|
21343
|
+
items: (itemActions ?? []).map((action) => ({
|
|
21344
|
+
label: action.label,
|
|
21345
|
+
icon: action.icon,
|
|
21346
|
+
event: action.event,
|
|
21347
|
+
variant: action.variant === "danger" ? "danger" : "default",
|
|
21348
|
+
onClick: () => eventBus.emit(`UI:${action.event}`, {
|
|
21349
|
+
id: itemData.id,
|
|
21350
|
+
row: itemData
|
|
21351
|
+
})
|
|
21352
|
+
}))
|
|
21353
|
+
}
|
|
21354
|
+
) })
|
|
21295
21355
|
] }),
|
|
21296
21356
|
isCard && !isLast && /* @__PURE__ */ jsx(Box, { className: "mx-6 border-b border-border/40" })
|
|
21297
21357
|
] }, id2)
|
|
@@ -21331,7 +21391,7 @@ function DataList({
|
|
|
21331
21391
|
] }, field.name);
|
|
21332
21392
|
})
|
|
21333
21393
|
] }),
|
|
21334
|
-
bodyFields.length > 0 &&
|
|
21394
|
+
bodyFields.length > 0 && /* @__PURE__ */ jsx(HStack, { gap: "md", className: cn("flex-wrap", isCompact ? "mt-0.5" : "mt-1.5"), children: bodyFields.map((field) => {
|
|
21335
21395
|
const value = getNestedValue(itemData, field.name);
|
|
21336
21396
|
if (value === void 0 || value === null || value === "") return null;
|
|
21337
21397
|
return /* @__PURE__ */ jsxs(HStack, { gap: "xs", className: "items-center", children: [
|
|
@@ -28581,7 +28641,7 @@ var init_MapView = __esm({
|
|
|
28581
28641
|
shadowSize: [41, 41]
|
|
28582
28642
|
});
|
|
28583
28643
|
L.Marker.prototype.options.icon = defaultIcon;
|
|
28584
|
-
const { useEffect: useEffect65, useRef: useRef63, useCallback:
|
|
28644
|
+
const { useEffect: useEffect65, useRef: useRef63, useCallback: useCallback106, useState: useState102 } = React74__default;
|
|
28585
28645
|
const { Typography: Typography2 } = await Promise.resolve().then(() => (init_Typography(), Typography_exports));
|
|
28586
28646
|
const { useEventBus: useEventBus2 } = await Promise.resolve().then(() => (init_useEventBus(), useEventBus_exports));
|
|
28587
28647
|
function MapUpdater({ centerLat, centerLng, zoom }) {
|
|
@@ -28627,7 +28687,7 @@ var init_MapView = __esm({
|
|
|
28627
28687
|
}) {
|
|
28628
28688
|
const eventBus = useEventBus2();
|
|
28629
28689
|
const [clickedPosition, setClickedPosition] = useState102(null);
|
|
28630
|
-
const handleMapClick =
|
|
28690
|
+
const handleMapClick = useCallback106((lat, lng) => {
|
|
28631
28691
|
if (showClickedPin) {
|
|
28632
28692
|
setClickedPosition({ lat, lng });
|
|
28633
28693
|
}
|
|
@@ -28636,7 +28696,7 @@ var init_MapView = __esm({
|
|
|
28636
28696
|
eventBus.emit(`UI:${mapClickEvent}`, { latitude: lat, longitude: lng });
|
|
28637
28697
|
}
|
|
28638
28698
|
}, [onMapClick, mapClickEvent, eventBus, showClickedPin]);
|
|
28639
|
-
const handleMarkerClick =
|
|
28699
|
+
const handleMarkerClick = useCallback106((marker) => {
|
|
28640
28700
|
onMarkerClick?.(marker);
|
|
28641
28701
|
if (markerClickEvent) {
|
|
28642
28702
|
eventBus.emit(`UI:${markerClickEvent}`, { ...marker });
|
|
@@ -29412,6 +29472,26 @@ var init_Lightbox = __esm({
|
|
|
29412
29472
|
Lightbox.displayName = "Lightbox";
|
|
29413
29473
|
}
|
|
29414
29474
|
});
|
|
29475
|
+
function useMediaQuery(query) {
|
|
29476
|
+
const subscribe = useCallback(
|
|
29477
|
+
(onChange) => {
|
|
29478
|
+
const mql = window.matchMedia(query);
|
|
29479
|
+
mql.addEventListener("change", onChange);
|
|
29480
|
+
return () => mql.removeEventListener("change", onChange);
|
|
29481
|
+
},
|
|
29482
|
+
[query]
|
|
29483
|
+
);
|
|
29484
|
+
return useSyncExternalStore(
|
|
29485
|
+
subscribe,
|
|
29486
|
+
() => window.matchMedia(query).matches,
|
|
29487
|
+
() => false
|
|
29488
|
+
);
|
|
29489
|
+
}
|
|
29490
|
+
var init_useMediaQuery = __esm({
|
|
29491
|
+
"hooks/useMediaQuery.ts"() {
|
|
29492
|
+
"use client";
|
|
29493
|
+
}
|
|
29494
|
+
});
|
|
29415
29495
|
function renderIconInput3(icon, props) {
|
|
29416
29496
|
return typeof icon === "string" ? /* @__PURE__ */ jsx(Icon, { name: icon, ...props }) : /* @__PURE__ */ jsx(Icon, { icon, ...props });
|
|
29417
29497
|
}
|
|
@@ -29518,6 +29598,7 @@ function TableView({
|
|
|
29518
29598
|
const hasMore = pageSize > 0 && visibleCount < ordered.length;
|
|
29519
29599
|
const hasRenderProp = typeof children === "function";
|
|
29520
29600
|
const idField = dndItemIdField ?? "id";
|
|
29601
|
+
const isCoarsePointer = useMediaQuery("(pointer: coarse)");
|
|
29521
29602
|
const selected = selectedIds ? new Set(selectedIds) : localSelected;
|
|
29522
29603
|
const emitSelection = (next) => {
|
|
29523
29604
|
if (!selectedIds) setLocalSelected(next);
|
|
@@ -29550,6 +29631,17 @@ function TableView({
|
|
|
29550
29631
|
};
|
|
29551
29632
|
eventBus.emit(`UI:${action.event}`, payload);
|
|
29552
29633
|
};
|
|
29634
|
+
const colFloors = React74__default.useMemo(
|
|
29635
|
+
() => colDefs.map((col) => {
|
|
29636
|
+
const longest = data.reduce((widest, row) => {
|
|
29637
|
+
const cell = formatCell(asFieldValue(getNestedValue(row, col.field ?? col.key)), col.format);
|
|
29638
|
+
return Math.max(widest, cell.length);
|
|
29639
|
+
}, columnLabel(col).length);
|
|
29640
|
+
const chrome = col.format === "badge" ? BADGE_CHROME_CH : 0;
|
|
29641
|
+
return Math.min(longest + chrome, MAX_MEASURED_COL_CH);
|
|
29642
|
+
}),
|
|
29643
|
+
[colDefs, data]
|
|
29644
|
+
);
|
|
29553
29645
|
if (isLoading) {
|
|
29554
29646
|
return /* @__PURE__ */ jsx(Box, { className: "text-center py-8", children: /* @__PURE__ */ jsx(Typography, { variant: "body", color: "secondary", children: t("loading.items") }) });
|
|
29555
29647
|
}
|
|
@@ -29562,20 +29654,10 @@ function TableView({
|
|
|
29562
29654
|
}
|
|
29563
29655
|
const lk = LOOKS[look];
|
|
29564
29656
|
const hasActions = Boolean(itemActions && itemActions.length > 0);
|
|
29565
|
-
const
|
|
29566
|
-
const
|
|
29657
|
+
const effectiveMaxInline = isCoarsePointer ? 0 : maxInlineActions;
|
|
29658
|
+
const inlineActionCount = hasActions ? effectiveMaxInline != null ? Math.min(itemActions.length, effectiveMaxInline) : itemActions.length : 0;
|
|
29659
|
+
const hasOverflowActions = hasActions && effectiveMaxInline != null && itemActions.length > effectiveMaxInline;
|
|
29567
29660
|
const actionsTrack = hasActions ? `${inlineActionCount * 6 + (hasOverflowActions ? 3 : 0)}rem` : null;
|
|
29568
|
-
const colFloors = React74__default.useMemo(
|
|
29569
|
-
() => colDefs.map((col) => {
|
|
29570
|
-
const longest = data.reduce((widest, row) => {
|
|
29571
|
-
const cell = formatCell(asFieldValue(getNestedValue(row, col.field ?? col.key)), col.format);
|
|
29572
|
-
return Math.max(widest, cell.length);
|
|
29573
|
-
}, columnLabel(col).length);
|
|
29574
|
-
const chrome = col.format === "badge" ? BADGE_CHROME_CH : 0;
|
|
29575
|
-
return Math.min(longest + chrome, MAX_MEASURED_COL_CH);
|
|
29576
|
-
}),
|
|
29577
|
-
[colDefs, data]
|
|
29578
|
-
);
|
|
29579
29661
|
const gridTemplateColumns = [
|
|
29580
29662
|
selectable ? "auto" : null,
|
|
29581
29663
|
...colDefs.map((c, i) => c.width ?? `minmax(${colFloors[i]}ch, 1fr)`),
|
|
@@ -29664,7 +29746,7 @@ function TableView({
|
|
|
29664
29746
|
if (col.format === "badge" && raw != null && raw !== "") {
|
|
29665
29747
|
return /* @__PURE__ */ jsx(Box, { role: "cell", className: cellBase, children: /* @__PURE__ */ jsx(Badge, { variant: statusVariant4(String(raw)), size: "sm", className: "whitespace-nowrap", children: String(raw) }) }, col.key);
|
|
29666
29748
|
}
|
|
29667
|
-
return /* @__PURE__ */ jsx(Box, { role: "cell", className: cellBase, children: /* @__PURE__ */ jsx("span", { className: "truncate", children: formatCell(raw, col.format) }) }, col.key);
|
|
29749
|
+
return /* @__PURE__ */ jsx(Box, { role: "cell", className: cellBase, children: /* @__PURE__ */ jsx("span", { className: "truncate text-foreground", children: formatCell(raw, col.format) }) }, col.key);
|
|
29668
29750
|
}),
|
|
29669
29751
|
itemActions && itemActions.length > 0 && /* @__PURE__ */ jsxs(
|
|
29670
29752
|
HStack,
|
|
@@ -29678,15 +29760,15 @@ function TableView({
|
|
|
29678
29760
|
lk.striped && index % 2 === 1 ? "bg-[var(--color-surface-subtle)]" : "bg-[var(--color-card)] group-hover:bg-[var(--color-surface-subtle)]"
|
|
29679
29761
|
),
|
|
29680
29762
|
children: [
|
|
29681
|
-
(
|
|
29763
|
+
(effectiveMaxInline != null ? itemActions.slice(0, effectiveMaxInline) : itemActions).map((action, i) => /* @__PURE__ */ jsxs(
|
|
29682
29764
|
Button,
|
|
29683
29765
|
{
|
|
29684
|
-
variant: action.variant
|
|
29766
|
+
variant: action.variant === "primary" ? "primary" : "ghost",
|
|
29685
29767
|
size: "sm",
|
|
29686
29768
|
onClick: handleActionClick(action, row),
|
|
29687
29769
|
"data-testid": `action-${action.event}`,
|
|
29688
29770
|
"data-row-id": String(row.id),
|
|
29689
|
-
className: cn(action.variant === "danger" && "text-error hover:bg-error/10"),
|
|
29771
|
+
className: cn(action.variant === "danger" && "text-error hover:text-error hover:bg-error/10"),
|
|
29690
29772
|
children: [
|
|
29691
29773
|
action.icon && renderIconInput3(action.icon, { size: "xs", className: "mr-1" }),
|
|
29692
29774
|
action.label
|
|
@@ -29694,12 +29776,12 @@ function TableView({
|
|
|
29694
29776
|
},
|
|
29695
29777
|
i
|
|
29696
29778
|
)),
|
|
29697
|
-
|
|
29779
|
+
effectiveMaxInline != null && itemActions.length > effectiveMaxInline && /* @__PURE__ */ jsx(
|
|
29698
29780
|
Menu,
|
|
29699
29781
|
{
|
|
29700
29782
|
position: "bottom-end",
|
|
29701
29783
|
trigger: /* @__PURE__ */ jsx(Button, { variant: "ghost", size: "sm", "aria-label": t("common.actions"), "data-testid": "action-overflow", children: /* @__PURE__ */ jsx(Icon, { name: "more-horizontal", size: "xs" }) }),
|
|
29702
|
-
items: itemActions.slice(
|
|
29784
|
+
items: itemActions.slice(effectiveMaxInline).map((action) => ({
|
|
29703
29785
|
label: action.label,
|
|
29704
29786
|
icon: action.icon,
|
|
29705
29787
|
event: action.event,
|
|
@@ -29752,6 +29834,7 @@ var init_TableView = __esm({
|
|
|
29752
29834
|
init_cn();
|
|
29753
29835
|
init_getNestedValue();
|
|
29754
29836
|
init_useEventBus();
|
|
29837
|
+
init_useMediaQuery();
|
|
29755
29838
|
init_Box();
|
|
29756
29839
|
init_Stack();
|
|
29757
29840
|
init_Typography();
|
|
@@ -29776,7 +29859,7 @@ var init_TableView = __esm({
|
|
|
29776
29859
|
semibold: "font-semibold"
|
|
29777
29860
|
};
|
|
29778
29861
|
LOOKS = {
|
|
29779
|
-
dense: { rowPad: "px-card-md py-
|
|
29862
|
+
dense: { rowPad: "px-card-md py-2", headPad: "px-card-md py-2", striped: false, divider: true },
|
|
29780
29863
|
spacious: { rowPad: "px-card-lg py-card-md", headPad: "px-card-lg py-card-sm", striped: false, divider: true },
|
|
29781
29864
|
striped: { rowPad: "px-card-md py-card-sm", headPad: "px-card-md py-card-sm", striped: true, divider: false },
|
|
29782
29865
|
borderless: { rowPad: "px-card-md py-card-sm", headPad: "px-card-md py-card-sm", striped: false, divider: false },
|
|
@@ -41054,27 +41137,24 @@ var init_MasterDetailLayout = __esm({
|
|
|
41054
41137
|
masterClassName,
|
|
41055
41138
|
detailClassName
|
|
41056
41139
|
}) => {
|
|
41057
|
-
masterWidth.endsWith("%") ? parseInt(masterWidth, 10) : 30;
|
|
41058
41140
|
return /* @__PURE__ */ jsxs(
|
|
41059
41141
|
"div",
|
|
41060
41142
|
{
|
|
41061
|
-
className: cn("
|
|
41062
|
-
style: {
|
|
41063
|
-
display: "grid",
|
|
41064
|
-
gridTemplateColumns: masterWidth.endsWith("%") ? `${masterWidth} 1fr` : `${masterWidth} 1fr`
|
|
41065
|
-
},
|
|
41143
|
+
className: cn("w-full h-full md:grid md:grid-cols-[var(--master-detail-cols)]", className),
|
|
41144
|
+
style: { "--master-detail-cols": `${masterWidth} 1fr` },
|
|
41066
41145
|
children: [
|
|
41067
41146
|
/* @__PURE__ */ jsx(
|
|
41068
41147
|
"div",
|
|
41069
41148
|
{
|
|
41070
41149
|
className: cn(
|
|
41071
|
-
"border-r
|
|
41150
|
+
"border-r border-border overflow-auto",
|
|
41151
|
+
hasSelection && "hidden md:block",
|
|
41072
41152
|
masterClassName
|
|
41073
41153
|
),
|
|
41074
41154
|
children: master
|
|
41075
41155
|
}
|
|
41076
41156
|
),
|
|
41077
|
-
/* @__PURE__ */ jsx("div", { className: cn("overflow-auto", detailClassName), children: hasSelection ? detail : emptyDetail || /* @__PURE__ */ jsx(DefaultEmptyDetail, {}) })
|
|
41157
|
+
/* @__PURE__ */ jsx("div", { className: cn("overflow-auto", !hasSelection && "hidden md:block", detailClassName), children: hasSelection ? detail : emptyDetail || /* @__PURE__ */ jsx(DefaultEmptyDetail, {}) })
|
|
41078
41158
|
]
|
|
41079
41159
|
}
|
|
41080
41160
|
);
|
|
@@ -48654,6 +48734,7 @@ init_useAuthContext();
|
|
|
48654
48734
|
init_useSwipeGesture();
|
|
48655
48735
|
init_useLongPress();
|
|
48656
48736
|
init_useDragReorder();
|
|
48737
|
+
init_useMediaQuery();
|
|
48657
48738
|
init_useInfiniteScroll();
|
|
48658
48739
|
init_usePullToRefresh();
|
|
48659
48740
|
init_useCanvasGestures();
|
|
@@ -48899,4 +48980,4 @@ function useGitHubBranches(owner, repo, enabled = true) {
|
|
|
48899
48980
|
});
|
|
48900
48981
|
}
|
|
48901
48982
|
|
|
48902
|
-
export { ALL_PRESETS, ALMADAR_DND_MIME, AR_BOOK_FIELDS, AboutPageTemplate, Accordion, Card2 as ActionCard, ActionPalette, ActionTile, ActivationBlock, Alert, AlgorithmCanvas, AnimatedCounter, AnimatedGraphic, AnimatedReveal, ArticleSection, Aside, AssetPicker, AtlasImage, AtlasPanel, AuthLayout, Avatar, Badge, BehaviorView, BiologyCanvas, BloomQuizBlock, BookChapterView, BookCoverPage, BookNavBar, BookTableOfContents, BookViewer, Box, BranchingLogicBuilder, Breadcrumb, Button, ButtonGroup, CTABanner, CalendarGrid, Canvas, Canvas2D, Card, CardBody, CardContent, CardFooter, CardGrid, CardHeader, CardTitle, Carousel, CaseStudyCard, CaseStudyOrganism, Center, Chart, ChartLegend, ChatBar, Checkbox, ChemistryCanvas, ChoiceButton, Coachmark, CodeBlock, CodeRunnerPanel, CollapsibleSection, CommunityLinks, ConditionalWrapper, ConfettiEffect, ConfirmDialog, ConnectionBlock, Container, ContentRenderer, ContentSection, ControlButton, ControlGrid, CounterTemplate, DEFAULT_LIKERT_OPTIONS, DEFAULT_MATRIX_COLUMNS, DEFAULT_SLOTS, DIAMOND_TOP_Y, DashboardGrid, DashboardLayout, DataGrid, DataList, DataTable, DateRangePicker, DateRangeSelector, DayCell, DetailPanel, Dialog, DialogueBubble, Divider, DocBreadcrumb, DocPagination, DocSearch, DocSidebar, DocTOC, DocumentViewer, StateMachineView as DomStateMachineVisualizer, Drawer, DrawerSlot, ELEMENT_SELECTED_EVENT, EdgeDecoration, EditorCheckbox, EditorSelect, EditorSlider, EditorTextInput, EditorToolbar, EmptyState, EntityDisplayEvents, ErrorBoundary, ErrorState, FEATURE_COLORS, FEATURE_TYPES, FLOOR_HEIGHT, FeatureCard, FeatureDetailPageTemplate, FeatureGrid, FeatureGridOrganism, FileTree, FilterGroup, FilterPill, Flex, FlipCard, FlipContainer, FloatingActionButton, Form, FormActions, FormField, FormLayout, FormSection, FormSectionHeader, GameAudioToggle, GameHud, GameIcon, GameMenu, GameShell, GenericAppTemplate, GeometricPattern, GradientDivider, GraphCanvas, GraphView, Grid, GridPicker, HStack, Header, HealthBar, HeroOrganism, HeroSection, I18nProvider, IDENTITY_BOOK_FIELDS, Icon, IconPicker, ImportPreviewTree, ImportProgress, ImportSourcePicker, InfiniteScrollSentinel, Input, InputGroup, InstallBox, JazariStateMachine, JsonTreeEditor, Label, LandingPageTemplate, LawReferenceTooltip, LearningCanvas, Lightbox, LikertScale, LineChart2 as LineChart, List3 as List, LoadingState, MapView, MarkdownContent, MarketingFooter, MarketingStatCard, MasterDetail, MasterDetailLayout, MathCanvas, MatrixQuestion, MediaGallery, Menu, Meter, Modal, ModalSlot, ModuleCard, Navigation, NodeSlotEditor, NotifyListener, NumberStepper, OnboardingSpotlight, OptionConstraintGroup, StateMachineView as OrbitalStateMachineView, OrbitalVisualization, Overlay, PageHeader, PageTransition, Pagination, PatternTile, PhysicsCanvas, Popover, PositionedCanvas, Presence, PricingCard, PricingGrid, PricingOrganism, PricingPageTemplate, ProgressBar, ProgressDots, PropertyInspector, PullQuote, PullToRefresh, QrScanner, QuizBlock, Radio, RangeSlider, ReflectionBlock, RelationSelect, RepeatableFormSection, ReplyTree, RichBlockEditor, RuntimeDebugger, SHEET_COLUMNS, SPRITE_SHEET_LAYOUT, ScaledDiagram, ScoreDisplay, SearchInput, Section, SectionHeader, SegmentRenderer, Select, SequenceBar, ServiceCatalog, SharedEntityStoreContext, ShowcaseCard, ShowcaseOrganism, SidePanel, Sidebar, SignaturePad, SimpleGrid, Skeleton, SlotContentRenderer, SocialProof, SortableList, Spacer, Sparkline, Spinner, Split, SplitPane, SplitSection, Stack, StarRating, StatBadge, StatCard, StatDisplay, StateGraph, StateJsonView, StateMachineView, StateNode2 as StateNode, StatsGrid, StatsOrganism, StatusBar, StatusDot, StepFlow, StepFlowOrganism, SubagentTracePanel, SvgBranch, SvgConnection, SvgFlow, SvgGrid, SvgLobe, SvgMesh, SvgMorph, SvgNode, SvgPulse, SvgRing, SvgShield, SvgStack, SwipeableRow, Switch, TERRAIN_COLORS, TILE_HEIGHT, TILE_WIDTH, TabbedContainer, TableView, Tabs, TagCloud, TagInput, TeamCard, TeamOrganism, TerrainPalette, TextHighlight, Textarea, ThemeToggle, TimeSlotCell, Timeline, TimerDisplay, Toast, ToastSlot, Tooltip, TraitFrame, TraitSlot, TraitStateViewer, TransitionArrow, TrendIndicator, TypewriterText, Typography, UISlotComponent, UISlotRenderer, UploadDropZone, VStack, VersionDiff, ViolationAlert, VoteStack, WizardContainer, WizardNavigation, WizardProgress, boardEntity, bool, calculateAttackTargets, calculateValidMoves, cn, createInitialGameState, createSharedEntityStore, createTranslate, createUnitAnimationState, getCurrentFrame, getTileDimensions, inferDirection, isoToScreen, makeAsset, makeAssetMap, mapBookData, num, objAvailableActions, objAvailableEvents, objCurrentState, objIcon, objId, objMaxRules, objName, objRules, objStates, parseEditFocus, parseLessonSegments, parseMarkdownWithCodeBlocks, parseQueryBinding, pendulum, projectileMotion, registerCodeLanguageLoader, resolveFieldMap, resolveFrame, resolveSheetDirection, rows, runTickFrame, screenToIso, springOscillator, str, tickAnimationState, toCodeLanguage, transitionAnimation, unitHealth, unitPosition, unitTeam, useAgentChat, useAnchorRect, useAtlasSliceDataUrl, useAuthContext, useCamera, useCanvasGestures, useCompile, useConnectGitHub, useDeepAgentGeneration, useDisconnectGitHub, useDragReorder, useDraggable, useDropZone, useEmitEvent, useEventBus, useEventListener, useExtensions, useFileEditor, useFileSystem, useGameAudio, useGitHubBranches, useGitHubRepo, useGitHubRepos, useGitHubStatus, useImageCache, useInfiniteScroll, useLongPress, useOrbitalHistory, usePresence, usePreview, usePullToRefresh, useQuerySingleton, useRenderInterpolation, useSharedEntitySnapshot, useSharedEntityStore, useSharedEntityStoreContext, useSwipeGesture, useTapReveal, useTraitListens, useTranslate114 as useTranslate, useUIEvents, useUISlotManager, useUnitSpriteAtlas, useValidation, vec2 };
|
|
48983
|
+
export { ALL_PRESETS, ALMADAR_DND_MIME, AR_BOOK_FIELDS, AboutPageTemplate, Accordion, Card2 as ActionCard, ActionPalette, ActionTile, ActivationBlock, Alert, AlgorithmCanvas, AnimatedCounter, AnimatedGraphic, AnimatedReveal, ArticleSection, Aside, AssetPicker, AtlasImage, AtlasPanel, AuthLayout, Avatar, Badge, BehaviorView, BiologyCanvas, BloomQuizBlock, BookChapterView, BookCoverPage, BookNavBar, BookTableOfContents, BookViewer, Box, BranchingLogicBuilder, Breadcrumb, Button, ButtonGroup, CTABanner, CalendarGrid, Canvas, Canvas2D, Card, CardBody, CardContent, CardFooter, CardGrid, CardHeader, CardTitle, Carousel, CaseStudyCard, CaseStudyOrganism, Center, Chart, ChartLegend, ChatBar, Checkbox, ChemistryCanvas, ChoiceButton, Coachmark, CodeBlock, CodeRunnerPanel, CollapsibleSection, CommunityLinks, ConditionalWrapper, ConfettiEffect, ConfirmDialog, ConnectionBlock, Container, ContentRenderer, ContentSection, ControlButton, ControlGrid, CounterTemplate, DEFAULT_LIKERT_OPTIONS, DEFAULT_MATRIX_COLUMNS, DEFAULT_SLOTS, DIAMOND_TOP_Y, DashboardGrid, DashboardLayout, DataGrid, DataList, DataTable, DateRangePicker, DateRangeSelector, DayCell, DetailPanel, Dialog, DialogueBubble, Divider, DocBreadcrumb, DocPagination, DocSearch, DocSidebar, DocTOC, DocumentViewer, StateMachineView as DomStateMachineVisualizer, Drawer, DrawerSlot, ELEMENT_SELECTED_EVENT, EdgeDecoration, EditorCheckbox, EditorSelect, EditorSlider, EditorTextInput, EditorToolbar, EmptyState, EntityDisplayEvents, ErrorBoundary, ErrorState, FEATURE_COLORS, FEATURE_TYPES, FLOOR_HEIGHT, FeatureCard, FeatureDetailPageTemplate, FeatureGrid, FeatureGridOrganism, FileTree, FilterGroup, FilterPill, Flex, FlipCard, FlipContainer, FloatingActionButton, Form, FormActions, FormField, FormLayout, FormSection, FormSectionHeader, GameAudioToggle, GameHud, GameIcon, GameMenu, GameShell, GenericAppTemplate, GeometricPattern, GradientDivider, GraphCanvas, GraphView, Grid, GridPicker, HStack, Header, HealthBar, HeroOrganism, HeroSection, I18nProvider, IDENTITY_BOOK_FIELDS, Icon, IconPicker, ImportPreviewTree, ImportProgress, ImportSourcePicker, InfiniteScrollSentinel, Input, InputGroup, InstallBox, JazariStateMachine, JsonTreeEditor, Label, LandingPageTemplate, LawReferenceTooltip, LearningCanvas, Lightbox, LikertScale, LineChart2 as LineChart, List3 as List, LoadingState, MapView, MarkdownContent, MarketingFooter, MarketingStatCard, MasterDetail, MasterDetailLayout, MathCanvas, MatrixQuestion, MediaGallery, Menu, Meter, Modal, ModalSlot, ModuleCard, Navigation, NodeSlotEditor, NotifyListener, NumberStepper, OnboardingSpotlight, OptionConstraintGroup, StateMachineView as OrbitalStateMachineView, OrbitalVisualization, Overlay, PageHeader, PageTransition, Pagination, PatternTile, PhysicsCanvas, Popover, PositionedCanvas, Presence, PricingCard, PricingGrid, PricingOrganism, PricingPageTemplate, ProgressBar, ProgressDots, PropertyInspector, PullQuote, PullToRefresh, QrScanner, QuizBlock, Radio, RangeSlider, ReflectionBlock, RelationSelect, RepeatableFormSection, ReplyTree, RichBlockEditor, RuntimeDebugger, SHEET_COLUMNS, SPRITE_SHEET_LAYOUT, ScaledDiagram, ScoreDisplay, SearchInput, Section, SectionHeader, SegmentRenderer, Select, SequenceBar, ServiceCatalog, SharedEntityStoreContext, ShowcaseCard, ShowcaseOrganism, SidePanel, Sidebar, SignaturePad, SimpleGrid, Skeleton, SlotContentRenderer, SocialProof, SortableList, Spacer, Sparkline, Spinner, Split, SplitPane, SplitSection, Stack, StarRating, StatBadge, StatCard, StatDisplay, StateGraph, StateJsonView, StateMachineView, StateNode2 as StateNode, StatsGrid, StatsOrganism, StatusBar, StatusDot, StepFlow, StepFlowOrganism, SubagentTracePanel, SvgBranch, SvgConnection, SvgFlow, SvgGrid, SvgLobe, SvgMesh, SvgMorph, SvgNode, SvgPulse, SvgRing, SvgShield, SvgStack, SwipeableRow, Switch, TERRAIN_COLORS, TILE_HEIGHT, TILE_WIDTH, TabbedContainer, TableView, Tabs, TagCloud, TagInput, TeamCard, TeamOrganism, TerrainPalette, TextHighlight, Textarea, ThemeToggle, TimeSlotCell, Timeline, TimerDisplay, Toast, ToastSlot, Tooltip, TraitFrame, TraitSlot, TraitStateViewer, TransitionArrow, TrendIndicator, TypewriterText, Typography, UISlotComponent, UISlotRenderer, UploadDropZone, VStack, VersionDiff, ViolationAlert, VoteStack, WizardContainer, WizardNavigation, WizardProgress, boardEntity, bool, calculateAttackTargets, calculateValidMoves, cn, createInitialGameState, createSharedEntityStore, createTranslate, createUnitAnimationState, getCurrentFrame, getTileDimensions, inferDirection, isoToScreen, makeAsset, makeAssetMap, mapBookData, num, objAvailableActions, objAvailableEvents, objCurrentState, objIcon, objId, objMaxRules, objName, objRules, objStates, parseEditFocus, parseLessonSegments, parseMarkdownWithCodeBlocks, parseQueryBinding, pendulum, projectileMotion, registerCodeLanguageLoader, resolveFieldMap, resolveFrame, resolveSheetDirection, rows, runTickFrame, screenToIso, springOscillator, str, tickAnimationState, toCodeLanguage, transitionAnimation, unitHealth, unitPosition, unitTeam, useAgentChat, useAnchorRect, useAtlasSliceDataUrl, useAuthContext, useCamera, useCanvasGestures, useCompile, useConnectGitHub, useDeepAgentGeneration, useDisconnectGitHub, useDragReorder, useDraggable, useDropZone, useEmitEvent, useEventBus, useEventListener, useExtensions, useFileEditor, useFileSystem, useGameAudio, useGitHubBranches, useGitHubRepo, useGitHubRepos, useGitHubStatus, useImageCache, useInfiniteScroll, useLongPress, useMediaQuery, useOrbitalHistory, usePresence, usePreview, usePullToRefresh, useQuerySingleton, useRenderInterpolation, useSharedEntitySnapshot, useSharedEntityStore, useSharedEntityStoreContext, useSwipeGesture, useTapReveal, useTraitListens, useTranslate114 as useTranslate, useUIEvents, useUISlotManager, useUnitSpriteAtlas, useValidation, vec2 };
|