@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
|
@@ -9264,7 +9264,7 @@ function ActionButton({
|
|
|
9264
9264
|
disabled: isDisabled,
|
|
9265
9265
|
onClick,
|
|
9266
9266
|
className: cn(
|
|
9267
|
-
"relative inline-flex items-center gap-1.5 rounded-
|
|
9267
|
+
"relative inline-flex items-center gap-1.5 rounded-interactive border font-medium overflow-hidden transition-colors duration-150",
|
|
9268
9268
|
sizes.button,
|
|
9269
9269
|
variantStyles7[variant],
|
|
9270
9270
|
isDisabled && "opacity-60 cursor-not-allowed",
|
|
@@ -9307,9 +9307,9 @@ var init_ActionButton = __esm({
|
|
|
9307
9307
|
init_cn();
|
|
9308
9308
|
init_Icon();
|
|
9309
9309
|
sizeMap = {
|
|
9310
|
-
sm: { button: "px-3
|
|
9311
|
-
md: { button: "px-4
|
|
9312
|
-
lg: { button: "
|
|
9310
|
+
sm: { button: "h-button-sm px-3 text-xs", hotkey: "text-[9px] px-1", icon: "text-xs" },
|
|
9311
|
+
md: { button: "h-button-md px-4 text-sm", hotkey: "text-xs px-1.5", icon: "text-sm" },
|
|
9312
|
+
lg: { button: "h-button-lg px-5 text-base", hotkey: "text-xs px-2", icon: "text-base" }
|
|
9313
9313
|
};
|
|
9314
9314
|
variantStyles7 = {
|
|
9315
9315
|
primary: "bg-primary text-primary-foreground hover:bg-primary-hover border-primary",
|
|
@@ -9412,8 +9412,8 @@ var init_ControlButton = __esm({
|
|
|
9412
9412
|
};
|
|
9413
9413
|
shapeMap = {
|
|
9414
9414
|
circle: "rounded-full",
|
|
9415
|
-
rounded: "rounded-
|
|
9416
|
-
square: "rounded-
|
|
9415
|
+
rounded: "rounded-interactive",
|
|
9416
|
+
square: "rounded-interactive"
|
|
9417
9417
|
};
|
|
9418
9418
|
variantMap = {
|
|
9419
9419
|
primary: "bg-primary text-primary-foreground border-primary hover:bg-primary-hover",
|
|
@@ -9574,7 +9574,7 @@ function ActionTile({
|
|
|
9574
9574
|
{
|
|
9575
9575
|
display: "flex",
|
|
9576
9576
|
className: cn(
|
|
9577
|
-
"flex-col items-center gap-1 rounded-
|
|
9577
|
+
"flex-col items-center gap-1 rounded-container border-2 transition-all select-none",
|
|
9578
9578
|
config.px,
|
|
9579
9579
|
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",
|
|
9580
9580
|
className
|
|
@@ -10785,12 +10785,12 @@ function IsometricCanvas({
|
|
|
10785
10785
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
10786
10786
|
exports.Box,
|
|
10787
10787
|
{
|
|
10788
|
-
className: cn("relative w-full overflow-hidden rounded-
|
|
10788
|
+
className: cn("relative w-full overflow-hidden rounded-container", className),
|
|
10789
10789
|
style: { height: viewportSize.height },
|
|
10790
10790
|
"data-testid": "game-canvas-empty",
|
|
10791
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "flex items-center justify-center h-full bg-[var(--color-card)] rounded-
|
|
10791
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "flex items-center justify-center h-full bg-[var(--color-card)] rounded-container", children: /* @__PURE__ */ jsxRuntime.jsxs(exports.Stack, { direction: "vertical", gap: "md", align: "center", children: [
|
|
10792
10792
|
/* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { name: "map", size: "xl" }),
|
|
10793
|
-
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body", className: "text-
|
|
10793
|
+
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body", className: "text-muted-foreground", children: t("canvas.emptyMessage") || "No map data loaded" })
|
|
10794
10794
|
] }) })
|
|
10795
10795
|
}
|
|
10796
10796
|
);
|
|
@@ -11188,19 +11188,19 @@ function BattleBoard({
|
|
|
11188
11188
|
}
|
|
11189
11189
|
)
|
|
11190
11190
|
] }),
|
|
11191
|
-
gameResult && (gameOverOverlay ? gameOverOverlay(ctx) : /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "absolute inset-0 z-50 flex items-center justify-center bg-
|
|
11191
|
+
gameResult && (gameOverOverlay ? gameOverOverlay(ctx) : /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "absolute inset-0 z-50 flex items-center justify-center bg-background/70 backdrop-blur-sm rounded-container", children: /* @__PURE__ */ jsxRuntime.jsxs(exports.VStack, { className: "text-center p-8", gap: "lg", children: [
|
|
11192
11192
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
11193
11193
|
exports.Typography,
|
|
11194
11194
|
{
|
|
11195
11195
|
variant: "h2",
|
|
11196
11196
|
className: cn(
|
|
11197
11197
|
"text-4xl font-black tracking-widest uppercase",
|
|
11198
|
-
gameResult === "victory" ? "text-
|
|
11198
|
+
gameResult === "victory" ? "text-warning" : "text-error"
|
|
11199
11199
|
),
|
|
11200
11200
|
children: gameResult === "victory" ? t("battle.victory") : t("battle.defeat")
|
|
11201
11201
|
}
|
|
11202
11202
|
),
|
|
11203
|
-
/* @__PURE__ */ jsxRuntime.jsxs(exports.Typography, { variant: "body1", className: "text-
|
|
11203
|
+
/* @__PURE__ */ jsxRuntime.jsxs(exports.Typography, { variant: "body1", className: "text-muted-foreground", children: [
|
|
11204
11204
|
t("battle.turnsPlayed"),
|
|
11205
11205
|
": ",
|
|
11206
11206
|
currentTurn
|
|
@@ -16077,7 +16077,7 @@ function BuilderBoard({
|
|
|
16077
16077
|
backgroundPosition: "center"
|
|
16078
16078
|
},
|
|
16079
16079
|
children: /* @__PURE__ */ jsxRuntime.jsxs(exports.VStack, { gap: "lg", className: "p-4", children: [
|
|
16080
|
-
entity.headerImage && !headerError ? /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "w-full h-32 overflow-hidden rounded-
|
|
16080
|
+
entity.headerImage && !headerError ? /* @__PURE__ */ jsxRuntime.jsx(exports.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(exports.Box, { className: "w-full h-32 rounded-container bg-gradient-to-br from-muted to-accent opacity-60" }) : null,
|
|
16081
16081
|
/* @__PURE__ */ jsxRuntime.jsx(exports.Card, { className: "p-4", children: /* @__PURE__ */ jsxRuntime.jsxs(exports.VStack, { gap: "sm", children: [
|
|
16082
16082
|
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "h4", weight: "bold", children: entity.title }),
|
|
16083
16083
|
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body", children: entity.description })
|
|
@@ -16115,7 +16115,7 @@ function BuilderBoard({
|
|
|
16115
16115
|
{
|
|
16116
16116
|
gap: "sm",
|
|
16117
16117
|
align: "center",
|
|
16118
|
-
className: `p-3 border-2 rounded ${result ? result.correct ? "border-
|
|
16118
|
+
className: `p-3 border-2 rounded ${result ? result.correct ? "border-success" : "border-error" : selectedComponent ? "border-dashed border-foreground cursor-pointer" : "border-border"}`,
|
|
16119
16119
|
onClick: () => handlePlaceComponent(slot.id),
|
|
16120
16120
|
children: [
|
|
16121
16121
|
/* @__PURE__ */ jsxRuntime.jsxs(exports.VStack, { gap: "none", className: "flex-1", children: [
|
|
@@ -16130,7 +16130,7 @@ function BuilderBoard({
|
|
|
16130
16130
|
] }) : null,
|
|
16131
16131
|
placedComp.label
|
|
16132
16132
|
] }),
|
|
16133
|
-
result && /* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { icon: result.correct ? LucideIcons2.CheckCircle : LucideIcons2.XCircle, size: "sm", className: result.correct ? "text-
|
|
16133
|
+
result && /* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { icon: result.correct ? LucideIcons2.CheckCircle : LucideIcons2.XCircle, size: "sm", className: result.correct ? "text-success" : "text-error" })
|
|
16134
16134
|
] }) : /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "caption", className: "text-muted-foreground", children: t("builder.empty") })
|
|
16135
16135
|
]
|
|
16136
16136
|
},
|
|
@@ -16139,10 +16139,10 @@ function BuilderBoard({
|
|
|
16139
16139
|
}) })
|
|
16140
16140
|
] }) }),
|
|
16141
16141
|
submitted && /* @__PURE__ */ jsxRuntime.jsx(exports.Card, { className: "p-4", children: /* @__PURE__ */ jsxRuntime.jsxs(exports.VStack, { gap: "sm", align: "center", children: [
|
|
16142
|
-
/* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { icon: allCorrect ? LucideIcons2.CheckCircle : LucideIcons2.XCircle, size: "lg", className: allCorrect ? "text-
|
|
16142
|
+
/* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { icon: allCorrect ? LucideIcons2.CheckCircle : LucideIcons2.XCircle, size: "lg", className: allCorrect ? "text-success" : "text-error" }),
|
|
16143
16143
|
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body", weight: "bold", children: allCorrect ? entity.successMessage ?? t("builder.success") : entity.failMessage ?? t("builder.incorrect") })
|
|
16144
16144
|
] }) }),
|
|
16145
|
-
showHint && entity.hint && /* @__PURE__ */ jsxRuntime.jsx(exports.Card, { className: "p-4 border-l-4 border-l-
|
|
16145
|
+
showHint && entity.hint && /* @__PURE__ */ jsxRuntime.jsx(exports.Card, { className: "p-4 border-l-4 border-l-warning", children: /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body", children: entity.hint }) }),
|
|
16146
16146
|
/* @__PURE__ */ jsxRuntime.jsxs(exports.HStack, { gap: "sm", justify: "center", children: [
|
|
16147
16147
|
!submitted ? /* @__PURE__ */ jsxRuntime.jsxs(exports.Button, { variant: "primary", onClick: handleSubmit, disabled: !allPlaced, children: [
|
|
16148
16148
|
/* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { icon: LucideIcons2.Wrench, size: "sm" }),
|
|
@@ -17764,7 +17764,7 @@ function CanvasEffectEngine({
|
|
|
17764
17764
|
flash && /* @__PURE__ */ jsxRuntime.jsx(
|
|
17765
17765
|
exports.Box,
|
|
17766
17766
|
{
|
|
17767
|
-
className: "absolute inset-0 z-20 pointer-events-none rounded-
|
|
17767
|
+
className: "absolute inset-0 z-20 pointer-events-none rounded-container",
|
|
17768
17768
|
style: { backgroundColor: flash.color, opacity: flash.alpha }
|
|
17769
17769
|
}
|
|
17770
17770
|
),
|
|
@@ -17832,7 +17832,7 @@ function EmojiEffect({
|
|
|
17832
17832
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
17833
17833
|
exports.Box,
|
|
17834
17834
|
{
|
|
17835
|
-
className: "absolute rounded-
|
|
17835
|
+
className: "absolute rounded-pill animate-ping",
|
|
17836
17836
|
style: {
|
|
17837
17837
|
width: 48 * intensity,
|
|
17838
17838
|
height: 48 * intensity,
|
|
@@ -19599,7 +19599,7 @@ function ChoiceButton({
|
|
|
19599
19599
|
disabled,
|
|
19600
19600
|
onClick,
|
|
19601
19601
|
className: cn(
|
|
19602
|
-
"w-full text-left px-4 py-2.5 rounded-
|
|
19602
|
+
"w-full text-left px-4 py-2.5 rounded-interactive border transition-all duration-150",
|
|
19603
19603
|
"flex items-center gap-2",
|
|
19604
19604
|
selected ? "bg-accent/15 border-accent text-foreground" : "bg-muted/40 border-border text-foreground hover:bg-muted hover:border-border",
|
|
19605
19605
|
disabled && "opacity-40 cursor-not-allowed hover:bg-muted/40 hover:border-border",
|
|
@@ -19695,7 +19695,7 @@ function ClassifierBoard({
|
|
|
19695
19695
|
backgroundPosition: "center"
|
|
19696
19696
|
},
|
|
19697
19697
|
children: /* @__PURE__ */ jsxRuntime.jsxs(exports.VStack, { gap: "lg", className: "p-4", children: [
|
|
19698
|
-
entity.headerImage && !headerError ? /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "w-full h-32 overflow-hidden rounded-
|
|
19698
|
+
entity.headerImage && !headerError ? /* @__PURE__ */ jsxRuntime.jsx(exports.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(exports.Box, { className: "w-full h-32 rounded-container bg-gradient-to-br from-muted to-accent opacity-60" }) : null,
|
|
19699
19699
|
/* @__PURE__ */ jsxRuntime.jsx(exports.Card, { className: "p-4", children: /* @__PURE__ */ jsxRuntime.jsxs(exports.VStack, { gap: "sm", children: [
|
|
19700
19700
|
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "h4", weight: "bold", children: entity.title }),
|
|
19701
19701
|
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body", children: entity.description })
|
|
@@ -19710,7 +19710,7 @@ function ClassifierBoard({
|
|
|
19710
19710
|
/* @__PURE__ */ jsxRuntime.jsx(exports.VStack, { gap: "md", children: categories.map((cat) => {
|
|
19711
19711
|
const catItems = items.filter((item) => assignments[item.id] === cat.id);
|
|
19712
19712
|
return /* @__PURE__ */ jsxRuntime.jsx(exports.Card, { className: "p-4", children: /* @__PURE__ */ jsxRuntime.jsxs(exports.VStack, { gap: "sm", children: [
|
|
19713
|
-
cat.imageUrl && /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "w-full h-16 overflow-hidden rounded-
|
|
19713
|
+
cat.imageUrl && /* @__PURE__ */ jsxRuntime.jsx(exports.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" }) }),
|
|
19714
19714
|
/* @__PURE__ */ jsxRuntime.jsxs(exports.HStack, { justify: "between", align: "center", children: [
|
|
19715
19715
|
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body", weight: "bold", children: cat.label }),
|
|
19716
19716
|
/* @__PURE__ */ jsxRuntime.jsx(exports.Badge, { size: "sm", children: catItems.length })
|
|
@@ -19721,12 +19721,12 @@ function ClassifierBoard({
|
|
|
19721
19721
|
exports.Badge,
|
|
19722
19722
|
{
|
|
19723
19723
|
size: "sm",
|
|
19724
|
-
className: `cursor-pointer ${result ? result.correct ? "border-
|
|
19724
|
+
className: `cursor-pointer ${result ? result.correct ? "border-success bg-success/10" : "border-error bg-error/10" : ""}`,
|
|
19725
19725
|
onClick: () => handleUnassign(item.id),
|
|
19726
19726
|
children: [
|
|
19727
19727
|
item.iconUrl && /* @__PURE__ */ jsxRuntime.jsx("img", { src: item.iconUrl, alt: "", className: "w-3 h-3 object-contain inline-block" }),
|
|
19728
19728
|
item.label,
|
|
19729
|
-
result && /* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { icon: result.correct ? LucideIcons2.CheckCircle : LucideIcons2.XCircle, size: "xs", className: result.correct ? "text-
|
|
19729
|
+
result && /* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { icon: result.correct ? LucideIcons2.CheckCircle : LucideIcons2.XCircle, size: "xs", className: result.correct ? "text-success" : "text-error" })
|
|
19730
19730
|
]
|
|
19731
19731
|
},
|
|
19732
19732
|
item.id
|
|
@@ -19749,11 +19749,11 @@ function ClassifierBoard({
|
|
|
19749
19749
|
] }) }, cat.id);
|
|
19750
19750
|
}) }),
|
|
19751
19751
|
submitted && /* @__PURE__ */ jsxRuntime.jsx(exports.Card, { className: "p-4", children: /* @__PURE__ */ jsxRuntime.jsxs(exports.VStack, { gap: "sm", align: "center", children: [
|
|
19752
|
-
/* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { icon: allCorrect ? LucideIcons2.CheckCircle : LucideIcons2.XCircle, size: "lg", className: allCorrect ? "text-
|
|
19752
|
+
/* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { icon: allCorrect ? LucideIcons2.CheckCircle : LucideIcons2.XCircle, size: "lg", className: allCorrect ? "text-success" : "text-error" }),
|
|
19753
19753
|
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body", weight: "bold", children: allCorrect ? entity.successMessage ?? t("classifier.allCorrect") : `${correctCount}/${items.length} ${t("classifier.correct")}` }),
|
|
19754
19754
|
!allCorrect && entity.failMessage && /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body", className: "text-muted-foreground", children: entity.failMessage })
|
|
19755
19755
|
] }) }),
|
|
19756
|
-
showHint && entity.hint && /* @__PURE__ */ jsxRuntime.jsx(exports.Card, { className: "p-4 border-l-4 border-l-
|
|
19756
|
+
showHint && entity.hint && /* @__PURE__ */ jsxRuntime.jsx(exports.Card, { className: "p-4 border-l-4 border-l-warning", children: /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body", children: entity.hint }) }),
|
|
19757
19757
|
/* @__PURE__ */ jsxRuntime.jsxs(exports.HStack, { gap: "sm", justify: "center", children: [
|
|
19758
19758
|
!submitted ? /* @__PURE__ */ jsxRuntime.jsxs(exports.Button, { variant: "primary", onClick: handleSubmit, disabled: !allAssigned, children: [
|
|
19759
19759
|
/* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { icon: LucideIcons2.Send, size: "sm" }),
|
|
@@ -20403,10 +20403,10 @@ var init_CombatLog = __esm({
|
|
|
20403
20403
|
}
|
|
20404
20404
|
});
|
|
20405
20405
|
function getComboIntensity(combo) {
|
|
20406
|
-
if (combo >= 10) return "text-
|
|
20407
|
-
if (combo >= 7) return "text-
|
|
20408
|
-
if (combo >= 4) return "text-
|
|
20409
|
-
return "text-
|
|
20406
|
+
if (combo >= 10) return "text-error animate-pulse";
|
|
20407
|
+
if (combo >= 7) return "text-warning";
|
|
20408
|
+
if (combo >= 4) return "text-warning";
|
|
20409
|
+
return "text-foreground";
|
|
20410
20410
|
}
|
|
20411
20411
|
function getComboScale(combo) {
|
|
20412
20412
|
if (combo >= 10) return "scale-110";
|
|
@@ -20427,19 +20427,19 @@ function ComboCounter({
|
|
|
20427
20427
|
{
|
|
20428
20428
|
className: cn(
|
|
20429
20429
|
"inline-flex flex-col items-center justify-center",
|
|
20430
|
-
"rounded-
|
|
20430
|
+
"rounded-container bg-card/80 border border-muted px-3 py-1.5",
|
|
20431
20431
|
"transition-transform duration-200",
|
|
20432
20432
|
getComboScale(combo),
|
|
20433
20433
|
className
|
|
20434
20434
|
),
|
|
20435
20435
|
children: [
|
|
20436
20436
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("font-black tabular-nums leading-none", sizes.combo, getComboIntensity(combo)), children: combo }),
|
|
20437
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("font-bold uppercase tracking-wider text-
|
|
20438
|
-
multiplier != null && multiplier > 1 && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: cn("font-bold text-
|
|
20437
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("font-bold uppercase tracking-wider text-muted-foreground", sizes.label), children: "combo" }),
|
|
20438
|
+
multiplier != null && multiplier > 1 && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: cn("font-bold text-warning tabular-nums", sizes.multiplier), children: [
|
|
20439
20439
|
"x",
|
|
20440
20440
|
multiplier.toFixed(1)
|
|
20441
20441
|
] }),
|
|
20442
|
-
streak != null && streak > 0 && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: cn("text-
|
|
20442
|
+
streak != null && streak > 0 && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: cn("text-muted-foreground tabular-nums", sizes.label), children: [
|
|
20443
20443
|
streak,
|
|
20444
20444
|
" streak"
|
|
20445
20445
|
] })
|
|
@@ -20854,18 +20854,18 @@ function ItemSlot({
|
|
|
20854
20854
|
disabled: !isClickable,
|
|
20855
20855
|
title: label,
|
|
20856
20856
|
className: cn(
|
|
20857
|
-
"relative flex items-center justify-center rounded-
|
|
20858
|
-
"bg-
|
|
20857
|
+
"relative flex items-center justify-center rounded-interactive border-2",
|
|
20858
|
+
"bg-card/80 transition-all duration-150",
|
|
20859
20859
|
sizeMap5[size],
|
|
20860
|
-
empty ? "border-
|
|
20860
|
+
empty ? "border-border bg-card/50" : rarityBorderMap[rarity],
|
|
20861
20861
|
!empty && rarityGlowMap[rarity],
|
|
20862
|
-
selected && "ring-2 ring-
|
|
20862
|
+
selected && "ring-2 ring-foreground ring-offset-1 ring-offset-background",
|
|
20863
20863
|
isClickable && !empty && "hover:brightness-125 cursor-pointer",
|
|
20864
|
-
isClickable && empty && "hover:border-
|
|
20864
|
+
isClickable && empty && "hover:border-muted cursor-pointer",
|
|
20865
20865
|
!isClickable && "cursor-default",
|
|
20866
20866
|
className
|
|
20867
20867
|
),
|
|
20868
|
-
children: empty ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-
|
|
20868
|
+
children: empty ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground text-base", children: "+" }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
20869
20869
|
icon && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex-shrink-0", children: icon }),
|
|
20870
20870
|
quantity != null && quantity > 1 && /* @__PURE__ */ jsxRuntime.jsx(
|
|
20871
20871
|
"span",
|
|
@@ -20873,7 +20873,7 @@ function ItemSlot({
|
|
|
20873
20873
|
className: cn(
|
|
20874
20874
|
"absolute -bottom-1 -right-1 flex items-center justify-center",
|
|
20875
20875
|
"min-w-[18px] h-[18px] rounded-full px-1",
|
|
20876
|
-
"bg-
|
|
20876
|
+
"bg-surface border border-muted text-xs font-bold text-foreground"
|
|
20877
20877
|
),
|
|
20878
20878
|
children: quantity
|
|
20879
20879
|
}
|
|
@@ -20893,18 +20893,18 @@ var init_ItemSlot = __esm({
|
|
|
20893
20893
|
lg: "w-18 h-18 text-3xl"
|
|
20894
20894
|
};
|
|
20895
20895
|
rarityBorderMap = {
|
|
20896
|
-
common: "border-
|
|
20897
|
-
uncommon: "border-
|
|
20898
|
-
rare: "border-
|
|
20899
|
-
epic: "border-
|
|
20900
|
-
legendary: "border-
|
|
20896
|
+
common: "border-muted",
|
|
20897
|
+
uncommon: "border-success",
|
|
20898
|
+
rare: "border-info",
|
|
20899
|
+
epic: "border-accent",
|
|
20900
|
+
legendary: "border-warning"
|
|
20901
20901
|
};
|
|
20902
20902
|
rarityGlowMap = {
|
|
20903
20903
|
common: "",
|
|
20904
20904
|
uncommon: "",
|
|
20905
|
-
rare: "shadow-
|
|
20906
|
-
epic: "shadow-
|
|
20907
|
-
legendary: "shadow-
|
|
20905
|
+
rare: "shadow-sm",
|
|
20906
|
+
epic: "shadow-lg",
|
|
20907
|
+
legendary: "shadow-lg"
|
|
20908
20908
|
};
|
|
20909
20909
|
ItemSlot.displayName = "ItemSlot";
|
|
20910
20910
|
}
|
|
@@ -20933,7 +20933,7 @@ function CraftingRecipe({
|
|
|
20933
20933
|
exports.Box,
|
|
20934
20934
|
{
|
|
20935
20935
|
className: cn(
|
|
20936
|
-
"flex flex-wrap items-center gap-3 rounded-
|
|
20936
|
+
"flex flex-wrap items-center gap-3 rounded-container bg-muted/50 border border-border/50 p-3",
|
|
20937
20937
|
className
|
|
20938
20938
|
),
|
|
20939
20939
|
children: [
|
|
@@ -20950,10 +20950,10 @@ function CraftingRecipe({
|
|
|
20950
20950
|
className: cn(!hasSufficient && "opacity-50")
|
|
20951
20951
|
}
|
|
20952
20952
|
) }),
|
|
20953
|
-
index < inputs.length - 1 && /* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { name: "plus", size: "sm", className: "text-
|
|
20953
|
+
index < inputs.length - 1 && /* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { name: "plus", size: "sm", className: "text-muted-foreground" })
|
|
20954
20954
|
] }, index);
|
|
20955
20955
|
}) }),
|
|
20956
|
-
/* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { name: "arrow-right", size: "md", className: "text-
|
|
20956
|
+
/* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { name: "arrow-right", size: "md", className: "text-muted-foreground" }),
|
|
20957
20957
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
20958
20958
|
ItemSlot,
|
|
20959
20959
|
{
|
|
@@ -21041,7 +21041,7 @@ function DPad({
|
|
|
21041
21041
|
createButton("up"),
|
|
21042
21042
|
/* @__PURE__ */ jsxRuntime.jsx("div", {}),
|
|
21043
21043
|
createButton("left"),
|
|
21044
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-6 h-6 rounded-
|
|
21044
|
+
/* @__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" }) }),
|
|
21045
21045
|
createButton("right"),
|
|
21046
21046
|
/* @__PURE__ */ jsxRuntime.jsx("div", {}),
|
|
21047
21047
|
createButton("down"),
|
|
@@ -21103,10 +21103,10 @@ var init_DamageNumber = __esm({
|
|
|
21103
21103
|
lg: "text-2xl"
|
|
21104
21104
|
};
|
|
21105
21105
|
typeStyles = {
|
|
21106
|
-
damage: "text-
|
|
21107
|
-
heal: "text-
|
|
21108
|
-
crit: "text-
|
|
21109
|
-
miss: "text-
|
|
21106
|
+
damage: "text-error font-bold",
|
|
21107
|
+
heal: "text-success font-bold",
|
|
21108
|
+
crit: "text-warning font-extrabold",
|
|
21109
|
+
miss: "text-muted-foreground italic"
|
|
21110
21110
|
};
|
|
21111
21111
|
floatKeyframes = `
|
|
21112
21112
|
@keyframes damageFloat {
|
|
@@ -25294,7 +25294,7 @@ function HealthBar({
|
|
|
25294
25294
|
"div",
|
|
25295
25295
|
{
|
|
25296
25296
|
className: cn(
|
|
25297
|
-
"relative overflow-hidden rounded-full bg-
|
|
25297
|
+
"relative overflow-hidden rounded-full bg-muted",
|
|
25298
25298
|
sizes.bar,
|
|
25299
25299
|
"w-24",
|
|
25300
25300
|
className
|
|
@@ -25304,7 +25304,7 @@ function HealthBar({
|
|
|
25304
25304
|
{
|
|
25305
25305
|
className: cn(
|
|
25306
25306
|
"absolute inset-y-0 left-0 rounded-full",
|
|
25307
|
-
percentage > 66 ? "bg-
|
|
25307
|
+
percentage > 66 ? "bg-success" : percentage > 33 ? "bg-warning" : "bg-error",
|
|
25308
25308
|
animated && "transition-all duration-300"
|
|
25309
25309
|
),
|
|
25310
25310
|
style: { width: `${percentage}%` }
|
|
@@ -25326,7 +25326,7 @@ var init_HealthBar = __esm({
|
|
|
25326
25326
|
heartIcon = (filled, size) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
25327
25327
|
"svg",
|
|
25328
25328
|
{
|
|
25329
|
-
className: cn("transition-all duration-200", size, filled ? "text-
|
|
25329
|
+
className: cn("transition-all duration-200", size, filled ? "text-error" : "text-muted-foreground"),
|
|
25330
25330
|
viewBox: "0 0 24 24",
|
|
25331
25331
|
fill: filled ? "currentColor" : "none",
|
|
25332
25332
|
stroke: "currentColor",
|
|
@@ -25390,7 +25390,7 @@ function ScoreDisplay({
|
|
|
25390
25390
|
),
|
|
25391
25391
|
children: [
|
|
25392
25392
|
icon && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex-shrink-0", children: icon }),
|
|
25393
|
-
label && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-
|
|
25393
|
+
label && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: label }),
|
|
25394
25394
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "tabular-nums", children: formattedValue })
|
|
25395
25395
|
]
|
|
25396
25396
|
}
|
|
@@ -25428,7 +25428,7 @@ function StatBadge({
|
|
|
25428
25428
|
"div",
|
|
25429
25429
|
{
|
|
25430
25430
|
className: cn(
|
|
25431
|
-
"inline-flex items-center gap-2 rounded-
|
|
25431
|
+
"inline-flex items-center gap-2 rounded-container border backdrop-blur-sm",
|
|
25432
25432
|
sizeMap11[size] ?? sizeMap11.md,
|
|
25433
25433
|
variantMap2[variant] ?? variantMap2.default,
|
|
25434
25434
|
className
|
|
@@ -25577,7 +25577,7 @@ function WaypointMarker({
|
|
|
25577
25577
|
"div",
|
|
25578
25578
|
{
|
|
25579
25579
|
className: cn(
|
|
25580
|
-
"absolute rounded-full border-2 border-
|
|
25580
|
+
"absolute rounded-full border-2 border-info animate-ping opacity-50",
|
|
25581
25581
|
sizes.ring
|
|
25582
25582
|
)
|
|
25583
25583
|
}
|
|
@@ -25586,7 +25586,7 @@ function WaypointMarker({
|
|
|
25586
25586
|
"div",
|
|
25587
25587
|
{
|
|
25588
25588
|
className: cn(
|
|
25589
|
-
"absolute rounded-full border-2 border-
|
|
25589
|
+
"absolute rounded-full border-2 border-info",
|
|
25590
25590
|
sizes.ring
|
|
25591
25591
|
)
|
|
25592
25592
|
}
|
|
@@ -25597,9 +25597,9 @@ function WaypointMarker({
|
|
|
25597
25597
|
className: cn(
|
|
25598
25598
|
"relative flex items-center justify-center rounded-full transition-all duration-200",
|
|
25599
25599
|
sizes.dot,
|
|
25600
|
-
completed && "bg-
|
|
25601
|
-
active && !completed && "bg-
|
|
25602
|
-
!active && !completed && "bg-
|
|
25600
|
+
completed && "bg-success text-foreground",
|
|
25601
|
+
active && !completed && "bg-info text-foreground",
|
|
25602
|
+
!active && !completed && "bg-muted"
|
|
25603
25603
|
),
|
|
25604
25604
|
children: completed ? checkIcon : icon
|
|
25605
25605
|
}
|
|
@@ -25611,7 +25611,7 @@ function WaypointMarker({
|
|
|
25611
25611
|
className: cn(
|
|
25612
25612
|
"text-center whitespace-nowrap",
|
|
25613
25613
|
sizes.label,
|
|
25614
|
-
completed ? "text-
|
|
25614
|
+
completed ? "text-success" : active ? "text-info" : "text-muted-foreground"
|
|
25615
25615
|
),
|
|
25616
25616
|
children: label
|
|
25617
25617
|
}
|
|
@@ -25643,10 +25643,10 @@ function QuestTracker({
|
|
|
25643
25643
|
exports.Box,
|
|
25644
25644
|
{
|
|
25645
25645
|
className: cn(
|
|
25646
|
-
"flex items-start gap-3 rounded-
|
|
25647
|
-
isActive && !isCompleted && "bg-
|
|
25648
|
-
isCompleted && "bg-
|
|
25649
|
-
!isActive && !isCompleted && "bg-
|
|
25646
|
+
"flex items-start gap-3 rounded-container px-3 py-2 transition-colors",
|
|
25647
|
+
isActive && !isCompleted && "bg-info/20 border border-info/50",
|
|
25648
|
+
isCompleted && "bg-success/10 border border-success/30 opacity-70",
|
|
25649
|
+
!isActive && !isCompleted && "bg-muted/30 border border-border/30"
|
|
25650
25650
|
),
|
|
25651
25651
|
children: [
|
|
25652
25652
|
/* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "flex-shrink-0 pt-0.5", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -25664,9 +25664,9 @@ function QuestTracker({
|
|
|
25664
25664
|
variant: "body2",
|
|
25665
25665
|
className: cn(
|
|
25666
25666
|
"font-medium truncate",
|
|
25667
|
-
isCompleted && "line-through text-
|
|
25668
|
-
isActive && !isCompleted && "text-
|
|
25669
|
-
!isActive && !isCompleted && "text-
|
|
25667
|
+
isCompleted && "line-through text-muted-foreground",
|
|
25668
|
+
isActive && !isCompleted && "text-info",
|
|
25669
|
+
!isActive && !isCompleted && "text-muted-foreground"
|
|
25670
25670
|
),
|
|
25671
25671
|
children: quest.title
|
|
25672
25672
|
}
|
|
@@ -25684,7 +25684,7 @@ function QuestTracker({
|
|
|
25684
25684
|
exports.Typography,
|
|
25685
25685
|
{
|
|
25686
25686
|
variant: "caption",
|
|
25687
|
-
className: "text-
|
|
25687
|
+
className: "text-muted-foreground mt-1",
|
|
25688
25688
|
children: [
|
|
25689
25689
|
quest.progress,
|
|
25690
25690
|
" / ",
|
|
@@ -25741,14 +25741,14 @@ function PowerupSlots({
|
|
|
25741
25741
|
{
|
|
25742
25742
|
className: cn(
|
|
25743
25743
|
"absolute -bottom-1 left-1/2 -translate-x-1/2",
|
|
25744
|
-
"rounded px-1 py-px",
|
|
25745
|
-
"bg-
|
|
25744
|
+
"rounded-interactive px-1 py-px",
|
|
25745
|
+
"bg-background/80 border border-border"
|
|
25746
25746
|
),
|
|
25747
25747
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
25748
25748
|
exports.Typography,
|
|
25749
25749
|
{
|
|
25750
25750
|
variant: "caption",
|
|
25751
|
-
className: "text-[9px] font-mono font-bold text-
|
|
25751
|
+
className: "text-[9px] font-mono font-bold text-warning whitespace-nowrap",
|
|
25752
25752
|
children: formatTime(powerup.remainingTime)
|
|
25753
25753
|
}
|
|
25754
25754
|
)
|
|
@@ -25870,7 +25870,7 @@ function HealthPanel({
|
|
|
25870
25870
|
exports.Box,
|
|
25871
25871
|
{
|
|
25872
25872
|
className: cn(
|
|
25873
|
-
"rounded-
|
|
25873
|
+
"rounded-container bg-[var(--color-card)]/90 border border-border backdrop-blur-sm",
|
|
25874
25874
|
sizes.padding,
|
|
25875
25875
|
className
|
|
25876
25876
|
),
|
|
@@ -25881,7 +25881,7 @@ function HealthPanel({
|
|
|
25881
25881
|
{
|
|
25882
25882
|
variant: "caption",
|
|
25883
25883
|
weight: "bold",
|
|
25884
|
-
className: "text-
|
|
25884
|
+
className: "text-muted-foreground uppercase tracking-wider",
|
|
25885
25885
|
children: label
|
|
25886
25886
|
}
|
|
25887
25887
|
),
|
|
@@ -25902,7 +25902,7 @@ function HealthPanel({
|
|
|
25902
25902
|
as: "span",
|
|
25903
25903
|
variant: "caption",
|
|
25904
25904
|
weight: "bold",
|
|
25905
|
-
className: "text-
|
|
25905
|
+
className: "text-info ml-1",
|
|
25906
25906
|
children: [
|
|
25907
25907
|
"+",
|
|
25908
25908
|
shield
|
|
@@ -25927,14 +25927,14 @@ function HealthPanel({
|
|
|
25927
25927
|
exports.Box,
|
|
25928
25928
|
{
|
|
25929
25929
|
className: cn(
|
|
25930
|
-
"relative overflow-hidden rounded-
|
|
25930
|
+
"relative overflow-hidden rounded-container bg-muted",
|
|
25931
25931
|
size === "sm" ? "h-1" : size === "md" ? "h-1.5" : "h-2",
|
|
25932
25932
|
"w-full"
|
|
25933
25933
|
),
|
|
25934
25934
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
25935
25935
|
exports.Box,
|
|
25936
25936
|
{
|
|
25937
|
-
className: "absolute inset-y-0 left-0 rounded-
|
|
25937
|
+
className: "absolute inset-y-0 left-0 rounded-container bg-info transition-all duration-300",
|
|
25938
25938
|
style: { width: `${Math.min(100, shield / max * 100)}%` }
|
|
25939
25939
|
}
|
|
25940
25940
|
)
|
|
@@ -25993,7 +25993,7 @@ function ScoreBoard({
|
|
|
25993
25993
|
exports.Card,
|
|
25994
25994
|
{
|
|
25995
25995
|
className: cn(
|
|
25996
|
-
"bg-[var(--color-card)]/90 border-
|
|
25996
|
+
"bg-[var(--color-card)]/90 border-border backdrop-blur-sm",
|
|
25997
25997
|
className
|
|
25998
25998
|
),
|
|
25999
25999
|
children: /* @__PURE__ */ jsxRuntime.jsx(exports.CardContent, { className: "p-3", children: /* @__PURE__ */ jsxRuntime.jsxs(exports.Box, { className: "flex items-center gap-3 flex-wrap", children: [
|
|
@@ -26102,8 +26102,8 @@ function TurnIndicator({
|
|
|
26102
26102
|
"div",
|
|
26103
26103
|
{
|
|
26104
26104
|
className: cn(
|
|
26105
|
-
"inline-flex items-center rounded-
|
|
26106
|
-
"bg-
|
|
26105
|
+
"inline-flex items-center rounded-container",
|
|
26106
|
+
"bg-card/80 border border-muted font-medium text-foreground",
|
|
26107
26107
|
sizes.wrapper,
|
|
26108
26108
|
className
|
|
26109
26109
|
),
|
|
@@ -26111,19 +26111,19 @@ function TurnIndicator({
|
|
|
26111
26111
|
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "font-bold tabular-nums", children: [
|
|
26112
26112
|
"Turn ",
|
|
26113
26113
|
currentTurn,
|
|
26114
|
-
maxTurns != null && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-
|
|
26114
|
+
maxTurns != null && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-muted-foreground", children: [
|
|
26115
26115
|
"/",
|
|
26116
26116
|
maxTurns
|
|
26117
26117
|
] })
|
|
26118
26118
|
] }),
|
|
26119
26119
|
phase && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
26120
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-
|
|
26121
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-
|
|
26120
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: "|" }),
|
|
26121
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: phase })
|
|
26122
26122
|
] }),
|
|
26123
26123
|
activeTeam && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
26124
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-
|
|
26125
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("rounded-full bg-
|
|
26126
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-
|
|
26124
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: "|" }),
|
|
26125
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("rounded-full bg-success/20", sizes.dot) }),
|
|
26126
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-success", children: activeTeam })
|
|
26127
26127
|
] })
|
|
26128
26128
|
]
|
|
26129
26129
|
}
|
|
@@ -26162,7 +26162,7 @@ function TurnPanel({
|
|
|
26162
26162
|
exports.Box,
|
|
26163
26163
|
{
|
|
26164
26164
|
className: cn(
|
|
26165
|
-
"flex items-center gap-3 rounded-
|
|
26165
|
+
"flex items-center gap-3 rounded-container bg-[var(--color-card)]/90 border border-border backdrop-blur-sm px-3 py-2",
|
|
26166
26166
|
className
|
|
26167
26167
|
),
|
|
26168
26168
|
children: [
|
|
@@ -26214,7 +26214,7 @@ function EnemyPlate({
|
|
|
26214
26214
|
exports.Box,
|
|
26215
26215
|
{
|
|
26216
26216
|
className: cn(
|
|
26217
|
-
"inline-flex flex-col gap-1 rounded-
|
|
26217
|
+
"inline-flex flex-col gap-1 rounded-container bg-[var(--color-card)]/90 border border-border backdrop-blur-sm px-3 py-1.5",
|
|
26218
26218
|
"min-w-[120px]",
|
|
26219
26219
|
className
|
|
26220
26220
|
),
|
|
@@ -26308,7 +26308,7 @@ function UnitCommandBar({
|
|
|
26308
26308
|
exports.Box,
|
|
26309
26309
|
{
|
|
26310
26310
|
className: cn(
|
|
26311
|
-
"flex items-center gap-1.5 rounded-
|
|
26311
|
+
"flex items-center gap-1.5 rounded-container bg-[var(--color-card)]/90 border border-border backdrop-blur-sm px-2 py-1.5",
|
|
26312
26312
|
className
|
|
26313
26313
|
),
|
|
26314
26314
|
children: commands.map((command, i) => /* @__PURE__ */ jsxRuntime.jsxs(exports.Box, { className: "flex flex-col items-center gap-0.5", children: [
|
|
@@ -26393,8 +26393,8 @@ function GameHud({
|
|
|
26393
26393
|
className: cn(
|
|
26394
26394
|
"relative z-10",
|
|
26395
26395
|
positionMap[position],
|
|
26396
|
-
transparent && "bg-gradient-to-b from-
|
|
26397
|
-
position === "bottom" && "bg-gradient-to-t from-
|
|
26396
|
+
transparent && "bg-gradient-to-b from-background/50 to-transparent",
|
|
26397
|
+
position === "bottom" && "bg-gradient-to-t from-background/50 to-transparent",
|
|
26398
26398
|
className
|
|
26399
26399
|
),
|
|
26400
26400
|
children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex gap-4", children: stats.map((stat, i) => /* @__PURE__ */ jsxRuntime.jsx(StatBadge, { ...stat, size }, i)) })
|
|
@@ -26552,8 +26552,8 @@ function DialogueBox({
|
|
|
26552
26552
|
tabIndex: 0,
|
|
26553
26553
|
role: "dialog",
|
|
26554
26554
|
"aria-label": "Dialogue",
|
|
26555
|
-
children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mx-4 my-4 bg-[var(--color-card)] bg-opacity-95 border-2 border-
|
|
26556
|
-
dialogue.portrait && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-shrink-0 p-4 border-r border-
|
|
26555
|
+
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: [
|
|
26556
|
+
dialogue.portrait && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-shrink-0 p-4 border-r border-border", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
26557
26557
|
"img",
|
|
26558
26558
|
{
|
|
26559
26559
|
src: dialogue.portrait,
|
|
@@ -26563,7 +26563,7 @@ function DialogueBox({
|
|
|
26563
26563
|
}
|
|
26564
26564
|
) }),
|
|
26565
26565
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1 p-4", children: [
|
|
26566
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-
|
|
26566
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-warning font-bold mb-2", children: dialogue.speaker }),
|
|
26567
26567
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-[var(--color-foreground)] text-lg leading-relaxed min-h-[60px]", children: [
|
|
26568
26568
|
displayedText,
|
|
26569
26569
|
isTyping && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "animate-pulse", children: "\u258C" })
|
|
@@ -26573,9 +26573,9 @@ function DialogueBox({
|
|
|
26573
26573
|
{
|
|
26574
26574
|
type: "button",
|
|
26575
26575
|
className: cn(
|
|
26576
|
-
"block w-full text-left px-4 py-2 rounded transition-colors",
|
|
26577
|
-
"hover:bg-[var(--color-surface,#374151)] focus:outline-none focus:ring-2 focus:ring-
|
|
26578
|
-
selectedChoice === index ? "bg-[var(--color-surface,#374151)] text-
|
|
26576
|
+
"block w-full text-left px-4 py-2 rounded-interactive transition-colors",
|
|
26577
|
+
"hover:bg-[var(--color-surface,#374151)] focus:outline-none focus:ring-2 focus:ring-warning",
|
|
26578
|
+
selectedChoice === index ? "bg-[var(--color-surface,#374151)] text-warning" : "bg-[var(--color-card)] text-[var(--color-foreground)]"
|
|
26579
26579
|
),
|
|
26580
26580
|
onClick: (e) => {
|
|
26581
26581
|
e.stopPropagation();
|
|
@@ -26583,7 +26583,7 @@ function DialogueBox({
|
|
|
26583
26583
|
onChoice?.(choice);
|
|
26584
26584
|
},
|
|
26585
26585
|
children: [
|
|
26586
|
-
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-
|
|
26586
|
+
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-muted-foreground mr-2", children: [
|
|
26587
26587
|
index + 1,
|
|
26588
26588
|
"."
|
|
26589
26589
|
] }),
|
|
@@ -26592,7 +26592,7 @@ function DialogueBox({
|
|
|
26592
26592
|
},
|
|
26593
26593
|
index
|
|
26594
26594
|
)) }),
|
|
26595
|
-
!isTyping && !dialogue.choices?.length && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-4 text-
|
|
26595
|
+
!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..." })
|
|
26596
26596
|
] })
|
|
26597
26597
|
] }) })
|
|
26598
26598
|
}
|
|
@@ -26695,7 +26695,7 @@ function InventoryPanel({
|
|
|
26695
26695
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
26696
26696
|
"div",
|
|
26697
26697
|
{
|
|
26698
|
-
className: "grid gap-1 bg-[var(--color-card)] p-2 rounded-
|
|
26698
|
+
className: "grid gap-1 bg-[var(--color-card)] p-2 rounded-container border border-border",
|
|
26699
26699
|
style: {
|
|
26700
26700
|
gridTemplateColumns: `repeat(${safeColumns}, ${slotSize}px)`,
|
|
26701
26701
|
gridTemplateRows: `repeat(${rows}, ${slotSize}px)`
|
|
@@ -26707,8 +26707,8 @@ function InventoryPanel({
|
|
|
26707
26707
|
className: cn(
|
|
26708
26708
|
"relative flex items-center justify-center",
|
|
26709
26709
|
"bg-[var(--color-card)] border rounded transition-colors",
|
|
26710
|
-
"hover:bg-[var(--color-surface,#374151)] focus:outline-none focus:ring-2 focus:ring-
|
|
26711
|
-
selectedSlot === index ? "border-
|
|
26710
|
+
"hover:bg-[var(--color-surface,#374151)] focus:outline-none focus:ring-2 focus:ring-info",
|
|
26711
|
+
selectedSlot === index ? "border-warning bg-[var(--color-surface,#374151)]" : "border-muted"
|
|
26712
26712
|
),
|
|
26713
26713
|
style: { width: slotSize, height: slotSize },
|
|
26714
26714
|
onClick: () => handleSlotClick(index),
|
|
@@ -26727,8 +26727,8 @@ function InventoryPanel({
|
|
|
26727
26727
|
className: "w-8 h-8 object-contain",
|
|
26728
26728
|
style: { imageRendering: "pixelated" }
|
|
26729
26729
|
}
|
|
26730
|
-
) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-8 h-8 bg-
|
|
26731
|
-
item.quantity > 1 && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "absolute bottom-0 right-0 bg-
|
|
26730
|
+
) : /* @__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() }),
|
|
26731
|
+
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 })
|
|
26732
26732
|
] })
|
|
26733
26733
|
},
|
|
26734
26734
|
index
|
|
@@ -26738,7 +26738,7 @@ function InventoryPanel({
|
|
|
26738
26738
|
showTooltips && hoveredItem && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
26739
26739
|
"div",
|
|
26740
26740
|
{
|
|
26741
|
-
className: "fixed z-50 bg-[var(--color-card)] border border-
|
|
26741
|
+
className: "fixed z-50 bg-[var(--color-card)] border border-border rounded-container p-2 shadow-elevation-card pointer-events-none",
|
|
26742
26742
|
style: {
|
|
26743
26743
|
left: tooltipPosition.x,
|
|
26744
26744
|
top: tooltipPosition.y,
|
|
@@ -26746,8 +26746,8 @@ function InventoryPanel({
|
|
|
26746
26746
|
},
|
|
26747
26747
|
children: [
|
|
26748
26748
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "font-semibold text-[var(--color-foreground)]", children: hoveredItem.name || hoveredItem.type }),
|
|
26749
|
-
hoveredItem.description && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-sm text-
|
|
26750
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-xs text-
|
|
26749
|
+
hoveredItem.description && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-sm text-muted-foreground mt-1", children: hoveredItem.description }),
|
|
26750
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-xs text-muted-foreground mt-1", children: [
|
|
26751
26751
|
"Quantity: ",
|
|
26752
26752
|
hoveredItem.quantity
|
|
26753
26753
|
] })
|
|
@@ -26825,7 +26825,7 @@ function GameMenu({
|
|
|
26825
26825
|
children: title
|
|
26826
26826
|
}
|
|
26827
26827
|
),
|
|
26828
|
-
subtitle && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-2 text-lg text-
|
|
26828
|
+
subtitle && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-2 text-lg text-muted-foreground tracking-widest uppercase", children: subtitle })
|
|
26829
26829
|
] }),
|
|
26830
26830
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-col gap-4 w-full max-w-md", children: resolvedOptions.map((option, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
26831
26831
|
"button",
|
|
@@ -26833,10 +26833,10 @@ function GameMenu({
|
|
|
26833
26833
|
onClick: () => handleOptionClick(option),
|
|
26834
26834
|
disabled: option.disabled,
|
|
26835
26835
|
className: cn(
|
|
26836
|
-
"w-full py-4 px-8 rounded-
|
|
26836
|
+
"w-full py-4 px-8 rounded-container border-2 font-bold text-lg",
|
|
26837
26837
|
"transition-all duration-200 transform",
|
|
26838
26838
|
"hover:scale-105 active:scale-95",
|
|
26839
|
-
"focus:outline-none focus:ring-4 focus:ring-
|
|
26839
|
+
"focus:outline-none focus:ring-4 focus:ring-foreground/25",
|
|
26840
26840
|
variantMap3[option.variant ?? "secondary"] ?? variantMap3.secondary,
|
|
26841
26841
|
option.disabled && "opacity-50 cursor-not-allowed hover:scale-100"
|
|
26842
26842
|
),
|
|
@@ -26848,8 +26848,8 @@ function GameMenu({
|
|
|
26848
26848
|
index
|
|
26849
26849
|
)) }),
|
|
26850
26850
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "absolute inset-0 pointer-events-none overflow-hidden", children: [
|
|
26851
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute top-1/4 left-1/4 w-64 h-64 bg-
|
|
26852
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute bottom-1/4 right-1/4 w-96 h-96 bg-
|
|
26851
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute top-1/4 left-1/4 w-64 h-64 bg-info/10 rounded-container blur-3xl" }),
|
|
26852
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute bottom-1/4 right-1/4 w-96 h-96 bg-accent/10 rounded-container blur-3xl" })
|
|
26853
26853
|
] })
|
|
26854
26854
|
]
|
|
26855
26855
|
}
|
|
@@ -26862,9 +26862,9 @@ var init_GameMenu = __esm({
|
|
|
26862
26862
|
init_cn();
|
|
26863
26863
|
init_useEventBus();
|
|
26864
26864
|
variantMap3 = {
|
|
26865
|
-
primary: "bg-[var(--color-primary)] hover:bg-
|
|
26866
|
-
secondary: "bg-[var(--color-surface,#374151)] hover:bg-
|
|
26867
|
-
ghost: "bg-transparent hover:bg-
|
|
26865
|
+
primary: "bg-[var(--color-primary)] hover:bg-info text-[var(--color-primary-foreground)] border-info shadow-lg shadow-info/25",
|
|
26866
|
+
secondary: "bg-[var(--color-surface,#374151)] hover:bg-muted text-[var(--color-foreground)] border-muted",
|
|
26867
|
+
ghost: "bg-transparent hover:bg-foreground/10 text-[var(--color-foreground)] border-foreground/20"
|
|
26868
26868
|
};
|
|
26869
26869
|
GameMenu.displayName = "GameMenu";
|
|
26870
26870
|
}
|
|
@@ -26932,13 +26932,13 @@ function GameOverScreen({
|
|
|
26932
26932
|
children: title
|
|
26933
26933
|
}
|
|
26934
26934
|
),
|
|
26935
|
-
message && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xl text-
|
|
26936
|
-
isNewHighScore && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-6 px-6 py-2 bg-
|
|
26935
|
+
message && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xl text-muted-foreground mb-8 text-center max-w-md", children: message }),
|
|
26936
|
+
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}" }) }),
|
|
26937
26937
|
stats.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(
|
|
26938
26938
|
"div",
|
|
26939
26939
|
{
|
|
26940
26940
|
className: cn(
|
|
26941
|
-
"mb-8 p-6 rounded-
|
|
26941
|
+
"mb-8 p-6 rounded-container border-2 bg-background/30",
|
|
26942
26942
|
colors.accent
|
|
26943
26943
|
),
|
|
26944
26944
|
children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-2 md:grid-cols-3 gap-4", children: stats.map((stat, index) => {
|
|
@@ -26947,7 +26947,7 @@ function GameOverScreen({
|
|
|
26947
26947
|
displayValue = formatTime2(displayValue);
|
|
26948
26948
|
}
|
|
26949
26949
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-center", children: [
|
|
26950
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-
|
|
26950
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-muted-foreground text-sm mb-1", children: stat.label }),
|
|
26951
26951
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-[var(--color-foreground)] text-2xl font-bold flex items-center justify-center gap-2", children: [
|
|
26952
26952
|
stat.icon && /* @__PURE__ */ jsxRuntime.jsx("span", { children: stat.icon }),
|
|
26953
26953
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "tabular-nums", children: displayValue })
|
|
@@ -26961,10 +26961,10 @@ function GameOverScreen({
|
|
|
26961
26961
|
{
|
|
26962
26962
|
onClick: () => handleActionClick(action),
|
|
26963
26963
|
className: cn(
|
|
26964
|
-
"px-8 py-4 rounded-
|
|
26964
|
+
"px-8 py-4 rounded-container border-2 font-bold text-lg",
|
|
26965
26965
|
"transition-all duration-200",
|
|
26966
26966
|
"hover:scale-105 active:scale-95",
|
|
26967
|
-
"focus:outline-none focus:ring-4 focus:ring-
|
|
26967
|
+
"focus:outline-none focus:ring-4 focus:ring-foreground/25",
|
|
26968
26968
|
buttonVariants[action.variant ?? "secondary"]
|
|
26969
26969
|
),
|
|
26970
26970
|
children: action.label
|
|
@@ -26983,25 +26983,25 @@ var init_GameOverScreen = __esm({
|
|
|
26983
26983
|
init_useEventBus();
|
|
26984
26984
|
variantColors = {
|
|
26985
26985
|
victory: {
|
|
26986
|
-
bg: "from-
|
|
26987
|
-
title: "text-
|
|
26988
|
-
accent: "border-
|
|
26986
|
+
bg: "from-success/90 to-success/90",
|
|
26987
|
+
title: "text-success",
|
|
26988
|
+
accent: "border-success"
|
|
26989
26989
|
},
|
|
26990
26990
|
defeat: {
|
|
26991
|
-
bg: "from-
|
|
26992
|
-
title: "text-
|
|
26993
|
-
accent: "border-
|
|
26991
|
+
bg: "from-error/90 to-background/90",
|
|
26992
|
+
title: "text-error",
|
|
26993
|
+
accent: "border-error"
|
|
26994
26994
|
},
|
|
26995
26995
|
neutral: {
|
|
26996
|
-
bg: "from-
|
|
26997
|
-
title: "text-
|
|
26998
|
-
accent: "border-
|
|
26996
|
+
bg: "from-muted/90 to-background/90",
|
|
26997
|
+
title: "text-foreground",
|
|
26998
|
+
accent: "border-muted"
|
|
26999
26999
|
}
|
|
27000
27000
|
};
|
|
27001
27001
|
buttonVariants = {
|
|
27002
|
-
primary: "bg-[var(--color-primary)] hover:bg-
|
|
27003
|
-
secondary: "bg-[var(--color-surface,#374151)] hover:bg-
|
|
27004
|
-
ghost: "bg-transparent hover:bg-
|
|
27002
|
+
primary: "bg-[var(--color-primary)] hover:bg-info text-[var(--color-primary-foreground)] border-info",
|
|
27003
|
+
secondary: "bg-[var(--color-surface,#374151)] hover:bg-muted text-[var(--color-foreground)] border-muted",
|
|
27004
|
+
ghost: "bg-transparent hover:bg-foreground/10 text-[var(--color-foreground)] border-foreground/20"
|
|
27005
27005
|
};
|
|
27006
27006
|
GameOverScreen.displayName = "GameOverScreen";
|
|
27007
27007
|
}
|
|
@@ -27235,7 +27235,7 @@ function PlatformerCanvas({
|
|
|
27235
27235
|
{
|
|
27236
27236
|
ref: canvasRef,
|
|
27237
27237
|
style: { width: canvasWidth, height: canvasHeight },
|
|
27238
|
-
className: cn("block rounded-
|
|
27238
|
+
className: cn("block rounded-container border border-border/10", className),
|
|
27239
27239
|
"data-testid": "platformer-canvas",
|
|
27240
27240
|
tabIndex: 0
|
|
27241
27241
|
}
|
|
@@ -34902,7 +34902,7 @@ function DebuggerBoard({
|
|
|
34902
34902
|
backgroundPosition: "center"
|
|
34903
34903
|
},
|
|
34904
34904
|
children: /* @__PURE__ */ jsxRuntime.jsxs(exports.VStack, { gap: "lg", className: "p-4", children: [
|
|
34905
|
-
entity.headerImage && !headerError ? /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "w-full h-32 overflow-hidden rounded-
|
|
34905
|
+
entity.headerImage && !headerError ? /* @__PURE__ */ jsxRuntime.jsx(exports.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(exports.Box, { className: "w-full h-32 rounded-container bg-gradient-to-br from-muted to-accent opacity-60" }) : null,
|
|
34906
34906
|
/* @__PURE__ */ jsxRuntime.jsx(exports.Card, { className: "p-4", children: /* @__PURE__ */ jsxRuntime.jsxs(exports.VStack, { gap: "sm", children: [
|
|
34907
34907
|
/* @__PURE__ */ jsxRuntime.jsxs(exports.HStack, { gap: "xs", align: "center", children: [
|
|
34908
34908
|
/* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { icon: LucideIcons2.Bug, size: "sm" }),
|
|
@@ -34915,11 +34915,11 @@ function DebuggerBoard({
|
|
|
34915
34915
|
const isFlagged = flaggedLines.has(line.id);
|
|
34916
34916
|
let lineStyle = "";
|
|
34917
34917
|
if (submitted) {
|
|
34918
|
-
if (line.isBug && isFlagged) lineStyle = "bg-
|
|
34919
|
-
else if (line.isBug && !isFlagged) lineStyle = "bg-
|
|
34920
|
-
else if (!line.isBug && isFlagged) lineStyle = "bg-
|
|
34918
|
+
if (line.isBug && isFlagged) lineStyle = "bg-success/10";
|
|
34919
|
+
else if (line.isBug && !isFlagged) lineStyle = "bg-warning/10";
|
|
34920
|
+
else if (!line.isBug && isFlagged) lineStyle = "bg-error/10";
|
|
34921
34921
|
} else if (isFlagged) {
|
|
34922
|
-
lineStyle = "bg-
|
|
34922
|
+
lineStyle = "bg-error/10";
|
|
34923
34923
|
}
|
|
34924
34924
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
34925
34925
|
exports.HStack,
|
|
@@ -34932,8 +34932,8 @@ function DebuggerBoard({
|
|
|
34932
34932
|
/* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "w-10 flex-shrink-0 flex items-center justify-center border-r border-border text-muted-foreground", children: /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "caption", children: i + 1 }) }),
|
|
34933
34933
|
/* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "flex-1 px-3 py-1.5 font-mono text-sm whitespace-pre", children: /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body", className: "font-mono text-sm", children: line.content }) }),
|
|
34934
34934
|
/* @__PURE__ */ jsxRuntime.jsxs(exports.Box, { className: "w-8 flex-shrink-0 flex items-center justify-center", children: [
|
|
34935
|
-
isFlagged && /* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { icon: LucideIcons2.Bug, size: "xs", className: "text-
|
|
34936
|
-
submitted && line.isBug && !isFlagged && /* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { icon: LucideIcons2.Bug, size: "xs", className: "text-
|
|
34935
|
+
isFlagged && /* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { icon: LucideIcons2.Bug, size: "xs", className: "text-error" }),
|
|
34936
|
+
submitted && line.isBug && !isFlagged && /* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { icon: LucideIcons2.Bug, size: "xs", className: "text-warning" })
|
|
34937
34937
|
] })
|
|
34938
34938
|
]
|
|
34939
34939
|
},
|
|
@@ -34948,7 +34948,7 @@ function DebuggerBoard({
|
|
|
34948
34948
|
{
|
|
34949
34949
|
icon: flaggedLines.has(line.id) ? LucideIcons2.CheckCircle : LucideIcons2.XCircle,
|
|
34950
34950
|
size: "xs",
|
|
34951
|
-
className: flaggedLines.has(line.id) ? "text-
|
|
34951
|
+
className: flaggedLines.has(line.id) ? "text-success mt-0.5" : "text-warning mt-0.5"
|
|
34952
34952
|
}
|
|
34953
34953
|
),
|
|
34954
34954
|
/* @__PURE__ */ jsxRuntime.jsxs(exports.VStack, { gap: "none", children: [
|
|
@@ -34957,7 +34957,7 @@ function DebuggerBoard({
|
|
|
34957
34957
|
] })
|
|
34958
34958
|
] }, line.id))
|
|
34959
34959
|
] }) }),
|
|
34960
|
-
showHint && entity.hint && /* @__PURE__ */ jsxRuntime.jsx(exports.Card, { className: "p-4 border-l-4 border-l-
|
|
34960
|
+
showHint && entity.hint && /* @__PURE__ */ jsxRuntime.jsx(exports.Card, { className: "p-4 border-l-4 border-l-warning", children: /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body", children: entity.hint }) }),
|
|
34961
34961
|
/* @__PURE__ */ jsxRuntime.jsxs(exports.HStack, { gap: "sm", justify: "center", children: [
|
|
34962
34962
|
!submitted ? /* @__PURE__ */ jsxRuntime.jsxs(exports.Button, { variant: "primary", onClick: handleSubmit, disabled: flaggedLines.size === 0, children: [
|
|
34963
34963
|
/* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { icon: LucideIcons2.Send, size: "sm" }),
|
|
@@ -35441,12 +35441,12 @@ function DialogueBubble({
|
|
|
35441
35441
|
"div",
|
|
35442
35442
|
{
|
|
35443
35443
|
className: cn(
|
|
35444
|
-
"flex items-start gap-3 rounded-
|
|
35444
|
+
"flex items-start gap-3 rounded-container bg-background/80 backdrop-blur-sm px-4 py-3 border border-border/10",
|
|
35445
35445
|
position === "top" ? "rounded-bl-none" : "rounded-tl-none",
|
|
35446
35446
|
className
|
|
35447
35447
|
),
|
|
35448
35448
|
children: [
|
|
35449
|
-
portrait && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-shrink-0 w-12 h-12 rounded-full overflow-hidden border-2 border-
|
|
35449
|
+
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(
|
|
35450
35450
|
"img",
|
|
35451
35451
|
{
|
|
35452
35452
|
src: portrait,
|
|
@@ -35455,8 +35455,8 @@ function DialogueBubble({
|
|
|
35455
35455
|
}
|
|
35456
35456
|
) }),
|
|
35457
35457
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-1 min-w-0", children: [
|
|
35458
|
-
speaker && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-bold text-
|
|
35459
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm text-
|
|
35458
|
+
speaker && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-bold text-warning", children: speaker }),
|
|
35459
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm text-foreground leading-relaxed", children: text })
|
|
35460
35460
|
] })
|
|
35461
35461
|
]
|
|
35462
35462
|
}
|
|
@@ -35775,7 +35775,7 @@ function LinearView({
|
|
|
35775
35775
|
className
|
|
35776
35776
|
}) {
|
|
35777
35777
|
const currentIdx = trait.states.indexOf(trait.currentState);
|
|
35778
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(exports.VStack, { className: cn("p-3 rounded-
|
|
35778
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(exports.VStack, { className: cn("p-3 rounded-container bg-card border border-border", className), gap: "sm", children: [
|
|
35779
35779
|
trait.description && /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "caption", className: "text-muted-foreground", children: trait.description }),
|
|
35780
35780
|
/* @__PURE__ */ jsxRuntime.jsx(exports.HStack, { className: "flex-wrap items-center", gap: "xs", children: trait.states.map((state, i) => {
|
|
35781
35781
|
const isDone = i < currentIdx;
|
|
@@ -35797,10 +35797,10 @@ function LinearView({
|
|
|
35797
35797
|
{
|
|
35798
35798
|
display: "inline-flex",
|
|
35799
35799
|
className: cn(
|
|
35800
|
-
"items-center justify-center rounded-
|
|
35800
|
+
"items-center justify-center rounded-pill px-3 py-1 border-2 transition-all",
|
|
35801
35801
|
SIZE_CONFIG2[size || "md"].fontSize,
|
|
35802
35802
|
isDone && "bg-success/20 border-success text-success",
|
|
35803
|
-
isCurrent && "bg-primary/20 border-primary text-primary font-bold shadow-
|
|
35803
|
+
isCurrent && "bg-primary/20 border-primary text-primary font-bold shadow-elevation-card shadow-primary/20",
|
|
35804
35804
|
!isDone && !isCurrent && "bg-muted border-border text-muted-foreground"
|
|
35805
35805
|
),
|
|
35806
35806
|
children: [
|
|
@@ -35822,7 +35822,7 @@ function CompactView({
|
|
|
35822
35822
|
const { t } = useTranslate();
|
|
35823
35823
|
const config = SIZE_CONFIG2[size || "md"];
|
|
35824
35824
|
const currentTransitions = trait.transitions.filter((t2) => t2.from === trait.currentState);
|
|
35825
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(exports.VStack, { className: cn("p-3 rounded-
|
|
35825
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(exports.VStack, { className: cn("p-3 rounded-container bg-card border border-border", className), gap: "sm", children: [
|
|
35826
35826
|
/* @__PURE__ */ jsxRuntime.jsxs(exports.HStack, { className: "items-center justify-between", children: [
|
|
35827
35827
|
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body2", className: "text-foreground font-bold", children: trait.name }),
|
|
35828
35828
|
/* @__PURE__ */ jsxRuntime.jsx(StateIndicator, { state: trait.currentState, size: "sm", stateStyles })
|
|
@@ -35858,7 +35858,7 @@ function FullView({
|
|
|
35858
35858
|
const { t } = useTranslate();
|
|
35859
35859
|
const config = SIZE_CONFIG2[size || "md"];
|
|
35860
35860
|
const currentTransitions = trait.transitions.filter((t2) => t2.from === trait.currentState);
|
|
35861
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(exports.VStack, { className: cn("p-3 rounded-
|
|
35861
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(exports.VStack, { className: cn("p-3 rounded-container bg-card border border-border", className), gap: "sm", children: [
|
|
35862
35862
|
/* @__PURE__ */ jsxRuntime.jsxs(exports.HStack, { className: "items-center justify-between", children: [
|
|
35863
35863
|
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body2", className: "text-foreground font-bold", children: trait.name }),
|
|
35864
35864
|
/* @__PURE__ */ jsxRuntime.jsx(StateIndicator, { state: trait.currentState, size: "sm", stateStyles })
|
|
@@ -35872,9 +35872,9 @@ function FullView({
|
|
|
35872
35872
|
{
|
|
35873
35873
|
display: "flex",
|
|
35874
35874
|
className: cn(
|
|
35875
|
-
"items-center justify-center rounded-
|
|
35875
|
+
"items-center justify-center rounded-container border-2 transition-all px-2",
|
|
35876
35876
|
config.nodeSize,
|
|
35877
|
-
isCurrent && "bg-primary/20 border-primary shadow-
|
|
35877
|
+
isCurrent && "bg-primary/20 border-primary shadow-elevation-card shadow-primary/20",
|
|
35878
35878
|
!isCurrent && hasOutgoing && "bg-muted border-border hover:border-muted-foreground",
|
|
35879
35879
|
!isCurrent && !hasOutgoing && "bg-background border-border opacity-60",
|
|
35880
35880
|
onStateClick && "cursor-pointer"
|
|
@@ -36304,7 +36304,7 @@ function EventHandlerBoard({
|
|
|
36304
36304
|
backgroundPosition: "center"
|
|
36305
36305
|
},
|
|
36306
36306
|
children: [
|
|
36307
|
-
entity.headerImage && !headerError ? /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "w-full h-32 overflow-hidden rounded-
|
|
36307
|
+
entity.headerImage && !headerError ? /* @__PURE__ */ jsxRuntime.jsx(exports.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(exports.Box, { className: "w-full h-32 rounded-container bg-gradient-to-br from-muted to-accent opacity-60" }) : null,
|
|
36308
36308
|
/* @__PURE__ */ jsxRuntime.jsxs(exports.VStack, { gap: "xs", children: [
|
|
36309
36309
|
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "h4", className: "text-foreground", children: entity.title }),
|
|
36310
36310
|
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body2", className: "text-muted-foreground", children: entity.description }),
|
|
@@ -36319,7 +36319,7 @@ function EventHandlerBoard({
|
|
|
36319
36319
|
exports.Box,
|
|
36320
36320
|
{
|
|
36321
36321
|
className: cn(
|
|
36322
|
-
"p-3 rounded-
|
|
36322
|
+
"p-3 rounded-container border-2 cursor-pointer transition-all hover:scale-105",
|
|
36323
36323
|
selectedObjectId === obj.id ? "border-primary bg-primary/10" : "border-border bg-card hover:border-muted-foreground"
|
|
36324
36324
|
),
|
|
36325
36325
|
onClick: () => setSelectedObjectId(obj.id),
|
|
@@ -36341,10 +36341,10 @@ function EventHandlerBoard({
|
|
|
36341
36341
|
}
|
|
36342
36342
|
),
|
|
36343
36343
|
eventLog.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(EventLog, { entries: eventLog }),
|
|
36344
|
-
playState === "success" && /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "p-4 rounded-
|
|
36344
|
+
playState === "success" && /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "p-4 rounded-container bg-success/20 border border-success text-center", children: /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "h5", className: "text-success", children: entity.successMessage || t("eventHandler.chainComplete") }) }),
|
|
36345
36345
|
playState === "fail" && /* @__PURE__ */ jsxRuntime.jsxs(exports.VStack, { gap: "sm", children: [
|
|
36346
|
-
/* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "p-4 rounded-
|
|
36347
|
-
showHint && /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "p-3 rounded-
|
|
36346
|
+
/* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "p-4 rounded-container bg-warning/10 border border-warning/30 text-center", children: /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body1", className: "text-foreground font-medium", children: t(encourageKey) }) }),
|
|
36347
|
+
showHint && /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "p-3 rounded-container bg-accent/10 border border-accent/30", children: /* @__PURE__ */ jsxRuntime.jsxs(exports.HStack, { className: "items-start", gap: "xs", children: [
|
|
36348
36348
|
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body2", className: "text-accent font-bold shrink-0", children: "\u{1F4A1} " + t("game.hint") + ":" }),
|
|
36349
36349
|
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body2", className: "text-foreground", children: entity.hint })
|
|
36350
36350
|
] }) })
|
|
@@ -39390,7 +39390,7 @@ function MiniMap({
|
|
|
39390
39390
|
"div",
|
|
39391
39391
|
{
|
|
39392
39392
|
className: cn(
|
|
39393
|
-
"relative inline-block border border-
|
|
39393
|
+
"relative inline-block border border-border/20 rounded-container",
|
|
39394
39394
|
className
|
|
39395
39395
|
),
|
|
39396
39396
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -39610,7 +39610,7 @@ function NegotiatorBoard({
|
|
|
39610
39610
|
backgroundPosition: "center"
|
|
39611
39611
|
},
|
|
39612
39612
|
children: /* @__PURE__ */ jsxRuntime.jsxs(exports.VStack, { gap: "lg", className: "p-4", children: [
|
|
39613
|
-
entity.headerImage && !headerError ? /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "w-full h-32 overflow-hidden rounded-
|
|
39613
|
+
entity.headerImage && !headerError ? /* @__PURE__ */ jsxRuntime.jsx(exports.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(exports.Box, { className: "w-full h-32 rounded-container bg-gradient-to-br from-muted to-accent opacity-60" }) : null,
|
|
39614
39614
|
/* @__PURE__ */ jsxRuntime.jsx(exports.Card, { className: "p-4", children: /* @__PURE__ */ jsxRuntime.jsxs(exports.VStack, { gap: "sm", children: [
|
|
39615
39615
|
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "h4", weight: "bold", children: entity.title }),
|
|
39616
39616
|
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body", children: entity.description }),
|
|
@@ -39656,7 +39656,7 @@ function NegotiatorBoard({
|
|
|
39656
39656
|
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "caption", className: "text-muted-foreground", children: "vs" }),
|
|
39657
39657
|
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "caption", children: getActionLabel(round.opponentAction) }),
|
|
39658
39658
|
/* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { icon: LucideIcons2.ArrowRight, size: "xs" }),
|
|
39659
|
-
/* @__PURE__ */ jsxRuntime.jsxs(exports.Typography, { variant: "caption", weight: "bold", className: "text-
|
|
39659
|
+
/* @__PURE__ */ jsxRuntime.jsxs(exports.Typography, { variant: "caption", weight: "bold", className: "text-success", children: [
|
|
39660
39660
|
"+",
|
|
39661
39661
|
round.playerPayoff
|
|
39662
39662
|
] }),
|
|
@@ -39667,7 +39667,7 @@ function NegotiatorBoard({
|
|
|
39667
39667
|
] }, round.round))
|
|
39668
39668
|
] }) }),
|
|
39669
39669
|
isComplete && /* @__PURE__ */ jsxRuntime.jsx(exports.Card, { className: "p-4", children: /* @__PURE__ */ jsxRuntime.jsxs(exports.VStack, { gap: "sm", align: "center", children: [
|
|
39670
|
-
/* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { icon: LucideIcons2.CheckCircle, size: "lg", className: won ? "text-
|
|
39670
|
+
/* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { icon: LucideIcons2.CheckCircle, size: "lg", className: won ? "text-success" : "text-error" }),
|
|
39671
39671
|
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body", weight: "bold", children: won ? entity.successMessage ?? t("negotiator.success") : entity.failMessage ?? t("negotiator.failed") }),
|
|
39672
39672
|
/* @__PURE__ */ jsxRuntime.jsxs(exports.Typography, { variant: "caption", className: "text-muted-foreground", children: [
|
|
39673
39673
|
t("negotiator.finalScore"),
|
|
@@ -39677,7 +39677,7 @@ function NegotiatorBoard({
|
|
|
39677
39677
|
entity.targetScore
|
|
39678
39678
|
] })
|
|
39679
39679
|
] }) }),
|
|
39680
|
-
showHint && entity.hint && !won && /* @__PURE__ */ jsxRuntime.jsx(exports.Card, { className: "p-4 border-l-4 border-l-
|
|
39680
|
+
showHint && entity.hint && !won && /* @__PURE__ */ jsxRuntime.jsx(exports.Card, { className: "p-4 border-l-4 border-l-warning", children: /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body", children: entity.hint }) }),
|
|
39681
39681
|
isComplete && !won && /* @__PURE__ */ jsxRuntime.jsx(exports.HStack, { justify: "center", children: /* @__PURE__ */ jsxRuntime.jsx(exports.Button, { variant: "primary", onClick: handleReset, children: t("negotiator.playAgain") }) })
|
|
39682
39682
|
] })
|
|
39683
39683
|
}
|
|
@@ -40350,17 +40350,17 @@ function ResourceCounter({
|
|
|
40350
40350
|
"div",
|
|
40351
40351
|
{
|
|
40352
40352
|
className: cn(
|
|
40353
|
-
"inline-flex items-center rounded-
|
|
40354
|
-
"bg-
|
|
40353
|
+
"inline-flex items-center rounded-container",
|
|
40354
|
+
"bg-card/80 border border-muted font-medium text-foreground",
|
|
40355
40355
|
sizes.wrapper,
|
|
40356
40356
|
className
|
|
40357
40357
|
),
|
|
40358
40358
|
children: [
|
|
40359
40359
|
icon && /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("flex-shrink-0", sizes.icon), children: icon }),
|
|
40360
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-
|
|
40360
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: label }),
|
|
40361
40361
|
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: cn("font-bold tabular-nums", color), children: [
|
|
40362
40362
|
value,
|
|
40363
|
-
max != null && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-
|
|
40363
|
+
max != null && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-muted-foreground", children: [
|
|
40364
40364
|
"/",
|
|
40365
40365
|
max
|
|
40366
40366
|
] })
|
|
@@ -42307,7 +42307,7 @@ function TraitSlot({
|
|
|
42307
42307
|
display: "flex",
|
|
42308
42308
|
position: "relative",
|
|
42309
42309
|
className: cn(
|
|
42310
|
-
"items-center justify-center rounded-
|
|
42310
|
+
"items-center justify-center rounded-container transition-all duration-200 bg-card/50",
|
|
42311
42311
|
!locked && "cursor-pointer",
|
|
42312
42312
|
locked && "cursor-not-allowed opacity-50",
|
|
42313
42313
|
isEmpty && !locked && "border-2 border-dashed border-border hover:border-muted-foreground",
|
|
@@ -42323,7 +42323,7 @@ function TraitSlot({
|
|
|
42323
42323
|
style: {
|
|
42324
42324
|
width: config.box,
|
|
42325
42325
|
height: config.box,
|
|
42326
|
-
backgroundColor: catColor?.bg ||
|
|
42326
|
+
backgroundColor: catColor?.bg || void 0,
|
|
42327
42327
|
borderColor: isDragOver ? void 0 : feedback === "correct" ? "var(--color-success)" : feedback === "wrong" ? "var(--color-error)" : catColor?.border || void 0
|
|
42328
42328
|
},
|
|
42329
42329
|
onClick: handleClick,
|
|
@@ -42352,7 +42352,7 @@ function TraitSlot({
|
|
|
42352
42352
|
exports.Box,
|
|
42353
42353
|
{
|
|
42354
42354
|
position: "absolute",
|
|
42355
|
-
className: "-top-1.5 -right-1.5 w-4 h-4 bg-error rounded-
|
|
42355
|
+
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",
|
|
42356
42356
|
onClick: handleRemove,
|
|
42357
42357
|
children: /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "caption", className: "text-foreground text-xs leading-none", children: "\xD7" })
|
|
42358
42358
|
}
|
|
@@ -42362,14 +42362,14 @@ function TraitSlot({
|
|
|
42362
42362
|
exports.Box,
|
|
42363
42363
|
{
|
|
42364
42364
|
position: "absolute",
|
|
42365
|
-
className: "-bottom-1 -left-1 w-4 h-4 bg-card rounded-
|
|
42365
|
+
className: "-bottom-1 -left-1 w-4 h-4 bg-card rounded-pill flex items-center justify-center border border-border",
|
|
42366
42366
|
children: /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "caption", className: "text-muted-foreground text-xs", children: slotNumber })
|
|
42367
42367
|
}
|
|
42368
42368
|
),
|
|
42369
42369
|
showTooltip && isHovered && itemMachine && !isEmpty && equippedItem && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
42370
42370
|
exports.Box,
|
|
42371
42371
|
{
|
|
42372
|
-
className: "p-3 bg-background border border-border rounded-
|
|
42372
|
+
className: "p-3 bg-background border border-border rounded-container shadow-xl",
|
|
42373
42373
|
style: {
|
|
42374
42374
|
...getTooltipStyle(),
|
|
42375
42375
|
minWidth: 200,
|
|
@@ -42619,12 +42619,12 @@ function SequencerBoard({
|
|
|
42619
42619
|
backgroundPosition: "center"
|
|
42620
42620
|
},
|
|
42621
42621
|
children: [
|
|
42622
|
-
entity.headerImage && !headerError ? /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "w-full h-32 overflow-hidden rounded-
|
|
42622
|
+
entity.headerImage && !headerError ? /* @__PURE__ */ jsxRuntime.jsx(exports.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(exports.Box, { className: "w-full h-32 rounded-container bg-gradient-to-br from-muted to-accent opacity-60" }) : null,
|
|
42623
42623
|
/* @__PURE__ */ jsxRuntime.jsxs(exports.VStack, { gap: "xs", children: [
|
|
42624
42624
|
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "h4", className: "text-foreground", children: entity.title }),
|
|
42625
42625
|
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body2", className: "text-muted-foreground", children: entity.description })
|
|
42626
42626
|
] }),
|
|
42627
|
-
showHint && /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "p-3 rounded-
|
|
42627
|
+
showHint && /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "p-3 rounded-container bg-accent/10 border border-accent/30", children: /* @__PURE__ */ jsxRuntime.jsxs(exports.HStack, { className: "items-start", gap: "xs", children: [
|
|
42628
42628
|
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body2", className: "text-accent font-bold shrink-0", children: "\u{1F4A1} " + t("game.hint") + ":" }),
|
|
42629
42629
|
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body2", className: "text-foreground", children: entity.hint })
|
|
42630
42630
|
] }) }),
|
|
@@ -42662,8 +42662,8 @@ function SequencerBoard({
|
|
|
42662
42662
|
label: t("sequencer.dragActions")
|
|
42663
42663
|
}
|
|
42664
42664
|
),
|
|
42665
|
-
hasFeedback && playState === "idle" && attempts > 0 && /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "p-3 rounded-
|
|
42666
|
-
playState === "success" && /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "p-4 rounded-
|
|
42665
|
+
hasFeedback && playState === "idle" && attempts > 0 && /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "p-3 rounded-container bg-warning/10 border border-warning/30 text-center", children: /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body2", className: "text-foreground", children: t(encourageKey) }) }),
|
|
42666
|
+
playState === "success" && /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "p-4 rounded-container bg-success/20 border border-success text-center", children: /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "h5", className: "text-success", children: entity.successMessage || t("sequencer.levelComplete") }) }),
|
|
42667
42667
|
/* @__PURE__ */ jsxRuntime.jsxs(exports.HStack, { gap: "sm", children: [
|
|
42668
42668
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
42669
42669
|
exports.Button,
|
|
@@ -43339,7 +43339,7 @@ function SimulationCanvas({
|
|
|
43339
43339
|
ref: canvasRef,
|
|
43340
43340
|
width,
|
|
43341
43341
|
height,
|
|
43342
|
-
className: "rounded-
|
|
43342
|
+
className: "rounded-container block max-w-full h-auto"
|
|
43343
43343
|
}
|
|
43344
43344
|
) });
|
|
43345
43345
|
}
|
|
@@ -43547,7 +43547,7 @@ function SimulatorBoard({
|
|
|
43547
43547
|
backgroundPosition: "center"
|
|
43548
43548
|
},
|
|
43549
43549
|
children: /* @__PURE__ */ jsxRuntime.jsxs(exports.VStack, { gap: "lg", className: "p-4", children: [
|
|
43550
|
-
entity.headerImage && !headerError ? /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "w-full h-32 overflow-hidden rounded-
|
|
43550
|
+
entity.headerImage && !headerError ? /* @__PURE__ */ jsxRuntime.jsx(exports.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(exports.Box, { className: "w-full h-32 rounded-container bg-gradient-to-br from-muted to-accent opacity-60" }) : null,
|
|
43551
43551
|
/* @__PURE__ */ jsxRuntime.jsx(exports.Card, { className: "p-4", children: /* @__PURE__ */ jsxRuntime.jsxs(exports.VStack, { gap: "sm", children: [
|
|
43552
43552
|
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "h4", weight: "bold", children: entity.title }),
|
|
43553
43553
|
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body", children: entity.description })
|
|
@@ -43598,8 +43598,8 @@ function SimulatorBoard({
|
|
|
43598
43598
|
entity.outputUnit
|
|
43599
43599
|
] }),
|
|
43600
43600
|
submitted && /* @__PURE__ */ jsxRuntime.jsxs(exports.HStack, { gap: "xs", align: "center", children: [
|
|
43601
|
-
/* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { icon: isCorrect ? LucideIcons2.CheckCircle : LucideIcons2.XCircle, size: "sm", className: isCorrect ? "text-
|
|
43602
|
-
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body", className: isCorrect ? "text-
|
|
43601
|
+
/* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { icon: isCorrect ? LucideIcons2.CheckCircle : LucideIcons2.XCircle, size: "sm", className: isCorrect ? "text-success" : "text-error" }),
|
|
43602
|
+
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body", className: isCorrect ? "text-success" : "text-error", children: isCorrect ? entity.successMessage ?? t("simulator.correct") : entity.failMessage ?? t("simulator.incorrect") })
|
|
43603
43603
|
] }),
|
|
43604
43604
|
/* @__PURE__ */ jsxRuntime.jsxs(exports.Typography, { variant: "caption", className: "text-muted-foreground", children: [
|
|
43605
43605
|
t("simulator.target"),
|
|
@@ -43612,7 +43612,7 @@ function SimulatorBoard({
|
|
|
43612
43612
|
")"
|
|
43613
43613
|
] })
|
|
43614
43614
|
] }) }),
|
|
43615
|
-
showHint && entity.hint && /* @__PURE__ */ jsxRuntime.jsx(exports.Card, { className: "p-4 border-l-4 border-l-
|
|
43615
|
+
showHint && entity.hint && /* @__PURE__ */ jsxRuntime.jsx(exports.Card, { className: "p-4 border-l-4 border-l-warning", children: /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body", children: entity.hint }) }),
|
|
43616
43616
|
/* @__PURE__ */ jsxRuntime.jsxs(exports.HStack, { gap: "sm", justify: "center", children: [
|
|
43617
43617
|
!submitted ? /* @__PURE__ */ jsxRuntime.jsxs(exports.Button, { variant: "primary", onClick: handleSubmit, children: [
|
|
43618
43618
|
/* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { icon: LucideIcons2.Play, size: "sm" }),
|
|
@@ -44124,7 +44124,7 @@ function StateNode2({
|
|
|
44124
44124
|
position: "absolute",
|
|
44125
44125
|
display: "flex",
|
|
44126
44126
|
className: cn(
|
|
44127
|
-
"items-center justify-center rounded-
|
|
44127
|
+
"items-center justify-center rounded-pill border-3 transition-all cursor-pointer select-none",
|
|
44128
44128
|
"min-w-[80px] h-[80px] px-3",
|
|
44129
44129
|
isCurrent && "bg-primary/20 border-primary shadow-lg shadow-primary/30 scale-110",
|
|
44130
44130
|
isSelected && !isCurrent && "bg-accent/20 border-accent ring-2 ring-accent/50",
|
|
@@ -44437,7 +44437,7 @@ function StateArchitectBoard({
|
|
|
44437
44437
|
backgroundPosition: "center"
|
|
44438
44438
|
},
|
|
44439
44439
|
children: [
|
|
44440
|
-
entity.headerImage && !headerError ? /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "w-full h-32 overflow-hidden rounded-
|
|
44440
|
+
entity.headerImage && !headerError ? /* @__PURE__ */ jsxRuntime.jsx(exports.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(exports.Box, { className: "w-full h-32 rounded-container bg-gradient-to-br from-muted to-accent opacity-60" }) : null,
|
|
44441
44441
|
/* @__PURE__ */ jsxRuntime.jsxs(exports.VStack, { gap: "xs", children: [
|
|
44442
44442
|
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "h4", className: "text-foreground", children: entity.title }),
|
|
44443
44443
|
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body2", className: "text-muted-foreground", children: entity.description }),
|
|
@@ -44456,7 +44456,7 @@ function StateArchitectBoard({
|
|
|
44456
44456
|
exports.Box,
|
|
44457
44457
|
{
|
|
44458
44458
|
position: "relative",
|
|
44459
|
-
className: "rounded-
|
|
44459
|
+
className: "rounded-container border border-border bg-background overflow-hidden",
|
|
44460
44460
|
style: { width: GRAPH_W, height: GRAPH_H },
|
|
44461
44461
|
children: [
|
|
44462
44462
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -44515,7 +44515,7 @@ function StateArchitectBoard({
|
|
|
44515
44515
|
children: selectedState ? t("stateArchitect.addTransition", { state: selectedState }) : t("stateArchitect.addTransitionPrompt")
|
|
44516
44516
|
}
|
|
44517
44517
|
) }),
|
|
44518
|
-
transitions.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(exports.VStack, { gap: "xs", className: "p-3 rounded-
|
|
44518
|
+
transitions.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(exports.VStack, { gap: "xs", className: "p-3 rounded-container bg-muted/50 border border-border", children: [
|
|
44519
44519
|
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "caption", className: "text-muted-foreground font-medium", children: t("stateArchitect.transitions", { count: transitions.length }) + ":" }),
|
|
44520
44520
|
transitions.map((t2) => /* @__PURE__ */ jsxRuntime.jsxs(exports.HStack, { className: "items-center text-xs", gap: "xs", children: [
|
|
44521
44521
|
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "caption", className: "text-foreground", children: t2.from }),
|
|
@@ -44549,7 +44549,7 @@ function StateArchitectBoard({
|
|
|
44549
44549
|
variables
|
|
44550
44550
|
}
|
|
44551
44551
|
),
|
|
44552
|
-
testResults.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(exports.VStack, { className: "p-3 rounded-
|
|
44552
|
+
testResults.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(exports.VStack, { className: "p-3 rounded-container bg-card border border-border", gap: "xs", children: [
|
|
44553
44553
|
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body2", className: "text-muted-foreground font-medium", children: t("stateArchitect.testResults") + ":" }),
|
|
44554
44554
|
testResults.map((r, i) => /* @__PURE__ */ jsxRuntime.jsxs(exports.HStack, { className: "items-center text-xs", gap: "xs", children: [
|
|
44555
44555
|
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "caption", className: r.passed ? "text-success" : "text-error", children: r.passed ? "\u2714" : "\u2717" }),
|
|
@@ -44560,10 +44560,10 @@ function StateArchitectBoard({
|
|
|
44560
44560
|
entity.showCodeView !== false && /* @__PURE__ */ jsxRuntime.jsx(CodeView, { data: codeData, label: "View Code" })
|
|
44561
44561
|
] })
|
|
44562
44562
|
] }),
|
|
44563
|
-
playState === "success" && /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "p-4 rounded-
|
|
44563
|
+
playState === "success" && /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "p-4 rounded-container bg-success/20 border border-success text-center", children: /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "h5", className: "text-success", children: entity.successMessage || t("stateArchitect.allPassed") }) }),
|
|
44564
44564
|
playState === "fail" && /* @__PURE__ */ jsxRuntime.jsxs(exports.VStack, { gap: "sm", children: [
|
|
44565
|
-
/* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "p-4 rounded-
|
|
44566
|
-
attempts >= 3 && entity.hint && /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "p-3 rounded-
|
|
44565
|
+
/* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "p-4 rounded-container bg-warning/10 border border-warning/30 text-center", children: /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body1", className: "text-foreground font-medium", children: t(ENCOURAGEMENT_KEYS3[Math.min(attempts - 1, ENCOURAGEMENT_KEYS3.length - 1)] ?? ENCOURAGEMENT_KEYS3[0]) }) }),
|
|
44566
|
+
attempts >= 3 && entity.hint && /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "p-3 rounded-container bg-accent/10 border border-accent/30", children: /* @__PURE__ */ jsxRuntime.jsxs(exports.HStack, { className: "items-start", gap: "xs", children: [
|
|
44567
44567
|
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body2", className: "text-accent font-bold shrink-0", children: "\u{1F4A1} " + t("game.hint") + ":" }),
|
|
44568
44568
|
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body2", className: "text-foreground", children: entity.hint })
|
|
44569
44569
|
] }) })
|
|
@@ -44669,7 +44669,7 @@ function StatusEffect({
|
|
|
44669
44669
|
"div",
|
|
44670
44670
|
{
|
|
44671
44671
|
className: cn(
|
|
44672
|
-
"relative flex items-center justify-center rounded border-2",
|
|
44672
|
+
"relative flex items-center justify-center rounded-interactive border-2",
|
|
44673
44673
|
sizes.container,
|
|
44674
44674
|
variantStyles9[variant]
|
|
44675
44675
|
),
|
|
@@ -44680,7 +44680,7 @@ function StatusEffect({
|
|
|
44680
44680
|
"span",
|
|
44681
44681
|
{
|
|
44682
44682
|
className: cn(
|
|
44683
|
-
"absolute bottom-0 left-0 right-0 text-center font-mono font-bold text-
|
|
44683
|
+
"absolute bottom-0 left-0 right-0 text-center font-mono font-bold text-foreground bg-background/60 leading-tight",
|
|
44684
44684
|
sizes.timer
|
|
44685
44685
|
),
|
|
44686
44686
|
children: formatDuration(duration)
|
|
@@ -44693,7 +44693,7 @@ function StatusEffect({
|
|
|
44693
44693
|
"span",
|
|
44694
44694
|
{
|
|
44695
44695
|
className: cn(
|
|
44696
|
-
"absolute flex items-center justify-center rounded-full bg-
|
|
44696
|
+
"absolute flex items-center justify-center rounded-full bg-card text-foreground font-bold leading-none",
|
|
44697
44697
|
sizes.badge
|
|
44698
44698
|
),
|
|
44699
44699
|
children: stacks
|
|
@@ -44712,9 +44712,9 @@ var init_StatusEffect = __esm({
|
|
|
44712
44712
|
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" }
|
|
44713
44713
|
};
|
|
44714
44714
|
variantStyles9 = {
|
|
44715
|
-
buff: "border-
|
|
44716
|
-
debuff: "border-
|
|
44717
|
-
neutral: "border-
|
|
44715
|
+
buff: "border-success bg-success/20",
|
|
44716
|
+
debuff: "border-error bg-error/20",
|
|
44717
|
+
neutral: "border-muted bg-muted/20"
|
|
44718
44718
|
};
|
|
44719
44719
|
StatusEffect.displayName = "StatusEffect";
|
|
44720
44720
|
}
|
|
@@ -45327,12 +45327,12 @@ function TimerDisplay({
|
|
|
45327
45327
|
"div",
|
|
45328
45328
|
{
|
|
45329
45329
|
className: cn(
|
|
45330
|
-
"inline-flex items-center justify-center rounded-
|
|
45331
|
-
"bg-
|
|
45330
|
+
"inline-flex items-center justify-center rounded-container",
|
|
45331
|
+
"bg-card/80 border border-muted font-mono font-bold tabular-nums",
|
|
45332
45332
|
sizeMap17[size],
|
|
45333
|
-
running && "border-
|
|
45334
|
-
isLow && "text-
|
|
45335
|
-
!isLow && "text-
|
|
45333
|
+
running && "border-success/50",
|
|
45334
|
+
isLow && "text-error border-error/50 animate-pulse",
|
|
45335
|
+
!isLow && "text-foreground",
|
|
45336
45336
|
className
|
|
45337
45337
|
),
|
|
45338
45338
|
children: formatTime3(seconds, format)
|
|
@@ -46056,8 +46056,8 @@ function XPBar({
|
|
|
46056
46056
|
"span",
|
|
46057
46057
|
{
|
|
46058
46058
|
className: cn(
|
|
46059
|
-
"flex-shrink-0 rounded-
|
|
46060
|
-
"bg-
|
|
46059
|
+
"flex-shrink-0 rounded-interactive font-bold",
|
|
46060
|
+
"bg-accent text-foreground border border-accent",
|
|
46061
46061
|
sizes.badge
|
|
46062
46062
|
),
|
|
46063
46063
|
children: [
|
|
@@ -46071,7 +46071,7 @@ function XPBar({
|
|
|
46071
46071
|
"div",
|
|
46072
46072
|
{
|
|
46073
46073
|
className: cn(
|
|
46074
|
-
"relative w-full overflow-hidden rounded-full bg-
|
|
46074
|
+
"relative w-full overflow-hidden rounded-full bg-muted border border-muted",
|
|
46075
46075
|
sizes.bar
|
|
46076
46076
|
),
|
|
46077
46077
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -46079,7 +46079,7 @@ function XPBar({
|
|
|
46079
46079
|
{
|
|
46080
46080
|
className: cn(
|
|
46081
46081
|
"absolute inset-y-0 left-0 rounded-full",
|
|
46082
|
-
"bg-gradient-to-r from-
|
|
46082
|
+
"bg-gradient-to-r from-accent to-info",
|
|
46083
46083
|
animated && "transition-all duration-500 ease-out"
|
|
46084
46084
|
),
|
|
46085
46085
|
style: { width: `${percentage}%` }
|
|
@@ -46087,7 +46087,7 @@ function XPBar({
|
|
|
46087
46087
|
)
|
|
46088
46088
|
}
|
|
46089
46089
|
),
|
|
46090
|
-
showLabel && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: cn("text-
|
|
46090
|
+
showLabel && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: cn("text-muted-foreground tabular-nums", sizes.text), children: [
|
|
46091
46091
|
current,
|
|
46092
46092
|
" / ",
|
|
46093
46093
|
max,
|
|
@@ -48384,7 +48384,7 @@ function CollapsibleSection({ title, expanded, onToggle, children, className })
|
|
|
48384
48384
|
CollapsibleSection.displayName = "CollapsibleSection";
|
|
48385
48385
|
function EditorSlider({ label, value, min, max, step = 0.1, onChange, className }) {
|
|
48386
48386
|
return /* @__PURE__ */ jsxRuntime.jsxs(exports.HStack, { gap: "sm", align: "center", className, children: [
|
|
48387
|
-
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "caption", className: "min-w-[80px] text-
|
|
48387
|
+
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "caption", className: "min-w-[80px] text-muted-foreground", children: label }),
|
|
48388
48388
|
/* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "flex-1", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
48389
48389
|
"input",
|
|
48390
48390
|
{
|
|
@@ -48394,22 +48394,22 @@ function EditorSlider({ label, value, min, max, step = 0.1, onChange, className
|
|
|
48394
48394
|
step,
|
|
48395
48395
|
value,
|
|
48396
48396
|
onChange: (e) => onChange(parseFloat(e.target.value)),
|
|
48397
|
-
className: "w-full h-1.5 bg-
|
|
48397
|
+
className: "w-full h-1.5 bg-muted rounded-interactive appearance-none cursor-pointer accent-primary"
|
|
48398
48398
|
}
|
|
48399
48399
|
) }),
|
|
48400
|
-
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "caption", className: "min-w-[40px] text-right text-
|
|
48400
|
+
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "caption", className: "min-w-[40px] text-right text-muted-foreground", children: typeof step === "number" && step < 1 ? value.toFixed(1) : value })
|
|
48401
48401
|
] });
|
|
48402
48402
|
}
|
|
48403
48403
|
EditorSlider.displayName = "EditorSlider";
|
|
48404
48404
|
function EditorSelect({ label, value, options, onChange, className }) {
|
|
48405
48405
|
return /* @__PURE__ */ jsxRuntime.jsxs(exports.HStack, { gap: "sm", align: "center", className, children: [
|
|
48406
|
-
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "caption", className: "min-w-[80px] text-
|
|
48406
|
+
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "caption", className: "min-w-[80px] text-muted-foreground", children: label }),
|
|
48407
48407
|
/* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "flex-1", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
48408
48408
|
"select",
|
|
48409
48409
|
{
|
|
48410
48410
|
value,
|
|
48411
48411
|
onChange: (e) => onChange(e.target.value),
|
|
48412
|
-
className: "w-full px-2 py-1 text-xs bg-
|
|
48412
|
+
className: "w-full px-2 py-1 text-xs bg-muted text-foreground border border-muted rounded cursor-pointer",
|
|
48413
48413
|
children: options.map((opt) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: opt.value, children: opt.label }, opt.value))
|
|
48414
48414
|
}
|
|
48415
48415
|
) })
|
|
@@ -48418,14 +48418,14 @@ function EditorSelect({ label, value, options, onChange, className }) {
|
|
|
48418
48418
|
EditorSelect.displayName = "EditorSelect";
|
|
48419
48419
|
function EditorCheckbox({ label, checked, onChange, className }) {
|
|
48420
48420
|
return /* @__PURE__ */ jsxRuntime.jsxs(exports.HStack, { gap: "sm", align: "center", className, children: [
|
|
48421
|
-
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "caption", className: "min-w-[80px] text-
|
|
48421
|
+
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "caption", className: "min-w-[80px] text-muted-foreground", children: label }),
|
|
48422
48422
|
/* @__PURE__ */ jsxRuntime.jsx(exports.Box, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
48423
48423
|
"input",
|
|
48424
48424
|
{
|
|
48425
48425
|
type: "checkbox",
|
|
48426
48426
|
checked,
|
|
48427
48427
|
onChange: (e) => onChange(e.target.checked),
|
|
48428
|
-
className: "w-4 h-4 accent-
|
|
48428
|
+
className: "w-4 h-4 accent-primary cursor-pointer"
|
|
48429
48429
|
}
|
|
48430
48430
|
) })
|
|
48431
48431
|
] });
|
|
@@ -48433,7 +48433,7 @@ function EditorCheckbox({ label, checked, onChange, className }) {
|
|
|
48433
48433
|
EditorCheckbox.displayName = "EditorCheckbox";
|
|
48434
48434
|
function EditorTextInput({ label, value, onChange, placeholder, className }) {
|
|
48435
48435
|
return /* @__PURE__ */ jsxRuntime.jsxs(exports.HStack, { gap: "sm", align: "center", className, children: [
|
|
48436
|
-
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "caption", className: "min-w-[80px] text-
|
|
48436
|
+
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "caption", className: "min-w-[80px] text-muted-foreground", children: label }),
|
|
48437
48437
|
/* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "flex-1", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
48438
48438
|
"input",
|
|
48439
48439
|
{
|
|
@@ -48441,30 +48441,30 @@ function EditorTextInput({ label, value, onChange, placeholder, className }) {
|
|
|
48441
48441
|
value,
|
|
48442
48442
|
onChange: (e) => onChange(e.target.value),
|
|
48443
48443
|
placeholder,
|
|
48444
|
-
className: "w-full px-2 py-1 text-xs bg-
|
|
48444
|
+
className: "w-full px-2 py-1 text-xs bg-muted text-foreground border border-muted rounded"
|
|
48445
48445
|
}
|
|
48446
48446
|
) })
|
|
48447
48447
|
] });
|
|
48448
48448
|
}
|
|
48449
48449
|
EditorTextInput.displayName = "EditorTextInput";
|
|
48450
48450
|
function StatusBar({ hoveredTile, mode, gridSize, unitCount, featureCount, className }) {
|
|
48451
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(exports.HStack, { gap: "sm", align: "center", className: `px-3 py-1.5 bg-
|
|
48451
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(exports.HStack, { gap: "sm", align: "center", className: `px-3 py-1.5 bg-background border-t border-border ${className ?? ""}`, children: [
|
|
48452
48452
|
/* @__PURE__ */ jsxRuntime.jsx(exports.Badge, { variant: "info", size: "sm", children: mode }),
|
|
48453
|
-
/* @__PURE__ */ jsxRuntime.jsxs(exports.Typography, { variant: "caption", className: "text-
|
|
48453
|
+
/* @__PURE__ */ jsxRuntime.jsxs(exports.Typography, { variant: "caption", className: "text-muted-foreground", children: [
|
|
48454
48454
|
"Tile: ",
|
|
48455
48455
|
hoveredTile ? `(${hoveredTile.x}, ${hoveredTile.y})` : "\u2014"
|
|
48456
48456
|
] }),
|
|
48457
|
-
gridSize && /* @__PURE__ */ jsxRuntime.jsxs(exports.Typography, { variant: "caption", className: "text-
|
|
48457
|
+
gridSize && /* @__PURE__ */ jsxRuntime.jsxs(exports.Typography, { variant: "caption", className: "text-muted-foreground", children: [
|
|
48458
48458
|
"Grid: ",
|
|
48459
48459
|
gridSize.width,
|
|
48460
48460
|
"x",
|
|
48461
48461
|
gridSize.height
|
|
48462
48462
|
] }),
|
|
48463
|
-
unitCount !== void 0 && /* @__PURE__ */ jsxRuntime.jsxs(exports.Typography, { variant: "caption", className: "text-
|
|
48463
|
+
unitCount !== void 0 && /* @__PURE__ */ jsxRuntime.jsxs(exports.Typography, { variant: "caption", className: "text-muted-foreground", children: [
|
|
48464
48464
|
"Units: ",
|
|
48465
48465
|
unitCount
|
|
48466
48466
|
] }),
|
|
48467
|
-
featureCount !== void 0 && /* @__PURE__ */ jsxRuntime.jsxs(exports.Typography, { variant: "caption", className: "text-
|
|
48467
|
+
featureCount !== void 0 && /* @__PURE__ */ jsxRuntime.jsxs(exports.Typography, { variant: "caption", className: "text-muted-foreground", children: [
|
|
48468
48468
|
"Features: ",
|
|
48469
48469
|
featureCount
|
|
48470
48470
|
] })
|
|
@@ -48476,8 +48476,8 @@ function TerrainPalette({ terrains, selectedTerrain, onSelect, className }) {
|
|
|
48476
48476
|
exports.Box,
|
|
48477
48477
|
{
|
|
48478
48478
|
onClick: () => onSelect(terrain),
|
|
48479
|
-
className: `w-8 h-8 rounded cursor-pointer border-2 transition-all ${selectedTerrain === terrain ? "border-
|
|
48480
|
-
style: { backgroundColor: TERRAIN_COLORS[terrain] || "
|
|
48479
|
+
className: `w-8 h-8 rounded cursor-pointer border-2 transition-all ${selectedTerrain === terrain ? "border-foreground scale-110 shadow-lg" : "border-muted hover:border-muted-foreground"}`,
|
|
48480
|
+
style: { backgroundColor: TERRAIN_COLORS[terrain] || "var(--color-muted)" },
|
|
48481
48481
|
title: terrain
|
|
48482
48482
|
},
|
|
48483
48483
|
terrain
|