@almadar/ui 5.122.14 → 5.124.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 +354 -234
- package/dist/avl/index.js +356 -236
- package/dist/components/index.cjs +273 -198
- package/dist/components/index.d.cts +18 -12
- package/dist/components/index.d.ts +18 -12
- package/dist/components/index.js +273 -198
- package/dist/context/index.cjs +34 -66
- package/dist/context/index.d.cts +1 -1
- package/dist/context/index.d.ts +1 -1
- package/dist/context/index.js +34 -66
- package/dist/hooks/index.cjs +8 -0
- package/dist/hooks/index.js +8 -0
- package/dist/lib/drawable/three/index.cjs +6 -0
- package/dist/lib/drawable/three/index.js +6 -0
- package/dist/marketing/index.cjs +7 -0
- package/dist/marketing/index.js +7 -0
- package/dist/providers/index.cjs +343 -217
- package/dist/providers/index.d.cts +6 -6
- package/dist/providers/index.d.ts +6 -6
- package/dist/providers/index.js +343 -217
- package/dist/runtime/index.cjs +347 -227
- package/dist/runtime/index.d.cts +4 -2
- package/dist/runtime/index.d.ts +4 -2
- package/dist/runtime/index.js +349 -229
- package/package.json +8 -7
- 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/components/index.js
CHANGED
|
@@ -1773,6 +1773,7 @@ var init_Button = __esm({
|
|
|
1773
1773
|
"button",
|
|
1774
1774
|
{
|
|
1775
1775
|
ref,
|
|
1776
|
+
type: "button",
|
|
1776
1777
|
disabled: disabled || isLoading,
|
|
1777
1778
|
className: cn(
|
|
1778
1779
|
"relative inline-flex items-center justify-center gap-2",
|
|
@@ -3850,15 +3851,15 @@ var init_TextHighlight = __esm({
|
|
|
3850
3851
|
const typeStyles = {
|
|
3851
3852
|
question: cn(
|
|
3852
3853
|
// Blue border for questions
|
|
3853
|
-
"bg-card border-b-2 border-primary
|
|
3854
|
+
"bg-card border-b-2 border-primary",
|
|
3854
3855
|
"hover:bg-muted",
|
|
3855
|
-
isActive && "bg-primary
|
|
3856
|
+
isActive && "bg-primary/10 ring-2 ring-primary"
|
|
3856
3857
|
),
|
|
3857
3858
|
note: cn(
|
|
3858
3859
|
// Yellow border for notes
|
|
3859
|
-
"bg-card border-b-2 border-
|
|
3860
|
+
"bg-card border-b-2 border-warning",
|
|
3860
3861
|
"hover:bg-muted",
|
|
3861
|
-
isActive && "bg-
|
|
3862
|
+
isActive && "bg-warning/10 ring-2 ring-warning"
|
|
3862
3863
|
)
|
|
3863
3864
|
};
|
|
3864
3865
|
return /* @__PURE__ */ jsx(
|
|
@@ -3939,6 +3940,11 @@ var init_Typography = __esm({
|
|
|
3939
3940
|
inherit: "text-inherit"
|
|
3940
3941
|
};
|
|
3941
3942
|
weightStyles = {
|
|
3943
|
+
// Neutral: an atom default of "none" must not override the variant's baked
|
|
3944
|
+
// weight (C-PATTERN-ENUM-BLOCKS-NEUTRAL-OVERRIDE — `variant={h2}` rendered
|
|
3945
|
+
// tiny because the ui-typography atom's `weight: light`/`size: xs` defaults
|
|
3946
|
+
// clobbered every variant).
|
|
3947
|
+
none: "",
|
|
3942
3948
|
light: "font-light",
|
|
3943
3949
|
normal: "font-normal",
|
|
3944
3950
|
medium: "font-medium",
|
|
@@ -3964,6 +3970,7 @@ var init_Typography = __esm({
|
|
|
3964
3970
|
label: "span"
|
|
3965
3971
|
};
|
|
3966
3972
|
typographySizeStyles = {
|
|
3973
|
+
none: "",
|
|
3967
3974
|
xs: "text-xs",
|
|
3968
3975
|
sm: "text-sm",
|
|
3969
3976
|
md: "text-base",
|
|
@@ -4460,7 +4467,7 @@ function DayCell({
|
|
|
4460
4467
|
{
|
|
4461
4468
|
className: cn(
|
|
4462
4469
|
"p-2 text-center cursor-pointer hover:bg-muted transition-colors",
|
|
4463
|
-
isToday && "bg-
|
|
4470
|
+
isToday && "bg-primary/10",
|
|
4464
4471
|
className
|
|
4465
4472
|
),
|
|
4466
4473
|
onClick: handleClick,
|
|
@@ -4471,7 +4478,7 @@ function DayCell({
|
|
|
4471
4478
|
variant: "small",
|
|
4472
4479
|
className: cn(
|
|
4473
4480
|
"font-medium",
|
|
4474
|
-
isToday ? "text-
|
|
4481
|
+
isToday ? "text-primary" : "text-muted-foreground"
|
|
4475
4482
|
),
|
|
4476
4483
|
children: dayAbbr
|
|
4477
4484
|
}
|
|
@@ -4483,7 +4490,7 @@ function DayCell({
|
|
|
4483
4490
|
rounded: "full",
|
|
4484
4491
|
className: cn(
|
|
4485
4492
|
"h-8 w-8 mx-auto items-center justify-center",
|
|
4486
|
-
isToday && "bg-
|
|
4493
|
+
isToday && "bg-primary text-primary-foreground"
|
|
4487
4494
|
),
|
|
4488
4495
|
children: /* @__PURE__ */ jsx(Typography, { variant: "body", className: "font-semibold", children: safeDate.getDate() })
|
|
4489
4496
|
}
|
|
@@ -7798,19 +7805,19 @@ var init_ActivationBlock = __esm({
|
|
|
7798
7805
|
"div",
|
|
7799
7806
|
{
|
|
7800
7807
|
className: cn(
|
|
7801
|
-
"bg-
|
|
7808
|
+
"bg-primary/10 border-2 border-primary rounded-lg p-5 mb-6",
|
|
7802
7809
|
className
|
|
7803
7810
|
),
|
|
7804
7811
|
children: /* @__PURE__ */ jsxs("div", { className: "flex items-start gap-3", children: [
|
|
7805
|
-
/* @__PURE__ */ jsx(Lightbulb, { className: "text-
|
|
7812
|
+
/* @__PURE__ */ jsx(Lightbulb, { className: "text-primary flex-shrink-0 mt-1", size: 24 }),
|
|
7806
7813
|
/* @__PURE__ */ jsxs("div", { className: "flex-1", children: [
|
|
7807
|
-
/* @__PURE__ */ jsx("h4", { className: "font-semibold text-
|
|
7808
|
-
/* @__PURE__ */ jsx("p", { className: "text-
|
|
7814
|
+
/* @__PURE__ */ jsx("h4", { className: "font-semibold text-primary mb-2", children: "Before You Begin..." }),
|
|
7815
|
+
/* @__PURE__ */ jsx("p", { className: "text-foreground mb-3 text-sm md:text-base", children: question }),
|
|
7809
7816
|
isExpanded ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
7810
7817
|
/* @__PURE__ */ jsx(
|
|
7811
7818
|
"textarea",
|
|
7812
7819
|
{
|
|
7813
|
-
className: "w-full p-3 border border-
|
|
7820
|
+
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",
|
|
7814
7821
|
placeholder: "Jot down your thoughts...",
|
|
7815
7822
|
value: response,
|
|
7816
7823
|
onChange: (e) => setResponse(e.target.value),
|
|
@@ -7822,7 +7829,7 @@ var init_ActivationBlock = __esm({
|
|
|
7822
7829
|
"button",
|
|
7823
7830
|
{
|
|
7824
7831
|
onClick: handleSubmit,
|
|
7825
|
-
className: "px-4 py-2 bg-
|
|
7832
|
+
className: "px-4 py-2 bg-primary text-primary-foreground rounded-md hover:bg-primary-hover text-sm font-medium transition-colors",
|
|
7826
7833
|
children: "Continue to Lesson \u2192"
|
|
7827
7834
|
}
|
|
7828
7835
|
),
|
|
@@ -7833,7 +7840,7 @@ var init_ActivationBlock = __esm({
|
|
|
7833
7840
|
emit(`UI:${saveEvent}`, { response: "" });
|
|
7834
7841
|
setIsExpanded(false);
|
|
7835
7842
|
},
|
|
7836
|
-
className: "px-4 py-2 text-
|
|
7843
|
+
className: "px-4 py-2 text-primary hover:underline text-sm",
|
|
7837
7844
|
children: "Skip for now"
|
|
7838
7845
|
}
|
|
7839
7846
|
)
|
|
@@ -7842,7 +7849,7 @@ var init_ActivationBlock = __esm({
|
|
|
7842
7849
|
"button",
|
|
7843
7850
|
{
|
|
7844
7851
|
onClick: () => setIsExpanded(true),
|
|
7845
|
-
className: "text-sm text-
|
|
7852
|
+
className: "text-sm text-primary hover:underline font-medium",
|
|
7846
7853
|
children: "\u2713 Answered \xB7 Edit response"
|
|
7847
7854
|
}
|
|
7848
7855
|
)
|
|
@@ -8655,7 +8662,7 @@ var init_AuthLayout = __esm({
|
|
|
8655
8662
|
VStack,
|
|
8656
8663
|
{
|
|
8657
8664
|
className: cn(
|
|
8658
|
-
"hidden lg:flex lg:w-1/2 bg-primary
|
|
8665
|
+
"hidden lg:flex lg:w-1/2 bg-primary relative overflow-hidden",
|
|
8659
8666
|
"justify-between p-12"
|
|
8660
8667
|
),
|
|
8661
8668
|
style: backgroundImage ? {
|
|
@@ -8664,7 +8671,7 @@ var init_AuthLayout = __esm({
|
|
|
8664
8671
|
} : void 0,
|
|
8665
8672
|
gap: "none",
|
|
8666
8673
|
children: [
|
|
8667
|
-
/* @__PURE__ */ jsx(Box, { className: "absolute inset-0 bg-gradient-to-br from-primary
|
|
8674
|
+
/* @__PURE__ */ jsx(Box, { className: "absolute inset-0 bg-gradient-to-br from-primary/90 to-primary-hover/90" }),
|
|
8668
8675
|
/* @__PURE__ */ jsx(Box, { className: "relative z-10", children: /* @__PURE__ */ jsxs(Link, { to: "/", className: "flex items-center gap-3", children: [
|
|
8669
8676
|
logo || /* @__PURE__ */ jsx(Box, { className: "w-10 h-10 bg-[var(--color-card)]/20 rounded-xl flex items-center justify-center backdrop-blur", children: /* @__PURE__ */ jsx(
|
|
8670
8677
|
Typography,
|
|
@@ -8749,7 +8756,7 @@ var init_AuthLayout = __esm({
|
|
|
8749
8756
|
),
|
|
8750
8757
|
children: /* @__PURE__ */ jsxs(Box, { className: "w-full max-w-md", children: [
|
|
8751
8758
|
/* @__PURE__ */ jsx(Box, { className: "lg:hidden mb-8 text-center", children: /* @__PURE__ */ jsxs(Link, { to: "/", className: "inline-flex items-center gap-3", children: [
|
|
8752
|
-
logo || /* @__PURE__ */ jsx(Box, { className: "w-12 h-12 bg-primary
|
|
8759
|
+
logo || /* @__PURE__ */ jsx(Box, { className: "w-12 h-12 bg-primary rounded-xl flex items-center justify-center", children: /* @__PURE__ */ jsx(
|
|
8753
8760
|
Typography,
|
|
8754
8761
|
{
|
|
8755
8762
|
variant: "body1",
|
|
@@ -10743,7 +10750,7 @@ var init_CodeBlock = __esm({
|
|
|
10743
10750
|
{
|
|
10744
10751
|
justify: "between",
|
|
10745
10752
|
align: "center",
|
|
10746
|
-
className: "px-3 py-2 bg-[var(--color-card)] rounded-t-lg border-b border-
|
|
10753
|
+
className: "px-3 py-2 bg-[var(--color-card)] rounded-t-lg border-b border-border",
|
|
10747
10754
|
children: [
|
|
10748
10755
|
showLanguageBadge && /* @__PURE__ */ jsx(Badge, { variant: "default", size: "sm", children: language }),
|
|
10749
10756
|
effectiveCopy && /* @__PURE__ */ jsx(
|
|
@@ -10752,9 +10759,9 @@ var init_CodeBlock = __esm({
|
|
|
10752
10759
|
variant: "ghost",
|
|
10753
10760
|
size: "sm",
|
|
10754
10761
|
onClick: handleCopy,
|
|
10755
|
-
className: "opacity-0 group-hover:opacity-100 focus:opacity-100 transition-opacity text-muted-foreground hover:text-
|
|
10762
|
+
className: "opacity-0 group-hover:opacity-100 focus:opacity-100 transition-opacity text-muted-foreground hover:text-foreground",
|
|
10756
10763
|
"aria-label": t("common.copy"),
|
|
10757
|
-
children: copied ? /* @__PURE__ */ jsx(Icon, { name: "check", className: "w-4 h-4 text-
|
|
10764
|
+
children: copied ? /* @__PURE__ */ jsx(Icon, { name: "check", className: "w-4 h-4 text-success" }) : /* @__PURE__ */ jsx(Icon, { name: "copy", className: "w-4 h-4" })
|
|
10758
10765
|
}
|
|
10759
10766
|
)
|
|
10760
10767
|
]
|
|
@@ -11122,12 +11129,12 @@ var init_BloomQuizBlock = __esm({
|
|
|
11122
11129
|
init_useEventBus();
|
|
11123
11130
|
init_cn();
|
|
11124
11131
|
BLOOM_CONFIG = {
|
|
11125
|
-
remember: { color: "bg-
|
|
11126
|
-
understand: { color: "bg-
|
|
11127
|
-
apply: { color: "bg-
|
|
11128
|
-
analyze: { color: "bg-
|
|
11129
|
-
evaluate: { color: "bg-
|
|
11130
|
-
create: { color: "bg-
|
|
11132
|
+
remember: { color: "bg-secondary text-secondary-foreground", bgColor: "bg-muted", label: "Remember" },
|
|
11133
|
+
understand: { color: "bg-info text-info-foreground", bgColor: "bg-info/10", label: "Understand" },
|
|
11134
|
+
apply: { color: "bg-success text-success-foreground", bgColor: "bg-success/10", label: "Apply" },
|
|
11135
|
+
analyze: { color: "bg-warning text-warning-foreground", bgColor: "bg-warning/10", label: "Analyze" },
|
|
11136
|
+
evaluate: { color: "bg-accent text-accent-foreground", bgColor: "bg-accent/10", label: "Evaluate" },
|
|
11137
|
+
create: { color: "bg-primary text-primary-foreground", bgColor: "bg-primary/10", label: "Create" }
|
|
11131
11138
|
};
|
|
11132
11139
|
BloomQuizBlock = ({
|
|
11133
11140
|
level,
|
|
@@ -11153,22 +11160,22 @@ var init_BloomQuizBlock = __esm({
|
|
|
11153
11160
|
"div",
|
|
11154
11161
|
{
|
|
11155
11162
|
className: cn(
|
|
11156
|
-
"rounded-lg border border-
|
|
11163
|
+
"rounded-lg border border-primary p-4 my-4 transition-all",
|
|
11157
11164
|
config.bgColor,
|
|
11158
11165
|
className
|
|
11159
11166
|
),
|
|
11160
11167
|
children: [
|
|
11161
11168
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between mb-3", children: [
|
|
11162
11169
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 flex-wrap", children: [
|
|
11163
|
-
index !== void 0 && /* @__PURE__ */ jsxs("span", { className: "text-
|
|
11170
|
+
index !== void 0 && /* @__PURE__ */ jsxs("span", { className: "text-muted-foreground font-medium text-sm", children: [
|
|
11164
11171
|
"Question ",
|
|
11165
11172
|
index + 1
|
|
11166
11173
|
] }),
|
|
11167
|
-
/* @__PURE__ */ jsx("span", { className: cn(config.color, "text-
|
|
11174
|
+
/* @__PURE__ */ jsx("span", { className: cn(config.color, "text-xs px-2 py-1 rounded-full font-medium"), children: config.label })
|
|
11168
11175
|
] }),
|
|
11169
|
-
isAnswered && /* @__PURE__ */ jsx(CheckCircle, { className: "text-
|
|
11176
|
+
isAnswered && /* @__PURE__ */ jsx(CheckCircle, { className: "text-success flex-shrink-0", size: 20 })
|
|
11170
11177
|
] }),
|
|
11171
|
-
/* @__PURE__ */ jsx("div", { className: "font-semibold text-
|
|
11178
|
+
/* @__PURE__ */ jsx("div", { className: "font-semibold text-primary mb-3 space-y-2", children: questionSegments.map(
|
|
11172
11179
|
(segment, idx) => segment.type === "markdown" ? /* @__PURE__ */ jsx(MarkdownContent, { content: segment.content }, `q-md-${idx}`) : /* @__PURE__ */ jsx(
|
|
11173
11180
|
CodeBlock,
|
|
11174
11181
|
{
|
|
@@ -11182,13 +11189,13 @@ var init_BloomQuizBlock = __esm({
|
|
|
11182
11189
|
"button",
|
|
11183
11190
|
{
|
|
11184
11191
|
type: "button",
|
|
11185
|
-
className: "inline-flex items-center rounded-md bg-
|
|
11192
|
+
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",
|
|
11186
11193
|
onClick: handleReveal,
|
|
11187
11194
|
children: revealed ? "Hide Answer" : "Reveal Answer"
|
|
11188
11195
|
}
|
|
11189
11196
|
),
|
|
11190
|
-
revealed && /* @__PURE__ */ jsxs("div", { className: "rounded-lg bg-
|
|
11191
|
-
/* @__PURE__ */ jsx("div", { className: "text-xs text-
|
|
11197
|
+
revealed && /* @__PURE__ */ 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: [
|
|
11198
|
+
/* @__PURE__ */ jsx("div", { className: "text-xs text-muted-foreground mb-1 font-medium uppercase tracking-wide", children: "Answer:" }),
|
|
11192
11199
|
answerSegments.map(
|
|
11193
11200
|
(segment, idx) => segment.type === "markdown" ? /* @__PURE__ */ jsx(MarkdownContent, { content: segment.content }, `a-md-${idx}`) : /* @__PURE__ */ jsx(
|
|
11194
11201
|
CodeBlock,
|
|
@@ -11462,12 +11469,12 @@ var init_QuizBlock = __esm({
|
|
|
11462
11469
|
}) => {
|
|
11463
11470
|
const { t } = useTranslate();
|
|
11464
11471
|
const [revealed, setRevealed] = useState(false);
|
|
11465
|
-
return /* @__PURE__ */ jsx(Card2, { className: cn("my-4 border-
|
|
11472
|
+
return /* @__PURE__ */ jsx(Card2, { className: cn("my-4 border-primary", className), children: /* @__PURE__ */ jsxs(VStack, { gap: "sm", className: "p-4", children: [
|
|
11466
11473
|
/* @__PURE__ */ jsxs(HStack, { gap: "sm", align: "start", children: [
|
|
11467
|
-
/* @__PURE__ */ jsx(Icon, { icon: HelpCircle, size: "sm", className: "text-
|
|
11474
|
+
/* @__PURE__ */ jsx(Icon, { icon: HelpCircle, size: "sm", className: "text-primary mt-0.5 shrink-0" }),
|
|
11468
11475
|
/* @__PURE__ */ jsx(Typography, { variant: "body", className: "font-medium", children: question })
|
|
11469
11476
|
] }),
|
|
11470
|
-
revealed ? /* @__PURE__ */ jsx(Box, { className: "pl-7 pt-2 border-t border-
|
|
11477
|
+
revealed ? /* @__PURE__ */ jsx(Box, { className: "pl-7 pt-2 border-t border-border", children: /* @__PURE__ */ jsx(Typography, { variant: "body", className: "text-foreground", children: answer }) }) : null,
|
|
11471
11478
|
/* @__PURE__ */ jsx(
|
|
11472
11479
|
Button,
|
|
11473
11480
|
{
|
|
@@ -13379,7 +13386,7 @@ var init_BookTableOfContents = __esm({
|
|
|
13379
13386
|
className: cn(
|
|
13380
13387
|
"justify-start text-left w-full",
|
|
13381
13388
|
direction === "rtl" && "text-right",
|
|
13382
|
-
isCurrent && "bg-
|
|
13389
|
+
isCurrent && "bg-primary/10 text-primary"
|
|
13383
13390
|
),
|
|
13384
13391
|
children: /* @__PURE__ */ jsx(Box, { className: "truncate", children: /* @__PURE__ */ jsx(Typography, { variant: "body", children: String(chapter.title ?? "") }) })
|
|
13385
13392
|
},
|
|
@@ -14627,7 +14634,7 @@ function CalendarGrid({
|
|
|
14627
14634
|
border: true,
|
|
14628
14635
|
className: cn(
|
|
14629
14636
|
"cursor-pointer hover:shadow-sm transition-shadow text-xs truncate",
|
|
14630
|
-
color ? color : "bg-
|
|
14637
|
+
color ? color : "bg-primary/10 border-primary/30 text-primary"
|
|
14631
14638
|
),
|
|
14632
14639
|
onClick: (e) => handleEventClick(event, e),
|
|
14633
14640
|
children: /* @__PURE__ */ jsx(Typography, { variant: "small", className: "truncate font-medium", children: event.title })
|
|
@@ -14725,7 +14732,7 @@ function CalendarGrid({
|
|
|
14725
14732
|
onClick: () => handleSlotClick(day, time),
|
|
14726
14733
|
className: cn(
|
|
14727
14734
|
"border-l border-border",
|
|
14728
|
-
isToday && "bg-
|
|
14735
|
+
isToday && "bg-primary/10"
|
|
14729
14736
|
),
|
|
14730
14737
|
...longPressEvent ? {
|
|
14731
14738
|
onPointerDown: () => startLongPress(day, time),
|
|
@@ -18401,31 +18408,31 @@ var init_CodeRunnerPanel = __esm({
|
|
|
18401
18408
|
}
|
|
18402
18409
|
)
|
|
18403
18410
|
] }),
|
|
18404
|
-
hasOutput && /* @__PURE__ */ jsxs(Box, { className: "rounded-lg border border-
|
|
18411
|
+
hasOutput && /* @__PURE__ */ jsxs(Box, { className: "rounded-lg border border-border bg-foreground overflow-hidden", children: [
|
|
18405
18412
|
/* @__PURE__ */ jsxs(
|
|
18406
18413
|
HStack,
|
|
18407
18414
|
{
|
|
18408
18415
|
gap: "sm",
|
|
18409
18416
|
align: "center",
|
|
18410
|
-
className: "px-3 py-2 bg-
|
|
18417
|
+
className: "px-3 py-2 bg-card border-b border-border",
|
|
18411
18418
|
children: [
|
|
18412
|
-
/* @__PURE__ */ jsx(Terminal, { size: 16, className: "text-
|
|
18413
|
-
/* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-
|
|
18419
|
+
/* @__PURE__ */ jsx(Terminal, { size: 16, className: "text-muted-foreground" }),
|
|
18420
|
+
/* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-foreground font-medium", children: "Output" })
|
|
18414
18421
|
]
|
|
18415
18422
|
}
|
|
18416
18423
|
),
|
|
18417
|
-
/* @__PURE__ */ jsx(VStack, { gap: "none", className: "p-3 font-mono text-sm", children: error ? /* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-
|
|
18418
|
-
output?.stdout ? /* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-
|
|
18419
|
-
output?.stderr ? /* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-
|
|
18420
|
-
!output?.stdout && !output?.stderr ? /* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-
|
|
18421
|
-
output && output.testResults.length > 0 && /* @__PURE__ */ jsx(Box, { className: "mt-3 pt-3 border-t border-
|
|
18422
|
-
test.passed ? /* @__PURE__ */ jsx(CheckCircle, { size: 14, className: "text-
|
|
18424
|
+
/* @__PURE__ */ jsx(VStack, { gap: "none", className: "p-3 font-mono text-sm", children: error ? /* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-error whitespace-pre-wrap", children: error }) : /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
18425
|
+
output?.stdout ? /* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-background whitespace-pre-wrap", children: output.stdout }) : null,
|
|
18426
|
+
output?.stderr ? /* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-error whitespace-pre-wrap", children: output.stderr }) : null,
|
|
18427
|
+
!output?.stdout && !output?.stderr ? /* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-background italic", children: "No output" }) : null,
|
|
18428
|
+
output && output.testResults.length > 0 && /* @__PURE__ */ jsx(Box, { className: "mt-3 pt-3 border-t border-border space-y-2", children: output.testResults.map((test, index) => /* @__PURE__ */ jsxs(HStack, { gap: "sm", align: "start", className: "text-xs", children: [
|
|
18429
|
+
test.passed ? /* @__PURE__ */ jsx(CheckCircle, { size: 14, className: "text-success mt-0.5" }) : /* @__PURE__ */ jsx(XCircle, { size: 14, className: "text-error mt-0.5" }),
|
|
18423
18430
|
/* @__PURE__ */ jsxs(VStack, { gap: "xs", className: "flex-1", children: [
|
|
18424
18431
|
/* @__PURE__ */ jsxs(
|
|
18425
18432
|
Typography,
|
|
18426
18433
|
{
|
|
18427
18434
|
variant: "small",
|
|
18428
|
-
className: test.passed ? "text-
|
|
18435
|
+
className: test.passed ? "text-success" : "text-error",
|
|
18429
18436
|
children: [
|
|
18430
18437
|
"Test ",
|
|
18431
18438
|
index + 1,
|
|
@@ -18434,15 +18441,15 @@ var init_CodeRunnerPanel = __esm({
|
|
|
18434
18441
|
]
|
|
18435
18442
|
}
|
|
18436
18443
|
),
|
|
18437
|
-
/* @__PURE__ */ jsxs(Typography, { variant: "small", className: "text-
|
|
18444
|
+
/* @__PURE__ */ jsxs(Typography, { variant: "small", className: "text-background", children: [
|
|
18438
18445
|
"Input: ",
|
|
18439
18446
|
test.input
|
|
18440
18447
|
] }),
|
|
18441
|
-
/* @__PURE__ */ jsxs(Typography, { variant: "small", className: "text-
|
|
18448
|
+
/* @__PURE__ */ jsxs(Typography, { variant: "small", className: "text-background", children: [
|
|
18442
18449
|
"Expected: ",
|
|
18443
18450
|
test.expectedOutput
|
|
18444
18451
|
] }),
|
|
18445
|
-
/* @__PURE__ */ jsxs(Typography, { variant: "small", className: "text-
|
|
18452
|
+
/* @__PURE__ */ jsxs(Typography, { variant: "small", className: "text-background", children: [
|
|
18446
18453
|
"Actual: ",
|
|
18447
18454
|
test.actualOutput
|
|
18448
18455
|
] })
|
|
@@ -18627,14 +18634,14 @@ var init_ConnectionBlock = __esm({
|
|
|
18627
18634
|
"div",
|
|
18628
18635
|
{
|
|
18629
18636
|
className: cn(
|
|
18630
|
-
"bg-
|
|
18637
|
+
"bg-success/10 border-l-4 border-success rounded-r-lg p-5 mb-6",
|
|
18631
18638
|
className
|
|
18632
18639
|
),
|
|
18633
18640
|
children: /* @__PURE__ */ jsxs("div", { className: "flex items-start gap-3", children: [
|
|
18634
|
-
/* @__PURE__ */ jsx(Link2, { className: "text-
|
|
18641
|
+
/* @__PURE__ */ jsx(Link2, { className: "text-success flex-shrink-0 mt-1", size: 20 }),
|
|
18635
18642
|
/* @__PURE__ */ jsxs("div", { className: "flex-1", children: [
|
|
18636
|
-
/* @__PURE__ */ jsx("h4", { className: "font-semibold text-
|
|
18637
|
-
/* @__PURE__ */ jsx("div", { className: "prose dark:prose-invert prose-sm max-w-none text-
|
|
18643
|
+
/* @__PURE__ */ jsx("h4", { className: "font-semibold text-success mb-2", children: "Building On What You Know" }),
|
|
18644
|
+
/* @__PURE__ */ jsx("div", { className: "prose dark:prose-invert prose-sm max-w-none text-foreground", children: /* @__PURE__ */ jsx(MarkdownContent, { content }) })
|
|
18638
18645
|
] })
|
|
18639
18646
|
] })
|
|
18640
18647
|
}
|
|
@@ -19025,7 +19032,7 @@ function CounterStandard({
|
|
|
19025
19032
|
variant: "h1",
|
|
19026
19033
|
className: cn(
|
|
19027
19034
|
sizeStyles8[size].display,
|
|
19028
|
-
"font-bold tabular-nums text-primary
|
|
19035
|
+
"font-bold tabular-nums text-primary"
|
|
19029
19036
|
),
|
|
19030
19037
|
children: resolved.count
|
|
19031
19038
|
}
|
|
@@ -19098,7 +19105,7 @@ function CounterFull({
|
|
|
19098
19105
|
variant: "h1",
|
|
19099
19106
|
className: cn(
|
|
19100
19107
|
sizeStyles8[size].display,
|
|
19101
|
-
"font-bold tabular-nums text-primary
|
|
19108
|
+
"font-bold tabular-nums text-primary"
|
|
19102
19109
|
),
|
|
19103
19110
|
children: resolved.count
|
|
19104
19111
|
}
|
|
@@ -19363,11 +19370,11 @@ var init_DashboardLayout = __esm({
|
|
|
19363
19370
|
className: "h-16 px-4 border-b border-border dark:border-border",
|
|
19364
19371
|
children: [
|
|
19365
19372
|
/* @__PURE__ */ jsxs(Link, { to: "/", className: "flex items-center gap-2", children: [
|
|
19366
|
-
logo || /* @__PURE__ */ jsx(Box, { className: "w-8 h-8 bg-primary
|
|
19373
|
+
logo || /* @__PURE__ */ jsx(Box, { className: "w-8 h-8 bg-primary rounded-lg flex items-center justify-center", children: /* @__PURE__ */ jsx(
|
|
19367
19374
|
Typography,
|
|
19368
19375
|
{
|
|
19369
19376
|
variant: "small",
|
|
19370
|
-
className: "text-
|
|
19377
|
+
className: "text-primary-foreground font-bold text-sm",
|
|
19371
19378
|
as: "span",
|
|
19372
19379
|
children: appName.charAt(0).toUpperCase()
|
|
19373
19380
|
}
|
|
@@ -19446,11 +19453,11 @@ var init_DashboardLayout = __esm({
|
|
|
19446
19453
|
className: "hidden @md/dashboard:flex items-center gap-1 overflow-x-auto",
|
|
19447
19454
|
children: [
|
|
19448
19455
|
/* @__PURE__ */ jsxs(Link, { to: "/", className: "flex items-center gap-2 mr-3 shrink-0", children: [
|
|
19449
|
-
logo || /* @__PURE__ */ jsx(Box, { className: "w-7 h-7 bg-primary
|
|
19456
|
+
logo || /* @__PURE__ */ jsx(Box, { className: "w-7 h-7 bg-primary rounded-lg flex items-center justify-center", children: /* @__PURE__ */ jsx(
|
|
19450
19457
|
Typography,
|
|
19451
19458
|
{
|
|
19452
19459
|
variant: "small",
|
|
19453
|
-
className: "text-
|
|
19460
|
+
className: "text-primary-foreground font-bold text-xs",
|
|
19454
19461
|
as: "span",
|
|
19455
19462
|
children: appName.charAt(0).toUpperCase()
|
|
19456
19463
|
}
|
|
@@ -19510,8 +19517,8 @@ var init_DashboardLayout = __esm({
|
|
|
19510
19517
|
{
|
|
19511
19518
|
as: "span",
|
|
19512
19519
|
className: cn(
|
|
19513
|
-
"absolute -top-0.5 -right-0.5 min-w-[18px] h-[18px] px-1 rounded-full text-xs font-semibold
|
|
19514
|
-
action.variant === "danger" ? "bg-error" : action.variant === "primary" ? "bg-primary" : "bg-foreground"
|
|
19520
|
+
"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",
|
|
19521
|
+
action.variant === "danger" ? "bg-error text-error-foreground" : action.variant === "primary" ? "bg-primary text-primary-foreground" : "bg-foreground text-background"
|
|
19515
19522
|
),
|
|
19516
19523
|
children: action.badge
|
|
19517
19524
|
}
|
|
@@ -19533,7 +19540,7 @@ var init_DashboardLayout = __esm({
|
|
|
19533
19540
|
Box,
|
|
19534
19541
|
{
|
|
19535
19542
|
as: "span",
|
|
19536
|
-
className: "absolute -top-0.5 -right-0.5 min-w-[18px] h-[18px] px-1 bg-error rounded-full text-xs font-semibold text-
|
|
19543
|
+
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",
|
|
19537
19544
|
children: unreadCount > 99 ? "99+" : unreadCount
|
|
19538
19545
|
}
|
|
19539
19546
|
)
|
|
@@ -19816,7 +19823,7 @@ function SubMenu({
|
|
|
19816
19823
|
),
|
|
19817
19824
|
children: [
|
|
19818
19825
|
item.icon && (typeof item.icon === "string" ? /* @__PURE__ */ jsx(Icon, { name: item.icon, size: "sm", className: "flex-shrink-0" }) : /* @__PURE__ */ jsx(Icon, { icon: item.icon, size: "sm", className: "flex-shrink-0" })),
|
|
19819
|
-
/* @__PURE__ */ jsx(Typography, { variant: "small", className: cn("flex-1", isDanger && "text-
|
|
19826
|
+
/* @__PURE__ */ jsx(Typography, { variant: "small", className: cn("flex-1", isDanger && "text-error"), children: item.label }),
|
|
19820
19827
|
item.badge !== void 0 && /* @__PURE__ */ jsx("span", { className: "ml-auto text-xs font-medium", children: item.badge })
|
|
19821
19828
|
]
|
|
19822
19829
|
},
|
|
@@ -19873,7 +19880,7 @@ function MenuItemRow({
|
|
|
19873
19880
|
Typography,
|
|
19874
19881
|
{
|
|
19875
19882
|
variant: "small",
|
|
19876
|
-
className: cn("flex-1", isDanger && "text-
|
|
19883
|
+
className: cn("flex-1", isDanger && "text-error"),
|
|
19877
19884
|
children: item.label
|
|
19878
19885
|
}
|
|
19879
19886
|
),
|
|
@@ -20641,14 +20648,25 @@ function DataGrid({
|
|
|
20641
20648
|
const bodyFields = fieldDefs.filter((f3) => f3 !== titleField && !badgeFields.includes(f3));
|
|
20642
20649
|
const primaryActions = actionDefs.filter((a) => a.variant !== "danger");
|
|
20643
20650
|
const dangerActions = actionDefs.filter((a) => a.variant === "danger");
|
|
20644
|
-
const
|
|
20645
|
-
|
|
20651
|
+
const fireAction = (action, itemData) => {
|
|
20652
|
+
if (action.navigatesTo) {
|
|
20653
|
+
const url = action.navigatesTo.replace(
|
|
20654
|
+
/\{\{row\.(\w+(?:\.\w+)*)\}\}/g,
|
|
20655
|
+
(_, field) => String(itemData[field] ?? "")
|
|
20656
|
+
);
|
|
20657
|
+
eventBus.emit("UI:NAVIGATE", { url, row: itemData });
|
|
20658
|
+
return;
|
|
20659
|
+
}
|
|
20646
20660
|
const payload = {
|
|
20647
20661
|
id: itemData.id,
|
|
20648
20662
|
row: itemData
|
|
20649
20663
|
};
|
|
20650
20664
|
eventBus.emit(`UI:${action.event}`, payload);
|
|
20651
20665
|
};
|
|
20666
|
+
const handleActionClick = (action, itemData) => (e) => {
|
|
20667
|
+
e.stopPropagation();
|
|
20668
|
+
fireAction(action, itemData);
|
|
20669
|
+
};
|
|
20652
20670
|
const hasRenderProp = typeof children === "function";
|
|
20653
20671
|
useEffect(() => {
|
|
20654
20672
|
if (data.length > 0 && !hasRenderProp && fieldDefs.length === 0) {
|
|
@@ -20715,13 +20733,46 @@ function DataGrid({
|
|
|
20715
20733
|
const wrapDnd = (node) => dnd.isZone ? /* @__PURE__ */ jsx(dnd.SortableItem, { id: dndId, children: node }, dndId) : node;
|
|
20716
20734
|
if (hasRenderProp) {
|
|
20717
20735
|
return wrapDnd(
|
|
20718
|
-
/* @__PURE__ */
|
|
20736
|
+
/* @__PURE__ */ jsxs(
|
|
20719
20737
|
Box,
|
|
20720
20738
|
{
|
|
20721
20739
|
"data-entity-row": true,
|
|
20722
20740
|
"data-entity-id": id,
|
|
20723
20741
|
className: cn(isSelected && "ring-2 ring-primary rounded-lg"),
|
|
20724
|
-
children:
|
|
20742
|
+
children: [
|
|
20743
|
+
children(itemData, index),
|
|
20744
|
+
actionDefs.length > 0 && /* @__PURE__ */ jsx(Box, { className: "px-4 py-3 border-t border-border", children: /* @__PURE__ */ jsxs(HStack, { gap: "sm", className: "justify-end", children: [
|
|
20745
|
+
(maxInlineActions != null ? actionDefs.slice(0, maxInlineActions) : actionDefs).map((action, idx) => /* @__PURE__ */ jsxs(
|
|
20746
|
+
Button,
|
|
20747
|
+
{
|
|
20748
|
+
variant: action.variant === "primary" ? "primary" : "ghost",
|
|
20749
|
+
size: "sm",
|
|
20750
|
+
onClick: handleActionClick(action, itemData),
|
|
20751
|
+
"data-testid": `action-${action.event}`,
|
|
20752
|
+
"data-row-id": String(itemData.id),
|
|
20753
|
+
className: action.variant === "danger" ? "text-error hover:text-error hover:bg-error/10" : void 0,
|
|
20754
|
+
children: [
|
|
20755
|
+
action.icon && renderIconInput(action.icon, { size: "xs", className: "mr-1" }),
|
|
20756
|
+
action.label
|
|
20757
|
+
]
|
|
20758
|
+
},
|
|
20759
|
+
idx
|
|
20760
|
+
)),
|
|
20761
|
+
maxInlineActions != null && actionDefs.length > maxInlineActions && /* @__PURE__ */ jsx(
|
|
20762
|
+
Menu,
|
|
20763
|
+
{
|
|
20764
|
+
position: "bottom-end",
|
|
20765
|
+
trigger: /* @__PURE__ */ jsx(Button, { variant: "ghost", size: "sm", "aria-label": t("common.actions"), "data-testid": "action-overflow", children: /* @__PURE__ */ jsx(Icon, { name: "more-horizontal", size: "xs" }) }),
|
|
20766
|
+
items: actionDefs.slice(maxInlineActions).map((action) => ({
|
|
20767
|
+
label: action.label,
|
|
20768
|
+
icon: action.icon,
|
|
20769
|
+
event: action.event,
|
|
20770
|
+
onClick: () => fireAction(action, itemData)
|
|
20771
|
+
}))
|
|
20772
|
+
}
|
|
20773
|
+
)
|
|
20774
|
+
] }) })
|
|
20775
|
+
]
|
|
20725
20776
|
},
|
|
20726
20777
|
id
|
|
20727
20778
|
)
|
|
@@ -20858,10 +20909,7 @@ function DataGrid({
|
|
|
20858
20909
|
label: action.label,
|
|
20859
20910
|
icon: action.icon,
|
|
20860
20911
|
event: action.event,
|
|
20861
|
-
onClick: () =>
|
|
20862
|
-
id: itemData.id,
|
|
20863
|
-
row: itemData
|
|
20864
|
-
})
|
|
20912
|
+
onClick: () => fireAction(action, itemData)
|
|
20865
20913
|
}))
|
|
20866
20914
|
}
|
|
20867
20915
|
)
|
|
@@ -22587,7 +22635,9 @@ var init_FilterGroup = __esm({
|
|
|
22587
22635
|
showIcon = true,
|
|
22588
22636
|
query,
|
|
22589
22637
|
isLoading,
|
|
22590
|
-
look = "toolbar"
|
|
22638
|
+
look = "toolbar",
|
|
22639
|
+
event,
|
|
22640
|
+
clearEvent
|
|
22591
22641
|
}) => {
|
|
22592
22642
|
const { t } = useTranslate();
|
|
22593
22643
|
const eventBus = useEventBus();
|
|
@@ -22624,14 +22674,18 @@ var init_FilterGroup = __esm({
|
|
|
22624
22674
|
queryState.setFilter(field, value === "all" ? null : value);
|
|
22625
22675
|
}
|
|
22626
22676
|
onFilterChange?.(field, value === "all" ? null : value);
|
|
22627
|
-
|
|
22677
|
+
const payload = {
|
|
22628
22678
|
entity,
|
|
22629
22679
|
field,
|
|
22630
22680
|
value: value === "all" || value === null ? "" : value,
|
|
22631
22681
|
query
|
|
22632
|
-
}
|
|
22682
|
+
};
|
|
22683
|
+
if (event && event !== "FILTER") {
|
|
22684
|
+
eventBus.emit(`UI:${event}`, payload);
|
|
22685
|
+
}
|
|
22686
|
+
eventBus.emit("UI:FILTER", payload);
|
|
22633
22687
|
},
|
|
22634
|
-
[onFilterChange, queryState, eventBus, entity, query]
|
|
22688
|
+
[onFilterChange, queryState, eventBus, entity, query, event]
|
|
22635
22689
|
);
|
|
22636
22690
|
const handleClearAll = useCallback(() => {
|
|
22637
22691
|
setSelectedValues({});
|
|
@@ -22639,8 +22693,11 @@ var init_FilterGroup = __esm({
|
|
|
22639
22693
|
queryState.clearFilters();
|
|
22640
22694
|
}
|
|
22641
22695
|
onClearAll?.();
|
|
22696
|
+
if (clearEvent && clearEvent !== "CLEAR_FILTERS") {
|
|
22697
|
+
eventBus.emit(`UI:${clearEvent}`, { entity, query });
|
|
22698
|
+
}
|
|
22642
22699
|
eventBus.emit("UI:CLEAR_FILTERS", { entity, query });
|
|
22643
|
-
}, [onClearAll, queryState, eventBus, entity, query]);
|
|
22700
|
+
}, [onClearAll, queryState, eventBus, entity, query, clearEvent]);
|
|
22644
22701
|
const activeFilterCount = Object.keys(selectedValues).length;
|
|
22645
22702
|
if (variant === "pills") {
|
|
22646
22703
|
return /* @__PURE__ */ jsxs(
|
|
@@ -23871,8 +23928,8 @@ var init_RelationSelect = __esm({
|
|
|
23871
23928
|
disabled,
|
|
23872
23929
|
className: cn(
|
|
23873
23930
|
"w-full justify-between font-normal",
|
|
23874
|
-
error && "border-
|
|
23875
|
-
isOpen && "ring-2 ring-primary
|
|
23931
|
+
error && "border-error/50 focus:border-error focus:ring-error",
|
|
23932
|
+
isOpen && "ring-2 ring-primary border-primary"
|
|
23876
23933
|
),
|
|
23877
23934
|
children: [
|
|
23878
23935
|
/* @__PURE__ */ jsx(
|
|
@@ -23952,7 +24009,7 @@ var init_RelationSelect = __esm({
|
|
|
23952
24009
|
paddingY: "sm",
|
|
23953
24010
|
className: cn(
|
|
23954
24011
|
"text-left text-sm hover:bg-muted focus:outline-none focus:bg-muted",
|
|
23955
|
-
option.value === value && "bg-primary
|
|
24012
|
+
option.value === value && "bg-primary/10 text-primary",
|
|
23956
24013
|
option.disabled && "opacity-50 cursor-not-allowed"
|
|
23957
24014
|
),
|
|
23958
24015
|
onClick: () => handleSelect(option),
|
|
@@ -24018,7 +24075,7 @@ var init_SearchInput = __esm({
|
|
|
24018
24075
|
queryState.setSearch(newValue);
|
|
24019
24076
|
}
|
|
24020
24077
|
onSearch?.(newValue);
|
|
24021
|
-
if (event) {
|
|
24078
|
+
if (event && event !== "SEARCH") {
|
|
24022
24079
|
eventBus.emit(`UI:${event}`, { searchTerm: newValue, entity });
|
|
24023
24080
|
}
|
|
24024
24081
|
if (event || entity || query) {
|
|
@@ -24109,7 +24166,7 @@ var init_SidePanel = __esm({
|
|
|
24109
24166
|
showOverlay && /* @__PURE__ */ jsx(Presence, { show: isOpen, animation: "overlay", children: /* @__PURE__ */ jsx(
|
|
24110
24167
|
Box,
|
|
24111
24168
|
{
|
|
24112
|
-
className: "fixed inset-0 bg-
|
|
24169
|
+
className: "fixed inset-0 bg-background/80 backdrop-blur-sm z-40 lg:hidden",
|
|
24113
24170
|
onClick: handleClose
|
|
24114
24171
|
}
|
|
24115
24172
|
) }),
|
|
@@ -24476,7 +24533,7 @@ var init_WizardNavigation = __esm({
|
|
|
24476
24533
|
/* @__PURE__ */ jsx(Icon, { name: "chevron-left", size: "sm" }),
|
|
24477
24534
|
resolvedBackLabel
|
|
24478
24535
|
] }) : /* @__PURE__ */ jsx(Box, {}),
|
|
24479
|
-
/* @__PURE__ */ jsx(HStack, { align: "center", gap: "sm", children: /* @__PURE__ */ jsx(Typography, { variant: "caption", className: "text-
|
|
24536
|
+
/* @__PURE__ */ jsx(HStack, { align: "center", gap: "sm", children: /* @__PURE__ */ jsx(Typography, { variant: "caption", className: "text-muted-foreground", children: t("wizard.stepOf", { current: String(currentStep + 1), total: String(totalSteps) }) }) }),
|
|
24480
24537
|
isLastStep && showComplete ? /* @__PURE__ */ jsx(Button, { variant: "primary", onClick: handleComplete, disabled: !isValid, children: resolvedCompleteLabel }) : showNext ? /* @__PURE__ */ jsxs(Button, { variant: "primary", onClick: handleNext, disabled: !isValid, children: [
|
|
24481
24538
|
resolvedNextLabel,
|
|
24482
24539
|
/* @__PURE__ */ jsx(Icon, { name: "chevron-right", size: "sm" })
|
|
@@ -29195,6 +29252,7 @@ var init_Lightbox = __esm({
|
|
|
29195
29252
|
{
|
|
29196
29253
|
className: cn(
|
|
29197
29254
|
"fixed inset-0 z-50 flex items-center justify-center",
|
|
29255
|
+
// eslint-disable-next-line almadar/no-hardcoded-colors -- media overlay: lightbox scrim behind images
|
|
29198
29256
|
"bg-black bg-opacity-90",
|
|
29199
29257
|
className
|
|
29200
29258
|
),
|
|
@@ -29217,7 +29275,7 @@ var init_Lightbox = __esm({
|
|
|
29217
29275
|
"p-2 rounded-full",
|
|
29218
29276
|
"text-[var(--color-foreground)] bg-[var(--color-card)]",
|
|
29219
29277
|
"hover:bg-opacity-70 transition-opacity",
|
|
29220
|
-
"focus:outline-none focus:ring-2 focus:ring-
|
|
29278
|
+
"focus:outline-none focus:ring-2 focus:ring-ring"
|
|
29221
29279
|
),
|
|
29222
29280
|
"aria-label": t("aria.closeModal"),
|
|
29223
29281
|
children: /* @__PURE__ */ jsx(Icon, { name: "x", className: "w-6 h-6" })
|
|
@@ -29236,7 +29294,7 @@ var init_Lightbox = __esm({
|
|
|
29236
29294
|
"p-2 rounded-full",
|
|
29237
29295
|
"text-[var(--color-foreground)] bg-[var(--color-card)]",
|
|
29238
29296
|
"hover:bg-opacity-70 transition-opacity",
|
|
29239
|
-
"focus:outline-none focus:ring-2 focus:ring-
|
|
29297
|
+
"focus:outline-none focus:ring-2 focus:ring-ring"
|
|
29240
29298
|
),
|
|
29241
29299
|
"aria-label": t("aria.previousImage"),
|
|
29242
29300
|
children: /* @__PURE__ */ jsx(Icon, { name: "chevron-left", className: "w-8 h-8" })
|
|
@@ -29273,7 +29331,7 @@ var init_Lightbox = __esm({
|
|
|
29273
29331
|
"p-2 rounded-full",
|
|
29274
29332
|
"text-[var(--color-foreground)] bg-[var(--color-card)]",
|
|
29275
29333
|
"hover:bg-opacity-70 transition-opacity",
|
|
29276
|
-
"focus:outline-none focus:ring-2 focus:ring-
|
|
29334
|
+
"focus:outline-none focus:ring-2 focus:ring-ring"
|
|
29277
29335
|
),
|
|
29278
29336
|
"aria-label": t("aria.nextImage"),
|
|
29279
29337
|
children: /* @__PURE__ */ jsx(Icon, { name: "chevron-right", className: "w-8 h-8" })
|
|
@@ -32346,6 +32404,7 @@ var init_QrScanner = __esm({
|
|
|
32346
32404
|
overflow: "hidden",
|
|
32347
32405
|
rounded: "sm",
|
|
32348
32406
|
className: cn(
|
|
32407
|
+
// eslint-disable-next-line almadar/no-hardcoded-colors -- media overlay: always over a dark scrim
|
|
32349
32408
|
"bg-black",
|
|
32350
32409
|
"aspect-square w-full max-w-md",
|
|
32351
32410
|
className
|
|
@@ -32410,7 +32469,9 @@ var init_QrScanner = __esm({
|
|
|
32410
32469
|
type: "button",
|
|
32411
32470
|
onClick: togglePause,
|
|
32412
32471
|
className: cn(
|
|
32472
|
+
// eslint-disable-next-line almadar/no-hardcoded-colors -- media overlay: always over a dark scrim
|
|
32413
32473
|
"rounded-full bg-black bg-opacity-60 p-2 text-white",
|
|
32474
|
+
// eslint-disable-next-line almadar/no-hardcoded-colors -- media overlay: always over a dark scrim
|
|
32414
32475
|
"hover:bg-opacity-80 focus:outline-none focus:ring-2 focus:ring-white"
|
|
32415
32476
|
),
|
|
32416
32477
|
"aria-label": isPaused ? t("qrScanner.resumeScanning") : t("qrScanner.pauseScanning"),
|
|
@@ -32423,7 +32484,9 @@ var init_QrScanner = __esm({
|
|
|
32423
32484
|
type: "button",
|
|
32424
32485
|
onClick: toggleFacing,
|
|
32425
32486
|
className: cn(
|
|
32487
|
+
// eslint-disable-next-line almadar/no-hardcoded-colors -- media overlay: always over a dark scrim
|
|
32426
32488
|
"rounded-full bg-black bg-opacity-60 p-2 text-white",
|
|
32489
|
+
// eslint-disable-next-line almadar/no-hardcoded-colors -- media overlay: always over a dark scrim
|
|
32427
32490
|
"hover:bg-opacity-80 focus:outline-none focus:ring-2 focus:ring-white"
|
|
32428
32491
|
),
|
|
32429
32492
|
"aria-label": currentFacing === "environment" ? t("qrScanner.switchToFrontCamera") : t("qrScanner.switchToRearCamera"),
|
|
@@ -32436,7 +32499,9 @@ var init_QrScanner = __esm({
|
|
|
32436
32499
|
type: "button",
|
|
32437
32500
|
onClick: handleMockScan,
|
|
32438
32501
|
className: cn(
|
|
32502
|
+
// eslint-disable-next-line almadar/no-hardcoded-colors -- media overlay: always over a dark scrim
|
|
32439
32503
|
"rounded-full bg-black bg-opacity-60 px-3 py-2 text-xs text-white",
|
|
32504
|
+
// eslint-disable-next-line almadar/no-hardcoded-colors -- media overlay: always over a dark scrim
|
|
32440
32505
|
"hover:bg-opacity-80 focus:outline-none focus:ring-2 focus:ring-white"
|
|
32441
32506
|
),
|
|
32442
32507
|
"aria-label": t("aria.mockScanDev"),
|
|
@@ -35172,10 +35237,10 @@ var init_ModuleCard = __esm({
|
|
|
35172
35237
|
init_avl_atom_types();
|
|
35173
35238
|
init_MiniStateMachine();
|
|
35174
35239
|
PERSISTENCE_BORDER = {
|
|
35175
|
-
persistent: "border-l-[3px] border-l-
|
|
35176
|
-
runtime: "border-l-[3px] border-l-
|
|
35177
|
-
singleton: "border-l-[3px] border-l-
|
|
35178
|
-
instance: "border-l-[3px] border-l-
|
|
35240
|
+
persistent: "border-l-[3px] border-l-primary border-solid",
|
|
35241
|
+
runtime: "border-l-[3px] border-l-primary border-dashed",
|
|
35242
|
+
singleton: "border-l-[3px] border-l-primary border-double",
|
|
35243
|
+
instance: "border-l-[3px] border-l-primary border-dotted"
|
|
35179
35244
|
};
|
|
35180
35245
|
PERSISTENCE_ICON = {
|
|
35181
35246
|
persistent: "\u26C1",
|
|
@@ -35205,8 +35270,8 @@ var init_ModuleCard = __esm({
|
|
|
35205
35270
|
className: "rounded-lg border border-[var(--color-border)] bg-[var(--color-card)] shadow-sm overflow-hidden",
|
|
35206
35271
|
style: { minWidth: 280, maxWidth: 400 },
|
|
35207
35272
|
children: [
|
|
35208
|
-
/* @__PURE__ */ jsx(Handle, { type: "target", position: Position.Left, className: "!w-2.5 !h-2.5 !bg-
|
|
35209
|
-
/* @__PURE__ */ jsx(Handle, { type: "source", position: Position.Right, className: "!w-2.5 !h-2.5 !bg-
|
|
35273
|
+
/* @__PURE__ */ jsx(Handle, { type: "target", position: Position.Left, className: "!w-2.5 !h-2.5 !bg-warning" }),
|
|
35274
|
+
/* @__PURE__ */ jsx(Handle, { type: "source", position: Position.Right, className: "!w-2.5 !h-2.5 !bg-warning" }),
|
|
35210
35275
|
/* @__PURE__ */ jsx("div", { className: "px-3 py-2 border-b border-[var(--color-border)]", children: /* @__PURE__ */ jsx("span", { className: "text-base font-bold text-[var(--color-foreground)]", children: orbitalName }) }),
|
|
35211
35276
|
/* @__PURE__ */ jsxs("div", { className: `px-3 py-2 border-b border-[var(--color-border)] ${PERSISTENCE_BORDER[persistence] ?? ""}`, children: [
|
|
35212
35277
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1.5 mb-1.5", children: [
|
|
@@ -37662,19 +37727,19 @@ var init_ReflectionBlock = __esm({
|
|
|
37662
37727
|
"div",
|
|
37663
37728
|
{
|
|
37664
37729
|
className: cn(
|
|
37665
|
-
"my-6 border-l-4 border-
|
|
37730
|
+
"my-6 border-l-4 border-warning bg-warning/10 rounded-r-lg p-4",
|
|
37666
37731
|
className
|
|
37667
37732
|
),
|
|
37668
37733
|
children: /* @__PURE__ */ jsxs("div", { className: "flex items-start gap-3", children: [
|
|
37669
|
-
/* @__PURE__ */ jsx(PauseCircle, { className: "text-
|
|
37734
|
+
/* @__PURE__ */ jsx(PauseCircle, { className: "text-warning flex-shrink-0 mt-1", size: 20 }),
|
|
37670
37735
|
/* @__PURE__ */ jsxs("div", { className: "flex-1", children: [
|
|
37671
|
-
/* @__PURE__ */ jsx("div", { className: "font-medium text-
|
|
37672
|
-
/* @__PURE__ */ jsx("p", { className: "text-
|
|
37736
|
+
/* @__PURE__ */ jsx("div", { className: "font-medium text-warning mb-2", children: "Pause & Reflect" }),
|
|
37737
|
+
/* @__PURE__ */ jsx("p", { className: "text-foreground text-sm mb-3", children: prompt }),
|
|
37673
37738
|
isExpanded ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
37674
37739
|
/* @__PURE__ */ jsx(
|
|
37675
37740
|
"textarea",
|
|
37676
37741
|
{
|
|
37677
|
-
className: "w-full p-2 border border-
|
|
37742
|
+
className: "w-full p-2 border border-input rounded text-sm bg-card text-foreground focus:ring-2 focus:ring-ring focus:border-transparent",
|
|
37678
37743
|
placeholder: "Your thoughts...",
|
|
37679
37744
|
value: note,
|
|
37680
37745
|
onChange: (e) => setNote(e.target.value),
|
|
@@ -37685,7 +37750,7 @@ var init_ReflectionBlock = __esm({
|
|
|
37685
37750
|
"button",
|
|
37686
37751
|
{
|
|
37687
37752
|
onClick: handleSave,
|
|
37688
|
-
className: "mt-2 text-sm px-3 py-1 bg-
|
|
37753
|
+
className: "mt-2 text-sm px-3 py-1 bg-warning text-warning-foreground rounded hover:opacity-90 transition-colors",
|
|
37689
37754
|
children: "Save & Continue"
|
|
37690
37755
|
}
|
|
37691
37756
|
)
|
|
@@ -37693,7 +37758,7 @@ var init_ReflectionBlock = __esm({
|
|
|
37693
37758
|
"button",
|
|
37694
37759
|
{
|
|
37695
37760
|
onClick: () => setIsExpanded(true),
|
|
37696
|
-
className: "text-sm text-
|
|
37761
|
+
className: "text-sm text-warning hover:underline",
|
|
37697
37762
|
children: savedNote ? "\u2713 Answered \xB7 Edit" : "Answer this question"
|
|
37698
37763
|
}
|
|
37699
37764
|
)
|
|
@@ -38197,7 +38262,7 @@ function DataTable({
|
|
|
38197
38262
|
)),
|
|
38198
38263
|
rowActions && /* @__PURE__ */ jsx("th", { className: "w-12 px-4 py-3" })
|
|
38199
38264
|
] }) }),
|
|
38200
|
-
/* @__PURE__ */ jsx("tbody", { className: "divide-y divide-
|
|
38265
|
+
/* @__PURE__ */ jsx("tbody", { className: "divide-y divide-border", children: isLoading ? /* @__PURE__ */ jsx("tr", { children: /* @__PURE__ */ jsx(
|
|
38201
38266
|
"td",
|
|
38202
38267
|
{
|
|
38203
38268
|
colSpan: normalizedColumns.length + (selectable ? 1 : 0) + (rowActions ? 1 : 0),
|
|
@@ -38568,7 +38633,7 @@ var init_DetailPanel = __esm({
|
|
|
38568
38633
|
};
|
|
38569
38634
|
const effectiveFieldNames = isFieldDefArray(propFields) ? normalizeFieldDefs(propFields) : fieldNames;
|
|
38570
38635
|
const fieldTypeMap = isFieldDefArray(propFields) ? buildFieldTypeMap(propFields) : {};
|
|
38571
|
-
useCallback(
|
|
38636
|
+
const handleActionClick = useCallback(
|
|
38572
38637
|
(action, data2) => {
|
|
38573
38638
|
if (action.navigatesTo) {
|
|
38574
38639
|
const url = action.navigatesTo.replace(
|
|
@@ -38760,8 +38825,9 @@ var init_DetailPanel = __esm({
|
|
|
38760
38825
|
{
|
|
38761
38826
|
variant: action.variant || "secondary",
|
|
38762
38827
|
size: "sm",
|
|
38763
|
-
action: action.event,
|
|
38828
|
+
action: action.navigatesTo ? void 0 : action.event,
|
|
38764
38829
|
actionPayload: { row: normalizedData },
|
|
38830
|
+
onClick: action.navigatesTo ? () => handleActionClick(action, normalizedData) : void 0,
|
|
38765
38831
|
icon: action.icon,
|
|
38766
38832
|
"data-testid": action.event ? `action-${action.event}` : void 0,
|
|
38767
38833
|
"data-row-id": normalizedData?.id !== void 0 ? String(normalizedData.id) : void 0,
|
|
@@ -40804,8 +40870,9 @@ var init_MediaGallery = __esm({
|
|
|
40804
40870
|
)
|
|
40805
40871
|
}
|
|
40806
40872
|
),
|
|
40807
|
-
item.caption &&
|
|
40808
|
-
|
|
40873
|
+
item.caption && // eslint-disable-next-line almadar/no-hardcoded-colors -- media overlay: caption scrim over image
|
|
40874
|
+
/* @__PURE__ */ jsx(Box, { className: "absolute bottom-0 left-0 right-0 p-2 bg-gradient-to-t from-black/60 to-transparent", children: /* @__PURE__ */ jsx(Typography, { variant: "caption", className: "text-white truncate", children: item.caption }) }),
|
|
40875
|
+
selectable && isSelected && /* @__PURE__ */ jsx(Box, { className: "absolute top-2 right-2 w-5 h-5 rounded-full bg-primary flex items-center justify-center", children: /* @__PURE__ */ jsx(Typography, { variant: "caption", className: "text-primary-foreground text-xs", children: "\u2713" }) })
|
|
40809
40876
|
]
|
|
40810
40877
|
},
|
|
40811
40878
|
item.id
|
|
@@ -40834,7 +40901,7 @@ var init_MediaGallery = __esm({
|
|
|
40834
40901
|
size: "sm",
|
|
40835
40902
|
icon: X,
|
|
40836
40903
|
action: "LIGHTBOX_CLOSE",
|
|
40837
|
-
className: "text-
|
|
40904
|
+
className: "text-foreground hover:bg-muted/50"
|
|
40838
40905
|
}
|
|
40839
40906
|
) }),
|
|
40840
40907
|
/* @__PURE__ */ jsx(
|
|
@@ -40845,7 +40912,7 @@ var init_MediaGallery = __esm({
|
|
|
40845
40912
|
className: "max-w-full max-h-[80vh] object-contain rounded-md"
|
|
40846
40913
|
}
|
|
40847
40914
|
),
|
|
40848
|
-
lightboxItem.caption && /* @__PURE__ */ jsx(Typography, { variant: "body", className: "text-
|
|
40915
|
+
lightboxItem.caption && /* @__PURE__ */ jsx(Typography, { variant: "body", className: "text-foreground mt-3 text-center", children: lightboxItem.caption })
|
|
40849
40916
|
]
|
|
40850
40917
|
}
|
|
40851
40918
|
)
|
|
@@ -41287,7 +41354,7 @@ function WalkMinimap() {
|
|
|
41287
41354
|
{
|
|
41288
41355
|
variant,
|
|
41289
41356
|
size: "sm",
|
|
41290
|
-
className: `flex-shrink-0 text-[9px] ${isActive ? "ring-1 ring-
|
|
41357
|
+
className: `flex-shrink-0 text-[9px] ${isActive ? "ring-1 ring-info" : ""}`,
|
|
41291
41358
|
children: [
|
|
41292
41359
|
isDone ? "\u2713" : isActive ? "\u25CF" : "\u25CB",
|
|
41293
41360
|
" ",
|
|
@@ -41428,13 +41495,13 @@ function WalkMinimap() {
|
|
|
41428
41495
|
})
|
|
41429
41496
|
] }) }),
|
|
41430
41497
|
/* @__PURE__ */ jsx(Box, { className: "px-2 py-1 border-t border-border", children: /* @__PURE__ */ jsxs(HStack, { gap: "sm", className: "items-center justify-between", children: [
|
|
41431
|
-
/* @__PURE__ */ jsxs(Typography, { variant: "caption", className: "text-xs font-mono text-
|
|
41498
|
+
/* @__PURE__ */ jsxs(Typography, { variant: "caption", className: "text-xs font-mono text-success", children: [
|
|
41432
41499
|
"Engine: ",
|
|
41433
41500
|
engineCount,
|
|
41434
41501
|
"/",
|
|
41435
41502
|
totalTransitions
|
|
41436
41503
|
] }),
|
|
41437
|
-
domCount > 0 && /* @__PURE__ */ jsxs(Typography, { variant: "caption", className: "text-xs font-mono text-
|
|
41504
|
+
domCount > 0 && /* @__PURE__ */ jsxs(Typography, { variant: "caption", className: "text-xs font-mono text-info", children: [
|
|
41438
41505
|
"DOM: ",
|
|
41439
41506
|
domCount
|
|
41440
41507
|
] }),
|
|
@@ -41467,13 +41534,13 @@ function TraitsTab({ traits: traits2 }) {
|
|
|
41467
41534
|
const accordionItems = traits2.map((trait) => ({
|
|
41468
41535
|
id: trait.id,
|
|
41469
41536
|
header: /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 w-full", children: [
|
|
41470
|
-
/* @__PURE__ */ jsx(Typography, { variant: "body", weight: "semibold", className: "text-
|
|
41537
|
+
/* @__PURE__ */ jsx(Typography, { variant: "body", weight: "semibold", className: "text-primary", children: trait.name }),
|
|
41471
41538
|
/* @__PURE__ */ jsx(Badge, { variant: "success", size: "sm", children: trait.currentState }),
|
|
41472
|
-
/* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-
|
|
41539
|
+
/* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-muted-foreground ml-auto", children: t("debug.transitionsCount", { count: trait.transitionCount }) })
|
|
41473
41540
|
] }),
|
|
41474
41541
|
content: /* @__PURE__ */ jsxs(Stack, { gap: "sm", children: [
|
|
41475
41542
|
/* @__PURE__ */ jsxs("div", { children: [
|
|
41476
|
-
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-
|
|
41543
|
+
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-muted-foreground mb-2", children: t("debug.states") }),
|
|
41477
41544
|
/* @__PURE__ */ jsx("div", { className: "flex flex-wrap gap-1", children: trait.states.map((state) => /* @__PURE__ */ jsx(
|
|
41478
41545
|
Badge,
|
|
41479
41546
|
{
|
|
@@ -41485,18 +41552,18 @@ function TraitsTab({ traits: traits2 }) {
|
|
|
41485
41552
|
)) })
|
|
41486
41553
|
] }),
|
|
41487
41554
|
trait.transitions.length > 0 && /* @__PURE__ */ jsxs("div", { children: [
|
|
41488
|
-
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-
|
|
41555
|
+
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-muted-foreground mb-2", children: t("debug.transitions") }),
|
|
41489
41556
|
/* @__PURE__ */ jsx(Stack, { gap: "xs", children: trait.transitions.map((t2, i) => /* @__PURE__ */ jsxs(Typography, { variant: "small", className: "font-mono", children: [
|
|
41490
41557
|
t2.from,
|
|
41491
41558
|
" \u2192 ",
|
|
41492
41559
|
t2.to,
|
|
41493
41560
|
" ",
|
|
41494
|
-
/* @__PURE__ */ jsxs("span", { className: "text-
|
|
41561
|
+
/* @__PURE__ */ jsxs("span", { className: "text-muted-foreground", children: [
|
|
41495
41562
|
"(",
|
|
41496
41563
|
t2.event,
|
|
41497
41564
|
")"
|
|
41498
41565
|
] }),
|
|
41499
|
-
t2.guard && /* @__PURE__ */ jsxs("span", { className: "text-
|
|
41566
|
+
t2.guard && /* @__PURE__ */ jsxs("span", { className: "text-warning", children: [
|
|
41500
41567
|
" [",
|
|
41501
41568
|
t2.guard,
|
|
41502
41569
|
"]"
|
|
@@ -41504,7 +41571,7 @@ function TraitsTab({ traits: traits2 }) {
|
|
|
41504
41571
|
] }, i)) })
|
|
41505
41572
|
] }),
|
|
41506
41573
|
trait.guards.length > 0 && /* @__PURE__ */ jsxs("div", { children: [
|
|
41507
|
-
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-
|
|
41574
|
+
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-muted-foreground mb-2", children: t("debug.guards") }),
|
|
41508
41575
|
/* @__PURE__ */ jsx(Stack, { gap: "xs", children: trait.guards.map((g, i) => /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between", children: [
|
|
41509
41576
|
/* @__PURE__ */ jsx(Typography, { variant: "small", children: g.name }),
|
|
41510
41577
|
/* @__PURE__ */ jsx(Badge, { variant: g.lastResult === true ? "success" : g.lastResult === false ? "danger" : "default", size: "sm", children: g.lastResult === void 0 ? "?" : g.lastResult ? "\u2713" : "\u2717" })
|
|
@@ -41547,11 +41614,11 @@ function TicksTab({ ticks: ticks2 }) {
|
|
|
41547
41614
|
};
|
|
41548
41615
|
const TickCard = ({ tick, active }) => /* @__PURE__ */ jsxs(Card, { className: `p-3 ${!active ? "opacity-50" : ""}`, children: [
|
|
41549
41616
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 mb-2", children: [
|
|
41550
|
-
/* @__PURE__ */ jsx("span", { className: `w-2 h-2 rounded-full ${active ? "bg-
|
|
41551
|
-
/* @__PURE__ */ jsx(Typography, { variant: "body", weight: "semibold", className: "text-
|
|
41552
|
-
/* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-
|
|
41617
|
+
/* @__PURE__ */ jsx("span", { className: `w-2 h-2 rounded-full ${active ? "bg-success" : "bg-muted-foreground"}` }),
|
|
41618
|
+
/* @__PURE__ */ jsx(Typography, { variant: "body", weight: "semibold", className: "text-warning", children: tick.name }),
|
|
41619
|
+
/* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-muted-foreground", children: tick.traitName })
|
|
41553
41620
|
] }),
|
|
41554
|
-
/* @__PURE__ */ jsxs("div", { className: "flex gap-3 text-xs text-
|
|
41621
|
+
/* @__PURE__ */ jsxs("div", { className: "flex gap-3 text-xs text-muted-foreground", children: [
|
|
41555
41622
|
/* @__PURE__ */ jsxs("span", { children: [
|
|
41556
41623
|
tick.interval,
|
|
41557
41624
|
"ms"
|
|
@@ -41574,7 +41641,7 @@ function TicksTab({ ticks: ticks2 }) {
|
|
|
41574
41641
|
] });
|
|
41575
41642
|
return /* @__PURE__ */ jsxs("div", { className: "debug-tab debug-tab--ticks", children: [
|
|
41576
41643
|
activeTicks.length > 0 && /* @__PURE__ */ jsxs("div", { className: "mb-4", children: [
|
|
41577
|
-
/* @__PURE__ */ jsxs(Typography, { variant: "small", weight: "medium", className: "text-
|
|
41644
|
+
/* @__PURE__ */ jsxs(Typography, { variant: "small", weight: "medium", className: "text-muted-foreground mb-2", children: [
|
|
41578
41645
|
"Active (",
|
|
41579
41646
|
activeTicks.length,
|
|
41580
41647
|
")"
|
|
@@ -41582,7 +41649,7 @@ function TicksTab({ ticks: ticks2 }) {
|
|
|
41582
41649
|
/* @__PURE__ */ jsx(Stack, { gap: "sm", children: activeTicks.map((tick) => /* @__PURE__ */ jsx(TickCard, { tick, active: true }, tick.id)) })
|
|
41583
41650
|
] }),
|
|
41584
41651
|
inactiveTicks.length > 0 && /* @__PURE__ */ jsxs("div", { children: [
|
|
41585
|
-
/* @__PURE__ */ jsxs(Typography, { variant: "small", weight: "medium", className: "text-
|
|
41652
|
+
/* @__PURE__ */ jsxs(Typography, { variant: "small", weight: "medium", className: "text-muted-foreground mb-2", children: [
|
|
41586
41653
|
"Inactive (",
|
|
41587
41654
|
inactiveTicks.length,
|
|
41588
41655
|
")"
|
|
@@ -41630,33 +41697,33 @@ function EntitiesTab({ snapshot }) {
|
|
|
41630
41697
|
id: `singleton-${name}`,
|
|
41631
41698
|
header: /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
41632
41699
|
/* @__PURE__ */ jsx(Badge, { variant: "primary", size: "sm", children: t("debug.singleton") }),
|
|
41633
|
-
/* @__PURE__ */ jsx(Typography, { variant: "body", weight: "semibold", className: "text-
|
|
41700
|
+
/* @__PURE__ */ jsx(Typography, { variant: "body", weight: "semibold", className: "text-info", children: name })
|
|
41634
41701
|
] }),
|
|
41635
|
-
content: /* @__PURE__ */ jsx("pre", { className: "text-xs text-
|
|
41702
|
+
content: /* @__PURE__ */ jsx("pre", { className: "text-xs text-muted-foreground bg-muted p-2 rounded overflow-auto max-h-40", children: JSON.stringify(data, null, 2) })
|
|
41636
41703
|
}));
|
|
41637
41704
|
const runtimeItems = runtimeEntities.slice(0, 20).map((entity) => ({
|
|
41638
41705
|
id: entity.id,
|
|
41639
41706
|
header: /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
41640
|
-
/* @__PURE__ */ jsx(Typography, { variant: "body", weight: "semibold", className: "text-
|
|
41641
|
-
/* @__PURE__ */ jsxs(Typography, { variant: "small", className: "text-
|
|
41707
|
+
/* @__PURE__ */ jsx(Typography, { variant: "body", weight: "semibold", className: "text-info", children: entity.type }),
|
|
41708
|
+
/* @__PURE__ */ jsxs(Typography, { variant: "small", className: "text-muted-foreground", children: [
|
|
41642
41709
|
"#",
|
|
41643
41710
|
entity.id.slice(0, 8)
|
|
41644
41711
|
] })
|
|
41645
41712
|
] }),
|
|
41646
|
-
content: /* @__PURE__ */ jsx("pre", { className: "text-xs text-
|
|
41713
|
+
content: /* @__PURE__ */ 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) })
|
|
41647
41714
|
}));
|
|
41648
41715
|
return /* @__PURE__ */ jsxs("div", { className: "debug-tab debug-tab--entities", children: [
|
|
41649
41716
|
singletonItems.length > 0 && /* @__PURE__ */ jsxs("div", { className: "mb-4", children: [
|
|
41650
|
-
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-
|
|
41717
|
+
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-muted-foreground mb-2", children: t("debug.singletonsCount", { count: singletonItems.length }) }),
|
|
41651
41718
|
/* @__PURE__ */ jsx(Accordion, { items: singletonItems, multiple: true })
|
|
41652
41719
|
] }),
|
|
41653
41720
|
runtimeItems.length > 0 && /* @__PURE__ */ jsxs("div", { className: "mb-4", children: [
|
|
41654
|
-
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-
|
|
41721
|
+
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-muted-foreground mb-2", children: t("debug.runtimeCount", { count: runtimeEntities.length }) }),
|
|
41655
41722
|
/* @__PURE__ */ jsx(Accordion, { items: runtimeItems, multiple: true }),
|
|
41656
|
-
runtimeEntities.length > 20 && /* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-
|
|
41723
|
+
runtimeEntities.length > 20 && /* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-muted-foreground text-center mt-2", children: t("debug.moreEntities", { count: runtimeEntities.length - 20 }) })
|
|
41657
41724
|
] }),
|
|
41658
41725
|
persistentEntries.length > 0 && /* @__PURE__ */ jsxs("div", { children: [
|
|
41659
|
-
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-
|
|
41726
|
+
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-muted-foreground mb-2", children: t("debug.persistent") }),
|
|
41660
41727
|
/* @__PURE__ */ jsx(Stack, { gap: "xs", children: persistentEntries.map(([type, info]) => /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between py-1", children: [
|
|
41661
41728
|
/* @__PURE__ */ jsx(Typography, { variant: "small", children: type }),
|
|
41662
41729
|
/* @__PURE__ */ jsx(Badge, { variant: info.loaded ? "success" : "default", size: "sm", children: info.loaded ? t("debug.loadedCount", { count: info.count }) : t("debug.notLoaded") })
|
|
@@ -41741,7 +41808,7 @@ function EventFlowTab({ events: events2 }) {
|
|
|
41741
41808
|
);
|
|
41742
41809
|
})
|
|
41743
41810
|
] }),
|
|
41744
|
-
/* @__PURE__ */ jsxs("label", { className: "flex items-center gap-1 text-xs text-
|
|
41811
|
+
/* @__PURE__ */ jsxs("label", { className: "flex items-center gap-1 text-xs text-muted-foreground ml-auto cursor-pointer", children: [
|
|
41745
41812
|
/* @__PURE__ */ jsx(
|
|
41746
41813
|
Checkbox,
|
|
41747
41814
|
{
|
|
@@ -41756,18 +41823,18 @@ function EventFlowTab({ events: events2 }) {
|
|
|
41756
41823
|
"div",
|
|
41757
41824
|
{
|
|
41758
41825
|
ref: containerRef,
|
|
41759
|
-
className: "max-h-64 overflow-y-auto space-y-1 bg-
|
|
41826
|
+
className: "max-h-64 overflow-y-auto space-y-1 bg-muted rounded p-2",
|
|
41760
41827
|
children: filteredEvents.slice(-100).map((event) => {
|
|
41761
41828
|
const { variant, icon } = TYPE_BADGES[event.type] || { variant: "default", icon: "\u2022" };
|
|
41762
41829
|
return /* @__PURE__ */ jsxs(
|
|
41763
41830
|
"div",
|
|
41764
41831
|
{
|
|
41765
|
-
className: "flex items-start gap-2 text-xs py-1 hover:bg-
|
|
41832
|
+
className: "flex items-start gap-2 text-xs py-1 hover:bg-muted/50 rounded px-1",
|
|
41766
41833
|
children: [
|
|
41767
|
-
/* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-
|
|
41834
|
+
/* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-muted-foreground font-mono min-w-[65px]", children: formatTime2(event.timestamp) }),
|
|
41768
41835
|
/* @__PURE__ */ jsx("span", { children: icon }),
|
|
41769
41836
|
/* @__PURE__ */ jsx(Badge, { variant, size: "sm", className: "min-w-[60px] justify-center", children: event.source }),
|
|
41770
|
-
/* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-
|
|
41837
|
+
/* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-muted-foreground", children: event.message })
|
|
41771
41838
|
]
|
|
41772
41839
|
},
|
|
41773
41840
|
event.id
|
|
@@ -41831,21 +41898,21 @@ function GuardsPanel({ guards }) {
|
|
|
41831
41898
|
id: guard.id,
|
|
41832
41899
|
header: /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 w-full", children: [
|
|
41833
41900
|
/* @__PURE__ */ jsx(Badge, { variant: guard.result ? "success" : "danger", size: "sm", children: guard.result ? "\u2713" : "\u2717" }),
|
|
41834
|
-
/* @__PURE__ */ jsx(Typography, { variant: "body", weight: "semibold", className: "text-
|
|
41835
|
-
/* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-
|
|
41836
|
-
/* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-
|
|
41901
|
+
/* @__PURE__ */ jsx(Typography, { variant: "body", weight: "semibold", className: "text-warning", children: guard.guardName }),
|
|
41902
|
+
/* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-muted-foreground", children: guard.context.type === "transition" ? `${guard.context.transitionFrom} \u2192 ${guard.context.transitionTo}` : guard.context.tickName }),
|
|
41903
|
+
/* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-muted-foreground ml-auto", children: formatTime2(guard.timestamp) })
|
|
41837
41904
|
] }),
|
|
41838
41905
|
content: /* @__PURE__ */ jsxs(Stack, { gap: "sm", children: [
|
|
41839
41906
|
/* @__PURE__ */ jsxs("div", { children: [
|
|
41840
|
-
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-
|
|
41841
|
-
/* @__PURE__ */ jsx("code", { className: "block mt-1 text-xs text-
|
|
41907
|
+
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-muted-foreground", children: t("debug.expression") }),
|
|
41908
|
+
/* @__PURE__ */ jsx("code", { className: "block mt-1 text-xs text-warning bg-warning/10 px-2 py-1 rounded", children: guard.expression })
|
|
41842
41909
|
] }),
|
|
41843
41910
|
/* @__PURE__ */ jsxs("div", { children: [
|
|
41844
|
-
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-
|
|
41845
|
-
/* @__PURE__ */ jsx("pre", { className: "mt-1 text-xs text-
|
|
41911
|
+
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-muted-foreground", children: t("debug.inputs") }),
|
|
41912
|
+
/* @__PURE__ */ 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) })
|
|
41846
41913
|
] }),
|
|
41847
41914
|
/* @__PURE__ */ jsxs("div", { children: [
|
|
41848
|
-
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-
|
|
41915
|
+
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-muted-foreground", children: t("debug.trait") }),
|
|
41849
41916
|
/* @__PURE__ */ jsx(Typography, { variant: "small", children: guard.context.traitName })
|
|
41850
41917
|
] })
|
|
41851
41918
|
] })
|
|
@@ -41901,7 +41968,7 @@ function VerificationTab({ checks, summary }) {
|
|
|
41901
41968
|
(a, b) => (sortOrder[a.status] ?? 4) - (sortOrder[b.status] ?? 4)
|
|
41902
41969
|
);
|
|
41903
41970
|
return /* @__PURE__ */ jsxs("div", { className: "debug-tab debug-tab--verification", children: [
|
|
41904
|
-
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3 mb-3 p-2 bg-
|
|
41971
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3 mb-3 p-2 bg-muted rounded", children: [
|
|
41905
41972
|
/* @__PURE__ */ jsxs(Badge, { variant: "success", size: "sm", children: [
|
|
41906
41973
|
summary.passed,
|
|
41907
41974
|
" passed"
|
|
@@ -41918,7 +41985,7 @@ function VerificationTab({ checks, summary }) {
|
|
|
41918
41985
|
summary.pending,
|
|
41919
41986
|
" pending"
|
|
41920
41987
|
] }),
|
|
41921
|
-
/* @__PURE__ */ jsxs(Typography, { variant: "small", className: "text-
|
|
41988
|
+
/* @__PURE__ */ jsxs(Typography, { variant: "small", className: "text-muted-foreground ml-auto", children: [
|
|
41922
41989
|
summary.totalChecks,
|
|
41923
41990
|
" total checks"
|
|
41924
41991
|
] })
|
|
@@ -41928,12 +41995,12 @@ function VerificationTab({ checks, summary }) {
|
|
|
41928
41995
|
return /* @__PURE__ */ jsxs(
|
|
41929
41996
|
"div",
|
|
41930
41997
|
{
|
|
41931
|
-
className: "flex items-start gap-2 p-2 rounded hover:bg-
|
|
41998
|
+
className: "flex items-start gap-2 p-2 rounded hover:bg-muted/50",
|
|
41932
41999
|
children: [
|
|
41933
42000
|
/* @__PURE__ */ jsx(Badge, { variant: config.variant, size: "sm", className: "min-w-[20px] justify-center mt-0.5", children: config.icon }),
|
|
41934
42001
|
/* @__PURE__ */ jsxs("div", { className: "flex-1 min-w-0", children: [
|
|
41935
42002
|
/* @__PURE__ */ jsx(Typography, { variant: "small", className: "break-words", children: check.label }),
|
|
41936
|
-
check.details && /* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-
|
|
42003
|
+
check.details && /* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-muted-foreground break-words", children: check.details })
|
|
41937
42004
|
] }),
|
|
41938
42005
|
/* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-muted-foreground font-mono text-xs shrink-0", children: new Date(check.updatedAt).toLocaleTimeString("en-US", {
|
|
41939
42006
|
hour12: false,
|
|
@@ -41968,10 +42035,10 @@ var init_VerificationTab = __esm({
|
|
|
41968
42035
|
function EffectBadge({ effect }) {
|
|
41969
42036
|
const variant = EFFECT_STATUS_VARIANT[effect.status] || "default";
|
|
41970
42037
|
const icon = effect.status === "executed" ? "\u2713" : effect.status === "failed" ? "\u2717" : "-";
|
|
41971
|
-
return /* @__PURE__ */ jsxs("span", { className: "inline-flex items-center gap-1 text-xs font-mono bg-
|
|
42038
|
+
return /* @__PURE__ */ jsxs("span", { className: "inline-flex items-center gap-1 text-xs font-mono bg-muted rounded px-1.5 py-0.5", children: [
|
|
41972
42039
|
/* @__PURE__ */ jsx(Badge, { variant, size: "sm", className: "!text-[9px] !px-1 !py-0", children: icon }),
|
|
41973
|
-
/* @__PURE__ */ jsx("span", { className: "text-
|
|
41974
|
-
effect.error && /* @__PURE__ */ jsx("span", { className: "text-
|
|
42040
|
+
/* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: effect.type }),
|
|
42041
|
+
effect.error && /* @__PURE__ */ jsx("span", { className: "text-error truncate max-w-[120px]", title: effect.error, children: effect.error })
|
|
41975
42042
|
] });
|
|
41976
42043
|
}
|
|
41977
42044
|
function TransitionTimeline({ transitions }) {
|
|
@@ -42006,8 +42073,8 @@ function TransitionTimeline({ transitions }) {
|
|
|
42006
42073
|
const sorted = [...transitions].reverse();
|
|
42007
42074
|
return /* @__PURE__ */ jsxs("div", { className: "debug-tab debug-tab--timeline", children: [
|
|
42008
42075
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between mb-2", children: [
|
|
42009
|
-
/* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-
|
|
42010
|
-
/* @__PURE__ */ jsxs("label", { className: "flex items-center gap-1 text-xs text-
|
|
42076
|
+
/* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-muted-foreground", children: t("debug.transitionsRecorded", { count: transitions.length }) }),
|
|
42077
|
+
/* @__PURE__ */ jsxs("label", { className: "flex items-center gap-1 text-xs text-muted-foreground cursor-pointer", children: [
|
|
42011
42078
|
/* @__PURE__ */ jsx(
|
|
42012
42079
|
Checkbox,
|
|
42013
42080
|
{
|
|
@@ -42032,22 +42099,22 @@ function TransitionTimeline({ transitions }) {
|
|
|
42032
42099
|
{
|
|
42033
42100
|
className: `
|
|
42034
42101
|
relative pl-6 pb-3 border-l-2 cursor-pointer
|
|
42035
|
-
hover:bg-
|
|
42036
|
-
${hasFailedEffects ? "border-
|
|
42102
|
+
hover:bg-muted/50 rounded-r
|
|
42103
|
+
${hasFailedEffects ? "border-error" : "border-border"}
|
|
42037
42104
|
`,
|
|
42038
42105
|
onClick: () => setExpandedId(isExpanded ? null : trace.id),
|
|
42039
42106
|
children: [
|
|
42040
42107
|
/* @__PURE__ */ jsx("div", { className: `
|
|
42041
42108
|
absolute left-[-5px] top-1 w-2 h-2 rounded-full
|
|
42042
|
-
${hasFailedEffects ? "bg-
|
|
42109
|
+
${hasFailedEffects ? "bg-error" : allPassed ? "bg-success" : "bg-muted-foreground"}
|
|
42043
42110
|
` }),
|
|
42044
42111
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 text-xs py-1 px-2", children: [
|
|
42045
|
-
/* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-
|
|
42112
|
+
/* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-muted-foreground font-mono min-w-[65px]", children: formatTime2(trace.timestamp) }),
|
|
42046
42113
|
/* @__PURE__ */ jsx(Badge, { variant: "primary", size: "sm", className: "min-w-[60px] justify-center", children: trace.traitName }),
|
|
42047
|
-
/* @__PURE__ */ jsxs(Typography, { variant: "small", className: "font-mono text-
|
|
42114
|
+
/* @__PURE__ */ jsxs(Typography, { variant: "small", className: "font-mono text-muted-foreground", children: [
|
|
42048
42115
|
trace.from,
|
|
42049
42116
|
" ",
|
|
42050
|
-
/* @__PURE__ */ jsx("span", { className: "text-
|
|
42117
|
+
/* @__PURE__ */ jsx("span", { className: "text-muted-foreground/50", children: "\u2192" }),
|
|
42051
42118
|
" ",
|
|
42052
42119
|
trace.to
|
|
42053
42120
|
] }),
|
|
@@ -42064,9 +42131,9 @@ function TransitionTimeline({ transitions }) {
|
|
|
42064
42131
|
]
|
|
42065
42132
|
}
|
|
42066
42133
|
),
|
|
42067
|
-
/* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-
|
|
42134
|
+
/* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-muted-foreground ml-auto", children: t("debug.effectsCount", { count: trace.effects.length }) })
|
|
42068
42135
|
] }),
|
|
42069
|
-
isExpanded && trace.effects.length > 0 && /* @__PURE__ */ jsx("div", { className: "ml-2 mt-1 mb-2 pl-2 border-l border-
|
|
42136
|
+
isExpanded && trace.effects.length > 0 && /* @__PURE__ */ 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__ */ jsxs("div", { className: "flex items-center gap-1", children: [
|
|
42070
42137
|
/* @__PURE__ */ jsx(EffectBadge, { effect }),
|
|
42071
42138
|
effect.args.length > 0 && /* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-muted-foreground font-mono text-xs truncate max-w-[200px]", children: JSON.stringify(effect.args) }),
|
|
42072
42139
|
effect.durationMs !== void 0 && /* @__PURE__ */ jsxs(Typography, { variant: "small", className: "text-muted-foreground text-xs", children: [
|
|
@@ -42100,8 +42167,8 @@ var init_TransitionTimeline = __esm({
|
|
|
42100
42167
|
}
|
|
42101
42168
|
});
|
|
42102
42169
|
function StatRow({ label, value, variant }) {
|
|
42103
|
-
return /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between py-1.5 border-b border-
|
|
42104
|
-
/* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-
|
|
42170
|
+
return /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between py-1.5 border-b border-border last:border-b-0", children: [
|
|
42171
|
+
/* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-muted-foreground", children: label }),
|
|
42105
42172
|
variant ? /* @__PURE__ */ jsx(Badge, { variant, size: "sm", children: String(value) }) : /* @__PURE__ */ jsx(Typography, { variant: "small", weight: "semibold", className: "font-mono", children: String(value) })
|
|
42106
42173
|
] });
|
|
42107
42174
|
}
|
|
@@ -42130,7 +42197,7 @@ function ServerBridgeTab({ bridge }) {
|
|
|
42130
42197
|
return /* @__PURE__ */ jsx("div", { className: "debug-tab debug-tab--bridge", children: /* @__PURE__ */ jsxs(Stack, { gap: "sm", children: [
|
|
42131
42198
|
/* @__PURE__ */ jsxs(Card, { className: "p-3", children: [
|
|
42132
42199
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3 mb-3", children: [
|
|
42133
|
-
/* @__PURE__ */ jsx("div", { className: `w-3 h-3 rounded-full ${bridge.connected ? "bg-
|
|
42200
|
+
/* @__PURE__ */ jsx("div", { className: `w-3 h-3 rounded-full ${bridge.connected ? "bg-success animate-pulse" : "bg-error"}` }),
|
|
42134
42201
|
/* @__PURE__ */ jsx(Typography, { variant: "h6", children: bridge.connected ? t("debug.connected") : t("debug.disconnected") })
|
|
42135
42202
|
] }),
|
|
42136
42203
|
/* @__PURE__ */ jsxs(Stack, { gap: "xs", children: [
|
|
@@ -42165,11 +42232,11 @@ function ServerBridgeTab({ bridge }) {
|
|
|
42165
42232
|
)
|
|
42166
42233
|
] })
|
|
42167
42234
|
] }),
|
|
42168
|
-
bridge.lastError && /* @__PURE__ */ jsxs(Card, { className: "p-3 border-
|
|
42169
|
-
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "semibold", className: "text-
|
|
42170
|
-
/* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-
|
|
42235
|
+
bridge.lastError && /* @__PURE__ */ jsxs(Card, { className: "p-3 border-error/30 bg-error/10", children: [
|
|
42236
|
+
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "semibold", className: "text-error mb-1", children: t("debug.lastError") }),
|
|
42237
|
+
/* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-error font-mono break-all", children: bridge.lastError })
|
|
42171
42238
|
] }),
|
|
42172
|
-
bridge.connected && /* @__PURE__ */ jsx("div", { className: "text-center py-2", children: /* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-
|
|
42239
|
+
bridge.connected && /* @__PURE__ */ jsx("div", { className: "text-center py-2", children: /* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-muted-foreground", children: t("debug.totalEventsProcessed", { count: bridge.eventsForwarded + bridge.eventsReceived }) }) })
|
|
42173
42240
|
] }) });
|
|
42174
42241
|
}
|
|
42175
42242
|
var init_ServerBridgeTab = __esm({
|
|
@@ -42295,7 +42362,7 @@ function EventDispatcherTab({ traits: traits2, schema }) {
|
|
|
42295
42362
|
};
|
|
42296
42363
|
return /* @__PURE__ */ jsxs("div", { className: "debug-tab debug-tab--dispatch", children: [
|
|
42297
42364
|
/* @__PURE__ */ jsxs("div", { className: "mb-3", children: [
|
|
42298
|
-
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-
|
|
42365
|
+
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-muted-foreground mb-1", children: t("debug.activeStates") }),
|
|
42299
42366
|
/* @__PURE__ */ jsx("div", { className: "flex flex-wrap gap-1", children: traits2.map((trait) => /* @__PURE__ */ jsxs(Badge, { variant: "success", size: "sm", children: [
|
|
42300
42367
|
trait.name,
|
|
42301
42368
|
": ",
|
|
@@ -42303,8 +42370,8 @@ function EventDispatcherTab({ traits: traits2, schema }) {
|
|
|
42303
42370
|
] }, trait.id)) })
|
|
42304
42371
|
] }),
|
|
42305
42372
|
/* @__PURE__ */ jsxs("div", { className: "mb-3", children: [
|
|
42306
|
-
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-
|
|
42307
|
-
availableEvents.length === 0 ? /* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-
|
|
42373
|
+
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-muted-foreground mb-1", children: t("debug.availableEvents") }),
|
|
42374
|
+
availableEvents.length === 0 ? /* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-muted-foreground italic", children: t("debug.noTransitionsFromState") }) : /* @__PURE__ */ jsx(Stack, { gap: "xs", children: availableEvents.map(({ event, transitions }) => /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
42308
42375
|
/* @__PURE__ */ jsx(
|
|
42309
42376
|
Button,
|
|
42310
42377
|
{
|
|
@@ -42315,22 +42382,22 @@ function EventDispatcherTab({ traits: traits2, schema }) {
|
|
|
42315
42382
|
children: event
|
|
42316
42383
|
}
|
|
42317
42384
|
),
|
|
42318
|
-
/* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-
|
|
42385
|
+
/* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-muted-foreground", children: transitions.map((t2) => `${t2.from} -> ${t2.to}`).join(", ") }),
|
|
42319
42386
|
transitions.some((tr) => tr.guard) && /* @__PURE__ */ jsx(Badge, { variant: "warning", size: "sm", children: t("debug.guarded") })
|
|
42320
42387
|
] }, event)) })
|
|
42321
42388
|
] }),
|
|
42322
42389
|
unavailableEvents.length > 0 && /* @__PURE__ */ jsxs("div", { className: "mb-3", children: [
|
|
42323
|
-
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-
|
|
42390
|
+
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-muted-foreground mb-1", children: t("debug.otherEvents") }),
|
|
42324
42391
|
/* @__PURE__ */ jsx("div", { className: "flex flex-wrap gap-1", children: unavailableEvents.map((event) => /* @__PURE__ */ jsx(Badge, { variant: "default", size: "sm", className: "opacity-50", children: event }, event)) })
|
|
42325
42392
|
] }),
|
|
42326
42393
|
log19.length > 0 && /* @__PURE__ */ jsxs("div", { children: [
|
|
42327
|
-
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-
|
|
42394
|
+
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-muted-foreground mb-1", children: t("debug.recentTransitions") }),
|
|
42328
42395
|
/* @__PURE__ */ jsx(Stack, { gap: "xs", children: log19.map((entry, i) => /* @__PURE__ */ jsxs(Typography, { variant: "small", className: "font-mono text-xs", children: [
|
|
42329
|
-
/* @__PURE__ */ jsx("span", { className: "text-
|
|
42396
|
+
/* @__PURE__ */ jsx("span", { className: "text-primary", children: entry.traitName }),
|
|
42330
42397
|
" ",
|
|
42331
|
-
/* @__PURE__ */ jsx("span", { className: "text-
|
|
42398
|
+
/* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: entry.from }),
|
|
42332
42399
|
" -> ",
|
|
42333
|
-
/* @__PURE__ */ jsx("span", { className: "text-
|
|
42400
|
+
/* @__PURE__ */ jsx("span", { className: "text-success", children: entry.to })
|
|
42334
42401
|
] }, i)) })
|
|
42335
42402
|
] })
|
|
42336
42403
|
] });
|
|
@@ -42356,21 +42423,21 @@ var init_RuntimeDebugger = __esm({
|
|
|
42356
42423
|
function ServerResponseRow({ sr }) {
|
|
42357
42424
|
const { t } = useTranslate();
|
|
42358
42425
|
const entityEntries = Object.entries(sr.dataEntities);
|
|
42359
|
-
return /* @__PURE__ */ jsxs("div", { className: "ml-4 pl-2 border-l border-
|
|
42426
|
+
return /* @__PURE__ */ jsxs("div", { className: "ml-4 pl-2 border-l border-primary py-0.5 text-xs font-mono", children: [
|
|
42360
42427
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
42361
|
-
/* @__PURE__ */ jsxs("span", { className: sr.success ? "text-
|
|
42428
|
+
/* @__PURE__ */ jsxs("span", { className: sr.success ? "text-success" : "text-error", children: [
|
|
42362
42429
|
sr.success ? "\u2713" : "\u2717",
|
|
42363
42430
|
" ",
|
|
42364
42431
|
t("debug.server")
|
|
42365
42432
|
] }),
|
|
42366
|
-
/* @__PURE__ */ jsx("span", { className: "text-
|
|
42367
|
-
sr.clientEffects > 0 && /* @__PURE__ */ jsx("span", { className: "px-1 rounded bg-
|
|
42368
|
-
sr.emittedEvents.length > 0 && /* @__PURE__ */ jsxs("span", { className: "px-1 rounded bg-
|
|
42433
|
+
/* @__PURE__ */ jsx("span", { className: "text-primary", children: sr.orbitalName }),
|
|
42434
|
+
sr.clientEffects > 0 && /* @__PURE__ */ jsx("span", { className: "px-1 rounded bg-primary/10 text-primary", children: t("debug.clientEffectsCount", { count: sr.clientEffects }) }),
|
|
42435
|
+
sr.emittedEvents.length > 0 && /* @__PURE__ */ jsxs("span", { className: "px-1 rounded bg-primary/10 text-primary", children: [
|
|
42369
42436
|
t("debug.emitLabel"),
|
|
42370
42437
|
" ",
|
|
42371
42438
|
sr.emittedEvents.join(", ")
|
|
42372
42439
|
] }),
|
|
42373
|
-
sr.error && /* @__PURE__ */ jsx("span", { className: "px-1 rounded bg-
|
|
42440
|
+
sr.error && /* @__PURE__ */ jsx("span", { className: "px-1 rounded bg-error/10 text-error truncate max-w-[300px]", children: sr.error })
|
|
42374
42441
|
] }),
|
|
42375
42442
|
entityEntries.length > 0 && /* @__PURE__ */ jsx("div", { className: "flex flex-wrap gap-1 mt-0.5", children: entityEntries.map(([name, count]) => /* @__PURE__ */ jsxs("span", { className: "px-1 rounded bg-[var(--color-card)] text-foreground", children: [
|
|
42376
42443
|
name,
|
|
@@ -42386,9 +42453,9 @@ function TransitionRow({ trace }) {
|
|
|
42386
42453
|
if (isServerEntry && trace.serverResponse) {
|
|
42387
42454
|
return /* @__PURE__ */ jsxs("div", { className: "py-0.5 border-b border-border last:border-0", children: [
|
|
42388
42455
|
/* @__PURE__ */ jsxs("div", { className: "flex items-start gap-2 text-xs font-mono", children: [
|
|
42389
|
-
/* @__PURE__ */ jsx("span", { className: "mt-1.5 w-1.5 h-1.5 rounded-full flex-shrink-0 bg-
|
|
42456
|
+
/* @__PURE__ */ jsx("span", { className: "mt-1.5 w-1.5 h-1.5 rounded-full flex-shrink-0 bg-primary" }),
|
|
42390
42457
|
/* @__PURE__ */ jsx(Badge, { variant: "warning", size: "sm", className: "flex-shrink-0", children: trace.event }),
|
|
42391
|
-
/* @__PURE__ */ jsx("span", { className: "text-
|
|
42458
|
+
/* @__PURE__ */ jsx("span", { className: "text-primary flex-shrink-0", children: t("debug.serverResponse") })
|
|
42392
42459
|
] }),
|
|
42393
42460
|
/* @__PURE__ */ jsx(ServerResponseRow, { sr: trace.serverResponse })
|
|
42394
42461
|
] });
|
|
@@ -42397,7 +42464,7 @@ function TransitionRow({ trace }) {
|
|
|
42397
42464
|
/* @__PURE__ */ jsxs("div", { className: "flex items-start gap-2 text-xs font-mono", children: [
|
|
42398
42465
|
/* @__PURE__ */ jsx("span", { className: cn(
|
|
42399
42466
|
"mt-1.5 w-1.5 h-1.5 rounded-full flex-shrink-0",
|
|
42400
|
-
hasFailedEffects ? "bg-
|
|
42467
|
+
hasFailedEffects ? "bg-error" : "bg-success"
|
|
42401
42468
|
) }),
|
|
42402
42469
|
/* @__PURE__ */ jsx(Badge, { variant: "info", size: "sm", className: "flex-shrink-0", children: trace.event }),
|
|
42403
42470
|
/* @__PURE__ */ jsx("span", { className: "text-foreground flex-shrink-0", children: trace.traitName }),
|
|
@@ -42411,7 +42478,7 @@ function TransitionRow({ trace }) {
|
|
|
42411
42478
|
] }),
|
|
42412
42479
|
trace.effects.length > 0 && /* @__PURE__ */ jsx("div", { className: "flex flex-wrap gap-1 ml-6 mt-0.5", children: trace.effects.map((eff, i) => /* @__PURE__ */ jsxs("span", { className: cn(
|
|
42413
42480
|
"px-1 rounded text-xs",
|
|
42414
|
-
eff.status === "executed" ? "bg-
|
|
42481
|
+
eff.status === "executed" ? "bg-success/10 text-success" : eff.status === "failed" ? "bg-error/10 text-error" : "bg-warning/10 text-warning"
|
|
42415
42482
|
), children: [
|
|
42416
42483
|
eff.status === "executed" ? "\u2713" : eff.status === "failed" ? "\u2717" : "-",
|
|
42417
42484
|
" ",
|
|
@@ -42445,7 +42512,7 @@ function VerifyModePanel({
|
|
|
42445
42512
|
{
|
|
42446
42513
|
className: cn(
|
|
42447
42514
|
"runtime-debugger runtime-debugger--verify",
|
|
42448
|
-
"flex flex-col bg-[var(--color-card)] text-[var(--color-foreground)] border-t-2 border-
|
|
42515
|
+
"flex flex-col bg-[var(--color-card)] text-[var(--color-foreground)] border-t-2 border-accent",
|
|
42449
42516
|
hudBottom ? "" : "fixed bottom-0 left-0 right-0",
|
|
42450
42517
|
className
|
|
42451
42518
|
),
|
|
@@ -42466,8 +42533,8 @@ function VerifyModePanel({
|
|
|
42466
42533
|
/* @__PURE__ */ jsx("span", { className: "text-foreground/50 w-3", "aria-hidden": true, children: expanded ? "\u25BE" : "\u25B8" }),
|
|
42467
42534
|
/* @__PURE__ */ jsx(Badge, { variant: failedChecks > 0 ? "danger" : "success", size: "sm", children: failedChecks > 0 ? t("debug.failCount", { count: failedChecks }) : t("debug.ok") }),
|
|
42468
42535
|
/* @__PURE__ */ jsx("span", { className: "text-foreground/70", children: t("debug.localCount", { count: localCount }) }),
|
|
42469
|
-
/* @__PURE__ */ jsx("span", { className: "text-
|
|
42470
|
-
traitStates && /* @__PURE__ */ jsx("span", { className: "text-
|
|
42536
|
+
/* @__PURE__ */ jsx("span", { className: "text-primary", children: t("debug.serverCount", { count: serverCount }) }),
|
|
42537
|
+
traitStates && /* @__PURE__ */ jsx("span", { className: "text-accent truncate max-w-[400px]", children: traitStates }),
|
|
42471
42538
|
!expanded && transitions.length > 0 && /* @__PURE__ */ jsx("span", { className: "ml-auto text-foreground/50", children: t("debug.transitionsCount", { count: transitions.length }) })
|
|
42472
42539
|
]
|
|
42473
42540
|
}
|
|
@@ -42662,7 +42729,7 @@ function RuntimeDebugger({
|
|
|
42662
42729
|
title: t("debug.openDebugger"),
|
|
42663
42730
|
children: failedChecks > 0 ? /* @__PURE__ */ jsxs("span", { className: "relative", children: [
|
|
42664
42731
|
/* @__PURE__ */ jsx("span", { children: "V" }),
|
|
42665
|
-
/* @__PURE__ */ jsx("span", { className: "absolute -top-1 -right-2 w-2 h-2 bg-
|
|
42732
|
+
/* @__PURE__ */ jsx("span", { className: "absolute -top-1 -right-2 w-2 h-2 bg-error rounded-full" })
|
|
42666
42733
|
] }) : /* @__PURE__ */ jsx("span", { children: "V" })
|
|
42667
42734
|
}
|
|
42668
42735
|
) : /* @__PURE__ */ jsxs(Card, { className: "runtime-debugger__panel", children: [
|
|
@@ -42750,7 +42817,7 @@ var init_SegmentRenderer = __esm({
|
|
|
42750
42817
|
"div",
|
|
42751
42818
|
{
|
|
42752
42819
|
className: cn(
|
|
42753
|
-
"border border-
|
|
42820
|
+
"border border-border rounded-lg p-2 md:p-4 overflow-x-auto space-y-6",
|
|
42754
42821
|
containerClassName,
|
|
42755
42822
|
className
|
|
42756
42823
|
),
|
|
@@ -47236,6 +47303,14 @@ function useUISlotManager() {
|
|
|
47236
47303
|
[sourceKey]: content
|
|
47237
47304
|
};
|
|
47238
47305
|
const nextAll = { ...prev, [config.target]: nextSources };
|
|
47306
|
+
const priorWriters = Object.keys(slotSources);
|
|
47307
|
+
if (priorWriters.length === 1 && priorWriters[0] !== sourceKey) {
|
|
47308
|
+
log17.warn("slot:contention", {
|
|
47309
|
+
slot: config.target,
|
|
47310
|
+
writers: [priorWriters[0], sourceKey],
|
|
47311
|
+
patternTypes: [slotSources[priorWriters[0]].pattern, content.pattern]
|
|
47312
|
+
});
|
|
47313
|
+
}
|
|
47239
47314
|
if (content.sourceTrait) {
|
|
47240
47315
|
indexTraitRender(content.sourceTrait, content);
|
|
47241
47316
|
notifyTraitSubscribers(content.sourceTrait, content);
|