@almadar/ui 5.123.0 → 5.125.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/{TraitProvider-YkK6tXDw.d.cts → TraitProvider-Ch79cUcb.d.cts} +6 -1
- package/dist/{TraitProvider-YkK6tXDw.d.ts → TraitProvider-Ch79cUcb.d.ts} +6 -1
- package/dist/{UserContext-bziZwgFL.d.cts → UserContext-BKckAUv7.d.cts} +5 -5
- package/dist/{UserContext-bziZwgFL.d.ts → UserContext-BKckAUv7.d.ts} +5 -5
- package/dist/avl/index.cjs +332 -275
- package/dist/avl/index.js +334 -277
- package/dist/components/index.cjs +284 -248
- package/dist/components/index.d.cts +4 -3
- package/dist/components/index.d.ts +4 -3
- package/dist/components/index.js +284 -248
- package/dist/context/index.cjs +25 -66
- package/dist/context/index.d.cts +1 -1
- package/dist/context/index.d.ts +1 -1
- package/dist/context/index.js +25 -66
- package/dist/{offline-executor-aRuNznZx.d.cts → offline-executor-Qz4b6GpF.d.cts} +19 -1
- package/dist/{offline-executor-aRuNznZx.d.ts → offline-executor-Qz4b6GpF.d.ts} +19 -1
- package/dist/providers/index.cjs +395 -275
- package/dist/providers/index.d.cts +6 -6
- package/dist/providers/index.d.ts +6 -6
- package/dist/providers/index.js +394 -276
- package/dist/renderer/index.cjs +8 -0
- package/dist/renderer/index.d.cts +2 -2
- package/dist/renderer/index.d.ts +2 -2
- package/dist/renderer/index.js +1 -1
- package/dist/runtime/index.cjs +325 -268
- package/dist/runtime/index.d.cts +4 -2
- package/dist/runtime/index.d.ts +4 -2
- package/dist/runtime/index.js +327 -270
- package/package.json +13 -11
- package/themes/_contract.md +2 -0
- package/themes/almadar-website.css +3 -3
- package/themes/almadar.css +4 -4
- package/themes/bloomberg-dense.css +2 -2
- package/themes/clay.css +417 -0
- package/themes/corporate.css +411 -0
- package/themes/game-adventure.css +3 -3
- package/themes/game-rpg.css +2 -2
- package/themes/game-sci-fi.css +1 -1
- package/themes/game-ui-pack.css +2 -2
- package/themes/gazette.css +2 -2
- package/themes/glass.css +428 -0
- package/themes/index.css +9 -13
- package/themes/kiosk.css +5 -5
- package/themes/linear-clean.css +1 -1
- package/themes/minimalist.css +2 -2
- package/themes/neon.css +3 -3
- package/themes/notion-editorial.css +1 -1
- package/themes/prism.css +3 -3
- package/themes/retro.css +410 -0
- package/themes/terminal.css +1 -1
- package/themes/trait-wars.css +8 -8
- package/themes/wireframe.css +2 -2
- package/themes/arctic.css +0 -235
- package/themes/copper.css +0 -235
- package/themes/ember.css +0 -238
- package/themes/forest.css +0 -238
- package/themes/lavender.css +0 -233
- package/themes/midnight.css +0 -234
- package/themes/ocean.css +0 -238
- package/themes/rose.css +0 -233
- package/themes/sand.css +0 -234
- package/themes/slate.css +0 -233
- package/themes/sunset.css +0 -238
package/dist/avl/index.cjs
CHANGED
|
@@ -4359,10 +4359,10 @@ var init_ModuleCard = __esm({
|
|
|
4359
4359
|
init_avl_atom_types();
|
|
4360
4360
|
init_MiniStateMachine();
|
|
4361
4361
|
PERSISTENCE_BORDER = {
|
|
4362
|
-
persistent: "border-l-[3px] border-l-
|
|
4363
|
-
runtime: "border-l-[3px] border-l-
|
|
4364
|
-
singleton: "border-l-[3px] border-l-
|
|
4365
|
-
instance: "border-l-[3px] border-l-
|
|
4362
|
+
persistent: "border-l-[3px] border-l-primary border-solid",
|
|
4363
|
+
runtime: "border-l-[3px] border-l-primary border-dashed",
|
|
4364
|
+
singleton: "border-l-[3px] border-l-primary border-double",
|
|
4365
|
+
instance: "border-l-[3px] border-l-primary border-dotted"
|
|
4366
4366
|
};
|
|
4367
4367
|
PERSISTENCE_ICON = {
|
|
4368
4368
|
persistent: "\u26C1",
|
|
@@ -4392,8 +4392,8 @@ var init_ModuleCard = __esm({
|
|
|
4392
4392
|
className: "rounded-lg border border-[var(--color-border)] bg-[var(--color-card)] shadow-sm overflow-hidden",
|
|
4393
4393
|
style: { minWidth: 280, maxWidth: 400 },
|
|
4394
4394
|
children: [
|
|
4395
|
-
/* @__PURE__ */ jsxRuntime.jsx(react.Handle, { type: "target", position: react.Position.Left, className: "!w-2.5 !h-2.5 !bg-
|
|
4396
|
-
/* @__PURE__ */ jsxRuntime.jsx(react.Handle, { type: "source", position: react.Position.Right, className: "!w-2.5 !h-2.5 !bg-
|
|
4395
|
+
/* @__PURE__ */ jsxRuntime.jsx(react.Handle, { type: "target", position: react.Position.Left, className: "!w-2.5 !h-2.5 !bg-warning" }),
|
|
4396
|
+
/* @__PURE__ */ jsxRuntime.jsx(react.Handle, { type: "source", position: react.Position.Right, className: "!w-2.5 !h-2.5 !bg-warning" }),
|
|
4397
4397
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "px-3 py-2 border-b border-[var(--color-border)]", children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-base font-bold text-[var(--color-foreground)]", children: orbitalName }) }),
|
|
4398
4398
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: `px-3 py-2 border-b border-[var(--color-border)] ${PERSISTENCE_BORDER[persistence] ?? ""}`, children: [
|
|
4399
4399
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1.5 mb-1.5", children: [
|
|
@@ -8442,15 +8442,15 @@ var init_TextHighlight = __esm({
|
|
|
8442
8442
|
const typeStyles = {
|
|
8443
8443
|
question: cn(
|
|
8444
8444
|
// Blue border for questions
|
|
8445
|
-
"bg-card border-b-2 border-primary
|
|
8445
|
+
"bg-card border-b-2 border-primary",
|
|
8446
8446
|
"hover:bg-muted",
|
|
8447
|
-
isActive && "bg-primary
|
|
8447
|
+
isActive && "bg-primary/10 ring-2 ring-primary"
|
|
8448
8448
|
),
|
|
8449
8449
|
note: cn(
|
|
8450
8450
|
// Yellow border for notes
|
|
8451
|
-
"bg-card border-b-2 border-
|
|
8451
|
+
"bg-card border-b-2 border-warning",
|
|
8452
8452
|
"hover:bg-muted",
|
|
8453
|
-
isActive && "bg-
|
|
8453
|
+
isActive && "bg-warning/10 ring-2 ring-warning"
|
|
8454
8454
|
)
|
|
8455
8455
|
};
|
|
8456
8456
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -8796,7 +8796,7 @@ function DayCell({
|
|
|
8796
8796
|
{
|
|
8797
8797
|
className: cn(
|
|
8798
8798
|
"p-2 text-center cursor-pointer hover:bg-muted transition-colors",
|
|
8799
|
-
isToday && "bg-
|
|
8799
|
+
isToday && "bg-primary/10",
|
|
8800
8800
|
className
|
|
8801
8801
|
),
|
|
8802
8802
|
onClick: handleClick,
|
|
@@ -8807,7 +8807,7 @@ function DayCell({
|
|
|
8807
8807
|
variant: "small",
|
|
8808
8808
|
className: cn(
|
|
8809
8809
|
"font-medium",
|
|
8810
|
-
isToday ? "text-
|
|
8810
|
+
isToday ? "text-primary" : "text-muted-foreground"
|
|
8811
8811
|
),
|
|
8812
8812
|
children: dayAbbr
|
|
8813
8813
|
}
|
|
@@ -8819,7 +8819,7 @@ function DayCell({
|
|
|
8819
8819
|
rounded: "full",
|
|
8820
8820
|
className: cn(
|
|
8821
8821
|
"h-8 w-8 mx-auto items-center justify-center",
|
|
8822
|
-
isToday && "bg-
|
|
8822
|
+
isToday && "bg-primary text-primary-foreground"
|
|
8823
8823
|
),
|
|
8824
8824
|
children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", className: "font-semibold", children: safeDate.getDate() })
|
|
8825
8825
|
}
|
|
@@ -15673,19 +15673,19 @@ var init_ActivationBlock = __esm({
|
|
|
15673
15673
|
"div",
|
|
15674
15674
|
{
|
|
15675
15675
|
className: cn(
|
|
15676
|
-
"bg-
|
|
15676
|
+
"bg-primary/10 border-2 border-primary rounded-lg p-5 mb-6",
|
|
15677
15677
|
className
|
|
15678
15678
|
),
|
|
15679
15679
|
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start gap-3", children: [
|
|
15680
|
-
/* @__PURE__ */ jsxRuntime.jsx(LucideIcons2.Lightbulb, { className: "text-
|
|
15680
|
+
/* @__PURE__ */ jsxRuntime.jsx(LucideIcons2.Lightbulb, { className: "text-primary flex-shrink-0 mt-1", size: 24 }),
|
|
15681
15681
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1", children: [
|
|
15682
|
-
/* @__PURE__ */ jsxRuntime.jsx("h4", { className: "font-semibold text-
|
|
15683
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-
|
|
15682
|
+
/* @__PURE__ */ jsxRuntime.jsx("h4", { className: "font-semibold text-primary mb-2", children: "Before You Begin..." }),
|
|
15683
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-foreground mb-3 text-sm md:text-base", children: question }),
|
|
15684
15684
|
isExpanded ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
15685
15685
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
15686
15686
|
"textarea",
|
|
15687
15687
|
{
|
|
15688
|
-
className: "w-full p-3 border border-
|
|
15688
|
+
className: "w-full p-3 border border-input rounded-md bg-card text-foreground focus:ring-2 focus:ring-ring focus:border-transparent text-sm",
|
|
15689
15689
|
placeholder: "Jot down your thoughts...",
|
|
15690
15690
|
value: response,
|
|
15691
15691
|
onChange: (e) => setResponse(e.target.value),
|
|
@@ -15697,7 +15697,7 @@ var init_ActivationBlock = __esm({
|
|
|
15697
15697
|
"button",
|
|
15698
15698
|
{
|
|
15699
15699
|
onClick: handleSubmit,
|
|
15700
|
-
className: "px-4 py-2 bg-
|
|
15700
|
+
className: "px-4 py-2 bg-primary text-primary-foreground rounded-md hover:bg-primary-hover text-sm font-medium transition-colors",
|
|
15701
15701
|
children: "Continue to Lesson \u2192"
|
|
15702
15702
|
}
|
|
15703
15703
|
),
|
|
@@ -15708,7 +15708,7 @@ var init_ActivationBlock = __esm({
|
|
|
15708
15708
|
emit(`UI:${saveEvent}`, { response: "" });
|
|
15709
15709
|
setIsExpanded(false);
|
|
15710
15710
|
},
|
|
15711
|
-
className: "px-4 py-2 text-
|
|
15711
|
+
className: "px-4 py-2 text-primary hover:underline text-sm",
|
|
15712
15712
|
children: "Skip for now"
|
|
15713
15713
|
}
|
|
15714
15714
|
)
|
|
@@ -15717,7 +15717,7 @@ var init_ActivationBlock = __esm({
|
|
|
15717
15717
|
"button",
|
|
15718
15718
|
{
|
|
15719
15719
|
onClick: () => setIsExpanded(true),
|
|
15720
|
-
className: "text-sm text-
|
|
15720
|
+
className: "text-sm text-primary hover:underline font-medium",
|
|
15721
15721
|
children: "\u2713 Answered \xB7 Edit response"
|
|
15722
15722
|
}
|
|
15723
15723
|
)
|
|
@@ -16221,7 +16221,7 @@ var init_AuthLayout = __esm({
|
|
|
16221
16221
|
VStack,
|
|
16222
16222
|
{
|
|
16223
16223
|
className: cn(
|
|
16224
|
-
"hidden lg:flex lg:w-1/2 bg-primary
|
|
16224
|
+
"hidden lg:flex lg:w-1/2 bg-primary relative overflow-hidden",
|
|
16225
16225
|
"justify-between p-12"
|
|
16226
16226
|
),
|
|
16227
16227
|
style: backgroundImage ? {
|
|
@@ -16230,7 +16230,7 @@ var init_AuthLayout = __esm({
|
|
|
16230
16230
|
} : void 0,
|
|
16231
16231
|
gap: "none",
|
|
16232
16232
|
children: [
|
|
16233
|
-
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "absolute inset-0 bg-gradient-to-br from-primary
|
|
16233
|
+
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "absolute inset-0 bg-gradient-to-br from-primary/90 to-primary-hover/90" }),
|
|
16234
16234
|
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "relative z-10", children: /* @__PURE__ */ jsxRuntime.jsxs(reactRouterDom.Link, { to: "/", className: "flex items-center gap-3", children: [
|
|
16235
16235
|
logo || /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "w-10 h-10 bg-[var(--color-card)]/20 rounded-xl flex items-center justify-center backdrop-blur", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
16236
16236
|
Typography,
|
|
@@ -16315,7 +16315,7 @@ var init_AuthLayout = __esm({
|
|
|
16315
16315
|
),
|
|
16316
16316
|
children: /* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "w-full max-w-md", children: [
|
|
16317
16317
|
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "lg:hidden mb-8 text-center", children: /* @__PURE__ */ jsxRuntime.jsxs(reactRouterDom.Link, { to: "/", className: "inline-flex items-center gap-3", children: [
|
|
16318
|
-
logo || /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "w-12 h-12 bg-primary
|
|
16318
|
+
logo || /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "w-12 h-12 bg-primary rounded-xl flex items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
16319
16319
|
Typography,
|
|
16320
16320
|
{
|
|
16321
16321
|
variant: "body1",
|
|
@@ -17479,7 +17479,7 @@ var init_CodeBlock = __esm({
|
|
|
17479
17479
|
{
|
|
17480
17480
|
justify: "between",
|
|
17481
17481
|
align: "center",
|
|
17482
|
-
className: "px-3 py-2 bg-[var(--color-card)] rounded-t-lg border-b border-
|
|
17482
|
+
className: "px-3 py-2 bg-[var(--color-card)] rounded-t-lg border-b border-border",
|
|
17483
17483
|
children: [
|
|
17484
17484
|
showLanguageBadge && /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "default", size: "sm", children: language }),
|
|
17485
17485
|
effectiveCopy && /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -17488,9 +17488,9 @@ var init_CodeBlock = __esm({
|
|
|
17488
17488
|
variant: "ghost",
|
|
17489
17489
|
size: "sm",
|
|
17490
17490
|
onClick: handleCopy,
|
|
17491
|
-
className: "opacity-0 group-hover:opacity-100 focus:opacity-100 transition-opacity text-muted-foreground hover:text-
|
|
17491
|
+
className: "opacity-0 group-hover:opacity-100 focus:opacity-100 transition-opacity text-muted-foreground hover:text-foreground",
|
|
17492
17492
|
"aria-label": t("common.copy"),
|
|
17493
|
-
children: copied ? /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "check", className: "w-4 h-4 text-
|
|
17493
|
+
children: copied ? /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "check", className: "w-4 h-4 text-success" }) : /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "copy", className: "w-4 h-4" })
|
|
17494
17494
|
}
|
|
17495
17495
|
)
|
|
17496
17496
|
]
|
|
@@ -17858,12 +17858,12 @@ var init_BloomQuizBlock = __esm({
|
|
|
17858
17858
|
init_useEventBus();
|
|
17859
17859
|
init_cn();
|
|
17860
17860
|
BLOOM_CONFIG = {
|
|
17861
|
-
remember: { color: "bg-
|
|
17862
|
-
understand: { color: "bg-
|
|
17863
|
-
apply: { color: "bg-
|
|
17864
|
-
analyze: { color: "bg-
|
|
17865
|
-
evaluate: { color: "bg-
|
|
17866
|
-
create: { color: "bg-
|
|
17861
|
+
remember: { color: "bg-secondary text-secondary-foreground", bgColor: "bg-muted", label: "Remember" },
|
|
17862
|
+
understand: { color: "bg-info text-info-foreground", bgColor: "bg-info/10", label: "Understand" },
|
|
17863
|
+
apply: { color: "bg-success text-success-foreground", bgColor: "bg-success/10", label: "Apply" },
|
|
17864
|
+
analyze: { color: "bg-warning text-warning-foreground", bgColor: "bg-warning/10", label: "Analyze" },
|
|
17865
|
+
evaluate: { color: "bg-accent text-accent-foreground", bgColor: "bg-accent/10", label: "Evaluate" },
|
|
17866
|
+
create: { color: "bg-primary text-primary-foreground", bgColor: "bg-primary/10", label: "Create" }
|
|
17867
17867
|
};
|
|
17868
17868
|
BloomQuizBlock = ({
|
|
17869
17869
|
level,
|
|
@@ -17889,22 +17889,22 @@ var init_BloomQuizBlock = __esm({
|
|
|
17889
17889
|
"div",
|
|
17890
17890
|
{
|
|
17891
17891
|
className: cn(
|
|
17892
|
-
"rounded-lg border border-
|
|
17892
|
+
"rounded-lg border border-primary p-4 my-4 transition-all",
|
|
17893
17893
|
config.bgColor,
|
|
17894
17894
|
className
|
|
17895
17895
|
),
|
|
17896
17896
|
children: [
|
|
17897
17897
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between mb-3", children: [
|
|
17898
17898
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 flex-wrap", children: [
|
|
17899
|
-
index !== void 0 && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-
|
|
17899
|
+
index !== void 0 && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-muted-foreground font-medium text-sm", children: [
|
|
17900
17900
|
"Question ",
|
|
17901
17901
|
index + 1
|
|
17902
17902
|
] }),
|
|
17903
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: cn(config.color, "text-
|
|
17903
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: cn(config.color, "text-xs px-2 py-1 rounded-full font-medium"), children: config.label })
|
|
17904
17904
|
] }),
|
|
17905
|
-
isAnswered && /* @__PURE__ */ jsxRuntime.jsx(LucideIcons2.CheckCircle, { className: "text-
|
|
17905
|
+
isAnswered && /* @__PURE__ */ jsxRuntime.jsx(LucideIcons2.CheckCircle, { className: "text-success flex-shrink-0", size: 20 })
|
|
17906
17906
|
] }),
|
|
17907
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "font-semibold text-
|
|
17907
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "font-semibold text-primary mb-3 space-y-2", children: questionSegments.map(
|
|
17908
17908
|
(segment, idx) => segment.type === "markdown" ? /* @__PURE__ */ jsxRuntime.jsx(MarkdownContent, { content: segment.content }, `q-md-${idx}`) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
17909
17909
|
CodeBlock,
|
|
17910
17910
|
{
|
|
@@ -17918,13 +17918,13 @@ var init_BloomQuizBlock = __esm({
|
|
|
17918
17918
|
"button",
|
|
17919
17919
|
{
|
|
17920
17920
|
type: "button",
|
|
17921
|
-
className: "inline-flex items-center rounded-md bg-
|
|
17921
|
+
className: "inline-flex items-center rounded-md bg-primary px-3 py-1.5 text-sm font-medium text-primary-foreground hover:bg-primary-hover transition-colors",
|
|
17922
17922
|
onClick: handleReveal,
|
|
17923
17923
|
children: revealed ? "Hide Answer" : "Reveal Answer"
|
|
17924
17924
|
}
|
|
17925
17925
|
),
|
|
17926
|
-
revealed && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rounded-lg bg-
|
|
17927
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-xs text-
|
|
17926
|
+
revealed && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rounded-lg bg-card/80 p-3 text-sm text-foreground shadow-sm border border-primary mt-3 space-y-2", children: [
|
|
17927
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-xs text-muted-foreground mb-1 font-medium uppercase tracking-wide", children: "Answer:" }),
|
|
17928
17928
|
answerSegments.map(
|
|
17929
17929
|
(segment, idx) => segment.type === "markdown" ? /* @__PURE__ */ jsxRuntime.jsx(MarkdownContent, { content: segment.content }, `a-md-${idx}`) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
17930
17930
|
CodeBlock,
|
|
@@ -18198,12 +18198,12 @@ var init_QuizBlock = __esm({
|
|
|
18198
18198
|
}) => {
|
|
18199
18199
|
const { t } = hooks.useTranslate();
|
|
18200
18200
|
const [revealed, setRevealed] = React91.useState(false);
|
|
18201
|
-
return /* @__PURE__ */ jsxRuntime.jsx(Card2, { className: cn("my-4 border-
|
|
18201
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Card2, { className: cn("my-4 border-primary", className), children: /* @__PURE__ */ jsxRuntime.jsxs(VStack, { gap: "sm", className: "p-4", children: [
|
|
18202
18202
|
/* @__PURE__ */ jsxRuntime.jsxs(HStack, { gap: "sm", align: "start", children: [
|
|
18203
|
-
/* @__PURE__ */ jsxRuntime.jsx(Icon, { icon: LucideIcons2.HelpCircle, size: "sm", className: "text-
|
|
18203
|
+
/* @__PURE__ */ jsxRuntime.jsx(Icon, { icon: LucideIcons2.HelpCircle, size: "sm", className: "text-primary mt-0.5 shrink-0" }),
|
|
18204
18204
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", className: "font-medium", children: question })
|
|
18205
18205
|
] }),
|
|
18206
|
-
revealed ? /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "pl-7 pt-2 border-t border-
|
|
18206
|
+
revealed ? /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "pl-7 pt-2 border-t border-border", children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", className: "text-foreground", children: answer }) }) : null,
|
|
18207
18207
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
18208
18208
|
Button,
|
|
18209
18209
|
{
|
|
@@ -20115,7 +20115,7 @@ var init_BookTableOfContents = __esm({
|
|
|
20115
20115
|
className: cn(
|
|
20116
20116
|
"justify-start text-left w-full",
|
|
20117
20117
|
direction === "rtl" && "text-right",
|
|
20118
|
-
isCurrent && "bg-
|
|
20118
|
+
isCurrent && "bg-primary/10 text-primary"
|
|
20119
20119
|
),
|
|
20120
20120
|
children: /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "truncate", children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", children: String(chapter.title ?? "") }) })
|
|
20121
20121
|
},
|
|
@@ -21363,7 +21363,7 @@ function CalendarGrid({
|
|
|
21363
21363
|
border: true,
|
|
21364
21364
|
className: cn(
|
|
21365
21365
|
"cursor-pointer hover:shadow-sm transition-shadow text-xs truncate",
|
|
21366
|
-
color ? color : "bg-
|
|
21366
|
+
color ? color : "bg-primary/10 border-primary/30 text-primary"
|
|
21367
21367
|
),
|
|
21368
21368
|
onClick: (e) => handleEventClick(event, e),
|
|
21369
21369
|
children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "truncate font-medium", children: event.title })
|
|
@@ -21461,7 +21461,7 @@ function CalendarGrid({
|
|
|
21461
21461
|
onClick: () => handleSlotClick(day, time),
|
|
21462
21462
|
className: cn(
|
|
21463
21463
|
"border-l border-border",
|
|
21464
|
-
isToday && "bg-
|
|
21464
|
+
isToday && "bg-primary/10"
|
|
21465
21465
|
),
|
|
21466
21466
|
...longPressEvent ? {
|
|
21467
21467
|
onPointerDown: () => startLongPress(day, time),
|
|
@@ -23477,31 +23477,31 @@ var init_CodeRunnerPanel = __esm({
|
|
|
23477
23477
|
}
|
|
23478
23478
|
)
|
|
23479
23479
|
] }),
|
|
23480
|
-
hasOutput && /* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "rounded-lg border border-
|
|
23480
|
+
hasOutput && /* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "rounded-lg border border-border bg-foreground overflow-hidden", children: [
|
|
23481
23481
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
23482
23482
|
HStack,
|
|
23483
23483
|
{
|
|
23484
23484
|
gap: "sm",
|
|
23485
23485
|
align: "center",
|
|
23486
|
-
className: "px-3 py-2 bg-
|
|
23486
|
+
className: "px-3 py-2 bg-card border-b border-border",
|
|
23487
23487
|
children: [
|
|
23488
|
-
/* @__PURE__ */ jsxRuntime.jsx(LucideIcons2.Terminal, { size: 16, className: "text-
|
|
23489
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-
|
|
23488
|
+
/* @__PURE__ */ jsxRuntime.jsx(LucideIcons2.Terminal, { size: 16, className: "text-muted-foreground" }),
|
|
23489
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-foreground font-medium", children: "Output" })
|
|
23490
23490
|
]
|
|
23491
23491
|
}
|
|
23492
23492
|
),
|
|
23493
|
-
/* @__PURE__ */ jsxRuntime.jsx(VStack, { gap: "none", className: "p-3 font-mono text-sm", children: error ? /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-
|
|
23494
|
-
output?.stdout ? /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-
|
|
23495
|
-
output?.stderr ? /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-
|
|
23496
|
-
!output?.stdout && !output?.stderr ? /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-
|
|
23497
|
-
output && output.testResults.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "mt-3 pt-3 border-t border-
|
|
23498
|
-
test.passed ? /* @__PURE__ */ jsxRuntime.jsx(LucideIcons2.CheckCircle, { size: 14, className: "text-
|
|
23493
|
+
/* @__PURE__ */ jsxRuntime.jsx(VStack, { gap: "none", className: "p-3 font-mono text-sm", children: error ? /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-error whitespace-pre-wrap", children: error }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
23494
|
+
output?.stdout ? /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-background whitespace-pre-wrap", children: output.stdout }) : null,
|
|
23495
|
+
output?.stderr ? /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-error whitespace-pre-wrap", children: output.stderr }) : null,
|
|
23496
|
+
!output?.stdout && !output?.stderr ? /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-background italic", children: "No output" }) : null,
|
|
23497
|
+
output && output.testResults.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "mt-3 pt-3 border-t border-border space-y-2", children: output.testResults.map((test, index) => /* @__PURE__ */ jsxRuntime.jsxs(HStack, { gap: "sm", align: "start", className: "text-xs", children: [
|
|
23498
|
+
test.passed ? /* @__PURE__ */ jsxRuntime.jsx(LucideIcons2.CheckCircle, { size: 14, className: "text-success mt-0.5" }) : /* @__PURE__ */ jsxRuntime.jsx(LucideIcons2.XCircle, { size: 14, className: "text-error mt-0.5" }),
|
|
23499
23499
|
/* @__PURE__ */ jsxRuntime.jsxs(VStack, { gap: "xs", className: "flex-1", children: [
|
|
23500
23500
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
23501
23501
|
Typography,
|
|
23502
23502
|
{
|
|
23503
23503
|
variant: "small",
|
|
23504
|
-
className: test.passed ? "text-
|
|
23504
|
+
className: test.passed ? "text-success" : "text-error",
|
|
23505
23505
|
children: [
|
|
23506
23506
|
"Test ",
|
|
23507
23507
|
index + 1,
|
|
@@ -23510,15 +23510,15 @@ var init_CodeRunnerPanel = __esm({
|
|
|
23510
23510
|
]
|
|
23511
23511
|
}
|
|
23512
23512
|
),
|
|
23513
|
-
/* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "small", className: "text-
|
|
23513
|
+
/* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "small", className: "text-background", children: [
|
|
23514
23514
|
"Input: ",
|
|
23515
23515
|
test.input
|
|
23516
23516
|
] }),
|
|
23517
|
-
/* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "small", className: "text-
|
|
23517
|
+
/* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "small", className: "text-background", children: [
|
|
23518
23518
|
"Expected: ",
|
|
23519
23519
|
test.expectedOutput
|
|
23520
23520
|
] }),
|
|
23521
|
-
/* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "small", className: "text-
|
|
23521
|
+
/* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "small", className: "text-background", children: [
|
|
23522
23522
|
"Actual: ",
|
|
23523
23523
|
test.actualOutput
|
|
23524
23524
|
] })
|
|
@@ -23703,14 +23703,14 @@ var init_ConnectionBlock = __esm({
|
|
|
23703
23703
|
"div",
|
|
23704
23704
|
{
|
|
23705
23705
|
className: cn(
|
|
23706
|
-
"bg-
|
|
23706
|
+
"bg-success/10 border-l-4 border-success rounded-r-lg p-5 mb-6",
|
|
23707
23707
|
className
|
|
23708
23708
|
),
|
|
23709
23709
|
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start gap-3", children: [
|
|
23710
|
-
/* @__PURE__ */ jsxRuntime.jsx(LucideIcons2.Link2, { className: "text-
|
|
23710
|
+
/* @__PURE__ */ jsxRuntime.jsx(LucideIcons2.Link2, { className: "text-success flex-shrink-0 mt-1", size: 20 }),
|
|
23711
23711
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1", children: [
|
|
23712
|
-
/* @__PURE__ */ jsxRuntime.jsx("h4", { className: "font-semibold text-
|
|
23713
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "prose dark:prose-invert prose-sm max-w-none text-
|
|
23712
|
+
/* @__PURE__ */ jsxRuntime.jsx("h4", { className: "font-semibold text-success mb-2", children: "Building On What You Know" }),
|
|
23713
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "prose dark:prose-invert prose-sm max-w-none text-foreground", children: /* @__PURE__ */ jsxRuntime.jsx(MarkdownContent, { content }) })
|
|
23714
23714
|
] })
|
|
23715
23715
|
] })
|
|
23716
23716
|
}
|
|
@@ -23797,7 +23797,7 @@ function CounterStandard({
|
|
|
23797
23797
|
variant: "h1",
|
|
23798
23798
|
className: cn(
|
|
23799
23799
|
sizeStyles8[size].display,
|
|
23800
|
-
"font-bold tabular-nums text-primary
|
|
23800
|
+
"font-bold tabular-nums text-primary"
|
|
23801
23801
|
),
|
|
23802
23802
|
children: resolved.count
|
|
23803
23803
|
}
|
|
@@ -23870,7 +23870,7 @@ function CounterFull({
|
|
|
23870
23870
|
variant: "h1",
|
|
23871
23871
|
className: cn(
|
|
23872
23872
|
sizeStyles8[size].display,
|
|
23873
|
-
"font-bold tabular-nums text-primary
|
|
23873
|
+
"font-bold tabular-nums text-primary"
|
|
23874
23874
|
),
|
|
23875
23875
|
children: resolved.count
|
|
23876
23876
|
}
|
|
@@ -24131,11 +24131,11 @@ var init_DashboardLayout = __esm({
|
|
|
24131
24131
|
className: "h-16 px-4 border-b border-border dark:border-border",
|
|
24132
24132
|
children: [
|
|
24133
24133
|
/* @__PURE__ */ jsxRuntime.jsxs(reactRouterDom.Link, { to: "/", className: "flex items-center gap-2", children: [
|
|
24134
|
-
logo || /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "w-8 h-8 bg-primary
|
|
24134
|
+
logo || /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "w-8 h-8 bg-primary rounded-lg flex items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
24135
24135
|
Typography,
|
|
24136
24136
|
{
|
|
24137
24137
|
variant: "small",
|
|
24138
|
-
className: "text-
|
|
24138
|
+
className: "text-primary-foreground font-bold text-sm",
|
|
24139
24139
|
as: "span",
|
|
24140
24140
|
children: appName.charAt(0).toUpperCase()
|
|
24141
24141
|
}
|
|
@@ -24214,11 +24214,11 @@ var init_DashboardLayout = __esm({
|
|
|
24214
24214
|
className: "hidden @md/dashboard:flex items-center gap-1 overflow-x-auto",
|
|
24215
24215
|
children: [
|
|
24216
24216
|
/* @__PURE__ */ jsxRuntime.jsxs(reactRouterDom.Link, { to: "/", className: "flex items-center gap-2 mr-3 shrink-0", children: [
|
|
24217
|
-
logo || /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "w-7 h-7 bg-primary
|
|
24217
|
+
logo || /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "w-7 h-7 bg-primary rounded-lg flex items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
24218
24218
|
Typography,
|
|
24219
24219
|
{
|
|
24220
24220
|
variant: "small",
|
|
24221
|
-
className: "text-
|
|
24221
|
+
className: "text-primary-foreground font-bold text-xs",
|
|
24222
24222
|
as: "span",
|
|
24223
24223
|
children: appName.charAt(0).toUpperCase()
|
|
24224
24224
|
}
|
|
@@ -24278,8 +24278,8 @@ var init_DashboardLayout = __esm({
|
|
|
24278
24278
|
{
|
|
24279
24279
|
as: "span",
|
|
24280
24280
|
className: cn(
|
|
24281
|
-
"absolute -top-0.5 -right-0.5 min-w-[18px] h-[18px] px-1 rounded-full text-xs font-semibold
|
|
24282
|
-
action.variant === "danger" ? "bg-error" : action.variant === "primary" ? "bg-primary" : "bg-foreground"
|
|
24281
|
+
"absolute -top-0.5 -right-0.5 min-w-[18px] h-[18px] px-1 rounded-full text-xs font-semibold flex items-center justify-center",
|
|
24282
|
+
action.variant === "danger" ? "bg-error text-error-foreground" : action.variant === "primary" ? "bg-primary text-primary-foreground" : "bg-foreground text-background"
|
|
24283
24283
|
),
|
|
24284
24284
|
children: action.badge
|
|
24285
24285
|
}
|
|
@@ -24301,7 +24301,7 @@ var init_DashboardLayout = __esm({
|
|
|
24301
24301
|
Box,
|
|
24302
24302
|
{
|
|
24303
24303
|
as: "span",
|
|
24304
|
-
className: "absolute -top-0.5 -right-0.5 min-w-[18px] h-[18px] px-1 bg-error rounded-full text-xs font-semibold text-
|
|
24304
|
+
className: "absolute -top-0.5 -right-0.5 min-w-[18px] h-[18px] px-1 bg-error rounded-full text-xs font-semibold text-error-foreground flex items-center justify-center",
|
|
24305
24305
|
children: unreadCount > 99 ? "99+" : unreadCount
|
|
24306
24306
|
}
|
|
24307
24307
|
)
|
|
@@ -24584,7 +24584,7 @@ function SubMenu({
|
|
|
24584
24584
|
),
|
|
24585
24585
|
children: [
|
|
24586
24586
|
item.icon && (typeof item.icon === "string" ? /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: item.icon, size: "sm", className: "flex-shrink-0" }) : /* @__PURE__ */ jsxRuntime.jsx(Icon, { icon: item.icon, size: "sm", className: "flex-shrink-0" })),
|
|
24587
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: cn("flex-1", isDanger && "text-
|
|
24587
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: cn("flex-1", isDanger && "text-error"), children: item.label }),
|
|
24588
24588
|
item.badge !== void 0 && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-auto text-xs font-medium", children: item.badge })
|
|
24589
24589
|
]
|
|
24590
24590
|
},
|
|
@@ -24641,7 +24641,7 @@ function MenuItemRow({
|
|
|
24641
24641
|
Typography,
|
|
24642
24642
|
{
|
|
24643
24643
|
variant: "small",
|
|
24644
|
-
className: cn("flex-1", isDanger && "text-
|
|
24644
|
+
className: cn("flex-1", isDanger && "text-error"),
|
|
24645
24645
|
children: item.label
|
|
24646
24646
|
}
|
|
24647
24647
|
),
|
|
@@ -25409,20 +25409,24 @@ function DataGrid({
|
|
|
25409
25409
|
const bodyFields = fieldDefs.filter((f3) => f3 !== titleField && !badgeFields.includes(f3));
|
|
25410
25410
|
const primaryActions = actionDefs.filter((a) => a.variant !== "danger");
|
|
25411
25411
|
const dangerActions = actionDefs.filter((a) => a.variant === "danger");
|
|
25412
|
-
const
|
|
25413
|
-
e.stopPropagation();
|
|
25414
|
-
const payload = {
|
|
25415
|
-
id: itemData.id,
|
|
25416
|
-
row: itemData
|
|
25417
|
-
};
|
|
25418
|
-
eventBus.emit(`UI:${action.event}`, payload);
|
|
25412
|
+
const fireAction = (action, itemData) => {
|
|
25419
25413
|
if (action.navigatesTo) {
|
|
25420
25414
|
const url = action.navigatesTo.replace(
|
|
25421
25415
|
/\{\{row\.(\w+(?:\.\w+)*)\}\}/g,
|
|
25422
25416
|
(_, field) => String(itemData[field] ?? "")
|
|
25423
25417
|
);
|
|
25424
|
-
eventBus.emit("UI:NAVIGATE", { url });
|
|
25418
|
+
eventBus.emit("UI:NAVIGATE", { url, row: itemData });
|
|
25419
|
+
return;
|
|
25425
25420
|
}
|
|
25421
|
+
const payload = {
|
|
25422
|
+
id: itemData.id,
|
|
25423
|
+
row: itemData
|
|
25424
|
+
};
|
|
25425
|
+
eventBus.emit(`UI:${action.event}`, payload);
|
|
25426
|
+
};
|
|
25427
|
+
const handleActionClick = (action, itemData) => (e) => {
|
|
25428
|
+
e.stopPropagation();
|
|
25429
|
+
fireAction(action, itemData);
|
|
25426
25430
|
};
|
|
25427
25431
|
const hasRenderProp = typeof children === "function";
|
|
25428
25432
|
React91.useEffect(() => {
|
|
@@ -25524,10 +25528,7 @@ function DataGrid({
|
|
|
25524
25528
|
label: action.label,
|
|
25525
25529
|
icon: action.icon,
|
|
25526
25530
|
event: action.event,
|
|
25527
|
-
onClick: () =>
|
|
25528
|
-
id: itemData.id,
|
|
25529
|
-
row: itemData
|
|
25530
|
-
})
|
|
25531
|
+
onClick: () => fireAction(action, itemData)
|
|
25531
25532
|
}))
|
|
25532
25533
|
}
|
|
25533
25534
|
)
|
|
@@ -25580,13 +25581,13 @@ function DataGrid({
|
|
|
25580
25581
|
}
|
|
25581
25582
|
),
|
|
25582
25583
|
/* @__PURE__ */ jsxRuntime.jsxs(VStack, { gap: "xs", className: "flex-1 min-w-0", children: [
|
|
25583
|
-
titleValue !== void 0 && titleValue !== null && /* @__PURE__ */ jsxRuntime.jsxs(HStack, { gap: "xs", className: "items-center", children: [
|
|
25584
|
+
titleValue !== void 0 && titleValue !== null && /* @__PURE__ */ jsxRuntime.jsxs(HStack, { gap: "xs", className: "items-center min-w-0", children: [
|
|
25584
25585
|
titleField?.icon && renderIconInput(titleField.icon, { size: "sm", className: "text-primary flex-shrink-0" }),
|
|
25585
25586
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
25586
25587
|
Typography,
|
|
25587
25588
|
{
|
|
25588
25589
|
variant: titleField?.variant === "h3" ? "h3" : "h4",
|
|
25589
|
-
className: "font-semibold truncate",
|
|
25590
|
+
className: "font-semibold truncate min-w-0",
|
|
25590
25591
|
children: String(titleValue)
|
|
25591
25592
|
}
|
|
25592
25593
|
)
|
|
@@ -25644,7 +25645,7 @@ function DataGrid({
|
|
|
25644
25645
|
)
|
|
25645
25646
|
] }, field.name);
|
|
25646
25647
|
}) }) }),
|
|
25647
|
-
primaryActions.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "px-4 py-3 mt-auto border-t border-border", children: /* @__PURE__ */ jsxRuntime.jsxs(HStack, { gap: "sm", className: "justify-end", children: [
|
|
25648
|
+
primaryActions.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "px-4 py-3 mt-auto border-t border-border", children: /* @__PURE__ */ jsxRuntime.jsxs(HStack, { gap: "sm", className: "justify-end flex-wrap", children: [
|
|
25648
25649
|
(maxInlineActions != null ? primaryActions.slice(0, maxInlineActions) : primaryActions).map((action, idx) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
25649
25650
|
Button,
|
|
25650
25651
|
{
|
|
@@ -25669,10 +25670,7 @@ function DataGrid({
|
|
|
25669
25670
|
label: action.label,
|
|
25670
25671
|
icon: action.icon,
|
|
25671
25672
|
event: action.event,
|
|
25672
|
-
onClick: () =>
|
|
25673
|
-
id: itemData.id,
|
|
25674
|
-
row: itemData
|
|
25675
|
-
})
|
|
25673
|
+
onClick: () => fireAction(action, itemData)
|
|
25676
25674
|
}))
|
|
25677
25675
|
}
|
|
25678
25676
|
)
|
|
@@ -27599,8 +27597,8 @@ var init_RelationSelect = __esm({
|
|
|
27599
27597
|
disabled,
|
|
27600
27598
|
className: cn(
|
|
27601
27599
|
"w-full justify-between font-normal",
|
|
27602
|
-
error && "border-
|
|
27603
|
-
isOpen && "ring-2 ring-primary
|
|
27600
|
+
error && "border-error/50 focus:border-error focus:ring-error",
|
|
27601
|
+
isOpen && "ring-2 ring-primary border-primary"
|
|
27604
27602
|
),
|
|
27605
27603
|
children: [
|
|
27606
27604
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -27680,7 +27678,7 @@ var init_RelationSelect = __esm({
|
|
|
27680
27678
|
paddingY: "sm",
|
|
27681
27679
|
className: cn(
|
|
27682
27680
|
"text-left text-sm hover:bg-muted focus:outline-none focus:bg-muted",
|
|
27683
|
-
option.value === value && "bg-primary
|
|
27681
|
+
option.value === value && "bg-primary/10 text-primary",
|
|
27684
27682
|
option.disabled && "opacity-50 cursor-not-allowed"
|
|
27685
27683
|
),
|
|
27686
27684
|
onClick: () => handleSelect(option),
|
|
@@ -27837,7 +27835,7 @@ var init_SidePanel = __esm({
|
|
|
27837
27835
|
showOverlay && /* @__PURE__ */ jsxRuntime.jsx(Presence, { show: isOpen, animation: "overlay", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
27838
27836
|
Box,
|
|
27839
27837
|
{
|
|
27840
|
-
className: "fixed inset-0 bg-
|
|
27838
|
+
className: "fixed inset-0 bg-background/80 backdrop-blur-sm z-40 lg:hidden",
|
|
27841
27839
|
onClick: handleClose
|
|
27842
27840
|
}
|
|
27843
27841
|
) }),
|
|
@@ -28204,7 +28202,7 @@ var init_WizardNavigation = __esm({
|
|
|
28204
28202
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "chevron-left", size: "sm" }),
|
|
28205
28203
|
resolvedBackLabel
|
|
28206
28204
|
] }) : /* @__PURE__ */ jsxRuntime.jsx(Box, {}),
|
|
28207
|
-
/* @__PURE__ */ jsxRuntime.jsx(HStack, { align: "center", gap: "sm", children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", className: "text-
|
|
28205
|
+
/* @__PURE__ */ jsxRuntime.jsx(HStack, { align: "center", gap: "sm", children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", className: "text-muted-foreground", children: t("wizard.stepOf", { current: String(currentStep + 1), total: String(totalSteps) }) }) }),
|
|
28208
28206
|
isLastStep && showComplete ? /* @__PURE__ */ jsxRuntime.jsx(Button, { variant: "primary", onClick: handleComplete, disabled: !isValid, children: resolvedCompleteLabel }) : showNext ? /* @__PURE__ */ jsxRuntime.jsxs(Button, { variant: "primary", onClick: handleNext, disabled: !isValid, children: [
|
|
28209
28207
|
resolvedNextLabel,
|
|
28210
28208
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "chevron-right", size: "sm" })
|
|
@@ -30361,6 +30359,7 @@ var init_Lightbox = __esm({
|
|
|
30361
30359
|
{
|
|
30362
30360
|
className: cn(
|
|
30363
30361
|
"fixed inset-0 z-50 flex items-center justify-center",
|
|
30362
|
+
// eslint-disable-next-line almadar/no-hardcoded-colors -- media overlay: lightbox scrim behind images
|
|
30364
30363
|
"bg-black bg-opacity-90",
|
|
30365
30364
|
className
|
|
30366
30365
|
),
|
|
@@ -30383,7 +30382,7 @@ var init_Lightbox = __esm({
|
|
|
30383
30382
|
"p-2 rounded-full",
|
|
30384
30383
|
"text-[var(--color-foreground)] bg-[var(--color-card)]",
|
|
30385
30384
|
"hover:bg-opacity-70 transition-opacity",
|
|
30386
|
-
"focus:outline-none focus:ring-2 focus:ring-
|
|
30385
|
+
"focus:outline-none focus:ring-2 focus:ring-ring"
|
|
30387
30386
|
),
|
|
30388
30387
|
"aria-label": t("aria.closeModal"),
|
|
30389
30388
|
children: /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "x", className: "w-6 h-6" })
|
|
@@ -30402,7 +30401,7 @@ var init_Lightbox = __esm({
|
|
|
30402
30401
|
"p-2 rounded-full",
|
|
30403
30402
|
"text-[var(--color-foreground)] bg-[var(--color-card)]",
|
|
30404
30403
|
"hover:bg-opacity-70 transition-opacity",
|
|
30405
|
-
"focus:outline-none focus:ring-2 focus:ring-
|
|
30404
|
+
"focus:outline-none focus:ring-2 focus:ring-ring"
|
|
30406
30405
|
),
|
|
30407
30406
|
"aria-label": t("aria.previousImage"),
|
|
30408
30407
|
children: /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "chevron-left", className: "w-8 h-8" })
|
|
@@ -30439,7 +30438,7 @@ var init_Lightbox = __esm({
|
|
|
30439
30438
|
"p-2 rounded-full",
|
|
30440
30439
|
"text-[var(--color-foreground)] bg-[var(--color-card)]",
|
|
30441
30440
|
"hover:bg-opacity-70 transition-opacity",
|
|
30442
|
-
"focus:outline-none focus:ring-2 focus:ring-
|
|
30441
|
+
"focus:outline-none focus:ring-2 focus:ring-ring"
|
|
30443
30442
|
),
|
|
30444
30443
|
"aria-label": t("aria.nextImage"),
|
|
30445
30444
|
children: /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "chevron-right", className: "w-8 h-8" })
|
|
@@ -30659,7 +30658,7 @@ function TableView({
|
|
|
30659
30658
|
col.key
|
|
30660
30659
|
);
|
|
30661
30660
|
}),
|
|
30662
|
-
hasActions && /* @__PURE__ */ jsxRuntime.jsx(Box, { "aria-hidden": true })
|
|
30661
|
+
hasActions && /* @__PURE__ */ jsxRuntime.jsx(Box, { "aria-hidden": true, className: "sticky right-0 bg-[var(--color-surface-subtle)]" })
|
|
30663
30662
|
]
|
|
30664
30663
|
}
|
|
30665
30664
|
);
|
|
@@ -30703,41 +30702,54 @@ function TableView({
|
|
|
30703
30702
|
}
|
|
30704
30703
|
return /* @__PURE__ */ jsxRuntime.jsx(Box, { role: "cell", className: cellBase, children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate", children: formatCell(raw, col.format) }) }, col.key);
|
|
30705
30704
|
}),
|
|
30706
|
-
itemActions && itemActions.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
30707
|
-
|
|
30708
|
-
|
|
30709
|
-
|
|
30710
|
-
|
|
30711
|
-
|
|
30712
|
-
|
|
30713
|
-
|
|
30714
|
-
"
|
|
30715
|
-
|
|
30716
|
-
|
|
30717
|
-
|
|
30718
|
-
|
|
30719
|
-
|
|
30720
|
-
|
|
30721
|
-
|
|
30722
|
-
|
|
30723
|
-
|
|
30724
|
-
|
|
30725
|
-
|
|
30726
|
-
|
|
30727
|
-
|
|
30728
|
-
|
|
30729
|
-
|
|
30730
|
-
|
|
30731
|
-
|
|
30732
|
-
|
|
30733
|
-
|
|
30734
|
-
|
|
30735
|
-
|
|
30736
|
-
|
|
30737
|
-
|
|
30738
|
-
|
|
30739
|
-
|
|
30740
|
-
|
|
30705
|
+
itemActions && itemActions.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
30706
|
+
HStack,
|
|
30707
|
+
{
|
|
30708
|
+
gap: "xs",
|
|
30709
|
+
className: cn(
|
|
30710
|
+
// Pinned: the fixed column tracks routinely overflow the caller's
|
|
30711
|
+
// scroll container, which used to leave the actions off-screen.
|
|
30712
|
+
// Opaque so scrolled cells pass underneath it.
|
|
30713
|
+
"justify-end flex-shrink-0 sticky right-0 z-[1] transition-colors",
|
|
30714
|
+
lk.striped && index % 2 === 1 ? "bg-[var(--color-surface-subtle)]" : "bg-[var(--color-card)] group-hover:bg-[var(--color-surface-subtle)]"
|
|
30715
|
+
),
|
|
30716
|
+
children: [
|
|
30717
|
+
(maxInlineActions != null ? itemActions.slice(0, maxInlineActions) : itemActions).map((action, i) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
30718
|
+
Button,
|
|
30719
|
+
{
|
|
30720
|
+
variant: action.variant ?? "ghost",
|
|
30721
|
+
size: "sm",
|
|
30722
|
+
onClick: handleActionClick(action, row),
|
|
30723
|
+
"data-testid": `action-${action.event}`,
|
|
30724
|
+
"data-row-id": String(row.id),
|
|
30725
|
+
className: cn(action.variant === "danger" && "text-error hover:bg-error/10"),
|
|
30726
|
+
children: [
|
|
30727
|
+
action.icon && renderIconInput3(action.icon, { size: "xs", className: "mr-1" }),
|
|
30728
|
+
action.label
|
|
30729
|
+
]
|
|
30730
|
+
},
|
|
30731
|
+
i
|
|
30732
|
+
)),
|
|
30733
|
+
maxInlineActions != null && itemActions.length > maxInlineActions && /* @__PURE__ */ jsxRuntime.jsx(
|
|
30734
|
+
Menu,
|
|
30735
|
+
{
|
|
30736
|
+
position: "bottom-end",
|
|
30737
|
+
trigger: /* @__PURE__ */ jsxRuntime.jsx(Button, { variant: "ghost", size: "sm", "aria-label": t("common.actions"), "data-testid": "action-overflow", children: /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "more-horizontal", size: "xs" }) }),
|
|
30738
|
+
items: itemActions.slice(maxInlineActions).map((action) => ({
|
|
30739
|
+
label: action.label,
|
|
30740
|
+
icon: action.icon,
|
|
30741
|
+
event: action.event,
|
|
30742
|
+
variant: action.variant === "danger" ? "danger" : "default",
|
|
30743
|
+
onClick: () => eventBus.emit(`UI:${action.event}`, {
|
|
30744
|
+
id: row.id,
|
|
30745
|
+
row
|
|
30746
|
+
})
|
|
30747
|
+
}))
|
|
30748
|
+
}
|
|
30749
|
+
)
|
|
30750
|
+
]
|
|
30751
|
+
}
|
|
30752
|
+
)
|
|
30741
30753
|
]
|
|
30742
30754
|
}
|
|
30743
30755
|
);
|
|
@@ -33512,6 +33524,7 @@ var init_QrScanner = __esm({
|
|
|
33512
33524
|
overflow: "hidden",
|
|
33513
33525
|
rounded: "sm",
|
|
33514
33526
|
className: cn(
|
|
33527
|
+
// eslint-disable-next-line almadar/no-hardcoded-colors -- media overlay: always over a dark scrim
|
|
33515
33528
|
"bg-black",
|
|
33516
33529
|
"aspect-square w-full max-w-md",
|
|
33517
33530
|
className
|
|
@@ -33576,7 +33589,9 @@ var init_QrScanner = __esm({
|
|
|
33576
33589
|
type: "button",
|
|
33577
33590
|
onClick: togglePause,
|
|
33578
33591
|
className: cn(
|
|
33592
|
+
// eslint-disable-next-line almadar/no-hardcoded-colors -- media overlay: always over a dark scrim
|
|
33579
33593
|
"rounded-full bg-black bg-opacity-60 p-2 text-white",
|
|
33594
|
+
// eslint-disable-next-line almadar/no-hardcoded-colors -- media overlay: always over a dark scrim
|
|
33580
33595
|
"hover:bg-opacity-80 focus:outline-none focus:ring-2 focus:ring-white"
|
|
33581
33596
|
),
|
|
33582
33597
|
"aria-label": isPaused ? t("qrScanner.resumeScanning") : t("qrScanner.pauseScanning"),
|
|
@@ -33589,7 +33604,9 @@ var init_QrScanner = __esm({
|
|
|
33589
33604
|
type: "button",
|
|
33590
33605
|
onClick: toggleFacing,
|
|
33591
33606
|
className: cn(
|
|
33607
|
+
// eslint-disable-next-line almadar/no-hardcoded-colors -- media overlay: always over a dark scrim
|
|
33592
33608
|
"rounded-full bg-black bg-opacity-60 p-2 text-white",
|
|
33609
|
+
// eslint-disable-next-line almadar/no-hardcoded-colors -- media overlay: always over a dark scrim
|
|
33593
33610
|
"hover:bg-opacity-80 focus:outline-none focus:ring-2 focus:ring-white"
|
|
33594
33611
|
),
|
|
33595
33612
|
"aria-label": currentFacing === "environment" ? t("qrScanner.switchToFrontCamera") : t("qrScanner.switchToRearCamera"),
|
|
@@ -33602,7 +33619,9 @@ var init_QrScanner = __esm({
|
|
|
33602
33619
|
type: "button",
|
|
33603
33620
|
onClick: handleMockScan,
|
|
33604
33621
|
className: cn(
|
|
33622
|
+
// eslint-disable-next-line almadar/no-hardcoded-colors -- media overlay: always over a dark scrim
|
|
33605
33623
|
"rounded-full bg-black bg-opacity-60 px-3 py-2 text-xs text-white",
|
|
33624
|
+
// eslint-disable-next-line almadar/no-hardcoded-colors -- media overlay: always over a dark scrim
|
|
33606
33625
|
"hover:bg-opacity-80 focus:outline-none focus:ring-2 focus:ring-white"
|
|
33607
33626
|
),
|
|
33608
33627
|
"aria-label": t("aria.mockScanDev"),
|
|
@@ -38419,19 +38438,19 @@ var init_ReflectionBlock = __esm({
|
|
|
38419
38438
|
"div",
|
|
38420
38439
|
{
|
|
38421
38440
|
className: cn(
|
|
38422
|
-
"my-6 border-l-4 border-
|
|
38441
|
+
"my-6 border-l-4 border-warning bg-warning/10 rounded-r-lg p-4",
|
|
38423
38442
|
className
|
|
38424
38443
|
),
|
|
38425
38444
|
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start gap-3", children: [
|
|
38426
|
-
/* @__PURE__ */ jsxRuntime.jsx(LucideIcons2.PauseCircle, { className: "text-
|
|
38445
|
+
/* @__PURE__ */ jsxRuntime.jsx(LucideIcons2.PauseCircle, { className: "text-warning flex-shrink-0 mt-1", size: 20 }),
|
|
38427
38446
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1", children: [
|
|
38428
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "font-medium text-
|
|
38429
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-
|
|
38447
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "font-medium text-warning mb-2", children: "Pause & Reflect" }),
|
|
38448
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-foreground text-sm mb-3", children: prompt }),
|
|
38430
38449
|
isExpanded ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
38431
38450
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
38432
38451
|
"textarea",
|
|
38433
38452
|
{
|
|
38434
|
-
className: "w-full p-2 border border-
|
|
38453
|
+
className: "w-full p-2 border border-input rounded text-sm bg-card text-foreground focus:ring-2 focus:ring-ring focus:border-transparent",
|
|
38435
38454
|
placeholder: "Your thoughts...",
|
|
38436
38455
|
value: note,
|
|
38437
38456
|
onChange: (e) => setNote(e.target.value),
|
|
@@ -38442,7 +38461,7 @@ var init_ReflectionBlock = __esm({
|
|
|
38442
38461
|
"button",
|
|
38443
38462
|
{
|
|
38444
38463
|
onClick: handleSave,
|
|
38445
|
-
className: "mt-2 text-sm px-3 py-1 bg-
|
|
38464
|
+
className: "mt-2 text-sm px-3 py-1 bg-warning text-warning-foreground rounded hover:opacity-90 transition-colors",
|
|
38446
38465
|
children: "Save & Continue"
|
|
38447
38466
|
}
|
|
38448
38467
|
)
|
|
@@ -38450,7 +38469,7 @@ var init_ReflectionBlock = __esm({
|
|
|
38450
38469
|
"button",
|
|
38451
38470
|
{
|
|
38452
38471
|
onClick: () => setIsExpanded(true),
|
|
38453
|
-
className: "text-sm text-
|
|
38472
|
+
className: "text-sm text-warning hover:underline",
|
|
38454
38473
|
children: savedNote ? "\u2713 Answered \xB7 Edit" : "Answer this question"
|
|
38455
38474
|
}
|
|
38456
38475
|
)
|
|
@@ -38736,7 +38755,7 @@ function DataTable({
|
|
|
38736
38755
|
)),
|
|
38737
38756
|
rowActions && /* @__PURE__ */ jsxRuntime.jsx("th", { className: "w-12 px-4 py-3" })
|
|
38738
38757
|
] }) }),
|
|
38739
|
-
/* @__PURE__ */ jsxRuntime.jsx("tbody", { className: "divide-y divide-
|
|
38758
|
+
/* @__PURE__ */ jsxRuntime.jsx("tbody", { className: "divide-y divide-border", children: isLoading ? /* @__PURE__ */ jsxRuntime.jsx("tr", { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
38740
38759
|
"td",
|
|
38741
38760
|
{
|
|
38742
38761
|
colSpan: normalizedColumns.length + (selectable ? 1 : 0) + (rowActions ? 1 : 0),
|
|
@@ -39056,6 +39075,16 @@ function normalizeFieldDefs(fields) {
|
|
|
39056
39075
|
return String(f3);
|
|
39057
39076
|
});
|
|
39058
39077
|
}
|
|
39078
|
+
function buildFieldLabelMap(fields) {
|
|
39079
|
+
const map = {};
|
|
39080
|
+
if (!fields) return map;
|
|
39081
|
+
for (const f3 of fields) {
|
|
39082
|
+
if (typeof f3 === "object" && "key" in f3 && f3.header !== void 0 && f3.header !== "") {
|
|
39083
|
+
map[f3.key] = f3.header;
|
|
39084
|
+
}
|
|
39085
|
+
}
|
|
39086
|
+
return map;
|
|
39087
|
+
}
|
|
39059
39088
|
function buildFieldTypeMap(fields) {
|
|
39060
39089
|
const map = {};
|
|
39061
39090
|
if (!fields) return map;
|
|
@@ -39107,7 +39136,9 @@ var init_DetailPanel = __esm({
|
|
|
39107
39136
|
};
|
|
39108
39137
|
const effectiveFieldNames = isFieldDefArray(propFields) ? normalizeFieldDefs(propFields) : fieldNames;
|
|
39109
39138
|
const fieldTypeMap = isFieldDefArray(propFields) ? buildFieldTypeMap(propFields) : {};
|
|
39110
|
-
|
|
39139
|
+
const fieldLabelMap = isFieldDefArray(propFields) ? buildFieldLabelMap(propFields) : {};
|
|
39140
|
+
const labelFor = (field) => fieldLabelMap[field] ?? formatFieldLabel(field);
|
|
39141
|
+
const handleActionClick = React91.useCallback(
|
|
39111
39142
|
(action, data2) => {
|
|
39112
39143
|
if (action.navigatesTo) {
|
|
39113
39144
|
const url = action.navigatesTo.replace(
|
|
@@ -39142,7 +39173,7 @@ var init_DetailPanel = __esm({
|
|
|
39142
39173
|
if (typeof field === "string") {
|
|
39143
39174
|
const value = getNestedValue(normalizedData, field);
|
|
39144
39175
|
return {
|
|
39145
|
-
label:
|
|
39176
|
+
label: labelFor(field),
|
|
39146
39177
|
value: formatFieldValue(value, field),
|
|
39147
39178
|
icon: getFieldIcon(field)
|
|
39148
39179
|
};
|
|
@@ -39153,7 +39184,10 @@ var init_DetailPanel = __esm({
|
|
|
39153
39184
|
}
|
|
39154
39185
|
if (normalizedData && effectiveFieldNames) {
|
|
39155
39186
|
const primaryField = effectiveFieldNames[0];
|
|
39156
|
-
|
|
39187
|
+
const titleDerivedFromPrimary = Boolean(
|
|
39188
|
+
!title && primaryField && normalizedData[primaryField]
|
|
39189
|
+
);
|
|
39190
|
+
if (titleDerivedFromPrimary) {
|
|
39157
39191
|
title = String(normalizedData[primaryField]);
|
|
39158
39192
|
}
|
|
39159
39193
|
const statusFields = effectiveFieldNames.filter(
|
|
@@ -39172,16 +39206,16 @@ var init_DetailPanel = __esm({
|
|
|
39172
39206
|
(f3) => f3.toLowerCase().includes("description") || f3.toLowerCase().includes("note")
|
|
39173
39207
|
);
|
|
39174
39208
|
const otherFields = effectiveFieldNames.filter(
|
|
39175
|
-
(f3) => f3 !== primaryField && !statusFields.includes(f3) && !progressFields.includes(f3) && !metricFields.includes(f3) && !dateFields.includes(f3) && !descriptionFields.includes(f3)
|
|
39209
|
+
(f3) => (!titleDerivedFromPrimary || f3 !== primaryField) && !statusFields.includes(f3) && !progressFields.includes(f3) && !metricFields.includes(f3) && !dateFields.includes(f3) && !descriptionFields.includes(f3)
|
|
39176
39210
|
);
|
|
39177
39211
|
sections = [];
|
|
39178
39212
|
if (statusFields.length > 0 || otherFields.length > 0) {
|
|
39179
39213
|
const overviewFields = [];
|
|
39180
|
-
[...statusFields, ...otherFields
|
|
39214
|
+
[...statusFields, ...otherFields].forEach((field) => {
|
|
39181
39215
|
const value = getNestedValue(normalizedData, field);
|
|
39182
39216
|
if (value !== void 0 && value !== null) {
|
|
39183
39217
|
overviewFields.push({
|
|
39184
|
-
label:
|
|
39218
|
+
label: labelFor(field),
|
|
39185
39219
|
value: renderRichFieldValue(value, field, fieldTypeMap[field]),
|
|
39186
39220
|
icon: getFieldIcon(field)
|
|
39187
39221
|
});
|
|
@@ -39197,7 +39231,7 @@ var init_DetailPanel = __esm({
|
|
|
39197
39231
|
const value = getNestedValue(normalizedData, field);
|
|
39198
39232
|
if (value !== void 0 && value !== null) {
|
|
39199
39233
|
metricsFields.push({
|
|
39200
|
-
label:
|
|
39234
|
+
label: labelFor(field),
|
|
39201
39235
|
value: renderRichFieldValue(value, field, fieldTypeMap[field]),
|
|
39202
39236
|
icon: getFieldIcon(field)
|
|
39203
39237
|
});
|
|
@@ -39213,7 +39247,7 @@ var init_DetailPanel = __esm({
|
|
|
39213
39247
|
const value = getNestedValue(normalizedData, field);
|
|
39214
39248
|
if (value !== void 0 && value !== null) {
|
|
39215
39249
|
timelineFields.push({
|
|
39216
|
-
label:
|
|
39250
|
+
label: labelFor(field),
|
|
39217
39251
|
value: renderRichFieldValue(value, field, fieldTypeMap[field]),
|
|
39218
39252
|
icon: getFieldIcon(field)
|
|
39219
39253
|
});
|
|
@@ -39229,7 +39263,7 @@ var init_DetailPanel = __esm({
|
|
|
39229
39263
|
const value = getNestedValue(normalizedData, field);
|
|
39230
39264
|
if (value !== void 0 && value !== null) {
|
|
39231
39265
|
descFields.push({
|
|
39232
|
-
label:
|
|
39266
|
+
label: labelFor(field),
|
|
39233
39267
|
value: renderRichFieldValue(value, field, fieldTypeMap[field]),
|
|
39234
39268
|
icon: getFieldIcon(field)
|
|
39235
39269
|
});
|
|
@@ -39277,7 +39311,7 @@ var init_DetailPanel = __esm({
|
|
|
39277
39311
|
if (typeof field === "string") {
|
|
39278
39312
|
const value = normalizedData ? getNestedValue(normalizedData, field) : void 0;
|
|
39279
39313
|
allFields.push({
|
|
39280
|
-
label:
|
|
39314
|
+
label: labelFor(field),
|
|
39281
39315
|
value: renderRichFieldValue(value, field, fieldTypeMap[field]),
|
|
39282
39316
|
icon: getFieldIcon(field)
|
|
39283
39317
|
});
|
|
@@ -39299,8 +39333,9 @@ var init_DetailPanel = __esm({
|
|
|
39299
39333
|
{
|
|
39300
39334
|
variant: action.variant || "secondary",
|
|
39301
39335
|
size: "sm",
|
|
39302
|
-
action: action.event,
|
|
39336
|
+
action: action.navigatesTo ? void 0 : action.event,
|
|
39303
39337
|
actionPayload: { row: normalizedData },
|
|
39338
|
+
onClick: action.navigatesTo ? () => handleActionClick(action, normalizedData) : void 0,
|
|
39304
39339
|
icon: action.icon,
|
|
39305
39340
|
"data-testid": action.event ? `action-${action.event}` : void 0,
|
|
39306
39341
|
"data-row-id": normalizedData?.id !== void 0 ? String(normalizedData.id) : void 0,
|
|
@@ -41343,8 +41378,9 @@ var init_MediaGallery = __esm({
|
|
|
41343
41378
|
)
|
|
41344
41379
|
}
|
|
41345
41380
|
),
|
|
41346
|
-
item.caption &&
|
|
41347
|
-
|
|
41381
|
+
item.caption && // eslint-disable-next-line almadar/no-hardcoded-colors -- media overlay: caption scrim over image
|
|
41382
|
+
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "absolute bottom-0 left-0 right-0 p-2 bg-gradient-to-t from-black/60 to-transparent", children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", className: "text-white truncate", children: item.caption }) }),
|
|
41383
|
+
selectable && isSelected && /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "absolute top-2 right-2 w-5 h-5 rounded-full bg-primary flex items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", className: "text-primary-foreground text-xs", children: "\u2713" }) })
|
|
41348
41384
|
]
|
|
41349
41385
|
},
|
|
41350
41386
|
item.id
|
|
@@ -41373,7 +41409,7 @@ var init_MediaGallery = __esm({
|
|
|
41373
41409
|
size: "sm",
|
|
41374
41410
|
icon: LucideIcons2.X,
|
|
41375
41411
|
action: "LIGHTBOX_CLOSE",
|
|
41376
|
-
className: "text-
|
|
41412
|
+
className: "text-foreground hover:bg-muted/50"
|
|
41377
41413
|
}
|
|
41378
41414
|
) }),
|
|
41379
41415
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -41384,7 +41420,7 @@ var init_MediaGallery = __esm({
|
|
|
41384
41420
|
className: "max-w-full max-h-[80vh] object-contain rounded-md"
|
|
41385
41421
|
}
|
|
41386
41422
|
),
|
|
41387
|
-
lightboxItem.caption && /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", className: "text-
|
|
41423
|
+
lightboxItem.caption && /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", className: "text-foreground mt-3 text-center", children: lightboxItem.caption })
|
|
41388
41424
|
]
|
|
41389
41425
|
}
|
|
41390
41426
|
)
|
|
@@ -41845,7 +41881,7 @@ function WalkMinimap() {
|
|
|
41845
41881
|
{
|
|
41846
41882
|
variant,
|
|
41847
41883
|
size: "sm",
|
|
41848
|
-
className: `flex-shrink-0 text-[9px] ${isActive ? "ring-1 ring-
|
|
41884
|
+
className: `flex-shrink-0 text-[9px] ${isActive ? "ring-1 ring-info" : ""}`,
|
|
41849
41885
|
children: [
|
|
41850
41886
|
isDone ? "\u2713" : isActive ? "\u25CF" : "\u25CB",
|
|
41851
41887
|
" ",
|
|
@@ -41986,13 +42022,13 @@ function WalkMinimap() {
|
|
|
41986
42022
|
})
|
|
41987
42023
|
] }) }),
|
|
41988
42024
|
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "px-2 py-1 border-t border-border", children: /* @__PURE__ */ jsxRuntime.jsxs(HStack, { gap: "sm", className: "items-center justify-between", children: [
|
|
41989
|
-
/* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "caption", className: "text-xs font-mono text-
|
|
42025
|
+
/* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "caption", className: "text-xs font-mono text-success", children: [
|
|
41990
42026
|
"Engine: ",
|
|
41991
42027
|
engineCount,
|
|
41992
42028
|
"/",
|
|
41993
42029
|
totalTransitions
|
|
41994
42030
|
] }),
|
|
41995
|
-
domCount > 0 && /* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "caption", className: "text-xs font-mono text-
|
|
42031
|
+
domCount > 0 && /* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "caption", className: "text-xs font-mono text-info", children: [
|
|
41996
42032
|
"DOM: ",
|
|
41997
42033
|
domCount
|
|
41998
42034
|
] }),
|
|
@@ -42025,13 +42061,13 @@ function TraitsTab({ traits: traits2 }) {
|
|
|
42025
42061
|
const accordionItems = traits2.map((trait) => ({
|
|
42026
42062
|
id: trait.id,
|
|
42027
42063
|
header: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 w-full", children: [
|
|
42028
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", weight: "semibold", className: "text-
|
|
42064
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", weight: "semibold", className: "text-primary", children: trait.name }),
|
|
42029
42065
|
/* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "success", size: "sm", children: trait.currentState }),
|
|
42030
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-
|
|
42066
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground ml-auto", children: t("debug.transitionsCount", { count: trait.transitionCount }) })
|
|
42031
42067
|
] }),
|
|
42032
42068
|
content: /* @__PURE__ */ jsxRuntime.jsxs(Stack, { gap: "sm", children: [
|
|
42033
42069
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
42034
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-
|
|
42070
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-muted-foreground mb-2", children: t("debug.states") }),
|
|
42035
42071
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-1", children: trait.states.map((state) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
42036
42072
|
Badge,
|
|
42037
42073
|
{
|
|
@@ -42043,18 +42079,18 @@ function TraitsTab({ traits: traits2 }) {
|
|
|
42043
42079
|
)) })
|
|
42044
42080
|
] }),
|
|
42045
42081
|
trait.transitions.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
42046
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-
|
|
42082
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-muted-foreground mb-2", children: t("debug.transitions") }),
|
|
42047
42083
|
/* @__PURE__ */ jsxRuntime.jsx(Stack, { gap: "xs", children: trait.transitions.map((t2, i) => /* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "small", className: "font-mono", children: [
|
|
42048
42084
|
t2.from,
|
|
42049
42085
|
" \u2192 ",
|
|
42050
42086
|
t2.to,
|
|
42051
42087
|
" ",
|
|
42052
|
-
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-
|
|
42088
|
+
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-muted-foreground", children: [
|
|
42053
42089
|
"(",
|
|
42054
42090
|
t2.event,
|
|
42055
42091
|
")"
|
|
42056
42092
|
] }),
|
|
42057
|
-
t2.guard && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-
|
|
42093
|
+
t2.guard && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-warning", children: [
|
|
42058
42094
|
" [",
|
|
42059
42095
|
t2.guard,
|
|
42060
42096
|
"]"
|
|
@@ -42062,7 +42098,7 @@ function TraitsTab({ traits: traits2 }) {
|
|
|
42062
42098
|
] }, i)) })
|
|
42063
42099
|
] }),
|
|
42064
42100
|
trait.guards.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
42065
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-
|
|
42101
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-muted-foreground mb-2", children: t("debug.guards") }),
|
|
42066
42102
|
/* @__PURE__ */ jsxRuntime.jsx(Stack, { gap: "xs", children: trait.guards.map((g, i) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
|
|
42067
42103
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", children: g.name }),
|
|
42068
42104
|
/* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: g.lastResult === true ? "success" : g.lastResult === false ? "danger" : "default", size: "sm", children: g.lastResult === void 0 ? "?" : g.lastResult ? "\u2713" : "\u2717" })
|
|
@@ -42105,11 +42141,11 @@ function TicksTab({ ticks: ticks2 }) {
|
|
|
42105
42141
|
};
|
|
42106
42142
|
const TickCard = ({ tick, active }) => /* @__PURE__ */ jsxRuntime.jsxs(Card, { className: `p-3 ${!active ? "opacity-50" : ""}`, children: [
|
|
42107
42143
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 mb-2", children: [
|
|
42108
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: `w-2 h-2 rounded-full ${active ? "bg-
|
|
42109
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", weight: "semibold", className: "text-
|
|
42110
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-
|
|
42144
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: `w-2 h-2 rounded-full ${active ? "bg-success" : "bg-muted-foreground"}` }),
|
|
42145
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", weight: "semibold", className: "text-warning", children: tick.name }),
|
|
42146
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground", children: tick.traitName })
|
|
42111
42147
|
] }),
|
|
42112
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-3 text-xs text-
|
|
42148
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-3 text-xs text-muted-foreground", children: [
|
|
42113
42149
|
/* @__PURE__ */ jsxRuntime.jsxs("span", { children: [
|
|
42114
42150
|
tick.interval,
|
|
42115
42151
|
"ms"
|
|
@@ -42132,7 +42168,7 @@ function TicksTab({ ticks: ticks2 }) {
|
|
|
42132
42168
|
] });
|
|
42133
42169
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "debug-tab debug-tab--ticks", children: [
|
|
42134
42170
|
activeTicks.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-4", children: [
|
|
42135
|
-
/* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "small", weight: "medium", className: "text-
|
|
42171
|
+
/* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "small", weight: "medium", className: "text-muted-foreground mb-2", children: [
|
|
42136
42172
|
"Active (",
|
|
42137
42173
|
activeTicks.length,
|
|
42138
42174
|
")"
|
|
@@ -42140,7 +42176,7 @@ function TicksTab({ ticks: ticks2 }) {
|
|
|
42140
42176
|
/* @__PURE__ */ jsxRuntime.jsx(Stack, { gap: "sm", children: activeTicks.map((tick) => /* @__PURE__ */ jsxRuntime.jsx(TickCard, { tick, active: true }, tick.id)) })
|
|
42141
42177
|
] }),
|
|
42142
42178
|
inactiveTicks.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
42143
|
-
/* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "small", weight: "medium", className: "text-
|
|
42179
|
+
/* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "small", weight: "medium", className: "text-muted-foreground mb-2", children: [
|
|
42144
42180
|
"Inactive (",
|
|
42145
42181
|
inactiveTicks.length,
|
|
42146
42182
|
")"
|
|
@@ -42188,33 +42224,33 @@ function EntitiesTab({ snapshot }) {
|
|
|
42188
42224
|
id: `singleton-${name}`,
|
|
42189
42225
|
header: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
42190
42226
|
/* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "primary", size: "sm", children: t("debug.singleton") }),
|
|
42191
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", weight: "semibold", className: "text-
|
|
42227
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", weight: "semibold", className: "text-info", children: name })
|
|
42192
42228
|
] }),
|
|
42193
|
-
content: /* @__PURE__ */ jsxRuntime.jsx("pre", { className: "text-xs text-
|
|
42229
|
+
content: /* @__PURE__ */ jsxRuntime.jsx("pre", { className: "text-xs text-muted-foreground bg-muted p-2 rounded overflow-auto max-h-40", children: JSON.stringify(data, null, 2) })
|
|
42194
42230
|
}));
|
|
42195
42231
|
const runtimeItems = runtimeEntities.slice(0, 20).map((entity) => ({
|
|
42196
42232
|
id: entity.id,
|
|
42197
42233
|
header: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
42198
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", weight: "semibold", className: "text-
|
|
42199
|
-
/* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "small", className: "text-
|
|
42234
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", weight: "semibold", className: "text-info", children: entity.type }),
|
|
42235
|
+
/* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "small", className: "text-muted-foreground", children: [
|
|
42200
42236
|
"#",
|
|
42201
42237
|
entity.id.slice(0, 8)
|
|
42202
42238
|
] })
|
|
42203
42239
|
] }),
|
|
42204
|
-
content: /* @__PURE__ */ jsxRuntime.jsx("pre", { className: "text-xs text-
|
|
42240
|
+
content: /* @__PURE__ */ jsxRuntime.jsx("pre", { className: "text-xs text-muted-foreground bg-muted p-2 rounded overflow-auto max-h-40", children: JSON.stringify(entity.data, null, 2) })
|
|
42205
42241
|
}));
|
|
42206
42242
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "debug-tab debug-tab--entities", children: [
|
|
42207
42243
|
singletonItems.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-4", children: [
|
|
42208
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-
|
|
42244
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-muted-foreground mb-2", children: t("debug.singletonsCount", { count: singletonItems.length }) }),
|
|
42209
42245
|
/* @__PURE__ */ jsxRuntime.jsx(Accordion, { items: singletonItems, multiple: true })
|
|
42210
42246
|
] }),
|
|
42211
42247
|
runtimeItems.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-4", children: [
|
|
42212
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-
|
|
42248
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-muted-foreground mb-2", children: t("debug.runtimeCount", { count: runtimeEntities.length }) }),
|
|
42213
42249
|
/* @__PURE__ */ jsxRuntime.jsx(Accordion, { items: runtimeItems, multiple: true }),
|
|
42214
|
-
runtimeEntities.length > 20 && /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-
|
|
42250
|
+
runtimeEntities.length > 20 && /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground text-center mt-2", children: t("debug.moreEntities", { count: runtimeEntities.length - 20 }) })
|
|
42215
42251
|
] }),
|
|
42216
42252
|
persistentEntries.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
42217
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-
|
|
42253
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-muted-foreground mb-2", children: t("debug.persistent") }),
|
|
42218
42254
|
/* @__PURE__ */ jsxRuntime.jsx(Stack, { gap: "xs", children: persistentEntries.map(([type, info]) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between py-1", children: [
|
|
42219
42255
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", children: type }),
|
|
42220
42256
|
/* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: info.loaded ? "success" : "default", size: "sm", children: info.loaded ? t("debug.loadedCount", { count: info.count }) : t("debug.notLoaded") })
|
|
@@ -42299,7 +42335,7 @@ function EventFlowTab({ events: events2 }) {
|
|
|
42299
42335
|
);
|
|
42300
42336
|
})
|
|
42301
42337
|
] }),
|
|
42302
|
-
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-1 text-xs text-
|
|
42338
|
+
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-1 text-xs text-muted-foreground ml-auto cursor-pointer", children: [
|
|
42303
42339
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
42304
42340
|
Checkbox,
|
|
42305
42341
|
{
|
|
@@ -42314,18 +42350,18 @@ function EventFlowTab({ events: events2 }) {
|
|
|
42314
42350
|
"div",
|
|
42315
42351
|
{
|
|
42316
42352
|
ref: containerRef,
|
|
42317
|
-
className: "max-h-64 overflow-y-auto space-y-1 bg-
|
|
42353
|
+
className: "max-h-64 overflow-y-auto space-y-1 bg-muted rounded p-2",
|
|
42318
42354
|
children: filteredEvents.slice(-100).map((event) => {
|
|
42319
42355
|
const { variant, icon } = TYPE_BADGES[event.type] || { variant: "default", icon: "\u2022" };
|
|
42320
42356
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
42321
42357
|
"div",
|
|
42322
42358
|
{
|
|
42323
|
-
className: "flex items-start gap-2 text-xs py-1 hover:bg-
|
|
42359
|
+
className: "flex items-start gap-2 text-xs py-1 hover:bg-muted/50 rounded px-1",
|
|
42324
42360
|
children: [
|
|
42325
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-
|
|
42361
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground font-mono min-w-[65px]", children: formatTime2(event.timestamp) }),
|
|
42326
42362
|
/* @__PURE__ */ jsxRuntime.jsx("span", { children: icon }),
|
|
42327
42363
|
/* @__PURE__ */ jsxRuntime.jsx(Badge, { variant, size: "sm", className: "min-w-[60px] justify-center", children: event.source }),
|
|
42328
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-
|
|
42364
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground", children: event.message })
|
|
42329
42365
|
]
|
|
42330
42366
|
},
|
|
42331
42367
|
event.id
|
|
@@ -42389,21 +42425,21 @@ function GuardsPanel({ guards }) {
|
|
|
42389
42425
|
id: guard.id,
|
|
42390
42426
|
header: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 w-full", children: [
|
|
42391
42427
|
/* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: guard.result ? "success" : "danger", size: "sm", children: guard.result ? "\u2713" : "\u2717" }),
|
|
42392
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", weight: "semibold", className: "text-
|
|
42393
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-
|
|
42394
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-
|
|
42428
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", weight: "semibold", className: "text-warning", children: guard.guardName }),
|
|
42429
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground", children: guard.context.type === "transition" ? `${guard.context.transitionFrom} \u2192 ${guard.context.transitionTo}` : guard.context.tickName }),
|
|
42430
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground ml-auto", children: formatTime2(guard.timestamp) })
|
|
42395
42431
|
] }),
|
|
42396
42432
|
content: /* @__PURE__ */ jsxRuntime.jsxs(Stack, { gap: "sm", children: [
|
|
42397
42433
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
42398
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-
|
|
42399
|
-
/* @__PURE__ */ jsxRuntime.jsx("code", { className: "block mt-1 text-xs text-
|
|
42434
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-muted-foreground", children: t("debug.expression") }),
|
|
42435
|
+
/* @__PURE__ */ jsxRuntime.jsx("code", { className: "block mt-1 text-xs text-warning bg-warning/10 px-2 py-1 rounded", children: guard.expression })
|
|
42400
42436
|
] }),
|
|
42401
42437
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
42402
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-
|
|
42403
|
-
/* @__PURE__ */ jsxRuntime.jsx("pre", { className: "mt-1 text-xs text-
|
|
42438
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-muted-foreground", children: t("debug.inputs") }),
|
|
42439
|
+
/* @__PURE__ */ jsxRuntime.jsx("pre", { className: "mt-1 text-xs text-muted-foreground bg-muted p-2 rounded overflow-auto max-h-24", children: JSON.stringify(guard.inputs, null, 2) })
|
|
42404
42440
|
] }),
|
|
42405
42441
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
42406
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-
|
|
42442
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-muted-foreground", children: t("debug.trait") }),
|
|
42407
42443
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", children: guard.context.traitName })
|
|
42408
42444
|
] })
|
|
42409
42445
|
] })
|
|
@@ -42459,7 +42495,7 @@ function VerificationTab({ checks, summary }) {
|
|
|
42459
42495
|
(a, b) => (sortOrder[a.status] ?? 4) - (sortOrder[b.status] ?? 4)
|
|
42460
42496
|
);
|
|
42461
42497
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "debug-tab debug-tab--verification", children: [
|
|
42462
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3 mb-3 p-2 bg-
|
|
42498
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3 mb-3 p-2 bg-muted rounded", children: [
|
|
42463
42499
|
/* @__PURE__ */ jsxRuntime.jsxs(Badge, { variant: "success", size: "sm", children: [
|
|
42464
42500
|
summary.passed,
|
|
42465
42501
|
" passed"
|
|
@@ -42476,7 +42512,7 @@ function VerificationTab({ checks, summary }) {
|
|
|
42476
42512
|
summary.pending,
|
|
42477
42513
|
" pending"
|
|
42478
42514
|
] }),
|
|
42479
|
-
/* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "small", className: "text-
|
|
42515
|
+
/* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "small", className: "text-muted-foreground ml-auto", children: [
|
|
42480
42516
|
summary.totalChecks,
|
|
42481
42517
|
" total checks"
|
|
42482
42518
|
] })
|
|
@@ -42486,12 +42522,12 @@ function VerificationTab({ checks, summary }) {
|
|
|
42486
42522
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
42487
42523
|
"div",
|
|
42488
42524
|
{
|
|
42489
|
-
className: "flex items-start gap-2 p-2 rounded hover:bg-
|
|
42525
|
+
className: "flex items-start gap-2 p-2 rounded hover:bg-muted/50",
|
|
42490
42526
|
children: [
|
|
42491
42527
|
/* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: config.variant, size: "sm", className: "min-w-[20px] justify-center mt-0.5", children: config.icon }),
|
|
42492
42528
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1 min-w-0", children: [
|
|
42493
42529
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "break-words", children: check.label }),
|
|
42494
|
-
check.details && /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-
|
|
42530
|
+
check.details && /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground break-words", children: check.details })
|
|
42495
42531
|
] }),
|
|
42496
42532
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground font-mono text-xs shrink-0", children: new Date(check.updatedAt).toLocaleTimeString("en-US", {
|
|
42497
42533
|
hour12: false,
|
|
@@ -42526,10 +42562,10 @@ var init_VerificationTab = __esm({
|
|
|
42526
42562
|
function EffectBadge({ effect }) {
|
|
42527
42563
|
const variant = EFFECT_STATUS_VARIANT[effect.status] || "default";
|
|
42528
42564
|
const icon = effect.status === "executed" ? "\u2713" : effect.status === "failed" ? "\u2717" : "-";
|
|
42529
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "inline-flex items-center gap-1 text-xs font-mono bg-
|
|
42565
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "inline-flex items-center gap-1 text-xs font-mono bg-muted rounded px-1.5 py-0.5", children: [
|
|
42530
42566
|
/* @__PURE__ */ jsxRuntime.jsx(Badge, { variant, size: "sm", className: "!text-[9px] !px-1 !py-0", children: icon }),
|
|
42531
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-
|
|
42532
|
-
effect.error && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-
|
|
42567
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: effect.type }),
|
|
42568
|
+
effect.error && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-error truncate max-w-[120px]", title: effect.error, children: effect.error })
|
|
42533
42569
|
] });
|
|
42534
42570
|
}
|
|
42535
42571
|
function TransitionTimeline({ transitions }) {
|
|
@@ -42564,8 +42600,8 @@ function TransitionTimeline({ transitions }) {
|
|
|
42564
42600
|
const sorted = [...transitions].reverse();
|
|
42565
42601
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "debug-tab debug-tab--timeline", children: [
|
|
42566
42602
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between mb-2", children: [
|
|
42567
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-
|
|
42568
|
-
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-1 text-xs text-
|
|
42603
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground", children: t("debug.transitionsRecorded", { count: transitions.length }) }),
|
|
42604
|
+
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-1 text-xs text-muted-foreground cursor-pointer", children: [
|
|
42569
42605
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
42570
42606
|
Checkbox,
|
|
42571
42607
|
{
|
|
@@ -42590,22 +42626,22 @@ function TransitionTimeline({ transitions }) {
|
|
|
42590
42626
|
{
|
|
42591
42627
|
className: `
|
|
42592
42628
|
relative pl-6 pb-3 border-l-2 cursor-pointer
|
|
42593
|
-
hover:bg-
|
|
42594
|
-
${hasFailedEffects ? "border-
|
|
42629
|
+
hover:bg-muted/50 rounded-r
|
|
42630
|
+
${hasFailedEffects ? "border-error" : "border-border"}
|
|
42595
42631
|
`,
|
|
42596
42632
|
onClick: () => setExpandedId(isExpanded ? null : trace.id),
|
|
42597
42633
|
children: [
|
|
42598
42634
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: `
|
|
42599
42635
|
absolute left-[-5px] top-1 w-2 h-2 rounded-full
|
|
42600
|
-
${hasFailedEffects ? "bg-
|
|
42636
|
+
${hasFailedEffects ? "bg-error" : allPassed ? "bg-success" : "bg-muted-foreground"}
|
|
42601
42637
|
` }),
|
|
42602
42638
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 text-xs py-1 px-2", children: [
|
|
42603
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-
|
|
42639
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground font-mono min-w-[65px]", children: formatTime2(trace.timestamp) }),
|
|
42604
42640
|
/* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "primary", size: "sm", className: "min-w-[60px] justify-center", children: trace.traitName }),
|
|
42605
|
-
/* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "small", className: "font-mono text-
|
|
42641
|
+
/* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "small", className: "font-mono text-muted-foreground", children: [
|
|
42606
42642
|
trace.from,
|
|
42607
42643
|
" ",
|
|
42608
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-
|
|
42644
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground/50", children: "\u2192" }),
|
|
42609
42645
|
" ",
|
|
42610
42646
|
trace.to
|
|
42611
42647
|
] }),
|
|
@@ -42622,9 +42658,9 @@ function TransitionTimeline({ transitions }) {
|
|
|
42622
42658
|
]
|
|
42623
42659
|
}
|
|
42624
42660
|
),
|
|
42625
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-
|
|
42661
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground ml-auto", children: t("debug.effectsCount", { count: trace.effects.length }) })
|
|
42626
42662
|
] }),
|
|
42627
|
-
isExpanded && trace.effects.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ml-2 mt-1 mb-2 pl-2 border-l border-
|
|
42663
|
+
isExpanded && trace.effects.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ml-2 mt-1 mb-2 pl-2 border-l border-border space-y-1", children: trace.effects.map((effect, eIdx) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1", children: [
|
|
42628
42664
|
/* @__PURE__ */ jsxRuntime.jsx(EffectBadge, { effect }),
|
|
42629
42665
|
effect.args.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground font-mono text-xs truncate max-w-[200px]", children: JSON.stringify(effect.args) }),
|
|
42630
42666
|
effect.durationMs !== void 0 && /* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "small", className: "text-muted-foreground text-xs", children: [
|
|
@@ -42658,8 +42694,8 @@ var init_TransitionTimeline = __esm({
|
|
|
42658
42694
|
}
|
|
42659
42695
|
});
|
|
42660
42696
|
function StatRow({ label, value, variant }) {
|
|
42661
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between py-1.5 border-b border-
|
|
42662
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-
|
|
42697
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between py-1.5 border-b border-border last:border-b-0", children: [
|
|
42698
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground", children: label }),
|
|
42663
42699
|
variant ? /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant, size: "sm", children: String(value) }) : /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "semibold", className: "font-mono", children: String(value) })
|
|
42664
42700
|
] });
|
|
42665
42701
|
}
|
|
@@ -42688,7 +42724,7 @@ function ServerBridgeTab({ bridge }) {
|
|
|
42688
42724
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "debug-tab debug-tab--bridge", children: /* @__PURE__ */ jsxRuntime.jsxs(Stack, { gap: "sm", children: [
|
|
42689
42725
|
/* @__PURE__ */ jsxRuntime.jsxs(Card, { className: "p-3", children: [
|
|
42690
42726
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3 mb-3", children: [
|
|
42691
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: `w-3 h-3 rounded-full ${bridge.connected ? "bg-
|
|
42727
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: `w-3 h-3 rounded-full ${bridge.connected ? "bg-success animate-pulse" : "bg-error"}` }),
|
|
42692
42728
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "h6", children: bridge.connected ? t("debug.connected") : t("debug.disconnected") })
|
|
42693
42729
|
] }),
|
|
42694
42730
|
/* @__PURE__ */ jsxRuntime.jsxs(Stack, { gap: "xs", children: [
|
|
@@ -42723,11 +42759,11 @@ function ServerBridgeTab({ bridge }) {
|
|
|
42723
42759
|
)
|
|
42724
42760
|
] })
|
|
42725
42761
|
] }),
|
|
42726
|
-
bridge.lastError && /* @__PURE__ */ jsxRuntime.jsxs(Card, { className: "p-3 border-
|
|
42727
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "semibold", className: "text-
|
|
42728
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-
|
|
42762
|
+
bridge.lastError && /* @__PURE__ */ jsxRuntime.jsxs(Card, { className: "p-3 border-error/30 bg-error/10", children: [
|
|
42763
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "semibold", className: "text-error mb-1", children: t("debug.lastError") }),
|
|
42764
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-error font-mono break-all", children: bridge.lastError })
|
|
42729
42765
|
] }),
|
|
42730
|
-
bridge.connected && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-center py-2", children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-
|
|
42766
|
+
bridge.connected && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-center py-2", children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground", children: t("debug.totalEventsProcessed", { count: bridge.eventsForwarded + bridge.eventsReceived }) }) })
|
|
42731
42767
|
] }) });
|
|
42732
42768
|
}
|
|
42733
42769
|
var init_ServerBridgeTab = __esm({
|
|
@@ -42853,7 +42889,7 @@ function EventDispatcherTab({ traits: traits2, schema }) {
|
|
|
42853
42889
|
};
|
|
42854
42890
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "debug-tab debug-tab--dispatch", children: [
|
|
42855
42891
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-3", children: [
|
|
42856
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-
|
|
42892
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-muted-foreground mb-1", children: t("debug.activeStates") }),
|
|
42857
42893
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-1", children: traits2.map((trait) => /* @__PURE__ */ jsxRuntime.jsxs(Badge, { variant: "success", size: "sm", children: [
|
|
42858
42894
|
trait.name,
|
|
42859
42895
|
": ",
|
|
@@ -42861,8 +42897,8 @@ function EventDispatcherTab({ traits: traits2, schema }) {
|
|
|
42861
42897
|
] }, trait.id)) })
|
|
42862
42898
|
] }),
|
|
42863
42899
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-3", children: [
|
|
42864
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-
|
|
42865
|
-
availableEvents.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-
|
|
42900
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-muted-foreground mb-1", children: t("debug.availableEvents") }),
|
|
42901
|
+
availableEvents.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground italic", children: t("debug.noTransitionsFromState") }) : /* @__PURE__ */ jsxRuntime.jsx(Stack, { gap: "xs", children: availableEvents.map(({ event, transitions }) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
42866
42902
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
42867
42903
|
Button,
|
|
42868
42904
|
{
|
|
@@ -42873,22 +42909,22 @@ function EventDispatcherTab({ traits: traits2, schema }) {
|
|
|
42873
42909
|
children: event
|
|
42874
42910
|
}
|
|
42875
42911
|
),
|
|
42876
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-
|
|
42912
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground", children: transitions.map((t2) => `${t2.from} -> ${t2.to}`).join(", ") }),
|
|
42877
42913
|
transitions.some((tr) => tr.guard) && /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "warning", size: "sm", children: t("debug.guarded") })
|
|
42878
42914
|
] }, event)) })
|
|
42879
42915
|
] }),
|
|
42880
42916
|
unavailableEvents.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-3", children: [
|
|
42881
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-
|
|
42917
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-muted-foreground mb-1", children: t("debug.otherEvents") }),
|
|
42882
42918
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-1", children: unavailableEvents.map((event) => /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "default", size: "sm", className: "opacity-50", children: event }, event)) })
|
|
42883
42919
|
] }),
|
|
42884
42920
|
log11.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
42885
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-
|
|
42921
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-muted-foreground mb-1", children: t("debug.recentTransitions") }),
|
|
42886
42922
|
/* @__PURE__ */ jsxRuntime.jsx(Stack, { gap: "xs", children: log11.map((entry, i) => /* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "small", className: "font-mono text-xs", children: [
|
|
42887
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-
|
|
42923
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-primary", children: entry.traitName }),
|
|
42888
42924
|
" ",
|
|
42889
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-
|
|
42925
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: entry.from }),
|
|
42890
42926
|
" -> ",
|
|
42891
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-
|
|
42927
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-success", children: entry.to })
|
|
42892
42928
|
] }, i)) })
|
|
42893
42929
|
] })
|
|
42894
42930
|
] });
|
|
@@ -42914,21 +42950,21 @@ var init_RuntimeDebugger = __esm({
|
|
|
42914
42950
|
function ServerResponseRow({ sr }) {
|
|
42915
42951
|
const { t } = hooks.useTranslate();
|
|
42916
42952
|
const entityEntries = Object.entries(sr.dataEntities);
|
|
42917
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ml-4 pl-2 border-l border-
|
|
42953
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ml-4 pl-2 border-l border-primary py-0.5 text-xs font-mono", children: [
|
|
42918
42954
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
42919
|
-
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: sr.success ? "text-
|
|
42955
|
+
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: sr.success ? "text-success" : "text-error", children: [
|
|
42920
42956
|
sr.success ? "\u2713" : "\u2717",
|
|
42921
42957
|
" ",
|
|
42922
42958
|
t("debug.server")
|
|
42923
42959
|
] }),
|
|
42924
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-
|
|
42925
|
-
sr.clientEffects > 0 && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "px-1 rounded bg-
|
|
42926
|
-
sr.emittedEvents.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "px-1 rounded bg-
|
|
42960
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-primary", children: sr.orbitalName }),
|
|
42961
|
+
sr.clientEffects > 0 && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "px-1 rounded bg-primary/10 text-primary", children: t("debug.clientEffectsCount", { count: sr.clientEffects }) }),
|
|
42962
|
+
sr.emittedEvents.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "px-1 rounded bg-primary/10 text-primary", children: [
|
|
42927
42963
|
t("debug.emitLabel"),
|
|
42928
42964
|
" ",
|
|
42929
42965
|
sr.emittedEvents.join(", ")
|
|
42930
42966
|
] }),
|
|
42931
|
-
sr.error && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "px-1 rounded bg-
|
|
42967
|
+
sr.error && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "px-1 rounded bg-error/10 text-error truncate max-w-[300px]", children: sr.error })
|
|
42932
42968
|
] }),
|
|
42933
42969
|
entityEntries.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-1 mt-0.5", children: entityEntries.map(([name, count]) => /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "px-1 rounded bg-[var(--color-card)] text-foreground", children: [
|
|
42934
42970
|
name,
|
|
@@ -42944,9 +42980,9 @@ function TransitionRow({ trace }) {
|
|
|
42944
42980
|
if (isServerEntry && trace.serverResponse) {
|
|
42945
42981
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "py-0.5 border-b border-border last:border-0", children: [
|
|
42946
42982
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start gap-2 text-xs font-mono", children: [
|
|
42947
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "mt-1.5 w-1.5 h-1.5 rounded-full flex-shrink-0 bg-
|
|
42983
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "mt-1.5 w-1.5 h-1.5 rounded-full flex-shrink-0 bg-primary" }),
|
|
42948
42984
|
/* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "warning", size: "sm", className: "flex-shrink-0", children: trace.event }),
|
|
42949
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-
|
|
42985
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-primary flex-shrink-0", children: t("debug.serverResponse") })
|
|
42950
42986
|
] }),
|
|
42951
42987
|
/* @__PURE__ */ jsxRuntime.jsx(ServerResponseRow, { sr: trace.serverResponse })
|
|
42952
42988
|
] });
|
|
@@ -42955,7 +42991,7 @@ function TransitionRow({ trace }) {
|
|
|
42955
42991
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start gap-2 text-xs font-mono", children: [
|
|
42956
42992
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: cn(
|
|
42957
42993
|
"mt-1.5 w-1.5 h-1.5 rounded-full flex-shrink-0",
|
|
42958
|
-
hasFailedEffects ? "bg-
|
|
42994
|
+
hasFailedEffects ? "bg-error" : "bg-success"
|
|
42959
42995
|
) }),
|
|
42960
42996
|
/* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "info", size: "sm", className: "flex-shrink-0", children: trace.event }),
|
|
42961
42997
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-foreground flex-shrink-0", children: trace.traitName }),
|
|
@@ -42969,7 +43005,7 @@ function TransitionRow({ trace }) {
|
|
|
42969
43005
|
] }),
|
|
42970
43006
|
trace.effects.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-1 ml-6 mt-0.5", children: trace.effects.map((eff, i) => /* @__PURE__ */ jsxRuntime.jsxs("span", { className: cn(
|
|
42971
43007
|
"px-1 rounded text-xs",
|
|
42972
|
-
eff.status === "executed" ? "bg-
|
|
43008
|
+
eff.status === "executed" ? "bg-success/10 text-success" : eff.status === "failed" ? "bg-error/10 text-error" : "bg-warning/10 text-warning"
|
|
42973
43009
|
), children: [
|
|
42974
43010
|
eff.status === "executed" ? "\u2713" : eff.status === "failed" ? "\u2717" : "-",
|
|
42975
43011
|
" ",
|
|
@@ -43003,7 +43039,7 @@ function VerifyModePanel({
|
|
|
43003
43039
|
{
|
|
43004
43040
|
className: cn(
|
|
43005
43041
|
"runtime-debugger runtime-debugger--verify",
|
|
43006
|
-
"flex flex-col bg-[var(--color-card)] text-[var(--color-foreground)] border-t-2 border-
|
|
43042
|
+
"flex flex-col bg-[var(--color-card)] text-[var(--color-foreground)] border-t-2 border-accent",
|
|
43007
43043
|
hudBottom ? "" : "fixed bottom-0 left-0 right-0",
|
|
43008
43044
|
className
|
|
43009
43045
|
),
|
|
@@ -43024,8 +43060,8 @@ function VerifyModePanel({
|
|
|
43024
43060
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-foreground/50 w-3", "aria-hidden": true, children: expanded ? "\u25BE" : "\u25B8" }),
|
|
43025
43061
|
/* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: failedChecks > 0 ? "danger" : "success", size: "sm", children: failedChecks > 0 ? t("debug.failCount", { count: failedChecks }) : t("debug.ok") }),
|
|
43026
43062
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-foreground/70", children: t("debug.localCount", { count: localCount }) }),
|
|
43027
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-
|
|
43028
|
-
traitStates && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-
|
|
43063
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-primary", children: t("debug.serverCount", { count: serverCount }) }),
|
|
43064
|
+
traitStates && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-accent truncate max-w-[400px]", children: traitStates }),
|
|
43029
43065
|
!expanded && transitions.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-auto text-foreground/50", children: t("debug.transitionsCount", { count: transitions.length }) })
|
|
43030
43066
|
]
|
|
43031
43067
|
}
|
|
@@ -43220,7 +43256,7 @@ function RuntimeDebugger({
|
|
|
43220
43256
|
title: t("debug.openDebugger"),
|
|
43221
43257
|
children: failedChecks > 0 ? /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "relative", children: [
|
|
43222
43258
|
/* @__PURE__ */ jsxRuntime.jsx("span", { children: "V" }),
|
|
43223
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "absolute -top-1 -right-2 w-2 h-2 bg-
|
|
43259
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "absolute -top-1 -right-2 w-2 h-2 bg-error rounded-full" })
|
|
43224
43260
|
] }) : /* @__PURE__ */ jsxRuntime.jsx("span", { children: "V" })
|
|
43225
43261
|
}
|
|
43226
43262
|
) : /* @__PURE__ */ jsxRuntime.jsxs(Card, { className: "runtime-debugger__panel", children: [
|
|
@@ -43308,7 +43344,7 @@ var init_SegmentRenderer = __esm({
|
|
|
43308
43344
|
"div",
|
|
43309
43345
|
{
|
|
43310
43346
|
className: cn(
|
|
43311
|
-
"border border-
|
|
43347
|
+
"border border-border rounded-lg p-2 md:p-4 overflow-x-auto space-y-6",
|
|
43312
43348
|
containerClassName,
|
|
43313
43349
|
className
|
|
43314
43350
|
),
|
|
@@ -48860,8 +48896,8 @@ var SystemNode = ({ data }) => {
|
|
|
48860
48896
|
className: "rounded-lg border border-[var(--color-border)] bg-[var(--color-card)] px-3 py-2 shadow-sm",
|
|
48861
48897
|
style: { minWidth: 160, maxWidth: 220 },
|
|
48862
48898
|
children: [
|
|
48863
|
-
/* @__PURE__ */ jsxRuntime.jsx(react.Handle, { type: "target", position: react.Position.Left, className: "!w-2 !h-2 !bg-
|
|
48864
|
-
/* @__PURE__ */ jsxRuntime.jsx(react.Handle, { type: "source", position: react.Position.Right, className: "!w-2 !h-2 !bg-
|
|
48899
|
+
/* @__PURE__ */ jsxRuntime.jsx(react.Handle, { type: "target", position: react.Position.Left, className: "!w-2 !h-2 !bg-warning" }),
|
|
48900
|
+
/* @__PURE__ */ jsxRuntime.jsx(react.Handle, { type: "source", position: react.Position.Right, className: "!w-2 !h-2 !bg-warning" }),
|
|
48865
48901
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1.5 mb-1", children: [
|
|
48866
48902
|
/* @__PURE__ */ jsxRuntime.jsx("svg", { width: 14, height: 14, viewBox: "0 0 20 20", children: /* @__PURE__ */ jsxRuntime.jsx(exports.AvlEntity, { x: 10, y: 10, r: 8, persistence }) }),
|
|
48867
48903
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs font-semibold text-[var(--color-foreground)] truncate flex-1", children: orbitalName })
|
|
@@ -49013,9 +49049,9 @@ var AvlTransitionEdge = ({
|
|
|
49013
49049
|
className: "absolute pointer-events-all nodrag nopan flex items-center gap-1",
|
|
49014
49050
|
style: { transform: `translate(-50%, -50%) translate(${labelX}px, ${labelY}px)` },
|
|
49015
49051
|
children: [
|
|
49016
|
-
data?.hasGuard && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-3 h-3 rotate-45 border border-
|
|
49052
|
+
data?.hasGuard && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-3 h-3 rotate-45 border border-warning bg-warning/10 shrink-0", title: t("avl.guard") }),
|
|
49017
49053
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "px-2 py-0.5 text-xs font-medium rounded-full bg-[var(--color-card)] border border-[var(--color-border)] text-[var(--color-foreground)] truncate max-w-[160px]", children: data?.event ?? "" }),
|
|
49018
|
-
data?.hasEffects && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-2.5 h-2.5 rounded-full bg-
|
|
49054
|
+
data?.hasEffects && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-2.5 h-2.5 rounded-full bg-primary shrink-0", title: t("avl.effects") })
|
|
49019
49055
|
]
|
|
49020
49056
|
}
|
|
49021
49057
|
) })
|
|
@@ -49838,7 +49874,9 @@ function useResolvedSchema(schema, pageName) {
|
|
|
49838
49874
|
trait.listens = callSiteListens.map((l) => ({
|
|
49839
49875
|
event: l.event,
|
|
49840
49876
|
triggers: l.triggers,
|
|
49841
|
-
source: l.source
|
|
49877
|
+
source: l.source,
|
|
49878
|
+
guard: l.guard,
|
|
49879
|
+
payloadMapping: l.payloadMapping
|
|
49842
49880
|
}));
|
|
49843
49881
|
resolvedSchemaLog.info("listens:restored", {
|
|
49844
49882
|
trait: traitName,
|
|
@@ -51227,7 +51265,11 @@ function useTraitStateMachine(traitBindings, uiSlots, options) {
|
|
|
51227
51265
|
crossTraitLog.debug("listen:subscribed", { busKey, targetTrait: binding.trait.name, sourceOrbital, sourceTrait, listenEvent: listen.event, triggers: listen.triggers });
|
|
51228
51266
|
const unsub = eventBus.on(busKey, (event) => {
|
|
51229
51267
|
crossTraitLog.debug("listen:fired", { busKey, targetTrait: binding.trait.name, triggers: listen.triggers });
|
|
51230
|
-
enqueueAndDrain(
|
|
51268
|
+
enqueueAndDrain(
|
|
51269
|
+
listen.triggers,
|
|
51270
|
+
core.applyListenPayloadMapping(listen.payloadMapping, event.payload),
|
|
51271
|
+
binding.trait.name
|
|
51272
|
+
);
|
|
51231
51273
|
});
|
|
51232
51274
|
unsubscribes.push(() => {
|
|
51233
51275
|
crossTraitLog.debug("listen:unsubscribe", { busKey, targetTrait: binding.trait.name, triggers: listen.triggers });
|
|
@@ -51257,7 +51299,7 @@ function useTraitStateMachine(traitBindings, uiSlots, options) {
|
|
|
51257
51299
|
}
|
|
51258
51300
|
for (const event of eventsToFire) {
|
|
51259
51301
|
stateLog.debug("mount:fire-lifecycle", { event, traitCount: traitBindings.length });
|
|
51260
|
-
enqueueAndDrain(event, {});
|
|
51302
|
+
enqueueAndDrain(event, { ...optionsRef.current?.initPayload ?? {} });
|
|
51261
51303
|
}
|
|
51262
51304
|
return () => {
|
|
51263
51305
|
initedTraitsRef.current = /* @__PURE__ */ new Set();
|
|
@@ -51356,7 +51398,7 @@ function collectServerActiveTraits(ir, allTraits, mountedTraitNames) {
|
|
|
51356
51398
|
}
|
|
51357
51399
|
return active;
|
|
51358
51400
|
}
|
|
51359
|
-
function TraitInitializer({ traits: traits2, orbitalNames, onNavigate, onLocalFallback, persistence, traitConfigsByName, orbitalsByTrait, embeddedTraits, serverActiveTraits }) {
|
|
51401
|
+
function TraitInitializer({ traits: traits2, routeParams, orbitalNames, onNavigate, onLocalFallback, persistence, traitConfigsByName, orbitalsByTrait, embeddedTraits, serverActiveTraits }) {
|
|
51360
51402
|
const bridge = providers.useServerBridge();
|
|
51361
51403
|
const activeTraitNames = React91.useMemo(
|
|
51362
51404
|
() => new Set(traits2.map((b) => b.trait.name).filter((n) => !!n)),
|
|
@@ -51385,43 +51427,48 @@ function TraitInitializer({ traits: traits2, orbitalNames, onNavigate, onLocalFa
|
|
|
51385
51427
|
applyServerEffects(effects, uiSlots, onNavigate, embeddedTraits, activeTraitNames);
|
|
51386
51428
|
}
|
|
51387
51429
|
}, [bridge.connected, bridge.sendEvent, orbitalNames, uiSlots, onNavigate, embeddedTraits, activeTraitNames, withActiveTraits]);
|
|
51388
|
-
const opts = orbitalNames ? { onEventProcessed, navigate: onNavigate, traitConfigsByName, orbitalsByTrait, embeddedTraits } : { navigate: onNavigate, persistence, traitConfigsByName, orbitalsByTrait, embeddedTraits };
|
|
51430
|
+
const opts = orbitalNames ? { onEventProcessed, navigate: onNavigate, traitConfigsByName, orbitalsByTrait, embeddedTraits, initPayload: routeParams } : { navigate: onNavigate, persistence, traitConfigsByName, orbitalsByTrait, embeddedTraits, initPayload: routeParams };
|
|
51389
51431
|
const { sendEvent } = useTraitStateMachine(traits2, uiSlots, opts);
|
|
51390
51432
|
const initSentRef = React91.useRef(false);
|
|
51391
51433
|
const prevTraitsRef = React91.useRef(void 0);
|
|
51434
|
+
const paramsKey = JSON.stringify(routeParams ?? {});
|
|
51435
|
+
const prevParamsKeyRef = React91.useRef(void 0);
|
|
51392
51436
|
React91.useEffect(() => {
|
|
51393
51437
|
const refChanged = prevTraitsRef.current !== void 0 && prevTraitsRef.current !== traits2;
|
|
51438
|
+
const paramsChanged = prevParamsKeyRef.current !== void 0 && prevParamsKeyRef.current !== paramsKey;
|
|
51394
51439
|
navLog.debug("page:traits-effect", () => ({
|
|
51395
51440
|
refChanged,
|
|
51441
|
+
paramsChanged,
|
|
51396
51442
|
traitsCount: Array.isArray(traits2) ? traits2.length : -1,
|
|
51397
51443
|
hadPrev: prevTraitsRef.current !== void 0
|
|
51398
51444
|
}));
|
|
51399
|
-
if (refChanged) {
|
|
51400
|
-
navLog.info("page:traits-reset", { traitsCount: Array.isArray(traits2) ? traits2.length : -1 });
|
|
51445
|
+
if (refChanged || paramsChanged) {
|
|
51446
|
+
navLog.info("page:traits-reset", { traitsCount: Array.isArray(traits2) ? traits2.length : -1, paramsChanged });
|
|
51401
51447
|
uiSlots.clearAll();
|
|
51402
51448
|
initSentRef.current = false;
|
|
51403
51449
|
}
|
|
51404
51450
|
prevTraitsRef.current = traits2;
|
|
51405
|
-
|
|
51451
|
+
prevParamsKeyRef.current = paramsKey;
|
|
51452
|
+
}, [traits2, uiSlots, paramsKey]);
|
|
51406
51453
|
React91.useEffect(() => {
|
|
51407
51454
|
if (!orbitalNames?.length) {
|
|
51408
|
-
const t = setTimeout(() => sendEvent("INIT"), 50);
|
|
51455
|
+
const t = setTimeout(() => sendEvent("INIT", routeParams), 50);
|
|
51409
51456
|
return () => clearTimeout(t);
|
|
51410
51457
|
}
|
|
51411
51458
|
const fallback = setTimeout(() => {
|
|
51412
51459
|
if (!initSentRef.current) {
|
|
51413
|
-
sendEvent("INIT");
|
|
51460
|
+
sendEvent("INIT", routeParams);
|
|
51414
51461
|
onLocalFallback?.();
|
|
51415
51462
|
}
|
|
51416
51463
|
}, 5e3);
|
|
51417
51464
|
return () => clearTimeout(fallback);
|
|
51418
|
-
}, [traits2, orbitalNames, sendEvent, onLocalFallback]);
|
|
51465
|
+
}, [traits2, orbitalNames, sendEvent, onLocalFallback, routeParams]);
|
|
51419
51466
|
React91.useEffect(() => {
|
|
51420
51467
|
if (!bridge.connected || !orbitalNames?.length || initSentRef.current) return;
|
|
51421
51468
|
initSentRef.current = true;
|
|
51422
51469
|
(async () => {
|
|
51423
51470
|
for (const name of orbitalNames) {
|
|
51424
|
-
const { effects, meta } = await bridge.sendEvent(name, "INIT", withActiveTraits({}));
|
|
51471
|
+
const { effects, meta } = await bridge.sendEvent(name, "INIT", withActiveTraits({ ...routeParams ?? {} }));
|
|
51425
51472
|
recordServerResponse(name, "INIT", meta);
|
|
51426
51473
|
const effectTraces = [
|
|
51427
51474
|
{ type: "fetch", args: [], status: "executed" },
|
|
@@ -51442,10 +51489,10 @@ function TraitInitializer({ traits: traits2, orbitalNames, onNavigate, onLocalFa
|
|
|
51442
51489
|
applyServerEffects(effects, uiSlots, onNavigate, embeddedTraits, activeTraitNames);
|
|
51443
51490
|
}
|
|
51444
51491
|
})();
|
|
51445
|
-
}, [bridge.connected, orbitalNames, bridge.sendEvent, uiSlots, onNavigate, embeddedTraits, activeTraitNames, withActiveTraits]);
|
|
51492
|
+
}, [bridge.connected, orbitalNames, bridge.sendEvent, uiSlots, onNavigate, embeddedTraits, activeTraitNames, withActiveTraits, routeParams]);
|
|
51446
51493
|
return null;
|
|
51447
51494
|
}
|
|
51448
|
-
function SchemaRunner({ schema, serverUrl, transport, mockData, pageName, onNavigate, onLocalFallback, persistence }) {
|
|
51495
|
+
function SchemaRunner({ schema, serverUrl, transport, mockData, pageName, routeParams, onNavigate, onLocalFallback, persistence }) {
|
|
51449
51496
|
const { traits: traits2, allEntities, allTraits, ir } = useResolvedSchema(schema, pageName);
|
|
51450
51497
|
const allPageTraits = React91.useMemo(() => {
|
|
51451
51498
|
let base;
|
|
@@ -51587,6 +51634,7 @@ function SchemaRunner({ schema, serverUrl, transport, mockData, pageName, onNavi
|
|
|
51587
51634
|
TraitInitializer,
|
|
51588
51635
|
{
|
|
51589
51636
|
traits: allPageTraits,
|
|
51637
|
+
routeParams,
|
|
51590
51638
|
orbitalNames: serverUrl || transport ? pageOrbitalNames : void 0,
|
|
51591
51639
|
traitConfigsByName,
|
|
51592
51640
|
orbitalsByTrait,
|
|
@@ -51664,27 +51712,35 @@ function OrbPreview({
|
|
|
51664
51712
|
return [];
|
|
51665
51713
|
}
|
|
51666
51714
|
}, [parsedSchema]);
|
|
51667
|
-
const
|
|
51715
|
+
const initialPageMatch = React91.useMemo(() => {
|
|
51668
51716
|
if (!initialPagePath) return void 0;
|
|
51669
|
-
const
|
|
51670
|
-
return
|
|
51717
|
+
const hit = providers.matchPathAmong(pages, initialPagePath, (entry) => entry.page.path);
|
|
51718
|
+
if (!hit) return void 0;
|
|
51719
|
+
return { name: hit.candidate.page.name, params: hit.params };
|
|
51671
51720
|
}, [pages, initialPagePath]);
|
|
51721
|
+
const initialPageName = initialPageMatch?.name;
|
|
51672
51722
|
const [currentPage, setCurrentPage] = React91.useState(initialPageName);
|
|
51723
|
+
const [routeParams, setRouteParams] = React91.useState(initialPageMatch?.params ?? {});
|
|
51673
51724
|
const prevInitialPagePathRef = React91.useRef(initialPagePath);
|
|
51674
51725
|
React91.useEffect(() => {
|
|
51675
51726
|
if (prevInitialPagePathRef.current !== initialPagePath) {
|
|
51676
51727
|
prevInitialPagePathRef.current = initialPagePath;
|
|
51677
51728
|
setCurrentPage(initialPageName);
|
|
51729
|
+
setRouteParams(initialPageMatch?.params ?? {});
|
|
51678
51730
|
}
|
|
51679
|
-
}, [initialPagePath, initialPageName]);
|
|
51731
|
+
}, [initialPagePath, initialPageName, initialPageMatch]);
|
|
51680
51732
|
const handleNavigate = React91.useCallback((path) => {
|
|
51681
|
-
const
|
|
51733
|
+
const hit = providers.matchPathAmong(pages, path, (entry) => entry.page.path);
|
|
51734
|
+
const match = hit?.candidate;
|
|
51735
|
+
const params = hit?.params ?? {};
|
|
51682
51736
|
navLog.debug("handleNavigate", () => ({
|
|
51683
51737
|
path,
|
|
51684
51738
|
matched: match?.page.name ?? null,
|
|
51739
|
+
params,
|
|
51685
51740
|
availablePaths: pages.map((p) => p.page.path)
|
|
51686
51741
|
}));
|
|
51687
|
-
if (match) {
|
|
51742
|
+
if (match?.page.name) {
|
|
51743
|
+
setRouteParams(params);
|
|
51688
51744
|
setCurrentPage(match.page.name);
|
|
51689
51745
|
if (typeof window !== "undefined") {
|
|
51690
51746
|
const url = new URL(window.location.href);
|
|
@@ -51754,6 +51810,7 @@ function OrbPreview({
|
|
|
51754
51810
|
transport,
|
|
51755
51811
|
mockData: effectiveMockData,
|
|
51756
51812
|
pageName: currentPage,
|
|
51813
|
+
routeParams,
|
|
51757
51814
|
onNavigate: handleNavigate,
|
|
51758
51815
|
onLocalFallback: handleLocalFallback,
|
|
51759
51816
|
persistence
|
|
@@ -53502,9 +53559,9 @@ function OrbInspector({ node, schema, editable = false, userType = "builder", th
|
|
|
53502
53559
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground text-xs uppercase tracking-wider mb-2", children: t("avl.transition") }),
|
|
53503
53560
|
/* @__PURE__ */ jsxRuntime.jsxs("svg", { width: "100%", height: 44, viewBox: "0 0 280 44", children: [
|
|
53504
53561
|
/* @__PURE__ */ jsxRuntime.jsx(exports.AvlState, { x: 8, y: 8, name: fromState, role: getStateRole(fromState), width: 90, height: 26 }),
|
|
53505
|
-
/* @__PURE__ */ jsxRuntime.jsx("line", { x1: 104, y1: 21, x2: 158, y2: 21, stroke: "
|
|
53562
|
+
/* @__PURE__ */ jsxRuntime.jsx("line", { x1: 104, y1: 21, x2: 158, y2: 21, stroke: "var(--color-foreground)", strokeWidth: 2, markerEnd: "url(#orb-arrow)" }),
|
|
53506
53563
|
/* @__PURE__ */ jsxRuntime.jsx(exports.AvlState, { x: 164, y: 8, name: toState, role: getStateRole(toState), width: 90, height: 26 }),
|
|
53507
|
-
/* @__PURE__ */ jsxRuntime.jsx("defs", { children: /* @__PURE__ */ jsxRuntime.jsx("marker", { id: "orb-arrow", markerWidth: 8, markerHeight: 6, refX: 8, refY: 3, orient: "auto", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M0,0 L8,3 L0,6 Z", fill: "
|
|
53564
|
+
/* @__PURE__ */ jsxRuntime.jsx("defs", { children: /* @__PURE__ */ jsxRuntime.jsx("marker", { id: "orb-arrow", markerWidth: 8, markerHeight: 6, refX: 8, refY: 3, orient: "auto", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M0,0 L8,3 L0,6 Z", fill: "var(--color-foreground)" }) }) })
|
|
53508
53565
|
] }),
|
|
53509
53566
|
traitName && /* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "small", className: "text-muted-foreground text-xs", children: [
|
|
53510
53567
|
traitName,
|
|
@@ -53615,7 +53672,7 @@ function OrbPatternTree({ config, depth }) {
|
|
|
53615
53672
|
return /* @__PURE__ */ jsxRuntime.jsxs(Box, { style: { paddingLeft: depth * 12 }, children: [
|
|
53616
53673
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-primary font-semibold text-xs", children: type }),
|
|
53617
53674
|
propEntries.slice(0, 5).map(([key, val]) => {
|
|
53618
|
-
const display = typeof val === "string" ? val.startsWith("@") ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-
|
|
53675
|
+
const display = typeof val === "string" ? val.startsWith("@") ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-primary", children: val }) : `"${val}"` : Array.isArray(val) && val.length > 0 && typeof val[0] === "string" && val[0].includes("/") ? /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-warning", children: [
|
|
53619
53676
|
"(",
|
|
53620
53677
|
val.map(String).join(" "),
|
|
53621
53678
|
")"
|