@almadar/ui 5.9.6 → 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 +214 -214
- package/dist/avl/index.js +214 -214
- 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 +214 -214
- package/dist/runtime/index.js +214 -214
- package/package.json +1 -1
package/dist/providers/index.cjs
CHANGED
|
@@ -6770,7 +6770,7 @@ function HealthBar({
|
|
|
6770
6770
|
"div",
|
|
6771
6771
|
{
|
|
6772
6772
|
className: cn(
|
|
6773
|
-
"relative overflow-hidden rounded-full bg-
|
|
6773
|
+
"relative overflow-hidden rounded-full bg-muted",
|
|
6774
6774
|
sizes.bar,
|
|
6775
6775
|
"w-24",
|
|
6776
6776
|
className
|
|
@@ -6780,7 +6780,7 @@ function HealthBar({
|
|
|
6780
6780
|
{
|
|
6781
6781
|
className: cn(
|
|
6782
6782
|
"absolute inset-y-0 left-0 rounded-full",
|
|
6783
|
-
percentage > 66 ? "bg-
|
|
6783
|
+
percentage > 66 ? "bg-success" : percentage > 33 ? "bg-warning" : "bg-error",
|
|
6784
6784
|
animated && "transition-all duration-300"
|
|
6785
6785
|
),
|
|
6786
6786
|
style: { width: `${percentage}%` }
|
|
@@ -6802,7 +6802,7 @@ var init_HealthBar = __esm({
|
|
|
6802
6802
|
heartIcon = (filled, size) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
6803
6803
|
"svg",
|
|
6804
6804
|
{
|
|
6805
|
-
className: cn("transition-all duration-200", size, filled ? "text-
|
|
6805
|
+
className: cn("transition-all duration-200", size, filled ? "text-error" : "text-muted-foreground"),
|
|
6806
6806
|
viewBox: "0 0 24 24",
|
|
6807
6807
|
fill: filled ? "currentColor" : "none",
|
|
6808
6808
|
stroke: "currentColor",
|
|
@@ -6866,7 +6866,7 @@ function ScoreDisplay({
|
|
|
6866
6866
|
),
|
|
6867
6867
|
children: [
|
|
6868
6868
|
icon && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex-shrink-0", children: icon }),
|
|
6869
|
-
label && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-
|
|
6869
|
+
label && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: label }),
|
|
6870
6870
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "tabular-nums", children: formattedValue })
|
|
6871
6871
|
]
|
|
6872
6872
|
}
|
|
@@ -6979,8 +6979,8 @@ var init_ControlButton = __esm({
|
|
|
6979
6979
|
};
|
|
6980
6980
|
shapeMap = {
|
|
6981
6981
|
circle: "rounded-full",
|
|
6982
|
-
rounded: "rounded-
|
|
6983
|
-
square: "rounded-
|
|
6982
|
+
rounded: "rounded-interactive",
|
|
6983
|
+
square: "rounded-interactive"
|
|
6984
6984
|
};
|
|
6985
6985
|
variantMap = {
|
|
6986
6986
|
primary: "bg-primary text-primary-foreground border-primary hover:bg-primary-hover",
|
|
@@ -7148,12 +7148,12 @@ function TimerDisplay({
|
|
|
7148
7148
|
"div",
|
|
7149
7149
|
{
|
|
7150
7150
|
className: cn(
|
|
7151
|
-
"inline-flex items-center justify-center rounded-
|
|
7152
|
-
"bg-
|
|
7151
|
+
"inline-flex items-center justify-center rounded-container",
|
|
7152
|
+
"bg-card/80 border border-muted font-mono font-bold tabular-nums",
|
|
7153
7153
|
sizeMap4[size],
|
|
7154
|
-
running && "border-
|
|
7155
|
-
isLow && "text-
|
|
7156
|
-
!isLow && "text-
|
|
7154
|
+
running && "border-success/50",
|
|
7155
|
+
isLow && "text-error border-error/50 animate-pulse",
|
|
7156
|
+
!isLow && "text-foreground",
|
|
7157
7157
|
className
|
|
7158
7158
|
),
|
|
7159
7159
|
children: formatTime(seconds, format)
|
|
@@ -7186,17 +7186,17 @@ function ResourceCounter({
|
|
|
7186
7186
|
"div",
|
|
7187
7187
|
{
|
|
7188
7188
|
className: cn(
|
|
7189
|
-
"inline-flex items-center rounded-
|
|
7190
|
-
"bg-
|
|
7189
|
+
"inline-flex items-center rounded-container",
|
|
7190
|
+
"bg-card/80 border border-muted font-medium text-foreground",
|
|
7191
7191
|
sizes.wrapper,
|
|
7192
7192
|
className
|
|
7193
7193
|
),
|
|
7194
7194
|
children: [
|
|
7195
7195
|
icon && /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("flex-shrink-0", sizes.icon), children: icon }),
|
|
7196
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-
|
|
7196
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: label }),
|
|
7197
7197
|
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: cn("font-bold tabular-nums", color), children: [
|
|
7198
7198
|
value,
|
|
7199
|
-
max != null && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-
|
|
7199
|
+
max != null && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-muted-foreground", children: [
|
|
7200
7200
|
"/",
|
|
7201
7201
|
max
|
|
7202
7202
|
] })
|
|
@@ -7237,18 +7237,18 @@ function ItemSlot({
|
|
|
7237
7237
|
disabled: !isClickable,
|
|
7238
7238
|
title: label,
|
|
7239
7239
|
className: cn(
|
|
7240
|
-
"relative flex items-center justify-center rounded-
|
|
7241
|
-
"bg-
|
|
7240
|
+
"relative flex items-center justify-center rounded-interactive border-2",
|
|
7241
|
+
"bg-card/80 transition-all duration-150",
|
|
7242
7242
|
sizeMap6[size],
|
|
7243
|
-
empty ? "border-
|
|
7243
|
+
empty ? "border-border bg-card/50" : rarityBorderMap[rarity],
|
|
7244
7244
|
!empty && rarityGlowMap[rarity],
|
|
7245
|
-
selected && "ring-2 ring-
|
|
7245
|
+
selected && "ring-2 ring-foreground ring-offset-1 ring-offset-background",
|
|
7246
7246
|
isClickable && !empty && "hover:brightness-125 cursor-pointer",
|
|
7247
|
-
isClickable && empty && "hover:border-
|
|
7247
|
+
isClickable && empty && "hover:border-muted cursor-pointer",
|
|
7248
7248
|
!isClickable && "cursor-default",
|
|
7249
7249
|
className
|
|
7250
7250
|
),
|
|
7251
|
-
children: empty ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-
|
|
7251
|
+
children: empty ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground text-base", children: "+" }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
7252
7252
|
icon && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex-shrink-0", children: icon }),
|
|
7253
7253
|
quantity != null && quantity > 1 && /* @__PURE__ */ jsxRuntime.jsx(
|
|
7254
7254
|
"span",
|
|
@@ -7256,7 +7256,7 @@ function ItemSlot({
|
|
|
7256
7256
|
className: cn(
|
|
7257
7257
|
"absolute -bottom-1 -right-1 flex items-center justify-center",
|
|
7258
7258
|
"min-w-[18px] h-[18px] rounded-full px-1",
|
|
7259
|
-
"bg-
|
|
7259
|
+
"bg-surface border border-muted text-xs font-bold text-foreground"
|
|
7260
7260
|
),
|
|
7261
7261
|
children: quantity
|
|
7262
7262
|
}
|
|
@@ -7276,18 +7276,18 @@ var init_ItemSlot = __esm({
|
|
|
7276
7276
|
lg: "w-18 h-18 text-3xl"
|
|
7277
7277
|
};
|
|
7278
7278
|
rarityBorderMap = {
|
|
7279
|
-
common: "border-
|
|
7280
|
-
uncommon: "border-
|
|
7281
|
-
rare: "border-
|
|
7282
|
-
epic: "border-
|
|
7283
|
-
legendary: "border-
|
|
7279
|
+
common: "border-muted",
|
|
7280
|
+
uncommon: "border-success",
|
|
7281
|
+
rare: "border-info",
|
|
7282
|
+
epic: "border-accent",
|
|
7283
|
+
legendary: "border-warning"
|
|
7284
7284
|
};
|
|
7285
7285
|
rarityGlowMap = {
|
|
7286
7286
|
common: "",
|
|
7287
7287
|
uncommon: "",
|
|
7288
|
-
rare: "shadow-
|
|
7289
|
-
epic: "shadow-
|
|
7290
|
-
legendary: "shadow-
|
|
7288
|
+
rare: "shadow-sm",
|
|
7289
|
+
epic: "shadow-lg",
|
|
7290
|
+
legendary: "shadow-lg"
|
|
7291
7291
|
};
|
|
7292
7292
|
ItemSlot.displayName = "ItemSlot";
|
|
7293
7293
|
}
|
|
@@ -7305,8 +7305,8 @@ function TurnIndicator({
|
|
|
7305
7305
|
"div",
|
|
7306
7306
|
{
|
|
7307
7307
|
className: cn(
|
|
7308
|
-
"inline-flex items-center rounded-
|
|
7309
|
-
"bg-
|
|
7308
|
+
"inline-flex items-center rounded-container",
|
|
7309
|
+
"bg-card/80 border border-muted font-medium text-foreground",
|
|
7310
7310
|
sizes.wrapper,
|
|
7311
7311
|
className
|
|
7312
7312
|
),
|
|
@@ -7314,19 +7314,19 @@ function TurnIndicator({
|
|
|
7314
7314
|
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "font-bold tabular-nums", children: [
|
|
7315
7315
|
"Turn ",
|
|
7316
7316
|
currentTurn,
|
|
7317
|
-
maxTurns != null && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-
|
|
7317
|
+
maxTurns != null && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-muted-foreground", children: [
|
|
7318
7318
|
"/",
|
|
7319
7319
|
maxTurns
|
|
7320
7320
|
] })
|
|
7321
7321
|
] }),
|
|
7322
7322
|
phase && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
7323
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-
|
|
7324
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-
|
|
7323
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: "|" }),
|
|
7324
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: phase })
|
|
7325
7325
|
] }),
|
|
7326
7326
|
activeTeam && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
7327
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-
|
|
7328
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("rounded-full bg-
|
|
7329
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-
|
|
7327
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: "|" }),
|
|
7328
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("rounded-full bg-success/20", sizes.dot) }),
|
|
7329
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-success", children: activeTeam })
|
|
7330
7330
|
] })
|
|
7331
7331
|
]
|
|
7332
7332
|
}
|
|
@@ -7345,10 +7345,10 @@ var init_TurnIndicator = __esm({
|
|
|
7345
7345
|
}
|
|
7346
7346
|
});
|
|
7347
7347
|
function getComboIntensity(combo) {
|
|
7348
|
-
if (combo >= 10) return "text-
|
|
7349
|
-
if (combo >= 7) return "text-
|
|
7350
|
-
if (combo >= 4) return "text-
|
|
7351
|
-
return "text-
|
|
7348
|
+
if (combo >= 10) return "text-error animate-pulse";
|
|
7349
|
+
if (combo >= 7) return "text-warning";
|
|
7350
|
+
if (combo >= 4) return "text-warning";
|
|
7351
|
+
return "text-foreground";
|
|
7352
7352
|
}
|
|
7353
7353
|
function getComboScale(combo) {
|
|
7354
7354
|
if (combo >= 10) return "scale-110";
|
|
@@ -7369,19 +7369,19 @@ function ComboCounter({
|
|
|
7369
7369
|
{
|
|
7370
7370
|
className: cn(
|
|
7371
7371
|
"inline-flex flex-col items-center justify-center",
|
|
7372
|
-
"rounded-
|
|
7372
|
+
"rounded-container bg-card/80 border border-muted px-3 py-1.5",
|
|
7373
7373
|
"transition-transform duration-200",
|
|
7374
7374
|
getComboScale(combo),
|
|
7375
7375
|
className
|
|
7376
7376
|
),
|
|
7377
7377
|
children: [
|
|
7378
7378
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("font-black tabular-nums leading-none", sizes.combo, getComboIntensity(combo)), children: combo }),
|
|
7379
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("font-bold uppercase tracking-wider text-
|
|
7380
|
-
multiplier != null && multiplier > 1 && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: cn("font-bold text-
|
|
7379
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("font-bold uppercase tracking-wider text-muted-foreground", sizes.label), children: "combo" }),
|
|
7380
|
+
multiplier != null && multiplier > 1 && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: cn("font-bold text-warning tabular-nums", sizes.multiplier), children: [
|
|
7381
7381
|
"x",
|
|
7382
7382
|
multiplier.toFixed(1)
|
|
7383
7383
|
] }),
|
|
7384
|
-
streak != null && streak > 0 && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: cn("text-
|
|
7384
|
+
streak != null && streak > 0 && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: cn("text-muted-foreground tabular-nums", sizes.label), children: [
|
|
7385
7385
|
streak,
|
|
7386
7386
|
" streak"
|
|
7387
7387
|
] })
|
|
@@ -7417,8 +7417,8 @@ function XPBar({
|
|
|
7417
7417
|
"span",
|
|
7418
7418
|
{
|
|
7419
7419
|
className: cn(
|
|
7420
|
-
"flex-shrink-0 rounded-
|
|
7421
|
-
"bg-
|
|
7420
|
+
"flex-shrink-0 rounded-interactive font-bold",
|
|
7421
|
+
"bg-accent text-foreground border border-accent",
|
|
7422
7422
|
sizes.badge
|
|
7423
7423
|
),
|
|
7424
7424
|
children: [
|
|
@@ -7432,7 +7432,7 @@ function XPBar({
|
|
|
7432
7432
|
"div",
|
|
7433
7433
|
{
|
|
7434
7434
|
className: cn(
|
|
7435
|
-
"relative w-full overflow-hidden rounded-full bg-
|
|
7435
|
+
"relative w-full overflow-hidden rounded-full bg-muted border border-muted",
|
|
7436
7436
|
sizes.bar
|
|
7437
7437
|
),
|
|
7438
7438
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -7440,7 +7440,7 @@ function XPBar({
|
|
|
7440
7440
|
{
|
|
7441
7441
|
className: cn(
|
|
7442
7442
|
"absolute inset-y-0 left-0 rounded-full",
|
|
7443
|
-
"bg-gradient-to-r from-
|
|
7443
|
+
"bg-gradient-to-r from-accent to-info",
|
|
7444
7444
|
animated && "transition-all duration-500 ease-out"
|
|
7445
7445
|
),
|
|
7446
7446
|
style: { width: `${percentage}%` }
|
|
@@ -7448,7 +7448,7 @@ function XPBar({
|
|
|
7448
7448
|
)
|
|
7449
7449
|
}
|
|
7450
7450
|
),
|
|
7451
|
-
showLabel && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: cn("text-
|
|
7451
|
+
showLabel && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: cn("text-muted-foreground tabular-nums", sizes.text), children: [
|
|
7452
7452
|
current,
|
|
7453
7453
|
" / ",
|
|
7454
7454
|
max,
|
|
@@ -7484,7 +7484,7 @@ function WaypointMarker({
|
|
|
7484
7484
|
"div",
|
|
7485
7485
|
{
|
|
7486
7486
|
className: cn(
|
|
7487
|
-
"absolute rounded-full border-2 border-
|
|
7487
|
+
"absolute rounded-full border-2 border-info animate-ping opacity-50",
|
|
7488
7488
|
sizes.ring
|
|
7489
7489
|
)
|
|
7490
7490
|
}
|
|
@@ -7493,7 +7493,7 @@ function WaypointMarker({
|
|
|
7493
7493
|
"div",
|
|
7494
7494
|
{
|
|
7495
7495
|
className: cn(
|
|
7496
|
-
"absolute rounded-full border-2 border-
|
|
7496
|
+
"absolute rounded-full border-2 border-info",
|
|
7497
7497
|
sizes.ring
|
|
7498
7498
|
)
|
|
7499
7499
|
}
|
|
@@ -7504,9 +7504,9 @@ function WaypointMarker({
|
|
|
7504
7504
|
className: cn(
|
|
7505
7505
|
"relative flex items-center justify-center rounded-full transition-all duration-200",
|
|
7506
7506
|
sizes.dot,
|
|
7507
|
-
completed && "bg-
|
|
7508
|
-
active && !completed && "bg-
|
|
7509
|
-
!active && !completed && "bg-
|
|
7507
|
+
completed && "bg-success text-foreground",
|
|
7508
|
+
active && !completed && "bg-info text-foreground",
|
|
7509
|
+
!active && !completed && "bg-muted"
|
|
7510
7510
|
),
|
|
7511
7511
|
children: completed ? checkIcon : icon
|
|
7512
7512
|
}
|
|
@@ -7518,7 +7518,7 @@ function WaypointMarker({
|
|
|
7518
7518
|
className: cn(
|
|
7519
7519
|
"text-center whitespace-nowrap",
|
|
7520
7520
|
sizes.label,
|
|
7521
|
-
completed ? "text-
|
|
7521
|
+
completed ? "text-success" : active ? "text-info" : "text-muted-foreground"
|
|
7522
7522
|
),
|
|
7523
7523
|
children: label
|
|
7524
7524
|
}
|
|
@@ -7559,7 +7559,7 @@ function StatusEffect({
|
|
|
7559
7559
|
"div",
|
|
7560
7560
|
{
|
|
7561
7561
|
className: cn(
|
|
7562
|
-
"relative flex items-center justify-center rounded border-2",
|
|
7562
|
+
"relative flex items-center justify-center rounded-interactive border-2",
|
|
7563
7563
|
sizes.container,
|
|
7564
7564
|
variantStyles7[variant]
|
|
7565
7565
|
),
|
|
@@ -7570,7 +7570,7 @@ function StatusEffect({
|
|
|
7570
7570
|
"span",
|
|
7571
7571
|
{
|
|
7572
7572
|
className: cn(
|
|
7573
|
-
"absolute bottom-0 left-0 right-0 text-center font-mono font-bold text-
|
|
7573
|
+
"absolute bottom-0 left-0 right-0 text-center font-mono font-bold text-foreground bg-background/60 leading-tight",
|
|
7574
7574
|
sizes.timer
|
|
7575
7575
|
),
|
|
7576
7576
|
children: formatDuration(duration)
|
|
@@ -7583,7 +7583,7 @@ function StatusEffect({
|
|
|
7583
7583
|
"span",
|
|
7584
7584
|
{
|
|
7585
7585
|
className: cn(
|
|
7586
|
-
"absolute flex items-center justify-center rounded-full bg-
|
|
7586
|
+
"absolute flex items-center justify-center rounded-full bg-card text-foreground font-bold leading-none",
|
|
7587
7587
|
sizes.badge
|
|
7588
7588
|
),
|
|
7589
7589
|
children: stacks
|
|
@@ -7602,9 +7602,9 @@ var init_StatusEffect = __esm({
|
|
|
7602
7602
|
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" }
|
|
7603
7603
|
};
|
|
7604
7604
|
variantStyles7 = {
|
|
7605
|
-
buff: "border-
|
|
7606
|
-
debuff: "border-
|
|
7607
|
-
neutral: "border-
|
|
7605
|
+
buff: "border-success bg-success/20",
|
|
7606
|
+
debuff: "border-error bg-error/20",
|
|
7607
|
+
neutral: "border-muted bg-muted/20"
|
|
7608
7608
|
};
|
|
7609
7609
|
StatusEffect.displayName = "StatusEffect";
|
|
7610
7610
|
}
|
|
@@ -7643,10 +7643,10 @@ var init_DamageNumber = __esm({
|
|
|
7643
7643
|
lg: "text-2xl"
|
|
7644
7644
|
};
|
|
7645
7645
|
typeStyles = {
|
|
7646
|
-
damage: "text-
|
|
7647
|
-
heal: "text-
|
|
7648
|
-
crit: "text-
|
|
7649
|
-
miss: "text-
|
|
7646
|
+
damage: "text-error font-bold",
|
|
7647
|
+
heal: "text-success font-bold",
|
|
7648
|
+
crit: "text-warning font-extrabold",
|
|
7649
|
+
miss: "text-muted-foreground italic"
|
|
7650
7650
|
};
|
|
7651
7651
|
floatKeyframes = `
|
|
7652
7652
|
@keyframes damageFloat {
|
|
@@ -7669,12 +7669,12 @@ function DialogueBubble({
|
|
|
7669
7669
|
"div",
|
|
7670
7670
|
{
|
|
7671
7671
|
className: cn(
|
|
7672
|
-
"flex items-start gap-3 rounded-
|
|
7672
|
+
"flex items-start gap-3 rounded-container bg-background/80 backdrop-blur-sm px-4 py-3 border border-border/10",
|
|
7673
7673
|
position === "top" ? "rounded-bl-none" : "rounded-tl-none",
|
|
7674
7674
|
className
|
|
7675
7675
|
),
|
|
7676
7676
|
children: [
|
|
7677
|
-
portrait && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-shrink-0 w-12 h-12 rounded-full overflow-hidden border-2 border-
|
|
7677
|
+
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(
|
|
7678
7678
|
"img",
|
|
7679
7679
|
{
|
|
7680
7680
|
src: portrait,
|
|
@@ -7683,8 +7683,8 @@ function DialogueBubble({
|
|
|
7683
7683
|
}
|
|
7684
7684
|
) }),
|
|
7685
7685
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-1 min-w-0", children: [
|
|
7686
|
-
speaker && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-bold text-
|
|
7687
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm text-
|
|
7686
|
+
speaker && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-bold text-warning", children: speaker }),
|
|
7687
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm text-foreground leading-relaxed", children: text })
|
|
7688
7688
|
] })
|
|
7689
7689
|
]
|
|
7690
7690
|
}
|
|
@@ -7711,7 +7711,7 @@ function ChoiceButton({
|
|
|
7711
7711
|
disabled,
|
|
7712
7712
|
onClick,
|
|
7713
7713
|
className: cn(
|
|
7714
|
-
"w-full text-left px-4 py-2.5 rounded-
|
|
7714
|
+
"w-full text-left px-4 py-2.5 rounded-interactive border transition-all duration-150",
|
|
7715
7715
|
"flex items-center gap-2",
|
|
7716
7716
|
selected ? "bg-accent/15 border-accent text-foreground" : "bg-muted/40 border-border text-foreground hover:bg-muted hover:border-border",
|
|
7717
7717
|
disabled && "opacity-40 cursor-not-allowed hover:bg-muted/40 hover:border-border",
|
|
@@ -7764,7 +7764,7 @@ function ActionButton({
|
|
|
7764
7764
|
disabled: isDisabled,
|
|
7765
7765
|
onClick,
|
|
7766
7766
|
className: cn(
|
|
7767
|
-
"relative inline-flex items-center gap-1.5 rounded-
|
|
7767
|
+
"relative inline-flex items-center gap-1.5 rounded-interactive border font-medium overflow-hidden transition-colors duration-150",
|
|
7768
7768
|
sizes.button,
|
|
7769
7769
|
variantStyles8[variant],
|
|
7770
7770
|
isDisabled && "opacity-60 cursor-not-allowed",
|
|
@@ -7807,9 +7807,9 @@ var init_ActionButton = __esm({
|
|
|
7807
7807
|
init_cn();
|
|
7808
7808
|
init_Icon();
|
|
7809
7809
|
sizeMap13 = {
|
|
7810
|
-
sm: { button: "px-3
|
|
7811
|
-
md: { button: "px-4
|
|
7812
|
-
lg: { button: "
|
|
7810
|
+
sm: { button: "h-button-sm px-3 text-xs", hotkey: "text-[9px] px-1", icon: "text-xs" },
|
|
7811
|
+
md: { button: "h-button-md px-4 text-sm", hotkey: "text-xs px-1.5", icon: "text-sm" },
|
|
7812
|
+
lg: { button: "h-button-lg px-5 text-base", hotkey: "text-xs px-2", icon: "text-base" }
|
|
7813
7813
|
};
|
|
7814
7814
|
variantStyles8 = {
|
|
7815
7815
|
primary: "bg-primary text-primary-foreground hover:bg-primary-hover border-primary",
|
|
@@ -7889,7 +7889,7 @@ function MiniMap({
|
|
|
7889
7889
|
"div",
|
|
7890
7890
|
{
|
|
7891
7891
|
className: cn(
|
|
7892
|
-
"relative inline-block border border-
|
|
7892
|
+
"relative inline-block border border-border/20 rounded-container",
|
|
7893
7893
|
className
|
|
7894
7894
|
),
|
|
7895
7895
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -10961,7 +10961,7 @@ function ActionTile({
|
|
|
10961
10961
|
{
|
|
10962
10962
|
display: "flex",
|
|
10963
10963
|
className: cn(
|
|
10964
|
-
"flex-col items-center gap-1 rounded-
|
|
10964
|
+
"flex-col items-center gap-1 rounded-container border-2 transition-all select-none",
|
|
10965
10965
|
config.px,
|
|
10966
10966
|
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",
|
|
10967
10967
|
className
|
|
@@ -12261,12 +12261,12 @@ function IsometricCanvas({
|
|
|
12261
12261
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
12262
12262
|
Box,
|
|
12263
12263
|
{
|
|
12264
|
-
className: cn("relative w-full overflow-hidden rounded-
|
|
12264
|
+
className: cn("relative w-full overflow-hidden rounded-container", className),
|
|
12265
12265
|
style: { height: viewportSize.height },
|
|
12266
12266
|
"data-testid": "game-canvas-empty",
|
|
12267
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "flex items-center justify-center h-full bg-[var(--color-card)] rounded-
|
|
12267
|
+
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: [
|
|
12268
12268
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "map", size: "xl" }),
|
|
12269
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", className: "text-
|
|
12269
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", className: "text-muted-foreground", children: t("canvas.emptyMessage") || "No map data loaded" })
|
|
12270
12270
|
] }) })
|
|
12271
12271
|
}
|
|
12272
12272
|
);
|
|
@@ -12664,19 +12664,19 @@ function BattleBoard({
|
|
|
12664
12664
|
}
|
|
12665
12665
|
)
|
|
12666
12666
|
] }),
|
|
12667
|
-
gameResult && (gameOverOverlay ? gameOverOverlay(ctx) : /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "absolute inset-0 z-50 flex items-center justify-center bg-
|
|
12667
|
+
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: [
|
|
12668
12668
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
12669
12669
|
Typography,
|
|
12670
12670
|
{
|
|
12671
12671
|
variant: "h2",
|
|
12672
12672
|
className: cn(
|
|
12673
12673
|
"text-4xl font-black tracking-widest uppercase",
|
|
12674
|
-
gameResult === "victory" ? "text-
|
|
12674
|
+
gameResult === "victory" ? "text-warning" : "text-error"
|
|
12675
12675
|
),
|
|
12676
12676
|
children: gameResult === "victory" ? t("battle.victory") : t("battle.defeat")
|
|
12677
12677
|
}
|
|
12678
12678
|
),
|
|
12679
|
-
/* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "body1", className: "text-
|
|
12679
|
+
/* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "body1", className: "text-muted-foreground", children: [
|
|
12680
12680
|
t("battle.turnsPlayed"),
|
|
12681
12681
|
": ",
|
|
12682
12682
|
currentTurn
|
|
@@ -17553,7 +17553,7 @@ function BuilderBoard({
|
|
|
17553
17553
|
backgroundPosition: "center"
|
|
17554
17554
|
},
|
|
17555
17555
|
children: /* @__PURE__ */ jsxRuntime.jsxs(VStack, { gap: "lg", className: "p-4", children: [
|
|
17556
|
-
entity.headerImage && !headerError ? /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "w-full h-32 overflow-hidden rounded-
|
|
17556
|
+
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,
|
|
17557
17557
|
/* @__PURE__ */ jsxRuntime.jsx(Card, { className: "p-4", children: /* @__PURE__ */ jsxRuntime.jsxs(VStack, { gap: "sm", children: [
|
|
17558
17558
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "h4", weight: "bold", children: entity.title }),
|
|
17559
17559
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", children: entity.description })
|
|
@@ -17591,7 +17591,7 @@ function BuilderBoard({
|
|
|
17591
17591
|
{
|
|
17592
17592
|
gap: "sm",
|
|
17593
17593
|
align: "center",
|
|
17594
|
-
className: `p-3 border-2 rounded ${result ? result.correct ? "border-
|
|
17594
|
+
className: `p-3 border-2 rounded ${result ? result.correct ? "border-success" : "border-error" : selectedComponent ? "border-dashed border-foreground cursor-pointer" : "border-border"}`,
|
|
17595
17595
|
onClick: () => handlePlaceComponent(slot.id),
|
|
17596
17596
|
children: [
|
|
17597
17597
|
/* @__PURE__ */ jsxRuntime.jsxs(VStack, { gap: "none", className: "flex-1", children: [
|
|
@@ -17606,7 +17606,7 @@ function BuilderBoard({
|
|
|
17606
17606
|
] }) : null,
|
|
17607
17607
|
placedComp.label
|
|
17608
17608
|
] }),
|
|
17609
|
-
result && /* @__PURE__ */ jsxRuntime.jsx(Icon, { icon: result.correct ? LucideIcons2.CheckCircle : LucideIcons2.XCircle, size: "sm", className: result.correct ? "text-
|
|
17609
|
+
result && /* @__PURE__ */ jsxRuntime.jsx(Icon, { icon: result.correct ? LucideIcons2.CheckCircle : LucideIcons2.XCircle, size: "sm", className: result.correct ? "text-success" : "text-error" })
|
|
17610
17610
|
] }) : /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", className: "text-muted-foreground", children: t("builder.empty") })
|
|
17611
17611
|
]
|
|
17612
17612
|
},
|
|
@@ -17615,10 +17615,10 @@ function BuilderBoard({
|
|
|
17615
17615
|
}) })
|
|
17616
17616
|
] }) }),
|
|
17617
17617
|
submitted && /* @__PURE__ */ jsxRuntime.jsx(Card, { className: "p-4", children: /* @__PURE__ */ jsxRuntime.jsxs(VStack, { gap: "sm", align: "center", children: [
|
|
17618
|
-
/* @__PURE__ */ jsxRuntime.jsx(Icon, { icon: allCorrect ? LucideIcons2.CheckCircle : LucideIcons2.XCircle, size: "lg", className: allCorrect ? "text-
|
|
17618
|
+
/* @__PURE__ */ jsxRuntime.jsx(Icon, { icon: allCorrect ? LucideIcons2.CheckCircle : LucideIcons2.XCircle, size: "lg", className: allCorrect ? "text-success" : "text-error" }),
|
|
17619
17619
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", weight: "bold", children: allCorrect ? entity.successMessage ?? t("builder.success") : entity.failMessage ?? t("builder.incorrect") })
|
|
17620
17620
|
] }) }),
|
|
17621
|
-
showHint && entity.hint && /* @__PURE__ */ jsxRuntime.jsx(Card, { className: "p-4 border-l-4 border-l-
|
|
17621
|
+
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 }) }),
|
|
17622
17622
|
/* @__PURE__ */ jsxRuntime.jsxs(HStack, { gap: "sm", justify: "center", children: [
|
|
17623
17623
|
!submitted ? /* @__PURE__ */ jsxRuntime.jsxs(Button, { variant: "primary", onClick: handleSubmit, disabled: !allPlaced, children: [
|
|
17624
17624
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { icon: LucideIcons2.Wrench, size: "sm" }),
|
|
@@ -19240,7 +19240,7 @@ function CanvasEffectEngine({
|
|
|
19240
19240
|
flash && /* @__PURE__ */ jsxRuntime.jsx(
|
|
19241
19241
|
Box,
|
|
19242
19242
|
{
|
|
19243
|
-
className: "absolute inset-0 z-20 pointer-events-none rounded-
|
|
19243
|
+
className: "absolute inset-0 z-20 pointer-events-none rounded-container",
|
|
19244
19244
|
style: { backgroundColor: flash.color, opacity: flash.alpha }
|
|
19245
19245
|
}
|
|
19246
19246
|
),
|
|
@@ -19308,7 +19308,7 @@ function EmojiEffect({
|
|
|
19308
19308
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
19309
19309
|
Box,
|
|
19310
19310
|
{
|
|
19311
|
-
className: "absolute rounded-
|
|
19311
|
+
className: "absolute rounded-pill animate-ping",
|
|
19312
19312
|
style: {
|
|
19313
19313
|
width: 48 * intensity,
|
|
19314
19314
|
height: 48 * intensity,
|
|
@@ -21125,7 +21125,7 @@ function ClassifierBoard({
|
|
|
21125
21125
|
backgroundPosition: "center"
|
|
21126
21126
|
},
|
|
21127
21127
|
children: /* @__PURE__ */ jsxRuntime.jsxs(VStack, { gap: "lg", className: "p-4", children: [
|
|
21128
|
-
entity.headerImage && !headerError ? /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "w-full h-32 overflow-hidden rounded-
|
|
21128
|
+
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,
|
|
21129
21129
|
/* @__PURE__ */ jsxRuntime.jsx(Card, { className: "p-4", children: /* @__PURE__ */ jsxRuntime.jsxs(VStack, { gap: "sm", children: [
|
|
21130
21130
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "h4", weight: "bold", children: entity.title }),
|
|
21131
21131
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", children: entity.description })
|
|
@@ -21140,7 +21140,7 @@ function ClassifierBoard({
|
|
|
21140
21140
|
/* @__PURE__ */ jsxRuntime.jsx(VStack, { gap: "md", children: categories.map((cat) => {
|
|
21141
21141
|
const catItems = items.filter((item) => assignments[item.id] === cat.id);
|
|
21142
21142
|
return /* @__PURE__ */ jsxRuntime.jsx(Card, { className: "p-4", children: /* @__PURE__ */ jsxRuntime.jsxs(VStack, { gap: "sm", children: [
|
|
21143
|
-
cat.imageUrl && /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "w-full h-16 overflow-hidden rounded-
|
|
21143
|
+
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" }) }),
|
|
21144
21144
|
/* @__PURE__ */ jsxRuntime.jsxs(HStack, { justify: "between", align: "center", children: [
|
|
21145
21145
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", weight: "bold", children: cat.label }),
|
|
21146
21146
|
/* @__PURE__ */ jsxRuntime.jsx(Badge, { size: "sm", children: catItems.length })
|
|
@@ -21151,12 +21151,12 @@ function ClassifierBoard({
|
|
|
21151
21151
|
Badge,
|
|
21152
21152
|
{
|
|
21153
21153
|
size: "sm",
|
|
21154
|
-
className: `cursor-pointer ${result ? result.correct ? "border-
|
|
21154
|
+
className: `cursor-pointer ${result ? result.correct ? "border-success bg-success/10" : "border-error bg-error/10" : ""}`,
|
|
21155
21155
|
onClick: () => handleUnassign(item.id),
|
|
21156
21156
|
children: [
|
|
21157
21157
|
item.iconUrl && /* @__PURE__ */ jsxRuntime.jsx("img", { src: item.iconUrl, alt: "", className: "w-3 h-3 object-contain inline-block" }),
|
|
21158
21158
|
item.label,
|
|
21159
|
-
result && /* @__PURE__ */ jsxRuntime.jsx(Icon, { icon: result.correct ? LucideIcons2.CheckCircle : LucideIcons2.XCircle, size: "xs", className: result.correct ? "text-
|
|
21159
|
+
result && /* @__PURE__ */ jsxRuntime.jsx(Icon, { icon: result.correct ? LucideIcons2.CheckCircle : LucideIcons2.XCircle, size: "xs", className: result.correct ? "text-success" : "text-error" })
|
|
21160
21160
|
]
|
|
21161
21161
|
},
|
|
21162
21162
|
item.id
|
|
@@ -21179,11 +21179,11 @@ function ClassifierBoard({
|
|
|
21179
21179
|
] }) }, cat.id);
|
|
21180
21180
|
}) }),
|
|
21181
21181
|
submitted && /* @__PURE__ */ jsxRuntime.jsx(Card, { className: "p-4", children: /* @__PURE__ */ jsxRuntime.jsxs(VStack, { gap: "sm", align: "center", children: [
|
|
21182
|
-
/* @__PURE__ */ jsxRuntime.jsx(Icon, { icon: allCorrect ? LucideIcons2.CheckCircle : LucideIcons2.XCircle, size: "lg", className: allCorrect ? "text-
|
|
21182
|
+
/* @__PURE__ */ jsxRuntime.jsx(Icon, { icon: allCorrect ? LucideIcons2.CheckCircle : LucideIcons2.XCircle, size: "lg", className: allCorrect ? "text-success" : "text-error" }),
|
|
21183
21183
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", weight: "bold", children: allCorrect ? entity.successMessage ?? t("classifier.allCorrect") : `${correctCount}/${items.length} ${t("classifier.correct")}` }),
|
|
21184
21184
|
!allCorrect && entity.failMessage && /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", className: "text-muted-foreground", children: entity.failMessage })
|
|
21185
21185
|
] }) }),
|
|
21186
|
-
showHint && entity.hint && /* @__PURE__ */ jsxRuntime.jsx(Card, { className: "p-4 border-l-4 border-l-
|
|
21186
|
+
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 }) }),
|
|
21187
21187
|
/* @__PURE__ */ jsxRuntime.jsxs(HStack, { gap: "sm", justify: "center", children: [
|
|
21188
21188
|
!submitted ? /* @__PURE__ */ jsxRuntime.jsxs(Button, { variant: "primary", onClick: handleSubmit, disabled: !allAssigned, children: [
|
|
21189
21189
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { icon: LucideIcons2.Send, size: "sm" }),
|
|
@@ -22231,7 +22231,7 @@ function CraftingRecipe({
|
|
|
22231
22231
|
Box,
|
|
22232
22232
|
{
|
|
22233
22233
|
className: cn(
|
|
22234
|
-
"flex flex-wrap items-center gap-3 rounded-
|
|
22234
|
+
"flex flex-wrap items-center gap-3 rounded-container bg-muted/50 border border-border/50 p-3",
|
|
22235
22235
|
className
|
|
22236
22236
|
),
|
|
22237
22237
|
children: [
|
|
@@ -22248,10 +22248,10 @@ function CraftingRecipe({
|
|
|
22248
22248
|
className: cn(!hasSufficient && "opacity-50")
|
|
22249
22249
|
}
|
|
22250
22250
|
) }),
|
|
22251
|
-
index < inputs.length - 1 && /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "plus", size: "sm", className: "text-
|
|
22251
|
+
index < inputs.length - 1 && /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "plus", size: "sm", className: "text-muted-foreground" })
|
|
22252
22252
|
] }, index);
|
|
22253
22253
|
}) }),
|
|
22254
|
-
/* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "arrow-right", size: "md", className: "text-
|
|
22254
|
+
/* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "arrow-right", size: "md", className: "text-muted-foreground" }),
|
|
22255
22255
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
22256
22256
|
ItemSlot,
|
|
22257
22257
|
{
|
|
@@ -22339,7 +22339,7 @@ function DPad({
|
|
|
22339
22339
|
createButton("up"),
|
|
22340
22340
|
/* @__PURE__ */ jsxRuntime.jsx("div", {}),
|
|
22341
22341
|
createButton("left"),
|
|
22342
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-6 h-6 rounded-
|
|
22342
|
+
/* @__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" }) }),
|
|
22343
22343
|
createButton("right"),
|
|
22344
22344
|
/* @__PURE__ */ jsxRuntime.jsx("div", {}),
|
|
22345
22345
|
createButton("down"),
|
|
@@ -26524,7 +26524,7 @@ function StatBadge({
|
|
|
26524
26524
|
"div",
|
|
26525
26525
|
{
|
|
26526
26526
|
className: cn(
|
|
26527
|
-
"inline-flex items-center gap-2 rounded-
|
|
26527
|
+
"inline-flex items-center gap-2 rounded-container border backdrop-blur-sm",
|
|
26528
26528
|
sizeMap17[size] ?? sizeMap17.md,
|
|
26529
26529
|
variantMap2[variant] ?? variantMap2.default,
|
|
26530
26530
|
className
|
|
@@ -26670,10 +26670,10 @@ function QuestTracker({
|
|
|
26670
26670
|
Box,
|
|
26671
26671
|
{
|
|
26672
26672
|
className: cn(
|
|
26673
|
-
"flex items-start gap-3 rounded-
|
|
26674
|
-
isActive && !isCompleted && "bg-
|
|
26675
|
-
isCompleted && "bg-
|
|
26676
|
-
!isActive && !isCompleted && "bg-
|
|
26673
|
+
"flex items-start gap-3 rounded-container px-3 py-2 transition-colors",
|
|
26674
|
+
isActive && !isCompleted && "bg-info/20 border border-info/50",
|
|
26675
|
+
isCompleted && "bg-success/10 border border-success/30 opacity-70",
|
|
26676
|
+
!isActive && !isCompleted && "bg-muted/30 border border-border/30"
|
|
26677
26677
|
),
|
|
26678
26678
|
children: [
|
|
26679
26679
|
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "flex-shrink-0 pt-0.5", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -26691,9 +26691,9 @@ function QuestTracker({
|
|
|
26691
26691
|
variant: "body2",
|
|
26692
26692
|
className: cn(
|
|
26693
26693
|
"font-medium truncate",
|
|
26694
|
-
isCompleted && "line-through text-
|
|
26695
|
-
isActive && !isCompleted && "text-
|
|
26696
|
-
!isActive && !isCompleted && "text-
|
|
26694
|
+
isCompleted && "line-through text-muted-foreground",
|
|
26695
|
+
isActive && !isCompleted && "text-info",
|
|
26696
|
+
!isActive && !isCompleted && "text-muted-foreground"
|
|
26697
26697
|
),
|
|
26698
26698
|
children: quest.title
|
|
26699
26699
|
}
|
|
@@ -26711,7 +26711,7 @@ function QuestTracker({
|
|
|
26711
26711
|
Typography,
|
|
26712
26712
|
{
|
|
26713
26713
|
variant: "caption",
|
|
26714
|
-
className: "text-
|
|
26714
|
+
className: "text-muted-foreground mt-1",
|
|
26715
26715
|
children: [
|
|
26716
26716
|
quest.progress,
|
|
26717
26717
|
" / ",
|
|
@@ -26768,14 +26768,14 @@ function PowerupSlots({
|
|
|
26768
26768
|
{
|
|
26769
26769
|
className: cn(
|
|
26770
26770
|
"absolute -bottom-1 left-1/2 -translate-x-1/2",
|
|
26771
|
-
"rounded px-1 py-px",
|
|
26772
|
-
"bg-
|
|
26771
|
+
"rounded-interactive px-1 py-px",
|
|
26772
|
+
"bg-background/80 border border-border"
|
|
26773
26773
|
),
|
|
26774
26774
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
26775
26775
|
Typography,
|
|
26776
26776
|
{
|
|
26777
26777
|
variant: "caption",
|
|
26778
|
-
className: "text-[9px] font-mono font-bold text-
|
|
26778
|
+
className: "text-[9px] font-mono font-bold text-warning whitespace-nowrap",
|
|
26779
26779
|
children: formatTime2(powerup.remainingTime)
|
|
26780
26780
|
}
|
|
26781
26781
|
)
|
|
@@ -26897,7 +26897,7 @@ function HealthPanel({
|
|
|
26897
26897
|
Box,
|
|
26898
26898
|
{
|
|
26899
26899
|
className: cn(
|
|
26900
|
-
"rounded-
|
|
26900
|
+
"rounded-container bg-[var(--color-card)]/90 border border-border backdrop-blur-sm",
|
|
26901
26901
|
sizes.padding,
|
|
26902
26902
|
className
|
|
26903
26903
|
),
|
|
@@ -26908,7 +26908,7 @@ function HealthPanel({
|
|
|
26908
26908
|
{
|
|
26909
26909
|
variant: "caption",
|
|
26910
26910
|
weight: "bold",
|
|
26911
|
-
className: "text-
|
|
26911
|
+
className: "text-muted-foreground uppercase tracking-wider",
|
|
26912
26912
|
children: label
|
|
26913
26913
|
}
|
|
26914
26914
|
),
|
|
@@ -26929,7 +26929,7 @@ function HealthPanel({
|
|
|
26929
26929
|
as: "span",
|
|
26930
26930
|
variant: "caption",
|
|
26931
26931
|
weight: "bold",
|
|
26932
|
-
className: "text-
|
|
26932
|
+
className: "text-info ml-1",
|
|
26933
26933
|
children: [
|
|
26934
26934
|
"+",
|
|
26935
26935
|
shield
|
|
@@ -26954,14 +26954,14 @@ function HealthPanel({
|
|
|
26954
26954
|
Box,
|
|
26955
26955
|
{
|
|
26956
26956
|
className: cn(
|
|
26957
|
-
"relative overflow-hidden rounded-
|
|
26957
|
+
"relative overflow-hidden rounded-container bg-muted",
|
|
26958
26958
|
size === "sm" ? "h-1" : size === "md" ? "h-1.5" : "h-2",
|
|
26959
26959
|
"w-full"
|
|
26960
26960
|
),
|
|
26961
26961
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
26962
26962
|
Box,
|
|
26963
26963
|
{
|
|
26964
|
-
className: "absolute inset-y-0 left-0 rounded-
|
|
26964
|
+
className: "absolute inset-y-0 left-0 rounded-container bg-info transition-all duration-300",
|
|
26965
26965
|
style: { width: `${Math.min(100, shield / max * 100)}%` }
|
|
26966
26966
|
}
|
|
26967
26967
|
)
|
|
@@ -27020,7 +27020,7 @@ function ScoreBoard({
|
|
|
27020
27020
|
Card,
|
|
27021
27021
|
{
|
|
27022
27022
|
className: cn(
|
|
27023
|
-
"bg-[var(--color-card)]/90 border-
|
|
27023
|
+
"bg-[var(--color-card)]/90 border-border backdrop-blur-sm",
|
|
27024
27024
|
className
|
|
27025
27025
|
),
|
|
27026
27026
|
children: /* @__PURE__ */ jsxRuntime.jsx(CardContent, { className: "p-3", children: /* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "flex items-center gap-3 flex-wrap", children: [
|
|
@@ -27137,7 +27137,7 @@ function TurnPanel({
|
|
|
27137
27137
|
Box,
|
|
27138
27138
|
{
|
|
27139
27139
|
className: cn(
|
|
27140
|
-
"flex items-center gap-3 rounded-
|
|
27140
|
+
"flex items-center gap-3 rounded-container bg-[var(--color-card)]/90 border border-border backdrop-blur-sm px-3 py-2",
|
|
27141
27141
|
className
|
|
27142
27142
|
),
|
|
27143
27143
|
children: [
|
|
@@ -27189,7 +27189,7 @@ function EnemyPlate({
|
|
|
27189
27189
|
Box,
|
|
27190
27190
|
{
|
|
27191
27191
|
className: cn(
|
|
27192
|
-
"inline-flex flex-col gap-1 rounded-
|
|
27192
|
+
"inline-flex flex-col gap-1 rounded-container bg-[var(--color-card)]/90 border border-border backdrop-blur-sm px-3 py-1.5",
|
|
27193
27193
|
"min-w-[120px]",
|
|
27194
27194
|
className
|
|
27195
27195
|
),
|
|
@@ -27283,7 +27283,7 @@ function UnitCommandBar({
|
|
|
27283
27283
|
Box,
|
|
27284
27284
|
{
|
|
27285
27285
|
className: cn(
|
|
27286
|
-
"flex items-center gap-1.5 rounded-
|
|
27286
|
+
"flex items-center gap-1.5 rounded-container bg-[var(--color-card)]/90 border border-border backdrop-blur-sm px-2 py-1.5",
|
|
27287
27287
|
className
|
|
27288
27288
|
),
|
|
27289
27289
|
children: commands.map((command, i) => /* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "flex flex-col items-center gap-0.5", children: [
|
|
@@ -27368,8 +27368,8 @@ function GameHud({
|
|
|
27368
27368
|
className: cn(
|
|
27369
27369
|
"relative z-10",
|
|
27370
27370
|
positionMap[position],
|
|
27371
|
-
transparent && "bg-gradient-to-b from-
|
|
27372
|
-
position === "bottom" && "bg-gradient-to-t from-
|
|
27371
|
+
transparent && "bg-gradient-to-b from-background/50 to-transparent",
|
|
27372
|
+
position === "bottom" && "bg-gradient-to-t from-background/50 to-transparent",
|
|
27373
27373
|
className
|
|
27374
27374
|
),
|
|
27375
27375
|
children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex gap-4", children: stats.map((stat, i) => /* @__PURE__ */ jsxRuntime.jsx(StatBadge, { ...stat, size }, i)) })
|
|
@@ -27527,8 +27527,8 @@ function DialogueBox({
|
|
|
27527
27527
|
tabIndex: 0,
|
|
27528
27528
|
role: "dialog",
|
|
27529
27529
|
"aria-label": "Dialogue",
|
|
27530
|
-
children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mx-4 my-4 bg-[var(--color-card)] bg-opacity-95 border-2 border-
|
|
27531
|
-
dialogue.portrait && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-shrink-0 p-4 border-r border-
|
|
27530
|
+
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: [
|
|
27531
|
+
dialogue.portrait && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-shrink-0 p-4 border-r border-border", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
27532
27532
|
"img",
|
|
27533
27533
|
{
|
|
27534
27534
|
src: dialogue.portrait,
|
|
@@ -27538,7 +27538,7 @@ function DialogueBox({
|
|
|
27538
27538
|
}
|
|
27539
27539
|
) }),
|
|
27540
27540
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1 p-4", children: [
|
|
27541
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-
|
|
27541
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-warning font-bold mb-2", children: dialogue.speaker }),
|
|
27542
27542
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-[var(--color-foreground)] text-lg leading-relaxed min-h-[60px]", children: [
|
|
27543
27543
|
displayedText,
|
|
27544
27544
|
isTyping && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "animate-pulse", children: "\u258C" })
|
|
@@ -27548,9 +27548,9 @@ function DialogueBox({
|
|
|
27548
27548
|
{
|
|
27549
27549
|
type: "button",
|
|
27550
27550
|
className: cn(
|
|
27551
|
-
"block w-full text-left px-4 py-2 rounded transition-colors",
|
|
27552
|
-
"hover:bg-[var(--color-surface,#374151)] focus:outline-none focus:ring-2 focus:ring-
|
|
27553
|
-
selectedChoice === index ? "bg-[var(--color-surface,#374151)] text-
|
|
27551
|
+
"block w-full text-left px-4 py-2 rounded-interactive transition-colors",
|
|
27552
|
+
"hover:bg-[var(--color-surface,#374151)] focus:outline-none focus:ring-2 focus:ring-warning",
|
|
27553
|
+
selectedChoice === index ? "bg-[var(--color-surface,#374151)] text-warning" : "bg-[var(--color-card)] text-[var(--color-foreground)]"
|
|
27554
27554
|
),
|
|
27555
27555
|
onClick: (e) => {
|
|
27556
27556
|
e.stopPropagation();
|
|
@@ -27558,7 +27558,7 @@ function DialogueBox({
|
|
|
27558
27558
|
onChoice?.(choice);
|
|
27559
27559
|
},
|
|
27560
27560
|
children: [
|
|
27561
|
-
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-
|
|
27561
|
+
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-muted-foreground mr-2", children: [
|
|
27562
27562
|
index + 1,
|
|
27563
27563
|
"."
|
|
27564
27564
|
] }),
|
|
@@ -27567,7 +27567,7 @@ function DialogueBox({
|
|
|
27567
27567
|
},
|
|
27568
27568
|
index
|
|
27569
27569
|
)) }),
|
|
27570
|
-
!isTyping && !dialogue.choices?.length && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-4 text-
|
|
27570
|
+
!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..." })
|
|
27571
27571
|
] })
|
|
27572
27572
|
] }) })
|
|
27573
27573
|
}
|
|
@@ -27670,7 +27670,7 @@ function InventoryPanel({
|
|
|
27670
27670
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
27671
27671
|
"div",
|
|
27672
27672
|
{
|
|
27673
|
-
className: "grid gap-1 bg-[var(--color-card)] p-2 rounded-
|
|
27673
|
+
className: "grid gap-1 bg-[var(--color-card)] p-2 rounded-container border border-border",
|
|
27674
27674
|
style: {
|
|
27675
27675
|
gridTemplateColumns: `repeat(${safeColumns}, ${slotSize}px)`,
|
|
27676
27676
|
gridTemplateRows: `repeat(${rows}, ${slotSize}px)`
|
|
@@ -27682,8 +27682,8 @@ function InventoryPanel({
|
|
|
27682
27682
|
className: cn(
|
|
27683
27683
|
"relative flex items-center justify-center",
|
|
27684
27684
|
"bg-[var(--color-card)] border rounded transition-colors",
|
|
27685
|
-
"hover:bg-[var(--color-surface,#374151)] focus:outline-none focus:ring-2 focus:ring-
|
|
27686
|
-
selectedSlot === index ? "border-
|
|
27685
|
+
"hover:bg-[var(--color-surface,#374151)] focus:outline-none focus:ring-2 focus:ring-info",
|
|
27686
|
+
selectedSlot === index ? "border-warning bg-[var(--color-surface,#374151)]" : "border-muted"
|
|
27687
27687
|
),
|
|
27688
27688
|
style: { width: slotSize, height: slotSize },
|
|
27689
27689
|
onClick: () => handleSlotClick(index),
|
|
@@ -27702,8 +27702,8 @@ function InventoryPanel({
|
|
|
27702
27702
|
className: "w-8 h-8 object-contain",
|
|
27703
27703
|
style: { imageRendering: "pixelated" }
|
|
27704
27704
|
}
|
|
27705
|
-
) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-8 h-8 bg-
|
|
27706
|
-
item.quantity > 1 && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "absolute bottom-0 right-0 bg-
|
|
27705
|
+
) : /* @__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() }),
|
|
27706
|
+
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 })
|
|
27707
27707
|
] })
|
|
27708
27708
|
},
|
|
27709
27709
|
index
|
|
@@ -27713,7 +27713,7 @@ function InventoryPanel({
|
|
|
27713
27713
|
showTooltips && hoveredItem && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
27714
27714
|
"div",
|
|
27715
27715
|
{
|
|
27716
|
-
className: "fixed z-50 bg-[var(--color-card)] border border-
|
|
27716
|
+
className: "fixed z-50 bg-[var(--color-card)] border border-border rounded-container p-2 shadow-elevation-card pointer-events-none",
|
|
27717
27717
|
style: {
|
|
27718
27718
|
left: tooltipPosition.x,
|
|
27719
27719
|
top: tooltipPosition.y,
|
|
@@ -27721,8 +27721,8 @@ function InventoryPanel({
|
|
|
27721
27721
|
},
|
|
27722
27722
|
children: [
|
|
27723
27723
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "font-semibold text-[var(--color-foreground)]", children: hoveredItem.name || hoveredItem.type }),
|
|
27724
|
-
hoveredItem.description && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-sm text-
|
|
27725
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-xs text-
|
|
27724
|
+
hoveredItem.description && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-sm text-muted-foreground mt-1", children: hoveredItem.description }),
|
|
27725
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-xs text-muted-foreground mt-1", children: [
|
|
27726
27726
|
"Quantity: ",
|
|
27727
27727
|
hoveredItem.quantity
|
|
27728
27728
|
] })
|
|
@@ -27800,7 +27800,7 @@ function GameMenu({
|
|
|
27800
27800
|
children: title
|
|
27801
27801
|
}
|
|
27802
27802
|
),
|
|
27803
|
-
subtitle && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-2 text-lg text-
|
|
27803
|
+
subtitle && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-2 text-lg text-muted-foreground tracking-widest uppercase", children: subtitle })
|
|
27804
27804
|
] }),
|
|
27805
27805
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-col gap-4 w-full max-w-md", children: resolvedOptions.map((option, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
27806
27806
|
"button",
|
|
@@ -27808,10 +27808,10 @@ function GameMenu({
|
|
|
27808
27808
|
onClick: () => handleOptionClick(option),
|
|
27809
27809
|
disabled: option.disabled,
|
|
27810
27810
|
className: cn(
|
|
27811
|
-
"w-full py-4 px-8 rounded-
|
|
27811
|
+
"w-full py-4 px-8 rounded-container border-2 font-bold text-lg",
|
|
27812
27812
|
"transition-all duration-200 transform",
|
|
27813
27813
|
"hover:scale-105 active:scale-95",
|
|
27814
|
-
"focus:outline-none focus:ring-4 focus:ring-
|
|
27814
|
+
"focus:outline-none focus:ring-4 focus:ring-foreground/25",
|
|
27815
27815
|
variantMap3[option.variant ?? "secondary"] ?? variantMap3.secondary,
|
|
27816
27816
|
option.disabled && "opacity-50 cursor-not-allowed hover:scale-100"
|
|
27817
27817
|
),
|
|
@@ -27823,8 +27823,8 @@ function GameMenu({
|
|
|
27823
27823
|
index
|
|
27824
27824
|
)) }),
|
|
27825
27825
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "absolute inset-0 pointer-events-none overflow-hidden", children: [
|
|
27826
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute top-1/4 left-1/4 w-64 h-64 bg-
|
|
27827
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute bottom-1/4 right-1/4 w-96 h-96 bg-
|
|
27826
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute top-1/4 left-1/4 w-64 h-64 bg-info/10 rounded-container blur-3xl" }),
|
|
27827
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute bottom-1/4 right-1/4 w-96 h-96 bg-accent/10 rounded-container blur-3xl" })
|
|
27828
27828
|
] })
|
|
27829
27829
|
]
|
|
27830
27830
|
}
|
|
@@ -27837,9 +27837,9 @@ var init_GameMenu = __esm({
|
|
|
27837
27837
|
init_cn();
|
|
27838
27838
|
init_useEventBus();
|
|
27839
27839
|
variantMap3 = {
|
|
27840
|
-
primary: "bg-[var(--color-primary)] hover:bg-
|
|
27841
|
-
secondary: "bg-[var(--color-surface,#374151)] hover:bg-
|
|
27842
|
-
ghost: "bg-transparent hover:bg-
|
|
27840
|
+
primary: "bg-[var(--color-primary)] hover:bg-info text-[var(--color-primary-foreground)] border-info shadow-lg shadow-info/25",
|
|
27841
|
+
secondary: "bg-[var(--color-surface,#374151)] hover:bg-muted text-[var(--color-foreground)] border-muted",
|
|
27842
|
+
ghost: "bg-transparent hover:bg-foreground/10 text-[var(--color-foreground)] border-foreground/20"
|
|
27843
27843
|
};
|
|
27844
27844
|
GameMenu.displayName = "GameMenu";
|
|
27845
27845
|
}
|
|
@@ -27907,13 +27907,13 @@ function GameOverScreen({
|
|
|
27907
27907
|
children: title
|
|
27908
27908
|
}
|
|
27909
27909
|
),
|
|
27910
|
-
message && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xl text-
|
|
27911
|
-
isNewHighScore && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-6 px-6 py-2 bg-
|
|
27910
|
+
message && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xl text-muted-foreground mb-8 text-center max-w-md", children: message }),
|
|
27911
|
+
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}" }) }),
|
|
27912
27912
|
stats.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(
|
|
27913
27913
|
"div",
|
|
27914
27914
|
{
|
|
27915
27915
|
className: cn(
|
|
27916
|
-
"mb-8 p-6 rounded-
|
|
27916
|
+
"mb-8 p-6 rounded-container border-2 bg-background/30",
|
|
27917
27917
|
colors.accent
|
|
27918
27918
|
),
|
|
27919
27919
|
children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-2 md:grid-cols-3 gap-4", children: stats.map((stat, index) => {
|
|
@@ -27922,7 +27922,7 @@ function GameOverScreen({
|
|
|
27922
27922
|
displayValue = formatTime3(displayValue);
|
|
27923
27923
|
}
|
|
27924
27924
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-center", children: [
|
|
27925
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-
|
|
27925
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-muted-foreground text-sm mb-1", children: stat.label }),
|
|
27926
27926
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-[var(--color-foreground)] text-2xl font-bold flex items-center justify-center gap-2", children: [
|
|
27927
27927
|
stat.icon && /* @__PURE__ */ jsxRuntime.jsx("span", { children: stat.icon }),
|
|
27928
27928
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "tabular-nums", children: displayValue })
|
|
@@ -27936,10 +27936,10 @@ function GameOverScreen({
|
|
|
27936
27936
|
{
|
|
27937
27937
|
onClick: () => handleActionClick(action),
|
|
27938
27938
|
className: cn(
|
|
27939
|
-
"px-8 py-4 rounded-
|
|
27939
|
+
"px-8 py-4 rounded-container border-2 font-bold text-lg",
|
|
27940
27940
|
"transition-all duration-200",
|
|
27941
27941
|
"hover:scale-105 active:scale-95",
|
|
27942
|
-
"focus:outline-none focus:ring-4 focus:ring-
|
|
27942
|
+
"focus:outline-none focus:ring-4 focus:ring-foreground/25",
|
|
27943
27943
|
buttonVariants[action.variant ?? "secondary"]
|
|
27944
27944
|
),
|
|
27945
27945
|
children: action.label
|
|
@@ -27958,25 +27958,25 @@ var init_GameOverScreen = __esm({
|
|
|
27958
27958
|
init_useEventBus();
|
|
27959
27959
|
variantColors = {
|
|
27960
27960
|
victory: {
|
|
27961
|
-
bg: "from-
|
|
27962
|
-
title: "text-
|
|
27963
|
-
accent: "border-
|
|
27961
|
+
bg: "from-success/90 to-success/90",
|
|
27962
|
+
title: "text-success",
|
|
27963
|
+
accent: "border-success"
|
|
27964
27964
|
},
|
|
27965
27965
|
defeat: {
|
|
27966
|
-
bg: "from-
|
|
27967
|
-
title: "text-
|
|
27968
|
-
accent: "border-
|
|
27966
|
+
bg: "from-error/90 to-background/90",
|
|
27967
|
+
title: "text-error",
|
|
27968
|
+
accent: "border-error"
|
|
27969
27969
|
},
|
|
27970
27970
|
neutral: {
|
|
27971
|
-
bg: "from-
|
|
27972
|
-
title: "text-
|
|
27973
|
-
accent: "border-
|
|
27971
|
+
bg: "from-muted/90 to-background/90",
|
|
27972
|
+
title: "text-foreground",
|
|
27973
|
+
accent: "border-muted"
|
|
27974
27974
|
}
|
|
27975
27975
|
};
|
|
27976
27976
|
buttonVariants = {
|
|
27977
|
-
primary: "bg-[var(--color-primary)] hover:bg-
|
|
27978
|
-
secondary: "bg-[var(--color-surface,#374151)] hover:bg-
|
|
27979
|
-
ghost: "bg-transparent hover:bg-
|
|
27977
|
+
primary: "bg-[var(--color-primary)] hover:bg-info text-[var(--color-primary-foreground)] border-info",
|
|
27978
|
+
secondary: "bg-[var(--color-surface,#374151)] hover:bg-muted text-[var(--color-foreground)] border-muted",
|
|
27979
|
+
ghost: "bg-transparent hover:bg-foreground/10 text-[var(--color-foreground)] border-foreground/20"
|
|
27980
27980
|
};
|
|
27981
27981
|
GameOverScreen.displayName = "GameOverScreen";
|
|
27982
27982
|
}
|
|
@@ -28210,7 +28210,7 @@ function PlatformerCanvas({
|
|
|
28210
28210
|
{
|
|
28211
28211
|
ref: canvasRef,
|
|
28212
28212
|
style: { width: canvasWidth, height: canvasHeight },
|
|
28213
|
-
className: cn("block rounded-
|
|
28213
|
+
className: cn("block rounded-container border border-border/10", className),
|
|
28214
28214
|
"data-testid": "platformer-canvas",
|
|
28215
28215
|
tabIndex: 0
|
|
28216
28216
|
}
|
|
@@ -35753,7 +35753,7 @@ function DebuggerBoard({
|
|
|
35753
35753
|
backgroundPosition: "center"
|
|
35754
35754
|
},
|
|
35755
35755
|
children: /* @__PURE__ */ jsxRuntime.jsxs(VStack, { gap: "lg", className: "p-4", children: [
|
|
35756
|
-
entity.headerImage && !headerError ? /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "w-full h-32 overflow-hidden rounded-
|
|
35756
|
+
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,
|
|
35757
35757
|
/* @__PURE__ */ jsxRuntime.jsx(Card, { className: "p-4", children: /* @__PURE__ */ jsxRuntime.jsxs(VStack, { gap: "sm", children: [
|
|
35758
35758
|
/* @__PURE__ */ jsxRuntime.jsxs(HStack, { gap: "xs", align: "center", children: [
|
|
35759
35759
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { icon: LucideIcons2.Bug, size: "sm" }),
|
|
@@ -35766,11 +35766,11 @@ function DebuggerBoard({
|
|
|
35766
35766
|
const isFlagged = flaggedLines.has(line.id);
|
|
35767
35767
|
let lineStyle = "";
|
|
35768
35768
|
if (submitted) {
|
|
35769
|
-
if (line.isBug && isFlagged) lineStyle = "bg-
|
|
35770
|
-
else if (line.isBug && !isFlagged) lineStyle = "bg-
|
|
35771
|
-
else if (!line.isBug && isFlagged) lineStyle = "bg-
|
|
35769
|
+
if (line.isBug && isFlagged) lineStyle = "bg-success/10";
|
|
35770
|
+
else if (line.isBug && !isFlagged) lineStyle = "bg-warning/10";
|
|
35771
|
+
else if (!line.isBug && isFlagged) lineStyle = "bg-error/10";
|
|
35772
35772
|
} else if (isFlagged) {
|
|
35773
|
-
lineStyle = "bg-
|
|
35773
|
+
lineStyle = "bg-error/10";
|
|
35774
35774
|
}
|
|
35775
35775
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
35776
35776
|
HStack,
|
|
@@ -35783,8 +35783,8 @@ function DebuggerBoard({
|
|
|
35783
35783
|
/* @__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 }) }),
|
|
35784
35784
|
/* @__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 }) }),
|
|
35785
35785
|
/* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "w-8 flex-shrink-0 flex items-center justify-center", children: [
|
|
35786
|
-
isFlagged && /* @__PURE__ */ jsxRuntime.jsx(Icon, { icon: LucideIcons2.Bug, size: "xs", className: "text-
|
|
35787
|
-
submitted && line.isBug && !isFlagged && /* @__PURE__ */ jsxRuntime.jsx(Icon, { icon: LucideIcons2.Bug, size: "xs", className: "text-
|
|
35786
|
+
isFlagged && /* @__PURE__ */ jsxRuntime.jsx(Icon, { icon: LucideIcons2.Bug, size: "xs", className: "text-error" }),
|
|
35787
|
+
submitted && line.isBug && !isFlagged && /* @__PURE__ */ jsxRuntime.jsx(Icon, { icon: LucideIcons2.Bug, size: "xs", className: "text-warning" })
|
|
35788
35788
|
] })
|
|
35789
35789
|
]
|
|
35790
35790
|
},
|
|
@@ -35799,7 +35799,7 @@ function DebuggerBoard({
|
|
|
35799
35799
|
{
|
|
35800
35800
|
icon: flaggedLines.has(line.id) ? LucideIcons2.CheckCircle : LucideIcons2.XCircle,
|
|
35801
35801
|
size: "xs",
|
|
35802
|
-
className: flaggedLines.has(line.id) ? "text-
|
|
35802
|
+
className: flaggedLines.has(line.id) ? "text-success mt-0.5" : "text-warning mt-0.5"
|
|
35803
35803
|
}
|
|
35804
35804
|
),
|
|
35805
35805
|
/* @__PURE__ */ jsxRuntime.jsxs(VStack, { gap: "none", children: [
|
|
@@ -35808,7 +35808,7 @@ function DebuggerBoard({
|
|
|
35808
35808
|
] })
|
|
35809
35809
|
] }, line.id))
|
|
35810
35810
|
] }) }),
|
|
35811
|
-
showHint && entity.hint && /* @__PURE__ */ jsxRuntime.jsx(Card, { className: "p-4 border-l-4 border-l-
|
|
35811
|
+
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 }) }),
|
|
35812
35812
|
/* @__PURE__ */ jsxRuntime.jsxs(HStack, { gap: "sm", justify: "center", children: [
|
|
35813
35813
|
!submitted ? /* @__PURE__ */ jsxRuntime.jsxs(Button, { variant: "primary", onClick: handleSubmit, disabled: flaggedLines.size === 0, children: [
|
|
35814
35814
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { icon: LucideIcons2.Send, size: "sm" }),
|
|
@@ -36531,7 +36531,7 @@ function LinearView({
|
|
|
36531
36531
|
className
|
|
36532
36532
|
}) {
|
|
36533
36533
|
const currentIdx = trait.states.indexOf(trait.currentState);
|
|
36534
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(VStack, { className: cn("p-3 rounded-
|
|
36534
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(VStack, { className: cn("p-3 rounded-container bg-card border border-border", className), gap: "sm", children: [
|
|
36535
36535
|
trait.description && /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", className: "text-muted-foreground", children: trait.description }),
|
|
36536
36536
|
/* @__PURE__ */ jsxRuntime.jsx(HStack, { className: "flex-wrap items-center", gap: "xs", children: trait.states.map((state, i) => {
|
|
36537
36537
|
const isDone = i < currentIdx;
|
|
@@ -36553,10 +36553,10 @@ function LinearView({
|
|
|
36553
36553
|
{
|
|
36554
36554
|
display: "inline-flex",
|
|
36555
36555
|
className: cn(
|
|
36556
|
-
"items-center justify-center rounded-
|
|
36556
|
+
"items-center justify-center rounded-pill px-3 py-1 border-2 transition-all",
|
|
36557
36557
|
SIZE_CONFIG2[size || "md"].fontSize,
|
|
36558
36558
|
isDone && "bg-success/20 border-success text-success",
|
|
36559
|
-
isCurrent && "bg-primary/20 border-primary text-primary font-bold shadow-
|
|
36559
|
+
isCurrent && "bg-primary/20 border-primary text-primary font-bold shadow-elevation-card shadow-primary/20",
|
|
36560
36560
|
!isDone && !isCurrent && "bg-muted border-border text-muted-foreground"
|
|
36561
36561
|
),
|
|
36562
36562
|
children: [
|
|
@@ -36578,7 +36578,7 @@ function CompactView({
|
|
|
36578
36578
|
const { t } = useTranslate();
|
|
36579
36579
|
const config = SIZE_CONFIG2[size || "md"];
|
|
36580
36580
|
const currentTransitions = trait.transitions.filter((t2) => t2.from === trait.currentState);
|
|
36581
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(VStack, { className: cn("p-3 rounded-
|
|
36581
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(VStack, { className: cn("p-3 rounded-container bg-card border border-border", className), gap: "sm", children: [
|
|
36582
36582
|
/* @__PURE__ */ jsxRuntime.jsxs(HStack, { className: "items-center justify-between", children: [
|
|
36583
36583
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body2", className: "text-foreground font-bold", children: trait.name }),
|
|
36584
36584
|
/* @__PURE__ */ jsxRuntime.jsx(StateIndicator, { state: trait.currentState, size: "sm", stateStyles })
|
|
@@ -36614,7 +36614,7 @@ function FullView({
|
|
|
36614
36614
|
const { t } = useTranslate();
|
|
36615
36615
|
const config = SIZE_CONFIG2[size || "md"];
|
|
36616
36616
|
const currentTransitions = trait.transitions.filter((t2) => t2.from === trait.currentState);
|
|
36617
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(VStack, { className: cn("p-3 rounded-
|
|
36617
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(VStack, { className: cn("p-3 rounded-container bg-card border border-border", className), gap: "sm", children: [
|
|
36618
36618
|
/* @__PURE__ */ jsxRuntime.jsxs(HStack, { className: "items-center justify-between", children: [
|
|
36619
36619
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body2", className: "text-foreground font-bold", children: trait.name }),
|
|
36620
36620
|
/* @__PURE__ */ jsxRuntime.jsx(StateIndicator, { state: trait.currentState, size: "sm", stateStyles })
|
|
@@ -36628,9 +36628,9 @@ function FullView({
|
|
|
36628
36628
|
{
|
|
36629
36629
|
display: "flex",
|
|
36630
36630
|
className: cn(
|
|
36631
|
-
"items-center justify-center rounded-
|
|
36631
|
+
"items-center justify-center rounded-container border-2 transition-all px-2",
|
|
36632
36632
|
config.nodeSize,
|
|
36633
|
-
isCurrent && "bg-primary/20 border-primary shadow-
|
|
36633
|
+
isCurrent && "bg-primary/20 border-primary shadow-elevation-card shadow-primary/20",
|
|
36634
36634
|
!isCurrent && hasOutgoing && "bg-muted border-border hover:border-muted-foreground",
|
|
36635
36635
|
!isCurrent && !hasOutgoing && "bg-background border-border opacity-60",
|
|
36636
36636
|
onStateClick && "cursor-pointer"
|
|
@@ -37060,7 +37060,7 @@ function EventHandlerBoard({
|
|
|
37060
37060
|
backgroundPosition: "center"
|
|
37061
37061
|
},
|
|
37062
37062
|
children: [
|
|
37063
|
-
entity.headerImage && !headerError ? /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "w-full h-32 overflow-hidden rounded-
|
|
37063
|
+
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,
|
|
37064
37064
|
/* @__PURE__ */ jsxRuntime.jsxs(VStack, { gap: "xs", children: [
|
|
37065
37065
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "h4", className: "text-foreground", children: entity.title }),
|
|
37066
37066
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body2", className: "text-muted-foreground", children: entity.description }),
|
|
@@ -37075,7 +37075,7 @@ function EventHandlerBoard({
|
|
|
37075
37075
|
Box,
|
|
37076
37076
|
{
|
|
37077
37077
|
className: cn(
|
|
37078
|
-
"p-3 rounded-
|
|
37078
|
+
"p-3 rounded-container border-2 cursor-pointer transition-all hover:scale-105",
|
|
37079
37079
|
selectedObjectId === obj.id ? "border-primary bg-primary/10" : "border-border bg-card hover:border-muted-foreground"
|
|
37080
37080
|
),
|
|
37081
37081
|
onClick: () => setSelectedObjectId(obj.id),
|
|
@@ -37097,10 +37097,10 @@ function EventHandlerBoard({
|
|
|
37097
37097
|
}
|
|
37098
37098
|
),
|
|
37099
37099
|
eventLog.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(EventLog, { entries: eventLog }),
|
|
37100
|
-
playState === "success" && /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "p-4 rounded-
|
|
37100
|
+
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") }) }),
|
|
37101
37101
|
playState === "fail" && /* @__PURE__ */ jsxRuntime.jsxs(VStack, { gap: "sm", children: [
|
|
37102
|
-
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "p-4 rounded-
|
|
37103
|
-
showHint && /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "p-3 rounded-
|
|
37102
|
+
/* @__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) }) }),
|
|
37103
|
+
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: [
|
|
37104
37104
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body2", className: "text-accent font-bold shrink-0", children: "\u{1F4A1} " + t("game.hint") + ":" }),
|
|
37105
37105
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body2", className: "text-foreground", children: entity.hint })
|
|
37106
37106
|
] }) })
|
|
@@ -40273,7 +40273,7 @@ function NegotiatorBoard({
|
|
|
40273
40273
|
backgroundPosition: "center"
|
|
40274
40274
|
},
|
|
40275
40275
|
children: /* @__PURE__ */ jsxRuntime.jsxs(VStack, { gap: "lg", className: "p-4", children: [
|
|
40276
|
-
entity.headerImage && !headerError ? /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "w-full h-32 overflow-hidden rounded-
|
|
40276
|
+
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,
|
|
40277
40277
|
/* @__PURE__ */ jsxRuntime.jsx(Card, { className: "p-4", children: /* @__PURE__ */ jsxRuntime.jsxs(VStack, { gap: "sm", children: [
|
|
40278
40278
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "h4", weight: "bold", children: entity.title }),
|
|
40279
40279
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", children: entity.description }),
|
|
@@ -40319,7 +40319,7 @@ function NegotiatorBoard({
|
|
|
40319
40319
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", className: "text-muted-foreground", children: "vs" }),
|
|
40320
40320
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", children: getActionLabel(round.opponentAction) }),
|
|
40321
40321
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { icon: LucideIcons2.ArrowRight, size: "xs" }),
|
|
40322
|
-
/* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "caption", weight: "bold", className: "text-
|
|
40322
|
+
/* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "caption", weight: "bold", className: "text-success", children: [
|
|
40323
40323
|
"+",
|
|
40324
40324
|
round.playerPayoff
|
|
40325
40325
|
] }),
|
|
@@ -40330,7 +40330,7 @@ function NegotiatorBoard({
|
|
|
40330
40330
|
] }, round.round))
|
|
40331
40331
|
] }) }),
|
|
40332
40332
|
isComplete && /* @__PURE__ */ jsxRuntime.jsx(Card, { className: "p-4", children: /* @__PURE__ */ jsxRuntime.jsxs(VStack, { gap: "sm", align: "center", children: [
|
|
40333
|
-
/* @__PURE__ */ jsxRuntime.jsx(Icon, { icon: LucideIcons2.CheckCircle, size: "lg", className: won ? "text-
|
|
40333
|
+
/* @__PURE__ */ jsxRuntime.jsx(Icon, { icon: LucideIcons2.CheckCircle, size: "lg", className: won ? "text-success" : "text-error" }),
|
|
40334
40334
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", weight: "bold", children: won ? entity.successMessage ?? t("negotiator.success") : entity.failMessage ?? t("negotiator.failed") }),
|
|
40335
40335
|
/* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "caption", className: "text-muted-foreground", children: [
|
|
40336
40336
|
t("negotiator.finalScore"),
|
|
@@ -40340,7 +40340,7 @@ function NegotiatorBoard({
|
|
|
40340
40340
|
entity.targetScore
|
|
40341
40341
|
] })
|
|
40342
40342
|
] }) }),
|
|
40343
|
-
showHint && entity.hint && !won && /* @__PURE__ */ jsxRuntime.jsx(Card, { className: "p-4 border-l-4 border-l-
|
|
40343
|
+
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 }) }),
|
|
40344
40344
|
isComplete && !won && /* @__PURE__ */ jsxRuntime.jsx(HStack, { justify: "center", children: /* @__PURE__ */ jsxRuntime.jsx(Button, { variant: "primary", onClick: handleReset, children: t("negotiator.playAgain") }) })
|
|
40345
40345
|
] })
|
|
40346
40346
|
}
|
|
@@ -42925,7 +42925,7 @@ function TraitSlot({
|
|
|
42925
42925
|
display: "flex",
|
|
42926
42926
|
position: "relative",
|
|
42927
42927
|
className: cn(
|
|
42928
|
-
"items-center justify-center rounded-
|
|
42928
|
+
"items-center justify-center rounded-container transition-all duration-200 bg-card/50",
|
|
42929
42929
|
!locked && "cursor-pointer",
|
|
42930
42930
|
locked && "cursor-not-allowed opacity-50",
|
|
42931
42931
|
isEmpty && !locked && "border-2 border-dashed border-border hover:border-muted-foreground",
|
|
@@ -42941,7 +42941,7 @@ function TraitSlot({
|
|
|
42941
42941
|
style: {
|
|
42942
42942
|
width: config.box,
|
|
42943
42943
|
height: config.box,
|
|
42944
|
-
backgroundColor: catColor?.bg ||
|
|
42944
|
+
backgroundColor: catColor?.bg || void 0,
|
|
42945
42945
|
borderColor: isDragOver ? void 0 : feedback === "correct" ? "var(--color-success)" : feedback === "wrong" ? "var(--color-error)" : catColor?.border || void 0
|
|
42946
42946
|
},
|
|
42947
42947
|
onClick: handleClick,
|
|
@@ -42970,7 +42970,7 @@ function TraitSlot({
|
|
|
42970
42970
|
Box,
|
|
42971
42971
|
{
|
|
42972
42972
|
position: "absolute",
|
|
42973
|
-
className: "-top-1.5 -right-1.5 w-4 h-4 bg-error rounded-
|
|
42973
|
+
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",
|
|
42974
42974
|
onClick: handleRemove,
|
|
42975
42975
|
children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", className: "text-foreground text-xs leading-none", children: "\xD7" })
|
|
42976
42976
|
}
|
|
@@ -42980,14 +42980,14 @@ function TraitSlot({
|
|
|
42980
42980
|
Box,
|
|
42981
42981
|
{
|
|
42982
42982
|
position: "absolute",
|
|
42983
|
-
className: "-bottom-1 -left-1 w-4 h-4 bg-card rounded-
|
|
42983
|
+
className: "-bottom-1 -left-1 w-4 h-4 bg-card rounded-pill flex items-center justify-center border border-border",
|
|
42984
42984
|
children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", className: "text-muted-foreground text-xs", children: slotNumber })
|
|
42985
42985
|
}
|
|
42986
42986
|
),
|
|
42987
42987
|
showTooltip && isHovered && itemMachine && !isEmpty && equippedItem && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
42988
42988
|
Box,
|
|
42989
42989
|
{
|
|
42990
|
-
className: "p-3 bg-background border border-border rounded-
|
|
42990
|
+
className: "p-3 bg-background border border-border rounded-container shadow-xl",
|
|
42991
42991
|
style: {
|
|
42992
42992
|
...getTooltipStyle(),
|
|
42993
42993
|
minWidth: 200,
|
|
@@ -43237,12 +43237,12 @@ function SequencerBoard({
|
|
|
43237
43237
|
backgroundPosition: "center"
|
|
43238
43238
|
},
|
|
43239
43239
|
children: [
|
|
43240
|
-
entity.headerImage && !headerError ? /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "w-full h-32 overflow-hidden rounded-
|
|
43240
|
+
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,
|
|
43241
43241
|
/* @__PURE__ */ jsxRuntime.jsxs(VStack, { gap: "xs", children: [
|
|
43242
43242
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "h4", className: "text-foreground", children: entity.title }),
|
|
43243
43243
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body2", className: "text-muted-foreground", children: entity.description })
|
|
43244
43244
|
] }),
|
|
43245
|
-
showHint && /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "p-3 rounded-
|
|
43245
|
+
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: [
|
|
43246
43246
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body2", className: "text-accent font-bold shrink-0", children: "\u{1F4A1} " + t("game.hint") + ":" }),
|
|
43247
43247
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body2", className: "text-foreground", children: entity.hint })
|
|
43248
43248
|
] }) }),
|
|
@@ -43280,8 +43280,8 @@ function SequencerBoard({
|
|
|
43280
43280
|
label: t("sequencer.dragActions")
|
|
43281
43281
|
}
|
|
43282
43282
|
),
|
|
43283
|
-
hasFeedback && playState === "idle" && attempts > 0 && /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "p-3 rounded-
|
|
43284
|
-
playState === "success" && /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "p-4 rounded-
|
|
43283
|
+
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) }) }),
|
|
43284
|
+
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") }) }),
|
|
43285
43285
|
/* @__PURE__ */ jsxRuntime.jsxs(HStack, { gap: "sm", children: [
|
|
43286
43286
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
43287
43287
|
Button,
|
|
@@ -43957,7 +43957,7 @@ function SimulationCanvas({
|
|
|
43957
43957
|
ref: canvasRef,
|
|
43958
43958
|
width,
|
|
43959
43959
|
height,
|
|
43960
|
-
className: "rounded-
|
|
43960
|
+
className: "rounded-container block max-w-full h-auto"
|
|
43961
43961
|
}
|
|
43962
43962
|
) });
|
|
43963
43963
|
}
|
|
@@ -44165,7 +44165,7 @@ function SimulatorBoard({
|
|
|
44165
44165
|
backgroundPosition: "center"
|
|
44166
44166
|
},
|
|
44167
44167
|
children: /* @__PURE__ */ jsxRuntime.jsxs(VStack, { gap: "lg", className: "p-4", children: [
|
|
44168
|
-
entity.headerImage && !headerError ? /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "w-full h-32 overflow-hidden rounded-
|
|
44168
|
+
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,
|
|
44169
44169
|
/* @__PURE__ */ jsxRuntime.jsx(Card, { className: "p-4", children: /* @__PURE__ */ jsxRuntime.jsxs(VStack, { gap: "sm", children: [
|
|
44170
44170
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "h4", weight: "bold", children: entity.title }),
|
|
44171
44171
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", children: entity.description })
|
|
@@ -44216,8 +44216,8 @@ function SimulatorBoard({
|
|
|
44216
44216
|
entity.outputUnit
|
|
44217
44217
|
] }),
|
|
44218
44218
|
submitted && /* @__PURE__ */ jsxRuntime.jsxs(HStack, { gap: "xs", align: "center", children: [
|
|
44219
|
-
/* @__PURE__ */ jsxRuntime.jsx(Icon, { icon: isCorrect ? LucideIcons2.CheckCircle : LucideIcons2.XCircle, size: "sm", className: isCorrect ? "text-
|
|
44220
|
-
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", className: isCorrect ? "text-
|
|
44219
|
+
/* @__PURE__ */ jsxRuntime.jsx(Icon, { icon: isCorrect ? LucideIcons2.CheckCircle : LucideIcons2.XCircle, size: "sm", className: isCorrect ? "text-success" : "text-error" }),
|
|
44220
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", className: isCorrect ? "text-success" : "text-error", children: isCorrect ? entity.successMessage ?? t("simulator.correct") : entity.failMessage ?? t("simulator.incorrect") })
|
|
44221
44221
|
] }),
|
|
44222
44222
|
/* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "caption", className: "text-muted-foreground", children: [
|
|
44223
44223
|
t("simulator.target"),
|
|
@@ -44230,7 +44230,7 @@ function SimulatorBoard({
|
|
|
44230
44230
|
")"
|
|
44231
44231
|
] })
|
|
44232
44232
|
] }) }),
|
|
44233
|
-
showHint && entity.hint && /* @__PURE__ */ jsxRuntime.jsx(Card, { className: "p-4 border-l-4 border-l-
|
|
44233
|
+
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 }) }),
|
|
44234
44234
|
/* @__PURE__ */ jsxRuntime.jsxs(HStack, { gap: "sm", justify: "center", children: [
|
|
44235
44235
|
!submitted ? /* @__PURE__ */ jsxRuntime.jsxs(Button, { variant: "primary", onClick: handleSubmit, children: [
|
|
44236
44236
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { icon: LucideIcons2.Play, size: "sm" }),
|
|
@@ -44631,7 +44631,7 @@ function StateNode2({
|
|
|
44631
44631
|
position: "absolute",
|
|
44632
44632
|
display: "flex",
|
|
44633
44633
|
className: cn(
|
|
44634
|
-
"items-center justify-center rounded-
|
|
44634
|
+
"items-center justify-center rounded-pill border-3 transition-all cursor-pointer select-none",
|
|
44635
44635
|
"min-w-[80px] h-[80px] px-3",
|
|
44636
44636
|
isCurrent && "bg-primary/20 border-primary shadow-lg shadow-primary/30 scale-110",
|
|
44637
44637
|
isSelected && !isCurrent && "bg-accent/20 border-accent ring-2 ring-accent/50",
|
|
@@ -44944,7 +44944,7 @@ function StateArchitectBoard({
|
|
|
44944
44944
|
backgroundPosition: "center"
|
|
44945
44945
|
},
|
|
44946
44946
|
children: [
|
|
44947
|
-
entity.headerImage && !headerError ? /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "w-full h-32 overflow-hidden rounded-
|
|
44947
|
+
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,
|
|
44948
44948
|
/* @__PURE__ */ jsxRuntime.jsxs(VStack, { gap: "xs", children: [
|
|
44949
44949
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "h4", className: "text-foreground", children: entity.title }),
|
|
44950
44950
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body2", className: "text-muted-foreground", children: entity.description }),
|
|
@@ -44963,7 +44963,7 @@ function StateArchitectBoard({
|
|
|
44963
44963
|
Box,
|
|
44964
44964
|
{
|
|
44965
44965
|
position: "relative",
|
|
44966
|
-
className: "rounded-
|
|
44966
|
+
className: "rounded-container border border-border bg-background overflow-hidden",
|
|
44967
44967
|
style: { width: GRAPH_W, height: GRAPH_H },
|
|
44968
44968
|
children: [
|
|
44969
44969
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -45022,7 +45022,7 @@ function StateArchitectBoard({
|
|
|
45022
45022
|
children: selectedState ? t("stateArchitect.addTransition", { state: selectedState }) : t("stateArchitect.addTransitionPrompt")
|
|
45023
45023
|
}
|
|
45024
45024
|
) }),
|
|
45025
|
-
transitions.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(VStack, { gap: "xs", className: "p-3 rounded-
|
|
45025
|
+
transitions.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(VStack, { gap: "xs", className: "p-3 rounded-container bg-muted/50 border border-border", children: [
|
|
45026
45026
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", className: "text-muted-foreground font-medium", children: t("stateArchitect.transitions", { count: transitions.length }) + ":" }),
|
|
45027
45027
|
transitions.map((t2) => /* @__PURE__ */ jsxRuntime.jsxs(HStack, { className: "items-center text-xs", gap: "xs", children: [
|
|
45028
45028
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", className: "text-foreground", children: t2.from }),
|
|
@@ -45056,7 +45056,7 @@ function StateArchitectBoard({
|
|
|
45056
45056
|
variables
|
|
45057
45057
|
}
|
|
45058
45058
|
),
|
|
45059
|
-
testResults.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(VStack, { className: "p-3 rounded-
|
|
45059
|
+
testResults.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(VStack, { className: "p-3 rounded-container bg-card border border-border", gap: "xs", children: [
|
|
45060
45060
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body2", className: "text-muted-foreground font-medium", children: t("stateArchitect.testResults") + ":" }),
|
|
45061
45061
|
testResults.map((r, i) => /* @__PURE__ */ jsxRuntime.jsxs(HStack, { className: "items-center text-xs", gap: "xs", children: [
|
|
45062
45062
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", className: r.passed ? "text-success" : "text-error", children: r.passed ? "\u2714" : "\u2717" }),
|
|
@@ -45067,10 +45067,10 @@ function StateArchitectBoard({
|
|
|
45067
45067
|
entity.showCodeView !== false && /* @__PURE__ */ jsxRuntime.jsx(CodeView, { data: codeData, label: "View Code" })
|
|
45068
45068
|
] })
|
|
45069
45069
|
] }),
|
|
45070
|
-
playState === "success" && /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "p-4 rounded-
|
|
45070
|
+
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") }) }),
|
|
45071
45071
|
playState === "fail" && /* @__PURE__ */ jsxRuntime.jsxs(VStack, { gap: "sm", children: [
|
|
45072
|
-
/* @__PURE__ */ jsxRuntime.jsx(Box, { className: "p-4 rounded-
|
|
45073
|
-
attempts >= 3 && entity.hint && /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "p-3 rounded-
|
|
45072
|
+
/* @__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]) }) }),
|
|
45073
|
+
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: [
|
|
45074
45074
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body2", className: "text-accent font-bold shrink-0", children: "\u{1F4A1} " + t("game.hint") + ":" }),
|
|
45075
45075
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body2", className: "text-foreground", children: entity.hint })
|
|
45076
45076
|
] }) })
|