@almadar/ui 5.9.6 → 5.9.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/avl/index.cjs +258 -235
- package/dist/avl/index.js +258 -235
- package/dist/components/index.cjs +230 -230
- package/dist/components/index.js +230 -230
- package/dist/providers/index.cjs +214 -214
- package/dist/providers/index.js +214 -214
- package/dist/runtime/index.cjs +258 -235
- package/dist/runtime/index.js +258 -235
- package/dist/runtime/orbitalsByTrait.d.ts +34 -0
- package/package.json +1 -1
package/dist/runtime/index.cjs
CHANGED
|
@@ -7145,7 +7145,7 @@ function HealthBar({
|
|
|
7145
7145
|
"div",
|
|
7146
7146
|
{
|
|
7147
7147
|
className: cn(
|
|
7148
|
-
"relative overflow-hidden rounded-full bg-
|
|
7148
|
+
"relative overflow-hidden rounded-full bg-muted",
|
|
7149
7149
|
sizes.bar,
|
|
7150
7150
|
"w-24",
|
|
7151
7151
|
className
|
|
@@ -7155,7 +7155,7 @@ function HealthBar({
|
|
|
7155
7155
|
{
|
|
7156
7156
|
className: cn(
|
|
7157
7157
|
"absolute inset-y-0 left-0 rounded-full",
|
|
7158
|
-
percentage > 66 ? "bg-
|
|
7158
|
+
percentage > 66 ? "bg-success" : percentage > 33 ? "bg-warning" : "bg-error",
|
|
7159
7159
|
animated && "transition-all duration-300"
|
|
7160
7160
|
),
|
|
7161
7161
|
style: { width: `${percentage}%` }
|
|
@@ -7177,7 +7177,7 @@ var init_HealthBar = __esm({
|
|
|
7177
7177
|
heartIcon = (filled, size) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
7178
7178
|
"svg",
|
|
7179
7179
|
{
|
|
7180
|
-
className: cn("transition-all duration-200", size, filled ? "text-
|
|
7180
|
+
className: cn("transition-all duration-200", size, filled ? "text-error" : "text-muted-foreground"),
|
|
7181
7181
|
viewBox: "0 0 24 24",
|
|
7182
7182
|
fill: filled ? "currentColor" : "none",
|
|
7183
7183
|
stroke: "currentColor",
|
|
@@ -7241,7 +7241,7 @@ function ScoreDisplay({
|
|
|
7241
7241
|
),
|
|
7242
7242
|
children: [
|
|
7243
7243
|
icon && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex-shrink-0", children: icon }),
|
|
7244
|
-
label && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-
|
|
7244
|
+
label && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: label }),
|
|
7245
7245
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "tabular-nums", children: formattedValue })
|
|
7246
7246
|
]
|
|
7247
7247
|
}
|
|
@@ -7354,8 +7354,8 @@ var init_ControlButton = __esm({
|
|
|
7354
7354
|
};
|
|
7355
7355
|
shapeMap = {
|
|
7356
7356
|
circle: "rounded-full",
|
|
7357
|
-
rounded: "rounded-
|
|
7358
|
-
square: "rounded-
|
|
7357
|
+
rounded: "rounded-interactive",
|
|
7358
|
+
square: "rounded-interactive"
|
|
7359
7359
|
};
|
|
7360
7360
|
variantMap = {
|
|
7361
7361
|
primary: "bg-primary text-primary-foreground border-primary hover:bg-primary-hover",
|
|
@@ -7523,12 +7523,12 @@ function TimerDisplay({
|
|
|
7523
7523
|
"div",
|
|
7524
7524
|
{
|
|
7525
7525
|
className: cn(
|
|
7526
|
-
"inline-flex items-center justify-center rounded-
|
|
7527
|
-
"bg-
|
|
7526
|
+
"inline-flex items-center justify-center rounded-container",
|
|
7527
|
+
"bg-card/80 border border-muted font-mono font-bold tabular-nums",
|
|
7528
7528
|
sizeMap4[size],
|
|
7529
|
-
running && "border-
|
|
7530
|
-
isLow && "text-
|
|
7531
|
-
!isLow && "text-
|
|
7529
|
+
running && "border-success/50",
|
|
7530
|
+
isLow && "text-error border-error/50 animate-pulse",
|
|
7531
|
+
!isLow && "text-foreground",
|
|
7532
7532
|
className
|
|
7533
7533
|
),
|
|
7534
7534
|
children: formatTime(seconds, format)
|
|
@@ -7561,17 +7561,17 @@ function ResourceCounter({
|
|
|
7561
7561
|
"div",
|
|
7562
7562
|
{
|
|
7563
7563
|
className: cn(
|
|
7564
|
-
"inline-flex items-center rounded-
|
|
7565
|
-
"bg-
|
|
7564
|
+
"inline-flex items-center rounded-container",
|
|
7565
|
+
"bg-card/80 border border-muted font-medium text-foreground",
|
|
7566
7566
|
sizes.wrapper,
|
|
7567
7567
|
className
|
|
7568
7568
|
),
|
|
7569
7569
|
children: [
|
|
7570
7570
|
icon && /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("flex-shrink-0", sizes.icon), children: icon }),
|
|
7571
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-
|
|
7571
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: label }),
|
|
7572
7572
|
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: cn("font-bold tabular-nums", color), children: [
|
|
7573
7573
|
value,
|
|
7574
|
-
max != null && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-
|
|
7574
|
+
max != null && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-muted-foreground", children: [
|
|
7575
7575
|
"/",
|
|
7576
7576
|
max
|
|
7577
7577
|
] })
|
|
@@ -7612,18 +7612,18 @@ function ItemSlot({
|
|
|
7612
7612
|
disabled: !isClickable,
|
|
7613
7613
|
title: label,
|
|
7614
7614
|
className: cn(
|
|
7615
|
-
"relative flex items-center justify-center rounded-
|
|
7616
|
-
"bg-
|
|
7615
|
+
"relative flex items-center justify-center rounded-interactive border-2",
|
|
7616
|
+
"bg-card/80 transition-all duration-150",
|
|
7617
7617
|
sizeMap6[size],
|
|
7618
|
-
empty ? "border-
|
|
7618
|
+
empty ? "border-border bg-card/50" : rarityBorderMap[rarity],
|
|
7619
7619
|
!empty && rarityGlowMap[rarity],
|
|
7620
|
-
selected && "ring-2 ring-
|
|
7620
|
+
selected && "ring-2 ring-foreground ring-offset-1 ring-offset-background",
|
|
7621
7621
|
isClickable && !empty && "hover:brightness-125 cursor-pointer",
|
|
7622
|
-
isClickable && empty && "hover:border-
|
|
7622
|
+
isClickable && empty && "hover:border-muted cursor-pointer",
|
|
7623
7623
|
!isClickable && "cursor-default",
|
|
7624
7624
|
className
|
|
7625
7625
|
),
|
|
7626
|
-
children: empty ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-
|
|
7626
|
+
children: empty ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground text-base", children: "+" }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
7627
7627
|
icon && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex-shrink-0", children: icon }),
|
|
7628
7628
|
quantity != null && quantity > 1 && /* @__PURE__ */ jsxRuntime.jsx(
|
|
7629
7629
|
"span",
|
|
@@ -7631,7 +7631,7 @@ function ItemSlot({
|
|
|
7631
7631
|
className: cn(
|
|
7632
7632
|
"absolute -bottom-1 -right-1 flex items-center justify-center",
|
|
7633
7633
|
"min-w-[18px] h-[18px] rounded-full px-1",
|
|
7634
|
-
"bg-
|
|
7634
|
+
"bg-surface border border-muted text-xs font-bold text-foreground"
|
|
7635
7635
|
),
|
|
7636
7636
|
children: quantity
|
|
7637
7637
|
}
|
|
@@ -7651,18 +7651,18 @@ var init_ItemSlot = __esm({
|
|
|
7651
7651
|
lg: "w-18 h-18 text-3xl"
|
|
7652
7652
|
};
|
|
7653
7653
|
rarityBorderMap = {
|
|
7654
|
-
common: "border-
|
|
7655
|
-
uncommon: "border-
|
|
7656
|
-
rare: "border-
|
|
7657
|
-
epic: "border-
|
|
7658
|
-
legendary: "border-
|
|
7654
|
+
common: "border-muted",
|
|
7655
|
+
uncommon: "border-success",
|
|
7656
|
+
rare: "border-info",
|
|
7657
|
+
epic: "border-accent",
|
|
7658
|
+
legendary: "border-warning"
|
|
7659
7659
|
};
|
|
7660
7660
|
rarityGlowMap = {
|
|
7661
7661
|
common: "",
|
|
7662
7662
|
uncommon: "",
|
|
7663
|
-
rare: "shadow-
|
|
7664
|
-
epic: "shadow-
|
|
7665
|
-
legendary: "shadow-
|
|
7663
|
+
rare: "shadow-sm",
|
|
7664
|
+
epic: "shadow-lg",
|
|
7665
|
+
legendary: "shadow-lg"
|
|
7666
7666
|
};
|
|
7667
7667
|
ItemSlot.displayName = "ItemSlot";
|
|
7668
7668
|
}
|
|
@@ -7680,8 +7680,8 @@ function TurnIndicator({
|
|
|
7680
7680
|
"div",
|
|
7681
7681
|
{
|
|
7682
7682
|
className: cn(
|
|
7683
|
-
"inline-flex items-center rounded-
|
|
7684
|
-
"bg-
|
|
7683
|
+
"inline-flex items-center rounded-container",
|
|
7684
|
+
"bg-card/80 border border-muted font-medium text-foreground",
|
|
7685
7685
|
sizes.wrapper,
|
|
7686
7686
|
className
|
|
7687
7687
|
),
|
|
@@ -7689,19 +7689,19 @@ function TurnIndicator({
|
|
|
7689
7689
|
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "font-bold tabular-nums", children: [
|
|
7690
7690
|
"Turn ",
|
|
7691
7691
|
currentTurn,
|
|
7692
|
-
maxTurns != null && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-
|
|
7692
|
+
maxTurns != null && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-muted-foreground", children: [
|
|
7693
7693
|
"/",
|
|
7694
7694
|
maxTurns
|
|
7695
7695
|
] })
|
|
7696
7696
|
] }),
|
|
7697
7697
|
phase && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
7698
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-
|
|
7699
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-
|
|
7698
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: "|" }),
|
|
7699
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: phase })
|
|
7700
7700
|
] }),
|
|
7701
7701
|
activeTeam && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
7702
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-
|
|
7703
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("rounded-full bg-
|
|
7704
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-
|
|
7702
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: "|" }),
|
|
7703
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("rounded-full bg-success/20", sizes.dot) }),
|
|
7704
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-success", children: activeTeam })
|
|
7705
7705
|
] })
|
|
7706
7706
|
]
|
|
7707
7707
|
}
|
|
@@ -7720,10 +7720,10 @@ var init_TurnIndicator = __esm({
|
|
|
7720
7720
|
}
|
|
7721
7721
|
});
|
|
7722
7722
|
function getComboIntensity(combo) {
|
|
7723
|
-
if (combo >= 10) return "text-
|
|
7724
|
-
if (combo >= 7) return "text-
|
|
7725
|
-
if (combo >= 4) return "text-
|
|
7726
|
-
return "text-
|
|
7723
|
+
if (combo >= 10) return "text-error animate-pulse";
|
|
7724
|
+
if (combo >= 7) return "text-warning";
|
|
7725
|
+
if (combo >= 4) return "text-warning";
|
|
7726
|
+
return "text-foreground";
|
|
7727
7727
|
}
|
|
7728
7728
|
function getComboScale(combo) {
|
|
7729
7729
|
if (combo >= 10) return "scale-110";
|
|
@@ -7744,19 +7744,19 @@ function ComboCounter({
|
|
|
7744
7744
|
{
|
|
7745
7745
|
className: cn(
|
|
7746
7746
|
"inline-flex flex-col items-center justify-center",
|
|
7747
|
-
"rounded-
|
|
7747
|
+
"rounded-container bg-card/80 border border-muted px-3 py-1.5",
|
|
7748
7748
|
"transition-transform duration-200",
|
|
7749
7749
|
getComboScale(combo),
|
|
7750
7750
|
className
|
|
7751
7751
|
),
|
|
7752
7752
|
children: [
|
|
7753
7753
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("font-black tabular-nums leading-none", sizes.combo, getComboIntensity(combo)), children: combo }),
|
|
7754
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("font-bold uppercase tracking-wider text-
|
|
7755
|
-
multiplier != null && multiplier > 1 && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: cn("font-bold text-
|
|
7754
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("font-bold uppercase tracking-wider text-muted-foreground", sizes.label), children: "combo" }),
|
|
7755
|
+
multiplier != null && multiplier > 1 && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: cn("font-bold text-warning tabular-nums", sizes.multiplier), children: [
|
|
7756
7756
|
"x",
|
|
7757
7757
|
multiplier.toFixed(1)
|
|
7758
7758
|
] }),
|
|
7759
|
-
streak != null && streak > 0 && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: cn("text-
|
|
7759
|
+
streak != null && streak > 0 && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: cn("text-muted-foreground tabular-nums", sizes.label), children: [
|
|
7760
7760
|
streak,
|
|
7761
7761
|
" streak"
|
|
7762
7762
|
] })
|
|
@@ -7792,8 +7792,8 @@ function XPBar({
|
|
|
7792
7792
|
"span",
|
|
7793
7793
|
{
|
|
7794
7794
|
className: cn(
|
|
7795
|
-
"flex-shrink-0 rounded-
|
|
7796
|
-
"bg-
|
|
7795
|
+
"flex-shrink-0 rounded-interactive font-bold",
|
|
7796
|
+
"bg-accent text-foreground border border-accent",
|
|
7797
7797
|
sizes.badge
|
|
7798
7798
|
),
|
|
7799
7799
|
children: [
|
|
@@ -7807,7 +7807,7 @@ function XPBar({
|
|
|
7807
7807
|
"div",
|
|
7808
7808
|
{
|
|
7809
7809
|
className: cn(
|
|
7810
|
-
"relative w-full overflow-hidden rounded-full bg-
|
|
7810
|
+
"relative w-full overflow-hidden rounded-full bg-muted border border-muted",
|
|
7811
7811
|
sizes.bar
|
|
7812
7812
|
),
|
|
7813
7813
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -7815,7 +7815,7 @@ function XPBar({
|
|
|
7815
7815
|
{
|
|
7816
7816
|
className: cn(
|
|
7817
7817
|
"absolute inset-y-0 left-0 rounded-full",
|
|
7818
|
-
"bg-gradient-to-r from-
|
|
7818
|
+
"bg-gradient-to-r from-accent to-info",
|
|
7819
7819
|
animated && "transition-all duration-500 ease-out"
|
|
7820
7820
|
),
|
|
7821
7821
|
style: { width: `${percentage}%` }
|
|
@@ -7823,7 +7823,7 @@ function XPBar({
|
|
|
7823
7823
|
)
|
|
7824
7824
|
}
|
|
7825
7825
|
),
|
|
7826
|
-
showLabel && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: cn("text-
|
|
7826
|
+
showLabel && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: cn("text-muted-foreground tabular-nums", sizes.text), children: [
|
|
7827
7827
|
current,
|
|
7828
7828
|
" / ",
|
|
7829
7829
|
max,
|
|
@@ -7859,7 +7859,7 @@ function WaypointMarker({
|
|
|
7859
7859
|
"div",
|
|
7860
7860
|
{
|
|
7861
7861
|
className: cn(
|
|
7862
|
-
"absolute rounded-full border-2 border-
|
|
7862
|
+
"absolute rounded-full border-2 border-info animate-ping opacity-50",
|
|
7863
7863
|
sizes.ring
|
|
7864
7864
|
)
|
|
7865
7865
|
}
|
|
@@ -7868,7 +7868,7 @@ function WaypointMarker({
|
|
|
7868
7868
|
"div",
|
|
7869
7869
|
{
|
|
7870
7870
|
className: cn(
|
|
7871
|
-
"absolute rounded-full border-2 border-
|
|
7871
|
+
"absolute rounded-full border-2 border-info",
|
|
7872
7872
|
sizes.ring
|
|
7873
7873
|
)
|
|
7874
7874
|
}
|
|
@@ -7879,9 +7879,9 @@ function WaypointMarker({
|
|
|
7879
7879
|
className: cn(
|
|
7880
7880
|
"relative flex items-center justify-center rounded-full transition-all duration-200",
|
|
7881
7881
|
sizes.dot,
|
|
7882
|
-
completed && "bg-
|
|
7883
|
-
active && !completed && "bg-
|
|
7884
|
-
!active && !completed && "bg-
|
|
7882
|
+
completed && "bg-success text-foreground",
|
|
7883
|
+
active && !completed && "bg-info text-foreground",
|
|
7884
|
+
!active && !completed && "bg-muted"
|
|
7885
7885
|
),
|
|
7886
7886
|
children: completed ? checkIcon : icon
|
|
7887
7887
|
}
|
|
@@ -7893,7 +7893,7 @@ function WaypointMarker({
|
|
|
7893
7893
|
className: cn(
|
|
7894
7894
|
"text-center whitespace-nowrap",
|
|
7895
7895
|
sizes.label,
|
|
7896
|
-
completed ? "text-
|
|
7896
|
+
completed ? "text-success" : active ? "text-info" : "text-muted-foreground"
|
|
7897
7897
|
),
|
|
7898
7898
|
children: label
|
|
7899
7899
|
}
|
|
@@ -7934,7 +7934,7 @@ function StatusEffect({
|
|
|
7934
7934
|
"div",
|
|
7935
7935
|
{
|
|
7936
7936
|
className: cn(
|
|
7937
|
-
"relative flex items-center justify-center rounded border-2",
|
|
7937
|
+
"relative flex items-center justify-center rounded-interactive border-2",
|
|
7938
7938
|
sizes.container,
|
|
7939
7939
|
variantStyles7[variant]
|
|
7940
7940
|
),
|
|
@@ -7945,7 +7945,7 @@ function StatusEffect({
|
|
|
7945
7945
|
"span",
|
|
7946
7946
|
{
|
|
7947
7947
|
className: cn(
|
|
7948
|
-
"absolute bottom-0 left-0 right-0 text-center font-mono font-bold text-
|
|
7948
|
+
"absolute bottom-0 left-0 right-0 text-center font-mono font-bold text-foreground bg-background/60 leading-tight",
|
|
7949
7949
|
sizes.timer
|
|
7950
7950
|
),
|
|
7951
7951
|
children: formatDuration(duration)
|
|
@@ -7958,7 +7958,7 @@ function StatusEffect({
|
|
|
7958
7958
|
"span",
|
|
7959
7959
|
{
|
|
7960
7960
|
className: cn(
|
|
7961
|
-
"absolute flex items-center justify-center rounded-full bg-
|
|
7961
|
+
"absolute flex items-center justify-center rounded-full bg-card text-foreground font-bold leading-none",
|
|
7962
7962
|
sizes.badge
|
|
7963
7963
|
),
|
|
7964
7964
|
children: stacks
|
|
@@ -7977,9 +7977,9 @@ var init_StatusEffect = __esm({
|
|
|
7977
7977
|
lg: { container: "w-12 h-12", icon: "text-lg", badge: "text-sm -top-1.5 -right-1.5 w-6 h-6", timer: "text-xs" }
|
|
7978
7978
|
};
|
|
7979
7979
|
variantStyles7 = {
|
|
7980
|
-
buff: "border-
|
|
7981
|
-
debuff: "border-
|
|
7982
|
-
neutral: "border-
|
|
7980
|
+
buff: "border-success bg-success/20",
|
|
7981
|
+
debuff: "border-error bg-error/20",
|
|
7982
|
+
neutral: "border-muted bg-muted/20"
|
|
7983
7983
|
};
|
|
7984
7984
|
StatusEffect.displayName = "StatusEffect";
|
|
7985
7985
|
}
|
|
@@ -8018,10 +8018,10 @@ var init_DamageNumber = __esm({
|
|
|
8018
8018
|
lg: "text-2xl"
|
|
8019
8019
|
};
|
|
8020
8020
|
typeStyles = {
|
|
8021
|
-
damage: "text-
|
|
8022
|
-
heal: "text-
|
|
8023
|
-
crit: "text-
|
|
8024
|
-
miss: "text-
|
|
8021
|
+
damage: "text-error font-bold",
|
|
8022
|
+
heal: "text-success font-bold",
|
|
8023
|
+
crit: "text-warning font-extrabold",
|
|
8024
|
+
miss: "text-muted-foreground italic"
|
|
8025
8025
|
};
|
|
8026
8026
|
floatKeyframes = `
|
|
8027
8027
|
@keyframes damageFloat {
|
|
@@ -8044,12 +8044,12 @@ function DialogueBubble({
|
|
|
8044
8044
|
"div",
|
|
8045
8045
|
{
|
|
8046
8046
|
className: cn(
|
|
8047
|
-
"flex items-start gap-3 rounded-
|
|
8047
|
+
"flex items-start gap-3 rounded-container bg-background/80 backdrop-blur-sm px-4 py-3 border border-border/10",
|
|
8048
8048
|
position === "top" ? "rounded-bl-none" : "rounded-tl-none",
|
|
8049
8049
|
className
|
|
8050
8050
|
),
|
|
8051
8051
|
children: [
|
|
8052
|
-
portrait && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-shrink-0 w-12 h-12 rounded-full overflow-hidden border-2 border-
|
|
8052
|
+
portrait && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-shrink-0 w-12 h-12 rounded-full overflow-hidden border-2 border-warning/60", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
8053
8053
|
"img",
|
|
8054
8054
|
{
|
|
8055
8055
|
src: portrait,
|
|
@@ -8058,8 +8058,8 @@ function DialogueBubble({
|
|
|
8058
8058
|
}
|
|
8059
8059
|
) }),
|
|
8060
8060
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-1 min-w-0", children: [
|
|
8061
|
-
speaker && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-bold text-
|
|
8062
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm text-
|
|
8061
|
+
speaker && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-bold text-warning", children: speaker }),
|
|
8062
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm text-foreground leading-relaxed", children: text })
|
|
8063
8063
|
] })
|
|
8064
8064
|
]
|
|
8065
8065
|
}
|
|
@@ -8086,7 +8086,7 @@ function ChoiceButton({
|
|
|
8086
8086
|
disabled,
|
|
8087
8087
|
onClick,
|
|
8088
8088
|
className: cn(
|
|
8089
|
-
"w-full text-left px-4 py-2.5 rounded-
|
|
8089
|
+
"w-full text-left px-4 py-2.5 rounded-interactive border transition-all duration-150",
|
|
8090
8090
|
"flex items-center gap-2",
|
|
8091
8091
|
selected ? "bg-accent/15 border-accent text-foreground" : "bg-muted/40 border-border text-foreground hover:bg-muted hover:border-border",
|
|
8092
8092
|
disabled && "opacity-40 cursor-not-allowed hover:bg-muted/40 hover:border-border",
|
|
@@ -8139,7 +8139,7 @@ function ActionButton({
|
|
|
8139
8139
|
disabled: isDisabled,
|
|
8140
8140
|
onClick,
|
|
8141
8141
|
className: cn(
|
|
8142
|
-
"relative inline-flex items-center gap-1.5 rounded-
|
|
8142
|
+
"relative inline-flex items-center gap-1.5 rounded-interactive border font-medium overflow-hidden transition-colors duration-150",
|
|
8143
8143
|
sizes.button,
|
|
8144
8144
|
variantStyles8[variant],
|
|
8145
8145
|
isDisabled && "opacity-60 cursor-not-allowed",
|
|
@@ -8182,9 +8182,9 @@ var init_ActionButton = __esm({
|
|
|
8182
8182
|
init_cn();
|
|
8183
8183
|
init_Icon();
|
|
8184
8184
|
sizeMap13 = {
|
|
8185
|
-
sm: { button: "px-3
|
|
8186
|
-
md: { button: "px-4
|
|
8187
|
-
lg: { button: "
|
|
8185
|
+
sm: { button: "h-button-sm px-3 text-xs", hotkey: "text-[9px] px-1", icon: "text-xs" },
|
|
8186
|
+
md: { button: "h-button-md px-4 text-sm", hotkey: "text-xs px-1.5", icon: "text-sm" },
|
|
8187
|
+
lg: { button: "h-button-lg px-5 text-base", hotkey: "text-xs px-2", icon: "text-base" }
|
|
8188
8188
|
};
|
|
8189
8189
|
variantStyles8 = {
|
|
8190
8190
|
primary: "bg-primary text-primary-foreground hover:bg-primary-hover border-primary",
|
|
@@ -8264,7 +8264,7 @@ function MiniMap({
|
|
|
8264
8264
|
"div",
|
|
8265
8265
|
{
|
|
8266
8266
|
className: cn(
|
|
8267
|
-
"relative inline-block border border-
|
|
8267
|
+
"relative inline-block border border-border/20 rounded-container",
|
|
8268
8268
|
className
|
|
8269
8269
|
),
|
|
8270
8270
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -10849,7 +10849,7 @@ function ActionTile({
|
|
|
10849
10849
|
{
|
|
10850
10850
|
display: "flex",
|
|
10851
10851
|
className: cn(
|
|
10852
|
-
"flex-col items-center gap-1 rounded-
|
|
10852
|
+
"flex-col items-center gap-1 rounded-container border-2 transition-all select-none",
|
|
10853
10853
|
config.px,
|
|
10854
10854
|
disabled ? "opacity-40 cursor-not-allowed border-border bg-muted" : "cursor-grab active:cursor-grabbing hover:scale-105 hover:shadow-md border-border bg-card",
|
|
10855
10855
|
className
|
|
@@ -12161,12 +12161,12 @@ function IsometricCanvas({
|
|
|
12161
12161
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
12162
12162
|
Box,
|
|
12163
12163
|
{
|
|
12164
|
-
className: cn("relative w-full overflow-hidden rounded-
|
|
12164
|
+
className: cn("relative w-full overflow-hidden rounded-container", className),
|
|
12165
12165
|
style: { height: viewportSize.height },
|
|
12166
12166
|
"data-testid": "game-canvas-empty",
|
|
12167
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "flex items-center justify-center h-full bg-[var(--color-card)] rounded-
|
|
12167
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "flex items-center justify-center h-full bg-[var(--color-card)] rounded-container", children: /* @__PURE__ */ jsxRuntime.jsxs(Stack, { direction: "vertical", gap: "md", align: "center", children: [
|
|
12168
12168
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "map", size: "xl" }),
|
|
12169
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", className: "text-
|
|
12169
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", className: "text-muted-foreground", children: t("canvas.emptyMessage") || "No map data loaded" })
|
|
12170
12170
|
] }) })
|
|
12171
12171
|
}
|
|
12172
12172
|
);
|
|
@@ -12564,19 +12564,19 @@ function BattleBoard({
|
|
|
12564
12564
|
}
|
|
12565
12565
|
)
|
|
12566
12566
|
] }),
|
|
12567
|
-
gameResult && (gameOverOverlay ? gameOverOverlay(ctx) : /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "absolute inset-0 z-50 flex items-center justify-center bg-
|
|
12567
|
+
gameResult && (gameOverOverlay ? gameOverOverlay(ctx) : /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "absolute inset-0 z-50 flex items-center justify-center bg-background/70 backdrop-blur-sm rounded-container", children: /* @__PURE__ */ jsxRuntime.jsxs(VStack, { className: "text-center p-8", gap: "lg", children: [
|
|
12568
12568
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
12569
12569
|
Typography,
|
|
12570
12570
|
{
|
|
12571
12571
|
variant: "h2",
|
|
12572
12572
|
className: cn(
|
|
12573
12573
|
"text-4xl font-black tracking-widest uppercase",
|
|
12574
|
-
gameResult === "victory" ? "text-
|
|
12574
|
+
gameResult === "victory" ? "text-warning" : "text-error"
|
|
12575
12575
|
),
|
|
12576
12576
|
children: gameResult === "victory" ? t("battle.victory") : t("battle.defeat")
|
|
12577
12577
|
}
|
|
12578
12578
|
),
|
|
12579
|
-
/* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "body1", className: "text-
|
|
12579
|
+
/* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "body1", className: "text-muted-foreground", children: [
|
|
12580
12580
|
t("battle.turnsPlayed"),
|
|
12581
12581
|
": ",
|
|
12582
12582
|
currentTurn
|
|
@@ -17403,7 +17403,7 @@ function BuilderBoard({
|
|
|
17403
17403
|
backgroundPosition: "center"
|
|
17404
17404
|
},
|
|
17405
17405
|
children: /* @__PURE__ */ jsxRuntime.jsxs(VStack, { gap: "lg", className: "p-4", children: [
|
|
17406
|
-
entity.headerImage && !headerError ? /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "w-full h-32 overflow-hidden rounded-
|
|
17406
|
+
entity.headerImage && !headerError ? /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "w-full h-32 overflow-hidden rounded-container", children: /* @__PURE__ */ jsxRuntime.jsx("img", { src: entity.headerImage, alt: "", onError: () => setHeaderError(true), className: "w-full h-full object-cover" }) }) : entity.headerImage && headerError ? /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "w-full h-32 rounded-container bg-gradient-to-br from-muted to-accent opacity-60" }) : null,
|
|
17407
17407
|
/* @__PURE__ */ jsxRuntime.jsx(Card, { className: "p-4", children: /* @__PURE__ */ jsxRuntime.jsxs(VStack, { gap: "sm", children: [
|
|
17408
17408
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "h4", weight: "bold", children: entity.title }),
|
|
17409
17409
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", children: entity.description })
|
|
@@ -17441,7 +17441,7 @@ function BuilderBoard({
|
|
|
17441
17441
|
{
|
|
17442
17442
|
gap: "sm",
|
|
17443
17443
|
align: "center",
|
|
17444
|
-
className: `p-3 border-2 rounded ${result ? result.correct ? "border-
|
|
17444
|
+
className: `p-3 border-2 rounded ${result ? result.correct ? "border-success" : "border-error" : selectedComponent ? "border-dashed border-foreground cursor-pointer" : "border-border"}`,
|
|
17445
17445
|
onClick: () => handlePlaceComponent(slot.id),
|
|
17446
17446
|
children: [
|
|
17447
17447
|
/* @__PURE__ */ jsxRuntime.jsxs(VStack, { gap: "none", className: "flex-1", children: [
|
|
@@ -17456,7 +17456,7 @@ function BuilderBoard({
|
|
|
17456
17456
|
] }) : null,
|
|
17457
17457
|
placedComp.label
|
|
17458
17458
|
] }),
|
|
17459
|
-
result && /* @__PURE__ */ jsxRuntime.jsx(Icon, { icon: result.correct ? LucideIcons2.CheckCircle : LucideIcons2.XCircle, size: "sm", className: result.correct ? "text-
|
|
17459
|
+
result && /* @__PURE__ */ jsxRuntime.jsx(Icon, { icon: result.correct ? LucideIcons2.CheckCircle : LucideIcons2.XCircle, size: "sm", className: result.correct ? "text-success" : "text-error" })
|
|
17460
17460
|
] }) : /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", className: "text-muted-foreground", children: t("builder.empty") })
|
|
17461
17461
|
]
|
|
17462
17462
|
},
|
|
@@ -17465,10 +17465,10 @@ function BuilderBoard({
|
|
|
17465
17465
|
}) })
|
|
17466
17466
|
] }) }),
|
|
17467
17467
|
submitted && /* @__PURE__ */ jsxRuntime.jsx(Card, { className: "p-4", children: /* @__PURE__ */ jsxRuntime.jsxs(VStack, { gap: "sm", align: "center", children: [
|
|
17468
|
-
/* @__PURE__ */ jsxRuntime.jsx(Icon, { icon: allCorrect ? LucideIcons2.CheckCircle : LucideIcons2.XCircle, size: "lg", className: allCorrect ? "text-
|
|
17468
|
+
/* @__PURE__ */ jsxRuntime.jsx(Icon, { icon: allCorrect ? LucideIcons2.CheckCircle : LucideIcons2.XCircle, size: "lg", className: allCorrect ? "text-success" : "text-error" }),
|
|
17469
17469
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", weight: "bold", children: allCorrect ? entity.successMessage ?? t("builder.success") : entity.failMessage ?? t("builder.incorrect") })
|
|
17470
17470
|
] }) }),
|
|
17471
|
-
showHint && entity.hint && /* @__PURE__ */ jsxRuntime.jsx(Card, { className: "p-4 border-l-4 border-l-
|
|
17471
|
+
showHint && entity.hint && /* @__PURE__ */ jsxRuntime.jsx(Card, { className: "p-4 border-l-4 border-l-warning", children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", children: entity.hint }) }),
|
|
17472
17472
|
/* @__PURE__ */ jsxRuntime.jsxs(HStack, { gap: "sm", justify: "center", children: [
|
|
17473
17473
|
!submitted ? /* @__PURE__ */ jsxRuntime.jsxs(Button, { variant: "primary", onClick: handleSubmit, disabled: !allPlaced, children: [
|
|
17474
17474
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { icon: LucideIcons2.Wrench, size: "sm" }),
|
|
@@ -19023,7 +19023,7 @@ function CanvasEffectEngine({
|
|
|
19023
19023
|
flash && /* @__PURE__ */ jsxRuntime.jsx(
|
|
19024
19024
|
Box,
|
|
19025
19025
|
{
|
|
19026
|
-
className: "absolute inset-0 z-20 pointer-events-none rounded-
|
|
19026
|
+
className: "absolute inset-0 z-20 pointer-events-none rounded-container",
|
|
19027
19027
|
style: { backgroundColor: flash.color, opacity: flash.alpha }
|
|
19028
19028
|
}
|
|
19029
19029
|
),
|
|
@@ -19091,7 +19091,7 @@ function EmojiEffect({
|
|
|
19091
19091
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
19092
19092
|
Box,
|
|
19093
19093
|
{
|
|
19094
|
-
className: "absolute rounded-
|
|
19094
|
+
className: "absolute rounded-pill animate-ping",
|
|
19095
19095
|
style: {
|
|
19096
19096
|
width: 48 * intensity,
|
|
19097
19097
|
height: 48 * intensity,
|
|
@@ -20908,7 +20908,7 @@ function ClassifierBoard({
|
|
|
20908
20908
|
backgroundPosition: "center"
|
|
20909
20909
|
},
|
|
20910
20910
|
children: /* @__PURE__ */ jsxRuntime.jsxs(VStack, { gap: "lg", className: "p-4", children: [
|
|
20911
|
-
entity.headerImage && !headerError ? /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "w-full h-32 overflow-hidden rounded-
|
|
20911
|
+
entity.headerImage && !headerError ? /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "w-full h-32 overflow-hidden rounded-container", children: /* @__PURE__ */ jsxRuntime.jsx("img", { src: entity.headerImage, alt: "", onError: () => setHeaderError(true), className: "w-full h-full object-cover" }) }) : entity.headerImage && headerError ? /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "w-full h-32 rounded-container bg-gradient-to-br from-muted to-accent opacity-60" }) : null,
|
|
20912
20912
|
/* @__PURE__ */ jsxRuntime.jsx(Card, { className: "p-4", children: /* @__PURE__ */ jsxRuntime.jsxs(VStack, { gap: "sm", children: [
|
|
20913
20913
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "h4", weight: "bold", children: entity.title }),
|
|
20914
20914
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", children: entity.description })
|
|
@@ -20923,7 +20923,7 @@ function ClassifierBoard({
|
|
|
20923
20923
|
/* @__PURE__ */ jsxRuntime.jsx(VStack, { gap: "md", children: categories.map((cat) => {
|
|
20924
20924
|
const catItems = items.filter((item) => assignments[item.id] === cat.id);
|
|
20925
20925
|
return /* @__PURE__ */ jsxRuntime.jsx(Card, { className: "p-4", children: /* @__PURE__ */ jsxRuntime.jsxs(VStack, { gap: "sm", children: [
|
|
20926
|
-
cat.imageUrl && /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "w-full h-16 overflow-hidden rounded-
|
|
20926
|
+
cat.imageUrl && /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "w-full h-16 overflow-hidden rounded-container", children: /* @__PURE__ */ jsxRuntime.jsx("img", { src: cat.imageUrl, alt: "", className: "w-full h-full object-cover" }) }),
|
|
20927
20927
|
/* @__PURE__ */ jsxRuntime.jsxs(HStack, { justify: "between", align: "center", children: [
|
|
20928
20928
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", weight: "bold", children: cat.label }),
|
|
20929
20929
|
/* @__PURE__ */ jsxRuntime.jsx(Badge, { size: "sm", children: catItems.length })
|
|
@@ -20934,12 +20934,12 @@ function ClassifierBoard({
|
|
|
20934
20934
|
Badge,
|
|
20935
20935
|
{
|
|
20936
20936
|
size: "sm",
|
|
20937
|
-
className: `cursor-pointer ${result ? result.correct ? "border-
|
|
20937
|
+
className: `cursor-pointer ${result ? result.correct ? "border-success bg-success/10" : "border-error bg-error/10" : ""}`,
|
|
20938
20938
|
onClick: () => handleUnassign(item.id),
|
|
20939
20939
|
children: [
|
|
20940
20940
|
item.iconUrl && /* @__PURE__ */ jsxRuntime.jsx("img", { src: item.iconUrl, alt: "", className: "w-3 h-3 object-contain inline-block" }),
|
|
20941
20941
|
item.label,
|
|
20942
|
-
result && /* @__PURE__ */ jsxRuntime.jsx(Icon, { icon: result.correct ? LucideIcons2.CheckCircle : LucideIcons2.XCircle, size: "xs", className: result.correct ? "text-
|
|
20942
|
+
result && /* @__PURE__ */ jsxRuntime.jsx(Icon, { icon: result.correct ? LucideIcons2.CheckCircle : LucideIcons2.XCircle, size: "xs", className: result.correct ? "text-success" : "text-error" })
|
|
20943
20943
|
]
|
|
20944
20944
|
},
|
|
20945
20945
|
item.id
|
|
@@ -20962,11 +20962,11 @@ function ClassifierBoard({
|
|
|
20962
20962
|
] }) }, cat.id);
|
|
20963
20963
|
}) }),
|
|
20964
20964
|
submitted && /* @__PURE__ */ jsxRuntime.jsx(Card, { className: "p-4", children: /* @__PURE__ */ jsxRuntime.jsxs(VStack, { gap: "sm", align: "center", children: [
|
|
20965
|
-
/* @__PURE__ */ jsxRuntime.jsx(Icon, { icon: allCorrect ? LucideIcons2.CheckCircle : LucideIcons2.XCircle, size: "lg", className: allCorrect ? "text-
|
|
20965
|
+
/* @__PURE__ */ jsxRuntime.jsx(Icon, { icon: allCorrect ? LucideIcons2.CheckCircle : LucideIcons2.XCircle, size: "lg", className: allCorrect ? "text-success" : "text-error" }),
|
|
20966
20966
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", weight: "bold", children: allCorrect ? entity.successMessage ?? t("classifier.allCorrect") : `${correctCount}/${items.length} ${t("classifier.correct")}` }),
|
|
20967
20967
|
!allCorrect && entity.failMessage && /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", className: "text-muted-foreground", children: entity.failMessage })
|
|
20968
20968
|
] }) }),
|
|
20969
|
-
showHint && entity.hint && /* @__PURE__ */ jsxRuntime.jsx(Card, { className: "p-4 border-l-4 border-l-
|
|
20969
|
+
showHint && entity.hint && /* @__PURE__ */ jsxRuntime.jsx(Card, { className: "p-4 border-l-4 border-l-warning", children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", children: entity.hint }) }),
|
|
20970
20970
|
/* @__PURE__ */ jsxRuntime.jsxs(HStack, { gap: "sm", justify: "center", children: [
|
|
20971
20971
|
!submitted ? /* @__PURE__ */ jsxRuntime.jsxs(Button, { variant: "primary", onClick: handleSubmit, disabled: !allAssigned, children: [
|
|
20972
20972
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { icon: LucideIcons2.Send, size: "sm" }),
|
|
@@ -22014,7 +22014,7 @@ function CraftingRecipe({
|
|
|
22014
22014
|
Box,
|
|
22015
22015
|
{
|
|
22016
22016
|
className: cn(
|
|
22017
|
-
"flex flex-wrap items-center gap-3 rounded-
|
|
22017
|
+
"flex flex-wrap items-center gap-3 rounded-container bg-muted/50 border border-border/50 p-3",
|
|
22018
22018
|
className
|
|
22019
22019
|
),
|
|
22020
22020
|
children: [
|
|
@@ -22031,10 +22031,10 @@ function CraftingRecipe({
|
|
|
22031
22031
|
className: cn(!hasSufficient && "opacity-50")
|
|
22032
22032
|
}
|
|
22033
22033
|
) }),
|
|
22034
|
-
index < inputs.length - 1 && /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "plus", size: "sm", className: "text-
|
|
22034
|
+
index < inputs.length - 1 && /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "plus", size: "sm", className: "text-muted-foreground" })
|
|
22035
22035
|
] }, index);
|
|
22036
22036
|
}) }),
|
|
22037
|
-
/* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "arrow-right", size: "md", className: "text-
|
|
22037
|
+
/* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "arrow-right", size: "md", className: "text-muted-foreground" }),
|
|
22038
22038
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
22039
22039
|
ItemSlot,
|
|
22040
22040
|
{
|
|
@@ -22122,7 +22122,7 @@ function DPad({
|
|
|
22122
22122
|
createButton("up"),
|
|
22123
22123
|
/* @__PURE__ */ jsxRuntime.jsx("div", {}),
|
|
22124
22124
|
createButton("left"),
|
|
22125
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-6 h-6 rounded-
|
|
22125
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-6 h-6 rounded-interactive bg-muted border-2 border-muted-foreground" }) }),
|
|
22126
22126
|
createButton("right"),
|
|
22127
22127
|
/* @__PURE__ */ jsxRuntime.jsx("div", {}),
|
|
22128
22128
|
createButton("down"),
|
|
@@ -26229,7 +26229,7 @@ function StatBadge({
|
|
|
26229
26229
|
"div",
|
|
26230
26230
|
{
|
|
26231
26231
|
className: cn(
|
|
26232
|
-
"inline-flex items-center gap-2 rounded-
|
|
26232
|
+
"inline-flex items-center gap-2 rounded-container border backdrop-blur-sm",
|
|
26233
26233
|
sizeMap17[size] ?? sizeMap17.md,
|
|
26234
26234
|
variantMap2[variant] ?? variantMap2.default,
|
|
26235
26235
|
className
|
|
@@ -26375,10 +26375,10 @@ function QuestTracker({
|
|
|
26375
26375
|
Box,
|
|
26376
26376
|
{
|
|
26377
26377
|
className: cn(
|
|
26378
|
-
"flex items-start gap-3 rounded-
|
|
26379
|
-
isActive && !isCompleted && "bg-
|
|
26380
|
-
isCompleted && "bg-
|
|
26381
|
-
!isActive && !isCompleted && "bg-
|
|
26378
|
+
"flex items-start gap-3 rounded-container px-3 py-2 transition-colors",
|
|
26379
|
+
isActive && !isCompleted && "bg-info/20 border border-info/50",
|
|
26380
|
+
isCompleted && "bg-success/10 border border-success/30 opacity-70",
|
|
26381
|
+
!isActive && !isCompleted && "bg-muted/30 border border-border/30"
|
|
26382
26382
|
),
|
|
26383
26383
|
children: [
|
|
26384
26384
|
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "flex-shrink-0 pt-0.5", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -26396,9 +26396,9 @@ function QuestTracker({
|
|
|
26396
26396
|
variant: "body2",
|
|
26397
26397
|
className: cn(
|
|
26398
26398
|
"font-medium truncate",
|
|
26399
|
-
isCompleted && "line-through text-
|
|
26400
|
-
isActive && !isCompleted && "text-
|
|
26401
|
-
!isActive && !isCompleted && "text-
|
|
26399
|
+
isCompleted && "line-through text-muted-foreground",
|
|
26400
|
+
isActive && !isCompleted && "text-info",
|
|
26401
|
+
!isActive && !isCompleted && "text-muted-foreground"
|
|
26402
26402
|
),
|
|
26403
26403
|
children: quest.title
|
|
26404
26404
|
}
|
|
@@ -26416,7 +26416,7 @@ function QuestTracker({
|
|
|
26416
26416
|
Typography,
|
|
26417
26417
|
{
|
|
26418
26418
|
variant: "caption",
|
|
26419
|
-
className: "text-
|
|
26419
|
+
className: "text-muted-foreground mt-1",
|
|
26420
26420
|
children: [
|
|
26421
26421
|
quest.progress,
|
|
26422
26422
|
" / ",
|
|
@@ -26473,14 +26473,14 @@ function PowerupSlots({
|
|
|
26473
26473
|
{
|
|
26474
26474
|
className: cn(
|
|
26475
26475
|
"absolute -bottom-1 left-1/2 -translate-x-1/2",
|
|
26476
|
-
"rounded px-1 py-px",
|
|
26477
|
-
"bg-
|
|
26476
|
+
"rounded-interactive px-1 py-px",
|
|
26477
|
+
"bg-background/80 border border-border"
|
|
26478
26478
|
),
|
|
26479
26479
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
26480
26480
|
Typography,
|
|
26481
26481
|
{
|
|
26482
26482
|
variant: "caption",
|
|
26483
|
-
className: "text-[9px] font-mono font-bold text-
|
|
26483
|
+
className: "text-[9px] font-mono font-bold text-warning whitespace-nowrap",
|
|
26484
26484
|
children: formatTime2(powerup.remainingTime)
|
|
26485
26485
|
}
|
|
26486
26486
|
)
|
|
@@ -26602,7 +26602,7 @@ function HealthPanel({
|
|
|
26602
26602
|
Box,
|
|
26603
26603
|
{
|
|
26604
26604
|
className: cn(
|
|
26605
|
-
"rounded-
|
|
26605
|
+
"rounded-container bg-[var(--color-card)]/90 border border-border backdrop-blur-sm",
|
|
26606
26606
|
sizes.padding,
|
|
26607
26607
|
className
|
|
26608
26608
|
),
|
|
@@ -26613,7 +26613,7 @@ function HealthPanel({
|
|
|
26613
26613
|
{
|
|
26614
26614
|
variant: "caption",
|
|
26615
26615
|
weight: "bold",
|
|
26616
|
-
className: "text-
|
|
26616
|
+
className: "text-muted-foreground uppercase tracking-wider",
|
|
26617
26617
|
children: label
|
|
26618
26618
|
}
|
|
26619
26619
|
),
|
|
@@ -26634,7 +26634,7 @@ function HealthPanel({
|
|
|
26634
26634
|
as: "span",
|
|
26635
26635
|
variant: "caption",
|
|
26636
26636
|
weight: "bold",
|
|
26637
|
-
className: "text-
|
|
26637
|
+
className: "text-info ml-1",
|
|
26638
26638
|
children: [
|
|
26639
26639
|
"+",
|
|
26640
26640
|
shield
|
|
@@ -26659,14 +26659,14 @@ function HealthPanel({
|
|
|
26659
26659
|
Box,
|
|
26660
26660
|
{
|
|
26661
26661
|
className: cn(
|
|
26662
|
-
"relative overflow-hidden rounded-
|
|
26662
|
+
"relative overflow-hidden rounded-container bg-muted",
|
|
26663
26663
|
size === "sm" ? "h-1" : size === "md" ? "h-1.5" : "h-2",
|
|
26664
26664
|
"w-full"
|
|
26665
26665
|
),
|
|
26666
26666
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
26667
26667
|
Box,
|
|
26668
26668
|
{
|
|
26669
|
-
className: "absolute inset-y-0 left-0 rounded-
|
|
26669
|
+
className: "absolute inset-y-0 left-0 rounded-container bg-info transition-all duration-300",
|
|
26670
26670
|
style: { width: `${Math.min(100, shield / max * 100)}%` }
|
|
26671
26671
|
}
|
|
26672
26672
|
)
|
|
@@ -26725,7 +26725,7 @@ function ScoreBoard({
|
|
|
26725
26725
|
Card,
|
|
26726
26726
|
{
|
|
26727
26727
|
className: cn(
|
|
26728
|
-
"bg-[var(--color-card)]/90 border-
|
|
26728
|
+
"bg-[var(--color-card)]/90 border-border backdrop-blur-sm",
|
|
26729
26729
|
className
|
|
26730
26730
|
),
|
|
26731
26731
|
children: /* @__PURE__ */ jsxRuntime.jsx(CardContent, { className: "p-3", children: /* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "flex items-center gap-3 flex-wrap", children: [
|
|
@@ -26842,7 +26842,7 @@ function TurnPanel({
|
|
|
26842
26842
|
Box,
|
|
26843
26843
|
{
|
|
26844
26844
|
className: cn(
|
|
26845
|
-
"flex items-center gap-3 rounded-
|
|
26845
|
+
"flex items-center gap-3 rounded-container bg-[var(--color-card)]/90 border border-border backdrop-blur-sm px-3 py-2",
|
|
26846
26846
|
className
|
|
26847
26847
|
),
|
|
26848
26848
|
children: [
|
|
@@ -26894,7 +26894,7 @@ function EnemyPlate({
|
|
|
26894
26894
|
Box,
|
|
26895
26895
|
{
|
|
26896
26896
|
className: cn(
|
|
26897
|
-
"inline-flex flex-col gap-1 rounded-
|
|
26897
|
+
"inline-flex flex-col gap-1 rounded-container bg-[var(--color-card)]/90 border border-border backdrop-blur-sm px-3 py-1.5",
|
|
26898
26898
|
"min-w-[120px]",
|
|
26899
26899
|
className
|
|
26900
26900
|
),
|
|
@@ -26988,7 +26988,7 @@ function UnitCommandBar({
|
|
|
26988
26988
|
Box,
|
|
26989
26989
|
{
|
|
26990
26990
|
className: cn(
|
|
26991
|
-
"flex items-center gap-1.5 rounded-
|
|
26991
|
+
"flex items-center gap-1.5 rounded-container bg-[var(--color-card)]/90 border border-border backdrop-blur-sm px-2 py-1.5",
|
|
26992
26992
|
className
|
|
26993
26993
|
),
|
|
26994
26994
|
children: commands.map((command, i) => /* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "flex flex-col items-center gap-0.5", children: [
|
|
@@ -27073,8 +27073,8 @@ function GameHud({
|
|
|
27073
27073
|
className: cn(
|
|
27074
27074
|
"relative z-10",
|
|
27075
27075
|
positionMap[position],
|
|
27076
|
-
transparent && "bg-gradient-to-b from-
|
|
27077
|
-
position === "bottom" && "bg-gradient-to-t from-
|
|
27076
|
+
transparent && "bg-gradient-to-b from-background/50 to-transparent",
|
|
27077
|
+
position === "bottom" && "bg-gradient-to-t from-background/50 to-transparent",
|
|
27078
27078
|
className
|
|
27079
27079
|
),
|
|
27080
27080
|
children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex gap-4", children: stats.map((stat, i) => /* @__PURE__ */ jsxRuntime.jsx(StatBadge, { ...stat, size }, i)) })
|
|
@@ -27232,8 +27232,8 @@ function DialogueBox({
|
|
|
27232
27232
|
tabIndex: 0,
|
|
27233
27233
|
role: "dialog",
|
|
27234
27234
|
"aria-label": "Dialogue",
|
|
27235
|
-
children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mx-4 my-4 bg-[var(--color-card)] bg-opacity-95 border-2 border-
|
|
27236
|
-
dialogue.portrait && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-shrink-0 p-4 border-r border-
|
|
27235
|
+
children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mx-4 my-4 bg-[var(--color-card)] bg-opacity-95 border-2 border-border rounded-container overflow-hidden", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex", children: [
|
|
27236
|
+
dialogue.portrait && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-shrink-0 p-4 border-r border-border", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
27237
27237
|
"img",
|
|
27238
27238
|
{
|
|
27239
27239
|
src: dialogue.portrait,
|
|
@@ -27243,7 +27243,7 @@ function DialogueBox({
|
|
|
27243
27243
|
}
|
|
27244
27244
|
) }),
|
|
27245
27245
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1 p-4", children: [
|
|
27246
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-
|
|
27246
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-warning font-bold mb-2", children: dialogue.speaker }),
|
|
27247
27247
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-[var(--color-foreground)] text-lg leading-relaxed min-h-[60px]", children: [
|
|
27248
27248
|
displayedText,
|
|
27249
27249
|
isTyping && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "animate-pulse", children: "\u258C" })
|
|
@@ -27253,9 +27253,9 @@ function DialogueBox({
|
|
|
27253
27253
|
{
|
|
27254
27254
|
type: "button",
|
|
27255
27255
|
className: cn(
|
|
27256
|
-
"block w-full text-left px-4 py-2 rounded transition-colors",
|
|
27257
|
-
"hover:bg-[var(--color-surface,#374151)] focus:outline-none focus:ring-2 focus:ring-
|
|
27258
|
-
selectedChoice === index ? "bg-[var(--color-surface,#374151)] text-
|
|
27256
|
+
"block w-full text-left px-4 py-2 rounded-interactive transition-colors",
|
|
27257
|
+
"hover:bg-[var(--color-surface,#374151)] focus:outline-none focus:ring-2 focus:ring-warning",
|
|
27258
|
+
selectedChoice === index ? "bg-[var(--color-surface,#374151)] text-warning" : "bg-[var(--color-card)] text-[var(--color-foreground)]"
|
|
27259
27259
|
),
|
|
27260
27260
|
onClick: (e) => {
|
|
27261
27261
|
e.stopPropagation();
|
|
@@ -27263,7 +27263,7 @@ function DialogueBox({
|
|
|
27263
27263
|
onChoice?.(choice);
|
|
27264
27264
|
},
|
|
27265
27265
|
children: [
|
|
27266
|
-
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-
|
|
27266
|
+
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-muted-foreground mr-2", children: [
|
|
27267
27267
|
index + 1,
|
|
27268
27268
|
"."
|
|
27269
27269
|
] }),
|
|
@@ -27272,7 +27272,7 @@ function DialogueBox({
|
|
|
27272
27272
|
},
|
|
27273
27273
|
index
|
|
27274
27274
|
)) }),
|
|
27275
|
-
!isTyping && !dialogue.choices?.length && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-4 text-
|
|
27275
|
+
!isTyping && !dialogue.choices?.length && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-4 text-muted-foreground text-sm animate-pulse", children: "Press SPACE or click to continue..." })
|
|
27276
27276
|
] })
|
|
27277
27277
|
] }) })
|
|
27278
27278
|
}
|
|
@@ -27375,7 +27375,7 @@ function InventoryPanel({
|
|
|
27375
27375
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
27376
27376
|
"div",
|
|
27377
27377
|
{
|
|
27378
|
-
className: "grid gap-1 bg-[var(--color-card)] p-2 rounded-
|
|
27378
|
+
className: "grid gap-1 bg-[var(--color-card)] p-2 rounded-container border border-border",
|
|
27379
27379
|
style: {
|
|
27380
27380
|
gridTemplateColumns: `repeat(${safeColumns}, ${slotSize}px)`,
|
|
27381
27381
|
gridTemplateRows: `repeat(${rows}, ${slotSize}px)`
|
|
@@ -27387,8 +27387,8 @@ function InventoryPanel({
|
|
|
27387
27387
|
className: cn(
|
|
27388
27388
|
"relative flex items-center justify-center",
|
|
27389
27389
|
"bg-[var(--color-card)] border rounded transition-colors",
|
|
27390
|
-
"hover:bg-[var(--color-surface,#374151)] focus:outline-none focus:ring-2 focus:ring-
|
|
27391
|
-
selectedSlot === index ? "border-
|
|
27390
|
+
"hover:bg-[var(--color-surface,#374151)] focus:outline-none focus:ring-2 focus:ring-info",
|
|
27391
|
+
selectedSlot === index ? "border-warning bg-[var(--color-surface,#374151)]" : "border-muted"
|
|
27392
27392
|
),
|
|
27393
27393
|
style: { width: slotSize, height: slotSize },
|
|
27394
27394
|
onClick: () => handleSlotClick(index),
|
|
@@ -27407,8 +27407,8 @@ function InventoryPanel({
|
|
|
27407
27407
|
className: "w-8 h-8 object-contain",
|
|
27408
27408
|
style: { imageRendering: "pixelated" }
|
|
27409
27409
|
}
|
|
27410
|
-
) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-8 h-8 bg-
|
|
27411
|
-
item.quantity > 1 && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "absolute bottom-0 right-0 bg-
|
|
27410
|
+
) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-8 h-8 bg-muted rounded-interactive flex items-center justify-center text-xs text-muted-foreground", children: (item.type ?? item.name ?? "I").charAt(0).toUpperCase() }),
|
|
27411
|
+
item.quantity > 1 && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "absolute bottom-0 right-0 bg-background/70 text-foreground text-xs px-1 rounded-tl", children: item.quantity })
|
|
27412
27412
|
] })
|
|
27413
27413
|
},
|
|
27414
27414
|
index
|
|
@@ -27418,7 +27418,7 @@ function InventoryPanel({
|
|
|
27418
27418
|
showTooltips && hoveredItem && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
27419
27419
|
"div",
|
|
27420
27420
|
{
|
|
27421
|
-
className: "fixed z-50 bg-[var(--color-card)] border border-
|
|
27421
|
+
className: "fixed z-50 bg-[var(--color-card)] border border-border rounded-container p-2 shadow-elevation-card pointer-events-none",
|
|
27422
27422
|
style: {
|
|
27423
27423
|
left: tooltipPosition.x,
|
|
27424
27424
|
top: tooltipPosition.y,
|
|
@@ -27426,8 +27426,8 @@ function InventoryPanel({
|
|
|
27426
27426
|
},
|
|
27427
27427
|
children: [
|
|
27428
27428
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "font-semibold text-[var(--color-foreground)]", children: hoveredItem.name || hoveredItem.type }),
|
|
27429
|
-
hoveredItem.description && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-sm text-
|
|
27430
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-xs text-
|
|
27429
|
+
hoveredItem.description && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-sm text-muted-foreground mt-1", children: hoveredItem.description }),
|
|
27430
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-xs text-muted-foreground mt-1", children: [
|
|
27431
27431
|
"Quantity: ",
|
|
27432
27432
|
hoveredItem.quantity
|
|
27433
27433
|
] })
|
|
@@ -27505,7 +27505,7 @@ function GameMenu({
|
|
|
27505
27505
|
children: title
|
|
27506
27506
|
}
|
|
27507
27507
|
),
|
|
27508
|
-
subtitle && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-2 text-lg text-
|
|
27508
|
+
subtitle && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-2 text-lg text-muted-foreground tracking-widest uppercase", children: subtitle })
|
|
27509
27509
|
] }),
|
|
27510
27510
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-col gap-4 w-full max-w-md", children: resolvedOptions.map((option, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
27511
27511
|
"button",
|
|
@@ -27513,10 +27513,10 @@ function GameMenu({
|
|
|
27513
27513
|
onClick: () => handleOptionClick(option),
|
|
27514
27514
|
disabled: option.disabled,
|
|
27515
27515
|
className: cn(
|
|
27516
|
-
"w-full py-4 px-8 rounded-
|
|
27516
|
+
"w-full py-4 px-8 rounded-container border-2 font-bold text-lg",
|
|
27517
27517
|
"transition-all duration-200 transform",
|
|
27518
27518
|
"hover:scale-105 active:scale-95",
|
|
27519
|
-
"focus:outline-none focus:ring-4 focus:ring-
|
|
27519
|
+
"focus:outline-none focus:ring-4 focus:ring-foreground/25",
|
|
27520
27520
|
variantMap3[option.variant ?? "secondary"] ?? variantMap3.secondary,
|
|
27521
27521
|
option.disabled && "opacity-50 cursor-not-allowed hover:scale-100"
|
|
27522
27522
|
),
|
|
@@ -27528,8 +27528,8 @@ function GameMenu({
|
|
|
27528
27528
|
index
|
|
27529
27529
|
)) }),
|
|
27530
27530
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "absolute inset-0 pointer-events-none overflow-hidden", children: [
|
|
27531
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute top-1/4 left-1/4 w-64 h-64 bg-
|
|
27532
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute bottom-1/4 right-1/4 w-96 h-96 bg-
|
|
27531
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute top-1/4 left-1/4 w-64 h-64 bg-info/10 rounded-container blur-3xl" }),
|
|
27532
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute bottom-1/4 right-1/4 w-96 h-96 bg-accent/10 rounded-container blur-3xl" })
|
|
27533
27533
|
] })
|
|
27534
27534
|
]
|
|
27535
27535
|
}
|
|
@@ -27542,9 +27542,9 @@ var init_GameMenu = __esm({
|
|
|
27542
27542
|
init_cn();
|
|
27543
27543
|
init_useEventBus();
|
|
27544
27544
|
variantMap3 = {
|
|
27545
|
-
primary: "bg-[var(--color-primary)] hover:bg-
|
|
27546
|
-
secondary: "bg-[var(--color-surface,#374151)] hover:bg-
|
|
27547
|
-
ghost: "bg-transparent hover:bg-
|
|
27545
|
+
primary: "bg-[var(--color-primary)] hover:bg-info text-[var(--color-primary-foreground)] border-info shadow-lg shadow-info/25",
|
|
27546
|
+
secondary: "bg-[var(--color-surface,#374151)] hover:bg-muted text-[var(--color-foreground)] border-muted",
|
|
27547
|
+
ghost: "bg-transparent hover:bg-foreground/10 text-[var(--color-foreground)] border-foreground/20"
|
|
27548
27548
|
};
|
|
27549
27549
|
GameMenu.displayName = "GameMenu";
|
|
27550
27550
|
}
|
|
@@ -27612,13 +27612,13 @@ function GameOverScreen({
|
|
|
27612
27612
|
children: title
|
|
27613
27613
|
}
|
|
27614
27614
|
),
|
|
27615
|
-
message && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xl text-
|
|
27616
|
-
isNewHighScore && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-6 px-6 py-2 bg-
|
|
27615
|
+
message && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xl text-muted-foreground mb-8 text-center max-w-md", children: message }),
|
|
27616
|
+
isNewHighScore && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-6 px-6 py-2 bg-warning/20 border-2 border-warning rounded-container animate-pulse", children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-warning font-bold text-lg tracking-wide", children: "\u{1F3C6} NEW HIGH SCORE! \u{1F3C6}" }) }),
|
|
27617
27617
|
stats.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(
|
|
27618
27618
|
"div",
|
|
27619
27619
|
{
|
|
27620
27620
|
className: cn(
|
|
27621
|
-
"mb-8 p-6 rounded-
|
|
27621
|
+
"mb-8 p-6 rounded-container border-2 bg-background/30",
|
|
27622
27622
|
colors.accent
|
|
27623
27623
|
),
|
|
27624
27624
|
children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-2 md:grid-cols-3 gap-4", children: stats.map((stat, index) => {
|
|
@@ -27627,7 +27627,7 @@ function GameOverScreen({
|
|
|
27627
27627
|
displayValue = formatTime3(displayValue);
|
|
27628
27628
|
}
|
|
27629
27629
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-center", children: [
|
|
27630
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-
|
|
27630
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-muted-foreground text-sm mb-1", children: stat.label }),
|
|
27631
27631
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-[var(--color-foreground)] text-2xl font-bold flex items-center justify-center gap-2", children: [
|
|
27632
27632
|
stat.icon && /* @__PURE__ */ jsxRuntime.jsx("span", { children: stat.icon }),
|
|
27633
27633
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "tabular-nums", children: displayValue })
|
|
@@ -27641,10 +27641,10 @@ function GameOverScreen({
|
|
|
27641
27641
|
{
|
|
27642
27642
|
onClick: () => handleActionClick(action),
|
|
27643
27643
|
className: cn(
|
|
27644
|
-
"px-8 py-4 rounded-
|
|
27644
|
+
"px-8 py-4 rounded-container border-2 font-bold text-lg",
|
|
27645
27645
|
"transition-all duration-200",
|
|
27646
27646
|
"hover:scale-105 active:scale-95",
|
|
27647
|
-
"focus:outline-none focus:ring-4 focus:ring-
|
|
27647
|
+
"focus:outline-none focus:ring-4 focus:ring-foreground/25",
|
|
27648
27648
|
buttonVariants[action.variant ?? "secondary"]
|
|
27649
27649
|
),
|
|
27650
27650
|
children: action.label
|
|
@@ -27663,25 +27663,25 @@ var init_GameOverScreen = __esm({
|
|
|
27663
27663
|
init_useEventBus();
|
|
27664
27664
|
variantColors = {
|
|
27665
27665
|
victory: {
|
|
27666
|
-
bg: "from-
|
|
27667
|
-
title: "text-
|
|
27668
|
-
accent: "border-
|
|
27666
|
+
bg: "from-success/90 to-success/90",
|
|
27667
|
+
title: "text-success",
|
|
27668
|
+
accent: "border-success"
|
|
27669
27669
|
},
|
|
27670
27670
|
defeat: {
|
|
27671
|
-
bg: "from-
|
|
27672
|
-
title: "text-
|
|
27673
|
-
accent: "border-
|
|
27671
|
+
bg: "from-error/90 to-background/90",
|
|
27672
|
+
title: "text-error",
|
|
27673
|
+
accent: "border-error"
|
|
27674
27674
|
},
|
|
27675
27675
|
neutral: {
|
|
27676
|
-
bg: "from-
|
|
27677
|
-
title: "text-
|
|
27678
|
-
accent: "border-
|
|
27676
|
+
bg: "from-muted/90 to-background/90",
|
|
27677
|
+
title: "text-foreground",
|
|
27678
|
+
accent: "border-muted"
|
|
27679
27679
|
}
|
|
27680
27680
|
};
|
|
27681
27681
|
buttonVariants = {
|
|
27682
|
-
primary: "bg-[var(--color-primary)] hover:bg-
|
|
27683
|
-
secondary: "bg-[var(--color-surface,#374151)] hover:bg-
|
|
27684
|
-
ghost: "bg-transparent hover:bg-
|
|
27682
|
+
primary: "bg-[var(--color-primary)] hover:bg-info text-[var(--color-primary-foreground)] border-info",
|
|
27683
|
+
secondary: "bg-[var(--color-surface,#374151)] hover:bg-muted text-[var(--color-foreground)] border-muted",
|
|
27684
|
+
ghost: "bg-transparent hover:bg-foreground/10 text-[var(--color-foreground)] border-foreground/20"
|
|
27685
27685
|
};
|
|
27686
27686
|
GameOverScreen.displayName = "GameOverScreen";
|
|
27687
27687
|
}
|
|
@@ -27915,7 +27915,7 @@ function PlatformerCanvas({
|
|
|
27915
27915
|
{
|
|
27916
27916
|
ref: canvasRef,
|
|
27917
27917
|
style: { width: canvasWidth, height: canvasHeight },
|
|
27918
|
-
className: cn("block rounded-
|
|
27918
|
+
className: cn("block rounded-container border border-border/10", className),
|
|
27919
27919
|
"data-testid": "platformer-canvas",
|
|
27920
27920
|
tabIndex: 0
|
|
27921
27921
|
}
|
|
@@ -35320,7 +35320,7 @@ function DebuggerBoard({
|
|
|
35320
35320
|
backgroundPosition: "center"
|
|
35321
35321
|
},
|
|
35322
35322
|
children: /* @__PURE__ */ jsxRuntime.jsxs(VStack, { gap: "lg", className: "p-4", children: [
|
|
35323
|
-
entity.headerImage && !headerError ? /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "w-full h-32 overflow-hidden rounded-
|
|
35323
|
+
entity.headerImage && !headerError ? /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "w-full h-32 overflow-hidden rounded-container", children: /* @__PURE__ */ jsxRuntime.jsx("img", { src: entity.headerImage, alt: "", onError: () => setHeaderError(true), className: "w-full h-full object-cover" }) }) : entity.headerImage && headerError ? /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "w-full h-32 rounded-container bg-gradient-to-br from-muted to-accent opacity-60" }) : null,
|
|
35324
35324
|
/* @__PURE__ */ jsxRuntime.jsx(Card, { className: "p-4", children: /* @__PURE__ */ jsxRuntime.jsxs(VStack, { gap: "sm", children: [
|
|
35325
35325
|
/* @__PURE__ */ jsxRuntime.jsxs(HStack, { gap: "xs", align: "center", children: [
|
|
35326
35326
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { icon: LucideIcons2.Bug, size: "sm" }),
|
|
@@ -35333,11 +35333,11 @@ function DebuggerBoard({
|
|
|
35333
35333
|
const isFlagged = flaggedLines.has(line.id);
|
|
35334
35334
|
let lineStyle = "";
|
|
35335
35335
|
if (submitted) {
|
|
35336
|
-
if (line.isBug && isFlagged) lineStyle = "bg-
|
|
35337
|
-
else if (line.isBug && !isFlagged) lineStyle = "bg-
|
|
35338
|
-
else if (!line.isBug && isFlagged) lineStyle = "bg-
|
|
35336
|
+
if (line.isBug && isFlagged) lineStyle = "bg-success/10";
|
|
35337
|
+
else if (line.isBug && !isFlagged) lineStyle = "bg-warning/10";
|
|
35338
|
+
else if (!line.isBug && isFlagged) lineStyle = "bg-error/10";
|
|
35339
35339
|
} else if (isFlagged) {
|
|
35340
|
-
lineStyle = "bg-
|
|
35340
|
+
lineStyle = "bg-error/10";
|
|
35341
35341
|
}
|
|
35342
35342
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
35343
35343
|
HStack,
|
|
@@ -35350,8 +35350,8 @@ function DebuggerBoard({
|
|
|
35350
35350
|
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "w-10 flex-shrink-0 flex items-center justify-center border-r border-border text-muted-foreground", children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", children: i + 1 }) }),
|
|
35351
35351
|
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "flex-1 px-3 py-1.5 font-mono text-sm whitespace-pre", children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", className: "font-mono text-sm", children: line.content }) }),
|
|
35352
35352
|
/* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "w-8 flex-shrink-0 flex items-center justify-center", children: [
|
|
35353
|
-
isFlagged && /* @__PURE__ */ jsxRuntime.jsx(Icon, { icon: LucideIcons2.Bug, size: "xs", className: "text-
|
|
35354
|
-
submitted && line.isBug && !isFlagged && /* @__PURE__ */ jsxRuntime.jsx(Icon, { icon: LucideIcons2.Bug, size: "xs", className: "text-
|
|
35353
|
+
isFlagged && /* @__PURE__ */ jsxRuntime.jsx(Icon, { icon: LucideIcons2.Bug, size: "xs", className: "text-error" }),
|
|
35354
|
+
submitted && line.isBug && !isFlagged && /* @__PURE__ */ jsxRuntime.jsx(Icon, { icon: LucideIcons2.Bug, size: "xs", className: "text-warning" })
|
|
35355
35355
|
] })
|
|
35356
35356
|
]
|
|
35357
35357
|
},
|
|
@@ -35366,7 +35366,7 @@ function DebuggerBoard({
|
|
|
35366
35366
|
{
|
|
35367
35367
|
icon: flaggedLines.has(line.id) ? LucideIcons2.CheckCircle : LucideIcons2.XCircle,
|
|
35368
35368
|
size: "xs",
|
|
35369
|
-
className: flaggedLines.has(line.id) ? "text-
|
|
35369
|
+
className: flaggedLines.has(line.id) ? "text-success mt-0.5" : "text-warning mt-0.5"
|
|
35370
35370
|
}
|
|
35371
35371
|
),
|
|
35372
35372
|
/* @__PURE__ */ jsxRuntime.jsxs(VStack, { gap: "none", children: [
|
|
@@ -35375,7 +35375,7 @@ function DebuggerBoard({
|
|
|
35375
35375
|
] })
|
|
35376
35376
|
] }, line.id))
|
|
35377
35377
|
] }) }),
|
|
35378
|
-
showHint && entity.hint && /* @__PURE__ */ jsxRuntime.jsx(Card, { className: "p-4 border-l-4 border-l-
|
|
35378
|
+
showHint && entity.hint && /* @__PURE__ */ jsxRuntime.jsx(Card, { className: "p-4 border-l-4 border-l-warning", children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", children: entity.hint }) }),
|
|
35379
35379
|
/* @__PURE__ */ jsxRuntime.jsxs(HStack, { gap: "sm", justify: "center", children: [
|
|
35380
35380
|
!submitted ? /* @__PURE__ */ jsxRuntime.jsxs(Button, { variant: "primary", onClick: handleSubmit, disabled: flaggedLines.size === 0, children: [
|
|
35381
35381
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { icon: LucideIcons2.Send, size: "sm" }),
|
|
@@ -36098,7 +36098,7 @@ function LinearView({
|
|
|
36098
36098
|
className
|
|
36099
36099
|
}) {
|
|
36100
36100
|
const currentIdx = trait.states.indexOf(trait.currentState);
|
|
36101
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(VStack, { className: cn("p-3 rounded-
|
|
36101
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(VStack, { className: cn("p-3 rounded-container bg-card border border-border", className), gap: "sm", children: [
|
|
36102
36102
|
trait.description && /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", className: "text-muted-foreground", children: trait.description }),
|
|
36103
36103
|
/* @__PURE__ */ jsxRuntime.jsx(HStack, { className: "flex-wrap items-center", gap: "xs", children: trait.states.map((state, i) => {
|
|
36104
36104
|
const isDone = i < currentIdx;
|
|
@@ -36120,10 +36120,10 @@ function LinearView({
|
|
|
36120
36120
|
{
|
|
36121
36121
|
display: "inline-flex",
|
|
36122
36122
|
className: cn(
|
|
36123
|
-
"items-center justify-center rounded-
|
|
36123
|
+
"items-center justify-center rounded-pill px-3 py-1 border-2 transition-all",
|
|
36124
36124
|
SIZE_CONFIG2[size || "md"].fontSize,
|
|
36125
36125
|
isDone && "bg-success/20 border-success text-success",
|
|
36126
|
-
isCurrent && "bg-primary/20 border-primary text-primary font-bold shadow-
|
|
36126
|
+
isCurrent && "bg-primary/20 border-primary text-primary font-bold shadow-elevation-card shadow-primary/20",
|
|
36127
36127
|
!isDone && !isCurrent && "bg-muted border-border text-muted-foreground"
|
|
36128
36128
|
),
|
|
36129
36129
|
children: [
|
|
@@ -36145,7 +36145,7 @@ function CompactView({
|
|
|
36145
36145
|
const { t } = useTranslate();
|
|
36146
36146
|
const config = SIZE_CONFIG2[size || "md"];
|
|
36147
36147
|
const currentTransitions = trait.transitions.filter((t2) => t2.from === trait.currentState);
|
|
36148
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(VStack, { className: cn("p-3 rounded-
|
|
36148
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(VStack, { className: cn("p-3 rounded-container bg-card border border-border", className), gap: "sm", children: [
|
|
36149
36149
|
/* @__PURE__ */ jsxRuntime.jsxs(HStack, { className: "items-center justify-between", children: [
|
|
36150
36150
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body2", className: "text-foreground font-bold", children: trait.name }),
|
|
36151
36151
|
/* @__PURE__ */ jsxRuntime.jsx(StateIndicator, { state: trait.currentState, size: "sm", stateStyles })
|
|
@@ -36181,7 +36181,7 @@ function FullView({
|
|
|
36181
36181
|
const { t } = useTranslate();
|
|
36182
36182
|
const config = SIZE_CONFIG2[size || "md"];
|
|
36183
36183
|
const currentTransitions = trait.transitions.filter((t2) => t2.from === trait.currentState);
|
|
36184
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(VStack, { className: cn("p-3 rounded-
|
|
36184
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(VStack, { className: cn("p-3 rounded-container bg-card border border-border", className), gap: "sm", children: [
|
|
36185
36185
|
/* @__PURE__ */ jsxRuntime.jsxs(HStack, { className: "items-center justify-between", children: [
|
|
36186
36186
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body2", className: "text-foreground font-bold", children: trait.name }),
|
|
36187
36187
|
/* @__PURE__ */ jsxRuntime.jsx(StateIndicator, { state: trait.currentState, size: "sm", stateStyles })
|
|
@@ -36195,9 +36195,9 @@ function FullView({
|
|
|
36195
36195
|
{
|
|
36196
36196
|
display: "flex",
|
|
36197
36197
|
className: cn(
|
|
36198
|
-
"items-center justify-center rounded-
|
|
36198
|
+
"items-center justify-center rounded-container border-2 transition-all px-2",
|
|
36199
36199
|
config.nodeSize,
|
|
36200
|
-
isCurrent && "bg-primary/20 border-primary shadow-
|
|
36200
|
+
isCurrent && "bg-primary/20 border-primary shadow-elevation-card shadow-primary/20",
|
|
36201
36201
|
!isCurrent && hasOutgoing && "bg-muted border-border hover:border-muted-foreground",
|
|
36202
36202
|
!isCurrent && !hasOutgoing && "bg-background border-border opacity-60",
|
|
36203
36203
|
onStateClick && "cursor-pointer"
|
|
@@ -36627,7 +36627,7 @@ function EventHandlerBoard({
|
|
|
36627
36627
|
backgroundPosition: "center"
|
|
36628
36628
|
},
|
|
36629
36629
|
children: [
|
|
36630
|
-
entity.headerImage && !headerError ? /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "w-full h-32 overflow-hidden rounded-
|
|
36630
|
+
entity.headerImage && !headerError ? /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "w-full h-32 overflow-hidden rounded-container", children: /* @__PURE__ */ jsxRuntime.jsx("img", { src: entity.headerImage, alt: "", onError: () => setHeaderError(true), className: "w-full h-full object-cover" }) }) : entity.headerImage && headerError ? /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "w-full h-32 rounded-container bg-gradient-to-br from-muted to-accent opacity-60" }) : null,
|
|
36631
36631
|
/* @__PURE__ */ jsxRuntime.jsxs(VStack, { gap: "xs", children: [
|
|
36632
36632
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "h4", className: "text-foreground", children: entity.title }),
|
|
36633
36633
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body2", className: "text-muted-foreground", children: entity.description }),
|
|
@@ -36642,7 +36642,7 @@ function EventHandlerBoard({
|
|
|
36642
36642
|
Box,
|
|
36643
36643
|
{
|
|
36644
36644
|
className: cn(
|
|
36645
|
-
"p-3 rounded-
|
|
36645
|
+
"p-3 rounded-container border-2 cursor-pointer transition-all hover:scale-105",
|
|
36646
36646
|
selectedObjectId === obj.id ? "border-primary bg-primary/10" : "border-border bg-card hover:border-muted-foreground"
|
|
36647
36647
|
),
|
|
36648
36648
|
onClick: () => setSelectedObjectId(obj.id),
|
|
@@ -36664,10 +36664,10 @@ function EventHandlerBoard({
|
|
|
36664
36664
|
}
|
|
36665
36665
|
),
|
|
36666
36666
|
eventLog.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(EventLog, { entries: eventLog }),
|
|
36667
|
-
playState === "success" && /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "p-4 rounded-
|
|
36667
|
+
playState === "success" && /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "p-4 rounded-container bg-success/20 border border-success text-center", children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "h5", className: "text-success", children: entity.successMessage || t("eventHandler.chainComplete") }) }),
|
|
36668
36668
|
playState === "fail" && /* @__PURE__ */ jsxRuntime.jsxs(VStack, { gap: "sm", children: [
|
|
36669
|
-
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "p-4 rounded-
|
|
36670
|
-
showHint && /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "p-3 rounded-
|
|
36669
|
+
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "p-4 rounded-container bg-warning/10 border border-warning/30 text-center", children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body1", className: "text-foreground font-medium", children: t(encourageKey) }) }),
|
|
36670
|
+
showHint && /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "p-3 rounded-container bg-accent/10 border border-accent/30", children: /* @__PURE__ */ jsxRuntime.jsxs(HStack, { className: "items-start", gap: "xs", children: [
|
|
36671
36671
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body2", className: "text-accent font-bold shrink-0", children: "\u{1F4A1} " + t("game.hint") + ":" }),
|
|
36672
36672
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body2", className: "text-foreground", children: entity.hint })
|
|
36673
36673
|
] }) })
|
|
@@ -39840,7 +39840,7 @@ function NegotiatorBoard({
|
|
|
39840
39840
|
backgroundPosition: "center"
|
|
39841
39841
|
},
|
|
39842
39842
|
children: /* @__PURE__ */ jsxRuntime.jsxs(VStack, { gap: "lg", className: "p-4", children: [
|
|
39843
|
-
entity.headerImage && !headerError ? /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "w-full h-32 overflow-hidden rounded-
|
|
39843
|
+
entity.headerImage && !headerError ? /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "w-full h-32 overflow-hidden rounded-container", children: /* @__PURE__ */ jsxRuntime.jsx("img", { src: entity.headerImage, alt: "", onError: () => setHeaderError(true), className: "w-full h-full object-cover" }) }) : entity.headerImage && headerError ? /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "w-full h-32 rounded-container bg-gradient-to-br from-muted to-accent opacity-60" }) : null,
|
|
39844
39844
|
/* @__PURE__ */ jsxRuntime.jsx(Card, { className: "p-4", children: /* @__PURE__ */ jsxRuntime.jsxs(VStack, { gap: "sm", children: [
|
|
39845
39845
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "h4", weight: "bold", children: entity.title }),
|
|
39846
39846
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", children: entity.description }),
|
|
@@ -39886,7 +39886,7 @@ function NegotiatorBoard({
|
|
|
39886
39886
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", className: "text-muted-foreground", children: "vs" }),
|
|
39887
39887
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", children: getActionLabel(round.opponentAction) }),
|
|
39888
39888
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { icon: LucideIcons2.ArrowRight, size: "xs" }),
|
|
39889
|
-
/* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "caption", weight: "bold", className: "text-
|
|
39889
|
+
/* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "caption", weight: "bold", className: "text-success", children: [
|
|
39890
39890
|
"+",
|
|
39891
39891
|
round.playerPayoff
|
|
39892
39892
|
] }),
|
|
@@ -39897,7 +39897,7 @@ function NegotiatorBoard({
|
|
|
39897
39897
|
] }, round.round))
|
|
39898
39898
|
] }) }),
|
|
39899
39899
|
isComplete && /* @__PURE__ */ jsxRuntime.jsx(Card, { className: "p-4", children: /* @__PURE__ */ jsxRuntime.jsxs(VStack, { gap: "sm", align: "center", children: [
|
|
39900
|
-
/* @__PURE__ */ jsxRuntime.jsx(Icon, { icon: LucideIcons2.CheckCircle, size: "lg", className: won ? "text-
|
|
39900
|
+
/* @__PURE__ */ jsxRuntime.jsx(Icon, { icon: LucideIcons2.CheckCircle, size: "lg", className: won ? "text-success" : "text-error" }),
|
|
39901
39901
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", weight: "bold", children: won ? entity.successMessage ?? t("negotiator.success") : entity.failMessage ?? t("negotiator.failed") }),
|
|
39902
39902
|
/* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "caption", className: "text-muted-foreground", children: [
|
|
39903
39903
|
t("negotiator.finalScore"),
|
|
@@ -39907,7 +39907,7 @@ function NegotiatorBoard({
|
|
|
39907
39907
|
entity.targetScore
|
|
39908
39908
|
] })
|
|
39909
39909
|
] }) }),
|
|
39910
|
-
showHint && entity.hint && !won && /* @__PURE__ */ jsxRuntime.jsx(Card, { className: "p-4 border-l-4 border-l-
|
|
39910
|
+
showHint && entity.hint && !won && /* @__PURE__ */ jsxRuntime.jsx(Card, { className: "p-4 border-l-4 border-l-warning", children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", children: entity.hint }) }),
|
|
39911
39911
|
isComplete && !won && /* @__PURE__ */ jsxRuntime.jsx(HStack, { justify: "center", children: /* @__PURE__ */ jsxRuntime.jsx(Button, { variant: "primary", onClick: handleReset, children: t("negotiator.playAgain") }) })
|
|
39912
39912
|
] })
|
|
39913
39913
|
}
|
|
@@ -42511,7 +42511,7 @@ function TraitSlot({
|
|
|
42511
42511
|
display: "flex",
|
|
42512
42512
|
position: "relative",
|
|
42513
42513
|
className: cn(
|
|
42514
|
-
"items-center justify-center rounded-
|
|
42514
|
+
"items-center justify-center rounded-container transition-all duration-200 bg-card/50",
|
|
42515
42515
|
!locked && "cursor-pointer",
|
|
42516
42516
|
locked && "cursor-not-allowed opacity-50",
|
|
42517
42517
|
isEmpty && !locked && "border-2 border-dashed border-border hover:border-muted-foreground",
|
|
@@ -42527,7 +42527,7 @@ function TraitSlot({
|
|
|
42527
42527
|
style: {
|
|
42528
42528
|
width: config.box,
|
|
42529
42529
|
height: config.box,
|
|
42530
|
-
backgroundColor: catColor?.bg ||
|
|
42530
|
+
backgroundColor: catColor?.bg || void 0,
|
|
42531
42531
|
borderColor: isDragOver ? void 0 : feedback === "correct" ? "var(--color-success)" : feedback === "wrong" ? "var(--color-error)" : catColor?.border || void 0
|
|
42532
42532
|
},
|
|
42533
42533
|
onClick: handleClick,
|
|
@@ -42556,7 +42556,7 @@ function TraitSlot({
|
|
|
42556
42556
|
Box,
|
|
42557
42557
|
{
|
|
42558
42558
|
position: "absolute",
|
|
42559
|
-
className: "-top-1.5 -right-1.5 w-4 h-4 bg-error rounded-
|
|
42559
|
+
className: "-top-1.5 -right-1.5 w-4 h-4 bg-error rounded-pill flex items-center justify-center cursor-pointer hover:bg-error/80 transition-colors",
|
|
42560
42560
|
onClick: handleRemove,
|
|
42561
42561
|
children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", className: "text-foreground text-xs leading-none", children: "\xD7" })
|
|
42562
42562
|
}
|
|
@@ -42566,14 +42566,14 @@ function TraitSlot({
|
|
|
42566
42566
|
Box,
|
|
42567
42567
|
{
|
|
42568
42568
|
position: "absolute",
|
|
42569
|
-
className: "-bottom-1 -left-1 w-4 h-4 bg-card rounded-
|
|
42569
|
+
className: "-bottom-1 -left-1 w-4 h-4 bg-card rounded-pill flex items-center justify-center border border-border",
|
|
42570
42570
|
children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", className: "text-muted-foreground text-xs", children: slotNumber })
|
|
42571
42571
|
}
|
|
42572
42572
|
),
|
|
42573
42573
|
showTooltip && isHovered && itemMachine && !isEmpty && equippedItem && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
42574
42574
|
Box,
|
|
42575
42575
|
{
|
|
42576
|
-
className: "p-3 bg-background border border-border rounded-
|
|
42576
|
+
className: "p-3 bg-background border border-border rounded-container shadow-xl",
|
|
42577
42577
|
style: {
|
|
42578
42578
|
...getTooltipStyle(),
|
|
42579
42579
|
minWidth: 200,
|
|
@@ -42823,12 +42823,12 @@ function SequencerBoard({
|
|
|
42823
42823
|
backgroundPosition: "center"
|
|
42824
42824
|
},
|
|
42825
42825
|
children: [
|
|
42826
|
-
entity.headerImage && !headerError ? /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "w-full h-32 overflow-hidden rounded-
|
|
42826
|
+
entity.headerImage && !headerError ? /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "w-full h-32 overflow-hidden rounded-container", children: /* @__PURE__ */ jsxRuntime.jsx("img", { src: entity.headerImage, alt: "", onError: () => setHeaderError(true), className: "w-full h-full object-cover" }) }) : entity.headerImage && headerError ? /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "w-full h-32 rounded-container bg-gradient-to-br from-muted to-accent opacity-60" }) : null,
|
|
42827
42827
|
/* @__PURE__ */ jsxRuntime.jsxs(VStack, { gap: "xs", children: [
|
|
42828
42828
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "h4", className: "text-foreground", children: entity.title }),
|
|
42829
42829
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body2", className: "text-muted-foreground", children: entity.description })
|
|
42830
42830
|
] }),
|
|
42831
|
-
showHint && /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "p-3 rounded-
|
|
42831
|
+
showHint && /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "p-3 rounded-container bg-accent/10 border border-accent/30", children: /* @__PURE__ */ jsxRuntime.jsxs(HStack, { className: "items-start", gap: "xs", children: [
|
|
42832
42832
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body2", className: "text-accent font-bold shrink-0", children: "\u{1F4A1} " + t("game.hint") + ":" }),
|
|
42833
42833
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body2", className: "text-foreground", children: entity.hint })
|
|
42834
42834
|
] }) }),
|
|
@@ -42866,8 +42866,8 @@ function SequencerBoard({
|
|
|
42866
42866
|
label: t("sequencer.dragActions")
|
|
42867
42867
|
}
|
|
42868
42868
|
),
|
|
42869
|
-
hasFeedback && playState === "idle" && attempts > 0 && /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "p-3 rounded-
|
|
42870
|
-
playState === "success" && /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "p-4 rounded-
|
|
42869
|
+
hasFeedback && playState === "idle" && attempts > 0 && /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "p-3 rounded-container bg-warning/10 border border-warning/30 text-center", children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body2", className: "text-foreground", children: t(encourageKey) }) }),
|
|
42870
|
+
playState === "success" && /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "p-4 rounded-container bg-success/20 border border-success text-center", children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "h5", className: "text-success", children: entity.successMessage || t("sequencer.levelComplete") }) }),
|
|
42871
42871
|
/* @__PURE__ */ jsxRuntime.jsxs(HStack, { gap: "sm", children: [
|
|
42872
42872
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
42873
42873
|
Button,
|
|
@@ -43543,7 +43543,7 @@ function SimulationCanvas({
|
|
|
43543
43543
|
ref: canvasRef,
|
|
43544
43544
|
width,
|
|
43545
43545
|
height,
|
|
43546
|
-
className: "rounded-
|
|
43546
|
+
className: "rounded-container block max-w-full h-auto"
|
|
43547
43547
|
}
|
|
43548
43548
|
) });
|
|
43549
43549
|
}
|
|
@@ -43751,7 +43751,7 @@ function SimulatorBoard({
|
|
|
43751
43751
|
backgroundPosition: "center"
|
|
43752
43752
|
},
|
|
43753
43753
|
children: /* @__PURE__ */ jsxRuntime.jsxs(VStack, { gap: "lg", className: "p-4", children: [
|
|
43754
|
-
entity.headerImage && !headerError ? /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "w-full h-32 overflow-hidden rounded-
|
|
43754
|
+
entity.headerImage && !headerError ? /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "w-full h-32 overflow-hidden rounded-container", children: /* @__PURE__ */ jsxRuntime.jsx("img", { src: entity.headerImage, alt: "", onError: () => setHeaderError(true), className: "w-full h-full object-cover" }) }) : entity.headerImage && headerError ? /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "w-full h-32 rounded-container bg-gradient-to-br from-muted to-accent opacity-60" }) : null,
|
|
43755
43755
|
/* @__PURE__ */ jsxRuntime.jsx(Card, { className: "p-4", children: /* @__PURE__ */ jsxRuntime.jsxs(VStack, { gap: "sm", children: [
|
|
43756
43756
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "h4", weight: "bold", children: entity.title }),
|
|
43757
43757
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", children: entity.description })
|
|
@@ -43802,8 +43802,8 @@ function SimulatorBoard({
|
|
|
43802
43802
|
entity.outputUnit
|
|
43803
43803
|
] }),
|
|
43804
43804
|
submitted && /* @__PURE__ */ jsxRuntime.jsxs(HStack, { gap: "xs", align: "center", children: [
|
|
43805
|
-
/* @__PURE__ */ jsxRuntime.jsx(Icon, { icon: isCorrect ? LucideIcons2.CheckCircle : LucideIcons2.XCircle, size: "sm", className: isCorrect ? "text-
|
|
43806
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", className: isCorrect ? "text-
|
|
43805
|
+
/* @__PURE__ */ jsxRuntime.jsx(Icon, { icon: isCorrect ? LucideIcons2.CheckCircle : LucideIcons2.XCircle, size: "sm", className: isCorrect ? "text-success" : "text-error" }),
|
|
43806
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", className: isCorrect ? "text-success" : "text-error", children: isCorrect ? entity.successMessage ?? t("simulator.correct") : entity.failMessage ?? t("simulator.incorrect") })
|
|
43807
43807
|
] }),
|
|
43808
43808
|
/* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "caption", className: "text-muted-foreground", children: [
|
|
43809
43809
|
t("simulator.target"),
|
|
@@ -43816,7 +43816,7 @@ function SimulatorBoard({
|
|
|
43816
43816
|
")"
|
|
43817
43817
|
] })
|
|
43818
43818
|
] }) }),
|
|
43819
|
-
showHint && entity.hint && /* @__PURE__ */ jsxRuntime.jsx(Card, { className: "p-4 border-l-4 border-l-
|
|
43819
|
+
showHint && entity.hint && /* @__PURE__ */ jsxRuntime.jsx(Card, { className: "p-4 border-l-4 border-l-warning", children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", children: entity.hint }) }),
|
|
43820
43820
|
/* @__PURE__ */ jsxRuntime.jsxs(HStack, { gap: "sm", justify: "center", children: [
|
|
43821
43821
|
!submitted ? /* @__PURE__ */ jsxRuntime.jsxs(Button, { variant: "primary", onClick: handleSubmit, children: [
|
|
43822
43822
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { icon: LucideIcons2.Play, size: "sm" }),
|
|
@@ -44217,7 +44217,7 @@ function StateNode2({
|
|
|
44217
44217
|
position: "absolute",
|
|
44218
44218
|
display: "flex",
|
|
44219
44219
|
className: cn(
|
|
44220
|
-
"items-center justify-center rounded-
|
|
44220
|
+
"items-center justify-center rounded-pill border-3 transition-all cursor-pointer select-none",
|
|
44221
44221
|
"min-w-[80px] h-[80px] px-3",
|
|
44222
44222
|
isCurrent && "bg-primary/20 border-primary shadow-lg shadow-primary/30 scale-110",
|
|
44223
44223
|
isSelected && !isCurrent && "bg-accent/20 border-accent ring-2 ring-accent/50",
|
|
@@ -44530,7 +44530,7 @@ function StateArchitectBoard({
|
|
|
44530
44530
|
backgroundPosition: "center"
|
|
44531
44531
|
},
|
|
44532
44532
|
children: [
|
|
44533
|
-
entity.headerImage && !headerError ? /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "w-full h-32 overflow-hidden rounded-
|
|
44533
|
+
entity.headerImage && !headerError ? /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "w-full h-32 overflow-hidden rounded-container", children: /* @__PURE__ */ jsxRuntime.jsx("img", { src: entity.headerImage, alt: "", onError: () => setHeaderError(true), className: "w-full h-full object-cover" }) }) : entity.headerImage && headerError ? /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "w-full h-32 rounded-container bg-gradient-to-br from-muted to-accent opacity-60" }) : null,
|
|
44534
44534
|
/* @__PURE__ */ jsxRuntime.jsxs(VStack, { gap: "xs", children: [
|
|
44535
44535
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "h4", className: "text-foreground", children: entity.title }),
|
|
44536
44536
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body2", className: "text-muted-foreground", children: entity.description }),
|
|
@@ -44549,7 +44549,7 @@ function StateArchitectBoard({
|
|
|
44549
44549
|
Box,
|
|
44550
44550
|
{
|
|
44551
44551
|
position: "relative",
|
|
44552
|
-
className: "rounded-
|
|
44552
|
+
className: "rounded-container border border-border bg-background overflow-hidden",
|
|
44553
44553
|
style: { width: GRAPH_W, height: GRAPH_H },
|
|
44554
44554
|
children: [
|
|
44555
44555
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -44608,7 +44608,7 @@ function StateArchitectBoard({
|
|
|
44608
44608
|
children: selectedState ? t("stateArchitect.addTransition", { state: selectedState }) : t("stateArchitect.addTransitionPrompt")
|
|
44609
44609
|
}
|
|
44610
44610
|
) }),
|
|
44611
|
-
transitions.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(VStack, { gap: "xs", className: "p-3 rounded-
|
|
44611
|
+
transitions.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(VStack, { gap: "xs", className: "p-3 rounded-container bg-muted/50 border border-border", children: [
|
|
44612
44612
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", className: "text-muted-foreground font-medium", children: t("stateArchitect.transitions", { count: transitions.length }) + ":" }),
|
|
44613
44613
|
transitions.map((t2) => /* @__PURE__ */ jsxRuntime.jsxs(HStack, { className: "items-center text-xs", gap: "xs", children: [
|
|
44614
44614
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", className: "text-foreground", children: t2.from }),
|
|
@@ -44642,7 +44642,7 @@ function StateArchitectBoard({
|
|
|
44642
44642
|
variables
|
|
44643
44643
|
}
|
|
44644
44644
|
),
|
|
44645
|
-
testResults.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(VStack, { className: "p-3 rounded-
|
|
44645
|
+
testResults.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(VStack, { className: "p-3 rounded-container bg-card border border-border", gap: "xs", children: [
|
|
44646
44646
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body2", className: "text-muted-foreground font-medium", children: t("stateArchitect.testResults") + ":" }),
|
|
44647
44647
|
testResults.map((r, i) => /* @__PURE__ */ jsxRuntime.jsxs(HStack, { className: "items-center text-xs", gap: "xs", children: [
|
|
44648
44648
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", className: r.passed ? "text-success" : "text-error", children: r.passed ? "\u2714" : "\u2717" }),
|
|
@@ -44653,10 +44653,10 @@ function StateArchitectBoard({
|
|
|
44653
44653
|
entity.showCodeView !== false && /* @__PURE__ */ jsxRuntime.jsx(CodeView, { data: codeData, label: "View Code" })
|
|
44654
44654
|
] })
|
|
44655
44655
|
] }),
|
|
44656
|
-
playState === "success" && /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "p-4 rounded-
|
|
44656
|
+
playState === "success" && /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "p-4 rounded-container bg-success/20 border border-success text-center", children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "h5", className: "text-success", children: entity.successMessage || t("stateArchitect.allPassed") }) }),
|
|
44657
44657
|
playState === "fail" && /* @__PURE__ */ jsxRuntime.jsxs(VStack, { gap: "sm", children: [
|
|
44658
|
-
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "p-4 rounded-
|
|
44659
|
-
attempts >= 3 && entity.hint && /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "p-3 rounded-
|
|
44658
|
+
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "p-4 rounded-container bg-warning/10 border border-warning/30 text-center", children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body1", className: "text-foreground font-medium", children: t(ENCOURAGEMENT_KEYS3[Math.min(attempts - 1, ENCOURAGEMENT_KEYS3.length - 1)] ?? ENCOURAGEMENT_KEYS3[0]) }) }),
|
|
44659
|
+
attempts >= 3 && entity.hint && /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "p-3 rounded-container bg-accent/10 border border-accent/30", children: /* @__PURE__ */ jsxRuntime.jsxs(HStack, { className: "items-start", gap: "xs", children: [
|
|
44660
44660
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body2", className: "text-accent font-bold shrink-0", children: "\u{1F4A1} " + t("game.hint") + ":" }),
|
|
44661
44661
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body2", className: "text-foreground", children: entity.hint })
|
|
44662
44662
|
] }) })
|
|
@@ -48544,6 +48544,40 @@ function collectEmbeddedTraits(schema) {
|
|
|
48544
48544
|
return out;
|
|
48545
48545
|
}
|
|
48546
48546
|
|
|
48547
|
+
// runtime/orbitalsByTrait.ts
|
|
48548
|
+
function buildOrbitalsByTrait(schema, resolvedPages = []) {
|
|
48549
|
+
const map = {};
|
|
48550
|
+
if (!schema?.orbitals) return map;
|
|
48551
|
+
const pagePathToOrbital = {};
|
|
48552
|
+
for (const orb of schema.orbitals) {
|
|
48553
|
+
for (const traitRef of orb.traits ?? []) {
|
|
48554
|
+
let traitName;
|
|
48555
|
+
if (typeof traitRef === "string") {
|
|
48556
|
+
const parts = traitRef.split(".");
|
|
48557
|
+
traitName = parts[parts.length - 1];
|
|
48558
|
+
} else if (typeof traitRef.ref === "string") {
|
|
48559
|
+
const parts = traitRef.ref.split(".");
|
|
48560
|
+
traitName = traitRef.name ?? parts[parts.length - 1];
|
|
48561
|
+
} else if (typeof traitRef.name === "string") {
|
|
48562
|
+
traitName = traitRef.name;
|
|
48563
|
+
}
|
|
48564
|
+
if (traitName) map[traitName] = orb.name;
|
|
48565
|
+
}
|
|
48566
|
+
for (const pg of orb.pages ?? []) {
|
|
48567
|
+
const path = typeof pg === "string" ? pg : pg?.path;
|
|
48568
|
+
if (path) pagePathToOrbital[path] = orb.name;
|
|
48569
|
+
}
|
|
48570
|
+
}
|
|
48571
|
+
for (const page of resolvedPages) {
|
|
48572
|
+
const orbital = page.path ? pagePathToOrbital[page.path] : void 0;
|
|
48573
|
+
if (!orbital) continue;
|
|
48574
|
+
for (const traitName of page.traitNames) {
|
|
48575
|
+
if (traitName && !(traitName in map)) map[traitName] = orbital;
|
|
48576
|
+
}
|
|
48577
|
+
}
|
|
48578
|
+
return map;
|
|
48579
|
+
}
|
|
48580
|
+
|
|
48547
48581
|
// runtime/OrbPreview.tsx
|
|
48548
48582
|
init_EntitySchemaContext();
|
|
48549
48583
|
|
|
@@ -49339,27 +49373,16 @@ function SchemaRunner({ schema, serverUrl, transport, mockData, pageName, onNavi
|
|
|
49339
49373
|
if (!orbitals) return [];
|
|
49340
49374
|
return orbitals.filter((o) => typeof o.name === "string").map((o) => o.name);
|
|
49341
49375
|
}, [schema]);
|
|
49342
|
-
const orbitalsByTrait = React85.useMemo(
|
|
49343
|
-
|
|
49344
|
-
|
|
49345
|
-
|
|
49346
|
-
|
|
49347
|
-
|
|
49348
|
-
|
|
49349
|
-
|
|
49350
|
-
|
|
49351
|
-
|
|
49352
|
-
} else if ("ref" in traitRef && typeof traitRef.ref === "string") {
|
|
49353
|
-
const parts = traitRef.ref.split(".");
|
|
49354
|
-
traitName = traitRef.name ?? parts[parts.length - 1];
|
|
49355
|
-
} else if ("name" in traitRef && typeof traitRef.name === "string") {
|
|
49356
|
-
traitName = traitRef.name;
|
|
49357
|
-
}
|
|
49358
|
-
if (traitName) map[traitName] = orb.name;
|
|
49359
|
-
}
|
|
49360
|
-
}
|
|
49361
|
-
return map;
|
|
49362
|
-
}, [schema]);
|
|
49376
|
+
const orbitalsByTrait = React85.useMemo(
|
|
49377
|
+
() => buildOrbitalsByTrait(
|
|
49378
|
+
schema,
|
|
49379
|
+
ir ? Array.from(ir.pages.values()).map((p2) => ({
|
|
49380
|
+
path: p2.path,
|
|
49381
|
+
traitNames: p2.traits.map((b) => b.trait.name)
|
|
49382
|
+
})) : []
|
|
49383
|
+
),
|
|
49384
|
+
[schema, ir]
|
|
49385
|
+
);
|
|
49363
49386
|
const traitLinkedEntitiesMap = React85.useMemo(() => {
|
|
49364
49387
|
const map = /* @__PURE__ */ new Map();
|
|
49365
49388
|
if (ir) {
|