@almadar/ui 5.9.5 → 5.9.7
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 +232 -215
- package/dist/avl/index.js +232 -215
- package/dist/components/index.cjs +248 -231
- package/dist/components/index.js +248 -231
- package/dist/components/molecules/game/GameCanvas2D.d.ts +5 -1
- package/dist/providers/index.cjs +232 -215
- package/dist/providers/index.js +232 -215
- package/dist/runtime/index.cjs +232 -215
- package/dist/runtime/index.js +232 -215
- package/package.json +1 -1
package/dist/providers/index.js
CHANGED
|
@@ -6721,7 +6721,7 @@ function HealthBar({
|
|
|
6721
6721
|
"div",
|
|
6722
6722
|
{
|
|
6723
6723
|
className: cn(
|
|
6724
|
-
"relative overflow-hidden rounded-full bg-
|
|
6724
|
+
"relative overflow-hidden rounded-full bg-muted",
|
|
6725
6725
|
sizes.bar,
|
|
6726
6726
|
"w-24",
|
|
6727
6727
|
className
|
|
@@ -6731,7 +6731,7 @@ function HealthBar({
|
|
|
6731
6731
|
{
|
|
6732
6732
|
className: cn(
|
|
6733
6733
|
"absolute inset-y-0 left-0 rounded-full",
|
|
6734
|
-
percentage > 66 ? "bg-
|
|
6734
|
+
percentage > 66 ? "bg-success" : percentage > 33 ? "bg-warning" : "bg-error",
|
|
6735
6735
|
animated && "transition-all duration-300"
|
|
6736
6736
|
),
|
|
6737
6737
|
style: { width: `${percentage}%` }
|
|
@@ -6753,7 +6753,7 @@ var init_HealthBar = __esm({
|
|
|
6753
6753
|
heartIcon = (filled, size) => /* @__PURE__ */ jsx(
|
|
6754
6754
|
"svg",
|
|
6755
6755
|
{
|
|
6756
|
-
className: cn("transition-all duration-200", size, filled ? "text-
|
|
6756
|
+
className: cn("transition-all duration-200", size, filled ? "text-error" : "text-muted-foreground"),
|
|
6757
6757
|
viewBox: "0 0 24 24",
|
|
6758
6758
|
fill: filled ? "currentColor" : "none",
|
|
6759
6759
|
stroke: "currentColor",
|
|
@@ -6817,7 +6817,7 @@ function ScoreDisplay({
|
|
|
6817
6817
|
),
|
|
6818
6818
|
children: [
|
|
6819
6819
|
icon && /* @__PURE__ */ jsx("span", { className: "flex-shrink-0", children: icon }),
|
|
6820
|
-
label && /* @__PURE__ */ jsx("span", { className: "text-
|
|
6820
|
+
label && /* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: label }),
|
|
6821
6821
|
/* @__PURE__ */ jsx("span", { className: "tabular-nums", children: formattedValue })
|
|
6822
6822
|
]
|
|
6823
6823
|
}
|
|
@@ -6930,8 +6930,8 @@ var init_ControlButton = __esm({
|
|
|
6930
6930
|
};
|
|
6931
6931
|
shapeMap = {
|
|
6932
6932
|
circle: "rounded-full",
|
|
6933
|
-
rounded: "rounded-
|
|
6934
|
-
square: "rounded-
|
|
6933
|
+
rounded: "rounded-interactive",
|
|
6934
|
+
square: "rounded-interactive"
|
|
6935
6935
|
};
|
|
6936
6936
|
variantMap = {
|
|
6937
6937
|
primary: "bg-primary text-primary-foreground border-primary hover:bg-primary-hover",
|
|
@@ -7099,12 +7099,12 @@ function TimerDisplay({
|
|
|
7099
7099
|
"div",
|
|
7100
7100
|
{
|
|
7101
7101
|
className: cn(
|
|
7102
|
-
"inline-flex items-center justify-center rounded-
|
|
7103
|
-
"bg-
|
|
7102
|
+
"inline-flex items-center justify-center rounded-container",
|
|
7103
|
+
"bg-card/80 border border-muted font-mono font-bold tabular-nums",
|
|
7104
7104
|
sizeMap4[size],
|
|
7105
|
-
running && "border-
|
|
7106
|
-
isLow && "text-
|
|
7107
|
-
!isLow && "text-
|
|
7105
|
+
running && "border-success/50",
|
|
7106
|
+
isLow && "text-error border-error/50 animate-pulse",
|
|
7107
|
+
!isLow && "text-foreground",
|
|
7108
7108
|
className
|
|
7109
7109
|
),
|
|
7110
7110
|
children: formatTime(seconds, format)
|
|
@@ -7137,17 +7137,17 @@ function ResourceCounter({
|
|
|
7137
7137
|
"div",
|
|
7138
7138
|
{
|
|
7139
7139
|
className: cn(
|
|
7140
|
-
"inline-flex items-center rounded-
|
|
7141
|
-
"bg-
|
|
7140
|
+
"inline-flex items-center rounded-container",
|
|
7141
|
+
"bg-card/80 border border-muted font-medium text-foreground",
|
|
7142
7142
|
sizes.wrapper,
|
|
7143
7143
|
className
|
|
7144
7144
|
),
|
|
7145
7145
|
children: [
|
|
7146
7146
|
icon && /* @__PURE__ */ jsx("span", { className: cn("flex-shrink-0", sizes.icon), children: icon }),
|
|
7147
|
-
/* @__PURE__ */ jsx("span", { className: "text-
|
|
7147
|
+
/* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: label }),
|
|
7148
7148
|
/* @__PURE__ */ jsxs("span", { className: cn("font-bold tabular-nums", color), children: [
|
|
7149
7149
|
value,
|
|
7150
|
-
max != null && /* @__PURE__ */ jsxs("span", { className: "text-
|
|
7150
|
+
max != null && /* @__PURE__ */ jsxs("span", { className: "text-muted-foreground", children: [
|
|
7151
7151
|
"/",
|
|
7152
7152
|
max
|
|
7153
7153
|
] })
|
|
@@ -7188,18 +7188,18 @@ function ItemSlot({
|
|
|
7188
7188
|
disabled: !isClickable,
|
|
7189
7189
|
title: label,
|
|
7190
7190
|
className: cn(
|
|
7191
|
-
"relative flex items-center justify-center rounded-
|
|
7192
|
-
"bg-
|
|
7191
|
+
"relative flex items-center justify-center rounded-interactive border-2",
|
|
7192
|
+
"bg-card/80 transition-all duration-150",
|
|
7193
7193
|
sizeMap6[size],
|
|
7194
|
-
empty ? "border-
|
|
7194
|
+
empty ? "border-border bg-card/50" : rarityBorderMap[rarity],
|
|
7195
7195
|
!empty && rarityGlowMap[rarity],
|
|
7196
|
-
selected && "ring-2 ring-
|
|
7196
|
+
selected && "ring-2 ring-foreground ring-offset-1 ring-offset-background",
|
|
7197
7197
|
isClickable && !empty && "hover:brightness-125 cursor-pointer",
|
|
7198
|
-
isClickable && empty && "hover:border-
|
|
7198
|
+
isClickable && empty && "hover:border-muted cursor-pointer",
|
|
7199
7199
|
!isClickable && "cursor-default",
|
|
7200
7200
|
className
|
|
7201
7201
|
),
|
|
7202
|
-
children: empty ? /* @__PURE__ */ jsx("span", { className: "text-
|
|
7202
|
+
children: empty ? /* @__PURE__ */ jsx("span", { className: "text-muted-foreground text-base", children: "+" }) : /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
7203
7203
|
icon && /* @__PURE__ */ jsx("span", { className: "flex-shrink-0", children: icon }),
|
|
7204
7204
|
quantity != null && quantity > 1 && /* @__PURE__ */ jsx(
|
|
7205
7205
|
"span",
|
|
@@ -7207,7 +7207,7 @@ function ItemSlot({
|
|
|
7207
7207
|
className: cn(
|
|
7208
7208
|
"absolute -bottom-1 -right-1 flex items-center justify-center",
|
|
7209
7209
|
"min-w-[18px] h-[18px] rounded-full px-1",
|
|
7210
|
-
"bg-
|
|
7210
|
+
"bg-surface border border-muted text-xs font-bold text-foreground"
|
|
7211
7211
|
),
|
|
7212
7212
|
children: quantity
|
|
7213
7213
|
}
|
|
@@ -7227,18 +7227,18 @@ var init_ItemSlot = __esm({
|
|
|
7227
7227
|
lg: "w-18 h-18 text-3xl"
|
|
7228
7228
|
};
|
|
7229
7229
|
rarityBorderMap = {
|
|
7230
|
-
common: "border-
|
|
7231
|
-
uncommon: "border-
|
|
7232
|
-
rare: "border-
|
|
7233
|
-
epic: "border-
|
|
7234
|
-
legendary: "border-
|
|
7230
|
+
common: "border-muted",
|
|
7231
|
+
uncommon: "border-success",
|
|
7232
|
+
rare: "border-info",
|
|
7233
|
+
epic: "border-accent",
|
|
7234
|
+
legendary: "border-warning"
|
|
7235
7235
|
};
|
|
7236
7236
|
rarityGlowMap = {
|
|
7237
7237
|
common: "",
|
|
7238
7238
|
uncommon: "",
|
|
7239
|
-
rare: "shadow-
|
|
7240
|
-
epic: "shadow-
|
|
7241
|
-
legendary: "shadow-
|
|
7239
|
+
rare: "shadow-sm",
|
|
7240
|
+
epic: "shadow-lg",
|
|
7241
|
+
legendary: "shadow-lg"
|
|
7242
7242
|
};
|
|
7243
7243
|
ItemSlot.displayName = "ItemSlot";
|
|
7244
7244
|
}
|
|
@@ -7256,8 +7256,8 @@ function TurnIndicator({
|
|
|
7256
7256
|
"div",
|
|
7257
7257
|
{
|
|
7258
7258
|
className: cn(
|
|
7259
|
-
"inline-flex items-center rounded-
|
|
7260
|
-
"bg-
|
|
7259
|
+
"inline-flex items-center rounded-container",
|
|
7260
|
+
"bg-card/80 border border-muted font-medium text-foreground",
|
|
7261
7261
|
sizes.wrapper,
|
|
7262
7262
|
className
|
|
7263
7263
|
),
|
|
@@ -7265,19 +7265,19 @@ function TurnIndicator({
|
|
|
7265
7265
|
/* @__PURE__ */ jsxs("span", { className: "font-bold tabular-nums", children: [
|
|
7266
7266
|
"Turn ",
|
|
7267
7267
|
currentTurn,
|
|
7268
|
-
maxTurns != null && /* @__PURE__ */ jsxs("span", { className: "text-
|
|
7268
|
+
maxTurns != null && /* @__PURE__ */ jsxs("span", { className: "text-muted-foreground", children: [
|
|
7269
7269
|
"/",
|
|
7270
7270
|
maxTurns
|
|
7271
7271
|
] })
|
|
7272
7272
|
] }),
|
|
7273
7273
|
phase && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
7274
|
-
/* @__PURE__ */ jsx("span", { className: "text-
|
|
7275
|
-
/* @__PURE__ */ jsx("span", { className: "text-
|
|
7274
|
+
/* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: "|" }),
|
|
7275
|
+
/* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: phase })
|
|
7276
7276
|
] }),
|
|
7277
7277
|
activeTeam && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
7278
|
-
/* @__PURE__ */ jsx("span", { className: "text-
|
|
7279
|
-
/* @__PURE__ */ jsx("span", { className: cn("rounded-full bg-
|
|
7280
|
-
/* @__PURE__ */ jsx("span", { className: "text-
|
|
7278
|
+
/* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: "|" }),
|
|
7279
|
+
/* @__PURE__ */ jsx("span", { className: cn("rounded-full bg-success/20", sizes.dot) }),
|
|
7280
|
+
/* @__PURE__ */ jsx("span", { className: "text-success", children: activeTeam })
|
|
7281
7281
|
] })
|
|
7282
7282
|
]
|
|
7283
7283
|
}
|
|
@@ -7296,10 +7296,10 @@ var init_TurnIndicator = __esm({
|
|
|
7296
7296
|
}
|
|
7297
7297
|
});
|
|
7298
7298
|
function getComboIntensity(combo) {
|
|
7299
|
-
if (combo >= 10) return "text-
|
|
7300
|
-
if (combo >= 7) return "text-
|
|
7301
|
-
if (combo >= 4) return "text-
|
|
7302
|
-
return "text-
|
|
7299
|
+
if (combo >= 10) return "text-error animate-pulse";
|
|
7300
|
+
if (combo >= 7) return "text-warning";
|
|
7301
|
+
if (combo >= 4) return "text-warning";
|
|
7302
|
+
return "text-foreground";
|
|
7303
7303
|
}
|
|
7304
7304
|
function getComboScale(combo) {
|
|
7305
7305
|
if (combo >= 10) return "scale-110";
|
|
@@ -7320,19 +7320,19 @@ function ComboCounter({
|
|
|
7320
7320
|
{
|
|
7321
7321
|
className: cn(
|
|
7322
7322
|
"inline-flex flex-col items-center justify-center",
|
|
7323
|
-
"rounded-
|
|
7323
|
+
"rounded-container bg-card/80 border border-muted px-3 py-1.5",
|
|
7324
7324
|
"transition-transform duration-200",
|
|
7325
7325
|
getComboScale(combo),
|
|
7326
7326
|
className
|
|
7327
7327
|
),
|
|
7328
7328
|
children: [
|
|
7329
7329
|
/* @__PURE__ */ jsx("span", { className: cn("font-black tabular-nums leading-none", sizes.combo, getComboIntensity(combo)), children: combo }),
|
|
7330
|
-
/* @__PURE__ */ jsx("span", { className: cn("font-bold uppercase tracking-wider text-
|
|
7331
|
-
multiplier != null && multiplier > 1 && /* @__PURE__ */ jsxs("span", { className: cn("font-bold text-
|
|
7330
|
+
/* @__PURE__ */ jsx("span", { className: cn("font-bold uppercase tracking-wider text-muted-foreground", sizes.label), children: "combo" }),
|
|
7331
|
+
multiplier != null && multiplier > 1 && /* @__PURE__ */ jsxs("span", { className: cn("font-bold text-warning tabular-nums", sizes.multiplier), children: [
|
|
7332
7332
|
"x",
|
|
7333
7333
|
multiplier.toFixed(1)
|
|
7334
7334
|
] }),
|
|
7335
|
-
streak != null && streak > 0 && /* @__PURE__ */ jsxs("span", { className: cn("text-
|
|
7335
|
+
streak != null && streak > 0 && /* @__PURE__ */ jsxs("span", { className: cn("text-muted-foreground tabular-nums", sizes.label), children: [
|
|
7336
7336
|
streak,
|
|
7337
7337
|
" streak"
|
|
7338
7338
|
] })
|
|
@@ -7368,8 +7368,8 @@ function XPBar({
|
|
|
7368
7368
|
"span",
|
|
7369
7369
|
{
|
|
7370
7370
|
className: cn(
|
|
7371
|
-
"flex-shrink-0 rounded-
|
|
7372
|
-
"bg-
|
|
7371
|
+
"flex-shrink-0 rounded-interactive font-bold",
|
|
7372
|
+
"bg-accent text-foreground border border-accent",
|
|
7373
7373
|
sizes.badge
|
|
7374
7374
|
),
|
|
7375
7375
|
children: [
|
|
@@ -7383,7 +7383,7 @@ function XPBar({
|
|
|
7383
7383
|
"div",
|
|
7384
7384
|
{
|
|
7385
7385
|
className: cn(
|
|
7386
|
-
"relative w-full overflow-hidden rounded-full bg-
|
|
7386
|
+
"relative w-full overflow-hidden rounded-full bg-muted border border-muted",
|
|
7387
7387
|
sizes.bar
|
|
7388
7388
|
),
|
|
7389
7389
|
children: /* @__PURE__ */ jsx(
|
|
@@ -7391,7 +7391,7 @@ function XPBar({
|
|
|
7391
7391
|
{
|
|
7392
7392
|
className: cn(
|
|
7393
7393
|
"absolute inset-y-0 left-0 rounded-full",
|
|
7394
|
-
"bg-gradient-to-r from-
|
|
7394
|
+
"bg-gradient-to-r from-accent to-info",
|
|
7395
7395
|
animated && "transition-all duration-500 ease-out"
|
|
7396
7396
|
),
|
|
7397
7397
|
style: { width: `${percentage}%` }
|
|
@@ -7399,7 +7399,7 @@ function XPBar({
|
|
|
7399
7399
|
)
|
|
7400
7400
|
}
|
|
7401
7401
|
),
|
|
7402
|
-
showLabel && /* @__PURE__ */ jsxs("span", { className: cn("text-
|
|
7402
|
+
showLabel && /* @__PURE__ */ jsxs("span", { className: cn("text-muted-foreground tabular-nums", sizes.text), children: [
|
|
7403
7403
|
current,
|
|
7404
7404
|
" / ",
|
|
7405
7405
|
max,
|
|
@@ -7435,7 +7435,7 @@ function WaypointMarker({
|
|
|
7435
7435
|
"div",
|
|
7436
7436
|
{
|
|
7437
7437
|
className: cn(
|
|
7438
|
-
"absolute rounded-full border-2 border-
|
|
7438
|
+
"absolute rounded-full border-2 border-info animate-ping opacity-50",
|
|
7439
7439
|
sizes.ring
|
|
7440
7440
|
)
|
|
7441
7441
|
}
|
|
@@ -7444,7 +7444,7 @@ function WaypointMarker({
|
|
|
7444
7444
|
"div",
|
|
7445
7445
|
{
|
|
7446
7446
|
className: cn(
|
|
7447
|
-
"absolute rounded-full border-2 border-
|
|
7447
|
+
"absolute rounded-full border-2 border-info",
|
|
7448
7448
|
sizes.ring
|
|
7449
7449
|
)
|
|
7450
7450
|
}
|
|
@@ -7455,9 +7455,9 @@ function WaypointMarker({
|
|
|
7455
7455
|
className: cn(
|
|
7456
7456
|
"relative flex items-center justify-center rounded-full transition-all duration-200",
|
|
7457
7457
|
sizes.dot,
|
|
7458
|
-
completed && "bg-
|
|
7459
|
-
active && !completed && "bg-
|
|
7460
|
-
!active && !completed && "bg-
|
|
7458
|
+
completed && "bg-success text-foreground",
|
|
7459
|
+
active && !completed && "bg-info text-foreground",
|
|
7460
|
+
!active && !completed && "bg-muted"
|
|
7461
7461
|
),
|
|
7462
7462
|
children: completed ? checkIcon : icon
|
|
7463
7463
|
}
|
|
@@ -7469,7 +7469,7 @@ function WaypointMarker({
|
|
|
7469
7469
|
className: cn(
|
|
7470
7470
|
"text-center whitespace-nowrap",
|
|
7471
7471
|
sizes.label,
|
|
7472
|
-
completed ? "text-
|
|
7472
|
+
completed ? "text-success" : active ? "text-info" : "text-muted-foreground"
|
|
7473
7473
|
),
|
|
7474
7474
|
children: label
|
|
7475
7475
|
}
|
|
@@ -7510,7 +7510,7 @@ function StatusEffect({
|
|
|
7510
7510
|
"div",
|
|
7511
7511
|
{
|
|
7512
7512
|
className: cn(
|
|
7513
|
-
"relative flex items-center justify-center rounded border-2",
|
|
7513
|
+
"relative flex items-center justify-center rounded-interactive border-2",
|
|
7514
7514
|
sizes.container,
|
|
7515
7515
|
variantStyles7[variant]
|
|
7516
7516
|
),
|
|
@@ -7521,7 +7521,7 @@ function StatusEffect({
|
|
|
7521
7521
|
"span",
|
|
7522
7522
|
{
|
|
7523
7523
|
className: cn(
|
|
7524
|
-
"absolute bottom-0 left-0 right-0 text-center font-mono font-bold text-
|
|
7524
|
+
"absolute bottom-0 left-0 right-0 text-center font-mono font-bold text-foreground bg-background/60 leading-tight",
|
|
7525
7525
|
sizes.timer
|
|
7526
7526
|
),
|
|
7527
7527
|
children: formatDuration(duration)
|
|
@@ -7534,7 +7534,7 @@ function StatusEffect({
|
|
|
7534
7534
|
"span",
|
|
7535
7535
|
{
|
|
7536
7536
|
className: cn(
|
|
7537
|
-
"absolute flex items-center justify-center rounded-full bg-
|
|
7537
|
+
"absolute flex items-center justify-center rounded-full bg-card text-foreground font-bold leading-none",
|
|
7538
7538
|
sizes.badge
|
|
7539
7539
|
),
|
|
7540
7540
|
children: stacks
|
|
@@ -7553,9 +7553,9 @@ var init_StatusEffect = __esm({
|
|
|
7553
7553
|
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" }
|
|
7554
7554
|
};
|
|
7555
7555
|
variantStyles7 = {
|
|
7556
|
-
buff: "border-
|
|
7557
|
-
debuff: "border-
|
|
7558
|
-
neutral: "border-
|
|
7556
|
+
buff: "border-success bg-success/20",
|
|
7557
|
+
debuff: "border-error bg-error/20",
|
|
7558
|
+
neutral: "border-muted bg-muted/20"
|
|
7559
7559
|
};
|
|
7560
7560
|
StatusEffect.displayName = "StatusEffect";
|
|
7561
7561
|
}
|
|
@@ -7594,10 +7594,10 @@ var init_DamageNumber = __esm({
|
|
|
7594
7594
|
lg: "text-2xl"
|
|
7595
7595
|
};
|
|
7596
7596
|
typeStyles = {
|
|
7597
|
-
damage: "text-
|
|
7598
|
-
heal: "text-
|
|
7599
|
-
crit: "text-
|
|
7600
|
-
miss: "text-
|
|
7597
|
+
damage: "text-error font-bold",
|
|
7598
|
+
heal: "text-success font-bold",
|
|
7599
|
+
crit: "text-warning font-extrabold",
|
|
7600
|
+
miss: "text-muted-foreground italic"
|
|
7601
7601
|
};
|
|
7602
7602
|
floatKeyframes = `
|
|
7603
7603
|
@keyframes damageFloat {
|
|
@@ -7620,12 +7620,12 @@ function DialogueBubble({
|
|
|
7620
7620
|
"div",
|
|
7621
7621
|
{
|
|
7622
7622
|
className: cn(
|
|
7623
|
-
"flex items-start gap-3 rounded-
|
|
7623
|
+
"flex items-start gap-3 rounded-container bg-background/80 backdrop-blur-sm px-4 py-3 border border-border/10",
|
|
7624
7624
|
position === "top" ? "rounded-bl-none" : "rounded-tl-none",
|
|
7625
7625
|
className
|
|
7626
7626
|
),
|
|
7627
7627
|
children: [
|
|
7628
|
-
portrait && /* @__PURE__ */ jsx("div", { className: "flex-shrink-0 w-12 h-12 rounded-full overflow-hidden border-2 border-
|
|
7628
|
+
portrait && /* @__PURE__ */ jsx("div", { className: "flex-shrink-0 w-12 h-12 rounded-full overflow-hidden border-2 border-warning/60", children: /* @__PURE__ */ jsx(
|
|
7629
7629
|
"img",
|
|
7630
7630
|
{
|
|
7631
7631
|
src: portrait,
|
|
@@ -7634,8 +7634,8 @@ function DialogueBubble({
|
|
|
7634
7634
|
}
|
|
7635
7635
|
) }),
|
|
7636
7636
|
/* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-1 min-w-0", children: [
|
|
7637
|
-
speaker && /* @__PURE__ */ jsx("span", { className: "text-sm font-bold text-
|
|
7638
|
-
/* @__PURE__ */ jsx("span", { className: "text-sm text-
|
|
7637
|
+
speaker && /* @__PURE__ */ jsx("span", { className: "text-sm font-bold text-warning", children: speaker }),
|
|
7638
|
+
/* @__PURE__ */ jsx("span", { className: "text-sm text-foreground leading-relaxed", children: text })
|
|
7639
7639
|
] })
|
|
7640
7640
|
]
|
|
7641
7641
|
}
|
|
@@ -7662,7 +7662,7 @@ function ChoiceButton({
|
|
|
7662
7662
|
disabled,
|
|
7663
7663
|
onClick,
|
|
7664
7664
|
className: cn(
|
|
7665
|
-
"w-full text-left px-4 py-2.5 rounded-
|
|
7665
|
+
"w-full text-left px-4 py-2.5 rounded-interactive border transition-all duration-150",
|
|
7666
7666
|
"flex items-center gap-2",
|
|
7667
7667
|
selected ? "bg-accent/15 border-accent text-foreground" : "bg-muted/40 border-border text-foreground hover:bg-muted hover:border-border",
|
|
7668
7668
|
disabled && "opacity-40 cursor-not-allowed hover:bg-muted/40 hover:border-border",
|
|
@@ -7715,7 +7715,7 @@ function ActionButton({
|
|
|
7715
7715
|
disabled: isDisabled,
|
|
7716
7716
|
onClick,
|
|
7717
7717
|
className: cn(
|
|
7718
|
-
"relative inline-flex items-center gap-1.5 rounded-
|
|
7718
|
+
"relative inline-flex items-center gap-1.5 rounded-interactive border font-medium overflow-hidden transition-colors duration-150",
|
|
7719
7719
|
sizes.button,
|
|
7720
7720
|
variantStyles8[variant],
|
|
7721
7721
|
isDisabled && "opacity-60 cursor-not-allowed",
|
|
@@ -7758,9 +7758,9 @@ var init_ActionButton = __esm({
|
|
|
7758
7758
|
init_cn();
|
|
7759
7759
|
init_Icon();
|
|
7760
7760
|
sizeMap13 = {
|
|
7761
|
-
sm: { button: "px-3
|
|
7762
|
-
md: { button: "px-4
|
|
7763
|
-
lg: { button: "
|
|
7761
|
+
sm: { button: "h-button-sm px-3 text-xs", hotkey: "text-[9px] px-1", icon: "text-xs" },
|
|
7762
|
+
md: { button: "h-button-md px-4 text-sm", hotkey: "text-xs px-1.5", icon: "text-sm" },
|
|
7763
|
+
lg: { button: "h-button-lg px-5 text-base", hotkey: "text-xs px-2", icon: "text-base" }
|
|
7764
7764
|
};
|
|
7765
7765
|
variantStyles8 = {
|
|
7766
7766
|
primary: "bg-primary text-primary-foreground hover:bg-primary-hover border-primary",
|
|
@@ -7840,7 +7840,7 @@ function MiniMap({
|
|
|
7840
7840
|
"div",
|
|
7841
7841
|
{
|
|
7842
7842
|
className: cn(
|
|
7843
|
-
"relative inline-block border border-
|
|
7843
|
+
"relative inline-block border border-border/20 rounded-container",
|
|
7844
7844
|
className
|
|
7845
7845
|
),
|
|
7846
7846
|
children: /* @__PURE__ */ jsx(
|
|
@@ -10912,7 +10912,7 @@ function ActionTile({
|
|
|
10912
10912
|
{
|
|
10913
10913
|
display: "flex",
|
|
10914
10914
|
className: cn(
|
|
10915
|
-
"flex-col items-center gap-1 rounded-
|
|
10915
|
+
"flex-col items-center gap-1 rounded-container border-2 transition-all select-none",
|
|
10916
10916
|
config.px,
|
|
10917
10917
|
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",
|
|
10918
10918
|
className
|
|
@@ -12212,12 +12212,12 @@ function IsometricCanvas({
|
|
|
12212
12212
|
return /* @__PURE__ */ jsx(
|
|
12213
12213
|
Box,
|
|
12214
12214
|
{
|
|
12215
|
-
className: cn("relative w-full overflow-hidden rounded-
|
|
12215
|
+
className: cn("relative w-full overflow-hidden rounded-container", className),
|
|
12216
12216
|
style: { height: viewportSize.height },
|
|
12217
12217
|
"data-testid": "game-canvas-empty",
|
|
12218
|
-
children: /* @__PURE__ */ jsx(Box, { className: "flex items-center justify-center h-full bg-[var(--color-card)] rounded-
|
|
12218
|
+
children: /* @__PURE__ */ jsx(Box, { className: "flex items-center justify-center h-full bg-[var(--color-card)] rounded-container", children: /* @__PURE__ */ jsxs(Stack, { direction: "vertical", gap: "md", align: "center", children: [
|
|
12219
12219
|
/* @__PURE__ */ jsx(Icon, { name: "map", size: "xl" }),
|
|
12220
|
-
/* @__PURE__ */ jsx(Typography, { variant: "body", className: "text-
|
|
12220
|
+
/* @__PURE__ */ jsx(Typography, { variant: "body", className: "text-muted-foreground", children: t("canvas.emptyMessage") || "No map data loaded" })
|
|
12221
12221
|
] }) })
|
|
12222
12222
|
}
|
|
12223
12223
|
);
|
|
@@ -12615,19 +12615,19 @@ function BattleBoard({
|
|
|
12615
12615
|
}
|
|
12616
12616
|
)
|
|
12617
12617
|
] }),
|
|
12618
|
-
gameResult && (gameOverOverlay ? gameOverOverlay(ctx) : /* @__PURE__ */ jsx(Box, { className: "absolute inset-0 z-50 flex items-center justify-center bg-
|
|
12618
|
+
gameResult && (gameOverOverlay ? gameOverOverlay(ctx) : /* @__PURE__ */ jsx(Box, { className: "absolute inset-0 z-50 flex items-center justify-center bg-background/70 backdrop-blur-sm rounded-container", children: /* @__PURE__ */ jsxs(VStack, { className: "text-center p-8", gap: "lg", children: [
|
|
12619
12619
|
/* @__PURE__ */ jsx(
|
|
12620
12620
|
Typography,
|
|
12621
12621
|
{
|
|
12622
12622
|
variant: "h2",
|
|
12623
12623
|
className: cn(
|
|
12624
12624
|
"text-4xl font-black tracking-widest uppercase",
|
|
12625
|
-
gameResult === "victory" ? "text-
|
|
12625
|
+
gameResult === "victory" ? "text-warning" : "text-error"
|
|
12626
12626
|
),
|
|
12627
12627
|
children: gameResult === "victory" ? t("battle.victory") : t("battle.defeat")
|
|
12628
12628
|
}
|
|
12629
12629
|
),
|
|
12630
|
-
/* @__PURE__ */ jsxs(Typography, { variant: "body1", className: "text-
|
|
12630
|
+
/* @__PURE__ */ jsxs(Typography, { variant: "body1", className: "text-muted-foreground", children: [
|
|
12631
12631
|
t("battle.turnsPlayed"),
|
|
12632
12632
|
": ",
|
|
12633
12633
|
currentTurn
|
|
@@ -17504,7 +17504,7 @@ function BuilderBoard({
|
|
|
17504
17504
|
backgroundPosition: "center"
|
|
17505
17505
|
},
|
|
17506
17506
|
children: /* @__PURE__ */ jsxs(VStack, { gap: "lg", className: "p-4", children: [
|
|
17507
|
-
entity.headerImage && !headerError ? /* @__PURE__ */ jsx(Box, { className: "w-full h-32 overflow-hidden rounded-
|
|
17507
|
+
entity.headerImage && !headerError ? /* @__PURE__ */ jsx(Box, { className: "w-full h-32 overflow-hidden rounded-container", children: /* @__PURE__ */ jsx("img", { src: entity.headerImage, alt: "", onError: () => setHeaderError(true), className: "w-full h-full object-cover" }) }) : entity.headerImage && headerError ? /* @__PURE__ */ jsx(Box, { className: "w-full h-32 rounded-container bg-gradient-to-br from-muted to-accent opacity-60" }) : null,
|
|
17508
17508
|
/* @__PURE__ */ jsx(Card, { className: "p-4", children: /* @__PURE__ */ jsxs(VStack, { gap: "sm", children: [
|
|
17509
17509
|
/* @__PURE__ */ jsx(Typography, { variant: "h4", weight: "bold", children: entity.title }),
|
|
17510
17510
|
/* @__PURE__ */ jsx(Typography, { variant: "body", children: entity.description })
|
|
@@ -17542,7 +17542,7 @@ function BuilderBoard({
|
|
|
17542
17542
|
{
|
|
17543
17543
|
gap: "sm",
|
|
17544
17544
|
align: "center",
|
|
17545
|
-
className: `p-3 border-2 rounded ${result ? result.correct ? "border-
|
|
17545
|
+
className: `p-3 border-2 rounded ${result ? result.correct ? "border-success" : "border-error" : selectedComponent ? "border-dashed border-foreground cursor-pointer" : "border-border"}`,
|
|
17546
17546
|
onClick: () => handlePlaceComponent(slot.id),
|
|
17547
17547
|
children: [
|
|
17548
17548
|
/* @__PURE__ */ jsxs(VStack, { gap: "none", className: "flex-1", children: [
|
|
@@ -17557,7 +17557,7 @@ function BuilderBoard({
|
|
|
17557
17557
|
] }) : null,
|
|
17558
17558
|
placedComp.label
|
|
17559
17559
|
] }),
|
|
17560
|
-
result && /* @__PURE__ */ jsx(Icon, { icon: result.correct ? CheckCircle : XCircle, size: "sm", className: result.correct ? "text-
|
|
17560
|
+
result && /* @__PURE__ */ jsx(Icon, { icon: result.correct ? CheckCircle : XCircle, size: "sm", className: result.correct ? "text-success" : "text-error" })
|
|
17561
17561
|
] }) : /* @__PURE__ */ jsx(Typography, { variant: "caption", className: "text-muted-foreground", children: t("builder.empty") })
|
|
17562
17562
|
]
|
|
17563
17563
|
},
|
|
@@ -17566,10 +17566,10 @@ function BuilderBoard({
|
|
|
17566
17566
|
}) })
|
|
17567
17567
|
] }) }),
|
|
17568
17568
|
submitted && /* @__PURE__ */ jsx(Card, { className: "p-4", children: /* @__PURE__ */ jsxs(VStack, { gap: "sm", align: "center", children: [
|
|
17569
|
-
/* @__PURE__ */ jsx(Icon, { icon: allCorrect ? CheckCircle : XCircle, size: "lg", className: allCorrect ? "text-
|
|
17569
|
+
/* @__PURE__ */ jsx(Icon, { icon: allCorrect ? CheckCircle : XCircle, size: "lg", className: allCorrect ? "text-success" : "text-error" }),
|
|
17570
17570
|
/* @__PURE__ */ jsx(Typography, { variant: "body", weight: "bold", children: allCorrect ? entity.successMessage ?? t("builder.success") : entity.failMessage ?? t("builder.incorrect") })
|
|
17571
17571
|
] }) }),
|
|
17572
|
-
showHint && entity.hint && /* @__PURE__ */ jsx(Card, { className: "p-4 border-l-4 border-l-
|
|
17572
|
+
showHint && entity.hint && /* @__PURE__ */ jsx(Card, { className: "p-4 border-l-4 border-l-warning", children: /* @__PURE__ */ jsx(Typography, { variant: "body", children: entity.hint }) }),
|
|
17573
17573
|
/* @__PURE__ */ jsxs(HStack, { gap: "sm", justify: "center", children: [
|
|
17574
17574
|
!submitted ? /* @__PURE__ */ jsxs(Button, { variant: "primary", onClick: handleSubmit, disabled: !allPlaced, children: [
|
|
17575
17575
|
/* @__PURE__ */ jsx(Icon, { icon: Wrench, size: "sm" }),
|
|
@@ -19191,7 +19191,7 @@ function CanvasEffectEngine({
|
|
|
19191
19191
|
flash && /* @__PURE__ */ jsx(
|
|
19192
19192
|
Box,
|
|
19193
19193
|
{
|
|
19194
|
-
className: "absolute inset-0 z-20 pointer-events-none rounded-
|
|
19194
|
+
className: "absolute inset-0 z-20 pointer-events-none rounded-container",
|
|
19195
19195
|
style: { backgroundColor: flash.color, opacity: flash.alpha }
|
|
19196
19196
|
}
|
|
19197
19197
|
),
|
|
@@ -19259,7 +19259,7 @@ function EmojiEffect({
|
|
|
19259
19259
|
/* @__PURE__ */ jsx(
|
|
19260
19260
|
Box,
|
|
19261
19261
|
{
|
|
19262
|
-
className: "absolute rounded-
|
|
19262
|
+
className: "absolute rounded-pill animate-ping",
|
|
19263
19263
|
style: {
|
|
19264
19264
|
width: 48 * intensity,
|
|
19265
19265
|
height: 48 * intensity,
|
|
@@ -21076,7 +21076,7 @@ function ClassifierBoard({
|
|
|
21076
21076
|
backgroundPosition: "center"
|
|
21077
21077
|
},
|
|
21078
21078
|
children: /* @__PURE__ */ jsxs(VStack, { gap: "lg", className: "p-4", children: [
|
|
21079
|
-
entity.headerImage && !headerError ? /* @__PURE__ */ jsx(Box, { className: "w-full h-32 overflow-hidden rounded-
|
|
21079
|
+
entity.headerImage && !headerError ? /* @__PURE__ */ jsx(Box, { className: "w-full h-32 overflow-hidden rounded-container", children: /* @__PURE__ */ jsx("img", { src: entity.headerImage, alt: "", onError: () => setHeaderError(true), className: "w-full h-full object-cover" }) }) : entity.headerImage && headerError ? /* @__PURE__ */ jsx(Box, { className: "w-full h-32 rounded-container bg-gradient-to-br from-muted to-accent opacity-60" }) : null,
|
|
21080
21080
|
/* @__PURE__ */ jsx(Card, { className: "p-4", children: /* @__PURE__ */ jsxs(VStack, { gap: "sm", children: [
|
|
21081
21081
|
/* @__PURE__ */ jsx(Typography, { variant: "h4", weight: "bold", children: entity.title }),
|
|
21082
21082
|
/* @__PURE__ */ jsx(Typography, { variant: "body", children: entity.description })
|
|
@@ -21091,7 +21091,7 @@ function ClassifierBoard({
|
|
|
21091
21091
|
/* @__PURE__ */ jsx(VStack, { gap: "md", children: categories.map((cat) => {
|
|
21092
21092
|
const catItems = items.filter((item) => assignments[item.id] === cat.id);
|
|
21093
21093
|
return /* @__PURE__ */ jsx(Card, { className: "p-4", children: /* @__PURE__ */ jsxs(VStack, { gap: "sm", children: [
|
|
21094
|
-
cat.imageUrl && /* @__PURE__ */ jsx(Box, { className: "w-full h-16 overflow-hidden rounded-
|
|
21094
|
+
cat.imageUrl && /* @__PURE__ */ jsx(Box, { className: "w-full h-16 overflow-hidden rounded-container", children: /* @__PURE__ */ jsx("img", { src: cat.imageUrl, alt: "", className: "w-full h-full object-cover" }) }),
|
|
21095
21095
|
/* @__PURE__ */ jsxs(HStack, { justify: "between", align: "center", children: [
|
|
21096
21096
|
/* @__PURE__ */ jsx(Typography, { variant: "body", weight: "bold", children: cat.label }),
|
|
21097
21097
|
/* @__PURE__ */ jsx(Badge, { size: "sm", children: catItems.length })
|
|
@@ -21102,12 +21102,12 @@ function ClassifierBoard({
|
|
|
21102
21102
|
Badge,
|
|
21103
21103
|
{
|
|
21104
21104
|
size: "sm",
|
|
21105
|
-
className: `cursor-pointer ${result ? result.correct ? "border-
|
|
21105
|
+
className: `cursor-pointer ${result ? result.correct ? "border-success bg-success/10" : "border-error bg-error/10" : ""}`,
|
|
21106
21106
|
onClick: () => handleUnassign(item.id),
|
|
21107
21107
|
children: [
|
|
21108
21108
|
item.iconUrl && /* @__PURE__ */ jsx("img", { src: item.iconUrl, alt: "", className: "w-3 h-3 object-contain inline-block" }),
|
|
21109
21109
|
item.label,
|
|
21110
|
-
result && /* @__PURE__ */ jsx(Icon, { icon: result.correct ? CheckCircle : XCircle, size: "xs", className: result.correct ? "text-
|
|
21110
|
+
result && /* @__PURE__ */ jsx(Icon, { icon: result.correct ? CheckCircle : XCircle, size: "xs", className: result.correct ? "text-success" : "text-error" })
|
|
21111
21111
|
]
|
|
21112
21112
|
},
|
|
21113
21113
|
item.id
|
|
@@ -21130,11 +21130,11 @@ function ClassifierBoard({
|
|
|
21130
21130
|
] }) }, cat.id);
|
|
21131
21131
|
}) }),
|
|
21132
21132
|
submitted && /* @__PURE__ */ jsx(Card, { className: "p-4", children: /* @__PURE__ */ jsxs(VStack, { gap: "sm", align: "center", children: [
|
|
21133
|
-
/* @__PURE__ */ jsx(Icon, { icon: allCorrect ? CheckCircle : XCircle, size: "lg", className: allCorrect ? "text-
|
|
21133
|
+
/* @__PURE__ */ jsx(Icon, { icon: allCorrect ? CheckCircle : XCircle, size: "lg", className: allCorrect ? "text-success" : "text-error" }),
|
|
21134
21134
|
/* @__PURE__ */ jsx(Typography, { variant: "body", weight: "bold", children: allCorrect ? entity.successMessage ?? t("classifier.allCorrect") : `${correctCount}/${items.length} ${t("classifier.correct")}` }),
|
|
21135
21135
|
!allCorrect && entity.failMessage && /* @__PURE__ */ jsx(Typography, { variant: "body", className: "text-muted-foreground", children: entity.failMessage })
|
|
21136
21136
|
] }) }),
|
|
21137
|
-
showHint && entity.hint && /* @__PURE__ */ jsx(Card, { className: "p-4 border-l-4 border-l-
|
|
21137
|
+
showHint && entity.hint && /* @__PURE__ */ jsx(Card, { className: "p-4 border-l-4 border-l-warning", children: /* @__PURE__ */ jsx(Typography, { variant: "body", children: entity.hint }) }),
|
|
21138
21138
|
/* @__PURE__ */ jsxs(HStack, { gap: "sm", justify: "center", children: [
|
|
21139
21139
|
!submitted ? /* @__PURE__ */ jsxs(Button, { variant: "primary", onClick: handleSubmit, disabled: !allAssigned, children: [
|
|
21140
21140
|
/* @__PURE__ */ jsx(Icon, { icon: Send, size: "sm" }),
|
|
@@ -22182,7 +22182,7 @@ function CraftingRecipe({
|
|
|
22182
22182
|
Box,
|
|
22183
22183
|
{
|
|
22184
22184
|
className: cn(
|
|
22185
|
-
"flex flex-wrap items-center gap-3 rounded-
|
|
22185
|
+
"flex flex-wrap items-center gap-3 rounded-container bg-muted/50 border border-border/50 p-3",
|
|
22186
22186
|
className
|
|
22187
22187
|
),
|
|
22188
22188
|
children: [
|
|
@@ -22199,10 +22199,10 @@ function CraftingRecipe({
|
|
|
22199
22199
|
className: cn(!hasSufficient && "opacity-50")
|
|
22200
22200
|
}
|
|
22201
22201
|
) }),
|
|
22202
|
-
index < inputs.length - 1 && /* @__PURE__ */ jsx(Icon, { name: "plus", size: "sm", className: "text-
|
|
22202
|
+
index < inputs.length - 1 && /* @__PURE__ */ jsx(Icon, { name: "plus", size: "sm", className: "text-muted-foreground" })
|
|
22203
22203
|
] }, index);
|
|
22204
22204
|
}) }),
|
|
22205
|
-
/* @__PURE__ */ jsx(Icon, { name: "arrow-right", size: "md", className: "text-
|
|
22205
|
+
/* @__PURE__ */ jsx(Icon, { name: "arrow-right", size: "md", className: "text-muted-foreground" }),
|
|
22206
22206
|
/* @__PURE__ */ jsx(
|
|
22207
22207
|
ItemSlot,
|
|
22208
22208
|
{
|
|
@@ -22290,7 +22290,7 @@ function DPad({
|
|
|
22290
22290
|
createButton("up"),
|
|
22291
22291
|
/* @__PURE__ */ jsx("div", {}),
|
|
22292
22292
|
createButton("left"),
|
|
22293
|
-
/* @__PURE__ */ jsx("div", { className: "flex items-center justify-center", children: /* @__PURE__ */ jsx("div", { className: "w-6 h-6 rounded-
|
|
22293
|
+
/* @__PURE__ */ jsx("div", { className: "flex items-center justify-center", children: /* @__PURE__ */ jsx("div", { className: "w-6 h-6 rounded-interactive bg-muted border-2 border-muted-foreground" }) }),
|
|
22294
22294
|
createButton("right"),
|
|
22295
22295
|
/* @__PURE__ */ jsx("div", {}),
|
|
22296
22296
|
createButton("down"),
|
|
@@ -26475,7 +26475,7 @@ function StatBadge({
|
|
|
26475
26475
|
"div",
|
|
26476
26476
|
{
|
|
26477
26477
|
className: cn(
|
|
26478
|
-
"inline-flex items-center gap-2 rounded-
|
|
26478
|
+
"inline-flex items-center gap-2 rounded-container border backdrop-blur-sm",
|
|
26479
26479
|
sizeMap17[size] ?? sizeMap17.md,
|
|
26480
26480
|
variantMap2[variant] ?? variantMap2.default,
|
|
26481
26481
|
className
|
|
@@ -26621,10 +26621,10 @@ function QuestTracker({
|
|
|
26621
26621
|
Box,
|
|
26622
26622
|
{
|
|
26623
26623
|
className: cn(
|
|
26624
|
-
"flex items-start gap-3 rounded-
|
|
26625
|
-
isActive && !isCompleted && "bg-
|
|
26626
|
-
isCompleted && "bg-
|
|
26627
|
-
!isActive && !isCompleted && "bg-
|
|
26624
|
+
"flex items-start gap-3 rounded-container px-3 py-2 transition-colors",
|
|
26625
|
+
isActive && !isCompleted && "bg-info/20 border border-info/50",
|
|
26626
|
+
isCompleted && "bg-success/10 border border-success/30 opacity-70",
|
|
26627
|
+
!isActive && !isCompleted && "bg-muted/30 border border-border/30"
|
|
26628
26628
|
),
|
|
26629
26629
|
children: [
|
|
26630
26630
|
/* @__PURE__ */ jsx(Box, { className: "flex-shrink-0 pt-0.5", children: /* @__PURE__ */ jsx(
|
|
@@ -26642,9 +26642,9 @@ function QuestTracker({
|
|
|
26642
26642
|
variant: "body2",
|
|
26643
26643
|
className: cn(
|
|
26644
26644
|
"font-medium truncate",
|
|
26645
|
-
isCompleted && "line-through text-
|
|
26646
|
-
isActive && !isCompleted && "text-
|
|
26647
|
-
!isActive && !isCompleted && "text-
|
|
26645
|
+
isCompleted && "line-through text-muted-foreground",
|
|
26646
|
+
isActive && !isCompleted && "text-info",
|
|
26647
|
+
!isActive && !isCompleted && "text-muted-foreground"
|
|
26648
26648
|
),
|
|
26649
26649
|
children: quest.title
|
|
26650
26650
|
}
|
|
@@ -26662,7 +26662,7 @@ function QuestTracker({
|
|
|
26662
26662
|
Typography,
|
|
26663
26663
|
{
|
|
26664
26664
|
variant: "caption",
|
|
26665
|
-
className: "text-
|
|
26665
|
+
className: "text-muted-foreground mt-1",
|
|
26666
26666
|
children: [
|
|
26667
26667
|
quest.progress,
|
|
26668
26668
|
" / ",
|
|
@@ -26719,14 +26719,14 @@ function PowerupSlots({
|
|
|
26719
26719
|
{
|
|
26720
26720
|
className: cn(
|
|
26721
26721
|
"absolute -bottom-1 left-1/2 -translate-x-1/2",
|
|
26722
|
-
"rounded px-1 py-px",
|
|
26723
|
-
"bg-
|
|
26722
|
+
"rounded-interactive px-1 py-px",
|
|
26723
|
+
"bg-background/80 border border-border"
|
|
26724
26724
|
),
|
|
26725
26725
|
children: /* @__PURE__ */ jsx(
|
|
26726
26726
|
Typography,
|
|
26727
26727
|
{
|
|
26728
26728
|
variant: "caption",
|
|
26729
|
-
className: "text-[9px] font-mono font-bold text-
|
|
26729
|
+
className: "text-[9px] font-mono font-bold text-warning whitespace-nowrap",
|
|
26730
26730
|
children: formatTime2(powerup.remainingTime)
|
|
26731
26731
|
}
|
|
26732
26732
|
)
|
|
@@ -26759,6 +26759,8 @@ function GameCanvas2D({
|
|
|
26759
26759
|
height = 600,
|
|
26760
26760
|
onDraw,
|
|
26761
26761
|
onTick,
|
|
26762
|
+
tickEvent,
|
|
26763
|
+
drawEvent,
|
|
26762
26764
|
fps = 60,
|
|
26763
26765
|
className
|
|
26764
26766
|
}) {
|
|
@@ -26766,10 +26768,17 @@ function GameCanvas2D({
|
|
|
26766
26768
|
const rafRef = React86.useRef(0);
|
|
26767
26769
|
const frameRef = React86.useRef(0);
|
|
26768
26770
|
const lastTimeRef = React86.useRef(0);
|
|
26771
|
+
const emit = useEmitEvent();
|
|
26769
26772
|
const onDrawRef = React86.useRef(onDraw);
|
|
26770
26773
|
onDrawRef.current = onDraw;
|
|
26771
26774
|
const onTickRef = React86.useRef(onTick);
|
|
26772
26775
|
onTickRef.current = onTick;
|
|
26776
|
+
const tickEventRef = React86.useRef(tickEvent);
|
|
26777
|
+
tickEventRef.current = tickEvent;
|
|
26778
|
+
const drawEventRef = React86.useRef(drawEvent);
|
|
26779
|
+
drawEventRef.current = drawEvent;
|
|
26780
|
+
const emitRef = React86.useRef(emit);
|
|
26781
|
+
emitRef.current = emit;
|
|
26773
26782
|
React86.useEffect(() => {
|
|
26774
26783
|
const canvas = canvasRef.current;
|
|
26775
26784
|
if (!canvas) return;
|
|
@@ -26786,8 +26795,15 @@ function GameCanvas2D({
|
|
|
26786
26795
|
if (elapsed >= interval) {
|
|
26787
26796
|
const dt = elapsed / 1e3;
|
|
26788
26797
|
lastTimeRef.current = timestamp - elapsed % interval;
|
|
26798
|
+
const frame = frameRef.current;
|
|
26789
26799
|
onTickRef.current?.(dt);
|
|
26790
|
-
|
|
26800
|
+
if (tickEventRef.current) {
|
|
26801
|
+
emitRef.current(tickEventRef.current, { dt, frame });
|
|
26802
|
+
}
|
|
26803
|
+
onDrawRef.current?.(ctx, frame);
|
|
26804
|
+
if (drawEventRef.current) {
|
|
26805
|
+
emitRef.current(drawEventRef.current, { frame });
|
|
26806
|
+
}
|
|
26791
26807
|
frameRef.current += 1;
|
|
26792
26808
|
}
|
|
26793
26809
|
rafRef.current = requestAnimationFrame(loop);
|
|
@@ -26813,6 +26829,7 @@ var init_GameCanvas2D = __esm({
|
|
|
26813
26829
|
"use client";
|
|
26814
26830
|
init_cn();
|
|
26815
26831
|
init_Box();
|
|
26832
|
+
init_useEventBus();
|
|
26816
26833
|
GameCanvas2D.displayName = "GameCanvas2D";
|
|
26817
26834
|
}
|
|
26818
26835
|
});
|
|
@@ -26831,7 +26848,7 @@ function HealthPanel({
|
|
|
26831
26848
|
Box,
|
|
26832
26849
|
{
|
|
26833
26850
|
className: cn(
|
|
26834
|
-
"rounded-
|
|
26851
|
+
"rounded-container bg-[var(--color-card)]/90 border border-border backdrop-blur-sm",
|
|
26835
26852
|
sizes.padding,
|
|
26836
26853
|
className
|
|
26837
26854
|
),
|
|
@@ -26842,7 +26859,7 @@ function HealthPanel({
|
|
|
26842
26859
|
{
|
|
26843
26860
|
variant: "caption",
|
|
26844
26861
|
weight: "bold",
|
|
26845
|
-
className: "text-
|
|
26862
|
+
className: "text-muted-foreground uppercase tracking-wider",
|
|
26846
26863
|
children: label
|
|
26847
26864
|
}
|
|
26848
26865
|
),
|
|
@@ -26863,7 +26880,7 @@ function HealthPanel({
|
|
|
26863
26880
|
as: "span",
|
|
26864
26881
|
variant: "caption",
|
|
26865
26882
|
weight: "bold",
|
|
26866
|
-
className: "text-
|
|
26883
|
+
className: "text-info ml-1",
|
|
26867
26884
|
children: [
|
|
26868
26885
|
"+",
|
|
26869
26886
|
shield
|
|
@@ -26888,14 +26905,14 @@ function HealthPanel({
|
|
|
26888
26905
|
Box,
|
|
26889
26906
|
{
|
|
26890
26907
|
className: cn(
|
|
26891
|
-
"relative overflow-hidden rounded-
|
|
26908
|
+
"relative overflow-hidden rounded-container bg-muted",
|
|
26892
26909
|
size === "sm" ? "h-1" : size === "md" ? "h-1.5" : "h-2",
|
|
26893
26910
|
"w-full"
|
|
26894
26911
|
),
|
|
26895
26912
|
children: /* @__PURE__ */ jsx(
|
|
26896
26913
|
Box,
|
|
26897
26914
|
{
|
|
26898
|
-
className: "absolute inset-y-0 left-0 rounded-
|
|
26915
|
+
className: "absolute inset-y-0 left-0 rounded-container bg-info transition-all duration-300",
|
|
26899
26916
|
style: { width: `${Math.min(100, shield / max * 100)}%` }
|
|
26900
26917
|
}
|
|
26901
26918
|
)
|
|
@@ -26954,7 +26971,7 @@ function ScoreBoard({
|
|
|
26954
26971
|
Card,
|
|
26955
26972
|
{
|
|
26956
26973
|
className: cn(
|
|
26957
|
-
"bg-[var(--color-card)]/90 border-
|
|
26974
|
+
"bg-[var(--color-card)]/90 border-border backdrop-blur-sm",
|
|
26958
26975
|
className
|
|
26959
26976
|
),
|
|
26960
26977
|
children: /* @__PURE__ */ jsx(CardContent, { className: "p-3", children: /* @__PURE__ */ jsxs(Box, { className: "flex items-center gap-3 flex-wrap", children: [
|
|
@@ -27071,7 +27088,7 @@ function TurnPanel({
|
|
|
27071
27088
|
Box,
|
|
27072
27089
|
{
|
|
27073
27090
|
className: cn(
|
|
27074
|
-
"flex items-center gap-3 rounded-
|
|
27091
|
+
"flex items-center gap-3 rounded-container bg-[var(--color-card)]/90 border border-border backdrop-blur-sm px-3 py-2",
|
|
27075
27092
|
className
|
|
27076
27093
|
),
|
|
27077
27094
|
children: [
|
|
@@ -27123,7 +27140,7 @@ function EnemyPlate({
|
|
|
27123
27140
|
Box,
|
|
27124
27141
|
{
|
|
27125
27142
|
className: cn(
|
|
27126
|
-
"inline-flex flex-col gap-1 rounded-
|
|
27143
|
+
"inline-flex flex-col gap-1 rounded-container bg-[var(--color-card)]/90 border border-border backdrop-blur-sm px-3 py-1.5",
|
|
27127
27144
|
"min-w-[120px]",
|
|
27128
27145
|
className
|
|
27129
27146
|
),
|
|
@@ -27217,7 +27234,7 @@ function UnitCommandBar({
|
|
|
27217
27234
|
Box,
|
|
27218
27235
|
{
|
|
27219
27236
|
className: cn(
|
|
27220
|
-
"flex items-center gap-1.5 rounded-
|
|
27237
|
+
"flex items-center gap-1.5 rounded-container bg-[var(--color-card)]/90 border border-border backdrop-blur-sm px-2 py-1.5",
|
|
27221
27238
|
className
|
|
27222
27239
|
),
|
|
27223
27240
|
children: commands.map((command, i) => /* @__PURE__ */ jsxs(Box, { className: "flex flex-col items-center gap-0.5", children: [
|
|
@@ -27302,8 +27319,8 @@ function GameHud({
|
|
|
27302
27319
|
className: cn(
|
|
27303
27320
|
"relative z-10",
|
|
27304
27321
|
positionMap[position],
|
|
27305
|
-
transparent && "bg-gradient-to-b from-
|
|
27306
|
-
position === "bottom" && "bg-gradient-to-t from-
|
|
27322
|
+
transparent && "bg-gradient-to-b from-background/50 to-transparent",
|
|
27323
|
+
position === "bottom" && "bg-gradient-to-t from-background/50 to-transparent",
|
|
27307
27324
|
className
|
|
27308
27325
|
),
|
|
27309
27326
|
children: /* @__PURE__ */ jsx("div", { className: "flex gap-4", children: stats.map((stat, i) => /* @__PURE__ */ jsx(StatBadge, { ...stat, size }, i)) })
|
|
@@ -27461,8 +27478,8 @@ function DialogueBox({
|
|
|
27461
27478
|
tabIndex: 0,
|
|
27462
27479
|
role: "dialog",
|
|
27463
27480
|
"aria-label": "Dialogue",
|
|
27464
|
-
children: /* @__PURE__ */ jsx("div", { className: "mx-4 my-4 bg-[var(--color-card)] bg-opacity-95 border-2 border-
|
|
27465
|
-
dialogue.portrait && /* @__PURE__ */ jsx("div", { className: "flex-shrink-0 p-4 border-r border-
|
|
27481
|
+
children: /* @__PURE__ */ jsx("div", { className: "mx-4 my-4 bg-[var(--color-card)] bg-opacity-95 border-2 border-border rounded-container overflow-hidden", children: /* @__PURE__ */ jsxs("div", { className: "flex", children: [
|
|
27482
|
+
dialogue.portrait && /* @__PURE__ */ jsx("div", { className: "flex-shrink-0 p-4 border-r border-border", children: /* @__PURE__ */ jsx(
|
|
27466
27483
|
"img",
|
|
27467
27484
|
{
|
|
27468
27485
|
src: dialogue.portrait,
|
|
@@ -27472,7 +27489,7 @@ function DialogueBox({
|
|
|
27472
27489
|
}
|
|
27473
27490
|
) }),
|
|
27474
27491
|
/* @__PURE__ */ jsxs("div", { className: "flex-1 p-4", children: [
|
|
27475
|
-
/* @__PURE__ */ jsx("div", { className: "text-
|
|
27492
|
+
/* @__PURE__ */ jsx("div", { className: "text-warning font-bold mb-2", children: dialogue.speaker }),
|
|
27476
27493
|
/* @__PURE__ */ jsxs("div", { className: "text-[var(--color-foreground)] text-lg leading-relaxed min-h-[60px]", children: [
|
|
27477
27494
|
displayedText,
|
|
27478
27495
|
isTyping && /* @__PURE__ */ jsx("span", { className: "animate-pulse", children: "\u258C" })
|
|
@@ -27482,9 +27499,9 @@ function DialogueBox({
|
|
|
27482
27499
|
{
|
|
27483
27500
|
type: "button",
|
|
27484
27501
|
className: cn(
|
|
27485
|
-
"block w-full text-left px-4 py-2 rounded transition-colors",
|
|
27486
|
-
"hover:bg-[var(--color-surface,#374151)] focus:outline-none focus:ring-2 focus:ring-
|
|
27487
|
-
selectedChoice === index ? "bg-[var(--color-surface,#374151)] text-
|
|
27502
|
+
"block w-full text-left px-4 py-2 rounded-interactive transition-colors",
|
|
27503
|
+
"hover:bg-[var(--color-surface,#374151)] focus:outline-none focus:ring-2 focus:ring-warning",
|
|
27504
|
+
selectedChoice === index ? "bg-[var(--color-surface,#374151)] text-warning" : "bg-[var(--color-card)] text-[var(--color-foreground)]"
|
|
27488
27505
|
),
|
|
27489
27506
|
onClick: (e) => {
|
|
27490
27507
|
e.stopPropagation();
|
|
@@ -27492,7 +27509,7 @@ function DialogueBox({
|
|
|
27492
27509
|
onChoice?.(choice);
|
|
27493
27510
|
},
|
|
27494
27511
|
children: [
|
|
27495
|
-
/* @__PURE__ */ jsxs("span", { className: "text-
|
|
27512
|
+
/* @__PURE__ */ jsxs("span", { className: "text-muted-foreground mr-2", children: [
|
|
27496
27513
|
index + 1,
|
|
27497
27514
|
"."
|
|
27498
27515
|
] }),
|
|
@@ -27501,7 +27518,7 @@ function DialogueBox({
|
|
|
27501
27518
|
},
|
|
27502
27519
|
index
|
|
27503
27520
|
)) }),
|
|
27504
|
-
!isTyping && !dialogue.choices?.length && /* @__PURE__ */ jsx("div", { className: "mt-4 text-
|
|
27521
|
+
!isTyping && !dialogue.choices?.length && /* @__PURE__ */ jsx("div", { className: "mt-4 text-muted-foreground text-sm animate-pulse", children: "Press SPACE or click to continue..." })
|
|
27505
27522
|
] })
|
|
27506
27523
|
] }) })
|
|
27507
27524
|
}
|
|
@@ -27604,7 +27621,7 @@ function InventoryPanel({
|
|
|
27604
27621
|
/* @__PURE__ */ jsx(
|
|
27605
27622
|
"div",
|
|
27606
27623
|
{
|
|
27607
|
-
className: "grid gap-1 bg-[var(--color-card)] p-2 rounded-
|
|
27624
|
+
className: "grid gap-1 bg-[var(--color-card)] p-2 rounded-container border border-border",
|
|
27608
27625
|
style: {
|
|
27609
27626
|
gridTemplateColumns: `repeat(${safeColumns}, ${slotSize}px)`,
|
|
27610
27627
|
gridTemplateRows: `repeat(${rows}, ${slotSize}px)`
|
|
@@ -27616,8 +27633,8 @@ function InventoryPanel({
|
|
|
27616
27633
|
className: cn(
|
|
27617
27634
|
"relative flex items-center justify-center",
|
|
27618
27635
|
"bg-[var(--color-card)] border rounded transition-colors",
|
|
27619
|
-
"hover:bg-[var(--color-surface,#374151)] focus:outline-none focus:ring-2 focus:ring-
|
|
27620
|
-
selectedSlot === index ? "border-
|
|
27636
|
+
"hover:bg-[var(--color-surface,#374151)] focus:outline-none focus:ring-2 focus:ring-info",
|
|
27637
|
+
selectedSlot === index ? "border-warning bg-[var(--color-surface,#374151)]" : "border-muted"
|
|
27621
27638
|
),
|
|
27622
27639
|
style: { width: slotSize, height: slotSize },
|
|
27623
27640
|
onClick: () => handleSlotClick(index),
|
|
@@ -27636,8 +27653,8 @@ function InventoryPanel({
|
|
|
27636
27653
|
className: "w-8 h-8 object-contain",
|
|
27637
27654
|
style: { imageRendering: "pixelated" }
|
|
27638
27655
|
}
|
|
27639
|
-
) : /* @__PURE__ */ jsx("div", { className: "w-8 h-8 bg-
|
|
27640
|
-
item.quantity > 1 && /* @__PURE__ */ jsx("span", { className: "absolute bottom-0 right-0 bg-
|
|
27656
|
+
) : /* @__PURE__ */ 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() }),
|
|
27657
|
+
item.quantity > 1 && /* @__PURE__ */ jsx("span", { className: "absolute bottom-0 right-0 bg-background/70 text-foreground text-xs px-1 rounded-tl", children: item.quantity })
|
|
27641
27658
|
] })
|
|
27642
27659
|
},
|
|
27643
27660
|
index
|
|
@@ -27647,7 +27664,7 @@ function InventoryPanel({
|
|
|
27647
27664
|
showTooltips && hoveredItem && /* @__PURE__ */ jsxs(
|
|
27648
27665
|
"div",
|
|
27649
27666
|
{
|
|
27650
|
-
className: "fixed z-50 bg-[var(--color-card)] border border-
|
|
27667
|
+
className: "fixed z-50 bg-[var(--color-card)] border border-border rounded-container p-2 shadow-elevation-card pointer-events-none",
|
|
27651
27668
|
style: {
|
|
27652
27669
|
left: tooltipPosition.x,
|
|
27653
27670
|
top: tooltipPosition.y,
|
|
@@ -27655,8 +27672,8 @@ function InventoryPanel({
|
|
|
27655
27672
|
},
|
|
27656
27673
|
children: [
|
|
27657
27674
|
/* @__PURE__ */ jsx("div", { className: "font-semibold text-[var(--color-foreground)]", children: hoveredItem.name || hoveredItem.type }),
|
|
27658
|
-
hoveredItem.description && /* @__PURE__ */ jsx("div", { className: "text-sm text-
|
|
27659
|
-
/* @__PURE__ */ jsxs("div", { className: "text-xs text-
|
|
27675
|
+
hoveredItem.description && /* @__PURE__ */ jsx("div", { className: "text-sm text-muted-foreground mt-1", children: hoveredItem.description }),
|
|
27676
|
+
/* @__PURE__ */ jsxs("div", { className: "text-xs text-muted-foreground mt-1", children: [
|
|
27660
27677
|
"Quantity: ",
|
|
27661
27678
|
hoveredItem.quantity
|
|
27662
27679
|
] })
|
|
@@ -27734,7 +27751,7 @@ function GameMenu({
|
|
|
27734
27751
|
children: title
|
|
27735
27752
|
}
|
|
27736
27753
|
),
|
|
27737
|
-
subtitle && /* @__PURE__ */ jsx("p", { className: "mt-2 text-lg text-
|
|
27754
|
+
subtitle && /* @__PURE__ */ jsx("p", { className: "mt-2 text-lg text-muted-foreground tracking-widest uppercase", children: subtitle })
|
|
27738
27755
|
] }),
|
|
27739
27756
|
/* @__PURE__ */ jsx("div", { className: "flex flex-col gap-4 w-full max-w-md", children: resolvedOptions.map((option, index) => /* @__PURE__ */ jsx(
|
|
27740
27757
|
"button",
|
|
@@ -27742,10 +27759,10 @@ function GameMenu({
|
|
|
27742
27759
|
onClick: () => handleOptionClick(option),
|
|
27743
27760
|
disabled: option.disabled,
|
|
27744
27761
|
className: cn(
|
|
27745
|
-
"w-full py-4 px-8 rounded-
|
|
27762
|
+
"w-full py-4 px-8 rounded-container border-2 font-bold text-lg",
|
|
27746
27763
|
"transition-all duration-200 transform",
|
|
27747
27764
|
"hover:scale-105 active:scale-95",
|
|
27748
|
-
"focus:outline-none focus:ring-4 focus:ring-
|
|
27765
|
+
"focus:outline-none focus:ring-4 focus:ring-foreground/25",
|
|
27749
27766
|
variantMap3[option.variant ?? "secondary"] ?? variantMap3.secondary,
|
|
27750
27767
|
option.disabled && "opacity-50 cursor-not-allowed hover:scale-100"
|
|
27751
27768
|
),
|
|
@@ -27757,8 +27774,8 @@ function GameMenu({
|
|
|
27757
27774
|
index
|
|
27758
27775
|
)) }),
|
|
27759
27776
|
/* @__PURE__ */ jsxs("div", { className: "absolute inset-0 pointer-events-none overflow-hidden", children: [
|
|
27760
|
-
/* @__PURE__ */ jsx("div", { className: "absolute top-1/4 left-1/4 w-64 h-64 bg-
|
|
27761
|
-
/* @__PURE__ */ jsx("div", { className: "absolute bottom-1/4 right-1/4 w-96 h-96 bg-
|
|
27777
|
+
/* @__PURE__ */ jsx("div", { className: "absolute top-1/4 left-1/4 w-64 h-64 bg-info/10 rounded-container blur-3xl" }),
|
|
27778
|
+
/* @__PURE__ */ jsx("div", { className: "absolute bottom-1/4 right-1/4 w-96 h-96 bg-accent/10 rounded-container blur-3xl" })
|
|
27762
27779
|
] })
|
|
27763
27780
|
]
|
|
27764
27781
|
}
|
|
@@ -27771,9 +27788,9 @@ var init_GameMenu = __esm({
|
|
|
27771
27788
|
init_cn();
|
|
27772
27789
|
init_useEventBus();
|
|
27773
27790
|
variantMap3 = {
|
|
27774
|
-
primary: "bg-[var(--color-primary)] hover:bg-
|
|
27775
|
-
secondary: "bg-[var(--color-surface,#374151)] hover:bg-
|
|
27776
|
-
ghost: "bg-transparent hover:bg-
|
|
27791
|
+
primary: "bg-[var(--color-primary)] hover:bg-info text-[var(--color-primary-foreground)] border-info shadow-lg shadow-info/25",
|
|
27792
|
+
secondary: "bg-[var(--color-surface,#374151)] hover:bg-muted text-[var(--color-foreground)] border-muted",
|
|
27793
|
+
ghost: "bg-transparent hover:bg-foreground/10 text-[var(--color-foreground)] border-foreground/20"
|
|
27777
27794
|
};
|
|
27778
27795
|
GameMenu.displayName = "GameMenu";
|
|
27779
27796
|
}
|
|
@@ -27841,13 +27858,13 @@ function GameOverScreen({
|
|
|
27841
27858
|
children: title
|
|
27842
27859
|
}
|
|
27843
27860
|
),
|
|
27844
|
-
message && /* @__PURE__ */ jsx("p", { className: "text-xl text-
|
|
27845
|
-
isNewHighScore && /* @__PURE__ */ jsx("div", { className: "mb-6 px-6 py-2 bg-
|
|
27861
|
+
message && /* @__PURE__ */ jsx("p", { className: "text-xl text-muted-foreground mb-8 text-center max-w-md", children: message }),
|
|
27862
|
+
isNewHighScore && /* @__PURE__ */ jsx("div", { className: "mb-6 px-6 py-2 bg-warning/20 border-2 border-warning rounded-container animate-pulse", children: /* @__PURE__ */ jsx("span", { className: "text-warning font-bold text-lg tracking-wide", children: "\u{1F3C6} NEW HIGH SCORE! \u{1F3C6}" }) }),
|
|
27846
27863
|
stats.length > 0 && /* @__PURE__ */ jsx(
|
|
27847
27864
|
"div",
|
|
27848
27865
|
{
|
|
27849
27866
|
className: cn(
|
|
27850
|
-
"mb-8 p-6 rounded-
|
|
27867
|
+
"mb-8 p-6 rounded-container border-2 bg-background/30",
|
|
27851
27868
|
colors.accent
|
|
27852
27869
|
),
|
|
27853
27870
|
children: /* @__PURE__ */ jsx("div", { className: "grid grid-cols-2 md:grid-cols-3 gap-4", children: stats.map((stat, index) => {
|
|
@@ -27856,7 +27873,7 @@ function GameOverScreen({
|
|
|
27856
27873
|
displayValue = formatTime3(displayValue);
|
|
27857
27874
|
}
|
|
27858
27875
|
return /* @__PURE__ */ jsxs("div", { className: "text-center", children: [
|
|
27859
|
-
/* @__PURE__ */ jsx("div", { className: "text-
|
|
27876
|
+
/* @__PURE__ */ jsx("div", { className: "text-muted-foreground text-sm mb-1", children: stat.label }),
|
|
27860
27877
|
/* @__PURE__ */ jsxs("div", { className: "text-[var(--color-foreground)] text-2xl font-bold flex items-center justify-center gap-2", children: [
|
|
27861
27878
|
stat.icon && /* @__PURE__ */ jsx("span", { children: stat.icon }),
|
|
27862
27879
|
/* @__PURE__ */ jsx("span", { className: "tabular-nums", children: displayValue })
|
|
@@ -27870,10 +27887,10 @@ function GameOverScreen({
|
|
|
27870
27887
|
{
|
|
27871
27888
|
onClick: () => handleActionClick(action),
|
|
27872
27889
|
className: cn(
|
|
27873
|
-
"px-8 py-4 rounded-
|
|
27890
|
+
"px-8 py-4 rounded-container border-2 font-bold text-lg",
|
|
27874
27891
|
"transition-all duration-200",
|
|
27875
27892
|
"hover:scale-105 active:scale-95",
|
|
27876
|
-
"focus:outline-none focus:ring-4 focus:ring-
|
|
27893
|
+
"focus:outline-none focus:ring-4 focus:ring-foreground/25",
|
|
27877
27894
|
buttonVariants[action.variant ?? "secondary"]
|
|
27878
27895
|
),
|
|
27879
27896
|
children: action.label
|
|
@@ -27892,25 +27909,25 @@ var init_GameOverScreen = __esm({
|
|
|
27892
27909
|
init_useEventBus();
|
|
27893
27910
|
variantColors = {
|
|
27894
27911
|
victory: {
|
|
27895
|
-
bg: "from-
|
|
27896
|
-
title: "text-
|
|
27897
|
-
accent: "border-
|
|
27912
|
+
bg: "from-success/90 to-success/90",
|
|
27913
|
+
title: "text-success",
|
|
27914
|
+
accent: "border-success"
|
|
27898
27915
|
},
|
|
27899
27916
|
defeat: {
|
|
27900
|
-
bg: "from-
|
|
27901
|
-
title: "text-
|
|
27902
|
-
accent: "border-
|
|
27917
|
+
bg: "from-error/90 to-background/90",
|
|
27918
|
+
title: "text-error",
|
|
27919
|
+
accent: "border-error"
|
|
27903
27920
|
},
|
|
27904
27921
|
neutral: {
|
|
27905
|
-
bg: "from-
|
|
27906
|
-
title: "text-
|
|
27907
|
-
accent: "border-
|
|
27922
|
+
bg: "from-muted/90 to-background/90",
|
|
27923
|
+
title: "text-foreground",
|
|
27924
|
+
accent: "border-muted"
|
|
27908
27925
|
}
|
|
27909
27926
|
};
|
|
27910
27927
|
buttonVariants = {
|
|
27911
|
-
primary: "bg-[var(--color-primary)] hover:bg-
|
|
27912
|
-
secondary: "bg-[var(--color-surface,#374151)] hover:bg-
|
|
27913
|
-
ghost: "bg-transparent hover:bg-
|
|
27928
|
+
primary: "bg-[var(--color-primary)] hover:bg-info text-[var(--color-primary-foreground)] border-info",
|
|
27929
|
+
secondary: "bg-[var(--color-surface,#374151)] hover:bg-muted text-[var(--color-foreground)] border-muted",
|
|
27930
|
+
ghost: "bg-transparent hover:bg-foreground/10 text-[var(--color-foreground)] border-foreground/20"
|
|
27914
27931
|
};
|
|
27915
27932
|
GameOverScreen.displayName = "GameOverScreen";
|
|
27916
27933
|
}
|
|
@@ -28144,7 +28161,7 @@ function PlatformerCanvas({
|
|
|
28144
28161
|
{
|
|
28145
28162
|
ref: canvasRef,
|
|
28146
28163
|
style: { width: canvasWidth, height: canvasHeight },
|
|
28147
|
-
className: cn("block rounded-
|
|
28164
|
+
className: cn("block rounded-container border border-border/10", className),
|
|
28148
28165
|
"data-testid": "platformer-canvas",
|
|
28149
28166
|
tabIndex: 0
|
|
28150
28167
|
}
|
|
@@ -35687,7 +35704,7 @@ function DebuggerBoard({
|
|
|
35687
35704
|
backgroundPosition: "center"
|
|
35688
35705
|
},
|
|
35689
35706
|
children: /* @__PURE__ */ jsxs(VStack, { gap: "lg", className: "p-4", children: [
|
|
35690
|
-
entity.headerImage && !headerError ? /* @__PURE__ */ jsx(Box, { className: "w-full h-32 overflow-hidden rounded-
|
|
35707
|
+
entity.headerImage && !headerError ? /* @__PURE__ */ jsx(Box, { className: "w-full h-32 overflow-hidden rounded-container", children: /* @__PURE__ */ jsx("img", { src: entity.headerImage, alt: "", onError: () => setHeaderError(true), className: "w-full h-full object-cover" }) }) : entity.headerImage && headerError ? /* @__PURE__ */ jsx(Box, { className: "w-full h-32 rounded-container bg-gradient-to-br from-muted to-accent opacity-60" }) : null,
|
|
35691
35708
|
/* @__PURE__ */ jsx(Card, { className: "p-4", children: /* @__PURE__ */ jsxs(VStack, { gap: "sm", children: [
|
|
35692
35709
|
/* @__PURE__ */ jsxs(HStack, { gap: "xs", align: "center", children: [
|
|
35693
35710
|
/* @__PURE__ */ jsx(Icon, { icon: Bug, size: "sm" }),
|
|
@@ -35700,11 +35717,11 @@ function DebuggerBoard({
|
|
|
35700
35717
|
const isFlagged = flaggedLines.has(line.id);
|
|
35701
35718
|
let lineStyle = "";
|
|
35702
35719
|
if (submitted) {
|
|
35703
|
-
if (line.isBug && isFlagged) lineStyle = "bg-
|
|
35704
|
-
else if (line.isBug && !isFlagged) lineStyle = "bg-
|
|
35705
|
-
else if (!line.isBug && isFlagged) lineStyle = "bg-
|
|
35720
|
+
if (line.isBug && isFlagged) lineStyle = "bg-success/10";
|
|
35721
|
+
else if (line.isBug && !isFlagged) lineStyle = "bg-warning/10";
|
|
35722
|
+
else if (!line.isBug && isFlagged) lineStyle = "bg-error/10";
|
|
35706
35723
|
} else if (isFlagged) {
|
|
35707
|
-
lineStyle = "bg-
|
|
35724
|
+
lineStyle = "bg-error/10";
|
|
35708
35725
|
}
|
|
35709
35726
|
return /* @__PURE__ */ jsxs(
|
|
35710
35727
|
HStack,
|
|
@@ -35717,8 +35734,8 @@ function DebuggerBoard({
|
|
|
35717
35734
|
/* @__PURE__ */ jsx(Box, { className: "w-10 flex-shrink-0 flex items-center justify-center border-r border-border text-muted-foreground", children: /* @__PURE__ */ jsx(Typography, { variant: "caption", children: i + 1 }) }),
|
|
35718
35735
|
/* @__PURE__ */ jsx(Box, { className: "flex-1 px-3 py-1.5 font-mono text-sm whitespace-pre", children: /* @__PURE__ */ jsx(Typography, { variant: "body", className: "font-mono text-sm", children: line.content }) }),
|
|
35719
35736
|
/* @__PURE__ */ jsxs(Box, { className: "w-8 flex-shrink-0 flex items-center justify-center", children: [
|
|
35720
|
-
isFlagged && /* @__PURE__ */ jsx(Icon, { icon: Bug, size: "xs", className: "text-
|
|
35721
|
-
submitted && line.isBug && !isFlagged && /* @__PURE__ */ jsx(Icon, { icon: Bug, size: "xs", className: "text-
|
|
35737
|
+
isFlagged && /* @__PURE__ */ jsx(Icon, { icon: Bug, size: "xs", className: "text-error" }),
|
|
35738
|
+
submitted && line.isBug && !isFlagged && /* @__PURE__ */ jsx(Icon, { icon: Bug, size: "xs", className: "text-warning" })
|
|
35722
35739
|
] })
|
|
35723
35740
|
]
|
|
35724
35741
|
},
|
|
@@ -35733,7 +35750,7 @@ function DebuggerBoard({
|
|
|
35733
35750
|
{
|
|
35734
35751
|
icon: flaggedLines.has(line.id) ? CheckCircle : XCircle,
|
|
35735
35752
|
size: "xs",
|
|
35736
|
-
className: flaggedLines.has(line.id) ? "text-
|
|
35753
|
+
className: flaggedLines.has(line.id) ? "text-success mt-0.5" : "text-warning mt-0.5"
|
|
35737
35754
|
}
|
|
35738
35755
|
),
|
|
35739
35756
|
/* @__PURE__ */ jsxs(VStack, { gap: "none", children: [
|
|
@@ -35742,7 +35759,7 @@ function DebuggerBoard({
|
|
|
35742
35759
|
] })
|
|
35743
35760
|
] }, line.id))
|
|
35744
35761
|
] }) }),
|
|
35745
|
-
showHint && entity.hint && /* @__PURE__ */ jsx(Card, { className: "p-4 border-l-4 border-l-
|
|
35762
|
+
showHint && entity.hint && /* @__PURE__ */ jsx(Card, { className: "p-4 border-l-4 border-l-warning", children: /* @__PURE__ */ jsx(Typography, { variant: "body", children: entity.hint }) }),
|
|
35746
35763
|
/* @__PURE__ */ jsxs(HStack, { gap: "sm", justify: "center", children: [
|
|
35747
35764
|
!submitted ? /* @__PURE__ */ jsxs(Button, { variant: "primary", onClick: handleSubmit, disabled: flaggedLines.size === 0, children: [
|
|
35748
35765
|
/* @__PURE__ */ jsx(Icon, { icon: Send, size: "sm" }),
|
|
@@ -36465,7 +36482,7 @@ function LinearView({
|
|
|
36465
36482
|
className
|
|
36466
36483
|
}) {
|
|
36467
36484
|
const currentIdx = trait.states.indexOf(trait.currentState);
|
|
36468
|
-
return /* @__PURE__ */ jsxs(VStack, { className: cn("p-3 rounded-
|
|
36485
|
+
return /* @__PURE__ */ jsxs(VStack, { className: cn("p-3 rounded-container bg-card border border-border", className), gap: "sm", children: [
|
|
36469
36486
|
trait.description && /* @__PURE__ */ jsx(Typography, { variant: "caption", className: "text-muted-foreground", children: trait.description }),
|
|
36470
36487
|
/* @__PURE__ */ jsx(HStack, { className: "flex-wrap items-center", gap: "xs", children: trait.states.map((state, i) => {
|
|
36471
36488
|
const isDone = i < currentIdx;
|
|
@@ -36487,10 +36504,10 @@ function LinearView({
|
|
|
36487
36504
|
{
|
|
36488
36505
|
display: "inline-flex",
|
|
36489
36506
|
className: cn(
|
|
36490
|
-
"items-center justify-center rounded-
|
|
36507
|
+
"items-center justify-center rounded-pill px-3 py-1 border-2 transition-all",
|
|
36491
36508
|
SIZE_CONFIG2[size || "md"].fontSize,
|
|
36492
36509
|
isDone && "bg-success/20 border-success text-success",
|
|
36493
|
-
isCurrent && "bg-primary/20 border-primary text-primary font-bold shadow-
|
|
36510
|
+
isCurrent && "bg-primary/20 border-primary text-primary font-bold shadow-elevation-card shadow-primary/20",
|
|
36494
36511
|
!isDone && !isCurrent && "bg-muted border-border text-muted-foreground"
|
|
36495
36512
|
),
|
|
36496
36513
|
children: [
|
|
@@ -36512,7 +36529,7 @@ function CompactView({
|
|
|
36512
36529
|
const { t } = useTranslate();
|
|
36513
36530
|
const config = SIZE_CONFIG2[size || "md"];
|
|
36514
36531
|
const currentTransitions = trait.transitions.filter((t2) => t2.from === trait.currentState);
|
|
36515
|
-
return /* @__PURE__ */ jsxs(VStack, { className: cn("p-3 rounded-
|
|
36532
|
+
return /* @__PURE__ */ jsxs(VStack, { className: cn("p-3 rounded-container bg-card border border-border", className), gap: "sm", children: [
|
|
36516
36533
|
/* @__PURE__ */ jsxs(HStack, { className: "items-center justify-between", children: [
|
|
36517
36534
|
/* @__PURE__ */ jsx(Typography, { variant: "body2", className: "text-foreground font-bold", children: trait.name }),
|
|
36518
36535
|
/* @__PURE__ */ jsx(StateIndicator, { state: trait.currentState, size: "sm", stateStyles })
|
|
@@ -36548,7 +36565,7 @@ function FullView({
|
|
|
36548
36565
|
const { t } = useTranslate();
|
|
36549
36566
|
const config = SIZE_CONFIG2[size || "md"];
|
|
36550
36567
|
const currentTransitions = trait.transitions.filter((t2) => t2.from === trait.currentState);
|
|
36551
|
-
return /* @__PURE__ */ jsxs(VStack, { className: cn("p-3 rounded-
|
|
36568
|
+
return /* @__PURE__ */ jsxs(VStack, { className: cn("p-3 rounded-container bg-card border border-border", className), gap: "sm", children: [
|
|
36552
36569
|
/* @__PURE__ */ jsxs(HStack, { className: "items-center justify-between", children: [
|
|
36553
36570
|
/* @__PURE__ */ jsx(Typography, { variant: "body2", className: "text-foreground font-bold", children: trait.name }),
|
|
36554
36571
|
/* @__PURE__ */ jsx(StateIndicator, { state: trait.currentState, size: "sm", stateStyles })
|
|
@@ -36562,9 +36579,9 @@ function FullView({
|
|
|
36562
36579
|
{
|
|
36563
36580
|
display: "flex",
|
|
36564
36581
|
className: cn(
|
|
36565
|
-
"items-center justify-center rounded-
|
|
36582
|
+
"items-center justify-center rounded-container border-2 transition-all px-2",
|
|
36566
36583
|
config.nodeSize,
|
|
36567
|
-
isCurrent && "bg-primary/20 border-primary shadow-
|
|
36584
|
+
isCurrent && "bg-primary/20 border-primary shadow-elevation-card shadow-primary/20",
|
|
36568
36585
|
!isCurrent && hasOutgoing && "bg-muted border-border hover:border-muted-foreground",
|
|
36569
36586
|
!isCurrent && !hasOutgoing && "bg-background border-border opacity-60",
|
|
36570
36587
|
onStateClick && "cursor-pointer"
|
|
@@ -36994,7 +37011,7 @@ function EventHandlerBoard({
|
|
|
36994
37011
|
backgroundPosition: "center"
|
|
36995
37012
|
},
|
|
36996
37013
|
children: [
|
|
36997
|
-
entity.headerImage && !headerError ? /* @__PURE__ */ jsx(Box, { className: "w-full h-32 overflow-hidden rounded-
|
|
37014
|
+
entity.headerImage && !headerError ? /* @__PURE__ */ jsx(Box, { className: "w-full h-32 overflow-hidden rounded-container", children: /* @__PURE__ */ jsx("img", { src: entity.headerImage, alt: "", onError: () => setHeaderError(true), className: "w-full h-full object-cover" }) }) : entity.headerImage && headerError ? /* @__PURE__ */ jsx(Box, { className: "w-full h-32 rounded-container bg-gradient-to-br from-muted to-accent opacity-60" }) : null,
|
|
36998
37015
|
/* @__PURE__ */ jsxs(VStack, { gap: "xs", children: [
|
|
36999
37016
|
/* @__PURE__ */ jsx(Typography, { variant: "h4", className: "text-foreground", children: entity.title }),
|
|
37000
37017
|
/* @__PURE__ */ jsx(Typography, { variant: "body2", className: "text-muted-foreground", children: entity.description }),
|
|
@@ -37009,7 +37026,7 @@ function EventHandlerBoard({
|
|
|
37009
37026
|
Box,
|
|
37010
37027
|
{
|
|
37011
37028
|
className: cn(
|
|
37012
|
-
"p-3 rounded-
|
|
37029
|
+
"p-3 rounded-container border-2 cursor-pointer transition-all hover:scale-105",
|
|
37013
37030
|
selectedObjectId === obj.id ? "border-primary bg-primary/10" : "border-border bg-card hover:border-muted-foreground"
|
|
37014
37031
|
),
|
|
37015
37032
|
onClick: () => setSelectedObjectId(obj.id),
|
|
@@ -37031,10 +37048,10 @@ function EventHandlerBoard({
|
|
|
37031
37048
|
}
|
|
37032
37049
|
),
|
|
37033
37050
|
eventLog.length > 0 && /* @__PURE__ */ jsx(EventLog, { entries: eventLog }),
|
|
37034
|
-
playState === "success" && /* @__PURE__ */ jsx(Box, { className: "p-4 rounded-
|
|
37051
|
+
playState === "success" && /* @__PURE__ */ jsx(Box, { className: "p-4 rounded-container bg-success/20 border border-success text-center", children: /* @__PURE__ */ jsx(Typography, { variant: "h5", className: "text-success", children: entity.successMessage || t("eventHandler.chainComplete") }) }),
|
|
37035
37052
|
playState === "fail" && /* @__PURE__ */ jsxs(VStack, { gap: "sm", children: [
|
|
37036
|
-
/* @__PURE__ */ jsx(Box, { className: "p-4 rounded-
|
|
37037
|
-
showHint && /* @__PURE__ */ jsx(Box, { className: "p-3 rounded-
|
|
37053
|
+
/* @__PURE__ */ jsx(Box, { className: "p-4 rounded-container bg-warning/10 border border-warning/30 text-center", children: /* @__PURE__ */ jsx(Typography, { variant: "body1", className: "text-foreground font-medium", children: t(encourageKey) }) }),
|
|
37054
|
+
showHint && /* @__PURE__ */ jsx(Box, { className: "p-3 rounded-container bg-accent/10 border border-accent/30", children: /* @__PURE__ */ jsxs(HStack, { className: "items-start", gap: "xs", children: [
|
|
37038
37055
|
/* @__PURE__ */ jsx(Typography, { variant: "body2", className: "text-accent font-bold shrink-0", children: "\u{1F4A1} " + t("game.hint") + ":" }),
|
|
37039
37056
|
/* @__PURE__ */ jsx(Typography, { variant: "body2", className: "text-foreground", children: entity.hint })
|
|
37040
37057
|
] }) })
|
|
@@ -40207,7 +40224,7 @@ function NegotiatorBoard({
|
|
|
40207
40224
|
backgroundPosition: "center"
|
|
40208
40225
|
},
|
|
40209
40226
|
children: /* @__PURE__ */ jsxs(VStack, { gap: "lg", className: "p-4", children: [
|
|
40210
|
-
entity.headerImage && !headerError ? /* @__PURE__ */ jsx(Box, { className: "w-full h-32 overflow-hidden rounded-
|
|
40227
|
+
entity.headerImage && !headerError ? /* @__PURE__ */ jsx(Box, { className: "w-full h-32 overflow-hidden rounded-container", children: /* @__PURE__ */ jsx("img", { src: entity.headerImage, alt: "", onError: () => setHeaderError(true), className: "w-full h-full object-cover" }) }) : entity.headerImage && headerError ? /* @__PURE__ */ jsx(Box, { className: "w-full h-32 rounded-container bg-gradient-to-br from-muted to-accent opacity-60" }) : null,
|
|
40211
40228
|
/* @__PURE__ */ jsx(Card, { className: "p-4", children: /* @__PURE__ */ jsxs(VStack, { gap: "sm", children: [
|
|
40212
40229
|
/* @__PURE__ */ jsx(Typography, { variant: "h4", weight: "bold", children: entity.title }),
|
|
40213
40230
|
/* @__PURE__ */ jsx(Typography, { variant: "body", children: entity.description }),
|
|
@@ -40253,7 +40270,7 @@ function NegotiatorBoard({
|
|
|
40253
40270
|
/* @__PURE__ */ jsx(Typography, { variant: "caption", className: "text-muted-foreground", children: "vs" }),
|
|
40254
40271
|
/* @__PURE__ */ jsx(Typography, { variant: "caption", children: getActionLabel(round.opponentAction) }),
|
|
40255
40272
|
/* @__PURE__ */ jsx(Icon, { icon: ArrowRight, size: "xs" }),
|
|
40256
|
-
/* @__PURE__ */ jsxs(Typography, { variant: "caption", weight: "bold", className: "text-
|
|
40273
|
+
/* @__PURE__ */ jsxs(Typography, { variant: "caption", weight: "bold", className: "text-success", children: [
|
|
40257
40274
|
"+",
|
|
40258
40275
|
round.playerPayoff
|
|
40259
40276
|
] }),
|
|
@@ -40264,7 +40281,7 @@ function NegotiatorBoard({
|
|
|
40264
40281
|
] }, round.round))
|
|
40265
40282
|
] }) }),
|
|
40266
40283
|
isComplete && /* @__PURE__ */ jsx(Card, { className: "p-4", children: /* @__PURE__ */ jsxs(VStack, { gap: "sm", align: "center", children: [
|
|
40267
|
-
/* @__PURE__ */ jsx(Icon, { icon: CheckCircle, size: "lg", className: won ? "text-
|
|
40284
|
+
/* @__PURE__ */ jsx(Icon, { icon: CheckCircle, size: "lg", className: won ? "text-success" : "text-error" }),
|
|
40268
40285
|
/* @__PURE__ */ jsx(Typography, { variant: "body", weight: "bold", children: won ? entity.successMessage ?? t("negotiator.success") : entity.failMessage ?? t("negotiator.failed") }),
|
|
40269
40286
|
/* @__PURE__ */ jsxs(Typography, { variant: "caption", className: "text-muted-foreground", children: [
|
|
40270
40287
|
t("negotiator.finalScore"),
|
|
@@ -40274,7 +40291,7 @@ function NegotiatorBoard({
|
|
|
40274
40291
|
entity.targetScore
|
|
40275
40292
|
] })
|
|
40276
40293
|
] }) }),
|
|
40277
|
-
showHint && entity.hint && !won && /* @__PURE__ */ jsx(Card, { className: "p-4 border-l-4 border-l-
|
|
40294
|
+
showHint && entity.hint && !won && /* @__PURE__ */ jsx(Card, { className: "p-4 border-l-4 border-l-warning", children: /* @__PURE__ */ jsx(Typography, { variant: "body", children: entity.hint }) }),
|
|
40278
40295
|
isComplete && !won && /* @__PURE__ */ jsx(HStack, { justify: "center", children: /* @__PURE__ */ jsx(Button, { variant: "primary", onClick: handleReset, children: t("negotiator.playAgain") }) })
|
|
40279
40296
|
] })
|
|
40280
40297
|
}
|
|
@@ -42859,7 +42876,7 @@ function TraitSlot({
|
|
|
42859
42876
|
display: "flex",
|
|
42860
42877
|
position: "relative",
|
|
42861
42878
|
className: cn(
|
|
42862
|
-
"items-center justify-center rounded-
|
|
42879
|
+
"items-center justify-center rounded-container transition-all duration-200 bg-card/50",
|
|
42863
42880
|
!locked && "cursor-pointer",
|
|
42864
42881
|
locked && "cursor-not-allowed opacity-50",
|
|
42865
42882
|
isEmpty && !locked && "border-2 border-dashed border-border hover:border-muted-foreground",
|
|
@@ -42875,7 +42892,7 @@ function TraitSlot({
|
|
|
42875
42892
|
style: {
|
|
42876
42893
|
width: config.box,
|
|
42877
42894
|
height: config.box,
|
|
42878
|
-
backgroundColor: catColor?.bg ||
|
|
42895
|
+
backgroundColor: catColor?.bg || void 0,
|
|
42879
42896
|
borderColor: isDragOver ? void 0 : feedback === "correct" ? "var(--color-success)" : feedback === "wrong" ? "var(--color-error)" : catColor?.border || void 0
|
|
42880
42897
|
},
|
|
42881
42898
|
onClick: handleClick,
|
|
@@ -42904,7 +42921,7 @@ function TraitSlot({
|
|
|
42904
42921
|
Box,
|
|
42905
42922
|
{
|
|
42906
42923
|
position: "absolute",
|
|
42907
|
-
className: "-top-1.5 -right-1.5 w-4 h-4 bg-error rounded-
|
|
42924
|
+
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",
|
|
42908
42925
|
onClick: handleRemove,
|
|
42909
42926
|
children: /* @__PURE__ */ jsx(Typography, { variant: "caption", className: "text-foreground text-xs leading-none", children: "\xD7" })
|
|
42910
42927
|
}
|
|
@@ -42914,14 +42931,14 @@ function TraitSlot({
|
|
|
42914
42931
|
Box,
|
|
42915
42932
|
{
|
|
42916
42933
|
position: "absolute",
|
|
42917
|
-
className: "-bottom-1 -left-1 w-4 h-4 bg-card rounded-
|
|
42934
|
+
className: "-bottom-1 -left-1 w-4 h-4 bg-card rounded-pill flex items-center justify-center border border-border",
|
|
42918
42935
|
children: /* @__PURE__ */ jsx(Typography, { variant: "caption", className: "text-muted-foreground text-xs", children: slotNumber })
|
|
42919
42936
|
}
|
|
42920
42937
|
),
|
|
42921
42938
|
showTooltip && isHovered && itemMachine && !isEmpty && equippedItem && /* @__PURE__ */ jsxs(
|
|
42922
42939
|
Box,
|
|
42923
42940
|
{
|
|
42924
|
-
className: "p-3 bg-background border border-border rounded-
|
|
42941
|
+
className: "p-3 bg-background border border-border rounded-container shadow-xl",
|
|
42925
42942
|
style: {
|
|
42926
42943
|
...getTooltipStyle(),
|
|
42927
42944
|
minWidth: 200,
|
|
@@ -43171,12 +43188,12 @@ function SequencerBoard({
|
|
|
43171
43188
|
backgroundPosition: "center"
|
|
43172
43189
|
},
|
|
43173
43190
|
children: [
|
|
43174
|
-
entity.headerImage && !headerError ? /* @__PURE__ */ jsx(Box, { className: "w-full h-32 overflow-hidden rounded-
|
|
43191
|
+
entity.headerImage && !headerError ? /* @__PURE__ */ jsx(Box, { className: "w-full h-32 overflow-hidden rounded-container", children: /* @__PURE__ */ jsx("img", { src: entity.headerImage, alt: "", onError: () => setHeaderError(true), className: "w-full h-full object-cover" }) }) : entity.headerImage && headerError ? /* @__PURE__ */ jsx(Box, { className: "w-full h-32 rounded-container bg-gradient-to-br from-muted to-accent opacity-60" }) : null,
|
|
43175
43192
|
/* @__PURE__ */ jsxs(VStack, { gap: "xs", children: [
|
|
43176
43193
|
/* @__PURE__ */ jsx(Typography, { variant: "h4", className: "text-foreground", children: entity.title }),
|
|
43177
43194
|
/* @__PURE__ */ jsx(Typography, { variant: "body2", className: "text-muted-foreground", children: entity.description })
|
|
43178
43195
|
] }),
|
|
43179
|
-
showHint && /* @__PURE__ */ jsx(Box, { className: "p-3 rounded-
|
|
43196
|
+
showHint && /* @__PURE__ */ jsx(Box, { className: "p-3 rounded-container bg-accent/10 border border-accent/30", children: /* @__PURE__ */ jsxs(HStack, { className: "items-start", gap: "xs", children: [
|
|
43180
43197
|
/* @__PURE__ */ jsx(Typography, { variant: "body2", className: "text-accent font-bold shrink-0", children: "\u{1F4A1} " + t("game.hint") + ":" }),
|
|
43181
43198
|
/* @__PURE__ */ jsx(Typography, { variant: "body2", className: "text-foreground", children: entity.hint })
|
|
43182
43199
|
] }) }),
|
|
@@ -43214,8 +43231,8 @@ function SequencerBoard({
|
|
|
43214
43231
|
label: t("sequencer.dragActions")
|
|
43215
43232
|
}
|
|
43216
43233
|
),
|
|
43217
|
-
hasFeedback && playState === "idle" && attempts > 0 && /* @__PURE__ */ jsx(Box, { className: "p-3 rounded-
|
|
43218
|
-
playState === "success" && /* @__PURE__ */ jsx(Box, { className: "p-4 rounded-
|
|
43234
|
+
hasFeedback && playState === "idle" && attempts > 0 && /* @__PURE__ */ jsx(Box, { className: "p-3 rounded-container bg-warning/10 border border-warning/30 text-center", children: /* @__PURE__ */ jsx(Typography, { variant: "body2", className: "text-foreground", children: t(encourageKey) }) }),
|
|
43235
|
+
playState === "success" && /* @__PURE__ */ jsx(Box, { className: "p-4 rounded-container bg-success/20 border border-success text-center", children: /* @__PURE__ */ jsx(Typography, { variant: "h5", className: "text-success", children: entity.successMessage || t("sequencer.levelComplete") }) }),
|
|
43219
43236
|
/* @__PURE__ */ jsxs(HStack, { gap: "sm", children: [
|
|
43220
43237
|
/* @__PURE__ */ jsx(
|
|
43221
43238
|
Button,
|
|
@@ -43891,7 +43908,7 @@ function SimulationCanvas({
|
|
|
43891
43908
|
ref: canvasRef,
|
|
43892
43909
|
width,
|
|
43893
43910
|
height,
|
|
43894
|
-
className: "rounded-
|
|
43911
|
+
className: "rounded-container block max-w-full h-auto"
|
|
43895
43912
|
}
|
|
43896
43913
|
) });
|
|
43897
43914
|
}
|
|
@@ -44099,7 +44116,7 @@ function SimulatorBoard({
|
|
|
44099
44116
|
backgroundPosition: "center"
|
|
44100
44117
|
},
|
|
44101
44118
|
children: /* @__PURE__ */ jsxs(VStack, { gap: "lg", className: "p-4", children: [
|
|
44102
|
-
entity.headerImage && !headerError ? /* @__PURE__ */ jsx(Box, { className: "w-full h-32 overflow-hidden rounded-
|
|
44119
|
+
entity.headerImage && !headerError ? /* @__PURE__ */ jsx(Box, { className: "w-full h-32 overflow-hidden rounded-container", children: /* @__PURE__ */ jsx("img", { src: entity.headerImage, alt: "", onError: () => setHeaderError(true), className: "w-full h-full object-cover" }) }) : entity.headerImage && headerError ? /* @__PURE__ */ jsx(Box, { className: "w-full h-32 rounded-container bg-gradient-to-br from-muted to-accent opacity-60" }) : null,
|
|
44103
44120
|
/* @__PURE__ */ jsx(Card, { className: "p-4", children: /* @__PURE__ */ jsxs(VStack, { gap: "sm", children: [
|
|
44104
44121
|
/* @__PURE__ */ jsx(Typography, { variant: "h4", weight: "bold", children: entity.title }),
|
|
44105
44122
|
/* @__PURE__ */ jsx(Typography, { variant: "body", children: entity.description })
|
|
@@ -44150,8 +44167,8 @@ function SimulatorBoard({
|
|
|
44150
44167
|
entity.outputUnit
|
|
44151
44168
|
] }),
|
|
44152
44169
|
submitted && /* @__PURE__ */ jsxs(HStack, { gap: "xs", align: "center", children: [
|
|
44153
|
-
/* @__PURE__ */ jsx(Icon, { icon: isCorrect ? CheckCircle : XCircle, size: "sm", className: isCorrect ? "text-
|
|
44154
|
-
/* @__PURE__ */ jsx(Typography, { variant: "body", className: isCorrect ? "text-
|
|
44170
|
+
/* @__PURE__ */ jsx(Icon, { icon: isCorrect ? CheckCircle : XCircle, size: "sm", className: isCorrect ? "text-success" : "text-error" }),
|
|
44171
|
+
/* @__PURE__ */ jsx(Typography, { variant: "body", className: isCorrect ? "text-success" : "text-error", children: isCorrect ? entity.successMessage ?? t("simulator.correct") : entity.failMessage ?? t("simulator.incorrect") })
|
|
44155
44172
|
] }),
|
|
44156
44173
|
/* @__PURE__ */ jsxs(Typography, { variant: "caption", className: "text-muted-foreground", children: [
|
|
44157
44174
|
t("simulator.target"),
|
|
@@ -44164,7 +44181,7 @@ function SimulatorBoard({
|
|
|
44164
44181
|
")"
|
|
44165
44182
|
] })
|
|
44166
44183
|
] }) }),
|
|
44167
|
-
showHint && entity.hint && /* @__PURE__ */ jsx(Card, { className: "p-4 border-l-4 border-l-
|
|
44184
|
+
showHint && entity.hint && /* @__PURE__ */ jsx(Card, { className: "p-4 border-l-4 border-l-warning", children: /* @__PURE__ */ jsx(Typography, { variant: "body", children: entity.hint }) }),
|
|
44168
44185
|
/* @__PURE__ */ jsxs(HStack, { gap: "sm", justify: "center", children: [
|
|
44169
44186
|
!submitted ? /* @__PURE__ */ jsxs(Button, { variant: "primary", onClick: handleSubmit, children: [
|
|
44170
44187
|
/* @__PURE__ */ jsx(Icon, { icon: Play, size: "sm" }),
|
|
@@ -44565,7 +44582,7 @@ function StateNode2({
|
|
|
44565
44582
|
position: "absolute",
|
|
44566
44583
|
display: "flex",
|
|
44567
44584
|
className: cn(
|
|
44568
|
-
"items-center justify-center rounded-
|
|
44585
|
+
"items-center justify-center rounded-pill border-3 transition-all cursor-pointer select-none",
|
|
44569
44586
|
"min-w-[80px] h-[80px] px-3",
|
|
44570
44587
|
isCurrent && "bg-primary/20 border-primary shadow-lg shadow-primary/30 scale-110",
|
|
44571
44588
|
isSelected && !isCurrent && "bg-accent/20 border-accent ring-2 ring-accent/50",
|
|
@@ -44878,7 +44895,7 @@ function StateArchitectBoard({
|
|
|
44878
44895
|
backgroundPosition: "center"
|
|
44879
44896
|
},
|
|
44880
44897
|
children: [
|
|
44881
|
-
entity.headerImage && !headerError ? /* @__PURE__ */ jsx(Box, { className: "w-full h-32 overflow-hidden rounded-
|
|
44898
|
+
entity.headerImage && !headerError ? /* @__PURE__ */ jsx(Box, { className: "w-full h-32 overflow-hidden rounded-container", children: /* @__PURE__ */ jsx("img", { src: entity.headerImage, alt: "", onError: () => setHeaderError(true), className: "w-full h-full object-cover" }) }) : entity.headerImage && headerError ? /* @__PURE__ */ jsx(Box, { className: "w-full h-32 rounded-container bg-gradient-to-br from-muted to-accent opacity-60" }) : null,
|
|
44882
44899
|
/* @__PURE__ */ jsxs(VStack, { gap: "xs", children: [
|
|
44883
44900
|
/* @__PURE__ */ jsx(Typography, { variant: "h4", className: "text-foreground", children: entity.title }),
|
|
44884
44901
|
/* @__PURE__ */ jsx(Typography, { variant: "body2", className: "text-muted-foreground", children: entity.description }),
|
|
@@ -44897,7 +44914,7 @@ function StateArchitectBoard({
|
|
|
44897
44914
|
Box,
|
|
44898
44915
|
{
|
|
44899
44916
|
position: "relative",
|
|
44900
|
-
className: "rounded-
|
|
44917
|
+
className: "rounded-container border border-border bg-background overflow-hidden",
|
|
44901
44918
|
style: { width: GRAPH_W, height: GRAPH_H },
|
|
44902
44919
|
children: [
|
|
44903
44920
|
/* @__PURE__ */ jsxs(
|
|
@@ -44956,7 +44973,7 @@ function StateArchitectBoard({
|
|
|
44956
44973
|
children: selectedState ? t("stateArchitect.addTransition", { state: selectedState }) : t("stateArchitect.addTransitionPrompt")
|
|
44957
44974
|
}
|
|
44958
44975
|
) }),
|
|
44959
|
-
transitions.length > 0 && /* @__PURE__ */ jsxs(VStack, { gap: "xs", className: "p-3 rounded-
|
|
44976
|
+
transitions.length > 0 && /* @__PURE__ */ jsxs(VStack, { gap: "xs", className: "p-3 rounded-container bg-muted/50 border border-border", children: [
|
|
44960
44977
|
/* @__PURE__ */ jsx(Typography, { variant: "caption", className: "text-muted-foreground font-medium", children: t("stateArchitect.transitions", { count: transitions.length }) + ":" }),
|
|
44961
44978
|
transitions.map((t2) => /* @__PURE__ */ jsxs(HStack, { className: "items-center text-xs", gap: "xs", children: [
|
|
44962
44979
|
/* @__PURE__ */ jsx(Typography, { variant: "caption", className: "text-foreground", children: t2.from }),
|
|
@@ -44990,7 +45007,7 @@ function StateArchitectBoard({
|
|
|
44990
45007
|
variables
|
|
44991
45008
|
}
|
|
44992
45009
|
),
|
|
44993
|
-
testResults.length > 0 && /* @__PURE__ */ jsxs(VStack, { className: "p-3 rounded-
|
|
45010
|
+
testResults.length > 0 && /* @__PURE__ */ jsxs(VStack, { className: "p-3 rounded-container bg-card border border-border", gap: "xs", children: [
|
|
44994
45011
|
/* @__PURE__ */ jsx(Typography, { variant: "body2", className: "text-muted-foreground font-medium", children: t("stateArchitect.testResults") + ":" }),
|
|
44995
45012
|
testResults.map((r, i) => /* @__PURE__ */ jsxs(HStack, { className: "items-center text-xs", gap: "xs", children: [
|
|
44996
45013
|
/* @__PURE__ */ jsx(Typography, { variant: "caption", className: r.passed ? "text-success" : "text-error", children: r.passed ? "\u2714" : "\u2717" }),
|
|
@@ -45001,10 +45018,10 @@ function StateArchitectBoard({
|
|
|
45001
45018
|
entity.showCodeView !== false && /* @__PURE__ */ jsx(CodeView, { data: codeData, label: "View Code" })
|
|
45002
45019
|
] })
|
|
45003
45020
|
] }),
|
|
45004
|
-
playState === "success" && /* @__PURE__ */ jsx(Box, { className: "p-4 rounded-
|
|
45021
|
+
playState === "success" && /* @__PURE__ */ jsx(Box, { className: "p-4 rounded-container bg-success/20 border border-success text-center", children: /* @__PURE__ */ jsx(Typography, { variant: "h5", className: "text-success", children: entity.successMessage || t("stateArchitect.allPassed") }) }),
|
|
45005
45022
|
playState === "fail" && /* @__PURE__ */ jsxs(VStack, { gap: "sm", children: [
|
|
45006
|
-
/* @__PURE__ */ jsx(Box, { className: "p-4 rounded-
|
|
45007
|
-
attempts >= 3 && entity.hint && /* @__PURE__ */ jsx(Box, { className: "p-3 rounded-
|
|
45023
|
+
/* @__PURE__ */ jsx(Box, { className: "p-4 rounded-container bg-warning/10 border border-warning/30 text-center", children: /* @__PURE__ */ jsx(Typography, { variant: "body1", className: "text-foreground font-medium", children: t(ENCOURAGEMENT_KEYS3[Math.min(attempts - 1, ENCOURAGEMENT_KEYS3.length - 1)] ?? ENCOURAGEMENT_KEYS3[0]) }) }),
|
|
45024
|
+
attempts >= 3 && entity.hint && /* @__PURE__ */ jsx(Box, { className: "p-3 rounded-container bg-accent/10 border border-accent/30", children: /* @__PURE__ */ jsxs(HStack, { className: "items-start", gap: "xs", children: [
|
|
45008
45025
|
/* @__PURE__ */ jsx(Typography, { variant: "body2", className: "text-accent font-bold shrink-0", children: "\u{1F4A1} " + t("game.hint") + ":" }),
|
|
45009
45026
|
/* @__PURE__ */ jsx(Typography, { variant: "body2", className: "text-foreground", children: entity.hint })
|
|
45010
45027
|
] }) })
|